@thorprovider/blocks 1.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +274 -46
- package/dist/.tsbuildinfo +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts +21 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.js +147 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.js.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs +153 -0
- package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.d.ts +27 -0
- package/dist/blocks/application/app-shells/app-shell-1.d.ts.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.js +150 -0
- package/dist/blocks/application/app-shells/app-shell-1.js.map +1 -0
- package/dist/blocks/application/app-shells/app-shell-1.mjs +123 -0
- package/dist/blocks/application/app-shells/app-shell-1.mjs.map +1 -0
- package/dist/blocks/application/login-forms/login-page.d.ts +42 -0
- package/dist/blocks/application/login-forms/login-page.d.ts.map +1 -0
- package/dist/blocks/application/login-forms/login-page.js +209 -0
- package/dist/blocks/application/login-forms/login-page.js.map +1 -0
- package/dist/blocks/application/login-forms/login-page.mjs +185 -0
- package/dist/blocks/application/login-forms/login-page.mjs.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts +3 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js +74 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs +50 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts +42 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.js +293 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.js.map +1 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs +259 -0
- package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.d.ts +41 -0
- package/dist/blocks/application/signup-forms/signup-page-1.d.ts.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.js +195 -0
- package/dist/blocks/application/signup-forms/signup-page-1.js.map +1 -0
- package/dist/blocks/application/signup-forms/signup-page-1.mjs +171 -0
- package/dist/blocks/application/signup-forms/signup-page-1.mjs.map +1 -0
- package/dist/blocks/application/verification/verify-1.d.ts +35 -0
- package/dist/blocks/application/verification/verify-1.d.ts.map +1 -0
- package/dist/blocks/application/verification/verify-1.js +243 -0
- package/dist/blocks/application/verification/verify-1.js.map +1 -0
- package/dist/blocks/application/verification/verify-1.mjs +219 -0
- package/dist/blocks/application/verification/verify-1.mjs.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.d.ts +22 -0
- package/dist/blocks/application/verification/verify-confetti.d.ts.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.js +145 -0
- package/dist/blocks/application/verification/verify-confetti.js.map +1 -0
- package/dist/blocks/application/verification/verify-confetti.mjs +121 -0
- package/dist/blocks/application/verification/verify-confetti.mjs.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts +39 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js +180 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs +156 -0
- package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.d.ts +236 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.d.ts.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.js +562 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.js.map +1 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.mjs +539 -0
- package/dist/blocks/e-commerce/category-filters/category-listing.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts +4 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +97 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +73 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts +41 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js +115 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs +91 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts +107 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js +180 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs +156 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +13 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +180 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +156 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts +12 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +50 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +33 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js +50 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs +25 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts +5 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js +17 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +20 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +176 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +152 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +12 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +93 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +69 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js +76 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs +52 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +64 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +40 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +17 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +199 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +175 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +164 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.js +351 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +327 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.d.ts +28 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.js +78 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.mjs +52 -0
- package/dist/blocks/e-commerce/navigation/back-to-top.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts +61 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.js +111 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.mjs +93 -0
- package/dist/blocks/e-commerce/navigation/breadcrumb.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.d.ts +28 -0
- package/dist/blocks/e-commerce/navigation/category-icon.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.js +86 -0
- package/dist/blocks/e-commerce/navigation/category-icon.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/category-icon.mjs +79 -0
- package/dist/blocks/e-commerce/navigation/category-icon.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.d.ts +112 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.js +250 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.mjs +228 -0
- package/dist/blocks/e-commerce/navigation/mega-menu.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts +71 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js +94 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs +68 -0
- package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts +121 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js +257 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs +235 -0
- package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts +25 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.js +55 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.mjs +30 -0
- package/dist/blocks/e-commerce/navigation/skip-to-content.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts +23 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js +127 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs +111 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts +66 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +280 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +263 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts +13 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js +83 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs +59 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts +8 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js +73 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs +49 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts +121 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js +424 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +399 -0
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.d.ts +74 -0
- package/dist/blocks/e-commerce/order-history/order-history.d.ts.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.js +161 -0
- package/dist/blocks/e-commerce/order-history/order-history.js.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-history.mjs +141 -0
- package/dist/blocks/e-commerce/order-history/order-history.mjs.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.d.ts +50 -0
- package/dist/blocks/e-commerce/order-history/order-line.d.ts.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.js +75 -0
- package/dist/blocks/e-commerce/order-history/order-line.js.map +1 -0
- package/dist/blocks/e-commerce/order-history/order-line.mjs +49 -0
- package/dist/blocks/e-commerce/order-history/order-line.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.d.ts +9 -0
- package/dist/blocks/e-commerce/product-categories/category-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.js +154 -0
- package/dist/blocks/e-commerce/product-categories/category-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-card.mjs +134 -0
- package/dist/blocks/e-commerce/product-categories/category-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.d.ts +15 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.js +101 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.mjs +97 -0
- package/dist/blocks/e-commerce/product-categories/category-shared.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts +10 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.js +138 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs +114 -0
- package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.d.ts +41 -0
- package/dist/blocks/e-commerce/product-categories/product-category.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.js +319 -0
- package/dist/blocks/e-commerce/product-categories/product-category.js.map +1 -0
- package/dist/blocks/e-commerce/product-categories/product-category.mjs +322 -0
- package/dist/blocks/e-commerce/product-categories/product-category.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.d.ts +47 -0
- package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.js +361 -0
- package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-card.mjs +337 -0
- package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.d.ts +28 -0
- package/dist/blocks/e-commerce/product-list/product-grid.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.js +92 -0
- package/dist/blocks/e-commerce/product-list/product-grid.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-grid.mjs +68 -0
- package/dist/blocks/e-commerce/product-list/product-grid.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts +30 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js +245 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +221 -0
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts +20 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js +71 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs +47 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts +15 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js +118 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs +94 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts +26 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js +85 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs +61 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts +32 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js +79 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs +51 -0
- package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.d.ts +121 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.js +844 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.mjs +821 -0
- package/dist/blocks/e-commerce/product-overview/product-overview.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts +17 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js +123 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs +99 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts +20 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +271 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +253 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts +68 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.js +84 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.js.map +1 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs +60 -0
- package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.d.ts +60 -0
- package/dist/blocks/e-commerce/reviews/review-card.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.js +166 -0
- package/dist/blocks/e-commerce/reviews/review-card.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-card.mjs +139 -0
- package/dist/blocks/e-commerce/reviews/review-card.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.d.ts +50 -0
- package/dist/blocks/e-commerce/reviews/review-composer.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.js +180 -0
- package/dist/blocks/e-commerce/reviews/review-composer.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-composer.mjs +155 -0
- package/dist/blocks/e-commerce/reviews/review-composer.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.d.ts +40 -0
- package/dist/blocks/e-commerce/reviews/review-list.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.js +138 -0
- package/dist/blocks/e-commerce/reviews/review-list.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-list.mjs +119 -0
- package/dist/blocks/e-commerce/reviews/review-list.mjs.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.d.ts +49 -0
- package/dist/blocks/e-commerce/reviews/review-summary.d.ts.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.js +150 -0
- package/dist/blocks/e-commerce/reviews/review-summary.js.map +1 -0
- package/dist/blocks/e-commerce/reviews/review-summary.mjs +124 -0
- package/dist/blocks/e-commerce/reviews/review-summary.mjs.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts +98 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js +417 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js.map +1 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs +393 -0
- package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts +13 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.js +45 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.js.map +1 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.mjs +21 -0
- package/dist/blocks/e-commerce/store-containers/store-container-1.mjs.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts +163 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +810 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +786 -0
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.d.ts +8 -0
- package/dist/blocks/marketing/banners/avatar-group.d.ts.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.js +90 -0
- package/dist/blocks/marketing/banners/avatar-group.js.map +1 -0
- package/dist/blocks/marketing/banners/avatar-group.mjs +56 -0
- package/dist/blocks/marketing/banners/avatar-group.mjs.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.d.ts +26 -0
- package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.js +177 -0
- package/dist/blocks/marketing/banners/banner-1.js.map +1 -0
- package/dist/blocks/marketing/banners/banner-1.mjs +153 -0
- package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.d.ts +13 -0
- package/dist/blocks/marketing/cta/cta-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.js +116 -0
- package/dist/blocks/marketing/cta/cta-section-1.js.map +1 -0
- package/dist/blocks/marketing/cta/cta-section-1.mjs +92 -0
- package/dist/blocks/marketing/cta/cta-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.d.ts +16 -0
- package/dist/blocks/marketing/faq/faq-block-1.d.ts.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.js +49 -0
- package/dist/blocks/marketing/faq/faq-block-1.js.map +1 -0
- package/dist/blocks/marketing/faq/faq-block-1.mjs +25 -0
- package/dist/blocks/marketing/faq/faq-block-1.mjs.map +1 -0
- package/dist/blocks/marketing/features/feature.d.ts +45 -0
- package/dist/blocks/marketing/features/feature.d.ts.map +1 -0
- package/dist/blocks/marketing/features/feature.js +135 -0
- package/dist/blocks/marketing/features/feature.js.map +1 -0
- package/dist/blocks/marketing/features/feature.mjs +111 -0
- package/dist/blocks/marketing/features/feature.mjs.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.d.ts +59 -0
- package/dist/blocks/marketing/footers/footer-section.d.ts.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.js +356 -0
- package/dist/blocks/marketing/footers/footer-section.js.map +1 -0
- package/dist/blocks/marketing/footers/footer-section.mjs +332 -0
- package/dist/blocks/marketing/footers/footer-section.mjs.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.d.ts +9 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.d.ts.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.js +92 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.js.map +1 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.mjs +58 -0
- package/dist/blocks/marketing/hero-sections/avatar-group.mjs.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts +27 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.js +124 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.js.map +1 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.mjs +100 -0
- package/dist/blocks/marketing/hero-sections/hero-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts +19 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js +63 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs +39 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts +13 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js +49 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js.map +1 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs +25 -0
- package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.d.ts +80 -0
- package/dist/blocks/marketing/navbars/navbar.d.ts.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.js +484 -0
- package/dist/blocks/marketing/navbars/navbar.js.map +1 -0
- package/dist/blocks/marketing/navbars/navbar.mjs +475 -0
- package/dist/blocks/marketing/navbars/navbar.mjs.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.d.ts +23 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.d.ts.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.js +89 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.js.map +1 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.mjs +65 -0
- package/dist/blocks/marketing/pricing/pricing-section-1.mjs.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.d.ts +19 -0
- package/dist/blocks/marketing/statistics/statistic-1.d.ts.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.js +83 -0
- package/dist/blocks/marketing/statistics/statistic-1.js.map +1 -0
- package/dist/blocks/marketing/statistics/statistic-1.mjs +59 -0
- package/dist/blocks/marketing/statistics/statistic-1.mjs.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.d.ts +29 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.d.ts.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.js +173 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.js.map +1 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.mjs +155 -0
- package/dist/blocks/marketing/testimonials/testimonial-section.mjs.map +1 -0
- package/dist/blocks/shared/reaction-toggle.d.ts +14 -0
- package/dist/blocks/shared/reaction-toggle.d.ts.map +1 -0
- package/dist/blocks/shared/reaction-toggle.js +138 -0
- package/dist/blocks/shared/reaction-toggle.js.map +1 -0
- package/dist/blocks/shared/reaction-toggle.mjs +114 -0
- package/dist/blocks/shared/reaction-toggle.mjs.map +1 -0
- package/dist/hooks/use-mobile.d.ts +2 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +53 -0
- package/dist/hooks/use-mobile.js.map +1 -0
- package/dist/hooks/use-mobile.mjs +19 -0
- package/dist/hooks/use-mobile.mjs.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +238 -0
- package/dist/index.mjs.map +1 -0
- package/{src/lib/cart.ts → dist/lib/cart.d.ts} +2 -3
- package/dist/lib/cart.d.ts.map +1 -0
- package/dist/lib/cart.js +31 -0
- package/dist/lib/cart.js.map +1 -0
- package/dist/lib/cart.mjs +7 -0
- package/dist/lib/cart.mjs.map +1 -0
- package/dist/lib/contracts.d.ts +4008 -0
- package/dist/lib/contracts.d.ts.map +1 -0
- package/dist/lib/contracts.js +828 -0
- package/dist/lib/contracts.js.map +1 -0
- package/dist/lib/contracts.mjs +737 -0
- package/dist/lib/contracts.mjs.map +1 -0
- package/dist/lib/money.d.ts +28 -0
- package/dist/lib/money.d.ts.map +1 -0
- package/dist/lib/money.js +50 -0
- package/dist/lib/money.js.map +1 -0
- package/dist/lib/money.mjs +24 -0
- package/dist/lib/money.mjs.map +1 -0
- package/dist/lib/types/menu.d.ts +40 -0
- package/dist/lib/types/menu.d.ts.map +1 -0
- package/dist/lib/types/menu.js +50 -0
- package/dist/lib/types/menu.js.map +1 -0
- package/dist/lib/types/menu.mjs +25 -0
- package/dist/lib/types/menu.mjs.map +1 -0
- package/dist/lib/types.d.ts +5 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +17 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/types.mjs +1 -0
- package/dist/lib/types.mjs.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +33 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/utils.mjs +9 -0
- package/dist/lib/utils.mjs.map +1 -0
- package/dist/ui/accordion.d.ts +8 -0
- package/dist/ui/accordion.d.ts.map +1 -0
- package/dist/ui/accordion.js +93 -0
- package/dist/ui/accordion.js.map +1 -0
- package/dist/ui/accordion.mjs +66 -0
- package/dist/ui/accordion.mjs.map +1 -0
- package/dist/ui/avatar.d.ts +12 -0
- package/dist/ui/avatar.d.ts.map +1 -0
- package/dist/ui/avatar.js +134 -0
- package/dist/ui/avatar.js.map +1 -0
- package/{src/ui/avatar.tsx → dist/ui/avatar.mjs} +67 -70
- package/dist/ui/avatar.mjs.map +1 -0
- package/dist/ui/badge.d.ts +10 -0
- package/dist/ui/badge.d.ts.map +1 -0
- package/dist/ui/badge.js +69 -0
- package/dist/ui/badge.js.map +1 -0
- package/dist/ui/badge.mjs +44 -0
- package/dist/ui/badge.mjs.map +1 -0
- package/dist/ui/breadcrumb.d.ts +12 -0
- package/dist/ui/breadcrumb.d.ts.map +1 -0
- package/dist/ui/breadcrumb.js +134 -0
- package/dist/ui/breadcrumb.js.map +1 -0
- package/dist/ui/breadcrumb.mjs +104 -0
- package/dist/ui/breadcrumb.mjs.map +1 -0
- package/dist/ui/button-group.d.ts +12 -0
- package/dist/ui/button-group.d.ts.map +1 -0
- package/dist/ui/button-group.js +104 -0
- package/dist/ui/button-group.js.map +1 -0
- package/dist/ui/button-group.mjs +77 -0
- package/dist/ui/button-group.mjs.map +1 -0
- package/dist/ui/button.d.ts +11 -0
- package/dist/ui/button.d.ts.map +1 -0
- package/dist/ui/button.js +82 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/button.mjs +57 -0
- package/dist/ui/button.mjs.map +1 -0
- package/dist/ui/card.d.ts +10 -0
- package/dist/ui/card.d.ts.map +1 -0
- package/dist/ui/card.js +121 -0
- package/dist/ui/card.js.map +1 -0
- package/dist/ui/card.mjs +91 -0
- package/dist/ui/card.mjs.map +1 -0
- package/dist/ui/carousel.d.ts +20 -0
- package/dist/ui/carousel.d.ts.map +1 -0
- package/dist/ui/carousel.js +238 -0
- package/dist/ui/carousel.js.map +1 -0
- package/dist/ui/carousel.mjs +200 -0
- package/dist/ui/carousel.mjs.map +1 -0
- package/dist/ui/dialog.d.ts +18 -0
- package/dist/ui/dialog.d.ts.map +1 -0
- package/dist/ui/dialog.js +181 -0
- package/dist/ui/dialog.js.map +1 -0
- package/dist/ui/dialog.mjs +148 -0
- package/dist/ui/dialog.mjs.map +1 -0
- package/dist/ui/drawer.d.ts +14 -0
- package/dist/ui/drawer.d.ts.map +1 -0
- package/dist/ui/drawer.js +163 -0
- package/dist/ui/drawer.js.map +1 -0
- package/dist/ui/drawer.mjs +130 -0
- package/dist/ui/drawer.mjs.map +1 -0
- package/dist/ui/dropdown-menu.d.ts +26 -0
- package/dist/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/ui/dropdown-menu.js +271 -0
- package/dist/ui/dropdown-menu.js.map +1 -0
- package/dist/ui/dropdown-menu.mjs +233 -0
- package/dist/ui/dropdown-menu.mjs.map +1 -0
- package/dist/ui/empty.d.ts +12 -0
- package/dist/ui/empty.d.ts.map +1 -0
- package/dist/ui/empty.js +132 -0
- package/dist/ui/empty.js.map +1 -0
- package/dist/ui/empty.mjs +103 -0
- package/dist/ui/empty.mjs.map +1 -0
- package/dist/ui/field.d.ts +25 -0
- package/dist/ui/field.d.ts.map +1 -0
- package/dist/ui/field.js +264 -0
- package/dist/ui/field.js.map +1 -0
- package/{src/ui/field.tsx → dist/ui/field.mjs} +142 -159
- package/dist/ui/field.mjs.map +1 -0
- package/dist/ui/input-group.d.ts +17 -0
- package/dist/ui/input-group.d.ts.map +1 -0
- package/dist/ui/input-group.js +185 -0
- package/dist/ui/input-group.js.map +1 -0
- package/{src/ui/input-group.tsx → dist/ui/input-group.mjs} +92 -106
- package/dist/ui/input-group.mjs.map +1 -0
- package/dist/ui/input-otp.d.ts +12 -0
- package/dist/ui/input-otp.d.ts.map +1 -0
- package/dist/ui/input-otp.js +105 -0
- package/dist/ui/input-otp.js.map +1 -0
- package/dist/ui/input-otp.mjs +68 -0
- package/dist/ui/input-otp.mjs.map +1 -0
- package/dist/ui/input.d.ts +4 -0
- package/dist/ui/input.d.ts.map +1 -0
- package/dist/ui/input.js +46 -0
- package/dist/ui/input.js.map +1 -0
- package/{src/ui/input.tsx → dist/ui/input.mjs} +17 -15
- package/dist/ui/input.mjs.map +1 -0
- package/dist/ui/label.d.ts +5 -0
- package/dist/ui/label.d.ts.map +1 -0
- package/dist/ui/label.js +48 -0
- package/dist/ui/label.js.map +1 -0
- package/dist/ui/label.mjs +24 -0
- package/dist/ui/label.mjs.map +1 -0
- package/dist/ui/navigation-menu.d.ts +15 -0
- package/dist/ui/navigation-menu.d.ts.map +1 -0
- package/dist/ui/navigation-menu.js +203 -0
- package/dist/ui/navigation-menu.js.map +1 -0
- package/{src/ui/navigation-menu.tsx → dist/ui/navigation-menu.mjs} +116 -112
- package/dist/ui/navigation-menu.mjs.map +1 -0
- package/dist/ui/pagination.d.ts +14 -0
- package/dist/ui/pagination.d.ts.map +1 -0
- package/dist/ui/pagination.js +149 -0
- package/dist/ui/pagination.js.map +1 -0
- package/dist/ui/pagination.mjs +123 -0
- package/dist/ui/pagination.mjs.map +1 -0
- package/dist/ui/progress.d.ts +5 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +57 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/progress.mjs +33 -0
- package/dist/ui/progress.mjs.map +1 -0
- package/dist/ui/radio-group.d.ts +6 -0
- package/dist/ui/radio-group.d.ts.map +1 -0
- package/dist/ui/radio-group.js +72 -0
- package/dist/ui/radio-group.js.map +1 -0
- package/dist/ui/radio-group.mjs +47 -0
- package/dist/ui/radio-group.mjs.map +1 -0
- package/dist/ui/select.d.ts +16 -0
- package/dist/ui/select.d.ts.map +1 -0
- package/dist/ui/select.js +213 -0
- package/dist/ui/select.js.map +1 -0
- package/dist/ui/select.mjs +180 -0
- package/dist/ui/select.mjs.map +1 -0
- package/dist/ui/separator.d.ts +5 -0
- package/dist/ui/separator.d.ts.map +1 -0
- package/dist/ui/separator.js +52 -0
- package/dist/ui/separator.js.map +1 -0
- package/dist/ui/separator.mjs +28 -0
- package/dist/ui/separator.mjs.map +1 -0
- package/dist/ui/sheet.d.ts +15 -0
- package/dist/ui/sheet.d.ts.map +1 -0
- package/dist/ui/sheet.js +160 -0
- package/dist/ui/sheet.js.map +1 -0
- package/dist/ui/sheet.mjs +129 -0
- package/dist/ui/sheet.mjs.map +1 -0
- package/dist/ui/sidebar.d.ts +70 -0
- package/dist/ui/sidebar.d.ts.map +1 -0
- package/dist/ui/sidebar.js +697 -0
- package/dist/ui/sidebar.js.map +1 -0
- package/dist/ui/sidebar.mjs +651 -0
- package/dist/ui/sidebar.mjs.map +1 -0
- package/dist/ui/skeleton.d.ts +3 -0
- package/dist/ui/skeleton.d.ts.map +1 -0
- package/dist/ui/skeleton.js +40 -0
- package/dist/ui/skeleton.js.map +1 -0
- package/dist/ui/skeleton.mjs +16 -0
- package/dist/ui/skeleton.mjs.map +1 -0
- package/dist/ui/table.d.ts +11 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +147 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/table.mjs +116 -0
- package/dist/ui/table.mjs.map +1 -0
- package/dist/ui/tabs.d.ts +12 -0
- package/dist/ui/tabs.d.ts.map +1 -0
- package/dist/ui/tabs.js +121 -0
- package/dist/ui/tabs.js.map +1 -0
- package/{src/ui/tabs.tsx → dist/ui/tabs.mjs} +59 -56
- package/dist/ui/tabs.mjs.map +1 -0
- package/dist/ui/textarea.d.ts +4 -0
- package/dist/ui/textarea.d.ts.map +1 -0
- package/dist/ui/textarea.js +43 -0
- package/dist/ui/textarea.js.map +1 -0
- package/{src/ui/textarea.tsx → dist/ui/textarea.mjs} +16 -14
- package/dist/ui/textarea.mjs.map +1 -0
- package/dist/ui/toggle-group.d.ts +10 -0
- package/dist/ui/toggle-group.d.ts.map +1 -0
- package/dist/ui/toggle-group.js +105 -0
- package/dist/ui/toggle-group.js.map +1 -0
- package/dist/ui/toggle-group.mjs +70 -0
- package/dist/ui/toggle-group.mjs.map +1 -0
- package/dist/ui/toggle.d.ts +10 -0
- package/dist/ui/toggle.d.ts.map +1 -0
- package/dist/ui/toggle.js +70 -0
- package/dist/ui/toggle.js.map +1 -0
- package/{src/ui/toggle.tsx → dist/ui/toggle.mjs} +25 -26
- package/dist/ui/toggle.mjs.map +1 -0
- package/dist/ui/tooltip.d.ts +8 -0
- package/dist/ui/tooltip.d.ts.map +1 -0
- package/dist/ui/tooltip.js +84 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/ui/tooltip.mjs +57 -0
- package/dist/ui/tooltip.mjs.map +1 -0
- package/package.json +8 -1
- package/AGENTS.md +0 -1
- package/CHANGELOG.md +0 -107
- package/components.json +0 -33
- package/docs/standards/data-contracts.md +0 -81
- package/docs/standards/theming.md +0 -112
- package/scripts/fix-esm-extensions.mjs +0 -40
- package/src/blocks/application/app-shells/app-shell-1-sidebar.tsx +0 -198
- package/src/blocks/application/app-shells/app-shell-1.tsx +0 -196
- package/src/blocks/application/login-forms/login-page-1.tsx +0 -246
- package/src/blocks/application/login-forms/login-page-2.tsx +0 -207
- package/src/blocks/application/password-recovery/forgot-password-page-1-brand-mark.tsx +0 -38
- package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +0 -320
- package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -231
- package/src/blocks/application/verification/verify-1.tsx +0 -307
- package/src/blocks/application/verification/verify-confetti.tsx +0 -192
- package/src/blocks/e-commerce/category-filters/category-filter-1.tsx +0 -260
- package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +0 -222
- package/src/blocks/e-commerce/category-filters/category-filter-2.test.tsx +0 -513
- package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +0 -921
- package/src/blocks/e-commerce/category-filters/category-filter-4-chip-rail.tsx +0 -57
- package/src/blocks/e-commerce/category-filters/category-filter-4-drawer.tsx +0 -124
- package/src/blocks/e-commerce/category-filters/category-filter-4-fields.tsx +0 -170
- package/src/blocks/e-commerce/category-filters/category-filter-4-sidebar.tsx +0 -52
- package/src/blocks/e-commerce/category-filters/category-filter-4-sort-sheet.tsx +0 -57
- package/src/blocks/e-commerce/category-filters/category-filter-4-state.ts +0 -68
- package/src/blocks/e-commerce/category-filters/category-filter-4.tsx +0 -298
- package/src/blocks/e-commerce/checkout-forms/card-formatting.test.ts +0 -47
- package/src/blocks/e-commerce/checkout-forms/card-formatting.ts +0 -9
- package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
- package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
- package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-contact-step.tsx +0 -96
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-country-field.tsx +0 -51
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +0 -252
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +0 -188
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-progress.tsx +0 -36
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1-shipping-step.tsx +0 -156
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +0 -216
- package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +0 -338
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-order-summary.tsx +0 -130
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-payment-card.tsx +0 -175
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2-shipping-card.tsx +0 -190
- package/src/blocks/e-commerce/checkout-forms/checkout-form-2.tsx +0 -312
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-information-step.tsx +0 -91
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-order-summary.tsx +0 -110
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-payment-step.tsx +0 -137
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-progress.tsx +0 -68
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-review-step.tsx +0 -79
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3-shipping-step.tsx +0 -172
- package/src/blocks/e-commerce/checkout-forms/checkout-form-3.tsx +0 -392
- package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
- package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
- package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
- package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
- package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
- package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
- package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
- package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
- package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
- package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
- package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
- package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
- package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
- package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
- package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
- package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
- package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
- package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
- package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
- package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
- package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
- package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
- package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
- package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
- package/src/blocks/e-commerce/product-list/product-card.tsx +0 -424
- package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
- package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
- package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
- package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
- package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
- package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
- package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
- package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
- package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
- package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
- package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
- package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
- package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
- package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
- package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
- package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
- package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
- package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
- package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
- package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
- package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
- package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
- package/src/blocks/marketing/banners/banner-1.tsx +0 -188
- package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
- package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
- package/src/blocks/marketing/features/feature.test.tsx +0 -153
- package/src/blocks/marketing/features/feature.tsx +0 -195
- package/src/blocks/marketing/footers/footer-section-1.test.tsx +0 -117
- package/src/blocks/marketing/footers/footer-section-1.tsx +0 -178
- package/src/blocks/marketing/footers/footer-section-3.tsx +0 -192
- package/src/blocks/marketing/footers/footer-section-4.tsx +0 -355
- package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
- package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
- package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
- package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
- package/src/blocks/marketing/navbars/navbar-1.tsx +0 -267
- package/src/blocks/marketing/navbars/navbar-2.tsx +0 -351
- package/src/blocks/marketing/navbars/navbar-3.tsx +0 -303
- package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +0 -56
- package/src/blocks/marketing/navbars/navbar-4-account-menu.tsx +0 -134
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.test.tsx +0 -204
- package/src/blocks/marketing/navbars/navbar-4-cart-sheet.tsx +0 -371
- package/src/blocks/marketing/navbars/navbar-4-like-button.tsx +0 -177
- package/src/blocks/marketing/navbars/navbar-4-mobile-nav.tsx +0 -104
- package/src/blocks/marketing/navbars/navbar-4-product-grid.tsx +0 -219
- package/src/blocks/marketing/navbars/navbar-4-search-bar.tsx +0 -52
- package/src/blocks/marketing/navbars/navbar-4.test.tsx +0 -264
- package/src/blocks/marketing/navbars/navbar-4.tsx +0 -604
- package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
- package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
- package/src/blocks/marketing/testimonials/testimonial-1.tsx +0 -141
- package/src/blocks/marketing/testimonials/testimonial-2.tsx +0 -108
- package/src/blocks/shared/reaction-toggle.tsx +0 -145
- package/src/hooks/use-mobile.ts +0 -19
- package/src/index.ts +0 -285
- package/src/lib/cart.test.ts +0 -15
- package/src/lib/contracts-curated.test.ts +0 -225
- package/src/lib/contracts-server-boundary.test.ts +0 -52
- package/src/lib/contracts.test.ts +0 -173
- package/src/lib/contracts.ts +0 -795
- package/src/lib/money.test.ts +0 -64
- package/src/lib/money.ts +0 -65
- package/src/lib/types/menu.ts +0 -43
- package/src/lib/types.ts +0 -4
- package/src/lib/utils.ts +0 -10
- package/src/ui/accordion.tsx +0 -65
- package/src/ui/badge.tsx +0 -47
- package/src/ui/breadcrumb.tsx +0 -108
- package/src/ui/button-group.tsx +0 -83
- package/src/ui/button.tsx +0 -63
- package/src/ui/card.tsx +0 -91
- package/src/ui/carousel.tsx +0 -241
- package/src/ui/dialog.tsx +0 -158
- package/src/ui/drawer.tsx +0 -134
- package/src/ui/dropdown-menu.tsx +0 -256
- package/src/ui/empty.tsx +0 -103
- package/src/ui/input-otp.tsx +0 -76
- package/src/ui/label.tsx +0 -23
- package/src/ui/pagination.tsx +0 -127
- package/src/ui/progress.tsx +0 -30
- package/src/ui/radio-group.tsx +0 -44
- package/src/ui/select.tsx +0 -189
- package/src/ui/separator.tsx +0 -27
- package/src/ui/sheet.tsx +0 -142
- package/src/ui/sidebar.tsx +0 -726
- package/src/ui/skeleton.tsx +0 -13
- package/src/ui/table.tsx +0 -115
- package/src/ui/toggle-group.tsx +0 -83
- package/src/ui/tooltip.tsx +0 -56
- package/tsconfig.build.json +0 -12
- package/tsconfig.json +0 -20
- package/tsup.config.ts +0 -19
- package/vitest.config.ts +0 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-gallery.tsx"],"sourcesContent":["import { Camera } from 'lucide-react'\nimport { Badge } from '../../../ui/badge'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewGalleryProps {\n /** Resolved image URLs for the product (never empty strings; a fallback is allowed). */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n /** Optional badge label; omitted when absent. */\n badgeLabel?: string\n selectedImage: number\n onSelectImage: (index: number) => void\n photosLabel?: string\n}\n\n/**\n * Image-forward gallery used by the canonical ProductOverview `rich` presentation: a large\n * primary image with an optional badge and a photo count, plus a thumbnail strip. Operates on\n * already-resolved URLs so it carries no product-shape assumption (no `mainImages`/`galleryImages`\n * split, no sector fields).\n */\nexport function ProductOverviewGallery({\n images,\n title,\n badgeLabel,\n selectedImage,\n onSelectImage,\n photosLabel = 'fotos',\n}: ProductOverviewGalleryProps) {\n const activeImage = images[Math.min(selectedImage, images.length - 1)]\n\n return (\n <div>\n <div className='bg-muted relative aspect-square overflow-hidden rounded-xl'>\n <img src={activeImage || undefined} alt={title} className='size-full object-cover' />\n {badgeLabel ? (\n <Badge className='absolute top-4 left-4 px-2.5 py-0.5 font-semibold'>{badgeLabel}</Badge>\n ) : null}\n <div className='absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm'>\n <Camera className='mr-1 inline size-4' />\n {images.length} {photosLabel}\n </div>\n </div>\n\n {images.length > 1 ? (\n <div className='mt-4 flex gap-3 overflow-x-auto pb-2'>\n {images.map((image, index) => (\n <button\n type='button'\n key={`${title}:gallery:${index}`}\n onClick={() => onSelectImage(index)}\n className={cn(\n 'relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all',\n selectedImage === index\n ? 'border-primary ring-primary/20 shadow-md ring-2'\n : 'border-muted hover:border-muted-foreground/50',\n )}\n aria-label={`Mostrar imagen ${index + 1} de ${title}`}\n aria-pressed={selectedImage === index}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default ProductOverviewGallery\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCQ;AAnCR,0BAAuB;AACvB,mBAAsB;AACtB,mBAAmB;AAoBZ,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAgC;AAC9B,QAAM,cAAc,OAAO,KAAK,IAAI,eAAe,OAAO,SAAS,CAAC,CAAC;AAErE,SACE,6CAAC,SACC;AAAA,iDAAC,SAAI,WAAU,8DACb;AAAA,kDAAC,SAAI,KAAK,eAAe,QAAW,KAAK,OAAO,WAAU,0BAAyB;AAAA,MAClF,aACC,4CAAC,sBAAM,WAAU,qDAAqD,sBAAW,IAC/E;AAAA,MACJ,6CAAC,SAAI,WAAU,sGACb;AAAA,oDAAC,8BAAO,WAAU,sBAAqB;AAAA,QACtC,OAAO;AAAA,QAAO;AAAA,QAAE;AAAA,SACnB;AAAA,OACF;AAAA,IAEC,OAAO,SAAS,IACf,4CAAC,SAAI,WAAU,wCACZ,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QAEL,SAAS,MAAM,cAAc,KAAK;AAAA,QAClC,eAAW;AAAA,UACT;AAAA,UACA,kBAAkB,QACd,oDACA;AAAA,QACN;AAAA,QACA,cAAY,kBAAkB,QAAQ,CAAC,OAAO,KAAK;AAAA,QACnD,gBAAc,kBAAkB;AAAA,QAEhC,sDAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MAX1F,GAAG,KAAK,YAAY,KAAK;AAAA,IAYhC,CACD,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Camera } from "lucide-react";
|
|
3
|
+
import { Badge } from "../../../ui/badge.mjs";
|
|
4
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
5
|
+
function ProductOverviewGallery({
|
|
6
|
+
images,
|
|
7
|
+
title,
|
|
8
|
+
badgeLabel,
|
|
9
|
+
selectedImage,
|
|
10
|
+
onSelectImage,
|
|
11
|
+
photosLabel = "fotos"
|
|
12
|
+
}) {
|
|
13
|
+
const activeImage = images[Math.min(selectedImage, images.length - 1)];
|
|
14
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
15
|
+
/* @__PURE__ */ jsxs("div", { className: "bg-muted relative aspect-square overflow-hidden rounded-xl", children: [
|
|
16
|
+
/* @__PURE__ */ jsx("img", { src: activeImage || void 0, alt: title, className: "size-full object-cover" }),
|
|
17
|
+
badgeLabel ? /* @__PURE__ */ jsx(Badge, { className: "absolute top-4 left-4 px-2.5 py-0.5 font-semibold", children: badgeLabel }) : null,
|
|
18
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm", children: [
|
|
19
|
+
/* @__PURE__ */ jsx(Camera, { className: "mr-1 inline size-4" }),
|
|
20
|
+
images.length,
|
|
21
|
+
" ",
|
|
22
|
+
photosLabel
|
|
23
|
+
] })
|
|
24
|
+
] }),
|
|
25
|
+
images.length > 1 ? /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-3 overflow-x-auto pb-2", children: images.map((image, index) => /* @__PURE__ */ jsx(
|
|
26
|
+
"button",
|
|
27
|
+
{
|
|
28
|
+
type: "button",
|
|
29
|
+
onClick: () => onSelectImage(index),
|
|
30
|
+
className: cn(
|
|
31
|
+
"relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all",
|
|
32
|
+
selectedImage === index ? "border-primary ring-primary/20 shadow-md ring-2" : "border-muted hover:border-muted-foreground/50"
|
|
33
|
+
),
|
|
34
|
+
"aria-label": `Mostrar imagen ${index + 1} de ${title}`,
|
|
35
|
+
"aria-pressed": selectedImage === index,
|
|
36
|
+
children: /* @__PURE__ */ jsx("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
|
|
37
|
+
},
|
|
38
|
+
`${title}:gallery:${index}`
|
|
39
|
+
)) }) : null
|
|
40
|
+
] });
|
|
41
|
+
}
|
|
42
|
+
var product_overview_gallery_default = ProductOverviewGallery;
|
|
43
|
+
export {
|
|
44
|
+
ProductOverviewGallery,
|
|
45
|
+
product_overview_gallery_default as default
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=product-overview-gallery.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-gallery.tsx"],"sourcesContent":["import { Camera } from 'lucide-react'\nimport { Badge } from '../../../ui/badge'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewGalleryProps {\n /** Resolved image URLs for the product (never empty strings; a fallback is allowed). */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n /** Optional badge label; omitted when absent. */\n badgeLabel?: string\n selectedImage: number\n onSelectImage: (index: number) => void\n photosLabel?: string\n}\n\n/**\n * Image-forward gallery used by the canonical ProductOverview `rich` presentation: a large\n * primary image with an optional badge and a photo count, plus a thumbnail strip. Operates on\n * already-resolved URLs so it carries no product-shape assumption (no `mainImages`/`galleryImages`\n * split, no sector fields).\n */\nexport function ProductOverviewGallery({\n images,\n title,\n badgeLabel,\n selectedImage,\n onSelectImage,\n photosLabel = 'fotos',\n}: ProductOverviewGalleryProps) {\n const activeImage = images[Math.min(selectedImage, images.length - 1)]\n\n return (\n <div>\n <div className='bg-muted relative aspect-square overflow-hidden rounded-xl'>\n <img src={activeImage || undefined} alt={title} className='size-full object-cover' />\n {badgeLabel ? (\n <Badge className='absolute top-4 left-4 px-2.5 py-0.5 font-semibold'>{badgeLabel}</Badge>\n ) : null}\n <div className='absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm'>\n <Camera className='mr-1 inline size-4' />\n {images.length} {photosLabel}\n </div>\n </div>\n\n {images.length > 1 ? (\n <div className='mt-4 flex gap-3 overflow-x-auto pb-2'>\n {images.map((image, index) => (\n <button\n type='button'\n key={`${title}:gallery:${index}`}\n onClick={() => onSelectImage(index)}\n className={cn(\n 'relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all',\n selectedImage === index\n ? 'border-primary ring-primary/20 shadow-md ring-2'\n : 'border-muted hover:border-muted-foreground/50',\n )}\n aria-label={`Mostrar imagen ${index + 1} de ${title}`}\n aria-pressed={selectedImage === index}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default ProductOverviewGallery\n"],"mappings":"AAmCQ,cAIA,YAJA;AAnCR,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,UAAU;AAoBZ,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAgC;AAC9B,QAAM,cAAc,OAAO,KAAK,IAAI,eAAe,OAAO,SAAS,CAAC,CAAC;AAErE,SACE,qBAAC,SACC;AAAA,yBAAC,SAAI,WAAU,8DACb;AAAA,0BAAC,SAAI,KAAK,eAAe,QAAW,KAAK,OAAO,WAAU,0BAAyB;AAAA,MAClF,aACC,oBAAC,SAAM,WAAU,qDAAqD,sBAAW,IAC/E;AAAA,MACJ,qBAAC,SAAI,WAAU,sGACb;AAAA,4BAAC,UAAO,WAAU,sBAAqB;AAAA,QACtC,OAAO;AAAA,QAAO;AAAA,QAAE;AAAA,SACnB;AAAA,OACF;AAAA,IAEC,OAAO,SAAS,IACf,oBAAC,SAAI,WAAU,wCACZ,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QAEL,SAAS,MAAM,cAAc,KAAK;AAAA,QAClC,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB,QACd,oDACA;AAAA,QACN;AAAA,QACA,cAAY,kBAAkB,QAAQ,CAAC,OAAO,KAAK;AAAA,QACnD,gBAAc,kBAAkB;AAAA,QAEhC,8BAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MAX1F,GAAG,KAAK,YAAY,KAAK;AAAA,IAYhC,CACD,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ProductOverviewLightboxTabProps {
|
|
2
|
+
/** Resolved image URLs for the product. */
|
|
3
|
+
images: string[];
|
|
4
|
+
/** Product title, used for alt text. */
|
|
5
|
+
title: string;
|
|
6
|
+
galleryLabel?: string;
|
|
7
|
+
ofCounterLabel?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with
|
|
11
|
+
* prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ProductOverviewLightboxTab({ images, title, galleryLabel, ofCounterLabel, }: ProductOverviewLightboxTabProps): import("react").JSX.Element;
|
|
14
|
+
export default ProductOverviewLightboxTab;
|
|
15
|
+
//# sourceMappingURL=product-overview-lightbox-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-overview-lightbox-tab.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,+BAA+B;IAC9C,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,KAAK,EACL,YAAwB,EACxB,cAAuC,GACxC,EAAE,+BAA+B,+BAsFjC;AAED,eAAe,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,118 @@
|
|
|
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_overview_lightbox_tab_exports = {};
|
|
21
|
+
__export(product_overview_lightbox_tab_exports, {
|
|
22
|
+
ProductOverviewLightboxTab: () => ProductOverviewLightboxTab,
|
|
23
|
+
default: () => product_overview_lightbox_tab_default
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(product_overview_lightbox_tab_exports);
|
|
26
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
+
var import_react = require("react");
|
|
28
|
+
var import_lucide_react = require("lucide-react");
|
|
29
|
+
var import_button = require("../../../ui/button.js");
|
|
30
|
+
var import_card = require("../../../ui/card.js");
|
|
31
|
+
var import_dialog = require("../../../ui/dialog.js");
|
|
32
|
+
var import_utils = require("../../../lib/utils.js");
|
|
33
|
+
function ProductOverviewLightboxTab({
|
|
34
|
+
images,
|
|
35
|
+
title,
|
|
36
|
+
galleryLabel = "Galer\xEDa",
|
|
37
|
+
ofCounterLabel = "{current} de {total}"
|
|
38
|
+
}) {
|
|
39
|
+
const [modalImageIndex, setModalImageIndex] = (0, import_react.useState)(0);
|
|
40
|
+
const nextImage = () => setModalImageIndex((prev) => (prev + 1) % images.length);
|
|
41
|
+
const prevImage = () => setModalImageIndex((prev) => (prev - 1 + images.length) % images.length);
|
|
42
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardContent, { className: "p-8 py-0", children: [
|
|
43
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "mb-6 text-xl font-semibold text-balance", children: galleryLabel }),
|
|
44
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.Dialog, { children: [
|
|
45
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
46
|
+
"button",
|
|
47
|
+
{
|
|
48
|
+
type: "button",
|
|
49
|
+
className: "block aspect-square cursor-pointer overflow-hidden rounded-xl",
|
|
50
|
+
onClick: () => setModalImageIndex(index),
|
|
51
|
+
"aria-label": `Abrir imagen ${index + 1} de ${title}`,
|
|
52
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
|
|
53
|
+
}
|
|
54
|
+
) }),
|
|
55
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.DialogContent, { className: "max-w-4xl border-0 bg-transparent p-0", showCloseButton: false, children: [
|
|
56
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.DialogTitle, { className: "sr-only", children: [
|
|
57
|
+
"Imagen de galer\xEDa ",
|
|
58
|
+
modalImageIndex + 1
|
|
59
|
+
] }),
|
|
60
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
|
|
61
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
62
|
+
"img",
|
|
63
|
+
{
|
|
64
|
+
src: images[modalImageIndex] || void 0,
|
|
65
|
+
alt: `${title} ${modalImageIndex + 1}`,
|
|
66
|
+
className: "max-h-[80vh] w-full object-contain"
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.DialogClose, { className: "absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { className: "size-4" }) }),
|
|
70
|
+
images.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
72
|
+
import_button.Button,
|
|
73
|
+
{
|
|
74
|
+
variant: "ghost",
|
|
75
|
+
size: "icon",
|
|
76
|
+
className: "absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
|
|
77
|
+
onClick: prevImage,
|
|
78
|
+
"aria-label": "Imagen anterior",
|
|
79
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronLeft, { className: "size-4" })
|
|
80
|
+
}
|
|
81
|
+
),
|
|
82
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
83
|
+
import_button.Button,
|
|
84
|
+
{
|
|
85
|
+
variant: "ghost",
|
|
86
|
+
size: "icon",
|
|
87
|
+
className: "absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
|
|
88
|
+
onClick: nextImage,
|
|
89
|
+
"aria-label": "Imagen siguiente",
|
|
90
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronRight, { className: "size-4" })
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
] }) : null,
|
|
94
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2", children: images.map((_, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
95
|
+
"button",
|
|
96
|
+
{
|
|
97
|
+
type: "button",
|
|
98
|
+
"aria-label": `Mostrar imagen ${idx + 1}`,
|
|
99
|
+
className: (0, import_utils.cn)(
|
|
100
|
+
"size-2 rounded-full transition-colors",
|
|
101
|
+
idx === modalImageIndex ? "bg-white" : "bg-white/50"
|
|
102
|
+
),
|
|
103
|
+
onClick: () => setModalImageIndex(idx)
|
|
104
|
+
},
|
|
105
|
+
`${title}:dot:${idx}`
|
|
106
|
+
)) }),
|
|
107
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white", children: ofCounterLabel.replace("{current}", String(modalImageIndex + 1)).replace("{total}", String(images.length)) })
|
|
108
|
+
] })
|
|
109
|
+
] })
|
|
110
|
+
] }, `${title}:lightbox:${index}`)) })
|
|
111
|
+
] }) });
|
|
112
|
+
}
|
|
113
|
+
var product_overview_lightbox_tab_default = ProductOverviewLightboxTab;
|
|
114
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
115
|
+
0 && (module.exports = {
|
|
116
|
+
ProductOverviewLightboxTab
|
|
117
|
+
});
|
|
118
|
+
//# sourceMappingURL=product-overview-lightbox-tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { ChevronLeft, ChevronRight, X } from 'lucide-react'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from '../../../ui/dialog'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewLightboxTabProps {\n /** Resolved image URLs for the product. */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n galleryLabel?: string\n ofCounterLabel?: string\n}\n\n/**\n * Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with\n * prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.\n */\nexport function ProductOverviewLightboxTab({\n images,\n title,\n galleryLabel = 'Galería',\n ofCounterLabel = '{current} de {total}',\n}: ProductOverviewLightboxTabProps) {\n const [modalImageIndex, setModalImageIndex] = useState(0)\n\n const nextImage = () => setModalImageIndex(prev => (prev + 1) % images.length)\n const prevImage = () => setModalImageIndex(prev => (prev - 1 + images.length) % images.length)\n\n return (\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <h3 className='mb-6 text-xl font-semibold text-balance'>{galleryLabel}</h3>\n <div className='grid gap-4 sm:grid-cols-2 lg:grid-cols-3'>\n {images.map((image, index) => (\n <Dialog key={`${title}:lightbox:${index}`}>\n <DialogTrigger asChild>\n <button\n type='button'\n className='block aspect-square cursor-pointer overflow-hidden rounded-xl'\n onClick={() => setModalImageIndex(index)}\n aria-label={`Abrir imagen ${index + 1} de ${title}`}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n </DialogTrigger>\n <DialogContent className='max-w-4xl border-0 bg-transparent p-0' showCloseButton={false}>\n <DialogTitle className='sr-only'>Imagen de galería {modalImageIndex + 1}</DialogTitle>\n <div className='relative'>\n <img\n src={images[modalImageIndex] || undefined}\n alt={`${title} ${modalImageIndex + 1}`}\n className='max-h-[80vh] w-full object-contain'\n />\n <DialogClose className='absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30'>\n <X className='size-4' />\n </DialogClose>\n\n {images.length > 1 ? (\n <>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={prevImage}\n aria-label='Imagen anterior'\n >\n <ChevronLeft className='size-4' />\n </Button>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={nextImage}\n aria-label='Imagen siguiente'\n >\n <ChevronRight className='size-4' />\n </Button>\n </>\n ) : null}\n\n <div className='absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2'>\n {images.map((_, idx) => (\n <button\n type='button'\n key={`${title}:dot:${idx}`}\n aria-label={`Mostrar imagen ${idx + 1}`}\n className={cn(\n 'size-2 rounded-full transition-colors',\n idx === modalImageIndex ? 'bg-white' : 'bg-white/50',\n )}\n onClick={() => setModalImageIndex(idx)}\n />\n ))}\n </div>\n\n <div className='absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white'>\n {ofCounterLabel\n .replace('{current}', String(modalImageIndex + 1))\n .replace('{total}', String(images.length))}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n ))}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default ProductOverviewLightboxTab\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCQ;AAlCR,mBAAyB;AACzB,0BAA6C;AAC7C,oBAAuB;AACvB,kBAAkC;AAClC,oBAA+E;AAC/E,mBAAmB;AAeZ,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,GAAoC;AAClC,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,CAAC;AAExD,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,KAAK,OAAO,MAAM;AAC7E,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,IAAI,OAAO,UAAU,OAAO,MAAM;AAE7F,SACE,4CAAC,oBAAK,WAAU,sBACd,uDAAC,2BAAY,WAAU,YACrB;AAAA,gDAAC,QAAG,WAAU,2CAA2C,wBAAa;AAAA,IACtE,4CAAC,SAAI,WAAU,4CACZ,iBAAO,IAAI,CAAC,OAAO,UAClB,6CAAC,wBACC;AAAA,kDAAC,+BAAc,SAAO,MACpB;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM,mBAAmB,KAAK;AAAA,UACvC,cAAY,gBAAgB,QAAQ,CAAC,OAAO,KAAK;AAAA,UAEjD,sDAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MACjG,GACF;AAAA,MACA,6CAAC,+BAAc,WAAU,yCAAwC,iBAAiB,OAChF;AAAA,qDAAC,6BAAY,WAAU,WAAU;AAAA;AAAA,UAAmB,kBAAkB;AAAA,WAAE;AAAA,QACxE,6CAAC,SAAI,WAAU,YACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,OAAO,eAAe,KAAK;AAAA,cAChC,KAAK,GAAG,KAAK,IAAI,kBAAkB,CAAC;AAAA,cACpC,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,4CAAC,6BAAY,WAAU,sGACrB,sDAAC,yBAAE,WAAU,UAAS,GACxB;AAAA,UAEC,OAAO,SAAS,IACf,4EACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,sDAAC,mCAAY,WAAU,UAAS;AAAA;AAAA,YAClC;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,sDAAC,oCAAa,WAAU,UAAS;AAAA;AAAA,YACnC;AAAA,aACF,IACE;AAAA,UAEJ,4CAAC,SAAI,WAAU,0DACZ,iBAAO,IAAI,CAAC,GAAG,QACd;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cAEL,cAAY,kBAAkB,MAAM,CAAC;AAAA,cACrC,eAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,kBAAkB,aAAa;AAAA,cACzC;AAAA,cACA,SAAS,MAAM,mBAAmB,GAAG;AAAA;AAAA,YANhC,GAAG,KAAK,QAAQ,GAAG;AAAA,UAO1B,CACD,GACH;AAAA,UAEA,4CAAC,SAAI,WAAU,mFACZ,yBACE,QAAQ,aAAa,OAAO,kBAAkB,CAAC,CAAC,EAChD,QAAQ,WAAW,OAAO,OAAO,MAAM,CAAC,GAC7C;AAAA,WACF;AAAA,SACF;AAAA,SAnEW,GAAG,KAAK,aAAa,KAAK,EAoEvC,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,wCAAQ;","names":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { ChevronLeft, ChevronRight, X } from "lucide-react";
|
|
5
|
+
import { Button } from "../../../ui/button.mjs";
|
|
6
|
+
import { Card, CardContent } from "../../../ui/card.mjs";
|
|
7
|
+
import { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from "../../../ui/dialog.mjs";
|
|
8
|
+
import { cn } from "../../../lib/utils.mjs";
|
|
9
|
+
function ProductOverviewLightboxTab({
|
|
10
|
+
images,
|
|
11
|
+
title,
|
|
12
|
+
galleryLabel = "Galer\xEDa",
|
|
13
|
+
ofCounterLabel = "{current} de {total}"
|
|
14
|
+
}) {
|
|
15
|
+
const [modalImageIndex, setModalImageIndex] = useState(0);
|
|
16
|
+
const nextImage = () => setModalImageIndex((prev) => (prev + 1) % images.length);
|
|
17
|
+
const prevImage = () => setModalImageIndex((prev) => (prev - 1 + images.length) % images.length);
|
|
18
|
+
return /* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-8 py-0", children: [
|
|
19
|
+
/* @__PURE__ */ jsx("h3", { className: "mb-6 text-xl font-semibold text-balance", children: galleryLabel }),
|
|
20
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: images.map((image, index) => /* @__PURE__ */ jsxs(Dialog, { children: [
|
|
21
|
+
/* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
22
|
+
"button",
|
|
23
|
+
{
|
|
24
|
+
type: "button",
|
|
25
|
+
className: "block aspect-square cursor-pointer overflow-hidden rounded-xl",
|
|
26
|
+
onClick: () => setModalImageIndex(index),
|
|
27
|
+
"aria-label": `Abrir imagen ${index + 1} de ${title}`,
|
|
28
|
+
children: /* @__PURE__ */ jsx("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
|
|
29
|
+
}
|
|
30
|
+
) }),
|
|
31
|
+
/* @__PURE__ */ jsxs(DialogContent, { className: "max-w-4xl border-0 bg-transparent p-0", showCloseButton: false, children: [
|
|
32
|
+
/* @__PURE__ */ jsxs(DialogTitle, { className: "sr-only", children: [
|
|
33
|
+
"Imagen de galer\xEDa ",
|
|
34
|
+
modalImageIndex + 1
|
|
35
|
+
] }),
|
|
36
|
+
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
37
|
+
/* @__PURE__ */ jsx(
|
|
38
|
+
"img",
|
|
39
|
+
{
|
|
40
|
+
src: images[modalImageIndex] || void 0,
|
|
41
|
+
alt: `${title} ${modalImageIndex + 1}`,
|
|
42
|
+
className: "max-h-[80vh] w-full object-contain"
|
|
43
|
+
}
|
|
44
|
+
),
|
|
45
|
+
/* @__PURE__ */ jsx(DialogClose, { className: "absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30", children: /* @__PURE__ */ jsx(X, { className: "size-4" }) }),
|
|
46
|
+
images.length > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
Button,
|
|
49
|
+
{
|
|
50
|
+
variant: "ghost",
|
|
51
|
+
size: "icon",
|
|
52
|
+
className: "absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
|
|
53
|
+
onClick: prevImage,
|
|
54
|
+
"aria-label": "Imagen anterior",
|
|
55
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" })
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
Button,
|
|
60
|
+
{
|
|
61
|
+
variant: "ghost",
|
|
62
|
+
size: "icon",
|
|
63
|
+
className: "absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
|
|
64
|
+
onClick: nextImage,
|
|
65
|
+
"aria-label": "Imagen siguiente",
|
|
66
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4" })
|
|
67
|
+
}
|
|
68
|
+
)
|
|
69
|
+
] }) : null,
|
|
70
|
+
/* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2", children: images.map((_, idx) => /* @__PURE__ */ jsx(
|
|
71
|
+
"button",
|
|
72
|
+
{
|
|
73
|
+
type: "button",
|
|
74
|
+
"aria-label": `Mostrar imagen ${idx + 1}`,
|
|
75
|
+
className: cn(
|
|
76
|
+
"size-2 rounded-full transition-colors",
|
|
77
|
+
idx === modalImageIndex ? "bg-white" : "bg-white/50"
|
|
78
|
+
),
|
|
79
|
+
onClick: () => setModalImageIndex(idx)
|
|
80
|
+
},
|
|
81
|
+
`${title}:dot:${idx}`
|
|
82
|
+
)) }),
|
|
83
|
+
/* @__PURE__ */ jsx("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white", children: ofCounterLabel.replace("{current}", String(modalImageIndex + 1)).replace("{total}", String(images.length)) })
|
|
84
|
+
] })
|
|
85
|
+
] })
|
|
86
|
+
] }, `${title}:lightbox:${index}`)) })
|
|
87
|
+
] }) });
|
|
88
|
+
}
|
|
89
|
+
var product_overview_lightbox_tab_default = ProductOverviewLightboxTab;
|
|
90
|
+
export {
|
|
91
|
+
ProductOverviewLightboxTab,
|
|
92
|
+
product_overview_lightbox_tab_default as default
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=product-overview-lightbox-tab.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { ChevronLeft, ChevronRight, X } from 'lucide-react'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from '../../../ui/dialog'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewLightboxTabProps {\n /** Resolved image URLs for the product. */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n galleryLabel?: string\n ofCounterLabel?: string\n}\n\n/**\n * Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with\n * prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.\n */\nexport function ProductOverviewLightboxTab({\n images,\n title,\n galleryLabel = 'Galería',\n ofCounterLabel = '{current} de {total}',\n}: ProductOverviewLightboxTabProps) {\n const [modalImageIndex, setModalImageIndex] = useState(0)\n\n const nextImage = () => setModalImageIndex(prev => (prev + 1) % images.length)\n const prevImage = () => setModalImageIndex(prev => (prev - 1 + images.length) % images.length)\n\n return (\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <h3 className='mb-6 text-xl font-semibold text-balance'>{galleryLabel}</h3>\n <div className='grid gap-4 sm:grid-cols-2 lg:grid-cols-3'>\n {images.map((image, index) => (\n <Dialog key={`${title}:lightbox:${index}`}>\n <DialogTrigger asChild>\n <button\n type='button'\n className='block aspect-square cursor-pointer overflow-hidden rounded-xl'\n onClick={() => setModalImageIndex(index)}\n aria-label={`Abrir imagen ${index + 1} de ${title}`}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n </DialogTrigger>\n <DialogContent className='max-w-4xl border-0 bg-transparent p-0' showCloseButton={false}>\n <DialogTitle className='sr-only'>Imagen de galería {modalImageIndex + 1}</DialogTitle>\n <div className='relative'>\n <img\n src={images[modalImageIndex] || undefined}\n alt={`${title} ${modalImageIndex + 1}`}\n className='max-h-[80vh] w-full object-contain'\n />\n <DialogClose className='absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30'>\n <X className='size-4' />\n </DialogClose>\n\n {images.length > 1 ? (\n <>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={prevImage}\n aria-label='Imagen anterior'\n >\n <ChevronLeft className='size-4' />\n </Button>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={nextImage}\n aria-label='Imagen siguiente'\n >\n <ChevronRight className='size-4' />\n </Button>\n </>\n ) : null}\n\n <div className='absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2'>\n {images.map((_, idx) => (\n <button\n type='button'\n key={`${title}:dot:${idx}`}\n aria-label={`Mostrar imagen ${idx + 1}`}\n className={cn(\n 'size-2 rounded-full transition-colors',\n idx === modalImageIndex ? 'bg-white' : 'bg-white/50',\n )}\n onClick={() => setModalImageIndex(idx)}\n />\n ))}\n </div>\n\n <div className='absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white'>\n {ofCounterLabel\n .replace('{current}', String(modalImageIndex + 1))\n .replace('{total}', String(images.length))}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n ))}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default ProductOverviewLightboxTab\n"],"mappings":";AAoCQ,SA2BY,UA3BZ,KAeQ,YAfR;AAlCR,SAAS,gBAAgB;AACzB,SAAS,aAAa,cAAc,SAAS;AAC7C,SAAS,cAAc;AACvB,SAAS,MAAM,mBAAmB;AAClC,SAAS,QAAQ,aAAa,eAAe,aAAa,qBAAqB;AAC/E,SAAS,UAAU;AAeZ,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,GAAoC;AAClC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,CAAC;AAExD,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,KAAK,OAAO,MAAM;AAC7E,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,IAAI,OAAO,UAAU,OAAO,MAAM;AAE7F,SACE,oBAAC,QAAK,WAAU,sBACd,+BAAC,eAAY,WAAU,YACrB;AAAA,wBAAC,QAAG,WAAU,2CAA2C,wBAAa;AAAA,IACtE,oBAAC,SAAI,WAAU,4CACZ,iBAAO,IAAI,CAAC,OAAO,UAClB,qBAAC,UACC;AAAA,0BAAC,iBAAc,SAAO,MACpB;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM,mBAAmB,KAAK;AAAA,UACvC,cAAY,gBAAgB,QAAQ,CAAC,OAAO,KAAK;AAAA,UAEjD,8BAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MACjG,GACF;AAAA,MACA,qBAAC,iBAAc,WAAU,yCAAwC,iBAAiB,OAChF;AAAA,6BAAC,eAAY,WAAU,WAAU;AAAA;AAAA,UAAmB,kBAAkB;AAAA,WAAE;AAAA,QACxE,qBAAC,SAAI,WAAU,YACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,OAAO,eAAe,KAAK;AAAA,cAChC,KAAK,GAAG,KAAK,IAAI,kBAAkB,CAAC;AAAA,cACpC,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,oBAAC,eAAY,WAAU,sGACrB,8BAAC,KAAE,WAAU,UAAS,GACxB;AAAA,UAEC,OAAO,SAAS,IACf,iCACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,8BAAC,eAAY,WAAU,UAAS;AAAA;AAAA,YAClC;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,8BAAC,gBAAa,WAAU,UAAS;AAAA;AAAA,YACnC;AAAA,aACF,IACE;AAAA,UAEJ,oBAAC,SAAI,WAAU,0DACZ,iBAAO,IAAI,CAAC,GAAG,QACd;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cAEL,cAAY,kBAAkB,MAAM,CAAC;AAAA,cACrC,WAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,kBAAkB,aAAa;AAAA,cACzC;AAAA,cACA,SAAS,MAAM,mBAAmB,GAAG;AAAA;AAAA,YANhC,GAAG,KAAK,QAAQ,GAAG;AAAA,UAO1B,CACD,GACH;AAAA,UAEA,oBAAC,SAAI,WAAU,mFACZ,yBACE,QAAQ,aAAa,OAAO,kBAAkB,CAAC,CAAC,EAChD,QAAQ,WAAW,OAAO,OAAO,MAAM,CAAC,GAC7C;AAAA,WACF;AAAA,SACF;AAAA,SAnEW,GAAG,KAAK,aAAa,KAAK,EAoEvC,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,wCAAQ;","names":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the
|
|
3
|
+
* host (optional block data), never seeded by the block.
|
|
4
|
+
*/
|
|
5
|
+
export interface ProductOverviewReview {
|
|
6
|
+
id: number;
|
|
7
|
+
author: string;
|
|
8
|
+
rating: number;
|
|
9
|
+
comment: string;
|
|
10
|
+
date: string;
|
|
11
|
+
helpful?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ProductOverviewReviewsTabProps {
|
|
14
|
+
/** Aggregate rating (0–5); rendered only when the host supplies reviews. */
|
|
15
|
+
rating: number;
|
|
16
|
+
reviews: ProductOverviewReview[];
|
|
17
|
+
basedOnReviewsLabel?: string;
|
|
18
|
+
foundHelpfulLabel?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered
|
|
22
|
+
* only when the host supplies reviews, so it never fabricates an empty review surface.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ProductOverviewReviewsTab({ rating, reviews, basedOnReviewsLabel, foundHelpfulLabel, }: ProductOverviewReviewsTabProps): import("react").JSX.Element;
|
|
25
|
+
export default ProductOverviewReviewsTab;
|
|
26
|
+
//# sourceMappingURL=product-overview-reviews-tab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-overview-reviews-tab.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAeD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,mBAAiD,EACjD,iBAA4D,GAC7D,EAAE,8BAA8B,+BAuDhC;AAED,eAAe,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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 product_overview_reviews_tab_exports = {};
|
|
20
|
+
__export(product_overview_reviews_tab_exports, {
|
|
21
|
+
ProductOverviewReviewsTab: () => ProductOverviewReviewsTab,
|
|
22
|
+
default: () => product_overview_reviews_tab_default
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(product_overview_reviews_tab_exports);
|
|
25
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
var import_lucide_react = require("lucide-react");
|
|
27
|
+
var import_card = require("../../../ui/card.js");
|
|
28
|
+
var import_progress = require("../../../ui/progress.js");
|
|
29
|
+
function renderStars(rating) {
|
|
30
|
+
return Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
31
|
+
import_lucide_react.Star,
|
|
32
|
+
{
|
|
33
|
+
className: `size-4 ${i < Math.floor(rating) ? "fill-foreground text-foreground" : i < rating ? "text-foreground" : ""}`
|
|
34
|
+
},
|
|
35
|
+
i
|
|
36
|
+
));
|
|
37
|
+
}
|
|
38
|
+
function formatDate(dateString) {
|
|
39
|
+
return new Date(dateString).toLocaleDateString("es-ES", { year: "numeric", month: "short", day: "numeric" });
|
|
40
|
+
}
|
|
41
|
+
function ProductOverviewReviewsTab({
|
|
42
|
+
rating,
|
|
43
|
+
reviews,
|
|
44
|
+
basedOnReviewsLabel = "Basado en {count} rese\xF1as",
|
|
45
|
+
foundHelpfulLabel = "{count} personas encontraron esto \xFAtil"
|
|
46
|
+
}) {
|
|
47
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-6", children: [
|
|
48
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardContent, { className: "p-8 py-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-start gap-8 md:flex-row md:items-center", children: [
|
|
49
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-center", children: [
|
|
50
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-4xl font-bold", children: rating }),
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-2 flex justify-center", children: renderStars(rating) }),
|
|
52
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground mt-2 text-sm", children: basedOnReviewsLabel.replace("{count}", String(reviews.length)) })
|
|
53
|
+
] }),
|
|
54
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1", children: [5, 4, 3, 2, 1].map((stars) => {
|
|
55
|
+
const count = reviews.filter((review) => Math.floor(review.rating) === stars).length;
|
|
56
|
+
const percentage = reviews.length > 0 ? count / reviews.length * 100 : 0;
|
|
57
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mb-3 flex items-center gap-3", children: [
|
|
58
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "w-8 text-sm font-medium", children: [
|
|
59
|
+
stars,
|
|
60
|
+
"\u2605"
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_progress.Progress, { value: percentage, className: "h-2 flex-1 rounded-full" }),
|
|
63
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground w-8 text-sm", children: count })
|
|
64
|
+
] }, stars);
|
|
65
|
+
}) })
|
|
66
|
+
] }) }) }),
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-col gap-4", children: reviews.map((review) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardContent, { className: "p-6 py-0", children: [
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-4 flex items-start justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
|
|
69
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm font-medium", children: review.author }),
|
|
70
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-2 flex items-center gap-2", children: [
|
|
71
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex", children: renderStars(review.rating) }),
|
|
72
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground text-sm", children: formatDate(review.date) })
|
|
73
|
+
] })
|
|
74
|
+
] }) }),
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground mb-3 text-sm leading-relaxed", children: review.comment }),
|
|
76
|
+
typeof review.helpful === "number" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground text-xs", children: foundHelpfulLabel.replace("{count}", String(review.helpful)) }) : null
|
|
77
|
+
] }) }, review.id)) })
|
|
78
|
+
] });
|
|
79
|
+
}
|
|
80
|
+
var product_overview_reviews_tab_default = ProductOverviewReviewsTab;
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
ProductOverviewReviewsTab
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=product-overview-reviews-tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"sourcesContent":["import { Star } from 'lucide-react'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Progress } from '../../../ui/progress'\n\n/**\n * Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the\n * host (optional block data), never seeded by the block.\n */\nexport interface ProductOverviewReview {\n id: number\n author: string\n rating: number\n comment: string\n date: string\n helpful?: number\n}\n\nexport interface ProductOverviewReviewsTabProps {\n /** Aggregate rating (0–5); rendered only when the host supplies reviews. */\n rating: number\n reviews: ProductOverviewReview[]\n basedOnReviewsLabel?: string\n foundHelpfulLabel?: string\n}\n\nfunction renderStars(rating: number) {\n return Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={`size-4 ${i < Math.floor(rating) ? 'fill-foreground text-foreground' : i < rating ? 'text-foreground' : ''}`}\n />\n ))\n}\n\nfunction formatDate(dateString: string) {\n return new Date(dateString).toLocaleDateString('es-ES', { year: 'numeric', month: 'short', day: 'numeric' })\n}\n\n/**\n * Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered\n * only when the host supplies reviews, so it never fabricates an empty review surface.\n */\nexport function ProductOverviewReviewsTab({\n rating,\n reviews,\n basedOnReviewsLabel = 'Basado en {count} reseñas',\n foundHelpfulLabel = '{count} personas encontraron esto útil',\n}: ProductOverviewReviewsTabProps) {\n return (\n <div className='flex flex-col gap-6'>\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <div className='flex flex-col items-start gap-8 md:flex-row md:items-center'>\n <div className='text-center'>\n <div className='text-4xl font-bold'>{rating}</div>\n <div className='mt-2 flex justify-center'>{renderStars(rating)}</div>\n <div className='text-muted-foreground mt-2 text-sm'>\n {basedOnReviewsLabel.replace('{count}', String(reviews.length))}\n </div>\n </div>\n <div className='flex-1'>\n {[5, 4, 3, 2, 1].map(stars => {\n const count = reviews.filter(review => Math.floor(review.rating) === stars).length\n const percentage = reviews.length > 0 ? (count / reviews.length) * 100 : 0\n return (\n <div key={stars} className='mb-3 flex items-center gap-3'>\n <span className='w-8 text-sm font-medium'>{stars}★</span>\n <Progress value={percentage} className='h-2 flex-1 rounded-full' />\n <span className='text-muted-foreground w-8 text-sm'>{count}</span>\n </div>\n )\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className='flex flex-col gap-4'>\n {reviews.map(review => (\n <Card key={review.id} className='border shadow-none'>\n <CardContent className='p-6 py-0'>\n <div className='mb-4 flex items-start justify-between'>\n <div>\n <div className='text-sm font-medium'>{review.author}</div>\n <div className='mt-2 flex items-center gap-2'>\n <div className='flex'>{renderStars(review.rating)}</div>\n <span className='text-muted-foreground text-sm'>{formatDate(review.date)}</span>\n </div>\n </div>\n </div>\n <p className='text-muted-foreground mb-3 text-sm leading-relaxed'>{review.comment}</p>\n {typeof review.helpful === 'number' ? (\n <div className='text-muted-foreground text-xs'>\n {foundHelpfulLabel.replace('{count}', String(review.helpful))}\n </div>\n ) : null}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ProductOverviewReviewsTab\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BI;AA3BJ,0BAAqB;AACrB,kBAAkC;AAClC,sBAAyB;AAuBzB,SAAS,YAAY,QAAgB;AACnC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MACnC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,UAAU,IAAI,KAAK,MAAM,MAAM,IAAI,oCAAoC,IAAI,SAAS,oBAAoB,EAAE;AAAA;AAAA,IADhH;AAAA,EAEP,CACD;AACH;AAEA,SAAS,WAAW,YAAoB;AACtC,SAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS,EAAE,MAAM,WAAW,OAAO,SAAS,KAAK,UAAU,CAAC;AAC7G;AAMO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,GAAmC;AACjC,SACE,6CAAC,SAAI,WAAU,uBACb;AAAA,gDAAC,oBAAK,WAAU,sBACd,sDAAC,2BAAY,WAAU,YACrB,uDAAC,SAAI,WAAU,+DACb;AAAA,mDAAC,SAAI,WAAU,eACb;AAAA,oDAAC,SAAI,WAAU,sBAAsB,kBAAO;AAAA,QAC5C,4CAAC,SAAI,WAAU,4BAA4B,sBAAY,MAAM,GAAE;AAAA,QAC/D,4CAAC,SAAI,WAAU,sCACZ,8BAAoB,QAAQ,WAAW,OAAO,QAAQ,MAAM,CAAC,GAChE;AAAA,SACF;AAAA,MACA,4CAAC,SAAI,WAAU,UACZ,WAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,WAAS;AAC5B,cAAM,QAAQ,QAAQ,OAAO,YAAU,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK,EAAE;AAC5E,cAAM,aAAa,QAAQ,SAAS,IAAK,QAAQ,QAAQ,SAAU,MAAM;AACzE,eACE,6CAAC,SAAgB,WAAU,gCACzB;AAAA,uDAAC,UAAK,WAAU,2BAA2B;AAAA;AAAA,YAAM;AAAA,aAAC;AAAA,UAClD,4CAAC,4BAAS,OAAO,YAAY,WAAU,2BAA0B;AAAA,UACjE,4CAAC,UAAK,WAAU,qCAAqC,iBAAM;AAAA,aAHnD,KAIV;AAAA,MAEJ,CAAC,GACH;AAAA,OACF,GACF,GACF;AAAA,IAEA,4CAAC,SAAI,WAAU,uBACZ,kBAAQ,IAAI,YACX,4CAAC,oBAAqB,WAAU,sBAC9B,uDAAC,2BAAY,WAAU,YACrB;AAAA,kDAAC,SAAI,WAAU,yCACb,uDAAC,SACC;AAAA,oDAAC,SAAI,WAAU,uBAAuB,iBAAO,QAAO;AAAA,QACpD,6CAAC,SAAI,WAAU,gCACb;AAAA,sDAAC,SAAI,WAAU,QAAQ,sBAAY,OAAO,MAAM,GAAE;AAAA,UAClD,4CAAC,UAAK,WAAU,iCAAiC,qBAAW,OAAO,IAAI,GAAE;AAAA,WAC3E;AAAA,SACF,GACF;AAAA,MACA,4CAAC,OAAE,WAAU,sDAAsD,iBAAO,SAAQ;AAAA,MACjF,OAAO,OAAO,YAAY,WACzB,4CAAC,SAAI,WAAU,iCACZ,4BAAkB,QAAQ,WAAW,OAAO,OAAO,OAAO,CAAC,GAC9D,IACE;AAAA,OACN,KAjBS,OAAO,EAkBlB,CACD,GACH;AAAA,KACF;AAEJ;AAEA,IAAO,uCAAQ;","names":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Star } from "lucide-react";
|
|
3
|
+
import { Card, CardContent } from "../../../ui/card.mjs";
|
|
4
|
+
import { Progress } from "../../../ui/progress.mjs";
|
|
5
|
+
function renderStars(rating) {
|
|
6
|
+
return Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsx(
|
|
7
|
+
Star,
|
|
8
|
+
{
|
|
9
|
+
className: `size-4 ${i < Math.floor(rating) ? "fill-foreground text-foreground" : i < rating ? "text-foreground" : ""}`
|
|
10
|
+
},
|
|
11
|
+
i
|
|
12
|
+
));
|
|
13
|
+
}
|
|
14
|
+
function formatDate(dateString) {
|
|
15
|
+
return new Date(dateString).toLocaleDateString("es-ES", { year: "numeric", month: "short", day: "numeric" });
|
|
16
|
+
}
|
|
17
|
+
function ProductOverviewReviewsTab({
|
|
18
|
+
rating,
|
|
19
|
+
reviews,
|
|
20
|
+
basedOnReviewsLabel = "Basado en {count} rese\xF1as",
|
|
21
|
+
foundHelpfulLabel = "{count} personas encontraron esto \xFAtil"
|
|
22
|
+
}) {
|
|
23
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
|
|
24
|
+
/* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsx(CardContent, { className: "p-8 py-0", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-8 md:flex-row md:items-center", children: [
|
|
25
|
+
/* @__PURE__ */ jsxs("div", { className: "text-center", children: [
|
|
26
|
+
/* @__PURE__ */ jsx("div", { className: "text-4xl font-bold", children: rating }),
|
|
27
|
+
/* @__PURE__ */ jsx("div", { className: "mt-2 flex justify-center", children: renderStars(rating) }),
|
|
28
|
+
/* @__PURE__ */ jsx("div", { className: "text-muted-foreground mt-2 text-sm", children: basedOnReviewsLabel.replace("{count}", String(reviews.length)) })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1", children: [5, 4, 3, 2, 1].map((stars) => {
|
|
31
|
+
const count = reviews.filter((review) => Math.floor(review.rating) === stars).length;
|
|
32
|
+
const percentage = reviews.length > 0 ? count / reviews.length * 100 : 0;
|
|
33
|
+
return /* @__PURE__ */ jsxs("div", { className: "mb-3 flex items-center gap-3", children: [
|
|
34
|
+
/* @__PURE__ */ jsxs("span", { className: "w-8 text-sm font-medium", children: [
|
|
35
|
+
stars,
|
|
36
|
+
"\u2605"
|
|
37
|
+
] }),
|
|
38
|
+
/* @__PURE__ */ jsx(Progress, { value: percentage, className: "h-2 flex-1 rounded-full" }),
|
|
39
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-8 text-sm", children: count })
|
|
40
|
+
] }, stars);
|
|
41
|
+
}) })
|
|
42
|
+
] }) }) }),
|
|
43
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: reviews.map((review) => /* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6 py-0", children: [
|
|
44
|
+
/* @__PURE__ */ jsx("div", { className: "mb-4 flex items-start justify-between", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
45
|
+
/* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: review.author }),
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
|
|
47
|
+
/* @__PURE__ */ jsx("div", { className: "flex", children: renderStars(review.rating) }),
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: formatDate(review.date) })
|
|
49
|
+
] })
|
|
50
|
+
] }) }),
|
|
51
|
+
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-3 text-sm leading-relaxed", children: review.comment }),
|
|
52
|
+
typeof review.helpful === "number" ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground text-xs", children: foundHelpfulLabel.replace("{count}", String(review.helpful)) }) : null
|
|
53
|
+
] }) }, review.id)) })
|
|
54
|
+
] });
|
|
55
|
+
}
|
|
56
|
+
var product_overview_reviews_tab_default = ProductOverviewReviewsTab;
|
|
57
|
+
export {
|
|
58
|
+
ProductOverviewReviewsTab,
|
|
59
|
+
product_overview_reviews_tab_default as default
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=product-overview-reviews-tab.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"sourcesContent":["import { Star } from 'lucide-react'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Progress } from '../../../ui/progress'\n\n/**\n * Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the\n * host (optional block data), never seeded by the block.\n */\nexport interface ProductOverviewReview {\n id: number\n author: string\n rating: number\n comment: string\n date: string\n helpful?: number\n}\n\nexport interface ProductOverviewReviewsTabProps {\n /** Aggregate rating (0–5); rendered only when the host supplies reviews. */\n rating: number\n reviews: ProductOverviewReview[]\n basedOnReviewsLabel?: string\n foundHelpfulLabel?: string\n}\n\nfunction renderStars(rating: number) {\n return Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={`size-4 ${i < Math.floor(rating) ? 'fill-foreground text-foreground' : i < rating ? 'text-foreground' : ''}`}\n />\n ))\n}\n\nfunction formatDate(dateString: string) {\n return new Date(dateString).toLocaleDateString('es-ES', { year: 'numeric', month: 'short', day: 'numeric' })\n}\n\n/**\n * Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered\n * only when the host supplies reviews, so it never fabricates an empty review surface.\n */\nexport function ProductOverviewReviewsTab({\n rating,\n reviews,\n basedOnReviewsLabel = 'Basado en {count} reseñas',\n foundHelpfulLabel = '{count} personas encontraron esto útil',\n}: ProductOverviewReviewsTabProps) {\n return (\n <div className='flex flex-col gap-6'>\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <div className='flex flex-col items-start gap-8 md:flex-row md:items-center'>\n <div className='text-center'>\n <div className='text-4xl font-bold'>{rating}</div>\n <div className='mt-2 flex justify-center'>{renderStars(rating)}</div>\n <div className='text-muted-foreground mt-2 text-sm'>\n {basedOnReviewsLabel.replace('{count}', String(reviews.length))}\n </div>\n </div>\n <div className='flex-1'>\n {[5, 4, 3, 2, 1].map(stars => {\n const count = reviews.filter(review => Math.floor(review.rating) === stars).length\n const percentage = reviews.length > 0 ? (count / reviews.length) * 100 : 0\n return (\n <div key={stars} className='mb-3 flex items-center gap-3'>\n <span className='w-8 text-sm font-medium'>{stars}★</span>\n <Progress value={percentage} className='h-2 flex-1 rounded-full' />\n <span className='text-muted-foreground w-8 text-sm'>{count}</span>\n </div>\n )\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className='flex flex-col gap-4'>\n {reviews.map(review => (\n <Card key={review.id} className='border shadow-none'>\n <CardContent className='p-6 py-0'>\n <div className='mb-4 flex items-start justify-between'>\n <div>\n <div className='text-sm font-medium'>{review.author}</div>\n <div className='mt-2 flex items-center gap-2'>\n <div className='flex'>{renderStars(review.rating)}</div>\n <span className='text-muted-foreground text-sm'>{formatDate(review.date)}</span>\n </div>\n </div>\n </div>\n <p className='text-muted-foreground mb-3 text-sm leading-relaxed'>{review.comment}</p>\n {typeof review.helpful === 'number' ? (\n <div className='text-muted-foreground text-xs'>\n {foundHelpfulLabel.replace('{count}', String(review.helpful))}\n </div>\n ) : null}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ProductOverviewReviewsTab\n"],"mappings":"AA2BI,cA0BQ,YA1BR;AA3BJ,SAAS,YAAY;AACrB,SAAS,MAAM,mBAAmB;AAClC,SAAS,gBAAgB;AAuBzB,SAAS,YAAY,QAAgB;AACnC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MACnC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,UAAU,IAAI,KAAK,MAAM,MAAM,IAAI,oCAAoC,IAAI,SAAS,oBAAoB,EAAE;AAAA;AAAA,IADhH;AAAA,EAEP,CACD;AACH;AAEA,SAAS,WAAW,YAAoB;AACtC,SAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS,EAAE,MAAM,WAAW,OAAO,SAAS,KAAK,UAAU,CAAC;AAC7G;AAMO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,GAAmC;AACjC,SACE,qBAAC,SAAI,WAAU,uBACb;AAAA,wBAAC,QAAK,WAAU,sBACd,8BAAC,eAAY,WAAU,YACrB,+BAAC,SAAI,WAAU,+DACb;AAAA,2BAAC,SAAI,WAAU,eACb;AAAA,4BAAC,SAAI,WAAU,sBAAsB,kBAAO;AAAA,QAC5C,oBAAC,SAAI,WAAU,4BAA4B,sBAAY,MAAM,GAAE;AAAA,QAC/D,oBAAC,SAAI,WAAU,sCACZ,8BAAoB,QAAQ,WAAW,OAAO,QAAQ,MAAM,CAAC,GAChE;AAAA,SACF;AAAA,MACA,oBAAC,SAAI,WAAU,UACZ,WAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,WAAS;AAC5B,cAAM,QAAQ,QAAQ,OAAO,YAAU,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK,EAAE;AAC5E,cAAM,aAAa,QAAQ,SAAS,IAAK,QAAQ,QAAQ,SAAU,MAAM;AACzE,eACE,qBAAC,SAAgB,WAAU,gCACzB;AAAA,+BAAC,UAAK,WAAU,2BAA2B;AAAA;AAAA,YAAM;AAAA,aAAC;AAAA,UAClD,oBAAC,YAAS,OAAO,YAAY,WAAU,2BAA0B;AAAA,UACjE,oBAAC,UAAK,WAAU,qCAAqC,iBAAM;AAAA,aAHnD,KAIV;AAAA,MAEJ,CAAC,GACH;AAAA,OACF,GACF,GACF;AAAA,IAEA,oBAAC,SAAI,WAAU,uBACZ,kBAAQ,IAAI,YACX,oBAAC,QAAqB,WAAU,sBAC9B,+BAAC,eAAY,WAAU,YACrB;AAAA,0BAAC,SAAI,WAAU,yCACb,+BAAC,SACC;AAAA,4BAAC,SAAI,WAAU,uBAAuB,iBAAO,QAAO;AAAA,QACpD,qBAAC,SAAI,WAAU,gCACb;AAAA,8BAAC,SAAI,WAAU,QAAQ,sBAAY,OAAO,MAAM,GAAE;AAAA,UAClD,oBAAC,UAAK,WAAU,iCAAiC,qBAAW,OAAO,IAAI,GAAE;AAAA,WAC3E;AAAA,SACF,GACF;AAAA,MACA,oBAAC,OAAE,WAAU,sDAAsD,iBAAO,SAAQ;AAAA,MACjF,OAAO,OAAO,YAAY,WACzB,oBAAC,SAAI,WAAU,iCACZ,4BAAkB,QAAQ,WAAW,OAAO,OAAO,OAAO,CAAC,GAC9D,IACE;AAAA,OACN,KAjBS,OAAO,EAkBlB,CACD,GACH;AAAA,KACF;AAEJ;AAEA,IAAO,uCAAQ;","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
|
|
2
|
+
/**
|
|
3
|
+
* The full tab set the canonical ProductOverview renders on for its `rich`
|
|
4
|
+
* presentation.
|
|
5
|
+
*
|
|
6
|
+
* The block's classes target Base UI state attributes (`data-active:bg-transparent` on the
|
|
7
|
+
* triggers), the indicator reads Base UI positioning CSS variables (`--active-tab-*`), and the
|
|
8
|
+
* content fade relies on Base UI unmounting the inactive panel - so the whole tabs area runs on
|
|
9
|
+
* Base UI rather than the Radix-backed shadcn `tabs`. It lives here rather than in the shared ui
|
|
10
|
+
* `tabs` so the block installs standalone: the shadcn `tabs` component you get from the registry
|
|
11
|
+
* has no indicator or fading panel.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ProductOverviewTabs(props: TabsPrimitive.Root.Props): import("react").JSX.Element;
|
|
14
|
+
export declare function ProductOverviewTabsList({ className, ...props }: TabsPrimitive.List.Props): import("react").JSX.Element;
|
|
15
|
+
/**
|
|
16
|
+
* Base UI's tab button carries no layout of its own, so the inline-flex centring that the
|
|
17
|
+
* Radix-backed shadcn trigger used to supply is re-stated here.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ProductOverviewTabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): import("react").JSX.Element;
|
|
20
|
+
/**
|
|
21
|
+
* Panel with a fade-in on every switch. Base UI unmounts the inactive panel by default, so each
|
|
22
|
+
* activation is a fresh mount - `animate-in` plays automatically without needing a transition-state
|
|
23
|
+
* data attribute to gate it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function ProductOverviewTabsContentFade({ className, ...props }: TabsPrimitive.Panel.Props): import("react").JSX.Element;
|
|
26
|
+
/**
|
|
27
|
+
* Sliding pill that tracks the active trigger. Render as the first child of TabsList, and pair
|
|
28
|
+
* with `data-active:bg-transparent` on the triggers so their own active background doesn't double
|
|
29
|
+
* up with the pill.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ProductOverviewTabsIndicator({ className, ...props }: TabsPrimitive.Indicator.Props): import("react").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=product-overview-tabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"product-overview-tabs.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,+BAElE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,+BAExF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,+BAQ1F;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,+BAOhG;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,+BAalG"}
|