@fayz-ai/storefront 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/app/createStorefrontApp.d.ts +65 -0
- package/dist/app/createStorefrontApp.d.ts.map +1 -0
- package/dist/{define.d.ts → app/define.d.ts} +3 -3
- package/dist/app/define.d.ts.map +1 -0
- package/dist/app/hydration.d.ts +37 -0
- package/dist/app/hydration.d.ts.map +1 -0
- package/dist/app/prerender.d.ts +57 -0
- package/dist/app/prerender.d.ts.map +1 -0
- package/dist/{router.d.ts → app/router.d.ts} +140 -113
- package/dist/app/router.d.ts.map +1 -0
- package/dist/{scaffold.d.ts → app/scaffold.d.ts} +2 -2
- package/dist/app/scaffold.d.ts.map +1 -0
- package/dist/app/serving.d.ts +70 -0
- package/dist/app/serving.d.ts.map +1 -0
- package/dist/app/static-render.d.ts +46 -0
- package/dist/app/static-render.d.ts.map +1 -0
- package/dist/blocks/block-at-path.d.ts +59 -0
- package/dist/blocks/block-at-path.d.ts.map +1 -0
- package/dist/blocks/page-blocks.d.ts +163 -0
- package/dist/blocks/page-blocks.d.ts.map +1 -0
- package/dist/blocks/page-data.d.ts +105 -0
- package/dist/blocks/page-data.d.ts.map +1 -0
- package/dist/{blocks.d.ts → blocks/registry.d.ts} +1 -1
- package/dist/blocks/registry.d.ts.map +1 -0
- package/dist/{sections.d.ts → blocks/sections.d.ts} +40 -2
- package/dist/blocks/sections.d.ts.map +1 -0
- package/dist/chunk-6B7H3IZ6.js +10232 -0
- package/dist/chunk-6B7H3IZ6.js.map +1 -0
- package/dist/chunk-6IXTENLB.js +162 -0
- package/dist/chunk-6IXTENLB.js.map +1 -0
- package/dist/components/PaymentTerms.d.ts +34 -0
- package/dist/components/PaymentTerms.d.ts.map +1 -0
- package/dist/components/SmoothImage.d.ts +1 -1
- package/dist/components/SmoothImage.d.ts.map +1 -1
- package/dist/components/account/CustomerAccountShell.d.ts.map +1 -0
- package/dist/components/account/SignInModal.d.ts.map +1 -0
- package/dist/components/cart/CartDrawer.d.ts.map +1 -0
- package/dist/components/cart/QuantityInput.d.ts.map +1 -0
- package/dist/components/checkout/DeliveryEstimator.d.ts.map +1 -0
- package/dist/components/collection/CategoryShowcase.d.ts +44 -0
- package/dist/components/collection/CategoryShowcase.d.ts.map +1 -0
- package/dist/components/collection/FiltersPanel.d.ts +19 -0
- package/dist/components/collection/FiltersPanel.d.ts.map +1 -0
- package/dist/components/collection/ProductGrid.d.ts.map +1 -0
- package/dist/components/layout/PageBodyBlocks.d.ts +40 -0
- package/dist/components/layout/PageBodyBlocks.d.ts.map +1 -0
- package/dist/components/layout/SearchOverlay.d.ts +13 -0
- package/dist/components/layout/SearchOverlay.d.ts.map +1 -0
- package/dist/components/layout/StorefrontErrorBoundary.d.ts.map +1 -0
- package/dist/components/layout/StorefrontFooter.d.ts.map +1 -0
- package/dist/components/layout/StorefrontHeader.d.ts.map +1 -0
- package/dist/components/layout/Toaster.d.ts.map +1 -0
- package/dist/components/marketing/CollectionSections.d.ts +463 -0
- package/dist/components/marketing/CollectionSections.d.ts.map +1 -0
- package/dist/components/marketing/ConversionSections.d.ts +221 -0
- package/dist/components/marketing/ConversionSections.d.ts.map +1 -0
- package/dist/components/marketing/EditorialSections.d.ts +248 -0
- package/dist/components/marketing/EditorialSections.d.ts.map +1 -0
- package/dist/components/marketing/EntityList.d.ts +97 -0
- package/dist/components/marketing/EntityList.d.ts.map +1 -0
- package/dist/components/marketing/FormBlock.d.ts +167 -0
- package/dist/components/marketing/FormBlock.d.ts.map +1 -0
- package/dist/components/marketing/HeroSection.d.ts +125 -0
- package/dist/components/marketing/HeroSection.d.ts.map +1 -0
- package/dist/components/marketing/MediaCarousel.d.ts +135 -0
- package/dist/components/marketing/MediaCarousel.d.ts.map +1 -0
- package/dist/components/marketing/MiscSections.d.ts +252 -0
- package/dist/components/marketing/MiscSections.d.ts.map +1 -0
- package/dist/components/order/OrderTrackingTimeline.d.ts.map +1 -0
- package/dist/components/product/ProductCard.d.ts +14 -0
- package/dist/components/product/ProductCard.d.ts.map +1 -0
- package/dist/components/product/ProductEnquiryForm.d.ts.map +1 -0
- package/dist/components/product/ProductGallery.d.ts +36 -0
- package/dist/components/product/ProductGallery.d.ts.map +1 -0
- package/dist/components/{ProductOptionSelector.d.ts → product/ProductOptionSelector.d.ts} +1 -1
- package/dist/components/product/ProductOptionSelector.d.ts.map +1 -0
- package/dist/components/product/ProductRail.d.ts +93 -0
- package/dist/components/product/ProductRail.d.ts.map +1 -0
- package/dist/components/product/ProductReviews.d.ts +39 -0
- package/dist/components/product/ProductReviews.d.ts.map +1 -0
- package/dist/components/product/ProductSlider.d.ts +169 -0
- package/dist/components/product/ProductSlider.d.ts.map +1 -0
- package/dist/components/product/ProductSpecs.d.ts.map +1 -0
- package/dist/components/product/RelatedProducts.d.ts.map +1 -0
- package/dist/{auth.d.ts → data/auth.d.ts} +9 -0
- package/dist/data/auth.d.ts.map +1 -0
- package/dist/data/facets.d.ts +39 -0
- package/dist/data/facets.d.ts.map +1 -0
- package/dist/data/loaders.d.ts +56 -0
- package/dist/data/loaders.d.ts.map +1 -0
- package/dist/data/order-status.d.ts.map +1 -0
- package/dist/data/product-options.d.ts +36 -0
- package/dist/data/product-options.d.ts.map +1 -0
- package/dist/diagnostics/seo-audit.d.ts +54 -0
- package/dist/diagnostics/seo-audit.d.ts.map +1 -0
- package/dist/diagnostics/seo-audit.js +3 -0
- package/dist/diagnostics/seo-audit.js.map +1 -0
- package/dist/document/change.d.ts +100 -0
- package/dist/document/change.d.ts.map +1 -0
- package/dist/{config.d.ts → document/config.d.ts} +126 -7
- package/dist/document/config.d.ts.map +1 -0
- package/dist/document/describe.d.ts +135 -0
- package/dist/document/describe.d.ts.map +1 -0
- package/dist/document/overlay.d.ts +58 -0
- package/dist/document/overlay.d.ts.map +1 -0
- package/dist/{presets.d.ts → document/presets.d.ts} +2 -2
- package/dist/document/presets.d.ts.map +1 -0
- package/dist/document/render.d.ts +171 -0
- package/dist/document/render.d.ts.map +1 -0
- package/dist/document/round-trip.d.ts +46 -0
- package/dist/document/round-trip.d.ts.map +1 -0
- package/dist/document/sections.d.ts +194 -0
- package/dist/document/sections.d.ts.map +1 -0
- package/dist/document/upgrade.d.ts +112 -0
- package/dist/document/upgrade.d.ts.map +1 -0
- package/dist/document/validate.d.ts +24 -0
- package/dist/document/validate.d.ts.map +1 -0
- package/dist/{component-contracts.d.ts → extend/component-contracts.d.ts} +74 -22
- package/dist/extend/component-contracts.d.ts.map +1 -0
- package/dist/extend/component-override.d.ts +38 -0
- package/dist/extend/component-override.d.ts.map +1 -0
- package/dist/extend/component-selectors.d.ts.map +1 -0
- package/dist/extend/editor-bridge.d.ts +59 -0
- package/dist/extend/editor-bridge.d.ts.map +1 -0
- package/dist/extend/extension-points.d.ts +103 -0
- package/dist/extend/extension-points.d.ts.map +1 -0
- package/dist/extend/slots.d.ts +216 -0
- package/dist/extend/slots.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +25 -6
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/use-address.d.ts +26 -0
- package/dist/hooks/use-address.d.ts.map +1 -0
- package/dist/hooks/use-cart.d.ts +3 -0
- package/dist/hooks/use-cart.d.ts.map +1 -0
- package/dist/hooks/use-catalog.d.ts +24 -0
- package/dist/hooks/use-catalog.d.ts.map +1 -0
- package/dist/hooks/use-categories.d.ts +19 -0
- package/dist/hooks/use-categories.d.ts.map +1 -0
- package/dist/hooks/use-checkout.d.ts +41 -0
- package/dist/hooks/use-checkout.d.ts.map +1 -0
- package/dist/hooks/use-discount-validator.d.ts +20 -0
- package/dist/hooks/use-discount-validator.d.ts.map +1 -0
- package/dist/hooks/use-enquiry.d.ts +7 -0
- package/dist/hooks/use-enquiry.d.ts.map +1 -0
- package/dist/hooks/{useMyOrders.d.ts → use-my-orders.d.ts} +1 -1
- package/dist/hooks/use-my-orders.d.ts.map +1 -0
- package/dist/hooks/use-order.d.ts +17 -0
- package/dist/hooks/use-order.d.ts.map +1 -0
- package/dist/hooks/use-payment-methods.d.ts +19 -0
- package/dist/hooks/use-payment-methods.d.ts.map +1 -0
- package/dist/hooks/use-policies.d.ts +25 -0
- package/dist/hooks/use-policies.d.ts.map +1 -0
- package/dist/hooks/use-product.d.ts +15 -0
- package/dist/hooks/use-product.d.ts.map +1 -0
- package/dist/hooks/{useProducts.d.ts → use-products.d.ts} +1 -1
- package/dist/hooks/use-products.d.ts.map +1 -0
- package/dist/hooks/use-region.d.ts +15 -0
- package/dist/hooks/use-region.d.ts.map +1 -0
- package/dist/hooks/use-shipping.d.ts +29 -0
- package/dist/hooks/use-shipping.d.ts.map +1 -0
- package/dist/hooks/use-storefront-actions.d.ts +12 -0
- package/dist/hooks/use-storefront-actions.d.ts.map +1 -0
- package/dist/hooks/use-storefront-head.d.ts +19 -0
- package/dist/hooks/use-storefront-head.d.ts.map +1 -0
- package/dist/hooks/use-storefront.d.ts +3 -0
- package/dist/hooks/use-storefront.d.ts.map +1 -0
- package/dist/index.d.ts +123 -54
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1311 -5012
- package/dist/index.js.map +1 -1
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/motion.d.ts.map +1 -0
- package/dist/lib/seo.d.ts +26 -0
- package/dist/lib/seo.d.ts.map +1 -0
- package/dist/{testids.d.ts → lib/testids.d.ts} +21 -0
- package/dist/lib/testids.d.ts.map +1 -0
- package/dist/{theme.d.ts → lib/theme.d.ts} +41 -3
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/render.d.ts +5 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +359 -0
- package/dist/render.js.map +1 -0
- package/dist/stores/cart.store.d.ts +6 -2
- package/dist/stores/cart.store.d.ts.map +1 -1
- package/dist/stores/catalog.store.d.ts +11 -0
- package/dist/stores/catalog.store.d.ts.map +1 -1
- package/dist/views/CatalogPage.d.ts.map +1 -0
- package/dist/views/CheckoutPage.d.ts.map +1 -0
- package/dist/views/ContentPage.d.ts +11 -0
- package/dist/views/ContentPage.d.ts.map +1 -0
- package/dist/views/HomePage.d.ts +9 -0
- package/dist/views/HomePage.d.ts.map +1 -0
- package/dist/views/MyPurchasesPage.d.ts.map +1 -0
- package/dist/views/NotFoundPage.d.ts.map +1 -0
- package/dist/{pages → views}/OrderConfirmationPage.d.ts.map +1 -1
- package/dist/{pages → views}/PolicyPage.d.ts.map +1 -1
- package/dist/views/ProductDetailPage.d.ts.map +1 -0
- package/dist/views/StorefrontPage.d.ts +35 -0
- package/dist/views/StorefrontPage.d.ts.map +1 -0
- package/dist/workflows/checkout.d.ts +1 -1
- package/dist/workflows/checkout.d.ts.map +1 -1
- package/package.json +21 -14
- package/dist/auth.d.ts.map +0 -1
- package/dist/blocks.d.ts.map +0 -1
- package/dist/component-contracts.d.ts.map +0 -1
- package/dist/component-selectors.d.ts.map +0 -1
- package/dist/components/CartDrawer.d.ts.map +0 -1
- package/dist/components/CustomerAccountShell.d.ts.map +0 -1
- package/dist/components/DeliveryEstimator.d.ts.map +0 -1
- package/dist/components/FiltersPanel.d.ts +0 -3
- package/dist/components/FiltersPanel.d.ts.map +0 -1
- package/dist/components/OrderTrackingTimeline.d.ts.map +0 -1
- package/dist/components/ProductCard.d.ts +0 -4
- package/dist/components/ProductCard.d.ts.map +0 -1
- package/dist/components/ProductEnquiryForm.d.ts.map +0 -1
- package/dist/components/ProductGallery.d.ts +0 -22
- package/dist/components/ProductGallery.d.ts.map +0 -1
- package/dist/components/ProductGrid.d.ts.map +0 -1
- package/dist/components/ProductOptionSelector.d.ts.map +0 -1
- package/dist/components/ProductSpecs.d.ts.map +0 -1
- package/dist/components/QuantityInput.d.ts.map +0 -1
- package/dist/components/RelatedProducts.d.ts.map +0 -1
- package/dist/components/SignInModal.d.ts.map +0 -1
- package/dist/components/StorefrontErrorBoundary.d.ts.map +0 -1
- package/dist/components/StorefrontFooter.d.ts.map +0 -1
- package/dist/components/StorefrontHeader.d.ts.map +0 -1
- package/dist/components/Toaster.d.ts.map +0 -1
- package/dist/components/sections/CategoryShowcase.d.ts +0 -6
- package/dist/components/sections/CategoryShowcase.d.ts.map +0 -1
- package/dist/components/sections/HeroSection.d.ts +0 -9
- package/dist/components/sections/HeroSection.d.ts.map +0 -1
- package/dist/components/sections/MediaCarousel.d.ts +0 -11
- package/dist/components/sections/MediaCarousel.d.ts.map +0 -1
- package/dist/components/sections/MiscSections.d.ts +0 -33
- package/dist/components/sections/MiscSections.d.ts.map +0 -1
- package/dist/components/sections/ProductRail.d.ts +0 -9
- package/dist/components/sections/ProductRail.d.ts.map +0 -1
- package/dist/components/sections/ProductSlider.d.ts +0 -15
- package/dist/components/sections/ProductSlider.d.ts.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/createStorefrontApp.d.ts +0 -28
- package/dist/createStorefrontApp.d.ts.map +0 -1
- package/dist/define.d.ts.map +0 -1
- package/dist/format.d.ts.map +0 -1
- package/dist/hooks/useCategories.d.ts +0 -6
- package/dist/hooks/useCategories.d.ts.map +0 -1
- package/dist/hooks/useDiscountValidator.d.ts +0 -14
- package/dist/hooks/useDiscountValidator.d.ts.map +0 -1
- package/dist/hooks/useMyOrders.d.ts.map +0 -1
- package/dist/hooks/useProduct.d.ts +0 -7
- package/dist/hooks/useProduct.d.ts.map +0 -1
- package/dist/hooks/useProducts.d.ts.map +0 -1
- package/dist/hooks/useStorefront.d.ts +0 -35
- package/dist/hooks/useStorefront.d.ts.map +0 -1
- package/dist/hooks/useStorefrontHead.d.ts +0 -11
- package/dist/hooks/useStorefrontHead.d.ts.map +0 -1
- package/dist/motion.d.ts.map +0 -1
- package/dist/order-status.d.ts.map +0 -1
- package/dist/pages/CatalogPage.d.ts.map +0 -1
- package/dist/pages/CheckoutPage.d.ts.map +0 -1
- package/dist/pages/HomePage.d.ts +0 -9
- package/dist/pages/HomePage.d.ts.map +0 -1
- package/dist/pages/MyPurchasesPage.d.ts.map +0 -1
- package/dist/pages/NotFoundPage.d.ts.map +0 -1
- package/dist/pages/ProductDetailPage.d.ts.map +0 -1
- package/dist/presets.d.ts.map +0 -1
- package/dist/product-options.d.ts +0 -12
- package/dist/product-options.d.ts.map +0 -1
- package/dist/router.d.ts.map +0 -1
- package/dist/scaffold.d.ts.map +0 -1
- package/dist/sections.d.ts.map +0 -1
- package/dist/testids.d.ts.map +0 -1
- package/dist/theme.d.ts.map +0 -1
- package/src/auth.ts +0 -227
- package/src/blocks.tsx +0 -51
- package/src/catalog.ts +0 -3
- package/src/component-contracts.ts +0 -154
- package/src/component-selectors.ts +0 -31
- package/src/components/CartDrawer.tsx +0 -279
- package/src/components/CustomerAccountShell.tsx +0 -102
- package/src/components/DeliveryEstimator.tsx +0 -157
- package/src/components/FiltersPanel.tsx +0 -109
- package/src/components/OrderTrackingTimeline.tsx +0 -135
- package/src/components/Price.tsx +0 -32
- package/src/components/ProductCard.tsx +0 -120
- package/src/components/ProductEnquiryForm.tsx +0 -175
- package/src/components/ProductGallery.tsx +0 -174
- package/src/components/ProductGrid.tsx +0 -43
- package/src/components/ProductOptionSelector.tsx +0 -50
- package/src/components/ProductSpecs.tsx +0 -75
- package/src/components/QuantityInput.tsx +0 -52
- package/src/components/RelatedProducts.tsx +0 -40
- package/src/components/SignInModal.tsx +0 -120
- package/src/components/SmoothImage.tsx +0 -59
- package/src/components/StorefrontErrorBoundary.tsx +0 -51
- package/src/components/StorefrontFooter.tsx +0 -110
- package/src/components/StorefrontHeader.tsx +0 -477
- package/src/components/Toaster.tsx +0 -60
- package/src/components/sections/CategoryShowcase.tsx +0 -80
- package/src/components/sections/HeroSection.tsx +0 -193
- package/src/components/sections/MediaCarousel.tsx +0 -141
- package/src/components/sections/MiscSections.tsx +0 -158
- package/src/components/sections/ProductRail.tsx +0 -81
- package/src/components/sections/ProductSlider.tsx +0 -119
- package/src/config.ts +0 -229
- package/src/createStorefrontApp.tsx +0 -247
- package/src/define.ts +0 -34
- package/src/format.ts +0 -7
- package/src/hooks/index.ts +0 -6
- package/src/hooks/useCategories.ts +0 -26
- package/src/hooks/useDiscountValidator.ts +0 -43
- package/src/hooks/useMyOrders.ts +0 -41
- package/src/hooks/useProduct.ts +0 -36
- package/src/hooks/useProducts.ts +0 -39
- package/src/hooks/useStorefront.ts +0 -58
- package/src/hooks/useStorefrontHead.ts +0 -25
- package/src/index.ts +0 -202
- package/src/motion.tsx +0 -94
- package/src/order-status.ts +0 -33
- package/src/pages/CatalogPage.tsx +0 -118
- package/src/pages/CheckoutPage.tsx +0 -689
- package/src/pages/HomePage.tsx +0 -16
- package/src/pages/MyPurchasesPage.tsx +0 -311
- package/src/pages/NotFoundPage.tsx +0 -25
- package/src/pages/OrderConfirmationPage.tsx +0 -190
- package/src/pages/PolicyPage.tsx +0 -47
- package/src/pages/ProductDetailPage.tsx +0 -264
- package/src/presets.ts +0 -324
- package/src/product-options.ts +0 -63
- package/src/router.ts +0 -49
- package/src/scaffold.tsx +0 -115
- package/src/sections.ts +0 -116
- package/src/shop.ts +0 -4
- package/src/stores/cart.store.ts +0 -185
- package/src/stores/catalog.store.ts +0 -39
- package/src/stores/delivery.store.ts +0 -152
- package/src/stores/session.store.ts +0 -28
- package/src/stores/toast.store.ts +0 -43
- package/src/testids.ts +0 -136
- package/src/theme.ts +0 -194
- package/src/ui.ts +0 -5
- package/src/workflows/checkout.ts +0 -119
- /package/dist/components/{CustomerAccountShell.d.ts → account/CustomerAccountShell.d.ts} +0 -0
- /package/dist/components/{SignInModal.d.ts → account/SignInModal.d.ts} +0 -0
- /package/dist/components/{CartDrawer.d.ts → cart/CartDrawer.d.ts} +0 -0
- /package/dist/components/{QuantityInput.d.ts → cart/QuantityInput.d.ts} +0 -0
- /package/dist/components/{DeliveryEstimator.d.ts → checkout/DeliveryEstimator.d.ts} +0 -0
- /package/dist/components/{ProductGrid.d.ts → collection/ProductGrid.d.ts} +0 -0
- /package/dist/components/{StorefrontErrorBoundary.d.ts → layout/StorefrontErrorBoundary.d.ts} +0 -0
- /package/dist/components/{StorefrontFooter.d.ts → layout/StorefrontFooter.d.ts} +0 -0
- /package/dist/components/{StorefrontHeader.d.ts → layout/StorefrontHeader.d.ts} +0 -0
- /package/dist/components/{Toaster.d.ts → layout/Toaster.d.ts} +0 -0
- /package/dist/components/{OrderTrackingTimeline.d.ts → order/OrderTrackingTimeline.d.ts} +0 -0
- /package/dist/components/{ProductEnquiryForm.d.ts → product/ProductEnquiryForm.d.ts} +0 -0
- /package/dist/components/{ProductSpecs.d.ts → product/ProductSpecs.d.ts} +0 -0
- /package/dist/components/{RelatedProducts.d.ts → product/RelatedProducts.d.ts} +0 -0
- /package/dist/{order-status.d.ts → data/order-status.d.ts} +0 -0
- /package/dist/{component-selectors.d.ts → extend/component-selectors.d.ts} +0 -0
- /package/dist/{format.d.ts → lib/format.d.ts} +0 -0
- /package/dist/{motion.d.ts → lib/motion.d.ts} +0 -0
- /package/dist/{pages → views}/CatalogPage.d.ts +0 -0
- /package/dist/{pages → views}/CheckoutPage.d.ts +0 -0
- /package/dist/{pages → views}/MyPurchasesPage.d.ts +0 -0
- /package/dist/{pages → views}/NotFoundPage.d.ts +0 -0
- /package/dist/{pages → views}/OrderConfirmationPage.d.ts +0 -0
- /package/dist/{pages → views}/PolicyPage.d.ts +0 -0
- /package/dist/{pages → views}/ProductDetailPage.d.ts +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { BlockNode } from '@fayz-ai/core';
|
|
3
|
+
import { type CatalogFacetEntry } from '../../data/facets';
|
|
4
|
+
export interface ProductSliderProps {
|
|
5
|
+
title: string;
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
eyebrow?: string;
|
|
8
|
+
filter?: 'sale' | 'new' | 'all';
|
|
9
|
+
categoryName?: string;
|
|
10
|
+
collection?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Arbitrary `product.metadata` refinements, the same model the catalogue
|
|
13
|
+
* page uses. A rail for a store's own discovery axis needs no SDK change.
|
|
14
|
+
* Authored as rows (`[{ key: 'purpose', value: 'presentear' }]`) or as a map
|
|
15
|
+
* in hand-written config; both normalise.
|
|
16
|
+
*/
|
|
17
|
+
facets?: Record<string, string> | readonly CatalogFacetEntry[];
|
|
18
|
+
limit?: number;
|
|
19
|
+
cta?: string;
|
|
20
|
+
href?: string;
|
|
21
|
+
className?: string;
|
|
22
|
+
/** The block node, when rendered from a tree — carries instance `data` overrides. */
|
|
23
|
+
node?: BlockNode;
|
|
24
|
+
}
|
|
25
|
+
export declare function ProductSlider({ title, subtitle, eyebrow, filter, categoryName, collection, facets, limit, cta, href, className, node, }: ProductSliderProps): React.JSX.Element | null;
|
|
26
|
+
export declare const productSliderBlockMeta: {
|
|
27
|
+
label: string;
|
|
28
|
+
description: string;
|
|
29
|
+
settings: ({
|
|
30
|
+
id: string;
|
|
31
|
+
type: "text";
|
|
32
|
+
label: string;
|
|
33
|
+
required: true;
|
|
34
|
+
help?: undefined;
|
|
35
|
+
options?: undefined;
|
|
36
|
+
default?: undefined;
|
|
37
|
+
of?: undefined;
|
|
38
|
+
min?: undefined;
|
|
39
|
+
max?: undefined;
|
|
40
|
+
} | {
|
|
41
|
+
id: string;
|
|
42
|
+
type: "text";
|
|
43
|
+
label: string;
|
|
44
|
+
help: string;
|
|
45
|
+
required?: undefined;
|
|
46
|
+
options?: undefined;
|
|
47
|
+
default?: undefined;
|
|
48
|
+
of?: undefined;
|
|
49
|
+
min?: undefined;
|
|
50
|
+
max?: undefined;
|
|
51
|
+
} | {
|
|
52
|
+
id: string;
|
|
53
|
+
type: "select";
|
|
54
|
+
label: string;
|
|
55
|
+
help: string;
|
|
56
|
+
options: {
|
|
57
|
+
value: string;
|
|
58
|
+
label: string;
|
|
59
|
+
}[];
|
|
60
|
+
default: string;
|
|
61
|
+
required?: undefined;
|
|
62
|
+
of?: undefined;
|
|
63
|
+
min?: undefined;
|
|
64
|
+
max?: undefined;
|
|
65
|
+
} | {
|
|
66
|
+
id: string;
|
|
67
|
+
type: "category";
|
|
68
|
+
label: string;
|
|
69
|
+
help: string;
|
|
70
|
+
required?: undefined;
|
|
71
|
+
options?: undefined;
|
|
72
|
+
default?: undefined;
|
|
73
|
+
of?: undefined;
|
|
74
|
+
min?: undefined;
|
|
75
|
+
max?: undefined;
|
|
76
|
+
} | {
|
|
77
|
+
id: string;
|
|
78
|
+
type: "list";
|
|
79
|
+
label: string;
|
|
80
|
+
help: string;
|
|
81
|
+
of: {
|
|
82
|
+
id: string;
|
|
83
|
+
type: "text";
|
|
84
|
+
label: string;
|
|
85
|
+
help: string;
|
|
86
|
+
required: true;
|
|
87
|
+
}[];
|
|
88
|
+
required?: undefined;
|
|
89
|
+
options?: undefined;
|
|
90
|
+
default?: undefined;
|
|
91
|
+
min?: undefined;
|
|
92
|
+
max?: undefined;
|
|
93
|
+
} | {
|
|
94
|
+
id: string;
|
|
95
|
+
type: "number";
|
|
96
|
+
label: string;
|
|
97
|
+
help: string;
|
|
98
|
+
min: number;
|
|
99
|
+
max: number;
|
|
100
|
+
default: number;
|
|
101
|
+
required?: undefined;
|
|
102
|
+
options?: undefined;
|
|
103
|
+
of?: undefined;
|
|
104
|
+
} | {
|
|
105
|
+
id: string;
|
|
106
|
+
type: "text";
|
|
107
|
+
label: string;
|
|
108
|
+
help: string;
|
|
109
|
+
default: string;
|
|
110
|
+
required?: undefined;
|
|
111
|
+
options?: undefined;
|
|
112
|
+
of?: undefined;
|
|
113
|
+
min?: undefined;
|
|
114
|
+
max?: undefined;
|
|
115
|
+
} | {
|
|
116
|
+
id: string;
|
|
117
|
+
type: "url";
|
|
118
|
+
label: string;
|
|
119
|
+
help: string;
|
|
120
|
+
required?: undefined;
|
|
121
|
+
options?: undefined;
|
|
122
|
+
default?: undefined;
|
|
123
|
+
of?: undefined;
|
|
124
|
+
min?: undefined;
|
|
125
|
+
max?: undefined;
|
|
126
|
+
})[];
|
|
127
|
+
presets: ({
|
|
128
|
+
name: string;
|
|
129
|
+
props: {
|
|
130
|
+
eyebrow: string;
|
|
131
|
+
title: string;
|
|
132
|
+
subtitle: string;
|
|
133
|
+
filter: string;
|
|
134
|
+
limit: number;
|
|
135
|
+
cta: string;
|
|
136
|
+
};
|
|
137
|
+
} | {
|
|
138
|
+
name: string;
|
|
139
|
+
props: {
|
|
140
|
+
title: string;
|
|
141
|
+
filter: string;
|
|
142
|
+
limit: number;
|
|
143
|
+
cta: string;
|
|
144
|
+
eyebrow?: undefined;
|
|
145
|
+
subtitle?: undefined;
|
|
146
|
+
};
|
|
147
|
+
})[];
|
|
148
|
+
enabledOn: string[];
|
|
149
|
+
data: {
|
|
150
|
+
products: {
|
|
151
|
+
loader: string;
|
|
152
|
+
params: {
|
|
153
|
+
filter: {
|
|
154
|
+
$prop: string;
|
|
155
|
+
};
|
|
156
|
+
category: {
|
|
157
|
+
$prop: string;
|
|
158
|
+
};
|
|
159
|
+
collection: {
|
|
160
|
+
$prop: string;
|
|
161
|
+
};
|
|
162
|
+
limit: {
|
|
163
|
+
$prop: string;
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
//# sourceMappingURL=ProductSlider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductSlider.d.ts","sourceRoot":"","sources":["../../../src/components/product/ProductSlider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,eAAe,CAAA;AAU5D,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEtE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAAA;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAc,EACd,YAAY,EACZ,UAAU,EACV,MAAM,EACN,KAAU,EACV,GAAgB,EAChB,IAAI,EACJ,SAAc,EACd,IAAI,GACL,EAAE,kBAAkB,4BAqFpB;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsGU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductSpecs.d.ts","sourceRoot":"","sources":["../../../src/components/product/ProductSpecs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAqDlD;sDACsD;AACtD,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,4BAmC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelatedProducts.d.ts","sourceRoot":"","sources":["../../../src/components/product/RelatedProducts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAuB,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAOvE;;0EAE0E;AAC1E,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,4BA8BhE"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { AuthAdapter } from '@fayz-ai/core';
|
|
2
2
|
import { type AuthPluginOptions } from '@fayz-ai/plugin-auth';
|
|
3
3
|
export type StorefrontAuthAdapter = AuthAdapter | 'mock' | 'supabase' | (string & {});
|
|
4
|
+
/** Thrown by signUpCustomer when the adapter reports a user but no live
|
|
5
|
+
* session (Supabase's signal for "email confirmation required" — see
|
|
6
|
+
* createSupabaseAuthAdapter's signUp, which returns accessToken: '' instead
|
|
7
|
+
* of null/an error). Signup succeeded; the customer just isn't authenticated
|
|
8
|
+
* yet, so we must not link/persist a session for them. */
|
|
9
|
+
export declare class EmailConfirmationRequiredError extends Error {
|
|
10
|
+
readonly email: string;
|
|
11
|
+
constructor(email: string);
|
|
12
|
+
}
|
|
4
13
|
export interface StorefrontAuthConfig {
|
|
5
14
|
adapter?: AuthPluginOptions['adapter'];
|
|
6
15
|
provider?: AuthPluginOptions['provider'];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/data/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,eAAe,CAAA;AAC1D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAA;AAa7B,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAErF;;;;2DAI2D;AAC3D,qBAAa,8BAA+B,SAAQ,KAAK;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;gBAEV,KAAK,EAAE,MAAM;CAK1B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAA;IACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;IACxC,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;CACzC;AAsBD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,qBAAqB,GAAG,oBAAoB,GAAG,SAAS,EACpE,QAAQ,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,WAAW,CAeb;AAuBD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAyC3D;AAED,wBAAgB,sBAAsB,IAAI,WAAW,CAGpD;AAgCD,MAAM,WAAW,uBAAuB;IACtC,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,uBAAuB,GAC7B,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjC;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAE3F;AAED,mEAAmE;AACnE,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAWjC;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAQrD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Active refinements, keyed by the `product.metadata` field they match.
|
|
3
|
+
*
|
|
4
|
+
* A metadata value may be a scalar or an array; an array matches if it contains
|
|
5
|
+
* the wanted value, which is what makes multi-valued facets like
|
|
6
|
+
* `purpose: ['estudar', 'presentear']` work.
|
|
7
|
+
*/
|
|
8
|
+
export type CatalogFacets = Readonly<Record<string, string>>;
|
|
9
|
+
/** Does a product satisfy every active facet? */
|
|
10
|
+
export declare function matchesFacets(metadata: Record<string, unknown> | null | undefined, facets: CatalogFacets): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* One authored refinement, as a repeatable row.
|
|
13
|
+
*
|
|
14
|
+
* A `Record<string, string>` is the natural shape for the matcher and for a
|
|
15
|
+
* hand-written config, but it is not something an editor can render a form for
|
|
16
|
+
* or an agent can generate against — the block schema vocabulary has no map
|
|
17
|
+
* type, and declaring one as a shapeless `list` is a schema that lies (the
|
|
18
|
+
* strict `auditBlocks` bar rejects it). So the authored form is a list of
|
|
19
|
+
* pairs, and both forms normalise here.
|
|
20
|
+
*/
|
|
21
|
+
export interface CatalogFacetEntry {
|
|
22
|
+
key: string;
|
|
23
|
+
value: string;
|
|
24
|
+
}
|
|
25
|
+
/** Either authored form → the map the matcher and the loader use. */
|
|
26
|
+
export declare function toFacetMap(input: CatalogFacets | readonly CatalogFacetEntry[] | undefined | null): CatalogFacets;
|
|
27
|
+
/** Immutably set or drop one key. */
|
|
28
|
+
export declare function withFacet(facets: CatalogFacets, key: string, value: string | null): CatalogFacets;
|
|
29
|
+
/**
|
|
30
|
+
* Fold the named `collection` shorthand into the facet map.
|
|
31
|
+
*
|
|
32
|
+
* `collection` is the one axis with a name of its own — a block prop, a loader
|
|
33
|
+
* param and a query key all spell it out. It is still just a metadata
|
|
34
|
+
* refinement, so it is merged here rather than filtered separately: two code
|
|
35
|
+
* paths applying refinements is how a rail and the catalogue come to disagree
|
|
36
|
+
* about what "in this collection" means.
|
|
37
|
+
*/
|
|
38
|
+
export declare function mergeCollectionFacet(facets: CatalogFacets | readonly CatalogFacetEntry[] | undefined | null, collection: string | undefined | null): CatalogFacets;
|
|
39
|
+
//# sourceMappingURL=facets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../src/data/facets.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;AAE5D,iDAAiD;AACjD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACpD,MAAM,EAAE,aAAa,GACpB,OAAO,CAUT;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,GAAG,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAAG,IAAI,GACrE,aAAa,CAQf;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAQjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GAAG,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAAG,IAAI,EACvE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GACpC,aAAa,CAGf"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { LoaderContext } from '@fayz-ai/core';
|
|
2
|
+
import type { ShopProvider } from '@fayz-ai/shop/provider';
|
|
3
|
+
import { type CatalogFacetEntry } from './facets';
|
|
4
|
+
export type StorefrontLoaderContext = LoaderContext<ShopProvider>;
|
|
5
|
+
export type ProductsSort = 'catalog' | 'newest' | 'price-asc' | 'price-desc' | 'name';
|
|
6
|
+
export interface ProductsListParams extends Record<string, unknown> {
|
|
7
|
+
/** Quick filter, mirroring the products/productSlider block vocabulary:
|
|
8
|
+
* 'new' implies sort 'newest'; 'sale' implies onSale. */
|
|
9
|
+
filter?: 'all' | 'new' | 'sale';
|
|
10
|
+
/**
|
|
11
|
+
* Category id, category SLUG, or exact category name — resolved in that
|
|
12
|
+
* order (see {@link filterByCategory}). The slug form is what makes the M3
|
|
13
|
+
* `/category/:slug` page shape portable to a backend with opaque ids.
|
|
14
|
+
*/
|
|
15
|
+
category?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Matched against each product's `metadata.collection` tag. The named
|
|
18
|
+
* shorthand for `facets: { collection }` — both go through one matcher.
|
|
19
|
+
*/
|
|
20
|
+
collection?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Arbitrary refinements over `product.metadata`. This is the store's own
|
|
23
|
+
* discovery axis — `purpose`, `brand`, `room` — without the SDK knowing the
|
|
24
|
+
* axis exists. An array-valued metadata field matches if it contains the
|
|
25
|
+
* value. Accepts the authored row form or a plain map; both normalise.
|
|
26
|
+
*/
|
|
27
|
+
facets?: Record<string, string> | readonly CatalogFacetEntry[];
|
|
28
|
+
search?: string;
|
|
29
|
+
sort?: ProductsSort;
|
|
30
|
+
limit?: number;
|
|
31
|
+
offset?: number;
|
|
32
|
+
inStock?: boolean;
|
|
33
|
+
onSale?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ProductBySlugParams extends Record<string, unknown> {
|
|
36
|
+
slug: string;
|
|
37
|
+
}
|
|
38
|
+
export interface EntityListParams extends Record<string, unknown> {
|
|
39
|
+
entity: string;
|
|
40
|
+
limit?: number;
|
|
41
|
+
offset?: number;
|
|
42
|
+
orderBy?: string;
|
|
43
|
+
order?: 'asc' | 'desc';
|
|
44
|
+
}
|
|
45
|
+
export interface EntityBySlugParams extends Record<string, unknown> {
|
|
46
|
+
entity: string;
|
|
47
|
+
slug: string;
|
|
48
|
+
}
|
|
49
|
+
export interface EntityFieldsParams extends Record<string, unknown> {
|
|
50
|
+
reference: string;
|
|
51
|
+
id: string;
|
|
52
|
+
}
|
|
53
|
+
/** Register the SDK loaders. Idempotent; called wherever blocks are registered,
|
|
54
|
+
* because the SDK blocks declare their data needs against these ids. */
|
|
55
|
+
export declare function registerStorefrontLoaders(): void;
|
|
56
|
+
//# sourceMappingURL=loaders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loaders.d.ts","sourceRoot":"","sources":["../../src/data/loaders.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAAuC,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAetF,MAAM,MAAM,uBAAuB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAA;AAEjE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,CAAA;AAErF,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE;8DAC0D;IAC1D,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAAA;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAgFD,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,IAAI,EAAE,MAAM,CAAA;CACb;AA0CD,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CACvB;AAaD,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AASD,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;CACX;AAqBD;yEACyE;AACzE,wBAAgB,yBAAyB,IAAI,IAAI,CAsKhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-status.d.ts","sourceRoot":"","sources":["../../src/data/order-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAmB1D;kFACkF;AAClF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAGlG;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAEvD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAE3D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Product, ProductVariant } from '@fayz-ai/shop/types';
|
|
2
|
+
export interface ProductOptionGroup {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
values: string[];
|
|
6
|
+
}
|
|
7
|
+
export type ProductOptionSelection = Record<string, string>;
|
|
8
|
+
/** Test seam — re-arms the once-per-product overlay deprecation warning. */
|
|
9
|
+
export declare function resetProductOptionsDeprecationWarnings(): void;
|
|
10
|
+
/**
|
|
11
|
+
* The option axes the PDP picker renders, in order of authority:
|
|
12
|
+
*
|
|
13
|
+
* 1. `product.options` — the variant tables (0028), attached by the
|
|
14
|
+
* products.bySlug loader. THE source since spine M5: these axes are the
|
|
15
|
+
* ones the server prices and decrements against.
|
|
16
|
+
* 2. metadata options / sizes / colors — the retired productMetadata overlay,
|
|
17
|
+
* kept rendering as an I10 deprecation shim (logged, documented). Display
|
|
18
|
+
* only: nothing server-side has ever heard of these labels, which is
|
|
19
|
+
* exactly why the overlay lost the job. Full deletion from the stores is
|
|
20
|
+
* M9 (`catalog.ts` dies everywhere).
|
|
21
|
+
*/
|
|
22
|
+
export declare function getProductOptionGroups(product: Product): ProductOptionGroup[];
|
|
23
|
+
/**
|
|
24
|
+
* The variant a selection denotes, or null when the product has no variants
|
|
25
|
+
* or the combination does not exist (a partial selection, or axes/values the
|
|
26
|
+
* variant table never had). Matching is exact over the variant's own options
|
|
27
|
+
* object — the same jsonb equality 0029 relies on server-side.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveVariantForSelection(product: Product, selection?: ProductOptionSelection | null): ProductVariant | null;
|
|
30
|
+
/** The price a selection sells for: the variant's own, or the product's when
|
|
31
|
+
* the variant inherits (price null) or nothing matched. */
|
|
32
|
+
export declare function selectionPrice(product: Product, selection?: ProductOptionSelection | null): number;
|
|
33
|
+
export declare function normalizeProductOptionSelection(selection?: ProductOptionSelection | null): ProductOptionSelection;
|
|
34
|
+
export declare function formatProductOptionSelection(selection?: ProductOptionSelection | null): string;
|
|
35
|
+
export declare function productOptionSelectionKey(selection?: ProductOptionSelection | null): string;
|
|
36
|
+
//# sourceMappingURL=product-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-options.d.ts","sourceRoot":"","sources":["../../src/data/product-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAElE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAqB3D,4EAA4E;AAC5E,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,EAAE,CA6B7E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACxC,cAAc,GAAG,IAAI,CAcvB;AAED;4DAC4D;AAC5D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GAAG,MAAM,CAGlG;AAED,wBAAgB,+BAA+B,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GAAG,sBAAsB,CAOjH;AAED,wBAAgB,4BAA4B,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GAAG,MAAM,CAI9F;AAED,wBAAgB,yBAAyB,CAAC,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GAAG,MAAM,CAI3F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type SeoFindingStatus = 'pass' | 'warn' | 'fail';
|
|
2
|
+
export interface SeoFinding {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
status: SeoFindingStatus;
|
|
6
|
+
/** What was actually found. */
|
|
7
|
+
detail: string;
|
|
8
|
+
/** Why it matters — the consequence, not the rule. */
|
|
9
|
+
why: string;
|
|
10
|
+
/** Weight in the score. Higher = more consequential. */
|
|
11
|
+
weight: number;
|
|
12
|
+
}
|
|
13
|
+
export interface SeoAuditInput {
|
|
14
|
+
/** In-app path, used to detect fragment addressing. */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Full URL as the browser sees it, when available. */
|
|
17
|
+
url?: string;
|
|
18
|
+
title?: string | null;
|
|
19
|
+
meta: Array<{
|
|
20
|
+
name?: string;
|
|
21
|
+
property?: string;
|
|
22
|
+
content: string;
|
|
23
|
+
}>;
|
|
24
|
+
links: Array<{
|
|
25
|
+
rel: string;
|
|
26
|
+
href: string;
|
|
27
|
+
}>;
|
|
28
|
+
/** `@type` of every JSON-LD block on the page. */
|
|
29
|
+
jsonLdTypes: string[];
|
|
30
|
+
h1Count: number;
|
|
31
|
+
imageCount: number;
|
|
32
|
+
imagesMissingAlt: number;
|
|
33
|
+
/** Text length of the main content region — the body a crawler indexes. */
|
|
34
|
+
contentTextLength: number;
|
|
35
|
+
/** Number of loading placeholders still in the markup. */
|
|
36
|
+
skeletonCount: number;
|
|
37
|
+
/** HTTP status, when the caller knows it. */
|
|
38
|
+
statusCode?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface SeoAuditResult {
|
|
41
|
+
/** 0–100, weighted by consequence. */
|
|
42
|
+
score: number;
|
|
43
|
+
grade: 'A' | 'B' | 'C' | 'D' | 'F';
|
|
44
|
+
findings: SeoFinding[];
|
|
45
|
+
passed: number;
|
|
46
|
+
total: number;
|
|
47
|
+
}
|
|
48
|
+
export declare function auditStorefrontSeo(input: SeoAuditInput): SeoAuditResult;
|
|
49
|
+
/**
|
|
50
|
+
* Collect audit input from a live document. Browser-only by definition — the
|
|
51
|
+
* server-side counterpart builds the same shape from its SeoConfig.
|
|
52
|
+
*/
|
|
53
|
+
export declare function collectSeoAuditInput(doc: Document, path: string): SeoAuditInput;
|
|
54
|
+
//# sourceMappingURL=seo-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seo-audit.d.ts","sourceRoot":"","sources":["../../src/diagnostics/seo-audit.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,gBAAgB,CAAA;IACxB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAA;IACX,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClE,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3C,kDAAkD;IAClD,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,CAAA;IACzB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAA;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IAClC,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAaD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAiJvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAmC/E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"seo-audit.js"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { StoreDocument, StoreSectionName } from './sections';
|
|
2
|
+
import type { StoreValidationError, StoreValidationReport } from './validate';
|
|
3
|
+
/** JSON values a change may write. */
|
|
4
|
+
export type StoreChangeValue = unknown;
|
|
5
|
+
export declare const STORE_CHANGE_OPS: readonly ["set", "remove", "insert", "move"];
|
|
6
|
+
export type StoreChangeOp = (typeof STORE_CHANGE_OPS)[number];
|
|
7
|
+
export interface StoreChange {
|
|
8
|
+
/**
|
|
9
|
+
* `set` — write `value` at `path` (creating missing intermediate objects).
|
|
10
|
+
* `remove` — delete the key, or splice the array element, at `path`.
|
|
11
|
+
* `insert` — splice `value` into the array at `path`, at `index` (default: append).
|
|
12
|
+
* `move` — relocate the array element at `path` to `index`.
|
|
13
|
+
*/
|
|
14
|
+
op: StoreChangeOp;
|
|
15
|
+
/**
|
|
16
|
+
* Dotted document path, the same shape `validateStore` reports:
|
|
17
|
+
* `presentation.pages.home.blocks[2].props.title`. An array step may address
|
|
18
|
+
* a block by id instead of by position — `blocks[#hero]` — which is the only
|
|
19
|
+
* form that stays correct across a reorder.
|
|
20
|
+
*/
|
|
21
|
+
path: string;
|
|
22
|
+
/** `set` / `insert`: the JSON value to write. */
|
|
23
|
+
value?: StoreChangeValue;
|
|
24
|
+
/** `insert` / `move`: destination index. `insert` defaults to append. */
|
|
25
|
+
index?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface AppliedStoreChange {
|
|
28
|
+
op: StoreChangeOp;
|
|
29
|
+
path: string;
|
|
30
|
+
/** The path with every `[#id]` step resolved to the position it hit — what
|
|
31
|
+
* actually moved, which is what a diff or an undo needs. */
|
|
32
|
+
resolvedPath: string;
|
|
33
|
+
/** The value that was there before, when there was one. */
|
|
34
|
+
before?: StoreChangeValue;
|
|
35
|
+
/** The value that is there now, when the op leaves one. */
|
|
36
|
+
after?: StoreChangeValue;
|
|
37
|
+
}
|
|
38
|
+
export interface ApplyChangeOptions {
|
|
39
|
+
/**
|
|
40
|
+
* Sections this caller may write. Defaults to every section EXCEPT `code`:
|
|
41
|
+
* a code entry is a handle name resolved out of the handle registry, so an
|
|
42
|
+
* agent inventing one produces a document that hydrates to a missing
|
|
43
|
+
* component. Pass it explicitly to move a route or drop an override.
|
|
44
|
+
*/
|
|
45
|
+
sections?: readonly StoreSectionName[];
|
|
46
|
+
/**
|
|
47
|
+
* 'reject' (default) — a batch whose RESULT fails validation is discarded
|
|
48
|
+
* whole and `doc` is the untouched input. 'allow' returns the changed
|
|
49
|
+
* document with the report anyway, for a caller that is mid-way through a
|
|
50
|
+
* multi-step edit and will validate at the end.
|
|
51
|
+
*/
|
|
52
|
+
onInvalid?: 'reject' | 'allow';
|
|
53
|
+
}
|
|
54
|
+
export interface StoreChangeResult {
|
|
55
|
+
/** True only when every change applied AND the result validates. */
|
|
56
|
+
ok: boolean;
|
|
57
|
+
/** The resulting document — the input, unchanged, when a rejected batch failed. */
|
|
58
|
+
doc: StoreDocument;
|
|
59
|
+
/** One entry per change, in order, for the changes that were applied. */
|
|
60
|
+
applied: AppliedStoreChange[];
|
|
61
|
+
/** Path/permission failures AND the resulting document's validation errors,
|
|
62
|
+
* in one list, in the shape `validateStore` returns — so a caller has one
|
|
63
|
+
* error vocabulary to correct on rather than two. */
|
|
64
|
+
errors: StoreValidationError[];
|
|
65
|
+
/** Validation of the resulting document. */
|
|
66
|
+
validation: StoreValidationReport;
|
|
67
|
+
}
|
|
68
|
+
/** Sections a change may write unless the caller says otherwise. */
|
|
69
|
+
export declare const DEFAULT_WRITABLE_SECTIONS: readonly StoreSectionName[];
|
|
70
|
+
type PathStep = {
|
|
71
|
+
kind: 'key';
|
|
72
|
+
key: string;
|
|
73
|
+
} | {
|
|
74
|
+
kind: 'index';
|
|
75
|
+
index: number;
|
|
76
|
+
} | {
|
|
77
|
+
kind: 'id';
|
|
78
|
+
id: string;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Parse `presentation.pages.home.blocks[#hero].props.title` into steps.
|
|
82
|
+
* Returns null for anything malformed — an unparseable path is a hard error,
|
|
83
|
+
* never a silently ignored change.
|
|
84
|
+
*/
|
|
85
|
+
export declare function parseStorePath(path: string): PathStep[] | null;
|
|
86
|
+
/**
|
|
87
|
+
* Apply an ordered batch of changes to a Store Document.
|
|
88
|
+
*
|
|
89
|
+
* Transactional: the batch either applies whole and validates, or the input
|
|
90
|
+
* document comes back untouched with every reason listed.
|
|
91
|
+
*
|
|
92
|
+
* applyChange(doc, { op: 'set', path: 'theme.colors.primary', value: '41 54% 55%' })
|
|
93
|
+
* applyChange(doc, [
|
|
94
|
+
* { op: 'insert', path: 'presentation.home.sections', index: 0, value: { type: 'seals' } },
|
|
95
|
+
* { op: 'move', path: 'presentation.home.sections[#hero]', index: 1 },
|
|
96
|
+
* ])
|
|
97
|
+
*/
|
|
98
|
+
export declare function applyChange(input: StoreDocument | Record<string, unknown>, changes: StoreChange | readonly StoreChange[], options?: ApplyChangeOptions): StoreChangeResult;
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=change.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../src/document/change.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAmC7E,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAA;AAEtC,eAAO,MAAM,gBAAgB,8CAA+C,CAAA;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,EAAE,EAAE,aAAa,CAAA;IACjB;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,iDAAiD;IACjD,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACxB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,aAAa,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ;iEAC6D;IAC7D,YAAY,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,gBAAgB,CAAA;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;IACtC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,EAAE,EAAE,OAAO,CAAA;IACX,mFAAmF;IACnF,GAAG,EAAE,aAAa,CAAA;IAClB,yEAAyE;IACzE,OAAO,EAAE,kBAAkB,EAAE,CAAA;IAC7B;;0DAEsD;IACtD,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC9B,4CAA4C;IAC5C,UAAU,EAAE,qBAAqB,CAAA;CAClC;AAED,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,EAAE,SAAS,gBAAgB,EAEhE,CAAA;AAID,KAAK,QAAQ,GACT;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAA;AAgB9B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAwC9D;AA0HD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9C,OAAO,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,EAC7C,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAmOnB"}
|