├── .env.example ├── .eslintrc.js ├── .gitignore ├── .prettierignore ├── .prettierrc.js ├── .storybook ├── main.ts └── preview.tsx ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── cli-run ├── .env ├── README.md ├── jest.config.ts ├── metadata.txt ├── package-lock.json ├── package.json ├── src │ ├── commands │ │ ├── run.ts │ │ └── setupUniform │ │ │ ├── api.ts │ │ │ ├── gql.ts │ │ │ ├── index.ts │ │ │ └── utils.ts │ ├── constants.ts │ ├── customThemes.ts │ ├── index.ts │ ├── informationCollector.ts │ ├── mappers.ts │ ├── promts.ts │ ├── types │ │ └── index.d.ts │ ├── uniform │ │ └── index.ts │ └── utils │ │ └── index.ts └── tsconfig.json ├── cli-scaffold ├── README.md ├── jest.config.ts ├── package-lock.json ├── package.json ├── src │ ├── index.ts │ ├── parameterHandlers.ts │ ├── promts.ts │ ├── steps │ │ ├── index.ts │ │ ├── indexComponentFile.ts │ │ ├── reactComponentFile.ts │ │ └── registerComponentFile.ts │ ├── types.ts │ └── utils │ │ └── index.ts └── tsconfig.json ├── content ├── asset │ ├── 0adb96e6-fb1e-40b5-a352-14ce73091bef.yaml │ ├── 1ab60b6e-b99b-4164-b063-d392d5afe424.yaml │ ├── 1e729c12-25c9-46a2-aeb2-33ce3e47fecb.yaml │ ├── 28b936d7-4c98-414d-b1fa-d3594ed08082.yaml │ ├── 28ee8793-25b5-4f08-8edd-7accaaf4a9a5.yaml │ ├── 2ae2e48c-85fe-43c8-a407-7a6a65c4c5a3.yaml │ ├── 2b177d20-9e27-4d48-ac55-978474111c59.yaml │ ├── 2c99b69f-1506-43ea-8d33-67fee8f9fe8f.yaml │ ├── 2f846de5-74be-41a3-a181-a7fc7b7c38ca.yaml │ ├── 321b5ac1-0cce-435d-baff-bb00838a832a.yaml │ ├── 3c1767ca-1851-4f4f-b8dc-4269d5ea6328.yaml │ ├── 3c9460c0-d3b3-41dd-a6f9-f20f87b3ecae.yaml │ ├── 3ec3f242-fbd9-4886-9192-d57d24168497.yaml │ ├── 3fc503ba-876c-4f9a-bb7e-2161de64ef87.yaml │ ├── 4050736c-421b-4910-8595-c914b4693be6.yaml │ ├── 49dc166e-07c5-4a77-ab0c-61ee94238b2c.yaml │ ├── 4d79494d-e979-4be6-86a2-b99ef311a6fc.yaml │ ├── 51704f77-248b-4ab7-915b-4bb43436f74d.yaml │ ├── 528fb354-9aba-4a4f-93f5-db989379bf0a.yaml │ ├── 52d383d4-1db8-4349-aff4-75182d6f6361.yaml │ ├── 541df06f-1366-4874-9ab3-54e435ac68f8.yaml │ ├── 56e6a0a9-e384-4f73-b172-f2b742406566.yaml │ ├── 5acfc75d-92a2-421c-9674-dab48282be2e.yaml │ ├── 5bbda19f-8d8a-4064-ab72-8af4e4401e51.yaml │ ├── 5eee1d86-265f-41e4-820c-125535f3d7e8.yaml │ ├── 5f4c3fa1-14d2-467e-a521-11901beaa575.yaml │ ├── 68b4d970-8062-4a91-965b-97d2587811fc.yaml │ ├── 6e4df38e-7e0f-4f10-a490-d91ebc6ef84a.yaml │ ├── 745700bc-f7ef-4130-a2d1-256b828b1293.yaml │ ├── 77f67343-7bcc-412a-bd21-fc33636f3764.yaml │ ├── 88505c93-6df6-4dbd-8ecb-d178f7f2341f.yaml │ ├── 89401cb5-7432-4abb-ab3d-0c58a98e7737.yaml │ ├── 8f48f9c0-83d7-4e1c-84c7-b4bac24ab9ee.yaml │ ├── 92ff34cd-1810-45fd-bab6-cc2d583eba9d.yaml │ ├── 98f4cb70-ea7b-4aa0-9224-38a9c35e5056.yaml │ ├── a9c96894-0f74-4b1c-89c4-4a9930c919dc.yaml │ ├── b0f5e4f1-46a0-4a04-b74a-5fdbfb38bb74.yaml │ ├── b2332a2e-dea3-4d16-9f67-e709bb5c98b8.yaml │ ├── b4d87558-d3ed-460e-aaf3-77273ab9606f.yaml │ ├── b7160380-470a-4888-a4fe-0b448e11a1a9.yaml │ ├── becb194e-5329-4107-be3b-8cb981f07fa2.yaml │ ├── c05ce5fb-7c0b-4dcf-9324-6bfb1deeb2a0.yaml │ ├── c322a505-d568-403b-9396-1546bc9a880d.yaml │ ├── c3a2c7ff-2b35-4919-aa88-29b7e83d7aea.yaml │ ├── c777a60e-b29e-4f94-a56c-307d6d46ccee.yaml │ ├── cb119c03-2d3f-4ff9-9a8f-6ebbac121849.yaml │ ├── ce673968-2de3-4c59-bd28-a71e2920a2f0.yaml │ ├── cec6bce4-01f4-4159-a780-ab35e2411cb8.yaml │ ├── cf82c484-3f0b-4cea-8249-ed99b6757ae5.yaml │ ├── d094a8b2-2993-4ec5-8665-60902503a848.yaml │ ├── d1f5b6a8-be31-4196-bec9-f2c2e57598c3.yaml │ ├── d24ae6cc-a180-449d-9a0e-255e851f8fd8.yaml │ ├── d8cb98eb-f3d9-4ee8-a378-b4592e91c15d.yaml │ ├── db9ddb53-7047-4889-b5cb-31b7319b8de7.yaml │ ├── e03b3b2f-18dc-468b-b551-559b59e64062.yaml │ ├── e3963aca-5918-41b5-9ab7-db6785f7bbe3.yaml │ ├── e44a5f81-6c1d-4d91-af33-00b487613ecf.yaml │ ├── ebb86899-7d34-4261-a085-dbf50629bfb9.yaml │ ├── eed5aadc-e335-4f1b-a9c5-dec180489cf4.yaml │ ├── f02a73de-bab2-48da-a138-7463c1f82257.yaml │ ├── f6e7a90a-7050-42c2-8f73-d868c6fb5feb.yaml │ ├── f85a8f0c-66f7-417e-87cc-efb2b6aac498.yaml │ └── fb5c01d0-bfe4-4c1d-94cb-419f0580fa35.yaml ├── category │ ├── 19f9419d-14da-496d-a4ac-eec5010e13d7.yaml │ ├── 1bf9504a-07c4-4873-bbca-f235a6da182b.yaml │ ├── 2da8c924-14d5-470b-9fe4-1e56521551e5.yaml │ ├── 31fcffb0-aead-4256-8e49-4d50cc28aa29.yaml │ ├── 94a7a423-8c09-4264-8495-c562c17d811e.yaml │ └── ea001653-1f96-4f07-9187-a1626a4965e5.yaml ├── component │ ├── accordion.yaml │ ├── accordionItem.yaml │ ├── addToCart.yaml │ ├── advancedContainer.yaml │ ├── banner.yaml │ ├── box.yaml │ ├── breadcrumbs.yaml │ ├── button.yaml │ ├── callToAction.yaml │ ├── card.yaml │ ├── cardBlock.yaml │ ├── carousel.yaml │ ├── container.yaml │ ├── content.yaml │ ├── countdown.yaml │ ├── divider.yaml │ ├── feature.yaml │ ├── featuredCallout.yaml │ ├── footer.yaml │ ├── grid.yaml │ ├── gridItem.yaml │ ├── header.yaml │ ├── hero.yaml │ ├── heroContainer.yaml │ ├── hotspot.yaml │ ├── hotspots.yaml │ ├── iconLink.yaml │ ├── image.yaml │ ├── imageGallery.yaml │ ├── modal.yaml │ ├── navigationGroup.yaml │ ├── navigationLink.yaml │ ├── navigationMenu.yaml │ ├── navigationSection.yaml │ ├── page.yaml │ ├── price.yaml │ ├── productInfo.yaml │ ├── review.yaml │ ├── richText.yaml │ ├── spacer.yaml │ ├── tab.yaml │ ├── table.yaml │ ├── tableDataCell.yaml │ ├── tableHeaderCell.yaml │ ├── tableRow.yaml │ ├── tabs.yaml │ ├── testimonial.yaml │ ├── text.yaml │ └── video.yaml ├── componentPattern │ ├── 10a5245c-fb64-419d-bdc8-89f1abec3ecd.yaml │ ├── 1620d49a-2e3a-4957-875d-8ff97dbd4d55.yaml │ ├── 16e33e2b-159b-4fdf-9b76-861ee66fed00.yaml │ ├── 283447b2-9b21-45ee-8336-8cf0e99b49b4.yaml │ ├── 319639e9-4bac-4fb3-8f0b-19088c969fcb.yaml │ ├── 3db27e9c-6008-4d18-92c8-c32ee0513ec6.yaml │ ├── 5b8948bf-c097-4600-9481-696dc8df3eb7.yaml │ ├── 6db7d5ba-6e46-44a4-9418-48e4f9437915.yaml │ ├── e244a7a9-309a-4fbf-ab85-c4c2eb4cf75e.yaml │ ├── e46c8336-acfd-43e8-ac59-8be8f4c33b7d.yaml │ ├── ef9f29a8-b972-4326-bf5b-1a00f2fa8e9b.yaml │ └── fea7255e-6ce0-4d94-9092-f39323ebbeee.yaml ├── composition │ ├── 18490a18-819f-4b53-a3e7-07fd12b30228.yaml │ ├── 19e7c1e9-b0c2-4ecc-a826-cf372e362735.yaml │ ├── 1dced7dd-66d4-428f-8ae2-fcfeb084027d.yaml │ ├── 2516f825-86ee-4e8a-a686-8ce31e49adb6.yaml │ ├── 2abca1c9-4c73-431f-a661-0b1bd3d7f49a.yaml │ ├── 2c4530ee-29f6-4497-9a96-4b51f3786241.yaml │ ├── 2e1bdedd-d37d-4230-97e2-f44913faaf2f.yaml │ ├── 42b0381e-8643-4aa4-a3b6-c49ab21344fd.yaml │ ├── 466dc82d-75e7-4e2f-b365-d6cc343befc0.yaml │ ├── 46ef2835-2989-4467-aad5-d3eacfe91a10.yaml │ ├── 50832ad7-a23f-4ffe-88df-8e5c391903d9.yaml │ ├── 552a8a72-6c47-4993-bc45-f0148ea79904.yaml │ ├── 6a9389b6-3495-4a08-b6d6-f0dce73e4606.yaml │ ├── 75fe2464-d7c9-4373-a65b-2f63768a3646.yaml │ ├── 80717902-05d3-49ac-8a8b-017b31074615.yaml │ ├── 846209ed-4842-41f9-a4ff-cda23cc871ca.yaml │ ├── 8ab12d2d-5504-45d3-b721-044b636e39c6.yaml │ ├── 8e0d242a-4ba6-45c5-a57a-e13f0b2cc193.yaml │ ├── 8fdcb37f-01a2-46ea-9e9e-2b8df0e7551c.yaml │ ├── 92392ca2-400b-46bb-8892-b775a150b124.yaml │ ├── a75ef1fe-ee25-4c7a-aff5-9a5e1d700a42.yaml │ ├── ada37414-0c0a-4a3f-9fde-7130fb3a39e2.yaml │ ├── bc3011ea-46a6-49eb-8aca-b1f432edccea.yaml │ ├── c88ff38b-1703-4c03-bdeb-17c1e3133202.yaml │ ├── cb29df8c-6573-44f4-ad0a-f037faa9f561.yaml │ ├── d7af4c54-9a0c-41af-9eda-4075a9e6dbec.yaml │ ├── ef7554a8-4580-4f6f-abe3-da87e2588d0b.yaml │ └── f932829e-a28d-447c-9905-ebdd46b3aceb.yaml ├── examples │ ├── category │ │ ├── 9de490d5-96c4-4808-b51f-eadc2ee12667.yaml │ │ └── d9790aaa-062a-4dd9-ae5e-30b3222a041c.yaml │ ├── component │ │ ├── algolia-hit.yaml │ │ ├── algolia-hitProduct.yaml │ │ ├── algolia-hits.yaml │ │ ├── algolia-index.yaml │ │ ├── algolia-instantSearch.yaml │ │ ├── algolia-pagination.yaml │ │ ├── algolia-refinementList.yaml │ │ ├── algolia-searchBox.yaml │ │ ├── coveo-breadcrumbManager.yaml │ │ ├── coveo-facet.yaml │ │ ├── coveo-pager.yaml │ │ ├── coveo-querySummary.yaml │ │ ├── coveo-resultList.yaml │ │ ├── coveo-resultListItem.yaml │ │ ├── coveo-searchBox.yaml │ │ ├── coveo-searchProvider.yaml │ │ ├── coveo-sort.yaml │ │ ├── grid.yaml │ │ ├── gridItem.yaml │ │ └── page.yaml │ ├── componentPattern │ │ ├── 165a59c7-84fc-4401-b5d0-ac54e52be1d2.yaml │ │ ├── cd8d3791-4aa9-4a85-aa4b-1ab1242d7b07.yaml │ │ └── e46c8336-acfd-43e8-ac59-8be8f4c33b7d.yaml │ ├── composition │ │ ├── 1e418671-a585-4924-a25c-7a659a42975e.yaml │ │ ├── 8928055b-ae74-472d-a024-bfcbe6f4f8ca.yaml │ │ └── cfc87ad7-157c-42a8-9cf4-db1d0af05508.yaml │ ├── previewUrl │ │ └── 8ee76987-3723-41dd-bd7b-c94867d24ff8.yaml │ └── projectMapNode │ │ ├── algolia-search-engine_0bd42e92-5f3b-49cc-964d-77b8291af16a.yaml │ │ ├── coveo-search-engine_61eb34d5-f2b4-4169-8d29-b316a89487be.yaml │ │ └── examples_b8994dfb-6a7e-4a10-a1af-e8dcf520a758.yaml ├── files │ ├── L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9HRWkzVnVFNFRCLWR1SDlKcko4VHhnLWdlYXIuc3Zn.svg │ ├── L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9VXzFZVHBtSVJIbVdmZzdNMEhVeC1nLWNsb2NrLnN2Zw==.svg │ ├── L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9hWWVvLUJCTlNnS0poeWZzNDRFWFRBLW1vdW50LnN2Zw==.svg │ ├── L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9jZUFaTDE1OVJKYWh6Uk5aeWZ4OFlRLW5leHQuc3Zn.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS80TzVKOGhZaVQzaW9yXzRzdUc2WHhBLWljb25faGVyby5zdmc=.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS84MUY1N2Z1UlIzMmdqZUVYMFJNY3pRLWVzcHJlc3NvR1BUX2ltYQ==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS92NTRVSHZJaVN2U1JXQlRPOFVjNG9RLWljb25fY2FyZGJsb2NrXw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94a0Z5Z2pWM1N5eTJVTllqRkNvUm9RLWJsb2dfaGVhZGVyX2NtYw==.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94eTVVa0E2dlRmZUg3ZmQ3SG5qMGZBLXBlcnNvbl9waG90b18xLg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9BWm90Z2wwbFNSNmdJLUtKUE5QNW93LWljb25fY29udGVudC5zdg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9CLWNBOENyUlRzRy1XbXAyXzVxZGtRLWljb25fZHJpdmUuc3Zn.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9HV3dwcTQyQVF5R2NEcm1DUnJUUXR3LWNlcnZlbGxvX2RpX2NhZg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9Id1haY2IwWFFXVzhXMTdlVU5vNmxRLXN0b3J5Ym9va19pY29uLg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9KQTdkQnBJQlJSV3RjM0s2QmQteXNRLWZhdmljb24ucG5n.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9KT2N6OHJDZlNFU3dzYnF2NUtXZjdnLWljb25fZmVhdHVyZWRfYw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9MTmVHR3FVa1J6U3Rub0c2V2ZFcGV3LWljb25faW1hZ2Vfdy5zdg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9MYTAwd3U1VVJLdWQySkVmcHl1Wk53LWdpdGh1Yl9pY29uLnN2Zw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9MelBBamNVR1FTMjNSQVR1c25rNGdnLWljb25faGVyb193LnN2Zw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9NSDVBSkdyY1I1ZUZneE5jNUVVSkhBLXVuaWZvcm1fY3NrX2xvZw==.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9NSVdzRG9QWFN3LXpGWTFfVGRxRF9nLWljb25faW1wcm92ZS5zdg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9OcVhnWHVfVlRVSzdGMzJ6TW5ZSml3LWljb25fYWNjb3JkaW9uLg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9PaXZBOXlfZFJfNnQ1UlFmUWk3OWpnLWVzcHJlc3NvR1BUX2ltYQ==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9QNjZleEpBU1JmU0RzeEpwYzlIbkd3LXdlYmluYXJfcG9zdGVyLg==.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9RSFlTVkloM1JiLWxUWGx1c0JOdlBRLXVuaWZvcm1fbG9nb19ibA==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9SRWVBeGxKc1FTQ194b09iWnRqb1RnLWNlcnZlbGxvX2RpX2NhZg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9UeUlmekFJN1FXLXRhRXdfeU5saVB3LWljb25fQ1RBX3cuc3Zn.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9VLXNTM3kyUlMtUzRVMWkzcjlEM3lnLWljb25fY2FyZGJsb2NrLg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9VcTFjSHFVa1EtS0hrV2xDTW83bTZ3LWhlcm9fcmVjdGFuZ2xlLg==.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9YYzhtYy1nV1RfdU5RNlpYREY2bFJRLWljb25fQ1RBLnN2Zw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9ZZm9VRUtMYVJPdUx5SUJaNC1wX0NRLXBlcnNvbl9waG90b18zLg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9iRFVKRjlyRlJiQ1ZIQkJTV0g3MER3LWVzcHJlc3NvR1BUX2ltYQ==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9lNDlGQlM3aVF3LVhRYmc2aXNkbEJnLWN1cF9kZWxpY2lvdXNfYw==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9lYXdXWFhxdVNvLXEwYjZpNm1ibjlBLWljb25faW1hZ2Uuc3Zn.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9mTzNHa2pzZ1NXLTMzTE94eDZPNEp3LWdpdGh1Yl9pY29uX2JsYQ==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9nYnF0dmpsMFNIU0tacG1iNzBqNmlBLXBlcnNvbl9waG90b18yLg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9naWVPMkZlOFRzLW1BaWRlX2lPRVhBLWNlcnZlbGxvX2RpX2NhZg==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oMmhrc0t4M1N2LXBVbEFlTkJiQkVnLWNvcmVsX0RFU0lHTkVSXw==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oNmw2cjZXb1RKR3ZQeFR4Q2FrYzRRLWVzcHJlc3NvR1BUX2ltYQ==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9qMlJ1Uzg0SlNFMnlzek9CQkJzOUpnLXNwb3Quc3Zn.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9rMV9WWHo0Y1NvLXg3ZG5INHFfdDJnLXJlY3RhbmdsZS53ZWJw.webp │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9sckJyWkJaUFJ5NlplNHdaektZaTF3LWljb25fdW5kZXJzdGFuZA==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9tSzFWTXVLRVJQR0kzZ0ZRaDNvdzdRLWNvb2tpZV9pY29uLnN2Zw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9vUlI5eTMzb1J4S1k2dUJTZHZ5cGh3LWhvdHNwb3RzLW1hcC5wbg==.png │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9wQ0xSb3dBdVFhLUtvR1ZtbjlaS0tnLWVzcHJlc3NvR1BUX2ltYQ==.jpg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9yQ19wcUVJalRiQ0VZMEExaHNTRndRLWljb25fdHdvY29sdW1uLg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9yQzZOMnhxdVI0MjRqUVlUcHJxSm5BLWljb25fY29udGVudF93Lg==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9zWnYtNzJqSFF1U1EtUjY2LUxmNG9RLWljb25fYWNjb3JkaW9uXw==.svg │ ├── L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9zdGRqaGp6QVNmMnRIdk5IZDRfMzRRLWljb25fZmVhdHVyZWRfYw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy80RjFVMVh1alFhdWl5MWJHOEM0bVhBLWFjY29yZGlvbi12ZXJ0aQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy82ZUNLUnVQOVNDdWZuZEIzUS1HRzB3LWltYWdlLXBpY3R1cmUtcw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy84LW5jMDJEcFJ1VzVHRlItRklVX1NRLWFuYWx5dGljcy1zdmdyZQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy8xbDVqMUlrYVJheVpRVHJmWHR5Z0d3LWFuYWx5dGljcy1zdmdyZQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy93Y3FrQ09OOFJfU1BtUFhJRGFTdkF3LWFuYWx5dGljcy1oYW5kcw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy95RlJ3OFprUlRraU9Qc1pTUW0wR2p3LWJsb2NrLXN2Z3JlcG8tYw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9BZ3dDLVAwRVJacXp4T2xDZEh2WTZ3LW5ld3MtcGFwZXItc3Zncg==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9CRXd0bzdhRVJ5LTVPQnduNjJzQWF3LWltYWdlLXN2Z3JlcG8tYw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9JNVRQekpZSVF6Nnh5bzlYYlJuMmlnLWNvbnRlbnQtaW5saW5lLQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9LZTE2aVNVTlREdUtnSkw4RVlwSVhRLWFjdGlvbi1zb2xpZC1zdg==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9MVlZZV25nSlFraWoxekRHTjU5UUlnLXRvdWNoLXByZXNzLWNsaQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9QaVJVV0ZrLVJJNkM3dHMtYzZrbDdRLWJsb2NrLXN2Z3JlcG8tYw==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9RTWI2NnFCUFJMUzRwQVVYWmJta21BLWNvbnRhaW5lci12b2x1bQ==.svg │ ├── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9qQVhzbE5nN1RaT1NtV0NaZXJGOGh3LWhvbWUtc21pbGUtc3Zncg==.svg │ └── L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9zdGM0Ylg3a1FyNkhSbUVVNDZNZzdRLWltYWdlLXN2Z3JlcG8tYw==.svg ├── previewUrl │ ├── 1f0b4abe-e571-4a17-a926-49fdf0345df9.yaml │ └── 8ee76987-3723-41dd-bd7b-c94867d24ff8.yaml ├── previewViewport │ ├── 1d90aea5-cb6b-4b14-b6ea-101ad29c44a1.yaml │ ├── 6ab0c64e-fed7-468c-aa48-3fb9ac9064a5.yaml │ └── edf75243-3e46-4d27-810b-abd23e5c65dd.yaml ├── projectMapDefinition │ └── 40535f31-cdc1-4ac3-bb4d-2a008493b431.yaml └── projectMapNode │ ├── _5a9c6cac-a0cd-43ca-b2df-8706b1f4ba81.yaml │ ├── accordions_626584c7-ec70-45eb-80ee-a4cda36d0a58.yaml │ ├── atomic-components_cddada86-6f75-46ad-a520-d2a39f4bf6fa.yaml │ ├── banners_7a7b2f31-988c-47b2-abd9-e601b0ede3d9.yaml │ ├── breadcrumbs_aeed197a-ba51-497f-8f3e-92dc601918f2.yaml │ ├── calls-to-action_408d4a7c-de15-4029-9521-05df3f20bdfc.yaml │ ├── card-blocks_88ede0b7-bb7c-4d6b-b3f8-10b545bd986b.yaml │ ├── carousels_fcebf9c9-e734-4e7b-94e5-be922d36de19.yaml │ ├── components_cab3997c-e1bb-4846-be31-9afeae37c5d4.yaml │ ├── content-blocks_435b7a20-cf5a-4e2a-a1ce-f674fe7ee044.yaml │ ├── countdowns_c7379e60-ab85-4681-942b-9ed8c8622b53.yaml │ ├── featured-callouts_97c2b0b3-66d9-4ecd-88dd-36bf5ce8144a.yaml │ ├── headers-topnav_e0558074-87bb-41c9-962d-814853d8f829.yaml │ ├── heroes_fc8a9187-2ae6-4a07-b6e4-6a81b97b0779.yaml │ ├── hotspots_36dbc81a-a455-4d5b-8b98-16fb4bad234f.yaml │ ├── image-gallery_ff09deec-49ab-4dee-8431-e9bf6e9a5d37.yaml │ ├── images_ef6da4d5-cb59-4d0a-91b5-1c8021bbb786.yaml │ ├── layouts-container_a99b4044-8f9a-48fc-9f58-6c2fe4fb7534.yaml │ ├── modals_db6f4ac5-c28f-4305-a0d6-81e8db74e61c.yaml │ ├── pdp_f28599b9-2a0e-4f69-be98-9c32278237d4.yaml │ ├── product-info_c6b270b9-bb82-4d6c-a40c-66cd80939c13.yaml │ ├── reviews_d42bee8b-afda-49e3-8691-54ce2f39f809.yaml │ ├── rich-texts_00a9c22c-831d-4a04-ac70-d9313cf74f5c.yaml │ ├── spacers-dividers_8f4c8afc-f1a0-4443-855d-e5499eb9a91b.yaml │ ├── tables_5c7e7bf1-e932-4cde-9ca6-414e85aef779.yaml │ ├── tabs_3c6dc27e-75d9-45ae-890f-dcd15cfca35a.yaml │ ├── testimonials_6e8d556b-b9b7-4f21-a533-bcb2ef9d5c76.yaml │ └── videos_98bc7d92-11bc-491b-9b1c-391760a3c875.yaml ├── info.txt ├── next-env.d.ts ├── next.config.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── badge.png ├── favicon.ico ├── logo.png └── robots.txt ├── src ├── canvas │ ├── Accordion │ │ ├── Accordion.tsx │ │ └── index.ts │ ├── AccordionItem │ │ ├── AccordionItem.tsx │ │ ├── decorator.tsx │ │ └── index.ts │ ├── AddToCart │ │ ├── AddToCart.tsx │ │ └── index.ts │ ├── Banner │ │ ├── Banner.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Breadcrumbs │ │ ├── Breadcrumbs.tsx │ │ ├── helpers.tsx │ │ └── index.ts │ ├── Button │ │ ├── Button.tsx │ │ └── index.ts │ ├── CallToAction │ │ ├── CallToAction.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Card │ │ ├── Card.tsx │ │ ├── animation.tsx │ │ ├── decorator.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── CardBlock │ │ ├── CardBlock.tsx │ │ ├── CardBlockCarousel.tsx │ │ ├── helpers.ts │ │ └── index.tsx │ ├── Carousel │ │ ├── Carousel.tsx │ │ ├── CarouselInner.tsx │ │ └── index.ts │ ├── ContentBlock │ │ ├── ContentBlock.tsx │ │ └── index.ts │ ├── Countdown │ │ ├── Countdown.tsx │ │ ├── CountdownEntry.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Divider │ │ ├── Divider.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── EnrichmentSetter │ │ ├── EnrichmentSetter.tsx │ │ └── index.ts │ ├── Feature │ │ ├── Feature.tsx │ │ ├── decorator.tsx │ │ └── index.ts │ ├── FeaturedCallout │ │ ├── FeaturedCallout.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Hero │ │ ├── atoms.tsx │ │ └── index.tsx │ ├── HeroContainer │ │ └── index.tsx │ ├── Hotspots │ │ ├── Hotspots.tsx │ │ └── index.ts │ ├── Image │ │ ├── Image.tsx │ │ └── index.ts │ ├── ImageGallery │ │ └── index.ts │ ├── Modal │ │ ├── Modal.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Page │ │ ├── Page.tsx │ │ └── index.ts │ ├── Price │ │ ├── Price.tsx │ │ └── index.ts │ ├── ProductDetails │ │ ├── ProductDetails.tsx │ │ └── index.ts │ ├── ProductInfo │ │ ├── ProductInfo.tsx │ │ └── index.ts │ ├── Review │ │ ├── MultiColumnReview.tsx │ │ ├── Review.tsx │ │ └── index.tsx │ ├── Spacer │ │ ├── Spacer.tsx │ │ └── index.ts │ ├── Tab │ │ ├── Tab.tsx │ │ ├── TabTitle.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Table │ │ ├── Table.tsx │ │ ├── TableDataCell.tsx │ │ ├── TableHeaderCell.tsx │ │ ├── TableRow.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Tabs │ │ ├── Tabs.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── Testimonial │ │ ├── Testimonial.tsx │ │ └── index.ts │ ├── Video │ │ ├── PlayButton.tsx │ │ ├── Video.tsx │ │ └── index.ts │ ├── _atoms │ │ ├── Hotspot │ │ │ ├── Hotspot.tsx │ │ │ ├── Tooltip.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── RichText │ │ │ ├── RichText.tsx │ │ │ └── index.ts │ │ └── Text │ │ │ ├── Text.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ ├── _containers │ │ ├── AdvancedContainer │ │ │ ├── AdvancedContainer.tsx │ │ │ └── index.ts │ │ ├── Box │ │ │ ├── Box.tsx │ │ │ └── index.ts │ │ ├── Container │ │ │ ├── Container.tsx │ │ │ └── index.ts │ │ ├── Grid │ │ │ ├── Grid.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ └── GridItem │ │ │ ├── GridItem.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ ├── _navigation │ │ ├── Footer │ │ │ ├── Footer.tsx │ │ │ ├── decorator.tsx │ │ │ └── index.ts │ │ ├── Header │ │ │ ├── Header.tsx │ │ │ ├── MobileView.tsx │ │ │ ├── decorator.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── IconLink │ │ │ ├── IconLink.tsx │ │ │ └── index.ts │ │ ├── NavLink │ │ │ ├── FooterLink.tsx │ │ │ ├── HeaderLink.tsx │ │ │ ├── NavigationGroup.tsx │ │ │ ├── NavigationMenu.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ └── NavigationSection │ │ │ ├── NavigationSection.tsx │ │ │ └── index.ts │ └── index.ts ├── components │ ├── AnimatedContainer │ │ ├── AnimatedContainer.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── BaseAddToCart │ │ ├── BaseAddToCart.tsx │ │ └── index.ts │ ├── BaseHero │ │ ├── Hero.tsx │ │ ├── HeroBackgroundImage.tsx │ │ ├── HeroSideImage.tsx │ │ ├── HeroTwoColumns.tsx │ │ ├── animation.tsx │ │ ├── atoms.tsx │ │ ├── helpers.ts │ │ └── index.tsx │ ├── BaseImageGallery │ │ ├── BaseImageGallery.tsx │ │ └── index.ts │ ├── BasePage │ │ ├── BasePage.tsx │ │ ├── decorator.tsx │ │ └── index.ts │ ├── BaseProductInfo │ │ ├── BaseProductInfo.tsx │ │ ├── FeatureIcon.tsx │ │ ├── animation.tsx │ │ └── index.ts │ ├── BuildTimestamp │ │ ├── BuildTimestamp.tsx │ │ └── index.ts │ ├── Button │ │ ├── Button.tsx │ │ └── index.ts │ ├── CarouselButtons │ │ ├── CarouselButtons.tsx │ │ └── index.ts │ ├── Container │ │ ├── BaseContainer.tsx │ │ ├── Container.tsx │ │ ├── ScreenContainer.tsx │ │ ├── helpers.tsx │ │ └── index.ts │ ├── Decorators │ │ └── index.ts │ ├── Dropdown │ │ ├── Dropdown.tsx │ │ ├── DropdownOption.tsx │ │ └── index.ts │ ├── EmptyImagePlaceholder │ │ ├── EmptyImagePlaceholder.tsx │ │ └── index.ts │ ├── EmptyPlaceholder │ │ ├── EmptyPlaceholder.tsx │ │ └── index.ts │ ├── ErrorHandler │ │ ├── ErrorHandler.tsx │ │ └── index.ts │ ├── ErrorPropertyCallout │ │ ├── ErrorPropertyCallout.tsx │ │ └── index.ts │ ├── IconArrow │ │ ├── IconArrow.tsx │ │ └── index.ts │ ├── IconMinus │ │ ├── IconMinus.tsx │ │ └── index.ts │ ├── IconPlus │ │ ├── IconPlus.tsx │ │ └── index.ts │ ├── Image │ │ ├── Image.tsx │ │ └── index.ts │ ├── InformationContent │ │ ├── InformationContent.tsx │ │ └── index.ts │ ├── LinkItem │ │ ├── LinkItem.tsx │ │ └── index.ts │ ├── MobileMenuLayout │ │ ├── MobileMenuLayout.tsx │ │ └── index.ts │ ├── Playground │ │ ├── Playground.tsx │ │ └── index.ts │ ├── ProductQuantityItem │ │ ├── ProductQuantityItem.tsx │ │ └── index.ts │ ├── Rating │ │ ├── Rating.tsx │ │ ├── helpers.ts │ │ └── index.ts │ ├── ThemeProvider │ │ ├── ThemeProvider.tsx │ │ └── index.ts │ ├── UniformPreviewIcon │ │ ├── UniformPreviewIcon.tsx │ │ └── index.ts │ └── index.ts ├── context │ ├── ComponentStarterKitContext.tsx │ ├── createUniformContext.ts │ ├── index.ts │ └── locales.json ├── fonts │ └── index.ts ├── hocs │ ├── withErrorCallout.tsx │ └── withoutContainer.tsx ├── hooks │ └── useLockScroll.ts ├── modules │ ├── algolia │ │ ├── AlgoliaHits.tsx │ │ ├── AlgoliaIndex.tsx │ │ ├── AlgoliaInstantSearch.tsx │ │ ├── AlgoliaPagination.tsx │ │ ├── AlgoliaRefinementList.tsx │ │ ├── AlgoliaSearchBox.tsx │ │ └── index.ts │ └── coveo │ │ ├── BreadcrumbManager.tsx │ │ ├── Engine.tsx │ │ ├── Facet.tsx │ │ ├── Pager.tsx │ │ ├── QuerySummary.tsx │ │ ├── ResultItem.tsx │ │ ├── ResultList.tsx │ │ ├── SearchBox.tsx │ │ ├── SearchProvider.tsx │ │ ├── Sort.tsx │ │ └── index.ts ├── pages │ ├── [[...slug]].tsx │ ├── [[...slug]].tsx.ssg │ ├── [[...slug]].tsx.ssr │ ├── _app.tsx │ ├── _document.tsx │ ├── api │ │ ├── og.tsx │ │ ├── preview.ts │ │ ├── revalidate.ts │ │ └── revalidate.ts.ssg │ └── playground.tsx ├── stories │ ├── canvas │ │ ├── Accordion.stories.tsx │ │ ├── AddToCart.stories.tsx │ │ ├── Banner.stories.tsx │ │ ├── Breadcrumbs.stories.tsx │ │ ├── Button.stories.tsx │ │ ├── CallToAction.stories.tsx │ │ ├── Card.stories.tsx │ │ ├── CardBlock.stories.tsx │ │ ├── Carousel.stories.tsx │ │ ├── Container.stories.tsx │ │ ├── ContentBlock.stories.tsx │ │ ├── Countdown.stories.tsx │ │ ├── Divider.stories.tsx │ │ ├── FeaturedCallout.stories.tsx │ │ ├── Grid.stories.tsx │ │ ├── Hero.stories.tsx │ │ ├── Image.stories.tsx │ │ ├── ImageGallery.stories.tsx │ │ ├── Modal.stories.tsx │ │ ├── Price.stories.tsx │ │ ├── ProductInfo.stories.tsx │ │ ├── Review.stories.tsx │ │ ├── RichText.stories.tsx │ │ ├── Table.stories.tsx │ │ ├── Tabs.stories.tsx │ │ ├── Testimonial.stories.tsx │ │ └── Video.stories.tsx │ ├── constants.ts │ └── utils │ │ ├── index.ts │ │ └── themes.ts ├── styles │ └── globals.scss ├── types │ └── Type.d.ts └── utilities │ ├── canvas │ └── canvasClients.ts │ ├── index.ts │ ├── styling.ts │ └── theme.ts ├── tailwind.config.js ├── tsconfig.json └── uniform.config.ts /.env.example: -------------------------------------------------------------------------------- 1 | UNIFORM_API_KEY= 2 | UNIFORM_PROJECT_ID= 3 | UNIFORM_PREVIEW_SECRET=hello-world 4 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | plugins: ['@typescript-eslint', 'prettier'], 4 | extends: ['next/core-web-vitals', 'plugin:@typescript-eslint/recommended', 'prettier'], 5 | rules: { 6 | '@next/next/no-html-link-for-pages': 'off', 7 | '@typescript-eslint/no-unused-vars': 'error', 8 | 'prettier/prettier': 'error', 9 | 'no-underscore-dangle': 'off', 10 | 'import/no-anonymous-default-export': [ 11 | 'error', 12 | { 13 | allowArrowFunction: true, 14 | }, 15 | ], 16 | 'react/display-name': 'off', 17 | }, 18 | }; 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | 6 | # misc 7 | .DS_Store 8 | 9 | # debug 10 | npm-debug.log* 11 | 12 | # local env files 13 | .env 14 | .env.local 15 | .env.development.local 16 | .env.test.local 17 | .env.production.local 18 | !/cli-run/.env 19 | 20 | #idea 21 | .idea 22 | 23 | .turbo 24 | 25 | .netlify 26 | 27 | .next 28 | 29 | dist 30 | 31 | storybook-static 32 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .next 3 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 120, 3 | singleQuote: true, 4 | semi: true, 5 | trailingComma: 'es5', 6 | tabWidth: 2, 7 | arrowParens: 'avoid', 8 | endOfLine: 'auto', 9 | }; 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "prettier.configPath": ".prettierrc.js", 4 | "editor.formatOnSave": true, 5 | "files.insertFinalNewline": true, 6 | "files.eol": "\n", 7 | "search.exclude": { 8 | "node_modules": true 9 | }, 10 | "cSpell.words": [ 11 | "acumin", 12 | "algoliasearch", 13 | "autodocs", 14 | "bigcommerce", 15 | "Callout", 16 | "Callouts", 17 | "cloudinary", 18 | "commitlint", 19 | "contentful", 20 | "Contentstack", 21 | "Coveo", 22 | "ctfassets", 23 | "daisyui", 24 | "Edgehanced", 25 | "Gtag", 26 | "hocs", 27 | "instantsearch", 28 | "javadrip", 29 | "localizable", 30 | "manypkg", 31 | "nextjs", 32 | "outro", 33 | "picocolors", 34 | "promts", 35 | "Saionaro", 36 | "Signup", 37 | "SUPABASE", 38 | "tailwindcss", 39 | "testid", 40 | "tsup", 41 | "uniformdev", 42 | "unoptimized" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /cli-run/.env: -------------------------------------------------------------------------------- 1 | CLI_NEXT_PUBLIC_COVEO_ORGANIZATION_ID=uniformpartnerorgoxmuuq4m 2 | CLI_NEXT_PUBLIC_COVEO_API_KEY=xx0660e3a2-23d2-4a21-96a5-6918508380af 3 | CLI_NEXT_PUBLIC_ALGOLIA_APPLICATION_ID=4LOLDELNMA 4 | CLI_NEXT_PUBLIC_ALGOLIA_SEARCH_KEY=88948d1c11bbe66f5fd35a9b383bcbb4 5 | CLI_ALGOLIA_INDEX_NAME=products-ngm 6 | -------------------------------------------------------------------------------- /cli-run/README.md: -------------------------------------------------------------------------------- 1 | ## Uniform Demos RUN CLI 2 | 3 | Uniform Demos CLI is a Command Line Interface (CLI) tool based on @clack/prompts 4 | that allows you to export and run demos from your demos monorepo. The tool is designed to streamline the process of exporting demos and running them locally, without the need for a monorepo. 5 | 6 | ### Install and start using 7 | 8 | 1. To get started with Uniform Demos CLI, you'll need to install the dependencies by running the following command from exported project root: 9 | 10 | ```bash 11 | npm i 12 | ``` 13 | 14 | 2. Once you've installed the dependencies, you can start using the Uniform Demos CLI. To run the CLI, enter the following command in your terminal from the exported root: 15 | 16 | ```bash 17 | npm run cli 18 | ``` 19 | 20 | This will start the CLI and prompt you with a menu of options to choose from. 21 | 22 | ### Run Exported Demo 23 | 24 | The Run Exported Demo feature allows you to run an exported demo locally. To use this feature, follow these steps: 25 | 26 | - Run the CLI using the `npm run cli` command. 27 | - Continue journey. 28 | -------------------------------------------------------------------------------- /cli-run/jest.config.ts: -------------------------------------------------------------------------------- 1 | const config = { 2 | preset: 'ts-jest', 3 | clearMocks: true, 4 | testEnvironment: 'node', 5 | }; 6 | 7 | export default config; 8 | -------------------------------------------------------------------------------- /cli-run/metadata.txt: -------------------------------------------------------------------------------- 1 | {"project":"component-starter-kit"} -------------------------------------------------------------------------------- /cli-run/src/commands/setupUniform/gql.ts: -------------------------------------------------------------------------------- 1 | import fetch from 'node-fetch'; 2 | 3 | export const getAvailableTeams = async (params: UNIFORM_API.GetTeamsParams) => { 4 | const { apiHost = 'https://uniform.app', headers, subject } = params; 5 | const query = ` 6 | query GetUserInfo($subject: String!) { 7 | info: identities_by_pk(subject: $subject) { 8 | name 9 | email_address 10 | teams: organizations_identities(order_by: { organization: { name: asc } }) { 11 | team: organization { 12 | name 13 | id 14 | sites { 15 | name 16 | id 17 | } 18 | } 19 | } 20 | } 21 | } 22 | `; 23 | 24 | const endpoint = new URL('/v1/graphql', apiHost); 25 | 26 | const response = await fetch(endpoint, { 27 | method: 'POST', 28 | body: JSON.stringify({ 29 | query, 30 | variables: { 31 | subject, 32 | }, 33 | }), 34 | headers, 35 | }).then(res => res.json()); 36 | 37 | return (response as UNIFORM_API.TeamsResponse).data.info.teams; 38 | }; 39 | -------------------------------------------------------------------------------- /cli-run/src/constants.ts: -------------------------------------------------------------------------------- 1 | export enum AvailableProjects { 2 | ComponentStarterKit = 'component-starter-kit', 3 | ComponentStarterKitRsc = 'component-starter-kit-rsc', 4 | SalesDemo = 'sales-demo', 5 | } 6 | 7 | export enum CommonVariants { 8 | Default = 'baseline', 9 | } 10 | 11 | export enum AppModes { 12 | SSR = 'ssr', 13 | SSG = 'ssg', 14 | } 15 | -------------------------------------------------------------------------------- /cli-run/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "resolveJsonModule": true, 6 | "outDir": "./dist", 7 | "lib": ["esnext"], 8 | "target": "esnext", 9 | "module": "esnext", 10 | "types": ["node", "jest"], 11 | "incremental": false 12 | }, 13 | "include": ["**/*.ts", "**/*.spec.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /cli-scaffold/README.md: -------------------------------------------------------------------------------- 1 | ## Uniform Demos SCAFFOLD CLI 2 | -------------------------------------------------------------------------------- /cli-scaffold/jest.config.ts: -------------------------------------------------------------------------------- 1 | const config = { 2 | preset: 'ts-jest', 3 | clearMocks: true, 4 | testEnvironment: 'node', 5 | }; 6 | 7 | export default config; 8 | -------------------------------------------------------------------------------- /cli-scaffold/src/steps/index.ts: -------------------------------------------------------------------------------- 1 | export { indexComponentFile } from './indexComponentFile'; 2 | export { reactComponentFile } from './reactComponentFile'; 3 | export { registerComponentFile } from './registerComponentFile'; 4 | -------------------------------------------------------------------------------- /cli-scaffold/src/types.ts: -------------------------------------------------------------------------------- 1 | import { ComponentDefinition, ComponentDefinitionParameter } from '@uniformdev/canvas'; 2 | 3 | export type FileHandler = { 4 | path: (props: { pathToCanvasFolder: string; definition?: ComponentDefinition }) => string; 5 | write: (props: { destinationPath: string; definition: ComponentDefinition }) => Promise; 6 | }; 7 | 8 | export type ParameterHandler = { 9 | supports: string[]; 10 | type: string; 11 | render: (parameter: ComponentDefinitionParameter) => string; 12 | hide?: boolean; 13 | }; 14 | -------------------------------------------------------------------------------- /cli-scaffold/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "resolveJsonModule": true, 6 | "outDir": "./dist", 7 | "lib": ["esnext"], 8 | "target": "esnext", 9 | "module": "esnext", 10 | "types": ["node", "jest"], 11 | "incremental": false 12 | }, 13 | "include": ["**/*.ts", "**/*.spec.ts"], 14 | "exclude": ["node_modules", "dist"] 15 | } 16 | -------------------------------------------------------------------------------- /content/asset/0adb96e6-fb1e-40b5-a352-14ce73091bef.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 0adb96e6-fb1e-40b5-a352-14ce73091bef 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: gear.svg 9 | file: 10 | type: file 11 | value: d506907c-1ecf-4b57-bfc6-256cf3a876a5 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/KcF-bFdcRtyheUhNLlEDJA/GEi3VuE4TB-duH9JrJ8Txg-gear.svg 18 | type: text 19 | size: 20 | value: 1109 21 | type: number 22 | width: 23 | value: 24 24 | type: number 25 | height: 26 | value: 24 27 | type: number 28 | custom: {} 29 | created: '2024-01-09T08:55:59.545573+00:00' 30 | modified: '2024-01-09T08:55:59.545573+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/1ab60b6e-b99b-4164-b063-d392d5afe424.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 1ab60b6e-b99b-4164-b063-d392d5afe424 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: action-solid-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 4fc98145-1c72-476f-8335-fdeb395f5888 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/Ke16iSUNTDuKgJL8EYpIXQ-action-solid-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 427 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:10:11.079558+00:00' 30 | modified: '2024-01-15T11:10:11.079558+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/1e729c12-25c9-46a2-aeb2-33ce3e47fecb.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 1e729c12-25c9-46a2-aeb2-33ce3e47fecb 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_cardblock.svg 9 | file: 10 | type: file 11 | value: 1628316b-b068-4f58-9f17-1d3508c630a1 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/U-sS3y2RS-S4U1i3r9D3yg-icon_cardblock.svg 18 | type: text 19 | size: 20 | value: 2587 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:36:57.330162+00:00' 30 | modified: '2023-12-12T13:36:57.330162+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/28b936d7-4c98-414d-b1fa-d3594ed08082.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 28b936d7-4c98-414d-b1fa-d3594ed08082 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: mount.svg 9 | file: 10 | type: file 11 | value: 8eea689a-61ee-4ba9-b9e5-8a2e4d779461 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/KcF-bFdcRtyheUhNLlEDJA/aYeo-BBNSgKJhyfs44EXTA-mount.svg 18 | type: text 19 | size: 20 | value: 223 21 | type: number 22 | width: 23 | value: 24 24 | type: number 25 | height: 26 | value: 24 27 | type: number 28 | custom: {} 29 | created: '2024-01-09T08:55:59.545573+00:00' 30 | modified: '2024-01-09T08:55:59.545573+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/28ee8793-25b5-4f08-8edd-7accaaf4a9a5.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 28ee8793-25b5-4f08-8edd-7accaaf4a9a5 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_image.svg 9 | file: 10 | type: file 11 | value: 7166ec54-1d2d-4a33-b97d-d4577fcfd04f 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/eawWXXquSo-q0b6i6mbn9A-icon_image.svg 18 | type: text 19 | size: 20 | value: 1076 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.467238+00:00' 30 | modified: '2023-12-12T13:37:04.467238+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/2ae2e48c-85fe-43c8-a407-7a6a65c4c5a3.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 2ae2e48c-85fe-43c8-a407-7a6a65c4c5a3 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: analytics-hands-report-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 5580add3-8ecb-4680-9e2e-281a653147e8 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/wcqkCON8R_SPmPXIDaSvAw-analytics-hands-report-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 1401 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:14:43.928334+00:00' 30 | modified: '2024-01-15T11:14:43.928334+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/2b177d20-9e27-4d48-ac55-978474111c59.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 2b177d20-9e27-4d48-ac55-978474111c59 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: espressoGPT_image_1.jpg 9 | file: 10 | type: file 11 | value: f9c80a5c-b9a1-4af4-a743-84a6d8f7c6c6 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/81F57fuRR32gjeEX0RMczQ-espressoGPT_image_1.jpg 18 | type: text 19 | size: 20 | value: 123117 21 | type: number 22 | width: 23 | value: 1486 24 | type: number 25 | height: 26 | value: 960 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.01777+00:00' 30 | modified: '2023-12-12T13:37:04.01777+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/2c99b69f-1506-43ea-8d33-67fee8f9fe8f.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 2c99b69f-1506-43ea-8d33-67fee8f9fe8f 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_accordion.svg 9 | file: 10 | type: file 11 | value: 11b9cc93-6209-427c-bb05-3d14fef8ecb6 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/NqXgXu_VTUK7F32zMnYJiw-icon_accordion.svg 18 | type: text 19 | size: 20 | value: 718 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.012555+00:00' 30 | modified: '2023-12-12T13:37:04.012555+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/2f846de5-74be-41a3-a181-a7fc7b7c38ca.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 2f846de5-74be-41a3-a181-a7fc7b7c38ca 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: clock.svg 9 | file: 10 | type: file 11 | value: b31b3cda-42fc-4a56-a64b-d259c468d24f 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/KcF-bFdcRtyheUhNLlEDJA/U_1YTpmIRHmWfg7M0HUx-g-clock.svg 18 | type: text 19 | size: 20 | value: 414 21 | type: number 22 | width: 23 | value: 24 24 | type: number 25 | height: 26 | value: 24 27 | type: number 28 | custom: {} 29 | created: '2024-01-09T08:52:54.159232+00:00' 30 | modified: '2024-01-09T08:52:54.159232+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/321b5ac1-0cce-435d-baff-bb00838a832a.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 321b5ac1-0cce-435d-baff-bb00838a832a 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_cardblock_w.svg 9 | file: 10 | type: file 11 | value: a33baad1-6700-4bca-80de-efa86917336d 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/v54UHvIiSvSRWBTO8Uc4oQ-icon_cardblock_w.svg 18 | type: text 19 | size: 20 | value: 2584 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.344754+00:00' 30 | modified: '2023-12-12T13:37:04.344754+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/3c1767ca-1851-4f4f-b8dc-4269d5ea6328.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 3c1767ca-1851-4f4f-b8dc-4269d5ea6328 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: rectangle.webp 9 | file: 10 | type: file 11 | value: 417f72e5-d0bc-47c8-8633-eb537728e2ec 12 | mediaType: 13 | value: image/webp 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/k1_VXz4cSo-x7dnH4q_t2g-rectangle.webp 18 | type: text 19 | size: 20 | value: 49092 21 | type: number 22 | width: 23 | value: 1600 24 | type: number 25 | height: 26 | value: 689 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.650345+00:00' 30 | modified: '2023-12-12T13:37:03.650345+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/3c9460c0-d3b3-41dd-a6f9-f20f87b3ecae.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 3c9460c0-d3b3-41dd-a6f9-f20f87b3ecae 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_hero.svg 9 | file: 10 | type: file 11 | value: d4f84f8b-9d27-4bff-81c5-015ace6d6c45 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/4O5J8hYiT3ior_4suG6XxA-icon_hero.svg 18 | type: text 19 | size: 20 | value: 1696 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.629042+00:00' 30 | modified: '2023-12-12T13:37:03.629042+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/3ec3f242-fbd9-4886-9192-d57d24168497.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 3ec3f242-fbd9-4886-9192-d57d24168497 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: block-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 7432b355-43e4-4fad-aba0-0a9b50dee7cd 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/yFRw8ZkRTkiOPsZSQm0Gjw-block-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 374 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:13:18.331841+00:00' 30 | modified: '2024-01-15T11:13:18.331841+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/3fc503ba-876c-4f9a-bb7e-2161de64ef87.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 3fc503ba-876c-4f9a-bb7e-2161de64ef87 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: github_icon_black.svg 9 | file: 10 | type: file 11 | value: 17aa71fc-a949-4103-b95a-ec9dee4b5a8b 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/fO3GkjsgSW-33LOxx6O4Jw-github_icon_black.svg 18 | type: text 19 | size: 20 | value: 1327 21 | type: number 22 | width: 23 | value: 35 24 | type: number 25 | height: 26 | value: 34 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.853911+00:00' 30 | modified: '2023-12-12T13:37:04.853911+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/4050736c-421b-4910-8595-c914b4693be6.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 4050736c-421b-4910-8595-c914b4693be6 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_hero_w.svg 9 | file: 10 | type: file 11 | value: 771e3090-75ed-4ed5-8249-e226844b13c0 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/LzPAjcUGQS23RATusnk4gg-icon_hero_w.svg 18 | type: text 19 | size: 20 | value: 1693 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:36:58.463847+00:00' 30 | modified: '2023-12-12T13:36:58.463847+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/49dc166e-07c5-4a77-ab0c-61ee94238b2c.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 49dc166e-07c5-4a77-ab0c-61ee94238b2c 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_featured_callout_w.svg 9 | file: 10 | type: file 11 | value: 490ad127-625a-40dc-a130-44ed76937958 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/stdjhjzASf2tHvNHd4_34Q-icon_featured_callout_w.svg 18 | type: text 19 | size: 20 | value: 6076 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:02.353209+00:00' 30 | modified: '2023-12-12T13:37:02.353209+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/4d79494d-e979-4be6-86a2-b99ef311a6fc.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 4d79494d-e979-4be6-86a2-b99ef311a6fc 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: accordion-vertical-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: d78ab64d-a2f4-4eb0-b2ec-aacd3f5e9402 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/4F1U1XujQauiy1bG8C4mXA-accordion-vertical-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 943 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:20:16.562926+00:00' 30 | modified: '2024-01-15T11:20:16.562926+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/51704f77-248b-4ab7-915b-4bb43436f74d.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 51704f77-248b-4ab7-915b-4bb43436f74d 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_accordion_w.svg 9 | file: 10 | type: file 11 | value: a8f7ec83-f314-487f-bf5a-dee065ec767f 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/sZv-72jHQuSQ-R66-Lf4oQ-icon_accordion_w.svg 18 | type: text 19 | size: 20 | value: 715 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.882838+00:00' 30 | modified: '2023-12-12T13:37:04.882838+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/528fb354-9aba-4a4f-93f5-db989379bf0a.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 528fb354-9aba-4a4f-93f5-db989379bf0a 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: content-inline-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 33df0dc3-7999-4068-ada7-21dc3a50386b 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/I5TPzJYIQz6xyo9XbRn2ig-content-inline-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 377 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:21:43.963624+00:00' 30 | modified: '2024-01-15T11:21:43.963624+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/52d383d4-1db8-4349-aff4-75182d6f6361.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 52d383d4-1db8-4349-aff4-75182d6f6361 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: person_photo_1.jpg 9 | file: 10 | type: file 11 | value: 24ebe9c2-af50-4994-a998-6deb55f88500 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/xy5UkA6vTfeH7fd7Hnj0fA-person_photo_1.jpg 18 | type: text 19 | size: 20 | value: 8294 21 | type: number 22 | width: 23 | value: 256 24 | type: number 25 | height: 26 | value: 256 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.530632+00:00' 30 | modified: '2023-12-12T13:37:03.530632+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/541df06f-1366-4874-9ab3-54e435ac68f8.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 541df06f-1366-4874-9ab3-54e435ac68f8 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_CTA_w.svg 9 | file: 10 | type: file 11 | value: f8b1d38a-13c2-40b5-a33e-79aacb3c0057 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/TyIfzAI7QW-taEw_yNliPw-icon_CTA_w.svg 18 | type: text 19 | size: 20 | value: 1568 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:36:59.264419+00:00' 30 | modified: '2023-12-12T13:36:59.264419+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/56e6a0a9-e384-4f73-b172-f2b742406566.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 56e6a0a9-e384-4f73-b172-f2b742406566 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: espressoGPT_image_3.jpg 9 | file: 10 | type: file 11 | value: ed4ce352-85c2-43ab-a544-22081362ed87 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/OivA9y_dR_6t5RQfQi79jg-espressoGPT_image_3.jpg 18 | type: text 19 | size: 20 | value: 132926 21 | type: number 22 | width: 23 | value: 743 24 | type: number 25 | height: 26 | value: 480 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.333389+00:00' 30 | modified: '2023-12-12T13:37:04.333389+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/5acfc75d-92a2-421c-9674-dab48282be2e.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 5acfc75d-92a2-421c-9674-dab48282be2e 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_content_w.svg 9 | file: 10 | type: file 11 | value: f8041a3a-3ec7-488c-8a39-81aab9e5d3d4 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/rC6N2xquR424jQYTprqJnA-icon_content_w.svg 18 | type: text 19 | size: 20 | value: 611 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:00.225509+00:00' 30 | modified: '2023-12-12T13:37:00.225509+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/5bbda19f-8d8a-4064-ab72-8af4e4401e51.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 5bbda19f-8d8a-4064-ab72-8af4e4401e51 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: person_photo_3.jpg 9 | file: 10 | type: file 11 | value: d86a10f1-9b1c-4e9c-a8e1-a5b1aceb6d66 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/YfoUEKLaROuLyIBZ4-p_CQ-person_photo_3.jpg 18 | type: text 19 | size: 20 | value: 5865 21 | type: number 22 | width: 23 | value: 256 24 | type: number 25 | height: 26 | value: 256 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:01.526234+00:00' 30 | modified: '2023-12-12T13:37:01.526234+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/5eee1d86-265f-41e4-820c-125535f3d7e8.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 5eee1d86-265f-41e4-820c-125535f3d7e8 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_image_w.svg 9 | file: 10 | type: file 11 | value: 11f2cb61-a35d-45d3-a48d-3e95610c90f9 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/LNeGGqUkRzStnoG6WfEpew-icon_image_w.svg 18 | type: text 19 | size: 20 | value: 1070 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.774378+00:00' 30 | modified: '2023-12-12T13:37:04.774378+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/5f4c3fa1-14d2-467e-a521-11901beaa575.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 5f4c3fa1-14d2-467e-a521-11901beaa575 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: news-paper-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 4e377b89-469b-4d2f-9021-dfea87f79989 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/AgwC-P0ERZqzxOlCdHvY6w-news-paper-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 1181 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:18:52.502511+00:00' 30 | modified: '2024-01-15T11:18:52.502511+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/68b4d970-8062-4a91-965b-97d2587811fc.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 68b4d970-8062-4a91-965b-97d2587811fc 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_improve.svg 9 | file: 10 | type: file 11 | value: 9b499448-e03e-4b24-acb2-5af8d5eef0e5 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/MIWsDoPXSw-zFY1_TdqD_g-icon_improve.svg 18 | type: text 19 | size: 20 | value: 729 21 | type: number 22 | width: 23 | value: 35 24 | type: number 25 | height: 26 | value: 48 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:36:58.145357+00:00' 30 | modified: '2023-12-12T13:36:58.145357+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/6e4df38e-7e0f-4f10-a490-d91ebc6ef84a.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 6e4df38e-7e0f-4f10-a490-d91ebc6ef84a 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: storybook_icon.svg 9 | file: 10 | type: file 11 | value: 5f0ae698-9cc8-43df-8c66-5623b868b40d 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/HwXZcb0XQWW8W17eUNo6lQ-storybook_icon.svg 18 | type: text 19 | size: 20 | value: 7943 21 | type: number 22 | width: 23 | value: 38 24 | type: number 25 | height: 26 | value: 38 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:01.694544+00:00' 30 | modified: '2023-12-12T13:37:01.694544+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/745700bc-f7ef-4130-a2d1-256b828b1293.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 745700bc-f7ef-4130-a2d1-256b828b1293 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: uniform_logo_black.svg 9 | file: 10 | type: file 11 | value: b7fa4ca8-698b-49d6-896e-511e2474ea50 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/QHYSVIh3Rb-lTXlusBNvPQ-uniform_logo_black.svg 18 | type: text 19 | size: 20 | value: 2288 21 | type: number 22 | width: 23 | value: 608 24 | type: number 25 | height: 26 | value: 192 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:02.167265+00:00' 30 | modified: '2023-12-12T13:37:02.167265+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/77f67343-7bcc-412a-bd21-fc33636f3764.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 77f67343-7bcc-412a-bd21-fc33636f3764 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: next.svg 9 | file: 10 | type: file 11 | value: 8fee02db-b592-488e-82ca-1af95157a497 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/KcF-bFdcRtyheUhNLlEDJA/ceAZL159RJahzRNZyfx8YQ-next.svg 18 | type: text 19 | size: 20 | value: 327 21 | type: number 22 | width: 23 | value: 24 24 | type: number 25 | height: 26 | value: 24 27 | type: number 28 | custom: {} 29 | created: '2024-01-09T08:55:59.545573+00:00' 30 | modified: '2024-01-09T08:55:59.545573+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/88505c93-6df6-4dbd-8ecb-d178f7f2341f.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 88505c93-6df6-4dbd-8ecb-d178f7f2341f 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: favicon.png 9 | file: 10 | type: file 11 | value: 363fc9e4-0928-4f3e-9ea3-d90cfaa772bb 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/JA7dBpIBRRWtc3K6Bd-ysQ-favicon.png 18 | type: text 19 | size: 20 | value: 1676 21 | type: number 22 | width: 23 | value: 32 24 | type: number 25 | height: 26 | value: 32 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:00.706975+00:00' 30 | modified: '2023-12-12T13:37:00.706975+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/89401cb5-7432-4abb-ab3d-0c58a98e7737.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 89401cb5-7432-4abb-ab3d-0c58a98e7737 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: uniform_csk_logo.png 9 | file: 10 | type: file 11 | value: 710c976d-f307-4a0f-abfd-0dd40474ea69 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/MH5AJGrcR5eFgxNc5EUJHA-uniform_csk_logo.png 18 | type: text 19 | size: 20 | value: 6041 21 | type: number 22 | width: 23 | value: 432 24 | type: number 25 | height: 26 | value: 79 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:36:59.628984+00:00' 30 | modified: '2023-12-12T13:36:59.628984+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/8f48f9c0-83d7-4e1c-84c7-b4bac24ab9ee.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 8f48f9c0-83d7-4e1c-84c7-b4bac24ab9ee 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: analytics-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 4c1dc744-9c9c-40c2-ab22-527bfc830829 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/8-nc02DpRuW5GFR-FIU_SQ-analytics-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 647 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T10:59:06.191024+00:00' 30 | modified: '2024-01-15T10:59:06.191024+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/92ff34cd-1810-45fd-bab6-cc2d583eba9d.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 92ff34cd-1810-45fd-bab6-cc2d583eba9d 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: cervello_di_caffe_3.jpg 9 | file: 10 | type: file 11 | value: ed680440-ba88-4843-91e8-ee1b74a1fc4c 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/GWwpq42AQyGcDrmCRrTQtw-cervello_di_caffe_3.jpg 18 | type: text 19 | size: 20 | value: 116001 21 | type: number 22 | width: 23 | value: 980 24 | type: number 25 | height: 26 | value: 1021 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.368951+00:00' 30 | modified: '2023-12-12T13:37:04.368951+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/98f4cb70-ea7b-4aa0-9224-38a9c35e5056.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: 98f4cb70-ea7b-4aa0-9224-38a9c35e5056 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: webinar_poster.png 9 | file: 10 | type: file 11 | value: 7f114d45-a4cf-43a1-9ab1-93f8eda0a311 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/P66exJASRfSDsxJpc9HnGw-webinar_poster.png 18 | type: text 19 | size: 20 | value: 197218 21 | type: number 22 | width: 23 | value: 1280 24 | type: number 25 | height: 26 | value: 720 27 | type: number 28 | custom: {} 29 | created: '2023-12-13T13:42:15.130872+00:00' 30 | modified: '2023-12-13T13:42:15.130872+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/a9c96894-0f74-4b1c-89c4-4a9930c919dc.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: a9c96894-0f74-4b1c-89c4-4a9930c919dc 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: espressoGPT_image_4.jpg 9 | file: 10 | type: file 11 | value: 5134c33e-de7c-46ac-bb51-7aa67739c9ae 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/h6l6r6WoTJGvPxTxCakc4Q-espressoGPT_image_4.jpg 18 | type: text 19 | size: 20 | value: 18991 21 | type: number 22 | width: 23 | value: 743 24 | type: number 25 | height: 26 | value: 480 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.53617+00:00' 30 | modified: '2023-12-12T13:37:03.53617+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/b0f5e4f1-46a0-4a04-b74a-5fdbfb38bb74.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: b0f5e4f1-46a0-4a04-b74a-5fdbfb38bb74 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: espressoGPT_image_5.jpg 9 | file: 10 | type: file 11 | value: f068e480-292f-4dc1-ab30-6ac9d2f23baa 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/pCLRowAuQa-KoGVmn9ZKKg-espressoGPT_image_5.jpg 18 | type: text 19 | size: 20 | value: 29957 21 | type: number 22 | width: 23 | value: 743 24 | type: number 25 | height: 26 | value: 480 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.944564+00:00' 30 | modified: '2023-12-12T13:37:04.944564+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/b2332a2e-dea3-4d16-9f67-e709bb5c98b8.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: b2332a2e-dea3-4d16-9f67-e709bb5c98b8 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_drive.svg 9 | file: 10 | type: file 11 | value: e81453aa-a78f-43e1-b708-06eef9fd3791 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/B-cA8CrRTsG-Wmp2_5qdkQ-icon_drive.svg 18 | type: text 19 | size: 20 | value: 1669 21 | type: number 22 | width: 23 | value: 58 24 | type: number 25 | height: 26 | value: 44 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.747278+00:00' 30 | modified: '2023-12-12T13:37:04.747278+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/b4d87558-d3ed-460e-aaf3-77273ab9606f.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: b4d87558-d3ed-460e-aaf3-77273ab9606f 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: hotspots-map.png 9 | file: 10 | type: file 11 | value: ae8e7672-fc40-406a-93e4-8f03426eabb0 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/oRR9y33oRxKY6uBSdvyphw-hotspots-map.png 18 | type: text 19 | size: 20 | value: 1874097 21 | type: number 22 | width: 23 | value: 8000 24 | type: number 25 | height: 26 | value: 4500 27 | type: number 28 | custom: {} 29 | created: '2024-06-13T09:45:16.172698+00:00' 30 | modified: '2024-06-13T09:45:16.172698+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/b7160380-470a-4888-a4fe-0b448e11a1a9.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: b7160380-470a-4888-a4fe-0b448e11a1a9 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: espressoGPT_image_2.jpg 9 | file: 10 | type: file 11 | value: a6185be3-c7fe-42d7-a9e7-f1a7b1193aad 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/bDUJF9rFRbCVHBBSWH70Dw-espressoGPT_image_2.jpg 18 | type: text 19 | size: 20 | value: 74607 21 | type: number 22 | width: 23 | value: 743 24 | type: number 25 | height: 26 | value: 480 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.074324+00:00' 30 | modified: '2023-12-12T13:37:05.074324+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/becb194e-5329-4107-be3b-8cb981f07fa2.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: becb194e-5329-4107-be3b-8cb981f07fa2 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: block-svgrepo-com-(1).svg 9 | file: 10 | type: file 11 | value: a5355dfc-e864-43b6-b70b-17f5649d83b4 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/PiRUWFk-RI6C7ts-c6kl7Q-block-svgrepo-com-(1).svg 18 | type: text 19 | size: 20 | value: 932 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:15:53.59601+00:00' 30 | modified: '2024-01-15T11:15:53.59601+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/c05ce5fb-7c0b-4dcf-9324-6bfb1deeb2a0.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: c05ce5fb-7c0b-4dcf-9324-6bfb1deeb2a0 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_CTA.svg 9 | file: 10 | type: file 11 | value: a79e52c6-f509-434b-89b5-fc132ad0d469 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/Xc8mc-gWT_uNQ6ZXDF6lRQ-icon_CTA.svg 18 | type: text 19 | size: 20 | value: 1571 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:02.013276+00:00' 30 | modified: '2023-12-12T13:37:02.013276+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/c322a505-d568-403b-9396-1546bc9a880d.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: c322a505-d568-403b-9396-1546bc9a880d 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: home-smile-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 4fe7bce0-7830-4ade-a33d-5a6f24f42a43 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/jAXslNg7TZOSmWCZerF8hw-home-smile-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 835 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:54:06.492446+00:00' 30 | modified: '2024-01-15T11:54:06.492446+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/c3a2c7ff-2b35-4919-aa88-29b7e83d7aea.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: c3a2c7ff-2b35-4919-aa88-29b7e83d7aea 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: touch-press-click-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 9d90b889-557a-4b4e-ac71-0e59b180754f 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/LVVYWngJQkij1zDGN59QIg-touch-press-click-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 2772 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:11:31.30533+00:00' 30 | modified: '2024-01-15T11:11:31.30533+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/c777a60e-b29e-4f94-a56c-307d6d46ccee.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: c777a60e-b29e-4f94-a56c-307d6d46ccee 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: cervello_di_caffe_2.jpg 9 | file: 10 | type: file 11 | value: 80c1bd99-99a8-467e-8dd4-a4587f82363b 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/gieO2Fe8Ts-mAide_iOEXA-cervello_di_caffe_2.jpg 18 | type: text 19 | size: 20 | value: 122566 21 | type: number 22 | width: 23 | value: 980 24 | type: number 25 | height: 26 | value: 1021 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.243909+00:00' 30 | modified: '2023-12-12T13:37:05.243909+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/cb119c03-2d3f-4ff9-9a8f-6ebbac121849.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: cb119c03-2d3f-4ff9-9a8f-6ebbac121849 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: analytics-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: ac1ff171-9c59-4e33-afcb-a0ed9e118684 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/1l5j1IkaRayZQTrfXtygGw-analytics-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 644 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:07:33.586702+00:00' 30 | modified: '2024-01-15T11:07:33.586702+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/ce673968-2de3-4c59-bd28-a71e2920a2f0.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: ce673968-2de3-4c59-bd28-a71e2920a2f0 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: image-svgrepo-com-(1).svg 9 | file: 10 | type: file 11 | value: ecfa1749-678e-4c0a-8bae-e5c40d61a875 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/BEwto7aERy-5OBwn62sAaw-image-svgrepo-com-(1).svg 18 | type: text 19 | size: 20 | value: 599 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:45:55.818584+00:00' 30 | modified: '2024-01-15T11:45:55.818584+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/cec6bce4-01f4-4159-a780-ab35e2411cb8.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: cec6bce4-01f4-4159-a780-ab35e2411cb8 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: corel_DESIGNER_lines_halo.jpg 9 | file: 10 | type: file 11 | value: 0a8eda28-02ad-4274-ab5c-548aa096d20e 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/h2hksKx3Sv-pUlAeNBbBEg-corel_DESIGNER_lines_halo.jpg 18 | type: text 19 | size: 20 | value: 107909 21 | type: number 22 | width: 23 | value: 555 24 | type: number 25 | height: 26 | value: 381 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.244709+00:00' 30 | modified: '2023-12-12T13:37:05.244709+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/cf82c484-3f0b-4cea-8249-ed99b6757ae5.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: cf82c484-3f0b-4cea-8249-ed99b6757ae5 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_content.svg 9 | file: 10 | type: file 11 | value: c3851ac8-012d-4b8a-9c87-40720c6a3710 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/AZotgl0lSR6gI-KJPNP5ow-icon_content.svg 18 | type: text 19 | size: 20 | value: 614 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:02.706413+00:00' 30 | modified: '2023-12-12T13:37:02.706413+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/d094a8b2-2993-4ec5-8665-60902503a848.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: d094a8b2-2993-4ec5-8665-60902503a848 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: person_photo_2.jpg 9 | file: 10 | type: file 11 | value: 55835ffb-5998-47c2-8226-8e63ae249f0c 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/gbqtvjl0SHSKZpmb70j6iA-person_photo_2.jpg 18 | type: text 19 | size: 20 | value: 18613 21 | type: number 22 | width: 23 | value: 256 24 | type: number 25 | height: 26 | value: 256 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.151645+00:00' 30 | modified: '2023-12-12T13:37:05.151645+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/d1f5b6a8-be31-4196-bec9-f2c2e57598c3.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: d1f5b6a8-be31-4196-bec9-f2c2e57598c3 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: container-volume-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 9808271e-c360-4d99-98e6-5311abb48480 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/QMb66qBPRLS4pAUXZbmkmA-container-volume-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 1598 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:43:03.237749+00:00' 30 | modified: '2024-01-15T11:43:03.237749+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/d24ae6cc-a180-449d-9a0e-255e851f8fd8.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: d24ae6cc-a180-449d-9a0e-255e851f8fd8 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_understand.svg 9 | file: 10 | type: file 11 | value: c5a24e5d-08dc-4efc-bf66-a96f17663394 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/lrBrZBZPRy6Ze4wZzKYi1w-icon_understand.svg 18 | type: text 19 | size: 20 | value: 1402 21 | type: number 22 | width: 23 | value: 44 24 | type: number 25 | height: 26 | value: 42 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.592687+00:00' 30 | modified: '2023-12-12T13:37:03.592687+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/d8cb98eb-f3d9-4ee8-a378-b4592e91c15d.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: d8cb98eb-f3d9-4ee8-a378-b4592e91c15d 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: blog_header_cmc_comparison_guide.png 9 | file: 10 | type: file 11 | value: 8193321a-f41a-4445-a6d7-9eed32a5ccf4 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/xkFygjV3Syy2UNYjFCoRoQ-blog_header_cmc_comparison_guide.png 18 | type: text 19 | size: 20 | value: 57386 21 | type: number 22 | width: 23 | value: 819 24 | type: number 25 | height: 26 | value: 461 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.68193+00:00' 30 | modified: '2023-12-12T13:37:04.68193+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/db9ddb53-7047-4889-b5cb-31b7319b8de7.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: db9ddb53-7047-4889-b5cb-31b7319b8de7 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_twocolumn.svg 9 | file: 10 | type: file 11 | value: 5975af9e-1608-4c36-896d-f64bb6c3ee9f 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/rC_pqEIjTbCEY0A1hsSFwQ-icon_twocolumn.svg 18 | type: text 19 | size: 20 | value: 1089 21 | type: number 22 | width: 23 | value: 165 24 | type: number 25 | height: 26 | value: 165 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.987024+00:00' 30 | modified: '2023-12-12T13:37:03.987024+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/e03b3b2f-18dc-468b-b551-559b59e64062.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: e03b3b2f-18dc-468b-b551-559b59e64062 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: image-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: 7db4913f-d8d4-4190-b9ac-3de2d5507e33 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/stc4bX7kQr6HRmEU46Mg7Q-image-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 600 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:44:14.202011+00:00' 30 | modified: '2024-01-15T11:44:14.202011+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/e3963aca-5918-41b5-9ab7-db6785f7bbe3.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: e3963aca-5918-41b5-9ab7-db6785f7bbe3 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: hero_rectangle.png 9 | file: 10 | type: file 11 | value: 00dc4d43-c638-4bc4-9c06-579f10942088 12 | mediaType: 13 | value: image/png 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/Uq1cHqUkQ-KHkWlCMo7m6w-hero_rectangle.png 18 | type: text 19 | size: 20 | value: 76327 21 | type: number 22 | width: 23 | value: 510 24 | type: number 25 | height: 26 | value: 496 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.441475+00:00' 30 | modified: '2023-12-12T13:37:04.441475+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/e44a5f81-6c1d-4d91-af33-00b487613ecf.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: e44a5f81-6c1d-4d91-af33-00b487613ecf 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: spot.svg 9 | file: 10 | type: file 11 | value: edceb3f1-1f9f-4919-9d9d-669487d43087 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/j2RuS84JSE2yszOBBBs9Jg-spot.svg 18 | type: text 19 | size: 20 | value: 1241 21 | type: number 22 | width: 23 | value: 20 24 | type: number 25 | height: 26 | value: 20 27 | type: number 28 | custom: {} 29 | created: '2024-06-11T08:31:47.508783+00:00' 30 | modified: '2024-06-11T08:31:47.508783+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/ebb86899-7d34-4261-a085-dbf50629bfb9.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: ebb86899-7d34-4261-a085-dbf50629bfb9 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: icon_featured_callout.svg 9 | file: 10 | type: file 11 | value: 1cc4de0d-7d65-4830-b780-7f68230b2c9e 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/JOcz8rCfSESwsbqv5KWf7g-icon_featured_callout.svg 18 | type: text 19 | size: 20 | value: 6109 21 | type: number 22 | width: 23 | value: 220 24 | type: number 25 | height: 26 | value: 220 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.044322+00:00' 30 | modified: '2023-12-12T13:37:05.044322+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/eed5aadc-e335-4f1b-a9c5-dec180489cf4.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: eed5aadc-e335-4f1b-a9c5-dec180489cf4 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: cookie_icon.svg 9 | file: 10 | type: file 11 | value: 22f5c917-8122-4958-a518-1c1d301853d9 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/mK1VMuKERPGI3gFQh3ow7Q-cookie_icon.svg 18 | type: text 19 | size: 20 | value: 3617 21 | type: number 22 | width: 23 | value: 59 24 | type: number 25 | height: 26 | value: 59 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:04.022256+00:00' 30 | modified: '2023-12-12T13:37:04.022256+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/f02a73de-bab2-48da-a138-7463c1f82257.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: f02a73de-bab2-48da-a138-7463c1f82257 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: github_icon.svg 9 | file: 10 | type: file 11 | value: 08dc8f98-db90-47b8-9da2-a4f29dcb5c28 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/La00wu5URKud2JEfpyuZNw-github_icon.svg 18 | type: text 19 | size: 20 | value: 1325 21 | type: number 22 | width: 23 | value: 35 24 | type: number 25 | height: 26 | value: 34 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:03.980507+00:00' 30 | modified: '2023-12-12T13:37:03.980507+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/f6e7a90a-7050-42c2-8f73-d868c6fb5feb.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: f6e7a90a-7050-42c2-8f73-d868c6fb5feb 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: cup_delicious_coffee.jpg 9 | file: 10 | type: file 11 | value: 27f1147d-f7e7-45e6-b6d0-94bc9732e3b9 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/e49FBS7iQw-XQbg6isdlBg-cup_delicious_coffee.jpg 18 | type: text 19 | size: 20 | value: 2396183 21 | type: number 22 | width: 23 | value: 4608 24 | type: number 25 | height: 26 | value: 3072 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.628575+00:00' 30 | modified: '2023-12-12T13:37:05.628575+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/f85a8f0c-66f7-417e-87cc-efb2b6aac498.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: f85a8f0c-66f7-417e-87cc-efb2b6aac498 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: image-picture-svgrepo-com.svg 9 | file: 10 | type: file 11 | value: fe436a25-9c79-4a06-a3bf-be64cce9be53 12 | mediaType: 13 | value: image/svg+xml 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/mz7rjvIeRHGbZyypPL9qMg/6eCKRuP9SCufndB3Q-GG0w-image-picture-svgrepo-com.svg 18 | type: text 19 | size: 20 | value: 1659 21 | type: number 22 | width: 23 | value: 800 24 | type: number 25 | height: 26 | value: 800 27 | type: number 28 | custom: {} 29 | created: '2024-01-15T11:46:39.411642+00:00' 30 | modified: '2024-01-15T11:46:39.411642+00:00' 31 | -------------------------------------------------------------------------------- /content/asset/fb5c01d0-bfe4-4c1d-94cb-419f0580fa35.yaml: -------------------------------------------------------------------------------- 1 | asset: 2 | type: image 3 | _id: fb5c01d0-bfe4-4c1d-94cb-419f0580fa35 4 | _name: '' 5 | fields: 6 | title: 7 | type: text 8 | value: cervello_di_caffe_1.jpg 9 | file: 10 | type: file 11 | value: 5b25be30-aac9-4b2b-956a-973c529f2fea 12 | mediaType: 13 | value: image/jpeg 14 | type: text 15 | url: 16 | value: >- 17 | https://img.uniform.global/p/kCbnPCDaS0i62FtZC0jaqQ/REeAxlJsQSC_xoObZtjoTg-cervello_di_caffe_1.jpg 18 | type: text 19 | size: 20 | value: 113554 21 | type: number 22 | width: 23 | value: 987 24 | type: number 25 | height: 26 | value: 987 27 | type: number 28 | custom: {} 29 | created: '2023-12-12T13:37:05.188099+00:00' 30 | modified: '2023-12-12T13:37:05.188099+00:00' 31 | -------------------------------------------------------------------------------- /content/category/19f9419d-14da-496d-a4ac-eec5010e13d7.yaml: -------------------------------------------------------------------------------- 1 | id: 19f9419d-14da-496d-a4ac-eec5010e13d7 2 | name: Layouts & Containers 3 | order: 2 4 | -------------------------------------------------------------------------------- /content/category/1bf9504a-07c4-4873-bbca-f235a6da182b.yaml: -------------------------------------------------------------------------------- 1 | id: 1bf9504a-07c4-4873-bbca-f235a6da182b 2 | name: Navigation 3 | order: 3 4 | -------------------------------------------------------------------------------- /content/category/2da8c924-14d5-470b-9fe4-1e56521551e5.yaml: -------------------------------------------------------------------------------- 1 | id: 2da8c924-14d5-470b-9fe4-1e56521551e5 2 | name: Commerce 3 | order: 1 4 | -------------------------------------------------------------------------------- /content/category/31fcffb0-aead-4256-8e49-4d50cc28aa29.yaml: -------------------------------------------------------------------------------- 1 | id: 31fcffb0-aead-4256-8e49-4d50cc28aa29 2 | name: Page Type 3 | order: 5 4 | -------------------------------------------------------------------------------- /content/category/94a7a423-8c09-4264-8495-c562c17d811e.yaml: -------------------------------------------------------------------------------- 1 | id: 94a7a423-8c09-4264-8495-c562c17d811e 2 | name: Atoms 3 | order: 4 4 | -------------------------------------------------------------------------------- /content/category/ea001653-1f96-4f07-9187-a1626a4965e5.yaml: -------------------------------------------------------------------------------- 1 | id: ea001653-1f96-4f07-9187-a1626a4965e5 2 | name: Marketing 3 | order: 0 4 | -------------------------------------------------------------------------------- /content/component/carousel.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: carousel 4 | name: Carousel 5 | icon: stories 6 | parameters: [] 7 | categoryId: ea001653-1f96-4f07-9187-a1626a4965e5 8 | previewImageUrl: >- 9 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Carousel_preview_image 10 | useTeamPermissions: true 11 | slots: 12 | - id: carouselItem 13 | name: Carousel Item 14 | allowedComponents: [] 15 | allowAllComponents: false 16 | inheritAllowedComponents: true 17 | patternsInAllowedComponents: false 18 | canBeComposition: false 19 | created: '2023-08-28T12:30:17.833831+00:00' 20 | updated: '2024-01-02T07:54:50.143338+00:00' 21 | variants: 22 | - id: imageGallery 23 | name: Image Gallery 24 | - id: brochure 25 | name: Brochure 26 | -------------------------------------------------------------------------------- /content/component/iconLink.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: iconLink 4 | name: Icon Link 5 | icon: >- 6 | https://res.cloudinary.com/uniform-demos/image/upload/v1692281226/csk-icons/component-icons-v2/CSKicon_headerlink_coaugo_mfcseb.svg 7 | parameters: 8 | - id: icon 9 | name: Icon 10 | type: asset 11 | typeConfig: 12 | max: 1 13 | min: 0 14 | - id: link 15 | name: Link 16 | type: link 17 | typeConfig: 18 | required: false 19 | categoryId: 94a7a423-8c09-4264-8495-c562c17d811e 20 | previewImageUrl: >- 21 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Icon_link_preview_image 22 | useTeamPermissions: true 23 | slots: [] 24 | canBeComposition: false 25 | created: '2023-08-28T12:30:18.548641+00:00' 26 | updated: '2024-08-16T11:17:11.315+00:00' 27 | -------------------------------------------------------------------------------- /content/component/spacer.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: spacer 4 | name: Spacer 5 | icon: merge-horizontal 6 | parameters: 7 | - id: thickness 8 | name: Thickness 9 | type: tp-slider-parameter 10 | typeConfig: 11 | step: 10 12 | type: steps 13 | unit: px 14 | options: [] 15 | maxValue: 250 16 | minValue: 10 17 | categoryId: 19f9419d-14da-496d-a4ac-eec5010e13d7 18 | previewImageUrl: >- 19 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Spacer_preview_image 20 | useTeamPermissions: true 21 | slots: [] 22 | canBeComposition: false 23 | created: '2023-08-28T12:30:19.533721+00:00' 24 | updated: '2024-08-16T11:17:11.427099+00:00' 25 | variants: 26 | - id: horizontal 27 | name: Horizontal 28 | -------------------------------------------------------------------------------- /content/component/tab.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: tab 4 | name: Tab 5 | icon: tab 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | localizable: true 12 | - id: isActive 13 | name: Is Active 14 | type: checkbox 15 | typeConfig: null 16 | categoryId: 94a7a423-8c09-4264-8495-c562c17d811e 17 | previewImageUrl: >- 18 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Tab_preview_image 19 | useTeamPermissions: true 20 | slots: 21 | - id: content 22 | name: Content 23 | allowedComponents: [] 24 | allowAllComponents: true 25 | inheritAllowedComponents: false 26 | patternsInAllowedComponents: false 27 | titleParameter: title 28 | canBeComposition: false 29 | created: '2023-10-25T10:12:26.719454+00:00' 30 | updated: '2024-08-16T11:17:11.246678+00:00' 31 | -------------------------------------------------------------------------------- /content/component/tableDataCell.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: tableDataCell 4 | name: Table Data Cell 5 | icon: dice-1 6 | parameters: 7 | - id: value 8 | name: Value 9 | type: text 10 | typeConfig: null 11 | localizable: true 12 | categoryId: 94a7a423-8c09-4264-8495-c562c17d811e 13 | previewImageUrl: >- 14 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Table_data_cell_preview_image 15 | useTeamPermissions: true 16 | slots: [] 17 | titleParameter: value 18 | canBeComposition: false 19 | created: '2023-10-26T13:12:32.380868+00:00' 20 | updated: '2024-08-16T11:17:12.33147+00:00' 21 | -------------------------------------------------------------------------------- /content/component/tableHeaderCell.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: tableHeaderCell 4 | name: Table Header Cell 5 | icon: dice-1 6 | parameters: 7 | - id: value 8 | name: Value 9 | type: text 10 | typeConfig: null 11 | localizable: true 12 | categoryId: 94a7a423-8c09-4264-8495-c562c17d811e 13 | previewImageUrl: >- 14 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Table_header_cell_preview_image 15 | useTeamPermissions: true 16 | slots: [] 17 | titleParameter: value 18 | canBeComposition: false 19 | created: '2023-10-26T13:12:32.366374+00:00' 20 | updated: '2024-08-16T11:17:12.457523+00:00' 21 | -------------------------------------------------------------------------------- /content/component/tableRow.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: tableRow 4 | name: Table Row 5 | icon: view-list 6 | parameters: 7 | - id: highlightsOnHover 8 | name: Highlights on hover 9 | type: checkbox 10 | typeConfig: null 11 | categoryId: 94a7a423-8c09-4264-8495-c562c17d811e 12 | previewImageUrl: >- 13 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Table_row_preview_image 14 | useTeamPermissions: true 15 | slots: 16 | - id: cells 17 | name: Cells 18 | allowedComponents: 19 | - tableDataCell 20 | - tableHeaderCell 21 | - $loop 22 | allowAllComponents: false 23 | inheritAllowedComponents: false 24 | patternsInAllowedComponents: false 25 | canBeComposition: false 26 | created: '2023-10-26T13:12:30.805788+00:00' 27 | updated: '2024-08-16T11:17:12.164033+00:00' 28 | -------------------------------------------------------------------------------- /content/examples/category/9de490d5-96c4-4808-b51f-eadc2ee12667.yaml: -------------------------------------------------------------------------------- 1 | id: 9de490d5-96c4-4808-b51f-eadc2ee12667 2 | name: Coveo Search 3 | order: 6 4 | -------------------------------------------------------------------------------- /content/examples/category/d9790aaa-062a-4dd9-ae5e-30b3222a041c.yaml: -------------------------------------------------------------------------------- 1 | id: d9790aaa-062a-4dd9-ae5e-30b3222a041c 2 | name: Algolia Search 3 | order: 7 4 | -------------------------------------------------------------------------------- /content/examples/component/algolia-hit.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: algolia-hit 4 | name: Hit 5 | icon: play-list-search 6 | parameters: [] 7 | categoryId: d9790aaa-062a-4dd9-ae5e-30b3222a041c 8 | useTeamPermissions: true 9 | slots: [] 10 | canBeComposition: false 11 | created: '2023-12-21T10:16:51.317738+00:00' 12 | updated: '2023-12-21T11:01:46.222934+00:00' 13 | -------------------------------------------------------------------------------- /content/examples/component/algolia-hits.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: algolia-hits 4 | name: Hits 5 | icon: play-list-search 6 | parameters: 7 | - id: hitsParams 8 | name: Hits Parameters 9 | type: algolia-components 10 | typeConfig: 11 | selectedComponent: Hits 12 | categoryId: d9790aaa-062a-4dd9-ae5e-30b3222a041c 13 | previewImageUrl: >- 14 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Algolia/Hits_preview_image.jpg 15 | useTeamPermissions: true 16 | slots: 17 | - id: hitComponent 18 | name: Hit Component 19 | maxComponents: 1 20 | minComponents: 1 21 | allowedComponents: 22 | - algolia-hitProduct 23 | allowAllComponents: false 24 | inheritAllowedComponents: false 25 | patternsInAllowedComponents: false 26 | canBeComposition: false 27 | created: '2024-08-16T11:22:02.793657+00:00' 28 | updated: '2024-08-16T11:22:02.793657+00:00' 29 | -------------------------------------------------------------------------------- /content/examples/component/algolia-pagination.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: algolia-pagination 4 | name: Pagination 5 | icon: browser 6 | parameters: 7 | - id: paginationParams 8 | name: Pagination Parameters 9 | type: algolia-components 10 | typeConfig: 11 | selectedComponent: Pagination 12 | - id: pageSize 13 | name: Page Size 14 | type: number 15 | helpText: >- 16 | This parameter provides a way to set number of hits returned for each 17 | page. By default, its value is 20. 18 | typeConfig: 19 | min: '1' 20 | categoryId: d9790aaa-062a-4dd9-ae5e-30b3222a041c 21 | previewImageUrl: >- 22 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Algolia/Algolia_pagination_preview_image.jpg 23 | useTeamPermissions: true 24 | slots: [] 25 | canBeComposition: false 26 | created: '2024-08-16T11:22:02.803748+00:00' 27 | updated: '2024-08-16T11:22:02.803748+00:00' 28 | -------------------------------------------------------------------------------- /content/examples/component/algolia-refinementList.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: algolia-refinementList 4 | name: Refinement List 5 | icon: image-text 6 | parameters: 7 | - id: refinementListParams 8 | name: Refinement List Parameters 9 | type: algolia-components 10 | typeConfig: 11 | selectedComponent: Refinement List 12 | categoryId: d9790aaa-062a-4dd9-ae5e-30b3222a041c 13 | previewImageUrl: >- 14 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Algolia/Refinement_list_preview_image.jpg 15 | useTeamPermissions: true 16 | slots: [] 17 | canBeComposition: false 18 | created: '2024-08-16T11:22:02.723219+00:00' 19 | updated: '2024-08-16T11:22:02.723219+00:00' 20 | -------------------------------------------------------------------------------- /content/examples/component/algolia-searchBox.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: algolia-searchBox 4 | name: Search Box 5 | icon: search 6 | parameters: 7 | - id: searchBoxParams 8 | name: Search Box Parameters 9 | type: algolia-components 10 | typeConfig: 11 | selectedComponent: Search Box 12 | categoryId: d9790aaa-062a-4dd9-ae5e-30b3222a041c 13 | previewImageUrl: >- 14 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Algolia/Algolia_search_box_preview_image.jpg 15 | useTeamPermissions: true 16 | slots: [] 17 | canBeComposition: false 18 | created: '2024-08-16T11:22:02.877183+00:00' 19 | updated: '2024-08-16T11:22:02.877183+00:00' 20 | -------------------------------------------------------------------------------- /content/examples/component/coveo-breadcrumbManager.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-breadcrumbManager 4 | name: Breadcrumb Manager 5 | icon: scroll-h 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 12 | previewImageUrl: >- 13 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Breadcrumb_manager_preview_image 14 | useTeamPermissions: true 15 | slots: [] 16 | titleParameter: title 17 | canBeComposition: false 18 | created: '2024-08-16T11:22:02.802876+00:00' 19 | updated: '2024-08-16T11:22:02.802876+00:00' 20 | -------------------------------------------------------------------------------- /content/examples/component/coveo-facet.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-facet 4 | name: Facet 5 | icon: check-r 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | - id: facet 12 | name: Facet 13 | type: headless-components 14 | typeConfig: 15 | selectedComponent: Facet 16 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 17 | previewImageUrl: >- 18 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Facet_preview_image 19 | useTeamPermissions: true 20 | slots: [] 21 | titleParameter: title 22 | canBeComposition: false 23 | created: '2024-08-16T11:22:02.89577+00:00' 24 | updated: '2024-08-16T11:22:02.89577+00:00' 25 | -------------------------------------------------------------------------------- /content/examples/component/coveo-querySummary.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-querySummary 4 | name: Query Summary 5 | icon: info 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | - id: durationSettings 12 | name: Duration Settings 13 | type: select 14 | typeConfig: 15 | options: 16 | - text: Seconds 17 | value: seconds 18 | - text: Milliseconds 19 | value: milliseconds 20 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 21 | previewImageUrl: >- 22 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Query_summary_preview_image 23 | useTeamPermissions: true 24 | slots: [] 25 | titleParameter: title 26 | canBeComposition: false 27 | created: '2024-08-16T11:22:02.876661+00:00' 28 | updated: '2024-08-16T11:22:02.876661+00:00' 29 | -------------------------------------------------------------------------------- /content/examples/component/coveo-resultList.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-resultList 4 | name: Result List 5 | icon: play-list-search 6 | parameters: [] 7 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 8 | previewImageUrl: >- 9 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Result_list_preview_image 10 | useTeamPermissions: true 11 | slots: 12 | - id: resultItemComponent 13 | name: Result Item Component 14 | maxComponents: 1 15 | minComponents: 1 16 | allowedComponents: 17 | - coveo-resultListItem 18 | allowAllComponents: false 19 | inheritAllowedComponents: false 20 | patternsInAllowedComponents: false 21 | canBeComposition: false 22 | created: '2023-11-23T08:52:40.039422+00:00' 23 | updated: '2023-11-23T09:02:46.560143+00:00' 24 | -------------------------------------------------------------------------------- /content/examples/component/coveo-searchBox.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-searchBox 4 | name: Search Box 5 | icon: search-found 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | - id: placeholder 12 | name: Placeholder Text 13 | type: text 14 | typeConfig: null 15 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 16 | previewImageUrl: >- 17 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Search_box_preview_image 18 | useTeamPermissions: true 19 | slots: [] 20 | titleParameter: title 21 | canBeComposition: false 22 | created: '2024-08-16T11:22:02.861437+00:00' 23 | updated: '2024-08-16T11:22:02.861437+00:00' 24 | -------------------------------------------------------------------------------- /content/examples/component/coveo-searchProvider.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-searchProvider 4 | name: Search Provider 5 | icon: search-loading 6 | parameters: [] 7 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 8 | previewImageUrl: >- 9 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Search_provider_box_preview_image 10 | useTeamPermissions: true 11 | slots: 12 | - id: searchContent 13 | name: Search Content 14 | allowedComponents: 15 | - coveo-facet 16 | - coveo-searchBox 17 | - coveo-resultList 18 | - spacer 19 | - grid 20 | - coveo-pager 21 | - coveo-querySummary 22 | - coveo-breadcrumbManager 23 | - coveo-sort 24 | allowAllComponents: false 25 | inheritAllowedComponents: false 26 | patternsInAllowedComponents: false 27 | canBeComposition: false 28 | created: '2023-11-23T08:52:39.376153+00:00' 29 | updated: '2023-11-23T09:03:15.553255+00:00' 30 | -------------------------------------------------------------------------------- /content/examples/component/coveo-sort.yaml: -------------------------------------------------------------------------------- 1 | # yaml-language-server: $schema= 2 | $schema: https://uniform.app/schemas/json-schema/component-definition/v1.json 3 | id: coveo-sort 4 | name: Sort 5 | icon: sort-az 6 | parameters: 7 | - id: title 8 | name: Title 9 | type: text 10 | typeConfig: null 11 | - id: fieldsForSort 12 | name: Fields for sort 13 | type: json 14 | helpText: You can provide the fields to be sorted as an array 15 | typeConfig: 16 | schema: 17 | type: array 18 | items: 19 | type: string 20 | categoryId: 9de490d5-96c4-4808-b51f-eadc2ee12667 21 | previewImageUrl: >- 22 | https://res.cloudinary.com/uniform-demos/image/upload/v1/preview-images/UniformTheme/Coveo/Sort_preview_image 23 | useTeamPermissions: true 24 | slots: [] 25 | titleParameter: title 26 | canBeComposition: false 27 | created: '2024-08-16T11:22:02.883807+00:00' 28 | updated: '2024-08-16T11:22:02.883807+00:00' 29 | -------------------------------------------------------------------------------- /content/examples/previewUrl/8ee76987-3723-41dd-bd7b-c94867d24ff8.yaml: -------------------------------------------------------------------------------- 1 | id: 8ee76987-3723-41dd-bd7b-c94867d24ff8 2 | name: Vercel 3 | url: https://demos-csk-examples.vercel.app/api/preview?secret=hello-world 4 | order: 1 5 | -------------------------------------------------------------------------------- /content/examples/projectMapNode/algolia-search-engine_0bd42e92-5f3b-49cc-964d-77b8291af16a.yaml: -------------------------------------------------------------------------------- 1 | id: 0bd42e92-5f3b-49cc-964d-77b8291af16a 2 | name: Algolia Search Engine 3 | type: composition 4 | data: {} 5 | order: 600 6 | path: /examples/algolia-search-engine 7 | compositionId: 8928055b-ae74-472d-a024-bfcbe6f4f8ca 8 | pathSegment: algolia-search-engine 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/examples/projectMapNode/coveo-search-engine_61eb34d5-f2b4-4169-8d29-b316a89487be.yaml: -------------------------------------------------------------------------------- 1 | id: 61eb34d5-f2b4-4169-8d29-b316a89487be 2 | name: Coveo Search Engine 3 | type: composition 4 | data: {} 5 | order: 500 6 | path: /examples/coveo-search-engine 7 | compositionId: 1e418671-a585-4924-a25c-7a659a42975e 8 | pathSegment: coveo-search-engine 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/examples/projectMapNode/examples_b8994dfb-6a7e-4a10-a1af-e8dcf520a758.yaml: -------------------------------------------------------------------------------- 1 | id: b8994dfb-6a7e-4a10-a1af-e8dcf520a758 2 | name: Examples 3 | type: composition 4 | data: {} 5 | order: 500 6 | path: /examples 7 | compositionId: cfc87ad7-157c-42a8-9cf4-db1d0af05508 8 | pathSegment: examples 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/files/L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9VXzFZVHBtSVJIbVdmZzdNMEhVeC1nLWNsb2NrLnN2Zw==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /content/files/L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9hWWVvLUJCTlNnS0poeWZzNDRFWFRBLW1vdW50LnN2Zw==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /content/files/L3AvS2NGLWJGZGNSdHloZVVoTkxsRURKQS9jZUFaTDE1OVJKYWh6Uk5aeWZ4OFlRLW5leHQuc3Zn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS84MUY1N2Z1UlIzMmdqZUVYMFJNY3pRLWVzcHJlc3NvR1BUX2ltYQ==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS84MUY1N2Z1UlIzMmdqZUVYMFJNY3pRLWVzcHJlc3NvR1BUX2ltYQ==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94a0Z5Z2pWM1N5eTJVTllqRkNvUm9RLWJsb2dfaGVhZGVyX2NtYw==.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94a0Z5Z2pWM1N5eTJVTllqRkNvUm9RLWJsb2dfaGVhZGVyX2NtYw==.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94eTVVa0E2dlRmZUg3ZmQ3SG5qMGZBLXBlcnNvbl9waG90b18xLg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS94eTVVa0E2dlRmZUg3ZmQ3SG5qMGZBLXBlcnNvbl9waG90b18xLg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9BWm90Z2wwbFNSNmdJLUtKUE5QNW93LWljb25fY29udGVudC5zdg==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9HV3dwcTQyQVF5R2NEcm1DUnJUUXR3LWNlcnZlbGxvX2RpX2NhZg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9HV3dwcTQyQVF5R2NEcm1DUnJUUXR3LWNlcnZlbGxvX2RpX2NhZg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9KQTdkQnBJQlJSV3RjM0s2QmQteXNRLWZhdmljb24ucG5n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9KQTdkQnBJQlJSV3RjM0s2QmQteXNRLWZhdmljb24ucG5n.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9NSDVBSkdyY1I1ZUZneE5jNUVVSkhBLXVuaWZvcm1fY3NrX2xvZw==.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9NSDVBSkdyY1I1ZUZneE5jNUVVSkhBLXVuaWZvcm1fY3NrX2xvZw==.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9NSVdzRG9QWFN3LXpGWTFfVGRxRF9nLWljb25faW1wcm92ZS5zdg==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9OcVhnWHVfVlRVSzdGMzJ6TW5ZSml3LWljb25fYWNjb3JkaW9uLg==.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9PaXZBOXlfZFJfNnQ1UlFmUWk3OWpnLWVzcHJlc3NvR1BUX2ltYQ==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9PaXZBOXlfZFJfNnQ1UlFmUWk3OWpnLWVzcHJlc3NvR1BUX2ltYQ==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9QNjZleEpBU1JmU0RzeEpwYzlIbkd3LXdlYmluYXJfcG9zdGVyLg==.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9QNjZleEpBU1JmU0RzeEpwYzlIbkd3LXdlYmluYXJfcG9zdGVyLg==.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9SRWVBeGxKc1FTQ194b09iWnRqb1RnLWNlcnZlbGxvX2RpX2NhZg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9SRWVBeGxKc1FTQ194b09iWnRqb1RnLWNlcnZlbGxvX2RpX2NhZg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9VcTFjSHFVa1EtS0hrV2xDTW83bTZ3LWhlcm9fcmVjdGFuZ2xlLg==.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9VcTFjSHFVa1EtS0hrV2xDTW83bTZ3LWhlcm9fcmVjdGFuZ2xlLg==.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9ZZm9VRUtMYVJPdUx5SUJaNC1wX0NRLXBlcnNvbl9waG90b18zLg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9ZZm9VRUtMYVJPdUx5SUJaNC1wX0NRLXBlcnNvbl9waG90b18zLg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9iRFVKRjlyRlJiQ1ZIQkJTV0g3MER3LWVzcHJlc3NvR1BUX2ltYQ==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9iRFVKRjlyRlJiQ1ZIQkJTV0g3MER3LWVzcHJlc3NvR1BUX2ltYQ==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9lNDlGQlM3aVF3LVhRYmc2aXNkbEJnLWN1cF9kZWxpY2lvdXNfYw==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9lNDlGQlM3aVF3LVhRYmc2aXNkbEJnLWN1cF9kZWxpY2lvdXNfYw==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9nYnF0dmpsMFNIU0tacG1iNzBqNmlBLXBlcnNvbl9waG90b18yLg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9nYnF0dmpsMFNIU0tacG1iNzBqNmlBLXBlcnNvbl9waG90b18yLg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9naWVPMkZlOFRzLW1BaWRlX2lPRVhBLWNlcnZlbGxvX2RpX2NhZg==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9naWVPMkZlOFRzLW1BaWRlX2lPRVhBLWNlcnZlbGxvX2RpX2NhZg==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oMmhrc0t4M1N2LXBVbEFlTkJiQkVnLWNvcmVsX0RFU0lHTkVSXw==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oMmhrc0t4M1N2LXBVbEFlTkJiQkVnLWNvcmVsX0RFU0lHTkVSXw==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oNmw2cjZXb1RKR3ZQeFR4Q2FrYzRRLWVzcHJlc3NvR1BUX2ltYQ==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9oNmw2cjZXb1RKR3ZQeFR4Q2FrYzRRLWVzcHJlc3NvR1BUX2ltYQ==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9rMV9WWHo0Y1NvLXg3ZG5INHFfdDJnLXJlY3RhbmdsZS53ZWJw.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9rMV9WWHo0Y1NvLXg3ZG5INHFfdDJnLXJlY3RhbmdsZS53ZWJw.webp -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9vUlI5eTMzb1J4S1k2dUJTZHZ5cGh3LWhvdHNwb3RzLW1hcC5wbg==.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9vUlI5eTMzb1J4S1k2dUJTZHZ5cGh3LWhvdHNwb3RzLW1hcC5wbg==.png -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9wQ0xSb3dBdVFhLUtvR1ZtbjlaS0tnLWVzcHJlc3NvR1BUX2ltYQ==.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9wQ0xSb3dBdVFhLUtvR1ZtbjlaS0tnLWVzcHJlc3NvR1BUX2ltYQ==.jpg -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9yQzZOMnhxdVI0MjRqUVlUcHJxSm5BLWljb25fY29udGVudF93Lg==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /content/files/L3Ava0NiblBDRGFTMGk2MkZ0WkMwamFxUS9zWnYtNzJqSFF1U1EtUjY2LUxmNG9RLWljb25fYWNjb3JkaW9uXw==.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy80RjFVMVh1alFhdWl5MWJHOEM0bVhBLWFjY29yZGlvbi12ZXJ0aQ==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy84LW5jMDJEcFJ1VzVHRlItRklVX1NRLWFuYWx5dGljcy1zdmdyZQ==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy8xbDVqMUlrYVJheVpRVHJmWHR5Z0d3LWFuYWx5dGljcy1zdmdyZQ==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy95RlJ3OFprUlRraU9Qc1pTUW0wR2p3LWJsb2NrLXN2Z3JlcG8tYw==.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9CRXd0bzdhRVJ5LTVPQnduNjJzQWF3LWltYWdlLXN2Z3JlcG8tYw==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9JNVRQekpZSVF6Nnh5bzlYYlJuMmlnLWNvbnRlbnQtaW5saW5lLQ==.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9LZTE2aVNVTlREdUtnSkw4RVlwSVhRLWFjdGlvbi1zb2xpZC1zdg==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9QaVJVV0ZrLVJJNkM3dHMtYzZrbDdRLWJsb2NrLXN2Z3JlcG8tYw==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9qQVhzbE5nN1RaT1NtV0NaZXJGOGh3LWhvbWUtc21pbGUtc3Zncg==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /content/files/L3AvbXo3cmp2SWVSSEdiWnl5cFBMOXFNZy9zdGM0Ylg3a1FyNkhSbUVVNDZNZzdRLWltYWdlLXN2Z3JlcG8tYw==.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /content/previewUrl/1f0b4abe-e571-4a17-a926-49fdf0345df9.yaml: -------------------------------------------------------------------------------- 1 | id: 6ff7cc4c-e6c6-4d26-9926-4eb1e4617f8e 2 | name: Local 3 | url: http://localhost:3000/api/preview?secret=hello-world 4 | order: 0 5 | -------------------------------------------------------------------------------- /content/previewUrl/8ee76987-3723-41dd-bd7b-c94867d24ff8.yaml: -------------------------------------------------------------------------------- 1 | id: 8ee76987-3723-41dd-bd7b-c94867d24ff8 2 | name: Vercel 3 | url: https://components.uniform.app/api/preview?secret=hello-world 4 | order: 1 5 | -------------------------------------------------------------------------------- /content/previewViewport/1d90aea5-cb6b-4b14-b6ea-101ad29c44a1.yaml: -------------------------------------------------------------------------------- 1 | id: 1d90aea5-cb6b-4b14-b6ea-101ad29c44a1 2 | name: Tablet 3 | icon: device-ipad 4 | width: 768 5 | -------------------------------------------------------------------------------- /content/previewViewport/6ab0c64e-fed7-468c-aa48-3fb9ac9064a5.yaml: -------------------------------------------------------------------------------- 1 | id: 6ab0c64e-fed7-468c-aa48-3fb9ac9064a5 2 | name: Mobile 3 | icon: device-mobile 4 | width: 360 5 | -------------------------------------------------------------------------------- /content/previewViewport/edf75243-3e46-4d27-810b-abd23e5c65dd.yaml: -------------------------------------------------------------------------------- 1 | id: edf75243-3e46-4d27-810b-abd23e5c65dd 2 | name: Desktop 3 | icon: screen 4 | width: 1280 5 | -------------------------------------------------------------------------------- /content/projectMapDefinition/40535f31-cdc1-4ac3-bb4d-2a008493b431.yaml: -------------------------------------------------------------------------------- 1 | id: 40535f31-cdc1-4ac3-bb4d-2a008493b431 2 | name: Sitemap 3 | baseUrl: https://demos-csk.vercel.app 4 | default: true 5 | -------------------------------------------------------------------------------- /content/projectMapNode/_5a9c6cac-a0cd-43ca-b2df-8706b1f4ba81.yaml: -------------------------------------------------------------------------------- 1 | id: 5a9c6cac-a0cd-43ca-b2df-8706b1f4ba81 2 | name: Home 3 | order: 500 4 | path: / 5 | type: composition 6 | pathSegment: '' 7 | data: {} 8 | compositionId: 552a8a72-6c47-4993-bc45-f0148ea79904 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/accordions_626584c7-ec70-45eb-80ee-a4cda36d0a58.yaml: -------------------------------------------------------------------------------- 1 | id: 626584c7-ec70-45eb-80ee-a4cda36d0a58 2 | name: Accordions 3 | order: 100 4 | path: /components/accordions 5 | type: composition 6 | pathSegment: accordions 7 | data: {} 8 | compositionId: d7af4c54-9a0c-41af-9eda-4075a9e6dbec 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/atomic-components_cddada86-6f75-46ad-a520-d2a39f4bf6fa.yaml: -------------------------------------------------------------------------------- 1 | id: cddada86-6f75-46ad-a520-d2a39f4bf6fa 2 | name: Atomic Components 3 | order: 2000 4 | path: /components/atomic-components 5 | type: composition 6 | pathSegment: atomic-components 7 | data: {} 8 | compositionId: 8ab12d2d-5504-45d3-b721-044b636e39c6 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/banners_7a7b2f31-988c-47b2-abd9-e601b0ede3d9.yaml: -------------------------------------------------------------------------------- 1 | id: 7a7b2f31-988c-47b2-abd9-e601b0ede3d9 2 | name: Banners 3 | order: 1300 4 | path: /components/banners 5 | type: composition 6 | pathSegment: banners 7 | data: {} 8 | compositionId: c88ff38b-1703-4c03-bdeb-17c1e3133202 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/breadcrumbs_aeed197a-ba51-497f-8f3e-92dc601918f2.yaml: -------------------------------------------------------------------------------- 1 | id: aeed197a-ba51-497f-8f3e-92dc601918f2 2 | name: Breadcrumbs 3 | order: 900 4 | path: /components/breadcrumbs 5 | type: composition 6 | pathSegment: breadcrumbs 7 | data: {} 8 | compositionId: 50832ad7-a23f-4ffe-88df-8e5c391903d9 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/calls-to-action_408d4a7c-de15-4029-9521-05df3f20bdfc.yaml: -------------------------------------------------------------------------------- 1 | id: 408d4a7c-de15-4029-9521-05df3f20bdfc 2 | name: Calls to Action 3 | order: 400 4 | path: /components/calls-to-action 5 | type: composition 6 | pathSegment: calls-to-action 7 | data: {} 8 | compositionId: f932829e-a28d-447c-9905-ebdd46b3aceb 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/card-blocks_88ede0b7-bb7c-4d6b-b3f8-10b545bd986b.yaml: -------------------------------------------------------------------------------- 1 | id: 88ede0b7-bb7c-4d6b-b3f8-10b545bd986b 2 | name: Card Blocks 3 | order: 200 4 | path: /components/card-blocks 5 | type: composition 6 | pathSegment: card-blocks 7 | data: {} 8 | compositionId: 80717902-05d3-49ac-8a8b-017b31074615 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/carousels_fcebf9c9-e734-4e7b-94e5-be922d36de19.yaml: -------------------------------------------------------------------------------- 1 | id: fcebf9c9-e734-4e7b-94e5-be922d36de19 2 | name: Carousels 3 | order: 700 4 | path: /components/carousels 5 | type: composition 6 | pathSegment: carousels 7 | data: {} 8 | compositionId: 19e7c1e9-b0c2-4ecc-a826-cf372e362735 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/components_cab3997c-e1bb-4846-be31-9afeae37c5d4.yaml: -------------------------------------------------------------------------------- 1 | id: cab3997c-e1bb-4846-be31-9afeae37c5d4 2 | name: Components 3 | order: 400 4 | path: /components 5 | type: composition 6 | pathSegment: components 7 | data: {} 8 | compositionId: 6a9389b6-3495-4a08-b6d6-f0dce73e4606 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/content-blocks_435b7a20-cf5a-4e2a-a1ce-f674fe7ee044.yaml: -------------------------------------------------------------------------------- 1 | id: 435b7a20-cf5a-4e2a-a1ce-f674fe7ee044 2 | name: Content Blocks 3 | order: 0 4 | path: /components/content-blocks 5 | type: composition 6 | pathSegment: content-blocks 7 | data: {} 8 | compositionId: 92392ca2-400b-46bb-8892-b775a150b124 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/countdowns_c7379e60-ab85-4681-942b-9ed8c8622b53.yaml: -------------------------------------------------------------------------------- 1 | id: c7379e60-ab85-4681-942b-9ed8c8622b53 2 | name: Countdowns 3 | order: 1900 4 | path: /components/countdowns 5 | type: composition 6 | pathSegment: countdowns 7 | data: {} 8 | compositionId: 846209ed-4842-41f9-a4ff-cda23cc871ca 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/featured-callouts_97c2b0b3-66d9-4ecd-88dd-36bf5ce8144a.yaml: -------------------------------------------------------------------------------- 1 | id: 97c2b0b3-66d9-4ecd-88dd-36bf5ce8144a 2 | name: Featured Callouts 3 | order: 300 4 | path: /components/featured-callouts 5 | type: composition 6 | pathSegment: featured-callouts 7 | data: {} 8 | compositionId: 2abca1c9-4c73-431f-a661-0b1bd3d7f49a 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/headers-topnav_e0558074-87bb-41c9-962d-814853d8f829.yaml: -------------------------------------------------------------------------------- 1 | id: e0558074-87bb-41c9-962d-814853d8f829 2 | name: Header & Top Navigation 3 | order: 800 4 | path: /components/headers-topnav 5 | type: composition 6 | pathSegment: headers-topnav 7 | data: {} 8 | compositionId: ada37414-0c0a-4a3f-9fde-7130fb3a39e2 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/heroes_fc8a9187-2ae6-4a07-b6e4-6a81b97b0779.yaml: -------------------------------------------------------------------------------- 1 | id: fc8a9187-2ae6-4a07-b6e4-6a81b97b0779 2 | name: Heroes 3 | order: 500 4 | path: /components/heroes 5 | type: composition 6 | pathSegment: heroes 7 | data: {} 8 | compositionId: 8e0d242a-4ba6-45c5-a57a-e13f0b2cc193 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/hotspots_36dbc81a-a455-4d5b-8b98-16fb4bad234f.yaml: -------------------------------------------------------------------------------- 1 | id: 36dbc81a-a455-4d5b-8b98-16fb4bad234f 2 | name: Hotspots 3 | order: 650 4 | path: /components/hotspots 5 | type: composition 6 | pathSegment: hotspots 7 | data: {} 8 | compositionId: a75ef1fe-ee25-4c7a-aff5-9a5e1d700a42 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/image-gallery_ff09deec-49ab-4dee-8431-e9bf6e9a5d37.yaml: -------------------------------------------------------------------------------- 1 | id: ff09deec-49ab-4dee-8431-e9bf6e9a5d37 2 | name: Image Gallery 3 | order: 1600 4 | path: /components/image-gallery 5 | type: composition 6 | pathSegment: image-gallery 7 | data: {} 8 | compositionId: 2c4530ee-29f6-4497-9a96-4b51f3786241 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/images_ef6da4d5-cb59-4d0a-91b5-1c8021bbb786.yaml: -------------------------------------------------------------------------------- 1 | id: ef6da4d5-cb59-4d0a-91b5-1c8021bbb786 2 | name: Images 3 | order: 600 4 | path: /components/images 5 | type: composition 6 | pathSegment: images 7 | data: {} 8 | compositionId: 2516f825-86ee-4e8a-a686-8ce31e49adb6 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/layouts-container_a99b4044-8f9a-48fc-9f58-6c2fe4fb7534.yaml: -------------------------------------------------------------------------------- 1 | id: a99b4044-8f9a-48fc-9f58-6c2fe4fb7534 2 | name: Layouts & Containers 3 | order: -100 4 | path: /components/layouts-container 5 | type: composition 6 | pathSegment: layouts-container 7 | data: {} 8 | compositionId: 466dc82d-75e7-4e2f-b365-d6cc343befc0 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/modals_db6f4ac5-c28f-4305-a0d6-81e8db74e61c.yaml: -------------------------------------------------------------------------------- 1 | id: db6f4ac5-c28f-4305-a0d6-81e8db74e61c 2 | name: Modals 3 | order: 1500 4 | path: /components/modals 5 | type: composition 6 | pathSegment: modals 7 | data: {} 8 | compositionId: 46ef2835-2989-4467-aad5-d3eacfe91a10 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/pdp_f28599b9-2a0e-4f69-be98-9c32278237d4.yaml: -------------------------------------------------------------------------------- 1 | id: f28599b9-2a0e-4f69-be98-9c32278237d4 2 | name: Product Detail Page 3 | order: 1200 4 | path: /components/pdp 5 | type: composition 6 | pathSegment: pdp 7 | data: {} 8 | compositionId: 2e1bdedd-d37d-4230-97e2-f44913faaf2f 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/product-info_c6b270b9-bb82-4d6c-a40c-66cd80939c13.yaml: -------------------------------------------------------------------------------- 1 | id: c6b270b9-bb82-4d6c-a40c-66cd80939c13 2 | name: Product Info 3 | order: 1250 4 | path: /components/product-info 5 | type: composition 6 | pathSegment: product-info 7 | data: {} 8 | compositionId: 8fdcb37f-01a2-46ea-9e9e-2b8df0e7551c 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/reviews_d42bee8b-afda-49e3-8691-54ce2f39f809.yaml: -------------------------------------------------------------------------------- 1 | id: d42bee8b-afda-49e3-8691-54ce2f39f809 2 | name: Reviews 3 | order: 1400 4 | path: /components/reviews 5 | type: composition 6 | pathSegment: reviews 7 | data: {} 8 | compositionId: 42b0381e-8643-4aa4-a3b6-c49ab21344fd 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/rich-texts_00a9c22c-831d-4a04-ac70-d9313cf74f5c.yaml: -------------------------------------------------------------------------------- 1 | id: 00a9c22c-831d-4a04-ac70-d9313cf74f5c 2 | name: Rich Texts 3 | order: -200 4 | path: /components/rich-texts 5 | type: composition 6 | pathSegment: rich-texts 7 | data: {} 8 | compositionId: 1dced7dd-66d4-428f-8ae2-fcfeb084027d 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/spacers-dividers_8f4c8afc-f1a0-4443-855d-e5499eb9a91b.yaml: -------------------------------------------------------------------------------- 1 | id: 8f4c8afc-f1a0-4443-855d-e5499eb9a91b 2 | name: Spacers & Dividers 3 | order: 1000 4 | path: /components/spacers-dividers 5 | type: composition 6 | pathSegment: spacers-dividers 7 | data: {} 8 | compositionId: 75fe2464-d7c9-4373-a65b-2f63768a3646 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/tables_5c7e7bf1-e932-4cde-9ca6-414e85aef779.yaml: -------------------------------------------------------------------------------- 1 | id: 5c7e7bf1-e932-4cde-9ca6-414e85aef779 2 | name: Tables 3 | order: 1800 4 | path: /components/tables 5 | type: composition 6 | pathSegment: tables 7 | data: {} 8 | compositionId: ef7554a8-4580-4f6f-abe3-da87e2588d0b 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/tabs_3c6dc27e-75d9-45ae-890f-dcd15cfca35a.yaml: -------------------------------------------------------------------------------- 1 | id: 3c6dc27e-75d9-45ae-890f-dcd15cfca35a 2 | name: Tabs 3 | order: 1700 4 | path: /components/tabs 5 | type: composition 6 | pathSegment: tabs 7 | data: {} 8 | compositionId: bc3011ea-46a6-49eb-8aca-b1f432edccea 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/testimonials_6e8d556b-b9b7-4f21-a533-bcb2ef9d5c76.yaml: -------------------------------------------------------------------------------- 1 | id: 6e8d556b-b9b7-4f21-a533-bcb2ef9d5c76 2 | name: Testimonials 3 | order: 1450 4 | path: /components/testimonials 5 | type: composition 6 | pathSegment: testimonials 7 | data: {} 8 | compositionId: cb29df8c-6573-44f4-ad0a-f037faa9f561 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /content/projectMapNode/videos_98bc7d92-11bc-491b-9b1c-391760a3c875.yaml: -------------------------------------------------------------------------------- 1 | id: 98bc7d92-11bc-491b-9b1c-391760a3c875 2 | name: Video Players 3 | order: 1100 4 | path: /components/videos 5 | type: composition 6 | pathSegment: videos 7 | data: {} 8 | compositionId: 18490a18-819f-4b53-a3e7-07fd12b30228 9 | projectMapId: 40535f31-cdc1-4ac3-bb4d-2a008493b431 10 | -------------------------------------------------------------------------------- /info.txt: -------------------------------------------------------------------------------- 1 | repo: demo-v-next 2 | branch: release 3 | commit: 40c8283148660891571f2e46a13dfed62728d281 4 | project: component-starter-kit 5 | variant: default 6 | date/time: 12/20/2024, 2:44:21 PM -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | const nextConfig = { 2 | reactStrictMode: true, 3 | env: { 4 | NEXT_PUBLIC_APP_VERSION: process.env.npm_package_version, 5 | NEXT_PUBLIC_BUILD_TIMESTAMP: String(new Date().valueOf()), 6 | }, 7 | images: { 8 | remotePatterns: [{ protocol: 'https', hostname: '*' }], 9 | deviceSizes: [320, 420, 640, 768, 1024, 1280, 1536], 10 | }, 11 | }; 12 | 13 | module.exports = nextConfig; 14 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/public/badge.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/public/favicon.ico -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uniformdev/uniform-component-starter-kit/3f65dd2f850637a99e725353625a1883a5a66fb7/public/logo.png -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /src/canvas/Accordion/Accordion.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { UniformSlot, UniformText } from '@uniformdev/canvas-react'; 4 | import { AccordionProps } from '.'; 5 | 6 | export const Accordion: FC = ({ styles }) => ( 7 |
8 | 14 | 20 | 21 |
22 | ); 23 | -------------------------------------------------------------------------------- /src/canvas/Accordion/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Accordion } from './Accordion'; 3 | 4 | type Styles = { 5 | container?: string; 6 | title?: string; 7 | description?: string; 8 | }; 9 | 10 | export type AccordionProps = ComponentProps<{ 11 | title: string; 12 | description: string; 13 | styles?: Styles; 14 | }>; 15 | 16 | registerUniformComponent({ 17 | type: 'accordion', 18 | component: Accordion, 19 | }); 20 | 21 | export default Accordion; 22 | -------------------------------------------------------------------------------- /src/canvas/AccordionItem/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { AccordionItem } from './AccordionItem'; 3 | 4 | type Styles = { 5 | container?: string; 6 | toggleButton?: string; 7 | title?: string; 8 | description?: string; 9 | }; 10 | 11 | export type AccordionItemProps = ComponentProps<{ 12 | title: string; 13 | description: string; 14 | styles?: Styles; 15 | }>; 16 | 17 | registerUniformComponent({ 18 | type: 'accordionItem', 19 | component: AccordionItem, 20 | }); 21 | 22 | export default AccordionItem; 23 | export * from './decorator'; 24 | -------------------------------------------------------------------------------- /src/canvas/AddToCart/AddToCart.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useCallback } from 'react'; 2 | import BaseAddToCart from '../../components/BaseAddToCart'; 3 | import { AddToCartProps } from '.'; 4 | 5 | export const AddToCart: FC = ({ buttonStyle, buttonCopy, buttonAnimationType }) => { 6 | const handleButtonClick = useCallback(() => { 7 | window.alert('This is add to cart event placeholder'); 8 | }, []); 9 | 10 | return ( 11 | 17 | ); 18 | }; 19 | -------------------------------------------------------------------------------- /src/canvas/AddToCart/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { BaseAddToCartProps } from '../../components/BaseAddToCart'; 3 | import { AddToCart } from './AddToCart'; 4 | 5 | export type AddToCartProps = ComponentProps; 6 | 7 | registerUniformComponent({ 8 | type: 'addToCart', 9 | component: AddToCart, 10 | }); 11 | 12 | export default AddToCart; 13 | -------------------------------------------------------------------------------- /src/canvas/Banner/helpers.ts: -------------------------------------------------------------------------------- 1 | import { BannerVariant } from '.'; 2 | 3 | export const getPositionClassName = (position: Types.AvailableBannerPosition, inline: boolean) => { 4 | if (inline) return ''; 5 | switch (position) { 6 | case 'center': 7 | return 'top-1/2 -translate-y-1/2'; 8 | case 'top': 9 | return 'top-4'; 10 | default: 11 | return 'bottom-4'; 12 | } 13 | }; 14 | 15 | export const getWidthClassName = (variantId?: BannerVariant) => { 16 | switch (variantId) { 17 | case BannerVariant.FullWidth: 18 | return 'w-full'; 19 | default: 20 | return 'max-w-screen-xl'; 21 | } 22 | }; 23 | 24 | export const getTextAlignmentClassName = (textAlignment: Types.HorizontalAlignment) => { 25 | switch (textAlignment) { 26 | case 'center': 27 | return 'text-center'; 28 | case 'right': 29 | return 'text-right'; 30 | default: 31 | return 'text-left'; 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /src/canvas/Breadcrumbs/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Breadcrumbs } from './Breadcrumbs'; 3 | 4 | export type BreadcrumbSeparator = 'slash' | 'chevron' | 'none'; 5 | 6 | type Styles = { 7 | container?: string; 8 | }; 9 | export type BreadcrumbsProps = ComponentProps<{ 10 | colorStyle: Types.AvailableColor; 11 | displayRootNode: boolean; 12 | displayPlaceholderNodes: boolean; 13 | separator: BreadcrumbSeparator; 14 | styles?: Styles; 15 | }>; 16 | 17 | registerUniformComponent({ 18 | type: 'breadcrumbs', 19 | component: Breadcrumbs, 20 | }); 21 | 22 | export default Breadcrumbs; 23 | -------------------------------------------------------------------------------- /src/canvas/Button/Button.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformText, useUniformContextualEditingState } from '@uniformdev/canvas-react'; 3 | import BaseButton from '../../components/Button'; 4 | import { formatProjectMapLink } from '../../utilities'; 5 | import { ButtonProps } from '.'; 6 | 7 | export const Button: FC = ({ copy, link, style, animationType }) => { 8 | const { previewMode } = useUniformContextualEditingState(); 9 | const isContextualEditing = previewMode === 'editor'; 10 | 11 | if (!Boolean(copy) && !isContextualEditing) { 12 | return null; 13 | } 14 | 15 | return ( 16 | } 20 | style={style} 21 | /> 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/Button/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { Button } from './Button'; 3 | 4 | export type ButtonProps = ComponentProps<{ 5 | copy: string; 6 | link: Types.ProjectMapLink; 7 | style: Types.ButtonStyles; 8 | animationType?: Types.AnimationType; 9 | }>; 10 | 11 | registerUniformComponent({ 12 | type: 'button', 13 | component: Button, 14 | }); 15 | 16 | export default Button; 17 | -------------------------------------------------------------------------------- /src/canvas/CallToAction/helpers.ts: -------------------------------------------------------------------------------- 1 | import { CallToActionVariant } from '.'; 2 | 3 | export const getCallToActionContentClass = (variantId?: string) => { 4 | switch (variantId) { 5 | case CallToActionVariant.AlignLeft: 6 | return 'flex-col text-start items-start w-full'; 7 | case CallToActionVariant.AlignRight: 8 | return 'flex-col text-end items-end w-full'; 9 | case CallToActionVariant.Featured: 10 | return 'flex-col lg:flex-row text-start items-center justify-between w-full'; 11 | default: 12 | return 'flex-col text-center items-center w-full'; 13 | } 14 | }; 15 | 16 | export const getCallToActionTextWrappersClass = (variantId?: string) => { 17 | switch (variantId) { 18 | case CallToActionVariant.Featured: 19 | return 'w-4/5'; 20 | default: 21 | return ''; 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/CardBlock/helpers.ts: -------------------------------------------------------------------------------- 1 | export const getColorClassName = (textColorVariant?: Types.AvailableTextColorVariant) => { 2 | return textColorVariant === 'Light' ? 'text-primary-content' : 'text-secondary-content'; 3 | }; 4 | -------------------------------------------------------------------------------- /src/canvas/Carousel/CarouselInner.tsx: -------------------------------------------------------------------------------- 1 | import { useContext } from 'react'; 2 | import classNames from 'classnames'; 3 | import { useUniformContextualEditingState, UniformSlotProps } from '@uniformdev/canvas-react'; 4 | import { CarouselContext } from './Carousel'; 5 | 6 | export const CarouselInner: UniformSlotProps['wrapperComponent'] = ({ items }) => { 7 | const { previewMode } = useUniformContextualEditingState(); 8 | const isContextualEditing = previewMode === 'editor'; 9 | 10 | const { currentIndex } = useContext(CarouselContext); 11 | 12 | return ( 13 | <> 14 | {items.map((item, index) => ( 15 |
22 | {item} 23 |
24 | ))} 25 | 26 | ); 27 | }; 28 | -------------------------------------------------------------------------------- /src/canvas/Carousel/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Carousel } from './Carousel'; 3 | 4 | export enum CarouselVariants { 5 | ImageGallery = 'imageGallery', 6 | Brochure = 'brochure', 7 | } 8 | 9 | export type CarouselProps = ComponentProps; 10 | 11 | [undefined, CarouselVariants.ImageGallery, CarouselVariants.Brochure].forEach(variantId => { 12 | registerUniformComponent({ 13 | type: 'carousel', 14 | component: Carousel, 15 | variantId, 16 | }); 17 | }); 18 | 19 | export default Carousel; 20 | -------------------------------------------------------------------------------- /src/canvas/ContentBlock/index.ts: -------------------------------------------------------------------------------- 1 | import { Document } from '@contentful/rich-text-types'; 2 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 3 | import { ContentBlock } from './ContentBlock'; 4 | 5 | type Styles = { 6 | title?: string; 7 | text?: string; 8 | }; 9 | export type ContentBlockProps = ComponentProps<{ 10 | title?: string; 11 | titleStyle: Types.HeadingStyles; 12 | link?: Types.ProjectMapLink; 13 | text: string; 14 | content?: string | Document; 15 | styles?: Styles; 16 | }>; 17 | 18 | registerUniformComponent({ 19 | type: 'content', 20 | component: ContentBlock, 21 | }); 22 | 23 | export default ContentBlock; 24 | -------------------------------------------------------------------------------- /src/canvas/Countdown/Countdown.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import dynamic from 'next/dynamic'; 3 | import { CountdownProps } from '.'; 4 | import { getBoxStyle } from './helpers'; 5 | 6 | const CountdownEntry = dynamic(() => import('./CountdownEntry').then(mod => mod.CountdownEntry), { 7 | ssr: false, 8 | }); 9 | 10 | export const Countdown: FC = props => { 11 | const { size, component } = props; 12 | 13 | const boxClass = getBoxStyle(size, component?.variant); 14 | return ( 15 |
16 | 17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /src/canvas/Countdown/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { Countdown } from './Countdown'; 3 | 4 | export type CountdownProps = ComponentProps<{ 5 | targetDate: string; 6 | size?: Types.CountdownSize; 7 | }>; 8 | 9 | export enum CountdownVariant { 10 | LabelsUnder = 'labelsUnder', 11 | LabelsInBoxes = 'labelsInBoxes', 12 | } 13 | 14 | [undefined, CountdownVariant.LabelsUnder, CountdownVariant.LabelsInBoxes].forEach(variantId => 15 | registerUniformComponent({ 16 | type: 'countdown', 17 | component: Countdown, 18 | variantId, 19 | }) 20 | ); 21 | 22 | export default Countdown; 23 | -------------------------------------------------------------------------------- /src/canvas/Divider/Divider.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { DividerProps } from '.'; 4 | import { getAlignmentClassName, getDividerColorStyle, getDividerWidth } from './helpers'; 5 | 6 | export const Divider: FC = ({ colorStyle, thickness = 1, width, alignment }) => { 7 | return ( 8 |
9 |
13 |
14 | ); 15 | }; 16 | -------------------------------------------------------------------------------- /src/canvas/Divider/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { Divider } from './Divider'; 3 | 4 | export type DividerProps = ComponentProps<{ 5 | colorStyle?: Types.AvailableColor; 6 | thickness?: number; 7 | width?: Types.AvailableWidth; 8 | alignment?: Types.HorizontalAlignment; 9 | }>; 10 | 11 | export default Divider; 12 | 13 | registerUniformComponent({ 14 | type: 'divider', 15 | component: Divider, 16 | }); 17 | -------------------------------------------------------------------------------- /src/canvas/EnrichmentSetter/EnrichmentSetter.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useMemo, useEffect } from 'react'; 2 | import { useUniformContext } from '@uniformdev/context-react'; 3 | import { EnrichmentSetterProps } from '.'; 4 | 5 | export const EnrichmentSetter: FC = ({ enrichments: baseEnrichments = [] }) => { 6 | const { context } = useUniformContext(); 7 | 8 | const enrichments = useMemo( 9 | () => 10 | baseEnrichments.map(enrichment => ({ 11 | cat: enrichment?.fields?.cat?.value, 12 | key: enrichment?.fields?.key?.value, 13 | str: enrichment?.fields?.str?.value, 14 | })), 15 | [baseEnrichments] 16 | ); 17 | 18 | useEffect(() => { 19 | context.update({ enrichments }); 20 | }, [context, enrichments]); 21 | 22 | return null; 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/EnrichmentSetter/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { EnrichmentSetter } from './EnrichmentSetter'; 3 | 4 | type Enrichment = { 5 | fields: { 6 | cat: { 7 | value: string; 8 | }; 9 | key: { 10 | value: string; 11 | }; 12 | str: { 13 | value: number; 14 | }; 15 | }; 16 | }; 17 | 18 | export type EnrichmentSetterProps = ComponentProps<{ 19 | enrichments: Enrichment[]; 20 | }>; 21 | 22 | registerUniformComponent({ 23 | type: 'enrichmentSetter', 24 | component: EnrichmentSetter, 25 | }); 26 | 27 | export default EnrichmentSetter; 28 | -------------------------------------------------------------------------------- /src/canvas/Feature/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Feature } from './Feature'; 4 | 5 | export type FeatureProps = ComponentProps<{ 6 | title: string; 7 | link: Types.ProjectMapLink; 8 | description: string; 9 | icon?: string | Asset | Types.CloudinaryImage; 10 | }>; 11 | 12 | registerUniformComponent({ 13 | type: 'feature', 14 | component: Feature, 15 | }); 16 | 17 | export default Feature; 18 | export * from './decorator'; 19 | -------------------------------------------------------------------------------- /src/canvas/FeaturedCallout/helpers.ts: -------------------------------------------------------------------------------- 1 | import { FeaturedCalloutVariant } from '../FeaturedCallout'; 2 | 3 | export const getFeaturedCalloutContentClass = (variantId?: string) => { 4 | switch (variantId) { 5 | case FeaturedCalloutVariant.ImageRight: 6 | return 'lg:order-1 justify-end'; 7 | default: 8 | return ''; 9 | } 10 | }; 11 | 12 | export const getFeaturedCalloutTextContentClass = (variantId?: string) => { 13 | switch (variantId) { 14 | case FeaturedCalloutVariant.ImageRight: 15 | return 'lg:justify-end'; 16 | default: 17 | return ''; 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /src/canvas/FeaturedCallout/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { FeaturedCallout } from './FeaturedCallout'; 4 | 5 | export type FeaturedCalloutProps = ComponentProps<{ 6 | eyebrowText?: string; 7 | title: string; 8 | titleStyle: Types.HeadingStyles; 9 | description: string; 10 | image?: string | Asset | Types.CloudinaryImage; 11 | }>; 12 | 13 | export enum FeaturedCalloutVariant { 14 | ImageRight = 'imageRight', 15 | } 16 | 17 | [undefined, FeaturedCalloutVariant.ImageRight].forEach(variantId => { 18 | registerUniformComponent({ 19 | type: 'featuredCallout', 20 | component: FeaturedCallout, 21 | variantId, 22 | }); 23 | }); 24 | 25 | export default FeaturedCallout; 26 | -------------------------------------------------------------------------------- /src/canvas/Hotspots/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Hotspots } from './Hotspots'; 4 | 5 | export type HotspotsProps = ComponentProps<{ 6 | backgroundImage?: Asset[]; 7 | alt?: string; 8 | 9 | fill?: boolean; 10 | height?: string; 11 | width?: string; 12 | objectFit?: Types.AvailableObjectFit; 13 | }>; 14 | 15 | registerUniformComponent({ 16 | type: 'hotspots', 17 | component: Hotspots, 18 | }); 19 | 20 | export default Hotspots; 21 | -------------------------------------------------------------------------------- /src/canvas/Image/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Image } from './Image'; 4 | 5 | export type ImageProps = ComponentProps<{ 6 | src: string | Asset | Types.CloudinaryImage; 7 | width?: string; 8 | height?: string; 9 | alt?: string; 10 | fill?: boolean; 11 | quality?: number; 12 | priority?: boolean; 13 | overlayColor?: Types.AvailableColor; 14 | overlayOpacity?: Types.AvailableOpacity; 15 | borderColor?: Types.AvailableColor; 16 | borderWidth?: string; 17 | borderRadius?: Types.AvailableBorderRadius; 18 | objectFit?: Types.AvailableObjectFit; 19 | }>; 20 | 21 | registerUniformComponent({ 22 | type: 'image', 23 | component: Image, 24 | }); 25 | 26 | export default Image; 27 | -------------------------------------------------------------------------------- /src/canvas/ImageGallery/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { ContainerVariants } from '../../components/Container'; 3 | import BaseImageGallery from '../../components/BaseImageGallery'; 4 | 5 | [undefined, ContainerVariants.BackgroundInContainer, ContainerVariants.FluidContent].forEach(variantId => { 6 | registerUniformComponent({ 7 | type: 'imageGallery', 8 | component: BaseImageGallery, 9 | variantId, 10 | }); 11 | }); 12 | 13 | // Deprecated. Please use imageGallery component instead of productGallery. The productGallery will be removed. 14 | [undefined, ContainerVariants.BackgroundInContainer, ContainerVariants.FluidContent].forEach(variantId => { 15 | registerUniformComponent({ 16 | type: 'productGallery', 17 | component: BaseImageGallery, 18 | variantId, 19 | }); 20 | }); 21 | 22 | export * from '../../components/BaseImageGallery'; 23 | export default BaseImageGallery; 24 | -------------------------------------------------------------------------------- /src/canvas/Modal/helpers.ts: -------------------------------------------------------------------------------- 1 | export const getModalMaxWidth = (maxWidth: Types.AvailableModalMaxWidth) => { 2 | switch (maxWidth) { 3 | case 'small': 4 | return 'max-w-sm'; 5 | case 'medium': 6 | return 'max-w-md'; 7 | case 'large': 8 | return 'max-w-lg'; 9 | case 'xLarge': 10 | return 'max-w-xl'; 11 | default: 12 | return 'max-w-max'; 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /src/canvas/Modal/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { withoutContainer } from '../../hocs/withoutContainer'; 3 | import { Modal } from './Modal'; 4 | 5 | export type ModalProps = ComponentProps<{ 6 | closeOnClickOutside: boolean; 7 | maxWidth: Types.AvailableModalMaxWidth; 8 | automaticOpenTimeout: number; 9 | }>; 10 | 11 | registerUniformComponent({ 12 | type: 'modal', 13 | component: withoutContainer(Modal), 14 | }); 15 | 16 | export default withoutContainer(Modal); 17 | -------------------------------------------------------------------------------- /src/canvas/Page/Page.tsx: -------------------------------------------------------------------------------- 1 | import { FC, Fragment } from 'react'; 2 | import { PageProps } from '.'; 3 | import { PageContent } from '../../components/BasePage/BasePage'; 4 | 5 | export const Page: FC = () => ; 6 | -------------------------------------------------------------------------------- /src/canvas/Page/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { Page } from './Page'; 3 | 4 | export type PageProps = ComponentProps; 5 | 6 | ['page', 'productDetailsPage', 'landingPage', 'productCategoryPage', 'articleDetailsPage'].forEach(pageType => { 7 | registerUniformComponent({ 8 | type: pageType, 9 | component: Page, 10 | }); 11 | }); 12 | 13 | export default Page; 14 | -------------------------------------------------------------------------------- /src/canvas/Price/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { Price } from './Price'; 3 | 4 | export type PriceProps = ComponentProps<{ 5 | label?: string; 6 | labelStyle: Types.HeadingStyles; 7 | price?: number | string; 8 | currency?: string; 9 | }>; 10 | 11 | registerUniformComponent({ 12 | type: 'price', 13 | component: Price, 14 | }); 15 | 16 | export default Price; 17 | -------------------------------------------------------------------------------- /src/canvas/ProductDetails/ProductDetails.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformSlot } from '@uniformdev/canvas-react'; 3 | import BaseContainer from '../../components/Container'; 4 | import { ProductDetailsProps } from '.'; 5 | 6 | export const ProductDetails: FC = props => ( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /src/canvas/ProductDetails/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { ContainerProps as BaseContainerProps, ContainerVariants } from '../../components/Container'; 3 | import { withoutContainer } from '../../hocs/withoutContainer'; 4 | import { ProductDetails } from './ProductDetails'; 5 | 6 | export type ProductDetailsProps = ComponentProps; 7 | 8 | [undefined, ContainerVariants.BackgroundInContainer, ContainerVariants.FluidContent].forEach(variantId => { 9 | registerUniformComponent({ 10 | type: 'productDetails', 11 | component: withoutContainer(ProductDetails), 12 | variantId, 13 | }); 14 | }); 15 | 16 | export default withoutContainer(ProductDetails); 17 | -------------------------------------------------------------------------------- /src/canvas/ProductInfo/ProductInfo.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useCallback } from 'react'; 2 | import BaseProductInfo from '../../components/BaseProductInfo'; 3 | import { ProductInfoProps } from '.'; 4 | 5 | export const ProductInfo: FC = props => { 6 | const handlePrimaryButtonClick = useCallback(() => { 7 | window.alert('This is add to cart event placeholder'); 8 | }, []); 9 | 10 | return ; 11 | }; 12 | -------------------------------------------------------------------------------- /src/canvas/ProductInfo/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { type Props as BaseProductInfoProps } from '../../components/BaseProductInfo'; 3 | import { ProductInfo } from './ProductInfo'; 4 | 5 | export type ProductInfoProps = ComponentProps; 6 | 7 | registerUniformComponent({ 8 | type: 'productInfo', 9 | component: ProductInfo, 10 | }); 11 | 12 | export default ProductInfo; 13 | -------------------------------------------------------------------------------- /src/canvas/Spacer/Spacer.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { SpacerProps, SpacerVariants } from '.'; 3 | 4 | export const Spacer: FC = ({ thickness, component }) => ( 5 |
9 | ); 10 | -------------------------------------------------------------------------------- /src/canvas/Spacer/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import { withoutContainer } from '../../hocs/withoutContainer'; 3 | import { Spacer } from './Spacer'; 4 | 5 | export type SpacerProps = ComponentProps<{ 6 | colorStyle: Types.AvailableColor; 7 | thickness: number; 8 | }>; 9 | 10 | export enum SpacerVariants { 11 | Horizontal = 'horizontal', 12 | } 13 | 14 | [undefined, SpacerVariants.Horizontal].forEach(variantId => { 15 | registerUniformComponent({ 16 | type: 'spacer', 17 | component: withoutContainer(Spacer), 18 | variantId, 19 | }); 20 | }); 21 | 22 | export default withoutContainer(Spacer); 23 | -------------------------------------------------------------------------------- /src/canvas/Tab/Tab.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformSlot } from '@uniformdev/canvas-react'; 3 | import EmptyPlaceholder from '../../components/EmptyPlaceholder'; 4 | 5 | export const Tab: FC = () => } />; 6 | -------------------------------------------------------------------------------- /src/canvas/Tab/TabTitle.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classnames from 'classnames'; 3 | import { TabTitleProps } from '.'; 4 | import { getTabSize, getTabStyle } from './helpers'; 5 | 6 | export const TabTitle: FC = ({ title, style, size, isActive, onClick }) => ( 7 | 13 | ); 14 | -------------------------------------------------------------------------------- /src/canvas/Tab/helpers.ts: -------------------------------------------------------------------------------- 1 | export const getTabSize = (size: string) => { 2 | switch (size) { 3 | case 'tiny': 4 | return 'tab-xs'; 5 | case 'small': 6 | return 'tab-sm'; 7 | case 'large': 8 | return 'tab-lg'; 9 | default: 10 | return ''; 11 | } 12 | }; 13 | 14 | export const getTabStyle = (style: string) => { 15 | switch (style) { 16 | case 'bordered': 17 | return 'tab-bordered'; 18 | case 'lifted': 19 | return 'tab-lifted'; 20 | default: 21 | return ''; 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/Tab/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Tab } from './Tab'; 3 | 4 | export type TabTitleProps = { 5 | title: string; 6 | size: Types.TabSize; 7 | style: Types.TabStyle; 8 | isActive: boolean; 9 | onClick: () => void; 10 | }; 11 | 12 | registerUniformComponent({ 13 | type: 'tab', 14 | component: Tab, 15 | }); 16 | 17 | export default Tab; 18 | export * from './TabTitle'; 19 | -------------------------------------------------------------------------------- /src/canvas/Table/Table.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classnames from 'classnames'; 3 | import { UniformSlot } from '@uniformdev/canvas-react'; 4 | import EmptyPlaceholder from '../../components/EmptyPlaceholder'; 5 | import { TableProps, TableVariant } from '.'; 6 | import { getTableSize } from './helpers'; 7 | 8 | export const Table: FC = ({ size, component }) => ( 9 |
10 | 15 | 16 | } /> 17 | 18 | 19 | } /> 20 | 21 |
22 |
23 | ); 24 | -------------------------------------------------------------------------------- /src/canvas/Table/TableDataCell.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformText } from '@uniformdev/canvas-react'; 3 | import { TableCellProps } from '.'; 4 | 5 | export const TableDataCell: FC = () => ( 6 | 7 | 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /src/canvas/Table/TableHeaderCell.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformText } from '@uniformdev/canvas-react'; 3 | import { TableCellProps } from '.'; 4 | 5 | export const TableHeaderCell: FC = () => ( 6 | 7 | 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /src/canvas/Table/TableRow.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classnames from 'classnames'; 3 | import { UniformSlot } from '@uniformdev/canvas-react'; 4 | import { TableRowProps } from '.'; 5 | 6 | export const TableRow: FC = ({ highlightsOnHover }) => ( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /src/canvas/Table/helpers.ts: -------------------------------------------------------------------------------- 1 | export const getTableSize = (size: string) => { 2 | switch (size) { 3 | case 'tiny': 4 | return 'table-xs'; 5 | case 'small': 6 | return 'table-sm'; 7 | case 'large': 8 | return 'table-lg'; 9 | default: 10 | return ''; 11 | } 12 | }; 13 | -------------------------------------------------------------------------------- /src/canvas/Tabs/helpers.ts: -------------------------------------------------------------------------------- 1 | export const getTabStyle = (style: string) => { 2 | switch (style) { 3 | case 'boxed': 4 | return 'tabs-boxed bg-transparent'; 5 | default: 6 | return ''; 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/canvas/Tabs/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Tabs } from './Tabs'; 3 | 4 | type Styles = { 5 | container?: string; 6 | }; 7 | 8 | export type TabsProps = ComponentProps<{ 9 | size: 'tiny' | 'small' | 'normal' | 'large'; 10 | styles?: Styles; 11 | }>; 12 | 13 | export enum TabsVariant { 14 | Boxed = 'boxed', 15 | Lifted = 'lifted', 16 | Bordered = 'bordered', 17 | } 18 | 19 | [undefined, TabsVariant.Bordered, TabsVariant.Lifted, TabsVariant.Boxed].forEach(variantId => { 20 | registerUniformComponent({ 21 | type: 'tabs', 22 | component: Tabs, 23 | variantId, 24 | }); 25 | }); 26 | 27 | export default Tabs; 28 | -------------------------------------------------------------------------------- /src/canvas/Testimonial/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Testimonial } from './Testimonial'; 4 | 5 | export enum TestimonialVariant { 6 | CardWrapped = 'cardWrapped', 7 | } 8 | 9 | export type TestimonialProps = ComponentProps<{ 10 | personName: string; 11 | picture?: string | Asset; 12 | logo?: string | Asset; 13 | description: string; 14 | lineCountRestriction: Types.AvailableMaxLineCount; 15 | }>; 16 | 17 | [undefined, TestimonialVariant.CardWrapped].forEach(variantId => 18 | registerUniformComponent({ 19 | type: 'testimonial', 20 | component: Testimonial, 21 | variantId, 22 | }) 23 | ); 24 | 25 | export default Testimonial; 26 | -------------------------------------------------------------------------------- /src/canvas/Video/PlayButton.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | 3 | type PlayButtonProps = { 4 | onClick: () => void; 5 | }; 6 | 7 | export const PlayButton: FC = ({ onClick }) => ( 8 | 31 | ); 32 | -------------------------------------------------------------------------------- /src/canvas/Video/index.ts: -------------------------------------------------------------------------------- 1 | import { registerUniformComponent, ComponentProps } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Video } from './Video'; 4 | 5 | export type VideoProps = ComponentProps<{ 6 | url: Types.ProjectMapLink; 7 | autoPlay?: boolean; 8 | loop?: boolean; 9 | controls: boolean; 10 | lazyLoad?: boolean; 11 | placeholderImage?: string | Asset; 12 | muted: boolean; 13 | }>; 14 | 15 | registerUniformComponent({ 16 | type: 'video', 17 | component: Video, 18 | }); 19 | 20 | export default Video; 21 | -------------------------------------------------------------------------------- /src/canvas/_atoms/Hotspot/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Hotspot } from './Hotspot'; 4 | 5 | export type HotspotProps = ComponentProps<{ 6 | icon?: Asset[]; 7 | iconHorizontalPosition?: string; 8 | iconVerticalPosition?: string; 9 | 10 | tooltipPosition?: Types.Position; 11 | tooltipWidth?: string; 12 | tooltipBackgroundColor?: Types.ThemeColorsValues | string; 13 | withTooltipShadow?: boolean; 14 | }>; 15 | 16 | registerUniformComponent({ 17 | type: 'hotspot', 18 | component: Hotspot, 19 | }); 20 | 21 | export default Hotspot; 22 | -------------------------------------------------------------------------------- /src/canvas/_atoms/RichText/index.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from 'react'; 2 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 3 | import { RichTextNode } from '@uniformdev/richtext'; 4 | import { RichText } from './RichText'; 5 | 6 | type Styles = { 7 | content?: string; 8 | }; 9 | 10 | // Deprecated. Please use new RichTextVariants component with. The RichTextVariants.Light will be removed 11 | export enum RichTextVariants { 12 | Light = 'light', 13 | } 14 | 15 | export type RichTextProps = ComponentProps<{ 16 | content?: RichTextNode; 17 | color?: Types.ThemeColorsValues | string; 18 | style?: CSSProperties; 19 | styles?: Styles; 20 | }>; 21 | 22 | registerUniformComponent({ 23 | type: 'richText', 24 | component: RichText, 25 | }); 26 | 27 | export default RichText; 28 | -------------------------------------------------------------------------------- /src/canvas/_atoms/Text/index.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from 'react'; 2 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 3 | import { Text } from './Text'; 4 | 5 | export type TextSizes = 6 | | 'XS' 7 | | 'SM' 8 | | 'Base' 9 | | 'LG' 10 | | 'XL' 11 | | '2XL' 12 | | '3XL' 13 | | '4XL' 14 | | '5XL' 15 | | '6XL' 16 | | '7XL' 17 | | '8XL' 18 | | '9XL'; 19 | 20 | export type TextTags = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span'; 21 | export type TextLetterSpacing = 'tighter' | 'tight' | 'normal' | 'wide' | 'wider' | 'widest'; 22 | 23 | export type TextProps = ComponentProps<{ 24 | text?: string; 25 | tag?: TextTags; 26 | color?: Types.ThemeColorsValues | string; 27 | size?: TextSizes; 28 | letterSpacing?: TextLetterSpacing; 29 | style?: CSSProperties; 30 | }>; 31 | 32 | registerUniformComponent({ 33 | type: 'text', 34 | component: Text, 35 | }); 36 | 37 | export default Text; 38 | -------------------------------------------------------------------------------- /src/canvas/_containers/AdvancedContainer/index.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from 'react'; 2 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 3 | import { AdvancedContainer } from './AdvancedContainer'; 4 | import { withoutContainer } from '../../../hocs/withoutContainer'; 5 | import { PaddingSize } from '../../../utilities/styling'; 6 | 7 | export enum AdvancedContainerVariants { 8 | FluidContent = 'fluidContent', 9 | } 10 | 11 | export type AdvancedContainerProps = ComponentProps<{ 12 | title?: string; 13 | backgroundColor?: Types.ThemeColorsValues | string; 14 | paddingTop?: PaddingSize; 15 | paddingBottom?: PaddingSize; 16 | marginTop?: PaddingSize; 17 | marginBottom?: PaddingSize; 18 | style: CSSProperties; 19 | }>; 20 | 21 | [undefined, AdvancedContainerVariants.FluidContent].forEach(variantId => { 22 | registerUniformComponent({ 23 | type: 'advancedContainer', 24 | component: withoutContainer(AdvancedContainer, { withoutPaddings: true }), 25 | variantId, 26 | }); 27 | }); 28 | 29 | export default AdvancedContainer; 30 | -------------------------------------------------------------------------------- /src/canvas/_containers/Box/Box.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformSlot } from '@uniformdev/canvas-react'; 3 | import { BoxProps } from '.'; 4 | import EmptyPlaceholder from '../../../components/EmptyPlaceholder'; 5 | 6 | // eslint-disable-next-line @typescript-eslint/no-unused-vars 7 | export const Box: FC = ({ style, component, ...restStyles }) => ( 8 |
9 | } /> 10 |
11 | ); 12 | -------------------------------------------------------------------------------- /src/canvas/_containers/Box/index.ts: -------------------------------------------------------------------------------- 1 | import { CSSProperties } from 'react'; 2 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 3 | import { Box } from './Box'; 4 | 5 | export type BoxProps = ComponentProps<{ 6 | style: CSSProperties; 7 | }>; 8 | 9 | registerUniformComponent({ 10 | type: 'box', 11 | component: Box, 12 | }); 13 | -------------------------------------------------------------------------------- /src/canvas/_containers/Container/Container.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformSlot } from '@uniformdev/canvas-react'; 3 | import BaseContainer from '../../../components/Container'; 4 | import EmptyPlaceholder from '../../../components/EmptyPlaceholder'; 5 | import { ContainerProps } from '.'; 6 | 7 | export const Container: FC = props => ( 8 | 9 | } /> 10 | 11 | ); 12 | -------------------------------------------------------------------------------- /src/canvas/_containers/Container/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { withoutContainer } from '../../../hocs/withoutContainer'; 3 | import { ContainerProps as BaseContainerProps, ContainerVariants } from '../../../components/Container'; 4 | import { Container } from './Container'; 5 | 6 | export type ContainerProps = ComponentProps; 7 | 8 | [undefined, ContainerVariants.BackgroundInContainer, ContainerVariants.FluidContent].forEach(variantId => { 9 | registerUniformComponent({ 10 | type: 'container', 11 | component: withoutContainer(Container), 12 | variantId, 13 | }); 14 | }); 15 | 16 | export default Container; 17 | -------------------------------------------------------------------------------- /src/canvas/_containers/Grid/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { Grid } from './Grid'; 3 | import { ContainerProps } from '../Container'; 4 | import { withoutContainer } from '../../../hocs/withoutContainer'; 5 | 6 | export type GridProps = ComponentProps< 7 | ContainerProps & { 8 | columnsCount: Types.AvailableColumnCount; 9 | gapY: Types.AvailableGapVariants; 10 | gapX: Types.AvailableGapVariants; 11 | } 12 | >; 13 | 14 | registerUniformComponent({ 15 | type: 'grid', 16 | component: withoutContainer(Grid, { additionalClassName: 'w-full' }), 17 | }); 18 | 19 | export default withoutContainer(Grid, { additionalClassName: 'w-full' }); 20 | -------------------------------------------------------------------------------- /src/canvas/_containers/GridItem/GridItem.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { UniformSlot, registerUniformComponent } from '@uniformdev/canvas-react'; 4 | import { 5 | getGridColumnsSpanClass, 6 | getGridColumnsStartClass, 7 | getGridRowsSpanClass, 8 | getGridRowsStartClass, 9 | } from './helpers'; 10 | import { GridItemProps } from '.'; 11 | import EmptyPlaceholder from '../../../components/EmptyPlaceholder'; 12 | 13 | const GridItem: FC = ({ columnStart, columnSpan, rowSpan, rowStart }) => ( 14 |
22 | } /> 23 |
24 | ); 25 | 26 | registerUniformComponent({ 27 | type: 'gridItem', 28 | component: GridItem, 29 | }); 30 | 31 | export default GridItem; 32 | -------------------------------------------------------------------------------- /src/canvas/_containers/GridItem/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import GridItem from './GridItem'; 3 | 4 | export type GridItemProps = ComponentProps<{ 5 | columnSpan?: Types.AvailableColumnCount; 6 | columnStart?: Types.AvailableColumnCount; 7 | rowSpan?: Types.AvailableRowCount; 8 | rowStart?: Types.AvailableRowCount; 9 | }>; 10 | 11 | registerUniformComponent({ 12 | type: 'gridItem', 13 | component: GridItem, 14 | }); 15 | 16 | export default GridItem; 17 | -------------------------------------------------------------------------------- /src/canvas/_navigation/Footer/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { Footer } from './Footer'; 4 | 5 | type Styles = { 6 | container?: string; 7 | footerSection?: string; 8 | buildTimestamp?: string; 9 | }; 10 | 11 | export type FooterProps = ComponentProps<{ 12 | logo?: string | Asset | Types.CloudinaryImage; 13 | displayBuildTimestamp?: boolean; 14 | copyright: string; 15 | footerText?: string; 16 | styles?: Styles; 17 | }>; 18 | 19 | registerUniformComponent({ 20 | type: 'footer', 21 | component: Footer, 22 | }); 23 | 24 | export * from './decorator'; 25 | export default Footer; 26 | -------------------------------------------------------------------------------- /src/canvas/_navigation/Header/helpers.ts: -------------------------------------------------------------------------------- 1 | import { HeaderVariants } from '.'; 2 | 3 | export const getHeaderColor = (variant?: string) => { 4 | switch (variant) { 5 | case HeaderVariants.Light: 6 | return 'bg-base-200 [&_.flyout]:!bg-base-200 [&_#menu-back]:fill-white'; 7 | default: 8 | return 'bg-base-300 [&_.flyout]:!bg-base-300 [&_#menu-back]:fill-white'; 9 | } 10 | }; 11 | 12 | export const getLinksAlignment = (alignment?: Types.HorizontalAlignment) => { 13 | switch (alignment) { 14 | case 'left': 15 | return 'justify-start'; 16 | case 'center': 17 | return 'justify-center'; 18 | case 'right': 19 | return 'justify-end'; 20 | default: 21 | return 'justify-end'; 22 | } 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/_navigation/Header/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { withoutContainer } from '../../../hocs/withoutContainer'; 4 | import { Header } from './Header'; 5 | 6 | export type HeaderProps = ComponentProps<{ 7 | logo?: string | Asset | Types.CloudinaryImage; 8 | theme: string; 9 | linksAlignment: Types.HorizontalAlignment; 10 | }>; 11 | 12 | export enum HeaderVariants { 13 | Light = 'light', 14 | } 15 | 16 | [undefined, HeaderVariants.Light].forEach(variantId => { 17 | registerUniformComponent({ 18 | type: 'header', 19 | component: withoutContainer(Header), 20 | variantId, 21 | }); 22 | }); 23 | 24 | export default withoutContainer(Header); 25 | export * from './decorator'; 26 | -------------------------------------------------------------------------------- /src/canvas/_navigation/IconLink/IconLink.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import Link from 'next/link'; 3 | import Image from '../../../components/Image'; 4 | import { getMediaUrl } from '../../../utilities'; 5 | import { IconLinkProps } from '.'; 6 | 7 | export const IconLink: FC = ({ icon, link }) => { 8 | const imageUrl = getMediaUrl(icon); 9 | 10 | if (!link || !imageUrl) return null; 11 | return ( 12 | 17 | iconLink 18 | 19 | ); 20 | }; 21 | -------------------------------------------------------------------------------- /src/canvas/_navigation/IconLink/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { IconLink } from './IconLink'; 4 | 5 | export type IconLinkProps = ComponentProps<{ 6 | link: Types.ProjectMapLink; 7 | icon?: string | Asset | Types.CloudinaryImage; 8 | }>; 9 | 10 | registerUniformComponent({ 11 | type: 'iconLink', 12 | component: IconLink, 13 | }); 14 | -------------------------------------------------------------------------------- /src/canvas/_navigation/NavLink/FooterLink.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import Link from 'next/link'; 3 | import { LinkProps } from '.'; 4 | 5 | export const FooterLink: FC = ({ title, link }) => ( 6 | 7 | {title} 8 | 9 | ); 10 | -------------------------------------------------------------------------------- /src/canvas/_navigation/NavLink/HeaderLink.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useMemo } from 'react'; 2 | import { useRouter } from 'next/router'; 3 | import LinkItem from '../../../components/LinkItem'; 4 | import { checkIsCurrentRoute } from './helpers'; 5 | import { LinkProps } from '.'; 6 | 7 | export const HeaderLink: FC = ({ title, link, icon, hideIconBackground, styles, color }) => { 8 | const router = useRouter(); 9 | const isCurrentRoute = useMemo(() => checkIsCurrentRoute(router, link), [router, link]); 10 | return ( 11 |
  • 12 | 21 |
  • 22 | ); 23 | }; 24 | -------------------------------------------------------------------------------- /src/canvas/_navigation/NavLink/helpers.ts: -------------------------------------------------------------------------------- 1 | import { NextRouter } from 'next/router'; 2 | 3 | export const checkIsCurrentRoute = (router: NextRouter, link: Types.ProjectMapLink) => { 4 | if (!link) return false; 5 | const { asPath } = router; 6 | const localeFromLink = link?.dynamicInputValues?.locale; 7 | const [pathWithoutQuery] = asPath.split('?'); 8 | const linkPath = link.path === '/' ? link.path : link.path.replace(/\/$/, ''); 9 | return pathWithoutQuery === (localeFromLink ? linkPath.replace(`/${localeFromLink}`, '') : linkPath); 10 | }; 11 | -------------------------------------------------------------------------------- /src/canvas/_navigation/NavigationSection/NavigationSection.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { UniformSlot } from '@uniformdev/canvas-react'; 3 | import EmptyPlaceholder from '../../../components/EmptyPlaceholder'; 4 | import { NavigationSectionProps } from '.'; 5 | 6 | export const NavigationSection: FC = ({ title }) => ( 7 |
    8 | {title} 9 | } /> 10 |
    11 | ); 12 | -------------------------------------------------------------------------------- /src/canvas/_navigation/NavigationSection/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps, registerUniformComponent } from '@uniformdev/canvas-react'; 2 | import { NavigationSection } from './NavigationSection'; 3 | 4 | export type NavigationSectionProps = ComponentProps<{ title: string }>; 5 | 6 | registerUniformComponent({ 7 | type: 'navigationSection', 8 | component: NavigationSection, 9 | }); 10 | 11 | // Deprecated. Please use navigationSection component instead of footerSection. The footerSection will be removed. 12 | registerUniformComponent({ 13 | type: 'footerSection', 14 | component: NavigationSection, 15 | }); 16 | 17 | export default NavigationSection; 18 | -------------------------------------------------------------------------------- /src/components/AnimatedContainer/AnimatedContainer.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useRef } from 'react'; 2 | import { m as motion, useInView } from 'framer-motion'; 3 | import { AnimatedContainerProps } from './'; 4 | import { getAnimationParams } from './helpers'; 5 | 6 | const AnimatedContainer: FC = ({ 7 | animationVariant, 8 | duration, 9 | delay = 0, 10 | children, 11 | fadeInOffset = 24, 12 | className, 13 | }) => { 14 | const ref = useRef(null); 15 | const isInView = useInView(ref, { once: true }); 16 | const animationParams = getAnimationParams({ 17 | isInView, 18 | animationVariant, 19 | duration, 20 | delay, 21 | fadeInOffset, 22 | }); 23 | 24 | return animationParams && !Boolean(process.env.NEXT_PUBLIC_E2E_TEST) ? ( 25 | 26 | {children} 27 | 28 | ) : ( 29 | <>{children} 30 | ); 31 | }; 32 | 33 | export default AnimatedContainer; 34 | -------------------------------------------------------------------------------- /src/components/AnimatedContainer/index.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react'; 2 | 3 | export type AnimatedContainerProps = { 4 | className?: string; 5 | animationVariant: AnimationVariant; 6 | duration: Types.DurationType; 7 | delay?: number; 8 | fadeInOffset?: number; 9 | children: ReactNode; 10 | }; 11 | 12 | export enum AnimationVariant { 13 | FadeIn = 'fade-in', 14 | FadeInTop = 'fade-in-top', 15 | FadeInBottom = 'fade-in-bottom', 16 | FadeInLeft = 'fade-in-left', 17 | FadeInRight = 'fade-in-right', 18 | } 19 | 20 | export * from './helpers'; 21 | export { default } from './AnimatedContainer'; 22 | -------------------------------------------------------------------------------- /src/components/BaseAddToCart/index.ts: -------------------------------------------------------------------------------- 1 | export type BaseAddToCartProps = { 2 | buttonCopy?: string; 3 | buttonStyle: Types.ButtonStyles; 4 | onClick?: (quantity: number) => void; 5 | useCustomTextElements?: boolean; 6 | animationType?: Types.AnimationType; 7 | buttonAnimationType?: Types.AnimationType; 8 | }; 9 | 10 | export { default } from './BaseAddToCart'; 11 | -------------------------------------------------------------------------------- /src/components/BaseHero/helpers.ts: -------------------------------------------------------------------------------- 1 | import { getTextColor } from '../../utilities/styling'; 2 | 3 | export const getHeroTextStyle = (textColorVariant: string) => { 4 | if (textColorVariant === 'Light' || textColorVariant === 'Dark') { 5 | return textColorVariant === 'Light' ? 'text-primary-content' : 'text-secondary-content'; 6 | } else { 7 | return getTextColor(textColorVariant as Types.ThemeColorsValues); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /src/components/BaseImageGallery/index.ts: -------------------------------------------------------------------------------- 1 | import { ComponentProps } from '@uniformdev/canvas-react'; 2 | import type { Asset } from '@uniformdev/assets'; 3 | import { ContainerProps } from '../Container'; 4 | 5 | type Styles = { 6 | title?: string; 7 | description?: string; 8 | }; 9 | 10 | export type BaseImageGalleryProps = ComponentProps< 11 | ContainerProps & { 12 | title?: string; 13 | titleStyle?: Types.HeadingStyles; 14 | description?: string; 15 | items?: Asset[] | Types.UniformOldImage[]; 16 | maxItems?: number; 17 | animationType?: Types.AnimationType; 18 | animationOrder?: Types.AnimationOrder; 19 | duration?: Types.DurationType; 20 | delay?: Types.AnimationDelay; 21 | animationPreview?: boolean; 22 | styles?: Styles; 23 | } 24 | >; 25 | 26 | export { default } from './BaseImageGallery'; 27 | -------------------------------------------------------------------------------- /src/components/BasePage/index.ts: -------------------------------------------------------------------------------- 1 | import { ElementType } from 'react'; 2 | import { RootComponentInstance } from '@uniformdev/canvas'; 3 | 4 | type Styles = { 5 | pageContentContainer?: string; 6 | modal?: { 7 | container?: string; 8 | }; 9 | }; 10 | 11 | export type BasePageProps = { 12 | preview?: boolean; 13 | useUniformComposition?: boolean; 14 | data: RootComponentInstance; 15 | providers: ElementType; 16 | skipContainerWrappersList?: string[]; 17 | context: Record; 18 | styles?: Styles; 19 | localizationSettings?: Types.LocalizationSettings; 20 | }; 21 | 22 | export * from './decorator'; 23 | export { default } from './BasePage'; 24 | -------------------------------------------------------------------------------- /src/components/BaseProductInfo/FeatureIcon.tsx: -------------------------------------------------------------------------------- 1 | const FeatureIcon = () => ( 2 | 3 | 4 | 5 | ); 6 | 7 | export default FeatureIcon; 8 | -------------------------------------------------------------------------------- /src/components/BuildTimestamp/BuildTimestamp.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { BuildTimestampProps } from './'; 4 | 5 | const BuildTimestamp: FC = ({ style }) => 6 | process.env.NEXT_PUBLIC_BUILD_TIMESTAMP ? ( 7 |

    8 | Built time: {new Date(Number(process.env.NEXT_PUBLIC_BUILD_TIMESTAMP)).toLocaleString()} 9 | {process.env.NEXT_PUBLIC_APP_VERSION && ` v.${process.env.NEXT_PUBLIC_APP_VERSION}`} 10 |

    11 | ) : null; 12 | 13 | export default BuildTimestamp; 14 | -------------------------------------------------------------------------------- /src/components/BuildTimestamp/index.ts: -------------------------------------------------------------------------------- 1 | export type BuildTimestampProps = { 2 | style?: string; 3 | }; 4 | 5 | export { default } from './BuildTimestamp'; 6 | -------------------------------------------------------------------------------- /src/components/Button/index.ts: -------------------------------------------------------------------------------- 1 | import { MouseEvent, ReactNode } from 'react'; 2 | 3 | export type ButtonProps = { 4 | href?: string; 5 | copy: ReactNode; 6 | style: Types.ButtonStyles; 7 | className?: string; 8 | onClick?: (e?: MouseEvent) => void; 9 | disable?: boolean; 10 | animationType?: Types.AnimationType; 11 | }; 12 | 13 | export { default } from './Button'; 14 | -------------------------------------------------------------------------------- /src/components/CarouselButtons/index.ts: -------------------------------------------------------------------------------- 1 | import { ButtonGroupProps } from 'react-multi-carousel'; 2 | 3 | export type CarouselButtonProps = ButtonGroupProps & { 4 | buttonStyle: Types.ButtonStyles; 5 | buttonAnimationStyle?: Types.AnimationType; 6 | colorClassName?: string; 7 | }; 8 | 9 | export { default } from './CarouselButtons'; 10 | -------------------------------------------------------------------------------- /src/components/Container/BaseContainer.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { ContainerProps } from './'; 4 | 5 | export const BaseContainer: FC = ({ children, className }) => ( 6 |
    {children}
    7 | ); 8 | -------------------------------------------------------------------------------- /src/components/Container/ScreenContainer.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { BaseContainer } from './BaseContainer'; 4 | import { ContainerProps } from './'; 5 | 6 | export const ScreenContainer: FC = ({ children, className }) => ( 7 | {children} 8 | ); 9 | -------------------------------------------------------------------------------- /src/components/Container/index.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react'; 2 | import { BackgroundTypes, PaddingSize } from '../../utilities/styling'; 3 | 4 | export enum ContainerVariants { 5 | BackgroundInContainer = 'backgroundInContainer', 6 | FluidContent = 'fluidContent', 7 | } 8 | 9 | export type ContainerProps = { 10 | backgroundType?: BackgroundTypes | Types.ThemeColorsValues | string; 11 | paddingTop?: PaddingSize; 12 | paddingBottom?: PaddingSize; 13 | marginTop?: PaddingSize; 14 | marginBottom?: PaddingSize; 15 | children: ReactNode; 16 | backgroundClassName?: string; 17 | containerVariant?: string; 18 | className?: string; 19 | }; 20 | 21 | export * from './BaseContainer'; 22 | export * from './ScreenContainer'; 23 | export { default } from './Container'; 24 | -------------------------------------------------------------------------------- /src/components/Decorators/index.ts: -------------------------------------------------------------------------------- 1 | import { BackgroundDecorator, WithoutContainerDecorator } from '../BasePage'; 2 | import { AccordionItemDecorator } from '../../canvas/AccordionItem'; 3 | import { CardDecorator } from '../../canvas/Card'; 4 | import { FeatureDecorator } from '../../canvas/Feature'; 5 | 6 | // Basic Decorators Set for the Component Starter Kit 7 | // Activate visual editing doc: https://docs.uniform.app/docs/guides/composition/visual-editing/activate-visual-editing 8 | const CSKDecorators = [ 9 | AccordionItemDecorator, 10 | CardDecorator, 11 | FeatureDecorator, 12 | WithoutContainerDecorator, 13 | BackgroundDecorator, 14 | ]; 15 | 16 | export default CSKDecorators; 17 | -------------------------------------------------------------------------------- /src/components/Dropdown/DropdownOption.tsx: -------------------------------------------------------------------------------- 1 | import { FC, useCallback } from 'react'; 2 | import classNames from 'classnames'; 3 | import { Option } from './'; 4 | 5 | export type DropdownOptionProps = { 6 | option: Option; 7 | isDefault?: boolean; 8 | onSelect: (value: string | undefined) => void; 9 | }; 10 | 11 | export const DropdownOption: FC = ({ option, isDefault, onSelect }) => { 12 | const handleSelect = useCallback((): void => onSelect(option.value), [onSelect, option]); 13 | 14 | return ( 15 | 24 | ); 25 | }; 26 | -------------------------------------------------------------------------------- /src/components/Dropdown/index.ts: -------------------------------------------------------------------------------- 1 | export type Option = { 2 | label: string; 3 | value: string | undefined; 4 | }; 5 | 6 | export type DropdownProps = { 7 | title: string; 8 | defaultOption?: Option; 9 | options: Option[]; 10 | value: string | undefined; 11 | onChange: (value: string | undefined) => void; 12 | disable?: boolean; 13 | buttonClassName?: string; 14 | optionsContainerClassName?: string; 15 | }; 16 | 17 | export { default } from './Dropdown'; 18 | -------------------------------------------------------------------------------- /src/components/EmptyImagePlaceholder/EmptyImagePlaceholder.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { EmptyImagePlaceholderProps } from '.'; 4 | import BaseImage from '../Image/Image'; 5 | 6 | const EmptyImagePlaceholder: FC = ({ 7 | text = 'Please add an asset to display an image', 8 | className, 9 | }) => ( 10 |
    11 |
    12 | 18 |
    19 |
    20 | {text} 21 |
    22 |
    23 | ); 24 | 25 | export default EmptyImagePlaceholder; 26 | -------------------------------------------------------------------------------- /src/components/EmptyImagePlaceholder/index.ts: -------------------------------------------------------------------------------- 1 | export type EmptyImagePlaceholderProps = { 2 | text?: string; 3 | className?: string; 4 | }; 5 | 6 | export * from './EmptyImagePlaceholder'; 7 | export { default } from './EmptyImagePlaceholder'; 8 | -------------------------------------------------------------------------------- /src/components/EmptyPlaceholder/EmptyPlaceholder.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { EmptyPlaceholderProps } from '.'; 4 | 5 | const EmptyPlaceholder: FC = ({ className }) => ( 6 |
    7 | ); 8 | 9 | export default EmptyPlaceholder; 10 | -------------------------------------------------------------------------------- /src/components/EmptyPlaceholder/index.ts: -------------------------------------------------------------------------------- 1 | export type EmptyPlaceholderProps = { 2 | className?: string; 3 | }; 4 | 5 | export * from './EmptyPlaceholder'; 6 | export { default } from './EmptyPlaceholder'; 7 | -------------------------------------------------------------------------------- /src/components/ErrorHandler/ErrorHandler.tsx: -------------------------------------------------------------------------------- 1 | import { Component, ErrorInfo } from 'react'; 2 | import { ErrorHandlerProps } from '.'; 3 | 4 | interface State { 5 | hasError: boolean; 6 | } 7 | 8 | class ErrorHandler extends Component { 9 | constructor(props: ErrorHandlerProps) { 10 | super(props); 11 | this.state = { hasError: false }; 12 | } 13 | 14 | componentDidCatch(error: Error, errorInfo: ErrorInfo) { 15 | console.error('ErrorHandler caught an error: ', error, errorInfo); 16 | this.setState({ hasError: true }); 17 | } 18 | 19 | render() { 20 | if (this.state.hasError) { 21 | return this.props.errorComponent; 22 | } 23 | 24 | return this.props.children; 25 | } 26 | } 27 | 28 | export default ErrorHandler; 29 | -------------------------------------------------------------------------------- /src/components/ErrorHandler/index.ts: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react'; 2 | 3 | export type ErrorHandlerProps = { 4 | errorComponent: ReactNode; 5 | children: ReactNode; 6 | }; 7 | export * from './ErrorHandler'; 8 | export { default } from './ErrorHandler'; 9 | -------------------------------------------------------------------------------- /src/components/ErrorPropertyCallout/ErrorPropertyCallout.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { ErrorPropertyCalloutProps } from '.'; 3 | 4 | const ErrorPropertyCallout: FC = ({ classNames, title, text = '' }) => ( 5 |
    6 |
    7 | {title} 8 |
    9 | {text} 10 |
    11 |
    12 | ); 13 | 14 | export default ErrorPropertyCallout; 15 | -------------------------------------------------------------------------------- /src/components/ErrorPropertyCallout/index.ts: -------------------------------------------------------------------------------- 1 | export type ErrorPropertyCalloutProps = { 2 | title: string; 3 | classNames?: string; 4 | text?: string; 5 | }; 6 | 7 | export * from './ErrorPropertyCallout'; 8 | export { default } from './ErrorPropertyCallout'; 9 | -------------------------------------------------------------------------------- /src/components/IconArrow/IconArrow.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { IconArrowProps } from '.'; 4 | 5 | const IconArrow: FC = ({ 6 | width = 20, 7 | height = 20, 8 | fill = 'currentColor', 9 | direction = 'right', 10 | className = '', 11 | }) => ( 12 | 20 | 21 | 22 | ); 23 | 24 | export default IconArrow; 25 | -------------------------------------------------------------------------------- /src/components/IconArrow/index.ts: -------------------------------------------------------------------------------- 1 | export type IconArrowProps = { 2 | direction?: 'left' | 'right'; 3 | className?: string; 4 | width?: number; 5 | height?: number; 6 | fill?: string; 7 | }; 8 | 9 | export * from './IconArrow'; 10 | export { default } from './IconArrow'; 11 | -------------------------------------------------------------------------------- /src/components/IconMinus/IconMinus.tsx: -------------------------------------------------------------------------------- 1 | import { FC, SVGProps } from 'react'; 2 | 3 | const IconMinus: FC> = props => ( 4 | 13 | 14 | 15 | ); 16 | 17 | export default IconMinus; 18 | -------------------------------------------------------------------------------- /src/components/IconMinus/index.ts: -------------------------------------------------------------------------------- 1 | export * from './IconMinus'; 2 | export { default } from './IconMinus'; 3 | -------------------------------------------------------------------------------- /src/components/IconPlus/IconPlus.tsx: -------------------------------------------------------------------------------- 1 | import { FC, SVGProps } from 'react'; 2 | 3 | const IconPlus: FC> = props => ( 4 | 13 | 14 | 15 | ); 16 | 17 | export default IconPlus; 18 | -------------------------------------------------------------------------------- /src/components/IconPlus/index.ts: -------------------------------------------------------------------------------- 1 | export * from './IconPlus'; 2 | export { default } from './IconPlus'; 3 | -------------------------------------------------------------------------------- /src/components/Image/Image.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import NextImage, { ImageProps } from 'next/image'; 3 | 4 | const Image: FC = props => 5 | props.src ? : null; 6 | 7 | export default Image; 8 | -------------------------------------------------------------------------------- /src/components/Image/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Image'; 2 | export { default } from './Image'; 3 | -------------------------------------------------------------------------------- /src/components/InformationContent/InformationContent.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import classNames from 'classnames'; 3 | import { InformationContentProps } from '.'; 4 | 5 | const InformationContent: FC = ({ title, imageComponent = '', text = '', className }) => ( 6 |
    7 |
    {title}
    8 | {imageComponent &&
    {imageComponent}
    } 9 | {text &&
    {text}
    } 10 |
    11 | ); 12 | 13 | export default InformationContent; 14 | -------------------------------------------------------------------------------- /src/components/InformationContent/index.ts: -------------------------------------------------------------------------------- 1 | import { ReactElement } from 'react'; 2 | 3 | export type InformationContentProps = { 4 | title: string; 5 | imageComponent?: ReactElement; 6 | text?: string; 7 | className?: string; 8 | }; 9 | 10 | export * from './InformationContent'; 11 | export { default } from './InformationContent'; 12 | -------------------------------------------------------------------------------- /src/components/LinkItem/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './LinkItem'; 2 | -------------------------------------------------------------------------------- /src/components/MobileMenuLayout/index.ts: -------------------------------------------------------------------------------- 1 | export { default } from './MobileMenuLayout'; 2 | -------------------------------------------------------------------------------- /src/components/Playground/Playground.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { createUniformApiEnhancer, UniformPlayground } from '@uniformdev/canvas-react'; 3 | import ComponentStarterKitContextProvider from '../../context/ComponentStarterKitContext'; 4 | import CSKDecorators from '../Decorators'; 5 | import ThemeProvider from '../ThemeProvider'; 6 | import { PlaygroundProps } from '.'; 7 | 8 | const Playground: FC = ({ data, defaultTheme }) => { 9 | const contextualEditingEnhancer = createUniformApiEnhancer({ apiUrl: '/api/preview' }); 10 | 11 | return ( 12 | 13 | 14 | 19 | 20 | 21 | ); 22 | }; 23 | 24 | export default Playground; 25 | -------------------------------------------------------------------------------- /src/components/Playground/index.ts: -------------------------------------------------------------------------------- 1 | import { RootComponentInstance } from '@uniformdev/canvas'; 2 | 3 | export type PlaygroundProps = { 4 | data?: RootComponentInstance | null; 5 | defaultTheme?: Types.ThemeValue | null; 6 | }; 7 | 8 | export * from './Playground'; 9 | export { default } from './Playground'; 10 | -------------------------------------------------------------------------------- /src/components/ProductQuantityItem/index.ts: -------------------------------------------------------------------------------- 1 | export type ProductQuantityItemProps = { 2 | quantity: number; 3 | onClickIncrement: () => void; 4 | onClickDecrement: () => void; 5 | buttonStyle: Types.ButtonStyles; 6 | animationType?: Types.AnimationType; 7 | }; 8 | 9 | export * from './ProductQuantityItem'; 10 | export { default } from './ProductQuantityItem'; 11 | -------------------------------------------------------------------------------- /src/components/Rating/helpers.ts: -------------------------------------------------------------------------------- 1 | const getStarsColor = (style?: Types.AvailableColor) => { 2 | switch (style) { 3 | case 'primary': 4 | return 'text-primary'; 5 | case 'secondary': 6 | return 'text-secondary'; 7 | case 'accent': 8 | return 'text-accent'; 9 | case 'base-200': 10 | return 'text-base-200'; 11 | case 'base-300': 12 | return 'text-base-300'; 13 | default: 14 | return 'text-yellow-300'; 15 | } 16 | }; 17 | 18 | export const getRatingFill = (rating: number, index: number, starsColor?: Types.AvailableColor) => 19 | index <= rating ? getStarsColor(starsColor) : 'text-gray-300'; 20 | -------------------------------------------------------------------------------- /src/components/Rating/index.ts: -------------------------------------------------------------------------------- 1 | export type RatingProps = { 2 | rating: number; 3 | showReviewLabel?: boolean; 4 | starsColor?: Types.AvailableColor; 5 | }; 6 | 7 | export * from './Rating'; 8 | export { default } from './Rating'; 9 | -------------------------------------------------------------------------------- /src/components/ThemeProvider/index.ts: -------------------------------------------------------------------------------- 1 | import { PropsWithChildren } from 'react'; 2 | import type { RootComponentInstance } from '@uniformdev/canvas'; 3 | 4 | export type ThemeProviderProps = PropsWithChildren<{ 5 | data?: RootComponentInstance | null; 6 | defaultTheme?: Types.ThemeValue | null; 7 | }>; 8 | 9 | export * from './ThemeProvider'; 10 | export { default } from './ThemeProvider'; 11 | -------------------------------------------------------------------------------- /src/components/UniformPreviewIcon/UniformPreviewIcon.tsx: -------------------------------------------------------------------------------- 1 | import { FC } from 'react'; 2 | import { useUniformContextualEditingState } from '@uniformdev/canvas-react'; 3 | 4 | const UniformPreviewIcon: FC = () => { 5 | const { previewMode } = useUniformContextualEditingState(); 6 | const isContextualEditing = previewMode === 'editor'; 7 | 8 | if (isContextualEditing) return null; 9 | 10 | return ( 11 |
    12 |
    13 | 💎 14 |
    15 |
    16 | ); 17 | }; 18 | 19 | export default UniformPreviewIcon; 20 | -------------------------------------------------------------------------------- /src/components/UniformPreviewIcon/index.ts: -------------------------------------------------------------------------------- 1 | export * from './UniformPreviewIcon'; 2 | export { default } from './UniformPreviewIcon'; 3 | -------------------------------------------------------------------------------- /src/context/createUniformContext.ts: -------------------------------------------------------------------------------- 1 | import { NextPageContext } from 'next'; 2 | import { 3 | Context, 4 | ManifestV2, 5 | ContextPlugin, 6 | enableDebugConsoleLogDrain, 7 | enableContextDevTools, 8 | } from '@uniformdev/context'; 9 | import { NextCookieTransitionDataStore } from '@uniformdev/context-next'; 10 | 11 | export default function createUniformContext(manifest: ManifestV2, serverContext?: NextPageContext): Context { 12 | const plugins: ContextPlugin[] = [enableContextDevTools(), enableDebugConsoleLogDrain('debug')]; 13 | const context = new Context({ 14 | defaultConsent: true, 15 | manifest, 16 | transitionStore: new NextCookieTransitionDataStore({ 17 | serverContext, 18 | }), 19 | plugins: plugins, 20 | }); 21 | return context; 22 | } 23 | -------------------------------------------------------------------------------- /src/context/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ComponentStarterKitContext'; 2 | export { default as ComponentStarterKitContextProvider } from './ComponentStarterKitContext'; 3 | -------------------------------------------------------------------------------- /src/context/locales.json: -------------------------------------------------------------------------------- 1 | { 2 | "locales": [], 3 | "localeNames": {}, 4 | "defaultLocale": "" 5 | } 6 | -------------------------------------------------------------------------------- /src/hocs/withErrorCallout.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentType } from 'react'; 2 | import { ComponentProps } from '@uniformdev/canvas-react'; 3 | import ErrorHandler from '../components/ErrorHandler'; 4 | import ErrorPropertyCallout from '../components/ErrorPropertyCallout'; 5 | 6 | export function withErrorCallout( 7 | Component: ComponentType>, 8 | errorText: string 9 | ): ComponentType> { 10 | return function wrapper(props: ComponentProps) { 11 | return ( 12 | }> 13 | 14 | 15 | ); 16 | }; 17 | } 18 | -------------------------------------------------------------------------------- /src/hocs/withoutContainer.tsx: -------------------------------------------------------------------------------- 1 | import { ComponentType } from 'react'; 2 | import { ComponentProps } from '@uniformdev/canvas-react'; 3 | import classNames from 'classnames'; 4 | 5 | type Options = { 6 | withoutPaddings?: boolean; 7 | additionalClassName?: string; 8 | }; 9 | 10 | export const CHILDREN_CONTAINER_STYLES = '[&>*]:max-w-screen-xl [&>*]:mx-auto [&>*]:w-full'; 11 | export const COMMON_PADDING = '[&>*]:xl:px-0 [&>*]:px-4'; 12 | 13 | export const withoutContainer = 14 | ( 15 | Component: ComponentType>, 16 | { withoutPaddings, additionalClassName }: Options = {} 17 | ): ComponentType> => 18 | (props: ComponentProps) => ( 19 |
    20 | 21 |
    22 | ); 23 | -------------------------------------------------------------------------------- /src/modules/algolia/index.ts: -------------------------------------------------------------------------------- 1 | import './AlgoliaHits'; 2 | import './AlgoliaInstantSearch'; 3 | import './AlgoliaRefinementList'; 4 | import './AlgoliaSearchBox'; 5 | import './AlgoliaPagination'; 6 | import './AlgoliaIndex'; 7 | -------------------------------------------------------------------------------- /src/modules/coveo/Engine.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/ban-ts-comment */ 2 | import { createContext } from 'react'; 3 | // @ts-ignore: Expected error if the module is not yet installed 4 | import { SearchEngine } from '@coveo/headless/dist/definitions/app/search-engine/search-engine'; 5 | // @ts-ignore: Expected error if the module is not yet installed 6 | import { buildSearchEngine, getOrganizationEndpoints } from '@coveo/headless'; 7 | 8 | const COVEO_ORGANIZATION_ID = process.env.NEXT_PUBLIC_COVEO_ORGANIZATION_ID || ''; 9 | const COVEO_API_KEY = process.env.NEXT_PUBLIC_COVEO_API_KEY || ''; 10 | 11 | export const getHeadlessEngine = () => 12 | buildSearchEngine({ 13 | configuration: { 14 | organizationId: COVEO_ORGANIZATION_ID, 15 | accessToken: COVEO_API_KEY, 16 | organizationEndpoints: getOrganizationEndpoints(COVEO_ORGANIZATION_ID), 17 | }, 18 | }); 19 | 20 | export const HeadlessEngineContext = createContext(getHeadlessEngine()); 21 | -------------------------------------------------------------------------------- /src/modules/coveo/index.ts: -------------------------------------------------------------------------------- 1 | import './BreadcrumbManager'; 2 | import './Facet'; 3 | import './Pager'; 4 | import './QuerySummary'; 5 | import './ResultList'; 6 | import './SearchBox'; 7 | import './SearchProvider'; 8 | import './Sort'; 9 | -------------------------------------------------------------------------------- /src/pages/api/preview.ts: -------------------------------------------------------------------------------- 1 | import { createPreviewHandler } from '@uniformdev/canvas-next'; 2 | 3 | // Preview Mode, more info https://nextjs.org/docs/advanced-features/preview-mode 4 | export default createPreviewHandler({ 5 | secret: () => process.env.UNIFORM_PREVIEW_SECRET || 'hello-world', 6 | playgroundPath: '/playground', 7 | }); 8 | -------------------------------------------------------------------------------- /src/stories/canvas/Image.stories.tsx: -------------------------------------------------------------------------------- 1 | import type { Meta, StoryObj } from '@storybook/react'; 2 | import { UniformComposition } from '@uniformdev/canvas-react'; 3 | import { UniformImage, UniformImageProps } from '@/canvas'; 4 | import { createFakeCompositionData } from '../utils'; 5 | 6 | const meta: Meta = { 7 | title: 'Image', 8 | component: UniformImage, 9 | }; 10 | 11 | export default meta; 12 | type Story = StoryObj; 13 | 14 | const BASE_PROPS: Omit = { 15 | width: '1600', 16 | height: '689', 17 | src: 'https://res.cloudinary.com/uniform-demos/image/upload/v1/csk-marketing/Rectangle_7_2_uupdjo_wm94da', 18 | }; 19 | 20 | const renderStory = (args: UniformImageProps) => { 21 | const fakeComposition = createFakeCompositionData('image', args, {}); 22 | return ( 23 | 24 | 25 | 26 | ); 27 | }; 28 | 29 | export const Default: Story = { 30 | args: BASE_PROPS, 31 | render: renderStory, 32 | }; 33 | -------------------------------------------------------------------------------- /src/stories/constants.ts: -------------------------------------------------------------------------------- 1 | export const titleStyleOptions = ['h1', 'h2', 'h3', 'h4']; 2 | 3 | export const currencyOptions = ['USD', 'EUR']; 4 | 5 | export const buttonStyleOptions = ['primary', 'secondary', 'accent', 'link']; 6 | 7 | export const horizontalAlignmentOptions = ['left', 'center', 'right']; 8 | 9 | export const animationType = [undefined, 'fadeIn', 'flyIn']; 10 | 11 | export const animationOrder = [undefined, 'oneByOne', 'allAtOnce']; 12 | -------------------------------------------------------------------------------- /src/stories/utils/index.ts: -------------------------------------------------------------------------------- 1 | import { RootComponentInstance, ComponentInstance } from '@uniformdev/canvas'; 2 | 3 | interface UniformMockParam { 4 | type: string; 5 | value: Record; 6 | } 7 | 8 | export const createUniformParameter = (params: Record) => 9 | Object.keys(params).reduce( 10 | (acc, key) => ({ 11 | ...acc, 12 | [key]: { 13 | type: (params[key] as UniformMockParam)?.type || 'text', 14 | value: (params[key] as UniformMockParam)?.value || params[key], 15 | }, 16 | }), 17 | {} 18 | ); 19 | 20 | export const createFakeCompositionData = ( 21 | type: string, 22 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 23 | params: Record, 24 | slots: Record 25 | ): RootComponentInstance => ({ 26 | _name: type, 27 | type: type, 28 | _id: 'ebf7db31-5e01-4874-afb4-d8d668457ba8', 29 | parameters: createUniformParameter(params), 30 | slots, 31 | }); 32 | -------------------------------------------------------------------------------- /src/styles/globals.scss: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .footer-content a { 6 | text-decoration: underline; 7 | } 8 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ['./src/**/*.{ts,tsx}'], 3 | theme: { 4 | extend: { 5 | width: { 6 | 'screen-xl': '1280px', 7 | }, 8 | blur: { 9 | xs: '2px', 10 | }, 11 | }, 12 | }, 13 | plugins: [require('@tailwindcss/typography'), require('daisyui')], 14 | daisyui: { 15 | styled: true, 16 | base: true, 17 | utils: true, 18 | logs: false, 19 | rtl: false, 20 | themes: [], 21 | }, 22 | }; 23 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "display": "Next.js", 4 | "ts-node": { 5 | "compilerOptions": { 6 | "module": "commonjs" 7 | } 8 | }, 9 | "compilerOptions": { 10 | "downlevelIteration": true, 11 | "esModuleInterop": true, 12 | "forceConsistentCasingInFileNames": true, 13 | "isolatedModules": true, 14 | "moduleResolution": "bundler", 15 | "skipLibCheck": true, 16 | "strict": true, 17 | "target": "es5", 18 | "lib": [ 19 | "dom", 20 | "dom.iterable", 21 | "esnext" 22 | ], 23 | "allowJs": true, 24 | "noEmit": true, 25 | "resolveJsonModule": true, 26 | "jsx": "preserve", 27 | "incremental": true, 28 | "baseUrl": "./", 29 | "paths": { 30 | "@/*": [ 31 | "./src/*" 32 | ] 33 | }, 34 | "module": "esnext" 35 | }, 36 | "include": [ 37 | "next-env.d.ts", 38 | "**/*.ts", 39 | "**/*.tsx" 40 | ], 41 | "exclude": [ 42 | "node_modules" 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /uniform.config.ts: -------------------------------------------------------------------------------- 1 | import { uniformConfig } from '@uniformdev/cli/config'; 2 | 3 | module.exports = uniformConfig({ 4 | preset: 'all', 5 | overrides: { 6 | serializationConfig: { directory: './content' }, 7 | }, 8 | // you can disable specific entities from being included, which can speed up your sync 9 | // disableEntities: ['asset'] 10 | }); 11 | --------------------------------------------------------------------------------