storefront-layouts 1.0.15 → 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.
- package/dist/components/auth/LoginForm.js +1 -1
- package/dist/components/auth/LoginSheet.js +1 -1
- package/dist/components/auth/login-form-core.js +2 -2
- package/dist/components/auth/login-sheet-registry.js +2 -2
- package/dist/components/auth/login-sheet-themes/booking-agenda.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/booking.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/clothing-minimal.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/clothing.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/electronics-grid.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/electronics.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/food-modern.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/food.theme.js +1 -1
- package/dist/components/auth/login-sheet-themes/index.js +9 -9
- package/dist/components/auth/login-sheet-themes/motivational-speaker.theme.js +1 -1
- package/dist/components/auth/login-sheets/StoreLoginSheetShell.js +3 -3
- package/dist/components/categories/category-masonry-grid.js +3 -3
- package/dist/components/learning/CertificateViewer.js +1 -1
- package/dist/components/rich-text/CategoryDescription.js +2 -2
- package/dist/components/rich-text/ProductDescription.js +2 -2
- package/dist/components/rich-text/RichTextExcerpt.js +1 -1
- package/dist/components/rich-text/SafeRichHtml.js +1 -1
- package/dist/components/shipping/ProductDeliveryInfoSection.js +2 -2
- package/dist/components/ui/alert-modal.js +1 -1
- package/dist/components/ui/guest-checkout-modal.js +2 -2
- package/dist/components/ui/image-skeleton.js +1 -1
- package/dist/components/ui/image-with-fallback.js +1 -1
- package/dist/components/ui/loading-skeleton-wrapper.js +1 -1
- package/dist/components/ui/modal.js +1 -1
- package/dist/components/ui/page-content-loader.js +1 -1
- package/dist/components/ui/product-card.d.ts.map +1 -1
- package/dist/components/ui/product-card.js +3 -2
- package/dist/components/ui/route-skeleton-loader.js +5 -5
- package/dist/components/ui/sheet.js +1 -1
- package/dist/components/ui/skeletons/index.js +5 -5
- package/dist/components/ui/skeletons/product-grid-skeleton.js +1 -1
- package/dist/editor/alignment-schemas/booking.js +1 -1
- package/dist/editor/alignment-schemas/clothing-minimal.js +1 -1
- package/dist/editor/alignment-schemas/index.js +20 -20
- package/dist/editor/alignment-schemas/lazy-loader.js +1 -1
- package/dist/editor/alignment-schemas/metadata.js +1 -1
- package/dist/editor/alignment-schemas/resolve-canvas-inspector-leaf.js +3 -3
- package/dist/editor/blocks/index.js +3 -3
- package/dist/editor/blocks/migrate-clothing-minimal.js +3 -3
- package/dist/editor/blocks/nav-outline-utils.js +2 -2
- package/dist/editor/blocks/registry.js +1 -1
- package/dist/editor/document/adapter.js +4 -4
- package/dist/editor/document/block-tree.js +1 -1
- package/dist/editor/document/index.js +6 -6
- package/dist/editor/document/validate.js +1 -1
- package/dist/editor/index.js +12 -12
- package/dist/editor/layout-content-loader.js +3 -3
- package/dist/editor/payaza-form/ArrayItemManager.js +2 -2
- package/dist/editor/payaza-form/EditorCanvasPreview.js +4 -4
- package/dist/editor/payaza-form/FieldRenderer.js +17 -17
- package/dist/editor/payaza-form/IframePreviewMessageBridge.js +3 -3
- package/dist/editor/payaza-form/PayazaFormEditor.js +29 -29
- package/dist/editor/payaza-form/PayazaFormEditorFullPage.js +2 -2
- package/dist/editor/payaza-form/SliderArrayEditor.js +2 -2
- package/dist/editor/payaza-form/components/ArrayField.js +1 -1
- package/dist/editor/payaza-form/components/BlockStylesInspector.js +1 -1
- package/dist/editor/payaza-form/components/BlocksField.js +8 -8
- package/dist/editor/payaza-form/components/ButtonField.js +3 -3
- package/dist/editor/payaza-form/components/CanvasGranularInspector.js +11 -11
- package/dist/editor/payaza-form/components/IconField.js +2 -2
- package/dist/editor/payaza-form/components/ImageField.js +1 -1
- package/dist/editor/payaza-form/components/NumberField.js +1 -1
- package/dist/editor/payaza-form/components/RichTextField.js +2 -2
- package/dist/editor/payaza-form/components/SectionSchemaInspector.js +3 -3
- package/dist/editor/payaza-form/components/StarRatingField.js +1 -1
- package/dist/editor/payaza-form/components/TextField.js +1 -1
- package/dist/editor/payaza-form/data-merger.js +6 -6
- package/dist/editor/payaza-form/data-transformer.js +3 -3
- package/dist/editor/payaza-form/engine.js +1 -1
- package/dist/editor/payaza-form/examples/custom-widgets.example.js +1 -1
- package/dist/editor/payaza-form/index.js +8 -8
- package/dist/editor/payaza-form/layout-loader.js +2 -2
- package/dist/editor/payaza-form/preview-message-handler.js +3 -3
- package/dist/editor/payaza-form/schema-bridge.js +3 -3
- package/dist/editor/payaza-form/widget-registry.js +1 -1
- package/dist/editor/shared/BlockOutlineTree.js +1 -1
- package/dist/editor/shared/EditorHeader.js +1 -1
- package/dist/editor/shared/EditorNavigator.js +1 -1
- package/dist/editor/shared/IframePreview.js +6 -6
- package/dist/editor/shared/InlineCanvasPreview.js +7 -7
- package/dist/editor/shared/LayoutRenderer.js +1 -1
- package/dist/editor/shared/ResizableSidebar.js +1 -1
- package/dist/editor/shared/index.js +7 -7
- package/dist/hooks/use-product-reviews.js +1 -1
- package/dist/hooks/usePreviewSlideSync.js +1 -1
- package/dist/index.js +143 -143
- package/dist/layouts/booking/components/BookingHomePage.js +1 -1
- package/dist/layouts/booking/components/BookingMultilineHeading.js +1 -1
- package/dist/layouts/booking/components/BookingTestimonialCard.js +1 -1
- package/dist/layouts/booking/components/booking-footer-defaults.js +2 -2
- package/dist/layouts/booking/index.js +8 -8
- package/dist/layouts/booking/pages/BookPage.js +1 -1
- package/dist/layouts/booking/pages/CategoriesPage.js +2 -2
- package/dist/layouts/booking/pages/ProductDetailPage.js +3 -3
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +3 -3
- package/dist/layouts/booking-agenda/index.js +8 -8
- package/dist/layouts/booking-agenda/pages/CategoriesPage.js +1 -1
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +3 -3
- package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -1
- package/dist/layouts/clothing/components/ClothingHomePage.js +13 -12
- package/dist/layouts/clothing/index.js +7 -7
- package/dist/layouts/clothing/pages/AboutPage.js +4 -4
- package/dist/layouts/clothing/pages/CategoriesPage.js +9 -9
- package/dist/layouts/clothing/pages/CategoryPage.js +7 -7
- package/dist/layouts/clothing/pages/ContactPage.js +3 -3
- package/dist/layouts/clothing/pages/ProductDetailPage.js +24 -24
- package/dist/layouts/clothing/pages/ProductsPage.js +17 -17
- package/dist/layouts/clothing/payaza-bindings.js +2 -2
- package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/components/ClothingHomePageMinimal.js +11 -10
- package/dist/layouts/clothing-minimal/components/clothing-minimal-block-render.js +7 -7
- package/dist/layouts/clothing-minimal/index.js +7 -7
- package/dist/layouts/clothing-minimal/pages/AboutPage.js +3 -3
- package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +8 -8
- package/dist/layouts/clothing-minimal/pages/CategoryPage.js +7 -7
- package/dist/layouts/clothing-minimal/pages/ContactPage.js +3 -3
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +24 -24
- package/dist/layouts/clothing-minimal/pages/ProductsPage.js +18 -18
- package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +3 -3
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.d.ts.map +1 -1
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +4 -3
- package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -1
- package/dist/layouts/electronics/components/ElectronicsHomePage.js +5 -4
- package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +2 -2
- package/dist/layouts/electronics/components/ElectronicsProductsPage.js +4 -4
- package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +1 -1
- package/dist/layouts/electronics/index.js +18 -18
- package/dist/layouts/electronics/pages/CategoriesPage.js +1 -1
- package/dist/layouts/electronics/pages/ProductDetailPage.js +3 -3
- package/dist/layouts/electronics/pages/ProductsPage.js +2 -2
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +4 -3
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +2 -2
- package/dist/layouts/electronics-grid/index.js +14 -14
- package/dist/layouts/electronics-grid/pages/CategoriesPage.js +1 -1
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +3 -3
- package/dist/layouts/electronics-grid/pages/ProductsPage.js +2 -2
- package/dist/layouts/food/components/FoodHomePage.js +1 -1
- package/dist/layouts/food/index.js +8 -8
- package/dist/layouts/food/pages/CategoriesPage.js +2 -2
- package/dist/layouts/food/pages/CategoryPage.js +2 -2
- package/dist/layouts/food/pages/ProductDetailPage.js +4 -4
- package/dist/layouts/food/pages/ProductsPage.js +2 -2
- package/dist/layouts/food-modern/components/FoodHomePageModern.js +3 -3
- package/dist/layouts/food-modern/index.js +8 -8
- package/dist/layouts/food-modern/pages/CategoriesPage.js +1 -1
- package/dist/layouts/food-modern/pages/CategoryPage.js +2 -2
- package/dist/layouts/food-modern/pages/ProductDetailPage.js +3 -3
- package/dist/layouts/food-modern/pages/ProductsPage.js +2 -2
- package/dist/layouts/motivational-speaker/components/MotivationalSpeakerPageWrapper.js +1 -1
- package/dist/layouts/motivational-speaker/index.js +9 -9
- package/dist/layouts/motivational-speaker/pages/ProductsPage.js +2 -2
- package/dist/layouts/shared/components/BaseStoreLayout.js +9 -9
- package/dist/layouts/shared/components/GenericPageWrapper.js +3 -3
- package/dist/layouts/shared/components/PdpVariationSelectors.js +2 -2
- package/dist/layouts/shared/components/PromoBanner.js +4 -4
- package/dist/layouts/shared/components/StoreCartSheet.js +9 -9
- package/dist/layouts/shared/components/StoreFooter.js +9 -9
- package/dist/layouts/shared/components/StoreHeader.js +8 -8
- package/dist/layouts/shared/components/headers/BookingAgendaSidebar.js +2 -2
- package/dist/layouts/shared/components/headers/ClothingMinimalHeader.js +9 -9
- package/dist/layouts/shared/components/headers/FoodModernHeader.js +7 -7
- package/dist/layouts/shared/index.js +22 -22
- package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/CheckoutPage.js +72 -13
- package/dist/layouts/shared/pages/StoreMaintenanceScreen.js +2 -2
- package/dist/layouts/shared/wrappers/BookingAgendaLayout.js +16 -16
- package/dist/layouts/shared/wrappers/ClothingLayout.js +8 -8
- package/dist/layouts/shared/wrappers/ClothingMinimalLayout.js +7 -7
- package/dist/layouts/shared/wrappers/ElectronicsLayout.js +5 -5
- package/dist/layouts/shared/wrappers/FoodModernLayout.js +6 -6
- package/dist/layouts/shared/wrappers/MotivationalLayout.js +9 -9
- package/dist/layouts/shared/wrappers/StandardLayout.js +8 -8
- package/dist/lib/auth-context.js +2 -2
- package/dist/lib/layout-config-hydration.js +2 -2
- package/dist/lib/product-variation-utils.js +1 -1
- package/dist/lib/services/analytics.service.js +1 -1
- package/dist/lib/services/auth.service.js +1 -1
- package/dist/lib/services/booking.service.js +1 -1
- package/dist/lib/services/category.service.js +1 -1
- package/dist/lib/services/checkout.service.js +1 -1
- package/dist/lib/services/contact.service.js +1 -1
- package/dist/lib/services/customer.service.js +1 -1
- package/dist/lib/services/fees.service.js +1 -1
- package/dist/lib/services/index.js +13 -13
- package/dist/lib/services/location.service.js +1 -1
- package/dist/lib/services/order.service.js +1 -1
- package/dist/lib/services/payment.service.js +1 -1
- package/dist/lib/services/product.service.js +1 -1
- package/dist/lib/services/promo.service.js +1 -1
- package/dist/lib/services/review.service.js +1 -1
- package/dist/lib/services/service.service.js +1 -1
- package/dist/lib/services/shipping.service.d.ts +6 -0
- package/dist/lib/services/shipping.service.d.ts.map +1 -1
- package/dist/lib/services/shipping.service.js +11 -1
- package/dist/lib/services/store.service.js +1 -1
- package/dist/lib/store-config-utils.js +7 -7
- package/dist/lib/store-config.js +1 -1
- package/dist/lib/store-context.js +12 -12
- package/dist/lib/utils/asset-helpers.js +2 -2
- package/dist/lib/utils/editor-preview.js +3 -3
- package/dist/lib/utils/index.js +3 -3
- package/dist/lib/utils/product-images.js +1 -1
- package/dist/lib/utils/product-share.js +1 -1
- package/dist/lib/utils/url-helpers.js +1 -1
- package/dist/preview/LayoutPreview.js +5 -5
- package/dist/preview/PreviewRouter.js +2 -2
- package/dist/preview/canvas/PreviewCanvasEnhancer.js +8 -8
- package/dist/preview/canvas/preview-flush-await.js +1 -1
- package/dist/preview/canvas/preview-isolation.js +1 -1
- package/dist/preview/canvas/preview-route.js +2 -2
- package/dist/preview/index.js +4 -4
- 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":"
|
|
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.
|
|
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.
|
|
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,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,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,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,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';
|