storefront-layouts 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/LoginForm.js +2 -2
- package/dist/components/auth/LoginSheet.js +2 -2
- package/dist/components/auth/login-form-core.js +3 -3
- package/dist/components/auth/login-sheet-header.js +3 -3
- 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-sheet-themes/theme-input-baselines.d.ts +2 -2
- package/dist/components/auth/login-sheet-themes/theme-input-baselines.d.ts.map +1 -1
- package/dist/components/auth/login-sheet-themes/theme-input-baselines.js +2 -2
- package/dist/components/auth/login-sheets/StoreLoginSheetShell.d.ts.map +1 -1
- package/dist/components/auth/login-sheets/StoreLoginSheetShell.js +6 -6
- package/dist/components/auth/use-login-submit.js +3 -3
- package/dist/components/cart/InventoryHoldCountdown.js +2 -2
- package/dist/components/categories/category-masonry-grid.js +3 -3
- package/dist/components/checkout/CheckoutFeeLines.js +1 -1
- package/dist/components/checkout/ShippingOptionsPanel.js +3 -3
- package/dist/components/learning/CertificateTemplates.js +2 -2
- package/dist/components/learning/CertificateViewer.js +3 -3
- package/dist/components/learning/MentorshipProgress.d.ts.map +1 -1
- package/dist/components/learning/MentorshipProgress.js +4 -4
- package/dist/components/product/ProductVariationSelectors.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.d.ts +8 -11
- package/dist/components/rich-text/SafeRichHtml.d.ts.map +1 -1
- package/dist/components/rich-text/SafeRichHtml.js +3 -5
- package/dist/components/shipping/ProductDeliveryInfoSection.d.ts.map +1 -1
- package/dist/components/shipping/ProductDeliveryInfoSection.js +7 -4
- package/dist/components/shipping/ShippingQuoteAddressForm.js +3 -3
- package/dist/components/ui/alert-modal.js +2 -2
- package/dist/components/ui/avatar-image.js +1 -1
- package/dist/components/ui/badge.js +1 -1
- package/dist/components/ui/breadcrumbs.js +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/category-tree.js +2 -2
- package/dist/components/ui/checkout-button.d.ts.map +1 -1
- package/dist/components/ui/checkout-button.js +11 -283
- package/dist/components/ui/guest-checkout-modal.js +3 -3
- package/dist/components/ui/image-skeleton.js +2 -2
- package/dist/components/ui/image-with-fallback.d.ts +3 -1
- package/dist/components/ui/image-with-fallback.d.ts.map +1 -1
- package/dist/components/ui/image-with-fallback.js +55 -139
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/limited-time-offer-badge.js +2 -2
- package/dist/components/ui/loading-skeleton-wrapper.js +1 -1
- package/dist/components/ui/modal.js +2 -2
- package/dist/components/ui/otp-input.js +1 -1
- package/dist/components/ui/out-of-stock-overlay.js +1 -1
- package/dist/components/ui/page-animate-wrapper.js +2 -2
- package/dist/components/ui/page-content-loader.js +2 -2
- package/dist/components/ui/page-loader.js +1 -1
- package/dist/components/ui/product-card.d.ts.map +1 -1
- package/dist/components/ui/product-card.js +17 -17
- package/dist/components/ui/product-rating.js +1 -1
- package/dist/components/ui/product-stock-badge.js +2 -2
- package/dist/components/ui/review-form.js +2 -2
- package/dist/components/ui/route-skeleton-loader.js +6 -6
- package/dist/components/ui/sheet.d.ts +2 -1
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +4 -4
- package/dist/components/ui/skeleton.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/components/ui/store-logos.d.ts.map +1 -1
- package/dist/components/ui/store-logos.js +4 -4
- package/dist/components/ui/toast.js +1 -1
- package/dist/components/ui/video-player.js +2 -2
- 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 +5 -5
- 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 +31 -31
- package/dist/editor/payaza-form/PayazaFormEditorFullPage.js +2 -2
- package/dist/editor/payaza-form/SliderArrayEditor.js +3 -3
- 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 +9 -9
- 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/SectionField.js +1 -1
- package/dist/editor/payaza-form/components/SectionSchemaInspector.js +3 -3
- package/dist/editor/payaza-form/components/StarRatingField.js +2 -2
- 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 +2 -2
- package/dist/editor/shared/EditorHeader.js +2 -2
- package/dist/editor/shared/EditorNavigator.js +2 -2
- package/dist/editor/shared/IframePreview.js +6 -6
- package/dist/editor/shared/InlineCanvasPreview.js +8 -8
- 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-analytics.js +3 -3
- package/dist/hooks/use-api.js +1 -1
- package/dist/hooks/use-cart-api.d.ts.map +1 -1
- package/dist/hooks/use-cart-api.js +8 -3
- package/dist/hooks/use-catalog-loader.js +3 -3
- package/dist/hooks/use-catalog-price-range.d.ts +2 -5
- package/dist/hooks/use-catalog-price-range.d.ts.map +1 -1
- package/dist/hooks/use-catalog-price-range.js +20 -5
- package/dist/hooks/use-category-products.d.ts +8 -0
- package/dist/hooks/use-category-products.d.ts.map +1 -0
- package/dist/hooks/use-category-products.js +43 -0
- package/dist/hooks/use-checkout-fees.d.ts +3 -4
- package/dist/hooks/use-checkout-fees.d.ts.map +1 -1
- package/dist/hooks/use-checkout-fees.js +1 -1
- package/dist/hooks/use-content-ready.js +1 -1
- package/dist/hooks/use-featured-products.d.ts +3 -0
- package/dist/hooks/use-featured-products.d.ts.map +1 -0
- package/dist/hooks/use-featured-products.js +25 -0
- package/dist/hooks/use-multi-store-checkout-fees.d.ts +3 -4
- package/dist/hooks/use-multi-store-checkout-fees.d.ts.map +1 -1
- package/dist/hooks/use-multi-store-checkout-fees.js +1 -1
- package/dist/hooks/use-navigation-loading.js +1 -1
- package/dist/hooks/use-payaza-checkout.d.ts +1 -1
- package/dist/hooks/use-payaza-checkout.d.ts.map +1 -1
- package/dist/hooks/use-payaza-checkout.js +9 -3
- package/dist/hooks/use-product-brands.d.ts +5 -0
- package/dist/hooks/use-product-brands.d.ts.map +1 -0
- package/dist/hooks/use-product-brands.js +25 -0
- package/dist/hooks/use-product-by-slug.d.ts +7 -0
- package/dist/hooks/use-product-by-slug.d.ts.map +1 -0
- package/dist/hooks/use-product-by-slug.js +38 -0
- package/dist/hooks/use-product-reviews.d.ts +15 -0
- package/dist/hooks/use-product-reviews.d.ts.map +1 -0
- package/dist/hooks/use-product-reviews.js +75 -0
- package/dist/hooks/use-product-variation-selection.d.ts +2 -8
- package/dist/hooks/use-product-variation-selection.d.ts.map +1 -1
- package/dist/hooks/use-product-variation-selection.js +1 -1
- package/dist/hooks/use-products-api.js +3 -3
- package/dist/hooks/use-shipping-quote.js +2 -2
- package/dist/hooks/use-store-api.js +4 -4
- package/dist/hooks/usePreviewSlideSync.js +1 -1
- package/dist/index.d.ts +62 -74
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -153
- package/dist/layouts/booking/components/BookingHomePage.d.ts.map +1 -1
- package/dist/layouts/booking/components/BookingHomePage.js +68 -74
- package/dist/layouts/booking/components/BookingMultilineHeading.js +1 -1
- package/dist/layouts/booking/components/BookingTestimonialCard.js +2 -2
- package/dist/layouts/booking/components/BookingTestimonialsEmptyState.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 +1 -1
- package/dist/layouts/booking/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/AboutPage.js +39 -60
- package/dist/layouts/booking/pages/BookPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/BookPage.js +16 -22
- package/dist/layouts/booking/pages/CategoriesPage.js +6 -6
- package/dist/layouts/booking/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/booking/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/CategoryPage.js +17 -26
- package/dist/layouts/booking/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/booking/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/ContactPage.js +5 -12
- package/dist/layouts/booking/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/booking/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/ProductDetailPage.js +203 -150
- package/dist/layouts/booking/pages/ServicesPage.d.ts +1 -1
- package/dist/layouts/booking/pages/ServicesPage.d.ts.map +1 -1
- package/dist/layouts/booking/pages/ServicesPage.js +11 -31
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/components/BookingHomePageAgenda.js +21 -30
- package/dist/layouts/booking-agenda/index.js +8 -8
- package/dist/layouts/booking-agenda/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/booking-agenda/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/AboutPage.js +11 -14
- package/dist/layouts/booking-agenda/pages/BookPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/BookPage.js +15 -21
- package/dist/layouts/booking-agenda/pages/CategoriesPage.js +5 -5
- package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/booking-agenda/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/CategoryPage.js +12 -18
- package/dist/layouts/booking-agenda/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/booking-agenda/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/ContactPage.js +8 -13
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/ProductDetailPage.js +202 -149
- package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts +1 -1
- package/dist/layouts/booking-agenda/pages/ServicesPage.d.ts.map +1 -1
- package/dist/layouts/booking-agenda/pages/ServicesPage.js +8 -23
- package/dist/layouts/clothing/components/ClothingHomePage.d.ts.map +1 -1
- package/dist/layouts/clothing/components/ClothingHomePage.js +199 -136
- package/dist/layouts/clothing/index.js +7 -7
- package/dist/layouts/clothing/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/clothing/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/AboutPage.js +19 -33
- package/dist/layouts/clothing/pages/CategoriesPage.js +8 -8
- package/dist/layouts/clothing/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/clothing/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/CategoryPage.js +15 -41
- package/dist/layouts/clothing/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/clothing/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/ContactPage.js +5 -8
- package/dist/layouts/clothing/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/clothing/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/ProductDetailPage.js +256 -167
- package/dist/layouts/clothing/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/clothing/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/clothing/pages/ProductsPage.js +125 -59
- 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 +32 -131
- package/dist/layouts/clothing-minimal/components/clothing-minimal-block-render.js +8 -8
- package/dist/layouts/clothing-minimal/index.js +7 -7
- package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/clothing-minimal/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/AboutPage.js +37 -61
- package/dist/layouts/clothing-minimal/pages/CategoriesPage.js +7 -7
- package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/clothing-minimal/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/CategoryPage.js +13 -18
- package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/clothing-minimal/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/ContactPage.js +5 -8
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/ProductDetailPage.js +202 -143
- package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/clothing-minimal/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/clothing-minimal/pages/ProductsPage.js +126 -57
- package/dist/layouts/electronics/components/ElectronicsCategoriesPage.js +7 -7
- package/dist/layouts/electronics/components/ElectronicsGridProductCard.js +10 -10
- package/dist/layouts/electronics/components/ElectronicsHomePage.d.ts.map +1 -1
- package/dist/layouts/electronics/components/ElectronicsHomePage.js +29 -31
- package/dist/layouts/electronics/components/ElectronicsPageWrapper.js +4 -4
- package/dist/layouts/electronics/components/ElectronicsProductsPage.d.ts.map +1 -1
- package/dist/layouts/electronics/components/ElectronicsProductsPage.js +81 -23
- package/dist/layouts/electronics/components/ElectronicsStoreFooter.js +2 -2
- package/dist/layouts/electronics/components/ElectronicsStoreHeader.js +6 -6
- package/dist/layouts/electronics/index.js +18 -18
- package/dist/layouts/electronics/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/electronics/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/AboutPage.js +11 -14
- package/dist/layouts/electronics/pages/CategoriesPage.js +1 -1
- package/dist/layouts/electronics/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/electronics/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/CategoryPage.js +14 -20
- package/dist/layouts/electronics/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/electronics/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/ContactPage.js +8 -13
- package/dist/layouts/electronics/pages/HelpCenterPage.js +1 -1
- package/dist/layouts/electronics/pages/PrivacyPolicyPage.js +1 -1
- package/dist/layouts/electronics/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/electronics/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/ProductDetailPage.js +201 -142
- package/dist/layouts/electronics/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/electronics/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/electronics/pages/ProductsPage.js +119 -49
- package/dist/layouts/electronics/pages/TermsPage.js +1 -1
- package/dist/layouts/electronics/pages/TrackOrderPage.js +4 -4
- package/dist/layouts/electronics-grid/components/ElectronicsGridProductCard.js +10 -10
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/components/ElectronicsHomePageGrid.js +75 -33
- package/dist/layouts/electronics-grid/index.js +14 -14
- package/dist/layouts/electronics-grid/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/electronics-grid/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/AboutPage.js +11 -14
- package/dist/layouts/electronics-grid/pages/CategoriesPage.js +1 -1
- package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/electronics-grid/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/CategoryPage.js +14 -20
- package/dist/layouts/electronics-grid/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/electronics-grid/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/ContactPage.js +8 -13
- package/dist/layouts/electronics-grid/pages/ElectronicsGridCategoriesPage.js +6 -6
- package/dist/layouts/electronics-grid/pages/HelpCenterPage.js +1 -1
- package/dist/layouts/electronics-grid/pages/PrivacyPolicyPage.js +1 -1
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/ProductDetailPage.js +201 -142
- package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/electronics-grid/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/electronics-grid/pages/ProductsPage.js +121 -52
- package/dist/layouts/electronics-grid/pages/TermsPage.js +1 -1
- package/dist/layouts/electronics-grid/pages/TrackOrderPage.js +4 -4
- package/dist/layouts/food/components/FoodHomePage.d.ts.map +1 -1
- package/dist/layouts/food/components/FoodHomePage.js +42 -41
- package/dist/layouts/food/index.js +8 -8
- package/dist/layouts/food/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/food/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/AboutPage.js +44 -45
- package/dist/layouts/food/pages/CategoriesPage.js +6 -6
- package/dist/layouts/food/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/food/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/CategoryPage.js +23 -21
- package/dist/layouts/food/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/food/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/ContactPage.js +5 -7
- package/dist/layouts/food/pages/MenuPage.d.ts +1 -1
- package/dist/layouts/food/pages/MenuPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/MenuPage.js +81 -42
- package/dist/layouts/food/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/food/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/ProductDetailPage.js +209 -171
- package/dist/layouts/food/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/food/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/food/pages/ProductsPage.js +130 -45
- package/dist/layouts/food-modern/components/FoodHomePageModern.js +10 -10
- package/dist/layouts/food-modern/index.js +8 -8
- package/dist/layouts/food-modern/pages/AboutPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/AboutPage.js +11 -14
- package/dist/layouts/food-modern/pages/CategoriesPage.js +5 -5
- package/dist/layouts/food-modern/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/CategoryPage.js +23 -20
- package/dist/layouts/food-modern/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/ContactPage.js +5 -7
- package/dist/layouts/food-modern/pages/MenuPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/MenuPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/MenuPage.js +81 -46
- package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/ProductDetailPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/ProductDetailPage.js +202 -143
- package/dist/layouts/food-modern/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/food-modern/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/food-modern/pages/ProductsPage.js +117 -33
- package/dist/layouts/motivational-speaker/components/MotivationalHomePage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/components/MotivationalHomePage.js +32 -23
- 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 +1 -1
- package/dist/layouts/motivational-speaker/pages/AboutPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/AboutPage.js +6 -9
- package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts +1 -1
- package/dist/layouts/motivational-speaker/pages/CategoryPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/CategoryPage.js +18 -22
- package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts +1 -1
- package/dist/layouts/motivational-speaker/pages/ContactPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/ContactPage.js +9 -13
- package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts +1 -1
- package/dist/layouts/motivational-speaker/pages/ProductsPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/ProductsPage.js +121 -52
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts +1 -1
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/ServiceDetailPage.js +15 -24
- package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts +1 -1
- package/dist/layouts/motivational-speaker/pages/ServicesPage.d.ts.map +1 -1
- package/dist/layouts/motivational-speaker/pages/ServicesPage.js +8 -23
- package/dist/layouts/motivational-speaker/pages/SubscriptionPage.js +7 -7
- package/dist/layouts/shared/components/BaseStoreLayout.js +9 -9
- package/dist/layouts/shared/components/CartLineQuantityControl.js +1 -1
- package/dist/layouts/shared/components/GenericPageWrapper.js +3 -3
- package/dist/layouts/shared/components/ProductPriceFilterSection.js +4 -4
- package/dist/layouts/shared/components/PromoBanner.d.ts +1 -4
- package/dist/layouts/shared/components/PromoBanner.d.ts.map +1 -1
- package/dist/layouts/shared/components/PromoBanner.js +12 -8
- package/dist/layouts/shared/components/StoreFooter.js +10 -10
- package/dist/layouts/shared/components/StoreHeader.js +7 -7
- package/dist/layouts/shared/components/TestimonialCard.d.ts.map +1 -1
- package/dist/layouts/shared/components/TestimonialCard.js +2 -2
- package/dist/layouts/shared/components/headers/BookingAgendaSidebar.js +2 -2
- package/dist/layouts/shared/components/headers/ClothingMinimalHeader.js +11 -11
- package/dist/layouts/shared/components/headers/FoodModernHeader.js +7 -7
- package/dist/layouts/shared/index.js +22 -22
- package/dist/layouts/shared/pages/AccountPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/AccountPage.js +101 -27
- package/dist/layouts/shared/pages/CartPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/CartPage.js +39 -90
- package/dist/layouts/shared/pages/CheckoutPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/CheckoutPage.js +349 -868
- package/dist/layouts/shared/pages/CookiePolicyPage.js +1 -1
- package/dist/layouts/shared/pages/FeatureDisabledPage.js +1 -1
- package/dist/layouts/shared/pages/HelpCenterPage.js +1 -1
- package/dist/layouts/shared/pages/MaintenancePage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/MaintenancePage.js +2 -3
- package/dist/layouts/shared/pages/PortfolioPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/PortfolioPage.js +2 -2
- package/dist/layouts/shared/pages/PrivacyPolicyPage.js +1 -1
- package/dist/layouts/shared/pages/SizeGuidePage.js +1 -1
- package/dist/layouts/shared/pages/StyleGuidePage.js +3 -3
- package/dist/layouts/shared/pages/TeamPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/TeamPage.js +1 -1
- package/dist/layouts/shared/pages/TermsPage.js +1 -1
- package/dist/layouts/shared/pages/TrackOrderPage.js +4 -4
- package/dist/layouts/shared/pages/WishlistPage.d.ts.map +1 -1
- package/dist/layouts/shared/pages/WishlistPage.js +44 -29
- package/dist/layouts/shared/wrappers/BookingAgendaLayout.d.ts.map +1 -1
- package/dist/layouts/shared/wrappers/BookingAgendaLayout.js +80 -35
- 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/api.d.ts +3 -4
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +69 -109
- package/dist/lib/auth-context.js +2 -2
- package/dist/lib/content-selectors.d.ts +1 -1
- package/dist/lib/content-selectors.d.ts.map +1 -1
- package/dist/lib/content-selectors.js +8 -0
- package/dist/lib/layout-config-hydration.js +2 -2
- package/dist/lib/loading-context.d.ts.map +1 -1
- package/dist/lib/loading-context.js +11 -21
- package/dist/lib/payaza-checkout.d.ts.map +1 -1
- package/dist/lib/payaza-checkout.js +2 -4
- package/dist/lib/payaza-public-key.d.ts +6 -0
- package/dist/lib/payaza-public-key.d.ts.map +1 -0
- package/dist/lib/payaza-public-key.js +10 -0
- package/dist/lib/rich-html.d.ts +31 -26
- package/dist/lib/rich-html.d.ts.map +1 -1
- package/dist/lib/rich-html.js +1 -0
- 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.d.ts +3 -0
- package/dist/lib/services/checkout.service.d.ts.map +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.d.ts +17 -63
- package/dist/lib/services/fees.service.d.ts.map +1 -1
- package/dist/lib/services/fees.service.js +4 -138
- 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.d.ts +7 -2
- package/dist/lib/services/product.service.d.ts.map +1 -1
- package/dist/lib/services/product.service.js +13 -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.d.ts +1 -10
- package/dist/lib/store-config-utils.d.ts.map +1 -1
- package/dist/lib/store-config-utils.js +73 -261
- package/dist/lib/store-config.js +1 -1
- package/dist/lib/store-context.d.ts +1 -23
- package/dist/lib/store-context.d.ts.map +1 -1
- package/dist/lib/store-context.js +89 -111
- package/dist/lib/store-types.d.ts +9 -91
- package/dist/lib/store-types.d.ts.map +1 -1
- package/dist/lib/utils/asset-helpers.js +1 -1
- package/dist/lib/utils/catalog-price-bounds.d.ts +16 -6
- package/dist/lib/utils/catalog-price-bounds.d.ts.map +1 -1
- package/dist/lib/utils/catalog-price-bounds.js +58 -14
- package/dist/lib/utils/category-tree.d.ts +9 -0
- package/dist/lib/utils/category-tree.d.ts.map +1 -1
- package/dist/lib/utils/category-tree.js +26 -0
- package/dist/lib/utils/editor-preview.d.ts +5 -0
- package/dist/lib/utils/editor-preview.d.ts.map +1 -1
- package/dist/lib/utils/editor-preview.js +17 -3
- package/dist/lib/utils/fee-calculations.d.ts +5 -1
- package/dist/lib/utils/fee-calculations.d.ts.map +1 -1
- package/dist/lib/utils/fee-calculations.js +28 -31
- package/dist/lib/utils/index.d.ts +1 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -4
- package/dist/lib/utils/product-images.js +1 -1
- package/dist/lib/utils/product-share.js +1 -1
- package/dist/lib/utils/url-helpers.d.ts +6 -0
- package/dist/lib/utils/url-helpers.d.ts.map +1 -1
- package/dist/lib/utils/url-helpers.js +20 -4
- package/dist/preview/LayoutPreview.js +6 -6
- package/dist/preview/PreviewRouter.js +4 -4
- 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 +5 -5
- package/dist/styles/index.css +190 -149
- package/package.json +31 -43
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Button } from '../../../components/ui/button
|
|
4
|
-
import { Clock, ArrowRight, User, Sparkles } from 'lucide-react';
|
|
5
|
-
import { DynamicIcon } from '../../../components/ui/dynamic-icon.js';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { Button } from '../../../components/ui/button';
|
|
4
|
+
import { Clock, Star, ArrowRight, User, Sparkles } from 'lucide-react';
|
|
6
5
|
import Link from 'next/link';
|
|
7
6
|
import Image from 'next/image';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { encodePayazaFieldKey, payazaInlineBindingProps, payazaIconBindingProps } from '../../../preview/canvas/field-key.js';
|
|
13
|
-
import { BookingMultilineHeading } from './BookingMultilineHeading.js';
|
|
14
|
-
import { BookingTestimonialCard } from './BookingTestimonialCard.js';
|
|
15
|
-
import { BookingTestimonialsEmptyState } from './BookingTestimonialsEmptyState.js';
|
|
16
|
-
import { resolveBookingTestimonialsForDisplay } from './booking-testimonial-defaults.js';
|
|
17
|
-
import { getPayazaSectionInlineStyle } from '../../../lib/payaza-section-styles.js';
|
|
18
|
-
import { resolveStoreLink } from '../../../lib/layout-route-utils.js';
|
|
19
|
-
import { showLayoutDecorativeBadges } from '../../../lib/layout-badges.js';
|
|
7
|
+
import { useStore } from '../../../lib/store-context';
|
|
8
|
+
import { formatCurrency, filterActiveServices } from '../../../lib/utils';
|
|
9
|
+
import { getBannerImage, getServiceImage, getTeamMemberImage, getTextContent, getFeaturesList, getLayoutText } from '../../../lib/utils/asset-helpers';
|
|
10
|
+
import { TestimonialCard } from '../../shared/components/TestimonialCard';
|
|
20
11
|
export function BookingHomePage({ storeConfig: initialConfig }) {
|
|
21
12
|
const { store } = useStore();
|
|
22
13
|
const storeConfig = store || initialConfig;
|
|
@@ -24,7 +15,6 @@ export function BookingHomePage({ storeConfig: initialConfig }) {
|
|
|
24
15
|
const layoutConfig = storeConfig.layoutConfig;
|
|
25
16
|
// In preview mode, use mock services if none are available
|
|
26
17
|
const isPreview = (typeof window !== 'undefined' && window.__IS_PREVIEW__) || storeConfig.layoutConfig?.isPreview;
|
|
27
|
-
const payaza = (sectionKey, segments) => isPreview ? encodePayazaFieldKey(sectionKey, segments) : undefined;
|
|
28
18
|
const rawServices = storeConfig.services || [];
|
|
29
19
|
const activeServices = filterActiveServices(rawServices);
|
|
30
20
|
// Use real active services if available, otherwise if in preview, use all services (including drafts),
|
|
@@ -39,69 +29,73 @@ export function BookingHomePage({ storeConfig: initialConfig }) {
|
|
|
39
29
|
{ id: 'mock-3', name: 'Full Facial Spa', description: 'Deep cleansing and hydration treatment', price: 85, duration: 60, categoryId: 'cat-2', status: 'active', image: 'https://images.unsplash.com/photo-1540555700478-4be289fbecef?w=800', slug: 'full-facial-spa' }
|
|
40
30
|
] : []));
|
|
41
31
|
const heroBg = getBannerImage(storeConfig, 'hero_bg', 'https://images.unsplash.com/photo-1457972729786-0411a3b2b626?q=80&w=2070&auto=format&fit=crop');
|
|
42
|
-
return (_jsxs("div", { className: "min-h-screen bg-white", children: [
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
return (_jsxs("div", { className: "min-h-screen bg-white", children: [_jsxs("section", { "data-section": "hero", className: "relative h-[85vh] min-h-[600px] w-full overflow-hidden flex items-center bg-gray-900", children: [_jsxs("div", { className: "absolute inset-0 z-0", children: [_jsx(Image, { src: heroBg, alt: "Makeup Studio", fill: true, className: "object-cover" }), _jsx("div", { className: "absolute inset-0 bg-black/40" })] }), _jsx("div", { className: "container mx-auto px-4 relative z-10 text-white", children: _jsxs("div", { className: "max-w-2xl animate-fade-in-up", children: [_jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-white/20 backdrop-blur-md border border-white/30 text-white text-sm font-medium mb-6", children: [_jsx(Sparkles, { className: "w-4 h-4" }), _jsx("span", { children: getTextContent(storeConfig, 'hero_badge', 'Premium Beauty Studio') })] }), _jsx("h1", { className: "text-4xl md:text-5xl lg:text-7xl font-light mb-6 tracking-tight leading-tight", children: (() => {
|
|
33
|
+
const titleText = layoutConfig?.sections?.hero?.title || getTextContent(storeConfig, 'hero_title', 'Reveal Your\nInner Radiance.');
|
|
34
|
+
const lines = titleText.split('\n');
|
|
35
|
+
return lines.map((line, i) => (_jsx("span", { children: i === lines.length - 1 ? (_jsx("span", { className: "font-bold", children: line })) : (_jsxs(_Fragment, { children: [line, " ", _jsx("br", {})] })) }, i)));
|
|
36
|
+
})() }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 mb-10 font-light leading-relaxed max-w-lg", children: layoutConfig?.sections?.hero?.subtitle || getTextContent(storeConfig, 'hero_subtitle', storeConfig.description || "Enhance your natural beauty with our professional makeup artistry.") }), _jsxs("div", { className: "flex flex-col sm:flex-row gap-4", children: [_jsx(Link, { href: `/${storeConfig.slug}/book`, children: _jsx(Button, { size: "lg", className: "h-14 px-8 rounded-full text-lg font-medium bg-white text-black hover:bg-gray-100 transition-colors", children: layoutConfig?.sections?.hero?.primaryCTA || getLayoutText(storeConfig, 'booking.bookAppointment', getTextContent(storeConfig, 'book_btn', 'Book Appointment')) }) }), _jsx(Link, { href: `/${storeConfig.slug}/services`, children: _jsx(Button, { size: "lg", variant: "outline", className: "h-14 px-8 rounded-full text-lg font-medium border-white/80 text-white bg-white/5 hover:bg-white/15 hover:text-white transition-colors backdrop-blur-sm shadow-lg", children: layoutConfig?.sections?.hero?.secondaryCTA || getLayoutText(storeConfig, 'booking.viewServices', getTextContent(storeConfig, 'view_services_btn', 'View Services')) }) })] })] }) })] }), _jsx("section", { "data-section": "featuredServices", className: "py-12 md:py-20 px-4 bg-gray-50/50", children: _jsxs("div", { className: "container mx-auto max-w-7xl", children: [_jsxs("div", { className: "flex justify-between items-end mb-8 md:mb-12", children: [_jsxs("div", { children: [_jsx("h2", { className: "text-3xl font-bold text-gray-900 mb-2", children: layoutConfig?.sections?.featuredServices?.title || getLayoutText(storeConfig, 'sections.featuredServices.title', getTextContent(storeConfig, 'services_section_title', 'Signature Looks')) }), _jsx("p", { className: "text-gray-500", children: layoutConfig?.sections?.featuredServices?.subtitle || getLayoutText(storeConfig, 'sections.featuredServices.subtitle', getTextContent(storeConfig, 'services_section_subtitle', 'Curated styles for every occasion')) })] }), _jsxs(Link, { href: `/${storeConfig.slug}/services`, className: "flex items-center gap-2 text-sm font-bold tracking-wide uppercase hover:underline", style: { color: primaryColor }, children: [layoutConfig?.sections?.featuredServices?.viewAllLabel || getLayoutText(storeConfig, 'sections.featuredServices.viewAll', getTextContent(storeConfig, 'services_view_all', 'View All')), ' ', _jsx(ArrowRight, { className: "w-4 h-4" })] })] }), _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8", children: services.slice(0, 3).map((service) => (_jsxs(Link, { href: `/${storeConfig.slug}/book?service=${service.slug}`, className: "group cursor-pointer", children: [_jsxs("div", { className: "relative aspect-[4/3] overflow-hidden rounded-2xl mb-6 bg-gray-200", children: [_jsx(Image, { src: getServiceImage(service.image, storeConfig, "https://images.unsplash.com/photo-1522337660859-02fbefca4702?q=80&w=2069&auto=format&fit=crop"), alt: service.name, fill: true, className: "object-cover transition-transform duration-700 group-hover:scale-110" }), _jsx("div", { className: "absolute top-4 right-4 bg-white/90 backdrop-blur px-3 py-1 rounded-full text-sm font-bold shadow-sm", children: formatCurrency(service.price, service.currency || storeConfig.settings?.currency || 'USD') })] }), _jsx("h3", { className: "text-xl font-bold text-gray-900 mb-2 group-hover:text-gray-600 transition-colors", children: service.name }), _jsx("p", { className: "text-gray-500 line-clamp-2 mb-4", children: service.description }), _jsxs("div", { className: "flex items-center gap-4 text-sm text-gray-400", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Clock, { className: "w-4 h-4" }), " ", service.duration, " mins"] }), service.provider && (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(User, { className: "w-4 h-4" }), " ", service.provider.name] }))] })] }, service.id))) })] }) }), _jsx("section", { "data-section": "team", className: "py-12 md:py-24 px-4 bg-white", children: _jsx("div", { className: "container mx-auto max-w-7xl", children: (() => {
|
|
45
37
|
const teamMembers = storeConfig.layoutConfig?.pages?.team?.members || [];
|
|
46
|
-
const specialistFallback = 'https://blog.sugar.ng/files/styles/width-640/public/We%20Just%20Found%20the%20Perfect%20Nikkai%20Bridal%20Look%20for%20You.jpg?itok=HGIlGdwB';
|
|
47
|
-
const configFeaturedMember = teamSection && teamSection.show !== false
|
|
48
|
-
? {
|
|
49
|
-
name: teamSection.memberName ||
|
|
50
|
-
getLayoutText(storeConfig, 'sections.team.memberName', getTextContent(storeConfig, 'team_member_name', 'Sarah Mitchell')),
|
|
51
|
-
role: teamSection.memberRole ||
|
|
52
|
-
getLayoutText(storeConfig, 'sections.team.memberRole', getTextContent(storeConfig, 'team_member_role', 'Lead Makeup Artist')),
|
|
53
|
-
photo: (typeof teamSection.specialist_image === 'string' &&
|
|
54
|
-
teamSection.specialist_image.trim()
|
|
55
|
-
? teamSection.specialist_image.trim()
|
|
56
|
-
: null) ||
|
|
57
|
-
getTeamMemberImage(storeConfig, teamSection.memberName || 'Sarah Mitchell', 'specialist_image', specialistFallback),
|
|
58
|
-
}
|
|
59
|
-
: null;
|
|
60
38
|
const fallbackTeam = [
|
|
61
39
|
{
|
|
62
40
|
name: 'Sarah Mitchell',
|
|
63
41
|
role: 'Lead Artist',
|
|
64
|
-
photo:
|
|
65
|
-
}
|
|
42
|
+
photo: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=400"
|
|
43
|
+
}
|
|
66
44
|
];
|
|
67
|
-
const members = teamMembers.length > 0
|
|
68
|
-
|
|
69
|
-
:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
if (!featuredMember) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
return (_jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-10 md:gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [_jsx("div", { className: "aspect-[4/5] rounded-[2rem] overflow-hidden bg-gray-100 relative", "data-payaza-image": payaza('team', ['specialist_image']), children: _jsx(Image, { src: featuredMember.photo, alt: featuredMember.name, fill: true, className: "object-cover", unoptimized: true }) }), _jsxs("div", { className: "absolute bottom-8 left-8 right-8 bg-white/95 backdrop-blur p-6 rounded-2xl shadow-xl", children: [_jsx("h3", { className: "text-xl font-bold text-gray-900", "data-payaza-edit": payaza('team', ['memberName']), children: featuredMember.name }), _jsx("p", { className: "text-gray-500 mb-4", "data-payaza-edit": payaza('team', ['memberRole']), children: featuredMember.role }), _jsxs("div", { className: "flex items-center gap-1 text-yellow-500", children: [_jsx("div", { ...payazaIconBindingProps(isPreview, 'team', ['ratingIcon']), children: _jsx(DynamicIcon, { name: layoutConfig?.sections?.team?.ratingIcon || 'Star', className: "w-4 h-4 fill-current" }) }), _jsx("span", { className: "font-bold text-black", "data-payaza-edit": payaza('team', ['memberRating']), children: layoutConfig?.sections?.team?.memberRating || '5.0' }), _jsx("span", { className: "text-gray-400 text-sm ml-1", "data-payaza-edit": payaza('team', ['memberReviewCount']), children: layoutConfig?.sections?.team?.memberReviewCount || '(150+ Reviews)' })] })] })] }), _jsxs("div", { className: "space-y-8", children: [_jsx(BookingMultilineHeading, { as: "h2", className: "text-4xl md:text-5xl font-serif font-light text-gray-900 leading-tight", defaultText: storeConfig.pageFeatures?.teamPage
|
|
79
|
-
? 'Artistry in\nevery brushstroke.'
|
|
80
|
-
: 'Excellence in\nevery detail.', text: layoutConfig?.sections?.team?.title ||
|
|
81
|
-
getLayoutText(storeConfig, 'sections.team.title', getTextContent(storeConfig, 'team_section_title', storeConfig.pageFeatures?.teamPage
|
|
45
|
+
const members = teamMembers.length > 0 ? teamMembers : (isPreview ? fallbackTeam : []);
|
|
46
|
+
const featuredMember = members[0] || {
|
|
47
|
+
name: getLayoutText(storeConfig, 'sections.team.memberName', getTextContent(storeConfig, 'team_member_name', 'Sarah Mitchell')),
|
|
48
|
+
role: getLayoutText(storeConfig, 'sections.team.memberRole', getTextContent(storeConfig, 'team_member_role', 'Lead Makeup Artist')),
|
|
49
|
+
photo: getTeamMemberImage(storeConfig, 'Sarah Mitchell', 'specialist_image', "https://blog.sugar.ng/files/styles/width-640/public/We%20Just%20Found%20the%20Perfect%20Nikkai%20Bridal%20Look%20for%20You.jpg?itok=HGIlGdwB")
|
|
50
|
+
};
|
|
51
|
+
return (_jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-10 md:gap-16 items-center", children: [_jsxs("div", { className: "relative", children: [_jsx("div", { className: "aspect-[4/5] rounded-[2rem] overflow-hidden bg-gray-100 relative", children: _jsx(Image, { src: featuredMember.photo, alt: featuredMember.name, fill: true, className: "object-cover" }) }), _jsxs("div", { className: "absolute bottom-8 left-8 right-8 bg-white/95 backdrop-blur p-6 rounded-2xl shadow-xl", children: [_jsx("h3", { className: "text-xl font-bold text-gray-900", children: featuredMember.name }), _jsx("p", { className: "text-gray-500 mb-4", children: featuredMember.role }), _jsxs("div", { className: "flex items-center gap-1 text-yellow-500", children: [_jsx(Star, { className: "w-4 h-4 fill-current" }), _jsx("span", { className: "font-bold text-black", children: "5.0" }), _jsx("span", { className: "text-gray-400 text-sm ml-1", children: "(150+ Reviews)" })] })] })] }), _jsxs("div", { className: "space-y-8", children: [_jsx("h2", { className: "text-4xl md:text-5xl font-light text-gray-900 leading-tight", children: (() => {
|
|
52
|
+
const defaultTitle = storeConfig.pageFeatures?.teamPage
|
|
82
53
|
? 'Artistry in\nevery brushstroke.'
|
|
83
|
-
: 'Excellence in\nevery detail.'
|
|
54
|
+
: 'Excellence in\nevery detail.';
|
|
55
|
+
const titleText = layoutConfig?.sections?.team?.title || getLayoutText(storeConfig, 'sections.team.title', getTextContent(storeConfig, 'team_section_title', defaultTitle));
|
|
56
|
+
const lines = titleText.split('\n');
|
|
57
|
+
return lines.map((line, i) => (_jsx("span", { children: i === lines.length - 1 ? (_jsx("span", { className: "font-bold", children: line })) : (_jsxs(_Fragment, { children: [line, " ", _jsx("br", {})] })) }, i)));
|
|
58
|
+
})() }), _jsx("p", { className: "text-xl text-gray-500 font-light leading-relaxed", children: layoutConfig?.sections?.team?.subtitle || getLayoutText(storeConfig, 'sections.team.subtitle', getTextContent(storeConfig, 'team_desc', storeConfig.pageFeatures?.teamPage
|
|
84
59
|
? "Our team of certified makeup artists brings passion and precision to every look. Whether it's your big day or a night out, we create looks that enhance your natural beauty."
|
|
85
|
-
: "We bring passion and precision to every look. Whether it's your big day or a night out, we create looks that enhance your natural beauty.")) }), _jsx("div", { className: "space-y-6", children: (
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
60
|
+
: "We bring passion and precision to every look. Whether it's your big day or a night out, we create looks that enhance your natural beauty.")) }), _jsx("div", { className: "space-y-6", children: getFeaturesList(storeConfig, 'team_feature_', [
|
|
61
|
+
"Certified Professional Artists",
|
|
62
|
+
"Premium & Luxury Brands",
|
|
63
|
+
"Customized Color Matching",
|
|
64
|
+
"Long-lasting Techniques"
|
|
65
|
+
]).map((item, i) => (_jsxs("div", { className: "flex items-center gap-4", children: [_jsx("div", { className: "w-10 h-10 rounded-full flex items-center justify-center bg-gray-50 text-gray-900", children: _jsx(Star, { className: "w-5 h-5" }) }), _jsx("span", { className: "text-lg font-medium text-gray-900", children: item })] }, i))) }), storeConfig.pageFeatures?.teamPage && (_jsx(Link, { href: `/${storeConfig.slug}/team`, children: _jsx(Button, { size: "lg", className: "mt-8 h-14 px-8 rounded-full text-lg", style: { backgroundColor: primaryColor }, children: "Meet Our Team" }) })), storeConfig.pageFeatures?.portfolioPage && !storeConfig.pageFeatures?.teamPage && (_jsx(Link, { href: `/${storeConfig.slug}/portfolio`, children: _jsx(Button, { size: "lg", className: "mt-8 h-14 px-8 rounded-full text-lg", style: { backgroundColor: primaryColor }, children: "View Portfolio" }) }))] })] }));
|
|
66
|
+
})() }) }), layoutConfig?.sections?.testimonials?.show !== false && (_jsxs("section", { "data-section": "testimonials", className: "py-16 md:py-24 px-4 bg-black text-white relative overflow-hidden", children: [_jsx("div", { className: "absolute top-0 right-0 -mr-20 -mt-20 w-96 h-96 bg-white/5 rounded-full blur-3xl" }), _jsxs("div", { className: "container mx-auto max-w-7xl relative z-10", children: [_jsxs("div", { className: "text-center mb-12", children: [_jsx("h2", { className: "text-2xl md:text-4xl font-bold mb-4", children: layoutConfig?.sections?.testimonials?.title || getLayoutText(storeConfig, 'sections.testimonials.title', 'What Our Clients Say') }), layoutConfig?.sections?.testimonials?.subtitle && (_jsx("p", { className: "text-white/70 text-lg", children: layoutConfig.sections.testimonials.subtitle }))] }), (() => {
|
|
67
|
+
const backendTestimonials = layoutConfig?.sections?.testimonials?.items || [];
|
|
68
|
+
const fallbackTestimonials = [
|
|
69
|
+
{
|
|
70
|
+
id: '1',
|
|
71
|
+
name: getLayoutText(storeConfig, 'sections.testimonials.author', getTextContent(storeConfig, 'testimonial_author', 'Emily Davis')),
|
|
72
|
+
role: getLayoutText(storeConfig, 'sections.testimonials.role', getTextContent(storeConfig, 'testimonial_role', 'Bridal Client')),
|
|
73
|
+
quote: getLayoutText(storeConfig, 'sections.testimonials.quote', getTextContent(storeConfig, 'testimonial_quote', "I've never felt more beautiful. The makeup was flawless and lasted all night. Absolutely stunning work!")),
|
|
74
|
+
rating: 5,
|
|
75
|
+
image: getTeamMemberImage(storeConfig, 'Emily Davis', 'testimonial_image', "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop"),
|
|
76
|
+
order: 1
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
const testimonials = backendTestimonials.length > 0 ? backendTestimonials : (isPreview ? [
|
|
80
|
+
{
|
|
81
|
+
id: '1',
|
|
82
|
+
name: 'Emily Davis',
|
|
83
|
+
role: 'Bridal Client',
|
|
84
|
+
quote: "I've never felt more beautiful. The makeup was flawless and lasted all night. Absolutely stunning work!",
|
|
85
|
+
rating: 5,
|
|
86
|
+
image: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150",
|
|
87
|
+
order: 1
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: '2',
|
|
91
|
+
name: 'Sarah Johnson',
|
|
92
|
+
role: 'Fashion Model',
|
|
93
|
+
quote: "Professional, creative and punctual. They really know how to work with light and camera!",
|
|
94
|
+
rating: 5,
|
|
95
|
+
image: "https://images.unsplash.com/photo-1438761681033-6461ffad8d80?w=150",
|
|
96
|
+
order: 2
|
|
97
|
+
}
|
|
98
|
+
] : []);
|
|
99
|
+
return (_jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: testimonials.slice(0, 3).map((testimonial) => (_jsx("div", { className: "bg-white/5 backdrop-blur-sm rounded-2xl p-8 border border-white/10", children: _jsx(TestimonialCard, { testimonial: testimonial }) }, testimonial.id || testimonial.name))) }));
|
|
100
|
+
})()] })] })), _jsx("section", { "data-section": "marketing", className: "py-24 px-4 bg-gray-50 text-center", children: _jsxs("div", { className: "container mx-auto max-w-2xl", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold mb-6", children: layoutConfig?.sections?.marketing?.ctaTitle || getLayoutText(storeConfig, 'sections.cta.title', getTextContent(storeConfig, 'cta_title', 'Ready to glow?')) }), _jsx("p", { className: "text-gray-500 text-lg mb-10", children: layoutConfig?.sections?.marketing?.ctaDescription || getLayoutText(storeConfig, 'sections.cta.description', getTextContent(storeConfig, 'cta_description', 'Book your session today and let us create the perfect look for you.')) }), _jsx(Link, { href: `/${storeConfig.slug}/book`, children: _jsx(Button, { size: "lg", className: "h-16 px-12 rounded-full text-xl shadow-xl hover:shadow-2xl transition-all hover:-translate-y-1", style: { backgroundColor: primaryColor }, children: layoutConfig?.sections?.marketing?.ctaButton || getLayoutText(storeConfig, 'booking.bookAppointment', 'Book Appointment') }) })] }) })] }));
|
|
107
101
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { payazaInlineBindingProps } from '../../../preview/canvas/field-key
|
|
4
|
+
import { payazaInlineBindingProps } from '../../../preview/canvas/field-key';
|
|
5
5
|
function coalesceMultilineBreaks(text, fallback) {
|
|
6
6
|
if (!text || text.includes('\n'))
|
|
7
7
|
return text;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import Image from 'next/image';
|
|
4
4
|
import { Star } from 'lucide-react';
|
|
5
|
-
import { cn } from '../../../lib/utils
|
|
6
|
-
import { encodePayazaFieldKey, payazaRatingBindingProps } from '../../../preview/canvas/field-key
|
|
5
|
+
import { cn } from '../../../lib/utils';
|
|
6
|
+
import { encodePayazaFieldKey, payazaRatingBindingProps } from '../../../preview/canvas/field-key';
|
|
7
7
|
export function BookingTestimonialCard({ testimonial, index, isPreview, showRatings = true, }) {
|
|
8
8
|
const payaza = (...segments) => isPreview ? encodePayazaFieldKey('testimonials', ['items', String(index), ...segments]) : undefined;
|
|
9
9
|
const rating = Math.min(5, Math.max(1, Number(testimonial.rating) || 5));
|
|
@@ -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 { MessageCircle, Star } from 'lucide-react';
|
|
4
|
-
import { cn } from '../../../lib/utils
|
|
4
|
+
import { cn } from '../../../lib/utils';
|
|
5
5
|
function TypingDots({ className }) {
|
|
6
6
|
return (_jsx("span", { className: cn('inline-flex items-center gap-1 ml-1', className), "aria-hidden": true, children: [0, 1, 2].map((index) => (_jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-current animate-bounce", style: { animationDelay: `${index * 160}ms`, animationDuration: '1.1s' } }, index))) }));
|
|
7
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getDefaultFooterMainLinks, getDefaultFooterSupportLinks, getFooterPrimaryColumnTitle, } from '../../../lib/utils/footer-nav-defaults
|
|
2
|
-
import { mergeBookingAboutArrayItems } from './booking-about-defaults
|
|
1
|
+
import { getDefaultFooterMainLinks, getDefaultFooterSupportLinks, getFooterPrimaryColumnTitle, } from '../../../lib/utils/footer-nav-defaults';
|
|
2
|
+
import { mergeBookingAboutArrayItems } from './booking-about-defaults';
|
|
3
3
|
export const BOOKING_DEFAULT_FOOTER_MAIN_LINKS = [
|
|
4
4
|
{ id: 'f-m1', label: 'Services', href: '/services' },
|
|
5
5
|
{ id: 'f-m2', label: 'Book Appointment', href: '/book' },
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// BookEasy Standard (booking) layout — fully sandboxed exports
|
|
2
|
-
export { BookingHomePage } from './components/BookingHomePage
|
|
3
|
-
export { BookingBookPage } from './pages/BookPage
|
|
4
|
-
export { BookingServicesPage } from './pages/ServicesPage
|
|
5
|
-
export { BookingProductDetailPage } from './pages/ProductDetailPage
|
|
6
|
-
export { BookingCategoryPage } from './pages/CategoryPage
|
|
7
|
-
export { BookingCategoriesPage } from './pages/CategoriesPage
|
|
8
|
-
export { BookingAboutPage } from './pages/AboutPage
|
|
9
|
-
export { BookingContactPage } from './pages/ContactPage
|
|
2
|
+
export { BookingHomePage } from './components/BookingHomePage';
|
|
3
|
+
export { BookingBookPage } from './pages/BookPage';
|
|
4
|
+
export { BookingServicesPage } from './pages/ServicesPage';
|
|
5
|
+
export { BookingProductDetailPage } from './pages/ProductDetailPage';
|
|
6
|
+
export { BookingCategoryPage } from './pages/CategoryPage';
|
|
7
|
+
export { BookingCategoriesPage } from './pages/CategoriesPage';
|
|
8
|
+
export { BookingAboutPage } from './pages/AboutPage';
|
|
9
|
+
export { BookingContactPage } from './pages/ContactPage';
|
|
@@ -2,6 +2,6 @@ import { StoreConfig } from '../../../lib/store-types';
|
|
|
2
2
|
interface AboutPageProps {
|
|
3
3
|
storeConfig: StoreConfig;
|
|
4
4
|
}
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function AboutPage({ storeConfig: initialConfig }: AboutPageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=AboutPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/booking/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/booking/pages/AboutPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,UAAU,cAAc;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,2CA2OvE"}
|
|
@@ -1,69 +1,48 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { Heart, ArrowRight } from 'lucide-react';
|
|
4
|
-
import { Button } from '../../../components/ui/button
|
|
5
|
-
import { DotPattern } from '../../../components/ui/background-patterns
|
|
6
|
-
import {
|
|
7
|
-
import { useStore } from '../../../lib/store-context.js';
|
|
3
|
+
import { Users, Award, Heart, Leaf, MapPin, Clock, Mail, ArrowRight } from 'lucide-react';
|
|
4
|
+
import { Button } from '../../../components/ui/button';
|
|
5
|
+
import { DotPattern } from '../../../components/ui/background-patterns';
|
|
6
|
+
import { useStore } from '../../../lib/store-context';
|
|
8
7
|
import Image from 'next/image';
|
|
9
|
-
|
|
10
|
-
import { payazaInlineBindingProps, payazaIconBindingProps, encodePayazaFieldKey, } from '../../../preview/canvas/field-key.js';
|
|
11
|
-
import { showLayoutDecorativeBadges } from '../../../lib/layout-badges.js';
|
|
12
|
-
import { resolveStoreLink } from '../../../lib/layout-route-utils.js';
|
|
13
|
-
import { BOOKING_DEFAULT_STORY_IMAGE, resolveBookingAboutStats, resolveBookingAboutValues, } from '../components/booking-about-defaults.js';
|
|
14
|
-
export function BookingAboutPage({ storeConfig: initialConfig }) {
|
|
8
|
+
export function AboutPage({ storeConfig: initialConfig }) {
|
|
15
9
|
const { store } = useStore();
|
|
16
10
|
const storeConfig = store || initialConfig;
|
|
17
11
|
const primaryColor = storeConfig.branding.primaryColor;
|
|
18
12
|
const secondaryColor = storeConfig.branding.secondaryColor || primaryColor;
|
|
19
13
|
const aboutConfig = storeConfig.layoutConfig?.pages?.about;
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const emailLink = contactInfoConfig?.emailLink || '/contact';
|
|
55
|
-
const defaultAddress = [
|
|
56
|
-
storeConfig.contactInfo?.address?.street || '123 Store Street',
|
|
57
|
-
[storeConfig.contactInfo?.address?.city || 'Commerce City', storeConfig.contactInfo?.address?.state || 'ST', storeConfig.contactInfo?.address?.zipCode || '12345'].filter(Boolean).join(', '),
|
|
58
|
-
].filter(Boolean).join('\n');
|
|
59
|
-
const addressText = contactInfoConfig?.address || defaultAddress;
|
|
60
|
-
const emailAddress = contactInfoConfig?.email || storeConfig.contactInfo?.email || `hello@${storeConfig.slug}.com`;
|
|
61
|
-
const phoneNumber = contactInfoConfig?.phone || storeConfig.contactInfo?.phone || '+1 (555) 123-4567';
|
|
62
|
-
const defaultHours = 'Mon - Fri: 9am - 6pm\nSat - Sun: 10am - 4pm';
|
|
63
|
-
const hoursText = contactInfoConfig?.hours ||
|
|
64
|
-
(typeof storeConfig.locations?.[0]?.openingHours === 'string'
|
|
65
|
-
? storeConfig.locations[0].openingHours
|
|
66
|
-
: defaultHours);
|
|
67
|
-
const establishedYear = heroConfig?.establishedYear || 'Est. 2024';
|
|
68
|
-
return (_jsxs("div", { className: "min-h-screen bg-white pb-20 overflow-hidden", children: [(heroConfig?.show !== false) && (_jsxs("section", { "data-section": "hero", "data-payaza-section-key": "hero", "data-payaza-page": "about", className: "relative h-[60vh] min-h-[500px] w-full overflow-hidden", children: [_jsxs("div", { className: "absolute inset-0", "data-payaza-image": payaza('hero', ['heroImage']), children: [_jsx(Image, { src: heroImage, alt: "About Us", fill: true, className: "w-full h-full object-cover transform scale-105 animate-pulse-slow", unoptimized: true }), _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: [showLayoutDecorativeBadges() && (_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" }), _jsx("span", { ...inline('hero', ['establishedYear']), children: establishedYear })] })), _jsx("h1", { className: "text-5xl md:text-7xl font-bold text-white mb-6 tracking-tight leading-tight", children: _jsx("span", { ...inline('hero', ['title']), children: pageTitle }) }), _jsx("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: _jsx("span", { ...inline('hero', ['missionStatement']), children: missionStatement || storeConfig.description }) })] }) }) })] })), (storyConfig?.show !== false) && (_jsxs("section", { "data-section": "story", "data-payaza-section-key": "story", "data-payaza-page": "about", 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'}`, "data-payaza-image": payaza('story', ['gallerySection', String(i), 'image']), 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", unoptimized: true }) }, img.image || i))) })) : (_jsxs("div", { className: "relative aspect-[4/5] rounded-[2rem] overflow-hidden shadow-2xl", "data-payaza-image": payaza('story', ['storyImage']), children: [_jsx(Image, { src: storyImage, alt: "Our Team", fill: true, className: "w-full h-full object-cover", unoptimized: true }), _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: _jsx("span", { ...inline('story', ['galleryOverlayTitle']), children: galleryOverlayTitle }) }), _jsx("p", { className: "text-white/80 text-sm", children: _jsx("span", { ...inline('story', ['galleryOverlaySubtitle']), children: galleryOverlaySubtitle }) })] })] })), _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: _jsx("span", { ...inline('story', ['sectionLabel']), children: storyLabel }) }), _jsx("h2", { className: "text-4xl md:text-5xl font-black text-gray-900 mb-6 tracking-tight", children: _jsx("span", { ...inline('story', ['sectionHeading']), children: storyHeading }) }), _jsxs("div", { className: "prose prose-lg text-gray-600 leading-relaxed space-y-6", ...payazaInlineBindingProps(isPreview, 'story', ['content'], { rich: 'inline' }), 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." })] }))] })] }), (aboutConfig?.values?.show !== false) && (_jsx("div", { "data-section": "values", "data-payaza-section-key": "values", "data-payaza-page": "about", className: "grid grid-cols-1 sm:grid-cols-2 gap-8", children: valuesData.map((item, idx) => (_jsxs("div", { className: "flex gap-4 group", "data-payaza-group": payaza('values', ['items', String(idx)]), 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` }, ...payazaIconBindingProps(isPreview, 'values', ['items', String(idx), 'icon']), children: _jsx(DynamicIcon, { name: item.icon || 'Award', 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: _jsx("span", { ...inline('values', ['items', String(idx), 'title']), children: item.title }) }), _jsx("p", { className: "text-gray-600 text-sm leading-relaxed", children: _jsx("span", { ...inline('values', ['items', String(idx), 'description']), children: item.description }) })] })] }, item.id || idx))) }))] })] }) })] })), (aboutConfig?.stats?.show !== false) && (_jsxs("section", { "data-section": "stats", "data-payaza-section-key": "stats", "data-payaza-page": "about", 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: statsData.map((stat, idx) => (_jsxs("div", { className: "text-center group", "data-payaza-group": payaza('stats', ['items', String(idx)]), children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, children: _jsx("span", { ...inline('stats', ['items', String(idx), 'value']), children: stat.value }) }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", children: _jsx("span", { ...inline('stats', ['items', String(idx), 'label']), children: stat.label }) })] }, stat.id || idx))) }) })] })), (contactInfoConfig?.show !== false) && (_jsx("section", { "data-section": "contact-info", "data-payaza-section-key": "contact-info", "data-payaza-page": "about", className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: _jsx("span", { ...inline('contact-info', ['sectionTitle']), children: contactInfoTitle }) }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", children: _jsx("span", { ...payazaInlineBindingProps(isPreview, 'contact-info', ['sectionSubtitle'], { rich: 'inline' }), children: contactInfoSubtitle }) })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...payazaIconBindingProps(isPreview, 'contact-info', ['visitIcon']), children: _jsx(DynamicIcon, { name: visitIcon, className: "h-8 w-8 text-gray-400 group-hover:text-blue-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: _jsx("span", { ...inline('contact-info', ['visitTitle']), children: visitTitle }) }), _jsx("p", { className: "text-gray-600 leading-relaxed whitespace-pre-line", children: _jsx("span", { ...inline('contact-info', ['address']), children: addressText }) })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 border-2 border-transparent group-hover:border-orange-100 rounded-[2rem] transition-colors pointer-events-none" }), _jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...payazaIconBindingProps(isPreview, 'contact-info', ['emailIcon']), children: _jsx(DynamicIcon, { name: emailIcon, className: "h-8 w-8 text-gray-400 group-hover:text-orange-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: _jsx("span", { ...inline('contact-info', ['emailTitle']), children: emailTitle }) }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: [_jsx("span", { className: "block", ...inline('contact-info', ['email']), children: emailAddress }), _jsx("span", { className: "block", ...inline('contact-info', ['phone']), children: phoneNumber })] }), _jsx(Link, { href: resolveStoreLink(emailLink, storeConfig.slug), children: _jsxs(Button, { variant: "link", className: "text-orange-600 font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", children: [_jsx("span", { ...inline('contact-info', ['emailCTALabel']), children: emailCTALabel }), _jsx(ArrowRight, { className: "ml-1 h-4 w-4" })] }) })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", ...payazaIconBindingProps(isPreview, 'contact-info', ['hoursIcon']), children: _jsx(DynamicIcon, { name: hoursIcon, className: "h-8 w-8 text-gray-400 group-hover:text-green-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: _jsx("span", { ...inline('contact-info', ['hoursTitle']), children: hoursTitle }) }), _jsx("p", { className: "text-gray-600 leading-relaxed whitespace-pre-line", children: _jsx("span", { ...inline('contact-info', ['hours']), children: hoursText }) })] })] })] }) }))] }));
|
|
14
|
+
// Booking-specific hero image
|
|
15
|
+
const heroImage = aboutConfig?.heroImage || 'https://images.unsplash.com/photo-1522071820081-009f0129c71c?q=80&w=2070&auto=format&fit=crop';
|
|
16
|
+
const pageTitle = aboutConfig?.title || "Crafting Experiences, Delivering Joy.";
|
|
17
|
+
const pageContent = aboutConfig?.content || storeConfig.description;
|
|
18
|
+
const missionStatement = aboutConfig?.missionStatement;
|
|
19
|
+
const galleryImages = aboutConfig?.gallerySection;
|
|
20
|
+
const values = [
|
|
21
|
+
{
|
|
22
|
+
icon: Award,
|
|
23
|
+
title: "Certified Experts",
|
|
24
|
+
description: "Our professionals are highly trained and fully certified."
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
icon: Users,
|
|
28
|
+
title: "Personalized Care",
|
|
29
|
+
description: "We tailor every service to your specific needs and goals."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
icon: Heart,
|
|
33
|
+
title: "Compassion",
|
|
34
|
+
description: "We care deeply about your well-being and results."
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
icon: Leaf,
|
|
38
|
+
title: "Premium Products",
|
|
39
|
+
description: "We use only the best tools and products for our services."
|
|
40
|
+
}
|
|
41
|
+
];
|
|
42
|
+
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("p", { className: "text-xl md:text-2xl text-gray-200 max-w-2xl leading-relaxed font-light", children: missionStatement || storeConfig.description })] }) }) })] }), _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: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?q=80&w=2071&auto=format&fit=crop", alt: "Our Team", 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: "The Dream Team" }), _jsx("p", { className: "text-white/80 text-sm", children: "Working together to serve you better" })] })] })), _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("p", { className: "text-gray-600 text-sm leading-relaxed", children: item.description })] })] }, 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: [
|
|
43
|
+
{ label: "Bookings Completed", value: "8k+" },
|
|
44
|
+
{ label: "Expert Staff", value: "15+" },
|
|
45
|
+
{ label: "Services Offered", value: storeConfig.services?.length ? `${storeConfig.services.length}+` : "20+" },
|
|
46
|
+
{ label: "Years Experience", value: "10+" }
|
|
47
|
+
].map((stat, idx) => (_jsxs("div", { className: "text-center group", children: [_jsx("div", { className: "text-5xl md:text-6xl font-black mb-2 tracking-tight transition-transform group-hover:scale-110 duration-300", style: { color: primaryColor }, children: stat.value }), _jsx("div", { className: "text-gray-600 font-bold uppercase tracking-widest text-xs md:text-sm", children: stat.label })] }, idx))) }) })] }), _jsx("section", { "data-section": "contact-info", className: "py-24 px-4 sm:px-6 lg:px-8 bg-white", children: _jsxs("div", { className: "container mx-auto max-w-6xl", children: [_jsxs("div", { className: "text-center mb-16", children: [_jsx("h2", { className: "text-3xl md:text-4xl font-bold text-gray-900 mb-4", children: "Get in Touch" }), _jsx("p", { className: "text-gray-500 max-w-xl mx-auto", children: "Have questions? We'd love to hear from you. Reach out to our team via email, phone, or visit us at our store." })] }), _jsxs("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-8", children: [_jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(MapPin, { className: "h-8 w-8 text-gray-400 group-hover:text-blue-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Visit Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed", children: [storeConfig.contactInfo?.address?.street || '123 Store Street', _jsx("br", {}), storeConfig.contactInfo?.address?.city || 'Commerce City', ", ", storeConfig.contactInfo?.address?.state || 'ST', " ", storeConfig.contactInfo?.address?.zipCode || '12345'] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center relative overflow-hidden", children: [_jsx("div", { className: "absolute inset-0 border-2 border-transparent group-hover:border-orange-100 rounded-[2rem] transition-colors pointer-events-none" }), _jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Mail, { className: "h-8 w-8 text-gray-400 group-hover:text-orange-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Email Us" }), _jsxs("p", { className: "text-gray-600 leading-relaxed mb-4", children: [storeConfig.contactInfo?.email || `hello@${storeConfig.slug}.com`, _jsx("br", {}), storeConfig.contactInfo?.phone || '+1 (555) 123-4567'] }), _jsxs(Button, { variant: "link", className: "text-orange-600 font-bold p-0 h-auto hover:no-underline group-hover:translate-x-1 transition-transform", children: ["Send a message ", _jsx(ArrowRight, { className: "ml-1 h-4 w-4" })] })] }), _jsxs("div", { className: "group p-8 rounded-[2rem] bg-gray-50 border border-gray-100 hover:shadow-xl hover:-translate-y-2 transition-all duration-300 text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-6 rounded-2xl bg-white shadow-sm flex items-center justify-center group-hover:scale-110 transition-transform", children: _jsx(Clock, { className: "h-8 w-8 text-gray-400 group-hover:text-green-500 transition-colors" }) }), _jsx("h3", { className: "font-bold text-xl text-gray-900 mb-3", children: "Opening Hours" }), _jsx("p", { className: "text-gray-600 leading-relaxed", children: storeConfig.locations?.[0]?.openingHours || (_jsxs(_Fragment, { children: ["Mon - Fri: 9am - 6pm", _jsx("br", {}), "Sat - Sun: 10am - 4pm"] })) })] })] })] }) })] }));
|
|
69
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/booking/pages/BookPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"BookPage.d.ts","sourceRoot":"","sources":["../../../../src/layouts/booking/pages/BookPage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAgB,MAAM,mBAAmB,CAAC;AAqB9D,UAAU,aAAa;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,aAAa,2CAyjC1E"}
|
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useState, useEffect, useRef } from 'react';
|
|
4
4
|
import { Clock, Check, ChevronRight, ChevronLeft, ArrowLeft, ShieldCheck, CheckCircle2, Lock } from 'lucide-react';
|
|
5
|
-
import { Button } from '../../../components/ui/button
|
|
6
|
-
import { cn, formatCurrency } from '../../../lib/utils
|
|
5
|
+
import { Button } from '../../../components/ui/button';
|
|
6
|
+
import { cn, formatCurrency } from '../../../lib/utils';
|
|
7
7
|
import Link from 'next/link';
|
|
8
|
-
import { ImageWithFallback } from '../../../components/ui/image-with-fallback
|
|
9
|
-
import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt
|
|
10
|
-
import { usePayazaCheckout } from '../../../hooks/use-payaza-checkout
|
|
11
|
-
import { generateCheckoutConfig } from '../../../lib/payaza-checkout
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
8
|
+
import { ImageWithFallback } from '../../../components/ui/image-with-fallback';
|
|
9
|
+
import { RichTextExcerpt } from '../../../components/rich-text/RichTextExcerpt';
|
|
10
|
+
import { usePayazaCheckout } from '../../../hooks/use-payaza-checkout';
|
|
11
|
+
import { generateCheckoutConfig } from '../../../lib/payaza-checkout';
|
|
12
|
+
import { requireCheckoutPayazaPublicKey } from '../../../lib/payaza-public-key';
|
|
13
|
+
import { checkoutService } from '../../../lib/services/checkout.service';
|
|
14
|
+
import { paymentService, isPaymentConfirmed } from '../../../lib/services/payment.service';
|
|
15
|
+
import { useToast } from '../../../components/ui/toast';
|
|
15
16
|
import { useRouter, useSearchParams } from 'next/navigation';
|
|
16
|
-
import { useAuth } from '../../../lib/auth-context
|
|
17
|
-
import { formatDateSafe } from '../../../utils/date
|
|
18
|
-
import { encodePayazaFieldKey } from '../../../preview/canvas/field-key
|
|
19
|
-
import { getOrCreateIdempotencyKey } from '../../../lib/utils/idempotency-key
|
|
20
|
-
import { CHECKOUT_UNAVAILABLE_MESSAGE } from '../../../lib/checkout-availability
|
|
17
|
+
import { useAuth } from '../../../lib/auth-context';
|
|
18
|
+
import { formatDateSafe } from '../../../utils/date';
|
|
19
|
+
import { encodePayazaFieldKey } from '../../../preview/canvas/field-key';
|
|
20
|
+
import { getOrCreateIdempotencyKey } from '../../../lib/utils/idempotency-key';
|
|
21
|
+
import { CHECKOUT_UNAVAILABLE_MESSAGE } from '../../../lib/checkout-availability';
|
|
21
22
|
export function BookingBookPage({ storeConfig, serviceSlug }) {
|
|
22
23
|
const primaryColor = storeConfig.branding.primaryColor;
|
|
23
24
|
const layoutConfig = storeConfig.layoutConfig;
|
|
@@ -77,11 +78,7 @@ export function BookingBookPage({ storeConfig, serviceSlug }) {
|
|
|
77
78
|
}));
|
|
78
79
|
}
|
|
79
80
|
}, [isAuthenticated, user]);
|
|
80
|
-
// Payaza Configuration
|
|
81
|
-
// Do not hardcode a live key in code; require configuration via storeConfig/env.
|
|
82
|
-
const payazaPublicKey = storeConfig.payment?.payazaPublicKey || process.env.NEXT_PUBLIC_PAYAZA_PUBLIC_KEY || '';
|
|
83
81
|
const { checkout: initiateCheckout, isLoading: isPayazaLoading } = usePayazaCheckout({
|
|
84
|
-
publicKey: payazaPublicKey,
|
|
85
82
|
onSuccess: async (response) => {
|
|
86
83
|
try {
|
|
87
84
|
setIsProcessing(true);
|
|
@@ -369,10 +366,7 @@ export function BookingBookPage({ storeConfig, serviceSlug }) {
|
|
|
369
366
|
quantity: 1,
|
|
370
367
|
price: selectedService.price,
|
|
371
368
|
}];
|
|
372
|
-
|
|
373
|
-
// Key priority: backend-resolved key for the order currency (DB registry)
|
|
374
|
-
// → storeConfig.payment → NEXT_PUBLIC_PAYAZA_PUBLIC_KEY
|
|
375
|
-
const checkoutConfig = generateCheckoutConfig(checkoutItems, customerData.email, checkoutResponse.payazaPublicKey || payazaPublicKey, {
|
|
369
|
+
const checkoutConfig = generateCheckoutConfig(checkoutItems, customerData.email, requireCheckoutPayazaPublicKey(checkoutResponse), {
|
|
376
370
|
firstName: customerData.firstName,
|
|
377
371
|
lastName: customerData.lastName,
|
|
378
372
|
phone: customerData.phone,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Breadcrumbs } from '../../../components/ui/breadcrumbs
|
|
4
|
-
import { payazaInlineBindingProps, encodePayazaFieldKey } from '../../../preview/canvas/field-key
|
|
5
|
-
import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid
|
|
6
|
-
import { useStore } from '../../../lib/store-context
|
|
7
|
-
import { useCatalogLoader } from '../../../hooks/use-catalog-loader
|
|
8
|
-
import { isEditorPreviewMode, resolveStoreCategoriesForDisplay } from '../../../lib/utils
|
|
3
|
+
import { Breadcrumbs } from '../../../components/ui/breadcrumbs';
|
|
4
|
+
import { payazaInlineBindingProps, encodePayazaFieldKey } from '../../../preview/canvas/field-key';
|
|
5
|
+
import { CategoryMasonryGrid } from '../../../components/categories/category-masonry-grid';
|
|
6
|
+
import { useStore } from '../../../lib/store-context';
|
|
7
|
+
import { useCatalogLoader } from '../../../hooks/use-catalog-loader';
|
|
8
|
+
import { isEditorPreviewMode, resolveStoreCategoriesForDisplay } from '../../../lib/utils';
|
|
9
9
|
export function BookingCategoriesPage({ storeConfig: initialConfig }) {
|
|
10
10
|
const { store } = useStore();
|
|
11
11
|
const storeConfig = store || initialConfig;
|
|
@@ -3,6 +3,6 @@ interface CategoryPageProps {
|
|
|
3
3
|
storeConfig: StoreConfig;
|
|
4
4
|
categorySlug: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function CategoryPage({ storeConfig, categorySlug }: CategoryPageProps): import("react/jsx-runtime").JSX.Element;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=CategoryPage.d.ts.map
|