@fayz-ai/storefront 0.9.0 → 0.11.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-6IXTENLB.js +162 -0
- package/dist/chunk-6IXTENLB.js.map +1 -0
- package/dist/chunk-SX3J3QIT.js +11046 -0
- package/dist/chunk-SX3J3QIT.js.map +1 -0
- package/dist/components/PaymentTerms.d.ts +34 -0
- package/dist/components/PaymentTerms.d.ts.map +1 -0
- package/dist/components/Skeleton.d.ts +17 -0
- package/dist/components/Skeleton.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 +17 -0
- package/dist/components/account/CustomerAccountShell.d.ts.map +1 -0
- package/dist/components/account/SignInModal.d.ts.map +1 -0
- package/dist/components/account/section.d.ts +15 -0
- package/dist/components/account/section.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/CheckoutPayment.d.ts +17 -0
- package/dist/components/checkout/CheckoutPayment.d.ts.map +1 -0
- package/dist/components/checkout/CheckoutSteps.d.ts +9 -0
- package/dist/components/checkout/CheckoutSteps.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/order/SuccessMark.d.ts +10 -0
- package/dist/components/order/SuccessMark.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 +52 -0
- package/dist/data/loaders.d.ts.map +1 -0
- package/dist/data/local-orders.d.ts +5 -0
- package/dist/data/local-orders.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/data/shipping-items.d.ts +20 -0
- package/dist/data/shipping-items.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/document/config.d.ts +311 -0
- 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/store-policy.d.ts +29 -0
- package/dist/document/store-policy.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 +32 -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 +124 -54
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1310 -5010
- package/dist/index.js.map +1 -1
- package/dist/lib/errors.d.ts +9 -0
- package/dist/lib/errors.d.ts.map +1 -0
- 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} +33 -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 +34 -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/stores/delivery.store.d.ts +9 -0
- package/dist/stores/delivery.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/views/OrderConfirmationPage.d.ts.map +1 -0
- 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 +0 -13
- 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 +0 -174
- 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/OrderConfirmationPage.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/{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 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/diagnostics/seo-audit.ts"],"names":[],"mappings":"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","file":"chunk-6IXTENLB.js","sourcesContent":["// ---------------------------------------------------------------------------\n// What a rendered storefront page is actually worth to a crawler.\n//\n// The audit runs over a plain description of a page rather than over a live\n// DOM, so the same rules answer three different questions: a dev toolbar\n// inspecting the page it is sitting in, a CI check parsing fetched HTML, and a\n// prerender pass validating what it just wrote. Rules that live in three places\n// disagree within a month.\n//\n// Every finding carries `why`. A score with no explanation tells you a page is\n// a 62 and leaves you guessing; the point is to say which sentence of HTML is\n// missing and what it costs.\n// ---------------------------------------------------------------------------\n\nexport type SeoFindingStatus = 'pass' | 'warn' | 'fail'\n\nexport interface SeoFinding {\n id: string\n label: string\n status: SeoFindingStatus\n /** What was actually found. */\n detail: string\n /** Why it matters — the consequence, not the rule. */\n why: string\n /** Weight in the score. Higher = more consequential. */\n weight: number\n}\n\nexport interface SeoAuditInput {\n /** In-app path, used to detect fragment addressing. */\n path: string\n /** Full URL as the browser sees it, when available. */\n url?: string\n title?: string | null\n meta: Array<{ name?: string; property?: string; content: string }>\n links: Array<{ rel: string; href: string }>\n /** `@type` of every JSON-LD block on the page. */\n jsonLdTypes: string[]\n h1Count: number\n imageCount: number\n imagesMissingAlt: number\n /** Text length of the main content region — the body a crawler indexes. */\n contentTextLength: number\n /** Number of loading placeholders still in the markup. */\n skeletonCount: number\n /** HTTP status, when the caller knows it. */\n statusCode?: number\n}\n\nexport interface SeoAuditResult {\n /** 0–100, weighted by consequence. */\n score: number\n grade: 'A' | 'B' | 'C' | 'D' | 'F'\n findings: SeoFinding[]\n passed: number\n total: number\n}\n\nconst metaContent = (input: SeoAuditInput, key: string): string | undefined =>\n input.meta.find((m) => m.name === key || m.property === key)?.content?.trim() || undefined\n\nfunction gradeFor(score: number): SeoAuditResult['grade'] {\n if (score >= 90) return 'A'\n if (score >= 75) return 'B'\n if (score >= 60) return 'C'\n if (score >= 40) return 'D'\n return 'F'\n}\n\nexport function auditStorefrontSeo(input: SeoAuditInput): SeoAuditResult {\n const f: SeoFinding[] = []\n const add = (\n id: string,\n label: string,\n status: SeoFindingStatus,\n detail: string,\n why: string,\n weight: number,\n ) => f.push({ id, label, status, detail, why, weight })\n\n // --- Addressing -----------------------------------------------------------\n const isFragment = (input.url ?? input.path).includes('#/')\n add(\n 'real-url',\n 'Real URL',\n isFragment ? 'fail' : 'pass',\n isFragment ? 'Page is addressed by fragment (#/…)' : input.path,\n 'A URL fragment is never sent to the server, so every page of the store collapses into one address: one entry in the index, one set of meta tags, no per-page link preview, and nothing to prerender.',\n 25,\n )\n\n // --- Server-rendered body -------------------------------------------------\n const hasBody = input.contentTextLength >= 200\n add(\n 'server-content',\n 'Content in the HTML',\n hasBody ? (input.skeletonCount > 0 ? 'warn' : 'pass') : 'fail',\n `${input.contentTextLength} chars of main content` +\n (input.skeletonCount > 0 ? `, ${input.skeletonCount} loading placeholders still present` : ''),\n 'Crawlers do run JavaScript, but on a slower second pass and with less weight. Content already in the HTML is indexed on the first pass, and is what a link preview or a text-only client sees at all.',\n 20,\n )\n\n // --- Title ----------------------------------------------------------------\n const title = input.title?.trim()\n const titleLen = title?.length ?? 0\n add(\n 'title',\n 'Title',\n !title ? 'fail' : titleLen > 60 || titleLen < 15 ? 'warn' : 'pass',\n title ? `${titleLen} chars — “${title.slice(0, 70)}”` : 'missing',\n 'The title is the clickable line in search results and the tab name. Under ~15 chars wastes the slot; over ~60 gets truncated mid-word.',\n 15,\n )\n\n // --- Description ----------------------------------------------------------\n const desc = metaContent(input, 'description')\n const descLen = desc?.length ?? 0\n add(\n 'description',\n 'Meta description',\n !desc ? 'fail' : descLen > 160 || descLen < 50 ? 'warn' : 'pass',\n desc ? `${descLen} chars` : 'missing',\n 'Not a ranking factor, but it is the snippet under the title. Absent, the engine invents one from page text; over ~160 chars it is cut off.',\n 10,\n )\n\n // --- Canonical ------------------------------------------------------------\n const canonical = input.links.find((l) => l.rel === 'canonical')?.href\n const canonicalAbsolute = canonical?.startsWith('http') ?? false\n add(\n 'canonical',\n 'Canonical URL',\n !canonical ? 'fail' : !canonicalAbsolute ? 'warn' : 'pass',\n canonical ?? 'missing',\n 'Tells the engine which URL is authoritative when the same page is reachable with tracking parameters. Must be absolute — a relative canonical is ignored.',\n 10,\n )\n\n // --- Social ---------------------------------------------------------------\n const ogTitle = metaContent(input, 'og:title')\n const ogImage = metaContent(input, 'og:image')\n const ogType = metaContent(input, 'og:type')\n const socialOk = Boolean(ogTitle && ogImage)\n add(\n 'social',\n 'Link preview (OpenGraph)',\n socialOk ? 'pass' : ogTitle ? 'warn' : 'fail',\n [ogTitle && 'og:title', ogImage && 'og:image', ogType && `og:type=${ogType}`]\n .filter(Boolean)\n .join(', ') || 'missing',\n 'What WhatsApp, Instagram and Slack render when the link is shared. Without og:image the share is a bare grey rectangle — for a store shared in messaging apps this is often worth more than search rank.',\n 10,\n )\n\n // --- Structured data ------------------------------------------------------\n const types = input.jsonLdTypes\n add(\n 'structured-data',\n 'Structured data',\n types.length ? 'pass' : 'warn',\n types.length ? types.join(', ') : 'none',\n 'Product JSON-LD makes a page eligible for rich results — price, availability and rating shown directly in search. BreadcrumbList replaces the bare URL with a readable path.',\n 5,\n )\n\n // --- Headings -------------------------------------------------------------\n add(\n 'h1',\n 'Single H1',\n input.h1Count === 1 ? 'pass' : input.h1Count === 0 ? 'fail' : 'warn',\n `${input.h1Count} found`,\n 'The H1 is the page’s stated subject. None leaves it ambiguous; several compete with each other.',\n 3,\n )\n\n // --- Images ---------------------------------------------------------------\n add(\n 'image-alt',\n 'Image alt text',\n input.imagesMissingAlt === 0 ? 'pass' : input.imagesMissingAlt > 3 ? 'fail' : 'warn',\n `${input.imagesMissingAlt}/${input.imageCount} missing alt`,\n 'Alt text is how a product image enters image search, and how a screen reader describes it. On a catalogue page the images are the product.',\n 2,\n )\n\n // --- Status ---------------------------------------------------------------\n if (input.statusCode != null) {\n const notFoundish = /não encontrada|not found|404/i.test(input.title ?? '')\n const soft404 = notFoundish && input.statusCode === 200\n add(\n 'status',\n 'HTTP status',\n soft404 ? 'fail' : 'pass',\n `${input.statusCode}${soft404 ? ' on a not-found page' : ''}`,\n 'A missing page answering 200 is a “soft 404”: the engine indexes it as real content and the site accumulates near-duplicate empty pages.',\n 5,\n )\n }\n\n const total = f.reduce((s, x) => s + x.weight, 0)\n const earned = f.reduce(\n (s, x) => s + (x.status === 'pass' ? x.weight : x.status === 'warn' ? x.weight * 0.5 : 0),\n 0,\n )\n const score = total === 0 ? 0 : Math.round((earned / total) * 100)\n\n return {\n score,\n grade: gradeFor(score),\n findings: f,\n passed: f.filter((x) => x.status === 'pass').length,\n total: f.length,\n }\n}\n\n/**\n * Collect audit input from a live document. Browser-only by definition — the\n * server-side counterpart builds the same shape from its SeoConfig.\n */\nexport function collectSeoAuditInput(doc: Document, path: string): SeoAuditInput {\n const main = doc.querySelector('main') ?? doc.body\n const images = Array.from(doc.querySelectorAll('img'))\n const jsonLdTypes: string[] = []\n for (const el of Array.from(doc.querySelectorAll('script[type=\"application/ld+json\"]'))) {\n try {\n const parsed = JSON.parse(el.textContent ?? '')\n for (const node of Array.isArray(parsed) ? parsed : [parsed]) {\n if (node && typeof node['@type'] === 'string') jsonLdTypes.push(node['@type'])\n }\n } catch {\n jsonLdTypes.push('(unparseable)')\n }\n }\n\n return {\n path,\n url: doc.location?.href,\n title: doc.title,\n meta: Array.from(doc.querySelectorAll('meta')).map((m) => ({\n name: m.getAttribute('name') ?? undefined,\n property: m.getAttribute('property') ?? undefined,\n content: m.getAttribute('content') ?? '',\n })),\n links: Array.from(doc.querySelectorAll('link[rel]')).map((l) => ({\n rel: l.getAttribute('rel') ?? '',\n href: l.getAttribute('href') ?? '',\n })),\n jsonLdTypes,\n h1Count: doc.querySelectorAll('h1').length,\n imageCount: images.length,\n imagesMissingAlt: images.filter((i) => !i.getAttribute('alt')?.trim()).length,\n contentTextLength: (main?.textContent ?? '').replace(/\\s+/g, ' ').trim().length,\n skeletonCount: doc.querySelectorAll('.animate-pulse').length,\n }\n}\n"]}
|