@thorprovider/blocks 2.0.0 → 3.0.1
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 +120 -8
- 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 +10 -2
- package/AGENTS.md +0 -1
- package/CHANGELOG.md +0 -155
- 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.test.tsx +0 -190
- package/src/blocks/application/login-forms/login-page.tsx +0 -240
- 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 -318
- package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -229
- package/src/blocks/application/verification/verify-1.tsx +0 -307
- package/src/blocks/application/verification/verify-confetti.tsx +0 -192
- package/src/blocks/application/viewport-ownership.test.tsx +0 -41
- package/src/blocks/e-commerce/category-filters/category-listing-filter-fields.tsx +0 -218
- package/src/blocks/e-commerce/category-filters/category-listing.test.tsx +0 -601
- package/src/blocks/e-commerce/category-filters/category-listing.tsx +0 -934
- 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-contact-step.tsx +0 -149
- package/src/blocks/e-commerce/checkout-forms/checkout-country-field.tsx +0 -53
- package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
- package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
- package/src/blocks/e-commerce/checkout-forms/checkout-order-summary.tsx +0 -230
- package/src/blocks/e-commerce/checkout-forms/checkout-payment-step.tsx +0 -100
- package/src/blocks/e-commerce/checkout-forms/checkout-progress.tsx +0 -62
- package/src/blocks/e-commerce/checkout-forms/checkout-review-step.tsx +0 -59
- package/src/blocks/e-commerce/checkout-forms/checkout-shipping-step.tsx +0 -180
- package/src/blocks/e-commerce/checkout-forms/checkout.test.tsx +0 -478
- package/src/blocks/e-commerce/checkout-forms/checkout.tsx +0 -550
- 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/navigation/storefront-navbar-account-menu.test.tsx +0 -56
- package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.tsx +0 -134
- package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.test.tsx +0 -204
- package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.tsx +0 -371
- package/src/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.tsx +0 -96
- package/src/blocks/e-commerce/navigation/storefront-navbar-search-bar.tsx +0 -52
- package/src/blocks/e-commerce/navigation/storefront-navbar.test.tsx +0 -264
- package/src/blocks/e-commerce/navigation/storefront-navbar.tsx +0 -604
- 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 -447
- 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-accessibility.test.tsx +0 -118
- package/src/blocks/marketing/footers/footer-section-actions.test.tsx +0 -131
- package/src/blocks/marketing/footers/footer-section-data.test.tsx +0 -127
- package/src/blocks/marketing/footers/footer-section-native-links.test.tsx +0 -100
- package/src/blocks/marketing/footers/footer-section-public-api.test.tsx +0 -11
- package/src/blocks/marketing/footers/footer-section.test.tsx +0 -46
- package/src/blocks/marketing/footers/footer-section.tsx +0 -532
- 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-public-api.test.tsx +0 -57
- package/src/blocks/marketing/navbars/navbar.mega.test.tsx +0 -149
- package/src/blocks/marketing/navbars/navbar.test.tsx +0 -155
- package/src/blocks/marketing/navbars/navbar.tsx +0 -735
- 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-section.test.tsx +0 -171
- package/src/blocks/marketing/testimonials/testimonial-section.tsx +0 -237
- package/src/blocks/shared/reaction-toggle.tsx +0 -145
- package/src/hooks/use-mobile.ts +0 -19
- package/src/index.ts +0 -284
- 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 -228
- package/src/lib/contracts.ts +0 -857
- 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,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var order_history_exports = {};
|
|
20
|
+
__export(order_history_exports, {
|
|
21
|
+
OrderHistory: () => OrderHistory,
|
|
22
|
+
default: () => order_history_default
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(order_history_exports);
|
|
25
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
var import_utils = require("../../../lib/utils.js");
|
|
27
|
+
var import_badge = require("../../../ui/badge.js");
|
|
28
|
+
var import_button = require("../../../ui/button.js");
|
|
29
|
+
var import_card = require("../../../ui/card.js");
|
|
30
|
+
var import_order_line = require("./order-line.js");
|
|
31
|
+
const defaultLabels = {
|
|
32
|
+
title: "Historial de pedidos",
|
|
33
|
+
description: "Consulta tus pedidos anteriores y su estado",
|
|
34
|
+
orderLabel: "Pedido {number}",
|
|
35
|
+
placedOnLabel: "Realizado el {date}",
|
|
36
|
+
quantityLabel: "Cantidad: {n}",
|
|
37
|
+
totalLabel: "Total del pedido",
|
|
38
|
+
viewOrderLabel: "Ver pedido",
|
|
39
|
+
trackOrderLabel: "Seguir pedido",
|
|
40
|
+
amountUnavailableLabel: "\u2014",
|
|
41
|
+
emptyLabel: "A\xFAn no tienes pedidos."
|
|
42
|
+
};
|
|
43
|
+
const interpolate = (template, values) => template.replace(
|
|
44
|
+
/\{(\w+)\}/g,
|
|
45
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
46
|
+
);
|
|
47
|
+
function OrderHistory({
|
|
48
|
+
orders,
|
|
49
|
+
presentation = "cards",
|
|
50
|
+
labels,
|
|
51
|
+
locale,
|
|
52
|
+
formatMoney: formatMoneyProp,
|
|
53
|
+
onViewOrder,
|
|
54
|
+
onTrackOrder,
|
|
55
|
+
className
|
|
56
|
+
}) {
|
|
57
|
+
const copy = { ...defaultLabels, ...labels };
|
|
58
|
+
const format = (0, import_order_line.resolveOrderAmountFormatter)(locale, formatMoneyProp);
|
|
59
|
+
const amount = (money) => (0, import_order_line.formatOrderAmount)(money, format, copy.amountUnavailableLabel);
|
|
60
|
+
const renderStatus = (order) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_badge.Badge, { variant: order.status.tone ?? "secondary", "data-slot": "order-history-status", children: order.status.label });
|
|
61
|
+
const renderActions = (order) => {
|
|
62
|
+
const trackable = order.trackable === true && Boolean(onTrackOrder);
|
|
63
|
+
const viewable = Boolean(onViewOrder);
|
|
64
|
+
if (!trackable && !viewable) return null;
|
|
65
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
66
|
+
trackable ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
67
|
+
import_button.Button,
|
|
68
|
+
{
|
|
69
|
+
type: "button",
|
|
70
|
+
size: "sm",
|
|
71
|
+
className: "h-8 cursor-pointer px-3 text-xs",
|
|
72
|
+
"aria-label": `${copy.trackOrderLabel}: ${order.number}`,
|
|
73
|
+
onClick: () => onTrackOrder?.(order.id),
|
|
74
|
+
children: copy.trackOrderLabel
|
|
75
|
+
}
|
|
76
|
+
) : null,
|
|
77
|
+
viewable ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
78
|
+
import_button.Button,
|
|
79
|
+
{
|
|
80
|
+
type: "button",
|
|
81
|
+
variant: "outline",
|
|
82
|
+
size: "sm",
|
|
83
|
+
className: "h-8 cursor-pointer px-3 text-xs",
|
|
84
|
+
"aria-label": `${copy.viewOrderLabel}: ${order.number}`,
|
|
85
|
+
onClick: () => onViewOrder?.(order.id),
|
|
86
|
+
children: copy.viewOrderLabel
|
|
87
|
+
}
|
|
88
|
+
) : null
|
|
89
|
+
] });
|
|
90
|
+
};
|
|
91
|
+
const renderLines = (order) => order.items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: "grid gap-4 sm:grid-cols-2", "data-slot": "order-history-lines", children: order.items.map((line) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
92
|
+
import_order_line.OrderLine,
|
|
93
|
+
{
|
|
94
|
+
name: line.name,
|
|
95
|
+
...line.image === void 0 ? {} : { image: line.image },
|
|
96
|
+
...line.details === void 0 ? {} : { details: line.details },
|
|
97
|
+
quantity: line.quantity,
|
|
98
|
+
lineTotal: line.lineTotal,
|
|
99
|
+
quantityLabel: copy.quantityLabel,
|
|
100
|
+
amountUnavailableLabel: copy.amountUnavailableLabel,
|
|
101
|
+
...format === void 0 ? {} : { formatMoney: format }
|
|
102
|
+
}
|
|
103
|
+
) }, line.id)) }) : null;
|
|
104
|
+
const renderTotal = (order) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex w-full items-center justify-between gap-3", children: [
|
|
105
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground text-sm", children: copy.totalLabel }),
|
|
106
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-base font-semibold tabular-nums", "data-slot": "order-history-total", children: amount(order.total) })
|
|
107
|
+
] });
|
|
108
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
109
|
+
"section",
|
|
110
|
+
{
|
|
111
|
+
"aria-label": copy.title,
|
|
112
|
+
className: (0, import_utils.cn)("mx-auto w-full max-w-7xl px-4 py-8 sm:px-6 lg:px-8", className),
|
|
113
|
+
"data-slot": "order-history",
|
|
114
|
+
children: [
|
|
115
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", { className: "flex flex-col gap-1", children: [
|
|
116
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: "text-2xl font-semibold tracking-tight", children: copy.title }),
|
|
117
|
+
copy.description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground text-sm", children: copy.description }) : null
|
|
118
|
+
] }),
|
|
119
|
+
orders.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
120
|
+
"p",
|
|
121
|
+
{
|
|
122
|
+
role: "status",
|
|
123
|
+
className: "text-muted-foreground mt-6 text-sm",
|
|
124
|
+
"data-slot": "order-history-empty",
|
|
125
|
+
children: copy.emptyLabel
|
|
126
|
+
}
|
|
127
|
+
) : presentation === "rows" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", { className: "mt-6 flex flex-col divide-y rounded-lg border", children: orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { className: "flex flex-col gap-3 p-4", "data-slot": "order-history-order", children: [
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
|
|
129
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "text-base font-semibold", children: interpolate(copy.orderLabel, { number: order.number }) }),
|
|
131
|
+
renderStatus(order),
|
|
132
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground text-sm", children: interpolate(copy.placedOnLabel, { date: order.date }) })
|
|
133
|
+
] }),
|
|
134
|
+
renderActions(order)
|
|
135
|
+
] }),
|
|
136
|
+
renderLines(order),
|
|
137
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "border-t pt-3", children: renderTotal(order) })
|
|
138
|
+
] }, order.id)) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-6 grid gap-6", children: orders.map((order) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { "data-slot": "order-history-order", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.Card, { children: [
|
|
139
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardHeader, { className: "flex flex-col gap-3 border-b bg-muted/40 md:flex-row md:items-center md:justify-between", children: [
|
|
140
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
141
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
142
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "text-base font-semibold", children: interpolate(copy.orderLabel, { number: order.number }) }),
|
|
143
|
+
renderStatus(order)
|
|
144
|
+
] }),
|
|
145
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground text-sm", children: interpolate(copy.placedOnLabel, { date: order.date }) })
|
|
146
|
+
] }),
|
|
147
|
+
renderActions(order)
|
|
148
|
+
] }),
|
|
149
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardContent, { className: "flex flex-col gap-4 pt-4", children: renderLines(order) }),
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardFooter, { className: "border-t", children: renderTotal(order) })
|
|
151
|
+
] }) }, order.id)) })
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
var order_history_default = OrderHistory;
|
|
157
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
158
|
+
0 && (module.exports = {
|
|
159
|
+
OrderHistory
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=order-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/order-history/order-history.tsx"],"sourcesContent":["import type { Money } from '@thorprovider/types'\nimport { cn } from '../../../lib/utils'\nimport { Badge } from '../../../ui/badge'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent, CardFooter, CardHeader } from '../../../ui/card'\nimport {\n OrderLine,\n formatOrderAmount,\n resolveOrderAmountFormatter,\n type OrderLineData,\n} from './order-line'\n\nexport type OrderHistoryPresentation = 'cards' | 'rows'\n\n/** Semantic badge tone. The host owns the mapping from its status model. */\nexport type OrderHistoryStatusTone = 'default' | 'secondary' | 'destructive' | 'outline'\n\n/** Order status as data: the label is rendered and the tone styles it. */\nexport interface OrderHistoryStatus {\n label: string\n tone?: OrderHistoryStatusTone\n}\n\n/**\n * Canonical order-history row: one order of the collection.\n *\n * `id` is the backend order identity — the React key and the value reported to\n * `onViewOrder`/`onTrackOrder`. `total` is the backend order total and is\n * rendered verbatim: the collection never sums its lines.\n */\nexport interface OrderHistoryOrder {\n /** Backend order identity. Used as the React key; never rendered. */\n id: string\n /** Human-readable order number, rendered through `orderLabel`. */\n number: string\n /** Placement date, already formatted by the host. */\n date: string\n status: OrderHistoryStatus\n /** Backend order total. Rendered verbatim; a malformed amount is unavailable. */\n total: Money\n items: OrderLineData[]\n /** When true (and `onTrackOrder` is supplied) the tracking action renders. */\n trackable?: boolean\n}\n\n/** Every user-facing string the collection renders. All are overridable. */\nexport interface OrderHistoryLabels {\n title: string\n description: string\n orderLabel: string\n placedOnLabel: string\n quantityLabel: string\n totalLabel: string\n viewOrderLabel: string\n trackOrderLabel: string\n amountUnavailableLabel: string\n emptyLabel: string\n}\n\nexport interface OrderHistoryProps {\n orders: OrderHistoryOrder[]\n /**\n * Bounded structure switch. `cards` (default) renders one card per order;\n * `rows` renders one bordered row per order. Both accept the same data and\n * report the same actions. Responsiveness is CSS only.\n */\n presentation?: OrderHistoryPresentation\n labels?: Partial<OrderHistoryLabels>\n /** Locale used to format amounts from their own currency code. */\n locale?: string\n /** Host amount formatter; wins over `locale`. */\n formatMoney?: (money: Money) => string\n /** Report the backend order id of the order whose detail should open. */\n onViewOrder?: (id: string) => void\n /** Report the backend order id of the order to track. */\n onTrackOrder?: (id: string) => void\n className?: string\n}\n\nconst defaultLabels: OrderHistoryLabels = {\n title: 'Historial de pedidos',\n description: 'Consulta tus pedidos anteriores y su estado',\n orderLabel: 'Pedido {number}',\n placedOnLabel: 'Realizado el {date}',\n quantityLabel: 'Cantidad: {n}',\n totalLabel: 'Total del pedido',\n viewOrderLabel: 'Ver pedido',\n trackOrderLabel: 'Seguir pedido',\n amountUnavailableLabel: '—',\n emptyLabel: 'Aún no tienes pedidos.',\n}\n\nconst interpolate = (template: string, values: Record<string, string | number>) =>\n template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in values ? String(values[key]) : match,\n )\n\n/**\n * The canonical order-history collection section.\n *\n * It renders exactly the orders it is given: pagination, ordering, detail,\n * loading/error states, and the money values all belong to the host. The block\n * holds no selection state, never counts the collection, never compares a\n * status label to a literal, and never measures the viewport.\n */\nexport function OrderHistory({\n orders,\n presentation = 'cards',\n labels,\n locale,\n formatMoney: formatMoneyProp,\n onViewOrder,\n onTrackOrder,\n className,\n}: OrderHistoryProps) {\n const copy: OrderHistoryLabels = { ...defaultLabels, ...labels }\n const format = resolveOrderAmountFormatter(locale, formatMoneyProp)\n const amount = (money: Money | null | undefined) =>\n formatOrderAmount(money, format, copy.amountUnavailableLabel)\n\n const renderStatus = (order: OrderHistoryOrder) => (\n <Badge variant={order.status.tone ?? 'secondary'} data-slot='order-history-status'>\n {order.status.label}\n </Badge>\n )\n\n const renderActions = (order: OrderHistoryOrder) => {\n const trackable = order.trackable === true && Boolean(onTrackOrder)\n const viewable = Boolean(onViewOrder)\n if (!trackable && !viewable) return null\n return (\n <div className='flex flex-wrap items-center gap-2'>\n {trackable ? (\n <Button\n type='button'\n size='sm'\n className='h-8 cursor-pointer px-3 text-xs'\n aria-label={`${copy.trackOrderLabel}: ${order.number}`}\n onClick={() => onTrackOrder?.(order.id)}\n >\n {copy.trackOrderLabel}\n </Button>\n ) : null}\n {viewable ? (\n <Button\n type='button'\n variant='outline'\n size='sm'\n className='h-8 cursor-pointer px-3 text-xs'\n aria-label={`${copy.viewOrderLabel}: ${order.number}`}\n onClick={() => onViewOrder?.(order.id)}\n >\n {copy.viewOrderLabel}\n </Button>\n ) : null}\n </div>\n )\n }\n\n const renderLines = (order: OrderHistoryOrder) =>\n order.items.length > 0 ? (\n <ul className='grid gap-4 sm:grid-cols-2' data-slot='order-history-lines'>\n {order.items.map((line) => (\n <li key={line.id}>\n <OrderLine\n name={line.name}\n {...(line.image === undefined ? {} : { image: line.image })}\n {...(line.details === undefined ? {} : { details: line.details })}\n quantity={line.quantity}\n lineTotal={line.lineTotal}\n quantityLabel={copy.quantityLabel}\n amountUnavailableLabel={copy.amountUnavailableLabel}\n {...(format === undefined ? {} : { formatMoney: format })}\n />\n </li>\n ))}\n </ul>\n ) : null\n\n const renderTotal = (order: OrderHistoryOrder) => (\n <div className='flex w-full items-center justify-between gap-3'>\n <span className='text-muted-foreground text-sm'>{copy.totalLabel}</span>\n <span className='text-base font-semibold tabular-nums' data-slot='order-history-total'>\n {amount(order.total)}\n </span>\n </div>\n )\n\n return (\n <section\n aria-label={copy.title}\n className={cn('mx-auto w-full max-w-7xl px-4 py-8 sm:px-6 lg:px-8', className)}\n data-slot='order-history'\n >\n <header className='flex flex-col gap-1'>\n <h2 className='text-2xl font-semibold tracking-tight'>{copy.title}</h2>\n {copy.description ? (\n <p className='text-muted-foreground text-sm'>{copy.description}</p>\n ) : null}\n </header>\n\n {orders.length === 0 ? (\n <p\n role='status'\n className='text-muted-foreground mt-6 text-sm'\n data-slot='order-history-empty'\n >\n {copy.emptyLabel}\n </p>\n ) : presentation === 'rows' ? (\n <ul className='mt-6 flex flex-col divide-y rounded-lg border'>\n {orders.map((order) => (\n <li key={order.id} className='flex flex-col gap-3 p-4' data-slot='order-history-order'>\n <div className='flex flex-wrap items-center justify-between gap-3'>\n <div className='flex flex-wrap items-center gap-2'>\n <h3 className='text-base font-semibold'>\n {interpolate(copy.orderLabel, { number: order.number })}\n </h3>\n {renderStatus(order)}\n <span className='text-muted-foreground text-sm'>\n {interpolate(copy.placedOnLabel, { date: order.date })}\n </span>\n </div>\n {renderActions(order)}\n </div>\n {renderLines(order)}\n <div className='border-t pt-3'>{renderTotal(order)}</div>\n </li>\n ))}\n </ul>\n ) : (\n <div className='mt-6 grid gap-6'>\n {orders.map((order) => (\n <article key={order.id} data-slot='order-history-order'>\n <Card>\n <CardHeader className='flex flex-col gap-3 border-b bg-muted/40 md:flex-row md:items-center md:justify-between'>\n <div className='flex flex-col gap-1.5'>\n <div className='flex flex-wrap items-center gap-2'>\n <h3 className='text-base font-semibold'>\n {interpolate(copy.orderLabel, { number: order.number })}\n </h3>\n {renderStatus(order)}\n </div>\n <p className='text-muted-foreground text-sm'>\n {interpolate(copy.placedOnLabel, { date: order.date })}\n </p>\n </div>\n {renderActions(order)}\n </CardHeader>\n <CardContent className='flex flex-col gap-4 pt-4'>{renderLines(order)}</CardContent>\n <CardFooter className='border-t'>{renderTotal(order)}</CardFooter>\n </Card>\n </article>\n ))}\n </div>\n )}\n </section>\n )\n}\n\nexport default OrderHistory\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyHI;AAxHJ,mBAAmB;AACnB,mBAAsB;AACtB,oBAAuB;AACvB,kBAA0D;AAC1D,wBAKO;AAqEP,MAAM,gBAAoC;AAAA,EACxC,OAAO;AAAA,EACP,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,YAAY;AACd;AAEA,MAAM,cAAc,CAAC,UAAkB,WACrC,SAAS;AAAA,EAAQ;AAAA,EAAc,CAAC,OAAO,QACrC,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AACxC;AAUK,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,QAAM,OAA2B,EAAE,GAAG,eAAe,GAAG,OAAO;AAC/D,QAAM,aAAS,+CAA4B,QAAQ,eAAe;AAClE,QAAM,SAAS,CAAC,cACd,qCAAkB,OAAO,QAAQ,KAAK,sBAAsB;AAE9D,QAAM,eAAe,CAAC,UACpB,4CAAC,sBAAM,SAAS,MAAM,OAAO,QAAQ,aAAa,aAAU,wBACzD,gBAAM,OAAO,OAChB;AAGF,QAAM,gBAAgB,CAAC,UAA6B;AAClD,UAAM,YAAY,MAAM,cAAc,QAAQ,QAAQ,YAAY;AAClE,UAAM,WAAW,QAAQ,WAAW;AACpC,QAAI,CAAC,aAAa,CAAC,SAAU,QAAO;AACpC,WACE,6CAAC,SAAI,WAAU,qCACZ;AAAA,kBACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAY,GAAG,KAAK,eAAe,KAAK,MAAM,MAAM;AAAA,UACpD,SAAS,MAAM,eAAe,MAAM,EAAE;AAAA,UAErC,eAAK;AAAA;AAAA,MACR,IACE;AAAA,MACH,WACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAY,GAAG,KAAK,cAAc,KAAK,MAAM,MAAM;AAAA,UACnD,SAAS,MAAM,cAAc,MAAM,EAAE;AAAA,UAEpC,eAAK;AAAA;AAAA,MACR,IACE;AAAA,OACN;AAAA,EAEJ;AAEA,QAAM,cAAc,CAAC,UACnB,MAAM,MAAM,SAAS,IACnB,4CAAC,QAAG,WAAU,6BAA4B,aAAU,uBACjD,gBAAM,MAAM,IAAI,CAAC,SAChB,4CAAC,QACC;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,KAAK;AAAA,MACV,GAAI,KAAK,UAAU,SAAY,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM;AAAA,MACxD,GAAI,KAAK,YAAY,SAAY,CAAC,IAAI,EAAE,SAAS,KAAK,QAAQ;AAAA,MAC/D,UAAU,KAAK;AAAA,MACf,WAAW,KAAK;AAAA,MAChB,eAAe,KAAK;AAAA,MACpB,wBAAwB,KAAK;AAAA,MAC5B,GAAI,WAAW,SAAY,CAAC,IAAI,EAAE,aAAa,OAAO;AAAA;AAAA,EACzD,KAVO,KAAK,EAWd,CACD,GACH,IACE;AAEN,QAAM,cAAc,CAAC,UACnB,6CAAC,SAAI,WAAU,kDACb;AAAA,gDAAC,UAAK,WAAU,iCAAiC,eAAK,YAAW;AAAA,IACjE,4CAAC,UAAK,WAAU,wCAAuC,aAAU,uBAC9D,iBAAO,MAAM,KAAK,GACrB;AAAA,KACF;AAGF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,KAAK;AAAA,MACjB,eAAW,iBAAG,sDAAsD,SAAS;AAAA,MAC7E,aAAU;AAAA,MAEV;AAAA,qDAAC,YAAO,WAAU,uBAChB;AAAA,sDAAC,QAAG,WAAU,yCAAyC,eAAK,OAAM;AAAA,UACjE,KAAK,cACJ,4CAAC,OAAE,WAAU,iCAAiC,eAAK,aAAY,IAC7D;AAAA,WACN;AAAA,QAEC,OAAO,WAAW,IACjB;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,aAAU;AAAA,YAET,eAAK;AAAA;AAAA,QACR,IACE,iBAAiB,SACnB,4CAAC,QAAG,WAAU,iDACX,iBAAO,IAAI,CAAC,UACX,6CAAC,QAAkB,WAAU,2BAA0B,aAAU,uBAC/D;AAAA,uDAAC,SAAI,WAAU,qDACb;AAAA,yDAAC,SAAI,WAAU,qCACb;AAAA,0DAAC,QAAG,WAAU,2BACX,sBAAY,KAAK,YAAY,EAAE,QAAQ,MAAM,OAAO,CAAC,GACxD;AAAA,cACC,aAAa,KAAK;AAAA,cACnB,4CAAC,UAAK,WAAU,iCACb,sBAAY,KAAK,eAAe,EAAE,MAAM,MAAM,KAAK,CAAC,GACvD;AAAA,eACF;AAAA,YACC,cAAc,KAAK;AAAA,aACtB;AAAA,UACC,YAAY,KAAK;AAAA,UAClB,4CAAC,SAAI,WAAU,iBAAiB,sBAAY,KAAK,GAAE;AAAA,aAd5C,MAAM,EAef,CACD,GACH,IAEA,4CAAC,SAAI,WAAU,mBACZ,iBAAO,IAAI,CAAC,UACX,4CAAC,aAAuB,aAAU,uBAChC,uDAAC,oBACC;AAAA,uDAAC,0BAAW,WAAU,2FACpB;AAAA,yDAAC,SAAI,WAAU,yBACb;AAAA,2DAAC,SAAI,WAAU,qCACb;AAAA,4DAAC,QAAG,WAAU,2BACX,sBAAY,KAAK,YAAY,EAAE,QAAQ,MAAM,OAAO,CAAC,GACxD;AAAA,gBACC,aAAa,KAAK;AAAA,iBACrB;AAAA,cACA,4CAAC,OAAE,WAAU,iCACV,sBAAY,KAAK,eAAe,EAAE,MAAM,MAAM,KAAK,CAAC,GACvD;AAAA,eACF;AAAA,YACC,cAAc,KAAK;AAAA,aACtB;AAAA,UACA,4CAAC,2BAAY,WAAU,4BAA4B,sBAAY,KAAK,GAAE;AAAA,UACtE,4CAAC,0BAAW,WAAU,YAAY,sBAAY,KAAK,GAAE;AAAA,WACvD,KAlBY,MAAM,EAmBpB,CACD,GACH;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAEA,IAAO,wBAAQ;","names":[]}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
3
|
+
import { Badge } from "../../../ui/badge.mjs";
|
|
4
|
+
import { Button } from "../../../ui/button.mjs";
|
|
5
|
+
import { Card, CardContent, CardFooter, CardHeader } from "../../../ui/card.mjs";
|
|
6
|
+
import {
|
|
7
|
+
OrderLine,
|
|
8
|
+
formatOrderAmount,
|
|
9
|
+
resolveOrderAmountFormatter
|
|
10
|
+
} from "./order-line.mjs";
|
|
11
|
+
const defaultLabels = {
|
|
12
|
+
title: "Historial de pedidos",
|
|
13
|
+
description: "Consulta tus pedidos anteriores y su estado",
|
|
14
|
+
orderLabel: "Pedido {number}",
|
|
15
|
+
placedOnLabel: "Realizado el {date}",
|
|
16
|
+
quantityLabel: "Cantidad: {n}",
|
|
17
|
+
totalLabel: "Total del pedido",
|
|
18
|
+
viewOrderLabel: "Ver pedido",
|
|
19
|
+
trackOrderLabel: "Seguir pedido",
|
|
20
|
+
amountUnavailableLabel: "\u2014",
|
|
21
|
+
emptyLabel: "A\xFAn no tienes pedidos."
|
|
22
|
+
};
|
|
23
|
+
const interpolate = (template, values) => template.replace(
|
|
24
|
+
/\{(\w+)\}/g,
|
|
25
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
26
|
+
);
|
|
27
|
+
function OrderHistory({
|
|
28
|
+
orders,
|
|
29
|
+
presentation = "cards",
|
|
30
|
+
labels,
|
|
31
|
+
locale,
|
|
32
|
+
formatMoney: formatMoneyProp,
|
|
33
|
+
onViewOrder,
|
|
34
|
+
onTrackOrder,
|
|
35
|
+
className
|
|
36
|
+
}) {
|
|
37
|
+
const copy = { ...defaultLabels, ...labels };
|
|
38
|
+
const format = resolveOrderAmountFormatter(locale, formatMoneyProp);
|
|
39
|
+
const amount = (money) => formatOrderAmount(money, format, copy.amountUnavailableLabel);
|
|
40
|
+
const renderStatus = (order) => /* @__PURE__ */ jsx(Badge, { variant: order.status.tone ?? "secondary", "data-slot": "order-history-status", children: order.status.label });
|
|
41
|
+
const renderActions = (order) => {
|
|
42
|
+
const trackable = order.trackable === true && Boolean(onTrackOrder);
|
|
43
|
+
const viewable = Boolean(onViewOrder);
|
|
44
|
+
if (!trackable && !viewable) return null;
|
|
45
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
46
|
+
trackable ? /* @__PURE__ */ jsx(
|
|
47
|
+
Button,
|
|
48
|
+
{
|
|
49
|
+
type: "button",
|
|
50
|
+
size: "sm",
|
|
51
|
+
className: "h-8 cursor-pointer px-3 text-xs",
|
|
52
|
+
"aria-label": `${copy.trackOrderLabel}: ${order.number}`,
|
|
53
|
+
onClick: () => onTrackOrder?.(order.id),
|
|
54
|
+
children: copy.trackOrderLabel
|
|
55
|
+
}
|
|
56
|
+
) : null,
|
|
57
|
+
viewable ? /* @__PURE__ */ jsx(
|
|
58
|
+
Button,
|
|
59
|
+
{
|
|
60
|
+
type: "button",
|
|
61
|
+
variant: "outline",
|
|
62
|
+
size: "sm",
|
|
63
|
+
className: "h-8 cursor-pointer px-3 text-xs",
|
|
64
|
+
"aria-label": `${copy.viewOrderLabel}: ${order.number}`,
|
|
65
|
+
onClick: () => onViewOrder?.(order.id),
|
|
66
|
+
children: copy.viewOrderLabel
|
|
67
|
+
}
|
|
68
|
+
) : null
|
|
69
|
+
] });
|
|
70
|
+
};
|
|
71
|
+
const renderLines = (order) => order.items.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "grid gap-4 sm:grid-cols-2", "data-slot": "order-history-lines", children: order.items.map((line) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
72
|
+
OrderLine,
|
|
73
|
+
{
|
|
74
|
+
name: line.name,
|
|
75
|
+
...line.image === void 0 ? {} : { image: line.image },
|
|
76
|
+
...line.details === void 0 ? {} : { details: line.details },
|
|
77
|
+
quantity: line.quantity,
|
|
78
|
+
lineTotal: line.lineTotal,
|
|
79
|
+
quantityLabel: copy.quantityLabel,
|
|
80
|
+
amountUnavailableLabel: copy.amountUnavailableLabel,
|
|
81
|
+
...format === void 0 ? {} : { formatMoney: format }
|
|
82
|
+
}
|
|
83
|
+
) }, line.id)) }) : null;
|
|
84
|
+
const renderTotal = (order) => /* @__PURE__ */ jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [
|
|
85
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: copy.totalLabel }),
|
|
86
|
+
/* @__PURE__ */ jsx("span", { className: "text-base font-semibold tabular-nums", "data-slot": "order-history-total", children: amount(order.total) })
|
|
87
|
+
] });
|
|
88
|
+
return /* @__PURE__ */ jsxs(
|
|
89
|
+
"section",
|
|
90
|
+
{
|
|
91
|
+
"aria-label": copy.title,
|
|
92
|
+
className: cn("mx-auto w-full max-w-7xl px-4 py-8 sm:px-6 lg:px-8", className),
|
|
93
|
+
"data-slot": "order-history",
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ jsxs("header", { className: "flex flex-col gap-1", children: [
|
|
96
|
+
/* @__PURE__ */ jsx("h2", { className: "text-2xl font-semibold tracking-tight", children: copy.title }),
|
|
97
|
+
copy.description ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: copy.description }) : null
|
|
98
|
+
] }),
|
|
99
|
+
orders.length === 0 ? /* @__PURE__ */ jsx(
|
|
100
|
+
"p",
|
|
101
|
+
{
|
|
102
|
+
role: "status",
|
|
103
|
+
className: "text-muted-foreground mt-6 text-sm",
|
|
104
|
+
"data-slot": "order-history-empty",
|
|
105
|
+
children: copy.emptyLabel
|
|
106
|
+
}
|
|
107
|
+
) : presentation === "rows" ? /* @__PURE__ */ jsx("ul", { className: "mt-6 flex flex-col divide-y rounded-lg border", children: orders.map((order) => /* @__PURE__ */ jsxs("li", { className: "flex flex-col gap-3 p-4", "data-slot": "order-history-order", children: [
|
|
108
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [
|
|
109
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
110
|
+
/* @__PURE__ */ jsx("h3", { className: "text-base font-semibold", children: interpolate(copy.orderLabel, { number: order.number }) }),
|
|
111
|
+
renderStatus(order),
|
|
112
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: interpolate(copy.placedOnLabel, { date: order.date }) })
|
|
113
|
+
] }),
|
|
114
|
+
renderActions(order)
|
|
115
|
+
] }),
|
|
116
|
+
renderLines(order),
|
|
117
|
+
/* @__PURE__ */ jsx("div", { className: "border-t pt-3", children: renderTotal(order) })
|
|
118
|
+
] }, order.id)) }) : /* @__PURE__ */ jsx("div", { className: "mt-6 grid gap-6", children: orders.map((order) => /* @__PURE__ */ jsx("article", { "data-slot": "order-history-order", children: /* @__PURE__ */ jsxs(Card, { children: [
|
|
119
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "flex flex-col gap-3 border-b bg-muted/40 md:flex-row md:items-center md:justify-between", children: [
|
|
120
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
|
|
121
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
122
|
+
/* @__PURE__ */ jsx("h3", { className: "text-base font-semibold", children: interpolate(copy.orderLabel, { number: order.number }) }),
|
|
123
|
+
renderStatus(order)
|
|
124
|
+
] }),
|
|
125
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-sm", children: interpolate(copy.placedOnLabel, { date: order.date }) })
|
|
126
|
+
] }),
|
|
127
|
+
renderActions(order)
|
|
128
|
+
] }),
|
|
129
|
+
/* @__PURE__ */ jsx(CardContent, { className: "flex flex-col gap-4 pt-4", children: renderLines(order) }),
|
|
130
|
+
/* @__PURE__ */ jsx(CardFooter, { className: "border-t", children: renderTotal(order) })
|
|
131
|
+
] }) }, order.id)) })
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
var order_history_default = OrderHistory;
|
|
137
|
+
export {
|
|
138
|
+
OrderHistory,
|
|
139
|
+
order_history_default as default
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=order-history.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/order-history/order-history.tsx"],"sourcesContent":["import type { Money } from '@thorprovider/types'\nimport { cn } from '../../../lib/utils'\nimport { Badge } from '../../../ui/badge'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent, CardFooter, CardHeader } from '../../../ui/card'\nimport {\n OrderLine,\n formatOrderAmount,\n resolveOrderAmountFormatter,\n type OrderLineData,\n} from './order-line'\n\nexport type OrderHistoryPresentation = 'cards' | 'rows'\n\n/** Semantic badge tone. The host owns the mapping from its status model. */\nexport type OrderHistoryStatusTone = 'default' | 'secondary' | 'destructive' | 'outline'\n\n/** Order status as data: the label is rendered and the tone styles it. */\nexport interface OrderHistoryStatus {\n label: string\n tone?: OrderHistoryStatusTone\n}\n\n/**\n * Canonical order-history row: one order of the collection.\n *\n * `id` is the backend order identity — the React key and the value reported to\n * `onViewOrder`/`onTrackOrder`. `total` is the backend order total and is\n * rendered verbatim: the collection never sums its lines.\n */\nexport interface OrderHistoryOrder {\n /** Backend order identity. Used as the React key; never rendered. */\n id: string\n /** Human-readable order number, rendered through `orderLabel`. */\n number: string\n /** Placement date, already formatted by the host. */\n date: string\n status: OrderHistoryStatus\n /** Backend order total. Rendered verbatim; a malformed amount is unavailable. */\n total: Money\n items: OrderLineData[]\n /** When true (and `onTrackOrder` is supplied) the tracking action renders. */\n trackable?: boolean\n}\n\n/** Every user-facing string the collection renders. All are overridable. */\nexport interface OrderHistoryLabels {\n title: string\n description: string\n orderLabel: string\n placedOnLabel: string\n quantityLabel: string\n totalLabel: string\n viewOrderLabel: string\n trackOrderLabel: string\n amountUnavailableLabel: string\n emptyLabel: string\n}\n\nexport interface OrderHistoryProps {\n orders: OrderHistoryOrder[]\n /**\n * Bounded structure switch. `cards` (default) renders one card per order;\n * `rows` renders one bordered row per order. Both accept the same data and\n * report the same actions. Responsiveness is CSS only.\n */\n presentation?: OrderHistoryPresentation\n labels?: Partial<OrderHistoryLabels>\n /** Locale used to format amounts from their own currency code. */\n locale?: string\n /** Host amount formatter; wins over `locale`. */\n formatMoney?: (money: Money) => string\n /** Report the backend order id of the order whose detail should open. */\n onViewOrder?: (id: string) => void\n /** Report the backend order id of the order to track. */\n onTrackOrder?: (id: string) => void\n className?: string\n}\n\nconst defaultLabels: OrderHistoryLabels = {\n title: 'Historial de pedidos',\n description: 'Consulta tus pedidos anteriores y su estado',\n orderLabel: 'Pedido {number}',\n placedOnLabel: 'Realizado el {date}',\n quantityLabel: 'Cantidad: {n}',\n totalLabel: 'Total del pedido',\n viewOrderLabel: 'Ver pedido',\n trackOrderLabel: 'Seguir pedido',\n amountUnavailableLabel: '—',\n emptyLabel: 'Aún no tienes pedidos.',\n}\n\nconst interpolate = (template: string, values: Record<string, string | number>) =>\n template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in values ? String(values[key]) : match,\n )\n\n/**\n * The canonical order-history collection section.\n *\n * It renders exactly the orders it is given: pagination, ordering, detail,\n * loading/error states, and the money values all belong to the host. The block\n * holds no selection state, never counts the collection, never compares a\n * status label to a literal, and never measures the viewport.\n */\nexport function OrderHistory({\n orders,\n presentation = 'cards',\n labels,\n locale,\n formatMoney: formatMoneyProp,\n onViewOrder,\n onTrackOrder,\n className,\n}: OrderHistoryProps) {\n const copy: OrderHistoryLabels = { ...defaultLabels, ...labels }\n const format = resolveOrderAmountFormatter(locale, formatMoneyProp)\n const amount = (money: Money | null | undefined) =>\n formatOrderAmount(money, format, copy.amountUnavailableLabel)\n\n const renderStatus = (order: OrderHistoryOrder) => (\n <Badge variant={order.status.tone ?? 'secondary'} data-slot='order-history-status'>\n {order.status.label}\n </Badge>\n )\n\n const renderActions = (order: OrderHistoryOrder) => {\n const trackable = order.trackable === true && Boolean(onTrackOrder)\n const viewable = Boolean(onViewOrder)\n if (!trackable && !viewable) return null\n return (\n <div className='flex flex-wrap items-center gap-2'>\n {trackable ? (\n <Button\n type='button'\n size='sm'\n className='h-8 cursor-pointer px-3 text-xs'\n aria-label={`${copy.trackOrderLabel}: ${order.number}`}\n onClick={() => onTrackOrder?.(order.id)}\n >\n {copy.trackOrderLabel}\n </Button>\n ) : null}\n {viewable ? (\n <Button\n type='button'\n variant='outline'\n size='sm'\n className='h-8 cursor-pointer px-3 text-xs'\n aria-label={`${copy.viewOrderLabel}: ${order.number}`}\n onClick={() => onViewOrder?.(order.id)}\n >\n {copy.viewOrderLabel}\n </Button>\n ) : null}\n </div>\n )\n }\n\n const renderLines = (order: OrderHistoryOrder) =>\n order.items.length > 0 ? (\n <ul className='grid gap-4 sm:grid-cols-2' data-slot='order-history-lines'>\n {order.items.map((line) => (\n <li key={line.id}>\n <OrderLine\n name={line.name}\n {...(line.image === undefined ? {} : { image: line.image })}\n {...(line.details === undefined ? {} : { details: line.details })}\n quantity={line.quantity}\n lineTotal={line.lineTotal}\n quantityLabel={copy.quantityLabel}\n amountUnavailableLabel={copy.amountUnavailableLabel}\n {...(format === undefined ? {} : { formatMoney: format })}\n />\n </li>\n ))}\n </ul>\n ) : null\n\n const renderTotal = (order: OrderHistoryOrder) => (\n <div className='flex w-full items-center justify-between gap-3'>\n <span className='text-muted-foreground text-sm'>{copy.totalLabel}</span>\n <span className='text-base font-semibold tabular-nums' data-slot='order-history-total'>\n {amount(order.total)}\n </span>\n </div>\n )\n\n return (\n <section\n aria-label={copy.title}\n className={cn('mx-auto w-full max-w-7xl px-4 py-8 sm:px-6 lg:px-8', className)}\n data-slot='order-history'\n >\n <header className='flex flex-col gap-1'>\n <h2 className='text-2xl font-semibold tracking-tight'>{copy.title}</h2>\n {copy.description ? (\n <p className='text-muted-foreground text-sm'>{copy.description}</p>\n ) : null}\n </header>\n\n {orders.length === 0 ? (\n <p\n role='status'\n className='text-muted-foreground mt-6 text-sm'\n data-slot='order-history-empty'\n >\n {copy.emptyLabel}\n </p>\n ) : presentation === 'rows' ? (\n <ul className='mt-6 flex flex-col divide-y rounded-lg border'>\n {orders.map((order) => (\n <li key={order.id} className='flex flex-col gap-3 p-4' data-slot='order-history-order'>\n <div className='flex flex-wrap items-center justify-between gap-3'>\n <div className='flex flex-wrap items-center gap-2'>\n <h3 className='text-base font-semibold'>\n {interpolate(copy.orderLabel, { number: order.number })}\n </h3>\n {renderStatus(order)}\n <span className='text-muted-foreground text-sm'>\n {interpolate(copy.placedOnLabel, { date: order.date })}\n </span>\n </div>\n {renderActions(order)}\n </div>\n {renderLines(order)}\n <div className='border-t pt-3'>{renderTotal(order)}</div>\n </li>\n ))}\n </ul>\n ) : (\n <div className='mt-6 grid gap-6'>\n {orders.map((order) => (\n <article key={order.id} data-slot='order-history-order'>\n <Card>\n <CardHeader className='flex flex-col gap-3 border-b bg-muted/40 md:flex-row md:items-center md:justify-between'>\n <div className='flex flex-col gap-1.5'>\n <div className='flex flex-wrap items-center gap-2'>\n <h3 className='text-base font-semibold'>\n {interpolate(copy.orderLabel, { number: order.number })}\n </h3>\n {renderStatus(order)}\n </div>\n <p className='text-muted-foreground text-sm'>\n {interpolate(copy.placedOnLabel, { date: order.date })}\n </p>\n </div>\n {renderActions(order)}\n </CardHeader>\n <CardContent className='flex flex-col gap-4 pt-4'>{renderLines(order)}</CardContent>\n <CardFooter className='border-t'>{renderTotal(order)}</CardFooter>\n </Card>\n </article>\n ))}\n </div>\n )}\n </section>\n )\n}\n\nexport default OrderHistory\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Money } from '@thorprovider/types';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical order-line item cell data.
|
|
4
|
+
*
|
|
5
|
+
* One purchased line of one order. `id` is the backend line identity: it is the
|
|
6
|
+
* React key and is never rendered. `lineTotal` is the backend-authoritative
|
|
7
|
+
* amount and is rendered verbatim — the cell never multiplies a unit price by
|
|
8
|
+
* the quantity, sums lines, or formats with a hardcoded currency.
|
|
9
|
+
*/
|
|
10
|
+
export interface OrderLineData {
|
|
11
|
+
/** Backend line identity. Used as the React key; never rendered. */
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
/** Optional; an absent or empty image renders a neutral placeholder, never `src=""`. */
|
|
15
|
+
image?: string;
|
|
16
|
+
/** Optional secondary line (for example the variant description). */
|
|
17
|
+
details?: string;
|
|
18
|
+
quantity: number;
|
|
19
|
+
/** Backend line total. Rendered verbatim; a malformed amount is unavailable. */
|
|
20
|
+
lineTotal: Money;
|
|
21
|
+
}
|
|
22
|
+
export interface OrderLineProps extends Omit<OrderLineData, 'id'> {
|
|
23
|
+
/** Quantity template with a `{n}` placeholder. */
|
|
24
|
+
quantityLabel?: string;
|
|
25
|
+
/** Shown when `lineTotal` is absent or malformed (never a zero amount). */
|
|
26
|
+
amountUnavailableLabel?: string;
|
|
27
|
+
/** Host amount formatter (locale, currency). Defaults to `lineTotal.currencyCode`. */
|
|
28
|
+
formatMoney?: (money: Money) => string;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Render one `Money` through the canonical helper, or the unavailable label.
|
|
33
|
+
* `isAvailableMoney` keeps a malformed amount away from `Intl.NumberFormat`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatOrderAmount(money: Money | null | undefined, format: ((money: Money) => string) | undefined, unavailableLabel: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the amount formatter: a host formatter wins, then the supplied
|
|
38
|
+
* locale, then the canonical default. Every path goes through
|
|
39
|
+
* `formatMoney`, so no currency symbol is ever hardcoded here.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveOrderAmountFormatter(locale: string | undefined, formatter: ((money: Money) => string) | undefined): ((money: Money) => string) | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The canonical order-line item cell: one purchased line of an order.
|
|
44
|
+
*
|
|
45
|
+
* It is an item cell, not a listing — it takes one line, renders one cell, and
|
|
46
|
+
* owns no collection state.
|
|
47
|
+
*/
|
|
48
|
+
export declare function OrderLine({ name, image, details, quantity, lineTotal, quantityLabel, amountUnavailableLabel, formatMoney: formatMoneyProp, className, }: OrderLineProps): import("react").JSX.Element;
|
|
49
|
+
export default OrderLine;
|
|
50
|
+
//# sourceMappingURL=order-line.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-line.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/order-history/order-line.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAIhD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,SAAS,EAAE,KAAK,CAAA;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;IAC/D,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,2EAA2E;IAC3E,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,sFAAsF;IACtF,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAA;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAOD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,EAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,SAAS,EAC9C,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAGR;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,SAAS,GAChD,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,GAAG,SAAS,CAQxC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAA+B,EAC/B,sBAA4B,EAC5B,WAAW,EAAE,eAAe,EAC5B,SAAS,GACV,EAAE,cAAc,+BA8BhB;AAED,eAAe,SAAS,CAAA"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var order_line_exports = {};
|
|
20
|
+
__export(order_line_exports, {
|
|
21
|
+
OrderLine: () => OrderLine,
|
|
22
|
+
default: () => order_line_default,
|
|
23
|
+
formatOrderAmount: () => formatOrderAmount,
|
|
24
|
+
resolveOrderAmountFormatter: () => resolveOrderAmountFormatter
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(order_line_exports);
|
|
27
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
28
|
+
var import_utils = require("../../../lib/utils.js");
|
|
29
|
+
var import_money = require("../../../lib/money.js");
|
|
30
|
+
const interpolate = (template, values) => template.replace(
|
|
31
|
+
/\{(\w+)\}/g,
|
|
32
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
33
|
+
);
|
|
34
|
+
function formatOrderAmount(money, format, unavailableLabel) {
|
|
35
|
+
if (!(0, import_money.isAvailableMoney)(money)) return unavailableLabel;
|
|
36
|
+
return (0, import_money.formatMoney)(money, format) ?? unavailableLabel;
|
|
37
|
+
}
|
|
38
|
+
function resolveOrderAmountFormatter(locale, formatter) {
|
|
39
|
+
if (formatter) return formatter;
|
|
40
|
+
if (!locale) return void 0;
|
|
41
|
+
return (money) => new Intl.NumberFormat(locale, {
|
|
42
|
+
style: "currency",
|
|
43
|
+
currency: money.currencyCode
|
|
44
|
+
}).format(Number(money.amount));
|
|
45
|
+
}
|
|
46
|
+
function OrderLine({
|
|
47
|
+
name,
|
|
48
|
+
image,
|
|
49
|
+
details,
|
|
50
|
+
quantity,
|
|
51
|
+
lineTotal,
|
|
52
|
+
quantityLabel = "Cantidad: {n}",
|
|
53
|
+
amountUnavailableLabel = "\u2014",
|
|
54
|
+
formatMoney: formatMoneyProp,
|
|
55
|
+
className
|
|
56
|
+
}) {
|
|
57
|
+
const imageSrc = typeof image === "string" && image.trim() !== "" ? image : void 0;
|
|
58
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: (0, import_utils.cn)("flex items-start gap-3", className), "data-slot": "order-line", children: [
|
|
59
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "bg-muted size-14 shrink-0 overflow-hidden rounded-md", children: imageSrc ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: imageSrc, alt: "", className: "size-full object-contain" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { "aria-hidden": "true", className: "size-full", "data-slot": "order-line-image-placeholder" }) }),
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
61
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "truncate text-sm font-medium", "data-slot": "order-line-name", children: name }),
|
|
62
|
+
details ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground truncate text-xs", "data-slot": "order-line-details", children: details }) : null,
|
|
63
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground text-xs", "data-slot": "order-line-quantity", children: interpolate(quantityLabel, { n: quantity }) })
|
|
64
|
+
] }),
|
|
65
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "shrink-0 text-sm font-medium tabular-nums", "data-slot": "order-line-amount", children: formatOrderAmount(lineTotal, formatMoneyProp, amountUnavailableLabel) })
|
|
66
|
+
] });
|
|
67
|
+
}
|
|
68
|
+
var order_line_default = OrderLine;
|
|
69
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
70
|
+
0 && (module.exports = {
|
|
71
|
+
OrderLine,
|
|
72
|
+
formatOrderAmount,
|
|
73
|
+
resolveOrderAmountFormatter
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=order-line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/order-history/order-line.tsx"],"sourcesContent":["import type { Money } from '@thorprovider/types'\nimport { cn } from '../../../lib/utils'\nimport { formatMoney, isAvailableMoney } from '../../../lib/money'\n\n/**\n * Canonical order-line item cell data.\n *\n * One purchased line of one order. `id` is the backend line identity: it is the\n * React key and is never rendered. `lineTotal` is the backend-authoritative\n * amount and is rendered verbatim — the cell never multiplies a unit price by\n * the quantity, sums lines, or formats with a hardcoded currency.\n */\nexport interface OrderLineData {\n /** Backend line identity. Used as the React key; never rendered. */\n id: string\n name: string\n /** Optional; an absent or empty image renders a neutral placeholder, never `src=\"\"`. */\n image?: string\n /** Optional secondary line (for example the variant description). */\n details?: string\n quantity: number\n /** Backend line total. Rendered verbatim; a malformed amount is unavailable. */\n lineTotal: Money\n}\n\nexport interface OrderLineProps extends Omit<OrderLineData, 'id'> {\n /** Quantity template with a `{n}` placeholder. */\n quantityLabel?: string\n /** Shown when `lineTotal` is absent or malformed (never a zero amount). */\n amountUnavailableLabel?: string\n /** Host amount formatter (locale, currency). Defaults to `lineTotal.currencyCode`. */\n formatMoney?: (money: Money) => string\n className?: string\n}\n\nconst interpolate = (template: string, values: Record<string, string | number>) =>\n template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in values ? String(values[key]) : match,\n )\n\n/**\n * Render one `Money` through the canonical helper, or the unavailable label.\n * `isAvailableMoney` keeps a malformed amount away from `Intl.NumberFormat`.\n */\nexport function formatOrderAmount(\n money: Money | null | undefined,\n format: ((money: Money) => string) | undefined,\n unavailableLabel: string,\n): string {\n if (!isAvailableMoney(money)) return unavailableLabel\n return formatMoney(money, format) ?? unavailableLabel\n}\n\n/**\n * Resolve the amount formatter: a host formatter wins, then the supplied\n * locale, then the canonical default. Every path goes through\n * `formatMoney`, so no currency symbol is ever hardcoded here.\n */\nexport function resolveOrderAmountFormatter(\n locale: string | undefined,\n formatter: ((money: Money) => string) | undefined,\n): ((money: Money) => string) | undefined {\n if (formatter) return formatter\n if (!locale) return undefined\n return (money) =>\n new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: money.currencyCode,\n }).format(Number(money.amount))\n}\n\n/**\n * The canonical order-line item cell: one purchased line of an order.\n *\n * It is an item cell, not a listing — it takes one line, renders one cell, and\n * owns no collection state.\n */\nexport function OrderLine({\n name,\n image,\n details,\n quantity,\n lineTotal,\n quantityLabel = 'Cantidad: {n}',\n amountUnavailableLabel = '—',\n formatMoney: formatMoneyProp,\n className,\n}: OrderLineProps) {\n const imageSrc = typeof image === 'string' && image.trim() !== '' ? image : undefined\n\n return (\n <div className={cn('flex items-start gap-3', className)} data-slot='order-line'>\n <div className='bg-muted size-14 shrink-0 overflow-hidden rounded-md'>\n {imageSrc ? (\n <img src={imageSrc} alt='' className='size-full object-contain' />\n ) : (\n <div aria-hidden='true' className='size-full' data-slot='order-line-image-placeholder' />\n )}\n </div>\n <div className='flex min-w-0 flex-1 flex-col gap-1'>\n <p className='truncate text-sm font-medium' data-slot='order-line-name'>\n {name}\n </p>\n {details ? (\n <p className='text-muted-foreground truncate text-xs' data-slot='order-line-details'>\n {details}\n </p>\n ) : null}\n <p className='text-muted-foreground text-xs' data-slot='order-line-quantity'>\n {interpolate(quantityLabel, { n: quantity })}\n </p>\n </div>\n <p className='shrink-0 text-sm font-medium tabular-nums' data-slot='order-line-amount'>\n {formatOrderAmount(lineTotal, formatMoneyProp, amountUnavailableLabel)}\n </p>\n </div>\n )\n}\n\nexport default OrderLine\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA8FU;AA7FV,mBAAmB;AACnB,mBAA8C;AAiC9C,MAAM,cAAc,CAAC,UAAkB,WACrC,SAAS;AAAA,EAAQ;AAAA,EAAc,CAAC,OAAO,QACrC,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AACxC;AAMK,SAAS,kBACd,OACA,QACA,kBACQ;AACR,MAAI,KAAC,+BAAiB,KAAK,EAAG,QAAO;AACrC,aAAO,0BAAY,OAAO,MAAM,KAAK;AACvC;AAOO,SAAS,4BACd,QACA,WACwC;AACxC,MAAI,UAAW,QAAO;AACtB,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,CAAC,UACN,IAAI,KAAK,aAAa,QAAQ;AAAA,IAC5B,OAAO;AAAA,IACP,UAAU,MAAM;AAAA,EAClB,CAAC,EAAE,OAAO,OAAO,MAAM,MAAM,CAAC;AAClC;AAQO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb;AACF,GAAmB;AACjB,QAAM,WAAW,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAAK,QAAQ;AAE5E,SACE,6CAAC,SAAI,eAAW,iBAAG,0BAA0B,SAAS,GAAG,aAAU,cACjE;AAAA,gDAAC,SAAI,WAAU,wDACZ,qBACC,4CAAC,SAAI,KAAK,UAAU,KAAI,IAAG,WAAU,4BAA2B,IAEhE,4CAAC,SAAI,eAAY,QAAO,WAAU,aAAY,aAAU,gCAA+B,GAE3F;AAAA,IACA,6CAAC,SAAI,WAAU,sCACb;AAAA,kDAAC,OAAE,WAAU,gCAA+B,aAAU,mBACnD,gBACH;AAAA,MACC,UACC,4CAAC,OAAE,WAAU,0CAAyC,aAAU,sBAC7D,mBACH,IACE;AAAA,MACJ,4CAAC,OAAE,WAAU,iCAAgC,aAAU,uBACpD,sBAAY,eAAe,EAAE,GAAG,SAAS,CAAC,GAC7C;AAAA,OACF;AAAA,IACA,4CAAC,OAAE,WAAU,6CAA4C,aAAU,qBAChE,4BAAkB,WAAW,iBAAiB,sBAAsB,GACvE;AAAA,KACF;AAEJ;AAEA,IAAO,qBAAQ;","names":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
3
|
+
import { formatMoney, isAvailableMoney } from "../../../lib/money.mjs";
|
|
4
|
+
const interpolate = (template, values) => template.replace(
|
|
5
|
+
/\{(\w+)\}/g,
|
|
6
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
7
|
+
);
|
|
8
|
+
function formatOrderAmount(money, format, unavailableLabel) {
|
|
9
|
+
if (!isAvailableMoney(money)) return unavailableLabel;
|
|
10
|
+
return formatMoney(money, format) ?? unavailableLabel;
|
|
11
|
+
}
|
|
12
|
+
function resolveOrderAmountFormatter(locale, formatter) {
|
|
13
|
+
if (formatter) return formatter;
|
|
14
|
+
if (!locale) return void 0;
|
|
15
|
+
return (money) => new Intl.NumberFormat(locale, {
|
|
16
|
+
style: "currency",
|
|
17
|
+
currency: money.currencyCode
|
|
18
|
+
}).format(Number(money.amount));
|
|
19
|
+
}
|
|
20
|
+
function OrderLine({
|
|
21
|
+
name,
|
|
22
|
+
image,
|
|
23
|
+
details,
|
|
24
|
+
quantity,
|
|
25
|
+
lineTotal,
|
|
26
|
+
quantityLabel = "Cantidad: {n}",
|
|
27
|
+
amountUnavailableLabel = "\u2014",
|
|
28
|
+
formatMoney: formatMoneyProp,
|
|
29
|
+
className
|
|
30
|
+
}) {
|
|
31
|
+
const imageSrc = typeof image === "string" && image.trim() !== "" ? image : void 0;
|
|
32
|
+
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", className), "data-slot": "order-line", children: [
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: "bg-muted size-14 shrink-0 overflow-hidden rounded-md", children: imageSrc ? /* @__PURE__ */ jsx("img", { src: imageSrc, alt: "", className: "size-full object-contain" }) : /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: "size-full", "data-slot": "order-line-image-placeholder" }) }),
|
|
34
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
35
|
+
/* @__PURE__ */ jsx("p", { className: "truncate text-sm font-medium", "data-slot": "order-line-name", children: name }),
|
|
36
|
+
details ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground truncate text-xs", "data-slot": "order-line-details", children: details }) : null,
|
|
37
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground text-xs", "data-slot": "order-line-quantity", children: interpolate(quantityLabel, { n: quantity }) })
|
|
38
|
+
] }),
|
|
39
|
+
/* @__PURE__ */ jsx("p", { className: "shrink-0 text-sm font-medium tabular-nums", "data-slot": "order-line-amount", children: formatOrderAmount(lineTotal, formatMoneyProp, amountUnavailableLabel) })
|
|
40
|
+
] });
|
|
41
|
+
}
|
|
42
|
+
var order_line_default = OrderLine;
|
|
43
|
+
export {
|
|
44
|
+
OrderLine,
|
|
45
|
+
order_line_default as default,
|
|
46
|
+
formatOrderAmount,
|
|
47
|
+
resolveOrderAmountFormatter
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=order-line.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/order-history/order-line.tsx"],"sourcesContent":["import type { Money } from '@thorprovider/types'\nimport { cn } from '../../../lib/utils'\nimport { formatMoney, isAvailableMoney } from '../../../lib/money'\n\n/**\n * Canonical order-line item cell data.\n *\n * One purchased line of one order. `id` is the backend line identity: it is the\n * React key and is never rendered. `lineTotal` is the backend-authoritative\n * amount and is rendered verbatim — the cell never multiplies a unit price by\n * the quantity, sums lines, or formats with a hardcoded currency.\n */\nexport interface OrderLineData {\n /** Backend line identity. Used as the React key; never rendered. */\n id: string\n name: string\n /** Optional; an absent or empty image renders a neutral placeholder, never `src=\"\"`. */\n image?: string\n /** Optional secondary line (for example the variant description). */\n details?: string\n quantity: number\n /** Backend line total. Rendered verbatim; a malformed amount is unavailable. */\n lineTotal: Money\n}\n\nexport interface OrderLineProps extends Omit<OrderLineData, 'id'> {\n /** Quantity template with a `{n}` placeholder. */\n quantityLabel?: string\n /** Shown when `lineTotal` is absent or malformed (never a zero amount). */\n amountUnavailableLabel?: string\n /** Host amount formatter (locale, currency). Defaults to `lineTotal.currencyCode`. */\n formatMoney?: (money: Money) => string\n className?: string\n}\n\nconst interpolate = (template: string, values: Record<string, string | number>) =>\n template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in values ? String(values[key]) : match,\n )\n\n/**\n * Render one `Money` through the canonical helper, or the unavailable label.\n * `isAvailableMoney` keeps a malformed amount away from `Intl.NumberFormat`.\n */\nexport function formatOrderAmount(\n money: Money | null | undefined,\n format: ((money: Money) => string) | undefined,\n unavailableLabel: string,\n): string {\n if (!isAvailableMoney(money)) return unavailableLabel\n return formatMoney(money, format) ?? unavailableLabel\n}\n\n/**\n * Resolve the amount formatter: a host formatter wins, then the supplied\n * locale, then the canonical default. Every path goes through\n * `formatMoney`, so no currency symbol is ever hardcoded here.\n */\nexport function resolveOrderAmountFormatter(\n locale: string | undefined,\n formatter: ((money: Money) => string) | undefined,\n): ((money: Money) => string) | undefined {\n if (formatter) return formatter\n if (!locale) return undefined\n return (money) =>\n new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: money.currencyCode,\n }).format(Number(money.amount))\n}\n\n/**\n * The canonical order-line item cell: one purchased line of an order.\n *\n * It is an item cell, not a listing — it takes one line, renders one cell, and\n * owns no collection state.\n */\nexport function OrderLine({\n name,\n image,\n details,\n quantity,\n lineTotal,\n quantityLabel = 'Cantidad: {n}',\n amountUnavailableLabel = '—',\n formatMoney: formatMoneyProp,\n className,\n}: OrderLineProps) {\n const imageSrc = typeof image === 'string' && image.trim() !== '' ? image : undefined\n\n return (\n <div className={cn('flex items-start gap-3', className)} data-slot='order-line'>\n <div className='bg-muted size-14 shrink-0 overflow-hidden rounded-md'>\n {imageSrc ? (\n <img src={imageSrc} alt='' className='size-full object-contain' />\n ) : (\n <div aria-hidden='true' className='size-full' data-slot='order-line-image-placeholder' />\n )}\n </div>\n <div className='flex min-w-0 flex-1 flex-col gap-1'>\n <p className='truncate text-sm font-medium' data-slot='order-line-name'>\n {name}\n </p>\n {details ? (\n <p className='text-muted-foreground truncate text-xs' data-slot='order-line-details'>\n {details}\n </p>\n ) : null}\n <p className='text-muted-foreground text-xs' data-slot='order-line-quantity'>\n {interpolate(quantityLabel, { n: quantity })}\n </p>\n </div>\n <p className='shrink-0 text-sm font-medium tabular-nums' data-slot='order-line-amount'>\n {formatOrderAmount(lineTotal, formatMoneyProp, amountUnavailableLabel)}\n </p>\n </div>\n )\n}\n\nexport default OrderLine\n"],"mappings":"AA8FU,cAKJ,YALI;AA7FV,SAAS,UAAU;AACnB,SAAS,aAAa,wBAAwB;AAiC9C,MAAM,cAAc,CAAC,UAAkB,WACrC,SAAS;AAAA,EAAQ;AAAA,EAAc,CAAC,OAAO,QACrC,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AACxC;AAMK,SAAS,kBACd,OACA,QACA,kBACQ;AACR,MAAI,CAAC,iBAAiB,KAAK,EAAG,QAAO;AACrC,SAAO,YAAY,OAAO,MAAM,KAAK;AACvC;AAOO,SAAS,4BACd,QACA,WACwC;AACxC,MAAI,UAAW,QAAO;AACtB,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,CAAC,UACN,IAAI,KAAK,aAAa,QAAQ;AAAA,IAC5B,OAAO;AAAA,IACP,UAAU,MAAM;AAAA,EAClB,CAAC,EAAE,OAAO,OAAO,MAAM,MAAM,CAAC;AAClC;AAQO,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB,yBAAyB;AAAA,EACzB,aAAa;AAAA,EACb;AACF,GAAmB;AACjB,QAAM,WAAW,OAAO,UAAU,YAAY,MAAM,KAAK,MAAM,KAAK,QAAQ;AAE5E,SACE,qBAAC,SAAI,WAAW,GAAG,0BAA0B,SAAS,GAAG,aAAU,cACjE;AAAA,wBAAC,SAAI,WAAU,wDACZ,qBACC,oBAAC,SAAI,KAAK,UAAU,KAAI,IAAG,WAAU,4BAA2B,IAEhE,oBAAC,SAAI,eAAY,QAAO,WAAU,aAAY,aAAU,gCAA+B,GAE3F;AAAA,IACA,qBAAC,SAAI,WAAU,sCACb;AAAA,0BAAC,OAAE,WAAU,gCAA+B,aAAU,mBACnD,gBACH;AAAA,MACC,UACC,oBAAC,OAAE,WAAU,0CAAyC,aAAU,sBAC7D,mBACH,IACE;AAAA,MACJ,oBAAC,OAAE,WAAU,iCAAgC,aAAU,uBACpD,sBAAY,eAAe,EAAE,GAAG,SAAS,CAAC,GAC7C;AAAA,OACF;AAAA,IACA,oBAAC,OAAE,WAAU,6CAA4C,aAAU,qBAChE,4BAAkB,WAAW,iBAAiB,sBAAsB,GACvE;AAAA,KACF;AAEJ;AAEA,IAAO,qBAAQ;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CategoryCardSpecProps } from '../../../lib/contracts';
|
|
2
|
+
import type { ProductCategoryItem } from '../../../lib/contracts';
|
|
3
|
+
export type CategoryCardPresentation = NonNullable<CategoryCardSpecProps['presentation']>;
|
|
4
|
+
export interface CategoryCardProps extends CategoryCardSpecProps {
|
|
5
|
+
onBrowse?: (category: ProductCategoryItem) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function CategoryCard(props: CategoryCardProps): import("react").JSX.Element;
|
|
8
|
+
export default CategoryCard;
|
|
9
|
+
//# sourceMappingURL=category-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"category-card.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-categories/category-card.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAOjE,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;AAEzF,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAA;CACnD;AAkJD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAKpD;AAED,eAAe,YAAY,CAAA"}
|