@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.
Files changed (368) hide show
  1. package/README.md +3 -3
  2. package/dist/app/createStorefrontApp.d.ts +65 -0
  3. package/dist/app/createStorefrontApp.d.ts.map +1 -0
  4. package/dist/{define.d.ts → app/define.d.ts} +3 -3
  5. package/dist/app/define.d.ts.map +1 -0
  6. package/dist/app/hydration.d.ts +37 -0
  7. package/dist/app/hydration.d.ts.map +1 -0
  8. package/dist/app/prerender.d.ts +57 -0
  9. package/dist/app/prerender.d.ts.map +1 -0
  10. package/dist/{router.d.ts → app/router.d.ts} +140 -113
  11. package/dist/app/router.d.ts.map +1 -0
  12. package/dist/{scaffold.d.ts → app/scaffold.d.ts} +2 -2
  13. package/dist/app/scaffold.d.ts.map +1 -0
  14. package/dist/app/serving.d.ts +70 -0
  15. package/dist/app/serving.d.ts.map +1 -0
  16. package/dist/app/static-render.d.ts +46 -0
  17. package/dist/app/static-render.d.ts.map +1 -0
  18. package/dist/blocks/block-at-path.d.ts +59 -0
  19. package/dist/blocks/block-at-path.d.ts.map +1 -0
  20. package/dist/blocks/page-blocks.d.ts +163 -0
  21. package/dist/blocks/page-blocks.d.ts.map +1 -0
  22. package/dist/blocks/page-data.d.ts +105 -0
  23. package/dist/blocks/page-data.d.ts.map +1 -0
  24. package/dist/{blocks.d.ts → blocks/registry.d.ts} +1 -1
  25. package/dist/blocks/registry.d.ts.map +1 -0
  26. package/dist/{sections.d.ts → blocks/sections.d.ts} +40 -2
  27. package/dist/blocks/sections.d.ts.map +1 -0
  28. package/dist/chunk-6B7H3IZ6.js +10232 -0
  29. package/dist/chunk-6B7H3IZ6.js.map +1 -0
  30. package/dist/chunk-6IXTENLB.js +162 -0
  31. package/dist/chunk-6IXTENLB.js.map +1 -0
  32. package/dist/components/PaymentTerms.d.ts +34 -0
  33. package/dist/components/PaymentTerms.d.ts.map +1 -0
  34. package/dist/components/SmoothImage.d.ts +1 -1
  35. package/dist/components/SmoothImage.d.ts.map +1 -1
  36. package/dist/components/account/CustomerAccountShell.d.ts.map +1 -0
  37. package/dist/components/account/SignInModal.d.ts.map +1 -0
  38. package/dist/components/cart/CartDrawer.d.ts.map +1 -0
  39. package/dist/components/cart/QuantityInput.d.ts.map +1 -0
  40. package/dist/components/checkout/DeliveryEstimator.d.ts.map +1 -0
  41. package/dist/components/collection/CategoryShowcase.d.ts +44 -0
  42. package/dist/components/collection/CategoryShowcase.d.ts.map +1 -0
  43. package/dist/components/collection/FiltersPanel.d.ts +19 -0
  44. package/dist/components/collection/FiltersPanel.d.ts.map +1 -0
  45. package/dist/components/collection/ProductGrid.d.ts.map +1 -0
  46. package/dist/components/layout/PageBodyBlocks.d.ts +40 -0
  47. package/dist/components/layout/PageBodyBlocks.d.ts.map +1 -0
  48. package/dist/components/layout/SearchOverlay.d.ts +13 -0
  49. package/dist/components/layout/SearchOverlay.d.ts.map +1 -0
  50. package/dist/components/layout/StorefrontErrorBoundary.d.ts.map +1 -0
  51. package/dist/components/layout/StorefrontFooter.d.ts.map +1 -0
  52. package/dist/components/layout/StorefrontHeader.d.ts.map +1 -0
  53. package/dist/components/layout/Toaster.d.ts.map +1 -0
  54. package/dist/components/marketing/CollectionSections.d.ts +463 -0
  55. package/dist/components/marketing/CollectionSections.d.ts.map +1 -0
  56. package/dist/components/marketing/ConversionSections.d.ts +221 -0
  57. package/dist/components/marketing/ConversionSections.d.ts.map +1 -0
  58. package/dist/components/marketing/EditorialSections.d.ts +248 -0
  59. package/dist/components/marketing/EditorialSections.d.ts.map +1 -0
  60. package/dist/components/marketing/EntityList.d.ts +97 -0
  61. package/dist/components/marketing/EntityList.d.ts.map +1 -0
  62. package/dist/components/marketing/FormBlock.d.ts +167 -0
  63. package/dist/components/marketing/FormBlock.d.ts.map +1 -0
  64. package/dist/components/marketing/HeroSection.d.ts +125 -0
  65. package/dist/components/marketing/HeroSection.d.ts.map +1 -0
  66. package/dist/components/marketing/MediaCarousel.d.ts +135 -0
  67. package/dist/components/marketing/MediaCarousel.d.ts.map +1 -0
  68. package/dist/components/marketing/MiscSections.d.ts +252 -0
  69. package/dist/components/marketing/MiscSections.d.ts.map +1 -0
  70. package/dist/components/order/OrderTrackingTimeline.d.ts.map +1 -0
  71. package/dist/components/product/ProductCard.d.ts +14 -0
  72. package/dist/components/product/ProductCard.d.ts.map +1 -0
  73. package/dist/components/product/ProductEnquiryForm.d.ts.map +1 -0
  74. package/dist/components/product/ProductGallery.d.ts +36 -0
  75. package/dist/components/product/ProductGallery.d.ts.map +1 -0
  76. package/dist/components/{ProductOptionSelector.d.ts → product/ProductOptionSelector.d.ts} +1 -1
  77. package/dist/components/product/ProductOptionSelector.d.ts.map +1 -0
  78. package/dist/components/product/ProductRail.d.ts +93 -0
  79. package/dist/components/product/ProductRail.d.ts.map +1 -0
  80. package/dist/components/product/ProductReviews.d.ts +39 -0
  81. package/dist/components/product/ProductReviews.d.ts.map +1 -0
  82. package/dist/components/product/ProductSlider.d.ts +169 -0
  83. package/dist/components/product/ProductSlider.d.ts.map +1 -0
  84. package/dist/components/product/ProductSpecs.d.ts.map +1 -0
  85. package/dist/components/product/RelatedProducts.d.ts.map +1 -0
  86. package/dist/{auth.d.ts → data/auth.d.ts} +9 -0
  87. package/dist/data/auth.d.ts.map +1 -0
  88. package/dist/data/facets.d.ts +39 -0
  89. package/dist/data/facets.d.ts.map +1 -0
  90. package/dist/data/loaders.d.ts +56 -0
  91. package/dist/data/loaders.d.ts.map +1 -0
  92. package/dist/data/order-status.d.ts.map +1 -0
  93. package/dist/data/product-options.d.ts +36 -0
  94. package/dist/data/product-options.d.ts.map +1 -0
  95. package/dist/diagnostics/seo-audit.d.ts +54 -0
  96. package/dist/diagnostics/seo-audit.d.ts.map +1 -0
  97. package/dist/diagnostics/seo-audit.js +3 -0
  98. package/dist/diagnostics/seo-audit.js.map +1 -0
  99. package/dist/document/change.d.ts +100 -0
  100. package/dist/document/change.d.ts.map +1 -0
  101. package/dist/{config.d.ts → document/config.d.ts} +126 -7
  102. package/dist/document/config.d.ts.map +1 -0
  103. package/dist/document/describe.d.ts +135 -0
  104. package/dist/document/describe.d.ts.map +1 -0
  105. package/dist/document/overlay.d.ts +58 -0
  106. package/dist/document/overlay.d.ts.map +1 -0
  107. package/dist/{presets.d.ts → document/presets.d.ts} +2 -2
  108. package/dist/document/presets.d.ts.map +1 -0
  109. package/dist/document/render.d.ts +171 -0
  110. package/dist/document/render.d.ts.map +1 -0
  111. package/dist/document/round-trip.d.ts +46 -0
  112. package/dist/document/round-trip.d.ts.map +1 -0
  113. package/dist/document/sections.d.ts +194 -0
  114. package/dist/document/sections.d.ts.map +1 -0
  115. package/dist/document/upgrade.d.ts +112 -0
  116. package/dist/document/upgrade.d.ts.map +1 -0
  117. package/dist/document/validate.d.ts +24 -0
  118. package/dist/document/validate.d.ts.map +1 -0
  119. package/dist/{component-contracts.d.ts → extend/component-contracts.d.ts} +74 -22
  120. package/dist/extend/component-contracts.d.ts.map +1 -0
  121. package/dist/extend/component-override.d.ts +38 -0
  122. package/dist/extend/component-override.d.ts.map +1 -0
  123. package/dist/extend/component-selectors.d.ts.map +1 -0
  124. package/dist/extend/editor-bridge.d.ts +59 -0
  125. package/dist/extend/editor-bridge.d.ts.map +1 -0
  126. package/dist/extend/extension-points.d.ts +103 -0
  127. package/dist/extend/extension-points.d.ts.map +1 -0
  128. package/dist/extend/slots.d.ts +216 -0
  129. package/dist/extend/slots.d.ts.map +1 -0
  130. package/dist/hooks/index.d.ts +25 -6
  131. package/dist/hooks/index.d.ts.map +1 -1
  132. package/dist/hooks/use-address.d.ts +26 -0
  133. package/dist/hooks/use-address.d.ts.map +1 -0
  134. package/dist/hooks/use-cart.d.ts +3 -0
  135. package/dist/hooks/use-cart.d.ts.map +1 -0
  136. package/dist/hooks/use-catalog.d.ts +24 -0
  137. package/dist/hooks/use-catalog.d.ts.map +1 -0
  138. package/dist/hooks/use-categories.d.ts +19 -0
  139. package/dist/hooks/use-categories.d.ts.map +1 -0
  140. package/dist/hooks/use-checkout.d.ts +41 -0
  141. package/dist/hooks/use-checkout.d.ts.map +1 -0
  142. package/dist/hooks/use-discount-validator.d.ts +20 -0
  143. package/dist/hooks/use-discount-validator.d.ts.map +1 -0
  144. package/dist/hooks/use-enquiry.d.ts +7 -0
  145. package/dist/hooks/use-enquiry.d.ts.map +1 -0
  146. package/dist/hooks/{useMyOrders.d.ts → use-my-orders.d.ts} +1 -1
  147. package/dist/hooks/use-my-orders.d.ts.map +1 -0
  148. package/dist/hooks/use-order.d.ts +17 -0
  149. package/dist/hooks/use-order.d.ts.map +1 -0
  150. package/dist/hooks/use-payment-methods.d.ts +19 -0
  151. package/dist/hooks/use-payment-methods.d.ts.map +1 -0
  152. package/dist/hooks/use-policies.d.ts +25 -0
  153. package/dist/hooks/use-policies.d.ts.map +1 -0
  154. package/dist/hooks/use-product.d.ts +15 -0
  155. package/dist/hooks/use-product.d.ts.map +1 -0
  156. package/dist/hooks/{useProducts.d.ts → use-products.d.ts} +1 -1
  157. package/dist/hooks/use-products.d.ts.map +1 -0
  158. package/dist/hooks/use-region.d.ts +15 -0
  159. package/dist/hooks/use-region.d.ts.map +1 -0
  160. package/dist/hooks/use-shipping.d.ts +29 -0
  161. package/dist/hooks/use-shipping.d.ts.map +1 -0
  162. package/dist/hooks/use-storefront-actions.d.ts +12 -0
  163. package/dist/hooks/use-storefront-actions.d.ts.map +1 -0
  164. package/dist/hooks/use-storefront-head.d.ts +19 -0
  165. package/dist/hooks/use-storefront-head.d.ts.map +1 -0
  166. package/dist/hooks/use-storefront.d.ts +3 -0
  167. package/dist/hooks/use-storefront.d.ts.map +1 -0
  168. package/dist/index.d.ts +123 -54
  169. package/dist/index.d.ts.map +1 -1
  170. package/dist/index.js +1311 -5012
  171. package/dist/index.js.map +1 -1
  172. package/dist/lib/format.d.ts.map +1 -0
  173. package/dist/lib/motion.d.ts.map +1 -0
  174. package/dist/lib/seo.d.ts +26 -0
  175. package/dist/lib/seo.d.ts.map +1 -0
  176. package/dist/{testids.d.ts → lib/testids.d.ts} +21 -0
  177. package/dist/lib/testids.d.ts.map +1 -0
  178. package/dist/{theme.d.ts → lib/theme.d.ts} +41 -3
  179. package/dist/lib/theme.d.ts.map +1 -0
  180. package/dist/render.d.ts +5 -0
  181. package/dist/render.d.ts.map +1 -0
  182. package/dist/render.js +359 -0
  183. package/dist/render.js.map +1 -0
  184. package/dist/stores/cart.store.d.ts +6 -2
  185. package/dist/stores/cart.store.d.ts.map +1 -1
  186. package/dist/stores/catalog.store.d.ts +11 -0
  187. package/dist/stores/catalog.store.d.ts.map +1 -1
  188. package/dist/views/CatalogPage.d.ts.map +1 -0
  189. package/dist/views/CheckoutPage.d.ts.map +1 -0
  190. package/dist/views/ContentPage.d.ts +11 -0
  191. package/dist/views/ContentPage.d.ts.map +1 -0
  192. package/dist/views/HomePage.d.ts +9 -0
  193. package/dist/views/HomePage.d.ts.map +1 -0
  194. package/dist/views/MyPurchasesPage.d.ts.map +1 -0
  195. package/dist/views/NotFoundPage.d.ts.map +1 -0
  196. package/dist/{pages → views}/OrderConfirmationPage.d.ts.map +1 -1
  197. package/dist/{pages → views}/PolicyPage.d.ts.map +1 -1
  198. package/dist/views/ProductDetailPage.d.ts.map +1 -0
  199. package/dist/views/StorefrontPage.d.ts +35 -0
  200. package/dist/views/StorefrontPage.d.ts.map +1 -0
  201. package/dist/workflows/checkout.d.ts +1 -1
  202. package/dist/workflows/checkout.d.ts.map +1 -1
  203. package/package.json +21 -14
  204. package/dist/auth.d.ts.map +0 -1
  205. package/dist/blocks.d.ts.map +0 -1
  206. package/dist/component-contracts.d.ts.map +0 -1
  207. package/dist/component-selectors.d.ts.map +0 -1
  208. package/dist/components/CartDrawer.d.ts.map +0 -1
  209. package/dist/components/CustomerAccountShell.d.ts.map +0 -1
  210. package/dist/components/DeliveryEstimator.d.ts.map +0 -1
  211. package/dist/components/FiltersPanel.d.ts +0 -3
  212. package/dist/components/FiltersPanel.d.ts.map +0 -1
  213. package/dist/components/OrderTrackingTimeline.d.ts.map +0 -1
  214. package/dist/components/ProductCard.d.ts +0 -4
  215. package/dist/components/ProductCard.d.ts.map +0 -1
  216. package/dist/components/ProductEnquiryForm.d.ts.map +0 -1
  217. package/dist/components/ProductGallery.d.ts +0 -22
  218. package/dist/components/ProductGallery.d.ts.map +0 -1
  219. package/dist/components/ProductGrid.d.ts.map +0 -1
  220. package/dist/components/ProductOptionSelector.d.ts.map +0 -1
  221. package/dist/components/ProductSpecs.d.ts.map +0 -1
  222. package/dist/components/QuantityInput.d.ts.map +0 -1
  223. package/dist/components/RelatedProducts.d.ts.map +0 -1
  224. package/dist/components/SignInModal.d.ts.map +0 -1
  225. package/dist/components/StorefrontErrorBoundary.d.ts.map +0 -1
  226. package/dist/components/StorefrontFooter.d.ts.map +0 -1
  227. package/dist/components/StorefrontHeader.d.ts.map +0 -1
  228. package/dist/components/Toaster.d.ts.map +0 -1
  229. package/dist/components/sections/CategoryShowcase.d.ts +0 -6
  230. package/dist/components/sections/CategoryShowcase.d.ts.map +0 -1
  231. package/dist/components/sections/HeroSection.d.ts +0 -9
  232. package/dist/components/sections/HeroSection.d.ts.map +0 -1
  233. package/dist/components/sections/MediaCarousel.d.ts +0 -11
  234. package/dist/components/sections/MediaCarousel.d.ts.map +0 -1
  235. package/dist/components/sections/MiscSections.d.ts +0 -33
  236. package/dist/components/sections/MiscSections.d.ts.map +0 -1
  237. package/dist/components/sections/ProductRail.d.ts +0 -9
  238. package/dist/components/sections/ProductRail.d.ts.map +0 -1
  239. package/dist/components/sections/ProductSlider.d.ts +0 -15
  240. package/dist/components/sections/ProductSlider.d.ts.map +0 -1
  241. package/dist/config.d.ts.map +0 -1
  242. package/dist/createStorefrontApp.d.ts +0 -28
  243. package/dist/createStorefrontApp.d.ts.map +0 -1
  244. package/dist/define.d.ts.map +0 -1
  245. package/dist/format.d.ts.map +0 -1
  246. package/dist/hooks/useCategories.d.ts +0 -6
  247. package/dist/hooks/useCategories.d.ts.map +0 -1
  248. package/dist/hooks/useDiscountValidator.d.ts +0 -14
  249. package/dist/hooks/useDiscountValidator.d.ts.map +0 -1
  250. package/dist/hooks/useMyOrders.d.ts.map +0 -1
  251. package/dist/hooks/useProduct.d.ts +0 -7
  252. package/dist/hooks/useProduct.d.ts.map +0 -1
  253. package/dist/hooks/useProducts.d.ts.map +0 -1
  254. package/dist/hooks/useStorefront.d.ts +0 -35
  255. package/dist/hooks/useStorefront.d.ts.map +0 -1
  256. package/dist/hooks/useStorefrontHead.d.ts +0 -11
  257. package/dist/hooks/useStorefrontHead.d.ts.map +0 -1
  258. package/dist/motion.d.ts.map +0 -1
  259. package/dist/order-status.d.ts.map +0 -1
  260. package/dist/pages/CatalogPage.d.ts.map +0 -1
  261. package/dist/pages/CheckoutPage.d.ts.map +0 -1
  262. package/dist/pages/HomePage.d.ts +0 -9
  263. package/dist/pages/HomePage.d.ts.map +0 -1
  264. package/dist/pages/MyPurchasesPage.d.ts.map +0 -1
  265. package/dist/pages/NotFoundPage.d.ts.map +0 -1
  266. package/dist/pages/ProductDetailPage.d.ts.map +0 -1
  267. package/dist/presets.d.ts.map +0 -1
  268. package/dist/product-options.d.ts +0 -12
  269. package/dist/product-options.d.ts.map +0 -1
  270. package/dist/router.d.ts.map +0 -1
  271. package/dist/scaffold.d.ts.map +0 -1
  272. package/dist/sections.d.ts.map +0 -1
  273. package/dist/testids.d.ts.map +0 -1
  274. package/dist/theme.d.ts.map +0 -1
  275. package/src/auth.ts +0 -227
  276. package/src/blocks.tsx +0 -51
  277. package/src/catalog.ts +0 -3
  278. package/src/component-contracts.ts +0 -154
  279. package/src/component-selectors.ts +0 -31
  280. package/src/components/CartDrawer.tsx +0 -279
  281. package/src/components/CustomerAccountShell.tsx +0 -102
  282. package/src/components/DeliveryEstimator.tsx +0 -157
  283. package/src/components/FiltersPanel.tsx +0 -109
  284. package/src/components/OrderTrackingTimeline.tsx +0 -135
  285. package/src/components/Price.tsx +0 -32
  286. package/src/components/ProductCard.tsx +0 -120
  287. package/src/components/ProductEnquiryForm.tsx +0 -175
  288. package/src/components/ProductGallery.tsx +0 -174
  289. package/src/components/ProductGrid.tsx +0 -43
  290. package/src/components/ProductOptionSelector.tsx +0 -50
  291. package/src/components/ProductSpecs.tsx +0 -75
  292. package/src/components/QuantityInput.tsx +0 -52
  293. package/src/components/RelatedProducts.tsx +0 -40
  294. package/src/components/SignInModal.tsx +0 -120
  295. package/src/components/SmoothImage.tsx +0 -59
  296. package/src/components/StorefrontErrorBoundary.tsx +0 -51
  297. package/src/components/StorefrontFooter.tsx +0 -110
  298. package/src/components/StorefrontHeader.tsx +0 -477
  299. package/src/components/Toaster.tsx +0 -60
  300. package/src/components/sections/CategoryShowcase.tsx +0 -80
  301. package/src/components/sections/HeroSection.tsx +0 -193
  302. package/src/components/sections/MediaCarousel.tsx +0 -141
  303. package/src/components/sections/MiscSections.tsx +0 -158
  304. package/src/components/sections/ProductRail.tsx +0 -81
  305. package/src/components/sections/ProductSlider.tsx +0 -119
  306. package/src/config.ts +0 -229
  307. package/src/createStorefrontApp.tsx +0 -247
  308. package/src/define.ts +0 -34
  309. package/src/format.ts +0 -7
  310. package/src/hooks/index.ts +0 -6
  311. package/src/hooks/useCategories.ts +0 -26
  312. package/src/hooks/useDiscountValidator.ts +0 -43
  313. package/src/hooks/useMyOrders.ts +0 -41
  314. package/src/hooks/useProduct.ts +0 -36
  315. package/src/hooks/useProducts.ts +0 -39
  316. package/src/hooks/useStorefront.ts +0 -58
  317. package/src/hooks/useStorefrontHead.ts +0 -25
  318. package/src/index.ts +0 -202
  319. package/src/motion.tsx +0 -94
  320. package/src/order-status.ts +0 -33
  321. package/src/pages/CatalogPage.tsx +0 -118
  322. package/src/pages/CheckoutPage.tsx +0 -689
  323. package/src/pages/HomePage.tsx +0 -16
  324. package/src/pages/MyPurchasesPage.tsx +0 -311
  325. package/src/pages/NotFoundPage.tsx +0 -25
  326. package/src/pages/OrderConfirmationPage.tsx +0 -190
  327. package/src/pages/PolicyPage.tsx +0 -47
  328. package/src/pages/ProductDetailPage.tsx +0 -264
  329. package/src/presets.ts +0 -324
  330. package/src/product-options.ts +0 -63
  331. package/src/router.ts +0 -49
  332. package/src/scaffold.tsx +0 -115
  333. package/src/sections.ts +0 -116
  334. package/src/shop.ts +0 -4
  335. package/src/stores/cart.store.ts +0 -185
  336. package/src/stores/catalog.store.ts +0 -39
  337. package/src/stores/delivery.store.ts +0 -152
  338. package/src/stores/session.store.ts +0 -28
  339. package/src/stores/toast.store.ts +0 -43
  340. package/src/testids.ts +0 -136
  341. package/src/theme.ts +0 -194
  342. package/src/ui.ts +0 -5
  343. package/src/workflows/checkout.ts +0 -119
  344. /package/dist/components/{CustomerAccountShell.d.ts → account/CustomerAccountShell.d.ts} +0 -0
  345. /package/dist/components/{SignInModal.d.ts → account/SignInModal.d.ts} +0 -0
  346. /package/dist/components/{CartDrawer.d.ts → cart/CartDrawer.d.ts} +0 -0
  347. /package/dist/components/{QuantityInput.d.ts → cart/QuantityInput.d.ts} +0 -0
  348. /package/dist/components/{DeliveryEstimator.d.ts → checkout/DeliveryEstimator.d.ts} +0 -0
  349. /package/dist/components/{ProductGrid.d.ts → collection/ProductGrid.d.ts} +0 -0
  350. /package/dist/components/{StorefrontErrorBoundary.d.ts → layout/StorefrontErrorBoundary.d.ts} +0 -0
  351. /package/dist/components/{StorefrontFooter.d.ts → layout/StorefrontFooter.d.ts} +0 -0
  352. /package/dist/components/{StorefrontHeader.d.ts → layout/StorefrontHeader.d.ts} +0 -0
  353. /package/dist/components/{Toaster.d.ts → layout/Toaster.d.ts} +0 -0
  354. /package/dist/components/{OrderTrackingTimeline.d.ts → order/OrderTrackingTimeline.d.ts} +0 -0
  355. /package/dist/components/{ProductEnquiryForm.d.ts → product/ProductEnquiryForm.d.ts} +0 -0
  356. /package/dist/components/{ProductSpecs.d.ts → product/ProductSpecs.d.ts} +0 -0
  357. /package/dist/components/{RelatedProducts.d.ts → product/RelatedProducts.d.ts} +0 -0
  358. /package/dist/{order-status.d.ts → data/order-status.d.ts} +0 -0
  359. /package/dist/{component-selectors.d.ts → extend/component-selectors.d.ts} +0 -0
  360. /package/dist/{format.d.ts → lib/format.d.ts} +0 -0
  361. /package/dist/{motion.d.ts → lib/motion.d.ts} +0 -0
  362. /package/dist/{pages → views}/CatalogPage.d.ts +0 -0
  363. /package/dist/{pages → views}/CheckoutPage.d.ts +0 -0
  364. /package/dist/{pages → views}/MyPurchasesPage.d.ts +0 -0
  365. /package/dist/{pages → views}/NotFoundPage.d.ts +0 -0
  366. /package/dist/{pages → views}/OrderConfirmationPage.d.ts +0 -0
  367. /package/dist/{pages → views}/PolicyPage.d.ts +0 -0
  368. /package/dist/{pages → views}/ProductDetailPage.d.ts +0 -0
@@ -0,0 +1,162 @@
1
+ // src/diagnostics/seo-audit.ts
2
+ var metaContent = (input, key) => input.meta.find((m) => m.name === key || m.property === key)?.content?.trim() || void 0;
3
+ function gradeFor(score) {
4
+ if (score >= 90) return "A";
5
+ if (score >= 75) return "B";
6
+ if (score >= 60) return "C";
7
+ if (score >= 40) return "D";
8
+ return "F";
9
+ }
10
+ function auditStorefrontSeo(input) {
11
+ const f = [];
12
+ const add = (id, label, status, detail, why, weight) => f.push({ id, label, status, detail, why, weight });
13
+ const isFragment = (input.url ?? input.path).includes("#/");
14
+ add(
15
+ "real-url",
16
+ "Real URL",
17
+ isFragment ? "fail" : "pass",
18
+ isFragment ? "Page is addressed by fragment (#/\u2026)" : input.path,
19
+ "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.",
20
+ 25
21
+ );
22
+ const hasBody = input.contentTextLength >= 200;
23
+ add(
24
+ "server-content",
25
+ "Content in the HTML",
26
+ hasBody ? input.skeletonCount > 0 ? "warn" : "pass" : "fail",
27
+ `${input.contentTextLength} chars of main content` + (input.skeletonCount > 0 ? `, ${input.skeletonCount} loading placeholders still present` : ""),
28
+ "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.",
29
+ 20
30
+ );
31
+ const title = input.title?.trim();
32
+ const titleLen = title?.length ?? 0;
33
+ add(
34
+ "title",
35
+ "Title",
36
+ !title ? "fail" : titleLen > 60 || titleLen < 15 ? "warn" : "pass",
37
+ title ? `${titleLen} chars \u2014 \u201C${title.slice(0, 70)}\u201D` : "missing",
38
+ "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.",
39
+ 15
40
+ );
41
+ const desc = metaContent(input, "description");
42
+ const descLen = desc?.length ?? 0;
43
+ add(
44
+ "description",
45
+ "Meta description",
46
+ !desc ? "fail" : descLen > 160 || descLen < 50 ? "warn" : "pass",
47
+ desc ? `${descLen} chars` : "missing",
48
+ "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.",
49
+ 10
50
+ );
51
+ const canonical = input.links.find((l) => l.rel === "canonical")?.href;
52
+ const canonicalAbsolute = canonical?.startsWith("http") ?? false;
53
+ add(
54
+ "canonical",
55
+ "Canonical URL",
56
+ !canonical ? "fail" : !canonicalAbsolute ? "warn" : "pass",
57
+ canonical ?? "missing",
58
+ "Tells the engine which URL is authoritative when the same page is reachable with tracking parameters. Must be absolute \u2014 a relative canonical is ignored.",
59
+ 10
60
+ );
61
+ const ogTitle = metaContent(input, "og:title");
62
+ const ogImage = metaContent(input, "og:image");
63
+ const ogType = metaContent(input, "og:type");
64
+ const socialOk = Boolean(ogTitle && ogImage);
65
+ add(
66
+ "social",
67
+ "Link preview (OpenGraph)",
68
+ socialOk ? "pass" : ogTitle ? "warn" : "fail",
69
+ [ogTitle && "og:title", ogImage && "og:image", ogType && `og:type=${ogType}`].filter(Boolean).join(", ") || "missing",
70
+ "What WhatsApp, Instagram and Slack render when the link is shared. Without og:image the share is a bare grey rectangle \u2014 for a store shared in messaging apps this is often worth more than search rank.",
71
+ 10
72
+ );
73
+ const types = input.jsonLdTypes;
74
+ add(
75
+ "structured-data",
76
+ "Structured data",
77
+ types.length ? "pass" : "warn",
78
+ types.length ? types.join(", ") : "none",
79
+ "Product JSON-LD makes a page eligible for rich results \u2014 price, availability and rating shown directly in search. BreadcrumbList replaces the bare URL with a readable path.",
80
+ 5
81
+ );
82
+ add(
83
+ "h1",
84
+ "Single H1",
85
+ input.h1Count === 1 ? "pass" : input.h1Count === 0 ? "fail" : "warn",
86
+ `${input.h1Count} found`,
87
+ "The H1 is the page\u2019s stated subject. None leaves it ambiguous; several compete with each other.",
88
+ 3
89
+ );
90
+ add(
91
+ "image-alt",
92
+ "Image alt text",
93
+ input.imagesMissingAlt === 0 ? "pass" : input.imagesMissingAlt > 3 ? "fail" : "warn",
94
+ `${input.imagesMissingAlt}/${input.imageCount} missing alt`,
95
+ "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.",
96
+ 2
97
+ );
98
+ if (input.statusCode != null) {
99
+ const notFoundish = /não encontrada|not found|404/i.test(input.title ?? "");
100
+ const soft404 = notFoundish && input.statusCode === 200;
101
+ add(
102
+ "status",
103
+ "HTTP status",
104
+ soft404 ? "fail" : "pass",
105
+ `${input.statusCode}${soft404 ? " on a not-found page" : ""}`,
106
+ "A missing page answering 200 is a \u201Csoft 404\u201D: the engine indexes it as real content and the site accumulates near-duplicate empty pages.",
107
+ 5
108
+ );
109
+ }
110
+ const total = f.reduce((s, x) => s + x.weight, 0);
111
+ const earned = f.reduce(
112
+ (s, x) => s + (x.status === "pass" ? x.weight : x.status === "warn" ? x.weight * 0.5 : 0),
113
+ 0
114
+ );
115
+ const score = total === 0 ? 0 : Math.round(earned / total * 100);
116
+ return {
117
+ score,
118
+ grade: gradeFor(score),
119
+ findings: f,
120
+ passed: f.filter((x) => x.status === "pass").length,
121
+ total: f.length
122
+ };
123
+ }
124
+ function collectSeoAuditInput(doc, path) {
125
+ const main = doc.querySelector("main") ?? doc.body;
126
+ const images = Array.from(doc.querySelectorAll("img"));
127
+ const jsonLdTypes = [];
128
+ for (const el of Array.from(doc.querySelectorAll('script[type="application/ld+json"]'))) {
129
+ try {
130
+ const parsed = JSON.parse(el.textContent ?? "");
131
+ for (const node of Array.isArray(parsed) ? parsed : [parsed]) {
132
+ if (node && typeof node["@type"] === "string") jsonLdTypes.push(node["@type"]);
133
+ }
134
+ } catch {
135
+ jsonLdTypes.push("(unparseable)");
136
+ }
137
+ }
138
+ return {
139
+ path,
140
+ url: doc.location?.href,
141
+ title: doc.title,
142
+ meta: Array.from(doc.querySelectorAll("meta")).map((m) => ({
143
+ name: m.getAttribute("name") ?? void 0,
144
+ property: m.getAttribute("property") ?? void 0,
145
+ content: m.getAttribute("content") ?? ""
146
+ })),
147
+ links: Array.from(doc.querySelectorAll("link[rel]")).map((l) => ({
148
+ rel: l.getAttribute("rel") ?? "",
149
+ href: l.getAttribute("href") ?? ""
150
+ })),
151
+ jsonLdTypes,
152
+ h1Count: doc.querySelectorAll("h1").length,
153
+ imageCount: images.length,
154
+ imagesMissingAlt: images.filter((i) => !i.getAttribute("alt")?.trim()).length,
155
+ contentTextLength: (main?.textContent ?? "").replace(/\s+/g, " ").trim().length,
156
+ skeletonCount: doc.querySelectorAll(".animate-pulse").length
157
+ };
158
+ }
159
+
160
+ export { auditStorefrontSeo, collectSeoAuditInput };
161
+ //# sourceMappingURL=chunk-6IXTENLB.js.map
162
+ //# sourceMappingURL=chunk-6IXTENLB.js.map
@@ -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"]}
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import type { StorefrontConfig } from '../document/config';
3
+ /**
4
+ * The published payment terms — the Pix price and the interest-free instalment.
5
+ *
6
+ * Brazilian storefronts show these on every card and every PDP, and they are
7
+ * not a discount in the SDK's sense: nothing is applied at checkout, no coupon
8
+ * exists, and the instalment is a property of the acquirer, not the order. That
9
+ * is why they live in `config.payments.terms` and render as copy rather than
10
+ * going anywhere near the cart total.
11
+ */
12
+ export interface ResolvedPaymentTerms {
13
+ /** Price when paying by Pix, if the store advertises a Pix discount. */
14
+ pixPrice: number | null;
15
+ pixDiscountPercent: number | null;
16
+ /** Number of interest-free instalments this price supports (0 = don't show). */
17
+ installments: number;
18
+ installmentValue: number;
19
+ }
20
+ /**
21
+ * `metadata.pixPrice` wins over the percentage: a store migrating from another
22
+ * platform usually has a real per-SKU Pix price already, and recomputing it
23
+ * from a rounded percentage would disagree with their own listings by cents.
24
+ */
25
+ export declare function resolvePaymentTerms(price: number, config: Pick<StorefrontConfig, 'payments'>, metadata?: Record<string, unknown> | null): ResolvedPaymentTerms;
26
+ export interface PaymentTermsProps {
27
+ price: number;
28
+ metadata?: Record<string, unknown> | null;
29
+ /** `card` is the two-line compact form; `detail` is the PDP block. */
30
+ variant?: 'card' | 'detail';
31
+ className?: string;
32
+ }
33
+ export declare function PaymentTerms({ price, metadata, variant, className }: PaymentTermsProps): React.JSX.Element | null;
34
+ //# sourceMappingURL=PaymentTerms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentTerms.d.ts","sourceRoot":"","sources":["../../src/components/PaymentTerms.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAG1D;;;;;;;;GAQG;AAEH,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,gFAAgF;IAChF,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACxC,oBAAoB,CAqBtB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACzC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAgB,EAAE,SAAc,EAAE,EAAE,iBAAiB,4BA4BpG"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { type StorefrontImageLoadingConfig } from '../config';
2
+ import { type StorefrontImageLoadingConfig } from '../document/config';
3
3
  export interface SmoothImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
4
4
  imageLoading?: StorefrontImageLoadingConfig;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SmoothImage.d.ts","sourceRoot":"","sources":["../../src/components/SmoothImage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA+B,KAAK,4BAA4B,EAAE,MAAM,WAAW,CAAA;AAE1F,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IACjF,YAAY,CAAC,EAAE,4BAA4B,CAAA;CAC5C;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,OAAgB,EAChB,QAAkB,EAClB,MAAM,EACN,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,qBA4ClB"}
1
+ {"version":3,"file":"SmoothImage.d.ts","sourceRoot":"","sources":["../../src/components/SmoothImage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA+B,KAAK,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AAEnG,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;IACjF,YAAY,CAAC,EAAE,4BAA4B,CAAA;CAC5C;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,OAAgB,EAChB,QAAkB,EAClB,MAAM,EACN,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,qBA4ClB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomerAccountShell.d.ts","sourceRoot":"","sources":["../../../src/components/account/CustomerAccountShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAA;AAE5E,UAAU,yBAAyB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,cAAc,CAAA;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC5C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AASD,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,yBAAyB,qBA2E9G"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SignInModal.d.ts","sourceRoot":"","sources":["../../../src/components/account/SignInModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAMlD,UAAU,gBAAgB;IACxB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,oEAAoE;IACpE,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,IAAI,CAAA;CAC9E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,YAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,gBAAgB,qBAoGvF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/cart/CartDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAkDlD,wBAAgB,UAAU,6BA6RzB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuantityInput.d.ts","sourceRoot":"","sources":["../../../src/components/cart/QuantityInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,kBAAkB,qBAsChH"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeliveryEstimator.d.ts","sourceRoot":"","sources":["../../../src/components/checkout/DeliveryEstimator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AASvC;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,OAAe,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,qBAgJ3E"}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import type { BlockNode } from '@fayz-ai/core';
3
+ export declare function CategoryShowcase({ style, title, node, }: {
4
+ style: 'bubbles' | 'tiles';
5
+ title?: string;
6
+ /** The block node, when rendered from a tree — carries instance `data` overrides. */
7
+ node?: BlockNode;
8
+ }): React.JSX.Element | null;
9
+ export declare const categoriesBlockMeta: {
10
+ label: string;
11
+ description: string;
12
+ settings: ({
13
+ id: string;
14
+ type: "select";
15
+ label: string;
16
+ help: string;
17
+ options: {
18
+ value: string;
19
+ label: string;
20
+ }[];
21
+ default: string;
22
+ } | {
23
+ id: string;
24
+ type: "text";
25
+ label: string;
26
+ help: string;
27
+ options?: undefined;
28
+ default?: undefined;
29
+ })[];
30
+ presets: {
31
+ name: string;
32
+ props: {
33
+ style: string;
34
+ title: string;
35
+ };
36
+ }[];
37
+ enabledOn: string[];
38
+ data: {
39
+ categories: {
40
+ loader: string;
41
+ };
42
+ };
43
+ };
44
+ //# sourceMappingURL=CategoryShowcase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoryShowcase.d.ts","sourceRoot":"","sources":["../../../src/components/collection/CategoryShowcase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,eAAe,CAAA;AAW5D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,IAAI,GACL,EAAE;IACD,KAAK,EAAE,SAAS,GAAG,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qFAAqF;IACrF,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,4BA4EA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCa,CAAA"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ /**
3
+ * A declarative refinement over `product.metadata`, rendered as its own filter
4
+ * group. `swatch` turns a value into a colour chip instead of a text row, which
5
+ * is what a colour filter has to be — a list reading "Preto / Cobre / Prata" is
6
+ * not how anyone shops for colour.
7
+ */
8
+ export interface CatalogFacetConfig {
9
+ /** The `product.metadata` key this refines. */
10
+ key: string;
11
+ label: string;
12
+ values: readonly {
13
+ value: string;
14
+ label?: string;
15
+ swatch?: string;
16
+ }[];
17
+ }
18
+ export declare function FiltersPanel(): React.JSX.Element;
19
+ //# sourceMappingURL=FiltersPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FiltersPanel.d.ts","sourceRoot":"","sources":["../../../src/components/collection/FiltersPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtE;AAED,wBAAgB,YAAY,sBA+J3B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductGrid.d.ts","sourceRoot":"","sources":["../../../src/components/collection/ProductGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAOlD,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,qBAoC3F"}
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ export declare function CatalogBodyBlock(): React.JSX.Element;
3
+ export declare const catalogBodyBlockMeta: {
4
+ label: string;
5
+ description: string;
6
+ settings: never[];
7
+ presets: {
8
+ name: string;
9
+ }[];
10
+ enabledOn: string[];
11
+ data: {
12
+ products: {
13
+ loader: string;
14
+ params: {
15
+ sort: string;
16
+ };
17
+ };
18
+ };
19
+ };
20
+ export declare function ProductBodyBlock(): React.JSX.Element;
21
+ export declare const productBodyBlockMeta: {
22
+ label: string;
23
+ description: string;
24
+ settings: never[];
25
+ presets: {
26
+ name: string;
27
+ }[];
28
+ enabledOn: string[];
29
+ data: {
30
+ product: {
31
+ loader: string;
32
+ params: {
33
+ slug: {
34
+ $param: string;
35
+ };
36
+ };
37
+ };
38
+ };
39
+ };
40
+ //# sourceMappingURL=PageBodyBlocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageBodyBlocks.d.ts","sourceRoot":"","sources":["../../../src/components/layout/PageBodyBlocks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAwBzB,wBAAgB,gBAAgB,sBAE/B;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;CAaY,CAAA;AAE7C,wBAAgB,gBAAgB,sBAK/B;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;CAYY,CAAA"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ /**
3
+ * Search as a focused moment: the page dims, the field takes the caret, and a
4
+ * few real products answer under it. The shopper either recognises what they
5
+ * wanted — one click to the PDP — or commits to the full result page.
6
+ *
7
+ * The suggestion list is deliberately short. It exists to confirm the store
8
+ * *has* the thing, not to be a second catalogue.
9
+ */
10
+ export declare function SearchOverlay({ onClose }: {
11
+ onClose: () => void;
12
+ }): React.JSX.Element;
13
+ //# sourceMappingURL=SearchOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/layout/SearchOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAYnE;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,qBA6HjE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorefrontErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/layout/StorefrontErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,UAAU,KAAK;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,UAAU,KAAK;IACb,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACxE,KAAK,EAAE,KAAK,CAAkB;IAE9B,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAK5D,MAAM,IAAI,KAAK,CAAC,SAAS;CAuB1B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorefrontFooter.d.ts","sourceRoot":"","sources":["../../../src/components/layout/StorefrontFooter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,wBAAgB,gBAAgB,sBAyG/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorefrontHeader.d.ts","sourceRoot":"","sources":["../../../src/components/layout/StorefrontHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAkbvC,wBAAgB,gBAAgB,sBAmF/B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/components/layout/Toaster.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAiDxC,wBAAgB,OAAO,6BAUtB"}