diff --git a/packages/commerce/src/types/product.ts b/packages/commerce/src/types/product.ts index 2f6c34acb..5f3633627 100644 --- a/packages/commerce/src/types/product.ts +++ b/packages/commerce/src/types/product.ts @@ -45,6 +45,15 @@ export interface ProductOptionValues { hexColors?: string[] } +export type ProductMetafield = { + description: string + id: string + key: string + namespace: string + value: string + valueType: string +} + export interface ProductVariant { /** * The unique identifier for the variant. @@ -124,6 +133,7 @@ export interface Product { /** * The product's base price. Could be the minimum value, or default variant price. */ + metafields: ProductMetafield[] price: ProductPrice /** * List of product's options. diff --git a/packages/shopify/src/utils/normalize.ts b/packages/shopify/src/utils/normalize.ts index 066daff33..dcf4b93ef 100644 --- a/packages/shopify/src/utils/normalize.ts +++ b/packages/shopify/src/utils/normalize.ts @@ -15,6 +15,11 @@ import type { Page as ShopifyPage, PageEdge, Collection, + MetafieldConnection, + MediaConnection, + Model3d, + Metafield, + Maybe, } from '../../schema' import { colorMap } from './colors' @@ -95,6 +100,21 @@ const normalizeProductVariants = ({ edges }: ProductVariantConnection) => { ) } +const normalizeProductMedia = ({ edges }: MediaConnection) => { + return edges + .filter(({ node }) => Object.keys(node).length !== 0) + .map(({ node }) => { + return { + sources: (node as Model3d).sources.map(({ format, url }) => { + return { + format: format, + url: url, + } + }), + } + }) +} + export function normalizeProduct({ id, title: name, diff --git a/packages/shopify/src/utils/queries/get-product-query.ts b/packages/shopify/src/utils/queries/get-product-query.ts index 1c4458432..c71bd954c 100644 --- a/packages/shopify/src/utils/queries/get-product-query.ts +++ b/packages/shopify/src/utils/queries/get-product-query.ts @@ -24,6 +24,14 @@ const getProductQuery = /* GraphQL */ ` currencyCode } } + metafields(first: 30) { + edges { + node { + key + value + } + } + } variants(first: 250) { pageInfo { hasNextPage @@ -65,6 +73,22 @@ const getProductQuery = /* GraphQL */ ` } } } + media(first: 250) { + pageInfo { + hasNextPage + hasPreviousPage + } + edges { + node { + ... on Model3d { + sources { + url + format + } + } + } + } + } } } ` diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02515ed23..64a6a5c97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -592,6 +592,10 @@ importers: site: specifiers: + '@chakra-ui/icons': ^2.0.14 + '@chakra-ui/react': ^2.4.4 + '@emotion/react': ^11.10.5 + '@emotion/styled': ^11.10.5 '@next/bundle-analyzer': ^12.0.8 '@radix-ui/react-dropdown-menu': ^1.0.0 '@react-spring/web': ^9.4.1 @@ -602,6 +606,7 @@ importers: '@types/node': ^18.0.3 '@types/react': ^18.0.20 '@types/react-dom': ^18.0.6 + '@types/react-slick': ^0.23.10 '@vercel/commerce': workspace:* '@vercel/commerce-bigcommerce': workspace:* '@vercel/commerce-commercejs': workspace:* @@ -621,6 +626,7 @@ importers: eslint: ^8.6.0 eslint-config-next: ^12.0.8 eslint-config-prettier: ^8.3.0 + framer-motion: ^7.10.3 js-cookie: ^3.0.1 keen-slider: ^6.7.0 lint-staged: ^13.0.3 @@ -628,6 +634,7 @@ importers: lodash.throttle: ^4.1.1 next: ^12.3.0 next-themes: ^0.2.0 + photo-sphere-viewer: ^4.8.1 postcss: ^8.3.5 postcss-flexbugs-fixes: ^5.0.2 postcss-nesting: ^10.1.10 @@ -636,12 +643,21 @@ importers: react: ^18.2.0 react-dom: ^18.2.0 react-fast-marquee: ^1.3.1 + react-h5-audio-player: ^3.8.6 + react-icons: ^4.7.1 + react-img-mapper: ^1.4.0 react-merge-refs: ^2.0.1 + react-slick: ^0.29.0 react-use-measure: ^2.1.1 + screenfull: ^6.0.2 tabbable: ^5.2.1 tailwindcss: ^3.0.13 typescript: 4.7.4 dependencies: + '@chakra-ui/icons': 2.0.14_react@18.2.0 + '@chakra-ui/react': 2.4.4_4krdlvlqq3ittuocexwl336v2q + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua '@radix-ui/react-dropdown-menu': 1.0.0_7ey2zzynotv32rpkwno45fsx4e '@react-spring/web': 9.5.4_biqbaboplfbrettd7655fr4n2y '@vercel/commerce': link:../packages/commerce @@ -660,19 +676,26 @@ importers: body-scroll-lock: 4.0.0-beta.0 clsx: 1.2.1 email-validator: 2.0.4 + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y js-cookie: 3.0.1 keen-slider: 6.8.0 lodash.random: 3.2.0 lodash.throttle: 4.1.1 next: 12.3.0_biqbaboplfbrettd7655fr4n2y next-themes: 0.2.1_c3hne4hwj64hb7tofigd3bvkji + photo-sphere-viewer: 4.8.1 postcss: 8.4.16 postcss-nesting: 10.1.10_postcss@8.4.16 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-fast-marquee: 1.3.5_biqbaboplfbrettd7655fr4n2y + react-h5-audio-player: 3.8.6_biqbaboplfbrettd7655fr4n2y + react-icons: 4.7.1_react@18.2.0 + react-img-mapper: 1.4.0_biqbaboplfbrettd7655fr4n2y react-merge-refs: 2.0.1 + react-slick: 0.29.0_biqbaboplfbrettd7655fr4n2y react-use-measure: 2.1.1_biqbaboplfbrettd7655fr4n2y + screenfull: 6.0.2 tabbable: 5.3.3 tailwindcss: 3.1.8_postcss@8.4.16 devDependencies: @@ -684,6 +707,7 @@ importers: '@types/node': 18.7.18 '@types/react': 18.0.20 '@types/react-dom': 18.0.6 + '@types/react-slick': 0.23.10 eslint: 8.23.1 eslint-config-next: 12.3.0_4brgkhw6cq4me3drk3kxrpb2mm eslint-config-prettier: 8.5.0_eslint@8.23.1 @@ -746,7 +770,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 - dev: true /@babel/compat-data/7.19.0: resolution: {integrity: sha512-y5rqgTTPTmaF5e2nVhOxw+Ur9HDJLsWb6U/KpgUzRZEdPfE6VOubXBKLdbcUTijzRptednSBDQbYZBOSqJxpJw==} @@ -855,7 +878,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.19.0 - dev: true /@babel/helper-module-transforms/7.19.0: resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} @@ -883,7 +905,6 @@ packages: /@babel/helper-plugin-utils/7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-replace-supers/7.18.9: resolution: {integrity: sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==} @@ -922,12 +943,10 @@ packages: /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-identifier/7.18.6: resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} - dev: true /@babel/helper-validator-option/7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} @@ -952,7 +971,6 @@ packages: '@babel/helper-validator-identifier': 7.18.6 chalk: 2.4.2 js-tokens: 4.0.0 - dev: true /@babel/parser/7.19.0: resolution: {integrity: sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==} @@ -1008,6 +1026,15 @@ packages: '@babel/helper-plugin-utils': 7.19.0 dev: true + /@babel/plugin-syntax-jsx/7.18.6: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.19.0 + dev: false + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.0: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -1307,12 +1334,1053 @@ packages: '@babel/helper-string-parser': 7.18.10 '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 - dev: true /@cfworker/uuid/1.12.4: resolution: {integrity: sha512-aw4lxCT4NLbGqlTScWPtPrZrg4TO6HCZCnNUAeC4yTOvkXjJGdJP6S5NCY9vtP2FruLIC+vYCvUP98fHXtF7kg==} dev: false + /@chakra-ui/accordion/2.1.4_pfc2njvvhr2ztmzdtezwrolety: + resolution: {integrity: sha512-PQFW6kr+Bdru0DjKA8akC4BAz1VAJisLgo4TsJwjPO2gTS0zr99C+3bBs9uoDnjSJAf18/Q5zdXv11adA8n2XA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + dependencies: + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_b6cg6jjo3nvfx3u2luvtn6jrla + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + + /@chakra-ui/alert/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-7LqPv6EUBte4XM/Q2qBFIT5o4BC0dSlni9BHOH2BgAc5B1NF+pBAMDTUH7JNBiN7RHTV7EHAIWDziiX/NK28+Q==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/anatomy/2.1.0: + resolution: {integrity: sha512-E3jMPGqKuGTbt7mKtc8g/MOOenw2c4wqRC1vOypyFgmC8wsewdY+DJJNENF3atXAK7p5VMBKQfZ7ipNlHnDAwA==} + dev: false + + /@chakra-ui/avatar/2.2.1_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-sgiogfLM8vas8QJTt7AJI4XxNXYdViCWj+xYJwyOwUN93dWKImqqx3O2ihCXoXTIqQWg1rcEgoJ5CxCg6rQaQQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/breadcrumb/2.1.1_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-OSa+F9qJ1xmF0zVxC1GU46OWbbhGf0kurHioSB729d+tRw/OMzmqrrfCJ7KVUUN8NEnTZXT5FIgokMvHGEt+Hg==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/breakpoint-utils/2.0.5: + resolution: {integrity: sha512-8uhrckMwoR/powlAhxiFZPM0s8vn0B2yEyEaRcwpy5NmRAJSTEotC2WkSyQl/Cjysx9scredumB5g+fBX7IqGQ==} + dev: false + + /@chakra-ui/button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-T9W/zHpHZVcbx/BMg0JIXCgRycut/eYoTYee/E+eBxyPCH45n308AsYU2bZ8TgZxUwbYNRgMp4qRL/KHUQDv5g==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/card/2.1.3_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-8ET6ZOo6HtJutetqHJVOz+VpZvrWMGFAELfHsCuA/7orp7QZyUyXqfA79cZqZXCd3C4zn2G8H0bkiQFvzxQgOw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/checkbox/2.2.5_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-7fNH+Q2nB2uMSnYAPtYxnuwZ1MOJqblZHa/ScfZ/fjiPDyEae1m068ZP/l9yJ5zlawYMTkp83m/JVcu5QFYurA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@zag-js/focus-visible': 0.1.0 + react: 18.2.0 + dev: false + + /@chakra-ui/clickable/2.0.11_react@18.2.0: + resolution: {integrity: sha512-5Y2dl5cxNgOxHbjxyxsL6Vdze4wUUvwsMCCW3kXwgz2OUI2y5UsBZNcvhNJx3RchJEd0fylMKiKoKmnZMHN2aw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/close-button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-ZI/3p84FPlW0xoDCZYqsnIvR6bTc2d/TlhwyTHsDDxq9ZOWp9c2JicVn6WTdWGdshk8itnZZdG50IcnizGnimA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/color-mode/2.1.10_react@18.2.0: + resolution: {integrity: sha512-aUPouOUPn7IPm1v00/9AIkRuNrkCwJlbjVL1kJzLzxijYjbHvEHPxntITt+JWjtXPT8xdOq6mexLYCOGA67JwQ==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/control-box/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-UJb4vqq+/FPuwTCuaPeHa2lwtk6u7eFvLuwDCST2e/sBWGJC1R+1/Il5pHccnWs09FWxyZ9v/Oxkg/CG3jZR4Q==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/counter/2.0.11_react@18.2.0: + resolution: {integrity: sha512-1YRt/jom+m3iWw9J9trcM6rAHDvD4lwThiO9raxUK7BRsYUhnPZvsMpcXU1Moax218C4rRpbI9KfPLaig0m1xQ==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/number-utils': 2.0.5 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/css-reset/2.0.10_hp5f5nkljdiwilp4rgxyefcplu: + resolution: {integrity: sha512-FwHOfw2P4ckbpSahDZef2KoxcvHPUg09jlicWdp24/MjdsOO5PAB/apm2UBvQflY4WAJyOqYaOdnXFlR6nF4cQ==} + peerDependencies: + '@emotion/react': '>=10.0.35' + react: '>=18' + dependencies: + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + react: 18.2.0 + dev: false + + /@chakra-ui/descendant/3.0.11_react@18.2.0: + resolution: {integrity: sha512-sNLI6NS6uUgrvYS6Imhoc1YlI6bck6pfxMBJcnXVSfdIjD6XjCmeY2YgzrtDS+o+J8bB3YJeIAG/vsVy5USE5Q==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/dom-utils/2.0.4: + resolution: {integrity: sha512-P936+WKinz5fgHzfwiUQjE/t7NC8bU89Tceim4tbn8CIm/9b+CsHX64eNw4vyJqRwt78TXQK7aGBIbS18R0q5Q==} + dev: false + + /@chakra-ui/editable/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-kIFPufzIlViNv7qi2PxxWWBvjLb+3IP5hUGmqOA9qcYz5TAdqblQqDClm0iajlIDNUFWnS4h056o8jKsQ42a5A==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/event-utils/2.0.6: + resolution: {integrity: sha512-ZIoqUbgJ5TcCbZRchMv4n7rOl1JL04doMebED88LO5mux36iVP9er/nnOY4Oke1bANKKURMrQf5VTT9hoYeA7A==} + dev: false + + /@chakra-ui/focus-lock/2.0.13_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-AVSJt+3Ukia/m9TCZZgyWvTY7pw88jArivWVJ2gySGYYIs6z/FJMnlwbCVldV2afS0g3cYaii7aARb/WrlG34Q==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/dom-utils': 2.0.4 + react: 18.2.0 + react-focus-lock: 2.9.2_w5j4k42lgipnm43s3brx6h3c34 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@chakra-ui/form-control/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-J964JlgrxP+LP3kYmLk1ttbl73u6ghT+JQDjEjkEUc8lSS9Iv4u9XkRDQHuz2t2y0KHjQdH12PUfUfBqcITbYw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/hooks/2.1.2_react@18.2.0: + resolution: {integrity: sha512-/vDBOqqnho9q++lay0ZcvnH8VuE0wT2OkZj+qDwFwjiHAtGPVxHCSpu9KC8BIHME5TlWjyO6riVyUCb2e2ip6w==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-utils': 2.0.9_react@18.2.0 + '@chakra-ui/utils': 2.0.12 + compute-scroll-into-view: 1.0.14 + copy-to-clipboard: 3.3.1 + react: 18.2.0 + dev: false + + /@chakra-ui/icon/3.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/icon/3.0.13_react@18.2.0: + resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/shared-utils': 2.0.3 + react: 18.2.0 + dev: false + + /@chakra-ui/icons/2.0.14_react@18.2.0: + resolution: {integrity: sha512-ZHjZ+ekDoW27MTDKqmKasBDEeSJB+dZXn2GubCPLVIzzXdL54TfwMrKOzLBJ2Q68YqFr7+OBbhlsLvKUKPSreA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/image/2.0.12_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-uclFhs0+wq2qujGu8Wk4eEWITA3iZZQTitGiFSEkO9Ws5VUH+Gqtn3mUilH0orubrI5srJsXAmjVTuVwge1KJQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-CkSrUJeKWogOSt2pUf2vVv5s0bUVcAi4/XGj1JVCCfyIX6a6h1m8R69MShTPxPiQ0Mdebq5ATrW/aZQQXZzRGQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/object-utils': 2.0.5 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/layout/2.1.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-UP19V8EeI/DEODbWrZlqC0sg248bpFaWpMiM/+g9Bsxs9aof3yexpMD/7gb0yrfbIrkdvSBrcQeqxXGzbfoopw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/breakpoint-utils': 2.0.5 + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/object-utils': 2.0.5 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/lazy-utils/2.0.3: + resolution: {integrity: sha512-SQ5I5rJrcHpVUcEftHLOh8UyeY+06R8Gv3k2RjcpvM6mb2Gktlz/4xl2GcUh3LWydgGQDW/7Rse5rQhKWgzmcg==} + dev: false + + /@chakra-ui/live-region/2.0.11_react@18.2.0: + resolution: {integrity: sha512-ltObaKQekP75GCCbN+vt1/mGABSCaRdQELmotHTBc5AioA3iyCDHH69ev+frzEwLvKFqo+RomAdAAgqBIMJ02Q==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/media-query/3.2.8_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-djmEg/eJ5Qrjn7SArTqjsvlwF6mNeMuiawrTwnU+0EKq9Pq/wVSb7VaIhxdQYJLA/DbRhE/KPMogw1LNVKa4Rw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/breakpoint-utils': 2.0.5 + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/menu/2.1.5_pfc2njvvhr2ztmzdtezwrolety: + resolution: {integrity: sha512-2UusrQtxHcqcO9n/0YobNN3RJC8yAZU6oJbRPuvsQ9IL89scEWCTIxXEYrnIjeh/5zikcSEDGo9zM9Udg/XcsA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + dependencies: + '@chakra-ui/clickable': 2.0.11_react@18.2.0 + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-outside-click': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_b6cg6jjo3nvfx3u2luvtn6jrla + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + + /@chakra-ui/modal/2.2.5_bahb7leykvlp7vyy56iisixxwi: + resolution: {integrity: sha512-QIoN89bT5wnR71wxZFHt7vsS65yF9WCfIwDtFk8ifxJORPi/UkLMwBpjTV2Jfsxd22W6Oo2VOpRR0a5WFeK+jA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/focus-lock': 2.0.13_w5j4k42lgipnm43s3brx6h3c34 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_b6cg6jjo3nvfx3u2luvtn6jrla + aria-hidden: 1.2.1_w5j4k42lgipnm43s3brx6h3c34 + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-remove-scroll: 2.5.4_w5j4k42lgipnm43s3brx6h3c34 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@chakra-ui/number-input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-IARUAbP4pn1gP5fY2dK4wtbR3ONjzHgTjH4Zj3ErZvdu/yTURLaZmlb6UGHwgqjWLyioactZ/+n4Njj5CRjs8w==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/counter': 2.0.11_react@18.2.0 + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-interval': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/number-utils/2.0.5: + resolution: {integrity: sha512-Thhohnlqze0i5HBJO9xkfOPq1rv3ji/hNPf2xh1fh4hxrNzdm3HCkz0c6lyRQwGuVoeltEHysYZLH/uWLFTCSQ==} + dev: false + + /@chakra-ui/object-utils/2.0.5: + resolution: {integrity: sha512-/rIMoYI3c2uLtFIrnTFOPRAI8StUuu335WszqKM0KAW1lwG9H6uSbxqlpZT1Pxi/VQqZKfheGiMQOx5lfTmM/A==} + dev: false + + /@chakra-ui/pin-input/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-51cioNYpBSgi9/jq6CrzoDvo8fpMwFXu3SaFRbKO47s9Dz/OAW0MpjyabTfSpwOv0xKZE+ayrYGJopCzZSWXPg==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/popover/2.1.4_pfc2njvvhr2ztmzdtezwrolety: + resolution: {integrity: sha512-NXVtyMxYzDKzzQph/+GFRSM3tEj3gNvlCX/xGRsCOt9I446zJ1InCd/boXQKAc813coEN9McSOjNWgo+NCBD+Q==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + dependencies: + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 + '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + + /@chakra-ui/popper/3.0.10_react@18.2.0: + resolution: {integrity: sha512-6LacbBGX0piHWY/DYxOGCTTFAoRGRHpGIRzTgfNy8jxw4f+rukaVudd4Pc2fwjCTdobJKM8nGNYIYNv9/Dmq9Q==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@popperjs/core': 2.11.6 + react: 18.2.0 + dev: false + + /@chakra-ui/portal/2.0.12_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-8D/1fFUdbJtzyGL5sCBIb4oyTnPG2v6rx/L/qbG43FcXDrongmzLj0+tJ//PbJr+5hxjXAWFUjpPvyx10pTN6Q==} + peerDependencies: + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@chakra-ui/progress/2.1.2_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-ofhMWTqCxnm1NiP/zH4SV7EvOLogfX15MSMTNfGqZv6t8eSSeTn6oRRzsTSllJfSqDey7oZNCRbP7vDhvx9HtQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/provider/2.0.26_5rzy53przelm5jchjmb5vr6dxy: + resolution: {integrity: sha512-ln5c3zSFvN1WrkPkX/KOWp+CPg6y8opASlZvWvM+1lTpNX82FkXyPiQYjaemGGbKuooqdRMylseWBStoFwjxOw==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/utils': 2.0.12 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@chakra-ui/radio/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-e/hY1g92Xdu5d5A27NFfa1+ccE2q/A5H7sc/M7p0fId6KO33Dst25Hy+HThtqnYN0Y3Om58fiXEKo5SsdtvSfA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@zag-js/focus-visible': 0.1.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-children-utils/2.0.4_react@18.2.0: + resolution: {integrity: sha512-qsKUEfK/AhDbMexWo5JhmdlkxLg5WEw2dFh4XorvU1/dTYsRfP6cjFfO8zE+X3F0ZFNsgKz6rbN5oU349GLEFw==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-context/2.0.5_react@18.2.0: + resolution: {integrity: sha512-WYS0VBl5Q3/kNShQ26BP+Q0OGMeTQWco3hSiJWvO2wYLY7N1BLq6dKs8vyKHZfpwKh2YL2bQeAObi+vSkXp6tQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-env/2.0.11_react@18.2.0: + resolution: {integrity: sha512-rPwUHReSWh7rbCw0HePa8Pvc+Q82fUFvVjHTIbXKnE6d+01cCE7j4f1NLeRD9pStKPI6sIZm9xTGvOCzl8F8iw==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-types/2.0.5_react@18.2.0: + resolution: {integrity: sha512-GApp+R/VjS1UV5ms5irrij5LOIgUM0dqSVHagyEFEz88LRKkqMD9RuO577ZsVd4Gn0ULsacVJCUA0HtNUBJNzA==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-animation-state/2.0.6_react@18.2.0: + resolution: {integrity: sha512-M2kUzZkSBgDpfvnffh3kTsMIM3Dvn+CTMqy9zfY97NL4P3LAWL1MuFtKdlKfQ8hs/QpwS/ew8CTmCtaywn4sKg==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/dom-utils': 2.0.4 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-callback-ref/2.0.5_react@18.2.0: + resolution: {integrity: sha512-vKnXleD2PzB0nGabY35fRtklMid4z7cecbMG0fkasNNsgWmrQcXJOuEKUUVCynL6FBU6gBnpKFi5Aqj6x+K4tw==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-controllable-state/2.0.6_react@18.2.0: + resolution: {integrity: sha512-7WuKrhQkpSRoiI5PKBvuIsO46IIP0wsRQgXtStSaIXv+FIvIJl9cxQXTbmZ5q1Ds641QdAUKx4+6v0K/zoZEHg==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-disclosure/2.0.6_react@18.2.0: + resolution: {integrity: sha512-4UPePL+OcCY37KZ585iLjg8i6J0sjpLm7iZG3PUwmb97oKHVHq6DpmWIM0VfSjcT6AbSqyGcd5BXZQBgwt8HWQ==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-event-listener/2.0.5_react@18.2.0: + resolution: {integrity: sha512-etLBphMigxy/cm7Yg22y29gQ8u/K3PniR5ADZX7WVX61Cgsa8ciCqjTE9sTtlJQWAQySbWxt9+mjlT5zaf+6Zw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-focus-effect/2.0.7_react@18.2.0: + resolution: {integrity: sha512-wI8OUNwfbkusajLac8QtjfSyNmsNu1D5pANmnSHIntHhui6Jwv75Pxx7RgmBEnfBEpleBndhR9E75iCjPLhZ/A==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/dom-utils': 2.0.4 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-focus-on-pointer-down/2.0.4_react@18.2.0: + resolution: {integrity: sha512-L3YKouIi77QbXH9mSLGEFzJbJDhyrPlcRcuu+TSC7mYaK9E+3Ap+RVSAVxj+CfQz7hCWpikPecKDuspIPWlyuA==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-interval/2.0.3_react@18.2.0: + resolution: {integrity: sha512-Orbij5c5QkL4NuFyU4mfY/nyRckNBgoGe9ic8574VVNJIXfassevZk0WB+lvqBn5XZeLf2Tj+OGJrg4j4H9wzw==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-latest-ref/2.0.3_react@18.2.0: + resolution: {integrity: sha512-exNSQD4rPclDSmNwtcChUCJ4NuC2UJ4amyNGBqwSjyaK5jNHk2kkM7rZ6I0I8ul+26lvrXlSuhyv6c2PFwbFQQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-merge-refs/2.0.5_react@18.2.0: + resolution: {integrity: sha512-uc+MozBZ8asaUpO8SWcK6D4svRPACN63jv5uosUkXJR+05jQJkUofkfQbf2HeGVbrWCr0XZsftLIm4Mt/QMoVw==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-outside-click/2.0.5_react@18.2.0: + resolution: {integrity: sha512-WmtXUeVaMtxP9aUGGG+GQaDeUn/Bvf8TI3EU5mE1+TtqLHxyA9wtvQurynrogvpilLaBADwn/JeBeqs2wHpvqA==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-pan-event/2.0.6_react@18.2.0: + resolution: {integrity: sha512-Vtgl3c+Mj4hdehFRFIgruQVXctwnG1590Ein1FiU8sVnlqO6bpug6Z+B14xBa+F+X0aK+DxnhkJFyWI93Pks2g==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/event-utils': 2.0.6 + '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 + framesync: 5.3.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-previous/2.0.3_react@18.2.0: + resolution: {integrity: sha512-A2ODOa0rm2HM4aqXfxxI0zPLcn5Q7iBEjRyfIQhb+EH+d2OFuj3L2slVoIpp6e/km3Xzv2d+u/WbjgTzdQ3d0w==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-safe-layout-effect/2.0.3_react@18.2.0: + resolution: {integrity: sha512-dlTvQURzmdfyBbNdydgO4Wy2/HV8aJN8LszTtyb5vRZsyaslDM/ftcxo8E8QjHwRLD/V1Epb/A8731QfimfVaQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-size/2.0.5_react@18.2.0: + resolution: {integrity: sha512-4arAApdiXk5uv5ZeFKltEUCs5h3yD9dp6gTIaXbAdq+/ENK3jMWTwlqzNbJtCyhwoOFrblLSdBrssBMIsNQfZQ==} + peerDependencies: + react: '>=18' + dependencies: + '@zag-js/element-size': 0.1.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-timeout/2.0.3_react@18.2.0: + resolution: {integrity: sha512-rBBUkZSQq3nJQ8fuMkgZNY2Sgg4vKiKNp05GxAwlT7TitOfVZyoTriqQpqz296bWlmkICTZxlqCWfE5fWpsTsg==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false + + /@chakra-ui/react-use-update-effect/2.0.5_react@18.2.0: + resolution: {integrity: sha512-y9tCMr1yuDl8ATYdh64Gv8kge5xE1DMykqPDZw++OoBsTaWr3rx40wblA8NIWuSyJe5ErtKP2OeglvJkYhryJQ==} + peerDependencies: + react: '>=18' + dependencies: + react: 18.2.0 + dev: false + + /@chakra-ui/react-utils/2.0.9_react@18.2.0: + resolution: {integrity: sha512-nlwPBVlQmcl1PiLzZWyrT3FSnt3vKSkBMzQ0EF4SJWA/nOIqTvmffb5DCzCqPzgQaE/Da1Xgus+JufFGM8GLCQ==} + peerDependencies: + react: '>=18' + dependencies: + '@chakra-ui/utils': 2.0.12 + react: 18.2.0 + dev: false + + /@chakra-ui/react/2.4.4_4krdlvlqq3ittuocexwl336v2q: + resolution: {integrity: sha512-mA0Js3qpRBTmhPuBlBw85OG9ot7uh7+4IjsASmkzbpJVB1Kz9Z+7RBOpjHfK/03zEsRp+XYrb1ps0DYl8ih5bQ==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/accordion': 2.1.4_pfc2njvvhr2ztmzdtezwrolety + '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/avatar': 2.2.1_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/breadcrumb': 2.1.1_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/card': 2.1.3_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/control-box': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/counter': 2.0.11_react@18.2.0 + '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu + '@chakra-ui/editable': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/hooks': 2.1.2_react@18.2.0 + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/layout': 2.1.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/live-region': 2.0.11_react@18.2.0 + '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/menu': 2.1.5_pfc2njvvhr2ztmzdtezwrolety + '@chakra-ui/modal': 2.2.5_bahb7leykvlp7vyy56iisixxwi + '@chakra-ui/number-input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/pin-input': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/popover': 2.1.4_pfc2njvvhr2ztmzdtezwrolety + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/progress': 2.1.2_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/provider': 2.0.26_5rzy53przelm5jchjmb5vr6dxy + '@chakra-ui/radio': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/select': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/skeleton': 2.0.20_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/slider': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/stat': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/switch': 2.0.17_pfc2njvvhr2ztmzdtezwrolety + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/table': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/tabs': 2.1.5_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/tag': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/textarea': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + '@chakra-ui/theme-utils': 2.0.6 + '@chakra-ui/toast': 4.0.6_i3fry3o3knqfkfe5gclzopzidu + '@chakra-ui/tooltip': 2.2.3_i3fry3o3knqfkfe5gclzopzidu + '@chakra-ui/transition': 2.0.12_b6cg6jjo3nvfx3u2luvtn6jrla + '@chakra-ui/utils': 2.0.12 + '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@chakra-ui/select/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-fvVGxAtLaIXGOMicrzSa6imMw5h26S1ar3xyNmXgR40dbpTPHmtQJkbHBf9FwwQXgSgKWgBzsztw5iDHCpPVzA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/shared-utils/2.0.3: + resolution: {integrity: sha512-pCU+SUGdXzjAuUiUT8mriekL3tJVfNdwSTIaNeip7k/SWDzivrKGMwAFBxd3XVTDevtVusndkO4GJuQ3yILzDg==} + dev: false + + /@chakra-ui/skeleton/2.0.20_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-PEjjAHT/X8XEHTzXlN0kL883m1Z4Yo4A/ztv4VOvBTnXhHl2wFrrwucxj8TS3eWoCJ65dY9b0ZySP9ARTUe1ng==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-use-previous': 2.0.3_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/slider/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-0nEu9+OAPv4yzMrTH6SkNNMiXbLRe7lXYv1gWbpDGOsNgpGDFYmA7qpzsiiJEJoynqcJZqmDPArqWWPNYeY6Sw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/number-utils': 2.0.5 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-pan-event': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-size': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/spinner/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-piO2ghWdJzQy/+89mDza7xLhPnW7pA+ADNbgCb1vmriInWedS41IBKe+pSPz4IidjCbFu7xwKE0AerFIbrocCA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/stat/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-6XeuE/7w0BjyCHSxMbsf6/rNOOs8BSit1NS7g7+Jd/40Pc/SKlNWLd3kxXPid4eT3RwyNIdMPtm30OActr9nqQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/styled-system/2.5.0: + resolution: {integrity: sha512-xbvD9MTSXqsPbunCCxfebqslokU53zUefPDQJhgXNKKeMq0NGEgNdGOFXC8oFDP1S/I1GgohKcrSbrSXXLw8yg==} + dependencies: + csstype: 3.1.1 + lodash.mergewith: 4.6.2 + dev: false + + /@chakra-ui/switch/2.0.17_pfc2njvvhr2ztmzdtezwrolety: + resolution: {integrity: sha512-BQabfC6qYi5xBJvEFPzKq0yl6fTtTNNEHTid5r7h0PWcCnAiHwQJTpQRpxp+AjK569LMLtTXReTZvNBrzEwOrA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + dependencies: + '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + + /@chakra-ui/system/2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm: + resolution: {integrity: sha512-x7S7pNKQtFk7/qsn3aHlbZfhcacvaGXBKlnQvHKrbmDVxgLCjGExdi/8Vs7rSYzIyXHx3lItpwd2qHsqqcNvaQ==} + peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + dependencies: + '@chakra-ui/color-mode': 2.1.10_react@18.2.0 + '@chakra-ui/react-utils': 2.0.9_react@18.2.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme-utils': 2.0.6 + '@chakra-ui/utils': 2.0.12 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/styled': 11.10.5_s7uipz3r575xmfz2gje3lxfqua + react: 18.2.0 + react-fast-compare: 3.2.0 + dev: false + + /@chakra-ui/table/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-miQUBJ07L7RzVoFAD6C9I9gaaABeivFRjbr9hf3vyTCsUTV/HDIBHROr6V1sIcQS3asU5nrgbDzRm90mvFOTiw==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/tabs/2.1.5_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-XmnKDclAJe0FoW4tdC8AlnZpPN5fcj92l4r2sqiL9WyYVEM71hDxZueETIph/GTtfMelG7Z8e5vBHP4rh1RT5g==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/clickable': 2.0.11_react@18.2.0 + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/tag/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-W1urf+tvGMt6J3cc31HudybYSl+B5jYUP5DJxzXM9p+n3JrvXWAo4D6LmpLBHY5zT2mNne14JF1rVeRcG4Rtdg==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/textarea/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-r8hF1rCi+GseLtY/IGeVWXFN0Uve2b820UQumRj4qxj7PsPqw1hFg7Cecbbb9zwF38K/m+D3IdwFeJzI1MtgRA==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + + /@chakra-ui/theme-tools/2.0.14_egcizgpwtsioofm7hx34ab4iqi: + resolution: {integrity: sha512-lVcDmq5pyU0QbsIFKjt/iVUFDap7di2QHvPvGChA1YSjtg1PtuUi+BxEXWzp3Nfgw/N4rMvlBs+S0ynJypdwbg==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.0 + '@chakra-ui/styled-system': 2.5.0 + color2k: 2.0.0 + dev: false + + /@chakra-ui/theme-utils/2.0.6: + resolution: {integrity: sha512-kUm3jaz3sQ/bhBEZ6RWPs1xptQNdSWh/krv9p92rvSkEfjCBDHM5dx7dYk/8KamyUZ6DmK+M31dPyOdOROkBFQ==} + dependencies: + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + lodash.mergewith: 4.6.2 + dev: false + + /@chakra-ui/theme/2.2.2_egcizgpwtsioofm7hx34ab4iqi: + resolution: {integrity: sha512-7DlOQiXmnaqYyqXwqmfFSCWGkUonuqmNC5mmUCwxI435KgHNCaE2bIm6DI7N2NcIcuVcfc8Vn0UqrDoGU3zJBg==} + peerDependencies: + '@chakra-ui/styled-system': '>=2.0.0' + dependencies: + '@chakra-ui/anatomy': 2.1.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme-tools': 2.0.14_egcizgpwtsioofm7hx34ab4iqi + dev: false + + /@chakra-ui/toast/4.0.6_i3fry3o3knqfkfe5gclzopzidu: + resolution: {integrity: sha512-LatqPM7Vhj22qCyOYXDuhretohp5lJWcXpI9QwpDjd/CEeChy4kYeIJbaLBMzl2WTfIZ+rfHRBhFTpp33aGyqA==} + peerDependencies: + '@chakra-ui/system': 2.3.5 + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-use-timeout': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@chakra-ui/tooltip/2.2.3_i3fry3o3knqfkfe5gclzopzidu: + resolution: {integrity: sha512-yOne9ofFYfW2XHsbCEPWgLUTnHKm5z21f/cPjwEqtmvCS7aTCOLFiwz2ckRS8yJbIAy+mw0UG6jQsblYKgXj4A==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' + dependencies: + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /@chakra-ui/transition/2.0.12_b6cg6jjo3nvfx3u2luvtn6jrla: + resolution: {integrity: sha512-ff6eU+m08ccYfCkk0hKfY/XlmGxCrfbBgsKgV4mirZ4SKUL1GVye8CYuHwWQlBJo+8s0yIpsTNxAuX4n/cW9/w==} + peerDependencies: + framer-motion: '>=4.0.0' + react: '>=18' + dependencies: + framer-motion: 7.10.3_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false + + /@chakra-ui/utils/2.0.12: + resolution: {integrity: sha512-1Z1MgsrfMQhNejSdrPJk8v5J4gCefHo+1wBmPPHTz5bGEbAAbZ13aXAfXy8w0eFy0Nvnawn0EHW7Oynp/MdH+Q==} + dependencies: + '@types/lodash.mergewith': 4.6.6 + css-box-model: 1.2.1 + framesync: 5.3.0 + lodash.mergewith: 4.6.2 + dev: false + + /@chakra-ui/visually-hidden/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-sDEeeEjLfID333EC46NdCbhK2HyMXlpl5HzcJjuwWIpyVz4E1gKQ9hlwpq6grijvmzeSywQ5D3tTwUrvZck4KQ==} + peerDependencies: + '@chakra-ui/system': '>=2.0.0' + react: '>=18' + dependencies: + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false + /@chec/commerce.js/2.8.0: resolution: {integrity: sha512-OPBphT/hU33iDp52zzYOqz/oSXLhEuhGVUg2UNvYtmBW4eCNmtsM0dqW0+wu+6K0d6fZojurCBdVQMKb2R7l3g==} dependencies: @@ -1506,6 +2574,144 @@ packages: postcss: 8.4.16 postcss-selector-parser: 6.0.10 + /@emotion/babel-plugin/11.10.5: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6 + '@babel/runtime': 7.19.0 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/serialize': 1.1.1 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.1.3 + dev: false + + /@emotion/cache/11.10.5: + resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} + dependencies: + '@emotion/memoize': 0.8.0 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + stylis: 4.1.3 + dev: false + + /@emotion/hash/0.9.0: + resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} + dev: false + + /@emotion/is-prop-valid/0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + optional: true + + /@emotion/is-prop-valid/1.2.0: + resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} + dependencies: + '@emotion/memoize': 0.8.0 + dev: false + + /@emotion/memoize/0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + dev: false + optional: true + + /@emotion/memoize/0.8.0: + resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} + dev: false + + /@emotion/react/11.10.5_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.19.0 + '@emotion/babel-plugin': 11.10.5 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + '@types/react': 18.0.20 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@emotion/serialize/1.1.1: + resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} + dependencies: + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/unitless': 0.8.0 + '@emotion/utils': 1.2.0 + csstype: 3.1.1 + dev: false + + /@emotion/sheet/1.2.1: + resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} + dev: false + + /@emotion/styled/11.10.5_s7uipz3r575xmfz2gje3lxfqua: + resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} + peerDependencies: + '@babel/core': ^7.0.0 + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.19.0 + '@emotion/babel-plugin': 11.10.5 + '@emotion/is-prop-valid': 1.2.0 + '@emotion/react': 11.10.5_w5j4k42lgipnm43s3brx6h3c34 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/utils': 1.2.0 + '@types/react': 18.0.20 + react: 18.2.0 + dev: false + + /@emotion/unitless/0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: + resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /@emotion/utils/1.2.0: + resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} + dev: false + + /@emotion/weak-memoize/0.3.0: + resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} + dev: false + /@eslint/eslintrc/1.3.2: resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2217,6 +3423,18 @@ packages: resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} dev: true + /@iconify/icons-mdi/1.1.47: + resolution: {integrity: sha512-6AZfvWru20Rl9pXULStkVvTWnua6VG56zOIKdkCzLh25XVeTDEp6f1dL7iX9w+way5+1hI0BBuqTQd61qYaKdg==} + dev: false + + /@iconify/react/3.2.2_react@18.2.0: + resolution: {integrity: sha512-z3+Jno3VcJzgNHsN5mEvYMsgCkOZkydqdIwOxjXh45+i2Vs9RGH68Y52vt39izwFSfuYUXhaW+1u7m7+IhCn/g==} + peerDependencies: + react: '>=16' + dependencies: + react: 18.2.0 + dev: false + /@ioredis/commands/1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} dev: false @@ -2275,6 +3493,53 @@ packages: - supports-color dev: false + /@motionone/animation/10.15.1: + resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + dependencies: + '@motionone/easing': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false + + /@motionone/dom/10.15.3: + resolution: {integrity: sha512-FQ7a2zMBXc1UeU8CG9G3yDpst55fbb0+C9A0VGfwOITitBCzigKZnXRgsRSWWR+FW57GSc13eGQxtYB0lKG0Ng==} + dependencies: + '@motionone/animation': 10.15.1 + '@motionone/generators': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false + + /@motionone/easing/10.15.1: + resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + dependencies: + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false + + /@motionone/generators/10.15.1: + resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + dependencies: + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false + + /@motionone/types/10.15.1: + resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + dev: false + + /@motionone/utils/10.15.1: + resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} + dependencies: + '@motionone/types': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false + /@next/bundle-analyzer/12.3.0: resolution: {integrity: sha512-hzRLHIrtwOiGEku9rmG7qZk+OQhnqQOL+ycl2XrjBaztBN/xaqnjoG4+HEf9L7ELN943BR+K/ZlaF2OEgbGm+Q==} dependencies: @@ -2460,6 +3725,10 @@ packages: resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} dev: true + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} + dev: false + /@radix-ui/primitive/1.0.0: resolution: {integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==} dependencies: @@ -3141,6 +4410,12 @@ packages: '@types/lodash': 4.14.185 dev: true + /@types/lodash.mergewith/4.6.6: + resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} + dependencies: + '@types/lodash': 4.14.185 + dev: false + /@types/lodash.random/3.2.7: resolution: {integrity: sha512-gFKkVgWYi1q7RFJ+QNTzaRprdhVIZLpZd6C3MTNehKcujMn9SyFUqf2fTBOmvIYXqNk0RpwfbdOwHf0GnEQB0g==} dependencies: @@ -3155,7 +4430,6 @@ packages: /@types/lodash/4.14.185: resolution: {integrity: sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==} - dev: true /@types/node-fetch/2.6.2: resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} @@ -3174,7 +4448,6 @@ packages: /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: true /@types/prop-types/15.7.5: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} @@ -3185,6 +4458,12 @@ packages: '@types/react': 18.0.20 dev: true + /@types/react-slick/0.23.10: + resolution: {integrity: sha512-ZiqdencANDZy6sWOWJ54LDvebuXFEhDlHtXU9FFipQR2BcYU2QJxZhvJPW6YK7cocibUiNn+YvDTbt1HtCIBVA==} + dependencies: + '@types/react': 18.0.20 + dev: true + /@types/react/18.0.20: resolution: {integrity: sha512-MWul1teSPxujEHVwZl4a5HxQ9vVNsjTchVA+xRqv/VYGCuKGAU6UhfrTdF5aBefwD1BHUD8i/zq+O/vyCm/FrA==} dependencies: @@ -3309,6 +4588,14 @@ packages: - encoding dev: true + /@zag-js/element-size/0.1.0: + resolution: {integrity: sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==} + dev: false + + /@zag-js/focus-visible/0.1.0: + resolution: {integrity: sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==} + dev: false + /abort-controller/3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -3431,7 +4718,6 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -3668,6 +4954,15 @@ packages: object.assign: 4.1.4 dev: true + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.19.0 + cosmiconfig: 7.0.1 + resolve: 1.22.1 + dev: false + /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} dev: true @@ -3896,7 +5191,6 @@ packages: /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: true /camel-case/4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} @@ -3944,7 +5238,6 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true /chalk/4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -4037,6 +5330,10 @@ packages: static-extend: 0.1.2 dev: true + /classnames/2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + dev: false + /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -4148,7 +5445,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -4159,11 +5455,14 @@ packages: /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color2k/2.0.0: + resolution: {integrity: sha512-DWX9eXOC4fbJNiuvdH4QSHvvfLWyFo9TuFp7V9OzdsbPAdrWAuYc8qvFP2bIQ/LKh4LrAVnJ6vhiQYPvAHdtTg==} + dev: false + /colorette/2.0.19: resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} dev: true @@ -4206,6 +5505,10 @@ packages: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true + /compute-scroll-into-view/1.0.14: + resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} + dev: false + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4221,7 +5524,6 @@ packages: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 - dev: true /cookie/0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} @@ -4233,6 +5535,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /copy-to-clipboard/3.3.1: + resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} + dependencies: + toggle-selection: 1.0.6 + dev: false + /core-js-pure/3.25.1: resolution: {integrity: sha512-7Fr74bliUDdeJCBMxkkIuQ4xfxn/SwrVg+HkJUAoNEXVqYLv55l6Af0dJ5Lq2YBUW9yKqSkLXaS5SYPK6MGa/A==} requiresBuild: true @@ -4287,7 +5595,6 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: true /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -4321,6 +5628,12 @@ packages: postcss-selector-parser: 6.0.10 dev: true + /css-box-model/1.2.1: + resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} + dependencies: + tiny-invariant: 1.3.1 + dev: false + /css-has-pseudo/3.0.4_postcss@8.4.16: resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} engines: {node: ^12 || ^14 || >=16} @@ -4642,6 +5955,10 @@ packages: once: 1.4.0 dev: true + /enquire.js/2.1.6: + resolution: {integrity: sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==} + dev: false + /err-code/2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} dev: false @@ -4650,7 +5967,6 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 - dev: true /es-abstract/1.20.2: resolution: {integrity: sha512-XxXQuVNrySBNlEkTYJoDNFe5+s2yIOpzq80sUHEdPdQr0S5nTLz4ZPPPswNIpKseDDUS5yghX1gfLIHQZ1iNuQ==} @@ -4703,7 +6019,6 @@ packages: /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -5240,6 +6555,10 @@ packages: dependencies: to-regex-range: 5.0.1 + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -5268,6 +6587,13 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /focus-lock/0.11.4: + resolution: {integrity: sha512-LzZWJcOBIcHslQ46N3SUu/760iLPSrUtp8omM4gh9du438V2CQdks8TcOu1yvmu2C68nVOBnl1WFiKGPbQ8L6g==} + engines: {node: '>=10'} + dependencies: + tslib: 2.4.0 + dev: false + /follow-redirects/1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -5321,6 +6647,27 @@ packages: map-cache: 0.2.2 dev: true + /framer-motion/7.10.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-k2ccYeZNSpPg//HTaqrU+4pRq9f9ZpaaN7rr0+Rx5zA4wZLbk547wtDzge2db1sB+1mnJ6r59P4xb+aEIi/W+w==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@motionone/dom': 10.15.3 + hey-listen: 1.0.8 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + tslib: 2.4.0 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + + /framesync/5.3.0: + resolution: {integrity: sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==} + dependencies: + tslib: 2.4.0 + dev: false + /fs-minipass/2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -5638,7 +6985,6 @@ packages: /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -5706,6 +7052,16 @@ packages: tslib: 2.4.0 dev: true + /hey-listen/1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + + /hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + /http-cache-semantics/4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} @@ -5808,7 +7164,6 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true /import-from/3.0.0: resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} @@ -5951,7 +7306,6 @@ packages: /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} @@ -6329,7 +7683,6 @@ packages: /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -6353,6 +7706,12 @@ packages: remove-trailing-spaces: 1.0.8 dev: true + /json2mq/0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + dev: false + /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} hasBin: true @@ -6483,7 +7842,6 @@ packages: /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true /lint-staged/12.5.0: resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} @@ -6664,6 +8022,10 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: false + /lodash.once/4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -7197,7 +8559,6 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true /object-copy/0.1.0: resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} @@ -7440,7 +8801,6 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: true /parse-filepath/1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} @@ -7469,7 +8829,6 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true /pascal-case/3.1.2: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} @@ -7527,7 +8886,14 @@ packages: /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true + + /photo-sphere-viewer/4.8.1: + resolution: {integrity: sha512-Yl1KZq1adtrajCOrf8Y79Qi4A35DfEu8atL779YOdA9XHoH2l2+sYovejnZlGgUM0hEbTyenRDoyXSy/MtioYg==} + deprecated: Use @photo-sphere-viewer/core instead, see https://photo-sphere-viewer.js.org/guide/migration.html + dependencies: + three: 0.147.0 + uevent: 2.2.0 + dev: false /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -8019,7 +9385,6 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - dev: true /pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -8083,6 +9448,15 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-clientside-effect/1.2.6_react@18.2.0: + resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} + peerDependencies: + react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.19.0 + react: 18.2.0 + dev: false + /react-dom/18.2.0_react@18.2.0: resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} peerDependencies: @@ -8092,6 +9466,10 @@ packages: react: 18.2.0 scheduler: 0.23.0 + /react-fast-compare/3.2.0: + resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} + dev: false + /react-fast-marquee/1.3.5_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-eOqLoz4iVVBvi2wN/web8hd2XX9y2Z6CYR7g++7nTVHlTOXBtqyARQJ9rYNpbp179hAzloMx0yBFAo8LpNYmKQ==} peerDependencies: @@ -8102,9 +9480,59 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false + /react-focus-lock/2.9.2_w5j4k42lgipnm43s3brx6h3c34: + resolution: {integrity: sha512-5JfrsOKyA5Zn3h958mk7bAcfphr24jPoMoznJ8vaJF6fUrPQ8zrtEd3ILLOK8P5jvGxdMd96OxWNjDzATfR2qw==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.19.0 + '@types/react': 18.0.20 + focus-lock: 0.11.4 + prop-types: 15.8.1 + react: 18.2.0 + react-clientside-effect: 1.2.6_react@18.2.0 + use-callback-ref: 1.3.0_w5j4k42lgipnm43s3brx6h3c34 + use-sidecar: 1.1.2_w5j4k42lgipnm43s3brx6h3c34 + dev: false + + /react-h5-audio-player/3.8.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-eyViI47jRRybCcCkGdoAMd6yfhg3UMyXp39mqOWCbNQfAYI8U6zC0+0DLZjhrB7//DJtHhZx8h1q99HMxYkMWQ==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.3.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.19.0 + '@iconify/icons-mdi': 1.1.47 + '@iconify/react': 3.2.2_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false + + /react-icons/4.7.1_react@18.2.0: + resolution: {integrity: sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false + + /react-img-mapper/1.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-dP1JqD4/8rQWoaViqOwclmNeU8MVrk5sIDD6dme/m7HYDmulcNaKKHlzZrVVq7N+Z/00cTXpbBwEn+CocnDV/w==} + peerDependencies: + react: 16.x || 17.x + react-dom: 16.x || 17.x + dependencies: + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-fast-compare: 3.2.0 + dev: false + /react-is/16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true /react-merge-refs/2.0.1: resolution: {integrity: sha512-pywF6oouJWuqL26xV3OruRSIqai31R9SdJX/I3gP2q8jLxUnA1IwXcLW8werUHLZOrp4N7YOeQNZrh/BKrHI4A==} @@ -8145,6 +9573,21 @@ packages: use-sidecar: 1.1.2_w5j4k42lgipnm43s3brx6h3c34 dev: false + /react-slick/0.29.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-TGdOKE+ZkJHHeC4aaoH85m8RnFyWqdqRfAGkhd6dirmATXMZWAxOpTLmw2Ll/jPTQ3eEG7ercFr/sbzdeYCJXA==} + peerDependencies: + react: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + classnames: 2.3.2 + enquire.js: 2.1.6 + json2mq: 0.2.0 + lodash.debounce: 4.0.8 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + resize-observer-polyfill: 1.5.1 + dev: false + /react-style-singleton/2.2.1_w5j4k42lgipnm43s3brx6h3c34: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -8330,10 +9773,13 @@ packages: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: true + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: true /resolve-from/5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -8449,7 +9895,6 @@ packages: /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} @@ -8468,6 +9913,11 @@ packages: dependencies: loose-envify: 1.4.0 + /screenfull/6.0.2: + resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==} + engines: {node: ^14.13.1 || >=16.0.0} + dev: false + /scuid/1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} dev: true @@ -8672,7 +10122,6 @@ packages: /source-map/0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} - dev: true /split-string/3.1.0: resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} @@ -8716,6 +10165,10 @@ packages: engines: {node: '>=0.6.19'} dev: true + /string-convert/0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + dev: false + /string-env-interpolation/1.0.1: resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} dev: true @@ -8864,6 +10317,10 @@ packages: dependencies: react: 18.2.0 + /stylis/4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} + dev: false + /supports-color/2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -8874,7 +10331,6 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -8991,10 +10447,18 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /three/0.147.0: + resolution: {integrity: sha512-LPTOslYQXFkmvceQjFTNnVVli2LaVF6C99Pv34fJypp8NbQLbTlu3KinZ0zURghS5zEehK+VQyvWuPZ/Sm8fzw==} + dev: false + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /tiny-invariant/1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + /tinydate/1.3.0: resolution: {integrity: sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==} engines: {node: '>=4'} @@ -9016,7 +10480,6 @@ packages: /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - dev: true /to-object-path/0.3.0: resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} @@ -9054,6 +10517,10 @@ packages: safe-regex: 1.1.0 dev: true + /toggle-selection/1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + dev: false + /totalist/1.1.0: resolution: {integrity: sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==} engines: {node: '>=6'} @@ -9323,6 +10790,10 @@ packages: resolution: {integrity: sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==} dev: true + /uevent/2.2.0: + resolution: {integrity: sha512-48s5LF/c6R1fUmctGib/dWKhZjZLd4aK/85dwVAbwgHNBSO0k0UNp0ZKZpkSbU6633qYhgykYQPakTSuOxZopA==} + dev: false + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: diff --git a/site/components/common/About/AboutSlider.tsx b/site/components/common/About/AboutSlider.tsx new file mode 100644 index 000000000..81ac8fb2d --- /dev/null +++ b/site/components/common/About/AboutSlider.tsx @@ -0,0 +1,136 @@ +import React from 'react'; +import { + Box, + IconButton, + useBreakpointValue, + Stack, + Heading, + Text, + Container, +} from '@chakra-ui/react'; +// Here we have used react-icons package for the icons +import { BiLeftArrowAlt, BiRightArrowAlt } from 'react-icons/bi'; +// And react-slick as our Carousel Lib +import Slider from 'react-slick'; + +// Settings for the slider +const settings = { + dots: true, + arrows: false, + fade: true, + infinite: true, + autoplay: true, + speed: 500, + autoplaySpeed: 5000, + slidesToShow: 1, + slidesToScroll: 1, +}; + +export default function AboutSlider() { + // As we have used custom buttons, we need a reference variable to + // change the state + const [slider, setSlider] = React.useState(null); + + // These are the breakpoints which changes the position of the + // buttons as the screen size changes + const top = useBreakpointValue({ base: '90%', md: '50%' }); + const side = useBreakpointValue({ base: '30%', md: '40px' }); + + // This list contains all the data for carousels + // This can be static or loaded from a server + const cards = [ + { + title: 'Storia del Mercato', + text: + `Ciò che è sempre stato alla base del progresso della civiltà umana è lo scambio (di beni, di idee, di conoscenze). In età neolitica avveniva sotto forma di baratto. Nell'antichità e per tutto il Medioevo i principali canali di scambio erano il mercato, in genere allestito nelle piazze delle città e la fiera, imponente evento commerciale. Il mercato giornaliero, settimanale o mensile, vivacizzava la città e provvedeva alle esigenze della popolazione; era il luogo dello scambio tra la produzione dell'artigianato urbano e quella agricola. La fiera era un evento periodico, suddiviso in più circuiti predeterminati, dove tanti operatori economici convergevano per scambiarsi in natura, in moneta o tramite titoli di credito, beni in quantità consistenti; non mancavano le agevolazioni fiscali per i mercanti stranieri che vi convenivano. Ma la fiera era caratterizzata anche per il clima di confusione e festività; accadeva di tutto: circolazione di persone, di merci e cultura, spettacoli, giochi d'azzardo, reliquie di santi in bella mostra. Mentre l'attività produttiva (e a volte anche commerciale) del mercante, così come dell'artigiano si svolgeva nella bottega. Fino ai primi decenni del XVII secolo le fiere erano il principale canale di scambio commerciale e connotavano i territori entro le quali raggiungevano la loro fortuna. Con l'avvento dell'industrializzazione si afferma in Europa e nel mondo il sistema capitalistico di produzione: le botteghe artigiane diventano grandi fabbriche, le fiere tradizionali sono meno affollate e meno rinomate, divenendo sempre più sbocco di derrate agricole, e lasciando spazio a un nuovo tipo di fiera: la fiera campionaria, il cui massimo esempio è rappresentato dall’esposizione nazionale e universale. Nella città nascono gli spazi rispondenti alle nuove produzioni industriali e ai nuovi consumi: i passages, le gallerie, i grandi magazzini, gli antenati dell'odierno centro commerciale, tempio dell'attuale società consumistica del XXI secolo. Oggi sia i centri commerciali che le fiere specializzate (miranti ai singoli comparti dell'industria) sono gli attori fondamentali nel sistema di distribuzione delle novità introdotte dal grande mercato, propongono nuove idee e nuovi modelli di comportamento e consumo e, facilitando anche un'omologazione degli stessi, rispondono alle nuove dinamiche della globalizzazione. Se essi proliferano e riempiono il tessuto urbano, centrale o periferico, nei borghi e nei paesi, si trovano ancora le manifestazioni tipiche della sagra, del mercatino, della piccola fiera, della mostra a tema. Questi piccoli eventi preservano una cultura e una tradizione locali, talvolta ancora espressione della vita artigianale, attenuando il fenomeno della globalizzazione. In particolare il mercatino (agenzia d'affari) può essere strutturato come manifestazione periodica o avente una propria sede fissa. Rimane il luogo in cui possono rinvenirsi oggetti particolari, testimonianza del passato (più o meno recente) e non delle novità industriali.`, + image: + 'https://images.unsplash.com/photo-1516796181074-bf453fbfa3e6?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1yZWxhdGVkfDV8fHxlbnwwfHx8fA%3D%3D&auto=format&fit=crop&w=900&q=60', + }, + { + title: 'Iniziativa', + text: + `Se è vero che oggi sia i grandi centri commerciali che questi piccoli eventi sono fenomeni culturali (i primi riguardanti la cultura attuale, globale, di massa, i secondi quella passata), sono luoghi d'intrattenimento e svago, hanno entrambi carattere di coinvolgimento emotivo e grande varietà e assortimento merceologico, è anche vero che gli ultimi sono organizzati esponendo le merci tuttalpiù per generi, settori. I titolari, attenti soprattutto al valore economico del bene usato, possono limitarsi a fornire ai visitatori informazioni basilari sugli stessi, non soddisfacendo mai completamente un ipotetico arricchimento culturale dei propri clienti. Ecco l'ipotesi di una nuova formula di agenzia d'affari che aspiri a essere un'esposizione a tema (come la fiera e la mostra a tema) e allo stesso tempo avere grande varietà e assortimento di culture e generi, il tutto ordinato in un disegno che susciti emozioni e fornisca al cliente la massima trasmissione culturale che può scaturire dall'osservazione di prodotti usati; ridia vita alle merci, ricordandosi delle culture e tradizioni locali (oggi più che mai in pericolo) e sia attenta alle urgenti istanze di ecologia, riuso e sostenibilità. Safara è uno spazio innovativo che espone prodotti datati come un normale mercatino, ma li reinserisce nella loro "cornice" originaria, affianco ad oggetti e simboli dello stesso periodo storico. È costituita da un percorso ramificato in più "fermate", ognuna delle quali rappresenti un decennio del 900. Perfino ogni singolo oggetto racconterà in breve la sua storia. Se ciò che è sempre stato alla base del progresso della civiltà umana è lo scambio, è ancora attraverso esso che Safara fornisce un elemento di diversificazione rispetto agli altri attori dell’usato. Riutilizzando la visione ancestrale del commercio basata sul baratto, e adattandola in chiave moderna, assieme ad altri servizi unici, Safara è davvero un’agenzia unica nel suo genere. Pensiamo inoltre che l’idea possa costituire un supporto utile come completamento di altra manifestazione locale.`, + image: + 'https://images.unsplash.com/photo-1438183972690-6d4658e3290e?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2274&q=80', + }, + { + title: 'Chi Siamo', + text: + `Safara è un'agenzia d'affari, più nota con il termine di mercatino dell'usato, che a differenza dei concorrenti, affianca all'offerta commerciale un'offerta culturale, tentando parallelamente di valorizzare la sua regione di provenienza e di fornirle un servizio utile, soprattutto in un periodo storico delicatissimo per il pianeta intero.`, + image: + 'https://images.unsplash.com/photo-1507237998874-b4d52d1dd655?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1yZWxhdGVkfDR8fHxlbnwwfHx8fA%3D%3D&auto=format&fit=crop&w=900&q=60', + }, + ]; + + return ( + + {/* CSS files for react-slick */} + + + {/* Left Icon */} + slider?.slickPrev()}> + + + {/* Right Icon */} + slider?.slickNext()}> + + + {/* Slider */} + setSlider(slider)}> + {cards.map((card, index) => ( + + {/* This is the block you need to change, to customize the caption */} + + + + {card.title} + + + {card.text} + + + + + ))} + + + ); +} \ No newline at end of file diff --git a/site/components/common/Footer/Footer.tsx b/site/components/common/Footer/Footer.tsx index 313c9154a..674d53b7e 100644 --- a/site/components/common/Footer/Footer.tsx +++ b/site/components/common/Footer/Footer.tsx @@ -21,6 +21,18 @@ const links = [ name: 'Home', url: '/', }, + { + name: 'About', + url: '/about' + }, + { + name: 'News', + url: '/news' + }, + { + name: 'Contact', + url: '/contact' + } ] const Footer: FC = ({ className, pages }) => { diff --git a/site/components/common/HomePage/PolygonModal/PolygonModal.tsx b/site/components/common/HomePage/PolygonModal/PolygonModal.tsx new file mode 100644 index 000000000..bad7a71ca --- /dev/null +++ b/site/components/common/HomePage/PolygonModal/PolygonModal.tsx @@ -0,0 +1,71 @@ +import { + Modal, + ModalOverlay, + ModalContent, + ModalBody, + Box, +} from "@chakra-ui/react" + +import decadesManifest from '../../../../static_data/decadesManifest.json'; +import { useRouter } from "next/router"; +import { useEffect, useRef, useState } from "react"; +import ImageMapper from "react-img-mapper" + +export default function MarkerCardModal(props: { + isOpen: boolean, + onModalClose: () => void, + decade: string, +}) { + + const {locale} = useRouter(); + const containerRef = useRef(); + + const decadeColor = decadesManifest[props.decade as keyof typeof decadesManifest].color; + + const [width, setWidth] = useState(200); + const [isMapLoaded, setIsMapLoaded] = useState(false) + + const [mapDefinition, setMapDefinition] = useState() + + const getContainerSize = () => { + if(containerRef.current != undefined) { + setWidth(containerRef.current.clientWidth); + } + }; + + const getMapDefinition = async () => { + const tempMapDefinition = await import("../../../../static_data/regions/abruzzo/" + props.decade + "/plan/manifest.json") + tempMapDefinition.areas.forEach((area: any) => { + area.href = "/" + locale + area.href + }) + setMapDefinition(tempMapDefinition) + } + + useEffect(() => { + getContainerSize() + }, [isMapLoaded]); + + useEffect(() => { + getMapDefinition() + return window.addEventListener("resize", getContainerSize); + }, []); + + return ( + <> + + + + + + setIsMapLoaded(true)} natural stayHighlighted responsive={true} parentWidth={width} map={mapDefinition} src={"/regions/abruzzo/" + props.decade + "/plan/plan.jpeg"}> + + + + + + ) + } + \ No newline at end of file diff --git a/site/components/common/Layout/Layout.tsx b/site/components/common/Layout/Layout.tsx index b5262dccd..706c58042 100644 --- a/site/components/common/Layout/Layout.tsx +++ b/site/components/common/Layout/Layout.tsx @@ -17,6 +17,8 @@ import { MenuSidebarView } from '@components/common/UserNav' import type { Page } from '@commerce/types/page' import type { Category } from '@commerce/types/site' import type { Link as LinkProps } from '../UserNav/MenuSidebarView' +import navBarLinks from '../../../static_data/navBarLinks.json'; +import Script from 'next/script' const Loading = () => (
@@ -108,11 +110,8 @@ const Layout: React.FC = ({ pageProps: { categories = [], ...pageProps }, }) => { const { acceptedCookies, onAcceptCookies } = useAcceptCookies() - const { locale = 'en-US' } = useRouter() - const navBarlinks = categories.slice(0, 2).map((c) => ({ - label: c.name, - href: `/search/${c.slug}`, - })) + const { locale = 'it' } = useRouter() + const navBarlinks = navBarLinks.links; return ( @@ -133,6 +132,22 @@ const Layout: React.FC = ({ } /> + {/** Sendinblue Chat Script to implement Widget */} +
) diff --git a/site/components/common/Navbar/NavBarFiltersDrawer.tsx b/site/components/common/Navbar/NavBarFiltersDrawer.tsx new file mode 100644 index 000000000..13b80a721 --- /dev/null +++ b/site/components/common/Navbar/NavBarFiltersDrawer.tsx @@ -0,0 +1,57 @@ +import { Drawer, DrawerOverlay, DrawerContent, DrawerHeader, DrawerBody, Link, Box, Stack, Heading, Divider } from "@chakra-ui/react" +import React, { useEffect, useState } from "react" +import filtersData from '../../../static_data/navBarMenuData.json'; +import NavBarFiltersItem from './NavBarFiltersItem'; + +export default function NavBarFiltersDrawer(props: { + onClose: () => void; + isOpen: boolean; +}) { + + const [placement, setPlacement] = React.useState('left' as const) + const [regions, setRegions] = React.useState([]); + const [categories, setCategories] = React.useState([]); + + useEffect(() => { + setRegions(filtersData.regions); + setCategories(filtersData.categories); + }, []); + + return ( + <> + + + + + + + Regions + { + regions.map(region => ( + + )) + } + + + Categories + { + categories.map(category => ( + + )) + } + + + + + + + ) + } + + interface NavItem { + label: string; + subLabel?: string; + children?: Array; + href?: string; + enabled: boolean; + }; \ No newline at end of file diff --git a/site/components/common/Navbar/NavBarFiltersItem.tsx b/site/components/common/Navbar/NavBarFiltersItem.tsx new file mode 100644 index 000000000..cdca2f036 --- /dev/null +++ b/site/components/common/Navbar/NavBarFiltersItem.tsx @@ -0,0 +1,83 @@ +import { + Box, + Flex, + Text, + IconButton, + Button, + Stack, + Collapse, + Icon, + Link, + Popover, + PopoverTrigger, + PopoverContent, + useColorModeValue, + useBreakpointValue, + useDisclosure, + } from '@chakra-ui/react'; + import { + HamburgerIcon, + CloseIcon, + ChevronDownIcon, + ChevronRightIcon, + } from '@chakra-ui/icons'; + + const NavBarFiltersItem = ({ label, children, href, enabled }: NavItem) => { + const { isOpen, onToggle } = useDisclosure(); + + return ( + + + + {label} + + {children && ( + + )} + + + + + {children && + children.map((child) => ( + + {child.label} + + ))} + + + + ); + }; + + interface NavItem { + label: string; + subLabel?: string; + children?: Array; + href?: string; + enabled: boolean; + }; + + export default NavBarFiltersItem; diff --git a/site/components/common/Navbar/Navbar.tsx b/site/components/common/Navbar/Navbar.tsx index 9286ef160..c3b10868b 100644 --- a/site/components/common/Navbar/Navbar.tsx +++ b/site/components/common/Navbar/Navbar.tsx @@ -4,6 +4,8 @@ import s from './Navbar.module.css' import NavbarRoot from './NavbarRoot' import { Logo, Container } from '@components/ui' import { Searchbar, UserNav } from '@components/common' +import { useDisclosure } from '@chakra-ui/react' +import NavBarFiltersDrawer from './NavBarFiltersDrawer' interface Link { href: string @@ -14,43 +16,54 @@ interface NavbarProps { links?: Link[] } -const Navbar: FC = ({ links }) => ( - - -
-
- - - - - - -
- {process.env.COMMERCE_SEARCH_ENABLED && ( -
- + +
+ {process.env.COMMERCE_SEARCH_ENABLED && ( +
+ +
+ )} +
+ +
- )} -
- -
- - {process.env.COMMERCE_SEARCH_ENABLED && ( -
- -
- )} -
-
-) + {process.env.COMMERCE_SEARCH_ENABLED && ( +
+ +
+ )} + + + + ) +} export default Navbar diff --git a/site/components/common/Room/MarkerCardModal/MarkerCardModal.tsx b/site/components/common/Room/MarkerCardModal/MarkerCardModal.tsx new file mode 100644 index 000000000..79d5e2d2b --- /dev/null +++ b/site/components/common/Room/MarkerCardModal/MarkerCardModal.tsx @@ -0,0 +1,53 @@ +import { + Modal, + ModalOverlay, + ModalContent, + ModalBody, +} from "@chakra-ui/react" +import { Product } from "@commerce/types" +import ProductCardRoom from "../../../product/ProductCardRoom/ProductCardRoom" + +import decadesManifest from '../../../../static_data/decadesManifest.json'; +import ResourceCardModal from "@components/common/Room/ResourceCardModal/ResourceCardModal"; +import { MarkerData, MarkerResourcePayload } from "../RoomTypes/RoomTypes"; + +export default function MarkerCardModal(props: { + isOpen: boolean, + onModalClose: () => void, + marker: MarkerData, + decade: string, + onAudioPlayerPlay?: (player: HTMLAudioElement) => void, + onAudioPlayerPause?: () => void +}) { + + const decadeColor = decadesManifest[props.decade as keyof typeof decadesManifest].color; + + const getCardToRender = (markerType: string) => { + switch(markerType) { + case "product": + return + case "image": + case "video": + return + case "audio": + return + } + } + + return ( + <> + + + + + { + getCardToRender(props.marker.markerType) + } + + + + + ) + } + \ No newline at end of file diff --git a/site/components/common/Room/ResourceCardContent/AudioCardContent.tsx b/site/components/common/Room/ResourceCardContent/AudioCardContent.tsx new file mode 100644 index 000000000..414649765 --- /dev/null +++ b/site/components/common/Room/ResourceCardContent/AudioCardContent.tsx @@ -0,0 +1,44 @@ +import { Box, Stack, Button, Text } from "@chakra-ui/react"; +import { createRef } from "react"; +import H5AudioPlayer from "react-h5-audio-player"; + +export default function AudioCardContent(props: { + style: any + resourcePath: string, + resourceCaption: string, + onPlay: (player: HTMLAudioElement) => void, + onPause: () => void, + onClose: () => void + }) { + + const player = createRef() + + return ( + <> + + props.onPlay(player.current?.audio.current!)} + /> + + + + + + + {props.resourceCaption} + + + + + + ) +}; \ No newline at end of file diff --git a/site/components/common/Room/ResourceCardContent/ImageCardContent.tsx b/site/components/common/Room/ResourceCardContent/ImageCardContent.tsx new file mode 100644 index 000000000..976bae8c2 --- /dev/null +++ b/site/components/common/Room/ResourceCardContent/ImageCardContent.tsx @@ -0,0 +1,40 @@ +import { Box, Stack, Image, Text } from "@chakra-ui/react"; +import screenfull from "screenfull"; + +export default function ImageCardContent(props: { + style: any + resourcePath: string + resourceCaption: string + }) { + + return ( + <> + + + openFullScreen('resource-image')} id='resource-image' alt='Resource Image Not Found' src={props.resourcePath} /> + + + + + + + + {props.resourceCaption} + + + + + ) +}; + +const openFullScreen = (imageId: string) => { + if (screenfull.isEnabled) { + screenfull.request(document.getElementById(imageId)!); + } +} \ No newline at end of file diff --git a/site/components/common/Room/ResourceCardContent/VideoCardContent.tsx b/site/components/common/Room/ResourceCardContent/VideoCardContent.tsx new file mode 100644 index 000000000..d6f0772b5 --- /dev/null +++ b/site/components/common/Room/ResourceCardContent/VideoCardContent.tsx @@ -0,0 +1,35 @@ +import { Box, Stack, Image, Text } from "@chakra-ui/react"; + +export default function VideoCardContent(props: { + style: any + resourcePath: string + resourceCaption: string + }) { + + return ( + <> + + + + + + + + + + + {props.resourceCaption} + + + + + ) +}; \ No newline at end of file diff --git a/site/components/common/Room/ResourceCardModal/ResourceCardModal.tsx b/site/components/common/Room/ResourceCardModal/ResourceCardModal.tsx new file mode 100644 index 000000000..f7c3e3347 --- /dev/null +++ b/site/components/common/Room/ResourceCardModal/ResourceCardModal.tsx @@ -0,0 +1,64 @@ +import { Box, Flex, propNames, Stack, Text } from "@chakra-ui/react" +import { MarkerResourcePayload } from "../RoomTypes/RoomTypes" +import { Image } from "@chakra-ui/react" + +import 'react-h5-audio-player/lib/styles.css'; + +import style from './ResourceCardStyle.module.css'; +import ImageCardContent from "../ResourceCardContent/ImageCardContent"; +import AudioCardContent from "../ResourceCardContent/AudioCardContent"; +import VideoCardContent from "../ResourceCardContent/VideoCardContent"; + +export default function ResourceCardModal(props: { + decade: string, + resourcePayload: MarkerResourcePayload, + onModalClose?: () => void, + onAudioPlay?: (player: HTMLAudioElement) => void, + onAudioPause?: () => void + }) { + + const RES_PATH = '/regions/abruzzo/' + props.decade + '/resources/' + props.resourcePayload.resourceSource; + + const getResourceContent = () => { + switch(props.resourcePayload.resourceType) { + case 'image': + return ( + + ) + case 'audio': + return ( + + ) + case 'video': + return ( + + ) + default: + return (<>) + } + } + + return ( + + + + {`Picture + + { + getResourceContent() + } + + + + ) +}; \ No newline at end of file diff --git a/site/components/common/Room/ResourceCardModal/ResourceCardStyle.module.css b/site/components/common/Room/ResourceCardModal/ResourceCardStyle.module.css new file mode 100644 index 000000000..18b44a5a1 --- /dev/null +++ b/site/components/common/Room/ResourceCardModal/ResourceCardStyle.module.css @@ -0,0 +1,17 @@ + +.decadeIcon { +margin: 5px; +position: absolute; +top: 0; +left: 0; +width: 50px; +height: 50px; +} + +.cardBody { +background-color: rgba(255, 255, 255, 0.70); +} + +.imageContainer { +background-color: rgba(0, 0, 0, 0.7); +} diff --git a/site/components/common/Room/RoomTypes/RoomTypes.tsx b/site/components/common/Room/RoomTypes/RoomTypes.tsx new file mode 100644 index 000000000..573aa16b1 --- /dev/null +++ b/site/components/common/Room/RoomTypes/RoomTypes.tsx @@ -0,0 +1,22 @@ +import { Product } from "@commerce/types" + +export type MarkerResourcePayload = { + resourceType: string, + resourceSource: string, + resourceName: string, + resourceCaption: string + } + +export type MarkerData = { + markerType: string, + markerPayload: Product.Product | MarkerResourcePayload +} + +export type MarkerJson = { + markerType: string, + markerSource: string, + resourceName?: string, + resourceCaption?: string, + longitude: number, + latitude: number +} \ No newline at end of file diff --git a/site/components/product/ProductCardRoom/ProductCardRoom.tsx b/site/components/product/ProductCardRoom/ProductCardRoom.tsx new file mode 100644 index 000000000..181e8c4a8 --- /dev/null +++ b/site/components/product/ProductCardRoom/ProductCardRoom.tsx @@ -0,0 +1,100 @@ +import { + Flex, + Box, + Image, + Heading, + Divider, + Text, + Stack, + Link, +} from '@chakra-ui/react'; +import NextLink from "next/link" +import { Product } from '@commerce/types'; + +import style from './ProductCardRoomStyle.module.css'; + +export default function ProductCardRoom(props: { + product: Product.Product, + decade: string +}) { + + let historicDescription = props.product.metafields + .filter(meta => meta.key == 'descrizione_storica') + .map(meta => meta.value); + let technicalDescription = props.product.metafields + .filter(meta => meta.key == 'descrizione_tecnica') + .map(meta => meta.value); + let nationOrigin = props.product.metafields + .filter(meta => meta.key == 'nazionalit_') + .map(meta => meta.value); + + return ( + + + + {`Picture + + {`Picture + + + + + + + + + + + + + + {props.product.name} + + + + + + {historicDescription.pop()?.split('\n').map((line, index) => ( + + {line} + + ))} + + + {technicalDescription} + + + + + + + ); +} \ No newline at end of file diff --git a/site/components/product/ProductCardRoom/ProductCardRoomStyle.module.css b/site/components/product/ProductCardRoom/ProductCardRoomStyle.module.css new file mode 100644 index 000000000..a4c8be455 --- /dev/null +++ b/site/components/product/ProductCardRoom/ProductCardRoomStyle.module.css @@ -0,0 +1,25 @@ +.flagIcon { + margin: 5px; + position: absolute; + top: 0; + right: 0; + width: 40px; + height: 40px; +} + +.decadeIcon { + margin: 5px; + position: absolute; + top: 0; + left: 0; + width: 50px; + height: 50px; +} + +.cardBody { + background-color: rgba(255, 255, 255, 0.70); +} + +.imageContainer { + background-color: rgba(0, 0, 0, 0.7); +} diff --git a/site/components/product/ProductModel/ProductModel.tsx b/site/components/product/ProductModel/ProductModel.tsx new file mode 100644 index 000000000..758e54c05 --- /dev/null +++ b/site/components/product/ProductModel/ProductModel.tsx @@ -0,0 +1,72 @@ +import Script from 'next/script'; +import { useEffect, useState } from 'react'; + +export default function ProductModel(props: { + modelPath: string +}) { + + const [windowSize, setWindowSize] = useState({ + width: 600, + height: 600, + }); + + useEffect(() => { + // only execute all the code below in client side + // Handler to call on window resize + function handleResize() { + // Set window width/height to state + setWindowSize({ + width: window.innerWidth, + height: window.innerHeight, + }); + } + + // Add event listener + window.addEventListener("resize", handleResize); + + // Call handler right away so state gets updated with initial window size + handleResize(); + + // Remove event listener on cleanup + return () => window.removeEventListener("resize", handleResize); + }, []); // Empty array ensures that effect is only run on mount + + const modelViewerTag = ` + + + + + + `; + + return ( + <> + +
+ + ); +} + \ No newline at end of file diff --git a/site/package.json b/site/package.json index bdf7688c0..5b8ccf17e 100644 --- a/site/package.json +++ b/site/package.json @@ -13,6 +13,10 @@ }, "sideEffects": false, "dependencies": { + "@chakra-ui/icons": "^2.0.14", + "@chakra-ui/react": "^2.4.4", + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", "@radix-ui/react-dropdown-menu": "^1.0.0", "@react-spring/web": "^9.4.1", "@vercel/commerce": "workspace:*", @@ -22,28 +26,35 @@ "@vercel/commerce-local": "workspace:*", "@vercel/commerce-ordercloud": "workspace:*", "@vercel/commerce-saleor": "workspace:*", + "@vercel/commerce-sfcc": "workspace:*", "@vercel/commerce-shopify": "workspace:*", "@vercel/commerce-spree": "workspace:*", "@vercel/commerce-swell": "workspace:*", - "@vercel/commerce-sfcc": "workspace:*", "@vercel/commerce-vendure": "workspace:*", "autoprefixer": "^10.4.2", "body-scroll-lock": "^4.0.0-beta.0", "clsx": "^1.1.1", "email-validator": "^2.0.4", + "framer-motion": "^7.10.3", "js-cookie": "^3.0.1", "keen-slider": "^6.7.0", "lodash.random": "^3.2.0", "lodash.throttle": "^4.1.1", "next": "^12.3.0", "next-themes": "^0.2.0", + "photo-sphere-viewer": "^4.8.1", "postcss": "^8.3.5", "postcss-nesting": "^10.1.10", "react": "^18.2.0", "react-dom": "^18.2.0", "react-fast-marquee": "^1.3.1", + "react-h5-audio-player": "^3.8.6", + "react-icons": "^4.7.1", + "react-img-mapper": "^1.4.0", "react-merge-refs": "^2.0.1", + "react-slick": "^0.29.0", "react-use-measure": "^2.1.1", + "screenfull": "^6.0.2", "tabbable": "^5.2.1", "tailwindcss": "^3.0.13" }, @@ -56,6 +67,7 @@ "@types/node": "^18.0.3", "@types/react": "^18.0.20", "@types/react-dom": "^18.0.6", + "@types/react-slick": "^0.23.10", "eslint": "^8.6.0", "eslint-config-next": "^12.0.8", "eslint-config-prettier": "^8.3.0", diff --git a/site/pages/[region]/[decade]/[start].tsx b/site/pages/[region]/[decade]/[start].tsx new file mode 100644 index 000000000..f5cf002e7 --- /dev/null +++ b/site/pages/[region]/[decade]/[start].tsx @@ -0,0 +1,380 @@ +import { Layout } from '@components/common' +import commerce from '@lib/api/commerce' +import { + GetStaticPathsContext, + GetStaticPropsContext, + InferGetStaticPropsType, +} from 'next' +import { Viewer } from 'photo-sphere-viewer' +import { GyroscopePlugin } from 'photo-sphere-viewer/dist/plugins/gyroscope' +import { MarkersPlugin } from 'photo-sphere-viewer/dist/plugins/markers' +import { GalleryPlugin } from 'photo-sphere-viewer/dist/plugins/gallery' +import 'photo-sphere-viewer/dist/plugins/markers.css' +import 'photo-sphere-viewer/dist/plugins/gallery.css' +import { StereoPlugin } from 'photo-sphere-viewer/dist/plugins/stereo' +import { VirtualTourPlugin } from 'photo-sphere-viewer/dist/plugins/virtual-tour' +import { VisibleRangePlugin } from 'photo-sphere-viewer/dist/plugins/visible-range' +import { RefObject, useEffect, useRef, useState } from 'react' +import { useRouter } from 'next/router' + +import RegionsDataJson from '../../../static_data/navBarMenuData.json' +import MarkerCardModal from '@components/common/Room/MarkerCardModal/MarkerCardModal' +import { useDisclosure } from '@chakra-ui/react' + +import decadesManifest from '../../../static_data/decadesManifest.json' +import { + MarkerData, + MarkerJson, +} from '@components/common/Room/RoomTypes/RoomTypes' +import { getNodes, getRecursiveMarkers } from 'workers/DecadeWorker' +import screenfull from 'screenfull' +import { Stream } from 'stream' + +export async function getStaticPaths({ locales }: GetStaticPathsContext) { + const decadesPaths = RegionsDataJson.regions + .filter((region) => region.enabled) + .flatMap((region) => { + let regionDecadesPath = new Array() + for (let key in decadesManifest) { + if (decadesManifest[key as keyof typeof decadesManifest].enabled) { + Array.from(Array(7).keys()).forEach((nodeId: number) => + regionDecadesPath.push(region.href + '/' + key + '/' + nodeId) + ) + } + } + return regionDecadesPath + }) + + return { + paths: locales + ? locales.reduce((arr, locale) => { + // Add a decade path for every locale + decadesPaths.forEach((path: any) => { + arr.push(`/${locale}${path}`) + }) + return arr + }, []) + : decadesPaths, + fallback: 'blocking', + } +} + +export async function getStaticProps({ + params, + locale, + locales, + preview, +}: GetStaticPropsContext<{ region: string; decade: string; start: string }>) { + const config = { locale, locales } + let products = new Array() + let decadeManifest = ( + await import( + `../../../static_data/regions/${params?.region}/${params?.decade}/manifest.json` + ) + ).rooms + let region = params?.region + let decade = params?.decade + let startNode = params?.start + + //sunrise sunset api to retreive Rome rise/set times + const sunriseSunsetAPI = + 'https://api.sunrise-sunset.org/json?lat=41.9027835&lng=12.4963655' + const [sunriseTime, sunsetTime] = await fetch(sunriseSunsetAPI) + .then((response) => { + if (!response.ok) { + throw Error(response.statusText) + } + return response.json() + }) + .then((data) => data.results) + .then((data) => [ + parseInt(data.sunrise.split(':')[0]), + parseInt(data.sunset.split(':')[0]), + ]) + .catch((error) => [7, 7]) + + const time = + new Date().getUTCHours() >= sunsetTime + 12 || + new Date().getUTCHours() <= sunriseTime + ? 'night' + : 'day' + + for (const roomMeta of decadeManifest) { + let roomMarkers + + try { + roomMarkers = await import( + `../../../static_data/regions/abruzzo/${decade}/${time}/${ + roomMeta.filename.split('.')[0] + }.json` + ) + } catch (e) { + continue + } + + for (const productMarker of roomMarkers.markers.filter( + (marker: MarkerJson) => marker.markerType == 'product' + )) { + if ( + products.find(({ product }) => + product.slug?.includes(productMarker.markerSource) + ) + ) + continue + + const productPromise = commerce.getProduct({ + variables: { slug: productMarker.markerSource }, + config, + preview, + }) + + products.push(await productPromise) + } + } + + console.log(products) + + if (!products) { + throw new Error(`Products associated with markers not found`) + } + + return { + props: { + products, + decadeManifest, + region, + decade, + startNode, + time, + }, + revalidate: 200, + } +} + +export default function RoomPage({ + products, + decadeManifest, + region, + decade, + startNode, + time, +}: InferGetStaticPropsType) { + const { + isOpen: isOpenModal, + onOpen: onOpenModal, + onClose: onCloseModal, + } = useDisclosure() + const [currentMarkerInModal, setCurrentMarkerInModal] = useState() + const [recursiveMarkers] = useState( + getRecursiveMarkers(decade!, decadeManifest, time) + ) + const [virtualTourNodes] = useState>( + getNodes(products, decadeManifest, region!, decade!, time) + ) + + const [audioPlayer, setAudioPlayer] = useState() + const [isAudioInBackground, setIsAudioInBackground] = useState(false) + const [isNodeChanged, setIsNodeChanged] = useState(false) + + const router = useRouter() + const audioPlayerRef = useRef(audioPlayer) + + let navbarArray = new Array( + 'autorotate', + 'zoom', + 'move', + 'markers', + 'markersList', + 'gallery', + 'stereo', + 'gyroscope', + 'fullscreen' + ) + + navbarArray = navbarArray.concat( + recursiveMarkers.map((recursiveMarker: any) => { + return { + id: recursiveMarker.name, + content: recursiveMarker.name, + title: recursiveMarker.name, + className: 'custom-button', + visible: false, + onClick: (viewer: any) => { + changeToRecursiveRoom(recursiveMarker, viewer) + }, + } + }) + ) + + const changeToRecursiveRoom = (recursiveMarker: any, viewer: any) => { + const virtualTour = viewer.getPlugin(VirtualTourPlugin) + const destNode = virtualTourNodes.find( + (node: any) => node.name === recursiveMarker.name + ) + virtualTour.setCurrentNode(destNode.id) + } + + useEffect(() => { + const shperePlayerInstance = new Viewer({ + container: 'roomViewer', + plugins: [ + [ + VisibleRangePlugin, + { + longitudeRange: [null], + latitudeRange: [-Math.PI / 2, Math.PI / 4], //Restrict range so you can't see the top of the pano + }, + ], + [GyroscopePlugin, StereoPlugin], + MarkersPlugin, + [ + GalleryPlugin, + { + thumbnailSize: { width: 100, height: 100 }, + }, + ], + [ + VirtualTourPlugin, + { + positionMode: VirtualTourPlugin.MODE_3D, + renderMode: VirtualTourPlugin.MODE_MARKERS, + nodes: virtualTourNodes, + startNodeId: startNode, + }, + ], + ], + touchmoveTwoFingers: true, + mousewheelCtrlKey: true, + navbar: navbarArray, + }) + + const markersPlugin = shperePlayerInstance.getPlugin(MarkersPlugin) + const virtualTourPlugin = shperePlayerInstance.getPlugin(VirtualTourPlugin) + + markersPlugin?.on('select-marker', (e, marker) => { + if (marker.id.includes('tour-link')) { + return + } + + if (screenfull.isEnabled) { + screenfull.exit() + } + + if (marker.data.markerType === 'room') { + virtualTourPlugin?.setCurrentNode( + decadeManifest.find( + (room: any) => + room.name === marker.data.markerPayload.resourceSource + ).id + ) + return + } + + setCurrentMarkerInModal(marker.data) + onOpenModal() + }) + + virtualTourPlugin?.on('node-changed', (e, nodeId, data) => { + setIsNodeChanged(true) + recursiveMarkers.forEach((recursive: any) => + shperePlayerInstance.navbar.getButton(recursive.name).hide() + ) + const originNode = virtualTourNodes.find( + (node: any) => node.id === nodeId + ) + const originRoom = recursiveMarkers.find((recursive: any) => + originNode.panorama.includes(recursive.panorama) + ) + if (originRoom != undefined) { + shperePlayerInstance.navbar.getButton(originRoom.name).show() + } + }) + + router.events.on('routeChangeStart', () => { + if (audioPlayerRef.current && !audioPlayerRef.current?.paused) { + audioPlayerRef.current!.pause() + audioPlayerRef.current!.src = '' + } + }) + + // unmount component instructions + return () => { + shperePlayerInstance.destroy() + router.events.off('routeChangeStart', () => { + if (audioPlayerRef.current && !audioPlayerRef.current?.paused) { + audioPlayerRef.current!.pause() + audioPlayerRef.current!.src = '' + } + }) + } + }, []) + + useEffect(() => { + if (isAudioInBackground === true) { + setTimeout(() => { + audioPlayer!.play() + }, 500) + setTimeout(() => { + audioPlayer?.pause() + setIsAudioInBackground(false) + }, audioPlayer!.duration - audioPlayer!.currentTime) + } + }, [isAudioInBackground]) + + useEffect(() => { + if ( + currentMarkerInModal != undefined && + currentMarkerInModal.markerType === 'video' && + !audioPlayer?.paused + ) { + audioPlayer?.pause() + } + }, [currentMarkerInModal]) + + const onAudioPlay = (player: HTMLAudioElement) => { + if (!audioPlayer?.paused) { + audioPlayer?.pause() + } + setAudioPlayer(player) + } + + useEffect(() => { + audioPlayerRef.current = audioPlayer + }, [audioPlayer]) + + useEffect(() => { + if (isNodeChanged && !audioPlayer?.paused) { + audioPlayer?.pause() + setIsNodeChanged(false) + } + }, [isNodeChanged]) + + return ( + <> + {currentMarkerInModal != undefined ? ( + currentMarkerInModal.markerType === 'audio' ? ( + setIsAudioInBackground(true)} + onAudioPlayerPlay={onAudioPlay} + /> + ) : ( + + ) + ) : ( + <> + )} +
+ + ) +} + +RoomPage.Layout = Layout diff --git a/site/pages/_app.tsx b/site/pages/_app.tsx index 26e1484fa..4ce2ed7cf 100644 --- a/site/pages/_app.tsx +++ b/site/pages/_app.tsx @@ -6,6 +6,7 @@ import { FC, ReactNode, useEffect } from 'react' import type { AppProps } from 'next/app' import { Head } from '@components/common' import { ManagedUIContext } from '@components/ui/context' +import { ChakraProvider } from '@chakra-ui/react' const Noop: FC<{ children?: ReactNode }> = ({ children }) => <>{children} @@ -20,9 +21,11 @@ export default function MyApp({ Component, pageProps }: AppProps) { <> - - - + + + + + ) diff --git a/site/pages/_document.tsx b/site/pages/_document.tsx index dcd214e4f..c2f09bc35 100644 --- a/site/pages/_document.tsx +++ b/site/pages/_document.tsx @@ -4,7 +4,12 @@ class MyDocument extends Document { render() { return ( - + + +
diff --git a/site/pages/about.tsx b/site/pages/about.tsx new file mode 100644 index 000000000..f3427af3f --- /dev/null +++ b/site/pages/about.tsx @@ -0,0 +1,18 @@ +import { Divider, Tab, TabList, TabPanel, TabPanels, Tabs } from '@chakra-ui/react' +import { Layout } from '@components/common' +import AboutSlider from '@components/common/About/AboutSlider' + +import { Text } from '@components/ui' + +export default function About() { + + return ( + <> +
+ +
+ + ) +} + +About.Layout = Layout diff --git a/site/pages/index.tsx b/site/pages/index.tsx index 8db7fe589..c779752cc 100644 --- a/site/pages/index.tsx +++ b/site/pages/index.tsx @@ -1,89 +1,85 @@ -import commerce from '@lib/api/commerce' import { Layout } from '@components/common' -import { ProductCard } from '@components/product' -import { Grid, Marquee, Hero } from '@components/ui' -// import HomeAllProductsGrid from '@components/common/HomeAllProductsGrid' -import type { GetStaticPropsContext, InferGetStaticPropsType } from 'next' +import ImageMapper from 'react-img-mapper' +import { useEffect, useState } from 'react' +import { useRouter } from 'next/router' +import { useDisclosure } from '@chakra-ui/react' +import PolygonModal from '@components/common/HomePage/PolygonModal/PolygonModal' -export async function getStaticProps({ - preview, - locale, - locales, -}: GetStaticPropsContext) { - const config = { locale, locales } - const productsPromise = commerce.getAllProducts({ - variables: { first: 6 }, - config, - preview, - // Saleor provider only - ...({ featured: true } as any), - }) - const pagesPromise = commerce.getAllPages({ config, preview }) - const siteInfoPromise = commerce.getSiteInfo({ config, preview }) - const { products } = await productsPromise - const { pages } = await pagesPromise - const { categories, brands } = await siteInfoPromise +export default function Home() { - return { - props: { - products, - categories, - brands, - pages, - }, - revalidate: 60, + const imagePath = "homepageBackgroundImage.png"; + const {locale} = useRouter(); + + const [mapContainerWidth, setMapContainerWidth] = useState(600); + const [innerWidth, setInnerWidth] = useState(600); + const [decadeClicked, setDecadeClicked] = useState("12") + + const { isOpen, onOpen, onClose } = useDisclosure() + + const mapDefinition = { + name: "my-map", + areas: [ + { + id: '12', + title: '2000', + name: '2000', + fillColor: '#eab54d4d', + strokeColor: 'black', + coords: [4653,1231,5039,1396,5204,1622,5218,2027,5039,2315,4709,2461,4276,2339,4068,2084,4040,1679,4177,1457,4337,1325], + shape: "poly", + //href: `/${locale}/abruzzo/12`, + href: "#", + }, + { + id: '11', + title: '1990', + name: '1990', + fillColor: '#eab54d4d', + strokeColor: 'black', + coords: [3904,974,475], + shape: "circle", + //href: `/${locale}/abruzzo/12`, + href: "#", + }, + { + id: '10', + title: '1980', + name: '1980', + fillColor: '#eab54d4d', + strokeColor: 'black', + coords: [3045,611,387], + shape: "circle", + //href: `/${locale}/abruzzo/12`, + href: "#", + } + ] } -} -export default function Home({ - products, -}: InferGetStaticPropsType) { + useEffect(() => { + + // Handler to call on window resize + function handleResize() { + setInnerWidth(window.innerWidth); + } + + window.addEventListener('resize', handleResize); + handleResize(); + + return () => window.removeEventListener('resize', handleResize); + }, []); + + useEffect(() => { + setMapContainerWidth(document.getElementById('mapContainer')?.clientWidth); + }, [innerWidth]); + return ( <> - - {products.slice(0, 3).map((product: any, i: number) => ( - - ))} - - - {products.slice(0, 3).map((product: any, i: number) => ( - - ))} - - - - {products.slice(0, 3).map((product: any, i: number) => ( - - ))} - - - {products.slice(3).map((product: any, i: number) => ( - - ))} - - {/* */} +
+
+ { setDecadeClicked(area.id!); onOpen() }} parentWidth={mapContainerWidth} responsive={true} src={imagePath} map={mapDefinition}> + +
+
) } diff --git a/site/public/assets/drop-shirt-0.png b/site/public/assets/drop-shirt-0.png deleted file mode 100644 index b698a83ed..000000000 Binary files a/site/public/assets/drop-shirt-0.png and /dev/null differ diff --git a/site/public/assets/drop-shirt-1.png b/site/public/assets/drop-shirt-1.png deleted file mode 100644 index 42aa8e48c..000000000 Binary files a/site/public/assets/drop-shirt-1.png and /dev/null differ diff --git a/site/public/assets/drop-shirt-2.png b/site/public/assets/drop-shirt-2.png deleted file mode 100644 index dc243dc02..000000000 Binary files a/site/public/assets/drop-shirt-2.png and /dev/null differ diff --git a/site/public/assets/drop-shirt.png b/site/public/assets/drop-shirt.png deleted file mode 100644 index b698a83ed..000000000 Binary files a/site/public/assets/drop-shirt.png and /dev/null differ diff --git a/site/public/assets/lightweight-jacket-0.png b/site/public/assets/lightweight-jacket-0.png deleted file mode 100644 index a62a0bd8f..000000000 Binary files a/site/public/assets/lightweight-jacket-0.png and /dev/null differ diff --git a/site/public/assets/lightweight-jacket-1.png b/site/public/assets/lightweight-jacket-1.png deleted file mode 100644 index fe2d70a39..000000000 Binary files a/site/public/assets/lightweight-jacket-1.png and /dev/null differ diff --git a/site/public/assets/lightweight-jacket-2.png b/site/public/assets/lightweight-jacket-2.png deleted file mode 100644 index 75cc22d7b..000000000 Binary files a/site/public/assets/lightweight-jacket-2.png and /dev/null differ diff --git a/site/public/assets/polygons/10.svg b/site/public/assets/polygons/10.svg new file mode 100644 index 000000000..43b5ffd64 --- /dev/null +++ b/site/public/assets/polygons/10.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/11.svg b/site/public/assets/polygons/11.svg new file mode 100644 index 000000000..c2797278a --- /dev/null +++ b/site/public/assets/polygons/11.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/12.svg b/site/public/assets/polygons/12.svg new file mode 100644 index 000000000..56c5b6074 --- /dev/null +++ b/site/public/assets/polygons/12.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/circle.svg b/site/public/assets/polygons/circle.svg new file mode 100644 index 000000000..87aa1abeb --- /dev/null +++ b/site/public/assets/polygons/circle.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/colorized/10.svg b/site/public/assets/polygons/colorized/10.svg new file mode 100644 index 000000000..d20e09e64 --- /dev/null +++ b/site/public/assets/polygons/colorized/10.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site/public/assets/polygons/colorized/11.svg b/site/public/assets/polygons/colorized/11.svg new file mode 100644 index 000000000..e5ae6e9f5 --- /dev/null +++ b/site/public/assets/polygons/colorized/11.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/site/public/assets/polygons/colorized/12.svg b/site/public/assets/polygons/colorized/12.svg new file mode 100644 index 000000000..65883513c --- /dev/null +++ b/site/public/assets/polygons/colorized/12.svg @@ -0,0 +1,34 @@ + + + + + + diff --git a/site/public/assets/polygons/enneagon.svg b/site/public/assets/polygons/enneagon.svg new file mode 100644 index 000000000..c51a22e4c --- /dev/null +++ b/site/public/assets/polygons/enneagon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/halfcircle.svg b/site/public/assets/polygons/halfcircle.svg new file mode 100644 index 000000000..cfbecc69a --- /dev/null +++ b/site/public/assets/polygons/halfcircle.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/heptagon.svg b/site/public/assets/polygons/heptagon.svg new file mode 100644 index 000000000..0918e01cd --- /dev/null +++ b/site/public/assets/polygons/heptagon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/hexagon.svg b/site/public/assets/polygons/hexagon.svg new file mode 100644 index 000000000..27ee039f4 --- /dev/null +++ b/site/public/assets/polygons/hexagon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/octagon.svg b/site/public/assets/polygons/octagon.svg new file mode 100644 index 000000000..dd0efcb5a --- /dev/null +++ b/site/public/assets/polygons/octagon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/pentagon.svg b/site/public/assets/polygons/pentagon.svg new file mode 100644 index 000000000..a69dd834a --- /dev/null +++ b/site/public/assets/polygons/pentagon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/quadrilateral.svg b/site/public/assets/polygons/quadrilateral.svg new file mode 100644 index 000000000..3b7540906 --- /dev/null +++ b/site/public/assets/polygons/quadrilateral.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/polygons/triangle.svg b/site/public/assets/polygons/triangle.svg new file mode 100644 index 000000000..60c70d07d --- /dev/null +++ b/site/public/assets/polygons/triangle.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/site/public/assets/t-shirt-0.png b/site/public/assets/t-shirt-0.png deleted file mode 100644 index 80ad64dae..000000000 Binary files a/site/public/assets/t-shirt-0.png and /dev/null differ diff --git a/site/public/assets/t-shirt-1.png b/site/public/assets/t-shirt-1.png deleted file mode 100644 index bd3fab6a2..000000000 Binary files a/site/public/assets/t-shirt-1.png and /dev/null differ diff --git a/site/public/assets/t-shirt-2.png b/site/public/assets/t-shirt-2.png deleted file mode 100644 index eb591ef53..000000000 Binary files a/site/public/assets/t-shirt-2.png and /dev/null differ diff --git a/site/public/assets/t-shirt-3.png b/site/public/assets/t-shirt-3.png deleted file mode 100644 index ff3251696..000000000 Binary files a/site/public/assets/t-shirt-3.png and /dev/null differ diff --git a/site/public/assets/t-shirt-4.png b/site/public/assets/t-shirt-4.png deleted file mode 100644 index 8a908d7d1..000000000 Binary files a/site/public/assets/t-shirt-4.png and /dev/null differ diff --git a/site/public/homepageBackgroundImage.png b/site/public/homepageBackgroundImage.png new file mode 100644 index 000000000..69bd09461 Binary files /dev/null and b/site/public/homepageBackgroundImage.png differ diff --git a/site/public/regions/abruzzo/10/day/bagno80.jpg b/site/public/regions/abruzzo/10/day/bagno80.jpg new file mode 100644 index 000000000..e4f93b6e1 Binary files /dev/null and b/site/public/regions/abruzzo/10/day/bagno80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/cameraadu80.jpg b/site/public/regions/abruzzo/10/day/cameraadu80.jpg new file mode 100644 index 000000000..5c4529742 Binary files /dev/null and b/site/public/regions/abruzzo/10/day/cameraadu80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/camerarag80.jpg b/site/public/regions/abruzzo/10/day/camerarag80.jpg new file mode 100644 index 000000000..30680747a Binary files /dev/null and b/site/public/regions/abruzzo/10/day/camerarag80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/cucina80.jpg b/site/public/regions/abruzzo/10/day/cucina80.jpg new file mode 100644 index 000000000..de28181b5 Binary files /dev/null and b/site/public/regions/abruzzo/10/day/cucina80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/garage80.jpg b/site/public/regions/abruzzo/10/day/garage80.jpg new file mode 100644 index 000000000..280f6438b Binary files /dev/null and b/site/public/regions/abruzzo/10/day/garage80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/giardino80.jpg b/site/public/regions/abruzzo/10/day/giardino80.jpg new file mode 100644 index 000000000..8d1bf87a4 Binary files /dev/null and b/site/public/regions/abruzzo/10/day/giardino80.jpg differ diff --git a/site/public/regions/abruzzo/10/day/sala80.jpg b/site/public/regions/abruzzo/10/day/sala80.jpg new file mode 100644 index 000000000..c3f999106 Binary files /dev/null and b/site/public/regions/abruzzo/10/day/sala80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/bagno80.jpg b/site/public/regions/abruzzo/10/night/bagno80.jpg new file mode 100644 index 000000000..faa6b5b9a Binary files /dev/null and b/site/public/regions/abruzzo/10/night/bagno80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/cameraadu80.jpg b/site/public/regions/abruzzo/10/night/cameraadu80.jpg new file mode 100644 index 000000000..2837a5434 Binary files /dev/null and b/site/public/regions/abruzzo/10/night/cameraadu80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/camerarag80.jpg b/site/public/regions/abruzzo/10/night/camerarag80.jpg new file mode 100644 index 000000000..b29335dd0 Binary files /dev/null and b/site/public/regions/abruzzo/10/night/camerarag80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/cucina80.jpg b/site/public/regions/abruzzo/10/night/cucina80.jpg new file mode 100644 index 000000000..656cb5a6e Binary files /dev/null and b/site/public/regions/abruzzo/10/night/cucina80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/garage80.jpg b/site/public/regions/abruzzo/10/night/garage80.jpg new file mode 100644 index 000000000..74659705a Binary files /dev/null and b/site/public/regions/abruzzo/10/night/garage80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/giardino80.jpg b/site/public/regions/abruzzo/10/night/giardino80.jpg new file mode 100644 index 000000000..e9a53e9e3 Binary files /dev/null and b/site/public/regions/abruzzo/10/night/giardino80.jpg differ diff --git a/site/public/regions/abruzzo/10/night/sala80.jpg b/site/public/regions/abruzzo/10/night/sala80.jpg new file mode 100644 index 000000000..32b82e2de Binary files /dev/null and b/site/public/regions/abruzzo/10/night/sala80.jpg differ diff --git a/site/public/regions/abruzzo/10/plan/plan.jpeg b/site/public/regions/abruzzo/10/plan/plan.jpeg new file mode 100644 index 000000000..36f911e19 Binary files /dev/null and b/site/public/regions/abruzzo/10/plan/plan.jpeg differ diff --git a/site/public/regions/abruzzo/10/resources/canzone.mp3 b/site/public/regions/abruzzo/10/resources/canzone.mp3 new file mode 100644 index 000000000..0379b4d74 Binary files /dev/null and b/site/public/regions/abruzzo/10/resources/canzone.mp3 differ diff --git a/site/public/regions/abruzzo/10/resources/canzone2.mp3 b/site/public/regions/abruzzo/10/resources/canzone2.mp3 new file mode 100644 index 000000000..69534ea06 Binary files /dev/null and b/site/public/regions/abruzzo/10/resources/canzone2.mp3 differ diff --git a/site/public/regions/abruzzo/10/resources/immagineTV.png b/site/public/regions/abruzzo/10/resources/immagineTV.png new file mode 100644 index 000000000..63865a8e8 Binary files /dev/null and b/site/public/regions/abruzzo/10/resources/immagineTV.png differ diff --git a/site/public/regions/abruzzo/10/resources/video.mp4 b/site/public/regions/abruzzo/10/resources/video.mp4 new file mode 100644 index 000000000..caa57b2b0 Binary files /dev/null and b/site/public/regions/abruzzo/10/resources/video.mp4 differ diff --git a/site/public/regions/abruzzo/11/day/bagno11.jpg b/site/public/regions/abruzzo/11/day/bagno11.jpg new file mode 100644 index 000000000..119c22f89 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/bagno11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/cameraadu11.jpg b/site/public/regions/abruzzo/11/day/cameraadu11.jpg new file mode 100644 index 000000000..7c447a725 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/cameraadu11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/camerarag11.jpg b/site/public/regions/abruzzo/11/day/camerarag11.jpg new file mode 100644 index 000000000..032424e72 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/camerarag11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/cucina11.jpg b/site/public/regions/abruzzo/11/day/cucina11.jpg new file mode 100644 index 000000000..1178cac69 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/cucina11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/garage11.jpg b/site/public/regions/abruzzo/11/day/garage11.jpg new file mode 100644 index 000000000..8257667e7 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/garage11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/giardino11.jpg b/site/public/regions/abruzzo/11/day/giardino11.jpg new file mode 100644 index 000000000..c831af377 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/giardino11.jpg differ diff --git a/site/public/regions/abruzzo/11/day/sala11.jpg b/site/public/regions/abruzzo/11/day/sala11.jpg new file mode 100644 index 000000000..95a863589 Binary files /dev/null and b/site/public/regions/abruzzo/11/day/sala11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/bagno11.jpg b/site/public/regions/abruzzo/11/night/bagno11.jpg new file mode 100644 index 000000000..088e4f578 Binary files /dev/null and b/site/public/regions/abruzzo/11/night/bagno11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/cameraadu11.jpg b/site/public/regions/abruzzo/11/night/cameraadu11.jpg new file mode 100644 index 000000000..6fd4cc8fc Binary files /dev/null and b/site/public/regions/abruzzo/11/night/cameraadu11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/camerarag11.jpg b/site/public/regions/abruzzo/11/night/camerarag11.jpg new file mode 100644 index 000000000..0d78c789f Binary files /dev/null and b/site/public/regions/abruzzo/11/night/camerarag11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/cucina11.jpg b/site/public/regions/abruzzo/11/night/cucina11.jpg new file mode 100644 index 000000000..5bc594fb4 Binary files /dev/null and b/site/public/regions/abruzzo/11/night/cucina11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/garage11.jpg b/site/public/regions/abruzzo/11/night/garage11.jpg new file mode 100644 index 000000000..74ed1b85c Binary files /dev/null and b/site/public/regions/abruzzo/11/night/garage11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/giardino11.jpg b/site/public/regions/abruzzo/11/night/giardino11.jpg new file mode 100644 index 000000000..faaf2580d Binary files /dev/null and b/site/public/regions/abruzzo/11/night/giardino11.jpg differ diff --git a/site/public/regions/abruzzo/11/night/sala11.jpg b/site/public/regions/abruzzo/11/night/sala11.jpg new file mode 100644 index 000000000..4c7545408 Binary files /dev/null and b/site/public/regions/abruzzo/11/night/sala11.jpg differ diff --git a/site/public/regions/abruzzo/11/plan/plan.jpeg b/site/public/regions/abruzzo/11/plan/plan.jpeg new file mode 100644 index 000000000..d537767d3 Binary files /dev/null and b/site/public/regions/abruzzo/11/plan/plan.jpeg differ diff --git a/site/public/regions/abruzzo/12/day/bagno12.jpg b/site/public/regions/abruzzo/12/day/bagno12.jpg new file mode 100644 index 000000000..4d1537c8d Binary files /dev/null and b/site/public/regions/abruzzo/12/day/bagno12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/cameraadu12.jpg b/site/public/regions/abruzzo/12/day/cameraadu12.jpg new file mode 100644 index 000000000..737d8331a Binary files /dev/null and b/site/public/regions/abruzzo/12/day/cameraadu12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/camerarag12.jpg b/site/public/regions/abruzzo/12/day/camerarag12.jpg new file mode 100644 index 000000000..64c953dbc Binary files /dev/null and b/site/public/regions/abruzzo/12/day/camerarag12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/corridoio12.jpg b/site/public/regions/abruzzo/12/day/corridoio12.jpg new file mode 100644 index 000000000..9ac901a6f Binary files /dev/null and b/site/public/regions/abruzzo/12/day/corridoio12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/cucina12.jpg b/site/public/regions/abruzzo/12/day/cucina12.jpg new file mode 100644 index 000000000..5e27f0958 Binary files /dev/null and b/site/public/regions/abruzzo/12/day/cucina12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/garage12.jpg b/site/public/regions/abruzzo/12/day/garage12.jpg new file mode 100644 index 000000000..b1dfd8198 Binary files /dev/null and b/site/public/regions/abruzzo/12/day/garage12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/giardino12.jpg b/site/public/regions/abruzzo/12/day/giardino12.jpg new file mode 100644 index 000000000..8f5f81b92 Binary files /dev/null and b/site/public/regions/abruzzo/12/day/giardino12.jpg differ diff --git a/site/public/regions/abruzzo/12/day/sala12.jpg b/site/public/regions/abruzzo/12/day/sala12.jpg new file mode 100644 index 000000000..71a0e9db5 Binary files /dev/null and b/site/public/regions/abruzzo/12/day/sala12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/bagno12.jpg b/site/public/regions/abruzzo/12/night/bagno12.jpg new file mode 100644 index 000000000..186dd7e4b Binary files /dev/null and b/site/public/regions/abruzzo/12/night/bagno12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/cameraadu12.jpg b/site/public/regions/abruzzo/12/night/cameraadu12.jpg new file mode 100644 index 000000000..459398b15 Binary files /dev/null and b/site/public/regions/abruzzo/12/night/cameraadu12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/camerarag12.jpg b/site/public/regions/abruzzo/12/night/camerarag12.jpg new file mode 100644 index 000000000..852554887 Binary files /dev/null and b/site/public/regions/abruzzo/12/night/camerarag12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/corridoio12.jpg b/site/public/regions/abruzzo/12/night/corridoio12.jpg new file mode 100644 index 000000000..4a6f53344 Binary files /dev/null and b/site/public/regions/abruzzo/12/night/corridoio12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/cucina12.jpg b/site/public/regions/abruzzo/12/night/cucina12.jpg new file mode 100644 index 000000000..18cb14891 Binary files /dev/null and b/site/public/regions/abruzzo/12/night/cucina12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/garage12.jpg b/site/public/regions/abruzzo/12/night/garage12.jpg new file mode 100644 index 000000000..4914b173e Binary files /dev/null and b/site/public/regions/abruzzo/12/night/garage12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/giardino12.jpg b/site/public/regions/abruzzo/12/night/giardino12.jpg new file mode 100644 index 000000000..2c6aa1e12 Binary files /dev/null and b/site/public/regions/abruzzo/12/night/giardino12.jpg differ diff --git a/site/public/regions/abruzzo/12/night/sala12.jpg b/site/public/regions/abruzzo/12/night/sala12.jpg new file mode 100644 index 000000000..7e0e132dd Binary files /dev/null and b/site/public/regions/abruzzo/12/night/sala12.jpg differ diff --git a/site/public/regions/abruzzo/12/plan/plan.jpeg b/site/public/regions/abruzzo/12/plan/plan.jpeg new file mode 100644 index 000000000..e6664aaac Binary files /dev/null and b/site/public/regions/abruzzo/12/plan/plan.jpeg differ diff --git a/site/public/regions/abruzzo/12/resources/canzone.mp3 b/site/public/regions/abruzzo/12/resources/canzone.mp3 new file mode 100644 index 000000000..0379b4d74 Binary files /dev/null and b/site/public/regions/abruzzo/12/resources/canzone.mp3 differ diff --git a/site/public/regions/abruzzo/12/resources/canzone2.mp3 b/site/public/regions/abruzzo/12/resources/canzone2.mp3 new file mode 100644 index 000000000..69534ea06 Binary files /dev/null and b/site/public/regions/abruzzo/12/resources/canzone2.mp3 differ diff --git a/site/public/regions/abruzzo/12/resources/immagineTV.png b/site/public/regions/abruzzo/12/resources/immagineTV.png new file mode 100644 index 000000000..63865a8e8 Binary files /dev/null and b/site/public/regions/abruzzo/12/resources/immagineTV.png differ diff --git a/site/public/regions/abruzzo/12/resources/video.mp4 b/site/public/regions/abruzzo/12/resources/video.mp4 new file mode 100644 index 000000000..caa57b2b0 Binary files /dev/null and b/site/public/regions/abruzzo/12/resources/video.mp4 differ diff --git a/site/static_data/decadesManifest.json b/site/static_data/decadesManifest.json new file mode 100644 index 000000000..abb5f283f --- /dev/null +++ b/site/static_data/decadesManifest.json @@ -0,0 +1,74 @@ +{ + "1": { + "name": "< 1910", + "color": "#2ecc71", + "polygon": "circle.svg", + "enabled": false + }, + "2": { + "name": "1900", + "color": "#2ecc71", + "polygon": "halfcircle.svg", + "enabled": false + }, + "3": { + "name": "1910", + "color": "#2ecc71", + "polygon": "triangle.svg", + "enabled": false + }, + "4": { + "name": "1920", + "color": "#2ecc71", + "polygon": "quadrilateral.svg", + "enabled": false + }, + "5": { + "name": "1930", + "color": "#2ecc71", + "polygon": "pentagon.svg", + "enabled": false + }, + "6": { + "name": "1940", + "color": "#2ecc71", + "polygon": "hexagon.svg", + "enabled": false + }, + "7": { + "name": "1950", + "color": "#2ecc71", + "polygon": "heptagon.svg", + "enabled": false + }, + "8": { + "name": "1960", + "color": "#2ecc71", + "polygon": "octagon.svg", + "enabled": false + }, + "9": { + "name": "1970", + "color": "#2ecc71", + "polygon": "enneagon.svg", + "enabled": false + }, + "10": { + "name": "1980", + "color": "#FFBF00", + "polygon": "10.svg", + "enabled": true + }, + "11": { + "name": "1990", + "color": "#FFBF00", + "polygon": "11.svg", + "enabled": true + }, + "12": { + "name": "2000", + "color": "#FF0D84", + "polygon": "12.svg", + "enabled": true + } +} \ No newline at end of file diff --git a/site/static_data/navBarLinks.json b/site/static_data/navBarLinks.json new file mode 100644 index 000000000..eb7f57e84 --- /dev/null +++ b/site/static_data/navBarLinks.json @@ -0,0 +1,22 @@ +{ + + "links": [ + { + "label": "Regions", + "href": "#" + }, + { + "label": "About", + "href": "/about" + }, + { + "label": "News", + "href": "/news" + }, + { + "label": "Contact", + "href": "/contact" + } + ] + +} \ No newline at end of file diff --git a/site/static_data/navBarMenuData.json b/site/static_data/navBarMenuData.json new file mode 100644 index 000000000..9cc8edd55 --- /dev/null +++ b/site/static_data/navBarMenuData.json @@ -0,0 +1,215 @@ +{ + "regions": [ + { + "label": "Abruzzo", + "children": [ + { + "label": "Teramo", + "href": "#", + "enabled": true + }, + { + "label": "Pescara", + "href": "#", + "enabled": true + }, + { + "label": "Chieti", + "href": "#", + "enabled": true + } + ], + "href": "/abruzzo", + "enabled": false + } + ], + + "categories": [ + { + "label": "Abbigliamento e Accessori", + "children": [ + { + "label": "Abbigliamento Bambino", + "href": "#", + "enabled": true + }, + { + "label": "Abbigliamento Donna", + "href": "#", + "enabled": true + }, + { + "label": "Abbigliamento Uomo", + "href": "#", + "enabled": true + }, + { + "label": "Bigiotteria", + "href": "#", + "enabled": true + }, + { + "label": "Calzature e Borse", + "href": "#", + "enabled": true + }, + { + "label": "Orologi e Preziosi", + "href": "#", + "enabled": true + } + ], + "enabled": true + }, + { + "label": "Casa", + "children": [ + { + "label": "Elettrodomestici", + "href": "#", + "enabled": true + }, + { + "label": "Giardino", + "href": "#", + "enabled": true + }, + { + "label": "Lampade e Lampadari", + "href": "#", + "enabled": true + }, + { + "label": "Mobili e Arredi", + "href": "#", + "enabled": true + }, + { + "label": "Oggettistica Casa", + "href": "#", + "enabled": true + }, + { + "label": "Tessuti", + "href": "#", + "enabled": true + } + ], + "enabled": true + }, + { + "label": "Elettronica", + "children": [ + { + "label": "Audio e Video", + "href": "#", + "enabled": true + }, + { + "label": "Console e Videogiochi", + "href": "#", + "enabled": true + }, + { + "label": "Fotografia", + "href": "#", + "enabled": true + }, + { + "label": "Informatica", + "href": "#", + "enabled": true + }, + { + "label": "Telefonia", + "href": "#", + "enabled": true + } + ], + "enabled": true + }, + { + "label": "Lavoro", + "children": [ + { + "label": "Attrezzatura da Lavoro", + "href": "#", + "enabled": true + }, + { + "label": "Ferramente e Bricolage", + "href": "#", + "enabled": true + }, + { + "label": "Giardinaggio", + "href": "#", + "enabled": true + } + ], + "enabled": true + }, + { + "label": "Sport e Hobby", + "children": [ + { + "label": "Animali", + "href": "#", + "enabled": true + }, + { + "label": "Articoli Sportivi", + "href": "#", + "enabled": true + }, + { + "label": "Giochi e Giocattoli", + "href": "#", + "enabled": true + }, + { + "label": "Libri e Riviste", + "href": "#", + "enabled": true + }, + { + "label": "Strumenti Musicali", + "href": "#", + "enabled": true + }, + { + "label": "CD, DVD, Vinili", + "href": "#", + "enabled": true + } + ], + "enabled": true + }, + { + "label": "Veicoli", + "children": [ + { + "label": "Accessori auto, moto, biciclette", + "href": "#", + "enabled": true + }, + { + "label": "Auto", + "href": "#", + "enabled": true + }, + { + "label": "Biciclette", + "href": "#", + "enabled": true + }, + { + "label": "Moto e Scooter", + "href": "#", + "enabled": true + } + ], + "enabled": true + } + ] +} \ No newline at end of file diff --git a/site/static_data/productDetailsMetafields.json b/site/static_data/productDetailsMetafields.json new file mode 100644 index 000000000..35b89378f --- /dev/null +++ b/site/static_data/productDetailsMetafields.json @@ -0,0 +1,57 @@ +{ + "metafields": [ + { + "locale": "it", + "names": [ + { + "name": "Tipo", + "key": "tipo" + }, + { + "name": "Materiale", + "key": "materiale" + }, + { + "name": "Colore", + "key": "colore" + }, + { + "name": "Condizioni Estetiche", + "key": "condizioni_estetiche" + }, + { + "name": "Altezza", + "key": "altezza" + }, + { + "name": "Spessore", + "key": "spessore" + }, + { + "name": "Larghezza", + "key": "larghezza" + }, + { + "name": "Peso", + "key": "peso" + }, + { + "name": "Confezione e Accessori Originali", + "key": "confezione_accessori" + }, + { + "name": "Descrizione", + "key": "descrizione" + }, + { + "name": "Vintage", + "key": "vintage" + }, + { + "name": "Made In", + "key": "made_in" + } + ] + } + ] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/10/manifest.json b/site/static_data/regions/abruzzo/10/manifest.json new file mode 100644 index 000000000..a0691ad3a --- /dev/null +++ b/site/static_data/regions/abruzzo/10/manifest.json @@ -0,0 +1,64 @@ +{ + "rooms": [ + { + "id": "0", + "name": "Bagno", + "filename": "bagno80.jpg", + "links": [ + { + "nodeId": "1", + "longitude": 2.973125539174058, + "latitude": -0.24078673565679543 + } + ] + }, + { + "id": "1", + "name": "Camera Adulti", + "filename": "cameraadu80.jpg", + "links": [ + { + "nodeId": "2", + "longitude": 2.007173620652426, + "latitude": -0.04809744657883419 + } + ] + }, + { + "id": "2", + "name": "Camera Ragazzi", + "filename": "camerarag80.jpg", + "links": [] + }, + { + "id": "3", + "name": "Corridoio", + "filename": "corridoio80.jpg", + "links": [] + }, + { + "id": "4", + "name": "Cucina", + "filename": "cucina80.jpg", + "links": [] + }, + { + "id": "5", + "name": "Garage", + "filename": "garage80.jpg", + "links": [] + }, + { + "id": "6", + "name": "Giardino", + "filename": "giardino80.jpg", + "links": [] + }, + { + "id": "7", + "name": "Sala", + "filename": "sala80.jpg", + "links": [] + } + ] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/10/plan/manifest.json b/site/static_data/regions/abruzzo/10/plan/manifest.json new file mode 100644 index 000000000..44efe9c58 --- /dev/null +++ b/site/static_data/regions/abruzzo/10/plan/manifest.json @@ -0,0 +1,25 @@ +{ + "name": "gfdfdg", + "areas": [ + { + "id": "ffsdfsd", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [285,232,381,229,384,316,371,316,370,462,343,463,336,472,328,482,314,486,295,492,283,488,273,482,257,468,251,459,245,434,247,397,248,371,267,368,264,313,288,310,286,239], + "shape": "poly", + "href": "/abruzzo/10/0" + }, + { + "id": "fdsf", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [14,63,111,64,110,184,88,186,82,212,38,212,38,187,13,186], + "shape": "poly", + "href": "/abruzzo/10/1" + } + ] + } \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/11/manifest.json b/site/static_data/regions/abruzzo/11/manifest.json new file mode 100644 index 000000000..95c9b5cba --- /dev/null +++ b/site/static_data/regions/abruzzo/11/manifest.json @@ -0,0 +1,64 @@ +{ + "rooms": [ + { + "id": "0", + "name": "Bagno", + "filename": "bagno11.jpg", + "links": [ + { + "nodeId": "1", + "longitude": 2.973125539174058, + "latitude": -0.24078673565679543 + } + ] + }, + { + "id": "1", + "name": "Camera Adulti", + "filename": "cameraadu11.jpg", + "links": [ + { + "nodeId": "2", + "longitude": 2.007173620652426, + "latitude": -0.04809744657883419 + } + ] + }, + { + "id": "2", + "name": "Camera Ragazzi", + "filename": "camerarag11.jpg", + "links": [] + }, + { + "id": "3", + "name": "Corridoio", + "filename": "corridoio11.jpg", + "links": [] + }, + { + "id": "4", + "name": "Cucina", + "filename": "cucina11.jpg", + "links": [] + }, + { + "id": "5", + "name": "Garage", + "filename": "garage11.jpg", + "links": [] + }, + { + "id": "6", + "name": "Giardino", + "filename": "giardino11.jpg", + "links": [] + }, + { + "id": "7", + "name": "Sala", + "filename": "sala11.jpg", + "links": [] + } + ] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/11/plan/manifest.json b/site/static_data/regions/abruzzo/11/plan/manifest.json new file mode 100644 index 000000000..a7959c7df --- /dev/null +++ b/site/static_data/regions/abruzzo/11/plan/manifest.json @@ -0,0 +1,25 @@ +{ + "name": "gfdfdg", + "areas": [ + { + "id": "ffsdfsd", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [285,232,381,229,384,316,371,316,370,462,343,463,336,472,328,482,314,486,295,492,283,488,273,482,257,468,251,459,245,434,247,397,248,371,267,368,264,313,288,310,286,239], + "shape": "poly", + "href": "/abruzzo/11/0" + }, + { + "id": "fdsf", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [14,63,111,64,110,184,88,186,82,212,38,212,38,187,13,186], + "shape": "poly", + "href": "/abruzzo/11/1" + } + ] + } \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/12/day/bagno12.json b/site/static_data/regions/abruzzo/12/day/bagno12.json new file mode 100644 index 000000000..7d841d0e1 --- /dev/null +++ b/site/static_data/regions/abruzzo/12/day/bagno12.json @@ -0,0 +1,29 @@ +{ + "markers": [{ + "markerType": "product", + "markerSource": "sneakers-buscemi-dollaro-rosso-n-41-perfette", + "longitude": 0.9121676830147748, + "latitude": -0.29847214913593656 + }, + { + "markerType": "image", + "markerSource": "immagineTV.png", + "resourceName": "Immagine", + "longitude": 1.2637658270320973, + "latitude": -0.02555199658740004 + }, + { + "markerType": "video", + "markerSource": "video.mp4", + "resourceName": "Video", + "longitude": 1.4637658270320973, + "latitude": -0.02555199658740004 + }, + { + "markerType": "audio", + "markerSource": "canzone.mp3", + "resourceName": "Canzone Bellissima", + "longitude": 1.1269102444321155, + "latitude": -0.20246392999192286 + }] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/12/manifest.json b/site/static_data/regions/abruzzo/12/manifest.json new file mode 100644 index 000000000..f7d65657b --- /dev/null +++ b/site/static_data/regions/abruzzo/12/manifest.json @@ -0,0 +1,64 @@ +{ + "rooms": [ + { + "id": "0", + "name": "Bagno", + "filename": "bagno12.jpg", + "links": [ + { + "nodeId": "1", + "longitude": 2.973125539174058, + "latitude": -0.24078673565679543 + } + ] + }, + { + "id": "1", + "name": "Camera Adulti", + "filename": "cameraadu12.jpg", + "links": [ + { + "nodeId": "2", + "longitude": 2.007173620652426, + "latitude": -0.04809744657883419 + } + ] + }, + { + "id": "2", + "name": "Camera Ragazzi", + "filename": "camerarag12.jpg", + "links": [] + }, + { + "id": "3", + "name": "Corridoio", + "filename": "corridoio12.jpg", + "links": [] + }, + { + "id": "4", + "name": "Cucina", + "filename": "cucina12.jpg", + "links": [] + }, + { + "id": "5", + "name": "Garage", + "filename": "garage12.jpg", + "links": [] + }, + { + "id": "6", + "name": "Giardino", + "filename": "giardino12.jpg", + "links": [] + }, + { + "id": "7", + "name": "Sala", + "filename": "sala12.jpg", + "links": [] + } + ] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/12/night/bagno12.json b/site/static_data/regions/abruzzo/12/night/bagno12.json new file mode 100644 index 000000000..7d841d0e1 --- /dev/null +++ b/site/static_data/regions/abruzzo/12/night/bagno12.json @@ -0,0 +1,29 @@ +{ + "markers": [{ + "markerType": "product", + "markerSource": "sneakers-buscemi-dollaro-rosso-n-41-perfette", + "longitude": 0.9121676830147748, + "latitude": -0.29847214913593656 + }, + { + "markerType": "image", + "markerSource": "immagineTV.png", + "resourceName": "Immagine", + "longitude": 1.2637658270320973, + "latitude": -0.02555199658740004 + }, + { + "markerType": "video", + "markerSource": "video.mp4", + "resourceName": "Video", + "longitude": 1.4637658270320973, + "latitude": -0.02555199658740004 + }, + { + "markerType": "audio", + "markerSource": "canzone.mp3", + "resourceName": "Canzone Bellissima", + "longitude": 1.1269102444321155, + "latitude": -0.20246392999192286 + }] +} \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/12/plan/manifest-it.json b/site/static_data/regions/abruzzo/12/plan/manifest-it.json new file mode 100644 index 000000000..c149b4ab8 --- /dev/null +++ b/site/static_data/regions/abruzzo/12/plan/manifest-it.json @@ -0,0 +1,25 @@ +{ + "name": "gfdfdg", + "areas": [ + { + "id": "ffsdfsd", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [285,232,381,229,384,316,371,316,370,462,343,463,336,472,328,482,314,486,295,492,283,488,273,482,257,468,251,459,245,434,247,397,248,371,267,368,264,313,288,310,286,239], + "shape": "poly", + "href": "/it/abruzzo/12/0" + }, + { + "id": "fdsf", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [14,63,111,64,110,184,88,186,82,212,38,212,38,187,13,186], + "shape": "poly", + "href": "/it/abruzzo/12/1" + } + ] + } \ No newline at end of file diff --git a/site/static_data/regions/abruzzo/12/plan/manifest.json b/site/static_data/regions/abruzzo/12/plan/manifest.json new file mode 100644 index 000000000..8ae87841e --- /dev/null +++ b/site/static_data/regions/abruzzo/12/plan/manifest.json @@ -0,0 +1,25 @@ +{ + "name": "gfdfdg", + "areas": [ + { + "id": "ffsdfsd", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [285,232,381,229,384,316,371,316,370,462,343,463,336,472,328,482,314,486,295,492,283,488,273,482,257,468,251,459,245,434,247,397,248,371,267,368,264,313,288,310,286,239], + "shape": "poly", + "href": "/abruzzo/12/0" + }, + { + "id": "fdsf", + "title": "2000", + "name": "2000", + "fillColor": "#eab54d4d", + "strokeColor": "black", + "coords": [14,63,111,64,110,184,88,186,82,212,38,212,38,187,13,186], + "shape": "poly", + "href": "/abruzzo/12/1" + } + ] + } \ No newline at end of file diff --git a/site/tsconfig.json b/site/tsconfig.json index 7c91afd6f..529871efc 100644 --- a/site/tsconfig.json +++ b/site/tsconfig.json @@ -23,8 +23,8 @@ "@components/*": ["components/*"], "@commerce": ["../packages/commerce/src"], "@commerce/*": ["../packages/commerce/src/*"], - "@framework": ["../packages/local/src"], - "@framework/*": ["../packages/local/src/*"] + "@framework": ["..\\packages\\shopify\\src"], + "@framework/*": ["..\\packages\\shopify\\src/*"] } }, "include": ["next-env.d.ts", "**/*.d.ts", "**/*.ts", "**/*.tsx", "**/*.js"], diff --git a/site/workers/DecadeWorker.tsx b/site/workers/DecadeWorker.tsx new file mode 100644 index 000000000..6f5d81092 --- /dev/null +++ b/site/workers/DecadeWorker.tsx @@ -0,0 +1,82 @@ +import { MarkerJson } from "@components/common/Room/RoomTypes/RoomTypes" +import decadesManifest from "../static_data/decadesManifest.json"; + +export const prepareMarkers = (products: Array, decade: string, roomFilename: string, time: string) => { + + let roomMarkers + + try { + roomMarkers = require('../static_data/regions/abruzzo/' + decade + '/' + time + '/' + roomFilename.split('.')[0] + '.json'); + } catch (e) { + return new Array() + } + + return roomMarkers.markers.filter((marker: MarkerJson) => marker.markerType != 'room').map((marker: MarkerJson, index: number) => { + + const product = marker.markerType == 'product' ? products.find(({product}) => product.slug?.includes(marker.markerSource)).product + : undefined; + + return { + id: index.toString(), + longitude: marker.longitude, + latitude: marker.latitude, + image: "/assets/polygons/" + (marker.markerType == "product" ? "colorized/" : "") + decade + ".svg", + width: 50, + height: 50, + anchor: "bottom center", + tooltip: marker.markerType == 'product' ? product.name : marker.resourceName, + data: { + markerType: marker.markerType, + markerPayload: marker.markerType == 'product' ? product : { + resourceType: marker.markerType, + resourceSource: marker.markerSource, + resourceName: marker.markerType, + resourceCaption: marker.resourceCaption ? marker.resourceCaption : marker.resourceName + } + } + } + }); +} + +export const getRecursiveMarkers = (decade: string, roomsManifest: Array, time: string) => { + + const recursiveMarkers = new Array() + + roomsManifest.forEach(roomMeta => { + + let roomMarkers + + try { + roomMarkers = require('../static_data/regions/abruzzo/' + decade + '/' + time + '/' + roomMeta.filename.split('.')[0] + '.json'); + } catch (e) { + return + } + + roomMarkers.markers.filter((marker: MarkerJson) => marker.markerType === 'room').forEach((marker: MarkerJson, index: number) => { + recursiveMarkers.push({ + panorama: roomMeta.filename, + source: marker.markerSource, + name: marker.resourceName + }) + }) + }) + + return recursiveMarkers +} + +export const getNodes = (products: Array, roomsManifest: Array, region: string, decade: string, time: string) => { + + return roomsManifest.map(roomMeta => { + + let panoramaPath = '/regions/' + region + '/' + decade + '/' + time + '/' + roomMeta.filename; + + return { + id: roomMeta.id, + panorama: panoramaPath, + thumbnail: panoramaPath, + name: roomMeta.name, + links: roomMeta.links, + markers: prepareMarkers(products, decade, roomMeta.filename, time) + } + }); +} \ No newline at end of file