@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
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "@thorprovider/blocks"
|
|
3
3
|
purpose: "Reusable, framework-agnostic storefront blocks built from ShadcnStore UI, decoupled from data and backend"
|
|
4
|
-
lastReviewed: "2026-10-
|
|
4
|
+
lastReviewed: "2026-10-22"
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# @thorprovider/blocks
|
|
@@ -39,58 +39,163 @@ Blocks follow `src/blocks/<category>/<section>/<block>.tsx`. Each block co-locat
|
|
|
39
39
|
|
|
40
40
|
| Export | Category | Description |
|
|
41
41
|
| --- | --- | --- |
|
|
42
|
-
| `
|
|
43
|
-
| `
|
|
44
|
-
| `Navbar3` | Marketing | Floating navbar that condenses into a rounded pill on scroll |
|
|
45
|
-
| `Navbar4` | Marketing | Storefront navbar: utility bar, category links, search, account menu, cart sheet |
|
|
42
|
+
| `Navbar` | Marketing | Page-level navigation header: `bar`, `mega` (grouped flyouts plus optional featured promo) or `floating` (self-reserving pinned pill) |
|
|
43
|
+
| `StorefrontNavbar` | E-commerce | Commerce navigation shell: utility strip, category mega menu, optional search, account menu, cart sheet |
|
|
46
44
|
| `Banner1` | Marketing | Announcement banner (bar or pill) with dismiss |
|
|
47
45
|
| `HeroSection1` | Marketing | Hero with badge, headline, CTA, reviewer avatars, rating and image |
|
|
48
46
|
| `CtaSection1` | Marketing | Full-width call-to-action with badge, headline and two CTAs |
|
|
49
47
|
| `Feature` | Marketing | Canonical benefits section: `cards` (icon feature grid) or `split` (editorial split with a required image) presentation |
|
|
50
|
-
| `
|
|
51
|
-
| `Testimonial2` | Marketing | Bento testimonials grid |
|
|
48
|
+
| `TestimonialSection` | Marketing | Canonical testimonial collection section with `carousel` and `bento` presentations |
|
|
52
49
|
| `FaqBlock1` | Marketing | FAQ accordion (single or multiple open) |
|
|
53
50
|
| `PricingSection1` | Marketing | Pricing tiers with popular badge |
|
|
54
51
|
| `Statistic1` | Marketing | Metrics grid with progress bars |
|
|
55
52
|
| `LogoCloud1` | Marketing | Logo cloud with skeleton fallback |
|
|
56
|
-
| `
|
|
57
|
-
| `FooterSection3` | Marketing | Newsletter + six-column footer with social links |
|
|
53
|
+
| `FooterSection` | Marketing | Canonical page-level footer with `brand-columns`, `newsletter-grid` or `contact` presentation |
|
|
58
54
|
| `ProductCard` | E-commerce | Canonical product card (item cell of a listing); `presentation` `classic`/`minimal`/`rich`, canonical `ProductPresentation` items with `Money` prices, evidence-only merchandising |
|
|
59
55
|
| `ProductShowcase1` | E-commerce | Combined grid-and-carousel of product cards with manual paging |
|
|
60
56
|
| `ProductOverview` | E-commerce | Canonical product detail; bounded `presentation` `standard`/`gallery`/`rich` (rich adds optional specs/features/reviews tabs) |
|
|
61
57
|
| `ProductQuickView` | E-commerce | Quick-view dialog with gallery, variants and quantity |
|
|
62
|
-
| `
|
|
63
|
-
| `
|
|
58
|
+
| `ReviewSummary` | E-commerce | Canonical review aggregate unit; required `averageRating`, `totalReviews` and 1–5 `distribution`, bars ordered 5→1 with counts |
|
|
59
|
+
| `ReviewList` | E-commerce | Canonical review collection section; bounded `presentation` `list`/`carousel`, host-authoritative engagement, host-owned pagination, empty state |
|
|
60
|
+
| `ReviewCard` | E-commerce | Canonical review item cell (author, date, rating, content, optional helpful count and actions) used inside `ReviewList` |
|
|
61
|
+
| `ReviewComposer` | E-commerce | Canonical controlled review form; `useId` field ids, native radio rating group, host `isSubmitting`/`error`, input preserved on failure |
|
|
64
62
|
| `ProductCategory` | E-commerce | Canonical category block; bounded `presentation` `grid` (image cards) / `icons` (compact icon grid) / `list` (rows with subcategory chips and optional controlled search) |
|
|
65
|
-
| `
|
|
66
|
-
| `CategoryFilter2` | E-commerce | Filter sidebar with mobile sheet |
|
|
63
|
+
| `CategoryListing` | E-commerce | Canonical category listing (results + pagination) with a controlled query and bounded `presentation` `sidebar` (persistent desktop panel + mobile sheet) / `toolbar` (sticky mobile toolbar + drawers); generic facet groups render only from real metadata |
|
|
67
64
|
| `ShoppingCart` | E-commerce | Canonical cart; backend-authoritative `Money` totals and item lines, optional promo entry and recently-viewed suggestions; `presentation` `compact` (collapsible card) or `page` (full-width review) |
|
|
68
|
-
| `
|
|
69
|
-
| `CheckoutForm2` | E-commerce | Single-page checkout with order summary beside |
|
|
65
|
+
| `Checkout` | E-commerce | Canonical page-level checkout; controlled values, backend-authoritative `Money` totals, `PaymentMethod[]` data with no raw card input; `presentation` `single-page` or `stepper`, optional `showReviewStep` |
|
|
70
66
|
| `CheckoutConfirmation` | E-commerce | Order confirmation with fulfilment timeline |
|
|
71
|
-
| `
|
|
72
|
-
| `
|
|
67
|
+
| `OrderHistory` | E-commerce | Canonical order-history collection; `presentation` `cards` or `rows`, order-level `Money` totals rendered verbatim, status as data, host-owned pagination and actions |
|
|
68
|
+
| `OrderLine` | E-commerce | Canonical order-line item cell (`name`, optional image/details, quantity, `Money` line total) used inside `OrderHistory` |
|
|
73
69
|
| `StorefrontHero` | E-commerce | Canonical storefront hero; `presentation` `compact` (gradient headline, CTAs, product grid), `showcase` (search + rotating product carousel), `editorial` (departments, featured deals, store locator) or `promotional` (rotating deals bar, category cards) |
|
|
74
70
|
| `AppShell1` | Application | Application shell with navigation slots |
|
|
75
|
-
| `
|
|
76
|
-
| `
|
|
77
|
-
| `SignUpPage1` | Application | Registration card with social options |
|
|
71
|
+
| `LoginPage` | Application | Canonical sign-in form with explicit `card` or `social` presentation |
|
|
72
|
+
| `SignUpPage1` | Application | Registration form with social options (same profile as `LoginPage`) |
|
|
78
73
|
| `ForgotPasswordPage1` | Application | Four-step password recovery wizard |
|
|
79
74
|
| `Verify1` | Application | Two-factor verification (OTP or backup code) |
|
|
80
75
|
|
|
81
|
-
Interactions are exposed as callbacks (e.g. `onAddToCart`, `onBuyNow`, `onSelectColor`). `StorefrontHero`
|
|
76
|
+
Interactions are exposed as callbacks (e.g. `onAddToCart`, `onBuyNow`, `onSelectColor`). `StorefrontHero` and `LoginPage` render optional affordances only when their handlers are supplied; other blocks may keep elements in the DOM with no-op behavior when a callback is absent.
|
|
77
|
+
|
|
78
|
+
### Category listing
|
|
79
|
+
|
|
80
|
+
`CategoryListing` is the single controlled listing controller. Products, pagination, the selected query values, active-filter chips and the status are props; the block emits `on*Change`/`onClearFilters`/`onRepair`/`onRetry` and never fetches, parses the URL, or keeps a private query. `presentation` changes only the chrome: `sidebar` keeps a persistent desktop panel plus a mobile sheet, `toolbar` adds a sticky mobile toolbar with filter/sort drawers. Results render through the canonical `ProductCard`, so the listing never owns card markup. Facets are option-only groups (`{ id, label, options: [{ value, label, count? }] }`) supplied by the host; a group renders only when real metadata provides it, a real `0` count is displayed, and an absent/invalid count is omitted rather than invented.
|
|
81
|
+
|
|
82
|
+
### Footer sections
|
|
83
|
+
|
|
84
|
+
`FooterSection` is the canonical page-level footer. Its required `presentation`
|
|
85
|
+
is `brand-columns`, `newsletter-grid`, or `contact`; provide serializable text,
|
|
86
|
+
links, and social records as props. Social records use `{ label, href?, icon }`
|
|
87
|
+
with an optional `ariaLabel`; callbacks and visible fallback text keep using the
|
|
88
|
+
raw `label`. Bind icon IDs to `LucideIcon` components through `socialIcons`, and
|
|
89
|
+
keep that map, `logo` nodes, and callbacks outside JSON fixtures.
|
|
90
|
+
|
|
91
|
+
Column/legal and social links have separate `linkBehavior` and
|
|
92
|
+
`socialLinkBehavior` props, both defaulting to `host`. Host mode requires the
|
|
93
|
+
matching callback and renders callback-less destinations as text; `native`
|
|
94
|
+
preserves browser navigation. Contact address, phone, and email hrefs are native.
|
|
95
|
+
Newsletter controls stay visible but disabled without `onNewsletterSubmit`;
|
|
96
|
+
the callback receives the entered email and the block performs no network request.
|
|
97
|
+
|
|
98
|
+
The numbered `FooterSection1`, `FooterSection3`, and `FooterSection4` exports,
|
|
99
|
+
deep module paths, and legacy prop contracts have been removed. Migrate to
|
|
100
|
+
`FooterSection` by supplying an explicit presentation and canonical serializable
|
|
101
|
+
content props. Select `linkBehavior="native"` or
|
|
102
|
+
`socialLinkBehavior="native"` when browser navigation is intended; both default
|
|
103
|
+
to host-controlled behavior. Canonical link types are exported as
|
|
104
|
+
`CanonicalFooterLink` and `CanonicalFooterLinkColumn` to avoid collisions with
|
|
105
|
+
other package contracts.
|
|
106
|
+
|
|
107
|
+
### Login page
|
|
108
|
+
|
|
109
|
+
`LoginPage` is a sign-in composition with one shared credential form and a
|
|
110
|
+
required `presentation` of `card` or `social`. Both presentations submit the
|
|
111
|
+
same `{ email, password, remember }` payload. `remember` starts as `false` and
|
|
112
|
+
is reported to the host; the block does not decide session persistence.
|
|
113
|
+
|
|
114
|
+
The block renders into the host page and does not own it: no viewport height, no
|
|
115
|
+
page landmark, no page backdrop, no vertical centring. `card` caps its width at
|
|
116
|
+
`max-w-md` and `social` at the same cap, and the mounting page supplies the
|
|
117
|
+
canvas — a route shell, a modal, a split screen, or a template the host owns.
|
|
118
|
+
Before the shell was removed, each of these blocks painted a full-viewport
|
|
119
|
+
surface; a host that relied on that canvas must now provide it.
|
|
120
|
+
|
|
121
|
+
Provider data stays serializable. Pass provider IDs and labels separately from
|
|
122
|
+
the icon components, and provide a selection callback so provider buttons are
|
|
123
|
+
only rendered when they can act. IDs must be unique within the list; an
|
|
124
|
+
unmapped icon falls back to the visible provider label:
|
|
125
|
+
|
|
126
|
+
```tsx
|
|
127
|
+
import { AtSign } from 'lucide-react'
|
|
128
|
+
import { LoginPage } from '@thorprovider/blocks'
|
|
129
|
+
|
|
130
|
+
<LoginPage
|
|
131
|
+
presentation='social'
|
|
132
|
+
providers={[{ id: 'email', label: 'Email' }]}
|
|
133
|
+
providerIcons={{ email: AtSign }}
|
|
134
|
+
onProviderSelect={providerId => startProviderLogin(providerId)}
|
|
135
|
+
onSubmit={({ email, password, remember }) => signIn({ email, password, remember })}
|
|
136
|
+
/>
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The numbered `LoginPage1` and `LoginPage2` exports, deep module paths, and legacy
|
|
140
|
+
prop contracts have been removed. Migrate to `LoginPage` and select `card` or
|
|
141
|
+
`social` explicitly; both presentations use the canonical
|
|
142
|
+
`{ email, password, remember }` host callback contract.
|
|
143
|
+
|
|
144
|
+
## Testimonials
|
|
145
|
+
|
|
146
|
+
`TestimonialSection` renders a collection of testimonials in one of two explicit
|
|
147
|
+
presentations: `carousel` or `bento`. Each item requires a stable, collection-unique
|
|
148
|
+
`id`, `name`, and `content`. `role`, `avatar`, and `rating` are optional and are
|
|
149
|
+
rendered only when supplied; the block never invents attribution or ratings and
|
|
150
|
+
does not emit an empty image source.
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { TestimonialSection } from '@thorprovider/blocks'
|
|
154
|
+
|
|
155
|
+
const testimonials = [
|
|
156
|
+
{ id: 't-1', name: 'Rosa Díaz', role: 'Propietaria', content: 'Excelente servicio.' },
|
|
157
|
+
]
|
|
158
|
+
|
|
159
|
+
<TestimonialSection
|
|
160
|
+
presentation="carousel"
|
|
161
|
+
items={testimonials}
|
|
162
|
+
title="Lo que dicen nuestros clientes"
|
|
163
|
+
carouselLabels={{
|
|
164
|
+
previous: 'Testimonio anterior',
|
|
165
|
+
next: 'Testimonio siguiente',
|
|
166
|
+
slide: 'Ir al testimonio {n}',
|
|
167
|
+
}}
|
|
168
|
+
/>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
For `carousel`, `carouselLabels` is required and supplies localized previous,
|
|
172
|
+
next, and slide-button labels; `{n}` is replaced with the one-based page number.
|
|
173
|
+
Arrows and dots appear only when the collection spans more than one page, so a
|
|
174
|
+
collection that fits the viewport renders no navigation at all. The page count is
|
|
175
|
+
re-measured on resize and on re-render, so the same collection can show controls
|
|
176
|
+
on a narrow screen and hide them on a wide one. The native buttons support
|
|
177
|
+
keyboard activation, and the selected page is exposed with `aria-current`. For
|
|
178
|
+
`bento`, omit `carouselLabels`; one-to-three items render
|
|
179
|
+
without empty cards, and collections larger than four repeat the four-tile visual
|
|
180
|
+
rhythm without dropping entries. An empty `items` array renders no section or
|
|
181
|
+
controls. `title`, `description`, and `className` are optional for either
|
|
182
|
+
presentation.
|
|
183
|
+
|
|
184
|
+
The numbered `Testimonial1` and `Testimonial2` exports, deep module paths, and
|
|
185
|
+
legacy prop contracts have been removed. Migrate to `TestimonialSection` with
|
|
186
|
+
shared testimonial items and select `carousel` or `bento` explicitly.
|
|
82
187
|
|
|
83
188
|
## Optional brand props
|
|
84
189
|
|
|
85
190
|
Three existing blocks expose an optional brand seam. Omitting the prop renders
|
|
86
191
|
the block's current output unchanged; no demo content is added.
|
|
87
192
|
|
|
88
|
-
- `
|
|
193
|
+
- `StorefrontNavbar` — `logoAccent?: { text: string; className?: string }` accents a
|
|
89
194
|
trailing segment of `logoText`. With `logoText="ElectroCuba"` and
|
|
90
195
|
`logoAccent={{ text: 'Cuba', className: 'text-brand-promo' }}`, the block
|
|
91
196
|
renders `Electro` plus an accented `Cuba` span. If `text` is not a trailing
|
|
92
197
|
segment of `logoText`, the wordmark renders unchanged.
|
|
93
|
-
- `
|
|
198
|
+
- `FooterSection` — `brandAccent?: { text: string; className?: string }` applies
|
|
94
199
|
the same trailing-segment accent to `brandName`.
|
|
95
200
|
- `StorefrontHero` — `heroImage?: { src: string; alt: string }` renders a native
|
|
96
201
|
`<img>` when `src` is a non-empty string, and nothing when the prop is absent
|
|
@@ -101,13 +206,13 @@ the library hardcodes no brand color.
|
|
|
101
206
|
|
|
102
207
|
## Custom surface `className`
|
|
103
208
|
|
|
104
|
-
`Navbar4` (outer `<header>`) and `
|
|
209
|
+
`Navbar4` (outer `<header>`) and `FooterSection` (outer `<footer>`) accept an
|
|
105
210
|
optional `className`, merged with the existing `cn` helper. It is purely
|
|
106
211
|
presentational: no layout, structure, or behavior prop, and no hardcoded color.
|
|
107
212
|
|
|
108
213
|
- **Omitted `className`** — the block renders its default surface unchanged.
|
|
109
214
|
`Navbar4` keeps `bg-background/95` **and** its
|
|
110
|
-
`supports-backdrop-filter:bg-background/80` variant; `
|
|
215
|
+
`supports-backdrop-filter:bg-background/80` variant; `FooterSection` keeps
|
|
111
216
|
`bg-secondary`.
|
|
112
217
|
- **Supplied `className`** — the consumer owns the surface. The default
|
|
113
218
|
background **and its backdrop-filter variant** are not applied, so a semantic
|
|
@@ -116,13 +221,13 @@ presentational: no layout, structure, or behavior prop, and no hardcoded color.
|
|
|
116
221
|
it). Layout, border, sticky, and `backdrop-blur-md` classes stay internal.
|
|
117
222
|
|
|
118
223
|
The consumer is responsible for the text, transparency, and context tokens of a
|
|
119
|
-
supplied surface. `
|
|
224
|
+
supplied surface. `StorefrontNavbar` adapts its primary nav links: they inherit the
|
|
120
225
|
surface text color and add `hover:text-foreground` so `hover:bg-muted` never
|
|
121
226
|
paints white-on-light. No magic colors are introduced by the block.
|
|
122
227
|
|
|
123
|
-
##
|
|
228
|
+
## StorefrontNavbar account affordance
|
|
124
229
|
|
|
125
|
-
`
|
|
230
|
+
`StorefrontNavbar` renders a **session-driven** account affordance exclusively from
|
|
126
231
|
consumer-supplied props — it never resolves a session or authenticates itself.
|
|
127
232
|
Given a `user` (`StoreUser`; `avatar` is optional) and `accountMenuItems`, it
|
|
128
233
|
renders an authenticated account menu with the identity, the configured items,
|
|
@@ -140,10 +245,10 @@ authentication.
|
|
|
140
245
|
|
|
141
246
|
## Footer newsletter
|
|
142
247
|
|
|
143
|
-
`
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
248
|
+
`FooterSection` renders the newsletter form disabled when
|
|
249
|
+
`onNewsletterSubmit` is absent. When supplied, the callback receives the entered
|
|
250
|
+
email; the block performs no network request. Omit `newsletter` to hide the
|
|
251
|
+
newsletter block.
|
|
147
252
|
|
|
148
253
|
## Cart presentation (controlled)
|
|
149
254
|
|
|
@@ -175,10 +280,10 @@ either is visible in the other.
|
|
|
175
280
|
suggestion list (name, optional image, optional `Money` price) rendered only
|
|
176
281
|
when supplied.
|
|
177
282
|
|
|
178
|
-
`
|
|
283
|
+
`StorefrontNavbar` owns the lateral. Pass `cartOpen` + `onCartOpenChange` to control the
|
|
179
284
|
sheet's visibility from host state (omit both to keep the legacy uncontrolled
|
|
180
285
|
sheet); the block keeps `aria-expanded`/`data-state` in sync. Its cart sheet
|
|
181
|
-
(`
|
|
286
|
+
(`StorefrontNavbarCartSheet`) takes an optional `canonical` mode where each line shows the
|
|
182
287
|
canonical `lineTotal` (never the placeholder numeric price), plus
|
|
183
288
|
`checkoutUnavailable`/`viewCartUnavailable` to hide actions the store cannot
|
|
184
289
|
serve, and a `state` (`'idle' | 'pending' | 'error'`) with retry for read/mutation
|
|
@@ -210,18 +315,141 @@ affordance only when supplied. Prices render through the canonical
|
|
|
210
315
|
`formatMoney` path (no hardcoded currency), and every label is overridable
|
|
211
316
|
with Spanish defaults (`Agregar al carrito`, `Precio no disponible`, …).
|
|
212
317
|
|
|
213
|
-
## Checkout
|
|
214
|
-
|
|
215
|
-
`
|
|
216
|
-
|
|
217
|
-
- `
|
|
218
|
-
- `
|
|
219
|
-
- `
|
|
220
|
-
- `
|
|
221
|
-
- `
|
|
222
|
-
- `
|
|
318
|
+
## Checkout block (page-level, controlled)
|
|
319
|
+
|
|
320
|
+
`Checkout` is the single public checkout surface; it replaces the numbered `CheckoutForm1`, `CheckoutForm2`, and `CheckoutForm3` blocks. It is a **controlled component**: field values arrive through `values` and every edit is reported through `onChange`, so the host owns all commercial state. The block owns only the ephemeral step index of the `stepper` presentation.
|
|
321
|
+
|
|
322
|
+
- `presentation: 'single-page' | 'stepper'` (required) — `single-page` renders every section visible at once (summary first in DOM order on mobile); `stepper` shows one step at a time with an accessible progress indicator. Both accept the same props and emit the same callbacks.
|
|
323
|
+
- `showReviewStep?: boolean` — appends a confirmation step (`stepper`) or section (`single-page`) before submission.
|
|
324
|
+
- `values: CheckoutValues` — `email`, `firstName`, `lastName`, `phone`, `address`, `city`, `state`, `zipCode`, `country`, `paymentMethod`, `saveInfo`, `newsletter`, `promoCode`. There are no card fields.
|
|
325
|
+
- `onChange: (field, value) => void` — reported per edit. The block holds no private copy of the form data and applies no masking.
|
|
326
|
+
- `orderSummary?: { items, totals? }` — line identity, name, quantity, optional variant/image, optional canonical `Money` `lineTotal` and `unitPrice`, plus backend `totals` (`subtotal`, optional `discount`/`tax`/`shipping`, `total`). Amounts render verbatim; required totals that are absent or malformed render as unavailable with the retry action, never as zero. No local arithmetic, tax rate, shipping cost, threshold, or hardcoded currency.
|
|
327
|
+
- `totalsState?: 'idle' | 'pending' | 'error'` and `onRetryTotals?` — controlled reads; pending and failed states render status/alert copy without inventing amounts.
|
|
328
|
+
- `countries?: { value, label }[]`, `shippingOptions?`, `selectedShippingOptionId?`, `onSelectShippingOption?` — host-owned options and selection. With no country list the block renders a text input; with no shipping options it renders no method section; nothing is pre-selected.
|
|
329
|
+
- `paymentMethods?: PaymentMethod[]` — payment methods as data (canonical `@thorprovider/types`). One option per method, the selected method's description, an empty state for an empty list, and a non-selectable rendering for `isEnabled === false`. The block renders **no raw card fields**: card collection belongs to the host payment-provider surface.
|
|
330
|
+
- `labels?: Partial<CheckoutLabels>` and `formatMoney?: (money: Money) => string` — every user-facing string is overridable (neutral English defaults) and amounts format through canonical `Money` with no hardcoded symbol.
|
|
331
|
+
- `fieldErrors?` / `fieldDescriptions?` — per-field messages and helper text, rendered with `role="alert"` and `aria-invalid`/`aria-describedby` wiring.
|
|
332
|
+
- `validateStep?: (step: CheckoutStepId) => boolean` and `onStepChange?` — the block consults `validateStep` before advancing and for every applicable step before submitting; `onStepChange` is a notification only, never a controlled value. Without the callback the block advances and leaves submit protection to the host.
|
|
333
|
+
- `onSubmit?`, `submitting?`, `submitError?`, `onRetrySubmit?` — submission is reported, with a pending guard and a recoverable error state; the block never creates an order, clears a cart, or claims success.
|
|
334
|
+
|
|
335
|
+
Validation itself is **not** implemented in the block. Declare checks in your store spec's validation configuration (built-in `required`/`email`/`pattern`/`minLength`/`maxLength`/cross-field `requiredIf`/`equalTo`/`lessThan`/`greaterThan`, plus catalog-registered custom functions) and evaluate them with the renderer; the messages live in the spec so they are per-store and per-language.
|
|
336
|
+
|
|
337
|
+
The order summary is an internal projection of `Checkout`, not a separate block. Order receipt and fulfilment progress remain `CheckoutConfirmation`.
|
|
338
|
+
|
|
339
|
+
### Migrating from the numbered checkout blocks
|
|
340
|
+
|
|
341
|
+
| Retired | Replacement |
|
|
342
|
+
| --- | --- |
|
|
343
|
+
| `CheckoutForm1` | `<Checkout presentation="stepper" />` — same controlled values minus `cardNumber`/`expiryDate`/`cvv`/`cardName`/`sameAsBilling`; `validateStep` now receives a `CheckoutStepId` (`'contact' \| 'shipping' \| 'payment' \| 'review'`) instead of a number |
|
|
344
|
+
| `CheckoutForm2` | `<Checkout presentation="single-page" />` — the host supplies `Money` totals; the block no longer computes tax, shipping, or free-shipping thresholds |
|
|
345
|
+
| `CheckoutForm3` | `<Checkout presentation="stepper" showReviewStep />` — values become controlled; `apartment`, card fields, per-step icons, and internal `isStepComplete` state are gone |
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
## Order history (canonical)
|
|
349
|
+
|
|
350
|
+
`OrderHistory` is the single public order-history surface; it replaces the
|
|
351
|
+
numbered `OrderHistory1` and `OrderHistory2` blocks. It renders a collection of
|
|
352
|
+
**orders**, and each order's lines render through `OrderLine`, the canonical
|
|
353
|
+
item cell. Pagination, ordering, detail navigation, loading/error states, and
|
|
354
|
+
the amount formatter all belong to the host.
|
|
355
|
+
|
|
356
|
+
- `orders: OrderHistoryOrder[]` — each order carries `id` (backend identity: the
|
|
357
|
+
React key and the value reported to the actions), `number` (rendered through
|
|
358
|
+
`orderLabel`), `date` (already formatted by the host), `status`
|
|
359
|
+
(`{ label, tone? }`), `total: Money`, `items: OrderLineData[]`, and an optional
|
|
360
|
+
`trackable`. Two orders may share a display number; `id` keeps them distinct.
|
|
361
|
+
- `presentation: 'cards' | 'rows'` (default `cards`) — a bounded structure
|
|
362
|
+
switch. `cards` renders one card per order (muted header strip, line grid,
|
|
363
|
+
total footer); `rows` renders one bordered row per order. Both accept the same
|
|
364
|
+
data and report the same actions. Responsiveness is grid/stack CSS only: no
|
|
365
|
+
viewport measurement, no item-visibility breakpoints, no carousel.
|
|
366
|
+
- `total: Money` is the backend order total and renders **verbatim**. The
|
|
367
|
+
collection never sums its lines, never multiplies a unit price by a quantity,
|
|
368
|
+
and never formats with a hardcoded currency: every amount goes through
|
|
369
|
+
`formatMoney`/`isAvailableMoney` from `lib/money.ts`, and an absent or
|
|
370
|
+
malformed amount renders `amountUnavailableLabel` (never `0`).
|
|
371
|
+
- `status` is data. `status.label` is rendered and `status.tone`
|
|
372
|
+
(`default | secondary | destructive | outline`) styles it, so the block never
|
|
373
|
+
compares a status string to a literal in any language.
|
|
374
|
+
- `onViewOrder(id)` and `onTrackOrder(id)` receive the backend order id. A
|
|
375
|
+
missing handler removes its control (no inert button), and the tracking action
|
|
376
|
+
additionally requires `trackable === true`. Neither action navigates, tracks,
|
|
377
|
+
or requests on its own.
|
|
378
|
+
- `labels?: Partial<OrderHistoryLabels>`, `locale?`, `formatMoney?(money)` —
|
|
379
|
+
every rendered string is overridable (Spanish defaults, like the rest of the
|
|
380
|
+
commerce family), placeholders (`Pedido {number}`, `Realizado el {date}`,
|
|
381
|
+
`Cantidad: {n}`) interpolate host data, and a host formatter wins over
|
|
382
|
+
`locale`, which wins over the canonical default. All paths still go through
|
|
383
|
+
`formatMoney`.
|
|
384
|
+
- Empty state: an empty `orders` array renders `emptyLabel` inside the labelled
|
|
385
|
+
region instead of an empty shell.
|
|
386
|
+
|
|
387
|
+
`OrderLine` is public so a host can render a single line outside the collection
|
|
388
|
+
(order detail, receipt line). It takes `{ name, image?, details?, quantity,
|
|
389
|
+
lineTotal }` plus optional copy and formatter props; an absent or empty `image`
|
|
390
|
+
renders a neutral placeholder — never `<img src="">` — and absent `details` is
|
|
391
|
+
omitted. It has no list semantics and owns no collection state.
|
|
392
|
+
|
|
393
|
+
### Migrating from the numbered order-history blocks
|
|
394
|
+
|
|
395
|
+
| Retired | Replacement |
|
|
396
|
+
| --- | --- |
|
|
397
|
+
| `OrderHistory1` | `<OrderHistory presentation="rows" />` — the numbered block's flat per-item table becomes the order-level row presentation; each former row is an `OrderLineData` under its order (`OrderHistory1Order` → `OrderHistoryOrder` + `OrderLineData`) |
|
|
398
|
+
| `OrderHistory2` | `<OrderHistory presentation="cards" />` — the carousel, the numeric item-visibility breakpoints, and the internal `useWindowSize` measurement are gone; items render as a responsive grid |
|
|
399
|
+
| numeric `price: number` (`OrderHistory1`) | `lineTotal: Money` — the backend decimal is rendered verbatim, never recomputed with `toFixed` |
|
|
400
|
+
| string `price`/`total` (`OrderHistory2`) | `lineTotal: Money` / `total: Money` — the host stops pre-formatting; the block formats from the value's own currency code |
|
|
401
|
+
| `status: string` (`OrderHistory2`) | `status: { label, tone? }` — copy and styling arrive as data instead of an English string compared inside the block |
|
|
402
|
+
| flat `*Label` props (both) | `labels?: Partial<OrderHistoryLabels>` with `{number}`/`{date}`/`{n}` placeholders |
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
## Reviews (canonical)
|
|
406
|
+
|
|
407
|
+
`ReviewSummary`, `ReviewList`, `ReviewCard`, and `ReviewComposer` replace the
|
|
408
|
+
numbered `ReviewRating1`, `ReviewRating2`, and `ReviewRating1ReviewForm`
|
|
409
|
+
surfaces. The family splits by class: an aggregate unit, a collection, its item
|
|
410
|
+
cell, and a form. A host composes only the pieces it has data for.
|
|
411
|
+
|
|
412
|
+
- `ReviewSummary` requires `averageRating`, `totalReviews`, and a complete 1–5
|
|
413
|
+
`distribution`. It never derives an average, never accepts a partial
|
|
414
|
+
distribution, and never fills five stars regardless of the value: the stars
|
|
415
|
+
come from `averageRating` clamped and rounded, the rows always render 5→1 with
|
|
416
|
+
their counts, and each percentage is `count / totalReviews` (a zero total
|
|
417
|
+
renders `0%`, never `NaN`). A host that holds reviews may derive those numbers
|
|
418
|
+
itself; the block may not, because it does not own the data.
|
|
419
|
+
- `ReviewList` renders exactly the reviews it receives — pagination, ordering,
|
|
420
|
+
loading, and error states belong to the host. `presentation: 'list' |
|
|
421
|
+
'carousel'` is the bounded structure switch; both accept the same data and
|
|
422
|
+
report the same actions, and responsiveness is CSS only (no viewport
|
|
423
|
+
measurement). An empty array renders `emptyLabel` instead of an empty shell.
|
|
424
|
+
- `ReviewCard` takes one review: `{ id, author, avatar?, date, dateTime?,
|
|
425
|
+
rating, content, helpfulCount?, likedByViewer? }`. `date` is a display string
|
|
426
|
+
rendered verbatim; `dateTime` is emitted only when it parses, so an unparsable
|
|
427
|
+
date never throws. `helpfulCount` and `likedByViewer` are host-authoritative:
|
|
428
|
+
the cell renders them and reports intent, it never increments a count or
|
|
429
|
+
toggles its own state. The like control renders only with `onToggleLike` and
|
|
430
|
+
the comment control only with `onComment` — no handler, no control. An absent
|
|
431
|
+
or empty `avatar` renders initials, never `<img src="">`.
|
|
432
|
+
- `ReviewComposer` owns the draft and reports one submission
|
|
433
|
+
(`{ name, email, content, rating }`). `isSubmitting` and `error` come from the
|
|
434
|
+
host; a pending state disables submit, an error keeps every entered value, and
|
|
435
|
+
the fields clear only when the host advances `resetSignal` (after a successful
|
|
436
|
+
submission). Field ids come from `useId`, so two composers on one page never
|
|
437
|
+
collide, and the rating is one native radio group selectable with arrow keys.
|
|
438
|
+
- Every rendered string, including star and distribution accessible names, is
|
|
439
|
+
overridable through `labels`/`cardLabels` (Spanish defaults).
|
|
440
|
+
|
|
441
|
+
### Migrating from the numbered review blocks
|
|
442
|
+
|
|
443
|
+
| Retired | Replacement |
|
|
444
|
+
| --- | --- |
|
|
445
|
+
| `ReviewRating1` (page shell, `pageTitle`, client pagination) | `<ReviewList reviews={...} />` plus `<ReviewSummary />` and `<ReviewComposer />` when the host holds those inputs; the page heading and pagination belong to the host |
|
|
446
|
+
| `ReviewRating2` (optional aggregate, carousel) | `<ReviewSummary averageRating totalReviews distribution />` + `<ReviewList presentation="carousel" />` |
|
|
447
|
+
| `ReviewRating1ReviewForm` (`form` labels, `onSubmitReview`) | `<ReviewComposer isSubmitting error resetSignal onSubmit />` |
|
|
448
|
+
| `ReviewRating1Review` (`id: number`, `userName`, `userAvatar`, `likes`) | `ReviewItemData` (`id: string`, `author`, `avatar`, `helpfulCount`, `likedByViewer`) |
|
|
449
|
+
| `reviewsPerPage` (client slicing) | host-owned pagination: the host supplies the page's reviews |
|
|
450
|
+
| local `isLiked` map and `likes + 1` | `likedByViewer` + `helpfulCount` from the host; `onToggleLike(id, liked)` reports intent |
|
|
451
|
+
| five filled stars / `count / maxCount` bars | stars from `averageRating`, bars from `count / totalReviews`, rows 5→1 |
|
|
223
452
|
|
|
224
|
-
Validation itself is **not** implemented in the blocks. Declare checks in your store spec's validation configuration (built-in `required`/`email`/`pattern`/`minLength`/`maxLength`/cross-field `requiredIf`/`equalTo`/`lessThan`/`greaterThan`, plus catalog-registered custom functions like `luhn`/`cvv`/`expiryDate`) and evaluate them with the renderer; the messages live in the spec so they are per-store and per-language. Without a validation provider the blocks render with no inline errors.
|
|
225
453
|
|
|
226
454
|
## Usage
|
|
227
455
|
|
|
@@ -295,4 +523,4 @@ callbacks (`useCallback`); a fresh object literal always notifies a reference-on
|
|
|
295
523
|
store guard; and every registered action completes its round-trip (handler → set +
|
|
296
524
|
emit → spec `on` → recompute → bind). See
|
|
297
525
|
[`docs/standards/interaction-contracts.md`](docs/standards/interaction-contracts.md)
|
|
298
|
-
for the rules and the review checklist.
|
|
526
|
+
for the rules and the review checklist.
|