@thorprovider/blocks 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +8 -1
- 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,68 @@
|
|
|
1
|
+
export interface QuickViewOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
available: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* A literal colour for a swatch, when the option is one.
|
|
7
|
+
*
|
|
8
|
+
* Finish colours are product data, not theme data: brass has to stay brass whatever preset the
|
|
9
|
+
* customizer is on. It is the one place in the block that is not a token, and the option's
|
|
10
|
+
* label always carries the same information in words.
|
|
11
|
+
*/
|
|
12
|
+
swatch?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface QuickViewVariant {
|
|
15
|
+
key: string;
|
|
16
|
+
label: string;
|
|
17
|
+
/**
|
|
18
|
+
* Which option a product opens on.
|
|
19
|
+
*
|
|
20
|
+
* Not simply the first available one: sizes are listed smallest first, and the sofa is sold as
|
|
21
|
+
* the size its name promises, so the panel would otherwise open on an option that disagrees
|
|
22
|
+
* with the card the reader just pressed.
|
|
23
|
+
*/
|
|
24
|
+
defaultValue?: string;
|
|
25
|
+
options: QuickViewOption[];
|
|
26
|
+
}
|
|
27
|
+
export interface QuickViewProduct {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
/** The one line that says what it is, under the name on the card and in the panel. */
|
|
31
|
+
tagline: string;
|
|
32
|
+
category: string;
|
|
33
|
+
price: number;
|
|
34
|
+
compareAt?: number;
|
|
35
|
+
rating: number;
|
|
36
|
+
reviewCount: number;
|
|
37
|
+
/** In stock, and low enough to be worth saying. Omitted when there is plenty. */
|
|
38
|
+
unitsLeft?: number;
|
|
39
|
+
image: string;
|
|
40
|
+
imageAlt: string;
|
|
41
|
+
description: string;
|
|
42
|
+
/** The panel shows these as a list, not as a specification table. */
|
|
43
|
+
details: string[];
|
|
44
|
+
variants: QuickViewVariant[];
|
|
45
|
+
/** Where the full product page lives. The panel only links to it when set. */
|
|
46
|
+
href?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface ProductQuickViewProps {
|
|
49
|
+
products: QuickViewProduct[];
|
|
50
|
+
eyebrow?: string;
|
|
51
|
+
heading?: string;
|
|
52
|
+
lede?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Called with the chosen options when the reader adds to cart. When absent the button still
|
|
55
|
+
* shows and keeps its added-to-cart confirmation; it just has nowhere to report to.
|
|
56
|
+
*/
|
|
57
|
+
onAddToCart?: (product: QuickViewProduct, quantity: number, selection: Record<string, string>) => void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A product grid whose point is the panel that opens over it.
|
|
61
|
+
*
|
|
62
|
+
* One dialog serves the whole catalogue rather than one per card: the panel steps between
|
|
63
|
+
* products from inside, the card it is showing stays lit underneath, and closing puts the reader
|
|
64
|
+
* back exactly where the grid says they are.
|
|
65
|
+
*/
|
|
66
|
+
export declare function ProductQuickView({ products, eyebrow, heading, lede, onAddToCart, }: ProductQuickViewProps): import("react").JSX.Element;
|
|
67
|
+
export default ProductQuickView;
|
|
68
|
+
//# sourceMappingURL=product-quick-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-quick-view.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC9B,IAAI,CAAA;CACV;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAqC,EACrC,OAAmE,EACnE,IAAsM,EACtM,WAAW,GACZ,EAAE,qBAAqB,+BA6CvB;AAED,eAAe,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var product_quick_view_exports = {};
|
|
21
|
+
__export(product_quick_view_exports, {
|
|
22
|
+
ProductQuickView: () => ProductQuickView,
|
|
23
|
+
default: () => product_quick_view_default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(product_quick_view_exports);
|
|
26
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
+
var import_react = require("react");
|
|
28
|
+
var import_badge = require("../../../ui/badge.js");
|
|
29
|
+
var import_product_quick_view_card = require("./product-quick-view-card.js");
|
|
30
|
+
var import_product_quick_view_dialog = require("./product-quick-view-dialog.js");
|
|
31
|
+
function ProductQuickView({
|
|
32
|
+
products,
|
|
33
|
+
eyebrow = "Novedades de la temporada",
|
|
34
|
+
heading = "Todo lo que vale la pena saber, sin salir de la rejilla",
|
|
35
|
+
lede = "Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviar\xEDa a la p\xE1gina del producto. Recorre el resto de la habitaci\xF3n desde dentro.",
|
|
36
|
+
onAddToCart
|
|
37
|
+
}) {
|
|
38
|
+
const [activeIndex, setActiveIndex] = (0, import_react.useState)(null);
|
|
39
|
+
const headingId = (0, import_react.useId)();
|
|
40
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { "aria-labelledby": headingId, className: "bg-background w-full py-16 sm:py-24", children: [
|
|
41
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8", children: [
|
|
42
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex max-w-2xl flex-col items-start", children: [
|
|
43
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_badge.Badge, { variant: "outline", className: "gap-2 rounded-full px-3", children: [
|
|
44
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": "true", className: "bg-primary size-1.5 rounded-full" }),
|
|
45
|
+
eyebrow
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
48
|
+
"h2",
|
|
49
|
+
{
|
|
50
|
+
id: headingId,
|
|
51
|
+
className: "mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl",
|
|
52
|
+
children: heading
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground mt-4 text-base text-pretty", children: lede })
|
|
56
|
+
] }),
|
|
57
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12", children: products.map((product, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
58
|
+
import_product_quick_view_card.ProductQuickViewCard,
|
|
59
|
+
{
|
|
60
|
+
product,
|
|
61
|
+
isActive: activeIndex === index,
|
|
62
|
+
onOpen: () => setActiveIndex(index)
|
|
63
|
+
},
|
|
64
|
+
product.id
|
|
65
|
+
)) })
|
|
66
|
+
] }),
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
68
|
+
import_product_quick_view_dialog.ProductQuickViewDialog,
|
|
69
|
+
{
|
|
70
|
+
products,
|
|
71
|
+
activeIndex,
|
|
72
|
+
onActiveIndexChange: setActiveIndex,
|
|
73
|
+
onClose: () => setActiveIndex(null),
|
|
74
|
+
onAddToCart
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] });
|
|
78
|
+
}
|
|
79
|
+
var product_quick_view_default = ProductQuickView;
|
|
80
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
81
|
+
0 && (module.exports = {
|
|
82
|
+
ProductQuickView
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=product-quick-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"sourcesContent":["'use client'\n\nimport { useId, useState } from 'react'\n\nimport { Badge } from '../../../ui/badge'\n\nimport { ProductQuickViewCard } from './product-quick-view-card'\nimport { ProductQuickViewDialog } from './product-quick-view-dialog'\n\nexport interface QuickViewOption {\n value: string\n label: string\n available: boolean\n /**\n * A literal colour for a swatch, when the option is one.\n *\n * Finish colours are product data, not theme data: brass has to stay brass whatever preset the\n * customizer is on. It is the one place in the block that is not a token, and the option's\n * label always carries the same information in words.\n */\n swatch?: string\n}\n\nexport interface QuickViewVariant {\n key: string\n label: string\n /**\n * Which option a product opens on.\n *\n * Not simply the first available one: sizes are listed smallest first, and the sofa is sold as\n * the size its name promises, so the panel would otherwise open on an option that disagrees\n * with the card the reader just pressed.\n */\n defaultValue?: string\n options: QuickViewOption[]\n}\n\nexport interface QuickViewProduct {\n id: string\n name: string\n /** The one line that says what it is, under the name on the card and in the panel. */\n tagline: string\n category: string\n price: number\n compareAt?: number\n rating: number\n reviewCount: number\n /** In stock, and low enough to be worth saying. Omitted when there is plenty. */\n unitsLeft?: number\n image: string\n imageAlt: string\n description: string\n /** The panel shows these as a list, not as a specification table. */\n details: string[]\n variants: QuickViewVariant[]\n /** Where the full product page lives. The panel only links to it when set. */\n href?: string\n}\n\nexport interface ProductQuickViewProps {\n products: QuickViewProduct[]\n eyebrow?: string\n heading?: string\n lede?: string\n /**\n * Called with the chosen options when the reader adds to cart. When absent the button still\n * shows and keeps its added-to-cart confirmation; it just has nowhere to report to.\n */\n onAddToCart?: (\n product: QuickViewProduct,\n quantity: number,\n selection: Record<string, string>\n ) => void\n}\n\n/**\n * A product grid whose point is the panel that opens over it.\n *\n * One dialog serves the whole catalogue rather than one per card: the panel steps between\n * products from inside, the card it is showing stays lit underneath, and closing puts the reader\n * back exactly where the grid says they are.\n */\nexport function ProductQuickView({\n products,\n eyebrow = 'Novedades de la temporada',\n heading = 'Todo lo que vale la pena saber, sin salir de la rejilla',\n lede = 'Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviaría a la página del producto. Recorre el resto de la habitación desde dentro.',\n onAddToCart,\n}: ProductQuickViewProps) {\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n // A reusable block cannot carry a fixed heading id: two instances on a page would both claim it.\n const headingId = useId()\n\n return (\n <section aria-labelledby={headingId} className='bg-background w-full py-16 sm:py-24'>\n <div className='mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8'>\n <div className='flex max-w-2xl flex-col items-start'>\n <Badge variant='outline' className='gap-2 rounded-full px-3'>\n <span aria-hidden='true' className='bg-primary size-1.5 rounded-full' />\n {eyebrow}\n </Badge>\n\n <h2\n id={headingId}\n className='mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl'\n >\n {heading}\n </h2>\n\n <p className='text-muted-foreground mt-4 text-base text-pretty'>{lede}</p>\n </div>\n\n <div className='mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12'>\n {products.map((product, index) => (\n <ProductQuickViewCard\n key={product.id}\n product={product}\n isActive={activeIndex === index}\n onOpen={() => setActiveIndex(index)}\n />\n ))}\n </div>\n </div>\n\n <ProductQuickViewDialog\n products={products}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n onClose={() => setActiveIndex(null)}\n onAddToCart={onAddToCart}\n />\n </section>\n )\n}\n\nexport default ProductQuickView"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiGU;AA/FV,mBAAgC;AAEhC,mBAAsB;AAEtB,qCAAqC;AACrC,uCAAuC;AA2EhC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AACF,GAA0B;AACxB,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAwB,IAAI;AAElE,QAAM,gBAAY,oBAAM;AAExB,SACE,6CAAC,aAAQ,mBAAiB,WAAW,WAAU,uCAC7C;AAAA,iDAAC,SAAI,WAAU,iDACb;AAAA,mDAAC,SAAI,WAAU,uCACb;AAAA,qDAAC,sBAAM,SAAQ,WAAU,WAAU,2BACjC;AAAA,sDAAC,UAAK,eAAY,QAAO,WAAU,oCAAmC;AAAA,UACrE;AAAA,WACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEA,4CAAC,OAAE,WAAU,oDAAoD,gBAAK;AAAA,SACxE;AAAA,MAEA,4CAAC,SAAI,WAAU,uEACZ,mBAAS,IAAI,CAAC,SAAS,UACtB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,UAAU,gBAAgB;AAAA,UAC1B,QAAQ,MAAM,eAAe,KAAK;AAAA;AAAA,QAH7B,QAAQ;AAAA,MAIf,CACD,GACH;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,qBAAqB;AAAA,QACrB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,6BAAQ;","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId, useState } from "react";
|
|
4
|
+
import { Badge } from "../../../ui/badge.mjs";
|
|
5
|
+
import { ProductQuickViewCard } from "./product-quick-view-card.mjs";
|
|
6
|
+
import { ProductQuickViewDialog } from "./product-quick-view-dialog.mjs";
|
|
7
|
+
function ProductQuickView({
|
|
8
|
+
products,
|
|
9
|
+
eyebrow = "Novedades de la temporada",
|
|
10
|
+
heading = "Todo lo que vale la pena saber, sin salir de la rejilla",
|
|
11
|
+
lede = "Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviar\xEDa a la p\xE1gina del producto. Recorre el resto de la habitaci\xF3n desde dentro.",
|
|
12
|
+
onAddToCart
|
|
13
|
+
}) {
|
|
14
|
+
const [activeIndex, setActiveIndex] = useState(null);
|
|
15
|
+
const headingId = useId();
|
|
16
|
+
return /* @__PURE__ */ jsxs("section", { "aria-labelledby": headingId, className: "bg-background w-full py-16 sm:py-24", children: [
|
|
17
|
+
/* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8", children: [
|
|
18
|
+
/* @__PURE__ */ jsxs("div", { className: "flex max-w-2xl flex-col items-start", children: [
|
|
19
|
+
/* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "gap-2 rounded-full px-3", children: [
|
|
20
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "bg-primary size-1.5 rounded-full" }),
|
|
21
|
+
eyebrow
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ jsx(
|
|
24
|
+
"h2",
|
|
25
|
+
{
|
|
26
|
+
id: headingId,
|
|
27
|
+
className: "mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl",
|
|
28
|
+
children: heading
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-4 text-base text-pretty", children: lede })
|
|
32
|
+
] }),
|
|
33
|
+
/* @__PURE__ */ jsx("div", { className: "mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12", children: products.map((product, index) => /* @__PURE__ */ jsx(
|
|
34
|
+
ProductQuickViewCard,
|
|
35
|
+
{
|
|
36
|
+
product,
|
|
37
|
+
isActive: activeIndex === index,
|
|
38
|
+
onOpen: () => setActiveIndex(index)
|
|
39
|
+
},
|
|
40
|
+
product.id
|
|
41
|
+
)) })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ jsx(
|
|
44
|
+
ProductQuickViewDialog,
|
|
45
|
+
{
|
|
46
|
+
products,
|
|
47
|
+
activeIndex,
|
|
48
|
+
onActiveIndexChange: setActiveIndex,
|
|
49
|
+
onClose: () => setActiveIndex(null),
|
|
50
|
+
onAddToCart
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
] });
|
|
54
|
+
}
|
|
55
|
+
var product_quick_view_default = ProductQuickView;
|
|
56
|
+
export {
|
|
57
|
+
ProductQuickView,
|
|
58
|
+
product_quick_view_default as default
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=product-quick-view.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"sourcesContent":["'use client'\n\nimport { useId, useState } from 'react'\n\nimport { Badge } from '../../../ui/badge'\n\nimport { ProductQuickViewCard } from './product-quick-view-card'\nimport { ProductQuickViewDialog } from './product-quick-view-dialog'\n\nexport interface QuickViewOption {\n value: string\n label: string\n available: boolean\n /**\n * A literal colour for a swatch, when the option is one.\n *\n * Finish colours are product data, not theme data: brass has to stay brass whatever preset the\n * customizer is on. It is the one place in the block that is not a token, and the option's\n * label always carries the same information in words.\n */\n swatch?: string\n}\n\nexport interface QuickViewVariant {\n key: string\n label: string\n /**\n * Which option a product opens on.\n *\n * Not simply the first available one: sizes are listed smallest first, and the sofa is sold as\n * the size its name promises, so the panel would otherwise open on an option that disagrees\n * with the card the reader just pressed.\n */\n defaultValue?: string\n options: QuickViewOption[]\n}\n\nexport interface QuickViewProduct {\n id: string\n name: string\n /** The one line that says what it is, under the name on the card and in the panel. */\n tagline: string\n category: string\n price: number\n compareAt?: number\n rating: number\n reviewCount: number\n /** In stock, and low enough to be worth saying. Omitted when there is plenty. */\n unitsLeft?: number\n image: string\n imageAlt: string\n description: string\n /** The panel shows these as a list, not as a specification table. */\n details: string[]\n variants: QuickViewVariant[]\n /** Where the full product page lives. The panel only links to it when set. */\n href?: string\n}\n\nexport interface ProductQuickViewProps {\n products: QuickViewProduct[]\n eyebrow?: string\n heading?: string\n lede?: string\n /**\n * Called with the chosen options when the reader adds to cart. When absent the button still\n * shows and keeps its added-to-cart confirmation; it just has nowhere to report to.\n */\n onAddToCart?: (\n product: QuickViewProduct,\n quantity: number,\n selection: Record<string, string>\n ) => void\n}\n\n/**\n * A product grid whose point is the panel that opens over it.\n *\n * One dialog serves the whole catalogue rather than one per card: the panel steps between\n * products from inside, the card it is showing stays lit underneath, and closing puts the reader\n * back exactly where the grid says they are.\n */\nexport function ProductQuickView({\n products,\n eyebrow = 'Novedades de la temporada',\n heading = 'Todo lo que vale la pena saber, sin salir de la rejilla',\n lede = 'Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviaría a la página del producto. Recorre el resto de la habitación desde dentro.',\n onAddToCart,\n}: ProductQuickViewProps) {\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n // A reusable block cannot carry a fixed heading id: two instances on a page would both claim it.\n const headingId = useId()\n\n return (\n <section aria-labelledby={headingId} className='bg-background w-full py-16 sm:py-24'>\n <div className='mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8'>\n <div className='flex max-w-2xl flex-col items-start'>\n <Badge variant='outline' className='gap-2 rounded-full px-3'>\n <span aria-hidden='true' className='bg-primary size-1.5 rounded-full' />\n {eyebrow}\n </Badge>\n\n <h2\n id={headingId}\n className='mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl'\n >\n {heading}\n </h2>\n\n <p className='text-muted-foreground mt-4 text-base text-pretty'>{lede}</p>\n </div>\n\n <div className='mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12'>\n {products.map((product, index) => (\n <ProductQuickViewCard\n key={product.id}\n product={product}\n isActive={activeIndex === index}\n onOpen={() => setActiveIndex(index)}\n />\n ))}\n </div>\n </div>\n\n <ProductQuickViewDialog\n products={products}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n onClose={() => setActiveIndex(null)}\n onAddToCart={onAddToCart}\n />\n </section>\n )\n}\n\nexport default ProductQuickView"],"mappings":";AAiGU,SACE,KADF;AA/FV,SAAS,OAAO,gBAAgB;AAEhC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,8BAA8B;AA2EhC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AACF,GAA0B;AACxB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,IAAI;AAElE,QAAM,YAAY,MAAM;AAExB,SACE,qBAAC,aAAQ,mBAAiB,WAAW,WAAU,uCAC7C;AAAA,yBAAC,SAAI,WAAU,iDACb;AAAA,2BAAC,SAAI,WAAU,uCACb;AAAA,6BAAC,SAAM,SAAQ,WAAU,WAAU,2BACjC;AAAA,8BAAC,UAAK,eAAY,QAAO,WAAU,oCAAmC;AAAA,UACrE;AAAA,WACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEA,oBAAC,OAAE,WAAU,oDAAoD,gBAAK;AAAA,SACxE;AAAA,MAEA,oBAAC,SAAI,WAAU,uEACZ,mBAAS,IAAI,CAAC,SAAS,UACtB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,UAAU,gBAAgB;AAAA,UAC1B,QAAQ,MAAM,eAAe,KAAK;AAAA;AAAA,QAH7B,QAAQ;AAAA,MAIf,CACD,GACH;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,qBAAqB;AAAA,QACrB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,6BAAQ;","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical review item data.
|
|
3
|
+
*
|
|
4
|
+
* One customer review. `id` is the backend identity — the React key and the
|
|
5
|
+
* value every action reports; it is never rendered. `date` is a display string
|
|
6
|
+
* the host already formatted, and `dateTime` is the optional machine-readable
|
|
7
|
+
* value: the cell emits it only when it parses, so an unparsable date can never
|
|
8
|
+
* throw. `helpfulCount` and `likedByViewer` are host-authoritative engagement:
|
|
9
|
+
* the cell renders them and reports intent, it never increments either.
|
|
10
|
+
*/
|
|
11
|
+
export interface ReviewItemData {
|
|
12
|
+
/** Backend review identity. Used as the React key; never rendered. */
|
|
13
|
+
id: string;
|
|
14
|
+
author: string;
|
|
15
|
+
/** Optional; an absent or empty avatar renders initials, never `src=""`. */
|
|
16
|
+
avatar?: string;
|
|
17
|
+
/** Display date, rendered verbatim. */
|
|
18
|
+
date: string;
|
|
19
|
+
/** Optional ISO-8601 value; emitted only when it parses as a date. */
|
|
20
|
+
dateTime?: string;
|
|
21
|
+
/** Rating from 1 to 5. Missing or out-of-range values are clamped for display. */
|
|
22
|
+
rating: number;
|
|
23
|
+
content: string;
|
|
24
|
+
/** Supplied helpful count. Absent means unknown, never zero. */
|
|
25
|
+
helpfulCount?: number;
|
|
26
|
+
/** Host-owned viewer state: the like control reflects it and never toggles it. */
|
|
27
|
+
likedByViewer?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** Every user-facing string the cell renders. All are overridable. */
|
|
30
|
+
export interface ReviewCardLabels {
|
|
31
|
+
ratingLabel: string;
|
|
32
|
+
helpfulLabel: string;
|
|
33
|
+
likeLabel: string;
|
|
34
|
+
unlikeLabel: string;
|
|
35
|
+
commentLabel: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ReviewCardProps extends Omit<ReviewItemData, 'id'> {
|
|
38
|
+
/** Backend review identity, reported to the action handlers. */
|
|
39
|
+
id: string;
|
|
40
|
+
labels?: Partial<ReviewCardLabels>;
|
|
41
|
+
/** Renders the like control; receives the backend id and the intended state. */
|
|
42
|
+
onToggleLike?: (id: string, liked: boolean) => void;
|
|
43
|
+
/** Renders the comment control; receives the backend id. */
|
|
44
|
+
onComment?: (id: string) => void;
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
export declare const defaultReviewCardLabels: ReviewCardLabels;
|
|
48
|
+
/** Clamp a rating to the 1–5 range the star row can express. */
|
|
49
|
+
export declare function clampRating(rating: number): number;
|
|
50
|
+
/** Emit a `dateTime` attribute only when the value is a real date. */
|
|
51
|
+
export declare function safeDateTime(value: string | undefined): string | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* The canonical review item cell: one customer review.
|
|
54
|
+
*
|
|
55
|
+
* It is an item cell, not a listing — it takes one review, renders one cell,
|
|
56
|
+
* and owns no engagement state. Actions exist only when their handler exists.
|
|
57
|
+
*/
|
|
58
|
+
export declare function ReviewCard({ id, author, avatar, date, dateTime, rating, content, helpfulCount, likedByViewer, labels, onToggleLike, onComment, className, }: ReviewCardProps): import("react").JSX.Element;
|
|
59
|
+
export default ReviewCard;
|
|
60
|
+
//# sourceMappingURL=review-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-card.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/reviews/review-card.tsx"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IACjE,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClC,gFAAgF;IAChF,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACnD,4DAA4D;IAC5D,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,uBAAuB,EAAE,gBAMrC,CAAA;AAOD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK1E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,EAAE,EACF,MAAM,EACN,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,YAAY,EACZ,aAAa,EACb,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,GACV,EAAE,eAAe,+BA8FjB;AAED,eAAe,UAAU,CAAA"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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 review_card_exports = {};
|
|
20
|
+
__export(review_card_exports, {
|
|
21
|
+
ReviewCard: () => ReviewCard,
|
|
22
|
+
clampRating: () => clampRating,
|
|
23
|
+
default: () => review_card_default,
|
|
24
|
+
defaultReviewCardLabels: () => defaultReviewCardLabels,
|
|
25
|
+
safeDateTime: () => safeDateTime
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(review_card_exports);
|
|
28
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
29
|
+
var import_lucide_react = require("lucide-react");
|
|
30
|
+
var import_utils = require("../../../lib/utils.js");
|
|
31
|
+
var import_avatar = require("../../../ui/avatar.js");
|
|
32
|
+
var import_button = require("../../../ui/button.js");
|
|
33
|
+
var import_card = require("../../../ui/card.js");
|
|
34
|
+
const defaultReviewCardLabels = {
|
|
35
|
+
ratingLabel: "{n} de 5 estrellas",
|
|
36
|
+
helpfulLabel: "A {n} personas les result\xF3 \xFAtil",
|
|
37
|
+
likeLabel: "Me gusta",
|
|
38
|
+
unlikeLabel: "Quitar me gusta",
|
|
39
|
+
commentLabel: "Comentar"
|
|
40
|
+
};
|
|
41
|
+
const interpolate = (template, values) => template.replace(
|
|
42
|
+
/\{(\w+)\}/g,
|
|
43
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
44
|
+
);
|
|
45
|
+
function clampRating(rating) {
|
|
46
|
+
if (!Number.isFinite(rating)) return 0;
|
|
47
|
+
return Math.min(5, Math.max(0, Math.round(rating)));
|
|
48
|
+
}
|
|
49
|
+
function safeDateTime(value) {
|
|
50
|
+
if (value === void 0) return void 0;
|
|
51
|
+
const trimmed = value.trim();
|
|
52
|
+
if (trimmed === "") return void 0;
|
|
53
|
+
return Number.isNaN(Date.parse(trimmed)) ? void 0 : trimmed;
|
|
54
|
+
}
|
|
55
|
+
function ReviewCard({
|
|
56
|
+
id,
|
|
57
|
+
author,
|
|
58
|
+
avatar,
|
|
59
|
+
date,
|
|
60
|
+
dateTime,
|
|
61
|
+
rating,
|
|
62
|
+
content,
|
|
63
|
+
helpfulCount,
|
|
64
|
+
likedByViewer,
|
|
65
|
+
labels,
|
|
66
|
+
onToggleLike,
|
|
67
|
+
onComment,
|
|
68
|
+
className
|
|
69
|
+
}) {
|
|
70
|
+
const copy = { ...defaultReviewCardLabels, ...labels };
|
|
71
|
+
const filled = clampRating(rating);
|
|
72
|
+
const avatarSrc = typeof avatar === "string" && avatar.trim() !== "" ? avatar : void 0;
|
|
73
|
+
const initials = author.trim().slice(0, 2).toUpperCase();
|
|
74
|
+
const machineDate = safeDateTime(dateTime);
|
|
75
|
+
const liked = likedByViewer === true;
|
|
76
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { className: (0, import_utils.cn)("h-full", className), "data-slot": "review-card", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.Card, { className: "flex h-full flex-col", children: [
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardHeader, { className: "gap-3", children: [
|
|
78
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start gap-3", children: [
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_avatar.Avatar, { className: "size-10", children: [
|
|
80
|
+
avatarSrc ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_avatar.AvatarImage, { src: avatarSrc, alt: "" }) : null,
|
|
81
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_avatar.AvatarFallback, { "aria-hidden": "true", children: initials })
|
|
82
|
+
] }),
|
|
83
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
84
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "truncate text-sm font-semibold", "data-slot": "review-author", children: author }),
|
|
85
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
86
|
+
"time",
|
|
87
|
+
{
|
|
88
|
+
className: "text-muted-foreground text-xs",
|
|
89
|
+
...machineDate === void 0 ? {} : { dateTime: machineDate },
|
|
90
|
+
"data-slot": "review-date",
|
|
91
|
+
children: date
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
] })
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
97
|
+
"div",
|
|
98
|
+
{
|
|
99
|
+
role: "img",
|
|
100
|
+
"aria-label": interpolate(copy.ratingLabel, { n: filled }),
|
|
101
|
+
className: "flex items-center gap-0.5",
|
|
102
|
+
"data-slot": "review-rating",
|
|
103
|
+
children: Array.from({ length: 5 }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
104
|
+
import_lucide_react.Star,
|
|
105
|
+
{
|
|
106
|
+
"aria-hidden": "true",
|
|
107
|
+
className: (0, import_utils.cn)(
|
|
108
|
+
"size-4",
|
|
109
|
+
index < filled ? "fill-current text-foreground" : "text-muted-foreground"
|
|
110
|
+
)
|
|
111
|
+
},
|
|
112
|
+
index
|
|
113
|
+
))
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
] }),
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardContent, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm whitespace-pre-line", "data-slot": "review-content", children: content }) }),
|
|
118
|
+
onToggleLike || onComment || helpfulCount !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardFooter, { className: "flex flex-wrap items-center gap-2 border-t pt-3", children: [
|
|
119
|
+
onToggleLike ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
120
|
+
import_button.Button,
|
|
121
|
+
{
|
|
122
|
+
type: "button",
|
|
123
|
+
variant: "ghost",
|
|
124
|
+
size: "sm",
|
|
125
|
+
className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
|
|
126
|
+
"aria-pressed": liked,
|
|
127
|
+
"aria-label": liked ? copy.unlikeLabel : copy.likeLabel,
|
|
128
|
+
"data-slot": "review-like",
|
|
129
|
+
onClick: () => onToggleLike(id, !liked),
|
|
130
|
+
children: [
|
|
131
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
|
|
132
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "data-slot": "review-like-count", children: helpfulCount ?? "" })
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
) : helpfulCount !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-muted-foreground flex items-center gap-1.5 text-xs", children: [
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
|
|
137
|
+
interpolate(copy.helpfulLabel, { n: helpfulCount })
|
|
138
|
+
] }) : null,
|
|
139
|
+
onComment ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
140
|
+
import_button.Button,
|
|
141
|
+
{
|
|
142
|
+
type: "button",
|
|
143
|
+
variant: "ghost",
|
|
144
|
+
size: "sm",
|
|
145
|
+
className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
|
|
146
|
+
"aria-label": copy.commentLabel,
|
|
147
|
+
"data-slot": "review-comment",
|
|
148
|
+
onClick: () => onComment(id),
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.MessageSquare, { "aria-hidden": "true", className: "size-3.5" }),
|
|
151
|
+
copy.commentLabel
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
) : null
|
|
155
|
+
] }) : null
|
|
156
|
+
] }) });
|
|
157
|
+
}
|
|
158
|
+
var review_card_default = ReviewCard;
|
|
159
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
160
|
+
0 && (module.exports = {
|
|
161
|
+
ReviewCard,
|
|
162
|
+
clampRating,
|
|
163
|
+
defaultReviewCardLabels,
|
|
164
|
+
safeDateTime
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=review-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/reviews/review-card.tsx"],"sourcesContent":["import { MessageSquare, Star, ThumbsUp } from 'lucide-react'\nimport { cn } from '../../../lib/utils'\nimport { Avatar, AvatarFallback, AvatarImage } from '../../../ui/avatar'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent, CardFooter, CardHeader } from '../../../ui/card'\n\n/**\n * Canonical review item data.\n *\n * One customer review. `id` is the backend identity — the React key and the\n * value every action reports; it is never rendered. `date` is a display string\n * the host already formatted, and `dateTime` is the optional machine-readable\n * value: the cell emits it only when it parses, so an unparsable date can never\n * throw. `helpfulCount` and `likedByViewer` are host-authoritative engagement:\n * the cell renders them and reports intent, it never increments either.\n */\nexport interface ReviewItemData {\n /** Backend review identity. Used as the React key; never rendered. */\n id: string\n author: string\n /** Optional; an absent or empty avatar renders initials, never `src=\"\"`. */\n avatar?: string\n /** Display date, rendered verbatim. */\n date: string\n /** Optional ISO-8601 value; emitted only when it parses as a date. */\n dateTime?: string\n /** Rating from 1 to 5. Missing or out-of-range values are clamped for display. */\n rating: number\n content: string\n /** Supplied helpful count. Absent means unknown, never zero. */\n helpfulCount?: number\n /** Host-owned viewer state: the like control reflects it and never toggles it. */\n likedByViewer?: boolean\n}\n\n/** Every user-facing string the cell renders. All are overridable. */\nexport interface ReviewCardLabels {\n ratingLabel: string\n helpfulLabel: string\n likeLabel: string\n unlikeLabel: string\n commentLabel: string\n}\n\nexport interface ReviewCardProps extends Omit<ReviewItemData, 'id'> {\n /** Backend review identity, reported to the action handlers. */\n id: string\n labels?: Partial<ReviewCardLabels>\n /** Renders the like control; receives the backend id and the intended state. */\n onToggleLike?: (id: string, liked: boolean) => void\n /** Renders the comment control; receives the backend id. */\n onComment?: (id: string) => void\n className?: string\n}\n\nexport const defaultReviewCardLabels: ReviewCardLabels = {\n ratingLabel: '{n} de 5 estrellas',\n helpfulLabel: 'A {n} personas les resultó útil',\n likeLabel: 'Me gusta',\n unlikeLabel: 'Quitar me gusta',\n commentLabel: 'Comentar',\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/** Clamp a rating to the 1–5 range the star row can express. */\nexport function clampRating(rating: number): number {\n if (!Number.isFinite(rating)) return 0\n return Math.min(5, Math.max(0, Math.round(rating)))\n}\n\n/** Emit a `dateTime` attribute only when the value is a real date. */\nexport function safeDateTime(value: string | undefined): string | undefined {\n if (value === undefined) return undefined\n const trimmed = value.trim()\n if (trimmed === '') return undefined\n return Number.isNaN(Date.parse(trimmed)) ? undefined : trimmed\n}\n\n/**\n * The canonical review item cell: one customer review.\n *\n * It is an item cell, not a listing — it takes one review, renders one cell,\n * and owns no engagement state. Actions exist only when their handler exists.\n */\nexport function ReviewCard({\n id,\n author,\n avatar,\n date,\n dateTime,\n rating,\n content,\n helpfulCount,\n likedByViewer,\n labels,\n onToggleLike,\n onComment,\n className,\n}: ReviewCardProps) {\n const copy: ReviewCardLabels = { ...defaultReviewCardLabels, ...labels }\n const filled = clampRating(rating)\n const avatarSrc = typeof avatar === 'string' && avatar.trim() !== '' ? avatar : undefined\n const initials = author.trim().slice(0, 2).toUpperCase()\n const machineDate = safeDateTime(dateTime)\n const liked = likedByViewer === true\n\n return (\n <article className={cn('h-full', className)} data-slot='review-card'>\n <Card className='flex h-full flex-col'>\n <CardHeader className='gap-3'>\n <div className='flex items-start gap-3'>\n <Avatar className='size-10'>\n {avatarSrc ? <AvatarImage src={avatarSrc} alt='' /> : null}\n <AvatarFallback aria-hidden='true'>{initials}</AvatarFallback>\n </Avatar>\n <div className='flex min-w-0 flex-1 flex-col gap-0.5'>\n <h3 className='truncate text-sm font-semibold' data-slot='review-author'>\n {author}\n </h3>\n <time\n className='text-muted-foreground text-xs'\n {...(machineDate === undefined ? {} : { dateTime: machineDate })}\n data-slot='review-date'\n >\n {date}\n </time>\n </div>\n </div>\n <div\n role='img'\n aria-label={interpolate(copy.ratingLabel, { n: filled })}\n className='flex items-center gap-0.5'\n data-slot='review-rating'\n >\n {Array.from({ length: 5 }, (_, index) => (\n <Star\n key={index}\n aria-hidden='true'\n className={cn(\n 'size-4',\n index < filled ? 'fill-current text-foreground' : 'text-muted-foreground',\n )}\n />\n ))}\n </div>\n </CardHeader>\n <CardContent className='flex-1'>\n <p className='text-sm whitespace-pre-line' data-slot='review-content'>\n {content}\n </p>\n </CardContent>\n {onToggleLike || onComment || helpfulCount !== undefined ? (\n <CardFooter className='flex flex-wrap items-center gap-2 border-t pt-3'>\n {onToggleLike ? (\n <Button\n type='button'\n variant='ghost'\n size='sm'\n className='h-8 cursor-pointer gap-1.5 px-2 text-xs'\n aria-pressed={liked}\n aria-label={liked ? copy.unlikeLabel : copy.likeLabel}\n data-slot='review-like'\n onClick={() => onToggleLike(id, !liked)}\n >\n <ThumbsUp aria-hidden='true' className='size-3.5' />\n <span data-slot='review-like-count'>{helpfulCount ?? ''}</span>\n </Button>\n ) : helpfulCount !== undefined ? (\n <span className='text-muted-foreground flex items-center gap-1.5 text-xs'>\n <ThumbsUp aria-hidden='true' className='size-3.5' />\n {interpolate(copy.helpfulLabel, { n: helpfulCount })}\n </span>\n ) : null}\n {onComment ? (\n <Button\n type='button'\n variant='ghost'\n size='sm'\n className='h-8 cursor-pointer gap-1.5 px-2 text-xs'\n aria-label={copy.commentLabel}\n data-slot='review-comment'\n onClick={() => onComment(id)}\n >\n <MessageSquare aria-hidden='true' className='size-3.5' />\n {copy.commentLabel}\n </Button>\n ) : null}\n </CardFooter>\n ) : null}\n </Card>\n </article>\n )\n}\n\nexport default ReviewCard\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmHY;AAnHZ,0BAA8C;AAC9C,mBAAmB;AACnB,oBAAoD;AACpD,oBAAuB;AACvB,kBAA0D;AAmDnD,MAAM,0BAA4C;AAAA,EACvD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,cAAc;AAChB;AAEA,MAAM,cAAc,CAAC,UAAkB,WACrC,SAAS;AAAA,EAAQ;AAAA,EAAc,CAAC,OAAO,QACrC,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AACxC;AAGK,SAAS,YAAY,QAAwB;AAClD,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AACpD;AAGO,SAAS,aAAa,OAA+C;AAC1E,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,YAAY,GAAI,QAAO;AAC3B,SAAO,OAAO,MAAM,KAAK,MAAM,OAAO,CAAC,IAAI,SAAY;AACzD;AAQO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,OAAyB,EAAE,GAAG,yBAAyB,GAAG,OAAO;AACvE,QAAM,SAAS,YAAY,MAAM;AACjC,QAAM,YAAY,OAAO,WAAW,YAAY,OAAO,KAAK,MAAM,KAAK,SAAS;AAChF,QAAM,WAAW,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY;AACvD,QAAM,cAAc,aAAa,QAAQ;AACzC,QAAM,QAAQ,kBAAkB;AAEhC,SACE,4CAAC,aAAQ,eAAW,iBAAG,UAAU,SAAS,GAAG,aAAU,eACrD,uDAAC,oBAAK,WAAU,wBACd;AAAA,iDAAC,0BAAW,WAAU,SACpB;AAAA,mDAAC,SAAI,WAAU,0BACb;AAAA,qDAAC,wBAAO,WAAU,WACf;AAAA,sBAAY,4CAAC,6BAAY,KAAK,WAAW,KAAI,IAAG,IAAK;AAAA,UACtD,4CAAC,gCAAe,eAAY,QAAQ,oBAAS;AAAA,WAC/C;AAAA,QACA,6CAAC,SAAI,WAAU,wCACb;AAAA,sDAAC,QAAG,WAAU,kCAAiC,aAAU,iBACtD,kBACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACT,GAAI,gBAAgB,SAAY,CAAC,IAAI,EAAE,UAAU,YAAY;AAAA,cAC9D,aAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAY,YAAY,KAAK,aAAa,EAAE,GAAG,OAAO,CAAC;AAAA,UACvD,WAAU;AAAA,UACV,aAAU;AAAA,UAET,gBAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,UAC7B;AAAA,YAAC;AAAA;AAAA,cAEC,eAAY;AAAA,cACZ,eAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,SAAS,iCAAiC;AAAA,cACpD;AAAA;AAAA,YALK;AAAA,UAMP,CACD;AAAA;AAAA,MACH;AAAA,OACF;AAAA,IACA,4CAAC,2BAAY,WAAU,UACrB,sDAAC,OAAE,WAAU,+BAA8B,aAAU,kBAClD,mBACH,GACF;AAAA,IACC,gBAAgB,aAAa,iBAAiB,SAC7C,6CAAC,0BAAW,WAAU,mDACnB;AAAA,qBACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,gBAAc;AAAA,UACd,cAAY,QAAQ,KAAK,cAAc,KAAK;AAAA,UAC5C,aAAU;AAAA,UACV,SAAS,MAAM,aAAa,IAAI,CAAC,KAAK;AAAA,UAEtC;AAAA,wDAAC,gCAAS,eAAY,QAAO,WAAU,YAAW;AAAA,YAClD,4CAAC,UAAK,aAAU,qBAAqB,0BAAgB,IAAG;AAAA;AAAA;AAAA,MAC1D,IACE,iBAAiB,SACnB,6CAAC,UAAK,WAAU,2DACd;AAAA,oDAAC,gCAAS,eAAY,QAAO,WAAU,YAAW;AAAA,QACjD,YAAY,KAAK,cAAc,EAAE,GAAG,aAAa,CAAC;AAAA,SACrD,IACE;AAAA,MACH,YACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAY,KAAK;AAAA,UACjB,aAAU;AAAA,UACV,SAAS,MAAM,UAAU,EAAE;AAAA,UAE3B;AAAA,wDAAC,qCAAc,eAAY,QAAO,WAAU,YAAW;AAAA,YACtD,KAAK;AAAA;AAAA;AAAA,MACR,IACE;AAAA,OACN,IACE;AAAA,KACN,GACF;AAEJ;AAEA,IAAO,sBAAQ;","names":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { MessageSquare, Star, ThumbsUp } from "lucide-react";
|
|
3
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
4
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../../../ui/avatar.mjs";
|
|
5
|
+
import { Button } from "../../../ui/button.mjs";
|
|
6
|
+
import { Card, CardContent, CardFooter, CardHeader } from "../../../ui/card.mjs";
|
|
7
|
+
const defaultReviewCardLabels = {
|
|
8
|
+
ratingLabel: "{n} de 5 estrellas",
|
|
9
|
+
helpfulLabel: "A {n} personas les result\xF3 \xFAtil",
|
|
10
|
+
likeLabel: "Me gusta",
|
|
11
|
+
unlikeLabel: "Quitar me gusta",
|
|
12
|
+
commentLabel: "Comentar"
|
|
13
|
+
};
|
|
14
|
+
const interpolate = (template, values) => template.replace(
|
|
15
|
+
/\{(\w+)\}/g,
|
|
16
|
+
(match, key) => key in values ? String(values[key]) : match
|
|
17
|
+
);
|
|
18
|
+
function clampRating(rating) {
|
|
19
|
+
if (!Number.isFinite(rating)) return 0;
|
|
20
|
+
return Math.min(5, Math.max(0, Math.round(rating)));
|
|
21
|
+
}
|
|
22
|
+
function safeDateTime(value) {
|
|
23
|
+
if (value === void 0) return void 0;
|
|
24
|
+
const trimmed = value.trim();
|
|
25
|
+
if (trimmed === "") return void 0;
|
|
26
|
+
return Number.isNaN(Date.parse(trimmed)) ? void 0 : trimmed;
|
|
27
|
+
}
|
|
28
|
+
function ReviewCard({
|
|
29
|
+
id,
|
|
30
|
+
author,
|
|
31
|
+
avatar,
|
|
32
|
+
date,
|
|
33
|
+
dateTime,
|
|
34
|
+
rating,
|
|
35
|
+
content,
|
|
36
|
+
helpfulCount,
|
|
37
|
+
likedByViewer,
|
|
38
|
+
labels,
|
|
39
|
+
onToggleLike,
|
|
40
|
+
onComment,
|
|
41
|
+
className
|
|
42
|
+
}) {
|
|
43
|
+
const copy = { ...defaultReviewCardLabels, ...labels };
|
|
44
|
+
const filled = clampRating(rating);
|
|
45
|
+
const avatarSrc = typeof avatar === "string" && avatar.trim() !== "" ? avatar : void 0;
|
|
46
|
+
const initials = author.trim().slice(0, 2).toUpperCase();
|
|
47
|
+
const machineDate = safeDateTime(dateTime);
|
|
48
|
+
const liked = likedByViewer === true;
|
|
49
|
+
return /* @__PURE__ */ jsx("article", { className: cn("h-full", className), "data-slot": "review-card", children: /* @__PURE__ */ jsxs(Card, { className: "flex h-full flex-col", children: [
|
|
50
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "gap-3", children: [
|
|
51
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
52
|
+
/* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
|
|
53
|
+
avatarSrc ? /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "" }) : null,
|
|
54
|
+
/* @__PURE__ */ jsx(AvatarFallback, { "aria-hidden": "true", children: initials })
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
|
|
57
|
+
/* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-semibold", "data-slot": "review-author", children: author }),
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
"time",
|
|
60
|
+
{
|
|
61
|
+
className: "text-muted-foreground text-xs",
|
|
62
|
+
...machineDate === void 0 ? {} : { dateTime: machineDate },
|
|
63
|
+
"data-slot": "review-date",
|
|
64
|
+
children: date
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] })
|
|
68
|
+
] }),
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
"div",
|
|
71
|
+
{
|
|
72
|
+
role: "img",
|
|
73
|
+
"aria-label": interpolate(copy.ratingLabel, { n: filled }),
|
|
74
|
+
className: "flex items-center gap-0.5",
|
|
75
|
+
"data-slot": "review-rating",
|
|
76
|
+
children: Array.from({ length: 5 }, (_, index) => /* @__PURE__ */ jsx(
|
|
77
|
+
Star,
|
|
78
|
+
{
|
|
79
|
+
"aria-hidden": "true",
|
|
80
|
+
className: cn(
|
|
81
|
+
"size-4",
|
|
82
|
+
index < filled ? "fill-current text-foreground" : "text-muted-foreground"
|
|
83
|
+
)
|
|
84
|
+
},
|
|
85
|
+
index
|
|
86
|
+
))
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
] }),
|
|
90
|
+
/* @__PURE__ */ jsx(CardContent, { className: "flex-1", children: /* @__PURE__ */ jsx("p", { className: "text-sm whitespace-pre-line", "data-slot": "review-content", children: content }) }),
|
|
91
|
+
onToggleLike || onComment || helpfulCount !== void 0 ? /* @__PURE__ */ jsxs(CardFooter, { className: "flex flex-wrap items-center gap-2 border-t pt-3", children: [
|
|
92
|
+
onToggleLike ? /* @__PURE__ */ jsxs(
|
|
93
|
+
Button,
|
|
94
|
+
{
|
|
95
|
+
type: "button",
|
|
96
|
+
variant: "ghost",
|
|
97
|
+
size: "sm",
|
|
98
|
+
className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
|
|
99
|
+
"aria-pressed": liked,
|
|
100
|
+
"aria-label": liked ? copy.unlikeLabel : copy.likeLabel,
|
|
101
|
+
"data-slot": "review-like",
|
|
102
|
+
onClick: () => onToggleLike(id, !liked),
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ jsx(ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
|
|
105
|
+
/* @__PURE__ */ jsx("span", { "data-slot": "review-like-count", children: helpfulCount ?? "" })
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
) : helpfulCount !== void 0 ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground flex items-center gap-1.5 text-xs", children: [
|
|
109
|
+
/* @__PURE__ */ jsx(ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
|
|
110
|
+
interpolate(copy.helpfulLabel, { n: helpfulCount })
|
|
111
|
+
] }) : null,
|
|
112
|
+
onComment ? /* @__PURE__ */ jsxs(
|
|
113
|
+
Button,
|
|
114
|
+
{
|
|
115
|
+
type: "button",
|
|
116
|
+
variant: "ghost",
|
|
117
|
+
size: "sm",
|
|
118
|
+
className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
|
|
119
|
+
"aria-label": copy.commentLabel,
|
|
120
|
+
"data-slot": "review-comment",
|
|
121
|
+
onClick: () => onComment(id),
|
|
122
|
+
children: [
|
|
123
|
+
/* @__PURE__ */ jsx(MessageSquare, { "aria-hidden": "true", className: "size-3.5" }),
|
|
124
|
+
copy.commentLabel
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
) : null
|
|
128
|
+
] }) : null
|
|
129
|
+
] }) });
|
|
130
|
+
}
|
|
131
|
+
var review_card_default = ReviewCard;
|
|
132
|
+
export {
|
|
133
|
+
ReviewCard,
|
|
134
|
+
clampRating,
|
|
135
|
+
review_card_default as default,
|
|
136
|
+
defaultReviewCardLabels,
|
|
137
|
+
safeDateTime
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=review-card.mjs.map
|