efficient-storefront-blocks 0.56.0 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/dist/chunks/{EditorPreviewCheckout-7Y7WL5BM.js → EditorPreviewCheckout-4NGRJA3T.js} +1 -1
- package/dist/chunks/{SiteEditorProvider-5MWJMLLI.js → SiteEditorProvider-V5FE5UD6.js} +1 -1
- package/dist/chunks/{chunk-BPVXTVPM.js → chunk-4AKN63X5.js} +1 -1
- package/dist/chunks/chunk-K4AZ5SUU.js +1 -0
- package/dist/chunks/chunk-PHH7L5FJ.js +255 -0
- package/dist/chunks/{chunk-FSSCNRRE.js → chunk-SJQTKWV3.js} +1 -1
- package/dist/chunks/{fitment-data-UVMEA7WW.js → fitment-data-OIWU6HGJ.js} +1 -1
- package/dist/editor/components/BlogSource.d.ts +11 -0
- package/dist/editor/components/BlogSource.js +1 -0
- package/dist/editor/components/CategorySource.d.ts +7 -0
- package/dist/editor/components/CategorySource.js +1 -0
- package/dist/editor/components/CollectionPicker.d.ts +7 -0
- package/dist/editor/components/CollectionPicker.js +1 -0
- package/dist/editor/components/ConsentBannerLayoutTiles.d.ts +3 -0
- package/dist/editor/components/ConsentBannerLayoutTiles.js +1 -0
- package/dist/editor/components/CountryShowAsTiles.d.ts +5 -0
- package/dist/editor/components/CountryShowAsTiles.js +1 -0
- package/dist/editor/components/EditProductLink.d.ts +1 -0
- package/dist/editor/components/EditProductLink.js +1 -0
- package/dist/editor/components/EditorCurrencyProvider.d.ts +7 -0
- package/dist/editor/components/EditorCurrencyProvider.js +1 -0
- package/dist/editor/components/EditorPreviewChat.d.ts +1 -0
- package/dist/editor/components/EditorPreviewChat.js +11 -0
- package/dist/editor/components/EditorPreviewCheckout.d.ts +1 -0
- package/dist/editor/components/EditorPreviewCheckout.js +1 -0
- package/dist/editor/components/EditorPreviewSurface.d.ts +5 -0
- package/dist/editor/components/EditorPreviewSurface.js +1 -0
- package/dist/editor/components/FinishPicker.d.ts +6 -0
- package/dist/editor/components/FinishPicker.js +1 -0
- package/dist/editor/components/FooterColumnsField.d.ts +6 -0
- package/dist/editor/components/FooterColumnsField.js +1 -0
- package/dist/editor/components/FooterLogoFillField.d.ts +6 -0
- package/dist/editor/components/FooterLogoFillField.js +1 -0
- package/dist/editor/components/FooterLogoRowFillField.d.ts +6 -0
- package/dist/editor/components/FooterLogoRowFillField.js +1 -0
- package/dist/editor/components/FormPicker.d.ts +33 -0
- package/dist/editor/components/FormPicker.js +1 -0
- package/dist/editor/components/GalleryProductBinding.d.ts +7 -0
- package/dist/editor/components/GalleryProductBinding.js +1 -0
- package/dist/editor/components/GalleryShowcaseSource.d.ts +7 -0
- package/dist/editor/components/GalleryShowcaseSource.js +1 -0
- package/dist/editor/components/HeaderSection.d.ts +3 -0
- package/dist/editor/components/HeaderSection.js +1 -0
- package/dist/editor/components/HeaderSettingsPanel.d.ts +132 -0
- package/dist/editor/components/HeaderSettingsPanel.js +1 -0
- package/dist/editor/components/MenuLinkRangeField.d.ts +5 -0
- package/dist/editor/components/MenuLinkRangeField.js +1 -0
- package/dist/editor/components/MenuPicker.d.ts +7 -0
- package/dist/editor/components/MenuPicker.js +1 -0
- package/dist/editor/components/PerViewStepperField.d.ts +13 -0
- package/dist/editor/components/PerViewStepperField.js +1 -0
- package/dist/editor/components/PreviewHeader.d.ts +2 -0
- package/dist/editor/components/PreviewHeader.js +11 -0
- package/dist/editor/components/PreviewHeaderPrimer.d.ts +4 -0
- package/dist/editor/components/PreviewHeaderPrimer.js +1 -0
- package/dist/editor/components/PreviewMenusPrimer.d.ts +3 -0
- package/dist/editor/components/PreviewMenusPrimer.js +1 -0
- package/dist/editor/components/PreviewProductPicker.d.ts +20 -0
- package/dist/editor/components/PreviewProductPicker.js +1 -0
- package/dist/editor/components/ProductHeroSource.d.ts +19 -0
- package/dist/editor/components/ProductHeroSource.js +1 -0
- package/dist/editor/components/ProductPicker.d.ts +6 -0
- package/dist/editor/components/ProductPicker.js +1 -0
- package/dist/editor/components/SocialLinksDoor.d.ts +1 -0
- package/dist/editor/components/SocialLinksDoor.js +1 -0
- package/dist/editor/components/SpecTableSource.d.ts +7 -0
- package/dist/editor/components/SpecTableSource.js +1 -0
- package/dist/editor/components/StorefrontEditorFurniture.d.ts +6 -0
- package/dist/editor/components/StorefrontEditorFurniture.js +1 -0
- package/dist/editor/components/StorefrontHeaderPanel.d.ts +2 -0
- package/dist/editor/components/StorefrontHeaderPanel.js +1 -0
- package/dist/editor/components/StorefrontLinkRows.d.ts +5 -0
- package/dist/editor/components/StorefrontLinkRows.js +1 -0
- package/dist/editor/components/StorefrontShopRows.d.ts +2 -0
- package/dist/editor/components/StorefrontShopRows.js +1 -0
- package/dist/editor/components/SwitchToBoxHeader.d.ts +1 -0
- package/dist/editor/components/SwitchToBoxHeader.js +1 -0
- package/dist/editor/components/WheelsPerRowField.d.ts +6 -0
- package/dist/editor/components/WheelsPerRowField.js +1 -0
- package/dist/editor/components/useCategoryFilter.d.ts +11 -0
- package/dist/editor/components/useCategoryFilter.js +1 -0
- package/dist/editor/components/useGridSourceLock.d.ts +1 -0
- package/dist/editor/components/useGridSourceLock.js +1 -0
- package/dist/editor/components/useStorefrontCategories.d.ts +2 -0
- package/dist/editor/components/useStorefrontCategories.js +1 -0
- package/dist/editor/components/useStorefrontForms.d.ts +2 -0
- package/dist/editor/components/useStorefrontForms.js +1 -0
- package/dist/editor/components/useWheelMediaGroups.d.ts +2 -0
- package/dist/editor/components/useWheelMediaGroups.js +1 -0
- package/dist/editor/lib/api/section-templates.d.ts +43 -0
- package/dist/editor/lib/api/section-templates.js +1 -0
- package/dist/editor/lib/editor-currency-source.d.ts +11 -0
- package/dist/editor/lib/editor-currency-source.js +1 -0
- package/dist/editor/lib/efficient-backend.d.ts +21 -0
- package/dist/editor/lib/efficient-backend.js +1 -0
- package/dist/editor/lib/header-settings-source.d.ts +7 -0
- package/dist/editor/lib/header-settings-source.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/AccountBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/AccountBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/AlloyWheelsListing/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/AlloyWheelsListing/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/BundleOffer/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/BundleOffer/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CartBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CartBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CatalogFilterBar/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CatalogFilterBar/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CheckoutCTA/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CheckoutCTA/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CollectionCard/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CollectionCard/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/Collections/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/Collections/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CompatibleTyres/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CompatibleTyres/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/CountrySwitchBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/CountrySwitchBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/DeliveryOptions/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/DeliveryOptions/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/DetailRows/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/DetailRows/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/EuTyreLabel/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/EuTyreLabel/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/FitmentFinder/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/FitmentFinder/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/FitmentTable/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/FitmentTable/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/Gallery/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/Gallery/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/GalleryB/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/GalleryB/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/GalleryItem/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/GalleryItem/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/Header/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/Header/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductGrid/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductGrid/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductHero/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductRef/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/ProductRef/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/RelatedProducts/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/RelatedProducts/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/SearchBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/SearchBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/SpecTable/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/SpecTable/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/ThemeSwitchBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/ThemeSwitchBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/TyreFitment/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/TyreFitment/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/TyreSizes/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/commerce/TyreSizes/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/controls.d.ts +15 -0
- package/dist/editor/lib/puck/blocks/commerce/controls.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/index.d.ts +1 -0
- package/dist/editor/lib/puck/blocks/commerce/index.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/page-rules.d.ts +8 -0
- package/dist/editor/lib/puck/blocks/commerce/page-rules.js +1 -0
- package/dist/editor/lib/puck/blocks/commerce/shared-fields.d.ts +5 -0
- package/dist/editor/lib/puck/blocks/commerce/shared-fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/AppointmentBooking/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/AppointmentBooking/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/BookingBox/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/BookingBox/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/ContactRouting/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/Events/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/Events/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/Footer/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/Footer/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterDivider/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterDivider/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterEmailSignup/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterEmailSignup/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterGroup/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterGroup/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterLogo/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterLogo/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterMenu/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterMenu/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterSocial/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterSocial/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/FooterText/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/FooterText/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/Form/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/Form/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/LegalLineBlock/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/LegalLineBlock/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/ReviewForm/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/ReviewForm/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/Reviews/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/Reviews/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/SiteFooter/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/SiteFooter/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/SiteHeader/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/SiteHeader/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/SubmitBox/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/SubmitBox/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/SubmitBuild/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/SubmitBuild/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/Subscribe/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/Subscribe/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/SubscribeBlogs/fields.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/SubscribeBlogs/fields.js +1 -0
- package/dist/editor/lib/puck/blocks/service/controls.d.ts +2 -0
- package/dist/editor/lib/puck/blocks/service/controls.js +1 -0
- package/dist/editor/lib/puck/blocks/service/index.d.ts +1 -0
- package/dist/editor/lib/puck/blocks/service/index.js +1 -0
- package/dist/editor/lib/puck/blocks/service/placeholders.d.ts +1 -0
- package/dist/editor/lib/puck/blocks/service/placeholders.js +1 -0
- package/dist/editor/lib/puck/box-header-for-site.d.ts +9 -0
- package/dist/editor/lib/puck/box-header-for-site.js +1 -0
- package/dist/editor/lib/puck/box-header.d.ts +52 -0
- package/dist/editor/lib/puck/box-header.js +1 -0
- package/dist/editor/lib/puck/config.d.ts +73 -0
- package/dist/editor/lib/puck/config.js +1 -0
- package/dist/editor/lib/say-with.d.ts +2 -0
- package/dist/editor/lib/say-with.js +1 -0
- package/dist/editor/lib/storefront-document.d.ts +2 -0
- package/dist/editor/lib/storefront-document.js +1 -0
- package/dist/editor/lib/storefront-editor-words.d.ts +693 -0
- package/dist/editor/lib/storefront-editor-words.js +1 -0
- package/dist/editor/lib/storefront-editor.d.ts +9 -0
- package/dist/editor/lib/storefront-editor.js +1 -0
- package/dist/editor/lib/storefront-shop-surfaces.d.ts +8 -0
- package/dist/editor/lib/storefront-shop-surfaces.js +1 -0
- package/dist/editor/lib/use-prime-and-refresh.d.ts +16 -0
- package/dist/editor/lib/use-prime-and-refresh.js +1 -0
- package/dist/editor.css +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.js +69 -52
- package/dist/render/app/fonts/archivo/OFL.txt +93 -0
- package/dist/render/app/fonts/archivo/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/archivo/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/archivo/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/archivo/latin.woff2 +0 -0
- package/dist/render/app/fonts/archivo/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/archivo/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/assistant/OFL.txt +95 -0
- package/dist/render/app/fonts/assistant/hebrew.woff2 +0 -0
- package/dist/render/app/fonts/assistant/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/assistant/latin.woff2 +0 -0
- package/dist/render/app/fonts/big-shoulders/OFL.txt +93 -0
- package/dist/render/app/fonts/big-shoulders/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/big-shoulders/latin.woff2 +0 -0
- package/dist/render/app/fonts/big-shoulders/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/OFL.txt +93 -0
- package/dist/render/app/fonts/cormorant/cyrillic-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/cyrillic-ext.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/latin.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/cormorant/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/dm-sans/OFL.txt +93 -0
- package/dist/render/app/fonts/dm-sans/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/dm-sans/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/dm-sans/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/dm-sans/latin.woff2 +0 -0
- package/dist/render/app/fonts/fallbacks.css +133 -0
- package/dist/render/app/fonts/fraunces/OFL.txt +93 -0
- package/dist/render/app/fonts/fraunces/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/fraunces/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/fraunces/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/fraunces/latin.woff2 +0 -0
- package/dist/render/app/fonts/fraunces/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/fraunces/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/inter/OFL.txt +93 -0
- package/dist/render/app/fonts/inter/cyrillic-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/cyrillic-ext.woff2 +0 -0
- package/dist/render/app/fonts/inter/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/inter/greek-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/greek-ext.woff2 +0 -0
- package/dist/render/app/fonts/inter/greek-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/greek.woff2 +0 -0
- package/dist/render/app/fonts/inter/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/inter/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/latin.woff2 +0 -0
- package/dist/render/app/fonts/inter/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/inter/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/OFL.txt +93 -0
- package/dist/render/app/fonts/jetbrains-mono/cyrillic-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/cyrillic-ext.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/greek-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/greek.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/latin.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/jetbrains-mono/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/manrope/OFL.txt +93 -0
- package/dist/render/app/fonts/manrope/cyrillic-ext.woff2 +0 -0
- package/dist/render/app/fonts/manrope/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/manrope/greek.woff2 +0 -0
- package/dist/render/app/fonts/manrope/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/manrope/latin.woff2 +0 -0
- package/dist/render/app/fonts/manrope/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/michroma/OFL.txt +93 -0
- package/dist/render/app/fonts/michroma/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/michroma/latin.woff2 +0 -0
- package/dist/render/app/fonts/oswald/OFL.txt +93 -0
- package/dist/render/app/fonts/oswald/cyrillic-ext.woff2 +0 -0
- package/dist/render/app/fonts/oswald/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/oswald/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/oswald/latin.woff2 +0 -0
- package/dist/render/app/fonts/oswald/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/outfit/OFL.txt +93 -0
- package/dist/render/app/fonts/outfit/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/outfit/latin.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/OFL.txt +93 -0
- package/dist/render/app/fonts/playfair-display/cyrillic-italic.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/cyrillic.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/latin-ext-italic.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/latin-italic.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/latin.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/vietnamese-italic.woff2 +0 -0
- package/dist/render/app/fonts/playfair-display/vietnamese.woff2 +0 -0
- package/dist/render/app/fonts/poppins/OFL.txt +93 -0
- package/dist/render/app/fonts/poppins/devanagari-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/devanagari-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/devanagari-600.woff2 +0 -0
- package/dist/render/app/fonts/poppins/devanagari-italic-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/devanagari-italic-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/devanagari-italic-600.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-600.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-600.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-italic-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-italic-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-ext-italic-600.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-italic-400.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-italic-500.woff2 +0 -0
- package/dist/render/app/fonts/poppins/latin-italic-600.woff2 +0 -0
- package/dist/render/app/fonts/sora/OFL.txt +93 -0
- package/dist/render/app/fonts/sora/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/sora/latin.woff2 +0 -0
- package/dist/render/app/fonts/space-grotesk/OFL.txt +93 -0
- package/dist/render/app/fonts/space-grotesk/latin-ext.woff2 +0 -0
- package/dist/render/app/fonts/space-grotesk/latin.woff2 +0 -0
- package/dist/render/app/fonts/space-grotesk/vietnamese.woff2 +0 -0
- package/dist/render/app/globals.css +3264 -0
- package/dist/render/built-with.json +3 -0
- package/dist/render/components/AppointmentBooking.d.ts +14 -0
- package/dist/render/components/AppointmentBooking.js +1 -0
- package/dist/render/components/AssistantChatMount.d.ts +8 -0
- package/dist/render/components/AssistantChatMount.js +1 -0
- package/dist/render/components/AssistantChatPanel.d.ts +7 -0
- package/dist/render/components/AssistantChatPanel.js +1 -0
- package/dist/render/components/BoxHeaderBar.d.ts +10 -0
- package/dist/render/components/BoxHeaderBar.js +1 -0
- package/dist/render/components/BrandPlate.d.ts +4 -0
- package/dist/render/components/BrandPlate.js +1 -0
- package/dist/render/components/BundleCard.d.ts +6 -0
- package/dist/render/components/BundleCard.js +1 -0
- package/dist/render/components/CartContext.d.ts +91 -0
- package/dist/render/components/CartContext.js +1 -0
- package/dist/render/components/CartDrawer.d.ts +12 -0
- package/dist/render/components/CartDrawer.js +4 -0
- package/dist/render/components/CartLineThumbnail.d.ts +8 -0
- package/dist/render/components/CartLineThumbnail.js +1 -0
- package/dist/render/components/CatalogFilterBarSection.d.ts +12 -0
- package/dist/render/components/CatalogFilterBarSection.js +1 -0
- package/dist/render/components/ChatContext.d.ts +23 -0
- package/dist/render/components/ChatContext.js +1 -0
- package/dist/render/components/ChatLauncher.d.ts +18 -0
- package/dist/render/components/ChatLauncher.js +1 -0
- package/dist/render/components/ChatWidget.d.ts +12 -0
- package/dist/render/components/ChatWidget.js +1 -0
- package/dist/render/components/CheckoutCTA.d.ts +12 -0
- package/dist/render/components/CheckoutCTA.js +1 -0
- package/dist/render/components/CollectionCard.d.ts +27 -0
- package/dist/render/components/CollectionCard.js +1 -0
- package/dist/render/components/Collections.d.ts +17 -0
- package/dist/render/components/Collections.js +1 -0
- package/dist/render/components/CompatibleTyres.d.ts +23 -0
- package/dist/render/components/CompatibleTyres.js +1 -0
- package/dist/render/components/ConsentBanner.d.ts +20 -0
- package/dist/render/components/ConsentBanner.js +1 -0
- package/dist/render/components/ConsentContext.d.ts +22 -0
- package/dist/render/components/ConsentContext.js +1 -0
- package/dist/render/components/ConsentPanel.d.ts +15 -0
- package/dist/render/components/ConsentPanel.js +1 -0
- package/dist/render/components/ConsentProvider.d.ts +7 -0
- package/dist/render/components/ConsentProvider.js +1 -0
- package/dist/render/components/ContactRouting.d.ts +33 -0
- package/dist/render/components/ContactRouting.js +1 -0
- package/dist/render/components/CountrySelect.d.ts +7 -0
- package/dist/render/components/CountrySelect.js +1 -0
- package/dist/render/components/CouponField.d.ts +3 -0
- package/dist/render/components/CouponField.js +1 -0
- package/dist/render/components/CurrencyContext.d.ts +27 -0
- package/dist/render/components/CurrencyContext.js +1 -0
- package/dist/render/components/DeliveryOptions.d.ts +18 -0
- package/dist/render/components/DeliveryOptions.js +1 -0
- package/dist/render/components/DeliveryOptionsSource.d.ts +8 -0
- package/dist/render/components/DeliveryOptionsSource.js +1 -0
- package/dist/render/components/DetailRows.d.ts +22 -0
- package/dist/render/components/DetailRows.js +1 -0
- package/dist/render/components/DimensionArrowMarkers.d.ts +3 -0
- package/dist/render/components/DimensionArrowMarkers.js +1 -0
- package/dist/render/components/EditorCurrencyNoticeContext.d.ts +7 -0
- package/dist/render/components/EditorCurrencyNoticeContext.js +1 -0
- package/dist/render/components/EmailCaptureForm.d.ts +15 -0
- package/dist/render/components/EmailCaptureForm.js +1 -0
- package/dist/render/components/EnglishVariant.d.ts +7 -0
- package/dist/render/components/EnglishVariant.js +1 -0
- package/dist/render/components/EuTyreLabelCard.d.ts +4 -0
- package/dist/render/components/EuTyreLabelCard.js +1 -0
- package/dist/render/components/EuTyreLabels.d.ts +7 -0
- package/dist/render/components/EuTyreLabels.js +1 -0
- package/dist/render/components/Events.d.ts +62 -0
- package/dist/render/components/Events.js +1 -0
- package/dist/render/components/FinishSwatches.d.ts +14 -0
- package/dist/render/components/FinishSwatches.js +1 -0
- package/dist/render/components/FitmentTable.d.ts +17 -0
- package/dist/render/components/FitmentTable.js +1 -0
- package/dist/render/components/FooterDivider.d.ts +6 -0
- package/dist/render/components/FooterDivider.js +1 -0
- package/dist/render/components/FooterEmailSignup.d.ts +6 -0
- package/dist/render/components/FooterEmailSignup.js +1 -0
- package/dist/render/components/FooterGroup.d.ts +8 -0
- package/dist/render/components/FooterGroup.js +1 -0
- package/dist/render/components/FooterLogo.d.ts +13 -0
- package/dist/render/components/FooterLogo.js +1 -0
- package/dist/render/components/FooterMenu.d.ts +25 -0
- package/dist/render/components/FooterMenu.js +1 -0
- package/dist/render/components/FooterSection.d.ts +11 -0
- package/dist/render/components/FooterSection.js +1 -0
- package/dist/render/components/FooterSocial.d.ts +16 -0
- package/dist/render/components/FooterSocial.js +1 -0
- package/dist/render/components/FooterText.d.ts +7 -0
- package/dist/render/components/FooterText.js +1 -0
- package/dist/render/components/FormBlock.d.ts +19 -0
- package/dist/render/components/FormBlock.js +1 -0
- package/dist/render/components/GalleryCard.d.ts +28 -0
- package/dist/render/components/GalleryCard.js +1 -0
- package/dist/render/components/GalleryGrid.d.ts +20 -0
- package/dist/render/components/GalleryGrid.js +1 -0
- package/dist/render/components/GalleryItem.d.ts +35 -0
- package/dist/render/components/GalleryItem.js +1 -0
- package/dist/render/components/GalleryShowcase.d.ts +51 -0
- package/dist/render/components/GalleryShowcase.js +1 -0
- package/dist/render/components/Header.d.ts +13 -0
- package/dist/render/components/Header.js +1 -0
- package/dist/render/components/HeaderNavItem.d.ts +17 -0
- package/dist/render/components/HeaderNavItem.js +1 -0
- package/dist/render/components/HeaderToolBlocks.d.ts +18 -0
- package/dist/render/components/HeaderToolBlocks.js +1 -0
- package/dist/render/components/HeaderTools.d.ts +21 -0
- package/dist/render/components/HeaderTools.js +1 -0
- package/dist/render/components/LegalLine.d.ts +4 -0
- package/dist/render/components/LegalLine.js +1 -0
- package/dist/render/components/Lightbox.d.ts +19 -0
- package/dist/render/components/Lightbox.js +1 -0
- package/dist/render/components/LinkedProductHero.d.ts +34 -0
- package/dist/render/components/LinkedProductHero.js +1 -0
- package/dist/render/components/LiveSiteMapsProvider.d.ts +6 -0
- package/dist/render/components/LiveSiteMapsProvider.js +1 -0
- package/dist/render/components/MenuPlaceholderLabel.d.ts +1 -0
- package/dist/render/components/MenuPlaceholderLabel.js +1 -0
- package/dist/render/components/NoCurrencyNote.d.ts +4 -0
- package/dist/render/components/NoCurrencyNote.js +1 -0
- package/dist/render/components/PreOrderPanel.d.ts +5 -0
- package/dist/render/components/PreOrderPanel.js +1 -0
- package/dist/render/components/PreviewMenusContext.d.ts +13 -0
- package/dist/render/components/PreviewMenusContext.js +1 -0
- package/dist/render/components/ProductCard.d.ts +6 -0
- package/dist/render/components/ProductCard.js +1 -0
- package/dist/render/components/ProductCardChrome.d.ts +37 -0
- package/dist/render/components/ProductCardChrome.js +1 -0
- package/dist/render/components/ProductCardEyebrow.d.ts +14 -0
- package/dist/render/components/ProductCardEyebrow.js +1 -0
- package/dist/render/components/ProductGridSection.d.ts +65 -0
- package/dist/render/components/ProductGridSection.js +1 -0
- package/dist/render/components/ProductHeroPanel.d.ts +22 -0
- package/dist/render/components/ProductHeroPanel.js +1 -0
- package/dist/render/components/ProductLightbox.d.ts +5 -0
- package/dist/render/components/ProductLightbox.js +1 -0
- package/dist/render/components/ProductRef.d.ts +16 -0
- package/dist/render/components/ProductRef.js +1 -0
- package/dist/render/components/PublishedFooter.d.ts +16 -0
- package/dist/render/components/PublishedFooter.js +1 -0
- package/dist/render/components/PublishedHeader.d.ts +4 -0
- package/dist/render/components/PublishedHeader.js +1 -0
- package/dist/render/components/QuantityStepper.d.ts +7 -0
- package/dist/render/components/QuantityStepper.js +1 -0
- package/dist/render/components/QuoteLink.d.ts +4 -0
- package/dist/render/components/QuoteLink.js +1 -0
- package/dist/render/components/ReviewForm.d.ts +8 -0
- package/dist/render/components/ReviewForm.js +1 -0
- package/dist/render/components/Reviews.d.ts +12 -0
- package/dist/render/components/Reviews.js +1 -0
- package/dist/render/components/SearchContext.d.ts +13 -0
- package/dist/render/components/SearchContext.js +1 -0
- package/dist/render/components/SectionBand.d.ts +9 -0
- package/dist/render/components/SectionBand.js +1 -0
- package/dist/render/components/SectionFootnote.d.ts +5 -0
- package/dist/render/components/SectionFootnote.js +1 -0
- package/dist/render/components/SectionGroupBody.d.ts +9 -0
- package/dist/render/components/SectionGroupBody.js +1 -0
- package/dist/render/components/SectionNotice.d.ts +7 -0
- package/dist/render/components/SectionNotice.js +1 -0
- package/dist/render/components/SiteRecordContext.d.ts +17 -0
- package/dist/render/components/SiteRecordContext.js +1 -0
- package/dist/render/components/SiteSwitch.d.ts +10 -0
- package/dist/render/components/SiteSwitch.js +1 -0
- package/dist/render/components/SpecTable.d.ts +18 -0
- package/dist/render/components/SpecTable.js +1 -0
- package/dist/render/components/SpecTablePartBridge.d.ts +5 -0
- package/dist/render/components/SpecTablePartBridge.js +1 -0
- package/dist/render/components/StorefrontProviders.d.ts +15 -0
- package/dist/render/components/StorefrontProviders.js +1 -0
- package/dist/render/components/SubmitBuild.d.ts +23 -0
- package/dist/render/components/SubmitBuild.js +1 -0
- package/dist/render/components/Subscribe.d.ts +27 -0
- package/dist/render/components/Subscribe.js +1 -0
- package/dist/render/components/SubscribePopup.d.ts +19 -0
- package/dist/render/components/SubscribePopup.js +7 -0
- package/dist/render/components/SubscribePopupContext.d.ts +33 -0
- package/dist/render/components/SubscribePopupContext.js +1 -0
- package/dist/render/components/ThemeToggle.d.ts +1 -0
- package/dist/render/components/ThemeToggle.js +1 -0
- package/dist/render/components/ThemedSelect.d.ts +59 -0
- package/dist/render/components/ThemedSelect.js +1 -0
- package/dist/render/components/TyreCard.d.ts +19 -0
- package/dist/render/components/TyreCard.js +1 -0
- package/dist/render/components/TyreFitVerdicts.d.ts +7 -0
- package/dist/render/components/TyreFitVerdicts.js +1 -0
- package/dist/render/components/TyreImage.d.ts +10 -0
- package/dist/render/components/TyreImage.js +1 -0
- package/dist/render/components/TyrePlpCard.d.ts +19 -0
- package/dist/render/components/TyrePlpCard.js +1 -0
- package/dist/render/components/TyreRenderSvg.d.ts +7 -0
- package/dist/render/components/TyreRenderSvg.js +1 -0
- package/dist/render/components/TyreSummaryCard.d.ts +11 -0
- package/dist/render/components/TyreSummaryCard.js +1 -0
- package/dist/render/components/TyreVehicleFitment.d.ts +18 -0
- package/dist/render/components/TyreVehicleFitment.js +1 -0
- package/dist/render/components/ViewMoreLink.d.ts +4 -0
- package/dist/render/components/ViewMoreLink.js +1 -0
- package/dist/render/components/WebFormField.d.ts +17 -0
- package/dist/render/components/WebFormField.js +1 -0
- package/dist/render/components/WheelCardFrame.d.ts +67 -0
- package/dist/render/components/WheelCardFrame.js +1 -0
- package/dist/render/components/WheelImage.d.ts +20 -0
- package/dist/render/components/WheelImage.js +1 -0
- package/dist/render/components/WheelPlaceholder.d.ts +7 -0
- package/dist/render/components/WheelPlaceholder.js +1 -0
- package/dist/render/components/WheelSvg.d.ts +7 -0
- package/dist/render/components/WheelSvg.js +1 -0
- package/dist/render/components/WishlistContext.d.ts +13 -0
- package/dist/render/components/WishlistContext.js +1 -0
- package/dist/render/components/booking/BookingBox.d.ts +16 -0
- package/dist/render/components/booking/BookingBox.js +1 -0
- package/dist/render/components/booking/BookingFormState.d.ts +46 -0
- package/dist/render/components/booking/BookingFormState.js +1 -0
- package/dist/render/components/booking/BookingRegions.d.ts +16 -0
- package/dist/render/components/booking/BookingRegions.js +1 -0
- package/dist/render/components/buy-row.d.ts +1 -0
- package/dist/render/components/buy-row.js +1 -0
- package/dist/render/components/catalog/CatalogFilterBar.d.ts +55 -0
- package/dist/render/components/catalog/CatalogFilterBar.js +1 -0
- package/dist/render/components/catalog/CatalogFilterContext.d.ts +39 -0
- package/dist/render/components/catalog/CatalogFilterContext.js +1 -0
- package/dist/render/components/catalog/CatalogFilterLabels.d.ts +6 -0
- package/dist/render/components/catalog/CatalogFilterLabels.js +1 -0
- package/dist/render/components/catalog/CatalogVehiclePicker.d.ts +22 -0
- package/dist/render/components/catalog/CatalogVehiclePicker.js +1 -0
- package/dist/render/components/catalog/FilterPill.d.ts +25 -0
- package/dist/render/components/catalog/FilterPill.js +1 -0
- package/dist/render/components/catalog/SiteMenuLinks.d.ts +6 -0
- package/dist/render/components/catalog/SiteMenuLinks.js +1 -0
- package/dist/render/components/checkout/CheckoutPageClient.d.ts +25 -0
- package/dist/render/components/checkout/CheckoutPageClient.js +3 -0
- package/dist/render/components/fitment/FitmentFinder.d.ts +15 -0
- package/dist/render/components/fitment/FitmentFinder.js +1 -0
- package/dist/render/components/fitment/FitmentPickerGrid.d.ts +6 -0
- package/dist/render/components/fitment/FitmentPickerGrid.js +1 -0
- package/dist/render/components/fitment/FitmentRowFit.d.ts +4 -0
- package/dist/render/components/fitment/FitmentRowFit.js +1 -0
- package/dist/render/components/fitment/PickerField.d.ts +16 -0
- package/dist/render/components/fitment/PickerField.js +1 -0
- package/dist/render/components/fitment/StockFitmentCard.d.ts +8 -0
- package/dist/render/components/fitment/StockFitmentCard.js +1 -0
- package/dist/render/components/fitment/useFitmentCascade.d.ts +31 -0
- package/dist/render/components/fitment/useFitmentCascade.js +1 -0
- package/dist/render/components/fitment/useVehicleFit.d.ts +29 -0
- package/dist/render/components/fitment/useVehicleFit.js +1 -0
- package/dist/render/components/fitment/vehicle-control.d.ts +10 -0
- package/dist/render/components/fitment/vehicle-control.js +0 -0
- package/dist/render/components/fitment/vehicle-level-state.d.ts +14 -0
- package/dist/render/components/fitment/vehicle-level-state.js +1 -0
- package/dist/render/components/formSubmission.d.ts +32 -0
- package/dist/render/components/formSubmission.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicBundleOffer.d.ts +13 -0
- package/dist/render/components/pdp-dynamic/DynamicBundleOffer.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicDetailRows.d.ts +14 -0
- package/dist/render/components/pdp-dynamic/DynamicDetailRows.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.d.ts +8 -0
- package/dist/render/components/pdp-dynamic/DynamicEuTyreLabel.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.d.ts +16 -0
- package/dist/render/components/pdp-dynamic/DynamicFitmentTable.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.d.ts +18 -0
- package/dist/render/components/pdp-dynamic/DynamicGalleryGrid.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicProductHero.d.ts +25 -0
- package/dist/render/components/pdp-dynamic/DynamicProductHero.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.d.ts +31 -0
- package/dist/render/components/pdp-dynamic/DynamicRelatedProducts.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.d.ts +13 -0
- package/dist/render/components/pdp-dynamic/DynamicSpecTable.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicTyreFitment.d.ts +13 -0
- package/dist/render/components/pdp-dynamic/DynamicTyreFitment.js +1 -0
- package/dist/render/components/pdp-dynamic/DynamicTyreSizes.d.ts +11 -0
- package/dist/render/components/pdp-dynamic/DynamicTyreSizes.js +1 -0
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.d.ts +7 -0
- package/dist/render/components/pdp-dynamic/FitmentTableBlock.js +1 -0
- package/dist/render/components/pdp-dynamic/KindGate.d.ts +8 -0
- package/dist/render/components/pdp-dynamic/KindGate.js +1 -0
- package/dist/render/components/pdp-dynamic/useSampleProduct.d.ts +5 -0
- package/dist/render/components/pdp-dynamic/useSampleProduct.js +1 -0
- package/dist/render/components/product-hero/TyreHeroFitment.d.ts +17 -0
- package/dist/render/components/product-hero/TyreHeroFitment.js +1 -0
- package/dist/render/components/product-hero/VehicleQuestion.d.ts +18 -0
- package/dist/render/components/product-hero/VehicleQuestion.js +1 -0
- package/dist/render/components/product-hero/WheelHeroFitment.d.ts +9 -0
- package/dist/render/components/product-hero/WheelHeroFitment.js +1 -0
- package/dist/render/components/product-hero/hero-content.d.ts +7 -0
- package/dist/render/components/product-hero/hero-content.js +1 -0
- package/dist/render/components/product-hero/hero-view.d.ts +37 -0
- package/dist/render/components/product-hero/hero-view.js +1 -0
- package/dist/render/components/product-hero/stage-photo.d.ts +10 -0
- package/dist/render/components/product-hero/stage-photo.js +3 -0
- package/dist/render/components/submit/SubmitBox.d.ts +19 -0
- package/dist/render/components/submit/SubmitBox.js +1 -0
- package/dist/render/components/submit/SubmitRegions.d.ts +17 -0
- package/dist/render/components/submit/SubmitRegions.js +1 -0
- package/dist/render/components/useEuTyreLabels.d.ts +3 -0
- package/dist/render/components/useEuTyreLabels.js +1 -0
- package/dist/render/components/useFinishSelection.d.ts +17 -0
- package/dist/render/components/useFinishSelection.js +1 -0
- package/dist/render/components/useHeaderBar.d.ts +9 -0
- package/dist/render/components/useHeaderBar.js +1 -0
- package/dist/render/components/useLightbox.d.ts +10 -0
- package/dist/render/components/useLightbox.js +1 -0
- package/dist/render/components/useModalDismiss.d.ts +8 -0
- package/dist/render/components/useModalDismiss.js +1 -0
- package/dist/render/components/useNewsletterSignup.d.ts +12 -0
- package/dist/render/components/useNewsletterSignup.js +1 -0
- package/dist/render/components/usePreOrderIntent.d.ts +14 -0
- package/dist/render/components/usePreOrderIntent.js +1 -0
- package/dist/render/components/useProductCatalog.d.ts +54 -0
- package/dist/render/components/useProductCatalog.js +1 -0
- package/dist/render/components/useProductSelection.d.ts +39 -0
- package/dist/render/components/useProductSelection.js +1 -0
- package/dist/render/components/useStockAlertSignup.d.ts +14 -0
- package/dist/render/components/useStockAlertSignup.js +1 -0
- package/dist/render/components/useStorefrontReviews.d.ts +2 -0
- package/dist/render/components/useStorefrontReviews.js +1 -0
- package/dist/render/components/useTyreCatalog.d.ts +2 -0
- package/dist/render/components/useTyreCatalog.js +1 -0
- package/dist/render/components/useTyreDetail.d.ts +6 -0
- package/dist/render/components/useTyreDetail.js +1 -0
- package/dist/render/components/useTyreFitAnswer.d.ts +5 -0
- package/dist/render/components/useTyreFitAnswer.js +1 -0
- package/dist/render/components/useWheelDetail.d.ts +6 -0
- package/dist/render/components/useWheelDetail.js +1 -0
- package/dist/render/components/wheels-plp/AlloyWheelsListing.d.ts +42 -0
- package/dist/render/components/wheels-plp/AlloyWheelsListing.js +1 -0
- package/dist/render/components/wheels-plp/PlpActiveChips.d.ts +9 -0
- package/dist/render/components/wheels-plp/PlpActiveChips.js +1 -0
- package/dist/render/components/wheels-plp/PlpCard.d.ts +27 -0
- package/dist/render/components/wheels-plp/PlpCard.js +1 -0
- package/dist/render/components/wheels-plp/PlpInStockToggle.d.ts +6 -0
- package/dist/render/components/wheels-plp/PlpInStockToggle.js +1 -0
- package/dist/render/components/wheels-plp/PlpNotifyMeDialog.d.ts +10 -0
- package/dist/render/components/wheels-plp/PlpNotifyMeDialog.js +1 -0
- package/dist/render/components/wheels-plp/PlpPagination.d.ts +5 -0
- package/dist/render/components/wheels-plp/PlpPagination.js +1 -0
- package/dist/render/components/wheels-plp/PlpSidebar.d.ts +25 -0
- package/dist/render/components/wheels-plp/PlpSidebar.js +1 -0
- package/dist/render/components/wheels-plp/PlpTypePicker.d.ts +7 -0
- package/dist/render/components/wheels-plp/PlpTypePicker.js +1 -0
- package/dist/render/components/wheels-plp/PlpTyreSizeBoxes.d.ts +9 -0
- package/dist/render/components/wheels-plp/PlpTyreSizeBoxes.js +1 -0
- package/dist/render/components/wheels-plp/PlpVehicleBar.d.ts +15 -0
- package/dist/render/components/wheels-plp/PlpVehicleBar.js +1 -0
- package/dist/render/components/wheels-plp/PlpVehicleGate.d.ts +10 -0
- package/dist/render/components/wheels-plp/PlpVehicleGate.js +1 -0
- package/dist/render/components/wheels-plp/usePlpCardSelection.d.ts +18 -0
- package/dist/render/components/wheels-plp/usePlpCardSelection.js +1 -0
- package/dist/render/components/wheels-plp/usePlpFiltersInUrl.d.ts +10 -0
- package/dist/render/components/wheels-plp/usePlpFiltersInUrl.js +1 -0
- package/dist/render/components/wheels-plp/useVehicleCatalog.d.ts +10 -0
- package/dist/render/components/wheels-plp/useVehicleCatalog.js +1 -0
- package/dist/render/components/wheels-plp/useWheelCardBottom.d.ts +20 -0
- package/dist/render/components/wheels-plp/useWheelCardBottom.js +1 -0
- package/dist/render/lib/api/chat.d.ts +31 -0
- package/dist/render/lib/api/chat.js +1 -0
- package/dist/render/lib/api/fitment-data.d.ts +18 -0
- package/dist/render/lib/api/fitment-data.js +1 -0
- package/dist/render/lib/api/gallery-builds-data.d.ts +4 -0
- package/dist/render/lib/api/gallery-builds-data.js +1 -0
- package/dist/render/lib/api/generated-upload-limits.d.ts +1292 -0
- package/dist/render/lib/api/generated-upload-limits.js +1 -0
- package/dist/render/lib/api/index.d.ts +806 -0
- package/dist/render/lib/api/index.js +1 -0
- package/dist/render/lib/api/origins.d.ts +2 -0
- package/dist/render/lib/api/origins.js +1 -0
- package/dist/render/lib/api/types.d.ts +3928 -0
- package/dist/render/lib/api/types.js +0 -0
- package/dist/render/lib/api/upload-limits.d.ts +10 -0
- package/dist/render/lib/api/upload-limits.js +1 -0
- package/dist/render/lib/assistant-chat.d.ts +35 -0
- package/dist/render/lib/assistant-chat.js +1 -0
- package/dist/render/lib/auth.d.ts +6 -0
- package/dist/render/lib/auth.js +1 -0
- package/dist/render/lib/booking/text-kinds.d.ts +11 -0
- package/dist/render/lib/booking/text-kinds.js +1 -0
- package/dist/render/lib/booking-dates.d.ts +23 -0
- package/dist/render/lib/booking-dates.js +1 -0
- package/dist/render/lib/cache-evict.d.ts +4 -0
- package/dist/render/lib/cache-evict.js +1 -0
- package/dist/render/lib/cart/coupon-preview.d.ts +12 -0
- package/dist/render/lib/cart/coupon-preview.js +1 -0
- package/dist/render/lib/cart/shipping-status.d.ts +12 -0
- package/dist/render/lib/cart/shipping-status.js +1 -0
- package/dist/render/lib/cart/snapshot-lines.d.ts +3 -0
- package/dist/render/lib/cart/snapshot-lines.js +1 -0
- package/dist/render/lib/catalog/from-tyre.d.ts +3 -0
- package/dist/render/lib/catalog/from-tyre.js +1 -0
- package/dist/render/lib/catalog/from-wheel.d.ts +7 -0
- package/dist/render/lib/catalog/from-wheel.js +1 -0
- package/dist/render/lib/catalog/listing-links.d.ts +11 -0
- package/dist/render/lib/catalog/listing-links.js +1 -0
- package/dist/render/lib/catalog/plp-item.d.ts +39 -0
- package/dist/render/lib/catalog/plp-item.js +1 -0
- package/dist/render/lib/catalog/plp-vehicle-copy.d.ts +20 -0
- package/dist/render/lib/catalog/plp-vehicle-copy.js +1 -0
- package/dist/render/lib/catalog/plp-vehicle-slice.d.ts +13 -0
- package/dist/render/lib/catalog/plp-vehicle-slice.js +1 -0
- package/dist/render/lib/catalog/product-options.d.ts +27 -0
- package/dist/render/lib/catalog/product-options.js +1 -0
- package/dist/render/lib/catalog/purchase.d.ts +46 -0
- package/dist/render/lib/catalog/purchase.js +1 -0
- package/dist/render/lib/catalog/related-cards.d.ts +12 -0
- package/dist/render/lib/catalog/related-cards.js +1 -0
- package/dist/render/lib/catalog/relationships.d.ts +28 -0
- package/dist/render/lib/catalog/relationships.js +1 -0
- package/dist/render/lib/catalog/store-product.d.ts +56 -0
- package/dist/render/lib/catalog/store-product.js +1 -0
- package/dist/render/lib/chat-socket.d.ts +8 -0
- package/dist/render/lib/chat-socket.js +1 -0
- package/dist/render/lib/checkout/wallet-return.d.ts +52 -0
- package/dist/render/lib/checkout/wallet-return.js +1 -0
- package/dist/render/lib/chrome-cache.d.ts +6 -0
- package/dist/render/lib/chrome-cache.js +1 -0
- package/dist/render/lib/chrome-load.d.ts +28 -0
- package/dist/render/lib/chrome-load.js +1 -0
- package/dist/render/lib/click-ids.d.ts +8 -0
- package/dist/render/lib/click-ids.js +1 -0
- package/dist/render/lib/commerce.d.ts +42 -0
- package/dist/render/lib/commerce.js +1 -0
- package/dist/render/lib/consent/choice.d.ts +35 -0
- package/dist/render/lib/consent/choice.js +1 -0
- package/dist/render/lib/consent/rules.d.ts +60 -0
- package/dist/render/lib/consent/rules.js +1 -0
- package/dist/render/lib/content/catalog-filter-labels.d.ts +6 -0
- package/dist/render/lib/content/catalog-filter-labels.js +1 -0
- package/dist/render/lib/content/country-show-as.d.ts +9 -0
- package/dist/render/lib/content/country-show-as.js +1 -0
- package/dist/render/lib/content/english-variant.d.ts +4 -0
- package/dist/render/lib/content/english-variant.js +1 -0
- package/dist/render/lib/content/field-usage.d.ts +35 -0
- package/dist/render/lib/content/field-usage.js +1 -0
- package/dist/render/lib/content/header-bar.d.ts +8 -0
- package/dist/render/lib/content/header-bar.js +1 -0
- package/dist/render/lib/content/header-theme.d.ts +7 -0
- package/dist/render/lib/content/header-theme.js +1 -0
- package/dist/render/lib/content/menu-placeholder.d.ts +8 -0
- package/dist/render/lib/content/menu-placeholder.js +1 -0
- package/dist/render/lib/content/menu-row.d.ts +9 -0
- package/dist/render/lib/content/menu-row.js +1 -0
- package/dist/render/lib/content/product-hero.d.ts +13 -0
- package/dist/render/lib/content/product-hero.js +1 -0
- package/dist/render/lib/content/site.d.ts +62 -0
- package/dist/render/lib/content/site.js +1 -0
- package/dist/render/lib/content/source-values.d.ts +43 -0
- package/dist/render/lib/content/source-values.js +0 -0
- package/dist/render/lib/content/stock-words.d.ts +10 -0
- package/dist/render/lib/content/stock-words.js +1 -0
- package/dist/render/lib/countries.d.ts +5 -0
- package/dist/render/lib/countries.js +1 -0
- package/dist/render/lib/editor-route.d.ts +3 -0
- package/dist/render/lib/editor-route.js +1 -0
- package/dist/render/lib/email-shape.d.ts +1 -0
- package/dist/render/lib/email-shape.js +1 -0
- package/dist/render/lib/font-table.json +2588 -0
- package/dist/render/lib/forwarded-for.d.ts +6 -0
- package/dist/render/lib/forwarded-for.js +1 -0
- package/dist/render/lib/google-tag.d.ts +37 -0
- package/dist/render/lib/google-tag.js +1 -0
- package/dist/render/lib/header-settings-fetch.d.ts +5 -0
- package/dist/render/lib/header-settings-fetch.js +1 -0
- package/dist/render/lib/links/link-rules.d.ts +80 -0
- package/dist/render/lib/links/link-rules.js +1 -0
- package/dist/render/lib/logo/surface-is-light.d.ts +1 -0
- package/dist/render/lib/logo/surface-is-light.js +1 -0
- package/dist/render/lib/menu-link.d.ts +1 -0
- package/dist/render/lib/menu-link.js +1 -0
- package/dist/render/lib/menu-source.d.ts +23 -0
- package/dist/render/lib/menu-source.js +1 -0
- package/dist/render/lib/meta-pixel.d.ts +19 -0
- package/dist/render/lib/meta-pixel.js +1 -0
- package/dist/render/lib/newsletter-signup.d.ts +16 -0
- package/dist/render/lib/newsletter-signup.js +1 -0
- package/dist/render/lib/next-fonts.d.ts +3 -0
- package/dist/render/lib/next-fonts.js +1 -0
- package/dist/render/lib/popup/popup-rules.d.ts +25 -0
- package/dist/render/lib/popup/popup-rules.js +1 -0
- package/dist/render/lib/popup/text-kind-style.d.ts +3 -0
- package/dist/render/lib/popup/text-kind-style.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/AccountBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/AccountBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/AlloyWheelsListing/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/commerce/AlloyWheelsListing/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/BundleOffer/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/BundleOffer/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CartBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/CartBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CatalogFilterBar/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/CatalogFilterBar/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CheckoutCTA/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/commerce/CheckoutCTA/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CollectionCard/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/CollectionCard/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/Collections/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/commerce/Collections/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/render.d.ts +9 -0
- package/dist/render/lib/puck/blocks/commerce/CompatibleTyres/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/CountrySwitchBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/CountrySwitchBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/DeliveryOptions/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/commerce/DeliveryOptions/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/DetailRows/render.d.ts +9 -0
- package/dist/render/lib/puck/blocks/commerce/DetailRows/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/EuTyreLabel/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/EuTyreLabel/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/FitmentFinder/render.d.ts +8 -0
- package/dist/render/lib/puck/blocks/commerce/FitmentFinder/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/FitmentTable/render.d.ts +9 -0
- package/dist/render/lib/puck/blocks/commerce/FitmentTable/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/Gallery/render.d.ts +14 -0
- package/dist/render/lib/puck/blocks/commerce/Gallery/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/GalleryB/render.d.ts +13 -0
- package/dist/render/lib/puck/blocks/commerce/GalleryB/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/GalleryItem/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/Header/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/Header/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/ProductGrid/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/commerce/ProductGrid/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/ProductHero/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/ProductHero/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/ProductRef/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/ProductRef/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/RelatedProducts/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/commerce/RelatedProducts/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/SearchBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/SearchBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/SpecTable/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/commerce/SpecTable/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/ThemeSwitchBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/ThemeSwitchBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/TyreFitment/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/TyreFitment/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/TyreSizes/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/commerce/TyreSizes/render.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/placeholders.d.ts +4 -0
- package/dist/render/lib/puck/blocks/commerce/placeholders.js +1 -0
- package/dist/render/lib/puck/blocks/commerce/renders.d.ts +32 -0
- package/dist/render/lib/puck/blocks/commerce/renders.js +1 -0
- package/dist/render/lib/puck/blocks/service/AppointmentBooking/render.d.ts +8 -0
- package/dist/render/lib/puck/blocks/service/AppointmentBooking/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/BookingBox/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/BookingBox/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/ContactRouting/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/ContactRouting/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/Events/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/service/Events/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/Footer/render.d.ts +8 -0
- package/dist/render/lib/puck/blocks/service/Footer/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterDivider/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterDivider/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterEmailSignup/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterEmailSignup/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterGroup/render.d.ts +8 -0
- package/dist/render/lib/puck/blocks/service/FooterGroup/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterLogo/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterLogo/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterMenu/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterMenu/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterSocial/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterSocial/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/FooterText/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/FooterText/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/Form/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/Form/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/LegalLineBlock/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/LegalLineBlock/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/ReviewForm/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/service/ReviewForm/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/Reviews/render.d.ts +6 -0
- package/dist/render/lib/puck/blocks/service/Reviews/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/SiteFooter/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/service/SiteFooter/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/SiteHeader/render.d.ts +7 -0
- package/dist/render/lib/puck/blocks/service/SiteHeader/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/SubmitBox/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/SubmitBox/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/SubmitBuild/render.d.ts +8 -0
- package/dist/render/lib/puck/blocks/service/SubmitBuild/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/Subscribe/render.d.ts +2 -0
- package/dist/render/lib/puck/blocks/service/Subscribe/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/SubscribeBlogs/render.d.ts +17 -0
- package/dist/render/lib/puck/blocks/service/SubscribeBlogs/render.js +1 -0
- package/dist/render/lib/puck/blocks/service/renders.d.ts +26 -0
- package/dist/render/lib/puck/blocks/service/renders.js +1 -0
- package/dist/render/lib/puck/blocks/service/subscribe.d.ts +33 -0
- package/dist/render/lib/puck/blocks/service/subscribe.js +1 -0
- package/dist/render/lib/puck/blocks/text-part-shapes.json +1649 -0
- package/dist/render/lib/puck/current-product.d.ts +19 -0
- package/dist/render/lib/puck/current-product.js +1 -0
- package/dist/render/lib/puck/current-record.d.ts +44 -0
- package/dist/render/lib/puck/current-record.js +1 -0
- package/dist/render/lib/puck/fitment-table-dynamic.d.ts +4 -0
- package/dist/render/lib/puck/fitment-table-dynamic.js +1 -0
- package/dist/render/lib/puck/footer-page-blocks.d.ts +7 -0
- package/dist/render/lib/puck/footer-page-blocks.js +1 -0
- package/dist/render/lib/puck/preview-pick.d.ts +7 -0
- package/dist/render/lib/puck/preview-pick.js +1 -0
- package/dist/render/lib/puck/preview-product.d.ts +6 -0
- package/dist/render/lib/puck/preview-product.js +1 -0
- package/dist/render/lib/puck/render-client.d.ts +5 -0
- package/dist/render/lib/puck/render-client.js +1 -0
- package/dist/render/lib/puck/render-config.d.ts +4 -0
- package/dist/render/lib/puck/render-config.js +1 -0
- package/dist/render/lib/puck/slot-seeds.d.ts +3 -0
- package/dist/render/lib/puck/slot-seeds.js +1 -0
- package/dist/render/lib/puck/storefront-root.d.ts +18 -0
- package/dist/render/lib/puck/storefront-root.js +1 -0
- package/dist/render/lib/puck/subscribe-content-type.d.ts +10 -0
- package/dist/render/lib/puck/subscribe-content-type.js +1 -0
- package/dist/render/lib/puck/template-product-kind.d.ts +7 -0
- package/dist/render/lib/puck/template-product-kind.js +1 -0
- package/dist/render/lib/sections/card-image-sizes.d.ts +12 -0
- package/dist/render/lib/sections/card-image-sizes.js +1 -0
- package/dist/render/lib/sections/card-show-defaults.d.ts +10 -0
- package/dist/render/lib/sections/card-show-defaults.js +1 -0
- package/dist/render/lib/sections/catalog-filter-layout.d.ts +7 -0
- package/dist/render/lib/sections/catalog-filter-layout.js +1 -0
- package/dist/render/lib/sections/fill-row.d.ts +16 -0
- package/dist/render/lib/sections/fill-row.js +1 -0
- package/dist/render/lib/sections/hero-arrangement.d.ts +11 -0
- package/dist/render/lib/sections/hero-arrangement.js +1 -0
- package/dist/render/lib/sections/hero-gallery.d.ts +14 -0
- package/dist/render/lib/sections/hero-gallery.js +1 -0
- package/dist/render/lib/sections/hero-price-placement.d.ts +7 -0
- package/dist/render/lib/sections/hero-price-placement.js +1 -0
- package/dist/render/lib/select-keys.d.ts +18 -0
- package/dist/render/lib/select-keys.js +1 -0
- package/dist/render/lib/site-headers.d.ts +3 -0
- package/dist/render/lib/site-headers.js +1 -0
- package/dist/render/lib/storefront-page-groups.d.ts +16 -0
- package/dist/render/lib/storefront-page-groups.js +1 -0
- package/dist/render/lib/storefront-page-order.d.ts +3 -0
- package/dist/render/lib/storefront-page-order.js +1 -0
- package/dist/render/lib/submit/text-kinds.d.ts +11 -0
- package/dist/render/lib/submit/text-kinds.js +1 -0
- package/dist/render/lib/tyres/eu-tyre-label.d.ts +29 -0
- package/dist/render/lib/tyres/eu-tyre-label.js +1 -0
- package/dist/render/lib/tyres/placeholder-tyre.d.ts +2 -0
- package/dist/render/lib/tyres/placeholder-tyre.js +1 -0
- package/dist/render/lib/tyres/spec-sheet.d.ts +12 -0
- package/dist/render/lib/tyres/spec-sheet.js +1 -0
- package/dist/render/lib/tyres/tyre-brand-name.d.ts +2 -0
- package/dist/render/lib/tyres/tyre-brand-name.js +1 -0
- package/dist/render/lib/tyres/tyre-fit-copy.d.ts +3 -0
- package/dist/render/lib/tyres/tyre-fit-copy.js +1 -0
- package/dist/render/lib/tyres/tyre-page-path.d.ts +2 -0
- package/dist/render/lib/tyres/tyre-page-path.js +1 -0
- package/dist/render/lib/tyres/tyre-purchase.d.ts +12 -0
- package/dist/render/lib/tyres/tyre-purchase.js +1 -0
- package/dist/render/lib/tyres/tyre-size-fit.d.ts +12 -0
- package/dist/render/lib/tyres/tyre-size-fit.js +1 -0
- package/dist/render/lib/tyres/tyre-size.d.ts +11 -0
- package/dist/render/lib/tyres/tyre-size.js +1 -0
- package/dist/render/lib/tyres/tyre-vehicle-fitment.d.ts +17 -0
- package/dist/render/lib/tyres/tyre-vehicle-fitment.js +1 -0
- package/dist/render/lib/uuid.d.ts +1 -0
- package/dist/render/lib/uuid.js +1 -0
- package/dist/render/lib/wheels/applied-vehicle.d.ts +1 -0
- package/dist/render/lib/wheels/applied-vehicle.js +1 -0
- package/dist/render/lib/wheels/catalog-default-layout.d.ts +14 -0
- package/dist/render/lib/wheels/catalog-default-layout.js +1 -0
- package/dist/render/lib/wheels/catalog-filters-to-listing.d.ts +9 -0
- package/dist/render/lib/wheels/catalog-filters-to-listing.js +1 -0
- package/dist/render/lib/wheels/catalog-filters.d.ts +19 -0
- package/dist/render/lib/wheels/catalog-filters.js +1 -0
- package/dist/render/lib/wheels/collections.d.ts +22 -0
- package/dist/render/lib/wheels/collections.js +1 -0
- package/dist/render/lib/wheels/cover-rendering.d.ts +23 -0
- package/dist/render/lib/wheels/cover-rendering.js +1 -0
- package/dist/render/lib/wheels/detail-shots.d.ts +10 -0
- package/dist/render/lib/wheels/detail-shots.js +1 -0
- package/dist/render/lib/wheels/finish-colour-match.d.ts +4 -0
- package/dist/render/lib/wheels/finish-colour-match.js +1 -0
- package/dist/render/lib/wheels/finish-defaults.d.ts +16 -0
- package/dist/render/lib/wheels/finish-defaults.js +1 -0
- package/dist/render/lib/wheels/finish-photos.d.ts +2 -0
- package/dist/render/lib/wheels/finish-photos.js +1 -0
- package/dist/render/lib/wheels/fitment-columns.d.ts +9 -0
- package/dist/render/lib/wheels/fitment-columns.js +1 -0
- package/dist/render/lib/wheels/fitment-options.d.ts +18 -0
- package/dist/render/lib/wheels/fitment-options.js +1 -0
- package/dist/render/lib/wheels/fitment-row-fit.d.ts +17 -0
- package/dist/render/lib/wheels/fitment-row-fit.js +1 -0
- package/dist/render/lib/wheels/fitments.d.ts +13 -0
- package/dist/render/lib/wheels/fitments.js +1 -0
- package/dist/render/lib/wheels/grid-source.d.ts +12 -0
- package/dist/render/lib/wheels/grid-source.js +1 -0
- package/dist/render/lib/wheels/listable-wheels.d.ts +3 -0
- package/dist/render/lib/wheels/listable-wheels.js +1 -0
- package/dist/render/lib/wheels/lug-count.d.ts +10 -0
- package/dist/render/lib/wheels/lug-count.js +1 -0
- package/dist/render/lib/wheels/pdp-fit-verdict.d.ts +27 -0
- package/dist/render/lib/wheels/pdp-fit-verdict.js +1 -0
- package/dist/render/lib/wheels/picker-goes-to-the-shop.d.ts +10 -0
- package/dist/render/lib/wheels/picker-goes-to-the-shop.js +1 -0
- package/dist/render/lib/wheels/placeholder-wheel.d.ts +3 -0
- package/dist/render/lib/wheels/placeholder-wheel.js +1 -0
- package/dist/render/lib/wheels/plp-filters.d.ts +100 -0
- package/dist/render/lib/wheels/plp-filters.js +1 -0
- package/dist/render/lib/wheels/plp-fitment-match.d.ts +61 -0
- package/dist/render/lib/wheels/plp-fitment-match.js +1 -0
- package/dist/render/lib/wheels/plp-grid.d.ts +18 -0
- package/dist/render/lib/wheels/plp-grid.js +1 -0
- package/dist/render/lib/wheels/plp-hydrate.d.ts +21 -0
- package/dist/render/lib/wheels/plp-hydrate.js +1 -0
- package/dist/render/lib/wheels/plp-vehicle-params.d.ts +10 -0
- package/dist/render/lib/wheels/plp-vehicle-params.js +1 -0
- package/dist/render/lib/wheels/pre-order-intent.d.ts +3 -0
- package/dist/render/lib/wheels/pre-order-intent.js +1 -0
- package/dist/render/lib/wheels/pre-order.d.ts +7 -0
- package/dist/render/lib/wheels/pre-order.js +1 -0
- package/dist/render/lib/wheels/price-display.d.ts +47 -0
- package/dist/render/lib/wheels/price-display.js +1 -0
- package/dist/render/lib/wheels/render-fit.d.ts +3 -0
- package/dist/render/lib/wheels/render-fit.js +1 -0
- package/dist/render/lib/wheels/renderable-finishes.d.ts +6 -0
- package/dist/render/lib/wheels/renderable-finishes.js +1 -0
- package/dist/render/lib/wheels/selected-studs.d.ts +9 -0
- package/dist/render/lib/wheels/selected-studs.js +1 -0
- package/dist/render/lib/wheels/set-mode.d.ts +34 -0
- package/dist/render/lib/wheels/set-mode.js +1 -0
- package/dist/render/lib/wheels/size-range.d.ts +10 -0
- package/dist/render/lib/wheels/size-range.js +1 -0
- package/dist/render/lib/wheels/spec-format.d.ts +7 -0
- package/dist/render/lib/wheels/spec-format.js +1 -0
- package/dist/render/lib/wheels/spec-sheet.d.ts +58 -0
- package/dist/render/lib/wheels/spec-sheet.js +1 -0
- package/dist/render/lib/wheels/tyre-render.d.ts +34 -0
- package/dist/render/lib/wheels/tyre-render.js +1 -0
- package/dist/render/lib/wheels/variant-spec.d.ts +9 -0
- package/dist/render/lib/wheels/variant-spec.js +1 -0
- package/dist/render/lib/wheels/variants.d.ts +8 -0
- package/dist/render/lib/wheels/variants.js +1 -0
- package/dist/render/lib/wheels/vehicle-field-focus.d.ts +7 -0
- package/dist/render/lib/wheels/vehicle-field-focus.js +1 -0
- package/dist/render/lib/wheels/vehicle-memory.d.ts +25 -0
- package/dist/render/lib/wheels/vehicle-memory.js +1 -0
- package/dist/render/lib/wheels/wheel-name.d.ts +4 -0
- package/dist/render/lib/wheels/wheel-name.js +1 -0
- package/dist/render/lib/wheels/wheel-specs.d.ts +14 -0
- package/dist/render/lib/wheels/wheel-specs.js +1 -0
- package/dist/render/lib/wheels/wheel-summary-casing.d.ts +4 -0
- package/dist/render/lib/wheels/wheel-summary-casing.js +1 -0
- package/dist/render/lib/wheels/wheels.d.ts +38 -0
- package/dist/render/lib/wheels/wheels.js +1 -0
- package/dist/render/mocks/fitment-snapshot.json +3911 -0
- package/dist/render/mocks/gallery-builds.json +213 -0
- package/dist/words.d.ts +68 -7
- package/dist/words.js +5 -5
- package/package.json +37 -5
- package/dist/chunks/chunk-BDITPYS5.js +0 -1
- package/dist/chunks/chunk-EHKAKDFN.js +0 -255
- /package/dist/chunks/{chunk-4NM2MDGN.js → chunk-76HTJBKU.js} +0 -0
- /package/dist/chunks/{chunk-EHKAKDFN.js.LEGAL.txt → chunk-PHH7L5FJ.js.LEGAL.txt} +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SlotComponent } from "efficient-easel/blocks";
|
|
2
|
+
export interface AppointmentBookingProps {
|
|
3
|
+
eyebrow?: string;
|
|
4
|
+
heading?: string;
|
|
5
|
+
intro?: string;
|
|
6
|
+
buttonLabel?: string;
|
|
7
|
+
successMessage?: string;
|
|
8
|
+
editing?: boolean;
|
|
9
|
+
boxes?: SlotComponent;
|
|
10
|
+
inBoxes?: boolean;
|
|
11
|
+
nodeId?: string;
|
|
12
|
+
}
|
|
13
|
+
export default function AppointmentBooking(props?: AppointmentBookingProps): import("react").JSX.Element;
|
|
14
|
+
export declare function AppointmentBookingBody({ eyebrow, heading, intro, buttonLabel, successMessage, boxes: Boxes, inBoxes, }: AppointmentBookingProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import{BookingFormProvider as S,useBookingForm as b}from"./booking/BookingFormState.js";import{useBookingPreview as k}from"efficient-web-builder/render/lib/puck/booking-preview";import{say as n}from"efficient-web-builder/format/lib/editor-words";import{BookingChoose as N,BookingConfirmed as B,BookingDetails as y,BookingHead as w}from"./booking/BookingRegions.js";function A(t={}){const o=k();return e(S,{editing:t.editing,previewConfirmation:!!t.nodeId&&o===t.nodeId,children:e(C,{...t})})}const p="mx-auto max-w-[var(--sf-site-width,1600px)] px-[min(24px,var(--sf-site-gutter,40px))] py-16 min-[800px]:px-[var(--sf-site-gutter,40px)] min-[800px]:py-[88px]",s="grid gap-8 min-[960px]:grid-cols-[minmax(0,1fr)_minmax(360px,0.8fr)] min-[960px]:gap-12";function C({eyebrow:t,heading:o,intro:g,buttonLabel:f,successMessage:u,boxes:r,inBoxes:x=!1}){const{fieldPrefix:_,editing:v,services:m,currency:D,serviceId:I,setServiceId:L,requiresPayment:P,date:j,earliestDate:z,setDate:E,setDateTouched:F,availability:M,loadingSlots:T,noSlotsMessage:R,selectedStart:$,setSelectedStart:q,customerTimezone:G,name:H,setName:O,email:J,setEmail:K,phone:Q,setPhone:U,notes:V,setNotes:W,confirmation:c,submitting:X,error:Y,canSubmit:Z,handleSubmit:l,sample:h}=b(),d=h?e("p",{className:"mb-6 font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",role:"status",children:n("Example form — add an active service in {place}.",{place:n("Storefront → Booking Services")})}):null,a=m===void 0?e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Loading appointments…"}):m?.length===0?e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",role:"status",children:v?n("Add an active service in {place}.",{place:n("Storefront → Booking Services")}):"Appointments are not available right now."}):null;return x&&r?e("section",{className:"relative z-[2] border-t border-line bg-surface",children:i("div",{className:p,children:[d,c?e(r,{className:`${s} items-start`}):i("form",{onSubmit:l,children:[e(r,{className:`${s} items-start`}),a]})]})}):e("section",{className:"relative z-[2] border-t border-line bg-surface",children:i("div",{className:p,children:[d,e(w,{eyebrow:t,heading:o,intro:g}),c?e(B,{successMessage:u}):a||i("form",{onSubmit:l,className:s,children:[e(N,{}),e(y,{buttonLabel:f})]})]})})}export{C as AppointmentBookingBody,A as default};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ChatLauncherLook } from "./ChatLauncher.js";
|
|
2
|
+
export interface AssistantChatMountProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
greeting?: string;
|
|
5
|
+
onUnavailable: () => void;
|
|
6
|
+
look?: ChatLauncherLook | null;
|
|
7
|
+
}
|
|
8
|
+
export default function AssistantChatMount({ look, ...props }: AssistantChatMountProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as n}from"react/jsx-runtime";import{lazy as l,Suspense as c,useState as i}from"react";import u,{chatLauncherTokens as p}from"./ChatLauncher.js";const a=()=>import("./AssistantChatPanel.js"),d=l(a);function o({onOpen:t,look:e}){return n(u,{label:"Open chat",onOpen:t,onWarm:()=>{a()},look:e})}function f({look:t,...e}){const[s,r]=i(!1);return n("div",{"data-sf-floating":"",style:{display:"contents",...p(t)},children:s?n(c,{fallback:n(o,{onOpen:()=>{},look:t}),children:n(d,{...e})}):n(o,{onOpen:()=>r(!0),look:t})})}export{f as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "efficient-shell/ai.css";
|
|
2
|
+
export interface AssistantChatPanelProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
greeting?: string;
|
|
5
|
+
onUnavailable: () => void;
|
|
6
|
+
}
|
|
7
|
+
export default function AssistantChatPanel({ title, greeting, onUnavailable }: AssistantChatPanelProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as I}from"react/jsx-runtime";import{useCallback as o,useEffect as O,useMemo as R,useRef as s,useState as m}from"react";import{AssistantChat as _}from"efficient-shell/ai";import"efficient-shell/ai.css";import{api as d,API_URL as w}from"../lib/api/index.js";import{auth as r}from"../lib/auth.js";import{safeLocalStorage as S}from"efficient-web-builder/format/lib/safe-storage";import{webRuntimeSiteSlug as k}from"efficient-web-builder/format/lib/web-runtime";import{ASSISTANT_LABELS as F,ASSISTANT_PLACEHOLDER as v,STOREFRONT_TOOL_LABELS as H,assistantHeaders as N,assistantSiteKey as x,assistantStorageKey as B,assistantWording as D,createAssistantFetch as K,readStoredAssistantChat as P,writeStoredAssistantChat as U}from"../lib/assistant-chat.js";import{isOffStreamMessage as j,openChatSocket as G}from"../lib/chat-socket.js";import{DEFAULT_GREETING as M,DEFAULT_TITLE as W}from"./ChatWidget.js";function $({title:p,greeting:g,onUnavailable:i}){const[A,h]=m(!1),[T,c]=m(null),n=s(""),e=s(void 0),u=s(null),l=s(i);l.current=i,O(()=>{n.current=B(x(window.location.host));const t=P(S,n.current);e.current=t?.guestToken,c(t),u.current=d.restoreSession().catch(()=>{}),h(!0)},[]);const L=o(async()=>(await u.current,N(r.getAccess(),e.current)),[]),b=R(()=>K({fetchImpl:(t,a)=>fetch(t,a),siteSlug:k,access:r.getAccess,refresh:async()=>(await d.refresh()).access,signOut:r.clear,onUnavailable:()=>l.current()}),[]),E=o(t=>{e.current=t?.guestToken,U(S,n.current,t),c(t)},[]),y=o((t,a)=>G({conversationId:t.id,token:()=>r.getAccess()??e.current??"",onFrame:C=>{j(C)&&a()}}),[]),f=D({title:p,greeting:g},{title:W,greeting:M});return A?I(_,{variant:"bubble",defaultOpen:!0,apiBase:`${w}/api`,getHeaders:L,fetch:b,conversationId:T?.id??null,onConversation:E,subscribe:y,title:f.title,placeholder:v,toolLabels:H,labels:{...F,emptyState:f.emptyState}}):null}export{$ as default};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type HeaderStickyMode } from "./useHeaderBar.js";
|
|
3
|
+
export declare const resolveStickyMode: (v: unknown) => HeaderStickyMode;
|
|
4
|
+
export default function BoxHeaderBar({ sticky, topTextColor, heightPx, theme, children, }: {
|
|
5
|
+
sticky?: unknown;
|
|
6
|
+
topTextColor?: unknown;
|
|
7
|
+
heightPx?: unknown;
|
|
8
|
+
theme?: unknown;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as H}from"react/jsx-runtime";import{useEffect as k,useState as _}from"react";import{usePathname as y}from"next/navigation";import{useHeaderBar as R}from"./useHeaderBar.js";import{headerSolidBackground as A,isProductPage as I,resolveHeaderHeightPx as P}from"../lib/content/header-bar.js";import{headerThemeWrap as S}from"../lib/content/header-theme.js";import{HEADER_SET_HEIGHT_VAR as T}from"efficient-web-builder/render/lib/puck/header-clearance";import{HEADER_INK_OVERRIDE_ATTR as B,resolveHeaderInkMode as D}from"efficient-web-builder/render/lib/puck/header-ink";const M=["none","always","on_scroll_up"],j=e=>M.includes(e)?e:"always";function w({sticky:e,topTextColor:f,heightPx:h,theme:b,children:g}){const o=j(e),n=P(h),{headerRef:t,scrolled:a,navHidden:p}=R({stickyMode:o,heightPx:n}),s=D(f),x=s==="auto"?null:{[B]:s},r=S(b),d=I(y()),[v,E]=_(!1);k(()=>{const l=t.current?.ownerDocument??document,u=()=>E(l.documentElement.getAttribute("data-theme")==="light");u();const m=new MutationObserver(u);return m.observe(l.documentElement,{attributes:!0,attributeFilter:["data-theme"]}),()=>m.disconnect()},[t]);const c=a||d,i=A(v,d);return H("header",{ref:t,"data-scrolled":a||void 0,"data-box-header":"",...x,className:["sf-site-header",...r?[r.className]:[],"flex flex-col justify-center",o==="none"?"absolute":"fixed","inset-x-0 top-0 z-50",c?"border-b border-line backdrop-blur-md":"border-b border-transparent","transition-[background,border-color,transform] duration-300 ease-out"].join(" "),style:{...r?r.style:null,minHeight:`var(${T}, ${n}px)`,...p?{transform:"translateY(-100%)"}:null,...c?{background:i,color:"var(--fg)","--sf-header-ground":i}:{color:"var(--sf-header-overlay-fg)","--sf-header-ground":"var(--sf-header-overlay-ground)"}},children:g})}export{w as default,j as resolveStickyMode};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as t}from"react/jsx-runtime";import{useState as o}from"react";import{resolveMedia as l}from"efficient-web-builder/render/lib/media";import{sizedImage as d}from"efficient-web-builder/format/lib/sized-image";const c="(max-width: 800px) 40vw, 20vw";function m({brand:r,logo:n}){const[i,s]=o(!1),e=(r??"").trim();if(!e)return null;const a=i?void 0:l(n??void 0);return t("div",{className:"sf-card-plate absolute inset-x-0 bottom-0 flex h-1/4 items-center justify-center bg-[var(--card-bg)] px-4 transition-colors duration-200 group-hover:bg-[var(--card-bg-hover)]",children:a?t("img",{...d(a,{fallbackWidth:640,maxWidth:960}),sizes:c,alt:e,className:"max-h-[52%] max-w-[78%] object-contain",draggable:!1,onError:()=>s(!0)}):t("span",{className:"truncate font-display text-[length:var(--size-body,18px)] font-medium uppercase leading-none tracking-[-0.01em] text-fg",children:e})})}export{m as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Bundle, Currency } from "../lib/api/index.js";
|
|
2
|
+
export declare function bundleSaving(bundle: Bundle, currency: Currency): string | null;
|
|
3
|
+
export default function BundleCard({ bundle, currency, }: {
|
|
4
|
+
bundle: Bundle;
|
|
5
|
+
currency: Currency;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as r}from"react/jsx-runtime";import i from"next/link";import o from"next/image";import{formatPrice as c}from"../lib/commerce.js";function m(e,s){const t=e.savings[s];if(t===void 0)return null;const n=c(t,s);return e.savingIsFrom?`Save from ${n}`:`Save ${n}`}function l({bundle:e,currency:s}){const t=m(e,s);return r(i,{href:`/bundles/${e.slug}`,className:"sf-card group flex flex-col border border-line bg-bg transition-colors hover:border-accent",children:[r("div",{className:"sf-card-image relative aspect-[4/3] overflow-hidden bg-surface",children:[e.image?a(o,{src:e.image,alt:e.name,fill:!0,sizes:"(max-width: 640px) 100vw, 33vw",className:"object-cover transition-transform duration-500 group-hover:scale-[1.03]"}):r("div",{className:"flex h-full items-center justify-center font-mono text-[10px] uppercase tracking-[0.3em] text-fg-dim",children:[e.components.length," piece",e.components.length===1?"":"s"]}),t&&a("span",{className:"absolute left-0 top-4 bg-accent px-3 py-2 font-mono text-[10px] uppercase tracking-[0.24em] text-bg",children:t})]}),r("div",{className:"flex flex-1 flex-col gap-2 px-5 py-4",children:[a("span",{className:"font-display text-[18px] font-medium tracking-[-0.015em] text-fg",children:e.name}),e.subtitle&&a("span",{className:"text-[13px] leading-snug text-fg-dim",children:e.subtitle}),!e.inStock&&a("span",{className:"mt-1 font-mono text-[9px] uppercase tracking-[0.24em] text-fg-dim",children:"Currently unavailable"})]})]})}export{m as bundleSaving,l as default};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { type AppliedBundle, type Bundle, type CartQuote, type CouponEffects, type Currency, type DeliveryOption, type ProductKind, type WheelSummary } from "../lib/api/index.js";
|
|
2
|
+
import { type PurchaseChoice, type SetComponent } from "../lib/commerce.js";
|
|
3
|
+
import { type ShippingStatus } from "../lib/cart/shipping-status.js";
|
|
4
|
+
type CartQuoteTax = CartQuote["tax"];
|
|
5
|
+
export interface CartLine {
|
|
6
|
+
id: string;
|
|
7
|
+
slug: string;
|
|
8
|
+
name: {
|
|
9
|
+
lead: string;
|
|
10
|
+
accent: string;
|
|
11
|
+
};
|
|
12
|
+
process: string;
|
|
13
|
+
positionNo: string;
|
|
14
|
+
config: {
|
|
15
|
+
label: string;
|
|
16
|
+
gold?: boolean;
|
|
17
|
+
}[];
|
|
18
|
+
finishName: string;
|
|
19
|
+
size: string;
|
|
20
|
+
components: SetComponent[];
|
|
21
|
+
qty: number;
|
|
22
|
+
href?: string;
|
|
23
|
+
kind?: ProductKind;
|
|
24
|
+
sku?: string;
|
|
25
|
+
pack?: PurchaseChoice;
|
|
26
|
+
verifiedFor?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function isOrderable(line: {
|
|
29
|
+
components?: SetComponent[];
|
|
30
|
+
}): boolean;
|
|
31
|
+
export interface AppliedCoupon {
|
|
32
|
+
code: string;
|
|
33
|
+
valid: boolean;
|
|
34
|
+
deferred?: boolean;
|
|
35
|
+
refused?: boolean;
|
|
36
|
+
message?: string;
|
|
37
|
+
effects?: CouponEffects;
|
|
38
|
+
}
|
|
39
|
+
interface CartCtx {
|
|
40
|
+
isOpen: boolean;
|
|
41
|
+
preview: boolean;
|
|
42
|
+
open: () => void;
|
|
43
|
+
close: () => void;
|
|
44
|
+
toggle: () => void;
|
|
45
|
+
items: CartLine[];
|
|
46
|
+
catalog: WheelSummary[];
|
|
47
|
+
bundles: Bundle[];
|
|
48
|
+
warmCatalog: (kind?: ProductKind) => void;
|
|
49
|
+
add: (line: CartLine) => void;
|
|
50
|
+
remove: (id: string) => void;
|
|
51
|
+
setQty: (id: string, qty: number) => void;
|
|
52
|
+
replaceItems: (lines: CartLine[]) => void;
|
|
53
|
+
identify: (email: string, firstName?: string) => void;
|
|
54
|
+
clearCapturedCart: () => void;
|
|
55
|
+
coupon: AppliedCoupon | null;
|
|
56
|
+
applyCoupon: (code: string, customerEmail?: string) => Promise<void>;
|
|
57
|
+
removeCoupon: () => void;
|
|
58
|
+
refuseCoupon: (message: string) => void;
|
|
59
|
+
couponBusy: boolean;
|
|
60
|
+
deliveryOptions: DeliveryOption[];
|
|
61
|
+
shippingMethodId: string | null;
|
|
62
|
+
setShippingMethodId: (id: string) => void;
|
|
63
|
+
totals: {
|
|
64
|
+
sets: number;
|
|
65
|
+
units: number;
|
|
66
|
+
subtotal: number;
|
|
67
|
+
hasUnpricedLine: boolean;
|
|
68
|
+
discount: number;
|
|
69
|
+
bundleDiscount: number;
|
|
70
|
+
appliedBundles: AppliedBundle[];
|
|
71
|
+
shipping: number;
|
|
72
|
+
freeShipping: boolean;
|
|
73
|
+
shippingStatus: ShippingStatus;
|
|
74
|
+
freeUnitsByPartNumber: Record<string, number>;
|
|
75
|
+
tax: CartQuoteTax | null;
|
|
76
|
+
grand: number;
|
|
77
|
+
repricing: boolean;
|
|
78
|
+
currency: Currency;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export declare function lineTotal(line: {
|
|
82
|
+
components: SetComponent[];
|
|
83
|
+
qty: number;
|
|
84
|
+
}, currency: string): number | null;
|
|
85
|
+
interface ProviderProps {
|
|
86
|
+
children: React.ReactNode;
|
|
87
|
+
preview?: boolean;
|
|
88
|
+
}
|
|
89
|
+
export declare function CartProvider({ children, preview }: ProviderProps): import("react").JSX.Element;
|
|
90
|
+
export declare function useCart(): CartCtx;
|
|
91
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as De}from"react/jsx-runtime";import{createContext as Le,useCallback as d,useContext as We,useEffect as g,useMemo as fe,useRef as T,useState as f}from"react";import{products as E}from"../lib/api/index.js";import{couponDeferredToCheckout as ke}from"../lib/cart/coupon-preview.js";import{snapshotCartLines as Qe}from"../lib/cart/snapshot-lines.js";import{MAX_QTY_PER_LINE as me,orderLinesForSets as ve,setPrice as He}from"../lib/commerce.js";import{UNPRICED_LABEL as Ve}from"../lib/wheels/price-display.js";import{isValidEmail as je}from"../lib/email-shape.js";import{trackAddToCart as Fe}from"../lib/google-tag.js";import{shippingStatus as ze}from"../lib/cart/shipping-status.js";import{useCurrency as Je}from"./CurrencyContext.js";const Xe=400,Ye=400,Ge=1500;function pe(i){return(i.components?.length??0)>0}function he(i,r){return{code:i,valid:r.valid,deferred:ke(r,r.askedAsShopper),message:r.message||void 0,effects:r.effects??void 0}}function Ce(i,r){return He(i.components,r)}function L(i,r){const s=Ce(i,r);return s===null?null:s*i.qty}function ye(i){return i!=="tyre"}const ge=Le(null);function ct({children:i,preview:r=!1}){const{currency:s,country:O,formatMoney:Ee}=Je(),[W,A]=f(r),[c,M]=f([]),[k,Ne]=f([]),[Q,Te]=f([]),[v,be]=f(!1),[H,Be]=f(!1),[Me,Ie]=f(!1),[Se,qe]=f(!1),[m,V]=f(null),[j,F]=f(void 0),P=T(O),xe=T("");P.current=P.current||O;const[u,y]=f(null),[z,I]=f(!1),[p,J]=f(null),S=T(void 0),q=d(()=>A(!0),[]),X=d(()=>A(!1),[]),Y=d(()=>A(e=>!e),[]);g(()=>{r||typeof window>"u"||new URLSearchParams(window.location.search).get("cart")==="open"&&q()},[q,r]);const G=d(e=>{qe(!0),ye(e)&&Ie(!0)},[]),K=Me||c.some(e=>ye(e.kind)),Z=Se||c.length>0;g(()=>{if(r||!K||v)return;let e=!0;return E.listWheels().then(t=>{e&&(Ne(t),be(!0))}),()=>{e=!1}},[r,K,v]),g(()=>{if(r||!Z||H)return;let e=!0;return E.listBundles().then(t=>{e&&(Te(t),Be(!0))}),()=>{e=!1}},[r,Z,H]);const C=m?.deliveryOptions??[];g(()=>{C.length!==0&&J(e=>e&&C.some(t=>t.id===e)?e:C[0]?.id??null)},[m]);const x=d(()=>c.filter(pe).flatMap(e=>ve(e.components,e.qty)),[c]),$=d(async(e,t)=>{const o=e.trim().toUpperCase();if(!o)return;const n=x();if(n.length===0){y({code:o,valid:!1,message:"Add a wheel to the cart first."});return}I(!0),S.current=t;try{const a=await E.validateCoupon({code:o,items:n,currency:s,shippingMethodId:p??void 0,customerEmail:t});y(he(o,a))}catch{y({code:o,valid:!1,message:"Could not check that code. Please try again."})}finally{I(!1)}},[x,s,p]),ee=d(()=>{y(null),S.current=void 0},[]),te=d(e=>{if(!u)return;const{code:t}=u;y(o=>o&&o.code===t?{code:t,valid:!1,refused:!0,message:e}:o)},[u]);g(()=>{if(!u||u.refused)return;const e=u.code,t=n=>n!==null&&n.code===e&&!n.refused,o=setTimeout(async()=>{const n=x();if(n.length===0){y(a=>t(a)?{code:e,valid:!1,message:"Add a wheel to the cart first."}:a);return}I(!0);try{const a=await E.validateCoupon({code:e,items:n,currency:s,shippingMethodId:p??void 0,customerEmail:S.current});y(B=>t(B)?he(e,a):B)}catch{}finally{I(!1)}},Xe);return()=>clearTimeout(o)},[c,s,p]);const R=u&&!u.refused?u.code:void 0;g(()=>{if(r)return;let e=!0;const t=setTimeout(async()=>{const o=x();if(o.length===0){V(null),F(void 0);return}try{const n=await E.quoteCart({items:o,currency:s,shippingMethodId:p??void 0,couponCode:R,customerEmail:S.current||void 0,country:P.current||void 0,subdivision:xe.current||void 0});if(!e)return;V(n)}catch{if(!e)return}F(R)},Ye);return()=>{e=!1,clearTimeout(t)}},[c,s,p,R,O]);const ne=d(e=>{M(t=>{const o=t.findIndex(n=>n.id===e.id);return o===-1?[...t,e]:t.map((n,a)=>a===o?{...n,qty:Math.min(me,n.qty+e.qty)}:n)}),Fe(e,s)},[s]),oe=d(e=>{M(t=>t.filter(o=>o.id!==e))},[]),re=d((e,t)=>{const o=Math.max(1,Math.min(me,t));M(n=>n.map(a=>a.id===e?{...a,qty:o}:a))},[]),se=d(e=>{M(e)},[]),[b,_e]=f(null),ue=T(null);ue.current=b;const h=T(null),U=T(""),ie=d((e,t)=>{const o=e.trim().toLowerCase();je(o)&&_e(n=>n&&n.email===o&&n.firstName===(t??"")?n:{email:o,firstName:t??""})},[]);g(()=>{if(r||!b)return;const e=Qe(c.filter(pe),n=>L(n,s)===null?Ve:Ee(L(n,s),s)),t={email:b.email,firstName:b.firstName,currency:s,items:e},o=JSON.stringify(t);if(o!==U.current)return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{h.current=null,U.current=o,E.captureCart(t).catch(n=>{process.env.NODE_ENV!=="production"&&console.warn("abandoned-cart capture failed",n)})},Ge),()=>{h.current&&(clearTimeout(h.current),h.current=null)}},[c,b,s,r]);const ce=d(()=>{h.current&&(clearTimeout(h.current),h.current=null);const e=ue.current;e&&(U.current="",E.captureCart({email:e.email,firstName:e.firstName,currency:s,items:[]}).catch(t=>{process.env.NODE_ENV!=="production"&&console.warn("abandoned-cart clear failed",t)}))},[s]),ae=fe(()=>{const e=c.reduce((l,N)=>{const _=L(N,s);return _===null?l:l+_},0),t=c.some(l=>Ce(l,s)===null),o=c.reduce((l,N)=>l+N.qty,0),n=u?.valid?u.effects:void 0,a=n?Math.min(e,Number(n.discountAmount)):0,B=m?.bundleDiscount??0,Ae=m?.appliedBundles??[],w=!!n?.freeShipping,le=C.find(l=>l.id===p),de=w?0:m?.shipping??le?.amount??0,Pe=ze({quoted:m!==null,optionCount:C.length,chosenAmount:le?.amount,couponWaivesFreight:w}),D={};for(const l of n?.freeUnits??[])D[l.partNumber]=(D[l.partNumber]??0)+l.quantity;const Re=m?.tax??null,Ue=m?m.grandTotal:e-a-B+de;return{sets:o,units:c.reduce((l,N)=>l+(N.components??[]).reduce((_,we)=>_+we.wheels*N.qty,0),0),subtotal:e,hasUnpricedLine:t,discount:a,bundleDiscount:B,appliedBundles:Ae,shipping:de,freeShipping:w,shippingStatus:Pe,freeUnitsByPartNumber:D,tax:Re,grand:Ue,repricing:!!u?.refused&&m!==null&&j===u?.code,currency:s}},[c,s,u,C,p,m,j]),Oe=fe(()=>({isOpen:W,preview:r,open:q,close:X,toggle:Y,items:c,catalog:k,bundles:Q,warmCatalog:G,add:ne,remove:oe,setQty:re,replaceItems:se,identify:ie,clearCapturedCart:ce,coupon:u,applyCoupon:$,removeCoupon:ee,refuseCoupon:te,couponBusy:z,deliveryOptions:C,shippingMethodId:p,setShippingMethodId:J,totals:ae}),[W,r,q,X,Y,c,k,Q,G,ne,oe,re,se,ie,ce,u,$,ee,te,z,C,p,ae]);return De(ge.Provider,{value:Oe,children:i})}function at(){const i=We(ge);if(!i)throw new Error("useCart() must be called inside <CartProvider>. Mount the provider in app/layout.tsx.");return i}export{ct as CartProvider,pe as isOrderable,L as lineTotal,at as useCart};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type CartLine } from "./CartContext.js";
|
|
2
|
+
import type { TyreSummary } from "../lib/api/index.js";
|
|
3
|
+
import { type CartDrawerContent } from "efficient-web-builder/format/lib/content/cart-drawer";
|
|
4
|
+
export default function CartDrawer({ content, }: {
|
|
5
|
+
content?: CartDrawerContent;
|
|
6
|
+
}): import("react").JSX.Element | null;
|
|
7
|
+
export declare function CartLineRow({ line, tyre, onRemove, onQtyChange, }: {
|
|
8
|
+
line: CartLine;
|
|
9
|
+
tyre?: TyreSummary | null;
|
|
10
|
+
onRemove: () => void;
|
|
11
|
+
onQtyChange: (q: number) => void;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as r,Fragment as g}from"react/jsx-runtime";import{FREE_PRICE as w,UNPRICED_LABEL as $}from"../lib/wheels/price-display.js";import f from"next/link";import{useEffect as R,useRef as E}from"react";import L from"./CartLineThumbnail.js";import D from"./CouponField.js";import A from"./QuantityStepper.js";import P from"efficient-web-builder/render/components/RMark";import{lineTotal as C,useCart as S}from"./CartContext.js";import{isTyreLine as U}from"../lib/tyres/tyre-purchase.js";import{useTyreCatalog as I}from"./useTyreCatalog.js";import{useModalDismiss as M}from"./useModalDismiss.js";import{COUPON_DEFERRED_TOTAL as O}from"../lib/cart/coupon-preview.js";import{shippingWords as V,TAX_PENDING as q}from"../lib/cart/shipping-status.js";import{useCurrency as T}from"./CurrencyContext.js";import{CART_DRAWER_DEFAULTS as z,cartSubtitle as Q}from"efficient-web-builder/format/lib/content/cart-drawer";function W({content:t=z}){const{isOpen:s,preview:m,close:o,items:i,remove:h,setQty:u,totals:a,coupon:l,bundles:p}=S(),b=new Set(i.flatMap(n=>(n.components??[]).map(x=>x.partNumber))),j=new Set(a.appliedBundles.map(n=>n.slug)),N=p.filter(n=>!j.has(n.slug)).filter(n=>n.components.some(x=>b.has(x.partNumber))).slice(0,2),{formatMoney:d,activeCountry:B}=T(),y=B?.name??t.shipsToFallback,F=1+(t.leadTimeValue?1:0)+(y?1:0),k=E(null),_=I(i.some(U));return M({active:s,onDismiss:o,lockScroll:!m}),R(()=>{s&&k.current?.focus({preventScroll:!0})},[s]),s?r(g,{children:[e("div",{onClick:o,className:"fixed inset-0 z-[60] backdrop-blur-[4px]",style:{background:"rgba(0,0,0,0.68)",animation:"storefront-cart-fade 350ms ease both"},"aria-hidden":"true"}),r("aside",{role:"dialog","aria-label":"Your cart","aria-modal":"true",className:"fixed inset-y-0 right-0 z-[61] flex w-[520px] max-w-[100vw] flex-col border-l border-line bg-bg max-[640px]:w-screen max-[640px]:border-l-0",style:{animation:"storefront-cart-slide 450ms cubic-bezier(.2,.7,.2,1) both",boxShadow:"-30px 0 80px rgba(0,0,0,.5)"},onClick:n=>n.stopPropagation(),children:[e("style",{children:`
|
|
2
|
+
@keyframes storefront-cart-fade { from { opacity: 0 } to { opacity: 1 } }
|
|
3
|
+
@keyframes storefront-cart-slide { from { transform: translateX(40px); opacity: 0 } to { transform: translateX(0); opacity: 1 } }
|
|
4
|
+
`}),r("header",{className:"flex flex-shrink-0 flex-col gap-4 border-b border-line px-8 pb-6 pt-8 max-[640px]:px-6 max-[640px]:pt-6 max-[640px]:pb-5",children:[r("div",{className:"flex items-center justify-between",children:[r("span",{className:"flex items-center gap-3 font-mono text-[10px] uppercase tracking-[0.3em] text-accent",children:[t.kickerBadge?e("span",{className:"border px-2 py-1 text-[10px]",style:{background:"color-mix(in oklab, var(--accent) 12%, transparent)",borderColor:"color-mix(in oklab, var(--accent) 50%, transparent)"},children:t.kickerBadge}):null,(t.kickerBadge?"· ":"")+t.kickerText]}),e("button",{ref:k,type:"button",onClick:o,"aria-label":"Close cart",className:"flex h-8 w-8 items-center justify-center border border-line text-[14px] text-fg-dim transition-colors hover:border-accent hover:text-accent",children:"✕"})]}),r("h1",{className:"font-display text-[38px] font-medium uppercase leading-[0.95] tracking-[-0.03em] max-[640px]:text-[30px]",children:[t.titleLead+" ",e("em",{className:"font-serif font-normal italic text-accent tracking-[-0.02em] normal-case",children:t.titleAccent})]}),e("p",{className:"font-serif text-[13px] italic leading-[1.5] text-fg-dim",children:Q(t,i.length)})]}),r("div",{className:`grid flex-shrink-0 ${X[F-1]} gap-px border-b border-line bg-line`,children:[e(v,{label:"Items",value:r(g,{children:[e("em",{className:"font-serif font-normal italic text-accent",children:a.sets})," set",a.sets===1?"":"s"," · ",a.units," item",a.units===1?"":"s"]})}),t.leadTimeValue?e(v,{label:"Lead time",value:t.leadTimeValue}):null,y?e(v,{label:"Ships to",value:y}):null]}),r("div",{className:"flex-1 overflow-y-auto [scrollbar-color:var(--site-line)_transparent] [scrollbar-width:thin]",children:[i.length===0?e(J,{content:t}):i.map(n=>e(K,{line:n,tyre:_.get(n.slug),onRemove:()=>h(n.id),onQtyChange:x=>u(n.id,x)},n.id)),N.length>0&&r("section",{className:"border-b border-line px-8 py-6 max-[640px]:px-6",style:{background:"color-mix(in oklab, var(--site-surface) 60%, transparent)"},children:[r("div",{className:"mb-4 flex items-center justify-between font-mono text-[10px] uppercase tracking-[0.3em] text-accent",children:[e("span",{children:"You may also need"}),e("span",{className:"font-display text-[11px] normal-case tracking-[0.08em] text-fg-dim",children:"Buy together, save"})]}),e("div",{className:"grid grid-cols-2 gap-2 max-[640px]:grid-cols-1",children:N.map(n=>e(Y,{href:`/bundles/${n.slug}`,title:n.name,sub:G(n,a.currency,d)},n.slug))})]}),e("section",{className:"border-b border-line px-8 py-6 max-[640px]:px-6",children:e(D,{})}),t.promises.length>0&&e("div",{className:"flex flex-wrap justify-center gap-5 border-b border-line px-8 pt-6 pb-8 font-mono text-[9px] uppercase tracking-[0.24em] text-fg-dim max-[640px]:px-6",children:t.promises.map(n=>e(H,{children:n},n))})]}),r("div",{className:"flex flex-shrink-0 flex-col gap-2 border-t border-line px-8 pt-5 max-[640px]:px-6",children:[e(c,{label:`Subtotal · ${a.sets} set${a.sets===1?"":"s"}`,value:d(a.subtotal,a.currency)}),a.appliedBundles.map(n=>e(c,{label:`Bundle · ${n.name}${n.multiples>1?` ×${n.multiples}`:""}`,value:r("span",{style:{color:"var(--green)"},children:["− ",d(n.discount,a.currency)]})},n.slug)),a.discount>0&&l?.valid&&e(c,{label:`Coupon · ${l.code}`,value:r("span",{style:{color:"var(--green)"},children:["− ",d(a.discount,a.currency)]})}),l?.deferred&&e(c,{label:`Coupon · ${l.code}`,value:O}),l?.valid&&l.effects?.gift&&e(c,{label:`Free gift · ${l.effects.gift.partNumber}${l.effects.gift.quantity>1?` ×${l.effects.gift.quantity}`:""}`,value:e("span",{style:{color:"var(--green)"},children:w})}),e(c,{label:"Shipping",value:a.shippingStatus==="free"?e("span",{style:{color:"var(--green)"},children:w}):V(a.shippingStatus)??d(a.shipping,a.currency)}),a.tax&&(a.tax.charged?e(c,{label:a.tax.inclusive?`${a.tax.name} included · ${a.tax.rate}%`:a.tax.name,value:d(a.tax.amount,a.currency)}):a.tax.name?e(c,{label:a.tax.name,value:q}):null),r("div",{className:"mt-2 flex items-center justify-between border-t border-line pt-4 text-fg",children:[r("span",{className:"font-display text-[22px] font-medium tracking-[-0.02em] normal-case",children:["Total ",e("em",{className:"font-serif font-normal italic text-accent",children:"due"})]}),e("span",{className:"text-right font-display text-[30px] font-medium tracking-[-0.025em] text-fg",children:a.repricing?"…":d(a.grand,a.currency)})]})]}),r("div",{className:"flex flex-shrink-0 flex-col gap-3 px-8 pb-6 pt-4 max-[640px]:px-6",children:[r(f,{href:"/checkout",onClick:o,"aria-disabled":i.length===0,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[12px] uppercase tracking-[0.3em] transition-colors",i.length===0?"pointer-events-none cursor-not-allowed border-line bg-surface text-fg-dim":"border-btn bg-btn text-btn-ink hover:border-fg hover:bg-fg"].join(" "),children:["Begin checkout",e("span",{className:"transition-transform group-hover:translate-x-1",children:"→"})]}),e("div",{className:"flex items-center justify-between px-1 py-2 font-mono text-[10px] uppercase tracking-[0.24em] text-fg-dim",children:e(f,{href:"/wheels",onClick:o,className:"text-fg transition-colors hover:text-accent",children:"← Keep browsing"})})]})]})]}):null}const X=["grid-cols-1","grid-cols-2","grid-cols-3"];function v({label:t,value:s}){return r("div",{className:"flex flex-col gap-1 bg-bg px-4 py-4",children:[e("span",{className:"font-mono text-[9px] uppercase tracking-[0.26em] text-fg-dim",children:t}),e("span",{className:"font-display text-[14px] font-medium tracking-[-0.005em] text-fg",children:s})]})}function K({line:t,tyre:s,onRemove:m,onQtyChange:o}){const{catalog:i,totals:h}=S(),u=(t.components??[]).reduce((p,b)=>p+(h.freeUnitsByPartNumber[b.partNumber]??0),0),{currency:a,formatMoney:l}=T();return r(g,{children:[r("article",{className:"grid grid-cols-[96px_1fr] gap-5 border-b border-line px-8 py-6 transition-colors hover:bg-[color-mix(in_oklab,var(--site-surface)_60%,transparent)] max-[640px]:grid-cols-[78px_1fr] max-[640px]:px-6 max-[640px]:py-5",children:[e(L,{line:t,catalog:i,tyre:s}),r("div",{className:"flex min-w-0 flex-col gap-2",children:[r("div",{className:"flex items-start justify-between gap-3",children:[r("span",{className:"font-mono text-[9px] uppercase tracking-[0.26em] text-accent",children:["N° ",t.positionNo," · ",t.process==="FusionForge®"?r(g,{children:["FusionForge",e(P,{})]}):t.process]}),e("span",{className:"whitespace-nowrap font-display text-[16px] font-medium tracking-[-0.015em] text-fg",children:C(t,a)===null?$:l(C(t,a),a)})]}),r("h3",{className:"mt-0.5 font-display text-[22px] font-medium uppercase leading-none tracking-[-0.02em]",children:[t.name.lead,e("em",{className:"font-serif font-normal italic text-accent tracking-[-0.01em] normal-case",children:t.name.accent})]}),t.config.length>0&&r("div",{className:"mt-1 flex flex-wrap gap-2",children:[t.config.map(p=>e("span",{className:["border px-2 py-1 font-mono text-[9px] uppercase tracking-[0.18em]",p.gold?"border-[color-mix(in_oklab,var(--accent)_45%,var(--site-line))] text-accent":"border-line text-fg-dim"].join(" "),children:p.label},p.label)),u>0&&r("span",{className:"border border-accent bg-accent px-2 py-1 font-mono text-[9px] uppercase tracking-[0.18em] text-bg",children:[u,"× free"]})]}),r("div",{className:"mt-3 flex items-center justify-between gap-3",children:[e(A,{value:t.qty,onChange:o,size:"small"}),r("div",{className:"flex gap-4 font-mono text-[10px] uppercase tracking-[0.22em]",children:[e(f,{href:t.href??`/wheels/${t.slug}`,className:"text-fg-dim transition-colors hover:text-accent",children:t.href?"View product":"Edit finish"}),e("button",{type:"button",onClick:m,className:"text-fg-dim transition-colors hover:text-alert",children:"Remove"})]})]})]})]}),t.verifiedFor&&r("div",{className:"mx-8 -mt-px flex items-start gap-3 border-t-0 px-4 py-4 font-display text-[13px] leading-[1.45] text-fg max-[640px]:mx-6",style:{background:"color-mix(in oklab, var(--accent) 8%, transparent)",border:"1px solid color-mix(in oklab, var(--accent) 35%, var(--site-line))",borderTop:"0"},children:[e("span",{className:"flex-shrink-0 pt-px font-mono text-[10px] uppercase tracking-[0.24em] text-accent",children:"Fits"}),r("span",{children:["Verified for your ",e("strong",{className:"font-medium text-accent",children:t.verifiedFor}),". Final torque values shipped with the wheels."]})]})]})}function Y({title:t,sub:s,href:m}){return r(f,{href:m,className:"flex items-center justify-between border border-line bg-bg px-4 py-3 text-left transition-colors hover:border-accent",children:[r("span",{className:"flex min-w-0 flex-col gap-1",children:[e("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap font-display text-[13px] font-medium tracking-[-0.005em] text-fg",children:t}),e("span",{className:"font-mono text-[9px] uppercase tracking-[0.22em] text-fg-dim",children:s})]}),e("span",{className:"ml-2 flex h-6 w-6 flex-shrink-0 items-center justify-center font-mono text-[13px] text-accent",style:{borderColor:"color-mix(in oklab, var(--accent) 45%, var(--site-line))",borderWidth:1,borderStyle:"solid"},children:"+"})]})}function G(t,s,m){const o=t.savings[s];if(o===void 0)return"Buy together";const i=m(o,s);return t.savingIsFrom?`Save from ${i}`:`Save ${i}`}function H({children:t}){return e("span",{className:"inline-flex items-center gap-2 before:text-[6px] before:text-accent before:content-['●']",children:t})}function c({label:t,value:s}){return r("div",{className:"flex items-center justify-between font-mono text-[11px] uppercase tracking-[0.18em] text-fg-dim",children:[e("span",{children:t}),e("strong",{className:"font-display text-[14px] font-normal tracking-[-0.005em] normal-case text-fg",children:s})]})}function J({content:t}){return r("div",{className:"flex flex-col items-center justify-center gap-3 px-8 py-20 text-center",children:[e("span",{className:"font-mono text-[10px] uppercase tracking-[0.3em] text-accent",children:t.emptyKicker}),e("p",{className:"font-serif text-[16px] italic leading-[1.5] text-fg-dim",children:t.emptyBody}),r(f,{href:"/wheels",className:"mt-3 inline-flex items-center gap-3 border border-line px-5 py-3 font-mono text-[11px] uppercase tracking-[0.3em] text-fg transition-colors hover:border-accent hover:text-accent",children:["Browse the catalog ",e("span",{className:"text-accent",children:"→"})]})]})}export{K as CartLineRow,W as default};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CartLine } from "./CartContext.js";
|
|
2
|
+
import type { TyreSummary, WheelSummary } from "../lib/api/index.js";
|
|
3
|
+
export interface CartLineThumbnailProps {
|
|
4
|
+
line: CartLine;
|
|
5
|
+
catalog: WheelSummary[];
|
|
6
|
+
tyre?: TyreSummary | null;
|
|
7
|
+
}
|
|
8
|
+
export default function CartLineThumbnail({ line, catalog, tyre }: CartLineThumbnailProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as o}from"react/jsx-runtime";import f from"next/image";import h from"./TyreImage.js";import p from"./WheelSvg.js";import{isTyreLine as d}from"../lib/tyres/tyre-purchase.js";import{DEFAULT_FINISH_COLOR as u}from"../lib/wheels/finish-defaults.js";function g(i){const r=i?.tyreTypes??[];return r.length===1?r[0]:null}function b({line:i,catalog:r,tyre:t}){const s=r.find(e=>e.slug===i.slug),l=i.config.find(e=>e.gold)?.label,n=s?.finishes.find(e=>e.name===l&&e.src)??s?.finishes.find(e=>e.src),c=s?.spokes??5,a=s?.mesh??!1,m=(s?.finishes.find(e=>e.name===l)??s?.finishes[0])?.color??u;return o("div",{className:"relative flex aspect-square items-center justify-center overflow-hidden border border-line bg-surface",children:d(i)?o(h,{image:t?.coverImage,size:i.size,type:g(t),sizes:"96px",className:"h-full w-full"}):n?.src?o(f,{src:n.src,alt:`${s?.name??i.slug} — ${n.name}`,width:120,height:120,sizes:"96px",className:"relative z-[2] block w-[88%] object-contain",style:{filter:"drop-shadow(0 6px 12px rgba(0,0,0,0.25))"}}):s||r.length===0?o("div",{className:"relative z-[2] block w-[72%]",style:{color:m,filter:"drop-shadow(0 6px 12px rgba(0,0,0,0.25))"},children:o(p,{spokes:c,mesh:a,className:"block w-full"})}):null})}export{b as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type FilterBarVisibility } from "./catalog/CatalogFilterBar.js";
|
|
2
|
+
import { type FieldUsageAnswer } from "../lib/content/field-usage.js";
|
|
3
|
+
import type { FilterBarLayout } from "../lib/sections/catalog-filter-layout.js";
|
|
4
|
+
export default function CatalogFilterBarSection({ show, layout, processOptions, fieldUsage, editing, resultsHref, resultsLabel, }: {
|
|
5
|
+
show?: FilterBarVisibility;
|
|
6
|
+
processOptions?: readonly import("../lib/api/index.js").Process[];
|
|
7
|
+
fieldUsage?: readonly FieldUsageAnswer[];
|
|
8
|
+
layout?: FilterBarLayout;
|
|
9
|
+
editing?: boolean;
|
|
10
|
+
resultsHref?: string;
|
|
11
|
+
resultsLabel?: string;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as R}from"react/jsx-runtime";import{useEffect as p,useMemo as j}from"react";import E from"./catalog/CatalogFilterBar.js";import{useCatalogFilter as $}from"./catalog/CatalogFilterContext.js";import{useVehicleFit as B}from"./fitment/useVehicleFit.js";import{answersForKind as N}from"../lib/content/field-usage.js";import{appendVehicleParams as _,VEHICLE_PARAM as q}from"../lib/wheels/plp-vehicle-params.js";import{listingLinkFromCatalogFilters as I,unmappableCatalogFacets as K}from"../lib/wheels/catalog-filters-to-listing.js";function D({show:c,layout:u,processOptions:f,fieldUsage:s,editing:t=!1,resultsHref:l,resultsLabel:m}){const{filters:o,setProcess:d,setSize:h,setLugs:w,setFinish:g,setPriceMin:P,setPriceMax:F,setSort:v,clearAll:S,total:O,scrollProcess:y,publishVehicle:n,lugOptions:L,sizeOptions:A,finishOptions:C,optionsReported:M}=$(),k=j(()=>s?N(s,"alloy-wheel"):void 0,[s]),e=B({editing:t,autoApply:!0});p(()=>{n({fit:e.fit,name:e.appliedName,resolving:e.resolving,unresolved:e.unresolved})},[n,e.fit,e.appliedName,e.resolving,e.unresolved]);const r=e.applied?.vehicle??null;p(()=>{if(t||!e.restored||typeof window>"u")return;const i=new URLSearchParams(window.location.search);for(const z of Object.values(q))i.delete(z);_(i,r);const a=i.toString();window.history.replaceState(null,"",`${window.location.pathname}${a?`?${a}`:""}`)},[t,e.restored,r]);const x=K(o),V=(m??"").trim()||"See all results",b=l&&!t&&x.length===0?{href:I(l,o,r),label:V}:void 0;return R(E,{resultsLink:b,filters:o,setProcess:d,setSize:h,setLugs:w,setFinish:g,setPriceMin:P,setPriceMax:F,setSort:v,clearAll:S,total:O,lugOptions:L,sizeOptions:A,finishOptions:C,scrollProcess:y,show:c,layout:u,processOptions:f,optionsReported:M,fieldUsage:k,picker:e})}export{D as default};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ChatMessage } from "../lib/api/chat.js";
|
|
2
|
+
interface ChatContextValue {
|
|
3
|
+
isOpen: boolean;
|
|
4
|
+
open: () => void;
|
|
5
|
+
close: () => void;
|
|
6
|
+
toggle: () => void;
|
|
7
|
+
messages: ChatMessage[];
|
|
8
|
+
sending: boolean;
|
|
9
|
+
error: string | null;
|
|
10
|
+
unread: number;
|
|
11
|
+
hasConversation: boolean;
|
|
12
|
+
isSignedIn: boolean;
|
|
13
|
+
send: (body: string, identity?: {
|
|
14
|
+
name: string;
|
|
15
|
+
email: string;
|
|
16
|
+
}) => Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare function ChatProvider({ children, preview, }: {
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
preview?: boolean;
|
|
21
|
+
}): import("react").JSX.Element;
|
|
22
|
+
export declare function useChat(): ChatContextValue;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as H}from"react/jsx-runtime";import{createContext as L,useCallback as i,useContext as V,useEffect as S,useMemo as W,useRef as $,useState as c}from"react";import{auth as q}from"../lib/auth.js";import{api as z}from"../lib/api/index.js";import{chatSocketUrl as B}from"../lib/chat-socket.js";import{safeLocalStorage as p}from"efficient-web-builder/format/lib/safe-storage";import{getChatThread as D,postChatMessage as F,startChat as G}from"../lib/api/chat.js";const Q="sf:aid",K="sf:chat",R=L(null);function X(){const u=p.getItem(K);if(!u)return null;try{return JSON.parse(u)}catch{return null}}function ae({children:u,preview:s=!1}){const[f,h]=c(!1),[e,_]=c(null),[k,m]=c([]),[x,I]=c(!1),[O,b]=c(null),[E,g]=c(0),[y,T]=c(!1),[P,Y]=c(!1),v=$(f);v.current=f,S(()=>{s||(_(X()),z.restoreSession().then(()=>T(!0)).catch(()=>T(!1)))},[s]);const d=i(async r=>{try{const o=await D(r.id,r.token);m(o.messages)}catch{}},[]);S(()=>{s||e&&d(e)},[s,e,d,y]),S(()=>{if(s||!e)return;const r=q.getAccess()??e.token;let o=!1,t=null,n,a=3e3;const l=()=>{o||(t=new WebSocket(B(e.id,r)),t.onmessage=A=>{try{const C=JSON.parse(A.data);C.type==="chat_event"&&C.event==="message"&&(d(e),!v.current&&C.payload?.sender_role==="employee"&&g(U=>U+1))}catch{}},t.onclose=()=>{o||(n=setTimeout(l,a),a=Math.min(a*2,3e4))},t.onerror=()=>t?.close())};return l(),()=>{o=!0,n&&clearTimeout(n),t?.close()}},[s,e,d]);const M=i(()=>{h(!0),g(0)},[]),N=i(()=>h(!1),[]),w=i(()=>h(r=>(r||g(0),!r)),[]),J=i(async(r,o)=>{const t=r.trim();if(t){if(s){m(n=>[...n,{id:`preview-${n.length}`,sender_role:"customer",sender_name:o?.name||"You",body:t,image_url:null,created_at:""}]),Y(!0);return}I(!0),b(null);try{if(e){const n=await F(e.id,e.token,t);m(a=>[...a,n])}else{const n=p.getItem(Q)||"",a=await G({body:t,guestName:o?.name,guestEmail:o?.email,guestKey:n}),l={id:a.id,token:a.guest_token};p.setItem(K,JSON.stringify(l)),_(l),m(a.messages)}}catch{b("Could not send your message. Please try again shortly.")}finally{I(!1)}}},[e,s]),j=W(()=>({isOpen:f,open:M,close:N,toggle:w,messages:k,sending:x,error:O,unread:E,hasConversation:s?P:!!e,isSignedIn:y,send:J}),[f,M,N,w,k,x,O,E,e,y,J,s,P]);return H(R.Provider,{value:j,children:u})}function ce(){const u=V(R);if(!u)throw new Error("useChat must be used within <ChatProvider>");return u}export{ae as ChatProvider,ce as useChat};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from "react";
|
|
2
|
+
export interface ChatLauncherLook {
|
|
3
|
+
launcherColor?: string | null;
|
|
4
|
+
launcherIcon?: string | null;
|
|
5
|
+
launcherPosition?: string | null;
|
|
6
|
+
launcherLabel?: string | null;
|
|
7
|
+
showOnPhones?: boolean | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function chatLauncherTokens(look?: ChatLauncherLook | null): CSSProperties;
|
|
10
|
+
export declare function chatLauncherOnLeft(look?: ChatLauncherLook | null): boolean;
|
|
11
|
+
export default function ChatLauncher({ label, onOpen, onWarm, zIndex, badge, look, }: {
|
|
12
|
+
label: string;
|
|
13
|
+
onOpen: () => void;
|
|
14
|
+
onWarm?: () => void;
|
|
15
|
+
zIndex?: number;
|
|
16
|
+
badge?: ReactNode;
|
|
17
|
+
look?: ChatLauncherLook | null;
|
|
18
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as l,Fragment as b}from"react/jsx-runtime";import{ChatBubbleLeftRightIcon as f,ChatBubbleOvalLeftEllipsisIcon as m,ChatIcon as g,MegaphoneIcon as x,PhoneIcon as L,SparklesIcon as C}from"efficient-shell/icons/efficient-glyphs";import{chatLauncherColor as I,chatLauncherIcon as _,chatLauncherPosition as S}from"efficient-web-builder/format/lib/content/chat-launcher";import{accentInk as v}from"efficient-web-builder/format/lib/theme";import{PART_PHONE_MAX_CSS as w}from"efficient-web-builder/render/lib/puck/part-styles";const y={"chat-bubble-left-right":f,"chat-bubble-oval-left-ellipsis":m,chat:g,megaphone:x,phone:L,sparkles:C};function E(a){const t=I(a?.launcherColor)||"var(--btn)";return{"--assistant-launcher-bg":t,"--assistant-launcher-ink":t==="var(--btn)"?"var(--btn-ink)":v(t),"--assistant-launcher-bg-hover":`color-mix(in oklab, ${t} 85%, black)`}}function O(a){return a?.launcherLabel?.trim()??""}function P(a){return S(a?.launcherPosition)==="left"}const k={position:"fixed",bottom:16,minWidth:48,height:48,padding:0,display:"flex",alignItems:"center",border:0,borderRadius:9999,cursor:"pointer",background:"var(--assistant-launcher-bg)",color:"var(--assistant-launcher-ink)",boxShadow:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)"},N={width:48,height:48,flex:"none",display:"flex",alignItems:"center",justifyContent:"center"},j="[data-chat-launcher-label]{max-width:0;opacity:0;overflow:hidden;white-space:nowrap;font-size:14px;font-weight:500;line-height:1;transition:max-width 120ms ease-out,opacity 120ms ease-out,padding 120ms ease-out}[data-chat-launcher]:hover [data-chat-launcher-label],[data-chat-launcher]:focus-visible [data-chat-launcher-label]{max-width:16em;opacity:1;padding-inline-end:16px}@media (prefers-reduced-motion:reduce){[data-chat-launcher-label]{transition:none}}",A=`@media ${w}{[data-chat-launcher][data-hide-on-phones]{display:none!important}}`;function H({label:a,onOpen:t,onWarm:c,zIndex:d=1e3,badge:u,look:n}){const r=_(n?.launcherIcon),p=y[r],o=O(n),i=P(n),s=n?.showOnPhones===!1,h=(o?j:"")+(s?A:"");return l(b,{children:[h&&e("style",{children:h}),l("button",{type:"button","aria-label":a,onClick:t,onPointerEnter:c,onFocus:c,"data-sf-floating":"","data-chat-launcher":"","data-side":i?"left":"right","data-hide-on-phones":s?"":void 0,style:{...E(n),...k,...i?{left:16}:{right:16},zIndex:d},children:[e("span",{style:N,children:e(p,{size:22,"data-icon":r})}),o&&e("span",{"data-chat-launcher-label":"",children:o}),u]})]})}export{P as chatLauncherOnLeft,E as chatLauncherTokens,H as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type ChatLauncherLook } from "./ChatLauncher.js";
|
|
2
|
+
export declare const DEFAULT_TITLE = "Chat with us";
|
|
3
|
+
export declare const DEFAULT_SUBTITLE = "We usually reply within a few minutes";
|
|
4
|
+
export declare const DEFAULT_GREETING = "Hi! Ask us anything \u2014 about a wheel, an order, or fitment. Leave your details and we\u2019ll reply.";
|
|
5
|
+
export interface ChatWording {
|
|
6
|
+
title?: string;
|
|
7
|
+
subtitle?: string;
|
|
8
|
+
greeting?: string;
|
|
9
|
+
}
|
|
10
|
+
export default function ChatWidget({ title, subtitle, greeting, look, }?: ChatWording & {
|
|
11
|
+
look?: ChatLauncherLook | null;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import{useEffect as S,useRef as A,useState as u}from"react";import{stripMarkup as B}from"efficient-web-builder/format/lib/markup";import{sizedImage as z}from"efficient-web-builder/format/lib/sized-image";import D,{chatLauncherOnLeft as W}from"./ChatLauncher.js";import{useChat as U}from"./ChatContext.js";import{scrollBehavior as F}from"efficient-web-builder/render/components/useReducedMotion";const M="Chat with us",O="We usually reply within a few minutes",R="Hi! Ask us anything — about a wheel, an order, or fitment. Leave your details and we’ll reply.";function $({m:t}){if(t.sender_role==="system")return e("div",{className:"text-center text-[11px] text-fg/50 py-1",children:t.body});const a=t.sender_role==="bot",s=t.sender_role==="employee"||a;return e("div",{className:`flex ${s?"justify-start":"justify-end"}`,children:n("div",{className:`max-w-[80%] rounded-2xl px-3 py-2 text-sm ${s?"bg-fg/5 text-fg":"bg-accent text-black"}`,children:[s&&n("div",{className:"mb-0.5 flex items-center gap-1 text-[10px] font-semibold uppercase tracking-wide text-fg/50",children:[a&&e("span",{"aria-hidden":"true",children:"✦"}),e("span",{children:a?t.sender_name||"Assistant":t.sender_name||"Support"}),a&&e("span",{className:"font-normal normal-case tracking-normal",children:"· automated"})]}),t.body&&e("p",{className:"whitespace-pre-wrap",children:t.body}),t.image_url&&e("a",{href:t.image_url,target:"_blank",rel:"noopener noreferrer",children:e("img",{...z(t.image_url,{fallbackWidth:640,maxWidth:1280}),sizes:"(max-width: 640px) 80vw, 320px",alt:"Attachment",className:"mt-2 max-h-48 w-auto rounded-lg"})})]})})}function G({title:t,subtitle:a,greeting:s,look:x}={}){const{isOpen:l,toggle:N,close:_,messages:o,sending:i,error:h,unread:f,hasConversation:k,isSignedIn:C,send:L}=U(),g=t?.trim()||M,E=a?.trim()||O,T=s?.trim()||R,[d,b]=u(""),[c,j]=u(""),[m,I]=u(""),y=A(null),p=!C&&!k;S(()=>{l&&y.current?.scrollIntoView({behavior:F(),block:"nearest"})},[o.length,l]);const v=d.trim().length>0&&(!p||c.trim()&&/.+@.+/.test(m)),w=()=>{!v||i||(L(d,p?{name:c.trim(),email:m.trim()}:void 0),b(""))};return l?n("aside",{role:"dialog","aria-label":"Chat with us","data-sf-floating":"",className:`fixed bottom-5 ${W(x)?"left-5":"right-5"} z-[61] flex h-[min(560px,80vh)] w-[min(380px,calc(100vw-2.5rem))] flex-col overflow-hidden rounded-2xl border border-line bg-bg shadow-[0_20px_60px_rgba(0,0,0,.45)]`,style:{color:"var(--fg)"},children:[n("div",{className:"flex items-center justify-between border-b border-line px-4 py-3",children:[n("div",{children:[e("div",{className:"text-sm font-semibold text-fg",children:g}),e("div",{className:"text-[11px] text-fg/50",children:E})]}),e("button",{type:"button",onClick:_,"aria-label":"Close chat",className:"rounded-md p-1 text-fg/60 hover:bg-fg/5",children:e("svg",{className:"h-5 w-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:1.8,children:e("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),n("div",{className:"flex-1 space-y-2 overflow-y-auto px-3 py-3",children:[o.length===0&&e("p",{className:"px-2 py-4 text-center text-sm text-fg/50",children:T}),o.map(r=>e($,{m:r},r.id)),e("div",{ref:y})]}),n("div",{className:"border-t border-line p-3",children:[p&&n("div",{className:"mb-2 grid grid-cols-2 gap-2",children:[e("input",{value:c,onChange:r=>j(r.target.value),placeholder:"Your name",className:"rounded-lg border border-line bg-transparent px-3 py-2 text-sm outline-none focus:border-accent"}),e("input",{value:m,onChange:r=>I(r.target.value),type:"email",placeholder:"Email",className:"rounded-lg border border-line bg-transparent px-3 py-2 text-sm outline-none focus:border-accent"})]}),h&&e("p",{className:"mb-2 text-xs text-red-600",children:h}),n("div",{className:"flex items-end gap-2",children:[e("textarea",{value:d,onChange:r=>b(r.target.value),onKeyDown:r=>{r.key==="Enter"&&!r.shiftKey&&(r.preventDefault(),w())},rows:1,placeholder:"Type a message…",className:"max-h-28 flex-1 resize-none rounded-lg border border-line bg-transparent px-3 py-2 text-sm outline-none focus:border-accent"}),e("button",{type:"button",onClick:w,disabled:!v||i,className:"rounded-lg bg-btn px-3 py-2 text-sm font-semibold text-btn-ink disabled:opacity-40",children:i?"…":"Send"})]})]})]}):e(D,{label:B(g),onOpen:N,zIndex:60,look:x,badge:f>0&&e("span",{className:"absolute -top-1 -right-1 flex h-5 min-w-5 items-center justify-center rounded-full bg-red-600 px-1 text-[11px] font-bold text-white",children:f})})}export{R as DEFAULT_GREETING,O as DEFAULT_SUBTITLE,M as DEFAULT_TITLE,G as default};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface CheckoutCTAProps {
|
|
2
|
+
eyebrow?: string;
|
|
3
|
+
title?: string;
|
|
4
|
+
body?: string;
|
|
5
|
+
ctaText?: string;
|
|
6
|
+
ctaHref?: string;
|
|
7
|
+
secondaryText?: string;
|
|
8
|
+
secondaryHref?: string;
|
|
9
|
+
contained: boolean;
|
|
10
|
+
}
|
|
11
|
+
export default function CheckoutCTA({ eyebrow, title, body, ctaText, ctaHref, secondaryText, secondaryHref, contained, }: CheckoutCTAProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as e,jsxs as p}from"react/jsx-runtime";import d from"efficient-web-builder/render/components/BlockFrame";import f from"efficient-web-builder/render/components/Btn";import h from"efficient-web-builder/render/components/SectionEyebrow";import{renderGold as i,renderHeadline as g,splitParagraphs as u}from"efficient-web-builder/render/components/goldPhrases";function v({eyebrow:m,title:n,body:t,ctaText:a,ctaHref:s,secondaryText:r,secondaryHref:l,contained:c}){return e(d,{contained:c,className:"py-6",children:p("div",{className:"flex flex-col items-center gap-5 px-6 py-16 text-center max-[800px]:py-10",children:[m&&e(h,{text:m,scaled:!1}),n&&e("h2",{className:"max-w-[720px] font-display text-[min(44px,var(--sf-heading-max,9999px))] font-medium leading-[1.05] tracking-[-0.03em] max-[800px]:text-[min(30px,var(--sf-heading-max,9999px))]",children:g(n,!1)}),t&&u(t).map((x,o)=>e("p",{className:"max-w-[560px] text-[16px] leading-[1.6] opacity-85",children:i(x)},o)),(a||r)&&p("div",{className:"mt-2 flex items-center gap-6",children:[a&&e(f,{href:s||"/checkout",variant:"primary",children:i(a)}),r&&e("a",{href:l||"#",className:"font-mono text-[13px] uppercase tracking-[0.2em] underline underline-offset-4 opacity-70 hover:opacity-100",children:i(r)})]})]})})}export{v as default};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PartStyles } from "efficient-web-builder/render/lib/puck/part-styles";
|
|
2
|
+
export declare function resolveCategoryImage(src?: string): string | undefined;
|
|
3
|
+
export interface CollectionCardStyle {
|
|
4
|
+
showPrice?: boolean;
|
|
5
|
+
cardStyle?: "minimal" | "bordered" | "shadow";
|
|
6
|
+
partStyles?: PartStyles;
|
|
7
|
+
editing?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare const CollectionCardStyleContext: import("react").Context<CollectionCardStyle>;
|
|
10
|
+
export interface CollectionRef {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
slug: string;
|
|
14
|
+
description: string;
|
|
15
|
+
image: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const COLLECTION_CARD_SEED_COUNT = 3;
|
|
18
|
+
export interface CollectionCardProps {
|
|
19
|
+
tag?: string;
|
|
20
|
+
name?: React.ReactNode;
|
|
21
|
+
desc?: string;
|
|
22
|
+
href?: string;
|
|
23
|
+
imageSrc?: string;
|
|
24
|
+
imageLabel?: string;
|
|
25
|
+
price?: string;
|
|
26
|
+
}
|
|
27
|
+
export default function CollectionCard({ tag, name, desc, href, imageSrc, imageLabel, price, }: CollectionCardProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as s}from"react/jsx-runtime";import{createContext as _,useContext as N}from"react";import v from"next/link";import E from"efficient-web-builder/render/components/Placeholder";import{SIZE_STEP_OF_ROLE as O}from"efficient-web-builder/format/lib/fonts";import{COLLECTION_CARD_REGIONS as T,COLLECTION_CARD_TEXT_SIZE as r}from"efficient-web-builder/format/lib/sections/collection-card-text-regions";import{TEXT_REGION_ATTR as k,regionStyle as S,textRegionPartKey as I}from"efficient-web-builder/format/lib/sections/text-regions";import{renderGold as l,renderHeadline as L,splitParagraphs as R}from"efficient-web-builder/render/components/goldPhrases";import{absolutizeApiUrl as w}from"efficient-web-builder/render/lib/media";function $(a){return w(a)??void 0}const P=_({}),K=3;function j({tag:a,name:i,desc:c,href:d,imageSrc:x,imageLabel:g,price:m}){const{showPrice:f,cardStyle:p,partStyles:u,editing:h}=N(P),b=p==="bordered"?" border border-line":p==="shadow"?" shadow-[0_8px_30px_rgba(0,0,0,0.12)]":"",y=$(x),o=t=>h?{[k]:t}:{},n=t=>S(u?.[I(t)]?.role,T[t],O);return s(v,{href:d||"#",className:`sf-card group relative block w-full min-w-0 overflow-hidden bg-surface-2${b}`,children:[e("div",{className:"relative z-0 aspect-[4/5] transition-transform duration-700 [transition-timing-function:cubic-bezier(.2,.6,.2,1)] group-hover:scale-[1.04]",children:e(E,{label:g||"collection.jpg",src:y})}),e("div",{className:"pointer-events-none absolute inset-0 z-[1] [background:rgba(0,0,0,0.4)] group-hover:[background:rgba(0,0,0,0.3)] max-[800px]:hidden",style:{transition:"none"}}),s("div",{className:"absolute inset-x-8 bottom-8 z-[2] flex flex-col gap-3 text-overlay-fg max-[800px]:relative max-[800px]:inset-auto max-[800px]:p-6 max-[800px]:gap-3 max-[800px]:text-fg",children:[a&&e("span",{...o("tag"),style:n("tag"),className:`font-mono ${r.tag} uppercase tracking-[0.25em] opacity-70`,children:l(a)}),i&&e("h3",{...o("name"),style:n("name"),className:`font-heading2 ${r.name} font-medium leading-none tracking-[-0.03em] ${r.namePhone}`,children:typeof i=="string"?L(i,!1):i}),c&&R(c).map((t,C)=>e("p",{...o("body"),style:n("body"),className:`max-w-[420px] ${r.body} leading-[1.5] opacity-80`,children:l(t)},C)),f&&m&&e("span",{...o("price"),style:n("price"),className:`font-mono ${r.price} tracking-[0.05em] text-accent`,children:l(m)}),s("span",{...o("link"),style:n("link"),className:`mt-2 inline-flex items-center gap-3 font-mono ${r.link} uppercase tracking-[0.2em]`,children:["Explore",e("span",{className:"transition-transform group-hover:translate-x-[3px]","aria-hidden":!0,children:"→"})]})]})]})}export{K as COLLECTION_CARD_SEED_COUNT,P as CollectionCardStyleContext,j as default,$ as resolveCategoryImage};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SlotComponent } from "efficient-easel/blocks";
|
|
2
|
+
import type { PartStyles } from "efficient-web-builder/render/lib/puck/part-styles";
|
|
3
|
+
export interface CollectionsProps {
|
|
4
|
+
eyebrow?: string;
|
|
5
|
+
heading?: string;
|
|
6
|
+
columns?: number;
|
|
7
|
+
showPrice?: boolean;
|
|
8
|
+
cardStyle?: "minimal" | "bordered" | "shadow";
|
|
9
|
+
layout?: "grid" | "carousel" | "list";
|
|
10
|
+
limit?: number;
|
|
11
|
+
cards?: SlotComponent;
|
|
12
|
+
omitHead?: boolean;
|
|
13
|
+
nodeId?: string;
|
|
14
|
+
partStyles?: PartStyles;
|
|
15
|
+
editing?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export default function Collections({ eyebrow, heading, columns, showPrice, cardStyle, layout, limit, cards: Cards, omitHead, nodeId, partStyles, editing, }?: CollectionsProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{Fragment as d,jsx as e,jsxs as i}from"react/jsx-runtime";import{useId as v}from"react";import y from"efficient-web-builder/render/components/SectionHeader";import{SectionTextParts as N}from"efficient-web-builder/render/lib/puck/editing-bridges";import{CollectionCardStyleContext as M}from"./CollectionCard.js";import{fillRowCss as S}from"../lib/sections/fill-row.js";import{renderHeadline as $}from"efficient-web-builder/render/components/goldPhrases";function j({editing:r,nodeId:t,children:s}){return!r||!t?e(d,{children:s}):e(N,{nodeId:t,sectionType:"Collections",children:s})}const E="px-[max(var(--sf-site-gutter,40px),calc((100%_-_var(--sf-content-cap,100%))/2_+_var(--sf-site-gutter,40px)))] py-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:py-[70px]",F="px-[max(var(--sf-site-gutter,40px),calc((100%_-_var(--sf-content-cap,100%))/2_+_var(--sf-site-gutter,40px)))] pt-0 pb-[120px] max-[800px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[800px]:pt-0 max-[800px]:pb-[70px]",I={2:"grid-cols-2",3:"grid-cols-3",4:"grid-cols-4",5:"grid-cols-5"};function R({eyebrow:r,heading:t,columns:s,showPrice:m,cardStyle:f,layout:g,limit:n,cards:l,omitHead:a=!1,nodeId:u,partStyles:h,editing:c=!1}={}){const o=`cg-${v().replace(/:/g,"")}`,_=typeof n=="number"&&n>0,C=g==="list"?"grid-cols-1":s===void 0?"grid-cols-3":I[Math.min(5,Math.max(2,Math.round(s)))]??"grid-cols-3",p=`${o} grid ${C} gap-4 max-[800px]:grid-cols-1 max-[800px]:gap-3`,x=S(o,p,{limit:n});return i("section",{className:a?F:E,children:[a?null:e(y,{num:r!==void 0?r:"01 / Collections",accentNum:!0,title:t!==void 0?$(t,!1):i(d,{children:["Three ranges,",e("br",{}),"one standard."]}),link:{text:"View all",href:"/wheels"}}),l&&e(j,{editing:c,nodeId:u,children:i(M.Provider,{value:{showPrice:m,cardStyle:f,partStyles:h,editing:c},children:[_&&e("style",{children:`.${o} > *:nth-child(n+${n+1}){display:none}`}),x&&e("style",{children:x}),e(l,{className:p,minEmptyHeight:260})]})})]})}export{R as default};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type CardIndexFormat, type CardOutline } from "efficient-web-builder/format/lib/sections/product-card-style";
|
|
2
|
+
import type { CompatibleTyre } from "../lib/api/index.js";
|
|
3
|
+
export interface CompatibleTyresProps {
|
|
4
|
+
num?: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
tyres?: CompatibleTyre[];
|
|
8
|
+
footnote?: string;
|
|
9
|
+
footnoteLinkText?: string;
|
|
10
|
+
footnoteLinkHref?: string;
|
|
11
|
+
viewMore?: {
|
|
12
|
+
href: string;
|
|
13
|
+
label: string;
|
|
14
|
+
};
|
|
15
|
+
editing?: boolean;
|
|
16
|
+
frameClassName?: string;
|
|
17
|
+
omitHead?: boolean;
|
|
18
|
+
columns?: number;
|
|
19
|
+
cardImage?: number | null;
|
|
20
|
+
outline?: CardOutline;
|
|
21
|
+
indexBadge?: CardIndexFormat;
|
|
22
|
+
}
|
|
23
|
+
export default function CompatibleTyres({ num, title, description, tyres, footnote, footnoteLinkText, footnoteLinkHref, viewMore, editing, frameClassName, omitHead, columns, cardImage, outline, indexBadge, }: CompatibleTyresProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as p}from"react/jsx-runtime";import R from"./SectionBand.js";import{useId as j}from"react";import z from"efficient-web-builder/render/components/SectionHeader";import F from"./SectionFootnote.js";import L from"./TyreCard.js";import H from"./ViewMoreLink.js";import{renderGold as f,renderHeadline as O}from"efficient-web-builder/render/components/goldPhrases";import{useCurrency as P}from"./CurrencyContext.js";import{tyrePagePath as $}from"../lib/tyres/tyre-page-path.js";import{TYRE_ILLUSTRATION_NOTE as w}from"../lib/wheels/tyre-render.js";import{cardImageShapeTokens as B}from"efficient-web-builder/format/lib/content/card-image-shape";import{DEFAULT_CARD_INDEX_FORMAT as v,cardIndexCss as U}from"efficient-web-builder/format/lib/sections/product-card-style";import{say as Y}from"efficient-web-builder/format/lib/editor-words";const G="border-b border-line py-[120px] max-[1100px]:py-20";function u({frameClassName:o,style:i,children:n}){return o!==void 0?e("section",{className:o,style:i,children:n}):e(R,{className:G,style:i,children:n})}const x={2:"grid grid-cols-2 gap-2 max-[720px]:grid-cols-1",3:"grid grid-cols-3 gap-2 max-[1100px]:grid-cols-2 max-[720px]:grid-cols-1",4:"grid grid-cols-4 gap-2 max-[1100px]:grid-cols-2 max-[720px]:grid-cols-1"};function V({num:o,title:i,description:n,tyres:g,footnote:h,footnoteLinkText:y,footnoteLinkHref:T,viewMore:t,editing:b=!1,frameClassName:l,omitHead:N=!1,columns:S=3,cardImage:_,outline:k,indexBadge:C}){const{currency:I,formatPrice:A}=P(),s=g??[],c=`ct-${j().replace(/:/g,"")}`,m=C??v,a=U(c,m),D=s.some(r=>!r.image),E=[h,D?w:null].filter(Boolean).join(" "),d=N?null:e(z,{num:o!=null?f(o):void 0,title:i!=null?O(i,!1):void 0,description:n!=null?f(n):void 0,accent:!0});return s.length===0?b?p(u,{frameClassName:l,children:[d,e("p",{className:"border-t border-line py-6 font-mono text-[length:var(--size-label,13px)] uppercase tracking-[0.18em] text-fg-dim",children:Y("No compatible tyres found for this wheel’s sizes yet — tyres appear automatically when a matching size is active and priced in the catalog.")})]}):null:p(u,{frameClassName:l,style:B(_),children:[a&&e("style",{children:a}),d,e("div",{className:`${a?`${c} `:""}${x[S]??x[3]}`,children:s.map(r=>e(L,{outline:k,showIndex:m!=="off",size:r.size,specs:r.specs,prices:r.prices,image:r.image,inStock:r.inStock,href:$(r.slug),currency:I,formatPrice:A},r.sku))}),t&&e("div",{className:"mt-10 flex",children:e(H,{href:t.href,label:t.label})}),e(F,{text:E,linkText:y,linkHref:T})]})}export{V as default};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ConsentBannerLayout } from "efficient-web-builder/format/lib/content/consent-banner";
|
|
2
|
+
import { type BannerWords, type ConsentModel } from "../lib/consent/rules.js";
|
|
3
|
+
export declare const CONSENT_CHOICE_BUTTON = "flex items-center justify-center gap-5 border border-fg bg-transparent px-6 py-4 font-mono text-[14px] uppercase tracking-[0.3em] text-fg transition-colors hover:bg-fg hover:text-bg";
|
|
4
|
+
export declare const CONSENT_TEXT_BUTTON = "font-mono text-[13px] uppercase tracking-[0.15em] text-fg underline decoration-line underline-offset-4 hover:decoration-fg";
|
|
5
|
+
export declare function ConsentEyebrow({ text }: {
|
|
6
|
+
text: string;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
export declare function ConsentBannerView({ model, words, layout, privacyHref, onAccept, onReject, onChoose, inline, }: {
|
|
9
|
+
model: ConsentModel;
|
|
10
|
+
words: BannerWords;
|
|
11
|
+
layout: ConsentBannerLayout;
|
|
12
|
+
privacyHref: string | null;
|
|
13
|
+
onAccept: () => void;
|
|
14
|
+
onReject: () => void;
|
|
15
|
+
onChoose: () => void;
|
|
16
|
+
inline?: boolean;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
export declare function ConsentBannerPreview({ layout }: {
|
|
19
|
+
layout: ConsentBannerLayout;
|
|
20
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as n,Fragment as x}from"react/jsx-runtime";import{usePreviewHeader as v}from"efficient-web-builder/render/components/PreviewHeaderContext";import{NEUTRAL_SITE_NAME as y}from"../lib/content/site.js";import{bannerWords as C,CONSENT_BUTTONS as r,CONSENT_RULES as T}from"../lib/consent/rules.js";const i="flex items-center justify-center gap-5 border border-fg bg-transparent px-6 py-4 font-mono text-[14px] uppercase tracking-[0.3em] text-fg transition-colors hover:bg-fg hover:text-bg",k="font-mono text-[13px] uppercase tracking-[0.15em] text-fg underline decoration-line underline-offset-4 hover:decoration-fg",E="text-fg underline decoration-line underline-offset-4";function f({text:a}){return n("div",{className:"flex items-center gap-3 font-mono text-[12px] uppercase tracking-[0.18em] text-fg-dim",children:[e("span",{className:"block h-1.5 w-1.5 rounded-full bg-accent"}),e("span",{children:a})]})}function _({model:a,words:t,layout:g,privacyHref:s,onAccept:l,onReject:h,onChoose:p,inline:N=!1}){const m=n("p",{className:"mt-3 font-body text-[15px] leading-[1.55] text-fg-dim max-[880px]:text-[14px]",children:[t.before,e("span",{className:"text-fg",children:t.link}),t.after,s&&n(x,{children:[" ",e("a",{className:E,href:s,children:r.privacyPolicy})]})]}),d=a==="opt-in",b=d?n(x,{children:[e("button",{type:"button",className:`${i} max-[880px]:order-2`,onClick:h,children:r.reject}),e("button",{type:"button",className:`${i} max-[880px]:order-1`,onClick:l,children:r.accept})]}):n(x,{children:[e("button",{type:"button",className:`${i} max-[880px]:order-2`,onClick:p,children:r.privacyChoices}),e("button",{type:"button",className:`${i} max-[880px]:order-1`,onClick:l,children:r.ok})]}),o=d?e("button",{type:"button",className:k,onClick:p,children:r.choose}):null,u=N?"absolute":"fixed";return g==="card"?n("div",{role:"region","aria-label":t.heading,"data-consent-banner":"card",className:`${u} bottom-6 left-6 z-[90] w-[420px] border border-line bg-bg p-6 [border-radius:var(--sf-section-radius,0px)] max-[880px]:inset-x-0 max-[880px]:bottom-0 max-[880px]:left-0 max-[880px]:w-auto max-[880px]:border-x-0 max-[880px]:border-b-0 max-[880px]:px-5 max-[880px]:pb-8 max-[880px]:pt-6 max-[880px]:[border-radius:0]`,children:[e(f,{text:t.heading}),m,e("div",{className:"mt-5 grid grid-cols-2 gap-3 max-[880px]:grid-cols-1",children:b}),o&&e("div",{className:"mt-4 max-[880px]:text-center",children:o})]}):e("div",{role:"region","aria-label":t.heading,"data-consent-banner":"bar",className:`${u} inset-x-0 bottom-0 z-[90] border-t border-line bg-bg`,children:n("div",{className:"flex items-center justify-between gap-10 px-10 py-6 max-[1100px]:flex-col max-[1100px]:items-start max-[1100px]:gap-5 max-[880px]:px-5 max-[880px]:pb-8",children:[n("div",{className:"min-w-0 max-w-[700px]",children:[e(f,{text:t.heading}),m]}),n("div",{className:"flex flex-none items-center gap-3 max-[880px]:grid max-[880px]:w-full",children:[o&&e("span",{className:"mr-3 max-[880px]:order-3 max-[880px]:mr-0 max-[880px]:mt-1 max-[880px]:text-center",children:o}),b]})]})})}function $({layout:a}){const t=v().websiteName?.trim()||y;return e("div",{className:"relative min-h-[640px] w-full","data-consent-banner-preview":!0,children:e(_,{model:"opt-in",words:C(T.other,t,{analytics:!0,googleAds:!0,meta:!0}),layout:a,privacyHref:null,onAccept:c,onReject:c,onChoose:c,inline:!0})})}function c(){}export{i as CONSENT_CHOICE_BUTTON,k as CONSENT_TEXT_BUTTON,$ as ConsentBannerPreview,_ as ConsentBannerView,f as ConsentEyebrow};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ConsentBannerLayout } from "efficient-web-builder/format/lib/content/consent-banner";
|
|
2
|
+
import type { ConsentRule, ConsentTags } from "../lib/consent/rules.js";
|
|
3
|
+
import { type ConsentState } from "../lib/consent/choice.js";
|
|
4
|
+
export interface ConsentSettings {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
noticeOptOut: boolean;
|
|
7
|
+
privacyHref: string | null;
|
|
8
|
+
layout: ConsentBannerLayout;
|
|
9
|
+
brand: string;
|
|
10
|
+
tags: ConsentTags;
|
|
11
|
+
}
|
|
12
|
+
export declare const PENDING: ConsentState;
|
|
13
|
+
export interface ConsentControls {
|
|
14
|
+
state: ConsentState;
|
|
15
|
+
rule: ConsentRule;
|
|
16
|
+
ready: boolean;
|
|
17
|
+
openPanel: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const ConsentStateContext: import("react").Context<ConsentState>;
|
|
20
|
+
export declare const ConsentControlsContext: import("react").Context<ConsentControls | null>;
|
|
21
|
+
export declare function useConsent(): ConsentState;
|
|
22
|
+
export declare function useConsentControls(): ConsentControls | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{createContext as e,useContext as n}from"react";import{NOT_ASKED as o}from"../lib/consent/choice.js";const l={...o,asked:!0,analytics:!1,ads:!1,chosen:!1},s=e(o),r=e(null);function u(){return n(s)}function C(){const t=n(r);return t&&t.state.asked?t:null}export{r as ConsentControlsContext,s as ConsentStateContext,l as PENDING,u as useConsent,C as useConsentControls};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ConsentRule } from "../lib/consent/rules.js";
|
|
2
|
+
export declare function ConsentPanelView({ rule, analytics: initialAnalytics, ads: initialAds, gpc, privacyHref, open, onSave, onClose, inline, }: {
|
|
3
|
+
rule: ConsentRule;
|
|
4
|
+
analytics: boolean;
|
|
5
|
+
ads: boolean;
|
|
6
|
+
gpc: boolean;
|
|
7
|
+
privacyHref: string | null;
|
|
8
|
+
open?: boolean;
|
|
9
|
+
onSave: (choice: {
|
|
10
|
+
analytics: boolean;
|
|
11
|
+
ads: boolean;
|
|
12
|
+
}) => void;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
inline?: boolean;
|
|
15
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useEffect as w,useRef as O,useState as g}from"react";import j from"./SiteSwitch.js";import{CONSENT_CHOICE_BUTTON as k,ConsentEyebrow as E}from"./ConsentBanner.js";import{useModalDismiss as T}from"./useModalDismiss.js";import{CONSENT_BUTTONS as c,GPC_HONOURED as v,PANEL_ROWS as l}from"../lib/consent/rules.js";const _="flex items-center justify-center gap-5 border border-btn bg-btn px-6 py-4 font-mono text-[14px] uppercase tracking-[0.3em] text-btn-ink transition-colors hover:border-fg hover:bg-fg",R="text-fg underline decoration-line underline-offset-4";function m({name:n,body:s,checked:o,onChange:t,locked:i=!1}){return a("div",{className:"flex items-start justify-between gap-6 border-t border-line py-5",children:[a("div",{className:"min-w-0",children:[e("div",{className:"font-display text-[17px] text-fg",children:n}),e("p",{className:"mt-1 font-body text-[14px] leading-[1.5] text-fg-dim",children:s})]}),e(j,{checked:o,onChange:r=>t?.(r),ariaLabel:n,disabled:i,className:"flex flex-none cursor-pointer items-center gap-3 pt-1",children:i&&e("span",{className:"order-first font-mono text-[11px] uppercase tracking-[0.18em] text-fg-dim",children:c.alwaysOn})})]})}function L({rule:n,analytics:s,ads:o,gpc:t,privacyHref:i,open:r=!0,onSave:d,onClose:x,inline:p=!1}){const[f,b]=g(s),[u,h]=g(o&&!t),y=O(null);if(w(()=>{r&&(b(s),h(o&&!t))},[r,s,o,t]),T({active:!p&&r,onDismiss:x,focusRef:y}),!r)return null;const N=a("div",{ref:y,tabIndex:-1,onClick:C=>C.stopPropagation(),className:"relative w-[min(640px,100%)] overflow-auto border border-line bg-bg p-10 outline-none [border-radius:var(--sf-section-radius,0px)] max-[880px]:max-h-[88dvh] max-[880px]:w-full max-[880px]:border-x-0 max-[880px]:border-b-0 max-[880px]:px-5 max-[880px]:pb-8 max-[880px]:pt-7 max-[880px]:[border-radius:0]",children:[e(E,{text:n.panelEyebrow}),a("h2",{id:"consent-panel-title",className:"mt-4 font-display text-[36px] leading-[1.05] tracking-[-0.01em] text-fg max-[880px]:text-[28px]",children:["Your privacy ",e("span",{className:"font-serif font-light italic text-accent",children:"choices."})]}),t&&a("div",{className:"mt-5 border border-line bg-surface px-4 py-3 font-body text-[14px] leading-[1.5] text-fg",children:[e("span",{className:"font-mono text-[12px] uppercase tracking-[0.18em] text-accent",children:v.title}),e("br",{}),v.body]}),a("div",{className:"mt-6",children:[e(m,{name:l.necessary.name,body:l.necessary.body,checked:!0,locked:!0}),e(m,{name:l.analytics.name,body:l.analytics.body,checked:f,onChange:b}),e(m,{name:n.adsRowName,body:l.ads.body,checked:u,onChange:h,locked:t})]}),a("div",{className:"mt-2 grid grid-cols-3 gap-3 border-t border-line pt-6 max-[880px]:grid-cols-1",children:[e("button",{type:"button",className:_,onClick:()=>d({analytics:f,ads:u&&!t}),children:c.save}),e("button",{type:"button",className:k,onClick:()=>d({analytics:!1,ads:!1}),children:c.reject}),e("button",{type:"button",className:k,onClick:()=>d({analytics:!0,ads:!t}),children:c.accept})]}),i&&a("p",{className:"mt-5 font-body text-[13px] text-fg-dim",children:["More in our"," ",e("a",{className:R,href:i,children:c.privacyPolicy}),"."]})]});return p?e("div",{className:"flex w-full justify-center p-6",children:N}):e("div",{role:"dialog","aria-modal":"true","aria-labelledby":"consent-panel-title",onClick:x,className:"fixed inset-0 z-[95] flex items-center justify-center p-6 backdrop-blur-[8px] max-[880px]:items-end max-[880px]:p-0",style:{background:"color-mix(in oklab, var(--bg) 78%, transparent)"},children:N})}export{L as ConsentPanelView};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type ConsentSettings } from "./ConsentContext.js";
|
|
3
|
+
export type { ConsentSettings } from "./ConsentContext.js";
|
|
4
|
+
export declare function ConsentProvider({ consent, children }: {
|
|
5
|
+
consent: ConsentSettings;
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}): import("react").JSX.Element;
|