storefront-layouts 1.0.3 → 1.0.4

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 (509) hide show
  1. package/dist/components/auth/LoginForm.js +2 -2
  2. package/dist/components/auth/LoginSheet.js +2 -2
  3. package/dist/components/auth/login-form-core.js +3 -3
  4. package/dist/components/auth/login-sheet-header.js +3 -3
  5. package/dist/components/auth/login-sheet-registry.js +2 -2
  6. package/dist/components/auth/login-sheet-themes/booking-agenda.theme.js +1 -1
  7. package/dist/components/auth/login-sheet-themes/booking.theme.js +1 -1
  8. package/dist/components/auth/login-sheet-themes/clothing-minimal.theme.js +1 -1
  9. package/dist/components/auth/login-sheet-themes/clothing.theme.js +1 -1
  10. package/dist/components/auth/login-sheet-themes/electronics-grid.theme.js +1 -1
  11. package/dist/components/auth/login-sheet-themes/electronics.theme.js +1 -1
  12. package/dist/components/auth/login-sheet-themes/food-modern.theme.js +1 -1
  13. package/dist/components/auth/login-sheet-themes/food.theme.js +1 -1
  14. package/dist/components/auth/login-sheet-themes/index.js +9 -9
  15. package/dist/components/auth/login-sheet-themes/motivational-speaker.theme.js +1 -1
  16. package/dist/components/auth/login-sheet-themes/theme-input-baselines.d.ts +2 -2
  17. package/dist/components/auth/login-sheet-themes/theme-input-baselines.d.ts.map +1 -1
  18. package/dist/components/auth/login-sheet-themes/theme-input-baselines.js +2 -2
  19. package/dist/components/auth/login-sheets/StoreLoginSheetShell.d.ts.map +1 -1
  20. package/dist/components/auth/login-sheets/StoreLoginSheetShell.js +6 -6
  21. package/dist/components/auth/use-login-submit.js +3 -3
  22. package/dist/components/cart/InventoryHoldCountdown.js +2 -2
  23. package/dist/components/categories/category-masonry-grid.js +3 -3
  24. package/dist/components/checkout/CheckoutFeeLines.js +1 -1
  25. package/dist/components/checkout/ShippingOptionsPanel.js +3 -3
  26. package/dist/components/learning/CertificateTemplates.js +2 -2
  27. package/dist/components/learning/CertificateViewer.js +3 -3
  28. package/dist/components/learning/MentorshipProgress.d.ts.map +1 -1
  29. package/dist/components/learning/MentorshipProgress.js +4 -4
  30. package/dist/components/product/ProductVariationSelectors.js +1 -1
  31. package/dist/components/rich-text/CategoryDescription.js +2 -2
  32. package/dist/components/rich-text/ProductDescription.js +2 -2
  33. package/dist/components/rich-text/RichTextExcerpt.js +1 -1
  34. package/dist/components/rich-text/SafeRichHtml.d.ts +8 -11
  35. package/dist/components/rich-text/SafeRichHtml.d.ts.map +1 -1
  36. package/dist/components/rich-text/SafeRichHtml.js +3 -5
  37. package/dist/components/shipping/ProductDeliveryInfoSection.d.ts.map +1 -1
  38. package/dist/components/shipping/ProductDeliveryInfoSection.js +7 -4
  39. package/dist/components/shipping/ShippingQuoteAddressForm.js +3 -3
  40. package/dist/components/ui/alert-modal.js +2 -2
  41. package/dist/components/ui/avatar-image.js +1 -1
  42. package/dist/components/ui/badge.js +1 -1
  43. package/dist/components/ui/breadcrumbs.js +1 -1
  44. package/dist/components/ui/button.d.ts +1 -1
  45. package/dist/components/ui/button.js +1 -1
  46. package/dist/components/ui/card.js +1 -1
  47. package/dist/components/ui/category-tree.js +2 -2
  48. package/dist/components/ui/checkout-button.d.ts.map +1 -1
  49. package/dist/components/ui/checkout-button.js +11 -283
  50. package/dist/components/ui/guest-checkout-modal.js +3 -3
  51. package/dist/components/ui/image-skeleton.js +2 -2
  52. package/dist/components/ui/image-with-fallback.d.ts +3 -1
  53. package/dist/components/ui/image-with-fallback.d.ts.map +1 -1
  54. package/dist/components/ui/image-with-fallback.js +55 -139
  55. package/dist/components/ui/input.js +1 -1
  56. package/dist/components/ui/limited-time-offer-badge.js +2 -2
  57. package/dist/components/ui/loading-skeleton-wrapper.js +1 -1
  58. package/dist/components/ui/modal.js +2 -2
  59. package/dist/components/ui/otp-input.js +1 -1
  60. package/dist/components/ui/out-of-stock-overlay.js +1 -1
  61. package/dist/components/ui/page-animate-wrapper.js +2 -2
  62. package/dist/components/ui/page-content-loader.js +2 -2
  63. package/dist/components/ui/page-loader.js +1 -1
  64. package/dist/components/ui/product-card.d.ts.map +1 -1
  65. package/dist/components/ui/product-card.js +17 -17
  66. package/dist/components/ui/product-rating.js +1 -1
  67. package/dist/components/ui/product-stock-badge.js +2 -2
  68. package/dist/components/ui/review-form.js +2 -2
  69. package/dist/components/ui/route-skeleton-loader.js +6 -6
  70. package/dist/components/ui/sheet.d.ts +2 -1
  71. package/dist/components/ui/sheet.d.ts.map +1 -1
  72. package/dist/components/ui/sheet.js +4 -4
  73. package/dist/components/ui/skeleton.js +1 -1
  74. package/dist/components/ui/skeletons/index.js +5 -5
  75. package/dist/components/ui/skeletons/product-grid-skeleton.js +1 -1
  76. package/dist/components/ui/store-logos.d.ts.map +1 -1
  77. package/dist/components/ui/store-logos.js +4 -4
  78. package/dist/components/ui/toast.js +1 -1
  79. package/dist/components/ui/video-player.js +2 -2
  80. package/dist/editor/alignment-schemas/booking.js +1 -1
  81. package/dist/editor/alignment-schemas/clothing-minimal.js +1 -1
  82. package/dist/editor/alignment-schemas/index.js +20 -20
  83. package/dist/editor/alignment-schemas/lazy-loader.js +1 -1
  84. package/dist/editor/alignment-schemas/metadata.js +1 -1
  85. package/dist/editor/alignment-schemas/resolve-canvas-inspector-leaf.js +3 -3
  86. package/dist/editor/blocks/index.js +3 -3
  87. package/dist/editor/blocks/migrate-clothing-minimal.js +3 -3
  88. package/dist/editor/blocks/nav-outline-utils.js +2 -2
  89. package/dist/editor/blocks/registry.js +1 -1
  90. package/dist/editor/document/adapter.js +4 -4
  91. package/dist/editor/document/block-tree.js +1 -1
  92. package/dist/editor/document/index.js +6 -6
  93. package/dist/editor/document/validate.js +1 -1
  94. package/dist/editor/index.js +12 -12
  95. package/dist/editor/layout-content-loader.js +3 -3
  96. package/dist/editor/payaza-form/ArrayItemManager.js +2 -2
  97. package/dist/editor/payaza-form/EditorCanvasPreview.js +5 -5
  98. package/dist/editor/payaza-form/FieldRenderer.js +17 -17
  99. package/dist/editor/payaza-form/IframePreviewMessageBridge.js +3 -3
  100. package/dist/editor/payaza-form/PayazaFormEditor.js +31 -31
  101. package/dist/editor/payaza-form/PayazaFormEditorFullPage.js +2 -2
  102. package/dist/editor/payaza-form/SliderArrayEditor.js +3 -3
  103. package/dist/editor/payaza-form/components/ArrayField.js +1 -1
  104. package/dist/editor/payaza-form/components/BlockStylesInspector.js +1 -1
  105. package/dist/editor/payaza-form/components/BlocksField.js +9 -9
  106. package/dist/editor/payaza-form/components/ButtonField.js +3 -3
  107. package/dist/editor/payaza-form/components/CanvasGranularInspector.js +11 -11
  108. package/dist/editor/payaza-form/components/IconField.js +2 -2
  109. package/dist/editor/payaza-form/components/ImageField.js +1 -1
  110. package/dist/editor/payaza-form/components/NumberField.js +1 -1
  111. package/dist/editor/payaza-form/components/RichTextField.js +2 -2
  112. package/dist/editor/payaza-form/components/SectionField.js +1 -1
  113. package/dist/editor/payaza-form/components/SectionSchemaInspector.js +3 -3
  114. package/dist/editor/payaza-form/components/StarRatingField.js +2 -2
  115. package/dist/editor/payaza-form/components/TextField.js +1 -1
  116. package/dist/editor/payaza-form/data-merger.js +6 -6
  117. package/dist/editor/payaza-form/data-transformer.js +3 -3
  118. package/dist/editor/payaza-form/engine.js +1 -1
  119. package/dist/editor/payaza-form/examples/custom-widgets.example.js +1 -1
  120. package/dist/editor/payaza-form/index.js +8 -8
  121. package/dist/editor/payaza-form/layout-loader.js +2 -2
  122. package/dist/editor/payaza-form/preview-message-handler.js +3 -3
  123. package/dist/editor/payaza-form/schema-bridge.js +3 -3
  124. package/dist/editor/payaza-form/widget-registry.js +1 -1
  125. package/dist/editor/shared/BlockOutlineTree.js +2 -2
  126. package/dist/editor/shared/EditorHeader.js +2 -2
  127. package/dist/editor/shared/EditorNavigator.js +2 -2
  128. package/dist/editor/shared/IframePreview.js +6 -6
  129. package/dist/editor/shared/InlineCanvasPreview.js +8 -8
  130. package/dist/editor/shared/LayoutRenderer.js +1 -1
  131. package/dist/editor/shared/ResizableSidebar.js +1 -1
  132. package/dist/editor/shared/index.js +7 -7
  133. package/dist/hooks/use-analytics.js +3 -3
  134. package/dist/hooks/use-api.js +1 -1
  135. package/dist/hooks/use-cart-api.d.ts.map +1 -1
  136. package/dist/hooks/use-cart-api.js +8 -3
  137. package/dist/hooks/use-catalog-loader.js +3 -3
  138. package/dist/hooks/use-catalog-price-range.d.ts +2 -5
  139. package/dist/hooks/use-catalog-price-range.d.ts.map +1 -1
  140. package/dist/hooks/use-catalog-price-range.js +20 -5
  141. package/dist/hooks/use-category-products.d.ts +8 -0
  142. package/dist/hooks/use-category-products.d.ts.map +1 -0
  143. package/dist/hooks/use-category-products.js +43 -0
  144. package/dist/hooks/use-checkout-fees.d.ts +3 -4
  145. package/dist/hooks/use-checkout-fees.d.ts.map +1 -1
  146. package/dist/hooks/use-checkout-fees.js +1 -1
  147. package/dist/hooks/use-content-ready.js +1 -1
  148. package/dist/hooks/use-featured-products.d.ts +3 -0
  149. package/dist/hooks/use-featured-products.d.ts.map +1 -0
  150. package/dist/hooks/use-featured-products.js +25 -0
  151. package/dist/hooks/use-multi-store-checkout-fees.d.ts +3 -4
  152. package/dist/hooks/use-multi-store-checkout-fees.d.ts.map +1 -1
  153. package/dist/hooks/use-multi-store-checkout-fees.js +1 -1
  154. package/dist/hooks/use-navigation-loading.js +1 -1
  155. package/dist/hooks/use-payaza-checkout.d.ts +1 -1
  156. package/dist/hooks/use-payaza-checkout.d.ts.map +1 -1
  157. package/dist/hooks/use-payaza-checkout.js +9 -3
  158. package/dist/hooks/use-product-brands.d.ts +5 -0
  159. package/dist/hooks/use-product-brands.d.ts.map +1 -0
  160. package/dist/hooks/use-product-brands.js +25 -0
  161. package/dist/hooks/use-product-by-slug.d.ts +7 -0
  162. package/dist/hooks/use-product-by-slug.d.ts.map +1 -0
  163. package/dist/hooks/use-product-by-slug.js +38 -0
  164. package/dist/hooks/use-product-reviews.d.ts +15 -0
  165. package/dist/hooks/use-product-reviews.d.ts.map +1 -0
  166. package/dist/hooks/use-product-reviews.js +75 -0
  167. package/dist/hooks/use-product-variation-selection.d.ts +2 -8
  168. package/dist/hooks/use-product-variation-selection.d.ts.map +1 -1
  169. package/dist/hooks/use-product-variation-selection.js +1 -1
  170. package/dist/hooks/use-products-api.js +3 -3
  171. package/dist/hooks/use-shipping-quote.js +2 -2
  172. package/dist/hooks/use-store-api.js +4 -4
  173. package/dist/hooks/usePreviewSlideSync.js +1 -1
  174. package/dist/index.d.ts +62 -74
  175. package/dist/index.d.ts.map +1 -1
  176. package/dist/index.js +141 -153
  177. package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -1
  178. package/dist/layouts/booking/components/BookingHomePage.js +68 -74
  179. package/dist/layouts/booking/components/BookingMultilineHeading.js +1 -1
  180. package/dist/layouts/booking/components/BookingTestimonialCard.js +2 -2
  181. package/dist/layouts/booking/components/BookingTestimonialsEmptyState.js +1 -1
  182. package/dist/layouts/booking/components/booking-footer-defaults.js +2 -2
  183. package/dist/layouts/booking/index.js +8 -8
  184. package/dist/layouts/booking/pages/AboutPage.d.ts +1 -1
  185. package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -1
  186. package/dist/layouts/booking/pages/AboutPage.js +39 -60
  187. package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -1
  188. package/dist/layouts/booking/pages/BookPage.js +16 -22
  189. package/dist/layouts/booking/pages/CategoriesPage.js +6 -6
  190. package/dist/layouts/booking/pages/CategoryPage.d.ts +1 -1
  191. package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -1
  192. package/dist/layouts/booking/pages/CategoryPage.js +17 -26
  193. package/dist/layouts/booking/pages/ContactPage.d.ts +1 -1
  194. package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -1
  195. package/dist/layouts/booking/pages/ContactPage.js +5 -12
  196. package/dist/layouts/booking/pages/ProductDetailPage.d.ts +1 -1
  197. package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -1
  198. package/dist/layouts/booking/pages/ProductDetailPage.js +203 -150
  199. package/dist/layouts/booking/pages/ServicesPage.d.ts +1 -1
  200. package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -1
  201. package/dist/layouts/booking/pages/ServicesPage.js +11 -31
  202. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -1
  203. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +21 -30
  204. package/dist/layouts/booking-agenda/index.js +8 -8
  205. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +1 -1
  206. package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -1
  207. package/dist/layouts/booking-agenda/pages/AboutPage.js +11 -14
  208. package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -1
  209. package/dist/layouts/booking-agenda/pages/BookPage.js +15 -21
  210. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +5 -5
  211. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +1 -1
  212. package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -1
  213. package/dist/layouts/booking-agenda/pages/CategoryPage.js +12 -18
  214. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +1 -1
  215. package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -1
  216. package/dist/layouts/booking-agenda/pages/ContactPage.js +8 -13
  217. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +1 -1
  218. package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -1
  219. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +202 -149
  220. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +1 -1
  221. package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -1
  222. package/dist/layouts/booking-agenda/pages/ServicesPage.js +8 -23
  223. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -1
  224. package/dist/layouts/clothing/components/ClothingHomePage.js +199 -136
  225. package/dist/layouts/clothing/index.js +7 -7
  226. package/dist/layouts/clothing/pages/AboutPage.d.ts +1 -1
  227. package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -1
  228. package/dist/layouts/clothing/pages/AboutPage.js +19 -33
  229. package/dist/layouts/clothing/pages/CategoriesPage.js +8 -8
  230. package/dist/layouts/clothing/pages/CategoryPage.d.ts +1 -1
  231. package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -1
  232. package/dist/layouts/clothing/pages/CategoryPage.js +15 -41
  233. package/dist/layouts/clothing/pages/ContactPage.d.ts +1 -1
  234. package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -1
  235. package/dist/layouts/clothing/pages/ContactPage.js +5 -8
  236. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +1 -1
  237. package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -1
  238. package/dist/layouts/clothing/pages/ProductDetailPage.js +256 -167
  239. package/dist/layouts/clothing/pages/ProductsPage.d.ts +1 -1
  240. package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -1
  241. package/dist/layouts/clothing/pages/ProductsPage.js +125 -59
  242. package/dist/layouts/clothing/payaza-bindings.js +2 -2
  243. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -1
  244. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +32 -131
  245. package/dist/layouts/clothing-minimal/components/clothing-minimal-block-render.js +8 -8
  246. package/dist/layouts/clothing-minimal/index.js +7 -7
  247. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +1 -1
  248. package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -1
  249. package/dist/layouts/clothing-minimal/pages/AboutPage.js +37 -61
  250. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +7 -7
  251. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +1 -1
  252. package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -1
  253. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +13 -18
  254. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +1 -1
  255. package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -1
  256. package/dist/layouts/clothing-minimal/pages/ContactPage.js +5 -8
  257. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +1 -1
  258. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -1
  259. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +202 -143
  260. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +1 -1
  261. package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -1
  262. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +126 -57
  263. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +7 -7
  264. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +10 -10
  265. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -1
  266. package/dist/layouts/electronics/components/ElectronicsHomePage.js +29 -31
  267. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +4 -4
  268. package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -1
  269. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +81 -23
  270. package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +2 -2
  271. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +6 -6
  272. package/dist/layouts/electronics/index.js +18 -18
  273. package/dist/layouts/electronics/pages/AboutPage.d.ts +1 -1
  274. package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -1
  275. package/dist/layouts/electronics/pages/AboutPage.js +11 -14
  276. package/dist/layouts/electronics/pages/CategoriesPage.js +1 -1
  277. package/dist/layouts/electronics/pages/CategoryPage.d.ts +1 -1
  278. package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -1
  279. package/dist/layouts/electronics/pages/CategoryPage.js +14 -20
  280. package/dist/layouts/electronics/pages/ContactPage.d.ts +1 -1
  281. package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -1
  282. package/dist/layouts/electronics/pages/ContactPage.js +8 -13
  283. package/dist/layouts/electronics/pages/HelpCenterPage.js +1 -1
  284. package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +1 -1
  285. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +1 -1
  286. package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -1
  287. package/dist/layouts/electronics/pages/ProductDetailPage.js +201 -142
  288. package/dist/layouts/electronics/pages/ProductsPage.d.ts +1 -1
  289. package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -1
  290. package/dist/layouts/electronics/pages/ProductsPage.js +119 -49
  291. package/dist/layouts/electronics/pages/TermsPage.js +1 -1
  292. package/dist/layouts/electronics/pages/TrackOrderPage.js +4 -4
  293. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +10 -10
  294. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -1
  295. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +75 -33
  296. package/dist/layouts/electronics-grid/index.js +14 -14
  297. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +1 -1
  298. package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -1
  299. package/dist/layouts/electronics-grid/pages/AboutPage.js +11 -14
  300. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +1 -1
  301. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +1 -1
  302. package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -1
  303. package/dist/layouts/electronics-grid/pages/CategoryPage.js +14 -20
  304. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +1 -1
  305. package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -1
  306. package/dist/layouts/electronics-grid/pages/ContactPage.js +8 -13
  307. package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +6 -6
  308. package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +1 -1
  309. package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +1 -1
  310. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +1 -1
  311. package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -1
  312. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +201 -142
  313. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +1 -1
  314. package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -1
  315. package/dist/layouts/electronics-grid/pages/ProductsPage.js +121 -52
  316. package/dist/layouts/electronics-grid/pages/TermsPage.js +1 -1
  317. package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +4 -4
  318. package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -1
  319. package/dist/layouts/food/components/FoodHomePage.js +42 -41
  320. package/dist/layouts/food/index.js +8 -8
  321. package/dist/layouts/food/pages/AboutPage.d.ts +1 -1
  322. package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -1
  323. package/dist/layouts/food/pages/AboutPage.js +44 -45
  324. package/dist/layouts/food/pages/CategoriesPage.js +6 -6
  325. package/dist/layouts/food/pages/CategoryPage.d.ts +1 -1
  326. package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -1
  327. package/dist/layouts/food/pages/CategoryPage.js +23 -21
  328. package/dist/layouts/food/pages/ContactPage.d.ts +1 -1
  329. package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -1
  330. package/dist/layouts/food/pages/ContactPage.js +5 -7
  331. package/dist/layouts/food/pages/MenuPage.d.ts +1 -1
  332. package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -1
  333. package/dist/layouts/food/pages/MenuPage.js +81 -42
  334. package/dist/layouts/food/pages/ProductDetailPage.d.ts +1 -1
  335. package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -1
  336. package/dist/layouts/food/pages/ProductDetailPage.js +209 -171
  337. package/dist/layouts/food/pages/ProductsPage.d.ts +1 -1
  338. package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -1
  339. package/dist/layouts/food/pages/ProductsPage.js +130 -45
  340. package/dist/layouts/food-modern/components/FoodHomePageModern.js +10 -10
  341. package/dist/layouts/food-modern/index.js +8 -8
  342. package/dist/layouts/food-modern/pages/AboutPage.d.ts +1 -1
  343. package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -1
  344. package/dist/layouts/food-modern/pages/AboutPage.js +11 -14
  345. package/dist/layouts/food-modern/pages/CategoriesPage.js +5 -5
  346. package/dist/layouts/food-modern/pages/CategoryPage.d.ts +1 -1
  347. package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -1
  348. package/dist/layouts/food-modern/pages/CategoryPage.js +23 -20
  349. package/dist/layouts/food-modern/pages/ContactPage.d.ts +1 -1
  350. package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -1
  351. package/dist/layouts/food-modern/pages/ContactPage.js +5 -7
  352. package/dist/layouts/food-modern/pages/MenuPage.d.ts +1 -1
  353. package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -1
  354. package/dist/layouts/food-modern/pages/MenuPage.js +81 -46
  355. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +1 -1
  356. package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -1
  357. package/dist/layouts/food-modern/pages/ProductDetailPage.js +202 -143
  358. package/dist/layouts/food-modern/pages/ProductsPage.d.ts +1 -1
  359. package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -1
  360. package/dist/layouts/food-modern/pages/ProductsPage.js +117 -33
  361. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -1
  362. package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +32 -23
  363. package/dist/layouts/motivational-speaker/components/MotivationalSpeakerPageWrapper.js +1 -1
  364. package/dist/layouts/motivational-speaker/index.js +9 -9
  365. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts +1 -1
  366. package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -1
  367. package/dist/layouts/motivational-speaker/pages/AboutPage.js +6 -9
  368. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +1 -1
  369. package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -1
  370. package/dist/layouts/motivational-speaker/pages/CategoryPage.js +18 -22
  371. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +1 -1
  372. package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -1
  373. package/dist/layouts/motivational-speaker/pages/ContactPage.js +9 -13
  374. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +1 -1
  375. package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -1
  376. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +121 -52
  377. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +1 -1
  378. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -1
  379. package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +15 -24
  380. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +1 -1
  381. package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -1
  382. package/dist/layouts/motivational-speaker/pages/ServicesPage.js +8 -23
  383. package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +7 -7
  384. package/dist/layouts/shared/components/BaseStoreLayout.js +9 -9
  385. package/dist/layouts/shared/components/CartLineQuantityControl.js +1 -1
  386. package/dist/layouts/shared/components/GenericPageWrapper.js +3 -3
  387. package/dist/layouts/shared/components/ProductPriceFilterSection.js +4 -4
  388. package/dist/layouts/shared/components/PromoBanner.d.ts +1 -4
  389. package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -1
  390. package/dist/layouts/shared/components/PromoBanner.js +12 -8
  391. package/dist/layouts/shared/components/StoreFooter.js +10 -10
  392. package/dist/layouts/shared/components/StoreHeader.js +7 -7
  393. package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -1
  394. package/dist/layouts/shared/components/TestimonialCard.js +2 -2
  395. package/dist/layouts/shared/components/headers/BookingAgendaSidebar.js +2 -2
  396. package/dist/layouts/shared/components/headers/ClothingMinimalHeader.js +11 -11
  397. package/dist/layouts/shared/components/headers/FoodModernHeader.js +7 -7
  398. package/dist/layouts/shared/index.js +22 -22
  399. package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -1
  400. package/dist/layouts/shared/pages/AccountPage.js +101 -27
  401. package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -1
  402. package/dist/layouts/shared/pages/CartPage.js +39 -90
  403. package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -1
  404. package/dist/layouts/shared/pages/CheckoutPage.js +349 -868
  405. package/dist/layouts/shared/pages/CookiePolicyPage.js +1 -1
  406. package/dist/layouts/shared/pages/FeatureDisabledPage.js +1 -1
  407. package/dist/layouts/shared/pages/HelpCenterPage.js +1 -1
  408. package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -1
  409. package/dist/layouts/shared/pages/MaintenancePage.js +2 -3
  410. package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -1
  411. package/dist/layouts/shared/pages/PortfolioPage.js +2 -2
  412. package/dist/layouts/shared/pages/PrivacyPolicyPage.js +1 -1
  413. package/dist/layouts/shared/pages/SizeGuidePage.js +1 -1
  414. package/dist/layouts/shared/pages/StyleGuidePage.js +3 -3
  415. package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -1
  416. package/dist/layouts/shared/pages/TeamPage.js +1 -1
  417. package/dist/layouts/shared/pages/TermsPage.js +1 -1
  418. package/dist/layouts/shared/pages/TrackOrderPage.js +4 -4
  419. package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -1
  420. package/dist/layouts/shared/pages/WishlistPage.js +44 -29
  421. package/dist/layouts/shared/wrappers/BookingAgendaLayout.d.ts.map +1 -1
  422. package/dist/layouts/shared/wrappers/BookingAgendaLayout.js +80 -35
  423. package/dist/layouts/shared/wrappers/ClothingLayout.js +8 -8
  424. package/dist/layouts/shared/wrappers/ClothingMinimalLayout.js +7 -7
  425. package/dist/layouts/shared/wrappers/ElectronicsLayout.js +5 -5
  426. package/dist/layouts/shared/wrappers/FoodModernLayout.js +6 -6
  427. package/dist/layouts/shared/wrappers/MotivationalLayout.js +9 -9
  428. package/dist/layouts/shared/wrappers/StandardLayout.js +8 -8
  429. package/dist/lib/api.d.ts +3 -4
  430. package/dist/lib/api.d.ts.map +1 -1
  431. package/dist/lib/api.js +69 -109
  432. package/dist/lib/auth-context.js +2 -2
  433. package/dist/lib/content-selectors.d.ts +1 -1
  434. package/dist/lib/content-selectors.d.ts.map +1 -1
  435. package/dist/lib/content-selectors.js +8 -0
  436. package/dist/lib/layout-config-hydration.js +2 -2
  437. package/dist/lib/loading-context.d.ts.map +1 -1
  438. package/dist/lib/loading-context.js +11 -21
  439. package/dist/lib/payaza-checkout.d.ts.map +1 -1
  440. package/dist/lib/payaza-checkout.js +2 -4
  441. package/dist/lib/payaza-public-key.d.ts +6 -0
  442. package/dist/lib/payaza-public-key.d.ts.map +1 -0
  443. package/dist/lib/payaza-public-key.js +10 -0
  444. package/dist/lib/rich-html.d.ts +31 -26
  445. package/dist/lib/rich-html.d.ts.map +1 -1
  446. package/dist/lib/rich-html.js +1 -0
  447. package/dist/lib/services/analytics.service.js +1 -1
  448. package/dist/lib/services/auth.service.js +1 -1
  449. package/dist/lib/services/booking.service.js +1 -1
  450. package/dist/lib/services/category.service.js +1 -1
  451. package/dist/lib/services/checkout.service.d.ts +3 -0
  452. package/dist/lib/services/checkout.service.d.ts.map +1 -1
  453. package/dist/lib/services/checkout.service.js +1 -1
  454. package/dist/lib/services/contact.service.js +1 -1
  455. package/dist/lib/services/customer.service.js +1 -1
  456. package/dist/lib/services/fees.service.d.ts +17 -63
  457. package/dist/lib/services/fees.service.d.ts.map +1 -1
  458. package/dist/lib/services/fees.service.js +4 -138
  459. package/dist/lib/services/index.js +13 -13
  460. package/dist/lib/services/location.service.js +1 -1
  461. package/dist/lib/services/order.service.js +1 -1
  462. package/dist/lib/services/payment.service.js +1 -1
  463. package/dist/lib/services/product.service.d.ts +7 -2
  464. package/dist/lib/services/product.service.d.ts.map +1 -1
  465. package/dist/lib/services/product.service.js +13 -1
  466. package/dist/lib/services/promo.service.js +1 -1
  467. package/dist/lib/services/review.service.js +1 -1
  468. package/dist/lib/services/service.service.js +1 -1
  469. package/dist/lib/services/shipping.service.js +1 -1
  470. package/dist/lib/services/store.service.js +1 -1
  471. package/dist/lib/store-config-utils.d.ts +1 -10
  472. package/dist/lib/store-config-utils.d.ts.map +1 -1
  473. package/dist/lib/store-config-utils.js +73 -261
  474. package/dist/lib/store-config.js +1 -1
  475. package/dist/lib/store-context.d.ts +1 -23
  476. package/dist/lib/store-context.d.ts.map +1 -1
  477. package/dist/lib/store-context.js +89 -111
  478. package/dist/lib/store-types.d.ts +9 -91
  479. package/dist/lib/store-types.d.ts.map +1 -1
  480. package/dist/lib/utils/asset-helpers.js +1 -1
  481. package/dist/lib/utils/catalog-price-bounds.d.ts +16 -6
  482. package/dist/lib/utils/catalog-price-bounds.d.ts.map +1 -1
  483. package/dist/lib/utils/catalog-price-bounds.js +58 -14
  484. package/dist/lib/utils/category-tree.d.ts +9 -0
  485. package/dist/lib/utils/category-tree.d.ts.map +1 -1
  486. package/dist/lib/utils/category-tree.js +26 -0
  487. package/dist/lib/utils/editor-preview.d.ts +5 -0
  488. package/dist/lib/utils/editor-preview.d.ts.map +1 -1
  489. package/dist/lib/utils/editor-preview.js +17 -3
  490. package/dist/lib/utils/fee-calculations.d.ts +5 -1
  491. package/dist/lib/utils/fee-calculations.d.ts.map +1 -1
  492. package/dist/lib/utils/fee-calculations.js +28 -31
  493. package/dist/lib/utils/index.d.ts +1 -1
  494. package/dist/lib/utils/index.d.ts.map +1 -1
  495. package/dist/lib/utils/index.js +4 -4
  496. package/dist/lib/utils/product-images.js +1 -1
  497. package/dist/lib/utils/product-share.js +1 -1
  498. package/dist/lib/utils/url-helpers.d.ts +6 -0
  499. package/dist/lib/utils/url-helpers.d.ts.map +1 -1
  500. package/dist/lib/utils/url-helpers.js +20 -4
  501. package/dist/preview/LayoutPreview.js +6 -6
  502. package/dist/preview/PreviewRouter.js +4 -4
  503. package/dist/preview/canvas/PreviewCanvasEnhancer.js +8 -8
  504. package/dist/preview/canvas/preview-flush-await.js +1 -1
  505. package/dist/preview/canvas/preview-isolation.js +1 -1
  506. package/dist/preview/canvas/preview-route.js +2 -2
  507. package/dist/preview/index.js +5 -5
  508. package/dist/styles/index.css +190 -149
  509. package/package.json +31 -43
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import Link from 'next/link';
4
4
  import { Eye, EyeOff, Loader2, ArrowRight } from 'lucide-react';
5
5
  import { motion } from 'framer-motion';
6
- import { useLoginSubmit } from './use-login-submit.js';
7
- import { cn } from '../../lib/utils/index.js';
6
+ import { useLoginSubmit } from './use-login-submit';
7
+ import { cn } from '../../lib/utils';
8
8
  /** Full-page auth login only. Store sheets use BespokeStoreLoginSheet + LoginFormCore. */
9
9
  export function LoginForm({ callbackUrl = '/', variant = 'page', onSuccess, className, }) {
10
10
  const { email, setEmail, password, setPassword, showPassword, setShowPassword, emailError, setEmailError, isLoading, handleSubmit, signupHref, resetHref, } = useLoginSubmit({ callbackUrl, variant: 'page', onSuccess });
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { useAuth } from '../../lib/auth-context.js';
4
- import { BespokeStoreLoginSheet } from './login-sheet-registry.js';
3
+ import { useAuth } from '../../lib/auth-context';
4
+ import { BespokeStoreLoginSheet } from './login-sheet-registry';
5
5
  export function LoginSheet({ storeConfig }) {
6
6
  const { isLoginOpen, loginCallbackUrl, loginOnSuccess, closeLogin } = useAuth();
7
7
  return (_jsx(BespokeStoreLoginSheet, { storeConfig: storeConfig, isOpen: isLoginOpen, onClose: closeLogin, callbackUrl: loginCallbackUrl, onSuccess: loginOnSuccess }));
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import Link from 'next/link';
4
4
  import { Eye, EyeOff, Loader2, ArrowRight } from 'lucide-react';
5
- import { useLoginSubmit } from './use-login-submit.js';
6
- import { cn } from '../../lib/utils/index.js';
7
- import { loginSheetButtonTouch } from './login-sheet-themes/theme-input-baselines.js';
5
+ import { useLoginSubmit } from './use-login-submit';
6
+ import { cn } from '../../lib/utils';
7
+ import { loginSheetButtonTouch } from './login-sheet-themes/theme-input-baselines';
8
8
  export function LoginFormCore({ storeConfig, theme, callbackUrl = '/', onSuccess, emailInputRef, }) {
9
9
  const { email, setEmail, password, setPassword, showPassword, setShowPassword, emailError, setEmailError, isLoading, isSheet, closeLogin, handleSubmit, signupHref, resetHref, } = useLoginSubmit({ callbackUrl, variant: 'sheet', onSuccess });
10
10
  const primaryColor = storeConfig.branding.primaryColor || '#1b0029';
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { X } from 'lucide-react';
4
- import { StoreLogo } from '../../components/ui/store-logos.js';
5
- import { Button } from '../../components/ui/button.js';
6
- import { cn } from '../../lib/utils/index.js';
4
+ import { StoreLogo } from '../../components/ui/store-logos';
5
+ import { Button } from '../../components/ui/button';
6
+ import { cn } from '../../lib/utils';
7
7
  export function LoginSheetHeader({ storeConfig, theme, onClose }) {
8
8
  const isLightPanel = (theme.panelMode ?? 'light') === 'light';
9
9
  return (_jsxs("header", { className: cn('shrink-0', theme.headerClassName), children: [_jsxs("div", { className: "flex items-start justify-between gap-3 sm:gap-4 mb-4 sm:mb-5", children: [_jsxs("div", { className: "flex items-center gap-2.5 sm:gap-3 min-w-0 flex-1", children: [_jsx(StoreLogo, { storeConfig: storeConfig, className: "h-9 w-9 sm:h-10 sm:w-10 shrink-0", alt: storeConfig.name }), _jsx("div", { className: "min-w-0", children: _jsx("p", { className: cn('text-[11px] sm:text-xs font-medium truncate', isLightPanel && 'system-dark:text-[#5c4d68]', theme.storeNameClassName ?? 'opacity-70'), children: storeConfig.name }) })] }), _jsx(Button, { variant: "ghost", size: "icon", onClick: onClose, className: cn('rounded-full shrink-0 -mr-1 h-11 w-11 min-h-11 min-w-11 touch-manipulation', isLightPanel && 'system-dark:text-[#1b0029] system-dark:hover:bg-black/5', theme.closeButtonClassName), "aria-label": "Close sign in", children: _jsx(X, { className: "h-5 w-5" }) })] }), _jsx("h1", { id: "login-form-title", className: cn('font-display font-bold tracking-tight text-xl sm:text-2xl leading-tight', isLightPanel && 'system-dark:text-[#1b0029]', theme.titleClassName ?? 'text-[#1b0029]'), children: "Sign in" }), _jsx("p", { className: cn('mt-1.5 sm:mt-2 text-[13px] sm:text-sm leading-snug', isLightPanel && 'system-dark:text-[#5c4d68]', theme.subtitleClassName), children: "Sign into your Shopaza account using your registered email address and password" })] }));
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { getLoginSheetTheme } from './login-sheet-themes/index.js';
4
- import { StoreLoginSheetShell } from './login-sheets/StoreLoginSheetShell.js';
3
+ import { getLoginSheetTheme } from './login-sheet-themes';
4
+ import { StoreLoginSheetShell } from './login-sheets/StoreLoginSheetShell';
5
5
  /** Renders the layout-specific bespoke login sheet for the current store. */
6
6
  export function BespokeStoreLoginSheet({ storeConfig, isOpen, onClose, callbackUrl, onSuccess, }) {
7
7
  const theme = getLoginSheetTheme(storeConfig.layout);
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const bookingAgendaLoginSheetTheme = {
3
3
  panelClassName: `${lightPanelBase} border-rose-100`,
4
4
  backdropClassName: 'bg-slate-900/50 backdrop-blur-sm',
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const bookingLoginSheetTheme = {
3
3
  panelClassName: `${lightPanelBase} border-slate-200`,
4
4
  backdropClassName: 'bg-slate-900/55 backdrop-blur-sm',
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const clothingMinimalLoginSheetTheme = {
3
3
  panelClassName: lightPanelBase,
4
4
  backdropClassName: 'bg-black/65 backdrop-blur-[2px]',
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const clothingLoginSheetTheme = {
3
3
  panelClassName: lightPanelBase,
4
4
  backdropClassName: 'bg-black/70 backdrop-blur-sm',
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError } from './theme-input-baselines';
2
2
  export const electronicsGridLoginSheetTheme = {
3
3
  panelClassName: 'bg-brand-bg border-l border-gray-300',
4
4
  backdropClassName: 'bg-black/60 backdrop-blur-[2px]',
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const electronicsLoginSheetTheme = {
3
3
  panelClassName: lightPanelBase,
4
4
  backdropClassName: 'bg-gray-900/60 backdrop-blur-sm',
@@ -1,4 +1,4 @@
1
- import { darkPanelInputBase, darkInputError, darkLabelBase, darkPanelShell } from './theme-input-baselines.js';
1
+ import { darkPanelInputBase, darkInputError, darkLabelBase, darkPanelShell } from './theme-input-baselines';
2
2
  export const foodModernLoginSheetTheme = {
3
3
  panelMode: 'dark',
4
4
  panelClassName: `${darkPanelShell} border-l border-white/10 text-white`,
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const foodLoginSheetTheme = {
3
3
  panelClassName: `${lightPanelBase} border-orange-100/80`,
4
4
  backdropClassName: 'bg-black/70 backdrop-blur-sm',
@@ -1,12 +1,12 @@
1
- import { foodLoginSheetTheme } from './food.theme.js';
2
- import { foodModernLoginSheetTheme } from './food-modern.theme.js';
3
- import { clothingLoginSheetTheme } from './clothing.theme.js';
4
- import { clothingMinimalLoginSheetTheme } from './clothing-minimal.theme.js';
5
- import { bookingLoginSheetTheme } from './booking.theme.js';
6
- import { bookingAgendaLoginSheetTheme } from './booking-agenda.theme.js';
7
- import { electronicsLoginSheetTheme } from './electronics.theme.js';
8
- import { electronicsGridLoginSheetTheme } from './electronics-grid.theme.js';
9
- import { motivationalSpeakerLoginSheetTheme } from './motivational-speaker.theme.js';
1
+ import { foodLoginSheetTheme } from './food.theme';
2
+ import { foodModernLoginSheetTheme } from './food-modern.theme';
3
+ import { clothingLoginSheetTheme } from './clothing.theme';
4
+ import { clothingMinimalLoginSheetTheme } from './clothing-minimal.theme';
5
+ import { bookingLoginSheetTheme } from './booking.theme';
6
+ import { bookingAgendaLoginSheetTheme } from './booking-agenda.theme';
7
+ import { electronicsLoginSheetTheme } from './electronics.theme';
8
+ import { electronicsGridLoginSheetTheme } from './electronics-grid.theme';
9
+ import { motivationalSpeakerLoginSheetTheme } from './motivational-speaker.theme';
10
10
  const themeByLayout = {
11
11
  food: foodLoginSheetTheme,
12
12
  'food-modern': foodModernLoginSheetTheme,
@@ -1,4 +1,4 @@
1
- import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines';
2
2
  export const motivationalSpeakerLoginSheetTheme = {
3
3
  panelClassName: `${lightPanelBase} border-blue-100`,
4
4
  backdropClassName: 'bg-[#0f0018]/65 backdrop-blur-sm',
@@ -6,8 +6,8 @@ export declare const loginSheetColorSchemeDark = "[color-scheme:dark]";
6
6
  export declare const loginSheetLightSystemDarkShell = "system-dark:bg-[#fbfaf7] system-dark:text-[#1b0029]";
7
7
  export declare const loginSheetLightContentDarkGuards = "system-dark:[&_label]:!text-[#1b0029] system-dark:[&_p]:!text-[#5c4d68] system-dark:[&_a]:!text-[#440066] system-dark:[&_button[type=button]]:text-[#1b0029]";
8
8
  export declare const lightPanelBase = "bg-brand-bg border-l border-brand-border/50 [color-scheme:light] system-dark:bg-[#fbfaf7] system-dark:text-[#1b0029]";
9
- /** Full-bleed on phones; capped drawer from sm shared by every template login sheet */
10
- export declare const loginSheetPanelShell = "w-full max-w-full max-sm:w-screen max-sm:max-w-[100dvw] max-sm:min-h-[100dvh] max-sm:rounded-none max-sm:border-l-0 sm:max-w-[420px] md:max-w-md";
9
+ /** Right-rail drawer width (~420px) for every template login sheet. */
10
+ export declare const loginSheetPanelShell = "w-full max-w-[420px] max-sm:max-w-[min(100vw,420px)] sm:max-w-[420px] md:max-w-[420px]";
11
11
  /** Safe-area aware padding; scrollable when the mobile keyboard is open */
12
12
  export declare const loginSheetContentShell = "flex flex-col h-full min-h-0 px-4 pt-[max(0.75rem,env(safe-area-inset-top))] pb-[max(1.25rem,env(safe-area-inset-bottom))] sm:px-6 sm:pt-6 sm:pb-8 overflow-x-hidden overscroll-y-contain [-webkit-overflow-scrolling:touch]";
13
13
  /** 44px+ touch targets for CTAs (WCAG / iOS HIG) */
@@ -1 +1 @@
1
- {"version":3,"file":"theme-input-baselines.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/login-sheet-themes/theme-input-baselines.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B,wDACY,CAAC;AAExD,eAAO,MAAM,gCAAgC,iKACmH,CAAC;AAEjK,eAAO,MAAM,cAAc,yHAC6F,CAAC;AAEzH,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,qJACmH,CAAC;AAErJ,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,iOAC6L,CAAC;AAEjO,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AAEnE,eAAO,MAAM,cAAc,ygBAC6e,CAAC;AAEzgB,eAAO,MAAM,eAAe,wHAC2F,CAAC;AAExH,eAAO,MAAM,cAAc,gEACoC,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,cAAc,qFACyD,CAAC;AAErF,eAAO,MAAM,kBAAkB,8aAC8Y,CAAC;AAE9a,eAAO,MAAM,cAAc,wHAC4F,CAAC;AAExH,eAAO,MAAM,aAAa,kEAAkE,CAAC;AAE7F,eAAO,MAAM,sBAAsB,0GACsE,CAAC"}
1
+ {"version":3,"file":"theme-input-baselines.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/login-sheet-themes/theme-input-baselines.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAE/D,6EAA6E;AAC7E,eAAO,MAAM,8BAA8B,wDACY,CAAC;AAExD,eAAO,MAAM,gCAAgC,iKACmH,CAAC;AAEjK,eAAO,MAAM,cAAc,yHAC6F,CAAC;AAEzH,uEAAuE;AACvE,eAAO,MAAM,oBAAoB,2FACyD,CAAC;AAE3F,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,iOAC6L,CAAC;AAEjO,oDAAoD;AACpD,eAAO,MAAM,qBAAqB,gCAAgC,CAAC;AAEnE,eAAO,MAAM,cAAc,ygBAC6e,CAAC;AAEzgB,eAAO,MAAM,eAAe,wHAC2F,CAAC;AAExH,eAAO,MAAM,cAAc,gEACoC,CAAC;AAEhE,wEAAwE;AACxE,eAAO,MAAM,cAAc,qFACyD,CAAC;AAErF,eAAO,MAAM,kBAAkB,8aAC8Y,CAAC;AAE9a,eAAO,MAAM,cAAc,wHAC4F,CAAC;AAExH,eAAO,MAAM,aAAa,kEAAkE,CAAC;AAE7F,eAAO,MAAM,sBAAsB,0GACsE,CAAC"}
@@ -6,8 +6,8 @@ export const loginSheetColorSchemeDark = '[color-scheme:dark]';
6
6
  export const loginSheetLightSystemDarkShell = 'system-dark:bg-[#fbfaf7] system-dark:text-[#1b0029]';
7
7
  export const loginSheetLightContentDarkGuards = 'system-dark:[&_label]:!text-[#1b0029] system-dark:[&_p]:!text-[#5c4d68] system-dark:[&_a]:!text-[#440066] system-dark:[&_button[type=button]]:text-[#1b0029]';
8
8
  export const lightPanelBase = 'bg-brand-bg border-l border-brand-border/50 [color-scheme:light] system-dark:bg-[#fbfaf7] system-dark:text-[#1b0029]';
9
- /** Full-bleed on phones; capped drawer from sm shared by every template login sheet */
10
- export const loginSheetPanelShell = 'w-full max-w-full max-sm:w-screen max-sm:max-w-[100dvw] max-sm:min-h-[100dvh] max-sm:rounded-none max-sm:border-l-0 sm:max-w-[420px] md:max-w-md';
9
+ /** Right-rail drawer width (~420px) for every template login sheet. */
10
+ export const loginSheetPanelShell = 'w-full max-w-[420px] max-sm:max-w-[min(100vw,420px)] sm:max-w-[420px] md:max-w-[420px]';
11
11
  /** Safe-area aware padding; scrollable when the mobile keyboard is open */
12
12
  export const loginSheetContentShell = 'flex flex-col h-full min-h-0 px-4 pt-[max(0.75rem,env(safe-area-inset-top))] pb-[max(1.25rem,env(safe-area-inset-bottom))] sm:px-6 sm:pt-6 sm:pb-8 overflow-x-hidden overscroll-y-contain [-webkit-overflow-scrolling:touch]';
13
13
  /** 44px+ touch targets for CTAs (WCAG / iOS HIG) */
@@ -1 +1 @@
1
- {"version":3,"file":"StoreLoginSheetShell.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/login-sheets/StoreLoginSheetShell.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAelE,UAAU,yBAAyB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,KAAK,EACL,MAAM,EACN,OAAO,EACP,WAAW,EACX,SAAS,GACV,EAAE,yBAAyB,2CA4C3B"}
1
+ {"version":3,"file":"StoreLoginSheetShell.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/login-sheets/StoreLoginSheetShell.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAelE,UAAU,yBAAyB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,WAAW,EACX,KAAK,EACL,MAAM,EACN,OAAO,EACP,WAAW,EACX,SAAS,GACV,EAAE,yBAAyB,2CA6C3B"}
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useRef } from 'react';
4
- import { Sheet } from '../../../components/ui/sheet.js';
5
- import { LoginSheetHeader } from '../login-sheet-header.js';
6
- import { LoginFormCore } from '../login-form-core.js';
7
- import { cn } from '../../../lib/utils/index.js';
8
- import { darkPanelContentGuards, loginSheetColorSchemeDark, loginSheetColorSchemeLight, loginSheetContentShell, loginSheetLightContentDarkGuards, loginSheetLightSystemDarkShell, loginSheetPanelShell, } from '../login-sheet-themes/theme-input-baselines.js';
4
+ import { Sheet } from '../../../components/ui/sheet';
5
+ import { LoginSheetHeader } from '../login-sheet-header';
6
+ import { LoginFormCore } from '../login-form-core';
7
+ import { cn } from '../../../lib/utils';
8
+ import { darkPanelContentGuards, loginSheetColorSchemeDark, loginSheetColorSchemeLight, loginSheetContentShell, loginSheetLightContentDarkGuards, loginSheetLightSystemDarkShell, loginSheetPanelShell, } from '../login-sheet-themes/theme-input-baselines';
9
9
  export function StoreLoginSheetShell({ storeConfig, theme, isOpen, onClose, callbackUrl, onSuccess, }) {
10
10
  const emailInputRef = useRef(null);
11
11
  const panelMode = theme.panelMode ?? 'light';
12
12
  const isLightPanel = panelMode === 'light';
13
- return (_jsxs(Sheet, { isOpen: isOpen, onClose: onClose, side: "right", portal: true, overlayTier: "overlay", overlayMobileMode: "fullscreen", dataLoginPanel: panelMode, hideBuiltInTitle: true, showCloseButton: false, ariaLabelledBy: "login-form-title", className: cn('p-0 flex flex-col shadow-2xl max-sm:shadow-none', loginSheetPanelShell, isLightPanel ? loginSheetColorSchemeLight : loginSheetColorSchemeDark, isLightPanel && loginSheetLightSystemDarkShell, theme.panelClassName), backdropClassName: theme.backdropClassName ?? 'bg-black/70 backdrop-blur-sm', contentClassName: cn(loginSheetContentShell, isLightPanel ? loginSheetLightContentDarkGuards : darkPanelContentGuards, theme.contentClassName), onOpenAutoFocus: () => emailInputRef.current?.focus(), children: [_jsx(LoginSheetHeader, { storeConfig: storeConfig, theme: theme, onClose: onClose }), _jsx("div", { className: "flex-1 min-h-0 mt-4 sm:mt-6 py-0.5", children: _jsx(LoginFormCore, { storeConfig: storeConfig, theme: theme, callbackUrl: callbackUrl, onSuccess: onSuccess, emailInputRef: emailInputRef }) })] }));
13
+ return (_jsxs(Sheet, { isOpen: isOpen, onClose: onClose, side: "right", portal: true, overlayTier: "overlay", overlayMobileMode: "drawer", dataLoginPanel: panelMode, hideBuiltInTitle: true, showCloseButton: false, ariaLabelledBy: "login-form-title", className: cn('p-0 flex flex-col shadow-2xl', loginSheetPanelShell, isLightPanel ? loginSheetColorSchemeLight : loginSheetColorSchemeDark, isLightPanel && loginSheetLightSystemDarkShell, theme.panelClassName), style: { width: '100%', maxWidth: 420 }, backdropClassName: theme.backdropClassName ?? 'bg-black/70 backdrop-blur-sm', contentClassName: cn(loginSheetContentShell, isLightPanel ? loginSheetLightContentDarkGuards : darkPanelContentGuards, theme.contentClassName), onOpenAutoFocus: () => emailInputRef.current?.focus(), children: [_jsx(LoginSheetHeader, { storeConfig: storeConfig, theme: theme, onClose: onClose }), _jsx("div", { className: "flex-1 min-h-0 mt-4 sm:mt-6 py-0.5", children: _jsx(LoginFormCore, { storeConfig: storeConfig, theme: theme, callbackUrl: callbackUrl, onSuccess: onSuccess, emailInputRef: emailInputRef }) })] }));
14
14
  }
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { useRouter } from 'next/navigation';
3
3
  import { useState, useCallback } from 'react';
4
- import { useAuth } from '../../lib/auth-context.js';
5
- import { useToast } from '../../components/ui/toast.js';
6
- import { ApiError } from '../../lib/api.js';
4
+ import { useAuth } from '../../lib/auth-context';
5
+ import { useToast } from '../../components/ui/toast';
6
+ import { ApiError } from '../../lib/api';
7
7
  export function useLoginSubmit({ callbackUrl = '/', variant, onSuccess, }) {
8
8
  const [email, setEmail] = useState('');
9
9
  const [password, setPassword] = useState('');
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from 'react';
4
4
  import { Clock } from 'lucide-react';
5
- import { cn } from '../../lib/utils/index.js';
6
- import { isInventoryHoldExpired } from '../../lib/inventory-utils.js';
5
+ import { cn } from '../../lib/utils';
6
+ import { isInventoryHoldExpired } from '../../lib/inventory-utils';
7
7
  function formatRemaining(ms) {
8
8
  const totalSeconds = Math.max(0, Math.floor(ms / 1000));
9
9
  const minutes = Math.floor(totalSeconds / 60);
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import Link from 'next/link';
4
4
  import { ArrowRight } from 'lucide-react';
5
- import { ImageWithFallback } from '../ui/image-with-fallback.js';
6
- import { RichTextExcerpt } from '../rich-text/RichTextExcerpt.js';
7
- import { extractCategoryImage, getColumnsClass, getHeroHeightClass, getMasonryHeightClass, getTwoColumnHeightClass, normalizeCategories, resolveColumnCount, } from './category-masonry-utils.js';
5
+ import { ImageWithFallback } from '../ui/image-with-fallback';
6
+ import { RichTextExcerpt } from '../rich-text/RichTextExcerpt';
7
+ import { extractCategoryImage, getColumnsClass, getHeroHeightClass, getMasonryHeightClass, getTwoColumnHeightClass, normalizeCategories, resolveColumnCount, } from './category-masonry-utils';
8
8
  function CategoryCard({ category, href, heightClass, isHero = false, showImages = true, showDescriptions = true, exploreLabel, variant, renderCardOverlay, index, exploreLabelDataAttr, }) {
9
9
  const categoryImage = showImages ? extractCategoryImage(category.image) : undefined;
10
10
  const roundedClass = variant === 'electronics' ? 'rounded-[2.5rem]' : 'rounded-2xl';
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { formatCurrency } from '../../lib/utils/index.js';
3
+ import { formatCurrency } from '../../lib/utils';
4
4
  export function CheckoutFeeLines({ lines, currency, excludeKeys = [], className = 'flex items-center justify-between gap-4 font-medium text-gray-600', labelClassName = 'shrink-0', amountClassName = 'shrink-0 text-right font-semibold tabular-nums text-gray-900', }) {
5
5
  const excluded = new Set(excludeKeys);
6
6
  return (_jsx(_Fragment, { children: lines
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect, useCallback } from 'react';
4
- import { api } from '../../lib/api.js';
5
- import { Skeleton } from '../../components/ui/skeleton.js';
6
- import { buildDeliveryQuotePayload } from '../../lib/shipping-address.util.js';
4
+ import { api } from '../../lib/api';
5
+ import { Skeleton } from '../../components/ui/skeleton';
6
+ import { buildDeliveryQuotePayload } from '../../lib/shipping-address.util';
7
7
  function toSelectedShipping(rate) {
8
8
  const serviceCode = rate.serviceCode || rate.methodCode || 'standard';
9
9
  const courierId = rate.courierId || '';
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { cn } from '../../lib/utils/index.js';
3
+ import { cn } from '../../lib/utils';
4
4
  import { Award, CheckCircle, ShieldCheck, Star, Shield, QrCode } from 'lucide-react';
5
5
  import { motion } from 'framer-motion';
6
- import { Button } from '../../components/ui/button.js';
6
+ import { Button } from '../../components/ui/button';
7
7
  export function CertificateTemplate({ data, design, className }) {
8
8
  const { studentName, courseName, completionDate, certificateId, instructorName, instructorTitle, institutionName = 'Mindset Mastery Academy', signatureUrl, brandLogo, primaryColor = '#0F172A' } = data;
9
9
  const renderClassic = () => (_jsxs("div", { className: "w-full h-full bg-white border-[20px] border-double p-12 flex flex-col items-center text-center font-serif relative", style: { borderColor: primaryColor }, children: [_jsx("div", { className: "absolute top-6 left-6 w-16 h-16 border-t-4 border-l-4", style: { borderColor: primaryColor } }), _jsx("div", { className: "absolute top-6 right-6 w-16 h-16 border-t-4 border-r-4", style: { borderColor: primaryColor } }), _jsx("div", { className: "absolute bottom-6 left-6 w-16 h-16 border-b-4 border-l-4", style: { borderColor: primaryColor } }), _jsx("div", { className: "absolute bottom-6 right-6 w-16 h-16 border-b-4 border-r-4", style: { borderColor: primaryColor } }), _jsxs("div", { className: "mb-6", children: [_jsx("p", { className: "text-[10px] font-bold uppercase tracking-[0.3em] mb-2 text-slate-400", children: institutionName }), _jsx(Award, { className: "w-16 h-16 mb-4 mx-auto", style: { color: primaryColor } }), _jsx("h1", { className: "text-5xl font-black tracking-widest uppercase mb-1", children: "Certificate" }), _jsx("h2", { className: "text-xl italic text-gray-500", children: "of Achievement" })] }), _jsx("p", { className: "text-lg mb-4", children: "This is to certify that" }), _jsx("h3", { className: "text-5xl font-bold mb-6 underline decoration-1 underline-offset-8 text-slate-900", children: studentName }), _jsx("p", { className: "text-lg mb-4", children: "has successfully demonstrated mastery in" }), _jsx("h4", { className: "text-3xl font-bold mb-10 text-slate-800 tracking-tight", children: courseName }), _jsxs("div", { className: "mt-auto w-full flex justify-between items-end px-12 pb-4", children: [_jsxs("div", { className: "text-left w-56", children: [_jsx("div", { className: "border-b border-slate-200 w-full mb-2 h-12 flex items-end justify-center", children: signatureUrl ? (_jsx("img", { src: signatureUrl, alt: "Signature", className: "h-10 object-contain" })) : (_jsx("span", { className: "text-3xl opacity-80 italic font-signature", children: instructorName })) }), _jsx("p", { className: "font-bold text-[10px] text-slate-900", children: instructorName }), _jsx("p", { className: "text-[8px] text-slate-400 uppercase tracking-widest", children: instructorTitle })] }), _jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: "w-24 h-24 rounded-full border-4 flex items-center justify-center mb-2 shadow-inner", style: { borderColor: `${primaryColor}20` }, children: _jsxs("div", { className: "w-18 h-18 rounded-full border flex items-center justify-center relative bg-white shadow-sm", style: { borderColor: primaryColor }, children: [_jsx(Shield, { className: "w-8 h-8", style: { color: primaryColor } }), _jsx("span", { className: "absolute text-[6px] font-black uppercase tracking-tighter rotate-[-15deg] bg-white px-1", children: "Verified" })] }) }), _jsxs("p", { className: "text-[8px] font-mono text-slate-400", children: ["ID: ", certificateId] })] }), _jsxs("div", { className: "text-right w-56", children: [_jsx("div", { className: "border-b border-slate-200 w-full mb-2 h-12 flex items-end justify-center", children: _jsx("span", { className: "font-bold text-[12px] text-slate-900", children: completionDate }) }), _jsx("p", { className: "text-[8px] text-slate-400 uppercase tracking-widest", children: "Date of Graduation" })] })] })] }));
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { CertificateTemplate } from './CertificateTemplates.js';
4
- import { Button } from '../../components/ui/button.js';
3
+ import { CertificateTemplate } from './CertificateTemplates';
4
+ import { Button } from '../../components/ui/button';
5
5
  import { Download, Printer, X, Share2, ArrowLeft, ShieldCheck } from 'lucide-react';
6
6
  import { useState, useRef, useEffect } from 'react';
7
7
  import { motion } from 'framer-motion';
8
- import { cn } from '../../lib/utils/index.js';
8
+ import { cn } from '../../lib/utils';
9
9
  export function CertificateViewer({ certificateId, data: initialData, design: initialDesign, onClose, isStandalone = false }) {
10
10
  const [isPrinting, setIsPrinting] = useState(false);
11
11
  const certificateRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"MentorshipProgress.d.ts","sourceRoot":"","sources":["../../../src/components/learning/MentorshipProgress.tsx"],"names":[],"mappings":"AAUA,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,2CAkKjF"}
1
+ {"version":3,"file":"MentorshipProgress.d.ts","sourceRoot":"","sources":["../../../src/components/learning/MentorshipProgress.tsx"],"names":[],"mappings":"AAUA,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE,2CAiKjF"}
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Button } from '../../components/ui/button.js';
3
+ import { Button } from '../../components/ui/button';
4
4
  import { Calendar, Clock, User, MessageSquare, Video, ExternalLink, AlertCircle } from 'lucide-react';
5
5
  import Image from 'next/image';
6
- import { cn } from '../../lib/utils/index.js';
6
+ import { cn } from '../../lib/utils';
7
7
  import { motion } from 'framer-motion';
8
- import { formatDateSafe } from '../../utils/date.js';
8
+ import { formatDateSafe } from '../../utils/date';
9
9
  export function MentorshipProgress({ programs }) {
10
10
  if (programs.length === 0) {
11
11
  return (_jsxs("div", { className: "text-center py-12 bg-slate-50 rounded-3xl border-2 border-dashed border-slate-200", children: [_jsx("div", { className: "w-16 h-16 bg-white rounded-full flex items-center justify-center mx-auto mb-4 shadow-sm", children: _jsx(User, { className: "w-8 h-8 text-slate-300" }) }), _jsx("h3", { className: "text-lg font-bold text-slate-900", children: "No active mentorships" }), _jsx("p", { className: "text-slate-500 max-w-xs mx-auto mt-2", children: "Ready to level up? Browse our mentorship programs and connect with an expert." }), _jsx(Button, { className: "mt-6 rounded-full bg-black text-white px-8", children: "Browse Mentors" })] }));
@@ -15,6 +15,6 @@ export function MentorshipProgress({ programs }) {
15
15
  const progress = (program.sessionsCompleted / program.sessionsTotal) * 100;
16
16
  // Calculate days remaining
17
17
  const daysRemaining = Math.ceil((new Date(program.expiryDate).getTime() - new Date().getTime()) / (1000 * 60 * 60 * 24));
18
- return (_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, className: cn("bg-white border-2 rounded-3xl overflow-hidden transition-all", isExpired ? "border-slate-100 opacity-75" : "border-slate-100 hover:border-blue-200 hover:shadow-xl shadow-sm"), children: [_jsx("div", { className: "p-6 md:p-8", children: _jsxs("div", { className: "flex flex-col md:flex-row gap-8", children: [_jsxs("div", { className: "flex flex-row md:flex-col items-center md:items-center gap-4 md:w-48 text-center border-b md:border-b-0 md:border-r border-slate-100 pb-6 md:pb-0 md:pr-8", children: [_jsx("div", { className: "relative w-20 h-20 md:w-24 md:h-24 rounded-full overflow-hidden border-4 border-slate-50 shadow-sm", children: _jsx(Image, { src: program.mentorAvatar || "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop", alt: program.mentorName, fill: true, className: "object-cover", unoptimized: true }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-slate-900 mt-2", children: program.mentorName }), _jsx("p", { className: "text-xs font-medium text-blue-600 uppercase tracking-widest", children: "Lead Mentor" })] })] }), _jsxs("div", { className: "flex-1 space-y-6", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-start gap-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsx("span", { className: cn("px-2 py-0.5 rounded-full text-[10px] font-black uppercase tracking-widest", isExpired ? "bg-slate-100 text-slate-500" : "bg-blue-100 text-blue-700"), children: isExpired ? 'Completed' : 'Active Program' }), !isExpired && daysRemaining <= 7 && (_jsxs("span", { className: "flex items-center gap-1 text-orange-600 text-[10px] font-bold", children: [_jsx(AlertCircle, { className: "w-3 h-3" }), " Expiers Soon"] }))] }), _jsx("h3", { className: "text-2xl font-black text-slate-900", children: program.name })] }), _jsxs("div", { className: "text-right", children: [_jsx("p", { className: "text-xs font-bold text-slate-400 uppercase tracking-widest mb-1", children: "Expires On" }), _jsx("p", { className: cn("font-mono font-bold", isExpired ? "text-slate-400" : "text-slate-900"), children: formatDateSafe(program.expiryDate, undefined, { month: 'short', day: 'numeric', year: 'numeric' }) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-end text-sm", children: [_jsx("span", { className: "font-bold text-slate-600", children: "Session Progress" }), _jsxs("span", { className: "font-mono font-black text-slate-900", children: [program.sessionsCompleted, "/", program.sessionsTotal, " ", _jsx("span", { className: "text-slate-400 font-medium text-xs", children: "SESSIONS" })] })] }), _jsx("div", { className: "w-full h-3 bg-slate-100 rounded-full overflow-hidden", children: _jsx(motion.div, { initial: { width: 0 }, animate: { width: `${progress}%` }, transition: { duration: 1, ease: "easeOut" }, className: cn("h-full rounded-full transition-all", isExpired ? "bg-slate-300" : "bg-gradient-to-r from-blue-500 to-indigo-600") }) })] }), _jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4 pt-4 border-t border-slate-50", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(Calendar, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Next Session" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: program.nextSessionDate || 'TBD' })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(MessageSquare, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Messages" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: "12 New" })] })] }), _jsxs("div", { className: "flex items-center gap-3 hidden md:flex", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(Clock, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Enrollment" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: daysRemaining > 0 ? `${daysRemaining} days left` : 'Expired' })] })] })] })] })] }) }), _jsxs("div", { className: "bg-slate-50/50 border-t border-slate-100 px-8 py-4 flex flex-col sm:flex-row justify-between items-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("button", { className: "text-sm font-bold text-slate-500 hover:text-slate-900 transition-colors flex items-center gap-2", children: [_jsx(Video, { className: "w-4 h-4" }), " Room Link"] }), _jsx("div", { className: "w-[1px] h-4 bg-slate-200" }), _jsxs("button", { className: "text-sm font-bold text-slate-500 hover:text-slate-900 transition-colors flex items-center gap-2", children: [_jsx(ExternalLink, { className: "w-4 h-4" }), " Resources"] })] }), _jsxs("div", { className: "flex gap-3 w-full sm:w-auto", children: [_jsx(Button, { variant: "outline", className: "flex-1 sm:flex-none rounded-full px-6 font-bold h-11 border-slate-200", children: "Manage Schedule" }), _jsx(Button, { className: "flex-1 sm:flex-none rounded-full px-8 font-bold h-11 bg-black text-white hover:bg-slate-800 shadow-lg shadow-black/10", children: "Enter Session" })] })] })] }, program.id));
18
+ return (_jsxs(motion.div, { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 }, className: cn("bg-white border-2 rounded-3xl overflow-hidden transition-all", isExpired ? "border-slate-100 opacity-75" : "border-slate-100 hover:border-blue-200 hover:shadow-xl shadow-sm"), children: [_jsx("div", { className: "p-6 md:p-8", children: _jsxs("div", { className: "flex flex-col md:flex-row gap-8", children: [_jsxs("div", { className: "flex flex-row md:flex-col items-center md:items-center gap-4 md:w-48 text-center border-b md:border-b-0 md:border-r border-slate-100 pb-6 md:pb-0 md:pr-8", children: [_jsx("div", { className: "relative w-20 h-20 md:w-24 md:h-24 rounded-full overflow-hidden border-4 border-slate-50 shadow-sm", children: _jsx(Image, { src: program.mentorAvatar || "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?w=150&h=150&fit=crop", alt: program.mentorName, fill: true, className: "object-cover" }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-slate-900 mt-2", children: program.mentorName }), _jsx("p", { className: "text-xs font-medium text-blue-600 uppercase tracking-widest", children: "Lead Mentor" })] })] }), _jsxs("div", { className: "flex-1 space-y-6", children: [_jsxs("div", { className: "flex flex-col md:flex-row justify-between items-start gap-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsx("span", { className: cn("px-2 py-0.5 rounded-full text-[10px] font-black uppercase tracking-widest", isExpired ? "bg-slate-100 text-slate-500" : "bg-blue-100 text-blue-700"), children: isExpired ? 'Completed' : 'Active Program' }), !isExpired && daysRemaining <= 7 && (_jsxs("span", { className: "flex items-center gap-1 text-orange-600 text-[10px] font-bold", children: [_jsx(AlertCircle, { className: "w-3 h-3" }), " Expiers Soon"] }))] }), _jsx("h3", { className: "text-2xl font-black text-slate-900", children: program.name })] }), _jsxs("div", { className: "text-right", children: [_jsx("p", { className: "text-xs font-bold text-slate-400 uppercase tracking-widest mb-1", children: "Expires On" }), _jsx("p", { className: cn("font-mono font-bold", isExpired ? "text-slate-400" : "text-slate-900"), children: formatDateSafe(program.expiryDate, undefined, { month: 'short', day: 'numeric', year: 'numeric' }) })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-end text-sm", children: [_jsx("span", { className: "font-bold text-slate-600", children: "Session Progress" }), _jsxs("span", { className: "font-mono font-black text-slate-900", children: [program.sessionsCompleted, "/", program.sessionsTotal, " ", _jsx("span", { className: "text-slate-400 font-medium text-xs", children: "SESSIONS" })] })] }), _jsx("div", { className: "w-full h-3 bg-slate-100 rounded-full overflow-hidden", children: _jsx(motion.div, { initial: { width: 0 }, animate: { width: `${progress}%` }, transition: { duration: 1, ease: "easeOut" }, className: cn("h-full rounded-full transition-all", isExpired ? "bg-slate-300" : "bg-gradient-to-r from-blue-500 to-indigo-600") }) })] }), _jsxs("div", { className: "grid grid-cols-2 md:grid-cols-3 gap-4 pt-4 border-t border-slate-50", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(Calendar, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Next Session" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: program.nextSessionDate || 'TBD' })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(MessageSquare, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Messages" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: "12 New" })] })] }), _jsxs("div", { className: "flex items-center gap-3 hidden md:flex", children: [_jsx("div", { className: "w-10 h-10 rounded-xl bg-slate-50 flex items-center justify-center text-slate-400", children: _jsx(Clock, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-[10px] font-black uppercase tracking-widest text-slate-400", children: "Enrollment" }), _jsx("p", { className: "text-sm font-bold text-slate-700", children: daysRemaining > 0 ? `${daysRemaining} days left` : 'Expired' })] })] })] })] })] }) }), _jsxs("div", { className: "bg-slate-50/50 border-t border-slate-100 px-8 py-4 flex flex-col sm:flex-row justify-between items-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("button", { className: "text-sm font-bold text-slate-500 hover:text-slate-900 transition-colors flex items-center gap-2", children: [_jsx(Video, { className: "w-4 h-4" }), " Room Link"] }), _jsx("div", { className: "w-[1px] h-4 bg-slate-200" }), _jsxs("button", { className: "text-sm font-bold text-slate-500 hover:text-slate-900 transition-colors flex items-center gap-2", children: [_jsx(ExternalLink, { className: "w-4 h-4" }), " Resources"] })] }), _jsxs("div", { className: "flex gap-3 w-full sm:w-auto", children: [_jsx(Button, { variant: "outline", className: "flex-1 sm:flex-none rounded-full px-6 font-bold h-11 border-slate-200", children: "Manage Schedule" }), _jsx(Button, { className: "flex-1 sm:flex-none rounded-full px-8 font-bold h-11 bg-black text-white hover:bg-slate-800 shadow-lg shadow-black/10", children: "Enter Session" })] })] })] }, program.id));
19
19
  }) }));
20
20
  }
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { Ruler, X } from 'lucide-react';
4
- import { DEFAULT_COLOR_SWATCHES, formatAttributeLabel, resolveVariantImageUrls, } from '../../lib/product-variation-utils.js';
4
+ import { DEFAULT_COLOR_SWATCHES, formatAttributeLabel, resolveVariantImageUrls, } from '../../lib/product-variation-utils';
5
5
  function getOptionImage(variants, attributeKey, value) {
6
6
  if (!variants?.length)
7
7
  return undefined;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { richFieldHasContent } from '../../lib/rich-html.js';
4
- import { SafeRichHtml } from './SafeRichHtml.js';
3
+ import { richFieldHasContent } from '../../lib/rich-html';
4
+ import { SafeRichHtml } from './SafeRichHtml';
5
5
  /** Category hero / detail description — renders sanitized WYSIWYG HTML. */
6
6
  export function CategoryDescription({ description, className }) {
7
7
  if (!richFieldHasContent(description))
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { richFieldHasContent } from '../../lib/rich-html.js';
4
- import { SafeRichHtml } from './SafeRichHtml.js';
3
+ import { richFieldHasContent } from '../../lib/rich-html';
4
+ import { SafeRichHtml } from './SafeRichHtml';
5
5
  /** Product detail description block — WYSIWYG HTML, legacy plain text, or JSON snapshots. */
6
6
  export function ProductDescription({ description, title = 'Description', className = 'mb-8', proseClassName = 'prose prose-sm max-w-none text-gray-600 leading-relaxed', }) {
7
7
  if (!richFieldHasContent(description))
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import React from 'react';
3
- import { richFieldHasContent, richFieldPlainTextForDisplay } from '../../lib/rich-html.js';
3
+ import { richFieldHasContent, richFieldPlainTextForDisplay } from '../../lib/rich-html';
4
4
  /** Plain-text excerpt from WYSIWYG / legacy HTML — safe for cards, meta, and line-clamp. */
5
5
  export function RichTextExcerpt({ value, fallbackPlain = '', className, as: Tag = 'span', }) {
6
6
  if (!richFieldHasContent(value))
@@ -1,14 +1,11 @@
1
- import React from 'react';
2
- export interface SafeRichHtmlProps {
3
- /** Persisted rich object, legacy string, or undefined */
1
+ import React, { type ElementType } from 'react';
2
+ type SafeRichHtmlProps = {
4
3
  value: unknown;
5
- /** Plain fallback when value is empty */
6
- fallbackPlain: string;
4
+ fallbackPlain?: string;
7
5
  className?: string;
8
- as?: React.ElementType;
9
- }
10
- /**
11
- * Renders merchant rich text using canonical sanitize path (defense in depth on stored HTML).
12
- */
13
- export declare function SafeRichHtml({ value, fallbackPlain, className, as: Tag }: SafeRichHtmlProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
6
+ as?: ElementType;
7
+ };
8
+ /** Renders merchant rich text using the canonical sanitize path. */
9
+ export declare function SafeRichHtml({ value, fallbackPlain, className, as: Tag, }: SafeRichHtmlProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
10
+ export {};
14
11
  //# sourceMappingURL=SafeRichHtml.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SafeRichHtml.d.ts","sourceRoot":"","sources":["../../../src/components/rich-text/SafeRichHtml.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,GAAY,EAAE,EAAE,iBAAiB,sEAQpG"}
1
+ {"version":3,"file":"SafeRichHtml.d.ts","sourceRoot":"","sources":["../../../src/components/rich-text/SafeRichHtml.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAW,KAAK,WAAW,EAAE,MAAM,OAAO,CAAC;AAGzD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,aAAa,EACb,SAAS,EACT,EAAE,EAAE,GAAY,GACjB,EAAE,iBAAiB,sEAYnB"}
@@ -1,10 +1,8 @@
1
1
  'use client';
2
2
  import React, { useMemo } from 'react';
3
- import { richFieldHtmlForRender } from '../../lib/rich-html.js';
4
- /**
5
- * Renders merchant rich text using canonical sanitize path (defense in depth on stored HTML).
6
- */
7
- export function SafeRichHtml({ value, fallbackPlain, className, as: Tag = 'span' }) {
3
+ import { richFieldHtmlForRender } from '../../lib/rich-html';
4
+ /** Renders merchant rich text using the canonical sanitize path. */
5
+ export function SafeRichHtml({ value, fallbackPlain, className, as: Tag = 'span', }) {
8
6
  const html = useMemo(() => richFieldHtmlForRender(value, fallbackPlain), [value, fallbackPlain]);
9
7
  if (!html)
10
8
  return React.createElement(Tag, { className });
@@ -1 +1 @@
1
- {"version":3,"file":"ProductDeliveryInfoSection.d.ts","sourceRoot":"","sources":["../../../src/components/shipping/ProductDeliveryInfoSection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMnE,UAAU,+BAA+B;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,oBAAoB,CAAC;IACtC,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IACtE,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,GACR,EAAE,+BAA+B,2CA+HjC"}
1
+ {"version":3,"file":"ProductDeliveryInfoSection.d.ts","sourceRoot":"","sources":["../../../src/components/shipping/ProductDeliveryInfoSection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQnE,UAAU,+BAA+B;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,oBAAoB,CAAC;IACtC,qBAAqB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;IACtE,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,0BAA0B,CAAC,EACzC,WAAW,EACX,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,GACR,EAAE,+BAA+B,2CAiIjC"}
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { CheckCircle, Truck } from 'lucide-react';
4
- import { isAutomatedShippingEnabled } from '../../lib/shipping-settings.util.js';
5
- import { cn, formatCurrency } from '../../lib/utils/index.js';
6
- import { ShippingQuoteAddressForm } from './ShippingQuoteAddressForm.js';
7
- import { MerchantHandledDeliveryNotice } from './MerchantHandledDeliveryNotice.js';
4
+ import { isAutomatedShippingEnabled } from '../../lib/shipping-settings.util';
5
+ import { cn, formatCurrency } from '../../lib/utils';
6
+ import { ShippingQuoteAddressForm } from './ShippingQuoteAddressForm';
7
+ import { MerchantHandledDeliveryNotice } from './MerchantHandledDeliveryNotice';
8
+ const SHOW_PDP_DELIVERY_INFO = false;
8
9
  export function ProductDeliveryInfoSection({ storeConfig, currency, productCurrency, productPrice, quantity, shippingAddress, updateShippingAddress, shippingMethods, isCalculatingShipping, shippingError, freeShippingEligible, freeShippingThreshold, onToast, }) {
10
+ if (!SHOW_PDP_DELIVERY_INFO)
11
+ return null;
9
12
  const displayCurrency = productCurrency || currency;
10
13
  const automatedShipping = isAutomatedShippingEnabled(storeConfig);
11
14
  return (_jsxs("div", { className: "mb-8 border-t border-b border-gray-100 py-6", children: [_jsxs("h3", { className: "font-bold text-gray-900 flex items-center gap-2 text-sm mb-4 uppercase tracking-wider", children: [_jsx(Truck, { className: "h-4 w-4" }), " Delivery Information"] }), !automatedShipping ? (_jsx(MerchantHandledDeliveryNotice, { storeName: storeConfig.name })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "mb-4 p-4 bg-gray-50 rounded-lg border border-gray-200", children: [_jsx("p", { className: "text-xs font-semibold text-gray-700 mb-3 uppercase tracking-wider", children: "Calculate Shipping" }), _jsx(ShippingQuoteAddressForm, { address: shippingAddress, onChange: updateShippingAddress, onToast: onToast }), shippingError && (_jsx("p", { className: "text-xs text-red-600 mt-2", children: shippingError }))] }), freeShippingThreshold !== undefined && !freeShippingEligible && (_jsxs("div", { className: "mb-4 p-3 bg-blue-50 border border-blue-200 rounded-lg", children: [_jsxs("p", { className: "text-xs font-medium text-blue-900 mb-1", children: ["Spend", ' ', formatCurrency(freeShippingThreshold - productPrice * quantity, displayCurrency), ' ', "more for free shipping!"] }), _jsx("div", { className: "w-full bg-blue-200 rounded-full h-2", children: _jsx("div", { className: "bg-blue-600 h-2 rounded-full transition-all", style: {
@@ -2,9 +2,9 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useState } from 'react';
4
4
  import { ChevronDown } from 'lucide-react';
5
- import { cn } from '../../lib/utils/index.js';
6
- import { countries, getCountryByName, getCitiesByCountry, getNigerianCitiesByState } from '../../lib/countries.js';
7
- import { isNigeria, deriveNigerianStateFromCity, NIGERIAN_STATES, enrichShippingQuoteAddress, } from '../../lib/shipping-address.util.js';
5
+ import { cn } from '../../lib/utils';
6
+ import { countries, getCountryByName, getCitiesByCountry, getNigerianCitiesByState } from '../../lib/countries';
7
+ import { isNigeria, deriveNigerianStateFromCity, NIGERIAN_STATES, enrichShippingQuoteAddress, } from '../../lib/shipping-address.util';
8
8
  export function ShippingQuoteAddressForm({ address, onChange, onToast, className, showPhone = false, }) {
9
9
  const [isCountryOpen, setIsCountryOpen] = useState(false);
10
10
  const [isCityOpen, setIsCityOpen] = useState(false);
@@ -2,8 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { createContext, useContext, useState, useCallback } from 'react';
4
4
  import { CheckCircle2, AlertCircle, Info, AlertTriangle } from 'lucide-react';
5
- import { cn } from '../../lib/utils/index.js';
6
- import { Button } from './button.js';
5
+ import { cn } from '../../lib/utils';
6
+ import { Button } from './button';
7
7
  export const AlertModalContext = createContext(undefined);
8
8
  export function AlertModalProvider({ children }) {
9
9
  const [alert, setAlert] = useState({
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect, useRef } from 'react';
4
4
  import { User } from 'lucide-react';
5
- import { cn } from '../../lib/utils/index.js';
5
+ import { cn } from '../../lib/utils';
6
6
  export function AvatarImage({ src, alt = 'Profile', size = 40, className, fallbackIcon, fill = false, }) {
7
7
  const [imageError, setImageError] = useState(false);
8
8
  const [imageLoaded, setImageLoaded] = useState(false);
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { cva } from "class-variance-authority";
3
- import { cn } from "../../lib/utils/index.js";
3
+ import { cn } from "../../lib/utils";
4
4
  const badgeVariants = cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
5
5
  variants: {
6
6
  variant: {
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React from 'react';
4
4
  import Link from 'next/link';
5
- import { formatDisplayLabel } from '../../lib/utils/index.js';
5
+ import { formatDisplayLabel } from '../../lib/utils';
6
6
  export function Breadcrumbs({ items, variant = 'default', className }) {
7
7
  const isLight = variant === 'light';
8
8
  return (_jsx("nav", { className: `flex items-center gap-3 text-[10px] sm:text-[11px] uppercase tracking-[0.1em] font-bold ${isLight ? 'text-white' : 'text-brand-text-muted/70'} ${className || ''}`, children: items.map((item, index) => {
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import { type VariantProps } from "class-variance-authority";
3
3
  declare const buttonVariants: (props?: {
4
4
  variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost";
5
- size?: "icon" | "default" | "sm" | "lg" | "xl" | "icon-sm" | "icon-lg";
5
+ size?: "default" | "sm" | "lg" | "xl" | "icon" | "icon-sm" | "icon-lg";
6
6
  } & import("class-variance-authority/types").ClassProp) => string;
7
7
  declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
8
8
  asChild?: boolean;