@thorprovider/blocks 1.0.0 → 3.0.0
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/README.md +274 -46
- package/dist/.tsbuildinfo +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts +21 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.js +147 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.js.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs +153 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.d.ts +27 -0
- package/dist/blocks/application/app-shells/app-shell-1.d.ts.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.js +150 -0
- package/dist/blocks/application/app-shells/app-shell-1.js.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.mjs +123 -0
- package/dist/blocks/application/app-shells/app-shell-1.mjs.map +1 -0
- package/dist/blocks/application/login-forms/login-page.d.ts +42 -0
- package/dist/blocks/application/login-forms/login-page.d.ts.map +1 -0
- package/dist/blocks/application/login-forms/login-page.js +209 -0
- package/dist/blocks/application/login-forms/login-page.js.map +1 -0
- package/dist/blocks/application/login-forms/login-page.mjs +185 -0
- package/dist/blocks/application/login-forms/login-page.mjs.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts +3 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js +74 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs +50 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts +42 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.js +293 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.js.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs +259 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.d.ts +41 -0
- package/dist/blocks/application/signup-forms/signup-page-1.d.ts.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.js +195 -0
- package/dist/blocks/application/signup-forms/signup-page-1.js.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.mjs +171 -0
- package/dist/blocks/application/signup-forms/signup-page-1.mjs.map +1 -0
- package/dist/blocks/application/verification/verify-1.d.ts +35 -0
- package/dist/blocks/application/verification/verify-1.d.ts.map +1 -0
- package/dist/blocks/application/verification/verify-1.js +243 -0
- package/dist/blocks/application/verification/verify-1.js.map +1 -0
- package/dist/blocks/application/verification/verify-1.mjs +219 -0
- package/dist/blocks/application/verification/verify-1.mjs.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.d.ts +22 -0
- package/dist/blocks/application/verification/verify-confetti.d.ts.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.js +145 -0
- package/dist/blocks/application/verification/verify-confetti.js.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.mjs +121 -0
- package/dist/blocks/application/verification/verify-confetti.mjs.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts +39 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js +180 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs +156 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.d.ts +236 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.d.ts.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.js +562 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.js.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.mjs +539 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts +4 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +97 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +73 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts +41 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js +115 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs +91 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts +107 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js +180 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs +156 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +13 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +180 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +156 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts +12 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +50 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +33 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js +50 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs +25 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts +5 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js +17 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +20 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +176 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +152 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +12 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +93 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +69 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js +76 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs +52 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +64 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +40 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +17 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +199 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +175 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +164 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.js +351 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +327 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.d.ts +28 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.js +78 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.mjs +52 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts +61 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.js +111 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.mjs +93 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.d.ts +28 -0
- package/dist/blocks/e-commerce/navigation/category-icon.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.js +86 -0
- package/dist/blocks/e-commerce/navigation/category-icon.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.mjs +79 -0
- package/dist/blocks/e-commerce/navigation/category-icon.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.d.ts +112 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.js +250 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.mjs +228 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts +71 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js +94 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs +68 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts +121 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js +257 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs +235 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts +25 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.js +55 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.mjs +30 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts +23 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js +127 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs +111 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts +66 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +280 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +263 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts +13 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js +83 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs +59 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts +8 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js +73 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs +49 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts +121 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js +424 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +399 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.d.ts +74 -0
- package/dist/blocks/e-commerce/order-history/order-history.d.ts.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.js +161 -0
- package/dist/blocks/e-commerce/order-history/order-history.js.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.mjs +141 -0
- package/dist/blocks/e-commerce/order-history/order-history.mjs.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.d.ts +50 -0
- package/dist/blocks/e-commerce/order-history/order-line.d.ts.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.js +75 -0
- package/dist/blocks/e-commerce/order-history/order-line.js.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.mjs +49 -0
- package/dist/blocks/e-commerce/order-history/order-line.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.d.ts +9 -0
- package/dist/blocks/e-commerce/product-categories/category-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.js +154 -0
- package/dist/blocks/e-commerce/product-categories/category-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.mjs +134 -0
- package/dist/blocks/e-commerce/product-categories/category-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.d.ts +15 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.js +101 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.mjs +97 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts +10 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.js +138 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs +114 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.d.ts +41 -0
- package/dist/blocks/e-commerce/product-categories/product-category.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.js +319 -0
- package/dist/blocks/e-commerce/product-categories/product-category.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.mjs +322 -0
- package/dist/blocks/e-commerce/product-categories/product-category.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.d.ts +47 -0
- package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.js +361 -0
- package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.mjs +337 -0
- package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.d.ts +28 -0
- package/dist/blocks/e-commerce/product-list/product-grid.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.js +92 -0
- package/dist/blocks/e-commerce/product-list/product-grid.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.mjs +68 -0
- package/dist/blocks/e-commerce/product-list/product-grid.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts +30 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js +245 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +221 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts +20 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js +71 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs +47 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts +15 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js +118 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs +94 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts +26 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js +85 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs +61 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts +32 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js +79 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs +51 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.d.ts +121 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.js +844 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.mjs +821 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts +17 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js +123 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs +99 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts +20 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +271 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +253 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts +68 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.js +84 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs +60 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.d.ts +60 -0
- package/dist/blocks/e-commerce/reviews/review-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.js +166 -0
- package/dist/blocks/e-commerce/reviews/review-card.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.mjs +139 -0
- package/dist/blocks/e-commerce/reviews/review-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.d.ts +50 -0
- package/dist/blocks/e-commerce/reviews/review-composer.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.js +180 -0
- package/dist/blocks/e-commerce/reviews/review-composer.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.mjs +155 -0
- package/dist/blocks/e-commerce/reviews/review-composer.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.d.ts +40 -0
- package/dist/blocks/e-commerce/reviews/review-list.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.js +138 -0
- package/dist/blocks/e-commerce/reviews/review-list.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.mjs +119 -0
- package/dist/blocks/e-commerce/reviews/review-list.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.d.ts +49 -0
- package/dist/blocks/e-commerce/reviews/review-summary.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.js +150 -0
- package/dist/blocks/e-commerce/reviews/review-summary.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.mjs +124 -0
- package/dist/blocks/e-commerce/reviews/review-summary.mjs.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts +98 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js +417 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs +393 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts +13 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.js +45 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.js.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.mjs +21 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.mjs.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts +163 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +810 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +786 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.d.ts +8 -0
- package/dist/blocks/marketing/banners/avatar-group.d.ts.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.js +90 -0
- package/dist/blocks/marketing/banners/avatar-group.js.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.mjs +56 -0
- package/dist/blocks/marketing/banners/avatar-group.mjs.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.d.ts +26 -0
- package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.js +177 -0
- package/dist/blocks/marketing/banners/banner-1.js.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.mjs +153 -0
- package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.d.ts +13 -0
- package/dist/blocks/marketing/cta/cta-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.js +116 -0
- package/dist/blocks/marketing/cta/cta-section-1.js.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.mjs +92 -0
- package/dist/blocks/marketing/cta/cta-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.d.ts +16 -0
- package/dist/blocks/marketing/faq/faq-block-1.d.ts.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.js +49 -0
- package/dist/blocks/marketing/faq/faq-block-1.js.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.mjs +25 -0
- package/dist/blocks/marketing/faq/faq-block-1.mjs.map +1 -0
- package/dist/blocks/marketing/features/feature.d.ts +45 -0
- package/dist/blocks/marketing/features/feature.d.ts.map +1 -0
- package/dist/blocks/marketing/features/feature.js +135 -0
- package/dist/blocks/marketing/features/feature.js.map +1 -0
- package/dist/blocks/marketing/features/feature.mjs +111 -0
- package/dist/blocks/marketing/features/feature.mjs.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.d.ts +59 -0
- package/dist/blocks/marketing/footers/footer-section.d.ts.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.js +356 -0
- package/dist/blocks/marketing/footers/footer-section.js.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.mjs +332 -0
- package/dist/blocks/marketing/footers/footer-section.mjs.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.d.ts +9 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.d.ts.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.js +92 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.js.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.mjs +58 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.mjs.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts +27 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.js +124 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.js.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.mjs +100 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts +19 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js +63 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs +39 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts +13 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js +49 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs +25 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.d.ts +80 -0
- package/dist/blocks/marketing/navbars/navbar.d.ts.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.js +484 -0
- package/dist/blocks/marketing/navbars/navbar.js.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.mjs +475 -0
- package/dist/blocks/marketing/navbars/navbar.mjs.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.d.ts +23 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.js +89 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.js.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.mjs +65 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.d.ts +19 -0
- package/dist/blocks/marketing/statistics/statistic-1.d.ts.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.js +83 -0
- package/dist/blocks/marketing/statistics/statistic-1.js.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.mjs +59 -0
- package/dist/blocks/marketing/statistics/statistic-1.mjs.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.d.ts +29 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.d.ts.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.js +173 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.js.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.mjs +155 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.mjs.map +1 -0
- package/dist/blocks/shared/reaction-toggle.d.ts +14 -0
- package/dist/blocks/shared/reaction-toggle.d.ts.map +1 -0
- package/dist/blocks/shared/reaction-toggle.js +138 -0
- package/dist/blocks/shared/reaction-toggle.js.map +1 -0
- package/dist/blocks/shared/reaction-toggle.mjs +114 -0
- package/dist/blocks/shared/reaction-toggle.mjs.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +53 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-mobile.mjs +19 -0
- package/dist/hooks/use-mobile.mjs.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +238 -0
- package/dist/index.mjs.map +1 -0
- package/{src/lib/cart.ts → dist/lib/cart.d.ts} +2 -3
- package/dist/lib/cart.d.ts.map +1 -0
- package/dist/lib/cart.js +31 -0
- package/dist/lib/cart.js.map +1 -0
- package/dist/lib/cart.mjs +7 -0
- package/dist/lib/cart.mjs.map +1 -0
- package/dist/lib/contracts.d.ts +4008 -0
- package/dist/lib/contracts.d.ts.map +1 -0
- package/dist/lib/contracts.js +828 -0
- package/dist/lib/contracts.js.map +1 -0
- package/dist/lib/contracts.mjs +737 -0
- package/dist/lib/contracts.mjs.map +1 -0
- package/dist/lib/money.d.ts +28 -0
- package/dist/lib/money.d.ts.map +1 -0
- package/dist/lib/money.js +50 -0
- package/dist/lib/money.js.map +1 -0
- package/dist/lib/money.mjs +24 -0
- package/dist/lib/money.mjs.map +1 -0
- package/dist/lib/types/menu.d.ts +40 -0
- package/dist/lib/types/menu.d.ts.map +1 -0
- package/dist/lib/types/menu.js +50 -0
- package/dist/lib/types/menu.js.map +1 -0
- package/dist/lib/types/menu.mjs +25 -0
- package/dist/lib/types/menu.mjs.map +1 -0
- package/dist/lib/types.d.ts +5 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +17 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/types.mjs +1 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +33 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.mjs +9 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/dist/ui/accordion.d.ts +8 -0
- package/dist/ui/accordion.d.ts.map +1 -0
- package/dist/ui/accordion.js +93 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/accordion.mjs +66 -0
- package/dist/ui/accordion.mjs.map +1 -0
- package/dist/ui/avatar.d.ts +12 -0
- package/dist/ui/avatar.d.ts.map +1 -0
- package/dist/ui/avatar.js +134 -0
- package/dist/ui/avatar.js.map +1 -0
- package/{src/ui/avatar.tsx → dist/ui/avatar.mjs} +67 -70
- package/dist/ui/avatar.mjs.map +1 -0
- package/dist/ui/badge.d.ts +10 -0
- package/dist/ui/badge.d.ts.map +1 -0
- package/dist/ui/badge.js +69 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/badge.mjs +44 -0
- package/dist/ui/badge.mjs.map +1 -0
- package/dist/ui/breadcrumb.d.ts +12 -0
- package/dist/ui/breadcrumb.d.ts.map +1 -0
- package/dist/ui/breadcrumb.js +134 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/breadcrumb.mjs +104 -0
- package/dist/ui/breadcrumb.mjs.map +1 -0
- package/dist/ui/button-group.d.ts +12 -0
- package/dist/ui/button-group.d.ts.map +1 -0
- package/dist/ui/button-group.js +104 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button-group.mjs +77 -0
- package/dist/ui/button-group.mjs.map +1 -0
- package/dist/ui/button.d.ts +11 -0
- package/dist/ui/button.d.ts.map +1 -0
- package/dist/ui/button.js +82 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/button.mjs +57 -0
- package/dist/ui/button.mjs.map +1 -0
- package/dist/ui/card.d.ts +10 -0
- package/dist/ui/card.d.ts.map +1 -0
- package/dist/ui/card.js +121 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/card.mjs +91 -0
- package/dist/ui/card.mjs.map +1 -0
- package/dist/ui/carousel.d.ts +20 -0
- package/dist/ui/carousel.d.ts.map +1 -0
- package/dist/ui/carousel.js +238 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/carousel.mjs +200 -0
- package/dist/ui/carousel.mjs.map +1 -0
- package/dist/ui/dialog.d.ts +18 -0
- package/dist/ui/dialog.d.ts.map +1 -0
- package/dist/ui/dialog.js +181 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dialog.mjs +148 -0
- package/dist/ui/dialog.mjs.map +1 -0
- package/dist/ui/drawer.d.ts +14 -0
- package/dist/ui/drawer.d.ts.map +1 -0
- package/dist/ui/drawer.js +163 -0
- package/dist/ui/drawer.js.map +1 -0
- package/dist/ui/drawer.mjs +130 -0
- package/dist/ui/drawer.mjs.map +1 -0
- package/dist/ui/dropdown-menu.d.ts +26 -0
- package/dist/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/dropdown-menu.js +271 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/dropdown-menu.mjs +233 -0
- package/dist/ui/dropdown-menu.mjs.map +1 -0
- package/dist/ui/empty.d.ts +12 -0
- package/dist/ui/empty.d.ts.map +1 -0
- package/dist/ui/empty.js +132 -0
- package/dist/ui/empty.js.map +1 -0
- package/dist/ui/empty.mjs +103 -0
- package/dist/ui/empty.mjs.map +1 -0
- package/dist/ui/field.d.ts +25 -0
- package/dist/ui/field.d.ts.map +1 -0
- package/dist/ui/field.js +264 -0
- package/dist/ui/field.js.map +1 -0
- package/{src/ui/field.tsx → dist/ui/field.mjs} +142 -159
- package/dist/ui/field.mjs.map +1 -0
- package/dist/ui/input-group.d.ts +17 -0
- package/dist/ui/input-group.d.ts.map +1 -0
- package/dist/ui/input-group.js +185 -0
- package/dist/ui/input-group.js.map +1 -0
- package/{src/ui/input-group.tsx → dist/ui/input-group.mjs} +92 -106
- package/dist/ui/input-group.mjs.map +1 -0
- package/dist/ui/input-otp.d.ts +12 -0
- package/dist/ui/input-otp.d.ts.map +1 -0
- package/dist/ui/input-otp.js +105 -0
- package/dist/ui/input-otp.js.map +1 -0
- package/dist/ui/input-otp.mjs +68 -0
- package/dist/ui/input-otp.mjs.map +1 -0
- package/dist/ui/input.d.ts +4 -0
- package/dist/ui/input.d.ts.map +1 -0
- package/dist/ui/input.js +46 -0
- package/dist/ui/input.js.map +1 -0
- package/{src/ui/input.tsx → dist/ui/input.mjs} +17 -15
- package/dist/ui/input.mjs.map +1 -0
- package/dist/ui/label.d.ts +5 -0
- package/dist/ui/label.d.ts.map +1 -0
- package/dist/ui/label.js +48 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/label.mjs +24 -0
- package/dist/ui/label.mjs.map +1 -0
- package/dist/ui/navigation-menu.d.ts +15 -0
- package/dist/ui/navigation-menu.d.ts.map +1 -0
- package/dist/ui/navigation-menu.js +203 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/{src/ui/navigation-menu.tsx → dist/ui/navigation-menu.mjs} +116 -112
- package/dist/ui/navigation-menu.mjs.map +1 -0
- package/dist/ui/pagination.d.ts +14 -0
- package/dist/ui/pagination.d.ts.map +1 -0
- package/dist/ui/pagination.js +149 -0
- package/dist/ui/pagination.js.map +1 -0
- package/dist/ui/pagination.mjs +123 -0
- package/dist/ui/pagination.mjs.map +1 -0
- package/dist/ui/progress.d.ts +5 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +57 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/progress.mjs +33 -0
- package/dist/ui/progress.mjs.map +1 -0
- package/dist/ui/radio-group.d.ts +6 -0
- package/dist/ui/radio-group.d.ts.map +1 -0
- package/dist/ui/radio-group.js +72 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/radio-group.mjs +47 -0
- package/dist/ui/radio-group.mjs.map +1 -0
- package/dist/ui/select.d.ts +16 -0
- package/dist/ui/select.d.ts.map +1 -0
- package/dist/ui/select.js +213 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/select.mjs +180 -0
- package/dist/ui/select.mjs.map +1 -0
- package/dist/ui/separator.d.ts +5 -0
- package/dist/ui/separator.d.ts.map +1 -0
- package/dist/ui/separator.js +52 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/separator.mjs +28 -0
- package/dist/ui/separator.mjs.map +1 -0
- package/dist/ui/sheet.d.ts +15 -0
- package/dist/ui/sheet.d.ts.map +1 -0
- package/dist/ui/sheet.js +160 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sheet.mjs +129 -0
- package/dist/ui/sheet.mjs.map +1 -0
- package/dist/ui/sidebar.d.ts +70 -0
- package/dist/ui/sidebar.d.ts.map +1 -0
- package/dist/ui/sidebar.js +697 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/sidebar.mjs +651 -0
- package/dist/ui/sidebar.mjs.map +1 -0
- package/dist/ui/skeleton.d.ts +3 -0
- package/dist/ui/skeleton.d.ts.map +1 -0
- package/dist/ui/skeleton.js +40 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/skeleton.mjs +16 -0
- package/dist/ui/skeleton.mjs.map +1 -0
- package/dist/ui/table.d.ts +11 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +147 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/table.mjs +116 -0
- package/dist/ui/table.mjs.map +1 -0
- package/dist/ui/tabs.d.ts +12 -0
- package/dist/ui/tabs.d.ts.map +1 -0
- package/dist/ui/tabs.js +121 -0
- package/dist/ui/tabs.js.map +1 -0
- package/{src/ui/tabs.tsx → dist/ui/tabs.mjs} +59 -56
- package/dist/ui/tabs.mjs.map +1 -0
- package/dist/ui/textarea.d.ts +4 -0
- package/dist/ui/textarea.d.ts.map +1 -0
- package/dist/ui/textarea.js +43 -0
- package/dist/ui/textarea.js.map +1 -0
- package/{src/ui/textarea.tsx → dist/ui/textarea.mjs} +16 -14
- package/dist/ui/textarea.mjs.map +1 -0
- package/dist/ui/toggle-group.d.ts +10 -0
- package/dist/ui/toggle-group.d.ts.map +1 -0
- package/dist/ui/toggle-group.js +105 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle-group.mjs +70 -0
- package/dist/ui/toggle-group.mjs.map +1 -0
- package/dist/ui/toggle.d.ts +10 -0
- package/dist/ui/toggle.d.ts.map +1 -0
- package/dist/ui/toggle.js +70 -0
- package/dist/ui/toggle.js.map +1 -0
- package/{src/ui/toggle.tsx → dist/ui/toggle.mjs} +25 -26
- package/dist/ui/toggle.mjs.map +1 -0
- package/dist/ui/tooltip.d.ts +8 -0
- package/dist/ui/tooltip.d.ts.map +1 -0
- package/dist/ui/tooltip.js +84 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/ui/tooltip.mjs +57 -0
- package/dist/ui/tooltip.mjs.map +1 -0
- package/package.json +8 -1
- package/AGENTS.md +0 -1
- package/CHANGELOG.md +0 -107
- package/components.json +0 -33
- package/docs/standards/data-contracts.md +0 -81
- package/docs/standards/theming.md +0 -112
- package/scripts/fix-esm-extensions.mjs +0 -40
- package/src/blocks/application/app-shells/app-shell-1-sidebar.tsx +0 -198
- package/src/blocks/application/app-shells/app-shell-1.tsx +0 -196
- package/src/blocks/application/login-forms/login-page-1.tsx +0 -246
- package/src/blocks/application/login-forms/login-page-2.tsx +0 -207
- package/src/blocks/application/password-recovery/forgot-password-page-1-brand-mark.tsx +0 -38
- package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +0 -320
- package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -231
- package/src/blocks/application/verification/verify-1.tsx +0 -307
- package/src/blocks/application/verification/verify-confetti.tsx +0 -192
- package/src/blocks/e-commerce/category-filters/category-filter-1.tsx +0 -260
- package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +0 -222
- package/src/blocks/e-commerce/category-filters/category-filter-2.test.tsx +0 -513
- package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +0 -921
- package/src/blocks/e-commerce/category-filters/category-filter-4-chip-rail.tsx +0 -57
- package/src/blocks/e-commerce/category-filters/category-filter-4-drawer.tsx +0 -124
- package/src/blocks/e-commerce/category-filters/category-filter-4-fields.tsx +0 -170
- package/src/blocks/e-commerce/category-filters/category-filter-4-sidebar.tsx +0 -52
- package/src/blocks/e-commerce/category-filters/category-filter-4-sort-sheet.tsx +0 -57
- package/src/blocks/e-commerce/category-filters/category-filter-4-state.ts +0 -68
- package/src/blocks/e-commerce/category-filters/category-filter-4.tsx +0 -298
- package/src/blocks/e-commerce/checkout-forms/card-formatting.test.ts +0 -47
- package/src/blocks/e-commerce/checkout-forms/card-formatting.ts +0 -9
- package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
- package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-contact-step.tsx +0 -96
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-country-field.tsx +0 -51
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +0 -252
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +0 -188
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-progress.tsx +0 -36
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-shipping-step.tsx +0 -156
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +0 -216
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +0 -338
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-order-summary.tsx +0 -130
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-payment-card.tsx +0 -175
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-shipping-card.tsx +0 -190
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2.tsx +0 -312
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-information-step.tsx +0 -91
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-order-summary.tsx +0 -110
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-payment-step.tsx +0 -137
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-progress.tsx +0 -68
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-review-step.tsx +0 -79
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-shipping-step.tsx +0 -172
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3.tsx +0 -392
- package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
- package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
- package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
- package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
- package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
- package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
- package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
- package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
- package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
- package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
- package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
- package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
- package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
- package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
- package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
- package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
- package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
- package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
- package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
- package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
- package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
- package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
- package/src/blocks/e-commerce/product-list/product-card.tsx +0 -424
- package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
- package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
- package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
- package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
- package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
- package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
- package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
- package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
- package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
- package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
- package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
- package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
- package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
- package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
- package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
- package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
- package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
- package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
- package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
- package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
- package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
- package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
- package/src/blocks/marketing/banners/banner-1.tsx +0 -188
- package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
- package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
- package/src/blocks/marketing/features/feature.test.tsx +0 -153
- package/src/blocks/marketing/features/feature.tsx +0 -195
- package/src/blocks/marketing/footers/footer-section-1.test.tsx +0 -117
- package/src/blocks/marketing/footers/footer-section-1.tsx +0 -178
- package/src/blocks/marketing/footers/footer-section-3.tsx +0 -192
- package/src/blocks/marketing/footers/footer-section-4.tsx +0 -355
- package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
- package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
- package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
- package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
- package/src/blocks/marketing/navbars/navbar-1.tsx +0 -267
- package/src/blocks/marketing/navbars/navbar-2.tsx +0 -351
- package/src/blocks/marketing/navbars/navbar-3.tsx +0 -303
- package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +0 -56
- package/src/blocks/marketing/navbars/navbar-4-account-menu.tsx +0 -134
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.test.tsx +0 -204
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.tsx +0 -371
- package/src/blocks/marketing/navbars/navbar-4-like-button.tsx +0 -177
- package/src/blocks/marketing/navbars/navbar-4-mobile-nav.tsx +0 -104
- package/src/blocks/marketing/navbars/navbar-4-product-grid.tsx +0 -219
- package/src/blocks/marketing/navbars/navbar-4-search-bar.tsx +0 -52
- package/src/blocks/marketing/navbars/navbar-4.test.tsx +0 -264
- package/src/blocks/marketing/navbars/navbar-4.tsx +0 -604
- package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
- package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
- package/src/blocks/marketing/testimonials/testimonial-1.tsx +0 -141
- package/src/blocks/marketing/testimonials/testimonial-2.tsx +0 -108
- package/src/blocks/shared/reaction-toggle.tsx +0 -145
- package/src/hooks/use-mobile.ts +0 -19
- package/src/index.ts +0 -285
- package/src/lib/cart.test.ts +0 -15
- package/src/lib/contracts-curated.test.ts +0 -225
- package/src/lib/contracts-server-boundary.test.ts +0 -52
- package/src/lib/contracts.test.ts +0 -173
- package/src/lib/contracts.ts +0 -795
- package/src/lib/money.test.ts +0 -64
- package/src/lib/money.ts +0 -65
- package/src/lib/types/menu.ts +0 -43
- package/src/lib/types.ts +0 -4
- package/src/lib/utils.ts +0 -10
- package/src/ui/accordion.tsx +0 -65
- package/src/ui/badge.tsx +0 -47
- package/src/ui/breadcrumb.tsx +0 -108
- package/src/ui/button-group.tsx +0 -83
- package/src/ui/button.tsx +0 -63
- package/src/ui/card.tsx +0 -91
- package/src/ui/carousel.tsx +0 -241
- package/src/ui/dialog.tsx +0 -158
- package/src/ui/drawer.tsx +0 -134
- package/src/ui/dropdown-menu.tsx +0 -256
- package/src/ui/empty.tsx +0 -103
- package/src/ui/input-otp.tsx +0 -76
- package/src/ui/label.tsx +0 -23
- package/src/ui/pagination.tsx +0 -127
- package/src/ui/progress.tsx +0 -30
- package/src/ui/radio-group.tsx +0 -44
- package/src/ui/select.tsx +0 -189
- package/src/ui/separator.tsx +0 -27
- package/src/ui/sheet.tsx +0 -142
- package/src/ui/sidebar.tsx +0 -726
- package/src/ui/skeleton.tsx +0 -13
- package/src/ui/table.tsx +0 -115
- package/src/ui/toggle-group.tsx +0 -83
- package/src/ui/tooltip.tsx +0 -56
- package/tsconfig.build.json +0 -12
- package/tsconfig.json +0 -20
- package/tsup.config.ts +0 -19
- package/vitest.config.ts +0 -17
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { Lock } from "lucide-react";
|
|
5
|
+
import { Button } from "../../../ui/button.mjs";
|
|
6
|
+
import { Card, CardContent } from "../../../ui/card.mjs";
|
|
7
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
8
|
+
import { CheckoutContactStep } from "./checkout-contact-step.mjs";
|
|
9
|
+
import { CheckoutShippingStep } from "./checkout-shipping-step.mjs";
|
|
10
|
+
import { CheckoutPaymentStep } from "./checkout-payment-step.mjs";
|
|
11
|
+
import { CheckoutReviewStep } from "./checkout-review-step.mjs";
|
|
12
|
+
import { CheckoutOrderSummaryPanel } from "./checkout-order-summary.mjs";
|
|
13
|
+
import { CheckoutProgress } from "./checkout-progress.mjs";
|
|
14
|
+
const DEFAULT_LABELS = {
|
|
15
|
+
title: "Checkout",
|
|
16
|
+
description: "",
|
|
17
|
+
orderSummaryTitle: "Order summary",
|
|
18
|
+
stepProgressLabel: "Checkout progress",
|
|
19
|
+
contactStepName: "Contact",
|
|
20
|
+
shippingStepName: "Shipping",
|
|
21
|
+
paymentStepName: "Payment",
|
|
22
|
+
reviewStepName: "Review",
|
|
23
|
+
contactHeading: "Contact information",
|
|
24
|
+
contactDescription: "We use these details to keep you informed about your order.",
|
|
25
|
+
shippingHeading: "Shipping address",
|
|
26
|
+
shippingDescription: "Tell us where the order should be delivered.",
|
|
27
|
+
paymentHeading: "Payment",
|
|
28
|
+
paymentDescription: "Choose how you want to pay for this order.",
|
|
29
|
+
reviewHeading: "Review your order",
|
|
30
|
+
reviewDescription: "Check the details below before placing the order.",
|
|
31
|
+
emailLabel: "Email",
|
|
32
|
+
firstNameLabel: "First name",
|
|
33
|
+
lastNameLabel: "Last name",
|
|
34
|
+
phoneLabel: "Phone (optional)",
|
|
35
|
+
addressLabel: "Street address",
|
|
36
|
+
cityLabel: "City",
|
|
37
|
+
stateLabel: "State / Province",
|
|
38
|
+
zipCodeLabel: "ZIP / Postal code",
|
|
39
|
+
countryLabel: "Country",
|
|
40
|
+
countryPlaceholder: "Select a country",
|
|
41
|
+
shippingMethodLegend: "Shipping method",
|
|
42
|
+
paymentMethodLegend: "Payment method",
|
|
43
|
+
noPaymentMethodsLabel: "No payment methods are available for this region.",
|
|
44
|
+
unavailableMethodLabel: "Unavailable",
|
|
45
|
+
requiresSetupLabel: "Requires additional setup",
|
|
46
|
+
saveInfoLabel: "Save this information for next time",
|
|
47
|
+
newsletterLabel: "Email me about news and offers",
|
|
48
|
+
promoCodeLabel: "Promotional code",
|
|
49
|
+
promoPlaceholder: "Enter the code",
|
|
50
|
+
promoApplyLabel: "Apply",
|
|
51
|
+
subtotalLabel: "Subtotal",
|
|
52
|
+
discountLabel: "Discount",
|
|
53
|
+
taxLabel: "Tax",
|
|
54
|
+
shippingLabel: "Shipping",
|
|
55
|
+
totalLabel: "Total",
|
|
56
|
+
eachLabel: "each",
|
|
57
|
+
totalsPendingLabel: "Updating totals\u2026",
|
|
58
|
+
totalsErrorLabel: "We could not update the order totals.",
|
|
59
|
+
totalsUnavailableLabel: "Totals are unavailable.",
|
|
60
|
+
amountUnavailableLabel: "\u2014",
|
|
61
|
+
retryLabel: "Retry",
|
|
62
|
+
reviewContactLabel: "Contact",
|
|
63
|
+
reviewShipToLabel: "Ship to",
|
|
64
|
+
reviewPaymentLabel: "Payment",
|
|
65
|
+
reviewShippingLabel: "Shipping method",
|
|
66
|
+
reviewEmptyLabel: "No details provided yet.",
|
|
67
|
+
backLabel: "Back",
|
|
68
|
+
continueLabel: "Continue",
|
|
69
|
+
completeOrderLabel: "Place order",
|
|
70
|
+
processingLabel: "Placing order\u2026",
|
|
71
|
+
submitErrorActionLabel: "Try again"
|
|
72
|
+
};
|
|
73
|
+
const BASE_STEPS = ["contact", "shipping", "payment"];
|
|
74
|
+
const STEP_COPY = {
|
|
75
|
+
contact: {
|
|
76
|
+
name: "contactStepName",
|
|
77
|
+
heading: "contactHeading",
|
|
78
|
+
description: "contactDescription"
|
|
79
|
+
},
|
|
80
|
+
shipping: {
|
|
81
|
+
name: "shippingStepName",
|
|
82
|
+
heading: "shippingHeading",
|
|
83
|
+
description: "shippingDescription"
|
|
84
|
+
},
|
|
85
|
+
payment: {
|
|
86
|
+
name: "paymentStepName",
|
|
87
|
+
heading: "paymentHeading",
|
|
88
|
+
description: "paymentDescription"
|
|
89
|
+
},
|
|
90
|
+
review: {
|
|
91
|
+
name: "reviewStepName",
|
|
92
|
+
heading: "reviewHeading",
|
|
93
|
+
description: "reviewDescription"
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
function Checkout({
|
|
97
|
+
presentation,
|
|
98
|
+
showReviewStep = false,
|
|
99
|
+
values,
|
|
100
|
+
onChange,
|
|
101
|
+
orderSummary,
|
|
102
|
+
totalsState = "idle",
|
|
103
|
+
onRetryTotals,
|
|
104
|
+
countries,
|
|
105
|
+
shippingOptions,
|
|
106
|
+
selectedShippingOptionId,
|
|
107
|
+
onSelectShippingOption,
|
|
108
|
+
paymentMethods = [],
|
|
109
|
+
onApplyPromo,
|
|
110
|
+
promoPending = false,
|
|
111
|
+
trustNotes,
|
|
112
|
+
labels,
|
|
113
|
+
formatMoney,
|
|
114
|
+
fieldErrors,
|
|
115
|
+
fieldDescriptions,
|
|
116
|
+
validateStep,
|
|
117
|
+
onStepChange,
|
|
118
|
+
onSubmit,
|
|
119
|
+
submitting = false,
|
|
120
|
+
submitError,
|
|
121
|
+
onRetrySubmit
|
|
122
|
+
}) {
|
|
123
|
+
const resolved = { ...DEFAULT_LABELS, ...labels };
|
|
124
|
+
const steps = showReviewStep ? [...BASE_STEPS, "review"] : BASE_STEPS;
|
|
125
|
+
const [stepIndex, setStepIndex] = useState(0);
|
|
126
|
+
const activeStep = steps[Math.min(stepIndex, steps.length - 1)];
|
|
127
|
+
const headingRef = useRef(null);
|
|
128
|
+
const hasMounted = useRef(false);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (presentation !== "stepper") return;
|
|
131
|
+
if (!hasMounted.current) {
|
|
132
|
+
hasMounted.current = true;
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
headingRef.current?.focus();
|
|
136
|
+
}, [presentation, activeStep]);
|
|
137
|
+
const moveTo = (nextIndex) => {
|
|
138
|
+
const next = steps[nextIndex];
|
|
139
|
+
if (!next) return;
|
|
140
|
+
setStepIndex(nextIndex);
|
|
141
|
+
onStepChange?.(next);
|
|
142
|
+
};
|
|
143
|
+
const handleContinue = () => {
|
|
144
|
+
if (validateStep && !validateStep(activeStep)) return;
|
|
145
|
+
moveTo(stepIndex + 1);
|
|
146
|
+
};
|
|
147
|
+
const handleBack = () => {
|
|
148
|
+
if (stepIndex === 0) return;
|
|
149
|
+
moveTo(stepIndex - 1);
|
|
150
|
+
};
|
|
151
|
+
const handleSubmit = () => {
|
|
152
|
+
if (submitting) return;
|
|
153
|
+
if (validateStep && !steps.every((step) => validateStep(step))) return;
|
|
154
|
+
onSubmit?.(values);
|
|
155
|
+
};
|
|
156
|
+
const renderStep = (step) => {
|
|
157
|
+
switch (step) {
|
|
158
|
+
case "contact":
|
|
159
|
+
return /* @__PURE__ */ jsx(
|
|
160
|
+
CheckoutContactStep,
|
|
161
|
+
{
|
|
162
|
+
values,
|
|
163
|
+
onChange,
|
|
164
|
+
labels: resolved,
|
|
165
|
+
showSaveInfo: labels?.saveInfoLabel !== void 0,
|
|
166
|
+
showNewsletter: labels?.newsletterLabel !== void 0,
|
|
167
|
+
fieldErrors,
|
|
168
|
+
fieldDescriptions
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
case "shipping":
|
|
172
|
+
return /* @__PURE__ */ jsx(
|
|
173
|
+
CheckoutShippingStep,
|
|
174
|
+
{
|
|
175
|
+
values,
|
|
176
|
+
onChange,
|
|
177
|
+
labels: resolved,
|
|
178
|
+
countries,
|
|
179
|
+
shippingOptions,
|
|
180
|
+
selectedShippingOptionId,
|
|
181
|
+
onSelectShippingOption,
|
|
182
|
+
formatMoney,
|
|
183
|
+
fieldErrors,
|
|
184
|
+
fieldDescriptions
|
|
185
|
+
}
|
|
186
|
+
);
|
|
187
|
+
case "payment":
|
|
188
|
+
return /* @__PURE__ */ jsx(
|
|
189
|
+
CheckoutPaymentStep,
|
|
190
|
+
{
|
|
191
|
+
values,
|
|
192
|
+
onChange,
|
|
193
|
+
labels: resolved,
|
|
194
|
+
paymentMethods,
|
|
195
|
+
fieldErrors,
|
|
196
|
+
fieldDescriptions
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
case "review":
|
|
200
|
+
return /* @__PURE__ */ jsx(
|
|
201
|
+
CheckoutReviewStep,
|
|
202
|
+
{
|
|
203
|
+
values,
|
|
204
|
+
labels: resolved,
|
|
205
|
+
selectedShippingOptionId,
|
|
206
|
+
shippingOptions,
|
|
207
|
+
paymentMethods
|
|
208
|
+
}
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
const isLastStep = stepIndex === steps.length - 1;
|
|
213
|
+
const submitAction = /* @__PURE__ */ jsxs(Button, { type: "button", onClick: handleSubmit, disabled: submitting, children: [
|
|
214
|
+
/* @__PURE__ */ jsx(Lock, { className: "size-4" }),
|
|
215
|
+
submitting ? resolved.processingLabel : resolved.completeOrderLabel
|
|
216
|
+
] });
|
|
217
|
+
const submitErrorNode = submitError ? /* @__PURE__ */ jsxs(
|
|
218
|
+
"div",
|
|
219
|
+
{
|
|
220
|
+
role: "alert",
|
|
221
|
+
className: "mt-6 flex flex-wrap items-center justify-between gap-3 rounded-md border border-destructive/50 bg-destructive/10 px-4 py-3 text-sm text-destructive",
|
|
222
|
+
children: [
|
|
223
|
+
/* @__PURE__ */ jsx("span", { children: submitError }),
|
|
224
|
+
onRetrySubmit ? /* @__PURE__ */ jsx(
|
|
225
|
+
Button,
|
|
226
|
+
{
|
|
227
|
+
type: "button",
|
|
228
|
+
variant: "outline",
|
|
229
|
+
size: "sm",
|
|
230
|
+
onClick: onRetrySubmit,
|
|
231
|
+
disabled: submitting,
|
|
232
|
+
children: resolved.submitErrorActionLabel
|
|
233
|
+
}
|
|
234
|
+
) : null
|
|
235
|
+
]
|
|
236
|
+
}
|
|
237
|
+
) : null;
|
|
238
|
+
const summaryNode = orderSummary ? /* @__PURE__ */ jsx(
|
|
239
|
+
"div",
|
|
240
|
+
{
|
|
241
|
+
className: cn(
|
|
242
|
+
"min-w-0 lg:col-span-1",
|
|
243
|
+
presentation === "single-page" && "lg:order-last"
|
|
244
|
+
),
|
|
245
|
+
children: /* @__PURE__ */ jsx(
|
|
246
|
+
CheckoutOrderSummaryPanel,
|
|
247
|
+
{
|
|
248
|
+
summary: orderSummary,
|
|
249
|
+
labels: resolved,
|
|
250
|
+
totalsState,
|
|
251
|
+
onRetryTotals,
|
|
252
|
+
promoCode: values.promoCode,
|
|
253
|
+
onPromoCodeChange: (value) => onChange("promoCode", value),
|
|
254
|
+
onApplyPromo,
|
|
255
|
+
promoPending,
|
|
256
|
+
trustNotes,
|
|
257
|
+
formatMoney
|
|
258
|
+
}
|
|
259
|
+
)
|
|
260
|
+
}
|
|
261
|
+
) : null;
|
|
262
|
+
return /* @__PURE__ */ jsxs("div", { className: "mx-auto max-w-6xl px-4 py-12 sm:px-6 lg:px-8", children: [
|
|
263
|
+
(resolved.title || resolved.description) && /* @__PURE__ */ jsxs("header", { className: "mb-8 text-center", children: [
|
|
264
|
+
resolved.title ? /* @__PURE__ */ jsx("h1", { className: "text-3xl font-bold tracking-tight sm:text-4xl", children: resolved.title }) : null,
|
|
265
|
+
resolved.description ? /* @__PURE__ */ jsx("p", { className: "mt-2 text-muted-foreground", children: resolved.description }) : null
|
|
266
|
+
] }),
|
|
267
|
+
presentation === "stepper" ? /* @__PURE__ */ jsx(
|
|
268
|
+
CheckoutProgress,
|
|
269
|
+
{
|
|
270
|
+
steps: steps.map((step) => ({
|
|
271
|
+
id: step,
|
|
272
|
+
label: resolved[STEP_COPY[step].name]
|
|
273
|
+
})),
|
|
274
|
+
currentStep: activeStep,
|
|
275
|
+
ariaLabel: resolved.stepProgressLabel
|
|
276
|
+
}
|
|
277
|
+
) : null,
|
|
278
|
+
/* @__PURE__ */ jsxs("div", { className: cn("mt-8 grid grid-cols-1 gap-6", orderSummary && "lg:grid-cols-3"), children: [
|
|
279
|
+
presentation === "single-page" ? summaryNode : null,
|
|
280
|
+
/* @__PURE__ */ jsx("div", { className: cn("min-w-0", orderSummary ? "lg:col-span-2" : "lg:col-span-3"), children: /* @__PURE__ */ jsx(Card, { children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6", children: [
|
|
281
|
+
presentation === "stepper" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
282
|
+
/* @__PURE__ */ jsxs("div", { className: "mb-6", children: [
|
|
283
|
+
/* @__PURE__ */ jsx("h2", { ref: headingRef, tabIndex: -1, className: "text-lg font-semibold outline-none", children: resolved[STEP_COPY[activeStep].heading] }),
|
|
284
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: resolved[STEP_COPY[activeStep].description] })
|
|
285
|
+
] }),
|
|
286
|
+
renderStep(activeStep)
|
|
287
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-8", children: steps.map((step) => /* @__PURE__ */ jsxs("section", { className: "flex flex-col gap-4", children: [
|
|
288
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
289
|
+
/* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold", children: resolved[STEP_COPY[step].heading] }),
|
|
290
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: resolved[STEP_COPY[step].description] })
|
|
291
|
+
] }),
|
|
292
|
+
renderStep(step)
|
|
293
|
+
] }, step)) }),
|
|
294
|
+
submitErrorNode,
|
|
295
|
+
/* @__PURE__ */ jsx(
|
|
296
|
+
"div",
|
|
297
|
+
{
|
|
298
|
+
className: cn(
|
|
299
|
+
"mt-6 flex flex-wrap items-center gap-4",
|
|
300
|
+
presentation === "stepper" ? "justify-between" : "justify-end"
|
|
301
|
+
),
|
|
302
|
+
children: presentation === "stepper" ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
303
|
+
/* @__PURE__ */ jsx(
|
|
304
|
+
Button,
|
|
305
|
+
{
|
|
306
|
+
type: "button",
|
|
307
|
+
variant: "outline",
|
|
308
|
+
onClick: handleBack,
|
|
309
|
+
disabled: stepIndex === 0 || submitting,
|
|
310
|
+
children: resolved.backLabel
|
|
311
|
+
}
|
|
312
|
+
),
|
|
313
|
+
isLastStep ? submitAction : /* @__PURE__ */ jsx(Button, { type: "button", onClick: handleContinue, disabled: submitting, children: resolved.continueLabel })
|
|
314
|
+
] }) : submitAction
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
] }) }) }),
|
|
318
|
+
presentation === "stepper" ? summaryNode : null
|
|
319
|
+
] })
|
|
320
|
+
] });
|
|
321
|
+
}
|
|
322
|
+
var checkout_default = Checkout;
|
|
323
|
+
export {
|
|
324
|
+
Checkout,
|
|
325
|
+
checkout_default as default
|
|
326
|
+
};
|
|
327
|
+
//# sourceMappingURL=checkout.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout.tsx"],"sourcesContent":["'use client'\n\nimport { useEffect, useRef, useState } from 'react'\nimport { Lock } from 'lucide-react'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent } from '../../../ui/card'\nimport { cn } from '../../../lib/utils'\nimport { CheckoutContactStep } from './checkout-contact-step'\nimport { CheckoutShippingStep } from './checkout-shipping-step'\nimport { CheckoutPaymentStep } from './checkout-payment-step'\nimport { CheckoutReviewStep } from './checkout-review-step'\nimport { CheckoutOrderSummaryPanel } from './checkout-order-summary'\nimport { CheckoutProgress } from './checkout-progress'\nimport type { Money, PaymentMethod } from '@thorprovider/types'\nimport type { CheckoutFieldErrors as GenericCheckoutFieldErrors } from './checkout-form-types'\n\n/**\n * The canonical checkout is a page-level unit. The host owns the commercial\n * state (values, selections, totals, submission); the block owns only the\n * ephemeral step index of the `stepper` presentation.\n */\nexport type CheckoutPresentation = 'single-page' | 'stepper'\n\nexport type CheckoutStepId = 'contact' | 'shipping' | 'payment' | 'review'\n\n/** Flat, controlled form values. No card data: payment entry belongs to the host provider surface. */\nexport interface CheckoutValues {\n email: string\n firstName: string\n lastName: string\n phone: string\n address: string\n city: string\n state: string\n zipCode: string\n country: string\n paymentMethod: string\n saveInfo: boolean\n newsletter: boolean\n promoCode: string\n}\n\nexport type CheckoutValuesFieldErrors = GenericCheckoutFieldErrors<keyof CheckoutValues>\n\nexport type CheckoutFieldDescriptions = Partial<Record<keyof CheckoutValues, string>>\n\nexport interface CheckoutOrderLine {\n /** Backend line identity — the stable React key. */\n id: string | number\n name: string\n variant?: string\n quantity: number\n /** Backend-authoritative line total; rendered verbatim. */\n lineTotal?: Money\n /** Optional unit price shown as secondary text; never multiplied. */\n unitPrice?: Money\n /** Optional; an absent image is omitted rather than serialized as `\"\"`. */\n image?: string\n}\n\nexport interface CheckoutTotals {\n subtotal: Money\n discount?: Money\n tax?: Money\n shipping?: Money\n total: Money\n}\n\nexport interface CheckoutOrderSummary {\n items: CheckoutOrderLine[]\n /** Backend-authoritative totals; rendered verbatim. */\n totals?: CheckoutTotals\n}\n\nexport type CheckoutTotalsState = 'idle' | 'pending' | 'error'\n\nexport interface CheckoutCountryOption {\n value: string\n label: string\n}\n\nexport interface CheckoutShippingOption {\n /** Backend shipping method id — the controlled selection identity. */\n id: string\n name: string\n price?: Money\n description?: string\n estimatedDays?: string\n}\n\nexport type CheckoutChangeHandler = (field: keyof CheckoutValues, value: string | boolean) => void\n\n/**\n * Every user-facing string is overridable. Neutral English defaults ship with\n * the block; the host supplies its own copy through this object.\n */\nexport interface CheckoutLabels {\n title: string\n description: string\n orderSummaryTitle: string\n stepProgressLabel: string\n contactStepName: string\n shippingStepName: string\n paymentStepName: string\n reviewStepName: string\n contactHeading: string\n contactDescription: string\n shippingHeading: string\n shippingDescription: string\n paymentHeading: string\n paymentDescription: string\n reviewHeading: string\n reviewDescription: string\n emailLabel: string\n firstNameLabel: string\n lastNameLabel: string\n phoneLabel: string\n addressLabel: string\n cityLabel: string\n stateLabel: string\n zipCodeLabel: string\n countryLabel: string\n countryPlaceholder: string\n shippingMethodLegend: string\n paymentMethodLegend: string\n noPaymentMethodsLabel: string\n unavailableMethodLabel: string\n requiresSetupLabel: string\n saveInfoLabel: string\n newsletterLabel: string\n promoCodeLabel: string\n promoPlaceholder: string\n promoApplyLabel: string\n subtotalLabel: string\n discountLabel: string\n taxLabel: string\n shippingLabel: string\n totalLabel: string\n eachLabel: string\n totalsPendingLabel: string\n totalsErrorLabel: string\n totalsUnavailableLabel: string\n amountUnavailableLabel: string\n retryLabel: string\n reviewContactLabel: string\n reviewShipToLabel: string\n reviewPaymentLabel: string\n reviewShippingLabel: string\n reviewEmptyLabel: string\n backLabel: string\n continueLabel: string\n completeOrderLabel: string\n processingLabel: string\n submitErrorActionLabel: string\n}\n\nconst DEFAULT_LABELS: CheckoutLabels = {\n title: 'Checkout',\n description: '',\n orderSummaryTitle: 'Order summary',\n stepProgressLabel: 'Checkout progress',\n contactStepName: 'Contact',\n shippingStepName: 'Shipping',\n paymentStepName: 'Payment',\n reviewStepName: 'Review',\n contactHeading: 'Contact information',\n contactDescription: 'We use these details to keep you informed about your order.',\n shippingHeading: 'Shipping address',\n shippingDescription: 'Tell us where the order should be delivered.',\n paymentHeading: 'Payment',\n paymentDescription: 'Choose how you want to pay for this order.',\n reviewHeading: 'Review your order',\n reviewDescription: 'Check the details below before placing the order.',\n emailLabel: 'Email',\n firstNameLabel: 'First name',\n lastNameLabel: 'Last name',\n phoneLabel: 'Phone (optional)',\n addressLabel: 'Street address',\n cityLabel: 'City',\n stateLabel: 'State / Province',\n zipCodeLabel: 'ZIP / Postal code',\n countryLabel: 'Country',\n countryPlaceholder: 'Select a country',\n shippingMethodLegend: 'Shipping method',\n paymentMethodLegend: 'Payment method',\n noPaymentMethodsLabel: 'No payment methods are available for this region.',\n unavailableMethodLabel: 'Unavailable',\n requiresSetupLabel: 'Requires additional setup',\n saveInfoLabel: 'Save this information for next time',\n newsletterLabel: 'Email me about news and offers',\n promoCodeLabel: 'Promotional code',\n promoPlaceholder: 'Enter the code',\n promoApplyLabel: 'Apply',\n subtotalLabel: 'Subtotal',\n discountLabel: 'Discount',\n taxLabel: 'Tax',\n shippingLabel: 'Shipping',\n totalLabel: 'Total',\n eachLabel: 'each',\n totalsPendingLabel: 'Updating totals…',\n totalsErrorLabel: 'We could not update the order totals.',\n totalsUnavailableLabel: 'Totals are unavailable.',\n amountUnavailableLabel: '—',\n retryLabel: 'Retry',\n reviewContactLabel: 'Contact',\n reviewShipToLabel: 'Ship to',\n reviewPaymentLabel: 'Payment',\n reviewShippingLabel: 'Shipping method',\n reviewEmptyLabel: 'No details provided yet.',\n backLabel: 'Back',\n continueLabel: 'Continue',\n completeOrderLabel: 'Place order',\n processingLabel: 'Placing order…',\n submitErrorActionLabel: 'Try again',\n}\n\nconst BASE_STEPS: CheckoutStepId[] = ['contact', 'shipping', 'payment']\n\nconst STEP_COPY: Record<\n CheckoutStepId,\n { name: keyof CheckoutLabels; heading: keyof CheckoutLabels; description: keyof CheckoutLabels }\n> = {\n contact: {\n name: 'contactStepName',\n heading: 'contactHeading',\n description: 'contactDescription',\n },\n shipping: {\n name: 'shippingStepName',\n heading: 'shippingHeading',\n description: 'shippingDescription',\n },\n payment: {\n name: 'paymentStepName',\n heading: 'paymentHeading',\n description: 'paymentDescription',\n },\n review: {\n name: 'reviewStepName',\n heading: 'reviewHeading',\n description: 'reviewDescription',\n },\n}\n\nexport interface CheckoutProps {\n presentation: CheckoutPresentation\n /** Appends a confirmation step (`stepper`) or section (`single-page`) before submission. */\n showReviewStep?: boolean\n values: CheckoutValues\n onChange: CheckoutChangeHandler\n orderSummary?: CheckoutOrderSummary\n totalsState?: CheckoutTotalsState\n onRetryTotals?: () => void\n countries?: CheckoutCountryOption[]\n shippingOptions?: CheckoutShippingOption[]\n selectedShippingOptionId?: string\n onSelectShippingOption?: (id: string) => void\n paymentMethods?: PaymentMethod[]\n onApplyPromo?: (code: string) => void\n promoPending?: boolean\n /** Optional trust copy; rendered only when supplied. */\n trustNotes?: string[]\n labels?: Partial<CheckoutLabels>\n /** Override money formatting (locale, currency). Defaults to `Money.currencyCode`. */\n formatMoney?: (money: Money) => string\n fieldErrors?: CheckoutValuesFieldErrors\n fieldDescriptions?: CheckoutFieldDescriptions\n /** Consulted before advancing and for every applicable step before submitting. */\n validateStep?: (step: CheckoutStepId) => boolean\n /** Notification only — never an authoritative controlled value. */\n onStepChange?: (step: CheckoutStepId) => void\n onSubmit?: (values: CheckoutValues) => void\n submitting?: boolean\n submitError?: string\n onRetrySubmit?: () => void\n}\n\nexport function Checkout({\n presentation,\n showReviewStep = false,\n values,\n onChange,\n orderSummary,\n totalsState = 'idle',\n onRetryTotals,\n countries,\n shippingOptions,\n selectedShippingOptionId,\n onSelectShippingOption,\n paymentMethods = [],\n onApplyPromo,\n promoPending = false,\n trustNotes,\n labels,\n formatMoney,\n fieldErrors,\n fieldDescriptions,\n validateStep,\n onStepChange,\n onSubmit,\n submitting = false,\n submitError,\n onRetrySubmit,\n}: CheckoutProps) {\n const resolved: CheckoutLabels = { ...DEFAULT_LABELS, ...labels }\n const steps = showReviewStep ? [...BASE_STEPS, 'review' as const] : BASE_STEPS\n const [stepIndex, setStepIndex] = useState(0)\n const activeStep = steps[Math.min(stepIndex, steps.length - 1)]\n\n const headingRef = useRef<HTMLHeadingElement>(null)\n const hasMounted = useRef(false)\n\n useEffect(() => {\n if (presentation !== 'stepper') return\n if (!hasMounted.current) {\n hasMounted.current = true\n return\n }\n headingRef.current?.focus()\n }, [presentation, activeStep])\n\n const moveTo = (nextIndex: number) => {\n const next = steps[nextIndex]\n if (!next) return\n setStepIndex(nextIndex)\n onStepChange?.(next)\n }\n\n const handleContinue = () => {\n if (validateStep && !validateStep(activeStep)) return\n moveTo(stepIndex + 1)\n }\n\n const handleBack = () => {\n if (stepIndex === 0) return\n moveTo(stepIndex - 1)\n }\n\n const handleSubmit = () => {\n if (submitting) return\n if (validateStep && !steps.every((step) => validateStep(step))) return\n onSubmit?.(values)\n }\n\n const renderStep = (step: CheckoutStepId) => {\n switch (step) {\n case 'contact':\n return (\n <CheckoutContactStep\n values={values}\n onChange={onChange}\n labels={resolved}\n showSaveInfo={labels?.saveInfoLabel !== undefined}\n showNewsletter={labels?.newsletterLabel !== undefined}\n fieldErrors={fieldErrors}\n fieldDescriptions={fieldDescriptions}\n />\n )\n case 'shipping':\n return (\n <CheckoutShippingStep\n values={values}\n onChange={onChange}\n labels={resolved}\n countries={countries}\n shippingOptions={shippingOptions}\n selectedShippingOptionId={selectedShippingOptionId}\n onSelectShippingOption={onSelectShippingOption}\n formatMoney={formatMoney}\n fieldErrors={fieldErrors}\n fieldDescriptions={fieldDescriptions}\n />\n )\n case 'payment':\n return (\n <CheckoutPaymentStep\n values={values}\n onChange={onChange}\n labels={resolved}\n paymentMethods={paymentMethods}\n fieldErrors={fieldErrors}\n fieldDescriptions={fieldDescriptions}\n />\n )\n case 'review':\n return (\n <CheckoutReviewStep\n values={values}\n labels={resolved}\n selectedShippingOptionId={selectedShippingOptionId}\n shippingOptions={shippingOptions}\n paymentMethods={paymentMethods}\n />\n )\n }\n }\n\n const isLastStep = stepIndex === steps.length - 1\n\n const submitAction = (\n <Button type=\"button\" onClick={handleSubmit} disabled={submitting}>\n <Lock className=\"size-4\" />\n {submitting ? resolved.processingLabel : resolved.completeOrderLabel}\n </Button>\n )\n\n const submitErrorNode = submitError ? (\n <div\n role=\"alert\"\n className=\"mt-6 flex flex-wrap items-center justify-between gap-3 rounded-md border border-destructive/50 bg-destructive/10 px-4 py-3 text-sm text-destructive\"\n >\n <span>{submitError}</span>\n {onRetrySubmit ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onRetrySubmit}\n disabled={submitting}\n >\n {resolved.submitErrorActionLabel}\n </Button>\n ) : null}\n </div>\n ) : null\n\n const summaryNode = orderSummary ? (\n <div\n className={cn(\n 'min-w-0 lg:col-span-1',\n presentation === 'single-page' && 'lg:order-last',\n )}\n >\n <CheckoutOrderSummaryPanel\n summary={orderSummary}\n labels={resolved}\n totalsState={totalsState}\n onRetryTotals={onRetryTotals}\n promoCode={values.promoCode}\n onPromoCodeChange={(value) => onChange('promoCode', value)}\n onApplyPromo={onApplyPromo}\n promoPending={promoPending}\n trustNotes={trustNotes}\n formatMoney={formatMoney}\n />\n </div>\n ) : null\n\n return (\n <div className=\"mx-auto max-w-6xl px-4 py-12 sm:px-6 lg:px-8\">\n {(resolved.title || resolved.description) && (\n <header className=\"mb-8 text-center\">\n {resolved.title ? (\n <h1 className=\"text-3xl font-bold tracking-tight sm:text-4xl\">{resolved.title}</h1>\n ) : null}\n {resolved.description ? (\n <p className=\"mt-2 text-muted-foreground\">{resolved.description}</p>\n ) : null}\n </header>\n )}\n\n {presentation === 'stepper' ? (\n <CheckoutProgress\n steps={steps.map((step) => ({\n id: step,\n label: resolved[STEP_COPY[step].name],\n }))}\n currentStep={activeStep}\n ariaLabel={resolved.stepProgressLabel}\n />\n ) : null}\n\n <div className={cn('mt-8 grid grid-cols-1 gap-6', orderSummary && 'lg:grid-cols-3')}>\n {presentation === 'single-page' ? summaryNode : null}\n\n <div className={cn('min-w-0', orderSummary ? 'lg:col-span-2' : 'lg:col-span-3')}>\n <Card>\n <CardContent className=\"p-6\">\n {presentation === 'stepper' ? (\n <>\n <div className=\"mb-6\">\n <h2 ref={headingRef} tabIndex={-1} className=\"text-lg font-semibold outline-none\">\n {resolved[STEP_COPY[activeStep].heading]}\n </h2>\n <p className=\"text-sm text-muted-foreground\">\n {resolved[STEP_COPY[activeStep].description]}\n </p>\n </div>\n\n {renderStep(activeStep)}\n </>\n ) : (\n <div className=\"flex flex-col gap-8\">\n {steps.map((step) => (\n <section key={step} className=\"flex flex-col gap-4\">\n <div>\n <h2 className=\"text-lg font-semibold\">\n {resolved[STEP_COPY[step].heading]}\n </h2>\n <p className=\"text-sm text-muted-foreground\">\n {resolved[STEP_COPY[step].description]}\n </p>\n </div>\n {renderStep(step)}\n </section>\n ))}\n </div>\n )}\n\n {submitErrorNode}\n\n <div\n className={cn(\n 'mt-6 flex flex-wrap items-center gap-4',\n presentation === 'stepper' ? 'justify-between' : 'justify-end',\n )}\n >\n {presentation === 'stepper' ? (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handleBack}\n disabled={stepIndex === 0 || submitting}\n >\n {resolved.backLabel}\n </Button>\n {isLastStep ? (\n submitAction\n ) : (\n <Button type=\"button\" onClick={handleContinue} disabled={submitting}>\n {resolved.continueLabel}\n </Button>\n )}\n </>\n ) : (\n submitAction\n )}\n </div>\n </CardContent>\n </Card>\n </div>\n\n {presentation === 'stepper' ? summaryNode : null}\n </div>\n </div>\n )\n}\n\nexport default Checkout\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const backToTopPropsSchema: z.ZodObject<{
|
|
3
|
+
threshold: z.ZodOptional<z.ZodNumber>;
|
|
4
|
+
label: z.ZodOptional<z.ZodString>;
|
|
5
|
+
className: z.ZodOptional<z.ZodString>;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
label?: string | undefined;
|
|
8
|
+
className?: string | undefined;
|
|
9
|
+
threshold?: number | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
label?: string | undefined;
|
|
12
|
+
className?: string | undefined;
|
|
13
|
+
threshold?: number | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
export type BackToTopProps = z.infer<typeof backToTopPropsSchema>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the scroll behavior for a back-to-top activation. Pure so it can be
|
|
18
|
+
* unit-tested without a DOM: reduced motion yields an instant jump.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveScrollBehavior(prefersReducedMotion: boolean): 'auto' | 'smooth';
|
|
21
|
+
/**
|
|
22
|
+
* Back-to-top control that appears once the page is scrolled past `threshold`
|
|
23
|
+
* and returns the viewport to the top. Honors `prefers-reduced-motion` (instant
|
|
24
|
+
* jump instead of a smooth scroll). Framework-agnostic; icon-only with an
|
|
25
|
+
* accessible label.
|
|
26
|
+
*/
|
|
27
|
+
export declare function BackToTop({ threshold, label, className, }: BackToTopProps): import("react").JSX.Element | null;
|
|
28
|
+
//# sourceMappingURL=back-to-top.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"back-to-top.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/navigation/back-to-top.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAA;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAIjE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,EAAE,OAAO,GAC5B,MAAM,GAAG,QAAQ,CAEnB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,SAA6B,EAC7B,KAAqB,EACrB,SAAS,GACV,EAAE,cAAc,sCAgChB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var back_to_top_exports = {};
|
|
21
|
+
__export(back_to_top_exports, {
|
|
22
|
+
BackToTop: () => BackToTop,
|
|
23
|
+
backToTopPropsSchema: () => backToTopPropsSchema,
|
|
24
|
+
resolveScrollBehavior: () => resolveScrollBehavior
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(back_to_top_exports);
|
|
27
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
28
|
+
var import_lucide_react = require("lucide-react");
|
|
29
|
+
var import_react = require("react");
|
|
30
|
+
var import_zod = require("zod");
|
|
31
|
+
var import_utils = require("../../../lib/utils.js");
|
|
32
|
+
const backToTopPropsSchema = import_zod.z.object({
|
|
33
|
+
threshold: import_zod.z.number().optional(),
|
|
34
|
+
label: import_zod.z.string().optional(),
|
|
35
|
+
className: import_zod.z.string().optional()
|
|
36
|
+
});
|
|
37
|
+
const DEFAULT_THRESHOLD = 400;
|
|
38
|
+
function resolveScrollBehavior(prefersReducedMotion) {
|
|
39
|
+
return prefersReducedMotion ? "auto" : "smooth";
|
|
40
|
+
}
|
|
41
|
+
function BackToTop({
|
|
42
|
+
threshold = DEFAULT_THRESHOLD,
|
|
43
|
+
label = "Back to top",
|
|
44
|
+
className
|
|
45
|
+
}) {
|
|
46
|
+
const [visible, setVisible] = (0, import_react.useState)(false);
|
|
47
|
+
(0, import_react.useEffect)(() => {
|
|
48
|
+
const onScroll = () => setVisible(window.scrollY > threshold);
|
|
49
|
+
onScroll();
|
|
50
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
51
|
+
return () => window.removeEventListener("scroll", onScroll);
|
|
52
|
+
}, [threshold]);
|
|
53
|
+
if (!visible) return null;
|
|
54
|
+
const handleClick = () => {
|
|
55
|
+
const reduce = typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
56
|
+
window.scrollTo({ top: 0, behavior: resolveScrollBehavior(reduce) });
|
|
57
|
+
};
|
|
58
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
59
|
+
"button",
|
|
60
|
+
{
|
|
61
|
+
type: "button",
|
|
62
|
+
onClick: handleClick,
|
|
63
|
+
"aria-label": label,
|
|
64
|
+
className: (0, import_utils.cn)(
|
|
65
|
+
"fixed bottom-4 right-4 z-40 inline-flex size-11 items-center justify-center rounded-full border bg-card text-foreground shadow-lg transition-colors hover:bg-secondary",
|
|
66
|
+
className
|
|
67
|
+
),
|
|
68
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ArrowUp, { className: "size-5", "aria-hidden": "true" })
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
73
|
+
0 && (module.exports = {
|
|
74
|
+
BackToTop,
|
|
75
|
+
backToTopPropsSchema,
|
|
76
|
+
resolveScrollBehavior
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=back-to-top.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/navigation/back-to-top.tsx"],"sourcesContent":["'use client'\n\nimport { ArrowUp } from 'lucide-react'\nimport { useEffect, useState } from 'react'\nimport { z } from 'zod'\n\nimport { cn } from '../../../lib/utils'\n\nexport const backToTopPropsSchema = z.object({\n threshold: z.number().optional(),\n label: z.string().optional(),\n className: z.string().optional(),\n})\n\nexport type BackToTopProps = z.infer<typeof backToTopPropsSchema>\n\nconst DEFAULT_THRESHOLD = 400\n\n/**\n * Resolve the scroll behavior for a back-to-top activation. Pure so it can be\n * unit-tested without a DOM: reduced motion yields an instant jump.\n */\nexport function resolveScrollBehavior(\n prefersReducedMotion: boolean,\n): 'auto' | 'smooth' {\n return prefersReducedMotion ? 'auto' : 'smooth'\n}\n\n/**\n * Back-to-top control that appears once the page is scrolled past `threshold`\n * and returns the viewport to the top. Honors `prefers-reduced-motion` (instant\n * jump instead of a smooth scroll). Framework-agnostic; icon-only with an\n * accessible label.\n */\nexport function BackToTop({\n threshold = DEFAULT_THRESHOLD,\n label = 'Back to top',\n className,\n}: BackToTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n const onScroll = () => setVisible(window.scrollY > threshold)\n onScroll()\n window.addEventListener('scroll', onScroll, { passive: true })\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n if (!visible) return null\n\n const handleClick = () => {\n const reduce =\n typeof window !== 'undefined' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n window.scrollTo({ top: 0, behavior: resolveScrollBehavior(reduce) })\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={label}\n className={cn(\n 'fixed bottom-4 right-4 z-40 inline-flex size-11 items-center justify-center rounded-full border bg-card text-foreground shadow-lg transition-colors hover:bg-secondary',\n className,\n )}\n >\n <ArrowUp className=\"size-5\" aria-hidden=\"true\" />\n </button>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmEM;AAjEN,0BAAwB;AACxB,mBAAoC;AACpC,iBAAkB;AAElB,mBAAmB;AAEZ,MAAM,uBAAuB,aAAE,OAAO;AAAA,EAC3C,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,aAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAID,MAAM,oBAAoB;AAMnB,SAAS,sBACd,sBACmB;AACnB,SAAO,uBAAuB,SAAS;AACzC;AAQO,SAAS,UAAU;AAAA,EACxB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AACF,GAAmB;AACjB,QAAM,CAAC,SAAS,UAAU,QAAI,uBAAS,KAAK;AAE5C,8BAAU,MAAM;AACd,UAAM,WAAW,MAAM,WAAW,OAAO,UAAU,SAAS;AAC5D,aAAS;AACT,WAAO,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAC7D,WAAO,MAAM,OAAO,oBAAoB,UAAU,QAAQ;AAAA,EAC5D,GAAG,CAAC,SAAS,CAAC;AAEd,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,cAAc,MAAM;AACxB,UAAM,SACJ,OAAO,WAAW,eAClB,OAAO,WAAW,kCAAkC,EAAE;AACxD,WAAO,SAAS,EAAE,KAAK,GAAG,UAAU,sBAAsB,MAAM,EAAE,CAAC;AAAA,EACrE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY;AAAA,MACZ,eAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA,sDAAC,+BAAQ,WAAU,UAAS,eAAY,QAAO;AAAA;AAAA,EACjD;AAEJ;","names":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ArrowUp } from "lucide-react";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
7
|
+
const backToTopPropsSchema = z.object({
|
|
8
|
+
threshold: z.number().optional(),
|
|
9
|
+
label: z.string().optional(),
|
|
10
|
+
className: z.string().optional()
|
|
11
|
+
});
|
|
12
|
+
const DEFAULT_THRESHOLD = 400;
|
|
13
|
+
function resolveScrollBehavior(prefersReducedMotion) {
|
|
14
|
+
return prefersReducedMotion ? "auto" : "smooth";
|
|
15
|
+
}
|
|
16
|
+
function BackToTop({
|
|
17
|
+
threshold = DEFAULT_THRESHOLD,
|
|
18
|
+
label = "Back to top",
|
|
19
|
+
className
|
|
20
|
+
}) {
|
|
21
|
+
const [visible, setVisible] = useState(false);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const onScroll = () => setVisible(window.scrollY > threshold);
|
|
24
|
+
onScroll();
|
|
25
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
26
|
+
return () => window.removeEventListener("scroll", onScroll);
|
|
27
|
+
}, [threshold]);
|
|
28
|
+
if (!visible) return null;
|
|
29
|
+
const handleClick = () => {
|
|
30
|
+
const reduce = typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
31
|
+
window.scrollTo({ top: 0, behavior: resolveScrollBehavior(reduce) });
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsx(
|
|
34
|
+
"button",
|
|
35
|
+
{
|
|
36
|
+
type: "button",
|
|
37
|
+
onClick: handleClick,
|
|
38
|
+
"aria-label": label,
|
|
39
|
+
className: cn(
|
|
40
|
+
"fixed bottom-4 right-4 z-40 inline-flex size-11 items-center justify-center rounded-full border bg-card text-foreground shadow-lg transition-colors hover:bg-secondary",
|
|
41
|
+
className
|
|
42
|
+
),
|
|
43
|
+
children: /* @__PURE__ */ jsx(ArrowUp, { className: "size-5", "aria-hidden": "true" })
|
|
44
|
+
}
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
BackToTop,
|
|
49
|
+
backToTopPropsSchema,
|
|
50
|
+
resolveScrollBehavior
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=back-to-top.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/navigation/back-to-top.tsx"],"sourcesContent":["'use client'\n\nimport { ArrowUp } from 'lucide-react'\nimport { useEffect, useState } from 'react'\nimport { z } from 'zod'\n\nimport { cn } from '../../../lib/utils'\n\nexport const backToTopPropsSchema = z.object({\n threshold: z.number().optional(),\n label: z.string().optional(),\n className: z.string().optional(),\n})\n\nexport type BackToTopProps = z.infer<typeof backToTopPropsSchema>\n\nconst DEFAULT_THRESHOLD = 400\n\n/**\n * Resolve the scroll behavior for a back-to-top activation. Pure so it can be\n * unit-tested without a DOM: reduced motion yields an instant jump.\n */\nexport function resolveScrollBehavior(\n prefersReducedMotion: boolean,\n): 'auto' | 'smooth' {\n return prefersReducedMotion ? 'auto' : 'smooth'\n}\n\n/**\n * Back-to-top control that appears once the page is scrolled past `threshold`\n * and returns the viewport to the top. Honors `prefers-reduced-motion` (instant\n * jump instead of a smooth scroll). Framework-agnostic; icon-only with an\n * accessible label.\n */\nexport function BackToTop({\n threshold = DEFAULT_THRESHOLD,\n label = 'Back to top',\n className,\n}: BackToTopProps) {\n const [visible, setVisible] = useState(false)\n\n useEffect(() => {\n const onScroll = () => setVisible(window.scrollY > threshold)\n onScroll()\n window.addEventListener('scroll', onScroll, { passive: true })\n return () => window.removeEventListener('scroll', onScroll)\n }, [threshold])\n\n if (!visible) return null\n\n const handleClick = () => {\n const reduce =\n typeof window !== 'undefined' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches\n window.scrollTo({ top: 0, behavior: resolveScrollBehavior(reduce) })\n }\n\n return (\n <button\n type=\"button\"\n onClick={handleClick}\n aria-label={label}\n className={cn(\n 'fixed bottom-4 right-4 z-40 inline-flex size-11 items-center justify-center rounded-full border bg-card text-foreground shadow-lg transition-colors hover:bg-secondary',\n className,\n )}\n >\n <ArrowUp className=\"size-5\" aria-hidden=\"true\" />\n </button>\n )\n}\n"],"mappings":";AAmEM;AAjEN,SAAS,eAAe;AACxB,SAAS,WAAW,gBAAgB;AACpC,SAAS,SAAS;AAElB,SAAS,UAAU;AAEZ,MAAM,uBAAuB,EAAE,OAAO;AAAA,EAC3C,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,OAAO,EAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAID,MAAM,oBAAoB;AAMnB,SAAS,sBACd,sBACmB;AACnB,SAAO,uBAAuB,SAAS;AACzC;AAQO,SAAS,UAAU;AAAA,EACxB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AACF,GAAmB;AACjB,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAE5C,YAAU,MAAM;AACd,UAAM,WAAW,MAAM,WAAW,OAAO,UAAU,SAAS;AAC5D,aAAS;AACT,WAAO,iBAAiB,UAAU,UAAU,EAAE,SAAS,KAAK,CAAC;AAC7D,WAAO,MAAM,OAAO,oBAAoB,UAAU,QAAQ;AAAA,EAC5D,GAAG,CAAC,SAAS,CAAC;AAEd,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,cAAc,MAAM;AACxB,UAAM,SACJ,OAAO,WAAW,eAClB,OAAO,WAAW,kCAAkC,EAAE;AACxD,WAAO,SAAS,EAAE,KAAK,GAAG,UAAU,sBAAsB,MAAM,EAAE,CAAC;AAAA,EACrE;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAY;AAAA,MACZ,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MAEA,8BAAC,WAAQ,WAAU,UAAS,eAAY,QAAO;AAAA;AAAA,EACjD;AAEJ;","names":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const breadcrumbItemSchema: z.ZodObject<{
|
|
3
|
+
label: z.ZodString;
|
|
4
|
+
href: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
label: string;
|
|
7
|
+
href?: string | undefined;
|
|
8
|
+
}, {
|
|
9
|
+
label: string;
|
|
10
|
+
href?: string | undefined;
|
|
11
|
+
}>;
|
|
12
|
+
export type BreadcrumbItemData = z.infer<typeof breadcrumbItemSchema>;
|
|
13
|
+
export declare const breadcrumbPropsSchema: z.ZodObject<{
|
|
14
|
+
items: z.ZodArray<z.ZodObject<{
|
|
15
|
+
label: z.ZodString;
|
|
16
|
+
href: z.ZodOptional<z.ZodString>;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
label: string;
|
|
19
|
+
href?: string | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
label: string;
|
|
22
|
+
href?: string | undefined;
|
|
23
|
+
}>, "many">;
|
|
24
|
+
maxItems: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
ariaLabel: z.ZodOptional<z.ZodString>;
|
|
26
|
+
backLabel: z.ZodOptional<z.ZodString>;
|
|
27
|
+
className: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
items: {
|
|
30
|
+
label: string;
|
|
31
|
+
href?: string | undefined;
|
|
32
|
+
}[];
|
|
33
|
+
className?: string | undefined;
|
|
34
|
+
maxItems?: number | undefined;
|
|
35
|
+
ariaLabel?: string | undefined;
|
|
36
|
+
backLabel?: string | undefined;
|
|
37
|
+
}, {
|
|
38
|
+
items: {
|
|
39
|
+
label: string;
|
|
40
|
+
href?: string | undefined;
|
|
41
|
+
}[];
|
|
42
|
+
className?: string | undefined;
|
|
43
|
+
maxItems?: number | undefined;
|
|
44
|
+
ariaLabel?: string | undefined;
|
|
45
|
+
backLabel?: string | undefined;
|
|
46
|
+
}>;
|
|
47
|
+
export type BreadcrumbProps = z.infer<typeof breadcrumbPropsSchema>;
|
|
48
|
+
/**
|
|
49
|
+
* Breadcrumb trail for a real navigation path (Home → … → current).
|
|
50
|
+
*
|
|
51
|
+
* Framework-agnostic and prop-driven: plain anchors (no router) and the shared
|
|
52
|
+
* shadcn breadcrumb primitives. The last item is the current page and is never
|
|
53
|
+
* a link (`aria-current="page"`); earlier items link only when an `href` is
|
|
54
|
+
* given. Long labels truncate, and trails longer than `maxItems` collapse the
|
|
55
|
+
* intermediate levels behind an ellipsis. On mobile the full list is replaced
|
|
56
|
+
* by a single back link to the parent, so a wide trail never overflows.
|
|
57
|
+
*
|
|
58
|
+
* Renders nothing when there are no labelled items.
|
|
59
|
+
*/
|
|
60
|
+
export declare function Breadcrumb({ items, maxItems, ariaLabel, backLabel, className, }: BreadcrumbProps): import("react").JSX.Element | null;
|
|
61
|
+
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/navigation/breadcrumb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAavB,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAErE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMhC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAoBnE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAA4B,EAC5B,SAAwB,EACxB,SAAS,EACT,SAAS,GACV,EAAE,eAAe,sCA6DjB"}
|