[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of oct8ne/react/typings/vtex.render-runtime.d.ts from the oct8ne VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module 'vtex.render-runtime' {
  export const canUseDOM: boolean
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of oct8ne/react/typings/global.d.ts from the oct8ne VTEX app.

[Assistant]
Here's the implementation:

```typescript
interface Window extends Window {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  oct8neVtex: Oct8neVtex
  oct8ne: Oct8ne
}

interface Oct8neVtex {
  log: (param: string) => void;
  cart: Cart;
  customerCart: Item[];
  enableLogs: boolean;
}

interface Oct8ne {
  restart: Function,
  currentProduct: CurrentProduct
  options: {
    vtexioInfo: {
      customerInfo: Customer | null
    }
  }
}

interface CurrentProduct {
  id: string
  thumbnail: string
}

interface Cart {
  price: number | string
  finalPrice: number
  currency: string
  totalItems: number
  cart: Item[]
}

interface Item {
  internalId: string
  title: string
  qty: number
  price?: string | number
  formattedPrice?: string
  formattedPrevPrice?: string
  productUrl?: string
}

interface Customer {
  id?: string
  firstName?: string
  lastName?: string
  email?: string
  wishList: null
  cart: Item[]
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/docs/README.md from the modal VTEX app.

[Assistant]
Here's the implementation:

```markdown

# VTEX Modal ![https://img.shields.io/badge/-Deprecated-red](https://img.shields.io/badge/-Deprecated-red)

:warning: **The modal block has been deprecated in favor of the [Modal Layout](https://vtex.io/docs/components/all/vtex.modal-layout) app**. Although support for this block is still granted, we strongly recommend you to update your store theme with the Modal Layout's blocks in order to keep up with the component's evolution.

## Description

The VTEX Modal is the block to use when you want to display another block in a VTEX app.

It renders a button and when you click it, it opens the modal with its children component rendered.

:loudspeaker: **Disclaimer:** Don't fork this project; use, contribute, or open issue with your feature request

## Table of Contents

- [Usage](#usage)
  - [Blocks API](#blocks-api)
    - [Configuration](#configuration)
  - [Styles API](#styles-api)
    - [CSS Namespaces](#css-namespaces)
- [Troubleshooting](#troubleshooting)
- [Tests](#tests)

## Usage

This app uses our store builder with the blocks architecture. To know more about Store Builder [click here.](https://help.vtex.com/en/tutorial/understanding-storebuilder-and-stylesbuilder#structuring-and-configuring-our-store-with-object-object)

To use this app or override the default CSS you need import it in your dependencies on `manifest.json` file.

```json
  "dependencies": {
    "vtex.modal": "0.x"
  }
```

Then, use the `modal` block in your `blocks.json` like:

```json
"modal": {
    "children": ["rich-text"],
    "props": {
	   "centered": true,
	   "blockClass": "home-modal",
	   "buttonClass": "t-heading-5",
	   "showCloseIcon": false
	}
  }

```

### Blocks API

When implementing this app as a block, various inner blocks may be available. The following interface lists the available blocks within modal and describes if they are required or optional.

```json
{
  "modal": {
    "allowed": "*",
    "component": "index",
    "composition": "children"
  }
}
```

For now this block does not have any required or optional blocks. It allows you to render any block as its children.

#### Configuration

Through the Storefront, you can change the modal's behavior and interface. However, you also can make in your theme app, as Store theme does.

| Prop name           | Type      | Description                                                                                |
| ------------------- | --------- | ------------------------------------------------------------------------------------------- |
| `centered`     | `Boolean` | Set to true if component should be centered on screen. Default: `false`    |
| `closeOnEsc`     | `Boolean` | Set to true if modal should close when esc key is pressed. Default: `true`                                          |
| `closeOnOverlayClick`        | `Boolean` | Set to true if modal should close when pressing on outside area. Default: `true`              |
| `showCloseIcon`  | `Boolean` | Set to true if modal should display close icon. Default: `true`                                                                |
| `buttonLabel`       | `String` | Set the label displayed on button to open modal Default: `""`
| `buttonClass`       | `String` | Pass extra tachyon classes to button container. Default: `null`
| `blockClass`       | `String` | Unique class name to be appended to block classes. Default: `null`                                                           |

### Styles API

This app provides some CSS classes as an API for style customization.

To use this CSS API, you must add the `styles` builder and create an app styling CSS file.

1. Add the `styles` builder to your `manifest.json`:

```json
  "builders": {
    "styles": "1.x"
  }
```

2. Create a file called `vtex.rich-text.css` inside the `styles/css` folder. Add your custom styles:

```css
.container {
  margin-top: 10px;
}
```

#### CSS Namespaces

Below, we describe the namespaces that are defined in the modal.

| Token name                 | Component                                                                                | Description                                                   |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| `container`                | [index](https://github.com/vtex-apps/modal/blob/master/react/index.tsx) | The container that encloses the whole `<Modal>` component                     |
| `childrenContainer`           | [index](https://github.com/vtex-apps/modal/blob/master/react/index.tsx)   |  It represents the view that encloses the children rendered inside the container  |
| `button`           | [index](https://github.com/vtex-apps/modal/blob/master/react/index.tsx)   | It is inserted in the view that encloses the button used to open the modal  |

## Troubleshooting

You can check if others are passing through similar issues [here](https://github.com/vtex-apps/modal/issues). Also feel free to [open issues](https://github.com/vtex-apps/modal/issues/new) or contribute with pull requests.

## Tests

To execute our tests go to `react/` folder and run `yarn test`

### Travis CI

[![Build Status](https://travis-ci.org/vtex-apps/modal.svg?branch=master)](https://travis-ci.org/vtex-apps/rich-text)
[![Coverage Status](https://coveralls.io/repos/github/vtex-apps/modal/badge.svg?branch=master)](https://coveralls.io/github/vtex-apps/rich-text?branch=master)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/react/index.tsx from the modal VTEX app.

[Assistant]
Here's the implementation:

```tsx
import React, {
  Fragment,
  FunctionComponent,
  ReactElement,
  useState,
  useCallback,
  useMemo
} from 'react'
import classNames from 'classnames'
import { generateBlockClass, BlockClass } from '@vtex/css-handles'
import { defineMessages } from 'react-intl'
//@ts-ignore
import { Modal } from 'vtex.styleguide'

import Context from './ModalContext'
//@ts-ignore
import styles from './styles.css'

const { Provider } = Context

interface ModalProps {
  centered: boolean
  closeOnEsc: boolean
  closeOnOverlayClick: boolean
  showCloseIcon: boolean
  children: ReactElement
  buttonLabel: string
  buttonClass: string | null
  showTopBar: boolean
  title?: string
}

interface StorefrontComponent
  extends FunctionComponent<ModalProps & BlockClass> {
  schema?: any
}

const ModalComponent: StorefrontComponent = ({
  centered,
  closeOnEsc,
  closeOnOverlayClick,
  showCloseIcon,
  children,
  buttonLabel,
  buttonClass,
  blockClass,
  showTopBar,
  title,
}) => {
  const [isOpen, setOpen] = useState(false)
  const onClick = useCallback(() => setOpen(true), [])
  const onClose = useCallback(() => setOpen(false), [])

  const buttonClasses = classNames(
    generateBlockClass(styles.button, blockClass),
    't-action pointer pv3 nv3 ph4 nh4 c-action-primary',
    buttonClass,
  )

  const modalContext = useMemo(() => ({ closeModal: onClose }), [onClose])

  return (
    <Fragment>
      <div className={buttonClasses} onClick={onClick} role="button">
        {buttonLabel}
      </div>
      <div className={generateBlockClass(styles.container, blockClass)}>
        <Modal
          isOpen={isOpen}
          centered={centered}
          onClose={onClose}
          closeOnEsc={closeOnEsc}
          closeOnOverlayClick={closeOnOverlayClick}
          showCloseIcon={showCloseIcon}
          showTopBar={showTopBar}
          title={title}
        >
          <div
            className={`${generateBlockClass(
              styles.childrenContainer,
              blockClass
            )} flex flex-grow-1`}
          >
            <Provider value={modalContext}>
              {children}
            </Provider>
          </div>
        </Modal>
      </div>
    </Fragment>
  )
}

ModalComponent.defaultProps = {
  centered: false,
  closeOnEsc: true,
  closeOnOverlayClick: true,
  showCloseIcon: true,
  buttonLabel: '',
  buttonClass: null,
  showTopBar: true,
}

const messages = defineMessages({
  modalTitle: {
    defaultMessage: 'Modal Component',
    id: 'admin/editor.modal.title',
  },
  modalDescription: {
    defaultMessage: 'A component that allows to display other blocks inside it as a modal.',
    id: 'admin/editor.modal.description',
  },
  centeredTitle: {
    defaultMessage: 'Centered',
    id: 'admin/editor.modal.centered.title',
  },
  centeredDescription: {
    defaultMessage: 'Set to true if component should be centered on screen',
    id: 'admin/editor.modal.centered.description',
  },
  closeOnEscTitle: {
    defaultMessage: 'Close on Esc',
    id: 'admin/editor.modal.closeOnEsc.title',
  },
  closeOnEscDescription: {
    defaultMessage: 'Set to true if modal should close when esc key is pressed',
    id: 'admin/editor.modal.closeOnEsc.description',
  },
  closeOnOverlayClickTitle: {
    defaultMessage: 'Close on overlay click',
    id: 'admin/editor.modal.closeOnOverlayClick.title',
  },
  closeOnOverlayClickDescription: {
    defaultMessage: 'Set to true if modal should close when pressing on outside area',
    id: 'admin/editor.modal.closeOnOverlayClick.description',
  },
  showCloseIconTitle: {
    defaultMessage: 'Show close icon',
    id: 'admin/editor.modal.showCloseIcon.title',
  },
  showCloseIconDescription: {
    defaultMessage: 'Set to true if modal should display close icon',
    id: 'admin/editor.modal.showCloseIcon.description',
  },
  buttonLabelTitle: {
    defaultMessage: 'Button Label',
    id: 'admin/editor.modal.buttonLabel.title',
  },
  buttonLabelDescription: {
    defaultMessage: 'Set the label displayed on button to open modal',
    id: 'admin/editor.modal.buttonLabel.description',
  },
  buttonClassTitle: {
    defaultMessage: 'Button class',
    id: 'admin/editor.modal.buttonClass.title',
  },
  buttonClassDescription: {
    defaultMessage: 'Pass extra tachyon classes to button container',
    id: 'admin/editor.modal.buttonClass.description',
  },
  blockClassTitle: {
    defaultMessage: 'Block class',
    id: 'admin/editor.modal.blockClass.title',
  },
  blockClassDescription: {
    defaultMessage: 'Unique class name to be appended to block classes',
    id: 'admin/editor.modal.blockClass.description',
  },
})

ModalComponent.schema = {
  title: messages.modalTitle.id,
  description: messages.modalDescription.id,
  type: 'object',
  properties: {
    centered: {
      title: messages.centeredTitle.id,
      description: messages.centeredDescription.id,
      type: 'boolean',
      default: false,
      isLayout: true,
    },
    closeOnEsc: {
      title: messages.closeOnEscTitle.id,
      description: messages.closeOnEscDescription.id,
      type: 'boolean',
      default: true,
      isLayout: true,
    },
    closeOnOverlayClick: {
      title: messages.closeOnOverlayClickTitle.id,
      description: messages.closeOnOverlayClickDescription.id,
      type: 'boolean',
      default: true,
      isLayout: true,
    },
    showCloseIcon: {
      title: messages.showCloseIconTitle.id,
      description: messages.showCloseIconDescription.id,
      type: 'boolean',
      default: true,
      isLayout: true,
    },
    buttonLabel: {
      title: messages.buttonLabelTitle.id,
      description: messages.buttonLabelDescription.id,
      type: 'string',
      default: '',
    },
    buttonClass: {
      title: messages.buttonLabelTitle.id,
      description: messages.buttonLabelDescription.id,
      type: 'string',
      default: null,
      isLayout: true,
    },
    blockClass: {
      title: messages.blockClassTitle.id,
      description: messages.blockClassDescription.id,
      type: 'string',
      default: null,
      isLayout: true,
    },
  },
}

export default ModalComponent

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/react/package.json from the modal VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "vtex.modal",
  "scripts": {
    "lint": "eslint . --ext .ts --ext .tsx",
    "lint:fix": "eslint --fix . --ext .ts --ext .tsx",
    "pretest": "yarn",
    "test": "vtex-test-tools test"
  },
  "dependencies": {
    "@vtex/css-handles": "^1.1.0",
    "classnames": "^2.2.6",
    "ramda": "^0.26.1"
  },
  "devDependencies": {
    "@babel/core": "^7.3.4",
    "@babel/preset-env": "^7.3.4",
    "@types/classnames": "^2.2.7",
    "@types/jest": "^24.0.9",
    "@types/node": "^11.10.0",
    "@types/ramda": "^0.26.6",
    "@types/react": "^16.8.6",
    "@vtex/test-tools": "^0.2.0",
    "babel-eslint": "10.0.1",
    "babel-jest": "^24.3.0",
    "babel-preset-react-app": "^7.0.2",
    "eslint": "^5.16.0",
    "eslint-config-vtex-react": "^4.0.0",
    "eslint-plugin-import": "2.16.0",
    "jest": "^24.3.0",
    "jest-dom": "^3.1.2",
    "prettier": "^1.16.4",
    "react-dom": "^16.8.4",
    "react-testing-library": "^6.0.0",
    "typescript": "3.5.2",
    "typescript-babel-jest": "^1.0.6"
  },
  "version": "0.2.2"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/react/ModalContext.tsx from the modal VTEX app.

[Assistant]
Here's the implementation:

```tsx
import React, { createContext, useContext } from 'react'

const ModalContext = createContext<ModalContext>({ closeModal: () => {} })

interface ModalContext {
  closeModal: () => void
}

const withModal = <P extends object>(
    WrappedComponent: React.ComponentType<P>
  ): React.FC<P & ModalContext> =>
  (props: P) => (
    <ModalContext.Consumer>
      {context => <WrappedComponent {...props} {...context} />}
    </ModalContext.Consumer>
)

const useModal = () => useContext(ModalContext)

export default { useModal, withModal, Provider: ModalContext.Provider }

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/store/interfaces.json from the modal VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "modal": {
    "allowed": "*",
    "component": "index",
    "composition": "children"
  }
}
```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of modal/react/typings/vtex.styleguide.d.ts from the modal VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module 'vtex.styleguide' {
  export const Button
  export const Modal
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/messages/pt.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "admin/test": "teste",
  "store/test": "teste"
}
```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/messages/en.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "admin/test": "test",
  "store/test": "test"
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/messages/es.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "admin/test": "teste",
  "store/test": "teste"
}
```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/docs/README.md from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```markdown
📢 Use this project, [contribute](https://github.com/{OrganizationName}/{AppName}) to it or open issues to help evolve it using [Store Discussion](https://github.com/vtex-apps/store-discussion).

# CMS Demo Blocks [DO NOT USE THIS APP]

<!-- DOCS-IGNORE:start -->
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->

[![All Contributors](https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square)](#contributors-)

<!-- ALL-CONTRIBUTORS-BADGE:END -->
<!-- DOCS-IGNORE:end -->

Under the app's name, you should explain the topic, giving a **brief description** of its **functionality** in a store when installed.

Next, **add media** (either an image of a GIF) with the rendered components, so that users can better understand how the app works in practice.

![Media Placeholder](https://user-images.githubusercontent.com/52087100/71204177-42ca4f80-227e-11ea-89e6-e92e65370c69.png)

## Configuration

In this section, you first must **add the primary instructions** that will allow users to use the app's blocks in their store, such as:

1. Adding the app as a theme dependency in the `manifest.json` file;
2. Declaring the app's main block in a given theme template or inside another block from the theme.

Remember to add a table with all blocks exported by the app and their descriptions. You can verify an example of it on the [Search Result documentation](https://vtex.io/docs/components/all/vtex.search-result@3.56.1/).

Next, add the **props table** containing your block's props.

If the app exports more than one block, create several tables - one for each block. For example:

### `block-1` props

| Prop name | Type     | Description | Default value |
| --------- | -------- | ----------- | ------------- |
| `XXXXX`   | `XXXXXX` | XXXXXXXX    | `XXXXXX`      |

### `block-2` props

| Prop name | Type     | Description | Default value |
| --------- | -------- | ----------- | ------------- |
| `XXXXX`   | `XXXXXX` | XXXXXXXX    | `XXXXXX`      |

Prop types are:

- `string`
- `enum`
- `number`
- `boolean`
- `object`
- `array`

When documenting a prop whose type is `object` or `array` another prop table will be needed. You can create it following the example below:

- `propName` object:

| Prop name | Type     | Description | Default value |
| --------- | -------- | ----------- | ------------- |
| `XXXXX`   | `XXXXXX` | XXXXXXXX    | `XXXXXX`      |

Remember to also use this Configuration section to **showcase any necessary disclaimer** related to the app and its blocks, such as the different behavior it may display during its configuration.

## Modus Operandi _(not mandatory)_

There are scenarios in which an app can behave differently in a store, according to how it was added to the catalog, for example. It's crucial to go through these **behavioral changes** in this section, allowing users to fully understand the **practical application** of the app in their store.

If you feel compelled to give further details about the app, such as it's **relationship with the VTEX admin**, don't hesitate to use this section.

## Customization

The first thing that should be present in this section is the sentence below, showing users the recipe pertaining to CSS customization in apps:

`In order to apply CSS customizations in this and other blocks, follow the instructions given in the recipe on [Using CSS Handles for store customization](https://vtex.io/docs/recipes/style/using-css-handles-for-store-customization).`

Thereafter, you should add a single column table with the available CSS handles for the app, like the one below. Note that the Handles must be ordered alphabetically.

| CSS Handles |
| ----------- |
| `XXXXX`     |
| `XXXXX`     |
| `XXXXX`     |
| `XXXXX`     |
| `XXXXX`     |

If there are none, add the following sentence instead:

`No CSS Handles are available yet for the app customization.`

<!-- DOCS-IGNORE:start -->

## Contributors ✨

Thanks goes to these wonderful people:

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->

<!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind are welcome!

<!-- DOCS-IGNORE:end -->

---

Check out some documentation models that are already live:

- [Breadcrumb](https://github.com/vtex-apps/breadcrumb)
- [Image](https://vtex.io/docs/components/general/vtex.store-components/image)
- [Condition Layout](https://vtex.io/docs/components/all/vtex.condition-layout@1.1.6/)
- [Add To Cart Button](https://vtex.io/docs/components/content-blocks/vtex.add-to-cart-button@0.9.0/)
- [Store Form](https://vtex.io/docs/components/all/vtex.store-form@0.3.4/)

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/package.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "name": "cms-demo-blocks",
  "version": "0.2.4",
  "scripts": {
    "test": "vtex-test-tools test"
  },
  "dependencies": {
    "classnames": "^2.2.6",
    "react": "^16.12.0",
    "react-dom": "^16.12.0",
    "react-intl": "^3.12.0"
  },
  "devDependencies": {
    "@apollo/react-testing": "^3.1.3",
    "@types/classnames": "^2.2.10",
    "@types/jest": "^25.1.4",
    "@types/node": "^13.9.8",
    "@types/react": "^16.9.31",
    "@vtex/test-tools": "^3.1.0",
    "@vtex/tsconfig": "^0.4.4",
    "apollo-cache-inmemory": "^1.6.5",
    "graphql": "^14.6.0",
    "marinbrasil.store-components": "http://marinbrasil.vtexassets.com/_v/public/typings/v1/marinbrasil.store-components@0.2.4/public/_types/react",
    "prop-types": "^15.7.2",
    "typescript": "3.9.7",
    "vtex.add-to-cart-button": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.add-to-cart-button@0.18.0/public/@types/vtex.add-to-cart-button",
    "vtex.css-handles": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.css-handles@0.4.4/public/@types/vtex.css-handles",
    "vtex.native-types": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.native-types@0.7.1/public/@types/vtex.native-types",
    "vtex.product-price": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.product-price@1.9.0/public/@types/vtex.product-price",
    "vtex.product-summary": "https://klynger--marinbrasil.myvtex.com/_v/private/typings/linked/v1/vtex.product-summary@2.60.0/public/@types/vtex.product-summary",
    "vtex.render-runtime": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.render-runtime@8.121.0/public/@types/vtex.render-runtime",
    "vtex.slider-layout": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.slider-layout@0.15.1/public/@types/vtex.slider-layout",
    "vtex.stack-layout": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.stack-layout@0.1.0/public/@types/vtex.stack-layout",
    "vtex.store-image": "http://vtex.vtexassets.com/_v/public/typings/v1/vtex.store-image@0.5.2/public/@types/vtex.store-image"
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/Carousel.tsx from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```tsx
import * as React from 'react'
import { ImageList } from 'vtex.store-image'
import { SliderLayout } from 'vtex.slider-layout'

interface Image {
  image: string
  description: string
  link?: string
}

const ITEMS_PER_PAGE = {
  desktop: 1,
  tablet: 1,
  phone: 1,
}

interface Props {
  images: Image[]
}

function Carousel({ images }: Props) {
  const convertedImages = React.useMemo(
    () =>
      images.map(({ description, image, link }) => ({
        description,
        image,
        mobileImage: image,
        // experimentalPreventLayoutShift: true,
        link: link
          ? {
              url: link,
              noFollow: false,
            }
          : undefined,
      })),
    [images]
  )

  return (
    <ImageList images={convertedImages}>
      <SliderLayout itemsPerPage={ITEMS_PER_PAGE} infinite />
    </ImageList>
  )
}

export default Carousel

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/store/contentSchemas.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "definitions": {
    "Carousel": {
      "title": "Carousel with Banners",
      "description": "Slider with large landscape images that link to pages",
      "type": "object",
      "properties": {
        "images": {
          "title": " ",
          "type": "array",
          "items": {
            "title": "Banner",
            "type": "object",
            "properties": {
              "image": {
                "title": " ",
                "type": "string",
                "widget": {
                  "ui:widget": "image-uploader"
                }
              },
              "description": {
                "$ref": "app:vtex.native-types#/definitions/text",
                "title": "Image description",
                "description": "Used to description the alt of the image"
              },
              "link": {
                "title": "URL address to link",
                "type": "string"
              }
            }
          }
        }
      }
    },
    "Banners": {
      "title": "Banners",
      "description": "Up to two small landscape images that link to pages",
      "type": "object",
      "properties": {
        "banners": {
          "title": " ",
          "type": "array",
          "maxItems": 2,
          "items": {
            "title": "Banner",
            "type": "object",
            "properties": {
              "image": {
                "title": " ",
                "description": "A picture",
                "type": "string",
                "widget": {
                  "ui:widget": "image-uploader"
                }
              },
              "description": {
                "$ref": "app:vtex.native-types#/definitions/text",
                "title": "Image description",
                "description": "Used to description the alt of the image"
              },
              "link": {
                "title": "URL address to link",
                "type": "string"
              }
            }
          }
        }
      }
    },
    "Shelf": {
      "title": "Carousel with Products",
      "description": "Slider with products from a collection or the best selling ones",
      "type": "object",
      "properties": {
        "shelfTitle": {
          "title": "Title",
          "type": "string"
        },
        "products": {
          "title": "Products",
          "properties": {
            "filterOption": {
              "title": "Origin",
              "type": "string",
              "enum": ["OrderByTopSaleDESC", "collection"],
              "enumNames": [
                "Show the best selling products",
                "Display products from an existing collection"
              ],
              "default": "OrderByTopSaleDESC"
            }
          },
          "required": ["filterOption"],
          "dependencies": {
            "filterOption": {
              "oneOf": [
                {
                  "title": "Products",
                  "properties": {
                    "filterOption": {
                      "enum": ["collection"]
                    },
                    "collection": {
                      "title": "Collection ID",
                      "type": "string"
                    }
                  },
                  "required": ["collection"]
                }
              ]
            }
          }
        }
      },
      "required": ["products"]
    }
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/store/interfaces.json from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "custom-carousel": {
    "component": "Carousel",
    "content": {
      "$ref": "#/definitions/Carousel"
    }
  },
  "custom-shelf": {
    "component": "Shelf",
    "content": {
      "$ref": "#/definitions/Shelf"
    }
  },
  "custom-banners": {
    "component": "Banners",
    "content": {
      "$ref": "#/definitions/Banners"
    }
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/typings/marinbrasil.store-components.d.ts from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module 'marinbrasil.store-components' {
  import * as React from 'react'

  export const RateStars: React.FC
  export const ProductPrice: React.FC
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/typings/styles.d.ts from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module '*.css' {
  interface CssClasses {
    [cssClass: string]: string
  }

  const content: CssClasses

  export default content
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/typings/image-types.d.ts from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module 'image-types' {
  interface Link {
    url: string
    noFollow: boolean
    attributeTitle?: string
    /**
     * These two properties need to both exist because
     * there was a mismatch in the API defined by this component,
     * which exposes a openNewTab prop, and the native link type
     * from vtex.native-types, which expects a newTab property
     * instead of openNewTab.
     */
    openNewTab?: boolean
    newTab?: boolean
  }

  interface Image {
    image: string
    mobileImage: string
    link?: Link
    title?: string
    description: string
    experimentalPreventLayoutShift?: boolean
  }
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/typings/vtex.product-summary.d.ts from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```typescript
declare module 'vtex.product-summary' {
  import * as React from 'react'

  export const ProductSummaryList: React.FC<any>
  export const ProductSummaryCustom: React.FC<{ product: any }>
  export const ProductSummaryName: React.FC
  export const ProductSummaryImage: React.FC
  export const ProductSummarySpecificationBadges: React.FC
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/__tests__/index.test.tsx from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```tsx
describe('Orders List Scenarios', () => {
  it('should work', () => {
    expect(1).toBe(1)
  })
})

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/components/Banners/Banners.tsx from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```tsx
import * as React from 'react'
import classnames from 'classnames'
import { Image } from 'vtex.store-image'
import { useCssHandles } from 'vtex.css-handles'

interface ImageType {
  image: string
  description: string
  link?: string
}

const CSS_HANDLES = ['bannerContainer', 'bannerImageWrapper'] as const

interface Props {
  banners: ImageType[]
}

function Banners({ banners: images }: Props) {
  const handles = useCssHandles(CSS_HANDLES)
  const containerClasses = classnames(handles.bannerContainer, 'flex pv7 ph0')

  const imageWrapperClasses = classnames(handles.bannerImageWrapper, 'pa3')

  const convertedImages = React.useMemo(
    () =>
      images.map(({ description, image, link }) => ({
        description,
        image,
        mobileImage: image,
        link: link
          ? {
              url: link,
              noFollow: false,
            }
          : undefined,
      })),
    [images]
  )

  return (
    <div className={containerClasses}>
      {convertedImages.map(({ description, image, link }, idx) => (
        <div className={imageWrapperClasses} key={idx}>
          <Image alt={description} src={image} link={link} width="100%" />
        </div>
      ))}
    </div>
  )
}

export default Banners

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/components/Shelf/styles.css from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```css
@import 'https://fonts.googleapis.com/css?family=Josefin+Sans|Open+Sans:300,400,600,700&display=swap';

.container {
  transition: all 0.15s ease;
  border: 3px solid transparent;
  outline: 1px solid #eee !important;
  width: 100%;
  position: relative;
  height: 500px;
  padding: 10px;
  margin: 5px;
}
.container:hover {
  box-shadow: 0 0 15px rgba(204, 204, 204, 0.5);
}

.element {
  justify-content: space-between;
  padding-bottom: 0;
}

.container:hover
  .element
  /* :global(.vtex-product-summary-2-x-element) */
  :global(.vtex-button) {
  background: #05377f;
  box-shadow: 0 0 15px rgba(5, 55, 127, 0.25);
}

/* PRODUCT PRICE */

.element :global(.vtex-e-main-price-marin) {
  position: relative;
  text-align: left;
  padding-top: 1rem;
}

.element :global(.vtex-e-main-price-marin) :global(.vtex-e-price-big) {
  font-size: 18px;
}

.element :global(.vtex-e-main-price-marin) :global(.vtex-e-price-parcels) {
  font-size: 14px;
  line-height: 20px;
}

/* PRODUCT-NAME */

.element .nameContainer {
  padding: 15px 0 0;
}

.element .nameContainer .productNameContainer {
  font-size: 14px;
  height: auto;
  margin-bottom: 20px;
  line-height: 1.6;
  text-align: start;
  font-weight: 400;
  color: #071923;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  font-family: Josefin Sans, sans-serif;
}

/* SLIDER LAYOUT */

.customSliderContainer {
  margin-top: 1rem;
}

.paginationDotsContainer {
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
  position: absolute;
  top: -8%;
  right: 2%;
  left: auto;
  bottom: auto;
}

/* SHELF TITLE */

.shelfTitle {
  font-size: 20px;
}

.shelfTitle .titleUnderscore {
  height: 4px;
  background-color: #016ab3;
  width: 125px;
  bottom: 0;
  left: 0;
  border-radius: 15px;
}

/* DISCOUNT BADGES */

:global(.vtex-store-components-3-x-discountInsideContainer):not(:global(.marinbrasil-store-components-0-x-discountInsideContainer)) {
  display: none;
}

:global(.vtex-store-components-3-x-discountInsideContainer):global(.marinbrasil-store-components-0-x-discountInsideContainer) {
  font-size: 0.7rem;
  color: #fff;
  width: 50px;
  height: auto;
  position: absolute;
  left: auto;
  top: auto;
  right: 0;
  padding: 4px 8px;
  /* display: flex; */
  background-color: #29bf17;
  z-index: 2;
  line-height: 15px;
  border-radius: 5px;
}

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of cms-demo-blocks/react/components/Shelf/Shelf.tsx from the cms-demo-blocks VTEX app.

[Assistant]
Here's the implementation:

```tsx
import * as React from 'react'
import classnames from 'classnames'
import {
  ProductSummaryList,
  ProductSummaryCustom,
  ProductSummaryName,
  ProductSummaryImage,
  ProductSummarySpecificationBadges,
} from 'vtex.product-summary'
import { SliderLayout } from 'vtex.slider-layout'
import { index as StackLayout } from 'vtex.stack-layout'
import { Wrapper as AddToCartButton } from 'vtex.add-to-cart-button'
import { RateStars, ProductPrice } from 'marinbrasil.store-components'
import { useCssHandles } from 'vtex.css-handles'

import './styles.css'

interface ShelfProps {
  products?: { filterOption?: FilterOption; collection?: string }
  category?: string
  maxItems?: number
  shelfTitle?: string
  specificationFilters?: SpecfiicationFilter[]
  hideUnavailableItems?: boolean
}

interface SpecfiicationFilter {
  Id?: string
  value?: string
}

type FilterOption = 'OrderByTopSaleDESC' | 'collection'

interface SummaryProps {
  product: any
}

function ProductSummary(props: SummaryProps) {
  const { product } = props

  return (
    <ProductSummaryCustom product={product}>
      <StackLayout>
        <ProductSummaryImage />
        <ProductSummarySpecificationBadges />
      </StackLayout>
      <ProductSummaryName />
      <RateStars />
      <ProductPrice />
      <AddToCartButton />
    </ProductSummaryCustom>
  )
}

const ITEMS_PER_PAGE = {
  desktop: 4,
  tablet: 2,
  phone: 1,
}

const SHELF_CSS_HANDLES = [
  'customShelfContainer',
  'customSliderContainer',
  'shelfTitle',
  'titleUnderscore',
] as const

function Shelf(props: ShelfProps) {
  const {
    category,
    maxItems,
    products: { filterOption, collection } = {
      filterOption: 'OrderByTopSaleDESC',
    },
    shelfTitle = 'Shelf',
    hideUnavailableItems,
    specificationFilters,
  } = props

  const handles = useCssHandles(SHELF_CSS_HANDLES)

  const titleClasses = classnames(
    handles.shelfTitle,
    't-heading-2 c-on-base mv7 relative pb5'
  )

  const underscoreClasses = classnames(handles.titleUnderscore, 'absolute')

  return (
    <div className={handles.customShelfContainer}>
      <h2 className={titleClasses}>
        {shelfTitle} <span className={underscoreClasses} />
      </h2>
      <div className={handles.customSliderContainer}>
        <ProductSummaryList
          orderBy={
            filterOption === 'OrderByTopSaleDESC' ? filterOption : undefined
          }
          maxItems={maxItems}
          category={category}
          ProductSummary={ProductSummary}
          hideUnavailableItems={hideUnavailableItems}
          specificationFilters={specificationFilters}
          collection={
            filterOption === 'collection' && collection ? collection : undefined
          }
        >
          <SliderLayout
            showNavigationArrows="never"
            itemsPerPage={ITEMS_PER_PAGE}
          />
        </ProductSummaryList>
      </div>
    </div>
  )
}

export default Shelf

```


[System] You are an expert VTEX IO developer. You specialize in building VTEX Store Framework apps, React components, GraphQL APIs, and Node.js services for e-commerce platforms.

[User] Show me the implementation of admin-pages/messages/nl.json from the admin-pages VTEX app.

[Assistant]
Here's the implementation:

```json
{
  "admin/pages.admin-menu-button.content-pages": "Inhoudpagina's",
  "admin/pages.admin-menu-button.pages": "Pagina's",
  "admin/pages.admin-menu-button.site-editor-smb": "Site-editor",
  "admin/pages.admin-menu-button.site-editor": "Site-editor",
  "admin/pages.admin-menu-button.store": "Winkel",
  "admin/pages.admin-menu-button.styles": "Stijlen",
  "admin/pages.admin.content.content.section-title": "Inhoud",
  "admin/pages.admin.content.general.description.label": "Beschrijving",
  "admin/pages.admin.content.general.section-title": "Algemeen",
  "admin/pages.admin.content.general.seo.description": "<The description is the text commonly used by Google to display text results from the second and third lines of the search results, just below the title>",
  "admin/pages.admin.content.general.seo.page-title": "<Page title>",
  "admin/pages.admin.content.general.title.label": "Titel",
  "admin/pages.admin.content.general.title.placeholder": "bijv.: Over ons",
  "admin/pages.admin.content.general.url.label": "URL",
  "admin/pages.admin.content.general.url.placeholder": "bijv.: /Over ons",
  "admin/pages.admin.content.not-supported.action": "Zie instructies",
  "admin/pages.admin.content.not-supported.description": "Het thema dat in uw winkel is geïnstalleerd ondersteunt niet de creatie van aangepaste inhoudspagina's. Als u pagina's moet maken, kies dan een ander thema dat deze functie ondersteunt, of als u een aangepast thema gebruikt, vraag dan de ontwikkelaar om de instructies in de onderstaande link te volgen.",
  "admin/pages.admin.content.not-supported.title": "Deze functie is niet beschikbaar",
  "admin/pages.admin.loading": "Laden",
  "admin/pages.admin.pages.form.button.cancel": "Annuleer",
  "admin/pages.admin.pages.form.button.delete": "Verwijderen",
  "admin/pages.admin.pages.form.button.save": "Opslaan",
  "admin/pages.admin.pages.form.delete.error": "Fout: route kon niet worden gewist.",
  "admin/pages.admin.pages.form.delete.success": "Succes",
  "admin/pages.admin.pages.form.details.path-hint": "/nieuwe-pagina",
  "admin/pages.admin.pages.form.details.title": "Paginadetails",
  "admin/pages.admin.pages.form.field.array.item.apply": "Toepassen",
  "admin/pages.admin.pages.form.field.array.item.delete": "Verwijderen",
  "admin/pages.admin.pages.form.field.array.item.edit": "Bewerk",
  "admin/pages.admin.pages.form.field.array.item": "Item",
  "admin/pages.admin.pages.form.field.login": "Vereist verificatie",
  "admin/pages.admin.pages.form.field.meta.description.no-options": "Typ uw trefwoord en druk op ENTER om het toe te voegen.",
  "admin/pages.admin.pages.form.field.meta.description": "Beschrijving",
  "admin/pages.admin.pages.form.field.meta.keywords.create": "Trefwoord aanmaken \"{keyword}\"",
  "admin/pages.admin.pages.form.field.meta.keywords": "Trefwoorden",
  "admin/pages.admin.pages.form.field.path": "URL",
  "admin/pages.admin.pages.form.field.title": "Titel",
  "admin/pages.admin.pages.form.save.error": "Fout: route kon niet worden opgeslagen.",
  "admin/pages.admin.pages.form.save.success": "Succes",
  "admin/pages.admin.pages.form.templates.conditional.addButton": "Voorwaardelijke sjabloon toevoegen",
  "admin/pages.admin.pages.form.templates.conditional.description": "Voorwaardelijke sjabloon maakt het gebruik van een variant op uw pagina mogelijk. Deze lay-out zal verschijnen wanneer deze overeenkomt met de ingestelde voorwaarden.",
  "admin/pages.admin.pages.form.templates.conditional.template.label": "Sjabloon",
  "admin/pages.admin.pages.form.templates.conditional.title": "Voorwaardelijk",
  "admin/pages.admin.pages.form.templates.field.default": "Standaard",
  "admin/pages.admin.pages.form.templates.field.required": "Vereist",
  "admin/pages.admin.pages.form.templates.path.invalid-format": "Ongeldige URL.",
  "admin/pages.admin.pages.form.templates.path.validation-error": "URL moet beginnen met '/'.",
  "admin/pages.admin.pages.form.templates.simple.conditions.add-button": "Nieuwe voorwaarde toevoegen",
  "admin/pages.admin.pages.form.templates.simple.conditions.category-placeholder": "Selecteer voorwaardetype",
  "admin/pages.admin.pages.form.templates.simple.conditions.date.equals": "is",
  "admin/pages.admin.pages.form.templates.simple.conditions.date.from": "begint op",
  "admin/pages.admin.pages.form.templates.simple.conditions.date.range.and": "en",
  "admin/pages.admin.pages.form.templates.simple.conditions.date.range": "is tussen",
  "admin/pages.admin.pages.form.templates.simple.conditions.date.to": "eindigt op",
  "admin/pages.admin.pages.form.templates.simple.conditions.date": "Datum",
  "admin/pages.admin.pages.form.templates.simple.conditions.header-prefix": "Bijbehorend",
  "admin/pages.admin.pages.form.templates.simple.conditions.header-suffix": "volgende voorwaarden",
  "admin/pages.admin.pages.form.templates.simple.conditions.no-conditions": "Geen voorwaarden geselecteerd",
  "admin/pages.admin.pages.form.templates.simple.conditions.operator-all": "alle",
  "admin/pages.admin.pages.form.templates.simple.conditions.operator-and": "en",
  "admin/pages.admin.pages.form.templates.simple.conditions.operator-any": "elke",
  "admin/pages.admin.pages.form.templates.simple.conditions.operator-or": "of",
  "admin/pages.admin.pages.form.templates.title": "Sjablonen",
  "admin/pages.admin.pages.form.title.new": "Nieuwe pagina",
  "admin/pages.admin.pages.list.button.create": "Nieuwe aanmaken",
  "admin/pages.admin.pages.list.section.notFound": "Niet gevonden (404)",
  "admin/pages.admin.pages.list.section.product": "Product",
  "admin/pages.admin.pages.list.section.productCollections": "Productverzamelingen",
  "admin/pages.admin.pages.list.section.standard": "Standaard",
  "admin/pages.admin.redirects.bulk.failed.button": "Zie fouten",
  "admin/pages.admin.redirects.bulk.failed": "We konden niet alle {lines} regels uit bestand {fileName} verwerken. Probeer het opnieuw.",
  "admin/pages.admin.redirects.bulk.partial": "Het importeren van bestand {fileName} is gedeeltelijk gelukt: {success} succesvol, {failed} mislukt.",
  "admin/pages.admin.redirects.bulk.success": "Helemaal klaar. {lines} regels zijn met succes verwerkt uit bestand \"{fileName}\"",
  "admin/pages.admin.redirects.button.create": "Nieuwe omleiding",
  "admin/pages.admin.redirects.emptyState.upload": "Upload een CVS",
  "admin/pages.admin.redirects.emptyState": "Geen omleidingen gemaakt.",
  "admin/pages.admin.redirects.error.retry": "Opnieuw proberen",
  "admin/pages.admin.redirects.error": "Er is iets misgegaan.",
  "admin/pages.admin.redirects.form.button.back": "Terug",
  "admin/pages.admin.redirects.form.button.cancel": "Annuleer",
  "admin/pages.admin.redirects.form.button.remove": "Verwijder",
  "admin/pages.admin.redirects.form.button.save": "Opslaan",
  "admin/pages.admin.redirects.form.datePicker.title": "Einddatum",
  "admin/pages.admin.redirects.form.delete.error": "Fout: omleiding kon niet worden gewist.",
  "admin/pages.admin.redirects.form.modal.text": "Weet u zeker dat u deze omleiding wilt verwijderen?",
  "admin/pages.admin.redirects.form.save.error": "Fout: omleiding kon niet worden opgeslagen.",
  "admin/pages.admin.redirects.form.title.info": "Informatie omleiden",
  "admin/pages.admin.redirects.form.title.new": "Maak een omleiding",
  "admin/pages.admin.redirects.form.toggle.endDate": "Deze omleiding heeft een einddatum",
  "admin/pages.admin.redirects.form.toggle.permanent": "Deze omleiding is permanent (code: 301).",
  "admin/pages.admin.redirects.form.toggle.temporary": "Deze omleiding is tijdelijk (Code: 302).",
  "admin/pages.admin.redirects.import-error.button.cancel": "Annuleer",
  "admin/pages.admin.redirects.import-error.button.download": "Download",
  "admin/pages.admin.redirects.import-error.button.retry": "Probeer opnieuw",
  "admin/pages.admin.redirects.import-error.retry-fail": "Opnieuw proberen mislukt: {success} succesvol, {failed} mislukt.",
  "admin/pages.admin.redirects.import-error.retry-success": "Opnieuw proberen succesvol.",
  "admin/pages.admin.redirects.import-error.title": "Mislukte omleidingen",
  "admin/pages.admin.redirects.or.text": "of",
  "admin/pages.admin.redirects.pagination.showRows": "Aantal rijen",
  "admin/pages.admin.redirects.table.endDate.default": "niet ingesteld",
  "admin/pages.admin.redirects.table.endDate.title": "Einddatum",
  "admin/pages.admin.redirects.table.from": "Van",
  "admin/pages.admin.redirects.table.to": "Naar",
  "admin/pages.admin.redirects.table.toolbar.export": "Exporteer",
  "admin/pages.admin.redirects.table.toolbar.fields.hide-all": "Verberg alles",
  "admin/pages.admin.redirects.table.toolbar.fields.label": "Schakelen tussen zichtbare velden",
  "admin/pages.admin.redirects.table.toolbar.fields.show-all": "Toon alles",
  "admin/pages.admin.redirects.table.toolbar.import": "Importeer",
  "admin/pages.admin.redirects.table.toolbar.line-density.high": "Hoog",
  "admin/pages.admin.redirects.table.toolbar.line-density.label": "Lijndichtheid",
  "admin/pages.admin.redirects.table.toolbar.line-density.low": "Laag",
  "admin/pages.admin.redirects.table.toolbar.line-density.medium": "Medium",
  "admin/pages.admin.redirects.table.type.permanent": "Permanent (301)",
  "admin/pages.admin.redirects.table.type.temporary": "Tijdelijk (302)",
  "admin/pages.admin.redirects.table.type": "Type",
  "admin/pages.admin.redirects.title": "Omleidingslijst",
  "admin/pages.admin.redirects.upload-modal.error.line.title": "Fouten op lijn ",
  "admin/pages.admin.redirects.upload-modal.fail.message": "Probeer het nog eens.",
  "admin/pages.admin.redirects.upload-modal.fail.subtitle": "Uw omleidingen konden niet worden geüpload.",
  "admin/pages.admin.redirects.upload-modal.fail.title": "Er is iets misgegaan.",
  "admin/pages.admin.redirects.upload-modal.loading.cancel": "Annuleer",
  "admin/pages.admin.redirects.upload-modal.loading.warning": "Sluit dit venster niet.",
  "admin/pages.admin.redirects.upload-modal.prompt.alert.unsupported-file": "Niet-ondersteund bestandstype. Gelieve een .csv-bestand te uploaden.",
  "admin/pages.admin.redirects.upload-modal.prompt.alert.validation-errors.action": "Zie fouten",
  "admin/pages.admin.redirects.upload-modal.prompt.alert.validation-errors": "Validatiefouten in bestand {name}",
  "admin/pages.admin.redirects.upload-modal.prompt.body.download-template": "Download sjabloon",
  "admin/pages.admin.redirects.upload-modal.prompt.body": "Gebruik ons sjabloon of een geëxporteerd bestand als basis.",
  "admin/pages.admin.redirects.upload-modal.prompt.button.cancel": "Annuleren",
  "admin/pages.admin.redirects.upload-modal.prompt.button.import": "Bestand importeren",
  "admin/pages.admin.redirects.upload-modal.prompt.drop.button": "kies een bestand",
  "admin/pages.admin.redirects.upload-modal.prompt.drop.message": "Zet hier je CVS of ",
  "admin/pages.admin.redirects.upload-modal.prompt.select-action.body": "Wilt u de omleidingen opslaan of verwijderen?",
  "admin/pages.admin.redirects.upload-modal.prompt.select-action.delete": "Verwijderen",
  "admin/pages.admin.redirects.upload-modal.prompt.select-action.save": "Opslaan",
  "admin/pages.admin.redirects.upload-modal.prompt.select-action.title": "CSV importeren",
  "admin/pages.admin.redirects.upload-modal.prompt.validation-error.type": "[Lijn {line}] Ongeldige waarde \"{type}\" voor omleidingstype. Toegestane waarden zijn \"PERMANENT\" en \"TIJDELIJK\".",
  "admin/pages.admin.rich-text-editor.add-button": "Voeg toe",
  "admin/pages.admin.rich-text-editor.add-image.label": "URL van de afbeelding",
  "admin/pages.admin.rich-text-editor.add-image.placeholder": "Link",
  "admin/pages.admin.rich-text-editor.add-image.text-label": "Tekst",
  "admin/pages.admin.rich-text-editor.add-image.title": "Afbeelding invoegen",
  "admin/pages.admin.rich-text-editor.bold.title": "Vetgedrukt",
  "admin/pages.admin.rich-text-editor.heading.header-four": "Heading 4",
  "admin/pages.admin.rich-text-editor.heading.header-one": "Heading 1",
  "admin/pages.admin.rich-text-editor.heading.header-three": "Heading 3",
  "admin/pages.admin.rich-text-editor.heading.header-two": "Heading 2",
  "admin/pages.admin.rich-text-editor.heading.title": "Stijlen",
  "admin/pages.admin.rich-text-editor.heading.unstyled": "Normale tekst",
  "admin/pages.admin.rich-text-editor.italic.title": "Cursief",
  "admin/pages.admin.rich-text-editor.link.title": "Link invoegen",
  "admin/pages.admin.rich-text-editor.ordered-list.title": "Bestelde lijst",
  "admin/pages.admin.rich-text-editor.underline.title": "Onderstreep",
  "admin/pages.admin.rich-text-editor.unordered-list.title": "Onbestelde lijst",
  "admin/pages.admin.rich-text-editor.upload-button": "Upload",
  "admin/pages.admin.rich-text-editor.upload-image-label": "Kies een afbeelding om te uploaden",
  "admin/pages.admin.tabs.pages": "Pagina's",
  "admin/pages.admin.tabs.redirects": "Omleidingen",
  "admin/pages.editor.component-list.action-menu.delete": "Verwijderen",
  "admin/pages.editor.component-list.action-menu.activate": "Activeer",
  "admin/pages.editor.component-list.action-menu.reset": "Reset",
  "admin/pages.editor.component-list.action-menu.tooltip": "Deze kaart wordt momenteel bewerkt.",
  "admin/pages.editor.component-list.back": "Terug",
  "admin/pages.editor.component-list.status.active": "Actief",
  "admin/pages.editor.component-list.status.inactive": "Inactief",
  "admin/pages.editor.component-list.status.scheduled": "Gepland",
  "admin/pages.editor.component-list.title": "Configuraties",
  "admin/pages.editor.component-list.untitled": "Ongetitelde blok",
  "admin/pages.editor.components.status.alert": "Deze versie van de inhoud wordt niet getoond in het voorbeeld en de bezoekers.",
  "admin/pages.editor.components.editable.alert": "Het bewerken van deze pagina zal op elke subcategorie pagina reflecteren. Als je wilt dat de inhoud wordt overgenomen van het bovenliggende (categorie) niveau, stel deze in.",
  "admin/pages.editor.components.arrayTemplate.button.add": "Voeg toe",
  "admin/pages.editor.components.button.cancel": "Annuleer",
  "admin/pages.editor.components.button.save": "Opslaan",
  "admin/pages.editor.components.condition.date.title": "Aangepaste datum",
  "admin/pages.editor.components.condition.date.toggle.start": "Stel een startdatum in",
  "admin/pages.editor.components.condition.date.toggle.end": "Stel een einddatum in",
  "admin/pages.editor.components.condition.visibility.activation.disabled": "U kunt inhoud niet deactiveren. Kies de versie die u wilt activeren en deze zal automatisch worden gedeactiveerd.",
  "admin/pages.editor.components.condition.visibility.activation.warning": "De huidige actieve inhoud wordt gedeactiveerd.",
  "admin/pages.editor.components.condition.scope.entity.brand": "dit merk",
  "admin/pages.editor.components.condition.scope.entity.category": "deze categorie",
  "admin/pages.editor.components.condition.scope.entity.custom": "deze URL",
  "admin/pages.editor.components.condition.scope.entity.department": "deze afdeling",
  "admin/pages.editor.components.condition.scope.entity.product": "dit product",
  "admin/pages.editor.components.condition.scope.entity.route": "deze URL",
  "admin/pages.editor.components.condition.scope.entity.search": "deze zoekopdracht",
  "admin/pages.editor.components.condition.scope.entity.subcategory": "deze subcategorie",
  "admin/pages.editor.components.condition.scope.sitewide": "deze volledige site",
  "admin/pages.editor.components.condition.scope.template": "dit sjabloon",
  "admin/pages.editor.components.condition.scope.title": "Toepassen op",
  "admin/pages.editor.components.condition.title": "Zichtbaarheid",
  "admin/pages.editor.components.condition.visibility.activation": "Nu inschakelen",
  "admin/pages.editor.components.condition.toast.error.page-context": "Kan {entity} niet identificeren. De configuratie wordt ingesteld op \"{template}\".",
  "admin/pages.editor.components.modal.back.button.discard": "Weggooien",
  "admin/pages.editor.components.modal.back.button.save": "Opslaan",
  "admin/pages.editor.components.modal.back.text": "Je niet opgeslagen veranderingen zullen verloren gaan. Wil je ze opslaan?",
  "admin/pages.editor.components.modal.form.button.cancel": "Annuleer",
  "admin/pages.editor.components.modal.form.text": "Je hebt niet opgeslagen veranderingen. Weet u zeker dat u wilt doorgaan en uw wijzigingen wilt schrappen? Deze actie kan niet ongedaan worden gemaakt.",
  "admin/pages.editor.components.modal.form.title": "Niet opgeslagen veranderingen",
  "admin/pages.editor.components.modal.list.delete.active.text": "U probeert de actieve inhoud te verwijderen. De eerstvolgende beschikbare inhoud neemt zijn plaats in. Weet u zeker dat u wilt doorgaan? Deze actie kan niet ongedaan worden gemaakt.",
  "admin/pages.editor.components.modal.list.delete.active.title": "Actieve inhoud verwijderen",
  "admin/pages.editor.components.modal.list.delete.button.cancel": "Annuleren",
  "admin/pages.editor.components.modal.list.delete.button.delete": "Verwijderen",
  "admin/pages.editor.components.modal.list.delete.inactive.text": "Weet u zeker dat u deze inhoud wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.",
  "admin/pages.editor.components.modal.list.delete.inactive.title": "Verwijder inhoud",
  "admin/pages.editor.components.modal.list.reset.button.reset": "Reset",
  "admin/pages.editor.components.modal.list.reset.text": "U probeert de inhoud van een applicatie te resetten. Deze actie zal alle wijzigingen die u hebt aangebracht weggooien. Weet u zeker dat u wilt doorgaan? Deze actie kan niet ongedaan worden gemaakt.",
  "admin/pages.editor.components.modal.list.reset.title": "Reset inhoud van een app",
  "admin/pages.editor.components.no-image": "Geen afbeelding",
  "admin/pages.editor.components.open.error": "Er is iets fout gegaan. Probeer het opnieuw.",
  "admin/pages.editor.components.title": "Blokken",
  "admin/pages.editor.components.toast.delete.error": "Er is iets fout gegaan. Probeer het opnieuw.",
  "admin/pages.editor.components.toast.delete.success": "Inhoud succesvol verwijderd.",
  "admin/pages.editor.components.toast.reset.error": "Er is iets fout gegaan. Probeer het opnieuw.",
  "admin/pages.editor.components.toast.reset.success": "Inhoud succesvol gereset.",
  "admin/pages.editor.components.toast.save.error": "Er is iets fout gegaan. Probeer het opnieuw.",
  "admin/pages.editor.components.toast.save.success": "Inhoud succesvol opgeslagen.",
  "admin/pages.editor.configuration.button.create": "Nieuwe inhoud",
  "admin/pages.editor.configuration.condition.date.from": "Start:",
  "admin/pages.editor.configuration.condition.date.to": "Einde:",
  "admin/pages.editor.configuration.createdBy": "Gemaakt door {name}",
  "admin/pages.editor.configuration.defaultTitle": "Inhoud zonder titel",
  "admin/pages.editor.configuration.scope.sitewide.context": "volledige site",
  "admin/pages.editor.configuration.scope.sitewide.saved": "Opgeslagen op",
  "admin/pages.editor.configuration.scope.template.context": "sjabloon",
  "admin/pages.editor.configuration.scope.template.saved": "Opgeslagen in",
  "admin/pages.editor.configuration.tag.editing": "Bewerken",
  "admin/pages.editor.container.dev-mode-warning.text": "Je bent in ontwikkelingsmodus. Wijzigingen aan de inhoud gaan niet in productie.",
  "admin/pages.editor.container.editpath.label": "URL",
  "admin/pages.editor.container.master-workspace-warning.text": "Je bent de live winkel aan het bewerken. De wijzigingen zullen onmiddellijk van kracht zijn.",
  "admin/pages.editor.iframe.confirm-prompt": "Weet je zeker dat je wilt vertrekken?",
  "admin/pages.editor.image-uploader.empty.button": "Sleep een afbeelding of klik om te kiezen",
  "admin/pages.editor.image-uploader.empty.subtext-1": "of",
  "admin/pages.editor.image-uploader.empty.subtext-2": "slepen en neerzetten",
  "admin/pages.editor.image-uploader.empty.subtext-3": "een afbeelding",
  "admin/pages.editor.image-uploader.error.file-size": "Bestand overschrijdt de limiet van 4MB. Kies een kleinere.",
  "admin/pages.editor.image-uploader.error.generic": "Er is iets fout gegaan. Probeer het opnieuw.",
  "admin/pages.editor.locale.aa": "Afar",
  "admin/pages.editor.locale.ab": "Abchazisch",
  "admin/pages.editor.locale.ae": "Avestan",
  "admin/pages.editor.locale.af": "Afrikaans",
  "admin/pages.editor.locale.ak": "Akan",
  "admin/pages.editor.locale.am": "Amharisch",
  "admin/pages.editor.locale.an": "Aragonees",
  "admin/pages.editor.locale.ar": "Arabisch",
  "admin/pages.editor.locale.as": "Assamees",
  "admin/pages.editor.locale.av": "Avaric",
  "admin/pages.editor.locale.ay": "Aymara",
  "admin/pages.editor.locale.az": "Azerbeidzjaans",
  "admin/pages.editor.locale.ba": "Bashkir",
  "admin/pages.editor.locale.be": "Wit-Russische",
  "admin/pages.editor.locale.bg": "Bulgaars",
  "admin/pages.editor.locale.bh": "Bihari",
  "admin/pages.editor.locale.bi": "Bislama",
  "admin/pages.editor.locale.bm": "Bambara",
  "admin/pages.editor.locale.bn": "Bangla",
  "admin/pages.editor.locale.bo": "Tibetaans",
  "admin/pages.editor.locale.br": "Bretons",
  "admin/pages.editor.locale.bs": "Bosnisch",
  "admin/pages.editor.locale.ca": "Catalaans",
  "admin/pages.editor.locale.ce": "Tsjetsjeen",
  "admin/pages.editor.locale.ch": "Chamorro",
  "admin/pages.editor.locale.co": "Corsicaans",
  "admin/pages.editor.locale.cr": "Cree",
  "admin/pages.editor.locale.cs": "Tsjechisch",
  "admin/pages.editor.locale.cu": "Kerkslavisch",
  "admin/pages.editor.locale.cv": "Chuvash",
  "admin/pages.editor.locale.cy": "Welsh",
  "admin/pages.editor.locale.da": "Deens",
  "admin/pages.editor.locale.de": "Duits",
  "admin/pages.editor.locale.dv": "Divehi",
  "admin/pages.editor.locale.dz": "Dzongkha",
  "admin/pages.editor.locale.ee": "Ewe",
  "admin/pages.editor.locale.el": "Grieks",
  "admin/pages.editor.locale.en": "Engels",
  "admin/pages.editor.locale.eo": "Esperanto",
  "admin/pages.editor.locale.es": "Spaans",
  "admin/pages.editor.locale.et": "Ests",
  "admin/pages.editor.locale.eu": "Baskisch",
  "admin/pages.editor.locale.fa": "Perzisch",
  "admin/pages.editor.locale.ff": "Fulah",
  "admin/pages.editor.locale.fi": "Fins",
  "admin/pages.editor.locale.fj": "Fijian",
  "admin/pages.editor.locale.fo": "Faeröers",
  "admin/pages.editor.locale.fr": "Frans",
  "admin/pages.editor.locale.fy": "West-Fries",
  "admin/pages.editor.locale.ga": "Iers",
  "admin/pages.editor.locale.gd": "Schots-Gaelisch",
  "admin/pages.editor.locale.gl": "Galicisch",
  "admin/pages.editor.locale.gn": "Guarani",
  "admin/pages.editor.locale.gu": "Gujarati",
  "admin/pages.editor.locale.gv": "Manx",
  "admin/pages.editor.locale.ha": "Hausa",
  "admin/pages.editor.locale.he": "Hebreeuws",
  "admin/pages.editor.locale.hi": "Hindi",
  "admin/pages.editor.locale.ho": "Hiri Motu",
  "admin/pages.editor.locale.hr": "Kroatisch",
  "admin/pages.editor.locale.ht": "Haïtiaans Creools",
  "admin/pages.editor.locale.hu": "Hongaars",
  "admin/pages.editor.locale.hy": "Armeens",
  "admin/pages.editor.locale.hz": "Herero",
  "admin/pages.editor.locale.ia": "Interlingua",
  "admin/pages.editor.locale.id": "Indonesisch",
  "admin/pages.editor.locale.ie": "Interlingue",
  "admin/pages.editor.locale.ig": "Igbo",
  "admin/pages.editor.locale.ii": "Sichuan Yi",
  "admin/pages.editor.locale.ik": "Inupiaq",
  "admin/pages.editor.locale.io": "Ido",
  "admin/pages.editor.locale.is": "IJslands",
  "admin/pages.editor.locale.it": "Italiaans",
  "admin/pages.editor.locale.iu": "Inuktitut",
  "admin/pages.editor.locale.ja": "Japans",
  "admin/pages.editor.locale.jv": "Javaans",
  "admin/pages.editor.locale.ka": "Georgisch",
  "admin/pages.editor.locale.kg": "Kongo",
  "admin/pages.editor.locale.ki": "Kikuyu",
  "admin/pages.editor.locale.kj": "Kuanyama",
  "admin/pages.editor.locale.kk": "Kazachs",
  "admin/pages.editor.locale.kl": "Kalaallisut",
  "admin/pages.editor.locale.km": "Khmer",
  "admin/pages.editor.locale.kn": "Kannada",
  "admin/pages.editor.locale.ko": "Koreaans",
  "admin/pages.editor.locale.kr": "Kanuri",
  "admin/pages.editor.locale.ks": "Kasjmiri",
  "admin/pages.editor.locale.ku": "Koerdisch",
  "admin/pages.editor.locale.kv": "Komi",
  "admin/pages.editor.locale.kw": "Cornish",
  "admin/pages.editor.locale.ky": "Kyrgyz",
  "admin/pages.editor.locale.la": "Latijns",
  "admin/pages.editor.locale.lb": "Luxemburgs",
  "admin/pages.editor.locale.lg": "Ganda",
  "admin/pages.editor.locale.li": "Limburgs",
  "admin/pages.editor.locale.ln": "Lingala",
  "admin/pages.editor.locale.lo": "Lao",
  "admin/pages.editor.locale.lt": "Litouws",
  "admin/pages.editor.locale.lu": "Luba-Katanga",
  "admin/pages.editor.locale.lv": "Lets",
  "admin/pages.editor.locale.mg": "Malagassisch",
  "admin/pages.editor.locale.mh": "Marshallese",
  "admin/pages.editor.locale.mi": "Maori",
  "admin/pages.editor.locale.mk": "Macedonisch",
  "admin/pages.editor.locale.ml": "Malayalam",
  "admin/pages.editor.locale.mn": "Mongools",
  "admin/pages.editor.locale.mr": "Marathi",
  "admin/pages.editor.locale.ms": "Maleis",
  "admin/pages.editor.locale.mt": "Maltees",
  "admin/pages.editor.locale.my": "Birmaans",
  "admin/pages.editor.locale.na": "Nauru",
  "admin/pages.editor.locale.nb": "Noors Bokmål",
  "admin/pages.editor.locale.nd": "Noord-Ndebele",
  "admin/pages.editor.locale.ne": "Nepalees",
  "admin/pages.editor.locale.ng": "Ndonga",
  "admin/pages.editor.locale.nl": "Nederlands",
  "admin/pages.editor.locale.nn": "Noors Nynorsk",
  "admin/pages.editor.locale.no": "Noors",
  "admin/pages.editor.locale.nr": "Zuid-Ndebele",
  "admin/pages.editor.locale.nv": "Navajo",
  "admin/pages.editor.locale.ny": "Nyanja",
  "admin/pages.editor.locale.oc": "Occitaans",
  "admin/pages.editor.locale.oj": "Ojibwa",
  "admin/pages.editor.locale.om": "Oromo",
  "admin/pages.editor.locale.or": "Odia",
  "admin/pages.editor.locale.os": "Ossetisch",
  "admin/pages.editor.locale.pa": "Punjabi",
  "admin/pages.editor.locale.pi": "Pali",
  "admin/pages.editor.locale.pl": "Pools",
  "admin/pages.editor.locale.ps": "Pashto",
  "admin/pages.editor.locale.pt": "Portugees",
  "admin/pages.editor.locale.qu": "Quechua",
  "admin/pages.editor.locale.rm": "Romansh",
  "admin/pages.editor.locale.rn": "Rundi",
  "admin/pages.editor.locale.ro": "Roemeens",
  "admin/pages.editor.locale.ru": "Russisch",
  "admin/pages.editor.locale.rw": "Kinyarwanda",
  "admin/pages.editor.locale.sa": "Sanskriet",
  "admin/pages.editor.locale.sc": "Sardijns",
  "admin/pages.editor.locale.sd": "Sindhi",
  "admin/pages.editor.locale.se": "Noord-Samisch",
  "admin/pages.editor.locale.sg": "Sango",
  "admin/pages.editor.locale.si": "Singalees",
  "admin/pages.editor.locale.sk": "Slowaaks",
  "admin/pages.editor.locale.sl": "Sloveens",
  "admin/pages.editor.locale.sm": "Samoaans",
  "admin/pages.editor.locale.sn": "Shona",
  "admin/pages.editor.locale.so": "Somalisch",
  "admin/pages.editor.locale.sq": "Albanees",
  "admin/pages.editor.locale.sr": "Servisch",
  "admin/pages.editor.locale.ss": "Swati",
  "admin/pages.editor.locale.st": "Zuid-Sotho",
  "admin/pages.editor.locale.su": "Sundanees",
  "admin/pages.editor.locale.sv": "Zweeds",
  "admin/pages.editor.locale.sw": "Swahili",
  "admin/pages.editor.locale.ta": "Tamil",
  "admin/pages.editor.locale.te": "Telugu",
  "admin/pages.editor.locale.tg": "Tajik",
  "admin/pages.editor.locale.th": "Thais",
  "admin/pages.editor.locale.ti": "Tigrinya",
  "admin/pages.editor.locale.tk": "Turkmeens",
  "admin/pages.editor.locale.tl": "Tagalog",
  "admin/pages.editor.locale.tn": "Tswana",
  "admin/pages.editor.locale.to": "Tongaans",
  "admin/pages.editor.locale.tr": "Turks",
  "admin/pages.editor.locale.ts": "Tsonga",
  "admin/pages.editor.locale.tt": "Tatar",
  "admin/pages.editor.locale.tw": "Twi",
  "admin/pages.editor.locale.ty": "Tahitiaans",
  "admin/pages.editor.locale.ug": "Oeigoers",
  "admin/pages.editor.locale.uk": "Oekraïens",
  "admin/pages.editor.locale.ur": "Urdu",
  "admin/pages.editor.locale.uz": "Oezbeeks",
  "admin/pages.editor.locale.ve": "Venda",
  "admin/pages.editor.locale.vi": "Vietnamees",
  "admin/pages.editor.locale.vo": "Volapük",
  "admin/pages.editor.locale.wa": "Waals",
  "admin/pages.editor.locale.wo": "Wolof",
  "admin/pages.editor.locale.xh": "Xhosa",
  "admin/pages.editor.locale.yi": "Jiddisch",
  "admin/pages.editor.locale.yo": "Yoruba",
  "admin/pages.editor.locale.za": "Zhuang",
  "admin/pages.editor.locale.zh": "Chinees",
  "admin/pages.editor.locale.zu": "Zulu",
  "admin/pages.editor.store.settings.advanced.disclaimer": "⚠ Deze functies moeten met de nodige voorzichtigheid worden gebruikt.",
  "admin/pages.editor.store.settings.error.title": "Er is iets misgegaan",
  "admin/pages.editor.store.settings.error": "Kon de winkelinstellingen niet laden.",
  "admin/pages.editor.store.settings.pwa.android-logo-icon": "Android Logo Icoon (512x512, PNG)",
  "admin/pages.editor.store.settings.pwa.app-settings": "Andere PWA-instellingen",
  "admin/pages.editor.store.settings.pwa.background_color": "Achtergrondkleur",
  "admin/pages.editor.store.settings.pwa.disable-prompt": "Toevoegen aan het beginscherm",
  "admin/pages.editor.store.settings.pwa.display.browser": "Browser",
  "admin/pages.editor.store.settings.pwa.display.fullscreen": "Volledig scherm",
  "admin/pages.editor.store.settings.pwa.display.minimal-ui": "Minimale-UI (niet ondersteund door Chrome)",
  "admin/pages.editor.store.settings.pwa.display.standalone": "Standalone (Toevoegen aan beginscherm)",
  "admin/pages.editor.store.settings.pwa.display": "Weergeven",
  "admin/pages.editor.store.settings.pwa.error": "Kon de PWA-instellingen niet laden.",
  "admin/pages.editor.store.settings.pwa.ios-logo-icon": "iOS Logo Icoon (512x512, PNG)",
  "admin/pages.editor.store.settings.pwa.orientation.any": "Elke",
  "admin/pages.editor.store.settings.pwa.orientation.landscape-primary": "Liggend (Primair)",
  "admin/pages.editor.store.settings.pwa.orientation.landscape-secondary": "Liggend (Secundair)",
  "admin/pages.editor.store.settings.pwa.orientation.landscape": "Liggend",
  "admin/pages.editor.store.settings.pwa.orientation.natural": "Normaal",
  "admin/pages.editor.store.settings.pwa.orientation.portrait-primary": "Staand (Primair)",
  "admin/pages.editor.store.settings.pwa.orientation.portrait-secondary": "Staand (Secundair)",
  "admin/pages.editor.store.settings.pwa.orientation.portrait": "Staand",
  "admin/pages.editor.store.settings.pwa.prompt-custom-event.addToCart": "Op het eerste item dat aan de winkelwagen is toegevoegd",
  "admin/pages.editor.store.settings.pwa.prompt-custom-event.checkout": "Op de eerste aankoop",
  "admin/pages.editor.store.settings.pwa.prompt-custom-event.default": "Op het eerste bezoek",
  "admin/pages.editor.store.settings.pwa.prompt-custom-event": "Prompt \"Toevoegen aan beginscherm\"",
  "admin/pages.editor.store.settings.pwa.screen-orientation": "Schermoriëntatie",
  "admin/pages.editor.store.settings.pwa.splash-screen": "Voorbeeld van welkomstscherm (iOS)",
  "admin/pages.editor.store.settings.pwa.start_url": "Start-URL",
  "admin/pages.editor.store.settings.pwa.theme_color": "Themakleur",
  "admin/pages.editor.store.settings.pwa.update-manifest-icon.error": "Er is iets misgegaan tijdens het bijwerken van het app-pictogram…",
  "admin/pages.editor.store.settings.pwa.update-manifest-icon.success": "App-icoon succesvol bijgewerkt!",
  "admin/pages.editor.store.settings.refetch": "Opnieuw proberen",
  "admin/pages.editor.store.settings.tabs.advanced": "Geavanceerd",
  "admin/pages.editor.store.settings.tabs.general": "Algemeen",
  "admin/pages.editor.store.settings.tabs.pwa": "PWA",
  "admin/pages.editor.store.settings.title": "Winkelinstellingen",
  "admin/pages.editor.styles.card.current": "Huidige",
  "admin/pages.editor.styles.card.menu.delete.fail": "Mislukt om stijl te verwijderen.",
  "admin/pages.editor.styles.card.menu.delete": "Verwijderen",
  "admin/pages.editor.styles.card.menu.duplicate.fail": "Het dupliceren van stijl '{name}' is mislukt.",
  "admin/pages.editor.styles.card.menu.duplicate.success": "Stijl '{name}' is gedupliceerd.",
  "admin/pages.editor.styles.card.menu.duplicate": "Dupliceer",
  "admin/pages.editor.styles.card.menu.edit": "Bewerk",
  "admin/pages.editor.styles.card.menu.select": "Selecteer als winkelstijl",
  "admin/pages.editor.styles.card.name.app-subtitle": "gemaakt door {app}",
  "admin/pages.editor.styles.duplicate.defaultName": "Kopie van {name}",
  "admin/pages.editor.styles.edit.colors.title": "Kleuren",
  "admin/pages.editor.styles.edit.custom-font.file-link": "Bestandslink",
  "admin/pages.editor.styles.edit.custom-font.file-upload": "Upload een bestand",
  "admin/pages.editor.styles.edit.custom-font.style": "Stijl:",
  "admin/pages.editor.styles.edit.custom-font.title": "Aangepast lettertype",
  "admin/pages.editor.styles.edit.custom-font.upload-description-max-size": "(Maximale grootte 2MB)",
  "admin/pages.editor.styles.edit.custom-font.upload-description": "Upload uw lettertypefamiliebestanden in .ttf- of .woff-formaat.",
  "admin/pages.editor.styles.edit.custom-font.upload": "Upload",
  "admin/pages.editor.styles.edit.font-family.add-font-description": "U kunt aangepaste lettertypefamilies aan uw winkel toevoegen, laten we er wat aan toevoegen?",
  "admin/pages.editor.styles.edit.font-family.add-font-success": "Lettertypefamilie succesvol opgeslagen.",
  "admin/pages.editor.styles.edit.font-family.add-font": "Aangepast lettertype toevoegen",
  "admin/pages.editor.styles.edit.font-family.remove-font-failure": "Kan de lettertypefamilie niet verwijderen, omdat een of andere stijl het gebruikt.",
  "admin/pages.editor.styles.edit.font-family.remove-font-success": "Lettertypefamilie succesvol verwijderd.",
  "admin/pages.editor.styles.edit.font-family.style-dropdown-placeholder": "Kies een stijl",
  "admin/pages.editor.styles.edit.font-family.title": "Lettertypefamilie",
  "admin/pages.editor.styles.edit.save.failed": "Er is een fout opgetreden tijdens het opslaan van uw stijl.",
  "admin/pages.editor.styles.edit.save.successful": "Stijl succesvol opgeslagen.",
  "admin/pages.editor.styles.edit.type-tokens.title": "Type tokens",
  "admin/pages.editor.styles.edit.typography.title": "Typografie",
  "admin/pages.editor.styles.header.title": "Stijlen",
  "admin/pages.editor.styles.new-button.text": "Nieuw",
  "admin/pages.editor.styles.new.defaultName": "Zonder titel",
  "admin/pages.editor.styles.new.fail": "Het creëren van een nieuwe stijl is mislukt.",
  "admin/pages.editor.styles.new.success": "Nieuwe stijl gecreëerd.",
  "admin/pages.editor.styles.select.delete-success": "Stijl '{name}' is verwijderd.",
  "admin/pages.editor.styles.select.delete.toast.undo": "Ongedaan maken",
  "admin/pages.editor.styles.select.save-fail": "Het selecteren van stijl '{name}' is mislukt.",
  "admin/pages.editor.styles.select.save-success": "Stijl '{name}' is geselecteerd.",
  "admin/pages.editor.topbar.button.block-picker.tooltip": "Selecteer een blok",
  "admin/pages.editor.topbar.button.device.desktop.tooltip": "Bureaubladweergave",
  "admin/pages.editor.topbar.button.device.mobile.tooltip": "Mobiele weergave",
  "admin/pages.editor.topbar.button.device.tablet.tooltip": "Tabletweergave",
  "admin/pages.editor.topbar.button.preview.tooltip": "Preview",
  "admin/pages.editor.topbar.context.binding.error": "De lijst met beschikbare bindingen kon niet worden geladen.",
  "admin/pages.editor.topbar.context.binding.tooltip": "De binding kan niet worden gewijzigd tijdens het bewerken van een blok.",
  "admin/pages.editor.topbar.context.locale.tooltip": "De locatie kan niet worden gewijzigd tijdens het bewerken van een blok.",
  "admin/appframe.navigation.contentManagement": "Inhoudelijk beheer",
  "admin/pages.admin.redirects.upload-modal.prompt.alert.missing-binding-data": "Bindingsinformatie ontbreekt in omleiding {route}",
  "admin/pages.admin.redirects.upload-modal.prompt.alert.extra-binding-data": "Onnodige bindende informatie van omleiding {route}",
  "admin/store.b2benabled.title": "B2B-gedrag ingeschakeld",
  "admin/store.title": "VTEX Store",
  "admin/store.storeName.title": "Naam winkel",
  "admin/store.requiresAuthorization.title": "Maakt B2B-gedrag mogelijk",
  "admin/store.titleTag.title": "Standaard titeltag",
  "admin/store.metaTagDescription.title": "Meta omschrijvingtag",
  "admin/store.metaTagRobots.title": "Meta robots-tag",
  "admin/store.metaTagRobots.description": "Standaardwaarde: index, follow",
  "admin/store.faviconLinks.title": "Favicons",
  "admin/store.faviconLinks.rel.title": "Favicon-relatie",
  "admin/store.faviconLinks.rel.description": "Deze favicon-relatie, bijv.: \"icon\", \"shortcut icon\", \"apple-touch-icon\"",
  "admin/store.faviconLinks.type.title": "Favicon-mediatype",
  "admin/store.faviconLinks.type.description": "(Optioneel) Favicon-type, bijv.: image/png",
  "admin/store.faviconLinks.sizes.title": "Favicon grootte",
  "admin/store.faviconLinks.sizes.description": "(Optioneel) Favicon grootte, formaat: {width}x{height} bijvoorbeeld: 180x180",
  "admin/store.faviconLinks.href.title": "Favicon href",
  "admin/store.faviconLinks.description": "Configureer de favicons van uw winkel",
  "admin/store.searchTermPath.title": "Pad van zoekterm",
  "admin/store.searchTermPath.description": "Geef het zoekpad van uw winkel aan",
  "admin/store.advancedSettings.title": "Geavanceerde winkelinstellingen",
  "admin/store.advancedSettings.enableOrderFormOptimization.title": "orderformulier optimalisatie",
  "admin/store.advancedSettings.enableOrderFormOptimization.description": "Schakelt de oude bestelformulier provider uit. Meer op: https://vtex.io/docs/recipes/store-management/enabling-order-form-optimization.",
  "admin/store.advancedSettings.enableServiceWorker.title": "Dienstverlener",
  "admin/store.advancedSettings.enableServiceWorker.description": "Registreer de standaard dienstverlener die door VTEX wordt geleverd.",
  "admin/store.advancedSettings.enableCriticalCSS.title": "Kritieke CSS-optimalisatie",
  "admin/store.advancedSettings.enableCriticalCSS.description": "Schakelt CSS-optimalisaties in die de prestatie en de Lighthouse-score kunnen verbeteren. Heeft alleen invloed op de home pagina. Kan stijlinconsistenties veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableCriticalCSSOnSearch.title": "Kritische CSS-optimalisatie op zoekpagina",
  "admin/store.advancedSettings.enableCriticalCSSOnSearch.description": "Schakelt CSS-optimalisaties in die de prestatie en de Lighthouse-score kunnen verbeteren. Heeft alleen invloed op de home pagina. Kan stijlinconsistenties veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableCriticalCSSOnCustom.title": "Kritische CSS-optimalisatie op aangepaste pagina",
  "admin/store.advancedSettings.enableCriticalCSSOnCustom.description": "Schakelt CSS-optimalisaties in die de prestatie en de Lighthouse-score kunnen verbeteren. Heeft alleen invloed op de aangepaste pagina. Kan stijlinconsistenties veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableCriticalCSSOnProduct.title": "Kritische CSS-optimalisatie op productpagina",
  "admin/store.advancedSettings.enableCriticalCSSOnProduct.description": "Schakelt CSS-optimalisaties in die de prestatie en de Lighthouse-score kunnen verbeteren. Heeft alleen invloed op de productpagina. Kan stijlinconsistenties veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableCSSConcatenation.title": "Schakelt CSS-aaneenschakeling in",
  "admin/store.advancedSettings.enableCSSConcatenation.description": "Voegt de CSS van een pagina samen in één bestand voor snellere download.",
  "admin/store.advancedSettings.enablePrefetch.title": "Schakelt Prefetch in",
  "admin/store.advancedSettings.enablePrefetch.description": "Prefetches pagina's op muisbeweging voor snellere navigatie.",
  "admin/store.advancedSettings.enableLazyRuntime.title": "Maakt langzame runtime mogelijk",
  "admin/store.advancedSettings.enableLazyRuntime.description": "Laadt langzaam de metadata van de pagina.",
  "admin/store.advancedSettings.enableMenuRenderingOptimization.title": "Maakt langzame rendering van submenu-items mogelijk",
  "admin/store.advancedSettings.enableMenuRenderingOptimization.description": "Schakelt geoptimaliseerde submenu-rendering in, wat de prestatie verbetert. Kan stijlproblemen veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableSearchRenderingOptimization.title": "Maakt langzame weergave van zoekresultaten en facetten mogelijk",
  "admin/store.advancedSettings.enableSearchRenderingOptimization.description": "Schakelt geoptimaliseerde rendering van zoekresultaten en facets in, wat de prestaties verbetert. Kan stijlproblemen veroorzaken, test met voorzichtigheid na het inschakelen.",
  "admin/store.advancedSettings.enableAsyncScripts.title": "Schakelt het asynchroon laden van scripts in",
  "admin/store.advancedSettings.enableAsyncScripts.description": "Begin scripts sneller te verwerken door ze asynchroon te laden en uit te voeren.",
  "admin/store.advancedSettings.enableConcurrentMode.title": "Schakelt de reactiemodus in",
  "admin/store.advancedSettings.enableConcurrentMode.description": "Help de winkel responsief te blijven en zich aan te passen aan de apparaatmogelijkheden en netwerksnelheid van de gebruiker.",
  "admin/store.advancedSettings.enableFiltersFetchOptimization.title": "Filters gedeeltelijk inschakelen",
  "admin/store.advancedSettings.enableFiltersFetchOptimization.description": "Verbetert de prestatie van zoekpagina's door alleen de 10 eerste facetten van elk filter op te halen, en een knop toe te voegen om de rest te tonen. Kan problemen veroorzaken wanneer je naar een pagina gaat met geselecteerde facets, vooral op search-resolver v0. Test met voorzichtigheid na het aanzetten ervan",
  "admin/store.advancedSettings.enableFullSSROnProduct.title": "Schakel het uitvoeren van alle GraphQL-queries op de productpagina in",
  "admin/store.advancedSettings.enableFullSSROnProduct.description": "Het helpt wanneer een productpagina extra data moet ophalen om componenten boven de vouw te renderen. Zet het alleen aan als je product pagina het echt nodig heeft, anders zal het een deoptimalisatie zijn.",
  "admin/store.advancedSettings.enableLazyFooter.title": "Trage rendering van de paginavoetregel inschakelen",
  "admin/store.advancedSettings.enableLazyFooter.description": "Render de voettekst van de pagina op een trage manier en laadt de assets op een trage manier, wat de prestaties van de eerste render van de pagina ten goede komt.",
  "admin/store.advancedSettings.enableLazyFold.title": "Schakel traag laden van activa onder de vouw in",
  "admin/store.advancedSettings.enableLazyFold.description": "Schakel het traag laden in van de JS bestanden van de componenten onder het `__fold__` blok in.",
  "admin/store.advancedSettings.fetchSponsoredProductsOnSearch.title": "[BETA] Haal gesponsorde producten op in de zoekresultaten",
  "admin/store.advancedSettings.fetchSponsoredProductsOnSearch.description": "Als deze winkel VTEX-advertenties heeft geconfigureerd, haalt deze optie gesponsorde producten op in de zoekresultaten.",
  "admin/pages.editor.newadmin.alert": "Dit is een testomgeving. Om veranderingen toe te passen op uw online winkel, ",
  "admin/pages.editor.newadmin.alert.anchor": "ga dan naar de vorige VTEX Admin.",
  "admin/store.includeTwitterMetaTags.title": "Twitter-metatags opnemen",
  "admin/store.twitterUsername.title": "Twitter-gebruikersnaam",
  "admin/store.twitterUsername.description": "De gebruikersnaam die uw bedrijf op Twitter gebruikt, bijvoorbeeld: VTEXcommerce.",
  "admin/store.twitterCard.title": "Twitter-kaart",
  "admin/store.twitterCard.description": "Kies het type voor de Twitter-kaart",
  "admin/store.advancedSettings.enablePageNumberTitle.title": "Paginanummer in metatitel inschakelen",
  "admin/store.advancedSettings.enablePageNumberTitle.description": "Voeg een #{Nummer} toe aan het einde van de titel om het probleem van titelduplicatie te voorkomen",
  "admin/store.advancedSettings.canonicalWithoutUrlParams.title": "Canonieke url zonder url-parameters",
  "admin/store.advancedSettings.canonicalWithoutUrlParams.description": "Verwijder de kaartparameter uit de canonieke URL. Kan problemen veroorzaken bij het bezoeken van een pagina met geselecteerde facetten. Test voorzichtig na het inschakelen",
  "admin/store.advancedSettings.removeStoreNameTitle.title": "Verwijder winkelnaam uit titel",
  "admin/store.advancedSettings.removeStoreNameTitle.description": "Verwijder winkelnaam aan het einde van Product- en Categorie-metatitels",
  "admin/store.advancedSettings.enableCustomCurrencySymbol.title": "Aangepast valutasymbool inschakelen",
  "admin/store.advancedSettings.enableCustomCurrencySymbol.description": "Gebruikt het veld \"Valutasymbool\" gedefinieerd in het handelsbeleid",
  "admin/pages.editor.copy-page.modal.header": "Dupliceer pagina naar andere bindingen",
  "admin/pages.editor.copy-page.modal.subheader": "Kies aan welke bindingen de inhoud zal worden gedupliceerd. Als de pagina niet bestaat in een binding, wordt deze aangemaakt en metadata (zoals SEO informatie) wordt ook gekopieerd.",
  "admin/pages.editor.copy-page.modal.error.title": "Fout bij het ophalen van routesinformatie",
  "admin/pages.editor.copy-page.modal.error.body": "Er is een fout opgetreden bij het ophalen van de routesinformatie. Probeer de modal te sluiten en te heropenen.",
  "admin/pages.editor.copy-page.modal.table-header.supported-locales": "Ondersteunde talen",
  "admin/pages.editor.copy-page.modal.table-header.warning": "Waarschuwing",
  "admin/pages.editor.copy-page.modal.warning.page-exists": "Pagina bestaat al",
  "admin/pages.editor.topbar.button.copy-page.tooltip": "Dupliceer pagina naar andere bindingen",
  "admin/pages.editor.components.button.go-back": "Ga terug",
  "admin/pages.editor.components.button.overwrite": "Overschrijven",
  "admin/pages.editor.copy-page.overwritedialog.header": "Bestaande inhoud zal worden overschreven",
  "admin/pages.editor.copy-page.overwritedialog.subheader.singular": "Bestaande inhoud in deze bindings zal permanent worden verwijderd:",
  "admin/pages.editor.copy-page.overwritedialog.subheader.plural": "Bestaande inhoud in deze binding zal permanent worden verwijderd:",
  "admin/pages.editor.copy-page.overwritedialog.confirmation": "Weet u zeker dat u de inhoud naar hen wilt dupliceren?",
  "admin/pages.editor.copy-page.modal.toast.saving": "Opslaan...",
  "admin/pages.editor.copy-page.modal.toast.success": "Klaar!",
  "admin/pages.editor.copy-page.modal.toast.error": "Er is een fout opgetreden. Probeer het opnieuw",
  "admin/actions.enable-binding": "Configuratie inschakelen door binding",
  "admin/actions.binding-configurations": "Bindende configuraties",
  "admin/actions.binding-id": "Bindende ID",
  "admin/actions.binding-description": "Voer de bindende ID in",
  "admin/store.advancedSettings.customHeader.title": "Aangepaste headers",
  "admin/store.advancedSettings.customHeader.__editorItemTitle.title": "Header-id",
  "admin/store.advancedSettings.customHeader.__editorItemTitle.description": "Voer de id in om uw header te identificeren. Voorbeeld: Mijn nieuwe aangepaste header",
  "admin/store.advancedSettings.customHeader.key.title": "Headersleutel",
  "admin/store.advancedSettings.customHeader.key.description": "Voer de sleutel in voor uw header, volgens HTTP-patronen. Voorbeeld: Strict-Transport-Security",
  "admin/store.advancedSettings.customHeader.value.title": "Headerwaarde",
  "admin/store.advancedSettings.customHeader.value.description": "Voer de waarde in voor uw sleutel, volgens HTTP-patronen. Voorbeeld: max-age=<expire-time>",
  "admin/store.advancedSettings.a11ySemanticHtmlMigration.title": "Activeer semantische HTML-migratie voor toegankelijkheid",
  "admin/store.advancedSettings.a11ySemanticHtmlMigration.description": "Activeert semantische HTML-elementen voor betere toegankelijkheid en naleving van de Europese Toegankelijkheidswet (EAA) en WCAG 2.1. Dit kan leiden tot ingrijpende veranderingen in aangepaste stijlen die afhankelijk zijn van specifieke HTML-elementen."
}

```