@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/src/lib/contracts.ts
DELETED
|
@@ -1,795 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod'
|
|
2
|
-
import type { Money, PaymentMethod, ProductPreview } from '@thorprovider/types'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Serialization contracts for spec-driven storefronts.
|
|
6
|
-
*
|
|
7
|
-
* These Zod schemas are the *serializable subset* of what a spec may write for
|
|
8
|
-
* a block. The component keeps its rich React interface; the catalog/registry
|
|
9
|
-
* is the adapter that maps these props to real component props and binds
|
|
10
|
-
* callbacks (see storefronts-on-blocks design D3). `z.infer` is the typed
|
|
11
|
-
* boundary between spec and catalog — a prop outside the schema is a compile
|
|
12
|
-
* error, not a runtime surprise.
|
|
13
|
-
*
|
|
14
|
-
* Data shapes are projections of the @thorprovider/types canon so that
|
|
15
|
-
* @thorprovider/adapters output validates without conflict:
|
|
16
|
-
* - Prices are plain numbers here while the canon `Money` is a decimal string
|
|
17
|
-
* ({ amount: "45.00", currencyCode }). The projection happens at the
|
|
18
|
-
* loader boundary.
|
|
19
|
-
* - Blocks use `title` while the canon `ProductPreview` uses `name`. Reconcile
|
|
20
|
-
* via the canonical aliases below or the catalog/loader adapter.
|
|
21
|
-
*/
|
|
22
|
-
export type CanonMoney = Money
|
|
23
|
-
export type CanonProduct = ProductPreview
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Fallback data-URI for required image fields when the data source has no
|
|
27
|
-
* image. Image fields are non-optional `z.string()` in these contracts, so the
|
|
28
|
-
* boundary must never emit `""` (React warns about `src=""`); it must emit a
|
|
29
|
-
* real, renderable value. Hosts may override with their own branded fallback
|
|
30
|
-
* (e.g. electrostore's `CATEGORY_IMAGE_FALLBACK`), but blocks ship a neutral
|
|
31
|
-
* one so direct consumers are safe by default.
|
|
32
|
-
*/
|
|
33
|
-
export const PRODUCT_IMAGE_FALLBACK =
|
|
34
|
-
'data:image/svg+xml;charset=utf-8,' +
|
|
35
|
-
encodeURIComponent(
|
|
36
|
-
`<svg xmlns='http://www.w3.org/2000/svg' width='600' height='600'><rect width='100%' height='100%' fill='#e2e8f0'/><g fill='none' stroke='#94a3b8' stroke-width='12' stroke-linecap='round'><path d='M150 300h300M300 150v300'/><path d='M220 230h50M220 300h50M220 370h50'/><path d='M330 230h50M330 300h50M330 370h50'/></g></svg>`,
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Data contracts
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Canonical `Money` (`@thorprovider/types`): a decimal string in major units
|
|
45
|
-
* (`"69.99"`), never cents. A missing price is represented by omitting the
|
|
46
|
-
* field (or `null` on a nullable field), not by an empty string.
|
|
47
|
-
*
|
|
48
|
-
* The amount stays a permissive `z.string()` on purpose: an unresolved backend
|
|
49
|
-
* price may arrive as the canonical sentinel `""`, and tightening the schema
|
|
50
|
-
* would reject the whole view instead of letting the presentation layer render
|
|
51
|
-
* an unavailable state. Validity is enforced at render time by
|
|
52
|
-
* `isAvailableMoney`/`formatMoney` (a `""`/malformed amount never becomes `$0`).
|
|
53
|
-
*/
|
|
54
|
-
export const moneySchema: z.ZodType<Money> = z.object({
|
|
55
|
-
amount: z.string(),
|
|
56
|
-
currencyCode: z.string(),
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
const imageSchema = z.object({
|
|
60
|
-
id: z.string().optional(),
|
|
61
|
-
url: z.string(),
|
|
62
|
-
altText: z.string(),
|
|
63
|
-
width: z.number().optional(),
|
|
64
|
-
height: z.number().optional(),
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
const selectedOptionSchema = z.object({
|
|
68
|
-
name: z.string(),
|
|
69
|
-
value: z.string(),
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
export const productDetailVariantSchema = z.object({
|
|
73
|
-
id: z.string(),
|
|
74
|
-
title: z.string(),
|
|
75
|
-
sku: z.string().optional(),
|
|
76
|
-
availableForSale: z.boolean(),
|
|
77
|
-
selectedOptions: z.array(selectedOptionSchema),
|
|
78
|
-
/** Omit or null when the backend has no resolved price (purchase disabled). */
|
|
79
|
-
price: moneySchema.nullish(),
|
|
80
|
-
compareAtPrice: moneySchema.optional(),
|
|
81
|
-
image: imageSchema.optional(),
|
|
82
|
-
})
|
|
83
|
-
export type ProductDetailVariantSpec = z.infer<typeof productDetailVariantSchema>
|
|
84
|
-
|
|
85
|
-
export const productDetailProductSchema = z.object({
|
|
86
|
-
id: z.string(),
|
|
87
|
-
handle: z.string().optional(),
|
|
88
|
-
title: z.string(),
|
|
89
|
-
description: z.string().optional(),
|
|
90
|
-
vendor: z.string().optional(),
|
|
91
|
-
options: z.array(z.object({ id: z.string(), name: z.string(), values: z.array(z.string()) })),
|
|
92
|
-
variants: z.array(productDetailVariantSchema),
|
|
93
|
-
images: z.array(imageSchema),
|
|
94
|
-
featuredImage: imageSchema.optional(),
|
|
95
|
-
})
|
|
96
|
-
export type ProductDetailProductSpec = z.infer<typeof productDetailProductSchema>
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Canonical ProductOverview contract. Uses the canonical product projection and adds the
|
|
100
|
-
* bounded `presentation` option plus the `rich` presentation's optional data. Callbacks are not
|
|
101
|
-
* part of the schema (they are runtime props).
|
|
102
|
-
*/
|
|
103
|
-
export const productOverviewReviewSchema = z.object({
|
|
104
|
-
id: z.number(),
|
|
105
|
-
author: z.string(),
|
|
106
|
-
rating: z.number(),
|
|
107
|
-
comment: z.string(),
|
|
108
|
-
date: z.string(),
|
|
109
|
-
helpful: z.number().optional(),
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
export const productOverviewPropsSchema = z.object({
|
|
113
|
-
product: productDetailProductSchema,
|
|
114
|
-
presentation: z.enum(['standard', 'gallery', 'rich']).optional(),
|
|
115
|
-
selectedVariantId: z.string().nullable().optional(),
|
|
116
|
-
quantity: z.number().optional(),
|
|
117
|
-
rating: z.object({ value: z.number(), count: z.number() }).optional(),
|
|
118
|
-
deliveryEstimate: z.string().optional(),
|
|
119
|
-
shipping: moneySchema.optional(),
|
|
120
|
-
specifications: z.record(z.string(), z.string()).optional(),
|
|
121
|
-
features: z.array(z.string()).optional(),
|
|
122
|
-
reviews: z.array(productOverviewReviewSchema).optional(),
|
|
123
|
-
sizesLabel: z.string().optional(),
|
|
124
|
-
variantLabel: z.string().optional(),
|
|
125
|
-
reviewsLabel: z.string().optional(),
|
|
126
|
-
addToCartLabel: z.string().optional(),
|
|
127
|
-
outOfStockLabel: z.string().optional(),
|
|
128
|
-
unavailablePriceLabel: z.string().optional(),
|
|
129
|
-
selectVariantLabel: z.string().optional(),
|
|
130
|
-
quantityLabel: z.string().optional(),
|
|
131
|
-
deliveryEstimateLabel: z.string().optional(),
|
|
132
|
-
shippingLabel: z.string().optional(),
|
|
133
|
-
badgeLabel: z.string().optional(),
|
|
134
|
-
availabilityLabel: z.string().optional(),
|
|
135
|
-
skuLabel: z.string().optional(),
|
|
136
|
-
overviewLabel: z.string().optional(),
|
|
137
|
-
specsLabel: z.string().optional(),
|
|
138
|
-
featuresLabel: z.string().optional(),
|
|
139
|
-
specificationsLabel: z.string().optional(),
|
|
140
|
-
galleryLabel: z.string().optional(),
|
|
141
|
-
photosLabel: z.string().optional(),
|
|
142
|
-
saveLabel: z.string().optional(),
|
|
143
|
-
savedLabel: z.string().optional(),
|
|
144
|
-
shareLabel: z.string().optional(),
|
|
145
|
-
basedOnReviewsLabel: z.string().optional(),
|
|
146
|
-
foundHelpfulLabel: z.string().optional(),
|
|
147
|
-
ofCounterLabel: z.string().optional(),
|
|
148
|
-
freeDeliveryLabel: z.string().optional(),
|
|
149
|
-
})
|
|
150
|
-
export type ProductOverviewSpecProps = z.infer<typeof productOverviewPropsSchema>
|
|
151
|
-
|
|
152
|
-
export const cardProductSchema = z.object({
|
|
153
|
-
id: z.union([z.string(), z.number()]),
|
|
154
|
-
title: z.string(),
|
|
155
|
-
price: z.number(),
|
|
156
|
-
originalPrice: z.number().optional(),
|
|
157
|
-
image: z.string(),
|
|
158
|
-
badge: z.string().optional(),
|
|
159
|
-
})
|
|
160
|
-
export type CardProduct = z.infer<typeof cardProductSchema>
|
|
161
|
-
|
|
162
|
-
export const cartItemSchema = z.object({
|
|
163
|
-
id: z.string(),
|
|
164
|
-
name: z.string(),
|
|
165
|
-
price: z.number(),
|
|
166
|
-
quantity: z.number().int().min(0),
|
|
167
|
-
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
168
|
-
image: z.string().optional(),
|
|
169
|
-
variant: z.string().optional(),
|
|
170
|
-
/** Canonical backend per-unit price, preferred for display when present. */
|
|
171
|
-
unitPrice: moneySchema.optional(),
|
|
172
|
-
/** Canonical backend line total, preferred over `price * quantity`. */
|
|
173
|
-
lineTotal: moneySchema.optional(),
|
|
174
|
-
})
|
|
175
|
-
export type CartItem = z.infer<typeof cartItemSchema>
|
|
176
|
-
|
|
177
|
-
export const cartTotalsSchema = z.object({
|
|
178
|
-
subtotal: moneySchema,
|
|
179
|
-
discount: moneySchema.optional(),
|
|
180
|
-
tax: moneySchema.optional(),
|
|
181
|
-
shipping: moneySchema.optional(),
|
|
182
|
-
total: moneySchema,
|
|
183
|
-
})
|
|
184
|
-
export type CartTotals = z.infer<typeof cartTotalsSchema>
|
|
185
|
-
|
|
186
|
-
export const recentlyViewedItemSchema = z.object({
|
|
187
|
-
id: z.string(),
|
|
188
|
-
name: z.string(),
|
|
189
|
-
price: z.number(),
|
|
190
|
-
image: z.string(),
|
|
191
|
-
})
|
|
192
|
-
export type RecentlyViewedItem = z.infer<typeof recentlyViewedItemSchema>
|
|
193
|
-
|
|
194
|
-
export const promotionSchema = z.object({
|
|
195
|
-
threshold: z.number(),
|
|
196
|
-
reward: z.string(),
|
|
197
|
-
icon: z.string().default('gift'),
|
|
198
|
-
})
|
|
199
|
-
export type Promotion = z.infer<typeof promotionSchema>
|
|
200
|
-
|
|
201
|
-
const storeCategoryBase = {
|
|
202
|
-
label: z.string(),
|
|
203
|
-
href: z.string(),
|
|
204
|
-
emphasis: z.boolean().optional(),
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export const storeCategorySchema: z.ZodType<StoreCategory> = z.lazy(() =>
|
|
208
|
-
z.object({
|
|
209
|
-
...storeCategoryBase,
|
|
210
|
-
children: z.array(storeCategorySchema).optional(),
|
|
211
|
-
}),
|
|
212
|
-
)
|
|
213
|
-
export type StoreCategory = {
|
|
214
|
-
label: string
|
|
215
|
-
href: string
|
|
216
|
-
children?: StoreCategory[]
|
|
217
|
-
emphasis?: boolean
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
export const utilityLinkSchema = z.object({
|
|
221
|
-
label: z.string(),
|
|
222
|
-
href: z.string(),
|
|
223
|
-
})
|
|
224
|
-
export type UtilityLink = z.infer<typeof utilityLinkSchema>
|
|
225
|
-
|
|
226
|
-
export const navCartItemSchema = z.object({
|
|
227
|
-
id: z.string(),
|
|
228
|
-
name: z.string(),
|
|
229
|
-
variant: z.string().optional(),
|
|
230
|
-
price: z.number(),
|
|
231
|
-
qty: z.number().int().min(0),
|
|
232
|
-
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
233
|
-
image: z.string().optional(),
|
|
234
|
-
})
|
|
235
|
-
export type NavCartItem = z.infer<typeof navCartItemSchema>
|
|
236
|
-
|
|
237
|
-
export const storeUserSchema = z.object({
|
|
238
|
-
name: z.string(),
|
|
239
|
-
email: z.string(),
|
|
240
|
-
avatar: z.string().optional(),
|
|
241
|
-
initials: z.string(),
|
|
242
|
-
})
|
|
243
|
-
export type StoreUser = z.infer<typeof storeUserSchema>
|
|
244
|
-
|
|
245
|
-
export const accountMenuItemSchema = z.object({
|
|
246
|
-
label: z.string(),
|
|
247
|
-
href: z.string(),
|
|
248
|
-
description: z.string().optional(),
|
|
249
|
-
icon: z.enum(['orders', 'wishlist', 'addresses', 'settings']).optional(),
|
|
250
|
-
})
|
|
251
|
-
export type AccountMenuItem = z.infer<typeof accountMenuItemSchema>
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Serialization contract for a payment method offered at checkout.
|
|
255
|
-
*
|
|
256
|
-
* A projection of `@thorprovider/types` `PaymentMethod` — the storefront-facing
|
|
257
|
-
* shape produced by the adapters transform. Checkout blocks render the method
|
|
258
|
-
* list from this data instead of hardcoding providers.
|
|
259
|
-
*/
|
|
260
|
-
export const paymentMethodSchema: z.ZodType<PaymentMethod> = z.object({
|
|
261
|
-
id: z.string(),
|
|
262
|
-
name: z.string(),
|
|
263
|
-
type: z.enum([
|
|
264
|
-
'card',
|
|
265
|
-
'wallet',
|
|
266
|
-
'bank_transfer',
|
|
267
|
-
'buy_now_pay_later',
|
|
268
|
-
'cash_on_delivery',
|
|
269
|
-
'crypto',
|
|
270
|
-
'other',
|
|
271
|
-
]),
|
|
272
|
-
isEnabled: z.boolean(),
|
|
273
|
-
requiresSetup: z.boolean(),
|
|
274
|
-
description: z.string().optional(),
|
|
275
|
-
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
276
|
-
features: z
|
|
277
|
-
.object({
|
|
278
|
-
saveForLater: z.boolean().optional(),
|
|
279
|
-
requires3DS: z.boolean().optional(),
|
|
280
|
-
supportsRefunds: z.boolean().optional(),
|
|
281
|
-
minAmount: z.number().optional(),
|
|
282
|
-
maxAmount: z.number().optional(),
|
|
283
|
-
supportedCurrencies: z.array(z.string()).optional(),
|
|
284
|
-
requiresVerification: z.boolean().optional(),
|
|
285
|
-
})
|
|
286
|
-
.optional(),
|
|
287
|
-
logo: z.string().optional(),
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
// ---------------------------------------------------------------------------
|
|
291
|
-
// Block prop schemas
|
|
292
|
-
// ---------------------------------------------------------------------------
|
|
293
|
-
|
|
294
|
-
export const buttonPropsSchema = z.object({
|
|
295
|
-
variant: z
|
|
296
|
-
.enum(['default', 'destructive', 'outline', 'secondary', 'ghost', 'link'])
|
|
297
|
-
.optional(),
|
|
298
|
-
size: z
|
|
299
|
-
.enum(['default', 'xs', 'sm', 'lg', 'icon', 'icon-xs', 'icon-sm', 'icon-lg'])
|
|
300
|
-
.optional(),
|
|
301
|
-
disabled: z.boolean().optional(),
|
|
302
|
-
className: z.string().optional(),
|
|
303
|
-
})
|
|
304
|
-
export type ButtonSpecProps = z.infer<typeof buttonPropsSchema>
|
|
305
|
-
|
|
306
|
-
export const storeContainer1PropsSchema = z.object({
|
|
307
|
-
size: z.enum(['default', 'narrow', 'wide', 'full']).optional(),
|
|
308
|
-
className: z.string().optional(),
|
|
309
|
-
})
|
|
310
|
-
export type StoreContainer1SpecProps = z.infer<typeof storeContainer1PropsSchema>
|
|
311
|
-
|
|
312
|
-
/**
|
|
313
|
-
* Canonical product presentation — the serializable projection a storefront host
|
|
314
|
-
* produces from a canonical `Product` for the merchandising sections. Unlike
|
|
315
|
-
* `cardProductSchema` (legacy, numeric `price`), `price`/`compareAtPrice` carry
|
|
316
|
-
* canonical `Money` (decimal major-unit string + currency code), so the block
|
|
317
|
-
* formats in the shopper's currency and locale and renders a truthful
|
|
318
|
-
* unavailable state instead of `$0`. Optional fields are omitted, never `""`.
|
|
319
|
-
*
|
|
320
|
-
* This contract is additive: `cardProductSchema` and its consumers are
|
|
321
|
-
* unchanged, and a legacy numeric `price` still renders the legacy output.
|
|
322
|
-
*/
|
|
323
|
-
export const productPresentationSchema = z.object({
|
|
324
|
-
id: z.union([z.string(), z.number()]),
|
|
325
|
-
title: z.string(),
|
|
326
|
-
/** Omitted (never `""`) when the backend has no image. */
|
|
327
|
-
image: z.string().optional(),
|
|
328
|
-
imageAlt: z.string().optional(),
|
|
329
|
-
/** Product destination; omitted when unknown. */
|
|
330
|
-
href: z.string().optional(),
|
|
331
|
-
price: moneySchema,
|
|
332
|
-
/** Comparison ("was") price; rendered only when valid and higher than `price`. */
|
|
333
|
-
compareAtPrice: moneySchema.optional(),
|
|
334
|
-
/** Only from real evidence; omitted otherwise (never fabricated). */
|
|
335
|
-
rating: z.number().optional(),
|
|
336
|
-
badge: z.string().optional(),
|
|
337
|
-
})
|
|
338
|
-
export type ProductPresentation = z.infer<typeof productPresentationSchema>
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* Canonical product card contract (item cell of a product listing). The cell
|
|
342
|
-
* consumes one canonical `ProductPresentation` projection only — the legacy
|
|
343
|
-
* numeric-price card shape is not accepted. `presentation` is the bounded
|
|
344
|
-
* structure switch (`classic`/`minimal`/`rich`) and `wishlisted` is the
|
|
345
|
-
* host-resolved membership state; callbacks and label strings are runtime
|
|
346
|
-
* props and are excluded here. Collection concerns (heading, item cap, loading
|
|
347
|
-
* and empty states) belong to `ProductGrid`.
|
|
348
|
-
*/
|
|
349
|
-
export const productCardPropsSchema = z.object({
|
|
350
|
-
item: productPresentationSchema,
|
|
351
|
-
presentation: z.enum(['classic', 'minimal', 'rich']).optional(),
|
|
352
|
-
wishlisted: z.boolean().optional(),
|
|
353
|
-
})
|
|
354
|
-
export type ProductCardSpecProps = z.infer<typeof productCardPropsSchema>
|
|
355
|
-
|
|
356
|
-
/**
|
|
357
|
-
* Canonical product grid contract (listing). Consumes a collection of
|
|
358
|
-
* canonical `ProductPresentation` items and owns the listing's heading, item
|
|
359
|
-
* cap, wishlist membership, and loading/empty/ready states. `wishlistedIds` is
|
|
360
|
-
* resolved per cell before rendering, so the cell receives only its own
|
|
361
|
-
* boolean. Callbacks and label strings are runtime props and are excluded
|
|
362
|
-
* here. Error state belongs to the host.
|
|
363
|
-
*/
|
|
364
|
-
export const productGridPropsSchema = z.object({
|
|
365
|
-
items: z.array(productPresentationSchema),
|
|
366
|
-
presentation: z.enum(['classic', 'minimal', 'rich']).optional(),
|
|
367
|
-
heading: z.string().optional(),
|
|
368
|
-
maxItems: z.number().int().positive().optional(),
|
|
369
|
-
wishlistedIds: z.array(z.union([z.string(), z.number()])).readonly().optional(),
|
|
370
|
-
loading: z.boolean().optional(),
|
|
371
|
-
skeletonCount: z.number().int().positive().optional(),
|
|
372
|
-
emptyLabel: z.string().optional(),
|
|
373
|
-
})
|
|
374
|
-
export type ProductGridSpecProps = z.infer<typeof productGridPropsSchema>
|
|
375
|
-
|
|
376
|
-
/**
|
|
377
|
-
* Serializable contract for the combined grid-and-carousel product
|
|
378
|
-
* presentation (`ProductShowcase1`). The grid pages are fixed-size, navigated
|
|
379
|
-
* manually (prev/next) with a visible current-page indication; there is no
|
|
380
|
-
* autoplay and no infinite loop. React-only callbacks are excluded.
|
|
381
|
-
*/
|
|
382
|
-
export const productShowcase1PropsSchema = z.object({
|
|
383
|
-
products: z.array(productPresentationSchema),
|
|
384
|
-
heading: z.string().optional(),
|
|
385
|
-
description: z.string().optional(),
|
|
386
|
-
pageSize: z.number().int().positive().optional(),
|
|
387
|
-
prevLabel: z.string().optional(),
|
|
388
|
-
nextLabel: z.string().optional(),
|
|
389
|
-
pageLabel: z.string().optional(),
|
|
390
|
-
unavailablePriceLabel: z.string().optional(),
|
|
391
|
-
emptyLabel: z.string().optional(),
|
|
392
|
-
addToCartLabel: z.string().optional(),
|
|
393
|
-
})
|
|
394
|
-
export type ProductShowcase1SpecProps = z.infer<typeof productShowcase1PropsSchema>
|
|
395
|
-
|
|
396
|
-
/**
|
|
397
|
-
* Canonical shopping cart contract (consolidated shopping-cart family). Lines
|
|
398
|
-
* are keyed by the backend cart line-item id and carry canonical `Money`
|
|
399
|
-
* amounts only — the legacy numeric-price shape is not accepted: a line always
|
|
400
|
-
* carries the backend-authoritative `lineTotal`, and an optional `unitPrice` is
|
|
401
|
-
* carried verbatim (never used for a local `price * quantity` computation).
|
|
402
|
-
* Suggestions fold the numbered carts' recommendations: optional image (omitted
|
|
403
|
-
* when absent) and optional canonical `Money` price. `presentation` is the
|
|
404
|
-
* bounded structure switch (`compact`/`page`); callbacks and interaction state
|
|
405
|
-
* are runtime props and are excluded here.
|
|
406
|
-
*/
|
|
407
|
-
export const shoppingCartItemSchema = z.object({
|
|
408
|
-
id: z.string(),
|
|
409
|
-
name: z.string(),
|
|
410
|
-
quantity: z.number().int().min(0),
|
|
411
|
-
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
412
|
-
image: z.string().optional(),
|
|
413
|
-
variant: z.string().optional(),
|
|
414
|
-
/** Canonical backend line total; a malformed amount renders as unavailable. */
|
|
415
|
-
lineTotal: moneySchema,
|
|
416
|
-
/** Canonical backend unit price; carried verbatim, never used locally. */
|
|
417
|
-
unitPrice: moneySchema.optional(),
|
|
418
|
-
})
|
|
419
|
-
export type ShoppingCartItem = z.infer<typeof shoppingCartItemSchema>
|
|
420
|
-
|
|
421
|
-
export const shoppingCartSuggestionSchema = z.object({
|
|
422
|
-
id: z.string(),
|
|
423
|
-
name: z.string(),
|
|
424
|
-
/** Optional; absent images are omitted, never serialized as `""`. */
|
|
425
|
-
image: z.string().optional(),
|
|
426
|
-
unitPrice: moneySchema.optional(),
|
|
427
|
-
})
|
|
428
|
-
export type ShoppingCartSuggestion = z.infer<typeof shoppingCartSuggestionSchema>
|
|
429
|
-
|
|
430
|
-
export const shoppingCartPropsSchema = z.object({
|
|
431
|
-
items: z.array(shoppingCartItemSchema),
|
|
432
|
-
promotions: z.array(promotionSchema).default([]),
|
|
433
|
-
recentlyViewed: z.array(shoppingCartSuggestionSchema).optional(),
|
|
434
|
-
presentation: z.enum(['compact', 'page']).optional(),
|
|
435
|
-
/** Backend-authoritative totals; rendered verbatim, never computed locally. */
|
|
436
|
-
totals: cartTotalsSchema.optional(),
|
|
437
|
-
totalsState: z.enum(['idle', 'pending', 'error']).optional(),
|
|
438
|
-
totalsErrorLabel: z.string().optional(),
|
|
439
|
-
totalsUnavailableLabel: z.string().optional(),
|
|
440
|
-
amountUnavailableLabel: z.string().optional(),
|
|
441
|
-
retryLabel: z.string().optional(),
|
|
442
|
-
titleLabel: z.string().optional(),
|
|
443
|
-
subtotalLabel: z.string().optional(),
|
|
444
|
-
discountLabel: z.string().optional(),
|
|
445
|
-
taxLabel: z.string().optional(),
|
|
446
|
-
shippingLabel: z.string().optional(),
|
|
447
|
-
shippingFreeLabel: z.string().optional(),
|
|
448
|
-
totalLabel: z.string().optional(),
|
|
449
|
-
totalsPendingLabel: z.string().optional(),
|
|
450
|
-
awayFromLabel: z.string().optional(),
|
|
451
|
-
activatedLabel: z.string().optional(),
|
|
452
|
-
itemsLabel: z.string().optional(),
|
|
453
|
-
expressCheckoutLabel: z.string().optional(),
|
|
454
|
-
expressLabel: z.string().optional(),
|
|
455
|
-
standardLabel: z.string().optional(),
|
|
456
|
-
estimatedDeliveryLabel: z.string().optional(),
|
|
457
|
-
secureCheckoutLabel: z.string().optional(),
|
|
458
|
-
recentlyViewedLabel: z.string().optional(),
|
|
459
|
-
promoPromptLabel: z.string().optional(),
|
|
460
|
-
promoPlaceholderLabel: z.string().optional(),
|
|
461
|
-
promoApplyLabel: z.string().optional(),
|
|
462
|
-
collapseLabel: z.string().optional(),
|
|
463
|
-
expandLabel: z.string().optional(),
|
|
464
|
-
checkoutLabel: z.string().optional(),
|
|
465
|
-
quickCheckoutLabel: z.string().optional(),
|
|
466
|
-
checkoutNowLabel: z.string().optional(),
|
|
467
|
-
emptyLabel: z.string().optional(),
|
|
468
|
-
removeLabel: z.string().optional(),
|
|
469
|
-
decreaseLabel: z.string().optional(),
|
|
470
|
-
increaseLabel: z.string().optional(),
|
|
471
|
-
})
|
|
472
|
-
export type ShoppingCartSpecProps = z.infer<typeof shoppingCartPropsSchema>
|
|
473
|
-
|
|
474
|
-
/**
|
|
475
|
-
* Optional brand seams shared by the existing blocks. These mirror the
|
|
476
|
-
* components' optional props as a serializable subset (no React): an accent
|
|
477
|
-
* marks a trailing segment of the wordmark/brand name, and an editorial image
|
|
478
|
-
* is a native `<img>` source. Omitting each keeps the block's current output.
|
|
479
|
-
*/
|
|
480
|
-
export const logoAccentSchema = z.object({
|
|
481
|
-
text: z.string(),
|
|
482
|
-
className: z.string().optional(),
|
|
483
|
-
})
|
|
484
|
-
export type LogoAccent = z.infer<typeof logoAccentSchema>
|
|
485
|
-
|
|
486
|
-
export const brandAccentSchema = z.object({
|
|
487
|
-
text: z.string(),
|
|
488
|
-
className: z.string().optional(),
|
|
489
|
-
})
|
|
490
|
-
export type BrandAccent = z.infer<typeof brandAccentSchema>
|
|
491
|
-
|
|
492
|
-
export const heroImageSchema = z.object({
|
|
493
|
-
src: z.string(),
|
|
494
|
-
alt: z.string(),
|
|
495
|
-
})
|
|
496
|
-
export type HeroImage = z.infer<typeof heroImageSchema>
|
|
497
|
-
|
|
498
|
-
export const navbar4PropsSchema = z.object({
|
|
499
|
-
storeCategories: z.array(storeCategorySchema),
|
|
500
|
-
shippingNote: z.string().optional(),
|
|
501
|
-
utilityLinks: z.array(utilityLinkSchema),
|
|
502
|
-
logoText: z.string(),
|
|
503
|
-
logoHref: z.string().optional(),
|
|
504
|
-
/** Optional accent for a trailing segment of `logoText`; omitted → unchanged. */
|
|
505
|
-
logoAccent: logoAccentSchema.optional(),
|
|
506
|
-
/**
|
|
507
|
-
* Consumer-supplied classes merged onto the block's outer surface as the
|
|
508
|
-
* final argument (e.g. a semantic surface token). Omitted → unchanged.
|
|
509
|
-
*/
|
|
510
|
-
className: z.string().optional(),
|
|
511
|
-
accountHref: z.string().optional(),
|
|
512
|
-
searchQuery: z.string().optional(),
|
|
513
|
-
items: z.array(navCartItemSchema).optional(),
|
|
514
|
-
/** Authoritative backend subtotal for the mini-cart. */
|
|
515
|
-
subtotal: moneySchema.optional(),
|
|
516
|
-
subtotalUnavailableLabel: z.string().optional(),
|
|
517
|
-
user: storeUserSchema.optional(),
|
|
518
|
-
accountMenuItems: z.array(accountMenuItemSchema).optional(),
|
|
519
|
-
accountPending: z.boolean().optional(),
|
|
520
|
-
accountUnavailable: z.boolean().optional(),
|
|
521
|
-
})
|
|
522
|
-
export type Navbar4SpecProps = z.infer<typeof navbar4PropsSchema>
|
|
523
|
-
|
|
524
|
-
/**
|
|
525
|
-
* Serializable contracts for the two bounded editorial sections (`faq`, `cta`).
|
|
526
|
-
* These are the serializable subset of `FaqBlock1Props`/`CtaSection1Props`: the
|
|
527
|
-
* React-only callbacks (`onPrimaryClick`/`onSecondaryClick`) are intentionally
|
|
528
|
-
* excluded — the catalog adapter binds them (see design D3).
|
|
529
|
-
*/
|
|
530
|
-
export const ctaSchema = z.object({
|
|
531
|
-
label: z.string(),
|
|
532
|
-
href: z.string().optional(),
|
|
533
|
-
})
|
|
534
|
-
export type CtaSpec = z.infer<typeof ctaSchema>
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Serializable subset of the canonical `StorefrontHero`'s props (callbacks
|
|
538
|
-
* excluded). Every popularity, review, count, or countdown field is optional
|
|
539
|
-
* host-supplied evidence: omitted fields render nothing (honest omission)
|
|
540
|
-
* instead of fabricated defaults, and prices are formatted from the supplied
|
|
541
|
-
* ISO 4217 `currency` via `Intl.NumberFormat` (never hardcoded).
|
|
542
|
-
*/
|
|
543
|
-
export const storefrontHeroProductSchema = z.object({
|
|
544
|
-
id: z.string(),
|
|
545
|
-
name: z.string(),
|
|
546
|
-
price: z.number(),
|
|
547
|
-
originalPrice: z.number().optional(),
|
|
548
|
-
image: z.string().optional(),
|
|
549
|
-
imageAlt: z.string().optional(),
|
|
550
|
-
brand: z.string().optional(),
|
|
551
|
-
colors: z.array(z.string()).optional(),
|
|
552
|
-
rating: z.number().optional(),
|
|
553
|
-
reviewCount: z.number().optional(),
|
|
554
|
-
inStock: z.boolean().optional(),
|
|
555
|
-
isNew: z.boolean().optional(),
|
|
556
|
-
tag: z.string().optional(),
|
|
557
|
-
})
|
|
558
|
-
export type StorefrontHeroProduct = z.infer<typeof storefrontHeroProductSchema>
|
|
559
|
-
|
|
560
|
-
export const storefrontHeroPropsSchema = z.object({
|
|
561
|
-
title: z.string(),
|
|
562
|
-
description: z.string(),
|
|
563
|
-
presentation: z.enum(['compact', 'showcase', 'editorial', 'promotional']).optional(),
|
|
564
|
-
currency: z.string().optional(),
|
|
565
|
-
products: z.array(storefrontHeroProductSchema),
|
|
566
|
-
badge: z.string().optional(),
|
|
567
|
-
titleAccent: z.string().optional(),
|
|
568
|
-
primaryCta: ctaSchema.optional(),
|
|
569
|
-
secondaryCta: ctaSchema.optional(),
|
|
570
|
-
heroImage: heroImageSchema.optional(),
|
|
571
|
-
departments: z
|
|
572
|
-
.array(
|
|
573
|
-
z.object({
|
|
574
|
-
id: z.string(),
|
|
575
|
-
name: z.string(),
|
|
576
|
-
image: z.string().optional(),
|
|
577
|
-
imageAlt: z.string().optional(),
|
|
578
|
-
count: z.string().optional(),
|
|
579
|
-
href: z.string().optional(),
|
|
580
|
-
}),
|
|
581
|
-
)
|
|
582
|
-
.optional(),
|
|
583
|
-
featuredDeals: z
|
|
584
|
-
.array(
|
|
585
|
-
z.object({
|
|
586
|
-
id: z.string(),
|
|
587
|
-
name: z.string(),
|
|
588
|
-
description: z.string().optional(),
|
|
589
|
-
image: z.string().optional(),
|
|
590
|
-
imageAlt: z.string().optional(),
|
|
591
|
-
price: z.number(),
|
|
592
|
-
originalPrice: z.number().optional(),
|
|
593
|
-
cta: ctaSchema.optional(),
|
|
594
|
-
}),
|
|
595
|
-
)
|
|
596
|
-
.optional(),
|
|
597
|
-
storeLocator: z
|
|
598
|
-
.object({
|
|
599
|
-
title: z.string(),
|
|
600
|
-
description: z.string(),
|
|
601
|
-
ctaLabel: z.string(),
|
|
602
|
-
ctaHref: z.string().optional(),
|
|
603
|
-
})
|
|
604
|
-
.optional(),
|
|
605
|
-
shippingInfo: z.string().optional(),
|
|
606
|
-
deals: z
|
|
607
|
-
.array(
|
|
608
|
-
z.object({
|
|
609
|
-
id: z.string(),
|
|
610
|
-
title: z.string(),
|
|
611
|
-
discount: z.string().optional(),
|
|
612
|
-
endTime: z.string().optional(),
|
|
613
|
-
}),
|
|
614
|
-
)
|
|
615
|
-
.optional(),
|
|
616
|
-
categories: z
|
|
617
|
-
.array(
|
|
618
|
-
z.object({
|
|
619
|
-
id: z.string(),
|
|
620
|
-
name: z.string(),
|
|
621
|
-
image: z.string().optional(),
|
|
622
|
-
imageAlt: z.string().optional(),
|
|
623
|
-
count: z.string().optional(),
|
|
624
|
-
href: z.string().optional(),
|
|
625
|
-
}),
|
|
626
|
-
)
|
|
627
|
-
.optional(),
|
|
628
|
-
rotationInterval: z.number().optional(),
|
|
629
|
-
addToCartLabel: z.string().optional(),
|
|
630
|
-
buyNowLabel: z.string().optional(),
|
|
631
|
-
newLabel: z.string().optional(),
|
|
632
|
-
outOfStockLabel: z.string().optional(),
|
|
633
|
-
colorsLabel: z.string().optional(),
|
|
634
|
-
discountSuffixLabel: z.string().optional(),
|
|
635
|
-
searchPlaceholder: z.string().optional(),
|
|
636
|
-
searchLabel: z.string().optional(),
|
|
637
|
-
featuredDescription: z.string().optional(),
|
|
638
|
-
shopNowLabel: z.string().optional(),
|
|
639
|
-
endsInLabel: z.string().optional(),
|
|
640
|
-
productsLabel: z.string().optional(),
|
|
641
|
-
viewLabel: z.string().optional(),
|
|
642
|
-
})
|
|
643
|
-
export type StorefrontHeroSpecProps = z.infer<typeof storefrontHeroPropsSchema>
|
|
644
|
-
|
|
645
|
-
export const faqItemSchema = z.object({
|
|
646
|
-
value: z.string(),
|
|
647
|
-
question: z.string(),
|
|
648
|
-
answer: z.string(),
|
|
649
|
-
})
|
|
650
|
-
export type FaqItemSpec = z.infer<typeof faqItemSchema>
|
|
651
|
-
|
|
652
|
-
export const faqBlock1PropsSchema = z.object({
|
|
653
|
-
items: z.array(faqItemSchema),
|
|
654
|
-
title: z.string().optional(),
|
|
655
|
-
description: z.string().optional(),
|
|
656
|
-
accordionType: z.enum(['single', 'multiple']).optional(),
|
|
657
|
-
})
|
|
658
|
-
export type FaqBlock1SpecProps = z.infer<typeof faqBlock1PropsSchema>
|
|
659
|
-
|
|
660
|
-
export const ctaSection1PropsSchema = z.object({
|
|
661
|
-
badgeText: z.string().optional(),
|
|
662
|
-
title: z.string().optional(),
|
|
663
|
-
description: z.string().optional(),
|
|
664
|
-
primaryCta: ctaSchema.optional(),
|
|
665
|
-
secondaryCta: ctaSchema.optional(),
|
|
666
|
-
})
|
|
667
|
-
export type CtaSection1SpecProps = z.infer<typeof ctaSection1PropsSchema>
|
|
668
|
-
|
|
669
|
-
/**
|
|
670
|
-
* Serializable contract for the canonical `Feature` benefits section. The
|
|
671
|
-
* item `icon` is a Lucide icon NAME (e.g. `'Zap'`) that the registry resolves
|
|
672
|
-
* to a component at the seam; the React-only callbacks (`onCtaClick`,
|
|
673
|
-
* `onLearnMore`) are intentionally excluded — the catalog adapter binds them.
|
|
674
|
-
*/
|
|
675
|
-
export const featureItemSpecSchema = z.object({
|
|
676
|
-
id: z.string(),
|
|
677
|
-
title: z.string(),
|
|
678
|
-
description: z.string(),
|
|
679
|
-
icon: z.string(),
|
|
680
|
-
})
|
|
681
|
-
|
|
682
|
-
/**
|
|
683
|
-
* `cards` branch: the card grid never owns an image. The presentation is
|
|
684
|
-
* optional so an omitted value resolves to `cards`.
|
|
685
|
-
*/
|
|
686
|
-
export const featureCardsSpecSchema = z.object({
|
|
687
|
-
items: z.array(featureItemSpecSchema),
|
|
688
|
-
presentation: z.literal('cards').optional(),
|
|
689
|
-
badge: z.string().optional(),
|
|
690
|
-
title: z.string().optional(),
|
|
691
|
-
description: z.string().optional(),
|
|
692
|
-
ctaLabel: z.string().optional(),
|
|
693
|
-
learnMoreLabel: z.string().optional(),
|
|
694
|
-
className: z.string().optional(),
|
|
695
|
-
})
|
|
696
|
-
export type FeatureCardsSpecProps = z.infer<typeof featureCardsSpecSchema>
|
|
697
|
-
|
|
698
|
-
/**
|
|
699
|
-
* `split` branch: the editorial image is mandatory and must carry a non-empty
|
|
700
|
-
* `src`. `alt` stays required so the caller decides whether the image is
|
|
701
|
-
* informative or decorative. `cards`-only chrome is intentionally absent.
|
|
702
|
-
*/
|
|
703
|
-
export const featureSplitSpecSchema = z.object({
|
|
704
|
-
items: z.array(featureItemSpecSchema),
|
|
705
|
-
presentation: z.literal('split'),
|
|
706
|
-
title: z.string().optional(),
|
|
707
|
-
description: z.string().optional(),
|
|
708
|
-
image: z.object({ src: z.string().trim().min(1), alt: z.string() }),
|
|
709
|
-
className: z.string().optional(),
|
|
710
|
-
})
|
|
711
|
-
export type FeatureSplitSpecProps = z.infer<typeof featureSplitSpecSchema>
|
|
712
|
-
|
|
713
|
-
/**
|
|
714
|
-
* Serialized `Feature` union. The split branch is listed first so
|
|
715
|
-
* `presentation: 'split'` resolves deterministically; an omitted presentation
|
|
716
|
-
* falls through to `cards`. A split input without a non-empty image matches
|
|
717
|
-
* neither branch and fails to parse.
|
|
718
|
-
*/
|
|
719
|
-
export const featurePropsSchema = z.union([featureSplitSpecSchema, featureCardsSpecSchema])
|
|
720
|
-
export type FeatureSpecProps = z.infer<typeof featurePropsSchema>
|
|
721
|
-
|
|
722
|
-
/**
|
|
723
|
-
* Canonical category contract for the consolidated `ProductCategory` block.
|
|
724
|
-
*
|
|
725
|
-
* `categories` is the canonical category projection (a `@thorprovider/types`
|
|
726
|
-
* `ProductCategory` subset): ids are canonical strings, optional fields are
|
|
727
|
-
* omitted rather than serialized as `""`, and there are no demo-only required
|
|
728
|
-
* fields (no required subtitle, sector icon enum, or Lucide component). `icon`
|
|
729
|
-
* is a plain, serializable icon-key string resolved by the block against a
|
|
730
|
-
* bounded map with a neutral fallback. The `presentation` value is a bounded
|
|
731
|
-
* structure switch, never a per-store fork. Callbacks are runtime props and are
|
|
732
|
-
* excluded here (see the component).
|
|
733
|
-
*/
|
|
734
|
-
export const productCategoryItemSchema = z.object({
|
|
735
|
-
id: z.string(),
|
|
736
|
-
handle: z.string().optional(),
|
|
737
|
-
name: z.string(),
|
|
738
|
-
description: z.string().optional(),
|
|
739
|
-
/** Optional real count; an unknown count is omitted, never fabricated as `0`. */
|
|
740
|
-
itemCount: z.number().optional(),
|
|
741
|
-
/** Omitted (never `""`) when the backend has no image. */
|
|
742
|
-
image: z.string().optional(),
|
|
743
|
-
trending: z.boolean().optional(),
|
|
744
|
-
/** Serializable icon key (e.g. `'shirt'`); unknown keys render a neutral fallback. */
|
|
745
|
-
icon: z.string().optional(),
|
|
746
|
-
subcategories: z.array(z.string()).optional(),
|
|
747
|
-
featured: z.boolean().optional(),
|
|
748
|
-
})
|
|
749
|
-
export type ProductCategoryItem = z.infer<typeof productCategoryItemSchema>
|
|
750
|
-
|
|
751
|
-
export const productCategoryPropsSchema = z.object({
|
|
752
|
-
categories: z.array(productCategoryItemSchema),
|
|
753
|
-
presentation: z.enum(['grid', 'icons', 'list']).optional(),
|
|
754
|
-
title: z.string().optional(),
|
|
755
|
-
description: z.string().optional(),
|
|
756
|
-
badge: z.string().optional(),
|
|
757
|
-
cta: ctaSchema.optional(),
|
|
758
|
-
/** Controlled search value; filtering is owned by the host. */
|
|
759
|
-
query: z.string().optional(),
|
|
760
|
-
searchPlaceholder: z.string().optional(),
|
|
761
|
-
searchLabel: z.string().optional(),
|
|
762
|
-
emptyLabel: z.string().optional(),
|
|
763
|
-
noResultsLabel: z.string().optional(),
|
|
764
|
-
browseLabel: z.string().optional(),
|
|
765
|
-
viewAllLabel: z.string().optional(),
|
|
766
|
-
trendingLabel: z.string().optional(),
|
|
767
|
-
featuredLabel: z.string().optional(),
|
|
768
|
-
itemsLabel: z.string().optional(),
|
|
769
|
-
imageFallback: z.string().optional(),
|
|
770
|
-
className: z.string().optional(),
|
|
771
|
-
})
|
|
772
|
-
export type ProductCategorySpecProps = z.infer<typeof productCategoryPropsSchema>
|
|
773
|
-
|
|
774
|
-
export const categoryCardPropsSchema = z.object({
|
|
775
|
-
category: productCategoryItemSchema,
|
|
776
|
-
presentation: z.enum(['grid', 'icons', 'list']).optional(),
|
|
777
|
-
browseLabel: z.string().optional(),
|
|
778
|
-
itemsLabel: z.string().optional(),
|
|
779
|
-
trendingLabel: z.string().optional(),
|
|
780
|
-
featuredLabel: z.string().optional(),
|
|
781
|
-
imageFallback: z.string().optional(),
|
|
782
|
-
})
|
|
783
|
-
export type CategoryCardSpecProps = z.infer<typeof categoryCardPropsSchema>
|
|
784
|
-
|
|
785
|
-
export const categoryGridPropsSchema = productCategoryPropsSchema.extend({
|
|
786
|
-
maxItems: z.number().int().positive().optional(),
|
|
787
|
-
loading: z.boolean().optional(),
|
|
788
|
-
skeletonCount: z.number().int().positive().optional(),
|
|
789
|
-
})
|
|
790
|
-
export type CategoryGridSpecProps = z.infer<typeof categoryGridPropsSchema>
|
|
791
|
-
|
|
792
|
-
// Pure monetary helpers, re-exported from the server-safe contracts entry so a
|
|
793
|
-
// host boundary can validate/format `Money` without importing the React entry.
|
|
794
|
-
export { isCompleteFiniteDecimal, isAvailableMoney, formatMoney } from './money'
|
|
795
|
-
export { resolveAbsoluteQuantity } from './cart'
|