storefront-layouts 1.0.16 → 1.0.18
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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/AboutPage.js +16 -7
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/AboutPage.js +16 -7
- 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.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/AboutPage.js +11 -5
- 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.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/AboutPage.js +12 -5
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/AboutPage.js +7 -2
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/AboutPage.js +7 -2
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/AboutPage.js +5 -1
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/AboutPage.js +10 -3
- 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/AboutPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/AboutPage.js +9 -2
- package/dist/layouts/motivational-speaker/pages/ProductsPage.js +2 -2
- package/dist/layouts/shared/about-story-media.d.ts +27 -0
- package/dist/layouts/shared/about-story-media.d.ts.map +1 -0
- package/dist/layouts/shared/about-story-media.js +46 -0
- 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/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.js +1 -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
|
@@ -7,6 +7,7 @@ import { useStore } from '../../../lib/store-context.js';
|
|
|
7
7
|
import Image from 'next/image';
|
|
8
8
|
import { SafeRichHtml } from '../../../components/rich-text/SafeRichHtml.js';
|
|
9
9
|
import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.js';
|
|
10
|
+
import { storySectionImage, storySectionLabel, storySectionTitle, storyTeamSubtitle, storyTeamTitle, } from '../../shared/about-story-media.js';
|
|
10
11
|
export function AboutPage({ storeConfig: initialConfig }) {
|
|
11
12
|
const { store } = useStore();
|
|
12
13
|
const storeConfig = store || initialConfig;
|
|
@@ -18,7 +19,13 @@ export function AboutPage({ storeConfig: initialConfig }) {
|
|
|
18
19
|
const pageTitle = aboutConfig?.hero?.title || aboutConfig?.title || "Empowering Minds, Changing Lives.";
|
|
19
20
|
const pageContent = aboutConfig?.story?.content || aboutConfig?.content || storeConfig.description;
|
|
20
21
|
const missionStatement = aboutConfig?.hero?.missionStatement || aboutConfig?.missionStatement;
|
|
21
|
-
const
|
|
22
|
+
const storyConfig = aboutConfig?.story || aboutConfig;
|
|
23
|
+
const galleryImages = storyConfig?.gallerySection || aboutConfig?.gallerySection;
|
|
24
|
+
const storyImage = storySectionImage(storyConfig);
|
|
25
|
+
const storyLabel = storySectionLabel(storyConfig);
|
|
26
|
+
const storyTitle = storySectionTitle(storyConfig);
|
|
27
|
+
const storyCaptionTitle = storyTeamTitle(storyConfig);
|
|
28
|
+
const storyCaptionSubtitle = storyTeamSubtitle(storyConfig);
|
|
22
29
|
const values = [
|
|
23
30
|
{
|
|
24
31
|
icon: Award,
|
|
@@ -41,7 +48,7 @@ export function AboutPage({ storeConfig: initialConfig }) {
|
|
|
41
48
|
description: "Success built on integrity, balance, and sustainable high performance."
|
|
42
49
|
}
|
|
43
50
|
];
|
|
44
|
-
return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx(SafeRichHtml, { value: missionStatement || storeConfig.description, as: "div", className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light [&_p]:mb-0" })] }) }) })] }), _jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src:
|
|
51
|
+
return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [_jsxs("section", { "data-section": "hero", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-r from-black/80 via-black/50 to-transparent" })] }), _jsx("div", { className: "absolute inset-0 flex items-center", children: _jsx("div", { className: "container mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "max-w-3xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/10 backdrop-blur-md border border-white/20 text-white text-sm font-medium mb-6", children: [_jsx("span", { className: "w-2 h-2 rounded-full bg-white animate-pulse" }), "Est. 2024"] }), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: pageTitle }), _jsx(SafeRichHtml, { value: missionStatement || storeConfig.description, as: "div", className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light [&_p]:mb-0" })] }) }) })] }), _jsxs("section", { "data-section": "story", className: "py-24 px-4 sm:px-6 lg:px-8 relative", children: [_jsx("div", { className: "absolute top-0 right-0 -mt-24 -mr-24 w-96 h-96 bg-gray-50 rounded-full blur-3xl -z-10" }), _jsx("div", { className: "container mx-auto max-w-7xl", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [galleryImages && galleryImages.length > 0 ? (_jsx("div", { className: "grid grid-cols-2 gap-4", children: galleryImages.slice(0, 4).map((img, i) => (_jsx("div", { className: `relative overflow-hidden rounded-2xl shadow-lg ${i === 0 ? 'col-span-2 aspect-[16/9]' : 'aspect-square'}`, children: _jsx(Image, { src: img.image, alt: img.caption || "Gallery Image", fill: true, className: "w-full h-full object-cover hover:scale-110 transition-transform duration-500" }) }, i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", children: [_jsx(Image, { src: storyImage, alt: storyCaptionTitle, fill: true, className: "w-full h-full object-cover" }), _jsx("div", { className: "absolute inset-0 bg-gradient-to-t from-black/60 via-transparent to-transparent opacity-60" }), _jsxs("div", { className: "absolute bottom-8 left-8 text-white", children: [_jsx("p", { className: "font-bold text-lg", children: storyCaptionTitle }), _jsx("p", { className: "text-white/80 text-sm", children: storyCaptionSubtitle })] })] })), _jsx("div", { className: "absolute -bottom-6 -right-6 w-24 h-24 bg-white rounded-2xl shadow-xl flex items-center justify-center p-4 animate-bounce duration-[3000ms]", children: _jsx(Heart, { className: "w-10 h-10", style: { color: primaryColor, fill: primaryColor } }) })] }), _jsxs("div", { className: "space-y-10", children: [_jsxs("div", { children: [_jsx("span", { className: "text-sm font-bold uppercase tracking-widest mb-3 block", style: { color: primaryColor }, children: "Who We Are" }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: "Our Journey" }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", children: [pageContent?.split('\n').map((paragraph, idx) => (_jsx("p", { children: paragraph }, idx))), !pageContent && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["Founded with a bold vision to redefine excellence in the ", _jsx("span", { className: "font-semibold text-gray-900", children: storeConfig.type }), " industry, ", storeConfig.name, " has grown from a small passion project into a beloved brand. We believe in the power of quality, innovation, and community."] }), _jsx("p", { children: "Every day, we strive to bring you the best products, curated with care and delivered with a smile. Our team is dedicated to ensuring that your experience with us is nothing short of exceptional." })] }))] })] }), _jsx("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: values.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", children: [_jsx("div", { className: "flex-shrink-0", children: _jsx("div", { className: "w-14 h-14 rounded-2xl flex items-center justify-center transition-colors group-hover:bg-gray-100", style: { backgroundColor: `${primaryColor}10` }, children: _jsx(item.icon, { className: "h-7 w-7 transition-transform group-hover:scale-110", style: { color: primaryColor } }) }) }), _jsxs("div", { children: [_jsx("h4", { className: "font-bold text-gray-900 mb-2 text-lg", children: item.title }), _jsx(RichTextExcerpt, { value: item.description, as: "p", className: "text-gray-600 text-sm leading-relaxed" })] })] }, idx))) })] })] }) })] }), _jsxs("section", { "data-section": "stats", className: "py-20 relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 opacity-10", children: _jsx(DotPattern, { color: primaryColor, cx: 2, cy: 2, cr: 2, width: 30, height: 30 }) }), _jsx("div", { className: "absolute inset-0", style: { backgroundColor: `${secondaryColor}15` } }), _jsx("div", { className: "container mx-auto px-4 relative z-10", children: _jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8 md:gap-12", children: [
|
|
45
52
|
{ label: "Students Empowered", value: "25k+" },
|
|
46
53
|
{ label: "Hours of Content", value: "500+" },
|
|
47
54
|
{ label: "Global Events", value: "100+" },
|
|
@@ -20,12 +20,12 @@ import { filterActiveProducts } from '../../../lib/utils/index.js';
|
|
|
20
20
|
import { getAllCategoryIds, flattenCategoryTree, buildCategoryTree } from '../../../lib/utils/category-tree.js';
|
|
21
21
|
import { getBannerImage, getLayoutText } from '../../../lib/utils/asset-helpers.js';
|
|
22
22
|
import { shouldUseAPI } from '../../../lib/utils/demo-detection.js';
|
|
23
|
-
import { productCategoryFilterChipClass } from '../../shared/product-category-filter-chip';
|
|
23
|
+
import { productCategoryFilterChipClass } from '../../shared/product-category-filter-chip.js';
|
|
24
24
|
import { useCatalogPriceRange } from '../../../hooks/use-catalog-price-range.js';
|
|
25
25
|
import { getApiPriceFilterActive, isWithinActivePriceRange } from '../../../lib/utils/catalog-price-bounds.js';
|
|
26
26
|
import { buildFilteredProductQuery, getFilteredProductQueryKey, productMatchesCategoryIds, productMatchesCategorySlug, } from '../../../lib/utils/filtered-product-query.js';
|
|
27
27
|
import { transformProductToStoreProduct } from '../../../lib/store-config-utils.js';
|
|
28
|
-
import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection';
|
|
28
|
+
import { ProductPriceFilterSection } from '../../shared/components/ProductPriceFilterSection.js';
|
|
29
29
|
function ProductsPageContent({ storeConfig }) {
|
|
30
30
|
const searchParams = useSearchParams();
|
|
31
31
|
const categoryParam = searchParams.get('category');
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const DEFAULT_ABOUT_STORY_IMAGE = "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop";
|
|
2
|
+
export type AboutStoryConfig = {
|
|
3
|
+
storyImage?: unknown;
|
|
4
|
+
teamImage?: unknown;
|
|
5
|
+
image?: unknown;
|
|
6
|
+
teamTitle?: unknown;
|
|
7
|
+
teamSubtitle?: unknown;
|
|
8
|
+
teamBadgeTitle?: unknown;
|
|
9
|
+
teamBadgeSubtitle?: unknown;
|
|
10
|
+
galleryOverlayTitle?: unknown;
|
|
11
|
+
galleryOverlaySubtitle?: unknown;
|
|
12
|
+
teamCaption?: unknown;
|
|
13
|
+
teamSubCaption?: unknown;
|
|
14
|
+
sectionLabel?: unknown;
|
|
15
|
+
label?: unknown;
|
|
16
|
+
subLabel?: unknown;
|
|
17
|
+
title?: unknown;
|
|
18
|
+
sectionHeading?: unknown;
|
|
19
|
+
heading?: unknown;
|
|
20
|
+
} | null | undefined;
|
|
21
|
+
export declare function resolveLayoutImageUrl(value: unknown): string;
|
|
22
|
+
export declare function storySectionImage(config: AboutStoryConfig, fallback?: string): string;
|
|
23
|
+
export declare function storySectionLabel(config: AboutStoryConfig, fallback?: string): string;
|
|
24
|
+
export declare function storySectionTitle(config: AboutStoryConfig, fallback?: string): string;
|
|
25
|
+
export declare function storyTeamTitle(config: AboutStoryConfig, fallback?: string): string;
|
|
26
|
+
export declare function storyTeamSubtitle(config: AboutStoryConfig, fallback?: string): string;
|
|
27
|
+
//# sourceMappingURL=about-story-media.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"about-story-media.d.ts","sourceRoot":"","sources":["../../../src/layouts/shared/about-story-media.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB,kGAA8B,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,IAAI,GAAG,SAAS,CAAC;AAErB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAe5D;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,MAAkC,GAC3C,MAAM,CAMR;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,SAAe,GACtB,MAAM,CAKR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,SAAgB,GACvB,MAAM,CAKR;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,SAAmB,GAC1B,MAAM,CAQR;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,SAAyC,GAChD,MAAM,CAQR"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BOOKING_DEFAULT_STORY_IMAGE } from '../booking/components/booking-about-defaults.js';
|
|
2
|
+
export const DEFAULT_ABOUT_STORY_IMAGE = BOOKING_DEFAULT_STORY_IMAGE;
|
|
3
|
+
export function resolveLayoutImageUrl(value) {
|
|
4
|
+
if (value == null)
|
|
5
|
+
return '';
|
|
6
|
+
if (typeof value === 'string') {
|
|
7
|
+
return value.trim();
|
|
8
|
+
}
|
|
9
|
+
if (typeof value === 'object') {
|
|
10
|
+
const record = value;
|
|
11
|
+
for (const key of ['url', 'src', 'imageUrl', 'image']) {
|
|
12
|
+
const candidate = record[key];
|
|
13
|
+
if (typeof candidate === 'string' && candidate.trim()) {
|
|
14
|
+
return candidate.trim();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
export function storySectionImage(config, fallback = DEFAULT_ABOUT_STORY_IMAGE) {
|
|
21
|
+
const resolved = resolveLayoutImageUrl(config?.storyImage) ||
|
|
22
|
+
resolveLayoutImageUrl(config?.teamImage) ||
|
|
23
|
+
resolveLayoutImageUrl(config?.image);
|
|
24
|
+
return resolved || fallback;
|
|
25
|
+
}
|
|
26
|
+
function readText(value, fallback) {
|
|
27
|
+
return typeof value === 'string' && value.trim() ? value.trim() : fallback;
|
|
28
|
+
}
|
|
29
|
+
export function storySectionLabel(config, fallback = 'Who We Are') {
|
|
30
|
+
return readText(config?.sectionLabel ?? config?.label ?? config?.subLabel, fallback);
|
|
31
|
+
}
|
|
32
|
+
export function storySectionTitle(config, fallback = 'Our Journey') {
|
|
33
|
+
return readText(config?.title ?? config?.sectionHeading ?? config?.heading, fallback);
|
|
34
|
+
}
|
|
35
|
+
export function storyTeamTitle(config, fallback = 'The Dream Team') {
|
|
36
|
+
return readText(config?.teamTitle ??
|
|
37
|
+
config?.teamBadgeTitle ??
|
|
38
|
+
config?.galleryOverlayTitle ??
|
|
39
|
+
config?.teamCaption, fallback);
|
|
40
|
+
}
|
|
41
|
+
export function storyTeamSubtitle(config, fallback = 'Working together to serve you better') {
|
|
42
|
+
return readText(config?.teamSubtitle ??
|
|
43
|
+
config?.teamBadgeSubtitle ??
|
|
44
|
+
config?.galleryOverlaySubtitle ??
|
|
45
|
+
config?.teamSubCaption, fallback);
|
|
46
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { isBookingAgendaStoreRoot } from '../../../lib/layout-route-utils';
|
|
4
|
-
import { StandardLayout } from '../wrappers/StandardLayout';
|
|
5
|
-
import { ClothingLayout } from '../wrappers/ClothingLayout';
|
|
6
|
-
import { ClothingMinimalLayout } from '../wrappers/ClothingMinimalLayout';
|
|
7
|
-
import { FoodModernLayout } from '../wrappers/FoodModernLayout';
|
|
8
|
-
import { BookingAgendaLayout } from '../wrappers/BookingAgendaLayout';
|
|
9
|
-
import { ElectronicsLayout } from '../wrappers/ElectronicsLayout';
|
|
10
|
-
import { MotivationalLayout } from '../wrappers/MotivationalLayout';
|
|
11
|
-
import { LoginSheet } from '../../../components/auth/LoginSheet';
|
|
3
|
+
import { isBookingAgendaStoreRoot } from '../../../lib/layout-route-utils.js';
|
|
4
|
+
import { StandardLayout } from '../wrappers/StandardLayout.js';
|
|
5
|
+
import { ClothingLayout } from '../wrappers/ClothingLayout.js';
|
|
6
|
+
import { ClothingMinimalLayout } from '../wrappers/ClothingMinimalLayout.js';
|
|
7
|
+
import { FoodModernLayout } from '../wrappers/FoodModernLayout.js';
|
|
8
|
+
import { BookingAgendaLayout } from '../wrappers/BookingAgendaLayout.js';
|
|
9
|
+
import { ElectronicsLayout } from '../wrappers/ElectronicsLayout.js';
|
|
10
|
+
import { MotivationalLayout } from '../wrappers/MotivationalLayout.js';
|
|
11
|
+
import { LoginSheet } from '../../../components/auth/LoginSheet.js';
|
|
12
12
|
import { usePathname, useSearchParams } from 'next/navigation';
|
|
13
13
|
export function BaseStoreLayout({ children, storeConfig }) {
|
|
14
14
|
const pathname = usePathname();
|
|
@@ -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
|
-
import { StoreHeader } from '../../shared/components/StoreHeader';
|
|
4
|
-
import { StoreFooter } from '../../shared/components/StoreFooter';
|
|
5
|
-
import { useStore } from '../../../lib/store-context';
|
|
3
|
+
import { StoreHeader } from '../../shared/components/StoreHeader.js';
|
|
4
|
+
import { StoreFooter } from '../../shared/components/StoreFooter.js';
|
|
5
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
6
6
|
export function GenericPageWrapper({ children, storeConfig: initialConfig }) {
|
|
7
7
|
const { store } = useStore();
|
|
8
8
|
const storeConfig = store || initialConfig;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { getSortedVariationOptionKeys, getVariationAttributeLabel, } from '../../../lib/product-variation-utils';
|
|
4
|
-
import { PdpColorSwatch } from './PdpColorSwatch';
|
|
3
|
+
import { getSortedVariationOptionKeys, getVariationAttributeLabel, } from '../../../lib/product-variation-utils.js';
|
|
4
|
+
import { PdpColorSwatch } from './PdpColorSwatch.js';
|
|
5
5
|
const DEFAULT_COLOR_SWATCHES = {
|
|
6
6
|
White: '#FFFFFF',
|
|
7
7
|
white: '#FFFFFF',
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import Link from 'next/link';
|
|
4
|
-
import { Button } from '../../../components/ui/button';
|
|
5
|
-
import { cn } from '../../../lib/utils';
|
|
6
|
-
import { useStore } from '../../../lib/store-context';
|
|
7
|
-
import { toStoreHref } from '../../../lib/utils/url-helpers';
|
|
4
|
+
import { Button } from '../../../components/ui/button.js';
|
|
5
|
+
import { cn } from '../../../lib/utils/index.js';
|
|
6
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
7
|
+
import { toStoreHref } from '../../../lib/utils/url-helpers.js';
|
|
8
8
|
export function PromoBanner({ config, layoutStyle = 'default', className, storeSlug: storeSlugProp }) {
|
|
9
9
|
const { store } = useStore();
|
|
10
10
|
if (!config?.show)
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { ShoppingBag, Minus, Plus, Trash2 } from 'lucide-react';
|
|
4
|
-
import { Sheet } from '../../../components/ui/sheet';
|
|
5
|
-
import { Button } from '../../../components/ui/button';
|
|
6
|
-
import { CheckoutButton } from '../../../components/ui/checkout-button';
|
|
7
|
-
import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
|
|
4
|
+
import { Sheet } from '../../../components/ui/sheet.js';
|
|
5
|
+
import { Button } from '../../../components/ui/button.js';
|
|
6
|
+
import { CheckoutButton } from '../../../components/ui/checkout-button.js';
|
|
7
|
+
import { ImageWithFallback } from '../../../components/ui/image-with-fallback.js';
|
|
8
8
|
import { useMemo } from 'react';
|
|
9
|
-
import { useStore } from '../../../lib/store-context';
|
|
10
|
-
import { formatCurrency } from '../../../lib/utils';
|
|
11
|
-
import { getCartLineImage } from '../../../lib/product-variation-utils';
|
|
12
|
-
import { getLayoutText } from '../../../lib/utils/asset-helpers';
|
|
13
|
-
import { resolveCartChargeCurrency } from '../../../lib/cart-charge-currency';
|
|
9
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
10
|
+
import { formatCurrency } from '../../../lib/utils/index.js';
|
|
11
|
+
import { getCartLineImage } from '../../../lib/product-variation-utils.js';
|
|
12
|
+
import { getLayoutText } from '../../../lib/utils/asset-helpers.js';
|
|
13
|
+
import { resolveCartChargeCurrency } from '../../../lib/cart-charge-currency.js';
|
|
14
14
|
export function StoreCartSheet({ storeConfig, title }) {
|
|
15
15
|
const { cart, removeFromCart, updateCartQuantity, isCartOpen, setIsCartOpen, cartTotal, } = useStore();
|
|
16
16
|
const { currency: cartCurrency } = useMemo(() => resolveCartChargeCurrency(cart, storeConfig.settings?.currency), [cart, storeConfig.settings?.currency]);
|
|
@@ -3,16 +3,16 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import Link from 'next/link';
|
|
4
4
|
import { getCurrentYear } from '../../../utils/date.js';
|
|
5
5
|
import { Facebook, Twitter, Instagram, Share2 } from 'lucide-react';
|
|
6
|
-
import { DotPattern } from '../../../components/ui/background-patterns';
|
|
7
|
-
import { cn } from '../../../lib/utils';
|
|
8
|
-
import { getLogoUrl } from '../../../lib/utils/asset-helpers';
|
|
9
|
-
import { StoreLogo } from '../../../components/ui/store-logos';
|
|
10
|
-
import { useStore } from '../../../lib/store-context';
|
|
11
|
-
import { payazaInlineBindingProps } from '../../../preview/canvas/field-key';
|
|
12
|
-
import { isEditorPreviewMode } from '../../../lib/utils/editor-preview';
|
|
13
|
-
import { resolveStoreLink } from '../../../lib/layout-route-utils';
|
|
6
|
+
import { DotPattern } from '../../../components/ui/background-patterns.js';
|
|
7
|
+
import { cn } from '../../../lib/utils/index.js';
|
|
8
|
+
import { getLogoUrl } from '../../../lib/utils/asset-helpers.js';
|
|
9
|
+
import { StoreLogo } from '../../../components/ui/store-logos.js';
|
|
10
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
11
|
+
import { payazaInlineBindingProps } from '../../../preview/canvas/field-key.js';
|
|
12
|
+
import { isEditorPreviewMode } from '../../../lib/utils/editor-preview.js';
|
|
13
|
+
import { resolveStoreLink } from '../../../lib/layout-route-utils.js';
|
|
14
14
|
import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt.js';
|
|
15
|
-
import { BOOKING_DEFAULT_FOOTER_TAGLINE, resolveBookingFooterMainLinks, resolveBookingFooterSupportLinks, resolveBookingFooterPrimaryColumnTitle, } from '../../booking/components/booking-footer-defaults';
|
|
15
|
+
import { BOOKING_DEFAULT_FOOTER_TAGLINE, resolveBookingFooterMainLinks, resolveBookingFooterSupportLinks, resolveBookingFooterPrimaryColumnTitle, } from '../../booking/components/booking-footer-defaults.js';
|
|
16
16
|
export function StoreFooter({ storeConfig: initialConfig }) {
|
|
17
17
|
const { store } = useStore();
|
|
18
18
|
const storeConfig = store || initialConfig;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import Link from 'next/link';
|
|
4
|
-
import { Button } from '../../../components/ui/button';
|
|
4
|
+
import { Button } from '../../../components/ui/button.js';
|
|
5
5
|
import { ShoppingCart, Heart, Search, Menu, X, ChevronRight, ChevronDown, Instagram, Twitter, Youtube, Home, Info, Phone, Package, Calendar, BookOpen, GraduationCap, Sparkles, Tag, LayoutGrid } from 'lucide-react';
|
|
6
6
|
// Navigation icon helper
|
|
7
7
|
const getNavIcon = (label) => {
|
|
@@ -30,14 +30,14 @@ const getNavIcon = (label) => {
|
|
|
30
30
|
};
|
|
31
31
|
import { useState, useEffect, useRef } from 'react';
|
|
32
32
|
import { usePathname } from 'next/navigation';
|
|
33
|
-
import { cn, formatStoreDisplayName } from '../../../lib/utils';
|
|
34
|
-
import { useAuth } from '../../../lib/auth-context';
|
|
35
|
-
import { StoreLogo } from '../../../components/ui/store-logos';
|
|
36
|
-
import { useStore } from '../../../lib/store-context';
|
|
37
|
-
import { getLogoUrl } from '../../../lib/utils/asset-helpers';
|
|
38
|
-
import { AvatarImage } from '../../../components/ui/avatar-image';
|
|
33
|
+
import { cn, formatStoreDisplayName } from '../../../lib/utils/index.js';
|
|
34
|
+
import { useAuth } from '../../../lib/auth-context.js';
|
|
35
|
+
import { StoreLogo } from '../../../components/ui/store-logos.js';
|
|
36
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
37
|
+
import { getLogoUrl } from '../../../lib/utils/asset-helpers.js';
|
|
38
|
+
import { AvatarImage } from '../../../components/ui/avatar-image.js';
|
|
39
39
|
import { motion, AnimatePresence } from 'framer-motion';
|
|
40
|
-
import { StoreCartSheet } from './StoreCartSheet';
|
|
40
|
+
import { StoreCartSheet } from './StoreCartSheet.js';
|
|
41
41
|
function headerNavLinkClass(isDarkTheme) {
|
|
42
42
|
return cn('px-2 py-2.5 text-[11px] font-bold uppercase tracking-[0.12em] transition-colors underline-offset-4 decoration-2 inline-flex items-center gap-2 whitespace-nowrap', isDarkTheme
|
|
43
43
|
? 'text-gray-400 hover:text-white hover:underline'
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from '../../../../components/ui/button';
|
|
3
|
+
import { Button } from '../../../../components/ui/button.js';
|
|
4
4
|
import { User, Sparkles, X, MoreHorizontal, Calendar, Search, Heart } from 'lucide-react';
|
|
5
5
|
import Link from 'next/link';
|
|
6
6
|
import { useState } from 'react';
|
|
7
|
-
import { getLayoutText, getThemeColor } from '../../../../lib/utils/asset-helpers';
|
|
7
|
+
import { getLayoutText, getThemeColor } from '../../../../lib/utils/asset-helpers.js';
|
|
8
8
|
export function BookingAgendaSidebar({ storeConfig, onBookClick }) {
|
|
9
9
|
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
|
|
10
10
|
const categories = storeConfig.categories || [];
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from '../../../../components/ui/button';
|
|
4
|
-
import { Sheet } from '../../../../components/ui/sheet';
|
|
5
|
-
import { StoreCartSheet } from '../StoreCartSheet';
|
|
6
|
-
import { useStore } from '../../../../lib/store-context';
|
|
3
|
+
import { Button } from '../../../../components/ui/button.js';
|
|
4
|
+
import { Sheet } from '../../../../components/ui/sheet.js';
|
|
5
|
+
import { StoreCartSheet } from '../StoreCartSheet.js';
|
|
6
|
+
import { useStore } from '../../../../lib/store-context.js';
|
|
7
7
|
import { ShoppingBag, Menu, Search } from 'lucide-react';
|
|
8
8
|
import Link from 'next/link';
|
|
9
9
|
import { useState, useEffect } from 'react';
|
|
10
10
|
import { usePathname } from 'next/navigation';
|
|
11
|
-
import { formatStoreDisplayName } from '../../../../lib/utils';
|
|
12
|
-
import { getLayoutText, getLogoUrl } from '../../../../lib/utils/asset-helpers';
|
|
13
|
-
import { StoreLogo } from '../../../../components/ui/store-logos';
|
|
14
|
-
import { useAuth } from '../../../../lib/auth-context';
|
|
15
|
-
import { AvatarImage } from '../../../../components/ui/avatar-image';
|
|
11
|
+
import { formatStoreDisplayName } from '../../../../lib/utils/index.js';
|
|
12
|
+
import { getLayoutText, getLogoUrl } from '../../../../lib/utils/asset-helpers.js';
|
|
13
|
+
import { StoreLogo } from '../../../../components/ui/store-logos.js';
|
|
14
|
+
import { useAuth } from '../../../../lib/auth-context.js';
|
|
15
|
+
import { AvatarImage } from '../../../../components/ui/avatar-image.js';
|
|
16
16
|
import { User } from 'lucide-react';
|
|
17
17
|
export function ClothingMinimalHeader({ storeConfig }) {
|
|
18
18
|
const { isCartOpen, setIsCartOpen, cartCount } = useStore();
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from '../../../../components/ui/button';
|
|
4
|
-
import { Modal } from '../../../../components/ui/modal';
|
|
5
|
-
import { useToast } from '../../../../components/ui/toast';
|
|
3
|
+
import { Button } from '../../../../components/ui/button.js';
|
|
4
|
+
import { Modal } from '../../../../components/ui/modal.js';
|
|
5
|
+
import { useToast } from '../../../../components/ui/toast.js';
|
|
6
6
|
import { Menu as MenuIcon, Search, X, Calendar, Clock, Users, Mail, Phone, CheckCircle, User } from 'lucide-react';
|
|
7
|
-
import { useAuth } from '../../../../lib/auth-context';
|
|
7
|
+
import { useAuth } from '../../../../lib/auth-context.js';
|
|
8
8
|
import { usePathname } from 'next/navigation';
|
|
9
9
|
import Link from 'next/link';
|
|
10
10
|
import { useState, useEffect } from 'react';
|
|
11
|
-
import { getLayoutText, getLogoUrl } from '../../../../lib/utils/asset-helpers';
|
|
12
|
-
import { formatStoreDisplayName } from '../../../../lib/utils';
|
|
13
|
-
import { StoreLogo } from '../../../../components/ui/store-logos';
|
|
11
|
+
import { getLayoutText, getLogoUrl } from '../../../../lib/utils/asset-helpers.js';
|
|
12
|
+
import { formatStoreDisplayName } from '../../../../lib/utils/index.js';
|
|
13
|
+
import { StoreLogo } from '../../../../components/ui/store-logos.js';
|
|
14
14
|
export function FoodModernHeader({ storeConfig }) {
|
|
15
15
|
const { addToast } = useToast();
|
|
16
16
|
const { isAuthenticated, openLogin } = useAuth();
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
// Shared layout exports
|
|
2
|
-
export { BaseStoreLayout } from './components/BaseStoreLayout';
|
|
3
|
-
export { GenericPageWrapper } from './components/GenericPageWrapper';
|
|
4
|
-
export { PromoBanner } from './components/PromoBanner';
|
|
5
|
-
export { StoreFooter } from './components/StoreFooter';
|
|
6
|
-
export { StoreHeader } from './components/StoreHeader';
|
|
7
|
-
export { TestimonialCard } from './components/TestimonialCard';
|
|
8
|
-
export { AccountPage } from './pages/AccountPage';
|
|
9
|
-
export { CartPage } from './pages/CartPage';
|
|
10
|
-
export { CheckoutPage } from './pages/CheckoutPage';
|
|
11
|
-
export { CookiePolicyPage } from './pages/CookiePolicyPage';
|
|
12
|
-
export { FeatureDisabledPage } from './pages/FeatureDisabledPage';
|
|
13
|
-
export { HelpCenterPage } from './pages/HelpCenterPage';
|
|
14
|
-
export { MaintenancePage } from './pages/MaintenancePage';
|
|
15
|
-
export { PortfolioPage } from './pages/PortfolioPage';
|
|
16
|
-
export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage';
|
|
17
|
-
export { ShippingReturnsPage } from './pages/ShippingReturnsPage';
|
|
18
|
-
export { SizeGuidePage } from './pages/SizeGuidePage';
|
|
19
|
-
export { StyleGuidePage } from './pages/StyleGuidePage';
|
|
20
|
-
export { TeamPage } from './pages/TeamPage';
|
|
21
|
-
export { TermsPage } from './pages/TermsPage';
|
|
22
|
-
export { TrackOrderPage } from './pages/TrackOrderPage';
|
|
23
|
-
export { WishlistPage } from './pages/WishlistPage';
|
|
2
|
+
export { BaseStoreLayout } from './components/BaseStoreLayout.js';
|
|
3
|
+
export { GenericPageWrapper } from './components/GenericPageWrapper.js';
|
|
4
|
+
export { PromoBanner } from './components/PromoBanner.js';
|
|
5
|
+
export { StoreFooter } from './components/StoreFooter.js';
|
|
6
|
+
export { StoreHeader } from './components/StoreHeader.js';
|
|
7
|
+
export { TestimonialCard } from './components/TestimonialCard.js';
|
|
8
|
+
export { AccountPage } from './pages/AccountPage.js';
|
|
9
|
+
export { CartPage } from './pages/CartPage.js';
|
|
10
|
+
export { CheckoutPage } from './pages/CheckoutPage.js';
|
|
11
|
+
export { CookiePolicyPage } from './pages/CookiePolicyPage.js';
|
|
12
|
+
export { FeatureDisabledPage } from './pages/FeatureDisabledPage.js';
|
|
13
|
+
export { HelpCenterPage } from './pages/HelpCenterPage.js';
|
|
14
|
+
export { MaintenancePage } from './pages/MaintenancePage.js';
|
|
15
|
+
export { PortfolioPage } from './pages/PortfolioPage.js';
|
|
16
|
+
export { PrivacyPolicyPage } from './pages/PrivacyPolicyPage.js';
|
|
17
|
+
export { ShippingReturnsPage } from './pages/ShippingReturnsPage.js';
|
|
18
|
+
export { SizeGuidePage } from './pages/SizeGuidePage.js';
|
|
19
|
+
export { StyleGuidePage } from './pages/StyleGuidePage.js';
|
|
20
|
+
export { TeamPage } from './pages/TeamPage.js';
|
|
21
|
+
export { TermsPage } from './pages/TermsPage.js';
|
|
22
|
+
export { TrackOrderPage } from './pages/TrackOrderPage.js';
|
|
23
|
+
export { WishlistPage } from './pages/WishlistPage.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { MaintenancePage } from './MaintenancePage';
|
|
4
|
-
import { StoreOfflinePage } from './StoreOfflinePage';
|
|
3
|
+
import { MaintenancePage } from './MaintenancePage.js';
|
|
4
|
+
import { StoreOfflinePage } from './StoreOfflinePage.js';
|
|
5
5
|
export function StoreMaintenanceScreen({ storeConfig, reason = 'unpublished', }) {
|
|
6
6
|
if (reason === 'offline') {
|
|
7
7
|
return _jsx(StoreOfflinePage, { storeConfig: storeConfig });
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { createContext, useContext, useState, useEffect, useRef } from 'react';
|
|
4
|
-
import { BookingAgendaSidebar } from '../components/headers/BookingAgendaSidebar';
|
|
5
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
6
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
7
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
8
|
-
import { getThemeColor, getLayoutText } from '../../../lib/utils/asset-helpers';
|
|
9
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
10
|
-
import { Modal } from '../../../components/ui/modal';
|
|
11
|
-
import { Button } from '../../../components/ui/button';
|
|
12
|
-
import { usePayazaCheckout } from '../../../hooks/use-payaza-checkout';
|
|
13
|
-
import { checkoutService } from '../../../lib/services/checkout.service';
|
|
14
|
-
import { requireCheckoutPayazaPublicKey } from '../../../lib/payaza-public-key';
|
|
15
|
-
import { getOrCreateIdempotencyKey } from '../../../lib/utils/idempotency-key';
|
|
16
|
-
import { CHECKOUT_UNAVAILABLE_MESSAGE } from '../../../lib/checkout-availability';
|
|
17
|
-
import { useToast } from '../../../components/ui/toast';
|
|
18
|
-
import { useAuth } from '../../../lib/auth-context';
|
|
19
|
-
import { filterActiveServices, formatCurrency } from '../../../lib/utils';
|
|
4
|
+
import { BookingAgendaSidebar } from '../components/headers/BookingAgendaSidebar.js';
|
|
5
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
6
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
7
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
8
|
+
import { getThemeColor, getLayoutText } from '../../../lib/utils/asset-helpers.js';
|
|
9
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
10
|
+
import { Modal } from '../../../components/ui/modal.js';
|
|
11
|
+
import { Button } from '../../../components/ui/button.js';
|
|
12
|
+
import { usePayazaCheckout } from '../../../hooks/use-payaza-checkout.js';
|
|
13
|
+
import { checkoutService } from '../../../lib/services/checkout.service.js';
|
|
14
|
+
import { requireCheckoutPayazaPublicKey } from '../../../lib/payaza-public-key.js';
|
|
15
|
+
import { getOrCreateIdempotencyKey } from '../../../lib/utils/idempotency-key.js';
|
|
16
|
+
import { CHECKOUT_UNAVAILABLE_MESSAGE } from '../../../lib/checkout-availability.js';
|
|
17
|
+
import { useToast } from '../../../components/ui/toast.js';
|
|
18
|
+
import { useAuth } from '../../../lib/auth-context.js';
|
|
19
|
+
import { filterActiveServices, formatCurrency } from '../../../lib/utils/index.js';
|
|
20
20
|
import { CheckCircle, Sparkles, Lock } from 'lucide-react';
|
|
21
21
|
import { formatDateSafe } from '../../../utils/date.js';
|
|
22
22
|
const BookingContext = createContext(undefined);
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { StoreHeader } from '../components/StoreHeader';
|
|
4
|
-
import { StoreFooter } from '../components/StoreFooter';
|
|
5
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
6
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
7
|
-
import { useStore } from '../../../lib/store-context';
|
|
8
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
9
|
-
import { getThemeColor } from '../../../lib/utils/asset-helpers';
|
|
10
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
3
|
+
import { StoreHeader } from '../components/StoreHeader.js';
|
|
4
|
+
import { StoreFooter } from '../components/StoreFooter.js';
|
|
5
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
6
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
7
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
8
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
9
|
+
import { getThemeColor } from '../../../lib/utils/asset-helpers.js';
|
|
10
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
11
11
|
import '../../clothing/styles/clothing.css';
|
|
12
12
|
/** Fashion Hub shell — scoped CSS + theme tokens under data-layout="clothing". */
|
|
13
13
|
export function ClothingLayout({ children, storeConfig }) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { ClothingMinimalHeader } from '../components/headers/ClothingMinimalHeader';
|
|
4
|
-
import { StoreFooter } from '../components/StoreFooter';
|
|
5
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
6
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
3
|
+
import { ClothingMinimalHeader } from '../components/headers/ClothingMinimalHeader.js';
|
|
4
|
+
import { StoreFooter } from '../components/StoreFooter.js';
|
|
5
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
6
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
7
7
|
import { usePathname } from 'next/navigation';
|
|
8
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
9
|
-
import { getThemeColor } from '../../../lib/utils/asset-helpers';
|
|
10
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
8
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
9
|
+
import { getThemeColor } from '../../../lib/utils/asset-helpers.js';
|
|
10
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
11
11
|
export function ClothingMinimalLayout({ children, storeConfig }) {
|
|
12
12
|
const pathname = usePathname();
|
|
13
13
|
const { isBackendLoading } = useLoading();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
4
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
5
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
6
|
-
import { getThemeColor } from '../../../lib/utils/asset-helpers';
|
|
7
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
3
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
4
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
5
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
6
|
+
import { getThemeColor } from '../../../lib/utils/asset-helpers.js';
|
|
7
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
8
8
|
export function ElectronicsLayout({ children, storeConfig }) {
|
|
9
9
|
const { isBackendLoading } = useLoading();
|
|
10
10
|
// Get theme colors with fallbacks
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { FoodModernHeader } from '../components/headers/FoodModernHeader';
|
|
4
|
-
import { StoreFooter } from '../components/StoreFooter';
|
|
5
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
6
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
3
|
+
import { FoodModernHeader } from '../components/headers/FoodModernHeader.js';
|
|
4
|
+
import { StoreFooter } from '../components/StoreFooter.js';
|
|
5
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
6
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
7
7
|
import { usePathname } from 'next/navigation';
|
|
8
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
9
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
8
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
9
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
10
10
|
export function FoodModernLayout({ children, storeConfig }) {
|
|
11
11
|
const pathname = usePathname();
|
|
12
12
|
const { isBackendLoading } = useLoading();
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { StoreHeader } from '../components/StoreHeader';
|
|
4
|
-
import { StoreFooter } from '../components/StoreFooter';
|
|
5
|
-
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper';
|
|
6
|
-
import { PageContentLoader } from '../../../components/ui/page-content-loader';
|
|
7
|
-
import { useStore } from '../../../lib/store-context';
|
|
8
|
-
import { useLoading } from '../../../lib/loading-context';
|
|
9
|
-
import { getThemeColor } from '../../../lib/utils/asset-helpers';
|
|
10
|
-
import { AlertModalProvider } from '../../../components/ui/alert-modal';
|
|
3
|
+
import { StoreHeader } from '../components/StoreHeader.js';
|
|
4
|
+
import { StoreFooter } from '../components/StoreFooter.js';
|
|
5
|
+
import { PageAnimateWrapper } from '../../../components/ui/page-animate-wrapper.js';
|
|
6
|
+
import { PageContentLoader } from '../../../components/ui/page-content-loader.js';
|
|
7
|
+
import { useStore } from '../../../lib/store-context.js';
|
|
8
|
+
import { useLoading } from '../../../lib/loading-context.js';
|
|
9
|
+
import { getThemeColor } from '../../../lib/utils/asset-helpers.js';
|
|
10
|
+
import { AlertModalProvider } from '../../../components/ui/alert-modal.js';
|
|
11
11
|
import { usePathname } from 'next/navigation';
|
|
12
|
-
import { cn } from '../../../lib/utils';
|
|
12
|
+
import { cn } from '../../../lib/utils/index.js';
|
|
13
13
|
export function MotivationalLayout({ children, storeConfig }) {
|
|
14
14
|
const { cartCount } = useStore();
|
|
15
15
|
const { isBackendLoading } = useLoading();
|