storefront-layouts 1.0.16 → 1.0.17

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 (213) hide show
  1. package/dist/components/auth/LoginForm.js +1 -1
  2. package/dist/components/auth/LoginSheet.js +1 -1
  3. package/dist/components/auth/login-form-core.js +2 -2
  4. package/dist/components/auth/login-sheet-registry.js +2 -2
  5. package/dist/components/auth/login-sheet-themes/booking-agenda.theme.js +1 -1
  6. package/dist/components/auth/login-sheet-themes/booking.theme.js +1 -1
  7. package/dist/components/auth/login-sheet-themes/clothing-minimal.theme.js +1 -1
  8. package/dist/components/auth/login-sheet-themes/clothing.theme.js +1 -1
  9. package/dist/components/auth/login-sheet-themes/electronics-grid.theme.js +1 -1
  10. package/dist/components/auth/login-sheet-themes/electronics.theme.js +1 -1
  11. package/dist/components/auth/login-sheet-themes/food-modern.theme.js +1 -1
  12. package/dist/components/auth/login-sheet-themes/food.theme.js +1 -1
  13. package/dist/components/auth/login-sheet-themes/index.js +9 -9
  14. package/dist/components/auth/login-sheet-themes/motivational-speaker.theme.js +1 -1
  15. package/dist/components/auth/login-sheets/StoreLoginSheetShell.js +3 -3
  16. package/dist/components/categories/category-masonry-grid.js +3 -3
  17. package/dist/components/learning/CertificateViewer.js +1 -1
  18. package/dist/components/rich-text/CategoryDescription.js +2 -2
  19. package/dist/components/rich-text/ProductDescription.js +2 -2
  20. package/dist/components/rich-text/RichTextExcerpt.js +1 -1
  21. package/dist/components/rich-text/SafeRichHtml.js +1 -1
  22. package/dist/components/shipping/ProductDeliveryInfoSection.js +2 -2
  23. package/dist/components/ui/alert-modal.js +1 -1
  24. package/dist/components/ui/guest-checkout-modal.js +2 -2
  25. package/dist/components/ui/image-skeleton.js +1 -1
  26. package/dist/components/ui/image-with-fallback.js +1 -1
  27. package/dist/components/ui/loading-skeleton-wrapper.js +1 -1
  28. package/dist/components/ui/modal.js +1 -1
  29. package/dist/components/ui/page-content-loader.js +1 -1
  30. package/dist/components/ui/product-card.d.ts.map +1 -1
  31. package/dist/components/ui/product-card.js +3 -2
  32. package/dist/components/ui/route-skeleton-loader.js +5 -5
  33. package/dist/components/ui/sheet.js +1 -1
  34. package/dist/components/ui/skeletons/index.js +5 -5
  35. package/dist/components/ui/skeletons/product-grid-skeleton.js +1 -1
  36. package/dist/editor/alignment-schemas/booking.js +1 -1
  37. package/dist/editor/alignment-schemas/clothing-minimal.js +1 -1
  38. package/dist/editor/alignment-schemas/index.js +20 -20
  39. package/dist/editor/alignment-schemas/lazy-loader.js +1 -1
  40. package/dist/editor/alignment-schemas/metadata.js +1 -1
  41. package/dist/editor/alignment-schemas/resolve-canvas-inspector-leaf.js +3 -3
  42. package/dist/editor/blocks/index.js +3 -3
  43. package/dist/editor/blocks/migrate-clothing-minimal.js +3 -3
  44. package/dist/editor/blocks/nav-outline-utils.js +2 -2
  45. package/dist/editor/blocks/registry.js +1 -1
  46. package/dist/editor/document/adapter.js +4 -4
  47. package/dist/editor/document/block-tree.js +1 -1
  48. package/dist/editor/document/index.js +6 -6
  49. package/dist/editor/document/validate.js +1 -1
  50. package/dist/editor/index.js +12 -12
  51. package/dist/editor/layout-content-loader.js +3 -3
  52. package/dist/editor/payaza-form/ArrayItemManager.js +2 -2
  53. package/dist/editor/payaza-form/EditorCanvasPreview.js +4 -4
  54. package/dist/editor/payaza-form/FieldRenderer.js +17 -17
  55. package/dist/editor/payaza-form/IframePreviewMessageBridge.js +3 -3
  56. package/dist/editor/payaza-form/PayazaFormEditor.js +29 -29
  57. package/dist/editor/payaza-form/PayazaFormEditorFullPage.js +2 -2
  58. package/dist/editor/payaza-form/SliderArrayEditor.js +2 -2
  59. package/dist/editor/payaza-form/components/ArrayField.js +1 -1
  60. package/dist/editor/payaza-form/components/BlockStylesInspector.js +1 -1
  61. package/dist/editor/payaza-form/components/BlocksField.js +8 -8
  62. package/dist/editor/payaza-form/components/ButtonField.js +3 -3
  63. package/dist/editor/payaza-form/components/CanvasGranularInspector.js +11 -11
  64. package/dist/editor/payaza-form/components/IconField.js +2 -2
  65. package/dist/editor/payaza-form/components/ImageField.js +1 -1
  66. package/dist/editor/payaza-form/components/NumberField.js +1 -1
  67. package/dist/editor/payaza-form/components/RichTextField.js +2 -2
  68. package/dist/editor/payaza-form/components/SectionSchemaInspector.js +3 -3
  69. package/dist/editor/payaza-form/components/StarRatingField.js +1 -1
  70. package/dist/editor/payaza-form/components/TextField.js +1 -1
  71. package/dist/editor/payaza-form/data-merger.js +6 -6
  72. package/dist/editor/payaza-form/data-transformer.js +3 -3
  73. package/dist/editor/payaza-form/engine.js +1 -1
  74. package/dist/editor/payaza-form/examples/custom-widgets.example.js +1 -1
  75. package/dist/editor/payaza-form/index.js +8 -8
  76. package/dist/editor/payaza-form/layout-loader.js +2 -2
  77. package/dist/editor/payaza-form/preview-message-handler.js +3 -3
  78. package/dist/editor/payaza-form/schema-bridge.js +3 -3
  79. package/dist/editor/payaza-form/widget-registry.js +1 -1
  80. package/dist/editor/shared/BlockOutlineTree.js +1 -1
  81. package/dist/editor/shared/EditorHeader.js +1 -1
  82. package/dist/editor/shared/EditorNavigator.js +1 -1
  83. package/dist/editor/shared/IframePreview.js +6 -6
  84. package/dist/editor/shared/InlineCanvasPreview.js +7 -7
  85. package/dist/editor/shared/LayoutRenderer.js +1 -1
  86. package/dist/editor/shared/ResizableSidebar.js +1 -1
  87. package/dist/editor/shared/index.js +7 -7
  88. package/dist/hooks/use-product-reviews.js +1 -1
  89. package/dist/hooks/usePreviewSlideSync.js +1 -1
  90. package/dist/index.js +143 -143
  91. package/dist/layouts/booking/components/BookingHomePage.js +1 -1
  92. package/dist/layouts/booking/components/BookingMultilineHeading.js +1 -1
  93. package/dist/layouts/booking/components/BookingTestimonialCard.js +1 -1
  94. package/dist/layouts/booking/components/booking-footer-defaults.js +2 -2
  95. package/dist/layouts/booking/index.js +8 -8
  96. package/dist/layouts/booking/pages/BookPage.js +1 -1
  97. package/dist/layouts/booking/pages/CategoriesPage.js +2 -2
  98. package/dist/layouts/booking/pages/ProductDetailPage.js +3 -3
  99. package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +3 -3
  100. package/dist/layouts/booking-agenda/index.js +8 -8
  101. package/dist/layouts/booking-agenda/pages/CategoriesPage.js +1 -1
  102. package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +3 -3
  103. package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -1
  104. package/dist/layouts/clothing/components/ClothingHomePage.js +13 -12
  105. package/dist/layouts/clothing/index.js +7 -7
  106. package/dist/layouts/clothing/pages/AboutPage.js +4 -4
  107. package/dist/layouts/clothing/pages/CategoriesPage.js +9 -9
  108. package/dist/layouts/clothing/pages/CategoryPage.js +7 -7
  109. package/dist/layouts/clothing/pages/ContactPage.js +3 -3
  110. package/dist/layouts/clothing/pages/ProductDetailPage.js +24 -24
  111. package/dist/layouts/clothing/pages/ProductsPage.js +17 -17
  112. package/dist/layouts/clothing/payaza-bindings.js +2 -2
  113. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -1
  114. package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +11 -10
  115. package/dist/layouts/clothing-minimal/components/clothing-minimal-block-render.js +7 -7
  116. package/dist/layouts/clothing-minimal/index.js +7 -7
  117. package/dist/layouts/clothing-minimal/pages/AboutPage.js +3 -3
  118. package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +8 -8
  119. package/dist/layouts/clothing-minimal/pages/CategoryPage.js +7 -7
  120. package/dist/layouts/clothing-minimal/pages/ContactPage.js +3 -3
  121. package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +24 -24
  122. package/dist/layouts/clothing-minimal/pages/ProductsPage.js +18 -18
  123. package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +3 -3
  124. package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -1
  125. package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +4 -3
  126. package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -1
  127. package/dist/layouts/electronics/components/ElectronicsHomePage.js +5 -4
  128. package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +2 -2
  129. package/dist/layouts/electronics/components/ElectronicsProductsPage.js +4 -4
  130. package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +1 -1
  131. package/dist/layouts/electronics/index.js +18 -18
  132. package/dist/layouts/electronics/pages/CategoriesPage.js +1 -1
  133. package/dist/layouts/electronics/pages/ProductDetailPage.js +3 -3
  134. package/dist/layouts/electronics/pages/ProductsPage.js +2 -2
  135. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -1
  136. package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +4 -3
  137. package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +2 -2
  138. package/dist/layouts/electronics-grid/index.js +14 -14
  139. package/dist/layouts/electronics-grid/pages/CategoriesPage.js +1 -1
  140. package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +3 -3
  141. package/dist/layouts/electronics-grid/pages/ProductsPage.js +2 -2
  142. package/dist/layouts/food/components/FoodHomePage.js +1 -1
  143. package/dist/layouts/food/index.js +8 -8
  144. package/dist/layouts/food/pages/CategoriesPage.js +2 -2
  145. package/dist/layouts/food/pages/CategoryPage.js +2 -2
  146. package/dist/layouts/food/pages/ProductDetailPage.js +4 -4
  147. package/dist/layouts/food/pages/ProductsPage.js +2 -2
  148. package/dist/layouts/food-modern/components/FoodHomePageModern.js +3 -3
  149. package/dist/layouts/food-modern/index.js +8 -8
  150. package/dist/layouts/food-modern/pages/CategoriesPage.js +1 -1
  151. package/dist/layouts/food-modern/pages/CategoryPage.js +2 -2
  152. package/dist/layouts/food-modern/pages/ProductDetailPage.js +3 -3
  153. package/dist/layouts/food-modern/pages/ProductsPage.js +2 -2
  154. package/dist/layouts/motivational-speaker/components/MotivationalSpeakerPageWrapper.js +1 -1
  155. package/dist/layouts/motivational-speaker/index.js +9 -9
  156. package/dist/layouts/motivational-speaker/pages/ProductsPage.js +2 -2
  157. package/dist/layouts/shared/components/BaseStoreLayout.js +9 -9
  158. package/dist/layouts/shared/components/GenericPageWrapper.js +3 -3
  159. package/dist/layouts/shared/components/PdpVariationSelectors.js +2 -2
  160. package/dist/layouts/shared/components/PromoBanner.js +4 -4
  161. package/dist/layouts/shared/components/StoreCartSheet.js +9 -9
  162. package/dist/layouts/shared/components/StoreFooter.js +9 -9
  163. package/dist/layouts/shared/components/StoreHeader.js +8 -8
  164. package/dist/layouts/shared/components/headers/BookingAgendaSidebar.js +2 -2
  165. package/dist/layouts/shared/components/headers/ClothingMinimalHeader.js +9 -9
  166. package/dist/layouts/shared/components/headers/FoodModernHeader.js +7 -7
  167. package/dist/layouts/shared/index.js +22 -22
  168. package/dist/layouts/shared/pages/StoreMaintenanceScreen.js +2 -2
  169. package/dist/layouts/shared/wrappers/BookingAgendaLayout.js +16 -16
  170. package/dist/layouts/shared/wrappers/ClothingLayout.js +8 -8
  171. package/dist/layouts/shared/wrappers/ClothingMinimalLayout.js +7 -7
  172. package/dist/layouts/shared/wrappers/ElectronicsLayout.js +5 -5
  173. package/dist/layouts/shared/wrappers/FoodModernLayout.js +6 -6
  174. package/dist/layouts/shared/wrappers/MotivationalLayout.js +9 -9
  175. package/dist/layouts/shared/wrappers/StandardLayout.js +8 -8
  176. package/dist/lib/auth-context.js +2 -2
  177. package/dist/lib/layout-config-hydration.js +2 -2
  178. package/dist/lib/product-variation-utils.js +1 -1
  179. package/dist/lib/services/analytics.service.js +1 -1
  180. package/dist/lib/services/auth.service.js +1 -1
  181. package/dist/lib/services/booking.service.js +1 -1
  182. package/dist/lib/services/category.service.js +1 -1
  183. package/dist/lib/services/checkout.service.js +1 -1
  184. package/dist/lib/services/contact.service.js +1 -1
  185. package/dist/lib/services/customer.service.js +1 -1
  186. package/dist/lib/services/fees.service.js +1 -1
  187. package/dist/lib/services/index.js +13 -13
  188. package/dist/lib/services/location.service.js +1 -1
  189. package/dist/lib/services/order.service.js +1 -1
  190. package/dist/lib/services/payment.service.js +1 -1
  191. package/dist/lib/services/product.service.js +1 -1
  192. package/dist/lib/services/promo.service.js +1 -1
  193. package/dist/lib/services/review.service.js +1 -1
  194. package/dist/lib/services/service.service.js +1 -1
  195. package/dist/lib/services/shipping.service.js +1 -1
  196. package/dist/lib/services/store.service.js +1 -1
  197. package/dist/lib/store-config-utils.js +7 -7
  198. package/dist/lib/store-config.js +1 -1
  199. package/dist/lib/store-context.js +12 -12
  200. package/dist/lib/utils/asset-helpers.js +2 -2
  201. package/dist/lib/utils/editor-preview.js +3 -3
  202. package/dist/lib/utils/index.js +3 -3
  203. package/dist/lib/utils/product-images.js +1 -1
  204. package/dist/lib/utils/product-share.js +1 -1
  205. package/dist/lib/utils/url-helpers.js +1 -1
  206. package/dist/preview/LayoutPreview.js +5 -5
  207. package/dist/preview/PreviewRouter.js +2 -2
  208. package/dist/preview/canvas/PreviewCanvasEnhancer.js +8 -8
  209. package/dist/preview/canvas/preview-flush-await.js +1 -1
  210. package/dist/preview/canvas/preview-isolation.js +1 -1
  211. package/dist/preview/canvas/preview-route.js +2 -2
  212. package/dist/preview/index.js +4 -4
  213. package/package.json +30 -31
@@ -3,7 +3,7 @@ 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';
6
+ import { useLoginSubmit } from './use-login-submit.js';
7
7
  import { cn } from '../../lib/utils/index.js';
8
8
  /** Full-page auth login only. Store sheets use BespokeStoreLoginSheet + LoginFormCore. */
9
9
  export function LoginForm({ callbackUrl = '/', variant = 'page', onSuccess, className, }) {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { useAuth } from '../../lib/auth-context.js';
4
- import { BespokeStoreLoginSheet } from './login-sheet-registry';
4
+ import { BespokeStoreLoginSheet } from './login-sheet-registry.js';
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';
5
+ import { useLoginSubmit } from './use-login-submit.js';
6
6
  import { cn } from '../../lib/utils/index.js';
7
- import { loginSheetButtonTouch } from './login-sheet-themes/theme-input-baselines';
7
+ import { loginSheetButtonTouch } from './login-sheet-themes/theme-input-baselines.js';
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,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { getLoginSheetTheme } from './login-sheet-themes';
4
- import { StoreLoginSheetShell } from './login-sheets/StoreLoginSheetShell';
3
+ import { getLoginSheetTheme } from './login-sheet-themes/index.js';
4
+ import { StoreLoginSheetShell } from './login-sheets/StoreLoginSheetShell.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
1
+ import { darkPanelInputBase, darkInputError, darkLabelBase, darkPanelShell } from './theme-input-baselines.js';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
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';
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';
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';
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';
1
+ import { lightInputBase, lightInputError, lightLabelBase, lightPanelBase } from './theme-input-baselines.js';
2
2
  export const motivationalSpeakerLoginSheetTheme = {
3
3
  panelClassName: `${lightPanelBase} border-blue-100`,
4
4
  backdropClassName: 'bg-[#0f0018]/65 backdrop-blur-sm',
@@ -2,10 +2,10 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useRef } from 'react';
4
4
  import { Sheet } from '../../ui/sheet.js';
5
- import { LoginSheetHeader } from '../login-sheet-header';
6
- import { LoginFormCore } from '../login-form-core';
5
+ import { LoginSheetHeader } from '../login-sheet-header.js';
6
+ import { LoginFormCore } from '../login-form-core.js';
7
7
  import { cn } from '../../../lib/utils/index.js';
8
- import { darkPanelContentGuards, loginSheetColorSchemeDark, loginSheetColorSchemeLight, loginSheetContentShell, loginSheetLightContentDarkGuards, loginSheetLightSystemDarkShell, loginSheetPanelShell, } from '../login-sheet-themes/theme-input-baselines';
8
+ import { darkPanelContentGuards, loginSheetColorSchemeDark, loginSheetColorSchemeLight, loginSheetContentShell, loginSheetLightContentDarkGuards, loginSheetLightSystemDarkShell, loginSheetPanelShell, } from '../login-sheet-themes/theme-input-baselines.js';
9
9
  export function StoreLoginSheetShell({ storeConfig, theme, isOpen, onClose, callbackUrl, onSuccess, }) {
10
10
  const emailInputRef = useRef(null);
11
11
  const panelMode = theme.panelMode ?? 'light';
@@ -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';
6
- import { RichTextExcerpt } from '../rich-text/RichTextExcerpt';
7
- import { extractCategoryImage, getColumnsClass, getHeroHeightClass, getMasonryHeightClass, getTwoColumnHeightClass, normalizeCategories, resolveColumnCount, } from './category-masonry-utils';
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';
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 } from "react/jsx-runtime";
3
- import { CertificateTemplate } from './CertificateTemplates';
3
+ import { CertificateTemplate } from './CertificateTemplates.js';
4
4
  import { Button } from '../ui/button.js';
5
5
  import { Download, Printer, X, Share2, ArrowLeft, ShieldCheck } from 'lucide-react';
6
6
  import { useState, useRef, useEffect } from 'react';
@@ -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';
4
- import { SafeRichHtml } from './SafeRichHtml';
3
+ import { richFieldHasContent } from '../../lib/rich-html.js';
4
+ import { SafeRichHtml } from './SafeRichHtml.js';
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';
4
- import { SafeRichHtml } from './SafeRichHtml';
3
+ import { richFieldHasContent } from '../../lib/rich-html.js';
4
+ import { SafeRichHtml } from './SafeRichHtml.js';
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';
3
+ import { richFieldHasContent, richFieldPlainTextForDisplay } from '../../lib/rich-html.js';
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,6 +1,6 @@
1
1
  'use client';
2
2
  import React, { useMemo } from 'react';
3
- import { richFieldHtmlForRender } from '../../lib/rich-html';
3
+ import { richFieldHtmlForRender } from '../../lib/rich-html.js';
4
4
  /** Renders merchant rich text using the canonical sanitize path. */
5
5
  export function SafeRichHtml({ value, fallbackPlain, className, as: Tag = 'span', }) {
6
6
  const html = useMemo(() => richFieldHtmlForRender(value, fallbackPlain), [value, fallbackPlain]);
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
3
3
  import { CheckCircle, Truck } from 'lucide-react';
4
4
  import { isAutomatedShippingEnabled } from '../../lib/shipping-settings.util.js';
5
5
  import { cn, formatCurrency } from '../../lib/utils/index.js';
6
- import { ShippingQuoteAddressForm } from './ShippingQuoteAddressForm';
7
- import { MerchantHandledDeliveryNotice } from './MerchantHandledDeliveryNotice';
6
+ import { ShippingQuoteAddressForm } from './ShippingQuoteAddressForm.js';
7
+ import { MerchantHandledDeliveryNotice } from './MerchantHandledDeliveryNotice.js';
8
8
  const SHOW_PDP_DELIVERY_INFO = false;
9
9
  export function ProductDeliveryInfoSection({ storeConfig, currency, productCurrency, productPrice, quantity, shippingAddress, updateShippingAddress, shippingMethods, isCalculatingShipping, shippingError, freeShippingEligible, freeShippingThreshold, onToast, }) {
10
10
  if (!SHOW_PDP_DELIVERY_INFO)
@@ -3,7 +3,7 @@ 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
5
  import { cn } from '../../lib/utils/index.js';
6
- import { Button } from './button';
6
+ import { Button } from './button.js';
7
7
  export const AlertModalContext = createContext(undefined);
8
8
  export function AlertModalProvider({ children }) {
9
9
  const [alert, setAlert] = useState({
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
- import { Modal } from './modal';
5
- import { Button } from './button';
4
+ import { Modal } from './modal.js';
5
+ import { Button } from './button.js';
6
6
  import { User, Mail, Phone, ShoppingBag, ShieldCheck, ArrowRight } from 'lucide-react';
7
7
  import { cn } from '../../lib/utils/index.js';
8
8
  export function GuestCheckoutModal({ isOpen, onClose, onSubmit, initialData, }) {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { cn } from '../../lib/utils/index.js';
4
- import { Skeleton } from './skeleton';
4
+ import { Skeleton } from './skeleton.js';
5
5
  export function ImageSkeleton({ className, aspectRatio = 'square' }) {
6
6
  const aspectRatioClasses = {
7
7
  square: 'aspect-square',
@@ -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 { cn } from '../../lib/utils/index.js';
5
- import { ImageSkeleton } from './image-skeleton';
5
+ import { ImageSkeleton } from './image-skeleton.js';
6
6
  const MAX_RETRIES = 2;
7
7
  const RETRY_DELAY_MS = 400;
8
8
  export function ImageWithFallback({ src, alt, className, fallbackSrc, fallbackText, skeletonAspectRatio = 'square', showSkeletonOnError = true, lazy = false, priority = false, ...props }) {
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
- import { RouteSkeletonLoader } from './route-skeleton-loader';
3
+ import { RouteSkeletonLoader } from './route-skeleton-loader.js';
4
4
  /**
5
5
  * Client component wrapper for Next.js loading.tsx files
6
6
  * Uses pathname to determine which skeleton to show
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import * as React from 'react';
4
4
  import { X } from 'lucide-react';
5
5
  import { cn } from '../../lib/utils/index.js';
6
- import { Button } from './button';
6
+ import { Button } from './button.js';
7
7
  export function Modal({ isOpen, onClose, title, children, className }) {
8
8
  const overlayRef = React.useRef(null);
9
9
  React.useEffect(() => {
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { cn } from '../../lib/utils/index.js';
4
- import { PageLoader } from './page-loader';
4
+ import { PageLoader } from './page-loader.js';
5
5
  /**
6
6
  * PageContentLoader component that displays a spinner loader
7
7
  * with minimum height for proper user feedback during backend operations.
@@ -1 +1 @@
1
- {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/product-card.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAqBjD,UAAU,gBAAgB;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAsRxG"}
1
+ {"version":3,"file":"product-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/product-card.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAqBjD,UAAU,gBAAgB;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAsRxG"}
@@ -1,5 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { hasValidCompareAtPrice } from '../../utils/price-display.js';
3
4
  import { useState } from 'react';
4
5
  import { Button } from './button.js';
5
6
  import { ImageWithFallback } from './image-with-fallback.js';
@@ -131,7 +132,7 @@ export function ProductCard({ product, storeSlug, onAddToCart, onQuickView, clas
131
132
  });
132
133
  }
133
134
  }
134
- return (_jsxs("div", { "data-product-card": true, className: cn("group relative flex flex-col h-full bg-white rounded-lg overflow-hidden border border-gray-100 hover:border-gray-300 transition-all duration-300 hover:shadow-md", className), onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [_jsxs("div", { className: "relative aspect-[3/4] bg-gray-50 overflow-hidden", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, onClick: handleProductClick, className: "block w-full h-full", children: _jsx(ImageWithFallback, { src: currentImage, alt: product.name, className: cn("w-full h-full object-cover transition-all duration-700 ease-in-out", isHovered && !hasSecondImage ? "scale-110" : "scale-100", isOutOfStock && "grayscale"), skeletonAspectRatio: "3/4", lazy: true }) }), isOutOfStock && (_jsx(OutOfStockOverlay, { badgePosition: "center" })), (isActiveLimitedTimeOffer(product) || (product.compareAtPrice != null && product.compareAtPrice > product.price) || (product.rating && product.rating >= 4.8)) && (_jsxs("div", { className: "absolute top-3 left-3 flex flex-col gap-2 z-10", children: [_jsx(LimitedTimeOfferBadge, { product: product, compact: true }), product.compareAtPrice != null && product.compareAtPrice > product.price && (_jsx("span", { className: "bg-red-500 text-white text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm", children: "Sale" })), !isActiveLimitedTimeOffer(product) && !(product.compareAtPrice != null && product.compareAtPrice > product.price) && product.rating && product.rating >= 4.8 && (_jsx("span", { className: "bg-white/90 backdrop-blur-sm text-slate-900 text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm border border-gray-100", children: "Top Rated" }))] })), _jsxs("div", { className: "absolute top-3 right-3 z-30 flex flex-col gap-2 opacity-0 group-hover:opacity-100 transform translate-x-2 group-hover:translate-x-0 transition-all duration-300", children: [_jsx("button", { type: "button", onClick: handleShareClick, className: "p-2 rounded-full bg-white/80 backdrop-blur-sm hover:bg-white transition-all duration-300 shadow-sm text-slate-600 hover:text-slate-900", title: "Share product", "aria-label": "Share product", children: _jsx(Share2, { className: "h-4 w-4" }) }), _jsx("button", { type: "button", onClick: handleWishlistClick, disabled: isLoading, className: cn("p-2 rounded-full bg-white/80 backdrop-blur-sm hover:bg-white transition-all duration-300 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed", inWishlist ? "text-red-500" : "text-slate-600 hover:text-red-500"), title: inWishlist ? "Remove from wishlist" : "Add to wishlist", children: isLoading ? (_jsx(ButtonLoader, { className: "text-red-500" })) : (_jsx(Heart, { className: cn("h-4 w-4", inWishlist && "fill-current") })) })] }), _jsxs("div", { className: "absolute bottom-4 inset-x-4 grid grid-cols-[2.5rem_1fr] gap-2 opacity-0 translate-y-4 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-300 ease-out z-20", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "h-10 w-10 flex items-center justify-center rounded-full bg-white text-slate-900 hover:bg-slate-900 hover:text-white border border-transparent shadow-lg transition-colors duration-200", title: "View Details", onClick: trackProductClick, children: _jsx(Eye, { className: "h-4 w-4" }) }), _jsxs(Button, { type: "button", variant: "outline", onClick: async (e) => {
135
+ return (_jsxs("div", { "data-product-card": true, className: cn("group relative flex flex-col h-full bg-white rounded-lg overflow-hidden border border-gray-100 hover:border-gray-300 transition-all duration-300 hover:shadow-md", className), onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [_jsxs("div", { className: "relative aspect-[3/4] bg-gray-50 overflow-hidden", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, onClick: handleProductClick, className: "block w-full h-full", children: _jsx(ImageWithFallback, { src: currentImage, alt: product.name, className: cn("w-full h-full object-cover transition-all duration-700 ease-in-out", isHovered && !hasSecondImage ? "scale-110" : "scale-100", isOutOfStock && "grayscale"), skeletonAspectRatio: "3/4", lazy: true }) }), isOutOfStock && (_jsx(OutOfStockOverlay, { badgePosition: "center" })), (isActiveLimitedTimeOffer(product) || (hasValidCompareAtPrice(product.price, product.compareAtPrice)) || (product.rating && product.rating >= 4.8)) && (_jsxs("div", { className: "absolute top-3 left-3 flex flex-col gap-2 z-10", children: [_jsx(LimitedTimeOfferBadge, { product: product, compact: true }), hasValidCompareAtPrice(product.price, product.compareAtPrice) && (_jsx("span", { className: "bg-red-500 text-white text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm", children: "Sale" })), !isActiveLimitedTimeOffer(product) && !(hasValidCompareAtPrice(product.price, product.compareAtPrice)) && product.rating && product.rating >= 4.8 && (_jsx("span", { className: "bg-white/90 backdrop-blur-sm text-slate-900 text-[10px] font-bold px-2.5 py-1 rounded-full uppercase tracking-wider shadow-sm border border-gray-100", children: "Top Rated" }))] })), _jsxs("div", { className: "absolute top-3 right-3 z-30 flex flex-col gap-2 opacity-0 group-hover:opacity-100 transform translate-x-2 group-hover:translate-x-0 transition-all duration-300", children: [_jsx("button", { type: "button", onClick: handleShareClick, className: "p-2 rounded-full bg-white/80 backdrop-blur-sm hover:bg-white transition-all duration-300 shadow-sm text-slate-600 hover:text-slate-900", title: "Share product", "aria-label": "Share product", children: _jsx(Share2, { className: "h-4 w-4" }) }), _jsx("button", { type: "button", onClick: handleWishlistClick, disabled: isLoading, className: cn("p-2 rounded-full bg-white/80 backdrop-blur-sm hover:bg-white transition-all duration-300 shadow-sm disabled:opacity-50 disabled:cursor-not-allowed", inWishlist ? "text-red-500" : "text-slate-600 hover:text-red-500"), title: inWishlist ? "Remove from wishlist" : "Add to wishlist", children: isLoading ? (_jsx(ButtonLoader, { className: "text-red-500" })) : (_jsx(Heart, { className: cn("h-4 w-4", inWishlist && "fill-current") })) })] }), _jsxs("div", { className: "absolute bottom-4 inset-x-4 grid grid-cols-[2.5rem_1fr] gap-2 opacity-0 translate-y-4 group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-300 ease-out z-20", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "h-10 w-10 flex items-center justify-center rounded-full bg-white text-slate-900 hover:bg-slate-900 hover:text-white border border-transparent shadow-lg transition-colors duration-200", title: "View Details", onClick: trackProductClick, children: _jsx(Eye, { className: "h-4 w-4" }) }), _jsxs(Button, { type: "button", variant: "outline", onClick: async (e) => {
135
136
  e.preventDefault();
136
137
  e.stopPropagation();
137
138
  if (isOutOfStock)
@@ -146,5 +147,5 @@ export function ProductCard({ product, storeSlug, onAddToCart, onQuickView, clas
146
147
  }, disabled: isOutOfStock, className: cn('h-10 w-full min-w-0 justify-center gap-2 rounded-full border-0 bg-white px-4 text-slate-900 shadow-lg hover:bg-slate-900 hover:text-white font-semibold transition-colors duration-200 [&_svg]:text-current hover:[&_svg]:text-current', isOutOfStock && 'opacity-50 cursor-not-allowed'), children: [_jsx(ShoppingCart, { className: "h-4 w-4 shrink-0", "aria-hidden": true }), "Add to cart"] })] })] }), _jsxs("div", { className: "p-4 flex flex-col flex-1 space-y-2", children: [_jsx(Link, { href: `/${storeSlug}/products/${product.slug}`, className: "group-hover:text-blue-600 transition-colors duration-300", onClick: () => {
147
148
  trackProductClick();
148
149
  startPageLoading(`/${storeSlug}/products/${product.slug}`);
149
- }, children: _jsx("h3", { className: "font-bold text-slate-900 text-base leading-tight line-clamp-1", children: product.name }) }), richFieldHasContent(product.description) && (_jsx("p", { className: "text-xs text-slate-500 line-clamp-1", children: richFieldPlainTextForDisplay(product.description) })), _jsxs("div", { className: "mt-auto pt-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-lg font-bold text-slate-900", children: formatCurrency(product.price, product.currency || 'USD') }), product.compareAtPrice != null && product.compareAtPrice > product.price && (_jsx("span", { className: "text-sm text-slate-400 line-through font-medium", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') }))] }), _jsx(ProductRating, { rating: product.rating, reviewCount: product.reviewCount, size: "sm", showReviewCount: false, className: "shrink-0" })] })] })] }));
150
+ }, children: _jsx("h3", { className: "font-bold text-slate-900 text-base leading-tight line-clamp-1", children: product.name }) }), richFieldHasContent(product.description) && (_jsx("p", { className: "text-xs text-slate-500 line-clamp-1", children: richFieldPlainTextForDisplay(product.description) })), _jsxs("div", { className: "mt-auto pt-2 flex items-center justify-between", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-lg font-bold text-slate-900", children: formatCurrency(product.price, product.currency || 'USD') }), hasValidCompareAtPrice(product.price, product.compareAtPrice) && (_jsx("span", { className: "text-sm text-slate-400 line-through font-medium", children: formatCurrency(product.compareAtPrice, product.currency || 'USD') }))] }), _jsx(ProductRating, { rating: product.rating, reviewCount: product.reviewCount, size: "sm", showReviewCount: false, className: "shrink-0" })] })] })] }));
150
151
  }
@@ -1,11 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { usePathname } from 'next/navigation';
4
- import { ProductDetailSkeleton } from './skeletons/product-detail-skeleton';
5
- import { ProductGridSkeleton } from './skeletons/product-grid-skeleton';
6
- import { CategoryGridSkeleton } from './skeletons/category-grid-skeleton';
7
- import { PageSkeleton } from './skeletons/page-skeleton';
8
- import { CheckoutSkeleton } from './skeletons/checkout-skeleton';
4
+ import { ProductDetailSkeleton } from './skeletons/product-detail-skeleton.js';
5
+ import { ProductGridSkeleton } from './skeletons/product-grid-skeleton.js';
6
+ import { CategoryGridSkeleton } from './skeletons/category-grid-skeleton.js';
7
+ import { PageSkeleton } from './skeletons/page-skeleton.js';
8
+ import { CheckoutSkeleton } from './skeletons/checkout-skeleton.js';
9
9
  import { cn } from '../../lib/utils/index.js';
10
10
  export function RouteSkeletonLoader({ className, pathname: pathnameProp }) {
11
11
  const pathnameFromHook = usePathname();
@@ -4,7 +4,7 @@ import * as React from 'react';
4
4
  import { createPortal } from 'react-dom';
5
5
  import { X } from 'lucide-react';
6
6
  import { cn } from '../../lib/utils/index.js';
7
- import { Button } from './button';
7
+ import { Button } from './button.js';
8
8
  /** Login / critical overlays — above sticky headers (z-60), search (z-100), sliders, etc. */
9
9
  const OVERLAY_ROOT_Z = 'z-[9999]';
10
10
  export function Sheet({ isOpen, onClose, title, children, side = 'right', className, style, contentClassName, backdropClassName, closeButtonClassName, ariaLabelledBy, hideBuiltInTitle = false, showCloseButton = true, onOpenAutoFocus, portal = false, overlayTier = 'default', overlayMobileMode = 'drawer', dataLoginPanel, }) {
@@ -1,5 +1,5 @@
1
- export { ProductCardSkeleton } from './product-card-skeleton';
2
- export { ProductGridSkeleton } from './product-grid-skeleton';
3
- export { ProductDetailSkeleton } from './product-detail-skeleton';
4
- export { CategoryGridSkeleton } from './category-grid-skeleton';
5
- export { PageSkeleton } from './page-skeleton';
1
+ export { ProductCardSkeleton } from './product-card-skeleton.js';
2
+ export { ProductGridSkeleton } from './product-grid-skeleton.js';
3
+ export { ProductDetailSkeleton } from './product-detail-skeleton.js';
4
+ export { CategoryGridSkeleton } from './category-grid-skeleton.js';
5
+ export { PageSkeleton } from './page-skeleton.js';
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { ProductCardSkeleton } from './product-card-skeleton';
2
+ import { ProductCardSkeleton } from './product-card-skeleton.js';
3
3
  export function ProductGridSkeleton({ count = 8, columns = 4 }) {
4
4
  const gridCols = {
5
5
  1: 'grid-cols-1',
@@ -1,4 +1,4 @@
1
- import { bookingFooterSection } from './booking-footer-section';
1
+ import { bookingFooterSection } from './booking-footer-section.js';
2
2
  const sectionStyleSupports = {
3
3
  spacing: true,
4
4
  colors: true,
@@ -1,4 +1,4 @@
1
- import { PAYAZA_BLOCK_IDS } from '../blocks/types';
1
+ import { PAYAZA_BLOCK_IDS } from '../blocks/types.js';
2
2
  const sectionStyleSupports = {
3
3
  spacing: true,
4
4
  colors: true,
@@ -1,23 +1,23 @@
1
- import { ClothingSchema } from './clothing';
2
- import { ClothingMinimalSchema } from './clothing-minimal';
3
- import { FoodSchema } from './food';
4
- import { FoodModernSchema } from './food-modern';
5
- import { ElectronicsSchema } from './electronics';
6
- import { ElectronicsGridSchema } from './electronics-grid';
7
- import { BookingSchema } from './booking';
8
- import { BookingAgendaSchema } from './booking-agenda';
9
- import { MotivationalSpeakerSchema } from './motivational-speaker';
10
- export * from './types';
11
- export * from './metadata';
12
- export * from './clothing';
13
- export * from './clothing-minimal';
14
- export * from './food';
15
- export * from './food-modern';
16
- export * from './electronics';
17
- export * from './electronics-grid';
18
- export * from './booking';
19
- export * from './booking-agenda';
20
- export * from './motivational-speaker';
1
+ import { ClothingSchema } from './clothing.js';
2
+ import { ClothingMinimalSchema } from './clothing-minimal.js';
3
+ import { FoodSchema } from './food.js';
4
+ import { FoodModernSchema } from './food-modern.js';
5
+ import { ElectronicsSchema } from './electronics.js';
6
+ import { ElectronicsGridSchema } from './electronics-grid.js';
7
+ import { BookingSchema } from './booking.js';
8
+ import { BookingAgendaSchema } from './booking-agenda.js';
9
+ import { MotivationalSpeakerSchema } from './motivational-speaker.js';
10
+ export * from './types.js';
11
+ export * from './metadata.js';
12
+ export * from './clothing.js';
13
+ export * from './clothing-minimal.js';
14
+ export * from './food.js';
15
+ export * from './food-modern.js';
16
+ export * from './electronics.js';
17
+ export * from './electronics-grid.js';
18
+ export * from './booking.js';
19
+ export * from './booking-agenda.js';
20
+ export * from './motivational-speaker.js';
21
21
  export const alignmentSchemasMap = {
22
22
  'clothing': ClothingSchema,
23
23
  'fashion-hub': ClothingSchema,
@@ -1,4 +1,4 @@
1
- import { normalizeEditorLayoutId } from '../document/layout-id';
1
+ import { normalizeEditorLayoutId } from '../document/layout-id.js';
2
2
  const _cache = {};
3
3
  const _pending = {};
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { normalizeEditorLayoutId } from '../document/layout-id';
1
+ import { normalizeEditorLayoutId } from '../document/layout-id.js';
2
2
  /**
3
3
  * Metadata for all layouts
4
4
  * Extracted from requirements JSON files
@@ -1,6 +1,6 @@
1
- import { readDataAtPath } from '../payaza-form/data-transformer';
2
- import { getPayazaBlockDefinition } from '../blocks/registry';
3
- import { resolveAlignmentFieldLeaf } from './resolve-field';
1
+ import { readDataAtPath } from '../payaza-form/data-transformer.js';
2
+ import { getPayazaBlockDefinition } from '../blocks/registry.js';
3
+ import { resolveAlignmentFieldLeaf } from './resolve-field.js';
4
4
  function alignmentSchemaToMeta(leaf) {
5
5
  const label = leaf.label || leaf._label || 'Field';
6
6
  const description = leaf.description || leaf._description || undefined;
@@ -1,3 +1,3 @@
1
- export * from './types';
2
- export * from './registry';
3
- export * from './defaults/clothing-minimal-home';
1
+ export * from './types.js';
2
+ export * from './registry.js';
3
+ export * from './defaults/clothing-minimal-home.js';
@@ -1,6 +1,6 @@
1
- import { deepClone } from '../../lib/utils';
2
- import { hasClothingMinimalMerchantSectionSignal } from '../../lib/layout-field-normalize';
3
- import { defaultClothingMinimalAboutBlocks, defaultClothingMinimalCategoriesBlocks, defaultClothingMinimalFeaturedProductsBlocks, defaultClothingMinimalFeaturesBlocks, defaultClothingMinimalHeroBlocks, defaultClothingMinimalPromoBlocks, getDefaultBlocksForClothingMinimalHomeSection, } from './defaults/clothing-minimal-home';
1
+ import { deepClone } from '../../lib/utils/index.js';
2
+ import { hasClothingMinimalMerchantSectionSignal } from '../../lib/layout-field-normalize.js';
3
+ import { defaultClothingMinimalAboutBlocks, defaultClothingMinimalCategoriesBlocks, defaultClothingMinimalFeaturedProductsBlocks, defaultClothingMinimalFeaturesBlocks, defaultClothingMinimalHeroBlocks, defaultClothingMinimalPromoBlocks, getDefaultBlocksForClothingMinimalHomeSection, } from './defaults/clothing-minimal-home.js';
4
4
  function richOrString(v) {
5
5
  if (v == null)
6
6
  return '';
@@ -1,5 +1,5 @@
1
- import { getPayazaBlockDefinition } from './registry';
2
- import { readDataAtPath } from '../payaza-form/data-transformer';
1
+ import { getPayazaBlockDefinition } from './registry.js';
2
+ import { readDataAtPath } from '../payaza-form/data-transformer.js';
3
3
  const ARRAY_FIELD_KEY_SET = new Set([
4
4
  'sliders',
5
5
  'items',
@@ -1,4 +1,4 @@
1
- import { deepClone } from '../../lib/utils';
1
+ import { deepClone } from '../../lib/utils/index.js';
2
2
  const defs = {
3
3
  'payaza/badge': {
4
4
  name: 'payaza/badge',
@@ -1,7 +1,7 @@
1
- import { deepMergeLayoutPayload } from '../../lib/layout-config-hydration';
2
- import { EDITOR_DOC_VERSION, SNAPSHOT_CONTENT_KEY } from './constants';
3
- import { SHOPAZA_BLOCK_TYPES, SHOPAZA_DOCUMENT_ROOT_ID, applySectionContentEntriesToStoreConfig, applyTemplateBlocksToStoreConfig, buildTemplateFromOverlay, hasStructuredBlockTree, mergeSectionEntriesIntoContent, } from './block-tree';
4
- import { validateEditorEnvelope } from './validate';
1
+ import { deepMergeLayoutPayload } from '../../lib/layout-config-hydration.js';
2
+ import { EDITOR_DOC_VERSION, SNAPSHOT_CONTENT_KEY } from './constants.js';
3
+ import { SHOPAZA_BLOCK_TYPES, SHOPAZA_DOCUMENT_ROOT_ID, applySectionContentEntriesToStoreConfig, applyTemplateBlocksToStoreConfig, buildTemplateFromOverlay, hasStructuredBlockTree, mergeSectionEntriesIntoContent, } from './block-tree.js';
4
+ import { validateEditorEnvelope } from './validate.js';
5
5
  function nowIso() {
6
6
  return new Date().toISOString();
7
7
  }
@@ -1,4 +1,4 @@
1
- import { deepClone } from '../../lib/utils';
1
+ import { deepClone } from '../../lib/utils/index.js';
2
2
  /** Document root — one tree per storefront layout JSON. */
3
3
  export const SHOPAZA_DOCUMENT_ROOT_ID = 'shopaza:document:root';
4
4
  export const SHOPAZA_BLOCK_TYPES = {
@@ -1,6 +1,6 @@
1
- export * from './types';
2
- export * from './constants';
3
- export * from './validate';
4
- export * from './adapter';
5
- export * from './layout-id';
6
- export * from './block-tree';
1
+ export * from './types.js';
2
+ export * from './constants.js';
3
+ export * from './validate.js';
4
+ export * from './adapter.js';
5
+ export * from './layout-id.js';
6
+ export * from './block-tree.js';
@@ -1,4 +1,4 @@
1
- import { EDITOR_DOC_VERSION, SUPPORTED_LAYOUT_TYPES, SNAPSHOT_CONTENT_KEY } from './constants';
1
+ import { EDITOR_DOC_VERSION, SUPPORTED_LAYOUT_TYPES, SNAPSHOT_CONTENT_KEY } from './constants.js';
2
2
  function push(diagnostics, d) {
3
3
  diagnostics.push(d);
4
4
  }