efficient-storefront-blocks 0.57.0 → 0.58.1
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 +50 -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 +41 -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,46 @@
|
|
|
1
|
+
import { type FormEvent, type ReactNode } from "react";
|
|
2
|
+
import { type BookingAvailability, type BookingConfirmation, type BookingService } from "../../lib/api/index.js";
|
|
3
|
+
export interface BookingFormValue {
|
|
4
|
+
fieldPrefix: string;
|
|
5
|
+
editing: boolean;
|
|
6
|
+
services: BookingService[] | undefined;
|
|
7
|
+
currency: string;
|
|
8
|
+
serviceId: string;
|
|
9
|
+
setServiceId: (id: string) => void;
|
|
10
|
+
service: BookingService | undefined;
|
|
11
|
+
requiresPayment: boolean;
|
|
12
|
+
date: string;
|
|
13
|
+
earliestDate: string;
|
|
14
|
+
setDate: (d: string) => void;
|
|
15
|
+
setDateTouched: (touched: boolean) => void;
|
|
16
|
+
availability: BookingAvailability | undefined;
|
|
17
|
+
loadingSlots: boolean;
|
|
18
|
+
noSlotsMessage: string | null;
|
|
19
|
+
selectedStart: string;
|
|
20
|
+
setSelectedStart: (start: string) => void;
|
|
21
|
+
customerTimezone: string;
|
|
22
|
+
name: string;
|
|
23
|
+
setName: (v: string) => void;
|
|
24
|
+
email: string;
|
|
25
|
+
setEmail: (v: string) => void;
|
|
26
|
+
phone: string;
|
|
27
|
+
setPhone: (v: string) => void;
|
|
28
|
+
notes: string;
|
|
29
|
+
setNotes: (v: string) => void;
|
|
30
|
+
confirmation: BookingConfirmation | null;
|
|
31
|
+
submitting: boolean;
|
|
32
|
+
error: string | null;
|
|
33
|
+
canSubmit: boolean;
|
|
34
|
+
sample: boolean;
|
|
35
|
+
handleSubmit: (event: FormEvent<HTMLFormElement>) => void;
|
|
36
|
+
}
|
|
37
|
+
export declare const BookingFormContext: import("react").Context<BookingFormValue | null>;
|
|
38
|
+
export declare function useBookingForm(): BookingFormValue;
|
|
39
|
+
export declare const SAMPLE_SERVICES: BookingService[];
|
|
40
|
+
export declare const SAMPLE_CONFIRMATION: BookingConfirmation;
|
|
41
|
+
export declare function showsExample(editing: boolean, services: BookingService[] | undefined): boolean;
|
|
42
|
+
export declare function BookingFormProvider({ editing, previewConfirmation, children, }: {
|
|
43
|
+
editing?: boolean;
|
|
44
|
+
previewConfirmation?: boolean;
|
|
45
|
+
children: ReactNode;
|
|
46
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as ie}from"react/jsx-runtime";import{createContext as se,useContext as ae,useEffect as b,useId as re,useMemo as le,useState as t}from"react";import{ApiError as F,bookings as h}from"../../lib/api/index.js";import{findFirstBookableDay as ce,isoDate as ue}from"../../lib/booking-dates.js";import{uuid as N}from"../../lib/uuid.js";const Z=se(null);function ge(){const o=ae(Z);if(!o)throw new Error("useBookingForm must be used inside <BookingFormProvider>");return o}const T=[{id:"example-1",name:"Example service",durationMinutes:45,price:"80.00",description:"What this appointment includes, in a sentence."},{id:"example-2",name:"Second example",durationMinutes:30,price:"0",description:""}];function me(o){return{timezone:"UTC",slots:[`${o}T09:00:00.000Z`,`${o}T10:30:00.000Z`,`${o}T13:00:00.000Z`].map(l=>({start:l}))}}const de={bookingNumber:"EXAMPLE-0000",service:"Example service",startAt:"2026-01-01T00:00:00.000Z",timezone:"UTC",customerTimezone:"",manageToken:"example"};function fe(o,l){return o&&l?.length===0}function Se({editing:o=!1,previewConfirmation:l=!1,children:z}){const $=re(),m=le(()=>ue(new Date),[]),[y,E]=t(),[L,U]=t(""),[s,P]=t(""),[a,A]=t(m),[W,j]=t(m),[d,O]=t(!1),[_,c]=t(null),[q,u]=t(),[g,f]=t(""),[S,K]=t(""),[x,R]=t(""),[C,V]=t(""),[k,X]=t(""),[Y,G]=t(()=>N()),[H,J]=t(null),[Q,p]=t(!1),[D,I]=t(!1),[ee,v]=t(null),[M,te]=t("");b(()=>{te(Intl.DateTimeFormat().resolvedOptions().timeZone||"UTC")},[]),b(()=>{let n=!1;return h.listServices().then(e=>{n||(E(e.results),U(e.currency),P(oe=>oe||e.results[0]?.id||""))}).catch(()=>{n||E([])}),()=>{n=!0}},[]),b(()=>{if(d||!s)return;const n={aborted:!1};return f(""),u(void 0),v(null),c(null),p(!0),ce(s,m,{signal:n}).then(e=>{if(!n.aborted){if(e.outcome==="found"){A(e.date),j(e.date),u(e.availability);return}c(e.outcome==="noneInWindow"?`No times are available in the next ${e.days} days.`:"We couldn't load available times. Please try again.")}}).finally(()=>{n.aborted||p(!1)}),()=>{n.aborted=!0}},[d,s,m]),b(()=>{if(!d||!s||!a)return;let n=!1;return f(""),u(void 0),v(null),c(null),p(!0),h.getAvailability(s,a).then(e=>{n||(u(e),e.slots.length===0&&c("No times are available on this date."))}).catch(()=>{n||c("We couldn't load available times. Please try again.")}).finally(()=>{n||p(!1)}),()=>{n=!0}},[a,d,s]);const r=y?.find(n=>n.id===s),w=r?.depositAmountDue!=null,B=!!(!o&&!D&&r&&g&&S.trim()&&x.trim()&&!w);async function ne(n){if(n.preventDefault(),!(!B||!r)){I(!0),v(null);try{const e=await h.create({serviceId:r.id,start:g,customer:{name:S.trim(),email:x.trim(),phone:C.trim()},notes:k.trim(),idempotencyKey:Y,customerTimezone:M});J(e),G(N())}catch(e){v(e instanceof F&&e.status===409?"That time was just booked. Choose another available time.":"Your appointment wasn't submitted. Please check your details and try again."),e instanceof F&&e.status===409&&(f(""),h.getAvailability(r.id,a).then(u).catch(()=>{}))}finally{I(!1)}}}const i=fe(o,y);return ie(Z.Provider,{value:{fieldPrefix:$,editing:o,services:i?T:y,currency:i?"AUD":L,serviceId:i?T[0].id:s,setServiceId:P,service:i?T[0]:r,requiresPayment:i?!1:w,date:a,earliestDate:W,setDate:A,setDateTouched:O,availability:i?me(a):q,loadingSlots:i?!1:Q,noSlotsMessage:_,selectedStart:i?`${a}T09:00:00.000Z`:g,setSelectedStart:f,customerTimezone:M,name:S,setName:K,email:x,setEmail:R,phone:C,setPhone:V,notes:k,setNotes:X,confirmation:H??(l?de:null),submitting:D,error:ee,canSubmit:i?!1:B,handleSubmit:ne,sample:!!i},children:z})}export{Z as BookingFormContext,Se as BookingFormProvider,de as SAMPLE_CONFIRMATION,T as SAMPLE_SERVICES,fe as showsExample,ge as useBookingForm};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
export declare function BookingHead({ eyebrow, heading, intro, }: {
|
|
3
|
+
eyebrow?: string;
|
|
4
|
+
heading?: string;
|
|
5
|
+
intro?: string;
|
|
6
|
+
}): import("react").JSX.Element;
|
|
7
|
+
export declare function BookingChoose({ style }?: {
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
}): import("react").JSX.Element | null;
|
|
10
|
+
export declare function BookingDetails({ buttonLabel, style, }: {
|
|
11
|
+
buttonLabel?: string;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
}): import("react").JSX.Element;
|
|
14
|
+
export declare function BookingConfirmed({ successMessage }: {
|
|
15
|
+
successMessage?: string;
|
|
16
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,jsxs as i}from"react/jsx-runtime";import{SAMPLE_CONFIRMATION as S,useBookingForm as z}from"./BookingFormState.js";import w from"efficient-web-builder/render/components/Btn";import c from"../WebFormField.js";import{formatMoneyInCurrency as D}from"../../lib/commerce.js";import{FREE_PRICE as B}from"../../lib/wheels/price-display.js";const d="w-full border-2 border-line bg-bg px-4 py-4 font-[family-name:var(--bk-value-font,var(--font-display))] text-[length:var(--bk-value-size,17px)] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent";function I(n,t){const a=Number(n);if(a===0)return B;try{return D(a,t)}catch{return`${t} ${n}`}}function $(n,t){try{return new Intl.DateTimeFormat(void 0,{hour:"numeric",minute:"2-digit",timeZone:t}).format(new Date(n))}catch{return new Date(n).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}}function T(n,t){try{return new Intl.DateTimeFormat(void 0,{weekday:"long",day:"numeric",month:"long",year:"numeric",hour:"numeric",minute:"2-digit",timeZone:t,timeZoneName:"short"}).format(new Date(n))}catch{return new Date(n).toLocaleString()}}const p="font-[family-name:var(--bk-name-font,var(--font-mono))] text-[length:var(--bk-name-size,12px)]";function C({number:n,children:t}){return i("div",{className:"mb-4 flex items-center gap-3",children:[e("span",{className:"flex size-8 shrink-0 items-center justify-center rounded-full border border-line font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,11px)] font-semibold text-fg-dim",children:n}),e("h3",{className:"font-[family-name:var(--bk-step-font,var(--font-mono))] text-[length:var(--bk-step-size,12px)] font-semibold uppercase tracking-[0.2em] text-fg",children:t})]})}function _({eyebrow:n,heading:t,intro:a}){return i("div",{className:"mb-10 max-w-[760px]",children:[(n??"").trim()&&e("p",{className:"mb-4 font-mono text-[12px] font-semibold uppercase tracking-[0.24em] text-accent",children:n}),(t??"").trim()&&e("h2",{className:"font-heading2 text-[length:min(var(--size-headingMedium,44px),var(--sf-heading-max,9999px))] font-medium uppercase leading-[0.98] tracking-[-0.025em] text-fg max-[800px]:text-[length:min(var(--size-headingMedium,32px),var(--sf-heading-max,9999px))]",children:t}),(a??"").trim()&&e("p",{className:"mt-5 max-w-[660px] font-display text-[17px] leading-[1.65] text-fg-dim",children:a})]})}function j({style:n}={}){const{fieldPrefix:t,services:a,currency:f,serviceId:g,setServiceId:b,requiresPayment:h,date:x,earliestDate:v,setDate:k,setDateTouched:y,availability:o,loadingSlots:N,noSlotsMessage:s,selectedStart:u,setSelectedStart:l,customerTimezone:m}=z();return a?i("div",{className:"flex flex-col gap-10",style:n,children:[i("div",{children:[e(C,{number:"01",children:"Choose a service"}),e("div",{className:"grid gap-3 sm:grid-cols-2",children:a.map(r=>{const F=r.id===g;return i("button",{type:"button","aria-pressed":F,onClick:()=>b(r.id),className:`min-h-11 border p-4 text-left transition-colors ${F?"border-accent bg-accent/10":"border-line bg-bg hover:border-fg-dim"}`,children:[e("span",{className:"block font-[family-name:var(--bk-name-font,var(--font-display))] text-[length:var(--bk-name-size,18px)] font-medium text-fg",children:r.name}),i("span",{className:"mt-1 block font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,11px)] uppercase tracking-[0.14em] text-fg-dim",children:[r.durationMinutes," min · ",I(r.price,f)]}),r.description&&e("span",{className:"mt-3 block font-[family-name:var(--bk-note-font,var(--font-display))] text-[length:var(--bk-note-size,14px)] leading-[1.5] text-fg-dim",children:r.description})]},r.id)})}),h&&e("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.14em] text-alert",role:"alert",children:"This service requires an upfront payment and cannot be booked through this form yet."})]}),i("div",{children:[e(C,{number:"02",children:"Choose a date and time"}),e(c,{separate:!0,htmlFor:`${t}-date`,label:"Date",required:!0,labelFace:p,children:e("input",{id:`${t}-date`,type:"date",min:v,value:x,onChange:r=>{y(!0),k(r.target.value)},className:d,required:!0})}),e("div",{className:"mt-4 grid grid-cols-2 gap-2 sm:grid-cols-3 min-[1200px]:grid-cols-4",role:"group","aria-label":"Available appointment times",children:N?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",children:"Loading times…"}):o?.slots.length?o.slots.map(r=>i("button",{type:"button","aria-pressed":u===r.start,onClick:()=>l(r.start),className:`min-h-11 border px-3 py-2 font-[family-name:var(--bk-value-font,var(--font-mono))] text-[length:var(--bk-value-size,12px)] font-semibold uppercase tracking-[0.12em] transition-colors ${u===r.start?"border-accent bg-accent text-bg":"border-line bg-bg text-fg hover:border-accent"}`,children:[e("span",{className:"block",children:$(r.start,m||o.timezone)}),m&&m!==o.timezone&&i("span",{className:"mt-0.5 block text-[9px] font-normal tracking-[0.08em] opacity-70",children:[$(r.start,o.timezone)," business"]})]},r.start)):s?e("p",{className:"col-span-full py-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.18em] text-fg-dim",role:"status",children:s}):null}),o?.timezone&&i("p",{className:"mt-3 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,10px)] uppercase tracking-[0.16em] text-fg-dim",children:["Times shown in ",m||o.timezone,m&&m!==o.timezone?` · business timezone ${o.timezone}`:""]})]})]}):null}function R({buttonLabel:n,style:t}){const{fieldPrefix:a,editing:f,name:g,setName:b,email:h,setEmail:x,phone:v,setPhone:k,notes:y,setNotes:o,submitting:N,error:s,canSubmit:u}=z();return i("div",{className:"sf-card border border-line bg-bg p-5 min-[640px]:p-8",style:t,children:[e(C,{number:"03",children:"Your details"}),i("div",{className:"flex flex-col gap-4",children:[e(c,{separate:!0,htmlFor:`${a}-name`,label:"Name",required:!0,labelFace:p,children:e("input",{id:`${a}-name`,type:"text",autoComplete:"name",value:g,onChange:l=>b(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-email`,label:"Email",required:!0,labelFace:p,children:e("input",{id:`${a}-email`,type:"email",inputMode:"email",autoComplete:"email",value:h,onChange:l=>x(l.target.value),className:d,required:!0})}),e(c,{separate:!0,htmlFor:`${a}-phone`,label:"Phone",labelFace:p,children:e("input",{id:`${a}-phone`,type:"tel",inputMode:"tel",autoComplete:"tel",value:v,onChange:l=>k(l.target.value),className:d})}),e(c,{separate:!0,htmlFor:`${a}-notes`,label:"What would you like to cover?",labelFace:p,children:e("textarea",{id:`${a}-notes`,rows:4,value:y,onChange:l=>o(l.target.value),className:`${d} resize-y`})})]}),s&&e("p",{className:"mt-4 font-[family-name:var(--bk-note-font,var(--font-mono))] text-[length:var(--bk-note-size,11px)] uppercase tracking-[0.16em] text-alert",role:"alert",children:s}),e(w,{type:f?"button":"submit",disabled:!u,arrow:null,className:"mt-6 w-full disabled:cursor-not-allowed disabled:opacity-50",children:N?"Submitting…":(n??"").trim()||"Book appointment"})]})}function Z({successMessage:n}){const{confirmation:t,customerTimezone:a}=z();return t?i("div",{className:"sf-card max-w-[760px] border border-line bg-bg p-6 min-[640px]:p-10",role:"status",children:[i("p",{className:"font-mono text-[12px] font-semibold uppercase tracking-[0.22em] text-accent",children:["Request received · ",t.bookingNumber]}),e("h3",{className:"mt-4 font-display text-[28px] font-medium uppercase text-fg",children:t.service}),e("p",{className:"mt-2 font-display text-[17px] text-fg-dim",children:T(t.startAt,t.customerTimezone||a||t.timezone)}),t.customerTimezone&&t.timezone!==t.customerTimezone&&i("p",{className:"mt-1 font-mono text-[10px] uppercase tracking-[0.16em] text-fg-dim",children:["Business time: ",T(t.startAt,t.timezone)]}),(n??"").trim()&&e("p",{className:"mt-5 max-w-[620px] font-serif text-[18px] italic leading-[1.6] text-fg-dim",children:n}),e(w,{href:`/book/${encodeURIComponent(t.manageToken)}`,newTab:t!==S,variant:"ghost",className:"mt-8",children:"Manage booking"})]}):null}export{j as BookingChoose,Z as BookingConfirmed,R as BookingDetails,_ as BookingHead};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const BUY_ROW_CLASS = "flex items-stretch gap-4 max-[720px]:flex-wrap max-[720px]:[&>.flex-1]:order-last max-[720px]:[&>.flex-1]:basis-full";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const x="flex items-stretch gap-4 max-[720px]:flex-wrap max-[720px]:[&>.flex-1]:order-last max-[720px]:[&>.flex-1]:basis-full";export{x as BUY_ROW_CLASS};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type CatalogVehicleControl } from "./CatalogVehiclePicker.js";
|
|
2
|
+
import type { FinishFamily, Process } from "../../lib/api/index.js";
|
|
3
|
+
import { type FieldUsageAnswer } from "../../lib/content/field-usage.js";
|
|
4
|
+
import { type FilterBarLayout } from "../../lib/sections/catalog-filter-layout.js";
|
|
5
|
+
import { type CatalogFilterState, type SortKey } from "../../lib/wheels/catalog-filters.js";
|
|
6
|
+
export interface FilterBarVisibility {
|
|
7
|
+
process?: boolean;
|
|
8
|
+
size?: boolean;
|
|
9
|
+
lugs?: boolean;
|
|
10
|
+
finish?: boolean;
|
|
11
|
+
price?: boolean;
|
|
12
|
+
vehicle?: boolean;
|
|
13
|
+
count?: boolean;
|
|
14
|
+
sort?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface CatalogFilterBarProps {
|
|
17
|
+
filters: CatalogFilterState;
|
|
18
|
+
setProcess: (v: Process | null) => void;
|
|
19
|
+
setSize: (v: number | null) => void;
|
|
20
|
+
setLugs: (v: number | null) => void;
|
|
21
|
+
setFinish: (v: FinishFamily | null) => void;
|
|
22
|
+
setPriceMin: (v: number | null) => void;
|
|
23
|
+
setPriceMax: (v: number | null) => void;
|
|
24
|
+
setSort: (v: SortKey) => void;
|
|
25
|
+
clearAll: () => void;
|
|
26
|
+
total: number;
|
|
27
|
+
lugOptions?: readonly number[];
|
|
28
|
+
sizeOptions?: readonly number[];
|
|
29
|
+
finishOptions?: readonly string[];
|
|
30
|
+
scrollProcess: Process | null;
|
|
31
|
+
show?: FilterBarVisibility;
|
|
32
|
+
picker?: CatalogVehicleControl;
|
|
33
|
+
resultsLink?: {
|
|
34
|
+
href: string;
|
|
35
|
+
label: string;
|
|
36
|
+
};
|
|
37
|
+
layout?: FilterBarLayout;
|
|
38
|
+
processOptions?: readonly Process[];
|
|
39
|
+
optionsReported?: boolean;
|
|
40
|
+
fieldUsage?: readonly FieldUsageAnswer[];
|
|
41
|
+
}
|
|
42
|
+
export declare function filterBarFacetsWithChoice({ processCount, sizeCount, lugCount, finishCount, optionsReported, fieldUsage, }: {
|
|
43
|
+
processCount: number;
|
|
44
|
+
sizeCount: number;
|
|
45
|
+
lugCount: number;
|
|
46
|
+
finishCount: number;
|
|
47
|
+
optionsReported: boolean;
|
|
48
|
+
fieldUsage?: readonly FieldUsageAnswer[];
|
|
49
|
+
}): {
|
|
50
|
+
process: boolean;
|
|
51
|
+
size: boolean;
|
|
52
|
+
lugs: boolean;
|
|
53
|
+
finish: boolean;
|
|
54
|
+
};
|
|
55
|
+
export default function CatalogFilterBar({ filters, setProcess, setSize, setLugs, setFinish, setPriceMin, setPriceMax, setSort, clearAll, total, scrollProcess, show, picker, lugOptions, sizeOptions, finishOptions, layout, processOptions, resultsLink, optionsReported, fieldUsage, }: CatalogFilterBarProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as e,Fragment as U,jsxs as n}from"react/jsx-runtime";import{useState as Q}from"react";import ee from"efficient-web-builder/render/components/RMark";import{FilterPill as A,OptButton as q,PanelTitle as $,PillButton as me}from"./FilterPill.js";import le from"../ThemedSelect.js";import{useCatalogFilterLabels as he}from"./CatalogFilterLabels.js";import{CatalogVehicleNextRow as ge,CatalogVehicleFieldRow as fe,CatalogVehicleRow as re,CatalogVehicleSheet as be}from"./CatalogVehiclePicker.js";import{facetFieldKey as ne,keepForFilter as xe,orderByAnswers as ve}from"../../lib/content/field-usage.js";import{PLP_ONE_VALUE_MAX as ie}from"../../lib/wheels/plp-filters.js";import{DEFAULT_FILTER_BAR_LAYOUT as Ce}from"../../lib/sections/catalog-filter-layout.js";import{SORT_LABELS as O}from"../../lib/wheels/catalog-filters.js";import{FINISH_FAMILY_SWATCHES as ae}from"../../lib/wheels/finish-defaults.js";import{VEHICLE_FIELD_ORDER as Ne}from"../../lib/wheels/vehicle-field-focus.js";const u={body:"text-[length:var(--size-body,14px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]",labelXl:"text-[length:var(--size-label,14px)]"},ye=["FusionForge®","Precision Forged","Monoblock Cast"];function te(t){return t==="FusionForge®"?n(U,{children:["FusionForge",e(ee,{})]}):t}const Y={size:ne("diameters","alloy-wheel"),finish:ne("finishes","alloy-wheel")};function oe(t,o){return ve(t,s=>Y[String(s.key)],o??[],"filterOrder")}function Fe({processCount:t,sizeCount:o,lugCount:s,finishCount:m,optionsReported:f,fieldUsage:R}){const b=M=>!f||M>ie,F=xe(R??[]);return{process:t>ie,size:F(Y.size)&&b(o),lugs:b(s),finish:F(Y.finish)&&b(m)}}function N(t,o){return t===o?null:o}function se({href:t,label:o}){return e("a",{href:t,"data-results-link":!0,className:`inline-block self-start border-0 border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg transition-colors hover:text-fg-dim`,children:o})}function ke({filters:t,setProcess:o,setSize:s,setLugs:m,setFinish:f,setPriceMin:R,setPriceMax:b,setSort:F,clearAll:M,total:x,scrollProcess:B,show:h,picker:c,lugOptions:I=[],sizeOptions:j=[],finishOptions:G,layout:de=Ce,processOptions:P=ye,resultsLink:v,optionsReported:ue=!1,fieldUsage:V}){const[p,g]=Q(null),[K,X]=Q(null),d=he(),{process:k,size:L,lugs:_,finish:T,priceMin:D,priceMax:W,sort:Z}=t,H=G?ae.filter(l=>G.includes(l.f)):ae,E=Fe({processCount:P.length,sizeCount:j.length,lugCount:I.length,finishCount:H.length,optionsReported:ue,fieldUsage:V}),i={process:(h?.process??!0)&&E.process,size:(h?.size??!0)&&E.size,lugs:(h?.lugs??!0)&&E.lugs,finish:(h?.finish??!0)&&E.finish,price:h?.price??!0,vehicle:(h?.vehicle??!0)&&!!c,count:h?.count??!0,sort:h?.sort??!0},C={process:k?1:0,size:L?1:0,lugs:_?1:0,finish:T?1:0,price:D!=null||W!=null?1:0,vehicle:c?.appliedName?1:0},J=()=>{M(),c?.clear(),g(null),X(null)};if(de==="columns"){const l=r=>X(K===r?null:r),a=[];i.vehicle&&c&&a.push(n(y,{name:"vehicle",label:d.vehicle,children:[Ne.map(r=>e(fe,{field:r,picker:c,open:K===r,onOpenRequest:l,onClose:()=>X(null)},r)),e(ge,{picker:c,onOpenRequest:l})]},"vehicle"));const z=[];return i.process&&z.push(e(y,{name:"process",label:d.process,rowsAreOptions:!0,children:P.map(r=>e(S,{active:k===r,onClick:()=>o(N(k,r)),children:te(r)},r))},"process")),i.size&&z.push(e(y,{name:"size",label:d.size,rowsAreOptions:!0,children:j.map(r=>n(S,{active:L===r,onClick:()=>s(N(L,r)),children:[r,'"']},r))},"size")),i.lugs&&z.push(e(y,{name:"lugs",label:d.lugs,rowsAreOptions:!0,children:I.map(r=>n(S,{active:_===r,onClick:()=>m(N(_,r)),children:[r,"-Lug"]},r))},"lugs")),i.finish&&z.push(e(y,{name:"finish",label:d.finish,rowsAreOptions:!0,children:H.map(r=>e(S,{active:T===r.f,onClick:()=>f(T===r.f?null:r.f),children:r.label},r.f))},"finish")),a.push(...oe(z,V)),i.price&&a.push(n(y,{name:"price",label:d.price,children:[e(pe,{label:"Min",value:D,onChange:R,ariaLabel:"Minimum price per wheel"}),e(pe,{label:"Max",value:W,onChange:b,ariaLabel:"Maximum price per wheel"})]},"price")),n("div",{className:"@container",children:[n("div",{className:"border-t border-line px-[var(--sf-site-gutter,40px)] pb-12 pt-10 @max-[720px]:px-4 @max-[720px]:pb-10 @max-[720px]:pt-8",children:[(i.count||i.sort)&&n("div",{className:"mb-10 flex flex-wrap items-center gap-x-6 gap-y-3 @max-[720px]:mb-8",children:[i.count&&n("span",{className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim`,children:[x," ",x===1?"result":"results"]}),i.sort&&n("div",{className:"ml-auto flex items-center gap-5",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-fg`,children:"Clear All"}),e(le,{value:Z,onChange:r=>F(r.target.value),className:`border-b border-line bg-transparent pb-2 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(r=>e("option",{value:r,children:O[r]},r))})]})]}),e("div",{"data-filter-columns":!0,className:`grid grid-cols-1 gap-x-[72px] gap-y-10 ${Le[a.length]??""}`,children:a}),v&&e("div",{className:"mt-10 flex",children:e(se,{href:v.href,label:v.label})})]}),i.vehicle&&c&&e(re,{picker:c,total:x})]})}const w=[];return i.process&&w.push(n(A,{name:"process",label:B?n(U,{children:[e("span",{className:"text-accent @min-[720px]:hidden",children:B==="FusionForge®"?n(U,{children:["FusionForge",e(ee,{})]}):B}),e("span",{className:"hidden @min-[720px]:inline",children:d.process})]}):d.process,badge:C.process,open:p==="process",onToggle:()=>g(p==="process"?null:"process"),children:[e($,{children:"Series · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Process series",children:P.map(l=>{const a=k===l;return e(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>o(N(k,l)),children:te(l)},l)})})]},"process")),i.size&&w.push(n(A,{name:"size",label:d.size,badge:C.size,open:p==="size",onToggle:()=>g(p==="size"?null:"size"),children:[e($,{children:"Diameter · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Wheel diameter",children:j.map(l=>{const a=L===l;return n(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>s(N(L,l)),children:[l,'"']},l)})})]},"size")),i.lugs&&w.push(n(A,{name:"lugs",label:d.lugs,badge:C.lugs,open:p==="lugs",onToggle:()=>g(p==="lugs"?null:"lugs"),children:[e($,{children:"Lug count · single-select"}),e("div",{className:"flex flex-wrap gap-2",role:"radiogroup","aria-label":"Lug count",children:I.map(l=>{const a=_===l;return n(q,{active:a,role:"radio",ariaChecked:a,onClick:()=>m(N(_,l)),children:[l,"-Lug"]},l)})})]},"lugs")),i.finish&&w.push(n(A,{name:"finish",label:d.finish,badge:C.finish,open:p==="finish",onToggle:()=>g(p==="finish"?null:"finish"),children:[e($,{children:"Color family · single-select"}),e("div",{className:"flex flex-col gap-2",role:"radiogroup","aria-label":"Finish color family",children:H.map(l=>{const a=T===l.f;return n("button",{type:"button",role:"radio","aria-checked":a,onClick:()=>f(a?null:l.f),className:["flex items-center gap-3 border px-3 py-2 text-left transition-colors",a?"border-accent text-fg":"border-line hover:border-fg-dim"].join(" "),children:[e("span",{className:"block h-3.5 w-3.5 shrink-0 rounded-full border border-line",style:{background:l.hex}}),e("span",{className:`font-mono ${u.labelSmall} uppercase tracking-[0.18em]`,style:a?void 0:{color:"color-mix(in oklab, currentColor 80%, transparent)"},children:l.label}),a&&e("span",{"aria-hidden":!0,className:"ml-auto text-accent",children:"●"})]},l.f)})})]},"finish")),n("div",{className:"@container sticky top-[67px] z-40 border-b border-line backdrop-blur",style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:[n("div",{className:"flex items-center gap-6 px-[var(--sf-site-gutter,40px)] py-4 @max-[720px]:flex-wrap @max-[720px]:items-stretch @max-[720px]:gap-2 @max-[720px]:px-4 @max-[720px]:py-3",children:[n("div",{className:"flex flex-wrap items-center gap-1 @max-[720px]:gap-2",children:[i.count&&n("span",{className:`mr-3 border-r border-line pr-4 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim @max-[720px]:hidden`,children:[x," ",x===1?"result":"results"]}),oe(w,V),i.price&&n(A,{name:"price",label:d.price,badge:C.price,open:p==="price",onToggle:()=>g(p==="price"?null:"price"),children:[e($,{children:"Price range (per wheel)"}),n("div",{className:"mt-1 flex items-center gap-2",children:[e("input",{type:"number",placeholder:"$ Min",value:D??"",onChange:l=>R(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`}),e("span",{className:`font-mono ${u.labelSmall} text-fg-dim`,children:"—"}),e("input",{type:"number",placeholder:"$ Max",value:W??"",onChange:l=>b(l.target.value?Number(l.target.value):null),className:`w-full bg-bg border border-line px-3 py-3 font-mono ${u.labelXl} text-fg`})]})]}),i.vehicle&&c&&e(me,{label:d.vehicle,badge:C.vehicle,open:p==="vehicle",onToggle:()=>g(p==="vehicle"?null:"vehicle")})]}),v&&e("div",{className:`flex items-center @max-[720px]:hidden ${i.sort?"":"ml-auto"}`,children:e(se,{href:v.href,label:v.label})}),i.sort&&n("div",{className:"ml-auto flex items-center gap-3 @max-[720px]:hidden",children:[e("button",{type:"button",onClick:J,className:`font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg-dim transition-colors hover:text-accent`,children:"Clear All"}),e(le,{value:Z,onChange:l=>F(l.target.value),className:`border border-line bg-transparent px-4 py-3 font-mono ${u.labelLarge} uppercase tracking-[0.2em] text-fg`,children:Object.keys(O).map(l=>e("option",{value:l,children:O[l]},l))})]})]}),i.vehicle&&c&&p==="vehicle"&&e(be,{picker:c,onClose:()=>g(null)}),i.vehicle&&c&&e(re,{picker:c,total:x})]})}const Le={1:"@min-[720px]:grid-cols-1",2:"@min-[720px]:grid-cols-2",3:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3",4:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-4",5:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-5",6:"@min-[720px]:grid-cols-2 @min-[1100px]:grid-cols-3 @min-[1400px]:grid-cols-6"},ce=`flex w-full items-center justify-between gap-4 border-b py-3 text-left ${u.body}`;function y({name:t,label:o,rowsAreOptions:s,children:m}){return n("div",{"data-filter-column":t,className:"flex flex-col gap-6",children:[e("div",{className:`font-mono ${u.labelXs} uppercase tracking-[0.34em] text-fg-dim`,children:o}),e("div",{role:s?"radiogroup":void 0,"aria-label":s?o:void 0,children:m})]})}function S({active:t,onClick:o,children:s}){return e("button",{type:"button",role:"radio","aria-checked":t,onClick:o,className:[ce,"transition-colors",t?"border-fg text-fg":"border-line text-fg-dim hover:text-fg"].join(" "),children:e("span",{children:s})})}function pe({label:t,value:o,onChange:s,ariaLabel:m}){return n("label",{className:`${ce} border-line`,children:[e("span",{className:"text-fg-dim",children:t}),e("input",{type:"number",inputMode:"numeric","aria-label":m,placeholder:"Any",value:o??"",onChange:f=>s(f.target.value?Number(f.target.value):null),className:"w-24 bg-transparent text-right text-fg outline-none placeholder:text-fg-dim"})]})}export{ke as default,Fe as filterBarFacetsWithChoice};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { FinishFamily, Process } from "../../lib/api/index.js";
|
|
2
|
+
import { type CatalogFilterState, type SortKey } from "../../lib/wheels/catalog-filters.js";
|
|
3
|
+
import type { VehicleFitment } from "../../lib/wheels/plp-fitment-match.js";
|
|
4
|
+
export interface CatalogVehicleState {
|
|
5
|
+
fit: VehicleFitment | null;
|
|
6
|
+
name: string;
|
|
7
|
+
resolving: boolean;
|
|
8
|
+
unresolved: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const NO_VEHICLE: CatalogVehicleState;
|
|
11
|
+
interface CatalogFilterContextValue {
|
|
12
|
+
filters: CatalogFilterState;
|
|
13
|
+
setProcess: (v: Process | null) => void;
|
|
14
|
+
setSize: (v: number | null) => void;
|
|
15
|
+
setLugs: (v: number | null) => void;
|
|
16
|
+
setFinish: (v: FinishFamily | null) => void;
|
|
17
|
+
setPriceMin: (v: number | null) => void;
|
|
18
|
+
setPriceMax: (v: number | null) => void;
|
|
19
|
+
setSort: (v: SortKey) => void;
|
|
20
|
+
clearAll: () => void;
|
|
21
|
+
reportCount: (id: string, count: number) => void;
|
|
22
|
+
total: number;
|
|
23
|
+
reportLugs: (id: string, counts: readonly number[]) => void;
|
|
24
|
+
lugOptions: number[];
|
|
25
|
+
reportSizes: (id: string, sizes: readonly number[]) => void;
|
|
26
|
+
sizeOptions: number[];
|
|
27
|
+
reportFinishes: (id: string, families: readonly string[]) => void;
|
|
28
|
+
finishOptions: string[];
|
|
29
|
+
optionsReported: boolean;
|
|
30
|
+
scrollProcess: Process | null;
|
|
31
|
+
vehicle: CatalogVehicleState;
|
|
32
|
+
publishVehicle: (v: CatalogVehicleState) => void;
|
|
33
|
+
}
|
|
34
|
+
export declare const COLLECTION_ATTR = "data-catalog-collection";
|
|
35
|
+
export declare function CatalogFilterProvider({ children }: {
|
|
36
|
+
children: React.ReactNode;
|
|
37
|
+
}): import("react").JSX.Element;
|
|
38
|
+
export declare function useCatalogFilter(): CatalogFilterContextValue;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as W}from"react/jsx-runtime";import{createContext as X,useCallback as n,useContext as Z,useEffect as ee,useMemo as te,useRef as b,useState as a}from"react";import{EMPTY_FILTERS as L}from"../../lib/wheels/catalog-filters.js";import{compareFinishFamily as se}from"../../lib/wheels/finish-defaults.js";const j={fit:null,name:"",resolving:!1,unresolved:!1};function oe(o,s){return o.fit===s.fit&&o.name===s.name&&o.resolving===s.resolving&&o.unresolved===s.unresolved}const r=()=>{},k=X({filters:L,setProcess:r,setSize:r,setLugs:r,setFinish:r,setPriceMin:r,setPriceMax:r,setSort:r,clearAll:r,reportCount:r,total:0,reportLugs:r,lugOptions:[],reportSizes:r,sizeOptions:[],reportFinishes:r,finishOptions:[],optionsReported:!1,scrollProcess:null,vehicle:j,publishVehicle:r}),q="data-catalog-collection",B=(o,s)=>o-s;function D(o,s){return o.length===s.length&&o.every((i,u)=>i===s[u])}function R(o){const s=b(new Map),[i,u]=a([]),g=n((p,f)=>{const v=s.current.get(p);if(v&&D(v,f))return;s.current.set(p,f);const m=new Set;for(const c of s.current.values())for(const h of c)m.add(h);const d=[...m].sort(o);u(c=>D(c,d)?c:d)},[o]);return[i,g]}function le({children:o}){const[s,i]=a(L),u=n(t=>i(e=>({...e,process:t})),[]),g=n(t=>i(e=>({...e,size:t})),[]),p=n(t=>i(e=>({...e,lugs:t})),[]),f=n(t=>i(e=>({...e,finish:t})),[]),v=n(t=>i(e=>({...e,priceMin:t})),[]),m=n(t=>i(e=>({...e,priceMax:t})),[]),d=n(t=>i(e=>({...e,sort:t})),[]),c=n(()=>i(t=>({...L,sort:t.sort})),[]),[h,H]=a(j),x=n(t=>{H(e=>oe(e,t)?e:t)},[]),C=b(new Map),[P,$]=a(0),w=n((t,e)=>{if(C.current.get(t)===e)return;C.current.set(t,e);let l=0;for(const S of C.current.values())l+=S;$(l)},[]),[O,z]=R(B),[M,T]=R(B),[A,G]=R(se),[I,E]=a(!1),_=n((t,e)=>{E(!0),z(t,e)},[z]),V=n((t,e)=>{E(!0),T(t,e)},[T]),y=n((t,e)=>{E(!0),G(t,e)},[G]),[N,J]=a(null);ee(()=>{let e=0;const F=()=>{e=0;let S=null;const Q=document.querySelectorAll(`[${q}]`);for(const U of Q){const Y=U.getBoundingClientRect();if(Y.top<=140&&Y.bottom>140){S=U.getAttribute(q)??null;break}}J(S)},l=()=>{e||(e=requestAnimationFrame(F))};return F(),window.addEventListener("scroll",l,{passive:!0}),window.addEventListener("resize",l),()=>{window.removeEventListener("scroll",l),window.removeEventListener("resize",l),e&&cancelAnimationFrame(e)}},[]);const K=te(()=>({filters:s,setProcess:u,setSize:g,setLugs:p,setFinish:f,setPriceMin:v,setPriceMax:m,setSort:d,clearAll:c,reportCount:w,total:P,reportLugs:_,lugOptions:O,reportSizes:V,sizeOptions:M,reportFinishes:y,finishOptions:A,optionsReported:I,scrollProcess:N,vehicle:h,publishVehicle:x}),[s,u,g,p,f,v,m,d,c,w,P,_,O,V,M,y,A,I,N,h,x]);return W(k.Provider,{value:K,children:o})}function ue(){return Z(k)}export{q as COLLECTION_ATTR,le as CatalogFilterProvider,j as NO_VEHICLE,ue as useCatalogFilter};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type CatalogFilterLabelOverrides, type CatalogFilterLabels } from "../../lib/content/catalog-filter-labels.js";
|
|
2
|
+
export declare function CatalogFilterLabelsProvider({ labels, children, }: {
|
|
3
|
+
labels?: CatalogFilterLabelOverrides | null;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react").JSX.Element;
|
|
6
|
+
export declare function useCatalogFilterLabels(): CatalogFilterLabels;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as a}from"react/jsx-runtime";import{createContext as l,useContext as i,useMemo as n}from"react";import{DEFAULT_CATALOG_FILTER_LABELS as s,resolveCatalogFilterLabels as u}from"../../lib/content/catalog-filter-labels.js";const t=l(s);function m({labels:e,children:o}){const r=n(()=>u(e),[e]);return a(t.Provider,{value:r,children:o})}function x(){return i(t)}export{m as CatalogFilterLabelsProvider,x as useCatalogFilterLabels};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { VehicleControl } from "../fitment/vehicle-control.js";
|
|
2
|
+
import { type VehicleField } from "../../lib/wheels/vehicle-field-focus.js";
|
|
3
|
+
export type CatalogVehicleControl = VehicleControl;
|
|
4
|
+
export declare function CatalogVehicleSheet({ picker, onClose, }: {
|
|
5
|
+
picker: CatalogVehicleControl;
|
|
6
|
+
onClose: () => void;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
export declare function CatalogVehicleFieldRow({ field, picker, open, onOpenRequest, onClose, }: {
|
|
9
|
+
field: VehicleField;
|
|
10
|
+
picker: CatalogVehicleControl;
|
|
11
|
+
open: boolean;
|
|
12
|
+
onOpenRequest: (target: VehicleField) => void;
|
|
13
|
+
onClose: () => void;
|
|
14
|
+
}): import("react").JSX.Element;
|
|
15
|
+
export declare function CatalogVehicleNextRow({ picker, onOpenRequest, }: {
|
|
16
|
+
picker: CatalogVehicleControl;
|
|
17
|
+
onOpenRequest: (target: VehicleField) => void;
|
|
18
|
+
}): import("react").JSX.Element | null;
|
|
19
|
+
export declare function CatalogVehicleRow({ picker, total, }: {
|
|
20
|
+
picker: CatalogVehicleControl;
|
|
21
|
+
total: number;
|
|
22
|
+
}): import("react").JSX.Element | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as t,jsxs as m,Fragment as w}from"react/jsx-runtime";import{useEffect as N,useRef as $}from"react";import C from"../fitment/FitmentPickerGrid.js";import{pickerItems as E}from"../fitment/PickerField.js";import{ThemedSelectList as L,useThemedSelect as I}from"../ThemedSelect.js";import{VEHICLE_FIELD_NEEDED as V,vehicleLevelNames as F,vehicleLevelOptions as R,vehicleLevelSetters as S,vehicleLevelStates as _,vehicleLevelValues as D}from"../fitment/vehicle-level-state.js";import{fitmentChecks as j}from"../../lib/wheels/plp-fitment-match.js";import{isCompleteVehicle as v}from"../../lib/wheels/plp-vehicle-params.js";import{firstUnansweredVehicleField as T,resolveVehicleFocus as z,VEHICLE_FIELD_LABEL as P}from"../../lib/wheels/vehicle-field-focus.js";const n={body:"text-[length:var(--size-body,14px)]",labelSmall:"text-[length:var(--size-label,10px)]",label:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]"};function Y({picker:a,onClose:c}){const{cascade:e}=a,l=$(v(e.vehicle));return N(()=>{const s=v(e.vehicle);s&&!l.current&&c(),l.current=s},[e.vehicle,c]),m("div",{className:"border-t border-line bg-surface px-[var(--sf-site-gutter,40px)] py-4 max-[720px]:px-4",children:[t("div",{className:`mb-3 font-mono ${n.labelLarge} uppercase tracking-[0.32em] text-fg-dim`,children:"Your car · only wheels that bolt on"}),t(C,{cascade:e,compact:!0}),e.cascadeError&&t("p",{className:`mt-3 font-mono ${n.label} uppercase tracking-[0.16em] text-fg-dim`,children:"Vehicle data is unavailable right now — browse all wheels and we'll help you check fitment at checkout."}),t("div",{className:"mt-4 flex flex-wrap items-center gap-3",children:t("button",{type:"button",onClick:c,className:`cursor-pointer font-mono ${n.label} uppercase tracking-[0.16em] text-fg-dim underline-offset-4 hover:text-fg hover:underline`,children:"Close"})})]})}const k=`flex w-full items-center justify-between gap-4 border-b py-3 text-left ${n.body} transition-colors`;function Z({field:a,picker:c,open:e,onOpenRequest:l,onClose:s}){const{cascade:o}=c,p=_(o),d=R(o)[a],u=S(o)[a],i=D(o)[a],x=F(o)[a],g=P[a],h=z(a,o.vehicle),f=x||p[a].placeholder,b=E(d,p[a].placeholder),r=I({items:b,value:i,onPick:u,open:e,onOpen:()=>l(h),onClose:s});return m("div",{ref:r.wrapRef,className:"relative",children:[m("button",{ref:y=>{r.triggerRef.current=y},type:"button","data-vehicle-field":a,"aria-haspopup":"listbox","aria-expanded":e,"aria-controls":e?r.listId:void 0,"aria-activedescendant":r.activeId,"aria-label":`${g}, ${f} — pick your ${h}`,onClick:()=>l(h),onKeyDown:r.onTriggerKeyDown,className:`${k} ${e?"border-fg text-fg":"border-line"}`,children:[t("span",{className:"text-fg-dim",children:g}),t("span",{"data-vehicle-value":f,className:`truncate ${x?"text-fg":"text-fg-dim"}`,children:f})]}),e&&t(L,{id:r.listId,tone:"hairline",items:b,value:i,focusIdx:r.focusIdx,onFocus:r.setFocusIdx,onPick:r.pick,listRef:r.listRef})]})}function J({picker:a,onOpenRequest:c}){const e=T(a.cascade.vehicle);if(!e)return null;const l=V[e];return t("button",{type:"button","data-vehicle-next":!0,"aria-label":`${l} — pick your ${e}`,onClick:()=>c(e),className:`${k} border-line text-fg-dim`,children:t("span",{"data-vehicle-value":l,children:l})})}function M({picker:a,total:c}){const{appliedName:e,fit:l,resolving:s,unresolved:o,clear:p}=a;if(!e)return null;const d=j(l),u=l!==null&&!s&&c===0;return m("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-2 border-t border-line px-[var(--sf-site-gutter,40px)] py-3 max-[720px]:px-4",children:[m("span",{className:`inline-flex items-center gap-2 bg-accent px-3 py-2 font-mono ${n.label} uppercase tracking-[0.14em] text-bg`,children:[e,t("button",{type:"button",onClick:p,"aria-label":`Clear ${e} and show all wheels`,className:"cursor-pointer leading-none text-bg hover:opacity-70",children:"✕"})]}),s?t("span",{className:`font-mono ${n.label} uppercase tracking-[0.16em] text-fg-dim`,children:"Checking fitment…"}):o?t("span",{className:`font-mono ${n.label} uppercase tracking-[0.16em] text-fg-dim`,children:"We have no fitment data for this car — showing every wheel"}):t(w,{children:d.map(i=>i.value!==null?t("span",{className:`border border-line px-2 py-1 font-mono ${n.labelSmall} uppercase tracking-[0.14em] text-fg-dim`,children:i.value},i.key):m("span",{className:`border border-dashed border-line px-2 py-1 font-mono ${n.labelSmall} uppercase tracking-[0.14em] text-fg-dim`,children:[i.name," not published — not checked"]},i.key))}),u&&m("span",{className:`font-mono ${n.label} uppercase tracking-[0.16em] text-fg-dim`,children:["No wheels here fit this car —"," ",t("button",{type:"button",onClick:p,className:"cursor-pointer uppercase text-accent underline underline-offset-4",children:"show all wheels"})]})]})}export{Z as CatalogVehicleFieldRow,J as CatalogVehicleNextRow,M as CatalogVehicleRow,Y as CatalogVehicleSheet};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type React from "react";
|
|
2
|
+
export declare function PillButton({ label, badge, open, onToggle, }: {
|
|
3
|
+
label: React.ReactNode;
|
|
4
|
+
badge: number;
|
|
5
|
+
open: boolean;
|
|
6
|
+
onToggle: () => void;
|
|
7
|
+
}): React.JSX.Element;
|
|
8
|
+
export declare function FilterPill({ label, badge, open, onToggle, children, }: {
|
|
9
|
+
name: string;
|
|
10
|
+
label: React.ReactNode;
|
|
11
|
+
badge: number;
|
|
12
|
+
open: boolean;
|
|
13
|
+
onToggle: () => void;
|
|
14
|
+
children: React.ReactNode;
|
|
15
|
+
}): React.JSX.Element;
|
|
16
|
+
export declare function PanelTitle({ children }: {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
}): React.JSX.Element;
|
|
19
|
+
export declare function OptButton({ active, onClick, children, role, ariaChecked, }: {
|
|
20
|
+
active: boolean;
|
|
21
|
+
onClick: () => void;
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
role?: "radio";
|
|
24
|
+
ariaChecked?: boolean;
|
|
25
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as a,jsxs as i}from"react/jsx-runtime";const l={body:"text-[length:var(--size-body,11px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function s({label:e,badge:r,open:t,onToggle:n}){const o=r>0;return i("button",{type:"button",onClick:n,className:[`inline-flex items-center gap-2 whitespace-nowrap border px-4 py-3 font-mono ${l.labelLarge} uppercase tracking-[0.2em] transition-colors`,o?"border-accent text-accent":"border-line hover:border-fg-dim"].join(" "),style:o?void 0:{color:"color-mix(in oklab, currentColor 80%, transparent)"},children:[e,r>0&&a("span",{className:`px-2 ${l.body} tracking-[0.1em] text-bg`,style:{background:"var(--accent)"},children:r}),a("span",{className:`${l.body} opacity-65 transition-transform ${t?"rotate-180":""}`,children:"▾"})]})}function d({label:e,badge:r,open:t,onToggle:n,children:o}){return i("div",{className:"relative",children:[a(s,{label:e,badge:r,open:t,onToggle:n}),t&&a("div",{className:"absolute left-0 top-[calc(100%+6px)] z-[60] min-w-[280px] border border-line bg-surface p-5 shadow-[0_24px_60px_rgba(0,0,0,0.4)]",onClick:c=>c.stopPropagation(),children:o})]})}function b({children:e}){return a("div",{className:`mb-3 font-mono ${l.labelSmall} uppercase tracking-[0.32em] text-fg-dim`,children:e})}function x({active:e,onClick:r,children:t,role:n,ariaChecked:o}){return a("button",{type:"button",role:n,"aria-checked":n==="radio"?o:void 0,onClick:r,className:[`border px-3 py-2 font-mono ${l.labelLarge} uppercase tracking-[0.18em] transition-colors`,e?"border-accent bg-accent text-bg":"border-line hover:border-fg-dim"].join(" "),style:e?void 0:{color:"color-mix(in oklab, currentColor 75%, transparent)"},children:t})}export{d as FilterPill,x as OptButton,b as PanelTitle,s as PillButton};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type MenuItemLike, type SiteMenuLink } from "../../lib/catalog/listing-links.js";
|
|
2
|
+
export declare function SiteMenuLinksProvider({ items, children, }: {
|
|
3
|
+
items?: readonly MenuItemLike[] | null;
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react").JSX.Element;
|
|
6
|
+
export declare function useSiteMenuLinks(): readonly SiteMenuLink[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as r}from"react/jsx-runtime";import{createContext as i,useContext as u,useMemo as s}from"react";import{flattenMenuLinks as c}from"../../lib/catalog/listing-links.js";const t=i([]);function a({items:e,children:n}){const o=s(()=>c(e),[e]);return r(t.Provider,{value:o,children:n})}function l(){return u(t)}export{a as SiteMenuLinksProvider,l as useSiteMenuLinks};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type SiteIdentity } from "../../lib/content/site.js";
|
|
2
|
+
type PayKey = "card" | "paypal" | "afterpay" | "square" | "gocardless" | "zip" | "klarna" | "bank";
|
|
3
|
+
interface PayOption {
|
|
4
|
+
key: PayKey;
|
|
5
|
+
title: React.ReactNode;
|
|
6
|
+
body: React.ReactNode;
|
|
7
|
+
price: React.ReactNode;
|
|
8
|
+
tag?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function buildPayOptions(site: SiteIdentity, { canParkContext, }?: {
|
|
11
|
+
canParkContext: boolean;
|
|
12
|
+
}): PayOption[];
|
|
13
|
+
export default function CheckoutPageClient({ site, logo, preview, }: {
|
|
14
|
+
site: SiteIdentity;
|
|
15
|
+
logo?: {
|
|
16
|
+
url: string | null;
|
|
17
|
+
reversed: string | null;
|
|
18
|
+
inkIsDark: boolean | null;
|
|
19
|
+
reverse: boolean;
|
|
20
|
+
size: "small" | "medium" | "large";
|
|
21
|
+
sizePx: number | null;
|
|
22
|
+
} | null;
|
|
23
|
+
preview?: boolean;
|
|
24
|
+
}): import("react").JSX.Element;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";import{jsx as e,Fragment as A,jsxs as r}from"react/jsx-runtime";import Et from"next/image";import U from"next/link";import{useEffect as R,useMemo as oe,useRef as D,useState as s}from"react";import{Elements as It,PaymentElement as _t,useElements as jt,useStripe as Rt}from"@stripe/react-stripe-js";import{loadStripe as Kt}from"@stripe/stripe-js";import{isOrderable as et,lineTotal as Tt,useCart as tt}from"../CartContext.js";import{useCurrency as W}from"../CurrencyContext.js";import{FREE_PRICE as Ae}from"../../lib/wheels/price-display.js";import{resolveCopyright as Ot}from"../../lib/content/site.js";import{getClickIds as qt}from"../../lib/click-ids.js";import{adConsentForOrder as Bt}from"../../lib/consent/choice.js";import{trackBeginCheckout as Lt,trackPurchase as $t}from"../../lib/google-tag.js";import{trackMetaPurchase as Yt}from"../../lib/meta-pixel.js";import{ApiError as Ee,api as Q,products as S}from"../../lib/api/index.js";import{uuid as zt}from"../../lib/uuid.js";import{orderLinesForSets as Ft}from"../../lib/commerce.js";import{canPersist as Mt,safeSessionStorage as L}from"efficient-web-builder/format/lib/safe-storage";import{AFTERPAY_CONTEXT_KEY as Ut,AFTERPAY_RETURN as Dt,GOCARDLESS_CONTEXT_KEY as Ie,KLARNA_CONTEXT_KEY as _e,ZIP_CONTEXT_KEY as Ht,ZIP_RETURN as Gt,runWalletReturn as nt}from"../../lib/checkout/wallet-return.js";import Wt from"../CouponField.js";import{COUPON_DEFERRED_TOTAL as Zt,couponCodeForOrder as Xt,couponRefusedByOrder as Jt}from"../../lib/cart/coupon-preview.js";import{shippingWords as Vt,TAX_PENDING as Qt}from"../../lib/cart/shipping-status.js";import{DEFAULT_FINISH_COLOR as en}from"../../lib/wheels/finish-defaults.js";import tn from"efficient-web-builder/render/components/Logo";import rt from"../ThemedSelect.js";import T from"../WebFormField.js";import nn from"../WheelSvg.js";function at(n){const o=n.indexOf(`
|
|
2
|
+
`);return o===-1?[n,""]:[n.slice(0,o),n.slice(o+1)]}function ot(n,{canParkContext:o}={canParkContext:!0}){const d=n.paymentMethods,i=[];return d.includes("card")&&i.push({key:"card",title:"Card",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"VISA · MC · AMEX"})}),d.includes("paypal")&&n.paypalClientId&&i.push({key:"paypal",title:"PayPal",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAYPAL · CARDS"})}),d.includes("afterpay")&&i.push({key:"afterpay",title:"Afterpay",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"4 × INTEREST-FREE"})}),d.includes("square")&&n.squareApplicationId&&n.squareLocationId&&i.push({key:"square",title:"Card (Square)",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"VISA · MC · AMEX"})}),d.includes("gocardless")&&o&&i.push({key:"gocardless",title:"Bank Direct Debit",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY BY BANK"})}),d.includes("zip")&&i.push({key:"zip",title:"Zip",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY IN 4"})}),d.includes("klarna")&&o&&i.push({key:"klarna",title:"Klarna",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-accent",children:"PAY LATER"})}),i.push({key:"bank",title:"Bank transfer",body:null,price:e("span",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Invoiced"})}),i}function rn({site:n,logo:o,preview:d=!1}){const{items:i,totals:a,coupon:l,refuseCoupon:u,deliveryOptions:h,shippingMethodId:g,setShippingMethodId:x,identify:w,clearCapturedCart:N}=tt(),m=h.find(t=>t.id===g)?.pickupLocation??null,{country:P,countries:I,activeCountry:k,formatMoney:v}=W(),[y,O]=s(()=>ot(n)[0].key),[C,M]=s(!0);R(()=>{M(Mt(L))},[]);const[z,se]=s(!1),[Z,Ke]=s(""),[X,Te]=s(""),[le,Oe]=s(""),[de,pe]=s(""),[me,ue]=s(""),[fe,ge]=s(""),[he,xe]=s(""),[ye,be]=s(""),[F,ke]=s(()=>P||I[0]?.code||""),[Ne,ve]=s(""),[we,qe]=s([]),dt=oe(()=>I.find(t=>t.code===F)??k,[I,F,k])?.postalLabel||"Postal Code",pt=we[0]?.divisionType||"State / Province";R(()=>{if(!F){qe([]);return}let t=!1;return S.listCountrySubdivisions(F).then(c=>{t||(qe(c),ve(""))}),()=>{t=!0}},[F]);const[$,Be]=s(null),[Le,$e]=s([]),[ee,te]=s("new"),[Ce,Ye]=s(!1),[ze,mt]=s("Home"),[Fe,Me]=s(null),[_]=s(()=>zt()),[ne,j]=s(null),[Ue,J]=s(null),[De,ut]=s(null),[ft,gt]=s(!1),[ht,xt]=s(!1),[q,Pe]=s(null),[He,G]=s(!1),[Ge,Y]=s(null),[yt,bt]=s(!1),[kt,We]=s(!1),[Nt,vt]=s(!1),[wt,Ze]=s(!1),Xe=D(!1);R(()=>{d||Xe.current||!i.some(et)||(Xe.current=!0,Lt({lines:i,currency:a.currency,value:a.subtotal-a.discount,coupon:l?.valid?l.code:void 0}))},[i,a,l,d]),R(()=>{w(Z,X.trim()||void 0)},[Z,X,w]);const Je=D(null),[re,Ct]=s(null);R(()=>{const t=Je.current;if(!re||!t)return;const c=()=>t.style.setProperty("--sf-checkout-header-h",`${re.offsetHeight}px`);c();const p=new ResizeObserver(c);return p.observe(re),()=>p.disconnect()},[re]),R(()=>{const t=p=>({setConfirming:p,land:j,markPaid:()=>G(!0),note:Y,fail:J,clearCart:N}),c={search:window.location.search,storage:L,scrubQuery:()=>window.history.replaceState(null,"",window.location.pathname)};nt(Dt,{...c,capture:S.captureAfterpayPayment,page:t(bt)}),nt(Gt,{...c,capture:S.captureZipPayment,page:t(vt)})},[]),R(()=>{const c=new URLSearchParams(window.location.search).get("gocardless");if(c!=="confirm"&&c!=="cancel")return;const p=L.getItem(Ie);if(L.removeItem(Ie),window.history.replaceState(null,"",window.location.pathname),!p)return;let b;try{b=JSON.parse(p)}catch{return}if(N(),c==="cancel"){Y("The direct debit was not set up — our team will follow up on payment."),j(b.confirmation);return}We(!0),S.completeGocardlessPayment({idempotencyKey:b.idempotencyKey}).then(f=>{f.status==="paid"?G(!0):f.status==="declined"?Y("The direct debit was declined — our team will follow up on payment."):Y("Your direct debit is set up — the payment is collecting and will clear in a few days.")}).catch(()=>{Y("We could not confirm the direct debit — our team will follow up on payment.")}).finally(()=>{j(b.confirmation),We(!1)})},[]),R(()=>{const t=new URLSearchParams(window.location.search),c=t.get("klarna");if(c!=="confirm"&&c!=="cancel")return;const p=L.getItem(_e);L.removeItem(_e);const b=t.get("authorization_token");if(window.history.replaceState(null,"",window.location.pathname),!p)return;let f;try{f=JSON.parse(p)}catch{return}if(N(),c==="cancel"||!b){Y("The Klarna payment was not completed — our team will follow up on payment."),j(f.confirmation);return}Ze(!0),S.captureKlarnaPayment({idempotencyKey:f.idempotencyKey,authorizationToken:b}).then(E=>{E.status==="paid"?G(!0):E.status==="declined"?Y("Klarna declined the payment — our team will follow up on payment."):Y("Your Klarna payment is being reviewed — we'll confirm the outcome shortly.")}).catch(()=>{Y("We could not confirm the Klarna payment — our team will follow up on payment.")}).finally(()=>{j(f.confirmation),Ze(!1)})},[]);function Ve(t){const[c,p]=at(t.address);pe(c),ue(p),ge(t.city),xe(t.zip_code),t.country&&ke(t.country),t.phone&&be(t.phone)}R(()=>{let t=!1;return(async()=>{try{const[c,p,b]=await Promise.all([Q.me(),Q.myProfile().catch(()=>null),Q.myAddresses().catch(()=>[])]);if(t)return;Be(c);const f=b.filter(V=>V.is_active);$e(f),Ke(c.email);const E=(p?.contact_name??"").split(/\s+/);Te(c.first_name||E[0]||""),Oe(c.last_name||E.slice(1).join(" "));const B=c.phone||p?.phone;B&&be(B);const Se=f.find(V=>V.id===c.default_delivery_location)??f[0];if(Se)te(Se.id),Ve(Se);else if(p){const[V,At]=at(p.address??"");pe(V),ue(At),ge(p.city??""),xe(p.zip_code??""),p.country&&ke(p.country)}}catch{}})(),()=>{t=!0}},[]);function Pt(){Q.logout(),Be(null),$e([]),te("new"),Ye(!1)}const ae=oe(()=>ot(n,{canParkContext:C}),[n,C]);R(()=>{ae.some(t=>t.key===y)||O(ae[0].key)},[ae,y]);const Qe=me.trim()?`${de}
|
|
3
|
+
${me.trim()}`:de;async function St(){if(d||z||i.length===0||a.repricing)return;const t=i.filter(et).flatMap(c=>Ft(c.components,c.qty));if(t.length===0){J("Pick a size on each wheel's product page before checking out.");return}se(!0),J(null);try{const c=$?S.createOrderAuthed:S.createOrder,p=Bt(),b=await c({customer:{email:Z,name:`${X} ${le}`.trim(),phone:ye.trim()||void 0,address:Qe,city:fe,state:Ne||void 0,zipCode:he,country:F},items:t,currency:a.currency,idempotencyKey:_,shippingMethodId:g??void 0,couponCode:Xt(l),...p==="denied"?{}:qt(),...p?{adConsent:p}:{}});if($t({confirmation:b,lines:i,adsSendTo:n.googleAdsId&&n.googleAdsConversionLabel?`${n.googleAdsId}/${n.googleAdsConversionLabel}`:null}),Yt({confirmation:b,lines:i}),N(),$&&Ce&&ee==="new")try{await Q.createAddress({label:ze.trim()||"Home",contact_name:`${X} ${le}`.trim(),phone:ye.trim(),address:Qe,city:fe,zip_code:he,country:F}),Me("Address saved to your account.")}catch{Me("We couldn't save the address to your account — you can add it under Account → Addresses.")}if(y==="card"&&n.paymentMethods.includes("card")){const f=await S.createPaymentIntent({idempotencyKey:_});Pe(b),ut(f)}else if(y==="paypal"&&n.paymentMethods.includes("paypal"))Pe(b),gt(!0);else if(y==="afterpay"&&n.paymentMethods.includes("afterpay")){const f=window.location.origin,E=await S.createAfterpayCheckout({idempotencyKey:_,confirmUrl:`${f}/checkout?afterpay=confirm`,cancelUrl:`${f}/checkout?afterpay=cancel`}),B={idempotencyKey:_,confirmation:b};L.setItem(Ut,JSON.stringify(B)),window.location.assign(E.redirectCheckoutUrl);return}else if(y==="square"&&n.paymentMethods.includes("square"))Pe(b),xt(!0);else if(y==="gocardless"&&n.paymentMethods.includes("gocardless")){const f=window.location.origin,E=await S.createGocardlessBillingRequest({idempotencyKey:_,confirmUrl:`${f}/checkout?gocardless=confirm`,cancelUrl:`${f}/checkout?gocardless=cancel`}),B={idempotencyKey:_,confirmation:b};L.setItem(Ie,JSON.stringify(B)),window.location.assign(E.authorisationUrl);return}else if(y==="zip"&&n.paymentMethods.includes("zip")){const f=window.location.origin,E=await S.createZipCheckout({idempotencyKey:_,redirectUrl:`${f}/checkout?zip=return`}),B={idempotencyKey:_,confirmation:b};L.setItem(Ht,JSON.stringify(B)),window.location.assign(E.redirectUrl);return}else if(y==="klarna"&&n.paymentMethods.includes("klarna")){const f=window.location.origin,E=await S.createKlarnaCheckout({idempotencyKey:_,confirmUrl:`${f}/checkout?klarna=confirm`,cancelUrl:`${f}/checkout?klarna=cancel`}),B={idempotencyKey:_,confirmation:b};L.setItem(_e,JSON.stringify(B)),window.location.assign(E.redirectUrl);return}else j(b)}catch(c){const p=Jt(c);p?(u(p),J(`${p} Your order has not been placed. Place it again to continue without the code.`)):J(c instanceof Ee?c.message:"Could not place the order. Please try again."),se(!1)}}return ne?r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[e("h1",{className:"font-display text-3xl",children:He?"Payment received":"Order received"}),r("p",{className:"text-fg-dim",children:[He?r(A,{children:["Thank you — your payment for order"," ",e("span",{className:"font-mono text-fg",children:ne.orderNumber})," has gone through."," "]}):r(A,{children:["Thank you — your order ",e("span",{className:"font-mono text-fg",children:ne.orderNumber})," is being reviewed by our team."," "]}),$?r(A,{children:["Track it under"," ",e(U,{href:"/account/orders",className:"text-accent underline",children:"your orders"}),"."]}):e(A,{children:"We’ve emailed you a link to set a password and track it."})]}),Ge&&e("p",{className:"text-sm text-fg-dim",children:Ge}),Fe&&e("p",{className:"text-sm text-fg-dim",children:Fe}),!$&&r("p",{className:"text-sm text-fg-dim",children:["You can also"," ",e(U,{href:`/track?order=${encodeURIComponent(ne.orderNumber)}`,className:"text-accent underline",children:"track this order"})," ","anytime with just your order number and email — no password needed."]}),e(U,{href:"/wheels",className:"mt-2 border-2 border-line px-6 py-3 font-mono text-[12px] uppercase tracking-[0.24em] hover:border-accent",children:"Continue browsing"})]}):yt?r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[e("h1",{className:"font-display text-3xl",children:"Confirming your payment…"}),e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Afterpay — one moment."})]}):kt?r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[e("h1",{className:"font-display text-3xl",children:"Setting up your direct debit…"}),e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Confirming with GoCardless — one moment."})]}):Nt?r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[e("h1",{className:"font-display text-3xl",children:"Confirming your payment…"}),e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Zip — one moment."})]}):wt?r("div",{className:"flex min-h-screen flex-col items-center justify-center gap-4 bg-bg px-6 text-center text-fg",children:[e("h1",{className:"font-display text-3xl",children:"Confirming your payment…"}),e("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:"Checking with Klarna — one moment."})]}):De?e(an,{payment:De,onPaid:()=>{G(!0),j(q)},onSkip:()=>j(q)}):ft&&q?e(sn,{confirmation:q,clientId:n.paypalClientId??"",idemKey:_,onPaid:()=>{G(!0),j(q)},onSkip:()=>j(q)}):ht&&q?e(dn,{confirmation:q,applicationId:n.squareApplicationId??"",locationId:n.squareLocationId??"",environment:n.squareEnvironment??"production",idemKey:_,onPaid:()=>{G(!0),j(q)},onSkip:()=>j(q)}):r("div",{ref:Je,className:"bg-bg text-fg",children:[r("header",{ref:Ct,className:"sticky top-0 z-30 grid grid-cols-[1fr_auto_1fr] items-center gap-8 border-b border-line px-[var(--sf-site-gutter,40px)] py-6 backdrop-blur-md max-[640px]:px-[min(20px,var(--sf-site-gutter,40px))] max-[640px]:py-4",style:{background:"color-mix(in oklab, var(--bg) 92%, transparent)"},children:[r(U,{href:"/",className:"inline-flex items-center gap-3 font-mono text-[13px] uppercase tracking-[0.26em] text-fg-dim transition-colors hover:text-accent",children:["←",e("span",{className:"max-[640px]:hidden",children:"Back to shop"})]}),e(U,{href:"/","aria-label":`${n.name} home`,className:"inline-flex items-center justify-center",children:e(tn,{variant:"header",scrolled:!0,src:o?.url??null,reverse:o?.reverse??!1,reversedSrc:o?.reversed??null,inkIsDark:o?.inkIsDark??null,size:o?.size??"medium",sizePx:o?.sizePx??null,siteName:n.name})}),n.cardPayments?r("span",{className:"flex items-center justify-end gap-3 font-mono text-[12px] uppercase tracking-[0.26em] text-fg-dim",children:[e("span",{className:"text-green",children:"●"}),e("span",{className:"max-[640px]:hidden",children:"Encrypted ·"})," Stripe"]}):e("span",{})]}),r("section",{className:"mx-auto flex max-w-[var(--sf-site-width,1600px)] flex-wrap items-center justify-between gap-x-8 gap-y-3 border-b border-line bg-surface px-[var(--sf-site-gutter,40px)] py-4 font-mono text-[13px] font-medium uppercase tracking-[0.24em] text-fg max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))]",children:[e("span",{className:"inline-flex items-center bg-accent px-3 py-1 font-bold text-bg",children:"Checkout"}),e("nav",{"aria-label":"Checkout steps",className:"flex flex-wrap items-center gap-5",children:[{n:"01",label:"Cart",state:"done"},{n:"02",label:"Ship & pay",state:"active"},{n:"03",label:"Confirmed",state:"pending"}].map(t=>r("span",{className:["relative flex items-center gap-2 transition-colors",t.state==="pending"?"text-fg-dim":"text-fg",t.state==="active"?"font-bold after:absolute after:inset-x-0 after:-bottom-1 after:h-[2px] after:bg-accent":""].join(" "),children:[e("span",{className:t.state==="done"?"text-accent font-bold":"",children:t.n}),e("span",{children:t.label})]},t.n))})]}),r("main",{className:"mx-auto grid max-w-[var(--sf-site-width,1600px)] grid-cols-[1fr_420px] items-start gap-16 px-[var(--sf-site-gutter,40px)] pt-10 pb-[100px] max-[1100px]:grid-cols-1 max-[1100px]:gap-10 max-[1100px]:px-[min(24px,var(--sf-site-gutter,40px))] max-[1100px]:pt-8 max-[1100px]:pb-20",children:[r("div",{children:[r(ie,{num:"N° 01",title:"Contact",children:[e(T,{label:"Email",hint:$?r(A,{children:["Signed in ·"," ",e("button",{type:"button",onClick:Pt,className:"underline transition-colors hover:text-accent",children:"Not you? Sign out"})]}):void 0,children:e("input",{type:"email",value:Z,onChange:t=>Ke(t.target.value),placeholder:"you@example.com",readOnly:$!==null,className:K+($?" opacity-70":"")})}),r(ct,{children:[e(T,{label:"First name",children:e("input",{type:"text",value:X,onChange:t=>Te(t.target.value),className:K})}),e(T,{label:"Last name",children:e("input",{type:"text",value:le,onChange:t=>Oe(t.target.value),className:K})})]})]}),r(ie,{num:"N° 02",title:m?"Collection":"Shipping address",children:[m?r("div",{className:"grid gap-2 text-[14px] leading-[1.6]",children:[e("span",{className:"font-medium",children:m.name}),[m.address,m.city,m.state,m.zipCode,m.country].filter(Boolean).length>0&&e("span",{className:"opacity-80",children:[m.address,m.city,m.state,m.zipCode,m.country].filter(Boolean).join(", ")}),m.openingHours&&e("span",{className:"opacity-80",children:m.openingHours}),m.instructions&&e("span",{className:"opacity-80",children:m.instructions}),e("span",{className:"mt-1 font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"No delivery address needed"})]}):r(A,{children:[$!==null&&Le.length>0&&r("div",{className:"grid gap-3",children:[Le.map(t=>e(ce,{active:ee===t.id,onClick:()=>{te(t.id),Ve(t)},title:t.label,body:t.formatted_address,price:null},t.id)),e(ce,{active:ee==="new",onClick:()=>te("new"),title:"New address",body:null,price:null})]}),e(T,{label:"Address line 1",children:e("input",{type:"text",value:de,onChange:t=>pe(t.target.value),className:K})}),e(T,{label:"Address line 2",children:e("input",{type:"text",value:me,onChange:t=>ue(t.target.value),placeholder:"Apartment, unit, garage bay…",className:K})}),r(ct,{cols:"three",children:[e(T,{label:"City",children:e("input",{type:"text",value:fe,onChange:t=>ge(t.target.value),className:K})}),e(T,{label:dt,children:e("input",{type:"text",value:he,onChange:t=>xe(t.target.value),className:K})}),e(T,{label:"Country",separate:!0,children:e(rt,{value:F,onChange:t=>ke(t.target.value),className:K+" pr-10",style:it,children:I.map(t=>e("option",{value:t.code,children:t.name},t.code))})})]}),e(T,{label:pt,separate:!0,children:we.length>0?r(rt,{value:Ne,onChange:t=>ve(t.target.value),className:K+" pr-10",style:it,children:[e("option",{value:"",children:"Select…"}),we.map(t=>e("option",{value:t.code||t.name,children:t.name},t.code||t.name))]}):e("input",{type:"text",value:Ne,onChange:t=>ve(t.target.value),className:K})})]}),e(T,{label:"Phone",children:e("input",{type:"tel",value:ye,onChange:t=>be(t.target.value),placeholder:"+44 7700 900000",className:K})}),!m&&$!==null&&ee==="new"&&r(A,{children:[e(pn,{checked:Ce,onChange:Ye,label:"Save this address to my account"}),Ce&&e(T,{label:"Address label",children:e("input",{type:"text",value:ze,onChange:t=>mt(t.target.value),placeholder:"Home",className:K})})]})]}),e(ie,{num:"N° 03",title:"Shipping",children:r("div",{className:"grid gap-3",children:[h.map(t=>{const c=t.pickupLocation,p=c?[c.address,c.city,c.state,c.zipCode].filter(Boolean).join(", "):null;return e(ce,{active:g===t.id,onClick:()=>x(t.id),title:c?`${t.name} — ${c.name}`:t.name,body:c?[p,c.openingHours,c.instructions,t.description].filter(Boolean).join(" · "):t.description||null,price:a.freeShipping||t.amount===0?Ae:v(t.amount,a.currency),tag:t.tag||void 0},t.id)}),h.length===0&&e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Shipping is arranged after your order is reviewed."})]})}),r(ie,{num:"N° 04",title:"Payment",children:[e("div",{className:"grid gap-3",children:ae.map(t=>e(ce,{active:y===t.key,onClick:()=>O(t.key),title:t.title,body:t.body,price:t.price,tag:t.tag},t.key))}),y==="card"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll enter card details on the secure payment step after placing the order."}):y==="paypal"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll approve the payment with PayPal on the payment step after placing the order."}):y==="afterpay"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll be taken to Afterpay to approve four interest-free payments, then brought straight back."}):y==="square"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll enter card details on the secure payment step after placing the order."}):y==="gocardless"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll set up a bank direct debit with GoCardless, then be brought straight back. Direct debits clear in a few days."}):y==="zip"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll be taken to Zip to approve four instalments, then brought straight back."}):y==="klarna"?e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"You’ll be taken to Klarna to choose how to pay, then brought straight back."}):e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Our team emails you the invoice and bank details after review."})]})]}),r("aside",{className:"sticky top-[var(--sf-checkout-header-h,88px)] border border-line max-[1100px]:static",style:{background:"linear-gradient(180deg, color-mix(in oklab, var(--site-surface) 70%, var(--bg)) 0%, var(--bg) 100%)"},children:[r("header",{className:"flex items-center justify-between border-b border-accent bg-accent px-6 py-4 font-mono text-[13px] font-bold uppercase tracking-[0.28em] text-bg",children:[e("span",{children:"Your order"}),e(U,{href:"/wheels",className:"text-bg/80 transition-colors hover:text-bg",children:"Edit ↗"})]}),e("div",{className:"flex flex-col px-6 py-2",children:i.length===0?r("div",{className:"py-8 text-center font-serif text-[16px] italic leading-[1.5] text-fg-dim",children:["Your cart is empty. ",e(U,{href:"/wheels",className:"text-accent underline-offset-4 hover:underline",children:"Browse the catalog →"})]}):i.map(t=>e(mn,{slug:t.slug,name:t.name,qty:t.qty,config:t.config,configSummary:un(t.config),price:Tt(t,a.currency)??0,currency:a.currency},t.id))}),e("div",{className:"border-t border-line px-6 pt-5",children:e(Wt,{customerEmail:Z})}),r("div",{className:"flex flex-col gap-2 border-t border-line mt-5 px-6 pt-5",children:[e(H,{label:"Subtotal",value:v(a.subtotal,a.currency)}),a.discount>0&&l?.valid&&e(H,{label:`Coupon · ${l.code}`,value:r("span",{className:"font-semibold text-green",children:["− ",v(a.discount,a.currency)]})}),l?.deferred&&e(H,{label:`Coupon · ${l.code}`,value:Zt}),l?.valid&&l.effects?.gift&&e(H,{label:`Free gift · ${l.effects.gift.partNumber}${l.effects.gift.quantity>1?` ×${l.effects.gift.quantity}`:""}`,value:e("span",{className:"font-semibold text-green",children:Ae})}),e(H,{label:"Shipping",value:a.shippingStatus==="free"?e("span",{className:"font-semibold text-green",children:Ae}):Vt(a.shippingStatus)??v(a.shipping,a.currency)}),a.tax&&(a.tax.charged?e(H,{label:a.tax.inclusive?`${a.tax.name} included · ${a.tax.rate}%`:a.tax.name,value:v(a.tax.amount,a.currency)}):a.tax.name?e(H,{label:a.tax.name,value:Qt}):null)]}),r("div",{className:"mt-4 flex items-end justify-between border-y-2 border-accent px-6 py-4",style:{background:"color-mix(in oklab, var(--accent) 10%, var(--bg))"},children:[e("span",{className:"font-display text-[20px] font-bold uppercase tracking-[0.04em] text-fg",children:"Total"}),e("span",{className:"text-right font-display text-[34px] font-bold leading-none tracking-[-0.025em] text-fg",children:a.repricing?"…":v(a.grand,a.currency)})]}),r("div",{className:"flex flex-col gap-3 px-6 pt-5 pb-6",children:[Ue&&e("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:Ue}),a.hasUnpricedLine&&r("p",{className:"border border-amber-300 bg-amber-50 px-3 py-2 text-[13px] text-amber-800",children:["One or more items have no price in ",a.currency,". Remove them, or switch region, to continue."]}),e("button",{type:"button",onClick:St,disabled:z||i.length===0||a.hasUnpricedLine||a.repricing,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",i.length===0||z||a.hasUnpricedLine||a.repricing?"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:z?r(A,{children:["Building order… ",e("span",{children:"·"})]}):a.repricing?r(A,{children:["Updating total… ",e("span",{children:"·"})]}):r(A,{children:[y==="bank"?"Place order":"Continue to payment"," ·"," ",v(a.grand,a.currency),e("span",{className:"transition-transform group-hover:translate-x-1",children:"→"})]})})]})]})]}),e("footer",{className:"flex flex-wrap items-center justify-between gap-4 border-t border-line px-[var(--sf-site-gutter,40px)] py-6 font-mono text-[12px] uppercase tracking-[0.22em] text-fg-dim max-[640px]:px-[min(20px,var(--sf-site-gutter,40px))]",children:e("span",{children:Ot({legalName:n.legalName,foundedYear:n.foundedYear,siteName:n.name})})})]})}const K="w-full border-2 border-line bg-bg px-4 py-4 font-display text-[17px] tracking-[-0.005em] text-fg outline-none transition-colors placeholder:text-fg-dim hover:border-fg-dim focus:border-accent",it={backgroundImage:"linear-gradient(45deg, transparent 50%, var(--accent) 50%), linear-gradient(135deg, var(--accent) 50%, transparent 50%)",backgroundPosition:"calc(100% - 18px) 50%, calc(100% - 12px) 50%",backgroundSize:"6px 6px",backgroundRepeat:"no-repeat"};function ie({num:n,title:o,children:d}){return r("section",{className:"mb-6 border border-line bg-bg",children:[r("header",{className:"flex items-center gap-4 border-b border-line bg-surface px-6 py-4",children:[e("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:n}),e("h2",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:o})]}),e("div",{className:"flex flex-col gap-4 px-6 py-6",children:d})]})}function ct({cols:n="two",children:o}){return e("div",{className:["grid gap-3 max-[640px]:grid-cols-1",n==="two"?"grid-cols-2":"grid-cols-[1.2fr_1fr_1fr]"].join(" "),children:o})}function ce({active:n,onClick:o,title:d,body:i,price:a,tag:l}){return r("button",{type:"button",onClick:o,"aria-pressed":n,className:["relative grid grid-cols-[auto_1fr_auto] items-center gap-5 border bg-bg px-6 py-5 text-left transition-colors",n?"border-accent outline outline-1 outline-accent -outline-offset-1":"border-line hover:border-[color-mix(in_oklab,var(--accent)_50%,var(--site-line))]"].join(" "),style:n?{background:"color-mix(in oklab, var(--accent) 14%, var(--bg))"}:void 0,children:[n&&e("span",{"aria-hidden":!0,className:"absolute inset-y-0 left-0 w-[3px] bg-accent"}),e("span",{className:["flex h-[18px] w-[18px] items-center justify-center rounded-full border-2",n?"border-accent":"border-fg-dim"].join(" "),children:n&&e("span",{className:"block h-2.5 w-2.5 rounded-full bg-accent"})}),r("span",{className:"flex min-w-0 flex-col gap-1",children:[r("span",{className:"flex flex-wrap items-baseline gap-3 font-display text-[18px] font-medium tracking-[-0.01em] text-fg",children:[d,l&&e("span",{className:"border px-2 py-0.5 font-mono text-[11px] font-normal uppercase tracking-[0.24em] text-accent",style:{background:"color-mix(in oklab, var(--accent) 14%, transparent)",borderColor:"color-mix(in oklab, var(--accent) 45%, var(--site-line))"},children:l})]}),i&&e("span",{className:"font-mono text-[12px] uppercase tracking-[0.22em] text-fg-dim",children:i})]}),e("span",{className:"whitespace-nowrap font-display text-[18px] font-medium tracking-[-0.01em] text-fg",children:a})]})}function an({payment:n,onPaid:o,onSkip:d}){const{formatMoney:i}=W(),a=oe(()=>Kt(n.publishableKey),[n.publishableKey]),l=oe(()=>{if(typeof document>"u")return;const u=getComputedStyle(document.documentElement),h=(x,w)=>u.getPropertyValue(x).trim()||w,g=document.documentElement.getAttribute("data-theme")!=="light";return{theme:g?"night":"stripe",variables:{colorPrimary:h("--accent",g?"#c9a461":"#8a6a2a"),colorBackground:h("--site-surface",g?"#131313":"#ffffff"),colorText:h("--fg",g?"#f5f1e8":"#0a0a0a"),borderRadius:"0px"}}},[]);return e("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:r("div",{className:"w-full max-w-xl border border-line bg-bg",children:[r("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[e("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:n.orderNumber}),e("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"Payment"})]}),r("div",{className:"flex flex-col gap-4 px-6 py-6",children:[r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",e("span",{className:"text-fg",children:i(Number(n.amount),n.currency)})," ","by card to confirm it now."]}),e(It,{stripe:a,options:{clientSecret:n.clientSecret,appearance:l},children:e(on,{payment:n,onPaid:o,onSkip:d})})]})]})})}function on({payment:n,onPaid:o,onSkip:d}){const{formatMoney:i}=W(),a=Rt(),l=jt(),[u,h]=s(!1),[g,x]=s(null);async function w(){if(!a||!l||u)return;h(!0),x(null);const N=await a.confirmPayment({elements:l,redirect:"if_required"});if(N.error){x(N.error.message??"Payment failed. Please try again."),h(!1);return}const m=N.paymentIntent?.status;if(m==="succeeded"||m==="processing"){o();return}x("Payment did not complete. Please try again."),h(!1)}return r("div",{className:"flex flex-col gap-4",children:[e(_t,{}),g&&e("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:g}),e("button",{type:"button",onClick:w,disabled:!a||!l||u,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",!a||!l||u?"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:u?r(A,{children:["Processing… ",e("span",{children:"·"})]}):r(A,{children:["Pay ",i(Number(n.amount),n.currency),e("span",{className:"transition-transform group-hover:translate-x-1",children:"→"})]})}),e("button",{type:"button",onClick:d,disabled:u,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later — our team will be in touch"})]})}const st="paypal-sdk-js";let je=null;function cn(n,o){const d=`${n}|${o}`;if(je?.key===d)return je.promise;const i=new Promise((a,l)=>{document.getElementById(st)?.remove();const u=document.createElement("script");u.id=st;const h=new URLSearchParams({"client-id":n,currency:o,intent:"capture"});u.src=`https://www.paypal.com/sdk/js?${h}`,u.onload=()=>{const g=window.paypal;g?a(g):l(new Error("PayPal SDK loaded without its namespace"))},u.onerror=()=>l(new Error("PayPal SDK failed to load")),document.head.appendChild(u)});return je={key:d,promise:i},i}function sn({confirmation:n,clientId:o,idemKey:d,onPaid:i,onSkip:a}){const{formatMoney:l}=W(),u=D(null),[h,g]=s(!1),[x,w]=s(null),N=D(i);return N.current=i,R(()=>{let m=!1,P=null;return cn(o,n.currency).then(I=>{if(!(m||!u.current))return P=I.Buttons({style:{layout:"vertical",color:"gold",shape:"rect",label:"paypal"},createOrder:async()=>(await S.createPaypalOrder({idempotencyKey:d})).paypalOrderId,onApprove:async k=>{try{if((await S.capturePaypalOrder({idempotencyKey:d,paypalOrderId:k.orderID})).status==="paid"){N.current();return}w("PayPal did not complete the payment. Please try again.")}catch(v){w(v instanceof Ee?v.message:"PayPal payment failed. Please try again.")}},onError:()=>{w("PayPal could not process the payment. Please try again.")}}),P.render(u.current).then(()=>{m||g(!0)})}).catch(()=>{m||w("PayPal could not be loaded. You can pay later — your order stands either way.")}),()=>{m=!0,P?.close?.()}},[o,n.currency,d]),e("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:r("div",{className:"w-full max-w-xl border border-line bg-bg",children:[r("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[e("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:n.orderNumber}),e("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"PayPal"})]}),r("div",{className:"flex flex-col gap-4 px-6 py-6",children:[r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",e("span",{className:"text-fg",children:l(Number(n.grandTotal),n.currency)})," ","with PayPal to confirm it now."]}),!h&&!x&&e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Loading PayPal…"}),e("div",{ref:u}),x&&e("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:x}),e("button",{type:"button",onClick:a,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later — our team will be in touch"})]})]})})}const lt="square-web-sdk";let Re=null;function ln(n){const o=n==="sandbox"?"sandbox":"production";if(Re?.key===o)return Re.promise;const d=new Promise((i,a)=>{document.getElementById(lt)?.remove();const l=document.createElement("script");l.id=lt,l.src=o==="sandbox"?"https://sandbox.web.squarecdn.com/v1/square.js":"https://web.squarecdn.com/v1/square.js",l.onload=()=>{const u=window.Square;u?i(u):a(new Error("Square SDK loaded without its namespace"))},l.onerror=()=>a(new Error("Square SDK failed to load")),document.head.appendChild(l)});return Re={key:o,promise:d},d}function dn({confirmation:n,applicationId:o,locationId:d,environment:i,idemKey:a,onPaid:l,onSkip:u}){const{formatMoney:h}=W(),g=D(null),x=D(null),w=D(null),[N,m]=s(!1),[P,I]=s(!1),[k,v]=s(null);R(()=>{let O=!1,C=null;return ln(i).then(async M=>{if(O||!g.current)return;const z=M.payments(o,d);w.current=z,C=await z.card(),await C.attach(g.current),x.current=C,O||m(!0)}).catch(()=>{O||v("Square could not be loaded. You can pay later — your order stands either way.")}),()=>{O=!0,C?.destroy?.()}},[o,d,i]);async function y(){const O=x.current;if(!(!O||P)){I(!0),v(null);try{const C=await O.tokenize();if(C.status!=="OK"||!C.token){v(C.errors?.[0]?.message??"Please check the card details and try again."),I(!1);return}let M;try{M=(await w.current?.verifyBuyer?.(C.token,{amount:String(n.grandTotal),currencyCode:n.currency,intent:"CHARGE"}))?.token}catch{}if((await S.chargeSquare({idempotencyKey:a,sourceId:C.token,...M?{verificationToken:M}:{}})).status==="paid"){l();return}v("Square did not complete the payment. Please try again.")}catch(C){v(C instanceof Ee?C.message:"Square payment failed. Please try again.")}I(!1)}}return e("div",{className:"flex min-h-screen flex-col items-center justify-center gap-6 bg-bg px-6 py-16 text-fg",children:r("div",{className:"w-full max-w-xl border border-line bg-bg",children:[r("header",{className:"flex items-center justify-between gap-4 border-b border-line bg-surface px-6 py-4",children:[e("span",{className:"inline-flex items-center justify-center bg-accent px-3 py-1 font-mono text-[11px] font-bold uppercase tracking-[0.24em] text-bg",children:n.orderNumber}),e("h1",{className:"font-display text-[26px] font-medium uppercase leading-none tracking-[-0.02em] text-fg",children:"Card"})]}),r("div",{className:"flex flex-col gap-4 px-6 py-6",children:[r("p",{className:"font-mono text-[12px] uppercase tracking-[0.2em] text-fg-dim",children:["Your order is placed. Pay"," ",e("span",{className:"text-fg",children:h(Number(n.grandTotal),n.currency)})," ","by card to confirm it now."]}),!N&&!k&&e("p",{className:"font-mono text-[11px] uppercase tracking-[0.2em] text-fg-dim",children:"Loading card form…"}),e("div",{ref:g}),k&&e("p",{className:"border border-red-300 bg-red-50 px-3 py-2 text-[13px] text-red-700",children:k}),e("button",{type:"button",onClick:y,disabled:!N||P,className:["group flex items-center justify-between border px-5 py-5 font-mono text-[14px] font-medium uppercase tracking-[0.3em] transition-all",!N||P?"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:P?r(A,{children:["Processing… ",e("span",{children:"·"})]}):r(A,{children:["Pay ",h(Number(n.grandTotal),n.currency),e("span",{className:"transition-transform group-hover:translate-x-1",children:"→"})]})}),e("button",{type:"button",onClick:u,disabled:P,className:"self-center font-mono text-[11px] uppercase tracking-[0.24em] text-fg-dim underline-offset-4 transition-colors hover:text-accent hover:underline",children:"Pay later — our team will be in touch"})]})]})})}function pn({checked:n,onChange:o,label:d,sub:i}){return r("div",{className:"flex items-start gap-3 border-t border-line py-4 first:border-t-0 first:pt-0",children:[e("button",{type:"button",onClick:()=>o(!n),"aria-pressed":n,"aria-label":d,className:["mt-px flex h-5 w-5 flex-shrink-0 items-center justify-center border transition-colors",n?"border-accent":"border-line"].join(" "),style:n?{background:"color-mix(in oklab, var(--accent) 18%, transparent)"}:void 0,children:n&&e("span",{className:"text-[13px] text-accent",children:"✓"})}),r("span",{className:"flex-1 font-display text-[16px] leading-[1.5] text-fg",children:[d,i&&e("small",{className:"mt-1 block font-mono text-[12px] uppercase tracking-[0.18em] text-fg-dim",children:i})]})]})}function mn({slug:n,name:o,qty:d,config:i,configSummary:a,price:l,currency:u}){const{catalog:h}=tt(),{formatMoney:g}=W(),x=h.find(k=>k.slug===n),w=x?.spokes??5,N=x?.mesh??!1,m=i.find(k=>k.gold)?.label,P=x?.finishes.find(k=>k.name===m&&k.src)??x?.finishes.find(k=>k.src),I=x?.finishes[0]?.color??en;return r("div",{className:"grid grid-cols-[60px_1fr_auto] items-center gap-4 border-b border-line py-4 last:border-b-0",children:[r("div",{className:"relative flex aspect-square items-center justify-center overflow-hidden border border-line bg-surface",children:[e("span",{className:"absolute -right-1.5 -top-1.5 z-[2] flex h-[18px] w-[18px] items-center justify-center rounded-full bg-accent font-mono text-[11px] font-bold text-bg",children:d}),P?.src?e(Et,{src:P.src,alt:`${o.lead}${o.accent} — ${P.name}`,width:120,height:120,sizes:"60px",className:"relative block h-full w-full object-contain p-2"}):e("div",{className:"block w-[78%]",style:{color:I},children:e(nn,{spokes:w,mesh:N,className:"block w-full"})})]}),r("div",{className:"flex min-w-0 flex-col gap-0.5",children:[r("span",{className:"font-display text-[17px] font-bold uppercase leading-none tracking-[-0.005em] text-fg",children:[o.lead,e("em",{className:"font-serif font-normal italic text-accent tracking-[-0.005em] normal-case",children:o.accent})]}),e("span",{className:"font-mono text-[12px] uppercase leading-[1.5] tracking-[0.18em] text-fg-dim",children:a})]}),e("span",{className:"text-right font-display text-[17px] font-bold tracking-[-0.005em] text-fg",children:g(l,u)})]})}function H({label:n,value:o}){return r("div",{className:"flex items-center justify-between font-mono text-[13px] font-medium uppercase tracking-[0.18em] text-fg",children:[e("span",{children:n}),e("strong",{className:"font-display text-[16px] font-medium tracking-[-0.005em] normal-case text-fg",children:o})]})}function un(n){return n.map(o=>o.label).join(" · ")}export{ot as buildPayOptions,rn as default};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { VehicleSelection } from "../../lib/wheels/fitment-options.js";
|
|
2
|
+
import type { FitmentMake } from "../../lib/api/index.js";
|
|
3
|
+
export declare function fitmentCtaHref(href: string, vehicle: VehicleSelection, fullyPicked: boolean): string;
|
|
4
|
+
export interface FitmentFinderProps {
|
|
5
|
+
num?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
ctaText?: string;
|
|
9
|
+
ctaHref?: string;
|
|
10
|
+
layout?: "full" | "bar";
|
|
11
|
+
omitHead?: boolean;
|
|
12
|
+
initialMakes?: FitmentMake[];
|
|
13
|
+
editing?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export default function FitmentFinder({ num, title, description, ctaText, ctaHref, layout, omitHead, initialMakes, editing, }: FitmentFinderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as t,jsxs as n,Fragment as x}from"react/jsx-runtime";import P from"../SectionBand.js";import S from"next/link";import{useEffect as M,useMemo as F,useRef as E}from"react";import{appendVehicleParams as $}from"../../lib/wheels/plp-vehicle-params.js";import{shopHrefForVehicle as j,shouldLeaveForTheShop as L}from"../../lib/wheels/picker-goes-to-the-shop.js";import z from"efficient-web-builder/render/components/SectionHeader";import{withRMark as T}from"efficient-web-builder/render/components/RMark";import b from"./FitmentPickerGrid.js";import V from"./StockFitmentCard.js";import{useVehicleFit as _}from"./useVehicleFit.js";import{say as O}from"efficient-web-builder/format/lib/editor-words";const f={body:"text-[length:var(--size-body,18px)]",headingSmall:"text-[length:var(--size-headingSmall,30px)]",labelSmall:"text-[length:var(--size-label,12px)]",labelLarge:"text-[length:var(--size-label,14px)]"};function R(o,i,c){if(!c)return o;const[s,m=""]=o.split("?"),r=$(new URLSearchParams(m),i).toString();return r?`${s}?${r}`:s}function Y({num:o,title:i,description:c,ctaText:s,ctaHref:m,layout:h="full",omitHead:r=!1,initialMakes:k=[],editing:l=!1}){const{cascade:e}=_({initialMakes:k,editing:l,autoApply:!0}),a=h==="bar",u=E(!1),y=F(()=>{if(!a)return e;const d=v=>(...N)=>{u.current=!0,v(...N)};return{...e,setMake:d(e.setMake),setModel:d(e.setModel),setYear:d(e.setYear),setModification:d(e.setModification)}},[a,e]);M(()=>{a&&(typeof window>"u"||L({shopperPicked:u.current,fullyPicked:e.fullyPicked,editing:l,pathname:window.location.pathname})&&window.location.assign(j(e.vehicle)))},[a,e.fullyPicked,e.vehicle,l]);const w=!r&&!a&&!!(o||i||c),p=!a&&s&&m?{text:s,href:m}:null,g=p?R(p.href,e.vehicle,e.fullyPicked):null;return n(P,{className:a?r?"pt-0 pb-8 max-[1100px]:pb-5":"py-8 max-[1100px]:py-5":r?"pt-0 pb-20 max-[1100px]:pb-[60px]":"py-20 max-[1100px]:py-[60px]",children:[w&&t(z,{num:o,title:i,description:c,accent:!0}),a?n("div",{className:"flex flex-wrap items-center gap-5",children:[!r&&i?.trim()&&t("p",{className:`font-heading3 ${f.headingSmall} [font-weight:var(--sf-heading-weight-strong,600)] leading-none tracking-[-0.02em] whitespace-nowrap`,children:T(i)}),t("div",{className:"min-w-[320px] flex-1 basis-0",children:t(b,{cascade:y,compact:!0,editing:l})})]}):t(b,{cascade:e,editing:l}),!a&&t(V,{loading:e.loading.stock,error:e.cascadeError,data:e.fullyPicked?e.stock:null}),!a&&n("div",{className:"mt-10 flex flex-wrap items-center justify-between gap-6 border-t border-line pt-8",children:[t("p",{className:`max-w-[680px] font-serif ${f.body} italic leading-[1.55] text-fg-dim`,children:e.fullyPicked?n(x,{children:["Your car ·"," ",n("strong",{className:"font-display [font-weight:var(--sf-heading-weight-strong,500)] not-italic text-fg",children:[e.vehicle.year," ",e.makeName," ",e.modelName," ",e.modName]}),e.stock&&t("span",{className:"ml-3 not-italic text-accent",children:"OEM fitment loaded."})]}):n(x,{children:["Tell us four things — ",t("em",{className:"not-italic text-accent",children:"make, model, year, trim"})," — and we'll show the OEM stock fitment for your car."]})}),p&&g&&n(S,{href:g,className:`group inline-flex items-center gap-4 border border-btn bg-btn px-8 py-5 font-mono ${f.labelLarge} uppercase tracking-[0.3em] text-btn-ink transition-colors hover:border-fg hover:bg-fg`,children:[p.text,t("span",{className:"transition-transform group-hover:translate-x-[4px]",children:"→"})]})]}),l&&e.makeOptions.length===0&&!e.loading.models&&t("p",{className:`mt-4 font-mono ${f.labelSmall} uppercase tracking-[0.24em] text-fg-dim`,children:O("Vehicle catalog unavailable in this preview — the picker fills from the live fitment API on the published site.")})]})}export{Y as default,R as fitmentCtaHref};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as d,jsxs as n}from"react/jsx-runtime";import{PickerField as a}from"./PickerField.js";import{vehicleLevelStates as s}from"./vehicle-level-state.js";import{VEHICLE_FIELD_LABEL as t}from"../../lib/wheels/vehicle-field-focus.js";function m({cascade:e,compact:o=!1,editing:r=!1}){const{vehicle:i}=e,l=s(e);return n("div",{className:["grid gap-[2px] border border-line bg-line",o?"grid-cols-4 max-[900px]:grid-cols-2":"grid-cols-4 max-[1100px]:grid-cols-2 max-[700px]:grid-cols-1"].join(" "),children:[d(a,{label:t.make,placeholder:l.make.placeholder,disabled:l.make.disabled,value:i.make,options:e.makeOptions,onChange:e.setMake,compact:o,editing:r}),d(a,{label:t.model,placeholder:l.model.placeholder,disabled:l.model.disabled,value:i.model,options:e.modelOptions,onChange:e.setModel,compact:o,editing:r}),d(a,{label:t.year,placeholder:l.year.placeholder,disabled:l.year.disabled,value:i.year!==null?String(i.year):"",options:e.yearOptions,onChange:e.setYear,compact:o,editing:r}),d(a,{label:t.trim,placeholder:l.trim.placeholder,disabled:l.trim.disabled,value:i.modification,options:e.modOptions,onChange:e.setModification,compact:o,editing:r})]})}export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as c,Fragment as e,jsxs as n}from"react/jsx-runtime";function i({answer:t}){const o=t.tone==="no-fit"?"text-[color:var(--alert)]":t.tone==="ask"||t.tone==="checking"||t.tone==="unknown"?"text-fg":"text-accent";return n(e,{children:[c("span",{className:`uppercase tracking-[0.18em] ${o}`,children:t.lead}),t.detail?n(e,{children:[" ",t.detail]}):null]})}export{i as default};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type SelectItem } from "../ThemedSelect.js";
|
|
2
|
+
export interface PickerOption {
|
|
3
|
+
value: string;
|
|
4
|
+
label: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function pickerItems(options: readonly PickerOption[], placeholder?: string): SelectItem[];
|
|
7
|
+
export declare function PickerField({ label, value, options, onChange, placeholder, disabled, compact, editing, }: {
|
|
8
|
+
label: string;
|
|
9
|
+
value: string;
|
|
10
|
+
options: PickerOption[];
|
|
11
|
+
onChange: (v: string) => void;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
compact?: boolean;
|
|
15
|
+
editing?: boolean;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as a,jsxs as m}from"react/jsx-runtime";import g from"efficient-web-builder/render/components/PartStyledKind";import{ThemedSelectList as y,useThemedSelect as k}from"../ThemedSelect.js";import{PART_KIND_ATTR as f}from"efficient-web-builder/render/lib/puck/text-parts";import{TEXT_KIND_BODY as b,TEXT_KIND_NAME as u}from"efficient-web-builder/format/lib/sections/section-text-kinds";const n={body:"text-[length:var(--size-body,15px)]",headingSmall:"text-[length:var(--size-headingSmall,24px)]",labelXs:"text-[length:var(--size-label,10px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,12px)]",labelXl:"text-[length:var(--size-label,14px)]"};function I(o,l){return[{value:"",label:l??"—"},...o.map(i=>({value:i.value,label:i.label}))]}function z({label:o,value:l,options:i,onChange:h,placeholder:p,disabled:t,compact:s=!1,editing:d=!1}){const v=(i.find(r=>r.value===l)?.label??l)||p||"—",x=I(i,p),e=k({items:x,value:l,onPick:h}),c=e.open;return m("div",{ref:e.wrapRef,className:"relative",children:[m("div",{ref:r=>{e.triggerRef.current=r},role:"button",tabIndex:t?-1:0,"aria-haspopup":"listbox","aria-expanded":c,"aria-controls":c?e.listId:void 0,"aria-activedescendant":e.activeId,"aria-label":o,"aria-disabled":t||void 0,onClick:()=>!t&&e.toggle(),onKeyDown:r=>!t&&e.onTriggerKeyDown(r),className:["relative flex flex-col bg-bg transition-colors",s?"gap-1 px-4 py-3":"min-h-[160px] gap-4 px-6 py-8",t?"opacity-50":"cursor-pointer hover:bg-surface"].join(" "),children:[a("span",{...d?{[f]:u}:{},className:["font-mono uppercase text-accent",s?`${n.labelXs} tracking-[0.2em]`:`${n.labelLarge} tracking-[0.3em]`].join(" "),children:a(g,{kind:u,children:o})}),a("span",{className:["font-display font-medium tracking-[-0.02em]",s?`break-words ${n.body} leading-[1.2]`:`mt-auto ${n.headingSmall} leading-[1.1]`,l?"text-fg":"text-fg-dim"].join(" "),...d?{[f]:b}:{},children:a(g,{kind:b,children:v})}),a("span",{className:["pointer-events-none absolute font-mono text-accent",s?`right-3 top-3 ${n.labelSmall}`:`right-[22px] top-[22px] ${n.labelXl}`].join(" "),children:"▾"})]}),c&&!t&&a(y,{id:e.listId,tone:"cell",items:x,value:l,focusIdx:e.focusIdx,onFocus:e.setFocusIdx,onPick:e.pick,listRef:e.listRef})]})}export{z as PickerField,I as pickerItems};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { StockFitment } from "../../lib/api/index.js";
|
|
2
|
+
interface Props {
|
|
3
|
+
loading?: boolean;
|
|
4
|
+
error?: string | null;
|
|
5
|
+
data?: StockFitment | null;
|
|
6
|
+
}
|
|
7
|
+
export default function StockFitmentCard({ loading, error, data }: Props): import("react").JSX.Element | null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as l,jsxs as o}from"react/jsx-runtime";const t={body:"text-[length:var(--size-body,17px)]",labelSmall:"text-[length:var(--size-label,11px)]",labelLarge:"text-[length:var(--size-label,13px)]"};function i({loading:a,error:r,data:e}){return a?l("div",{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.24em] text-fg-dim`,children:"Loading stock fitment…"}):r?o("div",{className:`mt-10 border border-line bg-bg p-6 font-mono ${t.labelLarge} uppercase tracking-[0.22em] text-fg-dim`,children:["Couldn't load stock fitment — ",l("span",{className:"text-accent",children:r})]}):e?o("div",{className:"mt-10 grid grid-cols-6 gap-[2px] border border-line bg-line max-[1100px]:grid-cols-2 max-[700px]:grid-cols-1",children:[l(n,{label:"Bolt pattern",value:e.boltPattern??"—"}),l(n,{label:"PCD",value:e.pcd??"—"}),l(n,{label:"Hub bore",value:e.centreBore?`${e.centreBore} mm`:"—"}),l(n,{label:"ET range",value:e.etRange&&e.etRange.length===2?`${e.etRange[0]} – ${e.etRange[1]}`:"—"}),l(n,{label:"OEM front",value:e.frontWheels.length?e.frontWheels.join(" · "):"—"}),l(n,{label:"OEM rear",value:e.rearWheels.length?e.rearWheels.join(" · "):"—"})]}):null}function n({label:a,value:r}){return o("div",{className:"flex min-h-[96px] flex-col gap-2 bg-bg px-5 py-5",children:[l("span",{className:`font-mono ${t.labelSmall} uppercase tracking-[0.26em] text-fg-dim`,children:a}),l("span",{className:`mt-auto font-display ${t.body} font-medium tracking-[-0.01em] text-fg`,children:r})]})}export{i as default};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type FitmentMake, type StockFitment } from "../../lib/api/index.js";
|
|
2
|
+
import { type VehicleSelection } from "../../lib/wheels/fitment-options.js";
|
|
3
|
+
import type { PickerOption } from "./PickerField.js";
|
|
4
|
+
interface CascadeLoading {
|
|
5
|
+
makes?: boolean;
|
|
6
|
+
models?: boolean;
|
|
7
|
+
years?: boolean;
|
|
8
|
+
modifications?: boolean;
|
|
9
|
+
stock?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface FitmentCascade {
|
|
12
|
+
vehicle: VehicleSelection;
|
|
13
|
+
setVehicle: React.Dispatch<React.SetStateAction<VehicleSelection>>;
|
|
14
|
+
setMake: (slug: string) => void;
|
|
15
|
+
setModel: (slug: string) => void;
|
|
16
|
+
setYear: (value: string) => void;
|
|
17
|
+
setModification: (slug: string) => void;
|
|
18
|
+
makeOptions: PickerOption[];
|
|
19
|
+
modelOptions: PickerOption[];
|
|
20
|
+
yearOptions: PickerOption[];
|
|
21
|
+
modOptions: PickerOption[];
|
|
22
|
+
loading: CascadeLoading;
|
|
23
|
+
cascadeError: string | null;
|
|
24
|
+
stock: StockFitment | null;
|
|
25
|
+
fullyPicked: boolean;
|
|
26
|
+
makeName: string;
|
|
27
|
+
modelName: string;
|
|
28
|
+
modName: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function useFitmentCascade(initialMakes?: FitmentMake[], enabled?: boolean): FitmentCascade;
|
|
31
|
+
export {};
|