diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8a6fe3f0..90fb03af 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,4 +1,4 @@ # Users referenced in this file will automatically be requested as reviewers for PRs that modify the given paths. # See https://help.github.com/articles/about-code-owners/ -* @Kentico/developer-relations +* @Kontent-ai/developer-relations diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index a1dab8bf..abdb2628 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at DevelopersCommunity@kentico.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at devrel@konten.ai. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. @@ -44,5 +44,3 @@ This Code of Conduct is adapted from the [Contributor Covenant][homepage], versi [homepage]: https://contributor-covenant.org [version]: https://contributor-covenant.org/version/1/4/ - -![Analytics](https://kentico-ga-beacon.azurewebsites.net/api/UA-69014260-4/Kentico/Home/master/CODE_OF_CONDUCT.md?pixel) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cdf4977e..8edcb287 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ There are many different ways in which you can contribute. One of the easiest wa Please note that **level of provided support is always determined by the [LICENSE](LICENSE.md)** of a given open-source project. Also, always make sure you use the **[latest version](../../releases)** of any given OS project. We can't provide any help for older versions. We don't want to make things complicated so we try to take the same approach in all our repositories. -### I found a bug in a Kentico's open-source project +### I found a bug in a Kontent.ai open-source project @@ -20,8 +20,7 @@ Sorry to hear that. Just log a new [GitHub issue](../../issues) and someone will To get help with coding and structuring your projects, use [StackOverflow](https://stackoverflow.com/) to ask questions with one of the following tags: -- [`kentico-kontent`](https://stackoverflow.com/questions/tagged/kentico-kontent) -- [`kentico`](https://stackoverflow.com/questions/tagged/kentico) +- [`kontent.ai`](https://stackoverflow.com/questions/tagged/kontent.ai) Our team members and the community monitor these channels on a regular basis. @@ -29,7 +28,7 @@ Our team members and the community monitor these channels on a regular basis. -Security issues and bugs should be reported privately, via email, to the Kentico Developer Community Team developerscommunity@kentico.com. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. +Security issues and bugs should be reported privately, via email, to the Kontent.ai Developer Community Team devrel@kontent.ai. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. ### I have an idea for a new feature (or feedback on existing functionality) @@ -42,7 +41,7 @@ Everybody loves new features! You can submit a new [feature request](../../issue Unless you're fixing a typo, it's usually a good idea to discuss the feature before you submit a pull request with code changes, so let's start with submitting a new [GitHub issue](../../issues) and discussing the whether it fits the vision of a given project. -You might also read these two blogs posts on contributing code: [Open Source Contribution Etiquette](http://tirania.org/blog/archive/2010/Dec-31.html) by Miguel de Icaza and [Don't "Push" Your Pull Requests](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) by Ilya Grigorik. Note that all code submissions will be rigorously reviewed and tested by the Kentico Maintainers teams, and only those that meet an high bar for both quality and design/roadmap appropriateness will be merged into the source. +You might also read these two blogs posts on contributing code: [Open Source Contribution Etiquette](http://tirania.org/blog/archive/2010/Dec-31.html) by Miguel de Icaza and [Don't "Push" Your Pull Requests](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests/) by Ilya Grigorik. Note that all code submissions will be rigorously reviewed and tested by the Kontent.ai Maintainers teams, and only those that meet an high bar for both quality and design/roadmap appropriateness will be merged into the source. ### Example - process of contribution @@ -68,12 +67,10 @@ To start with coding, fork the repository you want to contribute to, create a ne -Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient. Update your pull request according to feedback until it is approved by one of the Kentico maintainers. After that, one of our team members may adjust the branch you merge into based on the expected release schedule. +Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient. Update your pull request according to feedback until it is approved by one of the Kontent.ai maintainers. After that, one of our team members may adjust the branch you merge into based on the expected release schedule. ## Code of Conduct -The Kentico team is committed to fostering a welcoming community, therefore this project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). If you have any additional questions or comments, you can contact us directly at developerscommunity@kentico.com. - -![Analytics](https://kentico-ga-beacon.azurewebsites.net/api/UA-69014260-4/Kentico/Home/master/CONTRIBUTING.md?pixel) +The Kotent.ai team is committed to fostering a welcoming community, therefore this project has adopted the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md). If you have any additional questions or comments, you can contact us directly at devrel@kontent.ai diff --git a/LICENSE b/LICENSE index 3343ee88..290435b9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 Kentico +Copyright (c) 2022 Kontent s.r.o. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 72afe04f..440a3d45 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -# Kontent sample React single-page application +# Kontent.ai sample React single-page application [![Netlify Status](https://api.netlify.com/api/v1/badges/5018e8db-b76e-4f19-8ad2-7fd9da21a2ee/deploy-status)](https://app.netlify.com/sites/kontent-sample-app-react/deploys) [![Live Demo](https://img.shields.io/badge/live-demo-brightgreen.svg)](https://kontent-sample-app-react.netlify.app/) -[![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-ASK%20NOW-FE7A16.svg?logo=stackoverflow&logoColor=white)](https://stackoverflow.com/tags/kentico-kontent) +[![Stack Overflow](https://img.shields.io/badge/Stack%20Overflow-ASK%20NOW-FE7A16.svg?logo=stackoverflow&logoColor=white)](https://stackoverflow.com/tags/kontent-ai) -This is a sample website written in Typescript utilizing the Kontent Delivery API to retrieve content from Kontent by Kentico. You can register your developer account at . For a brief walkthrough, check out [Running the React sample app](https://kontent.ai/learn/tutorials/develop-apps/get-started/run-the-react-sample-app) at Kontent Learn. +This is a sample website written in Typescript utilizing the Kontent.ai Delivery API to retrieve content from Kontent.ai. You can register your developer account at . For a brief walkthrough, check out [Running the React sample app](https://kontent.ai/learn/tutorials/develop-apps/get-started/run-the-react-sample-app) at Kontent.ai Learn. ## Application setup @@ -17,15 +17,15 @@ This is a sample website written in Typescript utilizing the Kontent Delivery AP ### Connecting to your sample project -At the first run of the app, you'll be presented with a configuration page. It will allow you to connect the app to your Kontent project or create a new one. You'll also be able to start a trial and convert to a free plan when the trial expires. +At the first run of the app, you'll be presented with a configuration page. It will allow you to connect the app to your Kontent.ai project or create a new one. You'll also be able to start a trial and convert to a free plan when the trial expires. Alternatively, you can connect your project manually as per the chapter below. #### Connecting to your project manually -If you want to change the source Kontent project, follow these steps: +If you want to change the source Kontent.ai project, follow these steps: -1. In Kontent, choose Project settings from the app menu. +1. In Kontent.ai, choose Project settings from the app menu. 2. Under Development, choose API keys. 3. Copy your Project ID. 4. Open `.env.example` in the root directory. @@ -38,17 +38,17 @@ When you now run the sample application, the application retrieves content from Deploy, explore and change the app directly in the browser. -[![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/Kentico/kontent-sample-app-react) +[![Remix on Glitch](https://cdn.glitch.com/2703baf2-b643-4da7-ab91-7ee2a2d00b5b%2Fremix-button.svg)](https://glitch.com/edit/#!/remix/clone-from-repo?REPO_URL=https://github.com/kontent-ai/sample-app-react) -[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/Kentico/kontent-sample-app-react) +[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/kontent-ai/sample-app-react) ## Previewing content from your project -If you already have a Kontent account and you want to connect the sample application to a project of your own, you need to provide your Project ID and your Preview API key to authorize requests to the Delivery Preview API. For example, you can connect the application to your modified version of the sample project. +If you already have a Kontent.ai account and you want to connect the sample application to a project of your own, you need to provide your Project ID and your Preview API key to authorize requests to the Delivery Preview API. For example, you can connect the application to your modified version of the sample project. To preview content in the sample application, follow these steps: -1. In Kontent, choose Project settings from the app menu. +1. In Kontent.ai, choose Project settings from the app menu. 2. Under Development, choose API keys. 3. Copy your Project ID and Preview API key. 4. Open `.env.example` in the root directory . @@ -63,18 +63,18 @@ When you now run the application, you will see all project content including the 2. Sign in with your credentials. 3. Manage content in the content administration interface of your sample project. -You can learn more about content editing in our tutorials at [Kontent Learn](https://kontent.ai/learn/tutorials/write-and-collaborate/create-content/introducing-content-items). +You can learn more about content editing in our tutorials at [Kontent.ai Learn](https://kontent.ai/learn/tutorials/write-and-collaborate/create-content/introducing-content-items). ## Content delivery -You can retrieve content either through the Kontent Delivery SDKs or the Kontent Delivery API: +You can retrieve content either through the Kontent.ai Delivery SDKs or the Kontent.ai Delivery API: - For published content, use `https://deliver.kontent.ai/PROJECT_ID/items`. - For unpublished content, use `https://preview-deliver.kontent.ai/PROJECT_ID/items`. For more info about the API, see the [API reference](https://kontent.ai/learn/reference). -You can find the Delivery and other SDKs at . +You can find the Delivery and other SDKs at . ## Used toolchain @@ -86,7 +86,7 @@ There are two types of model mapping in this application: ### content type -> DTO -> component -Content type definitions are being generated from content types via [Kontent.ai model generator](https://github.com/Kentico/kontent-model-generator-js) tool. All generated types can be found in `src/Models` folder. The `_project.ts` contains information about the project structure such as project languages as well as other structure information like codenames about content types. +Content type definitions are being generated from content types via [Kontent.ai model generator](https://github.com/kontent-ai/model-generator-js) tool. All generated types can be found in `src/Models` folder. The `_project.ts` contains information about the project structure such as project languages as well as other structure information like codenames about content types. ### content type -> DTO -> view model -> component @@ -94,7 +94,7 @@ Some models displayed in views might require an adjustment from content types. F ### Data fetching -This solution fetches data using the [Delivery client](https://github.com/Kentico/kontent-delivery-sdk-js). For more implementation detail to set up the client see `src/Client.ts`. The data are fetched and stored in a `container` component directly in its state. Then they are passed to the `presentation` component. For a better understanding see the code example below. However, depending on your needs, you can use other technologies for managing application states such as: +This solution fetches data using the [Delivery client](https://github.com/kontent-ai/delivery-sdk-js). For more implementation detail to set up the client see `src/Client.ts`. The data are fetched and stored in a `container` component directly in its state. Then they are passed to the `presentation` component. For a better understanding see the code example below. However, depending on your needs, you can use other technologies for managing application states such as: - [Context](https://reactjs.org/docs/context.html) - [Redux](https://react-redux.js.org/) @@ -188,7 +188,7 @@ const Container: React.FC = () => { ## Localization -In Kontent each language is identified by codename, in case of this project, it is `en-US` and `es-ES`. +In Kontent.ai each language is identified by codename, in case of this project, it is `en-US` and `es-ES`. ### Resource strings @@ -229,7 +229,21 @@ const Component: React.FC = () => { You might want to request items based on the URL slugs. For more information check out [Kontent.ai/learn tutorial](https://kontent.ai/learn/tutorials/develop-apps/get-content/localized-content-items/#a-get-items-by-localized-url-slug). An example in this application for this is provided in `src/Pages/About.tsx` page. -> The showcase is not ideal, because it is using a combination of the language prefix and localizable solution is not ideal. You should try to stick with one of the approaches. Because it is hard to define the behavior for language setting clash i.e. `//articles/`. +> The showcase is not ideal, because it is using a combination of the language prefixes and localizable routes. You should try to stick with one of the approaches. Because it is hard to define the behavior (priority) for language setting clashes like `//articles/. + +### Language fallbacks + +To deal with content that is not available in current language, this project uses method called language fallbacks. It will fetch the content in the language which set as fallback language in the Kontent.ai project and redirect the website to the URL with prefix of the given language. However, it is possible to disable language fallbacks by adding a filter of `system.language` to your query. For more information about getting localized content check this [`link.`](https://kontent.ai/learn/tutorials/develop-apps/get-content/localized-content-items/?tech=javascript) + +```js +var query = Client.items().type(contentTypes.about_us.codename); + +if (this.language) { + query + .languageParameter(this.language) + .equalsFilter('system.language', 'es-ES'); +} +``` ## Handling 404 @@ -245,4 +259,4 @@ We would like to express our thanks to the following people who contributed and - [Bee Martinez](https://github.com/beemtz) -Would you like to become a hero too? Pick an [issue](https://github.com/Kentico/kontent-sample-app-react/issues) and send us a pull request! +Would you like to become a hero too? Pick an [issue](https://github.com/kontent-ai/delivery-sdk-js/issues) and send us a pull request! diff --git a/package-lock.json b/package-lock.json index bcd30710..e0dae621 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { - "name": "@kentico/kontent-sample-app-react", + "name": "@kontent-ai/sample-app-react", "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "@kentico/kontent-sample-app-react", + "name": "@kontent-ai/sample-app-react", "version": "2.1.0", "dependencies": { - "@kentico/kontent-delivery": "11.7.0", - "@simply007org/kontent-react-components": "0.0.8", + "@kontent-ai/delivery-sdk": "^12.0.2", + "@kontent-ai/react-components": "0.1.1", "@simply007org/react-spinners": "0.0.3", "qs": "^6.9.4", "react": "^17.0.2", @@ -21,7 +21,6 @@ "validator": "^13.7.0" }, "devDependencies": { - "@kentico/kontent-model-generator": "^4.1.0", "@simply007org/kontent-react-components": "^0.0.8", "@testing-library/jest-dom": "^5.16.3", "@testing-library/react": "^12.1.4", @@ -3052,6 +3051,20 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -3061,6 +3074,25 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -3068,9 +3100,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -3081,6 +3113,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/@kentico/kontent-core/-/kontent-core-9.5.0.tgz", "integrity": "sha512-jYhanUJNfU9Ot9owxA5oIEFU56ULxfbyv1cQpmlhLKzL+DfkVKT73h7aQFIn6Dw8pILqNX9pSxGcsJhfRtoWQw==", + "dev": true, "dependencies": { "axios": "0.26.1" }, @@ -3092,6 +3125,7 @@ "version": "11.7.0", "resolved": "https://registry.npmjs.org/@kentico/kontent-delivery/-/kontent-delivery-11.7.0.tgz", "integrity": "sha512-1NrPeGzBz7+AY62dH1nUAXOibSM+dUPBBToWrUJpsAE/qWRuVGUHprusjpXwR+hY+5tIWSw6pNjKCA06X5PMEw==", + "dev": true, "dependencies": { "@kentico/kontent-core": "9.5.0", "url-parse": "1.5.10", @@ -3101,74 +3135,65 @@ "node": ">= 8" } }, - "node_modules/@kentico/kontent-model-generator": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-model-generator/-/kontent-model-generator-4.1.0.tgz", - "integrity": "sha512-8moZ1und/s5jCHiRL1QSRI3FTokUQZUTVsV8RfWd3Xd+uuDfghUAjJIk7ulXNxwOAaMxJaU/QprJPD7GJnzYnw==", - "dev": true, + "node_modules/@kontent-ai/core-sdk": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.0.0.tgz", + "integrity": "sha512-Qm3QbNmnsXPweHvB3roa5WuX0Z0Uesg0ehfJGM6Gr/5eI4/dCXs+M3CA2fB+KQ/mQoxJ9hbLyIXbhPiFVS+eZw==", "dependencies": { - "@kentico/kontent-delivery": "11.0.0", - "colors": "1.4.0", - "prettier": "2.4.1", - "yargs": "17.2.1" - }, - "bin": { - "kontent-generate": "dist/cjs/lib/cli/cli.js" + "axios": "0.27.2" }, "engines": { "node": ">= 8" } }, - "node_modules/@kentico/kontent-model-generator/node_modules/@kentico/kontent-core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-core/-/kontent-core-9.3.0.tgz", - "integrity": "sha512-1+XjR5JaQv9yEFu9XUPtM4VphVLR04LuT5hgczYxlaYwHFbnYdi192YaGJF3ffdrIxfTbCbuJyH47eVzYLfcoA==", - "dev": true, + "node_modules/@kontent-ai/core-sdk/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/@kontent-ai/core-sdk/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "axios": "0.21.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 8" + "node": ">= 6" } }, - "node_modules/@kentico/kontent-model-generator/node_modules/@kentico/kontent-delivery": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-delivery/-/kontent-delivery-11.0.0.tgz", - "integrity": "sha512-YSH40GL7t1VI5G4J4TslnBN/jYjHL4NdLnVo+BBPi5RwLWx7l+3ZrqRVvqjkRk1PRPd/hzMuH98LNSWP1WQJpA==", - "dev": true, + "node_modules/@kontent-ai/delivery-sdk": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@kontent-ai/delivery-sdk/-/delivery-sdk-12.0.2.tgz", + "integrity": "sha512-baeWlq5Sp2OKpBgwmo4bcuf8vIpXwKAGX2ngcAOfnyR8zj8CcqWbHat4ix3MXLaPxwB2wEWmTSuVw+lFo0IVKA==", "dependencies": { - "@kentico/kontent-core": "9.3.0", + "@kontent-ai/core-sdk": "10.0.0", + "url-parse": "1.5.10", "uuid": "8.3.2" }, "engines": { "node": ">= 8" } }, - "node_modules/@kentico/kontent-model-generator/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/@kentico/kontent-model-generator/node_modules/yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", - "dev": true, + "node_modules/@kontent-ai/react-components": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/react-components/-/react-components-0.1.1.tgz", + "integrity": "sha512-kRj1Z/J9aDsT9qitATzqQH0Ml9RzLJL4K/V3HKpeqgwx6bXicVKmr0re/YmYz4LIsxM8OxMq8vRGJ5gjGY3cgg==", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "html-react-parser": "^1.4.8", + "react": "^17.0.2", + "react-dom": "^17.0.2" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@kontent-ai/delivery-sdk": "12.x" } }, "node_modules/@leichtgewicht/ip-codec": { @@ -4171,7 +4196,6 @@ "version": "17.0.14", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.14.tgz", "integrity": "sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -5100,8 +5124,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "node_modules/at-least-node": { "version": "1.0.0", @@ -5170,6 +5193,7 @@ "version": "0.26.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, "dependencies": { "follow-redirects": "^1.14.8" } @@ -6055,20 +6079,10 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -7105,7 +7119,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -7275,7 +7288,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -7289,7 +7301,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, "funding": [ { "type": "github", @@ -7322,7 +7333,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, "dependencies": { "domelementtype": "^2.2.0" }, @@ -7337,7 +7347,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -7479,7 +7488,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -9427,7 +9435,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.1.1.tgz", "integrity": "sha512-ddijSO0GluZEdlLNmiAjFI+CkAgzUgf8n3vpitQhvlsniPMbCSWtu+QYmioaVmEN0stytm9C38p6SsTDthv0cA==", - "dev": true, "dependencies": { "domhandler": "4.3.1", "htmlparser2": "7.2.0" @@ -9437,7 +9444,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -9449,7 +9455,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -9513,7 +9518,6 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.10.tgz", "integrity": "sha512-GiG7mEwI0enY7hz0F0Zx1B4D0MCQWx2xH0KdVNV9fjqOXwwnPYM79meJ2dsIJf9QR4qQTTPEdSq7wlJfq/i6Tw==", - "dev": true, "dependencies": { "domhandler": "4.3.1", "html-dom-parser": "1.1.1", @@ -9816,8 +9820,7 @@ "node_modules/inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "dev": true + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -13357,7 +13360,6 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -13366,7 +13368,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -15577,15 +15578,18 @@ } }, "node_modules/prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pretty-bytes": { @@ -16078,8 +16082,7 @@ "node_modules/react-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==", - "dev": true + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" }, "node_modules/react-refresh": { "version": "0.11.0", @@ -17563,7 +17566,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "dev": true, "dependencies": { "style-to-object": "0.3.0" } @@ -17572,7 +17574,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dev": true, "dependencies": { "inline-style-parser": "0.1.1" } @@ -17860,14 +17861,14 @@ } }, "node_modules/terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "bin": { @@ -17926,44 +17927,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "dependencies": { - "whatwg-url": "^7.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/terser/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/terser/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "node_modules/terser/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -21565,12 +21528,39 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", "dev": true }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/sourcemap-codec": { "version": "1.4.11", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", @@ -21578,9 +21568,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", - "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", "dev": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", @@ -21591,6 +21581,7 @@ "version": "9.5.0", "resolved": "https://registry.npmjs.org/@kentico/kontent-core/-/kontent-core-9.5.0.tgz", "integrity": "sha512-jYhanUJNfU9Ot9owxA5oIEFU56ULxfbyv1cQpmlhLKzL+DfkVKT73h7aQFIn6Dw8pILqNX9pSxGcsJhfRtoWQw==", + "dev": true, "requires": { "axios": "0.26.1" } @@ -21599,69 +21590,64 @@ "version": "11.7.0", "resolved": "https://registry.npmjs.org/@kentico/kontent-delivery/-/kontent-delivery-11.7.0.tgz", "integrity": "sha512-1NrPeGzBz7+AY62dH1nUAXOibSM+dUPBBToWrUJpsAE/qWRuVGUHprusjpXwR+hY+5tIWSw6pNjKCA06X5PMEw==", + "dev": true, "requires": { "@kentico/kontent-core": "9.5.0", "url-parse": "1.5.10", "uuid": "8.3.2" } }, - "@kentico/kontent-model-generator": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-model-generator/-/kontent-model-generator-4.1.0.tgz", - "integrity": "sha512-8moZ1und/s5jCHiRL1QSRI3FTokUQZUTVsV8RfWd3Xd+uuDfghUAjJIk7ulXNxwOAaMxJaU/QprJPD7GJnzYnw==", - "dev": true, + "@kontent-ai/core-sdk": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@kontent-ai/core-sdk/-/core-sdk-10.0.0.tgz", + "integrity": "sha512-Qm3QbNmnsXPweHvB3roa5WuX0Z0Uesg0ehfJGM6Gr/5eI4/dCXs+M3CA2fB+KQ/mQoxJ9hbLyIXbhPiFVS+eZw==", "requires": { - "@kentico/kontent-delivery": "11.0.0", - "colors": "1.4.0", - "prettier": "2.4.1", - "yargs": "17.2.1" + "axios": "0.27.2" }, "dependencies": { - "@kentico/kontent-core": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-core/-/kontent-core-9.3.0.tgz", - "integrity": "sha512-1+XjR5JaQv9yEFu9XUPtM4VphVLR04LuT5hgczYxlaYwHFbnYdi192YaGJF3ffdrIxfTbCbuJyH47eVzYLfcoA==", - "dev": true, - "requires": { - "axios": "0.21.4" - } - }, - "@kentico/kontent-delivery": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@kentico/kontent-delivery/-/kontent-delivery-11.0.0.tgz", - "integrity": "sha512-YSH40GL7t1VI5G4J4TslnBN/jYjHL4NdLnVo+BBPi5RwLWx7l+3ZrqRVvqjkRk1PRPd/hzMuH98LNSWP1WQJpA==", - "dev": true, - "requires": { - "@kentico/kontent-core": "9.3.0", - "uuid": "8.3.2" - } - }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, - "yargs": { - "version": "17.2.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", - "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", - "dev": true, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" } } } }, + "@kontent-ai/delivery-sdk": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@kontent-ai/delivery-sdk/-/delivery-sdk-12.0.2.tgz", + "integrity": "sha512-baeWlq5Sp2OKpBgwmo4bcuf8vIpXwKAGX2ngcAOfnyR8zj8CcqWbHat4ix3MXLaPxwB2wEWmTSuVw+lFo0IVKA==", + "requires": { + "@kontent-ai/core-sdk": "10.0.0", + "url-parse": "1.5.10", + "uuid": "8.3.2" + } + }, + "@kontent-ai/react-components": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@kontent-ai/react-components/-/react-components-0.1.1.tgz", + "integrity": "sha512-kRj1Z/J9aDsT9qitATzqQH0Ml9RzLJL4K/V3HKpeqgwx6bXicVKmr0re/YmYz4LIsxM8OxMq8vRGJ5gjGY3cgg==", + "requires": { + "@types/react": "^17.0.39", + "@types/react-dom": "^17.0.11", + "html-react-parser": "^1.4.8", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } + }, "@leichtgewicht/ip-codec": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", @@ -22426,7 +22412,6 @@ "version": "17.0.14", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.14.tgz", "integrity": "sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==", - "dev": true, "requires": { "@types/react": "*" } @@ -23143,8 +23128,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "at-least-node": { "version": "1.0.0", @@ -23182,6 +23166,7 @@ "version": "0.26.1", "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dev": true, "requires": { "follow-redirects": "^1.14.8" } @@ -23869,17 +23854,10 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -24609,8 +24587,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "depd": { "version": "2.0.0", @@ -24744,7 +24721,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -24754,8 +24730,7 @@ "domelementtype": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" }, "domexception": { "version": "2.0.1", @@ -24778,7 +24753,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, "requires": { "domelementtype": "^2.2.0" } @@ -24787,7 +24761,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, "requires": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -24898,8 +24871,7 @@ "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, "error-ex": { "version": "1.3.2", @@ -26360,7 +26332,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-1.1.1.tgz", "integrity": "sha512-ddijSO0GluZEdlLNmiAjFI+CkAgzUgf8n3vpitQhvlsniPMbCSWtu+QYmioaVmEN0stytm9C38p6SsTDthv0cA==", - "dev": true, "requires": { "domhandler": "4.3.1", "htmlparser2": "7.2.0" @@ -26369,14 +26340,12 @@ "entities": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", - "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", - "dev": true + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==" }, "htmlparser2": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", - "dev": true, "requires": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", @@ -26426,7 +26395,6 @@ "version": "1.4.10", "resolved": "https://registry.npmjs.org/html-react-parser/-/html-react-parser-1.4.10.tgz", "integrity": "sha512-GiG7mEwI0enY7hz0F0Zx1B4D0MCQWx2xH0KdVNV9fjqOXwwnPYM79meJ2dsIJf9QR4qQTTPEdSq7wlJfq/i6Tw==", - "dev": true, "requires": { "domhandler": "4.3.1", "html-dom-parser": "1.1.1", @@ -26643,8 +26611,7 @@ "inline-style-parser": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==", - "dev": true + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, "internal-slot": { "version": "1.0.3", @@ -29266,14 +29233,12 @@ "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "requires": { "mime-db": "1.52.0" } @@ -30754,9 +30719,9 @@ "dev": true }, "prettier": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.1.tgz", - "integrity": "sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", "dev": true }, "pretty-bytes": { @@ -31136,8 +31101,7 @@ "react-property": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-property/-/react-property-2.0.0.tgz", - "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==", - "dev": true + "integrity": "sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==" }, "react-refresh": { "version": "0.11.0", @@ -32276,7 +32240,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.0.tgz", "integrity": "sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA==", - "dev": true, "requires": { "style-to-object": "0.3.0" } @@ -32285,7 +32248,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", - "dev": true, "requires": { "inline-style-parser": "0.1.1" } @@ -32512,14 +32474,14 @@ } }, "terser": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.13.1.tgz", - "integrity": "sha512-hn4WKOfwnwbYfe48NgrQjqNOH9jzLqRcIfbYytOXCOv46LBfWr9bDS17MQqOi+BWGD0sJK3Sj5NC/gJjiojaoA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "requires": { + "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.8.0-beta.0", "source-map-support": "~0.5.20" }, "dependencies": { @@ -32528,41 +32490,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true - }, - "source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "dev": true, - "requires": { - "whatwg-url": "^7.0.0" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true - }, - "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } } } }, diff --git a/package.json b/package.json index a48284d5..89731c78 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { - "name": "@kentico/kontent-sample-app-react", + "name": "@kontent-ai/sample-app-react", "version": "2.1.0", "private": true, "devDependencies": { - "@kentico/kontent-model-generator": "^4.1.0", "@simply007org/kontent-react-components": "^0.0.8", "@testing-library/jest-dom": "^5.16.3", "@testing-library/react": "^12.1.4", @@ -22,8 +21,8 @@ "react-scripts": "^5.0.1" }, "dependencies": { - "@kentico/kontent-delivery": "11.7.0", - "@simply007org/kontent-react-components": "0.0.8", + "@kontent-ai/delivery-sdk": "^12.0.2", + "@kontent-ai/react-components": "0.1.1", "@simply007org/react-spinners": "0.0.3", "qs": "^6.9.4", "react": "^17.0.2", diff --git a/src/Client.ts b/src/Client.ts index 9b9f951f..e2df775a 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -2,7 +2,7 @@ import Cookies from 'universal-cookie'; import { camelCasePropertyNameResolver, DeliveryClient, -} from '@kentico/kontent-delivery'; +} from '@kontent-ai/delivery-sdk'; import packageInfo from '../package.json'; import { selectedProjectCookieName } from './const'; import { defaultProjectId } from './Utilities/SelectedProject'; diff --git a/src/Components/Banner.tsx b/src/Components/Banner.tsx index a728c811..0be01baf 100644 --- a/src/Components/Banner.tsx +++ b/src/Components/Banner.tsx @@ -1,6 +1,6 @@ import React from 'react'; +import { HeroUnit } from '../Models/content-types/hero_unit'; import RichText from './RichText'; -import { HeroUnit } from '../Models/hero_unit'; interface BannerProps { heroUnit: HeroUnit; diff --git a/src/Components/BrewerStoreContainer.tsx b/src/Components/BrewerStoreContainer.tsx index f0bc71e9..09af5262 100644 --- a/src/Components/BrewerStoreContainer.tsx +++ b/src/Components/BrewerStoreContainer.tsx @@ -9,10 +9,10 @@ import { } from '../Utilities/LanguageCodes'; import BrewerStoreListing from './BrewerStoreListing'; import CheckboxFilter from './CheckboxFilter'; -import { ITaxonomyTerms } from '@kentico/kontent-delivery'; +import { ITaxonomyTerms } from '@kontent-ai/delivery-sdk'; import { useIntl } from 'react-intl'; -import { Brewer } from '../Models/brewer'; -import { projectModel } from '../Models/_project'; +import { Brewer } from '../Models/content-types/brewer'; +import { contentTypes } from '../Models/project/contentTypes'; interface filterType { [index: string]: string[]; @@ -47,7 +47,7 @@ const BrewerStoreContainer: React.FC = () => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.brewer.codename) + .type(contentTypes.brewer.codename) .orderByAscending('elements.product_name'); if (language) { diff --git a/src/Components/BrewerStoreListing.tsx b/src/Components/BrewerStoreListing.tsx index 42140624..30bb91bd 100644 --- a/src/Components/BrewerStoreListing.tsx +++ b/src/Components/BrewerStoreListing.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { resolveContentLink } from '../Utilities/ContentLinks'; import { formatPrice, renderProductStatus } from '../Utilities/StoreListing'; -import { Brewer } from '../Models/brewer'; import { useIntl } from 'react-intl'; +import { Brewer } from '../Models/content-types/brewer'; interface BrewerStoreListingProps { brewers: Brewer[]; diff --git a/src/Components/CoffeeStoreContainer.tsx b/src/Components/CoffeeStoreContainer.tsx index 44961b3a..c233d653 100644 --- a/src/Components/CoffeeStoreContainer.tsx +++ b/src/Components/CoffeeStoreContainer.tsx @@ -8,10 +8,10 @@ import { } from '../Utilities/LanguageCodes'; import CheckboxFilter from './CheckboxFilter'; import CoffeeStoreListing from './CoffeeStoreListing'; -import { ITaxonomyTerms } from '@kentico/kontent-delivery'; -import { Coffee } from '../Models/coffee'; +import { ITaxonomyTerms } from '@kontent-ai/delivery-sdk'; import { useIntl } from 'react-intl'; -import { projectModel } from '../Models/_project'; +import { Coffee } from '../Models/content-types/coffee'; +import { contentTypes } from '../Models/project/contentTypes'; interface filterType { [index: string]: string[]; @@ -36,7 +36,7 @@ const CoffeeStoreContainer: React.FC = () => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.coffee.codename) + .type(contentTypes.coffee.codename) .orderByAscending('elements.product_name'); if (language) { diff --git a/src/Components/CoffeeStoreListing.tsx b/src/Components/CoffeeStoreListing.tsx index b97b2e2d..ab96112c 100644 --- a/src/Components/CoffeeStoreListing.tsx +++ b/src/Components/CoffeeStoreListing.tsx @@ -2,8 +2,8 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { resolveContentLink } from '../Utilities/ContentLinks'; import { formatPrice, renderProductStatus } from '../Utilities/StoreListing'; -import { Coffee } from '../Models/coffee'; import { useIntl } from 'react-intl'; +import { Coffee } from '../Models/content-types/coffee'; interface CoffeeStoreListingProps { coffees: Coffee[]; diff --git a/src/Components/LatestArticles.tsx b/src/Components/LatestArticles.tsx index 3c3882b9..3ceef024 100644 --- a/src/Components/LatestArticles.tsx +++ b/src/Components/LatestArticles.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Link from '../Components/LowerCaseUrlLink'; import { FormattedDate, useIntl } from 'react-intl'; -import { Article } from '../Models/article'; +import { Article } from '../Models/content-types/article'; interface LatestArticlesProps { articles: Article[]; diff --git a/src/Components/Metadata.tsx b/src/Components/Metadata.tsx index ae992a01..dc3e4a81 100644 --- a/src/Components/Metadata.tsx +++ b/src/Components/Metadata.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Helmet } from 'react-helmet'; -import { Elements } from '@kentico/kontent-delivery'; +import { Elements } from '@kontent-ai/delivery-sdk'; interface MetaDataProps { title?: Elements.TextElement; diff --git a/src/Components/OurStory.tsx b/src/Components/OurStory.tsx index 0d98dfaa..8836151c 100644 --- a/src/Components/OurStory.tsx +++ b/src/Components/OurStory.tsx @@ -1,6 +1,6 @@ import React from 'react'; +import { FactAboutUs } from '../Models/content-types/fact_about_us'; import RichText from './RichText'; -import { FactAboutUs } from '../Models/fact_about_us'; interface OurStoryProps { fact: FactAboutUs; diff --git a/src/Components/RichText.tsx b/src/Components/RichText.tsx index bf18324e..41705485 100644 --- a/src/Components/RichText.tsx +++ b/src/Components/RichText.tsx @@ -2,7 +2,7 @@ import { DomElementOptionsType, ResolversType, RichTextElement, -} from '@simply007org/kontent-react-components/dist/components/rich-text-element'; +} from '@kontent-ai/react-components'; import React from 'react'; import { Link } from 'react-router-dom'; import { resolveContentLink } from '../Utilities/ContentLinks'; @@ -12,7 +12,7 @@ import { IContentItem, ILink, IRichTextImage, -} from '@kentico/kontent-delivery'; +} from '@kontent-ai/delivery-sdk'; interface RichTextProps { element: Elements.RichTextElement; diff --git a/src/Components/TasteOurCoffee.tsx b/src/Components/TasteOurCoffee.tsx index 2a72110f..9da0d5cd 100644 --- a/src/Components/TasteOurCoffee.tsx +++ b/src/Components/TasteOurCoffee.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Link from '../Components/LowerCaseUrlLink'; import { useIntl } from 'react-intl'; -import { Cafe } from '../Models/cafe'; +import { Cafe } from '../Models/content-types/cafe'; interface TestOurCoffeeProps { cafes: Cafe[]; diff --git a/src/Fonts/PTSerif-Bold.woff b/src/Fonts/PTSerif-Bold.woff deleted file mode 100644 index 19c01bd9..00000000 Binary files a/src/Fonts/PTSerif-Bold.woff and /dev/null differ diff --git a/src/Fonts/SourceSansPro-Bold.woff b/src/Fonts/SourceSansPro-Bold.woff deleted file mode 100644 index 600751c8..00000000 Binary files a/src/Fonts/SourceSansPro-Bold.woff and /dev/null differ diff --git a/src/Fonts/SourceSansPro-Light.woff b/src/Fonts/SourceSansPro-Light.woff deleted file mode 100644 index fb26ef3b..00000000 Binary files a/src/Fonts/SourceSansPro-Light.woff and /dev/null differ diff --git a/src/Fonts/SourceSansPro-Regular.woff b/src/Fonts/SourceSansPro-Regular.woff deleted file mode 100644 index dbdec39a..00000000 Binary files a/src/Fonts/SourceSansPro-Regular.woff and /dev/null differ diff --git a/src/Fonts/WorkSans-Bold.woff2 b/src/Fonts/WorkSans-Bold.woff2 new file mode 100644 index 00000000..8033cd39 Binary files /dev/null and b/src/Fonts/WorkSans-Bold.woff2 differ diff --git a/src/Fonts/WorkSans-Medium.woff2 b/src/Fonts/WorkSans-Medium.woff2 new file mode 100644 index 00000000..ec1b3435 Binary files /dev/null and b/src/Fonts/WorkSans-Medium.woff2 differ diff --git a/src/Fonts/WorkSans-Regular.woff2 b/src/Fonts/WorkSans-Regular.woff2 new file mode 100644 index 00000000..fac1d452 Binary files /dev/null and b/src/Fonts/WorkSans-Regular.woff2 differ diff --git a/src/Images/Admin/kk-logo.svg b/src/Images/Admin/kk-logo.svg index 37d508aa..91f630ac 100644 --- a/src/Images/Admin/kk-logo.svg +++ b/src/Images/Admin/kk-logo.svg @@ -1 +1 @@ - + \ No newline at end of file diff --git a/src/Models/_project.ts b/src/Models/_project.ts deleted file mode 100644 index 6ea6735f..00000000 --- a/src/Models/_project.ts +++ /dev/null @@ -1,919 +0,0 @@ -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export const projectModel = { - languages: { - enUS: { - codename: 'en-US', - name: 'English (United States)', - }, - esES: { - codename: 'es-ES', - name: 'Spanish (Spain)', - }, - }, - contentTypes: { - about_us: { - codename: 'about_us', - name: 'About us', - elements: { - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - facts: { - codename: 'facts', - name: 'Facts', - }, - }, - }, - accessory: { - codename: 'accessory', - name: 'Accessory', - elements: { - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - long_description: { - codename: 'long_description', - name: 'Long description', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - price: { - codename: 'price', - name: 'Price', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - short_description: { - codename: 'short_description', - name: 'Short description', - }, - manufacturer: { - codename: 'manufacturer', - name: 'Manufacturer', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - product_status: { - codename: 'product_status', - name: 'Product status', - }, - image: { - codename: 'image', - name: 'Image', - }, - product_name: { - codename: 'product_name', - name: 'Product name', - }, - }, - }, - article: { - codename: 'article', - name: 'Article', - elements: { - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - personas: { - codename: 'personas', - name: 'Personas', - }, - body_copy: { - codename: 'body_copy', - name: 'Body Copy', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - post_date: { - codename: 'post_date', - name: 'Post date', - }, - meta_keywords: { - codename: 'meta_keywords', - name: 'Meta keywords', - }, - teaser_image: { - codename: 'teaser_image', - name: 'Teaser image', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - title: { - codename: 'title', - name: 'Title', - }, - summary: { - codename: 'summary', - name: 'Summary', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - meta_description: { - codename: 'meta_description', - name: 'Meta description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - related_articles: { - codename: 'related_articles', - name: 'Related articles', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - }, - }, - brewer: { - codename: 'brewer', - name: 'Brewer', - elements: { - product_name: { - codename: 'product_name', - name: 'Product name', - }, - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - long_description: { - codename: 'long_description', - name: 'Long description', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - price: { - codename: 'price', - name: 'Price', - }, - manufacturer: { - codename: 'manufacturer', - name: 'Manufacturer', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - short_description: { - codename: 'short_description', - name: 'Short description', - }, - product_status: { - codename: 'product_status', - name: 'Product status', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - image: { - codename: 'image', - name: 'Image', - }, - }, - }, - cafe: { - codename: 'cafe', - name: 'Cafe', - elements: { - phone: { - codename: 'phone', - name: 'Phone', - }, - city: { - codename: 'city', - name: 'City', - }, - photo: { - codename: 'photo', - name: 'Photo', - }, - email: { - codename: 'email', - name: 'Email', - }, - country: { - codename: 'country', - name: 'Country', - }, - street: { - codename: 'street', - name: 'Street', - }, - state: { - codename: 'state', - name: 'State', - }, - zip_code: { - codename: 'zip_code', - name: 'ZIP Code', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - }, - }, - coffee: { - codename: 'coffee', - name: 'Coffee', - elements: { - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - product_status: { - codename: 'product_status', - name: 'Product status', - }, - altitude: { - codename: 'altitude', - name: 'Altitude', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - variety: { - codename: 'variety', - name: 'Variety', - }, - image: { - codename: 'image', - name: 'Image', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - price: { - codename: 'price', - name: 'Price', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - country: { - codename: 'country', - name: 'Country', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - short_description: { - codename: 'short_description', - name: 'Short description', - }, - processing: { - codename: 'processing', - name: 'Processing', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - long_description: { - codename: 'long_description', - name: 'Long description', - }, - farm: { - codename: 'farm', - name: 'Farm', - }, - product_name: { - codename: 'product_name', - name: 'Product name', - }, - }, - }, - fact_about_us: { - codename: 'fact_about_us', - name: 'Fact about us', - elements: { - description: { - codename: 'description', - name: 'Description', - }, - title: { - codename: 'title', - name: 'Title', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - image: { - codename: 'image', - name: 'Image', - }, - }, - }, - grinder: { - codename: 'grinder', - name: 'Grinder', - elements: { - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - price: { - codename: 'price', - name: 'Price', - }, - long_description: { - codename: 'long_description', - name: 'Long description', - }, - short_description: { - codename: 'short_description', - name: 'Short description', - }, - manufacturer: { - codename: 'manufacturer', - name: 'Manufacturer', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - product_status: { - codename: 'product_status', - name: 'Product status', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - image: { - codename: 'image', - name: 'Image', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - product_name: { - codename: 'product_name', - name: 'Product name', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - }, - }, - hero_unit: { - codename: 'hero_unit', - name: 'Hero Unit', - elements: { - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - title: { - codename: 'title', - name: 'Title', - }, - image: { - codename: 'image', - name: 'Image', - }, - marketing_message: { - codename: 'marketing_message', - name: 'Marketing message', - }, - }, - }, - home: { - codename: 'home', - name: 'Home', - elements: { - metadata__og_description: { - codename: 'metadata__og_description', - name: 'og:description', - }, - metadata__meta_title: { - codename: 'metadata__meta_title', - name: 'Meta title', - }, - metadata__og_title: { - codename: 'metadata__og_title', - name: 'og:title', - }, - articles: { - codename: 'articles', - name: 'Articles', - }, - hero_unit: { - codename: 'hero_unit', - name: 'Hero unit', - }, - metadata__meta_description: { - codename: 'metadata__meta_description', - name: 'Meta description', - }, - metadata__twitter_site: { - codename: 'metadata__twitter_site', - name: 'twitter:site', - }, - our_story: { - codename: 'our_story', - name: 'Our story', - }, - cafes: { - codename: 'cafes', - name: 'Cafes', - }, - metadata__twitter_image: { - codename: 'metadata__twitter_image', - name: 'twitter:image', - }, - metadata__twitter_creator: { - codename: 'metadata__twitter_creator', - name: 'twitter:creator', - }, - metadata__twitter_title: { - codename: 'metadata__twitter_title', - name: 'twitter:title', - }, - metadata__twitter_description: { - codename: 'metadata__twitter_description', - name: 'twitter:description', - }, - metadata__og_image: { - codename: 'metadata__og_image', - name: 'og:image', - }, - url_pattern: { - codename: 'url_pattern', - name: 'URL pattern', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - contact: { - codename: 'contact', - name: 'Contact', - }, - }, - }, - hosted_video: { - codename: 'hosted_video', - name: 'Hosted video', - elements: { - video_id: { - codename: 'video_id', - name: 'Video ID', - }, - video_host: { - codename: 'video_host', - name: 'Video host', - }, - }, - }, - office: { - codename: 'office', - name: 'Office', - elements: { - state: { - codename: 'state', - name: 'State', - }, - email: { - codename: 'email', - name: 'Email', - }, - phone: { - codename: 'phone', - name: 'Phone', - }, - country: { - codename: 'country', - name: 'Country', - }, - sitemap: { - codename: 'sitemap', - name: 'Sitemap', - }, - city: { - codename: 'city', - name: 'City', - }, - name: { - codename: 'name', - name: 'Name', - }, - zip_code: { - codename: 'zip_code', - name: 'Zip code', - }, - street: { - codename: 'street', - name: 'Street', - }, - }, - }, - tweet: { - codename: 'tweet', - name: 'Tweet', - elements: { - tweet_link: { - codename: 'tweet_link', - name: 'Tweet link', - }, - theme: { - codename: 'theme', - name: 'Theme', - }, - display_options: { - codename: 'display_options', - name: 'Display options', - }, - }, - }, - }, - taxonomies: { - manufacturer: { - codename: 'manufacturer', - name: 'Manufacturer', - terms: { - aerobie: { - codename: 'aerobie', - name: 'Aerobie', - terms: {}, - }, - chemex: { - codename: 'chemex', - name: 'Chemex', - terms: {}, - }, - espro: { - codename: 'espro', - name: 'Espro', - terms: {}, - }, - hario: { - codename: 'hario', - name: 'Hario', - terms: {}, - }, - }, - }, - personas: { - codename: 'personas', - name: 'Personas', - terms: { - coffee_expert: { - codename: 'coffee_expert', - name: 'Coffee expert', - terms: { - barista: { - codename: 'barista', - name: 'Barista', - terms: {}, - }, - cafe_owner: { - codename: 'cafe_owner', - name: 'Cafe owner', - terms: {}, - }, - }, - }, - coffee_enthusiast: { - codename: 'coffee_enthusiast', - name: 'Coffee enthusiast', - terms: { - coffee_lover: { - codename: 'coffee_lover', - name: 'Coffee lover', - terms: {}, - }, - coffee_blogger: { - codename: 'coffee_blogger', - name: 'Coffee blogger', - terms: {}, - }, - }, - }, - }, - }, - processing: { - codename: 'processing', - name: 'Processing', - terms: { - wet__washed_: { - codename: 'wet__washed_', - name: 'Wet (Washed)', - terms: {}, - }, - dry__natural_: { - codename: 'dry__natural_', - name: 'Dry (Natural)', - terms: {}, - }, - semi_dry: { - codename: 'semi_dry', - name: 'Semi-dry', - terms: {}, - }, - }, - }, - product_status: { - codename: 'product_status', - name: 'Product status', - terms: { - on_sale: { - codename: 'on_sale', - name: 'On sale', - terms: {}, - }, - bestseller: { - codename: 'bestseller', - name: 'Bestseller', - terms: {}, - }, - }, - }, - sitemap_538125f: { - codename: 'sitemap_538125f', - name: 'Sitemap', - terms: { - home: { - codename: 'home', - name: 'Home', - terms: {}, - }, - products: { - codename: 'products', - name: 'Products', - terms: { - coffee: { - codename: 'coffee', - name: 'Coffee', - terms: {}, - }, - brewers: { - codename: 'brewers', - name: 'Brewers', - terms: {}, - }, - accessories: { - codename: 'accessories', - name: 'Accessories', - terms: {}, - }, - grinders: { - codename: 'grinders', - name: 'Grinders', - terms: {}, - }, - }, - }, - cafes: { - codename: 'cafes', - name: 'Cafes', - terms: { - north_america: { - codename: 'north_america', - name: 'North America', - terms: {}, - }, - europe: { - codename: 'europe', - name: 'Europe', - terms: {}, - }, - australia: { - codename: 'australia', - name: 'Australia', - terms: {}, - }, - }, - }, - articles: { - codename: 'articles', - name: 'Articles', - terms: {}, - }, - offices: { - codename: 'offices', - name: 'Offices', - terms: {}, - }, - about_us: { - codename: 'about_us', - name: 'About us', - terms: {}, - }, - }, - }, - }, -}; diff --git a/src/Models/about_us.ts b/src/Models/about_us.ts deleted file mode 100644 index 7cf607c5..00000000 --- a/src/Models/about_us.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; -import { FactAboutUs } from './fact_about_us'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type AboutUs = IContentItem<{ - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - metadataOgTitle: Elements.TextElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - urlPattern: Elements.UrlSlugElement; - metadataTwitterImage: Elements.AssetsElement; - sitemap: Elements.TaxonomyElement; - metadataTwitterCreator: Elements.TextElement; - metadataTwitterTitle: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - facts: Elements.LinkedItemsElement; -}>; diff --git a/src/Models/accessory.ts b/src/Models/accessory.ts deleted file mode 100644 index db0c137a..00000000 --- a/src/Models/accessory.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Accessory = IContentItem<{ - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - metadataOgTitle: Elements.TextElement; - longDescription: Elements.RichTextElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - price: Elements.NumberElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - urlPattern: Elements.UrlSlugElement; - shortDescription: Elements.RichTextElement; - manufacturer: Elements.TextElement; - metadataTwitterTitle: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - sitemap: Elements.TaxonomyElement; - productStatus: Elements.TaxonomyElement; - image: Elements.AssetsElement; - productName: Elements.TextElement; -}>; diff --git a/src/Models/article.ts b/src/Models/article.ts deleted file mode 100644 index d36ce1ba..00000000 --- a/src/Models/article.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ - -export type Article = IContentItem<{ - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - personas: Elements.TaxonomyElement; - bodyCopy: Elements.RichTextElement; - metadataOgTitle: Elements.TextElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - postDate: Elements.DateTimeElement; - metaKeywords: Elements.TextElement; - teaserImage: Elements.AssetsElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - title: Elements.TextElement; - summary: Elements.TextElement; - sitemap: Elements.TaxonomyElement; - metadataTwitterTitle: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - metaDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - relatedArticles: Elements.LinkedItemsElement
; - urlPattern: Elements.UrlSlugElement; -}>; diff --git a/src/Models/brewer.ts b/src/Models/brewer.ts deleted file mode 100644 index b2a792ab..00000000 --- a/src/Models/brewer.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Brewer = IContentItem<{ - productName: Elements.TextElement; - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - longDescription: Elements.RichTextElement; - metadataOgTitle: Elements.TextElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - price: Elements.NumberElement; - manufacturer: Elements.TaxonomyElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - urlPattern: Elements.UrlSlugElement; - sitemap: Elements.TaxonomyElement; - shortDescription: Elements.RichTextElement; - productStatus: Elements.TaxonomyElement; - metadataTwitterTitle: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - image: Elements.AssetsElement; -}>; diff --git a/src/Models/cafe.ts b/src/Models/cafe.ts deleted file mode 100644 index 2f2399ba..00000000 --- a/src/Models/cafe.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Cafe = IContentItem<{ - phone: Elements.TextElement; - city: Elements.TextElement; - photo: Elements.AssetsElement; - email: Elements.TextElement; - country: Elements.TextElement; - street: Elements.TextElement; - state: Elements.TextElement; - zipCode: Elements.TextElement; - sitemap: Elements.TaxonomyElement; -}>; diff --git a/src/Models/coffee.ts b/src/Models/coffee.ts deleted file mode 100644 index e59d6ea9..00000000 --- a/src/Models/coffee.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Coffee = IContentItem<{ - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - metadataOgTitle: Elements.TextElement; - productStatus: Elements.TaxonomyElement; - altitude: Elements.TextElement; - metadataMetaDescription: Elements.TextElement; - variety: Elements.TextElement; - image: Elements.AssetsElement; - metadataTwitterSite: Elements.TextElement; - urlPattern: Elements.UrlSlugElement; - price: Elements.NumberElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - country: Elements.TextElement; - sitemap: Elements.TaxonomyElement; - metadataTwitterTitle: Elements.TextElement; - shortDescription: Elements.RichTextElement; - processing: Elements.TaxonomyElement; - metadataTwitterDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - longDescription: Elements.RichTextElement; - farm: Elements.TextElement; - productName: Elements.TextElement; -}>; diff --git a/src/Models/content-types/about_us.ts b/src/Models/content-types/about_us.ts new file mode 100644 index 00000000..8303a98e --- /dev/null +++ b/src/Models/content-types/about_us.ts @@ -0,0 +1,156 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; +import { FactAboutUs } from './fact_about_us'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * About us + * Id: b2c14f2c-6467-460b-a70b-bca17972a33a + * Codename: about_us + */ +export type AboutUs = IContentItem<{ + /** + * Facts (modular_content) + * Required: false + * Id: cff560dc-ed24-7036-cbb6-b7a1b61b196a + * Codename: facts + * + * Assign all facts about our company which will be displayed on the about us page. + */ + facts: Elements.LinkedItemsElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: 50cb9acf-45f5-a186-5c00-9a9e4a37d84a + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 65911e49-7bb0-41ca-9d17-ab218135126d + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/accessory.ts b/src/Models/content-types/accessory.ts new file mode 100644 index 00000000..fe57272a --- /dev/null +++ b/src/Models/content-types/accessory.ts @@ -0,0 +1,216 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { ProductStatus } from '../taxonomies/product_status'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Accessory + * Id: d9748663-f567-4c51-a922-c24a1d6b935a + * Codename: accessory + */ +export type Accessory = IContentItem<{ + /** + * Product name (text) + * Required: false + * Id: f9e2672c-5035-412e-3985-d6112b3781bd + * Codename: product_name + * + * Include a product display name. + */ + productName: Elements.TextElement; + + /** + * Price (number) + * Required: false + * Id: 51d63ac3-d40d-15ea-c219-be207714077c + * Codename: price + * + * Include a product price. + */ + price: Elements.NumberElement; + + /** + * Image (asset) + * Required: false + * Id: f0db12e6-86e4-8597-903b-c5984076d6b3 + * Codename: image + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: Elements.AssetsElement; + + /** + * Manufacturer (text) + * Required: false + * Id: ab75ff46-b629-5ce5-aac9-79ed8a7b869c + * Codename: manufacturer + * + * Include a manufacturer's name. + */ + manufacturer: Elements.TextElement; + + /** + * Product status (taxonomy) + * Required: false + * Id: ef13b1f4-b558-f707-35a4-86146dbe4518 + * Codename: product_status + * + * Add a product status if the product is included in a special offering. + */ + productStatus: Elements.TaxonomyElement; + + /** + * Short description (rich_text) + * Required: false + * Id: 9740e2d0-87e8-52f5-ff4c-566fa00b1253 + * Codename: short_description + * + * Include a short description that fits within 160 characters. + */ + shortDescription: Elements.RichTextElement; + + /** + * Long description (rich_text) + * Required: false + * Id: 1f961774-a589-4e21-9f8e-a8c4908ea476 + * Codename: long_description + * + * Include a full product description. + */ + longDescription: Elements.RichTextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: 69e4af48-f1ac-1146-e6c9-d20d55ca5792 + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: d8ed1597-930c-4cf8-a34e-c5d5e82718ed + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/article.ts b/src/Models/content-types/article.ts new file mode 100644 index 00000000..bf9b00cc --- /dev/null +++ b/src/Models/content-types/article.ts @@ -0,0 +1,236 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Personas } from '../taxonomies/personas'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Article + * Id: b7aa4a53-d9b1-48cf-b7a6-ed0b182c4b89 + * Codename: article + */ +export type Article = IContentItem<{ + /** + * Title (text) + * Required: false + * Id: 85d5efc6-f47e-2fde-a6f5-0950fe89ecd1 + * Codename: title + * + * The title should fit within 60 characters.Our voice and tone recommendations: — avoid coffee jargon. + */ + title: Elements.TextElement; + + /** + * Teaser image (asset) + * Required: false + * Id: 62eb9881-e222-6b81-91d2-fdf052726414 + * Codename: teaser_image + * + * Upload an image at a resolution of at least 600 × 1200 px. + */ + teaserImage: Elements.AssetsElement; + + /** + * Post date (date_time) + * Required: false + * Id: 4ae5f7a9-fe1f-1e8c-bfec-d321455139c4 + * Codename: post_date + * + * Provide a date that will appear on the live site as the date this article was posted live. This date will also influence the order of the articles. + */ + postDate: Elements.DateTimeElement; + + /** + * Summary (text) + * Required: false + * Id: 90550cbe-7bff-40a9-2947-9c81489fe562 + * Codename: summary + * + * Provide a short summary of the text. It should be catchy and make the visitor want to read the whole article.The summary should fit within 160 characters. + */ + summary: Elements.TextElement; + + /** + * Body Copy (rich_text) + * Required: false + * Id: 108ed7c0-fc8c-c0ec-d0b5-5a8071408b54 + * Codename: body_copy + * + * Keep the article structured with concise paragraphs complemented with headlines that will help the reader navigate through the article's content.Preferred glossary terms — coffee, brewing, grinder, drip, roast, filter. + */ + bodyCopy: Elements.RichTextElement; + + /** + * Related articles (modular_content) + * Required: false + * Id: ee7c3687-b469-6c56-3ac6-c8dfdc8b58b5 + * Codename: related_articles + * + * Provide articles with related topics. + */ + relatedArticles: Elements.LinkedItemsElement; + + /** + * Meta keywords (text) + * Required: false + * Id: 5efb2425-5987-a4a6-a2d3-b14712b56e73 + * Codename: meta_keywords + * + * Enter tags separated with a comma. Example: coffee, "coffee roast”, grinder + */ + metaKeywords: Elements.TextElement; + + /** + * Personas (taxonomy) + * Required: false + * Id: 0a16b642-ac3e-584d-a45a-ba354a30b2bd + * Codename: personas + * + * Provide all personas for which this article is relevant. + */ + personas: Elements.TaxonomyElement; + + /** + * Meta description (text) + * Required: false + * Id: b9dc537c-2518-e4f5-8325-ce4fce26171e + * Codename: meta_description + * + * Sum up the blog for SEO purposes. Limit for the meta description is 160 characters. + */ + metaDescription: Elements.TextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: f2ff5e3f-a9ca-4604-58b0-34a2ad6a7cf1 + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: a4d7a146-7e39-4001-b462-c5a0c734f3f5 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/brewer.ts b/src/Models/content-types/brewer.ts new file mode 100644 index 00000000..45aa701c --- /dev/null +++ b/src/Models/content-types/brewer.ts @@ -0,0 +1,215 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { ProductStatus } from '../taxonomies/product_status'; +import { Manufacturer } from '../taxonomies/manufacturer'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Brewer + * Id: 7bc932b3-ce2a-4aa7-954e-04cbcbd214fc + * Codename: brewer + */ +export type Brewer = IContentItem<{ + /** + * Product name (text) + * Required: false + * Id: 01d6c6c7-92ff-a675-e413-861e5a9a4034 + * Codename: product_name + * + * Include a product display name. + */ + productName: Elements.TextElement; + + /** + * Price (number) + * Required: false + * Id: 48ebe0fc-afe7-2b93-d351-0e352332bc52 + * Codename: price + * + * Include a product price. + */ + price: Elements.NumberElement; + + /** + * Image (asset) + * Required: false + * Id: d0c1e9e7-7d5d-e61f-8564-56a8cb758cb8 + * Codename: image + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: Elements.AssetsElement; + + /** + * Product status (taxonomy) + * Required: false + * Id: 960d0011-ff3b-41ac-1447-8eac6ee66eaa + * Codename: product_status + * + * Add a product status if the product is included in a special offering. + */ + productStatus: Elements.TaxonomyElement; + + /** + * Short description (rich_text) + * Required: false + * Id: 8c235a7f-034e-f803-e612-9c47c8a49506 + * Codename: short_description + * + * Include a short description that fits within 160 characters. + */ + shortDescription: Elements.RichTextElement; + + /** + * Long description (rich_text) + * Required: false + * Id: 14510bef-fd86-7d5d-992a-c1e091cbcb97 + * Codename: long_description + * + * Include a full product description. + */ + longDescription: Elements.RichTextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: 737c85be-f532-c8fe-a308-2a0f2c512f3e + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Manufacturer (taxonomy) + * Required: false + * Id: 53b6bddb-fe8a-a8b2-9765-343479bf9fc2 + * Codename: manufacturer + */ + manufacturer: Elements.TaxonomyElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 7632f3bb-2e53-438d-933c-4e8b6c035cb1 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/cafe.ts b/src/Models/content-types/cafe.ts new file mode 100644 index 00000000..d8eb07ee --- /dev/null +++ b/src/Models/content-types/cafe.ts @@ -0,0 +1,83 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Cafe + * Id: fe41ae5a-5fe2-420a-8560-f7d6d3533dc2 + * Codename: cafe + */ +export type Cafe = IContentItem<{ + /** + * Street (text) + * Required: false + * Id: 866afdba-d334-f01a-1d52-a9ca3f57cb4b + * Codename: street + */ + street: Elements.TextElement; + + /** + * City (text) + * Required: false + * Id: 339e6d4f-67c1-5f5e-6921-3b374eb96f5b + * Codename: city + */ + city: Elements.TextElement; + + /** + * Country (text) + * Required: false + * Id: 7531a08f-e148-8cc0-9d2d-155215502e08 + * Codename: country + */ + country: Elements.TextElement; + + /** + * State (text) + * Required: false + * Id: a015b689-cad3-1ac9-04b4-73697525752d + * Codename: state + */ + state: Elements.TextElement; + + /** + * ZIP Code (text) + * Required: false + * Id: bb158ac2-41e1-5a7d-0826-bb8bf6744f0e + * Codename: zip_code + */ + zipCode: Elements.TextElement; + + /** + * Phone (text) + * Required: false + * Id: 1c71bc62-4b62-f307-37ef-0823776f8f73 + * Codename: phone + */ + phone: Elements.TextElement; + + /** + * Email (text) + * Required: false + * Id: 6f726c77-36bd-8062-51df-056136e10d35 + * Codename: email + */ + email: Elements.TextElement; + + /** + * Photo (asset) + * Required: false + * Id: 5769c0f4-66a8-4c73-3c19-c023bdfa123a + * Codename: photo + */ + photo: Elements.AssetsElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: e82d0f49-5b15-45e1-9b1f-32ccc1be4941 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; +}>; diff --git a/src/Models/content-types/coffee.ts b/src/Models/content-types/coffee.ts new file mode 100644 index 00000000..c75eeee3 --- /dev/null +++ b/src/Models/content-types/coffee.ts @@ -0,0 +1,255 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { ProductStatus } from '../taxonomies/product_status'; +import { Processing } from '../taxonomies/processing'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Coffee + * Id: 929985ac-4aa5-436b-85a2-94c2d4fbbebd + * Codename: coffee + */ +export type Coffee = IContentItem<{ + /** + * Product name (text) + * Required: false + * Id: edaec5c4-e653-9109-eb0d-fc40ccf3c810 + * Codename: product_name + * + * Include a product display name. + */ + productName: Elements.TextElement; + + /** + * Price (number) + * Required: false + * Id: 624592dc-49b2-330a-7185-e1f2396ce90c + * Codename: price + * + * Include a product price. + */ + price: Elements.NumberElement; + + /** + * Image (asset) + * Required: false + * Id: 30ac3ccc-1e7f-1490-e1f6-915c64176a55 + * Codename: image + * + * Upload a product image; the recommended size is 300 × 300 px. + */ + image: Elements.AssetsElement; + + /** + * Short description (rich_text) + * Required: false + * Id: b5a3263a-a1d7-92b7-865a-329f833285fa + * Codename: short_description + * + * Include a short description that fits within 160 characters. + */ + shortDescription: Elements.RichTextElement; + + /** + * Long description (rich_text) + * Required: false + * Id: d468a0aa-e0fa-0cae-41db-6e006bff2527 + * Codename: long_description + * + * Include a full product description. + */ + longDescription: Elements.RichTextElement; + + /** + * Product status (taxonomy) + * Required: false + * Id: 1ee64175-fde7-fc1e-5259-511a31c326c3 + * Codename: product_status + * + * Add a product status if the product is included in a special offering. + */ + productStatus: Elements.TaxonomyElement; + + /** + * Farm (text) + * Required: false + * Id: e5cf103f-9b84-1ab0-29f1-fb5a1657c6f7 + * Codename: farm + * + * Include the name of the coffee farm. + */ + farm: Elements.TextElement; + + /** + * Country (text) + * Required: false + * Id: 6eec1918-378d-3b15-8b1a-19c5f0748321 + * Codename: country + * + * Include the coffee's country of origin. + */ + country: Elements.TextElement; + + /** + * Variety (text) + * Required: false + * Id: 301c6712-962f-b05a-6f6e-2f0e1e959039 + * Codename: variety + * + * Include a coffee variety name. + */ + variety: Elements.TextElement; + + /** + * Altitude (text) + * Required: false + * Id: 23a772c0-0b2b-588d-9849-e29068701f03 + * Codename: altitude + * + * Include the altitude at which the coffee is grown. Elevation affects the size, shape, and taste of coffee beans. + */ + altitude: Elements.TextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: 3af8ce38-c03d-063c-ea80-72684dfddf31 + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Processing (taxonomy) + * Required: false + * Id: b63e3516-d5fa-fdac-a03a-2b027bf02a28 + * Codename: processing + */ + processing: Elements.TaxonomyElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 99d7a378-e18f-41dd-b5bb-2a569c3d1de7 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/fact_about_us.ts b/src/Models/content-types/fact_about_us.ts new file mode 100644 index 00000000..ab349ca2 --- /dev/null +++ b/src/Models/content-types/fact_about_us.ts @@ -0,0 +1,49 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Fact about us + * Id: b99ec220-0f2b-4658-a080-ff0afe92f6d1 + * Codename: fact_about_us + */ +export type FactAboutUs = IContentItem<{ + /** + * Title (text) + * Required: false + * Id: 2375ca8a-43d2-7282-162c-922a6fdeba3e + * Codename: title + * + * Provide a title that fits within 60 characters. + */ + title: Elements.TextElement; + + /** + * Description (rich_text) + * Required: false + * Id: 1b658e81-88c9-73d1-374d-7a60e3756ef7 + * Codename: description + * + * Include a main goal of our business. The limit is 80 characters. + */ + description: Elements.RichTextElement; + + /** + * Image (asset) + * Required: false + * Id: 68d194b6-efad-6b25-89a4-2dfc75fed5a5 + * Codename: image + * + * Attach a teaser image; max. dimensions are 1280 × 600 px; allowed formats are *.jpg, *.png, *.gif. + */ + image: Elements.AssetsElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 23a715f9-755c-4b9d-b6b3-e02fc1b09b83 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; +}>; diff --git a/src/Models/content-types/grinder.ts b/src/Models/content-types/grinder.ts new file mode 100644 index 00000000..a5375dfd --- /dev/null +++ b/src/Models/content-types/grinder.ts @@ -0,0 +1,216 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { ProductStatus } from '../taxonomies/product_status'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Grinder + * Id: da4f1cb1-8a55-43e5-9fcc-67ad331c8888 + * Codename: grinder + */ +export type Grinder = IContentItem<{ + /** + * Product name (text) + * Required: false + * Id: b7b9604e-c74e-79ea-2a0f-d74d6347e35a + * Codename: product_name + * + * Include a product display name. + */ + productName: Elements.TextElement; + + /** + * Price (number) + * Required: false + * Id: 1e14595d-7fe8-7765-6df6-fad6a6e4851f + * Codename: price + * + * Include a product price. + */ + price: Elements.NumberElement; + + /** + * Image (asset) + * Required: false + * Id: 7fe226b9-d21f-80ff-e680-6e6f44ce044b + * Codename: image + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: Elements.AssetsElement; + + /** + * Manufacturer (text) + * Required: false + * Id: 2c389736-7dfa-b03e-8996-7eba451cfdb5 + * Codename: manufacturer + * + * Include a manufacturer's name. + */ + manufacturer: Elements.TextElement; + + /** + * Product status (taxonomy) + * Required: false + * Id: 54120e88-82cc-2202-e72d-9cae0ced3f51 + * Codename: product_status + * + * Add a product status if the product is included in a special offering. + */ + productStatus: Elements.TaxonomyElement; + + /** + * Short description (rich_text) + * Required: false + * Id: 23ee310f-9732-9193-ad5e-80f75bfc276d + * Codename: short_description + * + * Include a short description that fits within 160 characters. + */ + shortDescription: Elements.RichTextElement; + + /** + * Long description (rich_text) + * Required: false + * Id: 21e77286-e87b-d6e3-902d-13b5814b5e75 + * Codename: long_description + * + * Include a full product description. + */ + longDescription: Elements.RichTextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: bf6ad588-11e5-ba0d-2c18-ccd50064a32a + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 02f0e374-6760-4b4d-99a8-60485572b764 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/hero_unit.ts b/src/Models/content-types/hero_unit.ts new file mode 100644 index 00000000..7e5ddb09 --- /dev/null +++ b/src/Models/content-types/hero_unit.ts @@ -0,0 +1,49 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Hero Unit + * Id: f4deeb7e-fe9b-49a2-a5f6-a51a9be6ac73 + * Codename: hero_unit + */ +export type HeroUnit = IContentItem<{ + /** + * Title (text) + * Required: false + * Id: 16ea3e64-4103-da81-eabd-af7efc2ab8a6 + * Codename: title + * + * Provide a title that fits within 60 characters. + */ + title: Elements.TextElement; + + /** + * Image (asset) + * Required: false + * Id: 4aeed98e-58d1-ab13-232c-542bf268fe48 + * Codename: image + * + * Attach a teaser image; max. dimensions are 1280 × 600 px; allowed formats are *.jpg, *.png, *.gif. + */ + image: Elements.AssetsElement; + + /** + * Marketing message (rich_text) + * Required: false + * Id: ecf4e55f-1ae0-f539-3516-5714a0f032e9 + * Codename: marketing_message + * + * Include a main goal of our business. The limit is 80 characters. + */ + marketingMessage: Elements.RichTextElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 0f620d29-a4c7-4944-b7d2-be5de2733b6e + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; +}>; diff --git a/src/Models/content-types/home.ts b/src/Models/content-types/home.ts new file mode 100644 index 00000000..34b10c8f --- /dev/null +++ b/src/Models/content-types/home.ts @@ -0,0 +1,199 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; +import { Article } from './article'; +import { Cafe } from './cafe'; +import { FactAboutUs } from './fact_about_us'; +import { HeroUnit } from './hero_unit'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Home + * Id: a29399c3-5281-47ab-9916-acd4a6f887b7 + * Codename: home + */ +export type Home = IContentItem<{ + /** + * Hero unit (modular_content) + * Required: false + * Id: 2b15a8f3-2e5f-7d01-4d8e-5b22e222aa76 + * Codename: hero_unit + * + * Assign 1 Hero unit that has been prepared for a home page. + */ + heroUnit: Elements.LinkedItemsElement; + + /** + * Articles (modular_content) + * Required: false + * Id: 222f3a69-a54f-3e92-83ac-05f8a08e667f + * Codename: articles + * + * Assign all articles which should be displayed on the home page. + */ + articles: Elements.LinkedItemsElement
; + + /** + * Our story (modular_content) + * Required: false + * Id: 617bccc0-4844-4beb-4ede-6247e954633a + * Codename: our_story + * + * Assign 1 Fact about us which will be displayed on the home page. + */ + ourStory: Elements.LinkedItemsElement; + + /** + * Cafes (modular_content) + * Required: false + * Id: 6356c948-0fd6-00d0-8fc1-e2484180ae7c + * Codename: cafes + * + * Assign 4 Cafes which will be displayed on the home page. + */ + cafes: Elements.LinkedItemsElement; + + /** + * Contact (rich_text) + * Required: false + * Id: ee854076-236b-5312-0ed5-8c3cd55ca9e0 + * Codename: contact + * + * Add Contact us information to be displayed on the home page. + */ + contact: Elements.RichTextElement; + + /** + * URL pattern (url_slug) + * Required: false + * Id: dd70db4b-ee97-5ab4-b752-4f9d70389426 + * Codename: url_pattern + * + * Provide a SEO-friendly URL. + */ + urlPattern: Elements.UrlSlugElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: ea3bf3c2-7eb7-4c91-aff3-09f89c743710 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; + + /** + * Meta title (text) + * Required: false + * Id: 09398b24-61ed-512e-5b5c-affd54a098e5 + * Codename: metadata__meta_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 30–60 characters + */ + metadataMetaTitle: Elements.TextElement; + + /** + * Meta description (text) + * Required: false + * Id: 2e555cc1-1eae-520c-189e-28548904f529 + * Codename: metadata__meta_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Length: 70–150 characters + */ + metadataMetaDescription: Elements.TextElement; + + /** + * og:title (text) + * Required: false + * Id: 1db86c7a-e836-3c4e-01e6-4f704ad38ba5 + * Codename: metadata__og_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataOgTitle: Elements.TextElement; + + /** + * og:description (text) + * Required: false + * Id: 05987dc9-ebe3-7b61-b949-522eb42dbc0d + * Codename: metadata__og_description + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 150 characters + */ + metadataOgDescription: Elements.TextElement; + + /** + * og:image (asset) + * Required: false + * Id: ce6cda71-9d38-1d57-3ac3-ec9b2e286edd + * Codename: metadata__og_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadataOgImage: Elements.AssetsElement; + + /** + * twitter:site (text) + * Required: false + * Id: 34213fdf-0015-8f4f-e5e6-83c6842cff4a + * Codename: metadata__twitter_site + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterSite: Elements.TextElement; + + /** + * twitter:creator (text) + * Required: false + * Id: 68f65095-c9b4-05d6-a473-2883c2f0c7af + * Codename: metadata__twitter_creator + * From snippet: Metadata + * Snippet codename: metadata + */ + metadataTwitterCreator: Elements.TextElement; + + /** + * twitter:title (text) + * Required: false + * Id: b208d3dc-bd8d-b1af-5ef0-747650730ba7 + * Codename: metadata__twitter_title + * From snippet: Metadata + * Snippet codename: metadata + * + * Max. 60 characters + */ + metadataTwitterTitle: Elements.TextElement; + + /** + * twitter:description (text) + * Required: false + * Id: b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7 + * Codename: metadata__twitter_description + * From snippet: Metadata + * Snippet codename: metadata + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadataTwitterDescription: Elements.TextElement; + + /** + * twitter:image (asset) + * Required: false + * Id: 63793ba4-6004-a93c-68ca-52a1f0482bca + * Codename: metadata__twitter_image + * From snippet: Metadata + * Snippet codename: metadata + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadataTwitterImage: Elements.AssetsElement; +}>; diff --git a/src/Models/content-types/hosted_video.ts b/src/Models/content-types/hosted_video.ts new file mode 100644 index 00000000..a2ad68de --- /dev/null +++ b/src/Models/content-types/hosted_video.ts @@ -0,0 +1,25 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Hosted video + * Id: 269202ad-1d9d-47fd-b3e8-bdb05b3e3cf0 + * Codename: hosted_video + */ +export type HostedVideo = IContentItem<{ + /** + * Video ID (text) + * Required: true + * Id: 116a2441-6441-7124-c85b-46a4fef5dcb9 + * Codename: video_id + */ + videoId: Elements.TextElement; + + /** + * Video host (multiple_choice) + * Required: true + * Id: 87924912-4861-aa84-176a-1eae7b22529b + * Codename: video_host + */ + videoHost: Elements.MultipleChoiceElement; +}>; diff --git a/src/Models/content-types/index.ts b/src/Models/content-types/index.ts new file mode 100644 index 00000000..5c47cb93 --- /dev/null +++ b/src/Models/content-types/index.ts @@ -0,0 +1,13 @@ +export * from './hero_unit'; +export * from './hosted_video'; +export * from './coffee'; +export * from './article'; +export * from './grinder'; +export * from './office'; +export * from './tweet'; +export * from './cafe'; +export * from './home'; +export * from './accessory'; +export * from './brewer'; +export * from './about_us'; +export * from './fact_about_us'; diff --git a/src/Models/content-types/office.ts b/src/Models/content-types/office.ts new file mode 100644 index 00000000..321e5bf4 --- /dev/null +++ b/src/Models/content-types/office.ts @@ -0,0 +1,83 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +import { Sitemap } from '../taxonomies/sitemap_538125f'; + +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Office + * Id: e097306b-3893-4a42-9973-2525fad14d66 + * Codename: office + */ +export type Office = IContentItem<{ + /** + * Name (text) + * Required: false + * Id: bb81a11d-886c-2a32-e480-29f01cea667f + * Codename: name + */ + name: Elements.TextElement; + + /** + * Street (text) + * Required: false + * Id: f7eb7ab2-4e41-aca0-7e93-dbbbdca330eb + * Codename: street + */ + street: Elements.TextElement; + + /** + * City (text) + * Required: false + * Id: 95477abc-d6b4-a6b3-5b72-c92763da55bf + * Codename: city + */ + city: Elements.TextElement; + + /** + * Country (text) + * Required: false + * Id: 4fbc7779-652d-7716-2673-7419aaaceed1 + * Codename: country + */ + country: Elements.TextElement; + + /** + * State (text) + * Required: false + * Id: 08df2f10-52b8-d451-fab1-b6da8ddb3fd2 + * Codename: state + */ + state: Elements.TextElement; + + /** + * Zip code (text) + * Required: false + * Id: e7141da8-8792-a66d-d1c8-1fe704758393 + * Codename: zip_code + */ + zipCode: Elements.TextElement; + + /** + * Phone (text) + * Required: false + * Id: 2ac708e2-cd0e-67b0-67f8-71725625dc6d + * Codename: phone + */ + phone: Elements.TextElement; + + /** + * Email (text) + * Required: false + * Id: 251dc38f-43a3-d924-a328-8708ecb00ef1 + * Codename: email + */ + email: Elements.TextElement; + + /** + * Sitemap (taxonomy) + * Required: false + * Id: 93e978da-a9dd-43eb-a16a-ace55c1a5245 + * Codename: sitemap + */ + sitemap: Elements.TaxonomyElement; +}>; diff --git a/src/Models/content-types/tweet.ts b/src/Models/content-types/tweet.ts new file mode 100644 index 00000000..bc395183 --- /dev/null +++ b/src/Models/content-types/tweet.ts @@ -0,0 +1,33 @@ +import { IContentItem, Elements } from '@kontent-ai/delivery-sdk'; +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Tweet + * Id: f808c142-4b62-43b0-8f4d-1cbf412580ab + * Codename: tweet + */ +export type Tweet = IContentItem<{ + /** + * Tweet link (text) + * Required: true + * Id: 20bf9ba1-28fe-203c-5920-6f9610498fb9 + * Codename: tweet_link + */ + tweetLink: Elements.TextElement; + + /** + * Theme (multiple_choice) + * Required: false + * Id: 779b27fd-5a4d-5e5f-66dc-b30931fcba92 + * Codename: theme + */ + theme: Elements.MultipleChoiceElement; + + /** + * Display options (multiple_choice) + * Required: false + * Id: 8c6db6cf-1003-951e-5407-b2a19c15b4cd + * Codename: display_options + */ + displayOptions: Elements.MultipleChoiceElement; +}>; diff --git a/src/Models/fact_about_us.ts b/src/Models/fact_about_us.ts deleted file mode 100644 index 43fdd588..00000000 --- a/src/Models/fact_about_us.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type FactAboutUs = IContentItem<{ - description: Elements.RichTextElement; - title: Elements.TextElement; - sitemap: Elements.TaxonomyElement; - image: Elements.AssetsElement; -}>; diff --git a/src/Models/grinder.ts b/src/Models/grinder.ts deleted file mode 100644 index 3901b823..00000000 --- a/src/Models/grinder.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Grinder = IContentItem<{ - sitemap: Elements.TaxonomyElement; - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - metadataOgTitle: Elements.TextElement; - price: Elements.NumberElement; - longDescription: Elements.RichTextElement; - shortDescription: Elements.RichTextElement; - manufacturer: Elements.TextElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - productStatus: Elements.TaxonomyElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - image: Elements.AssetsElement; - metadataTwitterTitle: Elements.TextElement; - productName: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - urlPattern: Elements.UrlSlugElement; - metadataOgImage: Elements.AssetsElement; -}>; diff --git a/src/Models/hero_unit.ts b/src/Models/hero_unit.ts deleted file mode 100644 index 27e85bdb..00000000 --- a/src/Models/hero_unit.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type HeroUnit = IContentItem<{ - sitemap: Elements.TaxonomyElement; - title: Elements.TextElement; - image: Elements.AssetsElement; - marketingMessage: Elements.RichTextElement; -}>; diff --git a/src/Models/home.ts b/src/Models/home.ts deleted file mode 100644 index 0da08ba4..00000000 --- a/src/Models/home.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; -import { Article } from './article'; -import { HeroUnit } from './hero_unit'; -import { Cafe } from './cafe'; -import { FactAboutUs } from './fact_about_us'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Home = IContentItem<{ - metadataOgDescription: Elements.TextElement; - metadataMetaTitle: Elements.TextElement; - metadataOgTitle: Elements.TextElement; - articles: Elements.LinkedItemsElement
; - heroUnit: Elements.LinkedItemsElement; - metadataMetaDescription: Elements.TextElement; - metadataTwitterSite: Elements.TextElement; - ourStory: Elements.LinkedItemsElement; - cafes: Elements.LinkedItemsElement; - metadataTwitterImage: Elements.AssetsElement; - metadataTwitterCreator: Elements.TextElement; - metadataTwitterTitle: Elements.TextElement; - metadataTwitterDescription: Elements.TextElement; - metadataOgImage: Elements.AssetsElement; - urlPattern: Elements.UrlSlugElement; - sitemap: Elements.TaxonomyElement; - contact: Elements.RichTextElement; -}>; diff --git a/src/Models/hosted_video.ts b/src/Models/hosted_video.ts deleted file mode 100644 index c94e1430..00000000 --- a/src/Models/hosted_video.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type HostedVideo = IContentItem<{ - videoId: Elements.TextElement; - videoHost: Elements.MultipleChoiceElement; -}>; diff --git a/src/Models/index.ts b/src/Models/index.ts new file mode 100644 index 00000000..c0895c99 --- /dev/null +++ b/src/Models/index.ts @@ -0,0 +1,3 @@ +export * from './project'; +export * from './content-types'; +export * from './taxonomies'; diff --git a/src/Models/office.ts b/src/Models/office.ts deleted file mode 100644 index ff6965ce..00000000 --- a/src/Models/office.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Office = IContentItem<{ - state: Elements.TextElement; - email: Elements.TextElement; - phone: Elements.TextElement; - country: Elements.TextElement; - sitemap: Elements.TaxonomyElement; - city: Elements.TextElement; - name: Elements.TextElement; - zipCode: Elements.TextElement; - street: Elements.TextElement; -}>; diff --git a/src/Models/project/assetFolders.ts b/src/Models/project/assetFolders.ts new file mode 100644 index 00000000..0ba57733 --- /dev/null +++ b/src/Models/project/assetFolders.ts @@ -0,0 +1,18 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const assetFolders = { + /** + * Café locations + */ + caféLocations: { + id: '958001d8-2228-4373-b966-5262b5b96f71', + name: 'Café locations', + externalId: undefined, + folders: {}, + }, +}; diff --git a/src/Models/project/collections.ts b/src/Models/project/collections.ts new file mode 100644 index 00000000..e9fba757 --- /dev/null +++ b/src/Models/project/collections.ts @@ -0,0 +1,17 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const collections = { + /** + * Default + */ + default: { + codename: 'default', + id: '00000000-0000-0000-0000-000000000000', + name: 'Default', + }, +}; diff --git a/src/Models/project/contentTypes.ts b/src/Models/project/contentTypes.ts new file mode 100644 index 00000000..13d672c2 --- /dev/null +++ b/src/Models/project/contentTypes.ts @@ -0,0 +1,2498 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const contentTypes = { + /** + * Hero Unit + * Last modified: Wed Mar 27 2019 14:06:00 GMT+0100 (Středoevropský standardní čas) + */ + hero_unit: { + codename: 'hero_unit', + id: 'f4deeb7e-fe9b-49a2-a5f6-a51a9be6ac73', + externalId: undefined, + name: 'Hero Unit', + elements: { + /** + * Title (text) + * + * Provide a title that fits within 60 characters. + */ + title: { + codename: 'title', + id: '16ea3e64-4103-da81-eabd-af7efc2ab8a6', + externalId: undefined, + name: 'Title', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Attach a teaser image; max. dimensions are 1280 × 600 px; allowed formats are *.jpg, *.png, *.gif. + */ + image: { + codename: 'image', + id: '4aeed98e-58d1-ab13-232c-542bf268fe48', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Marketing message (rich_text) + * + * Include a main goal of our business. The limit is 80 characters. + */ + marketing_message: { + codename: 'marketing_message', + id: 'ecf4e55f-1ae0-f539-3516-5714a0f032e9', + externalId: undefined, + name: 'Marketing message', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '0f620d29-a4c7-4944-b7d2-be5de2733b6e', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + }, + }, + + /** + * Hosted video + * Last modified: Fri Mar 29 2019 14:55:48 GMT+0100 (Středoevropský standardní čas) + */ + hosted_video: { + codename: 'hosted_video', + id: '269202ad-1d9d-47fd-b3e8-bdb05b3e3cf0', + externalId: undefined, + name: 'Hosted video', + elements: { + /** + * Video ID (text) + */ + video_id: { + codename: 'video_id', + id: '116a2441-6441-7124-c85b-46a4fef5dcb9', + externalId: undefined, + name: 'Video ID', + required: true, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Video host (multiple_choice) + */ + video_host: { + codename: 'video_host', + id: '87924912-4861-aa84-176a-1eae7b22529b', + externalId: undefined, + name: 'Video host', + required: true, + type: 'multiple_choice', + snippetCodename: undefined, + }, + }, + }, + + /** + * Coffee + * Last modified: Tue Jul 16 2019 09:18:34 GMT+0200 (Středoevropský letní čas) + */ + coffee: { + codename: 'coffee', + id: '929985ac-4aa5-436b-85a2-94c2d4fbbebd', + externalId: undefined, + name: 'Coffee', + elements: { + /** + * Product name (text) + * + * Include a product display name. + */ + product_name: { + codename: 'product_name', + id: 'edaec5c4-e653-9109-eb0d-fc40ccf3c810', + externalId: undefined, + name: 'Product name', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Price (number) + * + * Include a product price. + */ + price: { + codename: 'price', + id: '624592dc-49b2-330a-7185-e1f2396ce90c', + externalId: undefined, + name: 'Price', + required: false, + type: 'number', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Upload a product image; the recommended size is 300 × 300 px. + */ + image: { + codename: 'image', + id: '30ac3ccc-1e7f-1490-e1f6-915c64176a55', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Short description (rich_text) + * + * Include a short description that fits within 160 characters. + */ + short_description: { + codename: 'short_description', + id: 'b5a3263a-a1d7-92b7-865a-329f833285fa', + externalId: undefined, + name: 'Short description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Long description (rich_text) + * + * Include a full product description. + */ + long_description: { + codename: 'long_description', + id: 'd468a0aa-e0fa-0cae-41db-6e006bff2527', + externalId: undefined, + name: 'Long description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Product status (taxonomy) + * + * Add a product status if the product is included in a special offering. + */ + product_status: { + codename: 'product_status', + id: '1ee64175-fde7-fc1e-5259-511a31c326c3', + externalId: undefined, + name: 'Product status', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Farm (text) + * + * Include the name of the coffee farm. + */ + farm: { + codename: 'farm', + id: 'e5cf103f-9b84-1ab0-29f1-fb5a1657c6f7', + externalId: undefined, + name: 'Farm', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Country (text) + * + * Include the coffee's country of origin. + */ + country: { + codename: 'country', + id: '6eec1918-378d-3b15-8b1a-19c5f0748321', + externalId: undefined, + name: 'Country', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Variety (text) + * + * Include a coffee variety name. + */ + variety: { + codename: 'variety', + id: '301c6712-962f-b05a-6f6e-2f0e1e959039', + externalId: undefined, + name: 'Variety', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Altitude (text) + * + * Include the altitude at which the coffee is grown. Elevation affects the size, shape, and taste of coffee beans. + */ + altitude: { + codename: 'altitude', + id: '23a772c0-0b2b-588d-9849-e29068701f03', + externalId: undefined, + name: 'Altitude', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: '3af8ce38-c03d-063c-ea80-72684dfddf31', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Processing (taxonomy) + */ + processing: { + codename: 'processing', + id: 'b63e3516-d5fa-fdac-a03a-2b027bf02a28', + externalId: undefined, + name: 'Processing', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '99d7a378-e18f-41dd-b5bb-2a569c3d1de7', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Article + * Last modified: Tue Jul 16 2019 09:12:44 GMT+0200 (Středoevropský letní čas) + */ + article: { + codename: 'article', + id: 'b7aa4a53-d9b1-48cf-b7a6-ed0b182c4b89', + externalId: undefined, + name: 'Article', + elements: { + /** + * Title (text) + * + * The title should fit within 60 characters.Our voice and tone recommendations: — avoid coffee jargon. + */ + title: { + codename: 'title', + id: '85d5efc6-f47e-2fde-a6f5-0950fe89ecd1', + externalId: undefined, + name: 'Title', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Teaser image (asset) + * + * Upload an image at a resolution of at least 600 × 1200 px. + */ + teaser_image: { + codename: 'teaser_image', + id: '62eb9881-e222-6b81-91d2-fdf052726414', + externalId: undefined, + name: 'Teaser image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Post date (date_time) + * + * Provide a date that will appear on the live site as the date this article was posted live. This date will also influence the order of the articles. + */ + post_date: { + codename: 'post_date', + id: '4ae5f7a9-fe1f-1e8c-bfec-d321455139c4', + externalId: undefined, + name: 'Post date', + required: false, + type: 'date_time', + snippetCodename: undefined, + }, + + /** + * Summary (text) + * + * Provide a short summary of the text. It should be catchy and make the visitor want to read the whole article.The summary should fit within 160 characters. + */ + summary: { + codename: 'summary', + id: '90550cbe-7bff-40a9-2947-9c81489fe562', + externalId: undefined, + name: 'Summary', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Body Copy (rich_text) + * + * Keep the article structured with concise paragraphs complemented with headlines that will help the reader navigate through the article's content.Preferred glossary terms — coffee, brewing, grinder, drip, roast, filter. + */ + body_copy: { + codename: 'body_copy', + id: '108ed7c0-fc8c-c0ec-d0b5-5a8071408b54', + externalId: undefined, + name: 'Body Copy', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Related articles (modular_content) + * + * Provide articles with related topics. + */ + related_articles: { + codename: 'related_articles', + id: 'ee7c3687-b469-6c56-3ac6-c8dfdc8b58b5', + externalId: undefined, + name: 'Related articles', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * Meta keywords (text) + * + * Enter tags separated with a comma. Example: coffee, "coffee roast”, grinder + */ + meta_keywords: { + codename: 'meta_keywords', + id: '5efb2425-5987-a4a6-a2d3-b14712b56e73', + externalId: undefined, + name: 'Meta keywords', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Personas (taxonomy) + * + * Provide all personas for which this article is relevant. + */ + personas: { + codename: 'personas', + id: '0a16b642-ac3e-584d-a45a-ba354a30b2bd', + externalId: undefined, + name: 'Personas', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta description (text) + * + * Sum up the blog for SEO purposes. Limit for the meta description is 160 characters. + */ + meta_description: { + codename: 'meta_description', + id: 'b9dc537c-2518-e4f5-8325-ce4fce26171e', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: 'f2ff5e3f-a9ca-4604-58b0-34a2ad6a7cf1', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: 'a4d7a146-7e39-4001-b462-c5a0c734f3f5', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Grinder + * Last modified: Tue Jul 16 2019 09:16:16 GMT+0200 (Středoevropský letní čas) + */ + grinder: { + codename: 'grinder', + id: 'da4f1cb1-8a55-43e5-9fcc-67ad331c8888', + externalId: undefined, + name: 'Grinder', + elements: { + /** + * Product name (text) + * + * Include a product display name. + */ + product_name: { + codename: 'product_name', + id: 'b7b9604e-c74e-79ea-2a0f-d74d6347e35a', + externalId: undefined, + name: 'Product name', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Price (number) + * + * Include a product price. + */ + price: { + codename: 'price', + id: '1e14595d-7fe8-7765-6df6-fad6a6e4851f', + externalId: undefined, + name: 'Price', + required: false, + type: 'number', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: { + codename: 'image', + id: '7fe226b9-d21f-80ff-e680-6e6f44ce044b', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Manufacturer (text) + * + * Include a manufacturer's name. + */ + manufacturer: { + codename: 'manufacturer', + id: '2c389736-7dfa-b03e-8996-7eba451cfdb5', + externalId: undefined, + name: 'Manufacturer', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Product status (taxonomy) + * + * Add a product status if the product is included in a special offering. + */ + product_status: { + codename: 'product_status', + id: '54120e88-82cc-2202-e72d-9cae0ced3f51', + externalId: undefined, + name: 'Product status', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Short description (rich_text) + * + * Include a short description that fits within 160 characters. + */ + short_description: { + codename: 'short_description', + id: '23ee310f-9732-9193-ad5e-80f75bfc276d', + externalId: undefined, + name: 'Short description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Long description (rich_text) + * + * Include a full product description. + */ + long_description: { + codename: 'long_description', + id: '21e77286-e87b-d6e3-902d-13b5814b5e75', + externalId: undefined, + name: 'Long description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: 'bf6ad588-11e5-ba0d-2c18-ccd50064a32a', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '02f0e374-6760-4b4d-99a8-60485572b764', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Office + * Last modified: Wed Mar 27 2019 14:07:06 GMT+0100 (Středoevropský standardní čas) + */ + office: { + codename: 'office', + id: 'e097306b-3893-4a42-9973-2525fad14d66', + externalId: undefined, + name: 'Office', + elements: { + /** + * Name (text) + */ + name: { + codename: 'name', + id: 'bb81a11d-886c-2a32-e480-29f01cea667f', + externalId: undefined, + name: 'Name', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Street (text) + */ + street: { + codename: 'street', + id: 'f7eb7ab2-4e41-aca0-7e93-dbbbdca330eb', + externalId: undefined, + name: 'Street', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * City (text) + */ + city: { + codename: 'city', + id: '95477abc-d6b4-a6b3-5b72-c92763da55bf', + externalId: undefined, + name: 'City', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Country (text) + */ + country: { + codename: 'country', + id: '4fbc7779-652d-7716-2673-7419aaaceed1', + externalId: undefined, + name: 'Country', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * State (text) + */ + state: { + codename: 'state', + id: '08df2f10-52b8-d451-fab1-b6da8ddb3fd2', + externalId: undefined, + name: 'State', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Zip code (text) + */ + zip_code: { + codename: 'zip_code', + id: 'e7141da8-8792-a66d-d1c8-1fe704758393', + externalId: undefined, + name: 'Zip code', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Phone (text) + */ + phone: { + codename: 'phone', + id: '2ac708e2-cd0e-67b0-67f8-71725625dc6d', + externalId: undefined, + name: 'Phone', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Email (text) + */ + email: { + codename: 'email', + id: '251dc38f-43a3-d924-a328-8708ecb00ef1', + externalId: undefined, + name: 'Email', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '93e978da-a9dd-43eb-a16a-ace55c1a5245', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + }, + }, + + /** + * Tweet + * Last modified: Fri Mar 29 2019 14:55:38 GMT+0100 (Středoevropský standardní čas) + */ + tweet: { + codename: 'tweet', + id: 'f808c142-4b62-43b0-8f4d-1cbf412580ab', + externalId: undefined, + name: 'Tweet', + elements: { + /** + * Tweet link (text) + */ + tweet_link: { + codename: 'tweet_link', + id: '20bf9ba1-28fe-203c-5920-6f9610498fb9', + externalId: undefined, + name: 'Tweet link', + required: true, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Theme (multiple_choice) + */ + theme: { + codename: 'theme', + id: '779b27fd-5a4d-5e5f-66dc-b30931fcba92', + externalId: undefined, + name: 'Theme', + required: false, + type: 'multiple_choice', + snippetCodename: undefined, + }, + + /** + * Display options (multiple_choice) + */ + display_options: { + codename: 'display_options', + id: '8c6db6cf-1003-951e-5407-b2a19c15b4cd', + externalId: undefined, + name: 'Display options', + required: false, + type: 'multiple_choice', + snippetCodename: undefined, + }, + }, + }, + + /** + * Cafe + * Last modified: Wed Mar 27 2019 14:05:05 GMT+0100 (Středoevropský standardní čas) + */ + cafe: { + codename: 'cafe', + id: 'fe41ae5a-5fe2-420a-8560-f7d6d3533dc2', + externalId: undefined, + name: 'Cafe', + elements: { + /** + * Street (text) + */ + street: { + codename: 'street', + id: '866afdba-d334-f01a-1d52-a9ca3f57cb4b', + externalId: undefined, + name: 'Street', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * City (text) + */ + city: { + codename: 'city', + id: '339e6d4f-67c1-5f5e-6921-3b374eb96f5b', + externalId: undefined, + name: 'City', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Country (text) + */ + country: { + codename: 'country', + id: '7531a08f-e148-8cc0-9d2d-155215502e08', + externalId: undefined, + name: 'Country', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * State (text) + */ + state: { + codename: 'state', + id: 'a015b689-cad3-1ac9-04b4-73697525752d', + externalId: undefined, + name: 'State', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * ZIP Code (text) + */ + zip_code: { + codename: 'zip_code', + id: 'bb158ac2-41e1-5a7d-0826-bb8bf6744f0e', + externalId: undefined, + name: 'ZIP Code', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Phone (text) + */ + phone: { + codename: 'phone', + id: '1c71bc62-4b62-f307-37ef-0823776f8f73', + externalId: undefined, + name: 'Phone', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Email (text) + */ + email: { + codename: 'email', + id: '6f726c77-36bd-8062-51df-056136e10d35', + externalId: undefined, + name: 'Email', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Photo (asset) + */ + photo: { + codename: 'photo', + id: '5769c0f4-66a8-4c73-3c19-c023bdfa123a', + externalId: undefined, + name: 'Photo', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: 'e82d0f49-5b15-45e1-9b1f-32ccc1be4941', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + }, + }, + + /** + * Home + * Last modified: Tue Jul 16 2019 09:16:46 GMT+0200 (Středoevropský letní čas) + */ + home: { + codename: 'home', + id: 'a29399c3-5281-47ab-9916-acd4a6f887b7', + externalId: undefined, + name: 'Home', + elements: { + /** + * Hero unit (modular_content) + * + * Assign 1 Hero unit that has been prepared for a home page. + */ + hero_unit: { + codename: 'hero_unit', + id: '2b15a8f3-2e5f-7d01-4d8e-5b22e222aa76', + externalId: undefined, + name: 'Hero unit', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * Articles (modular_content) + * + * Assign all articles which should be displayed on the home page. + */ + articles: { + codename: 'articles', + id: '222f3a69-a54f-3e92-83ac-05f8a08e667f', + externalId: undefined, + name: 'Articles', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * Our story (modular_content) + * + * Assign 1 Fact about us which will be displayed on the home page. + */ + our_story: { + codename: 'our_story', + id: '617bccc0-4844-4beb-4ede-6247e954633a', + externalId: undefined, + name: 'Our story', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * Cafes (modular_content) + * + * Assign 4 Cafes which will be displayed on the home page. + */ + cafes: { + codename: 'cafes', + id: '6356c948-0fd6-00d0-8fc1-e2484180ae7c', + externalId: undefined, + name: 'Cafes', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * Contact (rich_text) + * + * Add Contact us information to be displayed on the home page. + */ + contact: { + codename: 'contact', + id: 'ee854076-236b-5312-0ed5-8c3cd55ca9e0', + externalId: undefined, + name: 'Contact', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: 'dd70db4b-ee97-5ab4-b752-4f9d70389426', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: 'ea3bf3c2-7eb7-4c91-aff3-09f89c743710', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Accessory + * Last modified: Tue Jul 16 2019 09:11:09 GMT+0200 (Středoevropský letní čas) + */ + accessory: { + codename: 'accessory', + id: 'd9748663-f567-4c51-a922-c24a1d6b935a', + externalId: undefined, + name: 'Accessory', + elements: { + /** + * Product name (text) + * + * Include a product display name. + */ + product_name: { + codename: 'product_name', + id: 'f9e2672c-5035-412e-3985-d6112b3781bd', + externalId: undefined, + name: 'Product name', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Price (number) + * + * Include a product price. + */ + price: { + codename: 'price', + id: '51d63ac3-d40d-15ea-c219-be207714077c', + externalId: undefined, + name: 'Price', + required: false, + type: 'number', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: { + codename: 'image', + id: 'f0db12e6-86e4-8597-903b-c5984076d6b3', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Manufacturer (text) + * + * Include a manufacturer's name. + */ + manufacturer: { + codename: 'manufacturer', + id: 'ab75ff46-b629-5ce5-aac9-79ed8a7b869c', + externalId: undefined, + name: 'Manufacturer', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Product status (taxonomy) + * + * Add a product status if the product is included in a special offering. + */ + product_status: { + codename: 'product_status', + id: 'ef13b1f4-b558-f707-35a4-86146dbe4518', + externalId: undefined, + name: 'Product status', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Short description (rich_text) + * + * Include a short description that fits within 160 characters. + */ + short_description: { + codename: 'short_description', + id: '9740e2d0-87e8-52f5-ff4c-566fa00b1253', + externalId: undefined, + name: 'Short description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Long description (rich_text) + * + * Include a full product description. + */ + long_description: { + codename: 'long_description', + id: '1f961774-a589-4e21-9f8e-a8c4908ea476', + externalId: undefined, + name: 'Long description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: '69e4af48-f1ac-1146-e6c9-d20d55ca5792', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: 'd8ed1597-930c-4cf8-a34e-c5d5e82718ed', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Brewer + * Last modified: Tue Jul 16 2019 09:15:27 GMT+0200 (Středoevropský letní čas) + */ + brewer: { + codename: 'brewer', + id: '7bc932b3-ce2a-4aa7-954e-04cbcbd214fc', + externalId: undefined, + name: 'Brewer', + elements: { + /** + * Product name (text) + * + * Include a product display name. + */ + product_name: { + codename: 'product_name', + id: '01d6c6c7-92ff-a675-e413-861e5a9a4034', + externalId: undefined, + name: 'Product name', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Price (number) + * + * Include a product price. + */ + price: { + codename: 'price', + id: '48ebe0fc-afe7-2b93-d351-0e352332bc52', + externalId: undefined, + name: 'Price', + required: false, + type: 'number', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Upload one product image; the recommended size is 300 × 300 px. + */ + image: { + codename: 'image', + id: 'd0c1e9e7-7d5d-e61f-8564-56a8cb758cb8', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Product status (taxonomy) + * + * Add a product status if the product is included in a special offering. + */ + product_status: { + codename: 'product_status', + id: '960d0011-ff3b-41ac-1447-8eac6ee66eaa', + externalId: undefined, + name: 'Product status', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Short description (rich_text) + * + * Include a short description that fits within 160 characters. + */ + short_description: { + codename: 'short_description', + id: '8c235a7f-034e-f803-e612-9c47c8a49506', + externalId: undefined, + name: 'Short description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Long description (rich_text) + * + * Include a full product description. + */ + long_description: { + codename: 'long_description', + id: '14510bef-fd86-7d5d-992a-c1e091cbcb97', + externalId: undefined, + name: 'Long description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: '737c85be-f532-c8fe-a308-2a0f2c512f3e', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Manufacturer (taxonomy) + */ + manufacturer: { + codename: 'manufacturer', + id: '53b6bddb-fe8a-a8b2-9765-343479bf9fc2', + externalId: undefined, + name: 'Manufacturer', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '7632f3bb-2e53-438d-933c-4e8b6c035cb1', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * About us + * Last modified: Tue Jul 16 2019 09:07:38 GMT+0200 (Středoevropský letní čas) + */ + about_us: { + codename: 'about_us', + id: 'b2c14f2c-6467-460b-a70b-bca17972a33a', + externalId: undefined, + name: 'About us', + elements: { + /** + * Facts (modular_content) + * + * Assign all facts about our company which will be displayed on the about us page. + */ + facts: { + codename: 'facts', + id: 'cff560dc-ed24-7036-cbb6-b7a1b61b196a', + externalId: undefined, + name: 'Facts', + required: false, + type: 'modular_content', + snippetCodename: undefined, + }, + + /** + * URL pattern (url_slug) + * + * Provide a SEO-friendly URL. + */ + url_pattern: { + codename: 'url_pattern', + id: '50cb9acf-45f5-a186-5c00-9a9e4a37d84a', + externalId: undefined, + name: 'URL pattern', + required: false, + type: 'url_slug', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '65911e49-7bb0-41ca-9d17-ab218135126d', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + + /** + * Meta title (text) + * + * Length: 30–60 characters + */ + metadata__meta_title: { + codename: 'metadata__meta_title', + id: '09398b24-61ed-512e-5b5c-affd54a098e5', + externalId: undefined, + name: 'Meta title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * Meta description (text) + * + * Length: 70–150 characters + */ + metadata__meta_description: { + codename: 'metadata__meta_description', + id: '2e555cc1-1eae-520c-189e-28548904f529', + externalId: undefined, + name: 'Meta description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:title (text) + * + * Max. 60 characters + */ + metadata__og_title: { + codename: 'metadata__og_title', + id: '1db86c7a-e836-3c4e-01e6-4f704ad38ba5', + externalId: undefined, + name: 'og:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:description (text) + * + * Max. 150 characters + */ + metadata__og_description: { + codename: 'metadata__og_description', + id: '05987dc9-ebe3-7b61-b949-522eb42dbc0d', + externalId: undefined, + name: 'og:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * og:image (asset) + * + * Use images that are at least 1200 × 630 px for best display on high resolution devices. At the minimum, you should use images that are 600 × 315 px to display link page posts with larger images. Images may be up to 1 MB in size. + */ + metadata__og_image: { + codename: 'metadata__og_image', + id: 'ce6cda71-9d38-1d57-3ac3-ec9b2e286edd', + externalId: undefined, + name: 'og:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + + /** + * twitter:site (text) + */ + metadata__twitter_site: { + codename: 'metadata__twitter_site', + id: '34213fdf-0015-8f4f-e5e6-83c6842cff4a', + externalId: undefined, + name: 'twitter:site', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:creator (text) + */ + metadata__twitter_creator: { + codename: 'metadata__twitter_creator', + id: '68f65095-c9b4-05d6-a473-2883c2f0c7af', + externalId: undefined, + name: 'twitter:creator', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:title (text) + * + * Max. 60 characters + */ + metadata__twitter_title: { + codename: 'metadata__twitter_title', + id: 'b208d3dc-bd8d-b1af-5ef0-747650730ba7', + externalId: undefined, + name: 'twitter:title', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:description (text) + * + * A description that concisely summarizes the content as appropriate for presentation within a Tweet. You should not re-use the title as the description, or use this field to describe the general services provided by the website. Max. 150 characters. + */ + metadata__twitter_description: { + codename: 'metadata__twitter_description', + id: 'b7d1dd8b-a5d8-2ad8-2f57-49881363f6f7', + externalId: undefined, + name: 'twitter:description', + required: false, + type: 'text', + snippetCodename: 'metadata', + }, + + /** + * twitter:image (asset) + * + * Twitter's recommendation: A URL to a unique image representing the content of the page. You should not use a generic image such as your website logo, author photo, or other image that spans multiple pages. Images for this Card should be at least 280 × 150 px. Images may be up to 1 MB in size.Let's go for 560 × 300 px. + */ + metadata__twitter_image: { + codename: 'metadata__twitter_image', + id: '63793ba4-6004-a93c-68ca-52a1f0482bca', + externalId: undefined, + name: 'twitter:image', + required: false, + type: 'asset', + snippetCodename: 'metadata', + }, + }, + }, + + /** + * Fact about us + * Last modified: Wed Mar 27 2019 14:05:49 GMT+0100 (Středoevropský standardní čas) + */ + fact_about_us: { + codename: 'fact_about_us', + id: 'b99ec220-0f2b-4658-a080-ff0afe92f6d1', + externalId: undefined, + name: 'Fact about us', + elements: { + /** + * Title (text) + * + * Provide a title that fits within 60 characters. + */ + title: { + codename: 'title', + id: '2375ca8a-43d2-7282-162c-922a6fdeba3e', + externalId: undefined, + name: 'Title', + required: false, + type: 'text', + snippetCodename: undefined, + }, + + /** + * Description (rich_text) + * + * Include a main goal of our business. The limit is 80 characters. + */ + description: { + codename: 'description', + id: '1b658e81-88c9-73d1-374d-7a60e3756ef7', + externalId: undefined, + name: 'Description', + required: false, + type: 'rich_text', + snippetCodename: undefined, + }, + + /** + * Image (asset) + * + * Attach a teaser image; max. dimensions are 1280 × 600 px; allowed formats are *.jpg, *.png, *.gif. + */ + image: { + codename: 'image', + id: '68d194b6-efad-6b25-89a4-2dfc75fed5a5', + externalId: undefined, + name: 'Image', + required: false, + type: 'asset', + snippetCodename: undefined, + }, + + /** + * Sitemap (taxonomy) + */ + sitemap: { + codename: 'sitemap', + id: '23a715f9-755c-4b9d-b6b3-e02fc1b09b83', + externalId: undefined, + name: 'Sitemap', + required: false, + type: 'taxonomy', + snippetCodename: undefined, + }, + }, + }, +}; diff --git a/src/Models/project/index.ts b/src/Models/project/index.ts new file mode 100644 index 00000000..4bb996ec --- /dev/null +++ b/src/Models/project/index.ts @@ -0,0 +1,8 @@ +export * from './languages'; +export * from './collections'; +export * from './contentTypes'; +export * from './taxonomies'; +export * from './workflows'; +export * from './roles'; +export * from './assetFolders'; +export * from './webhooks'; diff --git a/src/Models/project/languages.ts b/src/Models/project/languages.ts new file mode 100644 index 00000000..998cf3d6 --- /dev/null +++ b/src/Models/project/languages.ts @@ -0,0 +1,34 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const languages = { + /** + * English (United States) + */ + enUS: { + codename: 'en-US', + id: '00000000-0000-0000-0000-000000000000', + isActive: true, + isDefault: true, + fallbackLanguageId: '00000000-0000-0000-0000-000000000000', + externalId: undefined, + name: 'English (United States)', + }, + + /** + * Spanish (Spain) + */ + esES: { + codename: 'es-ES', + id: 'd1f95fde-af02-b3b5-bd9e-f232311ccab8', + isActive: true, + isDefault: false, + fallbackLanguageId: '00000000-0000-0000-0000-000000000000', + externalId: undefined, + name: 'Spanish (Spain)', + }, +}; diff --git a/src/Models/project/roles.ts b/src/Models/project/roles.ts new file mode 100644 index 00000000..e82e7405 --- /dev/null +++ b/src/Models/project/roles.ts @@ -0,0 +1,8 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const roles = {}; diff --git a/src/Models/project/taxonomies.ts b/src/Models/project/taxonomies.ts new file mode 100644 index 00000000..78bd6362 --- /dev/null +++ b/src/Models/project/taxonomies.ts @@ -0,0 +1,268 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const taxonomies = { + /** + * Processing + */ + processing: { + codename: 'processing', + id: 'd351400e-0290-87b2-1413-6c411d8ae5a4', + externalId: undefined, + name: 'Processing', + terms: { + wet__washed_: { + codename: 'wet__washed_', + id: 'a831d60b-ff0e-7df1-61d2-73e851a5deab', + externalId: undefined, + name: 'Wet (Washed)', + terms: {}, + }, + dry__natural_: { + codename: 'dry__natural_', + id: 'ac34eaa7-8463-62b9-825e-66aff9e6b216', + externalId: undefined, + name: 'Dry (Natural)', + terms: {}, + }, + semi_dry: { + codename: 'semi_dry', + id: '908321fa-776d-d441-6a72-76fba3959c1d', + externalId: undefined, + name: 'Semi-dry', + terms: {}, + }, + }, + }, + + /** + * Product status + */ + product_status: { + codename: 'product_status', + id: '79b1c5b6-30bc-d076-a236-d9ec9f1ff01b', + externalId: undefined, + name: 'Product status', + terms: { + on_sale: { + codename: 'on_sale', + id: '6352c8bf-8024-9986-8373-35445e1f0d59', + externalId: undefined, + name: 'On sale', + terms: {}, + }, + bestseller: { + codename: 'bestseller', + id: '8d808da3-29de-e608-5699-8565687dd474', + externalId: undefined, + name: 'Bestseller', + terms: {}, + }, + }, + }, + + /** + * Sitemap + */ + sitemap_538125f: { + codename: 'sitemap_538125f', + id: '538125ff-c59c-4193-88ce-71a7016830ed', + externalId: undefined, + name: 'Sitemap', + terms: { + home: { + codename: 'home', + id: '796ad1bc-7d9f-426f-97ba-d16003c3f04c', + externalId: undefined, + name: 'Home', + terms: {}, + }, + products: { + codename: 'products', + id: '6bb115ce-4f92-44c6-8643-d148f9f7028a', + externalId: undefined, + name: 'Products', + terms: { + coffee: { + codename: 'coffee', + id: '30453aab-633b-4e7c-b9b3-cda95163ad0f', + externalId: undefined, + name: 'Coffee', + terms: {}, + }, + brewers: { + codename: 'brewers', + id: 'c66be017-bacc-403f-9f98-8ead623d687e', + externalId: undefined, + name: 'Brewers', + terms: {}, + }, + accessories: { + codename: 'accessories', + id: 'baa49a0a-479a-4279-9fe0-f29393f330c5', + externalId: undefined, + name: 'Accessories', + terms: {}, + }, + grinders: { + codename: 'grinders', + id: '82b3f64d-a41f-4f78-a410-c6c0e095b3c7', + externalId: undefined, + name: 'Grinders', + terms: {}, + }, + }, + }, + cafes: { + codename: 'cafes', + id: '2ab0aad5-7609-4371-8d6e-cb4a917b2ad1', + externalId: undefined, + name: 'Cafes', + terms: { + north_america: { + codename: 'north_america', + id: 'f319b28e-c194-496a-b188-4f91cc010a67', + externalId: undefined, + name: 'North America', + terms: {}, + }, + europe: { + codename: 'europe', + id: 'bbac5542-33b5-40ad-a3a9-2f2d37a40ab3', + externalId: undefined, + name: 'Europe', + terms: {}, + }, + australia: { + codename: 'australia', + id: '405c6578-8233-4277-9826-6b5e74dc6f39', + externalId: undefined, + name: 'Australia', + terms: {}, + }, + }, + }, + articles: { + codename: 'articles', + id: '7ca9b56c-6379-46dc-ae90-3df4b9abd217', + externalId: undefined, + name: 'Articles', + terms: {}, + }, + offices: { + codename: 'offices', + id: '3f7bee52-08cc-4a12-8fe9-dbce05871ca0', + externalId: undefined, + name: 'Offices', + terms: {}, + }, + about_us: { + codename: 'about_us', + id: 'bbe0ed98-bc68-4f9b-85cb-73cb28078b3c', + externalId: undefined, + name: 'About us', + terms: {}, + }, + }, + }, + + /** + * Personas + */ + personas: { + codename: 'personas', + id: 'f30c7f72-e9ab-8832-2a57-62944a038809', + externalId: undefined, + name: 'Personas', + terms: { + coffee_expert: { + codename: 'coffee_expert', + id: '6693ca6e-79e0-57e4-000d-d23d5ce8f656', + externalId: undefined, + name: 'Coffee expert', + terms: { + barista: { + codename: 'barista', + id: '6a372f43-ccd7-e524-6308-c2094e7b6596', + externalId: undefined, + name: 'Barista', + terms: {}, + }, + cafe_owner: { + codename: 'cafe_owner', + id: 'cdf2f3c6-89e3-5df1-f7de-7179460bd6b4', + externalId: undefined, + name: 'Cafe owner', + terms: {}, + }, + }, + }, + coffee_enthusiast: { + codename: 'coffee_enthusiast', + id: 'ab2b73a3-473d-4232-0652-495598f5d670', + externalId: undefined, + name: 'Coffee enthusiast', + terms: { + coffee_lover: { + codename: 'coffee_lover', + id: '208a9095-1b92-10da-7627-75ae311935cf', + externalId: undefined, + name: 'Coffee lover', + terms: {}, + }, + coffee_blogger: { + codename: 'coffee_blogger', + id: '4fa27320-c363-3ebe-5ab5-b531300f053f', + externalId: undefined, + name: 'Coffee blogger', + terms: {}, + }, + }, + }, + }, + }, + + /** + * Manufacturer + */ + manufacturer: { + codename: 'manufacturer', + id: '4ce421e9-c403-eee8-fdc2-74f09392a749', + externalId: undefined, + name: 'Manufacturer', + terms: { + aerobie: { + codename: 'aerobie', + id: 'f04c8552-1b97-a49b-3944-79275622f471', + externalId: undefined, + name: 'Aerobie', + terms: {}, + }, + chemex: { + codename: 'chemex', + id: '16d27bf1-e0f4-8646-0e54-1b71efc6947f', + externalId: undefined, + name: 'Chemex', + terms: {}, + }, + espro: { + codename: 'espro', + id: 'b378225f-6dfc-e261-3848-dd030a6d7883', + externalId: undefined, + name: 'Espro', + terms: {}, + }, + hario: { + codename: 'hario', + id: '6fde9724-5b72-8bc9-6da0-4f0573a54532', + externalId: undefined, + name: 'Hario', + terms: {}, + }, + }, + }, +}; diff --git a/src/Models/project/webhooks.ts b/src/Models/project/webhooks.ts new file mode 100644 index 00000000..0426b319 --- /dev/null +++ b/src/Models/project/webhooks.ts @@ -0,0 +1,8 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const webhooks = {}; diff --git a/src/Models/project/workflows.ts b/src/Models/project/workflows.ts new file mode 100644 index 00000000..7840a6df --- /dev/null +++ b/src/Models/project/workflows.ts @@ -0,0 +1,19 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Project name: Sample Project + * Environment: Production + * Project Id: 159e78b3-53be-00bf-4a39-4f5211f2ace4 + */ +export const workflows = { + /** + * Default + * Archived step Id: 7a535a69-ad34-47f8-806a-def1fdf4d391 + * Published step Id: b4363ccd-8f21-45fd-a840-5843d7b7f008 + */ + default: { + codename: 'default', + id: '00000000-0000-0000-0000-000000000000', + name: 'Default', + }, +}; diff --git a/src/Models/taxonomies/index.ts b/src/Models/taxonomies/index.ts new file mode 100644 index 00000000..391202cb --- /dev/null +++ b/src/Models/taxonomies/index.ts @@ -0,0 +1,5 @@ +export * from './processing'; +export * from './product_status'; +export * from './sitemap_538125f'; +export * from './personas'; +export * from './manufacturer'; diff --git a/src/Models/taxonomies/manufacturer.ts b/src/Models/taxonomies/manufacturer.ts new file mode 100644 index 00000000..49d4550c --- /dev/null +++ b/src/Models/taxonomies/manufacturer.ts @@ -0,0 +1,8 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Manufacturer + * Id: 4ce421e9-c403-eee8-fdc2-74f09392a749 + * Codename: manufacturer + */ +export type Manufacturer = 'aerobie' | 'chemex' | 'espro' | 'hario'; diff --git a/src/Models/taxonomies/personas.ts b/src/Models/taxonomies/personas.ts new file mode 100644 index 00000000..1e796648 --- /dev/null +++ b/src/Models/taxonomies/personas.ts @@ -0,0 +1,14 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Personas + * Id: f30c7f72-e9ab-8832-2a57-62944a038809 + * Codename: personas + */ +export type Personas = + | 'coffee_expert' + | 'barista' + | 'cafe_owner' + | 'coffee_enthusiast' + | 'coffee_lover' + | 'coffee_blogger'; diff --git a/src/Models/taxonomies/processing.ts b/src/Models/taxonomies/processing.ts new file mode 100644 index 00000000..992ca56c --- /dev/null +++ b/src/Models/taxonomies/processing.ts @@ -0,0 +1,8 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Processing + * Id: d351400e-0290-87b2-1413-6c411d8ae5a4 + * Codename: processing + */ +export type Processing = 'wet__washed_' | 'dry__natural_' | 'semi_dry'; diff --git a/src/Models/taxonomies/product_status.ts b/src/Models/taxonomies/product_status.ts new file mode 100644 index 00000000..15fbef0a --- /dev/null +++ b/src/Models/taxonomies/product_status.ts @@ -0,0 +1,8 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Product status + * Id: 79b1c5b6-30bc-d076-a236-d9ec9f1ff01b + * Codename: product_status + */ +export type ProductStatus = 'on_sale' | 'bestseller'; diff --git a/src/Models/taxonomies/sitemap_538125f.ts b/src/Models/taxonomies/sitemap_538125f.ts new file mode 100644 index 00000000..7a6447d5 --- /dev/null +++ b/src/Models/taxonomies/sitemap_538125f.ts @@ -0,0 +1,21 @@ +/** + * Generated by '@kontent-ai/model-generator@5.2.0' + * + * Sitemap + * Id: 538125ff-c59c-4193-88ce-71a7016830ed + * Codename: sitemap_538125f + */ +export type Sitemap = + | 'home' + | 'products' + | 'coffee' + | 'brewers' + | 'accessories' + | 'grinders' + | 'cafes' + | 'north_america' + | 'europe' + | 'australia' + | 'articles' + | 'offices' + | 'about_us'; diff --git a/src/Models/tweet.ts b/src/Models/tweet.ts deleted file mode 100644 index c3152ae5..00000000 --- a/src/Models/tweet.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { IContentItem, Elements } from '@kentico/kontent-delivery'; - -/** - * Generated by '@kentico/kontent-model-generator@4.1.0' at 'Thu, 07 Apr 2022 08:01:06 GMT' - */ -export type Tweet = IContentItem<{ - tweetLink: Elements.TextElement; - theme: Elements.MultipleChoiceElement; - displayOptions: Elements.MultipleChoiceElement; -}>; diff --git a/src/Pages/About.tsx b/src/Pages/About.tsx index 74e9b7d6..5fd4c42e 100644 --- a/src/Pages/About.tsx +++ b/src/Pages/About.tsx @@ -8,10 +8,10 @@ import { defaultLanguage, initLanguageCodeObject, } from '../Utilities/LanguageCodes'; -import { FactAboutUs } from '../Models/fact_about_us'; import { useIntl } from 'react-intl'; -import { AboutUs } from '../Models/about_us'; -import { projectModel } from '../Models/_project'; +import { AboutUs } from '../Models/content-types/about_us'; +import { contentTypes } from '../Models/project/contentTypes'; +import { FactAboutUs } from '../Models/content-types/fact_about_us'; interface AboutProps { urlSlug?: string; @@ -26,7 +26,7 @@ const About: React.FC = ({ urlSlug }) => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.about_us.codename) + .type(contentTypes.about_us.codename) .elementsParameter([ 'facts', 'modular_content', diff --git a/src/Pages/Admin/Configuration.css b/src/Pages/Admin/Configuration.css index 79dc3e98..1ea4685a 100644 --- a/src/Pages/Admin/Configuration.css +++ b/src/Pages/Admin/Configuration.css @@ -1,7 +1,7 @@ -/* taken from https://github.com/Kentico/kontent-sample-app-net#getting-started build output*/ +/* taken from https://github.com/kontent-ai/sample-app-net build output*/ /* and prefixed to not affect rest of the site */ .configuration-page .button { - font-family: helvetica, arial, sans-serif; + font-family: 'Work Sans', arial, sans-serif; font-size: 12px; font-weight: 700; line-height: 16px; @@ -13,23 +13,15 @@ text-transform: uppercase; } .configuration-page .button-primary { - background: #db3c00; - box-shadow: 0 8px 14px 2px rgba(244, 92, 35, 0.14), - 0 6px 20px 5px rgba(244, 92, 35, 0.12), - 0 8px 10px -5px rgba(244, 92, 35, 0.2); + background: #6956cc; color: #fff; } +.configuration-page .button-primary:hover, .configuration-page .button-primary:focus { - box-shadow: 0 0 0 2px #0093ff, inset 0 0 3px 0 #0093ff, - 0 8px 14px 2px rgba(244, 92, 35, 0.14), - 0 6px 20px 5px rgba(244, 92, 35, 0.12), - 0 8px 10px -5px rgba(244, 92, 35, 0.2); + background-color: #231f20; } .configuration-page .button-primary.active, .configuration-page .button-primary:active, -.configuration-page .button-primary:hover { - background: #953000; -} .configuration-page .button-primary.disabled, .configuration-page .button-primary[disabled] { color: #8c8c8c; @@ -105,19 +97,19 @@ } .configuration-page p { margin: 0; - font-family: helvetica, arial, sans-serif; + font-family: 'Work Sans', arial, sans-serif; font-size: 16px; font-weight: 400; line-height: 24px; } .configuration-page .headline-large { - font-family: helvetica, arial, sans-serif; + font-family: 'Work Sans', arial, sans-serif; font-size: 24px; font-weight: 700; line-height: 32px; } .configuration-page .headline-medium { - font-family: helvetica, arial, sans-serif; + font-family: 'Work Sans', arial, sans-serif; font-size: 16px; font-weight: 700; line-height: 24px; diff --git a/src/Pages/Admin/Configuration.tsx b/src/Pages/Admin/Configuration.tsx index 58f471db..51f79937 100644 --- a/src/Pages/Admin/Configuration.tsx +++ b/src/Pages/Admin/Configuration.tsx @@ -124,12 +124,12 @@ const Configuration: React.FC = () => { const redirectToHome = (newProjectId: string): void => { const infoMessage = newProjectId === defaultProjectId - ? `You've configured your app to with a project ID of a shared Kontent project.` + ? `You've configured your app to with a project ID of a shared Kontent.ai project.` : `You've configured your app with a project ID "${newProjectId}". You can edit its contents at https://kontent.ai/.`; navigate(`/?infoMessage=${infoMessage}`); }; - const openKenticoKontentProjectSelector = ( + const openKontentProjectSelector = ( event: FormEvent ): void => { event.preventDefault(); @@ -139,7 +139,7 @@ const Configuration: React.FC = () => { window.open( 'https://app.kontent.ai/sample-site-configuration', - 'Kentico Kontent', + 'Kontent-ai', `status=no,width=${windowWidth},height=${windowHeight},resizable=yes,left= ${left},top=${top},toolbar=no,menubar=no,location=no,directories=no` ); @@ -161,22 +161,18 @@ const Configuration: React.FC = () => {

Sample Site—Configuration

- For your sample app to work, you should have a Kontent project - containing content. Your app should be then configured with its - project ID. You can either get it by signing in using your - Kontent credentials or by signing up for a trial. Later, it will - be converted to a free plan. + For your sample app to work, you should have a Kontent.ai + project containing content. Your app should be then configured + with its project ID. You can either get it by signing in using + your Kontent.ai credentials or by signing up for a trial. Later, + it will be converted to a free plan.

@@ -188,7 +184,7 @@ const Configuration: React.FC = () => { new sample project. The app will be configured with its project ID.

-
+ { const { locale: language, formatDate, formatMessage } = useIntl(); const { articleId } = useParams(); const [article, setArticle] = useState(initLanguageCodeObject()); + const navigate = useNavigate(); + const { pathname } = useLocation(); useEffect(() => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.article.codename) + .type(contentTypes.article.codename) .equalsFilter('system.id', articleId!!) .elementsParameter([ 'title', @@ -53,13 +56,23 @@ const Article: React.FC = () => { query.toPromise().then((response) => { const currentLanguage = language || defaultLanguage; + if (response.data.items[0].system.language !== language) { + navigate( + resolveChangeLanguageLink( + pathname, + response.data.items[0].system.language + ), + { replace: true } + ); + } + spinnerService.hide('apiSpinner'); setArticle((data) => ({ ...data, [currentLanguage]: response.data.items[0] as ArticleType, })); }); - }, [language, articleId]); + }, [language, articleId, navigate, pathname]); const currentArticle = article[language]; if (!currentArticle) { diff --git a/src/Pages/Articles.tsx b/src/Pages/Articles.tsx index d9deb61c..cb609c62 100644 --- a/src/Pages/Articles.tsx +++ b/src/Pages/Articles.tsx @@ -8,9 +8,8 @@ import { } from '../Utilities/LanguageCodes'; import { Link } from 'react-router-dom'; import { useIntl } from 'react-intl'; -import { Article } from '../Models/article'; -import { Article as ArticleType } from '../Models/article'; -import { projectModel } from '../Models/_project'; +import { Article as ArticleType } from '../Models/content-types/article'; +import { contentTypes } from '../Models/project/contentTypes'; const Articles: React.FC = () => { const { locale: language, formatDate, formatMessage } = useIntl(); @@ -22,7 +21,7 @@ const Articles: React.FC = () => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.article.codename) + .type(contentTypes.article.codename) .orderByDescending('elements.post_date') .limitParameter(10); @@ -51,7 +50,7 @@ const Articles: React.FC = () => { let counter = 0; const articlesComponent = articles[language].reduce( - (result: JSX.Element[], article: Article, index: number) => { + (result: JSX.Element[], article: ArticleType, index: number) => { if (index % 4 === 0) { result.push(
); } diff --git a/src/Pages/Brewer.tsx b/src/Pages/Brewer.tsx index 8f4029a5..ca845c6f 100644 --- a/src/Pages/Brewer.tsx +++ b/src/Pages/Brewer.tsx @@ -7,10 +7,11 @@ import { defaultLanguage, initLanguageCodeObject, } from '../Utilities/LanguageCodes'; -import { useParams } from 'react-router-dom'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { useIntl } from 'react-intl'; -import { Brewer as BrewerType } from '../Models/brewer'; -import { projectModel } from '../Models/_project'; +import { Brewer as BrewerType } from '../Models/content-types/brewer'; +import { contentTypes } from '../Models/project/contentTypes'; +import { resolveChangeLanguageLink } from '../Utilities/LanugageLink'; const Brewer: React.FC = () => { const [brewer, setBrewer] = useState( @@ -18,12 +19,14 @@ const Brewer: React.FC = () => { ); const { brewerSlug } = useParams(); const { locale: language, formatMessage } = useIntl(); + const navigate = useNavigate(); + const { pathname } = useLocation(); useEffect(() => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.brewer.codename) + .type(contentTypes.brewer.codename) .equalsFilter('elements.url_pattern', brewerSlug!!); if (language) { @@ -33,13 +36,23 @@ const Brewer: React.FC = () => { query.toPromise().then((response) => { const currentLanguage = language || defaultLanguage; + if (response.data.items[0].system.language !== language) { + navigate( + resolveChangeLanguageLink( + pathname, + response.data.items[0].system.language + ), + { replace: true } + ); + } + spinnerService.hide('apiSpinner'); setBrewer((data) => ({ ...data, [currentLanguage]: response.data.items[0] as BrewerType, })); }); - }, [language, brewerSlug]); + }, [language, brewerSlug, pathname, navigate]); const brewerData = brewer[language || defaultLanguage]!; diff --git a/src/Pages/Cafes.tsx b/src/Pages/Cafes.tsx index 99d48c8a..c39ce477 100644 --- a/src/Pages/Cafes.tsx +++ b/src/Pages/Cafes.tsx @@ -8,10 +8,10 @@ import { ILanguageObjectWithArray, initLanguageCodeObjectWithArray, } from '../Utilities/LanguageCodes'; -import { Cafe } from '../Models/cafe'; import { useIntl } from 'react-intl'; -import { projectModel } from '../Models/_project'; import { CafeModel } from '../ViewModels/CafeModel'; +import { Cafe } from '../Models/content-types/cafe'; +import { contentTypes } from '../Models/project/contentTypes'; const Cafes: React.FC = () => { const { formatMessage, locale: language } = useIntl(); @@ -23,7 +23,7 @@ const Cafes: React.FC = () => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.cafe.codename) + .type(contentTypes.cafe.codename) .orderByDescending('system.name'); if (language) { diff --git a/src/Pages/Coffee.tsx b/src/Pages/Coffee.tsx index 0b9985aa..6fe18c16 100644 --- a/src/Pages/Coffee.tsx +++ b/src/Pages/Coffee.tsx @@ -8,21 +8,24 @@ import { defaultLanguage, initLanguageCodeObject, } from '../Utilities/LanguageCodes'; -import { useParams } from 'react-router-dom'; +import { useLocation, useNavigate, useParams } from 'react-router-dom'; import { useIntl } from 'react-intl'; -import { Coffee as CoffeeType } from '../Models/coffee'; -import { projectModel } from '../Models/_project'; +import { Coffee as CoffeeType } from '../Models/content-types/coffee'; +import { contentTypes } from '../Models/project/contentTypes'; +import { resolveChangeLanguageLink } from '../Utilities/LanugageLink'; const Coffee: React.FC = () => { const [coffee, setCoffee] = useState(initLanguageCodeObject()); const { coffeeSlug } = useParams(); const { locale: language, formatMessage } = useIntl(); + const navigate = useNavigate(); + const { pathname } = useLocation(); useEffect(() => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.coffee.codename) + .type(contentTypes.coffee.codename) .equalsFilter('elements.url_pattern', coffeeSlug!!); if (language) { @@ -32,13 +35,23 @@ const Coffee: React.FC = () => { query.toPromise().then((response) => { const currentLanguage = language || defaultLanguage; + if (response.data.items[0].system.language !== language) { + navigate( + resolveChangeLanguageLink( + pathname, + response.data.items[0].system.language + ), + { replace: true } + ); + } + spinnerService.hide('apiSpinner'); setCoffee((data) => ({ ...data, [currentLanguage]: response.data.items[0] as CoffeeType, })); }); - }, [language, coffeeSlug]); + }, [language, coffeeSlug, pathname, navigate]); const coffeeData = coffee[language || defaultLanguage]; diff --git a/src/Pages/Contacts.tsx b/src/Pages/Contacts.tsx index d32dfdf3..db07ba9c 100644 --- a/src/Pages/Contacts.tsx +++ b/src/Pages/Contacts.tsx @@ -7,9 +7,9 @@ import { defaultLanguage, initLanguageCodeObjectWithArray, } from '../Utilities/LanguageCodes'; -import { Cafe } from '../Models/cafe'; import { useIntl } from 'react-intl'; -import { projectModel } from '../Models/_project'; +import { Cafe } from '../Models/content-types/cafe'; +import { contentTypes } from '../Models/project/contentTypes'; const Contacts: React.FC = () => { const { locale: language, formatMessage } = useIntl(); @@ -21,7 +21,7 @@ const Contacts: React.FC = () => { spinnerService.show('apiSpinner'); const query = Client.items() - .type(projectModel.contentTypes.cafe.codename) + .type(contentTypes.cafe.codename) .equalsFilter('elements.country', 'USA') .orderByDescending('system.name'); diff --git a/src/Pages/Home.tsx b/src/Pages/Home.tsx index b45fee47..93f5867b 100644 --- a/src/Pages/Home.tsx +++ b/src/Pages/Home.tsx @@ -14,8 +14,8 @@ import { initLanguageCodeObject, } from '../Utilities/LanguageCodes'; import { useIntl } from 'react-intl'; -import { Home as HomeType } from '../Models/home'; -import { projectModel } from '../Models/_project'; +import { Home as HomeType } from '../Models/content-types/home'; +import { contentTypes } from '../Models/project/contentTypes'; const Home: React.FC = () => { const { locale: language, formatMessage } = useIntl(); @@ -24,9 +24,7 @@ const Home: React.FC = () => { useEffect(() => { spinnerService.show('apiSpinner'); - const query = Client.items().type( - projectModel.contentTypes.home.codename - ); + const query = Client.items().type(contentTypes.home.codename); if (language) { query.languageParameter(language); } diff --git a/src/Utilities/CafeListing.ts b/src/Utilities/CafeListing.ts index dd856154..41607c06 100644 --- a/src/Utilities/CafeListing.ts +++ b/src/Utilities/CafeListing.ts @@ -1,4 +1,4 @@ -import { Cafe } from '../Models/cafe'; +import { Cafe } from '../Models/content-types/cafe'; import { CafeModel } from '../ViewModels/CafeModel'; const createCafeModel = (cafe: Cafe): CafeModel => { diff --git a/src/Utilities/CheckboxFilter.ts b/src/Utilities/CheckboxFilter.ts index f31f1277..d40b7d65 100644 --- a/src/Utilities/CheckboxFilter.ts +++ b/src/Utilities/CheckboxFilter.ts @@ -1,4 +1,4 @@ -import { IContentItem, IContentItemElements } from '@kentico/kontent-delivery'; +import { IContentItem, IContentItemElements } from '@kontent-ai/delivery-sdk'; const matchesTaxonomy = ( item: IContentItem, diff --git a/src/Utilities/LanguageCodes.ts b/src/Utilities/LanguageCodes.ts index 4a0c12c2..249e2b97 100644 --- a/src/Utilities/LanguageCodes.ts +++ b/src/Utilities/LanguageCodes.ts @@ -1,4 +1,4 @@ -import { IContentItem } from '@kentico/kontent-delivery'; +import { IContentItem } from '@kontent-ai/delivery-sdk'; const languageCodes = [ 'en-US', // default languages diff --git a/src/Utilities/LanugageLink.ts b/src/Utilities/LanugageLink.ts new file mode 100644 index 00000000..062e2c79 --- /dev/null +++ b/src/Utilities/LanugageLink.ts @@ -0,0 +1,8 @@ +export function resolveChangeLanguageLink( + path: string, + language: string +): string { + const pathArray = path.split('/'); + pathArray[1] = language.toLowerCase(); + return pathArray.join('/'); +} diff --git a/src/Utilities/SelectedProject.ts b/src/Utilities/SelectedProject.ts index 108f98bc..d7f41360 100644 --- a/src/Utilities/SelectedProject.ts +++ b/src/Utilities/SelectedProject.ts @@ -3,7 +3,7 @@ import { Contracts, IDeliveryNetworkResponse, Responses, -} from '@kentico/kontent-delivery'; +} from '@kontent-ai/delivery-sdk'; const defaultProjectId = '975bf280-fd91-488c-994c-2f04416e5ee3'; diff --git a/src/Utilities/StoreListing.tsx b/src/Utilities/StoreListing.tsx index 32497702..fd81641b 100644 --- a/src/Utilities/StoreListing.tsx +++ b/src/Utilities/StoreListing.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Elements } from '@kentico/kontent-delivery'; +import { Elements } from '@kontent-ai/delivery-sdk'; const formatPrice = (price: number, language: string): string => { return price.toLocaleString(language, { diff --git a/src/index.css b/src/index.css index 92afe092..0998863b 100644 --- a/src/index.css +++ b/src/index.css @@ -1,30 +1,23 @@ @font-face { - font-family: 'PT Serif'; - font-style: normal; - font-weight: 700; - src: local('PT Serif Bold'), local('PTSerif-Bold'), - url(./Fonts/PTSerif-Bold.woff) format('woff'); -} -@font-face { - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-style: normal; font-weight: 300; - src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), - url(./Fonts/SourceSansPro-Light.woff) format('woff'); + src: local('Work Sans Regular'), local('WorkSans-Regular'), + url(./Fonts/WorkSans-Regular.woff2) format('woff'); } @font-face { - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-style: normal; font-weight: 400; - src: local('Source Sans Pro'), local('SourceSansPro-Regular'), - url(./Fonts/SourceSansPro-Regular.woff) format('woff'); + src: local('Work Sans Medium'), local('WorkSans-Medium'), + url(./Fonts/WorkSans-Medium.woff2) format('woff'); } @font-face { - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-style: normal; font-weight: 700; - src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), - url(./Fonts/SourceSansPro-Bold.woff) format('woff'); + src: local('Work Sans Bold'), local('WorkSans-Bold'), + url(./Fonts/WorkSans-Bold.woff2) format('woff'); } @font-face { font-family: 'Core-icons'; @@ -46,7 +39,7 @@ body { margin: 0; } .application-content { - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; font-weight: 400; font-size: 16px; line-height: 1.4; @@ -304,7 +297,7 @@ body { .application-content .h1, .application-content .h2, .application-content .h3 { - font-family: 'PT Serif', serif; + font-family: 'Work Sans', serif; line-height: 1.4; color: inherit; margin-bottom: 0.7rem; @@ -323,7 +316,7 @@ body { } .application-content h4, .application-content .h4 { - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; font-weight: 700; font-size: 1.375rem; margin-bottom: 0.7rem; @@ -332,7 +325,7 @@ body { } .application-content h5, .application-content .h5 { - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; font-weight: 300; font-size: 1.375rem; margin-bottom: 0.7rem; @@ -344,7 +337,7 @@ body { margin-bottom: 0.7rem; } .application-content .lead-paragraph { - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; font-weight: 300; margin-bottom: 20px; font-size: 1.375rem; @@ -1411,7 +1404,7 @@ body { text-align: center; font-size: 1rem; font-weight: normal; - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; z-index: 1; position: absolute; display: block; @@ -1427,7 +1420,7 @@ body { display: block; float: right !important; margin-left: 1rem; - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-style: normal; font-weight: 400; border: 2px solid #08768c; @@ -1474,7 +1467,7 @@ body { text-align: center; font-size: 1rem; font-weight: normal; - font-family: 'Source Sans Pro', sans-serif; + font-family: 'Work Sans', sans-serif; } .application-content .featured-product .product-tile { margin: 0 -2px -2px 0; @@ -1569,7 +1562,7 @@ body { color: #bbbbbb; } .application-content .product-detail .option-category-name { - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-size: 1.375rem; font-weight: 400; } @@ -1594,7 +1587,7 @@ body { padding: 0; text-align: left; font-weight: bold; - font-family: 'PT Serif', serif; + font-family: 'Work Sans', serif; line-height: 1.4; color: inherit; font-size: 1.375rem; @@ -1677,7 +1670,7 @@ body { display: block; float: left !important; margin-left: 1rem; - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-style: normal; font-weight: 400; } @@ -5615,7 +5608,7 @@ body { display: inline-block; font-size: 1rem; text-transform: uppercase; - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-weight: normal; } @media (max-width: 1111px) { @@ -5723,7 +5716,7 @@ body { text-transform: uppercase; color: #ffffff; background-color: #b24143; - font-family: 'Source Sans Pro'; + font-family: 'Work Sans'; font-weight: normal; font-size: 1.375rem; padding: 1rem; diff --git a/src/index.tsx b/src/index.tsx index b83e739f..b45cf02c 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -14,7 +14,8 @@ import languageCodes, { englishCode } from './Utilities/LanguageCodes'; import Cookies from 'universal-cookie'; const cookies = new Cookies(document.cookie); -const lang = cookies.get('lang') ?? englishCode; +const cookiesLang = cookies.get('lang'); +const lang = languageCodes.includes(cookiesLang) ? cookiesLang : englishCode; ReactDOM.render(