@thorprovider/blocks 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (842) hide show
  1. package/README.md +120 -8
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts +21 -0
  4. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts.map +1 -0
  5. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js +147 -0
  6. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js.map +1 -0
  7. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs +153 -0
  8. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs.map +1 -0
  9. package/dist/blocks/application/app-shells/app-shell-1.d.ts +27 -0
  10. package/dist/blocks/application/app-shells/app-shell-1.d.ts.map +1 -0
  11. package/dist/blocks/application/app-shells/app-shell-1.js +150 -0
  12. package/dist/blocks/application/app-shells/app-shell-1.js.map +1 -0
  13. package/dist/blocks/application/app-shells/app-shell-1.mjs +123 -0
  14. package/dist/blocks/application/app-shells/app-shell-1.mjs.map +1 -0
  15. package/dist/blocks/application/login-forms/login-page.d.ts +42 -0
  16. package/dist/blocks/application/login-forms/login-page.d.ts.map +1 -0
  17. package/dist/blocks/application/login-forms/login-page.js +209 -0
  18. package/dist/blocks/application/login-forms/login-page.js.map +1 -0
  19. package/dist/blocks/application/login-forms/login-page.mjs +185 -0
  20. package/dist/blocks/application/login-forms/login-page.mjs.map +1 -0
  21. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts +3 -0
  22. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts.map +1 -0
  23. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js +74 -0
  24. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js.map +1 -0
  25. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs +50 -0
  26. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs.map +1 -0
  27. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts +42 -0
  28. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts.map +1 -0
  29. package/dist/blocks/application/password-recovery/forgot-password-page-1.js +293 -0
  30. package/dist/blocks/application/password-recovery/forgot-password-page-1.js.map +1 -0
  31. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs +259 -0
  32. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs.map +1 -0
  33. package/dist/blocks/application/signup-forms/signup-page-1.d.ts +41 -0
  34. package/dist/blocks/application/signup-forms/signup-page-1.d.ts.map +1 -0
  35. package/dist/blocks/application/signup-forms/signup-page-1.js +195 -0
  36. package/dist/blocks/application/signup-forms/signup-page-1.js.map +1 -0
  37. package/dist/blocks/application/signup-forms/signup-page-1.mjs +171 -0
  38. package/dist/blocks/application/signup-forms/signup-page-1.mjs.map +1 -0
  39. package/dist/blocks/application/verification/verify-1.d.ts +35 -0
  40. package/dist/blocks/application/verification/verify-1.d.ts.map +1 -0
  41. package/dist/blocks/application/verification/verify-1.js +243 -0
  42. package/dist/blocks/application/verification/verify-1.js.map +1 -0
  43. package/dist/blocks/application/verification/verify-1.mjs +219 -0
  44. package/dist/blocks/application/verification/verify-1.mjs.map +1 -0
  45. package/dist/blocks/application/verification/verify-confetti.d.ts +22 -0
  46. package/dist/blocks/application/verification/verify-confetti.d.ts.map +1 -0
  47. package/dist/blocks/application/verification/verify-confetti.js +145 -0
  48. package/dist/blocks/application/verification/verify-confetti.js.map +1 -0
  49. package/dist/blocks/application/verification/verify-confetti.mjs +121 -0
  50. package/dist/blocks/application/verification/verify-confetti.mjs.map +1 -0
  51. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts +39 -0
  52. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts.map +1 -0
  53. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js +180 -0
  54. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js.map +1 -0
  55. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs +156 -0
  56. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs.map +1 -0
  57. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts +236 -0
  58. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts.map +1 -0
  59. package/dist/blocks/e-commerce/category-filters/category-listing.js +562 -0
  60. package/dist/blocks/e-commerce/category-filters/category-listing.js.map +1 -0
  61. package/dist/blocks/e-commerce/category-filters/category-listing.mjs +539 -0
  62. package/dist/blocks/e-commerce/category-filters/category-listing.mjs.map +1 -0
  63. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts +4 -0
  64. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts.map +1 -0
  65. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +97 -0
  66. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -0
  67. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +73 -0
  68. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -0
  69. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts +41 -0
  70. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts.map +1 -0
  71. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js +115 -0
  72. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js.map +1 -0
  73. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs +91 -0
  74. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs.map +1 -0
  75. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts +107 -0
  76. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts.map +1 -0
  77. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js +180 -0
  78. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js.map +1 -0
  79. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs +156 -0
  80. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs.map +1 -0
  81. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +13 -0
  82. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -0
  83. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +180 -0
  84. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -0
  85. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +156 -0
  86. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -0
  87. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts +12 -0
  88. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -0
  89. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +50 -0
  90. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -0
  91. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +33 -0
  92. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -0
  93. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts +11 -0
  94. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts.map +1 -0
  95. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js +50 -0
  96. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js.map +1 -0
  97. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs +25 -0
  98. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs.map +1 -0
  99. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts +5 -0
  100. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts.map +1 -0
  101. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js +17 -0
  102. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js.map +1 -0
  103. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs +1 -0
  104. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs.map +1 -0
  105. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +20 -0
  106. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -0
  107. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +176 -0
  108. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -0
  109. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +152 -0
  110. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -0
  111. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +12 -0
  112. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -0
  113. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +93 -0
  114. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -0
  115. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +69 -0
  116. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -0
  117. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts +11 -0
  118. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts.map +1 -0
  119. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js +76 -0
  120. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js.map +1 -0
  121. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs +52 -0
  122. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs.map +1 -0
  123. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +11 -0
  124. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -0
  125. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +64 -0
  126. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -0
  127. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +40 -0
  128. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -0
  129. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +17 -0
  130. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -0
  131. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +199 -0
  132. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -0
  133. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +175 -0
  134. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -0
  135. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +164 -0
  136. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -0
  137. package/dist/blocks/e-commerce/checkout-forms/checkout.js +351 -0
  138. package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -0
  139. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +327 -0
  140. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -0
  141. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts +28 -0
  142. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts.map +1 -0
  143. package/dist/blocks/e-commerce/navigation/back-to-top.js +78 -0
  144. package/dist/blocks/e-commerce/navigation/back-to-top.js.map +1 -0
  145. package/dist/blocks/e-commerce/navigation/back-to-top.mjs +52 -0
  146. package/dist/blocks/e-commerce/navigation/back-to-top.mjs.map +1 -0
  147. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts +61 -0
  148. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts.map +1 -0
  149. package/dist/blocks/e-commerce/navigation/breadcrumb.js +111 -0
  150. package/dist/blocks/e-commerce/navigation/breadcrumb.js.map +1 -0
  151. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs +93 -0
  152. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs.map +1 -0
  153. package/dist/blocks/e-commerce/navigation/category-icon.d.ts +28 -0
  154. package/dist/blocks/e-commerce/navigation/category-icon.d.ts.map +1 -0
  155. package/dist/blocks/e-commerce/navigation/category-icon.js +86 -0
  156. package/dist/blocks/e-commerce/navigation/category-icon.js.map +1 -0
  157. package/dist/blocks/e-commerce/navigation/category-icon.mjs +79 -0
  158. package/dist/blocks/e-commerce/navigation/category-icon.mjs.map +1 -0
  159. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts +112 -0
  160. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts.map +1 -0
  161. package/dist/blocks/e-commerce/navigation/mega-menu.js +250 -0
  162. package/dist/blocks/e-commerce/navigation/mega-menu.js.map +1 -0
  163. package/dist/blocks/e-commerce/navigation/mega-menu.mjs +228 -0
  164. package/dist/blocks/e-commerce/navigation/mega-menu.mjs.map +1 -0
  165. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts +71 -0
  166. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts.map +1 -0
  167. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js +94 -0
  168. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js.map +1 -0
  169. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs +68 -0
  170. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs.map +1 -0
  171. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts +121 -0
  172. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts.map +1 -0
  173. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js +257 -0
  174. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js.map +1 -0
  175. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs +235 -0
  176. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs.map +1 -0
  177. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts +25 -0
  178. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts.map +1 -0
  179. package/dist/blocks/e-commerce/navigation/skip-to-content.js +55 -0
  180. package/dist/blocks/e-commerce/navigation/skip-to-content.js.map +1 -0
  181. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs +30 -0
  182. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs.map +1 -0
  183. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts +23 -0
  184. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts.map +1 -0
  185. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js +127 -0
  186. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js.map +1 -0
  187. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs +111 -0
  188. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs.map +1 -0
  189. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts +66 -0
  190. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -0
  191. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +280 -0
  192. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -0
  193. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +263 -0
  194. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -0
  195. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts +13 -0
  196. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts.map +1 -0
  197. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js +83 -0
  198. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js.map +1 -0
  199. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs +59 -0
  200. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs.map +1 -0
  201. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts +8 -0
  202. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts.map +1 -0
  203. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js +73 -0
  204. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js.map +1 -0
  205. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs +49 -0
  206. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs.map +1 -0
  207. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts +121 -0
  208. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -0
  209. package/dist/blocks/e-commerce/navigation/storefront-navbar.js +424 -0
  210. package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -0
  211. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +399 -0
  212. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -0
  213. package/dist/blocks/e-commerce/order-history/order-history.d.ts +74 -0
  214. package/dist/blocks/e-commerce/order-history/order-history.d.ts.map +1 -0
  215. package/dist/blocks/e-commerce/order-history/order-history.js +161 -0
  216. package/dist/blocks/e-commerce/order-history/order-history.js.map +1 -0
  217. package/dist/blocks/e-commerce/order-history/order-history.mjs +141 -0
  218. package/dist/blocks/e-commerce/order-history/order-history.mjs.map +1 -0
  219. package/dist/blocks/e-commerce/order-history/order-line.d.ts +50 -0
  220. package/dist/blocks/e-commerce/order-history/order-line.d.ts.map +1 -0
  221. package/dist/blocks/e-commerce/order-history/order-line.js +75 -0
  222. package/dist/blocks/e-commerce/order-history/order-line.js.map +1 -0
  223. package/dist/blocks/e-commerce/order-history/order-line.mjs +49 -0
  224. package/dist/blocks/e-commerce/order-history/order-line.mjs.map +1 -0
  225. package/dist/blocks/e-commerce/product-categories/category-card.d.ts +9 -0
  226. package/dist/blocks/e-commerce/product-categories/category-card.d.ts.map +1 -0
  227. package/dist/blocks/e-commerce/product-categories/category-card.js +154 -0
  228. package/dist/blocks/e-commerce/product-categories/category-card.js.map +1 -0
  229. package/dist/blocks/e-commerce/product-categories/category-card.mjs +134 -0
  230. package/dist/blocks/e-commerce/product-categories/category-card.mjs.map +1 -0
  231. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts +15 -0
  232. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts.map +1 -0
  233. package/dist/blocks/e-commerce/product-categories/category-shared.js +101 -0
  234. package/dist/blocks/e-commerce/product-categories/category-shared.js.map +1 -0
  235. package/dist/blocks/e-commerce/product-categories/category-shared.mjs +97 -0
  236. package/dist/blocks/e-commerce/product-categories/category-shared.mjs.map +1 -0
  237. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts +10 -0
  238. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts.map +1 -0
  239. package/dist/blocks/e-commerce/product-categories/product-category-grid.js +138 -0
  240. package/dist/blocks/e-commerce/product-categories/product-category-grid.js.map +1 -0
  241. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs +114 -0
  242. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs.map +1 -0
  243. package/dist/blocks/e-commerce/product-categories/product-category.d.ts +41 -0
  244. package/dist/blocks/e-commerce/product-categories/product-category.d.ts.map +1 -0
  245. package/dist/blocks/e-commerce/product-categories/product-category.js +319 -0
  246. package/dist/blocks/e-commerce/product-categories/product-category.js.map +1 -0
  247. package/dist/blocks/e-commerce/product-categories/product-category.mjs +322 -0
  248. package/dist/blocks/e-commerce/product-categories/product-category.mjs.map +1 -0
  249. package/dist/blocks/e-commerce/product-list/product-card.d.ts +47 -0
  250. package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -0
  251. package/dist/blocks/e-commerce/product-list/product-card.js +361 -0
  252. package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -0
  253. package/dist/blocks/e-commerce/product-list/product-card.mjs +337 -0
  254. package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -0
  255. package/dist/blocks/e-commerce/product-list/product-grid.d.ts +28 -0
  256. package/dist/blocks/e-commerce/product-list/product-grid.d.ts.map +1 -0
  257. package/dist/blocks/e-commerce/product-list/product-grid.js +92 -0
  258. package/dist/blocks/e-commerce/product-list/product-grid.js.map +1 -0
  259. package/dist/blocks/e-commerce/product-list/product-grid.mjs +68 -0
  260. package/dist/blocks/e-commerce/product-list/product-grid.mjs.map +1 -0
  261. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts +30 -0
  262. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -0
  263. package/dist/blocks/e-commerce/product-list/product-showcase-1.js +245 -0
  264. package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -0
  265. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +221 -0
  266. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -0
  267. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts +20 -0
  268. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts.map +1 -0
  269. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js +71 -0
  270. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js.map +1 -0
  271. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs +47 -0
  272. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs.map +1 -0
  273. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts +15 -0
  274. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts.map +1 -0
  275. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js +118 -0
  276. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js.map +1 -0
  277. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs +94 -0
  278. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs.map +1 -0
  279. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts +26 -0
  280. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts.map +1 -0
  281. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js +85 -0
  282. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js.map +1 -0
  283. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs +61 -0
  284. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs.map +1 -0
  285. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts +32 -0
  286. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts.map +1 -0
  287. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js +79 -0
  288. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js.map +1 -0
  289. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs +51 -0
  290. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs.map +1 -0
  291. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts +121 -0
  292. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts.map +1 -0
  293. package/dist/blocks/e-commerce/product-overview/product-overview.js +844 -0
  294. package/dist/blocks/e-commerce/product-overview/product-overview.js.map +1 -0
  295. package/dist/blocks/e-commerce/product-overview/product-overview.mjs +821 -0
  296. package/dist/blocks/e-commerce/product-overview/product-overview.mjs.map +1 -0
  297. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts +17 -0
  298. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts.map +1 -0
  299. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js +123 -0
  300. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js.map +1 -0
  301. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs +99 -0
  302. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs.map +1 -0
  303. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts +20 -0
  304. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -0
  305. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +271 -0
  306. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -0
  307. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +253 -0
  308. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -0
  309. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts +68 -0
  310. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts.map +1 -0
  311. package/dist/blocks/e-commerce/product-overview/product-quick-view.js +84 -0
  312. package/dist/blocks/e-commerce/product-overview/product-quick-view.js.map +1 -0
  313. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs +60 -0
  314. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs.map +1 -0
  315. package/dist/blocks/e-commerce/reviews/review-card.d.ts +60 -0
  316. package/dist/blocks/e-commerce/reviews/review-card.d.ts.map +1 -0
  317. package/dist/blocks/e-commerce/reviews/review-card.js +166 -0
  318. package/dist/blocks/e-commerce/reviews/review-card.js.map +1 -0
  319. package/dist/blocks/e-commerce/reviews/review-card.mjs +139 -0
  320. package/dist/blocks/e-commerce/reviews/review-card.mjs.map +1 -0
  321. package/dist/blocks/e-commerce/reviews/review-composer.d.ts +50 -0
  322. package/dist/blocks/e-commerce/reviews/review-composer.d.ts.map +1 -0
  323. package/dist/blocks/e-commerce/reviews/review-composer.js +180 -0
  324. package/dist/blocks/e-commerce/reviews/review-composer.js.map +1 -0
  325. package/dist/blocks/e-commerce/reviews/review-composer.mjs +155 -0
  326. package/dist/blocks/e-commerce/reviews/review-composer.mjs.map +1 -0
  327. package/dist/blocks/e-commerce/reviews/review-list.d.ts +40 -0
  328. package/dist/blocks/e-commerce/reviews/review-list.d.ts.map +1 -0
  329. package/dist/blocks/e-commerce/reviews/review-list.js +138 -0
  330. package/dist/blocks/e-commerce/reviews/review-list.js.map +1 -0
  331. package/dist/blocks/e-commerce/reviews/review-list.mjs +119 -0
  332. package/dist/blocks/e-commerce/reviews/review-list.mjs.map +1 -0
  333. package/dist/blocks/e-commerce/reviews/review-summary.d.ts +49 -0
  334. package/dist/blocks/e-commerce/reviews/review-summary.d.ts.map +1 -0
  335. package/dist/blocks/e-commerce/reviews/review-summary.js +150 -0
  336. package/dist/blocks/e-commerce/reviews/review-summary.js.map +1 -0
  337. package/dist/blocks/e-commerce/reviews/review-summary.mjs +124 -0
  338. package/dist/blocks/e-commerce/reviews/review-summary.mjs.map +1 -0
  339. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts +98 -0
  340. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts.map +1 -0
  341. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js +417 -0
  342. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js.map +1 -0
  343. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs +393 -0
  344. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs.map +1 -0
  345. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts +13 -0
  346. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts.map +1 -0
  347. package/dist/blocks/e-commerce/store-containers/store-container-1.js +45 -0
  348. package/dist/blocks/e-commerce/store-containers/store-container-1.js.map +1 -0
  349. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs +21 -0
  350. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs.map +1 -0
  351. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts +163 -0
  352. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -0
  353. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +810 -0
  354. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -0
  355. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +786 -0
  356. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -0
  357. package/dist/blocks/marketing/banners/avatar-group.d.ts +8 -0
  358. package/dist/blocks/marketing/banners/avatar-group.d.ts.map +1 -0
  359. package/dist/blocks/marketing/banners/avatar-group.js +90 -0
  360. package/dist/blocks/marketing/banners/avatar-group.js.map +1 -0
  361. package/dist/blocks/marketing/banners/avatar-group.mjs +56 -0
  362. package/dist/blocks/marketing/banners/avatar-group.mjs.map +1 -0
  363. package/dist/blocks/marketing/banners/banner-1.d.ts +26 -0
  364. package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -0
  365. package/dist/blocks/marketing/banners/banner-1.js +177 -0
  366. package/dist/blocks/marketing/banners/banner-1.js.map +1 -0
  367. package/dist/blocks/marketing/banners/banner-1.mjs +153 -0
  368. package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -0
  369. package/dist/blocks/marketing/cta/cta-section-1.d.ts +13 -0
  370. package/dist/blocks/marketing/cta/cta-section-1.d.ts.map +1 -0
  371. package/dist/blocks/marketing/cta/cta-section-1.js +116 -0
  372. package/dist/blocks/marketing/cta/cta-section-1.js.map +1 -0
  373. package/dist/blocks/marketing/cta/cta-section-1.mjs +92 -0
  374. package/dist/blocks/marketing/cta/cta-section-1.mjs.map +1 -0
  375. package/dist/blocks/marketing/faq/faq-block-1.d.ts +16 -0
  376. package/dist/blocks/marketing/faq/faq-block-1.d.ts.map +1 -0
  377. package/dist/blocks/marketing/faq/faq-block-1.js +49 -0
  378. package/dist/blocks/marketing/faq/faq-block-1.js.map +1 -0
  379. package/dist/blocks/marketing/faq/faq-block-1.mjs +25 -0
  380. package/dist/blocks/marketing/faq/faq-block-1.mjs.map +1 -0
  381. package/dist/blocks/marketing/features/feature.d.ts +45 -0
  382. package/dist/blocks/marketing/features/feature.d.ts.map +1 -0
  383. package/dist/blocks/marketing/features/feature.js +135 -0
  384. package/dist/blocks/marketing/features/feature.js.map +1 -0
  385. package/dist/blocks/marketing/features/feature.mjs +111 -0
  386. package/dist/blocks/marketing/features/feature.mjs.map +1 -0
  387. package/dist/blocks/marketing/footers/footer-section.d.ts +59 -0
  388. package/dist/blocks/marketing/footers/footer-section.d.ts.map +1 -0
  389. package/dist/blocks/marketing/footers/footer-section.js +356 -0
  390. package/dist/blocks/marketing/footers/footer-section.js.map +1 -0
  391. package/dist/blocks/marketing/footers/footer-section.mjs +332 -0
  392. package/dist/blocks/marketing/footers/footer-section.mjs.map +1 -0
  393. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts +9 -0
  394. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts.map +1 -0
  395. package/dist/blocks/marketing/hero-sections/avatar-group.js +92 -0
  396. package/dist/blocks/marketing/hero-sections/avatar-group.js.map +1 -0
  397. package/dist/blocks/marketing/hero-sections/avatar-group.mjs +58 -0
  398. package/dist/blocks/marketing/hero-sections/avatar-group.mjs.map +1 -0
  399. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts +27 -0
  400. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts.map +1 -0
  401. package/dist/blocks/marketing/hero-sections/hero-section-1.js +124 -0
  402. package/dist/blocks/marketing/hero-sections/hero-section-1.js.map +1 -0
  403. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs +100 -0
  404. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs.map +1 -0
  405. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts +19 -0
  406. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts.map +1 -0
  407. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js +63 -0
  408. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js.map +1 -0
  409. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs +39 -0
  410. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs.map +1 -0
  411. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts +13 -0
  412. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts.map +1 -0
  413. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js +49 -0
  414. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js.map +1 -0
  415. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs +25 -0
  416. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs.map +1 -0
  417. package/dist/blocks/marketing/navbars/navbar.d.ts +80 -0
  418. package/dist/blocks/marketing/navbars/navbar.d.ts.map +1 -0
  419. package/dist/blocks/marketing/navbars/navbar.js +484 -0
  420. package/dist/blocks/marketing/navbars/navbar.js.map +1 -0
  421. package/dist/blocks/marketing/navbars/navbar.mjs +475 -0
  422. package/dist/blocks/marketing/navbars/navbar.mjs.map +1 -0
  423. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts +23 -0
  424. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts.map +1 -0
  425. package/dist/blocks/marketing/pricing/pricing-section-1.js +89 -0
  426. package/dist/blocks/marketing/pricing/pricing-section-1.js.map +1 -0
  427. package/dist/blocks/marketing/pricing/pricing-section-1.mjs +65 -0
  428. package/dist/blocks/marketing/pricing/pricing-section-1.mjs.map +1 -0
  429. package/dist/blocks/marketing/statistics/statistic-1.d.ts +19 -0
  430. package/dist/blocks/marketing/statistics/statistic-1.d.ts.map +1 -0
  431. package/dist/blocks/marketing/statistics/statistic-1.js +83 -0
  432. package/dist/blocks/marketing/statistics/statistic-1.js.map +1 -0
  433. package/dist/blocks/marketing/statistics/statistic-1.mjs +59 -0
  434. package/dist/blocks/marketing/statistics/statistic-1.mjs.map +1 -0
  435. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts +29 -0
  436. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts.map +1 -0
  437. package/dist/blocks/marketing/testimonials/testimonial-section.js +173 -0
  438. package/dist/blocks/marketing/testimonials/testimonial-section.js.map +1 -0
  439. package/dist/blocks/marketing/testimonials/testimonial-section.mjs +155 -0
  440. package/dist/blocks/marketing/testimonials/testimonial-section.mjs.map +1 -0
  441. package/dist/blocks/shared/reaction-toggle.d.ts +14 -0
  442. package/dist/blocks/shared/reaction-toggle.d.ts.map +1 -0
  443. package/dist/blocks/shared/reaction-toggle.js +138 -0
  444. package/dist/blocks/shared/reaction-toggle.js.map +1 -0
  445. package/dist/blocks/shared/reaction-toggle.mjs +114 -0
  446. package/dist/blocks/shared/reaction-toggle.mjs.map +1 -0
  447. package/dist/hooks/use-mobile.d.ts +2 -0
  448. package/dist/hooks/use-mobile.d.ts.map +1 -0
  449. package/dist/hooks/use-mobile.js +53 -0
  450. package/dist/hooks/use-mobile.js.map +1 -0
  451. package/dist/hooks/use-mobile.mjs +19 -0
  452. package/dist/hooks/use-mobile.mjs.map +1 -0
  453. package/dist/index.d.ts +100 -0
  454. package/dist/index.d.ts.map +1 -0
  455. package/dist/index.js +339 -0
  456. package/dist/index.js.map +1 -0
  457. package/dist/index.mjs +238 -0
  458. package/dist/index.mjs.map +1 -0
  459. package/{src/lib/cart.ts → dist/lib/cart.d.ts} +2 -3
  460. package/dist/lib/cart.d.ts.map +1 -0
  461. package/dist/lib/cart.js +31 -0
  462. package/dist/lib/cart.js.map +1 -0
  463. package/dist/lib/cart.mjs +7 -0
  464. package/dist/lib/cart.mjs.map +1 -0
  465. package/dist/lib/contracts.d.ts +4008 -0
  466. package/dist/lib/contracts.d.ts.map +1 -0
  467. package/dist/lib/contracts.js +828 -0
  468. package/dist/lib/contracts.js.map +1 -0
  469. package/dist/lib/contracts.mjs +737 -0
  470. package/dist/lib/contracts.mjs.map +1 -0
  471. package/dist/lib/money.d.ts +28 -0
  472. package/dist/lib/money.d.ts.map +1 -0
  473. package/dist/lib/money.js +50 -0
  474. package/dist/lib/money.js.map +1 -0
  475. package/dist/lib/money.mjs +24 -0
  476. package/dist/lib/money.mjs.map +1 -0
  477. package/dist/lib/types/menu.d.ts +40 -0
  478. package/dist/lib/types/menu.d.ts.map +1 -0
  479. package/dist/lib/types/menu.js +50 -0
  480. package/dist/lib/types/menu.js.map +1 -0
  481. package/dist/lib/types/menu.mjs +25 -0
  482. package/dist/lib/types/menu.mjs.map +1 -0
  483. package/dist/lib/types.d.ts +5 -0
  484. package/dist/lib/types.d.ts.map +1 -0
  485. package/dist/lib/types.js +17 -0
  486. package/dist/lib/types.js.map +1 -0
  487. package/dist/lib/types.mjs +1 -0
  488. package/dist/lib/types.mjs.map +1 -0
  489. package/dist/lib/utils.d.ts +7 -0
  490. package/dist/lib/utils.d.ts.map +1 -0
  491. package/dist/lib/utils.js +33 -0
  492. package/dist/lib/utils.js.map +1 -0
  493. package/dist/lib/utils.mjs +9 -0
  494. package/dist/lib/utils.mjs.map +1 -0
  495. package/dist/ui/accordion.d.ts +8 -0
  496. package/dist/ui/accordion.d.ts.map +1 -0
  497. package/dist/ui/accordion.js +93 -0
  498. package/dist/ui/accordion.js.map +1 -0
  499. package/dist/ui/accordion.mjs +66 -0
  500. package/dist/ui/accordion.mjs.map +1 -0
  501. package/dist/ui/avatar.d.ts +12 -0
  502. package/dist/ui/avatar.d.ts.map +1 -0
  503. package/dist/ui/avatar.js +134 -0
  504. package/dist/ui/avatar.js.map +1 -0
  505. package/{src/ui/avatar.tsx → dist/ui/avatar.mjs} +67 -70
  506. package/dist/ui/avatar.mjs.map +1 -0
  507. package/dist/ui/badge.d.ts +10 -0
  508. package/dist/ui/badge.d.ts.map +1 -0
  509. package/dist/ui/badge.js +69 -0
  510. package/dist/ui/badge.js.map +1 -0
  511. package/dist/ui/badge.mjs +44 -0
  512. package/dist/ui/badge.mjs.map +1 -0
  513. package/dist/ui/breadcrumb.d.ts +12 -0
  514. package/dist/ui/breadcrumb.d.ts.map +1 -0
  515. package/dist/ui/breadcrumb.js +134 -0
  516. package/dist/ui/breadcrumb.js.map +1 -0
  517. package/dist/ui/breadcrumb.mjs +104 -0
  518. package/dist/ui/breadcrumb.mjs.map +1 -0
  519. package/dist/ui/button-group.d.ts +12 -0
  520. package/dist/ui/button-group.d.ts.map +1 -0
  521. package/dist/ui/button-group.js +104 -0
  522. package/dist/ui/button-group.js.map +1 -0
  523. package/dist/ui/button-group.mjs +77 -0
  524. package/dist/ui/button-group.mjs.map +1 -0
  525. package/dist/ui/button.d.ts +11 -0
  526. package/dist/ui/button.d.ts.map +1 -0
  527. package/dist/ui/button.js +82 -0
  528. package/dist/ui/button.js.map +1 -0
  529. package/dist/ui/button.mjs +57 -0
  530. package/dist/ui/button.mjs.map +1 -0
  531. package/dist/ui/card.d.ts +10 -0
  532. package/dist/ui/card.d.ts.map +1 -0
  533. package/dist/ui/card.js +121 -0
  534. package/dist/ui/card.js.map +1 -0
  535. package/dist/ui/card.mjs +91 -0
  536. package/dist/ui/card.mjs.map +1 -0
  537. package/dist/ui/carousel.d.ts +20 -0
  538. package/dist/ui/carousel.d.ts.map +1 -0
  539. package/dist/ui/carousel.js +238 -0
  540. package/dist/ui/carousel.js.map +1 -0
  541. package/dist/ui/carousel.mjs +200 -0
  542. package/dist/ui/carousel.mjs.map +1 -0
  543. package/dist/ui/dialog.d.ts +18 -0
  544. package/dist/ui/dialog.d.ts.map +1 -0
  545. package/dist/ui/dialog.js +181 -0
  546. package/dist/ui/dialog.js.map +1 -0
  547. package/dist/ui/dialog.mjs +148 -0
  548. package/dist/ui/dialog.mjs.map +1 -0
  549. package/dist/ui/drawer.d.ts +14 -0
  550. package/dist/ui/drawer.d.ts.map +1 -0
  551. package/dist/ui/drawer.js +163 -0
  552. package/dist/ui/drawer.js.map +1 -0
  553. package/dist/ui/drawer.mjs +130 -0
  554. package/dist/ui/drawer.mjs.map +1 -0
  555. package/dist/ui/dropdown-menu.d.ts +26 -0
  556. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  557. package/dist/ui/dropdown-menu.js +271 -0
  558. package/dist/ui/dropdown-menu.js.map +1 -0
  559. package/dist/ui/dropdown-menu.mjs +233 -0
  560. package/dist/ui/dropdown-menu.mjs.map +1 -0
  561. package/dist/ui/empty.d.ts +12 -0
  562. package/dist/ui/empty.d.ts.map +1 -0
  563. package/dist/ui/empty.js +132 -0
  564. package/dist/ui/empty.js.map +1 -0
  565. package/dist/ui/empty.mjs +103 -0
  566. package/dist/ui/empty.mjs.map +1 -0
  567. package/dist/ui/field.d.ts +25 -0
  568. package/dist/ui/field.d.ts.map +1 -0
  569. package/dist/ui/field.js +264 -0
  570. package/dist/ui/field.js.map +1 -0
  571. package/{src/ui/field.tsx → dist/ui/field.mjs} +142 -159
  572. package/dist/ui/field.mjs.map +1 -0
  573. package/dist/ui/input-group.d.ts +17 -0
  574. package/dist/ui/input-group.d.ts.map +1 -0
  575. package/dist/ui/input-group.js +185 -0
  576. package/dist/ui/input-group.js.map +1 -0
  577. package/{src/ui/input-group.tsx → dist/ui/input-group.mjs} +92 -106
  578. package/dist/ui/input-group.mjs.map +1 -0
  579. package/dist/ui/input-otp.d.ts +12 -0
  580. package/dist/ui/input-otp.d.ts.map +1 -0
  581. package/dist/ui/input-otp.js +105 -0
  582. package/dist/ui/input-otp.js.map +1 -0
  583. package/dist/ui/input-otp.mjs +68 -0
  584. package/dist/ui/input-otp.mjs.map +1 -0
  585. package/dist/ui/input.d.ts +4 -0
  586. package/dist/ui/input.d.ts.map +1 -0
  587. package/dist/ui/input.js +46 -0
  588. package/dist/ui/input.js.map +1 -0
  589. package/{src/ui/input.tsx → dist/ui/input.mjs} +17 -15
  590. package/dist/ui/input.mjs.map +1 -0
  591. package/dist/ui/label.d.ts +5 -0
  592. package/dist/ui/label.d.ts.map +1 -0
  593. package/dist/ui/label.js +48 -0
  594. package/dist/ui/label.js.map +1 -0
  595. package/dist/ui/label.mjs +24 -0
  596. package/dist/ui/label.mjs.map +1 -0
  597. package/dist/ui/navigation-menu.d.ts +15 -0
  598. package/dist/ui/navigation-menu.d.ts.map +1 -0
  599. package/dist/ui/navigation-menu.js +203 -0
  600. package/dist/ui/navigation-menu.js.map +1 -0
  601. package/{src/ui/navigation-menu.tsx → dist/ui/navigation-menu.mjs} +116 -112
  602. package/dist/ui/navigation-menu.mjs.map +1 -0
  603. package/dist/ui/pagination.d.ts +14 -0
  604. package/dist/ui/pagination.d.ts.map +1 -0
  605. package/dist/ui/pagination.js +149 -0
  606. package/dist/ui/pagination.js.map +1 -0
  607. package/dist/ui/pagination.mjs +123 -0
  608. package/dist/ui/pagination.mjs.map +1 -0
  609. package/dist/ui/progress.d.ts +5 -0
  610. package/dist/ui/progress.d.ts.map +1 -0
  611. package/dist/ui/progress.js +57 -0
  612. package/dist/ui/progress.js.map +1 -0
  613. package/dist/ui/progress.mjs +33 -0
  614. package/dist/ui/progress.mjs.map +1 -0
  615. package/dist/ui/radio-group.d.ts +6 -0
  616. package/dist/ui/radio-group.d.ts.map +1 -0
  617. package/dist/ui/radio-group.js +72 -0
  618. package/dist/ui/radio-group.js.map +1 -0
  619. package/dist/ui/radio-group.mjs +47 -0
  620. package/dist/ui/radio-group.mjs.map +1 -0
  621. package/dist/ui/select.d.ts +16 -0
  622. package/dist/ui/select.d.ts.map +1 -0
  623. package/dist/ui/select.js +213 -0
  624. package/dist/ui/select.js.map +1 -0
  625. package/dist/ui/select.mjs +180 -0
  626. package/dist/ui/select.mjs.map +1 -0
  627. package/dist/ui/separator.d.ts +5 -0
  628. package/dist/ui/separator.d.ts.map +1 -0
  629. package/dist/ui/separator.js +52 -0
  630. package/dist/ui/separator.js.map +1 -0
  631. package/dist/ui/separator.mjs +28 -0
  632. package/dist/ui/separator.mjs.map +1 -0
  633. package/dist/ui/sheet.d.ts +15 -0
  634. package/dist/ui/sheet.d.ts.map +1 -0
  635. package/dist/ui/sheet.js +160 -0
  636. package/dist/ui/sheet.js.map +1 -0
  637. package/dist/ui/sheet.mjs +129 -0
  638. package/dist/ui/sheet.mjs.map +1 -0
  639. package/dist/ui/sidebar.d.ts +70 -0
  640. package/dist/ui/sidebar.d.ts.map +1 -0
  641. package/dist/ui/sidebar.js +697 -0
  642. package/dist/ui/sidebar.js.map +1 -0
  643. package/dist/ui/sidebar.mjs +651 -0
  644. package/dist/ui/sidebar.mjs.map +1 -0
  645. package/dist/ui/skeleton.d.ts +3 -0
  646. package/dist/ui/skeleton.d.ts.map +1 -0
  647. package/dist/ui/skeleton.js +40 -0
  648. package/dist/ui/skeleton.js.map +1 -0
  649. package/dist/ui/skeleton.mjs +16 -0
  650. package/dist/ui/skeleton.mjs.map +1 -0
  651. package/dist/ui/table.d.ts +11 -0
  652. package/dist/ui/table.d.ts.map +1 -0
  653. package/dist/ui/table.js +147 -0
  654. package/dist/ui/table.js.map +1 -0
  655. package/dist/ui/table.mjs +116 -0
  656. package/dist/ui/table.mjs.map +1 -0
  657. package/dist/ui/tabs.d.ts +12 -0
  658. package/dist/ui/tabs.d.ts.map +1 -0
  659. package/dist/ui/tabs.js +121 -0
  660. package/dist/ui/tabs.js.map +1 -0
  661. package/{src/ui/tabs.tsx → dist/ui/tabs.mjs} +59 -56
  662. package/dist/ui/tabs.mjs.map +1 -0
  663. package/dist/ui/textarea.d.ts +4 -0
  664. package/dist/ui/textarea.d.ts.map +1 -0
  665. package/dist/ui/textarea.js +43 -0
  666. package/dist/ui/textarea.js.map +1 -0
  667. package/{src/ui/textarea.tsx → dist/ui/textarea.mjs} +16 -14
  668. package/dist/ui/textarea.mjs.map +1 -0
  669. package/dist/ui/toggle-group.d.ts +10 -0
  670. package/dist/ui/toggle-group.d.ts.map +1 -0
  671. package/dist/ui/toggle-group.js +105 -0
  672. package/dist/ui/toggle-group.js.map +1 -0
  673. package/dist/ui/toggle-group.mjs +70 -0
  674. package/dist/ui/toggle-group.mjs.map +1 -0
  675. package/dist/ui/toggle.d.ts +10 -0
  676. package/dist/ui/toggle.d.ts.map +1 -0
  677. package/dist/ui/toggle.js +70 -0
  678. package/dist/ui/toggle.js.map +1 -0
  679. package/{src/ui/toggle.tsx → dist/ui/toggle.mjs} +25 -26
  680. package/dist/ui/toggle.mjs.map +1 -0
  681. package/dist/ui/tooltip.d.ts +8 -0
  682. package/dist/ui/tooltip.d.ts.map +1 -0
  683. package/dist/ui/tooltip.js +84 -0
  684. package/dist/ui/tooltip.js.map +1 -0
  685. package/dist/ui/tooltip.mjs +57 -0
  686. package/dist/ui/tooltip.mjs.map +1 -0
  687. package/package.json +10 -2
  688. package/AGENTS.md +0 -1
  689. package/CHANGELOG.md +0 -155
  690. package/components.json +0 -33
  691. package/docs/standards/data-contracts.md +0 -81
  692. package/docs/standards/theming.md +0 -112
  693. package/scripts/fix-esm-extensions.mjs +0 -40
  694. package/src/blocks/application/app-shells/app-shell-1-sidebar.tsx +0 -198
  695. package/src/blocks/application/app-shells/app-shell-1.tsx +0 -196
  696. package/src/blocks/application/login-forms/login-page.test.tsx +0 -190
  697. package/src/blocks/application/login-forms/login-page.tsx +0 -240
  698. package/src/blocks/application/password-recovery/forgot-password-page-1-brand-mark.tsx +0 -38
  699. package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +0 -318
  700. package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -229
  701. package/src/blocks/application/verification/verify-1.tsx +0 -307
  702. package/src/blocks/application/verification/verify-confetti.tsx +0 -192
  703. package/src/blocks/application/viewport-ownership.test.tsx +0 -41
  704. package/src/blocks/e-commerce/category-filters/category-listing-filter-fields.tsx +0 -218
  705. package/src/blocks/e-commerce/category-filters/category-listing.test.tsx +0 -601
  706. package/src/blocks/e-commerce/category-filters/category-listing.tsx +0 -934
  707. package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
  708. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
  709. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
  710. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
  711. package/src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx +0 -149
  712. package/src/blocks/e-commerce/checkout-forms/checkout-country-field.tsx +0 -53
  713. package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
  714. package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
  715. package/src/blocks/e-commerce/checkout-forms/checkout-order-summary.tsx +0 -230
  716. package/src/blocks/e-commerce/checkout-forms/checkout-payment-step.tsx +0 -100
  717. package/src/blocks/e-commerce/checkout-forms/checkout-progress.tsx +0 -62
  718. package/src/blocks/e-commerce/checkout-forms/checkout-review-step.tsx +0 -59
  719. package/src/blocks/e-commerce/checkout-forms/checkout-shipping-step.tsx +0 -180
  720. package/src/blocks/e-commerce/checkout-forms/checkout.test.tsx +0 -478
  721. package/src/blocks/e-commerce/checkout-forms/checkout.tsx +0 -550
  722. package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
  723. package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
  724. package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
  725. package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
  726. package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
  727. package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
  728. package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
  729. package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
  730. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
  731. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
  732. package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
  733. package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
  734. package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
  735. package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
  736. package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.test.tsx +0 -56
  737. package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.tsx +0 -134
  738. package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.test.tsx +0 -204
  739. package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.tsx +0 -371
  740. package/src/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.tsx +0 -96
  741. package/src/blocks/e-commerce/navigation/storefront-navbar-search-bar.tsx +0 -52
  742. package/src/blocks/e-commerce/navigation/storefront-navbar.test.tsx +0 -264
  743. package/src/blocks/e-commerce/navigation/storefront-navbar.tsx +0 -604
  744. package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
  745. package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
  746. package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
  747. package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
  748. package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
  749. package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
  750. package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
  751. package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
  752. package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
  753. package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
  754. package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
  755. package/src/blocks/e-commerce/product-list/product-card.tsx +0 -447
  756. package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
  757. package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
  758. package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
  759. package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
  760. package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
  761. package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
  762. package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
  763. package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
  764. package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
  765. package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
  766. package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
  767. package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
  768. package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
  769. package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
  770. package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
  771. package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
  772. package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
  773. package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
  774. package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
  775. package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
  776. package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
  777. package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
  778. package/src/blocks/marketing/banners/banner-1.tsx +0 -188
  779. package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
  780. package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
  781. package/src/blocks/marketing/features/feature.test.tsx +0 -153
  782. package/src/blocks/marketing/features/feature.tsx +0 -195
  783. package/src/blocks/marketing/footers/footer-section-accessibility.test.tsx +0 -118
  784. package/src/blocks/marketing/footers/footer-section-actions.test.tsx +0 -131
  785. package/src/blocks/marketing/footers/footer-section-data.test.tsx +0 -127
  786. package/src/blocks/marketing/footers/footer-section-native-links.test.tsx +0 -100
  787. package/src/blocks/marketing/footers/footer-section-public-api.test.tsx +0 -11
  788. package/src/blocks/marketing/footers/footer-section.test.tsx +0 -46
  789. package/src/blocks/marketing/footers/footer-section.tsx +0 -532
  790. package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
  791. package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
  792. package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
  793. package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
  794. package/src/blocks/marketing/navbars/navbar-public-api.test.tsx +0 -57
  795. package/src/blocks/marketing/navbars/navbar.mega.test.tsx +0 -149
  796. package/src/blocks/marketing/navbars/navbar.test.tsx +0 -155
  797. package/src/blocks/marketing/navbars/navbar.tsx +0 -735
  798. package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
  799. package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
  800. package/src/blocks/marketing/testimonials/testimonial-section.test.tsx +0 -171
  801. package/src/blocks/marketing/testimonials/testimonial-section.tsx +0 -237
  802. package/src/blocks/shared/reaction-toggle.tsx +0 -145
  803. package/src/hooks/use-mobile.ts +0 -19
  804. package/src/index.ts +0 -284
  805. package/src/lib/cart.test.ts +0 -15
  806. package/src/lib/contracts-curated.test.ts +0 -225
  807. package/src/lib/contracts-server-boundary.test.ts +0 -52
  808. package/src/lib/contracts.test.ts +0 -228
  809. package/src/lib/contracts.ts +0 -857
  810. package/src/lib/money.test.ts +0 -64
  811. package/src/lib/money.ts +0 -65
  812. package/src/lib/types/menu.ts +0 -43
  813. package/src/lib/types.ts +0 -4
  814. package/src/lib/utils.ts +0 -10
  815. package/src/ui/accordion.tsx +0 -65
  816. package/src/ui/badge.tsx +0 -47
  817. package/src/ui/breadcrumb.tsx +0 -108
  818. package/src/ui/button-group.tsx +0 -83
  819. package/src/ui/button.tsx +0 -63
  820. package/src/ui/card.tsx +0 -91
  821. package/src/ui/carousel.tsx +0 -241
  822. package/src/ui/dialog.tsx +0 -158
  823. package/src/ui/drawer.tsx +0 -134
  824. package/src/ui/dropdown-menu.tsx +0 -256
  825. package/src/ui/empty.tsx +0 -103
  826. package/src/ui/input-otp.tsx +0 -76
  827. package/src/ui/label.tsx +0 -23
  828. package/src/ui/pagination.tsx +0 -127
  829. package/src/ui/progress.tsx +0 -30
  830. package/src/ui/radio-group.tsx +0 -44
  831. package/src/ui/select.tsx +0 -189
  832. package/src/ui/separator.tsx +0 -27
  833. package/src/ui/sheet.tsx +0 -142
  834. package/src/ui/sidebar.tsx +0 -726
  835. package/src/ui/skeleton.tsx +0 -13
  836. package/src/ui/table.tsx +0 -115
  837. package/src/ui/toggle-group.tsx +0 -83
  838. package/src/ui/tooltip.tsx +0 -56
  839. package/tsconfig.build.json +0 -12
  840. package/tsconfig.json +0 -20
  841. package/tsup.config.ts +0 -19
  842. package/vitest.config.ts +0 -17
@@ -0,0 +1,4008 @@
1
+ import { z } from 'zod';
2
+ import type { Money, PaymentMethod, ProductPreview } from '@thorprovider/types';
3
+ /**
4
+ * Serialization contracts for spec-driven storefronts.
5
+ *
6
+ * These Zod schemas are the *serializable subset* of what a spec may write for
7
+ * a block. The component keeps its rich React interface; the catalog/registry
8
+ * is the adapter that maps these props to real component props and binds
9
+ * callbacks (see storefronts-on-blocks design D3). `z.infer` is the typed
10
+ * boundary between spec and catalog — a prop outside the schema is a compile
11
+ * error, not a runtime surprise.
12
+ *
13
+ * Data shapes are projections of the @thorprovider/types canon so that
14
+ * @thorprovider/adapters output validates without conflict:
15
+ * - Prices are plain numbers here while the canon `Money` is a decimal string
16
+ * ({ amount: "45.00", currencyCode }). The projection happens at the
17
+ * loader boundary.
18
+ * - Blocks use `title` while the canon `ProductPreview` uses `name`. Reconcile
19
+ * via the canonical aliases below or the catalog/loader adapter.
20
+ */
21
+ export type CanonMoney = Money;
22
+ export type CanonProduct = ProductPreview;
23
+ /**
24
+ * Fallback data-URI for required image fields when the data source has no
25
+ * image. Image fields are non-optional `z.string()` in these contracts, so the
26
+ * boundary must never emit `""` (React warns about `src=""`); it must emit a
27
+ * real, renderable value. Hosts may override with their own branded fallback
28
+ * (e.g. electrostore's `CATEGORY_IMAGE_FALLBACK`), but blocks ship a neutral
29
+ * one so direct consumers are safe by default.
30
+ */
31
+ export declare const PRODUCT_IMAGE_FALLBACK: string;
32
+ /**
33
+ * Canonical `Money` (`@thorprovider/types`): a decimal string in major units
34
+ * (`"69.99"`), never cents. A missing price is represented by omitting the
35
+ * field (or `null` on a nullable field), not by an empty string.
36
+ *
37
+ * The amount stays a permissive `z.string()` on purpose: an unresolved backend
38
+ * price may arrive as the canonical sentinel `""`, and tightening the schema
39
+ * would reject the whole view instead of letting the presentation layer render
40
+ * an unavailable state. Validity is enforced at render time by
41
+ * `isAvailableMoney`/`formatMoney` (a `""`/malformed amount never becomes `$0`).
42
+ */
43
+ export declare const moneySchema: z.ZodType<Money>;
44
+ export declare const productDetailVariantSchema: z.ZodObject<{
45
+ id: z.ZodString;
46
+ title: z.ZodString;
47
+ sku: z.ZodOptional<z.ZodString>;
48
+ availableForSale: z.ZodBoolean;
49
+ selectedOptions: z.ZodArray<z.ZodObject<{
50
+ name: z.ZodString;
51
+ value: z.ZodString;
52
+ }, "strip", z.ZodTypeAny, {
53
+ name: string;
54
+ value: string;
55
+ }, {
56
+ name: string;
57
+ value: string;
58
+ }>, "many">;
59
+ /** Omit or null when the backend has no resolved price (purchase disabled). */
60
+ price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
61
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
62
+ image: z.ZodOptional<z.ZodObject<{
63
+ id: z.ZodOptional<z.ZodString>;
64
+ url: z.ZodString;
65
+ altText: z.ZodString;
66
+ width: z.ZodOptional<z.ZodNumber>;
67
+ height: z.ZodOptional<z.ZodNumber>;
68
+ }, "strip", z.ZodTypeAny, {
69
+ url: string;
70
+ altText: string;
71
+ id?: string | undefined;
72
+ height?: number | undefined;
73
+ width?: number | undefined;
74
+ }, {
75
+ url: string;
76
+ altText: string;
77
+ id?: string | undefined;
78
+ height?: number | undefined;
79
+ width?: number | undefined;
80
+ }>>;
81
+ }, "strip", z.ZodTypeAny, {
82
+ title: string;
83
+ id: string;
84
+ availableForSale: boolean;
85
+ selectedOptions: {
86
+ name: string;
87
+ value: string;
88
+ }[];
89
+ image?: {
90
+ url: string;
91
+ altText: string;
92
+ id?: string | undefined;
93
+ height?: number | undefined;
94
+ width?: number | undefined;
95
+ } | undefined;
96
+ sku?: string | undefined;
97
+ price?: Money | null | undefined;
98
+ compareAtPrice?: Money | undefined;
99
+ }, {
100
+ title: string;
101
+ id: string;
102
+ availableForSale: boolean;
103
+ selectedOptions: {
104
+ name: string;
105
+ value: string;
106
+ }[];
107
+ image?: {
108
+ url: string;
109
+ altText: string;
110
+ id?: string | undefined;
111
+ height?: number | undefined;
112
+ width?: number | undefined;
113
+ } | undefined;
114
+ sku?: string | undefined;
115
+ price?: Money | null | undefined;
116
+ compareAtPrice?: Money | undefined;
117
+ }>;
118
+ export type ProductDetailVariantSpec = z.infer<typeof productDetailVariantSchema>;
119
+ export declare const productDetailProductSchema: z.ZodObject<{
120
+ id: z.ZodString;
121
+ handle: z.ZodOptional<z.ZodString>;
122
+ title: z.ZodString;
123
+ description: z.ZodOptional<z.ZodString>;
124
+ vendor: z.ZodOptional<z.ZodString>;
125
+ options: z.ZodArray<z.ZodObject<{
126
+ id: z.ZodString;
127
+ name: z.ZodString;
128
+ values: z.ZodArray<z.ZodString, "many">;
129
+ }, "strip", z.ZodTypeAny, {
130
+ id: string;
131
+ values: string[];
132
+ name: string;
133
+ }, {
134
+ id: string;
135
+ values: string[];
136
+ name: string;
137
+ }>, "many">;
138
+ variants: z.ZodArray<z.ZodObject<{
139
+ id: z.ZodString;
140
+ title: z.ZodString;
141
+ sku: z.ZodOptional<z.ZodString>;
142
+ availableForSale: z.ZodBoolean;
143
+ selectedOptions: z.ZodArray<z.ZodObject<{
144
+ name: z.ZodString;
145
+ value: z.ZodString;
146
+ }, "strip", z.ZodTypeAny, {
147
+ name: string;
148
+ value: string;
149
+ }, {
150
+ name: string;
151
+ value: string;
152
+ }>, "many">;
153
+ /** Omit or null when the backend has no resolved price (purchase disabled). */
154
+ price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
155
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
156
+ image: z.ZodOptional<z.ZodObject<{
157
+ id: z.ZodOptional<z.ZodString>;
158
+ url: z.ZodString;
159
+ altText: z.ZodString;
160
+ width: z.ZodOptional<z.ZodNumber>;
161
+ height: z.ZodOptional<z.ZodNumber>;
162
+ }, "strip", z.ZodTypeAny, {
163
+ url: string;
164
+ altText: string;
165
+ id?: string | undefined;
166
+ height?: number | undefined;
167
+ width?: number | undefined;
168
+ }, {
169
+ url: string;
170
+ altText: string;
171
+ id?: string | undefined;
172
+ height?: number | undefined;
173
+ width?: number | undefined;
174
+ }>>;
175
+ }, "strip", z.ZodTypeAny, {
176
+ title: string;
177
+ id: string;
178
+ availableForSale: boolean;
179
+ selectedOptions: {
180
+ name: string;
181
+ value: string;
182
+ }[];
183
+ image?: {
184
+ url: string;
185
+ altText: string;
186
+ id?: string | undefined;
187
+ height?: number | undefined;
188
+ width?: number | undefined;
189
+ } | undefined;
190
+ sku?: string | undefined;
191
+ price?: Money | null | undefined;
192
+ compareAtPrice?: Money | undefined;
193
+ }, {
194
+ title: string;
195
+ id: string;
196
+ availableForSale: boolean;
197
+ selectedOptions: {
198
+ name: string;
199
+ value: string;
200
+ }[];
201
+ image?: {
202
+ url: string;
203
+ altText: string;
204
+ id?: string | undefined;
205
+ height?: number | undefined;
206
+ width?: number | undefined;
207
+ } | undefined;
208
+ sku?: string | undefined;
209
+ price?: Money | null | undefined;
210
+ compareAtPrice?: Money | undefined;
211
+ }>, "many">;
212
+ images: z.ZodArray<z.ZodObject<{
213
+ id: z.ZodOptional<z.ZodString>;
214
+ url: z.ZodString;
215
+ altText: z.ZodString;
216
+ width: z.ZodOptional<z.ZodNumber>;
217
+ height: z.ZodOptional<z.ZodNumber>;
218
+ }, "strip", z.ZodTypeAny, {
219
+ url: string;
220
+ altText: string;
221
+ id?: string | undefined;
222
+ height?: number | undefined;
223
+ width?: number | undefined;
224
+ }, {
225
+ url: string;
226
+ altText: string;
227
+ id?: string | undefined;
228
+ height?: number | undefined;
229
+ width?: number | undefined;
230
+ }>, "many">;
231
+ featuredImage: z.ZodOptional<z.ZodObject<{
232
+ id: z.ZodOptional<z.ZodString>;
233
+ url: z.ZodString;
234
+ altText: z.ZodString;
235
+ width: z.ZodOptional<z.ZodNumber>;
236
+ height: z.ZodOptional<z.ZodNumber>;
237
+ }, "strip", z.ZodTypeAny, {
238
+ url: string;
239
+ altText: string;
240
+ id?: string | undefined;
241
+ height?: number | undefined;
242
+ width?: number | undefined;
243
+ }, {
244
+ url: string;
245
+ altText: string;
246
+ id?: string | undefined;
247
+ height?: number | undefined;
248
+ width?: number | undefined;
249
+ }>>;
250
+ }, "strip", z.ZodTypeAny, {
251
+ title: string;
252
+ id: string;
253
+ variants: {
254
+ title: string;
255
+ id: string;
256
+ availableForSale: boolean;
257
+ selectedOptions: {
258
+ name: string;
259
+ value: string;
260
+ }[];
261
+ image?: {
262
+ url: string;
263
+ altText: string;
264
+ id?: string | undefined;
265
+ height?: number | undefined;
266
+ width?: number | undefined;
267
+ } | undefined;
268
+ sku?: string | undefined;
269
+ price?: Money | null | undefined;
270
+ compareAtPrice?: Money | undefined;
271
+ }[];
272
+ options: {
273
+ id: string;
274
+ values: string[];
275
+ name: string;
276
+ }[];
277
+ images: {
278
+ url: string;
279
+ altText: string;
280
+ id?: string | undefined;
281
+ height?: number | undefined;
282
+ width?: number | undefined;
283
+ }[];
284
+ handle?: string | undefined;
285
+ description?: string | undefined;
286
+ vendor?: string | undefined;
287
+ featuredImage?: {
288
+ url: string;
289
+ altText: string;
290
+ id?: string | undefined;
291
+ height?: number | undefined;
292
+ width?: number | undefined;
293
+ } | undefined;
294
+ }, {
295
+ title: string;
296
+ id: string;
297
+ variants: {
298
+ title: string;
299
+ id: string;
300
+ availableForSale: boolean;
301
+ selectedOptions: {
302
+ name: string;
303
+ value: string;
304
+ }[];
305
+ image?: {
306
+ url: string;
307
+ altText: string;
308
+ id?: string | undefined;
309
+ height?: number | undefined;
310
+ width?: number | undefined;
311
+ } | undefined;
312
+ sku?: string | undefined;
313
+ price?: Money | null | undefined;
314
+ compareAtPrice?: Money | undefined;
315
+ }[];
316
+ options: {
317
+ id: string;
318
+ values: string[];
319
+ name: string;
320
+ }[];
321
+ images: {
322
+ url: string;
323
+ altText: string;
324
+ id?: string | undefined;
325
+ height?: number | undefined;
326
+ width?: number | undefined;
327
+ }[];
328
+ handle?: string | undefined;
329
+ description?: string | undefined;
330
+ vendor?: string | undefined;
331
+ featuredImage?: {
332
+ url: string;
333
+ altText: string;
334
+ id?: string | undefined;
335
+ height?: number | undefined;
336
+ width?: number | undefined;
337
+ } | undefined;
338
+ }>;
339
+ export type ProductDetailProductSpec = z.infer<typeof productDetailProductSchema>;
340
+ /**
341
+ * Canonical ProductOverview contract. Uses the canonical product projection and adds the
342
+ * bounded `presentation` option plus the `rich` presentation's optional data. Callbacks are not
343
+ * part of the schema (they are runtime props).
344
+ */
345
+ export declare const productOverviewReviewSchema: z.ZodObject<{
346
+ id: z.ZodNumber;
347
+ author: z.ZodString;
348
+ rating: z.ZodNumber;
349
+ comment: z.ZodString;
350
+ date: z.ZodString;
351
+ helpful: z.ZodOptional<z.ZodNumber>;
352
+ }, "strip", z.ZodTypeAny, {
353
+ id: number;
354
+ date: string;
355
+ author: string;
356
+ rating: number;
357
+ comment: string;
358
+ helpful?: number | undefined;
359
+ }, {
360
+ id: number;
361
+ date: string;
362
+ author: string;
363
+ rating: number;
364
+ comment: string;
365
+ helpful?: number | undefined;
366
+ }>;
367
+ export declare const productOverviewPropsSchema: z.ZodObject<{
368
+ product: z.ZodObject<{
369
+ id: z.ZodString;
370
+ handle: z.ZodOptional<z.ZodString>;
371
+ title: z.ZodString;
372
+ description: z.ZodOptional<z.ZodString>;
373
+ vendor: z.ZodOptional<z.ZodString>;
374
+ options: z.ZodArray<z.ZodObject<{
375
+ id: z.ZodString;
376
+ name: z.ZodString;
377
+ values: z.ZodArray<z.ZodString, "many">;
378
+ }, "strip", z.ZodTypeAny, {
379
+ id: string;
380
+ values: string[];
381
+ name: string;
382
+ }, {
383
+ id: string;
384
+ values: string[];
385
+ name: string;
386
+ }>, "many">;
387
+ variants: z.ZodArray<z.ZodObject<{
388
+ id: z.ZodString;
389
+ title: z.ZodString;
390
+ sku: z.ZodOptional<z.ZodString>;
391
+ availableForSale: z.ZodBoolean;
392
+ selectedOptions: z.ZodArray<z.ZodObject<{
393
+ name: z.ZodString;
394
+ value: z.ZodString;
395
+ }, "strip", z.ZodTypeAny, {
396
+ name: string;
397
+ value: string;
398
+ }, {
399
+ name: string;
400
+ value: string;
401
+ }>, "many">;
402
+ /** Omit or null when the backend has no resolved price (purchase disabled). */
403
+ price: z.ZodOptional<z.ZodNullable<z.ZodType<Money, z.ZodTypeDef, Money>>>;
404
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
405
+ image: z.ZodOptional<z.ZodObject<{
406
+ id: z.ZodOptional<z.ZodString>;
407
+ url: z.ZodString;
408
+ altText: z.ZodString;
409
+ width: z.ZodOptional<z.ZodNumber>;
410
+ height: z.ZodOptional<z.ZodNumber>;
411
+ }, "strip", z.ZodTypeAny, {
412
+ url: string;
413
+ altText: string;
414
+ id?: string | undefined;
415
+ height?: number | undefined;
416
+ width?: number | undefined;
417
+ }, {
418
+ url: string;
419
+ altText: string;
420
+ id?: string | undefined;
421
+ height?: number | undefined;
422
+ width?: number | undefined;
423
+ }>>;
424
+ }, "strip", z.ZodTypeAny, {
425
+ title: string;
426
+ id: string;
427
+ availableForSale: boolean;
428
+ selectedOptions: {
429
+ name: string;
430
+ value: string;
431
+ }[];
432
+ image?: {
433
+ url: string;
434
+ altText: string;
435
+ id?: string | undefined;
436
+ height?: number | undefined;
437
+ width?: number | undefined;
438
+ } | undefined;
439
+ sku?: string | undefined;
440
+ price?: Money | null | undefined;
441
+ compareAtPrice?: Money | undefined;
442
+ }, {
443
+ title: string;
444
+ id: string;
445
+ availableForSale: boolean;
446
+ selectedOptions: {
447
+ name: string;
448
+ value: string;
449
+ }[];
450
+ image?: {
451
+ url: string;
452
+ altText: string;
453
+ id?: string | undefined;
454
+ height?: number | undefined;
455
+ width?: number | undefined;
456
+ } | undefined;
457
+ sku?: string | undefined;
458
+ price?: Money | null | undefined;
459
+ compareAtPrice?: Money | undefined;
460
+ }>, "many">;
461
+ images: z.ZodArray<z.ZodObject<{
462
+ id: z.ZodOptional<z.ZodString>;
463
+ url: z.ZodString;
464
+ altText: z.ZodString;
465
+ width: z.ZodOptional<z.ZodNumber>;
466
+ height: z.ZodOptional<z.ZodNumber>;
467
+ }, "strip", z.ZodTypeAny, {
468
+ url: string;
469
+ altText: string;
470
+ id?: string | undefined;
471
+ height?: number | undefined;
472
+ width?: number | undefined;
473
+ }, {
474
+ url: string;
475
+ altText: string;
476
+ id?: string | undefined;
477
+ height?: number | undefined;
478
+ width?: number | undefined;
479
+ }>, "many">;
480
+ featuredImage: z.ZodOptional<z.ZodObject<{
481
+ id: z.ZodOptional<z.ZodString>;
482
+ url: z.ZodString;
483
+ altText: z.ZodString;
484
+ width: z.ZodOptional<z.ZodNumber>;
485
+ height: z.ZodOptional<z.ZodNumber>;
486
+ }, "strip", z.ZodTypeAny, {
487
+ url: string;
488
+ altText: string;
489
+ id?: string | undefined;
490
+ height?: number | undefined;
491
+ width?: number | undefined;
492
+ }, {
493
+ url: string;
494
+ altText: string;
495
+ id?: string | undefined;
496
+ height?: number | undefined;
497
+ width?: number | undefined;
498
+ }>>;
499
+ }, "strip", z.ZodTypeAny, {
500
+ title: string;
501
+ id: string;
502
+ variants: {
503
+ title: string;
504
+ id: string;
505
+ availableForSale: boolean;
506
+ selectedOptions: {
507
+ name: string;
508
+ value: string;
509
+ }[];
510
+ image?: {
511
+ url: string;
512
+ altText: string;
513
+ id?: string | undefined;
514
+ height?: number | undefined;
515
+ width?: number | undefined;
516
+ } | undefined;
517
+ sku?: string | undefined;
518
+ price?: Money | null | undefined;
519
+ compareAtPrice?: Money | undefined;
520
+ }[];
521
+ options: {
522
+ id: string;
523
+ values: string[];
524
+ name: string;
525
+ }[];
526
+ images: {
527
+ url: string;
528
+ altText: string;
529
+ id?: string | undefined;
530
+ height?: number | undefined;
531
+ width?: number | undefined;
532
+ }[];
533
+ handle?: string | undefined;
534
+ description?: string | undefined;
535
+ vendor?: string | undefined;
536
+ featuredImage?: {
537
+ url: string;
538
+ altText: string;
539
+ id?: string | undefined;
540
+ height?: number | undefined;
541
+ width?: number | undefined;
542
+ } | undefined;
543
+ }, {
544
+ title: string;
545
+ id: string;
546
+ variants: {
547
+ title: string;
548
+ id: string;
549
+ availableForSale: boolean;
550
+ selectedOptions: {
551
+ name: string;
552
+ value: string;
553
+ }[];
554
+ image?: {
555
+ url: string;
556
+ altText: string;
557
+ id?: string | undefined;
558
+ height?: number | undefined;
559
+ width?: number | undefined;
560
+ } | undefined;
561
+ sku?: string | undefined;
562
+ price?: Money | null | undefined;
563
+ compareAtPrice?: Money | undefined;
564
+ }[];
565
+ options: {
566
+ id: string;
567
+ values: string[];
568
+ name: string;
569
+ }[];
570
+ images: {
571
+ url: string;
572
+ altText: string;
573
+ id?: string | undefined;
574
+ height?: number | undefined;
575
+ width?: number | undefined;
576
+ }[];
577
+ handle?: string | undefined;
578
+ description?: string | undefined;
579
+ vendor?: string | undefined;
580
+ featuredImage?: {
581
+ url: string;
582
+ altText: string;
583
+ id?: string | undefined;
584
+ height?: number | undefined;
585
+ width?: number | undefined;
586
+ } | undefined;
587
+ }>;
588
+ presentation: z.ZodOptional<z.ZodEnum<["standard", "gallery", "rich"]>>;
589
+ selectedVariantId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
590
+ quantity: z.ZodOptional<z.ZodNumber>;
591
+ rating: z.ZodOptional<z.ZodObject<{
592
+ value: z.ZodNumber;
593
+ count: z.ZodNumber;
594
+ }, "strip", z.ZodTypeAny, {
595
+ value: number;
596
+ count: number;
597
+ }, {
598
+ value: number;
599
+ count: number;
600
+ }>>;
601
+ deliveryEstimate: z.ZodOptional<z.ZodString>;
602
+ shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
603
+ specifications: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
604
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
605
+ reviews: z.ZodOptional<z.ZodArray<z.ZodObject<{
606
+ id: z.ZodNumber;
607
+ author: z.ZodString;
608
+ rating: z.ZodNumber;
609
+ comment: z.ZodString;
610
+ date: z.ZodString;
611
+ helpful: z.ZodOptional<z.ZodNumber>;
612
+ }, "strip", z.ZodTypeAny, {
613
+ id: number;
614
+ date: string;
615
+ author: string;
616
+ rating: number;
617
+ comment: string;
618
+ helpful?: number | undefined;
619
+ }, {
620
+ id: number;
621
+ date: string;
622
+ author: string;
623
+ rating: number;
624
+ comment: string;
625
+ helpful?: number | undefined;
626
+ }>, "many">>;
627
+ sizesLabel: z.ZodOptional<z.ZodString>;
628
+ variantLabel: z.ZodOptional<z.ZodString>;
629
+ reviewsLabel: z.ZodOptional<z.ZodString>;
630
+ addToCartLabel: z.ZodOptional<z.ZodString>;
631
+ outOfStockLabel: z.ZodOptional<z.ZodString>;
632
+ unavailablePriceLabel: z.ZodOptional<z.ZodString>;
633
+ selectVariantLabel: z.ZodOptional<z.ZodString>;
634
+ quantityLabel: z.ZodOptional<z.ZodString>;
635
+ deliveryEstimateLabel: z.ZodOptional<z.ZodString>;
636
+ shippingLabel: z.ZodOptional<z.ZodString>;
637
+ badgeLabel: z.ZodOptional<z.ZodString>;
638
+ availabilityLabel: z.ZodOptional<z.ZodString>;
639
+ skuLabel: z.ZodOptional<z.ZodString>;
640
+ overviewLabel: z.ZodOptional<z.ZodString>;
641
+ specsLabel: z.ZodOptional<z.ZodString>;
642
+ featuresLabel: z.ZodOptional<z.ZodString>;
643
+ specificationsLabel: z.ZodOptional<z.ZodString>;
644
+ galleryLabel: z.ZodOptional<z.ZodString>;
645
+ photosLabel: z.ZodOptional<z.ZodString>;
646
+ saveLabel: z.ZodOptional<z.ZodString>;
647
+ savedLabel: z.ZodOptional<z.ZodString>;
648
+ shareLabel: z.ZodOptional<z.ZodString>;
649
+ basedOnReviewsLabel: z.ZodOptional<z.ZodString>;
650
+ foundHelpfulLabel: z.ZodOptional<z.ZodString>;
651
+ ofCounterLabel: z.ZodOptional<z.ZodString>;
652
+ freeDeliveryLabel: z.ZodOptional<z.ZodString>;
653
+ }, "strip", z.ZodTypeAny, {
654
+ product: {
655
+ title: string;
656
+ id: string;
657
+ variants: {
658
+ title: string;
659
+ id: string;
660
+ availableForSale: boolean;
661
+ selectedOptions: {
662
+ name: string;
663
+ value: string;
664
+ }[];
665
+ image?: {
666
+ url: string;
667
+ altText: string;
668
+ id?: string | undefined;
669
+ height?: number | undefined;
670
+ width?: number | undefined;
671
+ } | undefined;
672
+ sku?: string | undefined;
673
+ price?: Money | null | undefined;
674
+ compareAtPrice?: Money | undefined;
675
+ }[];
676
+ options: {
677
+ id: string;
678
+ values: string[];
679
+ name: string;
680
+ }[];
681
+ images: {
682
+ url: string;
683
+ altText: string;
684
+ id?: string | undefined;
685
+ height?: number | undefined;
686
+ width?: number | undefined;
687
+ }[];
688
+ handle?: string | undefined;
689
+ description?: string | undefined;
690
+ vendor?: string | undefined;
691
+ featuredImage?: {
692
+ url: string;
693
+ altText: string;
694
+ id?: string | undefined;
695
+ height?: number | undefined;
696
+ width?: number | undefined;
697
+ } | undefined;
698
+ };
699
+ presentation?: "standard" | "gallery" | "rich" | undefined;
700
+ rating?: {
701
+ value: number;
702
+ count: number;
703
+ } | undefined;
704
+ selectedVariantId?: string | null | undefined;
705
+ quantity?: number | undefined;
706
+ deliveryEstimate?: string | undefined;
707
+ shipping?: Money | undefined;
708
+ specifications?: Record<string, string> | undefined;
709
+ features?: string[] | undefined;
710
+ reviews?: {
711
+ id: number;
712
+ date: string;
713
+ author: string;
714
+ rating: number;
715
+ comment: string;
716
+ helpful?: number | undefined;
717
+ }[] | undefined;
718
+ sizesLabel?: string | undefined;
719
+ variantLabel?: string | undefined;
720
+ reviewsLabel?: string | undefined;
721
+ addToCartLabel?: string | undefined;
722
+ outOfStockLabel?: string | undefined;
723
+ unavailablePriceLabel?: string | undefined;
724
+ selectVariantLabel?: string | undefined;
725
+ quantityLabel?: string | undefined;
726
+ deliveryEstimateLabel?: string | undefined;
727
+ shippingLabel?: string | undefined;
728
+ badgeLabel?: string | undefined;
729
+ availabilityLabel?: string | undefined;
730
+ skuLabel?: string | undefined;
731
+ overviewLabel?: string | undefined;
732
+ specsLabel?: string | undefined;
733
+ featuresLabel?: string | undefined;
734
+ specificationsLabel?: string | undefined;
735
+ galleryLabel?: string | undefined;
736
+ photosLabel?: string | undefined;
737
+ saveLabel?: string | undefined;
738
+ savedLabel?: string | undefined;
739
+ shareLabel?: string | undefined;
740
+ basedOnReviewsLabel?: string | undefined;
741
+ foundHelpfulLabel?: string | undefined;
742
+ ofCounterLabel?: string | undefined;
743
+ freeDeliveryLabel?: string | undefined;
744
+ }, {
745
+ product: {
746
+ title: string;
747
+ id: string;
748
+ variants: {
749
+ title: string;
750
+ id: string;
751
+ availableForSale: boolean;
752
+ selectedOptions: {
753
+ name: string;
754
+ value: string;
755
+ }[];
756
+ image?: {
757
+ url: string;
758
+ altText: string;
759
+ id?: string | undefined;
760
+ height?: number | undefined;
761
+ width?: number | undefined;
762
+ } | undefined;
763
+ sku?: string | undefined;
764
+ price?: Money | null | undefined;
765
+ compareAtPrice?: Money | undefined;
766
+ }[];
767
+ options: {
768
+ id: string;
769
+ values: string[];
770
+ name: string;
771
+ }[];
772
+ images: {
773
+ url: string;
774
+ altText: string;
775
+ id?: string | undefined;
776
+ height?: number | undefined;
777
+ width?: number | undefined;
778
+ }[];
779
+ handle?: string | undefined;
780
+ description?: string | undefined;
781
+ vendor?: string | undefined;
782
+ featuredImage?: {
783
+ url: string;
784
+ altText: string;
785
+ id?: string | undefined;
786
+ height?: number | undefined;
787
+ width?: number | undefined;
788
+ } | undefined;
789
+ };
790
+ presentation?: "standard" | "gallery" | "rich" | undefined;
791
+ rating?: {
792
+ value: number;
793
+ count: number;
794
+ } | undefined;
795
+ selectedVariantId?: string | null | undefined;
796
+ quantity?: number | undefined;
797
+ deliveryEstimate?: string | undefined;
798
+ shipping?: Money | undefined;
799
+ specifications?: Record<string, string> | undefined;
800
+ features?: string[] | undefined;
801
+ reviews?: {
802
+ id: number;
803
+ date: string;
804
+ author: string;
805
+ rating: number;
806
+ comment: string;
807
+ helpful?: number | undefined;
808
+ }[] | undefined;
809
+ sizesLabel?: string | undefined;
810
+ variantLabel?: string | undefined;
811
+ reviewsLabel?: string | undefined;
812
+ addToCartLabel?: string | undefined;
813
+ outOfStockLabel?: string | undefined;
814
+ unavailablePriceLabel?: string | undefined;
815
+ selectVariantLabel?: string | undefined;
816
+ quantityLabel?: string | undefined;
817
+ deliveryEstimateLabel?: string | undefined;
818
+ shippingLabel?: string | undefined;
819
+ badgeLabel?: string | undefined;
820
+ availabilityLabel?: string | undefined;
821
+ skuLabel?: string | undefined;
822
+ overviewLabel?: string | undefined;
823
+ specsLabel?: string | undefined;
824
+ featuresLabel?: string | undefined;
825
+ specificationsLabel?: string | undefined;
826
+ galleryLabel?: string | undefined;
827
+ photosLabel?: string | undefined;
828
+ saveLabel?: string | undefined;
829
+ savedLabel?: string | undefined;
830
+ shareLabel?: string | undefined;
831
+ basedOnReviewsLabel?: string | undefined;
832
+ foundHelpfulLabel?: string | undefined;
833
+ ofCounterLabel?: string | undefined;
834
+ freeDeliveryLabel?: string | undefined;
835
+ }>;
836
+ export type ProductOverviewSpecProps = z.infer<typeof productOverviewPropsSchema>;
837
+ export declare const cardProductSchema: z.ZodObject<{
838
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
839
+ title: z.ZodString;
840
+ price: z.ZodNumber;
841
+ originalPrice: z.ZodOptional<z.ZodNumber>;
842
+ image: z.ZodString;
843
+ badge: z.ZodOptional<z.ZodString>;
844
+ }, "strip", z.ZodTypeAny, {
845
+ title: string;
846
+ image: string;
847
+ id: string | number;
848
+ price: number;
849
+ badge?: string | undefined;
850
+ originalPrice?: number | undefined;
851
+ }, {
852
+ title: string;
853
+ image: string;
854
+ id: string | number;
855
+ price: number;
856
+ badge?: string | undefined;
857
+ originalPrice?: number | undefined;
858
+ }>;
859
+ export type CardProduct = z.infer<typeof cardProductSchema>;
860
+ export declare const cartItemSchema: z.ZodObject<{
861
+ id: z.ZodString;
862
+ name: z.ZodString;
863
+ price: z.ZodNumber;
864
+ quantity: z.ZodNumber;
865
+ /** Optional; absent images are omitted, never serialized as `""`. */
866
+ image: z.ZodOptional<z.ZodString>;
867
+ variant: z.ZodOptional<z.ZodString>;
868
+ /** Canonical backend per-unit price, preferred for display when present. */
869
+ unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
870
+ /** Canonical backend line total, preferred over `price * quantity`. */
871
+ lineTotal: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
872
+ }, "strip", z.ZodTypeAny, {
873
+ id: string;
874
+ name: string;
875
+ price: number;
876
+ quantity: number;
877
+ variant?: string | undefined;
878
+ image?: string | undefined;
879
+ unitPrice?: Money | undefined;
880
+ lineTotal?: Money | undefined;
881
+ }, {
882
+ id: string;
883
+ name: string;
884
+ price: number;
885
+ quantity: number;
886
+ variant?: string | undefined;
887
+ image?: string | undefined;
888
+ unitPrice?: Money | undefined;
889
+ lineTotal?: Money | undefined;
890
+ }>;
891
+ export type CartItem = z.infer<typeof cartItemSchema>;
892
+ export declare const cartTotalsSchema: z.ZodObject<{
893
+ subtotal: z.ZodType<Money, z.ZodTypeDef, Money>;
894
+ discount: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
895
+ tax: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
896
+ shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
897
+ total: z.ZodType<Money, z.ZodTypeDef, Money>;
898
+ }, "strip", z.ZodTypeAny, {
899
+ subtotal: Money;
900
+ total: Money;
901
+ shipping?: Money | undefined;
902
+ discount?: Money | undefined;
903
+ tax?: Money | undefined;
904
+ }, {
905
+ subtotal: Money;
906
+ total: Money;
907
+ shipping?: Money | undefined;
908
+ discount?: Money | undefined;
909
+ tax?: Money | undefined;
910
+ }>;
911
+ export type CartTotals = z.infer<typeof cartTotalsSchema>;
912
+ export declare const recentlyViewedItemSchema: z.ZodObject<{
913
+ id: z.ZodString;
914
+ name: z.ZodString;
915
+ price: z.ZodNumber;
916
+ image: z.ZodString;
917
+ }, "strip", z.ZodTypeAny, {
918
+ image: string;
919
+ id: string;
920
+ name: string;
921
+ price: number;
922
+ }, {
923
+ image: string;
924
+ id: string;
925
+ name: string;
926
+ price: number;
927
+ }>;
928
+ export type RecentlyViewedItem = z.infer<typeof recentlyViewedItemSchema>;
929
+ export declare const promotionSchema: z.ZodObject<{
930
+ threshold: z.ZodNumber;
931
+ reward: z.ZodString;
932
+ icon: z.ZodDefault<z.ZodString>;
933
+ }, "strip", z.ZodTypeAny, {
934
+ icon: string;
935
+ threshold: number;
936
+ reward: string;
937
+ }, {
938
+ threshold: number;
939
+ reward: string;
940
+ icon?: string | undefined;
941
+ }>;
942
+ export type Promotion = z.infer<typeof promotionSchema>;
943
+ export declare const storeCategorySchema: z.ZodType<StoreCategory>;
944
+ export type StoreCategory = {
945
+ label: string;
946
+ href: string;
947
+ children?: StoreCategory[];
948
+ emphasis?: boolean;
949
+ };
950
+ export declare const utilityLinkSchema: z.ZodObject<{
951
+ label: z.ZodString;
952
+ href: z.ZodString;
953
+ }, "strip", z.ZodTypeAny, {
954
+ label: string;
955
+ href: string;
956
+ }, {
957
+ label: string;
958
+ href: string;
959
+ }>;
960
+ export type UtilityLink = z.infer<typeof utilityLinkSchema>;
961
+ export declare const navCartItemSchema: z.ZodObject<{
962
+ id: z.ZodString;
963
+ name: z.ZodString;
964
+ variant: z.ZodOptional<z.ZodString>;
965
+ price: z.ZodNumber;
966
+ qty: z.ZodNumber;
967
+ /** Optional; absent images are omitted, never serialized as `""`. */
968
+ image: z.ZodOptional<z.ZodString>;
969
+ }, "strip", z.ZodTypeAny, {
970
+ id: string;
971
+ name: string;
972
+ price: number;
973
+ qty: number;
974
+ variant?: string | undefined;
975
+ image?: string | undefined;
976
+ }, {
977
+ id: string;
978
+ name: string;
979
+ price: number;
980
+ qty: number;
981
+ variant?: string | undefined;
982
+ image?: string | undefined;
983
+ }>;
984
+ export type NavCartItem = z.infer<typeof navCartItemSchema>;
985
+ export declare const storeUserSchema: z.ZodObject<{
986
+ name: z.ZodString;
987
+ email: z.ZodString;
988
+ avatar: z.ZodOptional<z.ZodString>;
989
+ initials: z.ZodString;
990
+ }, "strip", z.ZodTypeAny, {
991
+ email: string;
992
+ name: string;
993
+ initials: string;
994
+ avatar?: string | undefined;
995
+ }, {
996
+ email: string;
997
+ name: string;
998
+ initials: string;
999
+ avatar?: string | undefined;
1000
+ }>;
1001
+ export type StoreUser = z.infer<typeof storeUserSchema>;
1002
+ export declare const accountMenuItemSchema: z.ZodObject<{
1003
+ label: z.ZodString;
1004
+ href: z.ZodString;
1005
+ description: z.ZodOptional<z.ZodString>;
1006
+ icon: z.ZodOptional<z.ZodEnum<["orders", "wishlist", "addresses", "settings"]>>;
1007
+ }, "strip", z.ZodTypeAny, {
1008
+ label: string;
1009
+ href: string;
1010
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1011
+ description?: string | undefined;
1012
+ }, {
1013
+ label: string;
1014
+ href: string;
1015
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1016
+ description?: string | undefined;
1017
+ }>;
1018
+ export type AccountMenuItem = z.infer<typeof accountMenuItemSchema>;
1019
+ /**
1020
+ * Serialization contract for a payment method offered at checkout.
1021
+ *
1022
+ * A projection of `@thorprovider/types` `PaymentMethod` — the storefront-facing
1023
+ * shape produced by the adapters transform. Checkout blocks render the method
1024
+ * list from this data instead of hardcoding providers.
1025
+ */
1026
+ export declare const paymentMethodSchema: z.ZodType<PaymentMethod>;
1027
+ export declare const buttonPropsSchema: z.ZodObject<{
1028
+ variant: z.ZodOptional<z.ZodEnum<["default", "destructive", "outline", "secondary", "ghost", "link"]>>;
1029
+ size: z.ZodOptional<z.ZodEnum<["default", "xs", "sm", "lg", "icon", "icon-xs", "icon-sm", "icon-lg"]>>;
1030
+ disabled: z.ZodOptional<z.ZodBoolean>;
1031
+ className: z.ZodOptional<z.ZodString>;
1032
+ }, "strip", z.ZodTypeAny, {
1033
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | undefined;
1034
+ className?: string | undefined;
1035
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
1036
+ disabled?: boolean | undefined;
1037
+ }, {
1038
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | undefined;
1039
+ className?: string | undefined;
1040
+ size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | undefined;
1041
+ disabled?: boolean | undefined;
1042
+ }>;
1043
+ export type ButtonSpecProps = z.infer<typeof buttonPropsSchema>;
1044
+ export declare const storeContainer1PropsSchema: z.ZodObject<{
1045
+ size: z.ZodOptional<z.ZodEnum<["default", "narrow", "wide", "full"]>>;
1046
+ className: z.ZodOptional<z.ZodString>;
1047
+ }, "strip", z.ZodTypeAny, {
1048
+ className?: string | undefined;
1049
+ size?: "default" | "narrow" | "wide" | "full" | undefined;
1050
+ }, {
1051
+ className?: string | undefined;
1052
+ size?: "default" | "narrow" | "wide" | "full" | undefined;
1053
+ }>;
1054
+ export type StoreContainer1SpecProps = z.infer<typeof storeContainer1PropsSchema>;
1055
+ /**
1056
+ * Canonical product presentation — the serializable projection a storefront host
1057
+ * produces from a canonical `Product` for the merchandising sections. Unlike
1058
+ * `cardProductSchema` (legacy, numeric `price`), `price`/`compareAtPrice` carry
1059
+ * canonical `Money` (decimal major-unit string + currency code), so the block
1060
+ * formats in the shopper's currency and locale and renders a truthful
1061
+ * unavailable state instead of `$0`. Optional fields are omitted, never `""`.
1062
+ *
1063
+ * This contract is additive: `cardProductSchema` and its consumers are
1064
+ * unchanged, and a legacy numeric `price` still renders the legacy output.
1065
+ */
1066
+ export declare const productPresentationSchema: z.ZodObject<{
1067
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1068
+ title: z.ZodString;
1069
+ /** Omitted (never `""`) when the backend has no image. */
1070
+ image: z.ZodOptional<z.ZodString>;
1071
+ imageAlt: z.ZodOptional<z.ZodString>;
1072
+ /** Product destination; omitted when unknown. */
1073
+ href: z.ZodOptional<z.ZodString>;
1074
+ price: z.ZodType<Money, z.ZodTypeDef, Money>;
1075
+ /** Comparison ("was") price; rendered only when valid and higher than `price`. */
1076
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1077
+ /** Only from real evidence; omitted otherwise (never fabricated). */
1078
+ rating: z.ZodOptional<z.ZodNumber>;
1079
+ badge: z.ZodOptional<z.ZodString>;
1080
+ }, "strip", z.ZodTypeAny, {
1081
+ title: string;
1082
+ id: string | number;
1083
+ price: Money;
1084
+ image?: string | undefined;
1085
+ badge?: string | undefined;
1086
+ href?: string | undefined;
1087
+ compareAtPrice?: Money | undefined;
1088
+ rating?: number | undefined;
1089
+ imageAlt?: string | undefined;
1090
+ }, {
1091
+ title: string;
1092
+ id: string | number;
1093
+ price: Money;
1094
+ image?: string | undefined;
1095
+ badge?: string | undefined;
1096
+ href?: string | undefined;
1097
+ compareAtPrice?: Money | undefined;
1098
+ rating?: number | undefined;
1099
+ imageAlt?: string | undefined;
1100
+ }>;
1101
+ export type ProductPresentation = z.infer<typeof productPresentationSchema>;
1102
+ /**
1103
+ * Canonical product card contract (item cell of a product listing). The cell
1104
+ * consumes one canonical `ProductPresentation` projection only — the legacy
1105
+ * numeric-price card shape is not accepted. `presentation` is the bounded
1106
+ * structure switch (`classic`/`minimal`/`rich`) and `wishlisted` is the
1107
+ * host-resolved membership state; callbacks and label strings are runtime
1108
+ * props and are excluded here. Collection concerns (heading, item cap, loading
1109
+ * and empty states) belong to `ProductGrid`.
1110
+ */
1111
+ export declare const productCardPropsSchema: z.ZodObject<{
1112
+ item: z.ZodObject<{
1113
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1114
+ title: z.ZodString;
1115
+ /** Omitted (never `""`) when the backend has no image. */
1116
+ image: z.ZodOptional<z.ZodString>;
1117
+ imageAlt: z.ZodOptional<z.ZodString>;
1118
+ /** Product destination; omitted when unknown. */
1119
+ href: z.ZodOptional<z.ZodString>;
1120
+ price: z.ZodType<Money, z.ZodTypeDef, Money>;
1121
+ /** Comparison ("was") price; rendered only when valid and higher than `price`. */
1122
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1123
+ /** Only from real evidence; omitted otherwise (never fabricated). */
1124
+ rating: z.ZodOptional<z.ZodNumber>;
1125
+ badge: z.ZodOptional<z.ZodString>;
1126
+ }, "strip", z.ZodTypeAny, {
1127
+ title: string;
1128
+ id: string | number;
1129
+ price: Money;
1130
+ image?: string | undefined;
1131
+ badge?: string | undefined;
1132
+ href?: string | undefined;
1133
+ compareAtPrice?: Money | undefined;
1134
+ rating?: number | undefined;
1135
+ imageAlt?: string | undefined;
1136
+ }, {
1137
+ title: string;
1138
+ id: string | number;
1139
+ price: Money;
1140
+ image?: string | undefined;
1141
+ badge?: string | undefined;
1142
+ href?: string | undefined;
1143
+ compareAtPrice?: Money | undefined;
1144
+ rating?: number | undefined;
1145
+ imageAlt?: string | undefined;
1146
+ }>;
1147
+ presentation: z.ZodOptional<z.ZodEnum<["classic", "minimal", "rich"]>>;
1148
+ wishlisted: z.ZodOptional<z.ZodBoolean>;
1149
+ }, "strip", z.ZodTypeAny, {
1150
+ item: {
1151
+ title: string;
1152
+ id: string | number;
1153
+ price: Money;
1154
+ image?: string | undefined;
1155
+ badge?: string | undefined;
1156
+ href?: string | undefined;
1157
+ compareAtPrice?: Money | undefined;
1158
+ rating?: number | undefined;
1159
+ imageAlt?: string | undefined;
1160
+ };
1161
+ presentation?: "rich" | "classic" | "minimal" | undefined;
1162
+ wishlisted?: boolean | undefined;
1163
+ }, {
1164
+ item: {
1165
+ title: string;
1166
+ id: string | number;
1167
+ price: Money;
1168
+ image?: string | undefined;
1169
+ badge?: string | undefined;
1170
+ href?: string | undefined;
1171
+ compareAtPrice?: Money | undefined;
1172
+ rating?: number | undefined;
1173
+ imageAlt?: string | undefined;
1174
+ };
1175
+ presentation?: "rich" | "classic" | "minimal" | undefined;
1176
+ wishlisted?: boolean | undefined;
1177
+ }>;
1178
+ export type ProductCardSpecProps = z.infer<typeof productCardPropsSchema>;
1179
+ /**
1180
+ * Canonical product grid contract (listing). Consumes a collection of
1181
+ * canonical `ProductPresentation` items and owns the listing's heading, item
1182
+ * cap, wishlist membership, and loading/empty/ready states. `wishlistedIds` is
1183
+ * resolved per cell before rendering, so the cell receives only its own
1184
+ * boolean. Callbacks and label strings are runtime props and are excluded
1185
+ * here. Error state belongs to the host.
1186
+ */
1187
+ export declare const productGridPropsSchema: z.ZodObject<{
1188
+ items: z.ZodArray<z.ZodObject<{
1189
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1190
+ title: z.ZodString;
1191
+ /** Omitted (never `""`) when the backend has no image. */
1192
+ image: z.ZodOptional<z.ZodString>;
1193
+ imageAlt: z.ZodOptional<z.ZodString>;
1194
+ /** Product destination; omitted when unknown. */
1195
+ href: z.ZodOptional<z.ZodString>;
1196
+ price: z.ZodType<Money, z.ZodTypeDef, Money>;
1197
+ /** Comparison ("was") price; rendered only when valid and higher than `price`. */
1198
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1199
+ /** Only from real evidence; omitted otherwise (never fabricated). */
1200
+ rating: z.ZodOptional<z.ZodNumber>;
1201
+ badge: z.ZodOptional<z.ZodString>;
1202
+ }, "strip", z.ZodTypeAny, {
1203
+ title: string;
1204
+ id: string | number;
1205
+ price: Money;
1206
+ image?: string | undefined;
1207
+ badge?: string | undefined;
1208
+ href?: string | undefined;
1209
+ compareAtPrice?: Money | undefined;
1210
+ rating?: number | undefined;
1211
+ imageAlt?: string | undefined;
1212
+ }, {
1213
+ title: string;
1214
+ id: string | number;
1215
+ price: Money;
1216
+ image?: string | undefined;
1217
+ badge?: string | undefined;
1218
+ href?: string | undefined;
1219
+ compareAtPrice?: Money | undefined;
1220
+ rating?: number | undefined;
1221
+ imageAlt?: string | undefined;
1222
+ }>, "many">;
1223
+ presentation: z.ZodOptional<z.ZodEnum<["classic", "minimal", "rich"]>>;
1224
+ heading: z.ZodOptional<z.ZodString>;
1225
+ maxItems: z.ZodOptional<z.ZodNumber>;
1226
+ wishlistedIds: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">>>;
1227
+ loading: z.ZodOptional<z.ZodBoolean>;
1228
+ skeletonCount: z.ZodOptional<z.ZodNumber>;
1229
+ emptyLabel: z.ZodOptional<z.ZodString>;
1230
+ }, "strip", z.ZodTypeAny, {
1231
+ items: {
1232
+ title: string;
1233
+ id: string | number;
1234
+ price: Money;
1235
+ image?: string | undefined;
1236
+ badge?: string | undefined;
1237
+ href?: string | undefined;
1238
+ compareAtPrice?: Money | undefined;
1239
+ rating?: number | undefined;
1240
+ imageAlt?: string | undefined;
1241
+ }[];
1242
+ heading?: string | undefined;
1243
+ presentation?: "rich" | "classic" | "minimal" | undefined;
1244
+ loading?: boolean | undefined;
1245
+ maxItems?: number | undefined;
1246
+ wishlistedIds?: readonly (string | number)[] | undefined;
1247
+ skeletonCount?: number | undefined;
1248
+ emptyLabel?: string | undefined;
1249
+ }, {
1250
+ items: {
1251
+ title: string;
1252
+ id: string | number;
1253
+ price: Money;
1254
+ image?: string | undefined;
1255
+ badge?: string | undefined;
1256
+ href?: string | undefined;
1257
+ compareAtPrice?: Money | undefined;
1258
+ rating?: number | undefined;
1259
+ imageAlt?: string | undefined;
1260
+ }[];
1261
+ heading?: string | undefined;
1262
+ presentation?: "rich" | "classic" | "minimal" | undefined;
1263
+ loading?: boolean | undefined;
1264
+ maxItems?: number | undefined;
1265
+ wishlistedIds?: readonly (string | number)[] | undefined;
1266
+ skeletonCount?: number | undefined;
1267
+ emptyLabel?: string | undefined;
1268
+ }>;
1269
+ export type ProductGridSpecProps = z.infer<typeof productGridPropsSchema>;
1270
+ /**
1271
+ * Serializable contract for the combined grid-and-carousel product
1272
+ * presentation (`ProductShowcase1`). The grid pages are fixed-size, navigated
1273
+ * manually (prev/next) with a visible current-page indication; there is no
1274
+ * autoplay and no infinite loop. React-only callbacks are excluded.
1275
+ */
1276
+ export declare const productShowcase1PropsSchema: z.ZodObject<{
1277
+ products: z.ZodArray<z.ZodObject<{
1278
+ id: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
1279
+ title: z.ZodString;
1280
+ /** Omitted (never `""`) when the backend has no image. */
1281
+ image: z.ZodOptional<z.ZodString>;
1282
+ imageAlt: z.ZodOptional<z.ZodString>;
1283
+ /** Product destination; omitted when unknown. */
1284
+ href: z.ZodOptional<z.ZodString>;
1285
+ price: z.ZodType<Money, z.ZodTypeDef, Money>;
1286
+ /** Comparison ("was") price; rendered only when valid and higher than `price`. */
1287
+ compareAtPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1288
+ /** Only from real evidence; omitted otherwise (never fabricated). */
1289
+ rating: z.ZodOptional<z.ZodNumber>;
1290
+ badge: z.ZodOptional<z.ZodString>;
1291
+ }, "strip", z.ZodTypeAny, {
1292
+ title: string;
1293
+ id: string | number;
1294
+ price: Money;
1295
+ image?: string | undefined;
1296
+ badge?: string | undefined;
1297
+ href?: string | undefined;
1298
+ compareAtPrice?: Money | undefined;
1299
+ rating?: number | undefined;
1300
+ imageAlt?: string | undefined;
1301
+ }, {
1302
+ title: string;
1303
+ id: string | number;
1304
+ price: Money;
1305
+ image?: string | undefined;
1306
+ badge?: string | undefined;
1307
+ href?: string | undefined;
1308
+ compareAtPrice?: Money | undefined;
1309
+ rating?: number | undefined;
1310
+ imageAlt?: string | undefined;
1311
+ }>, "many">;
1312
+ heading: z.ZodOptional<z.ZodString>;
1313
+ description: z.ZodOptional<z.ZodString>;
1314
+ pageSize: z.ZodOptional<z.ZodNumber>;
1315
+ prevLabel: z.ZodOptional<z.ZodString>;
1316
+ nextLabel: z.ZodOptional<z.ZodString>;
1317
+ pageLabel: z.ZodOptional<z.ZodString>;
1318
+ unavailablePriceLabel: z.ZodOptional<z.ZodString>;
1319
+ emptyLabel: z.ZodOptional<z.ZodString>;
1320
+ addToCartLabel: z.ZodOptional<z.ZodString>;
1321
+ }, "strip", z.ZodTypeAny, {
1322
+ products: {
1323
+ title: string;
1324
+ id: string | number;
1325
+ price: Money;
1326
+ image?: string | undefined;
1327
+ badge?: string | undefined;
1328
+ href?: string | undefined;
1329
+ compareAtPrice?: Money | undefined;
1330
+ rating?: number | undefined;
1331
+ imageAlt?: string | undefined;
1332
+ }[];
1333
+ heading?: string | undefined;
1334
+ description?: string | undefined;
1335
+ addToCartLabel?: string | undefined;
1336
+ unavailablePriceLabel?: string | undefined;
1337
+ emptyLabel?: string | undefined;
1338
+ pageSize?: number | undefined;
1339
+ prevLabel?: string | undefined;
1340
+ nextLabel?: string | undefined;
1341
+ pageLabel?: string | undefined;
1342
+ }, {
1343
+ products: {
1344
+ title: string;
1345
+ id: string | number;
1346
+ price: Money;
1347
+ image?: string | undefined;
1348
+ badge?: string | undefined;
1349
+ href?: string | undefined;
1350
+ compareAtPrice?: Money | undefined;
1351
+ rating?: number | undefined;
1352
+ imageAlt?: string | undefined;
1353
+ }[];
1354
+ heading?: string | undefined;
1355
+ description?: string | undefined;
1356
+ addToCartLabel?: string | undefined;
1357
+ unavailablePriceLabel?: string | undefined;
1358
+ emptyLabel?: string | undefined;
1359
+ pageSize?: number | undefined;
1360
+ prevLabel?: string | undefined;
1361
+ nextLabel?: string | undefined;
1362
+ pageLabel?: string | undefined;
1363
+ }>;
1364
+ export type ProductShowcase1SpecProps = z.infer<typeof productShowcase1PropsSchema>;
1365
+ /**
1366
+ * Canonical shopping cart contract (consolidated shopping-cart family). Lines
1367
+ * are keyed by the backend cart line-item id and carry canonical `Money`
1368
+ * amounts only — the legacy numeric-price shape is not accepted: a line always
1369
+ * carries the backend-authoritative `lineTotal`, and an optional `unitPrice` is
1370
+ * carried verbatim (never used for a local `price * quantity` computation).
1371
+ * Suggestions fold the numbered carts' recommendations: optional image (omitted
1372
+ * when absent) and optional canonical `Money` price. `presentation` is the
1373
+ * bounded structure switch (`compact`/`page`); callbacks and interaction state
1374
+ * are runtime props and are excluded here.
1375
+ */
1376
+ export declare const shoppingCartItemSchema: z.ZodObject<{
1377
+ id: z.ZodString;
1378
+ name: z.ZodString;
1379
+ quantity: z.ZodNumber;
1380
+ /** Optional; absent images are omitted, never serialized as `""`. */
1381
+ image: z.ZodOptional<z.ZodString>;
1382
+ variant: z.ZodOptional<z.ZodString>;
1383
+ /** Canonical backend line total; a malformed amount renders as unavailable. */
1384
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
1385
+ /** Canonical backend unit price; carried verbatim, never used locally. */
1386
+ unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1387
+ }, "strip", z.ZodTypeAny, {
1388
+ id: string;
1389
+ name: string;
1390
+ quantity: number;
1391
+ lineTotal: Money;
1392
+ variant?: string | undefined;
1393
+ image?: string | undefined;
1394
+ unitPrice?: Money | undefined;
1395
+ }, {
1396
+ id: string;
1397
+ name: string;
1398
+ quantity: number;
1399
+ lineTotal: Money;
1400
+ variant?: string | undefined;
1401
+ image?: string | undefined;
1402
+ unitPrice?: Money | undefined;
1403
+ }>;
1404
+ export type ShoppingCartItem = z.infer<typeof shoppingCartItemSchema>;
1405
+ export declare const shoppingCartSuggestionSchema: z.ZodObject<{
1406
+ id: z.ZodString;
1407
+ name: z.ZodString;
1408
+ /** Optional; absent images are omitted, never serialized as `""`. */
1409
+ image: z.ZodOptional<z.ZodString>;
1410
+ unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1411
+ }, "strip", z.ZodTypeAny, {
1412
+ id: string;
1413
+ name: string;
1414
+ image?: string | undefined;
1415
+ unitPrice?: Money | undefined;
1416
+ }, {
1417
+ id: string;
1418
+ name: string;
1419
+ image?: string | undefined;
1420
+ unitPrice?: Money | undefined;
1421
+ }>;
1422
+ export type ShoppingCartSuggestion = z.infer<typeof shoppingCartSuggestionSchema>;
1423
+ export declare const shoppingCartPropsSchema: z.ZodObject<{
1424
+ items: z.ZodArray<z.ZodObject<{
1425
+ id: z.ZodString;
1426
+ name: z.ZodString;
1427
+ quantity: z.ZodNumber;
1428
+ /** Optional; absent images are omitted, never serialized as `""`. */
1429
+ image: z.ZodOptional<z.ZodString>;
1430
+ variant: z.ZodOptional<z.ZodString>;
1431
+ /** Canonical backend line total; a malformed amount renders as unavailable. */
1432
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
1433
+ /** Canonical backend unit price; carried verbatim, never used locally. */
1434
+ unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1435
+ }, "strip", z.ZodTypeAny, {
1436
+ id: string;
1437
+ name: string;
1438
+ quantity: number;
1439
+ lineTotal: Money;
1440
+ variant?: string | undefined;
1441
+ image?: string | undefined;
1442
+ unitPrice?: Money | undefined;
1443
+ }, {
1444
+ id: string;
1445
+ name: string;
1446
+ quantity: number;
1447
+ lineTotal: Money;
1448
+ variant?: string | undefined;
1449
+ image?: string | undefined;
1450
+ unitPrice?: Money | undefined;
1451
+ }>, "many">;
1452
+ promotions: z.ZodDefault<z.ZodArray<z.ZodObject<{
1453
+ threshold: z.ZodNumber;
1454
+ reward: z.ZodString;
1455
+ icon: z.ZodDefault<z.ZodString>;
1456
+ }, "strip", z.ZodTypeAny, {
1457
+ icon: string;
1458
+ threshold: number;
1459
+ reward: string;
1460
+ }, {
1461
+ threshold: number;
1462
+ reward: string;
1463
+ icon?: string | undefined;
1464
+ }>, "many">>;
1465
+ recentlyViewed: z.ZodOptional<z.ZodArray<z.ZodObject<{
1466
+ id: z.ZodString;
1467
+ name: z.ZodString;
1468
+ /** Optional; absent images are omitted, never serialized as `""`. */
1469
+ image: z.ZodOptional<z.ZodString>;
1470
+ unitPrice: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1471
+ }, "strip", z.ZodTypeAny, {
1472
+ id: string;
1473
+ name: string;
1474
+ image?: string | undefined;
1475
+ unitPrice?: Money | undefined;
1476
+ }, {
1477
+ id: string;
1478
+ name: string;
1479
+ image?: string | undefined;
1480
+ unitPrice?: Money | undefined;
1481
+ }>, "many">>;
1482
+ presentation: z.ZodOptional<z.ZodEnum<["compact", "page"]>>;
1483
+ /** Backend-authoritative totals; rendered verbatim, never computed locally. */
1484
+ totals: z.ZodOptional<z.ZodObject<{
1485
+ subtotal: z.ZodType<Money, z.ZodTypeDef, Money>;
1486
+ discount: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1487
+ tax: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1488
+ shipping: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1489
+ total: z.ZodType<Money, z.ZodTypeDef, Money>;
1490
+ }, "strip", z.ZodTypeAny, {
1491
+ subtotal: Money;
1492
+ total: Money;
1493
+ shipping?: Money | undefined;
1494
+ discount?: Money | undefined;
1495
+ tax?: Money | undefined;
1496
+ }, {
1497
+ subtotal: Money;
1498
+ total: Money;
1499
+ shipping?: Money | undefined;
1500
+ discount?: Money | undefined;
1501
+ tax?: Money | undefined;
1502
+ }>>;
1503
+ totalsState: z.ZodOptional<z.ZodEnum<["idle", "pending", "error"]>>;
1504
+ totalsErrorLabel: z.ZodOptional<z.ZodString>;
1505
+ totalsUnavailableLabel: z.ZodOptional<z.ZodString>;
1506
+ amountUnavailableLabel: z.ZodOptional<z.ZodString>;
1507
+ retryLabel: z.ZodOptional<z.ZodString>;
1508
+ titleLabel: z.ZodOptional<z.ZodString>;
1509
+ subtotalLabel: z.ZodOptional<z.ZodString>;
1510
+ discountLabel: z.ZodOptional<z.ZodString>;
1511
+ taxLabel: z.ZodOptional<z.ZodString>;
1512
+ shippingLabel: z.ZodOptional<z.ZodString>;
1513
+ shippingFreeLabel: z.ZodOptional<z.ZodString>;
1514
+ totalLabel: z.ZodOptional<z.ZodString>;
1515
+ totalsPendingLabel: z.ZodOptional<z.ZodString>;
1516
+ awayFromLabel: z.ZodOptional<z.ZodString>;
1517
+ activatedLabel: z.ZodOptional<z.ZodString>;
1518
+ itemsLabel: z.ZodOptional<z.ZodString>;
1519
+ expressCheckoutLabel: z.ZodOptional<z.ZodString>;
1520
+ expressLabel: z.ZodOptional<z.ZodString>;
1521
+ standardLabel: z.ZodOptional<z.ZodString>;
1522
+ estimatedDeliveryLabel: z.ZodOptional<z.ZodString>;
1523
+ secureCheckoutLabel: z.ZodOptional<z.ZodString>;
1524
+ recentlyViewedLabel: z.ZodOptional<z.ZodString>;
1525
+ promoPromptLabel: z.ZodOptional<z.ZodString>;
1526
+ promoPlaceholderLabel: z.ZodOptional<z.ZodString>;
1527
+ promoApplyLabel: z.ZodOptional<z.ZodString>;
1528
+ collapseLabel: z.ZodOptional<z.ZodString>;
1529
+ expandLabel: z.ZodOptional<z.ZodString>;
1530
+ checkoutLabel: z.ZodOptional<z.ZodString>;
1531
+ quickCheckoutLabel: z.ZodOptional<z.ZodString>;
1532
+ checkoutNowLabel: z.ZodOptional<z.ZodString>;
1533
+ emptyLabel: z.ZodOptional<z.ZodString>;
1534
+ removeLabel: z.ZodOptional<z.ZodString>;
1535
+ decreaseLabel: z.ZodOptional<z.ZodString>;
1536
+ increaseLabel: z.ZodOptional<z.ZodString>;
1537
+ }, "strip", z.ZodTypeAny, {
1538
+ items: {
1539
+ id: string;
1540
+ name: string;
1541
+ quantity: number;
1542
+ lineTotal: Money;
1543
+ variant?: string | undefined;
1544
+ image?: string | undefined;
1545
+ unitPrice?: Money | undefined;
1546
+ }[];
1547
+ promotions: {
1548
+ icon: string;
1549
+ threshold: number;
1550
+ reward: string;
1551
+ }[];
1552
+ presentation?: "page" | "compact" | undefined;
1553
+ retryLabel?: string | undefined;
1554
+ shippingLabel?: string | undefined;
1555
+ emptyLabel?: string | undefined;
1556
+ recentlyViewed?: {
1557
+ id: string;
1558
+ name: string;
1559
+ image?: string | undefined;
1560
+ unitPrice?: Money | undefined;
1561
+ }[] | undefined;
1562
+ totals?: {
1563
+ subtotal: Money;
1564
+ total: Money;
1565
+ shipping?: Money | undefined;
1566
+ discount?: Money | undefined;
1567
+ tax?: Money | undefined;
1568
+ } | undefined;
1569
+ totalsState?: "error" | "pending" | "idle" | undefined;
1570
+ totalsErrorLabel?: string | undefined;
1571
+ totalsUnavailableLabel?: string | undefined;
1572
+ amountUnavailableLabel?: string | undefined;
1573
+ titleLabel?: string | undefined;
1574
+ subtotalLabel?: string | undefined;
1575
+ discountLabel?: string | undefined;
1576
+ taxLabel?: string | undefined;
1577
+ shippingFreeLabel?: string | undefined;
1578
+ totalLabel?: string | undefined;
1579
+ totalsPendingLabel?: string | undefined;
1580
+ awayFromLabel?: string | undefined;
1581
+ activatedLabel?: string | undefined;
1582
+ itemsLabel?: string | undefined;
1583
+ expressCheckoutLabel?: string | undefined;
1584
+ expressLabel?: string | undefined;
1585
+ standardLabel?: string | undefined;
1586
+ estimatedDeliveryLabel?: string | undefined;
1587
+ secureCheckoutLabel?: string | undefined;
1588
+ recentlyViewedLabel?: string | undefined;
1589
+ promoPromptLabel?: string | undefined;
1590
+ promoPlaceholderLabel?: string | undefined;
1591
+ promoApplyLabel?: string | undefined;
1592
+ collapseLabel?: string | undefined;
1593
+ expandLabel?: string | undefined;
1594
+ checkoutLabel?: string | undefined;
1595
+ quickCheckoutLabel?: string | undefined;
1596
+ checkoutNowLabel?: string | undefined;
1597
+ removeLabel?: string | undefined;
1598
+ decreaseLabel?: string | undefined;
1599
+ increaseLabel?: string | undefined;
1600
+ }, {
1601
+ items: {
1602
+ id: string;
1603
+ name: string;
1604
+ quantity: number;
1605
+ lineTotal: Money;
1606
+ variant?: string | undefined;
1607
+ image?: string | undefined;
1608
+ unitPrice?: Money | undefined;
1609
+ }[];
1610
+ presentation?: "page" | "compact" | undefined;
1611
+ retryLabel?: string | undefined;
1612
+ shippingLabel?: string | undefined;
1613
+ emptyLabel?: string | undefined;
1614
+ promotions?: {
1615
+ threshold: number;
1616
+ reward: string;
1617
+ icon?: string | undefined;
1618
+ }[] | undefined;
1619
+ recentlyViewed?: {
1620
+ id: string;
1621
+ name: string;
1622
+ image?: string | undefined;
1623
+ unitPrice?: Money | undefined;
1624
+ }[] | undefined;
1625
+ totals?: {
1626
+ subtotal: Money;
1627
+ total: Money;
1628
+ shipping?: Money | undefined;
1629
+ discount?: Money | undefined;
1630
+ tax?: Money | undefined;
1631
+ } | undefined;
1632
+ totalsState?: "error" | "pending" | "idle" | undefined;
1633
+ totalsErrorLabel?: string | undefined;
1634
+ totalsUnavailableLabel?: string | undefined;
1635
+ amountUnavailableLabel?: string | undefined;
1636
+ titleLabel?: string | undefined;
1637
+ subtotalLabel?: string | undefined;
1638
+ discountLabel?: string | undefined;
1639
+ taxLabel?: string | undefined;
1640
+ shippingFreeLabel?: string | undefined;
1641
+ totalLabel?: string | undefined;
1642
+ totalsPendingLabel?: string | undefined;
1643
+ awayFromLabel?: string | undefined;
1644
+ activatedLabel?: string | undefined;
1645
+ itemsLabel?: string | undefined;
1646
+ expressCheckoutLabel?: string | undefined;
1647
+ expressLabel?: string | undefined;
1648
+ standardLabel?: string | undefined;
1649
+ estimatedDeliveryLabel?: string | undefined;
1650
+ secureCheckoutLabel?: string | undefined;
1651
+ recentlyViewedLabel?: string | undefined;
1652
+ promoPromptLabel?: string | undefined;
1653
+ promoPlaceholderLabel?: string | undefined;
1654
+ promoApplyLabel?: string | undefined;
1655
+ collapseLabel?: string | undefined;
1656
+ expandLabel?: string | undefined;
1657
+ checkoutLabel?: string | undefined;
1658
+ quickCheckoutLabel?: string | undefined;
1659
+ checkoutNowLabel?: string | undefined;
1660
+ removeLabel?: string | undefined;
1661
+ decreaseLabel?: string | undefined;
1662
+ increaseLabel?: string | undefined;
1663
+ }>;
1664
+ export type ShoppingCartSpecProps = z.infer<typeof shoppingCartPropsSchema>;
1665
+ /**
1666
+ * Optional brand seams shared by the existing blocks. These mirror the
1667
+ * components' optional props as a serializable subset (no React): an accent
1668
+ * marks a trailing segment of the wordmark/brand name, and an editorial image
1669
+ * is a native `<img>` source. Omitting each keeps the block's current output.
1670
+ */
1671
+ export declare const logoAccentSchema: z.ZodObject<{
1672
+ text: z.ZodString;
1673
+ className: z.ZodOptional<z.ZodString>;
1674
+ }, "strip", z.ZodTypeAny, {
1675
+ text: string;
1676
+ className?: string | undefined;
1677
+ }, {
1678
+ text: string;
1679
+ className?: string | undefined;
1680
+ }>;
1681
+ export type LogoAccent = z.infer<typeof logoAccentSchema>;
1682
+ export declare const brandAccentSchema: z.ZodObject<{
1683
+ text: z.ZodString;
1684
+ className: z.ZodOptional<z.ZodString>;
1685
+ }, "strip", z.ZodTypeAny, {
1686
+ text: string;
1687
+ className?: string | undefined;
1688
+ }, {
1689
+ text: string;
1690
+ className?: string | undefined;
1691
+ }>;
1692
+ export type BrandAccent = z.infer<typeof brandAccentSchema>;
1693
+ export declare const heroImageSchema: z.ZodObject<{
1694
+ src: z.ZodString;
1695
+ alt: z.ZodString;
1696
+ }, "strip", z.ZodTypeAny, {
1697
+ alt: string;
1698
+ src: string;
1699
+ }, {
1700
+ alt: string;
1701
+ src: string;
1702
+ }>;
1703
+ export type HeroImage = z.infer<typeof heroImageSchema>;
1704
+ /**
1705
+ * Serializable contract for the canonical commerce storefront shell
1706
+ * (`StorefrontNavbar`). Identity, cart, and search state stay host-owned: the
1707
+ * schema carries content and display state only, never cart arithmetic.
1708
+ */
1709
+ export declare const storefrontNavbarPropsSchema: z.ZodObject<{
1710
+ storeCategories: z.ZodArray<z.ZodType<StoreCategory, z.ZodTypeDef, StoreCategory>, "many">;
1711
+ shippingNote: z.ZodOptional<z.ZodString>;
1712
+ utilityLinks: z.ZodArray<z.ZodObject<{
1713
+ label: z.ZodString;
1714
+ href: z.ZodString;
1715
+ }, "strip", z.ZodTypeAny, {
1716
+ label: string;
1717
+ href: string;
1718
+ }, {
1719
+ label: string;
1720
+ href: string;
1721
+ }>, "many">;
1722
+ logoText: z.ZodString;
1723
+ logoHref: z.ZodOptional<z.ZodString>;
1724
+ /** Optional accent for a trailing segment of `logoText`; omitted → unchanged. */
1725
+ logoAccent: z.ZodOptional<z.ZodObject<{
1726
+ text: z.ZodString;
1727
+ className: z.ZodOptional<z.ZodString>;
1728
+ }, "strip", z.ZodTypeAny, {
1729
+ text: string;
1730
+ className?: string | undefined;
1731
+ }, {
1732
+ text: string;
1733
+ className?: string | undefined;
1734
+ }>>;
1735
+ /**
1736
+ * Consumer-supplied classes merged onto the block's outer surface as the
1737
+ * final argument (e.g. a semantic surface token). Omitted → unchanged.
1738
+ */
1739
+ className: z.ZodOptional<z.ZodString>;
1740
+ accountHref: z.ZodOptional<z.ZodString>;
1741
+ searchQuery: z.ZodOptional<z.ZodString>;
1742
+ items: z.ZodOptional<z.ZodArray<z.ZodObject<{
1743
+ id: z.ZodString;
1744
+ name: z.ZodString;
1745
+ variant: z.ZodOptional<z.ZodString>;
1746
+ price: z.ZodNumber;
1747
+ qty: z.ZodNumber;
1748
+ /** Optional; absent images are omitted, never serialized as `""`. */
1749
+ image: z.ZodOptional<z.ZodString>;
1750
+ }, "strip", z.ZodTypeAny, {
1751
+ id: string;
1752
+ name: string;
1753
+ price: number;
1754
+ qty: number;
1755
+ variant?: string | undefined;
1756
+ image?: string | undefined;
1757
+ }, {
1758
+ id: string;
1759
+ name: string;
1760
+ price: number;
1761
+ qty: number;
1762
+ variant?: string | undefined;
1763
+ image?: string | undefined;
1764
+ }>, "many">>;
1765
+ /** Authoritative backend subtotal for the mini-cart. */
1766
+ subtotal: z.ZodOptional<z.ZodType<Money, z.ZodTypeDef, Money>>;
1767
+ subtotalUnavailableLabel: z.ZodOptional<z.ZodString>;
1768
+ user: z.ZodOptional<z.ZodObject<{
1769
+ name: z.ZodString;
1770
+ email: z.ZodString;
1771
+ avatar: z.ZodOptional<z.ZodString>;
1772
+ initials: z.ZodString;
1773
+ }, "strip", z.ZodTypeAny, {
1774
+ email: string;
1775
+ name: string;
1776
+ initials: string;
1777
+ avatar?: string | undefined;
1778
+ }, {
1779
+ email: string;
1780
+ name: string;
1781
+ initials: string;
1782
+ avatar?: string | undefined;
1783
+ }>>;
1784
+ accountMenuItems: z.ZodOptional<z.ZodArray<z.ZodObject<{
1785
+ label: z.ZodString;
1786
+ href: z.ZodString;
1787
+ description: z.ZodOptional<z.ZodString>;
1788
+ icon: z.ZodOptional<z.ZodEnum<["orders", "wishlist", "addresses", "settings"]>>;
1789
+ }, "strip", z.ZodTypeAny, {
1790
+ label: string;
1791
+ href: string;
1792
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1793
+ description?: string | undefined;
1794
+ }, {
1795
+ label: string;
1796
+ href: string;
1797
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1798
+ description?: string | undefined;
1799
+ }>, "many">>;
1800
+ accountPending: z.ZodOptional<z.ZodBoolean>;
1801
+ accountUnavailable: z.ZodOptional<z.ZodBoolean>;
1802
+ }, "strip", z.ZodTypeAny, {
1803
+ logoText: string;
1804
+ storeCategories: StoreCategory[];
1805
+ utilityLinks: {
1806
+ label: string;
1807
+ href: string;
1808
+ }[];
1809
+ className?: string | undefined;
1810
+ logoHref?: string | undefined;
1811
+ user?: {
1812
+ email: string;
1813
+ name: string;
1814
+ initials: string;
1815
+ avatar?: string | undefined;
1816
+ } | undefined;
1817
+ items?: {
1818
+ id: string;
1819
+ name: string;
1820
+ price: number;
1821
+ qty: number;
1822
+ variant?: string | undefined;
1823
+ image?: string | undefined;
1824
+ }[] | undefined;
1825
+ subtotal?: Money | undefined;
1826
+ subtotalUnavailableLabel?: string | undefined;
1827
+ shippingNote?: string | undefined;
1828
+ logoAccent?: {
1829
+ text: string;
1830
+ className?: string | undefined;
1831
+ } | undefined;
1832
+ accountHref?: string | undefined;
1833
+ searchQuery?: string | undefined;
1834
+ accountMenuItems?: {
1835
+ label: string;
1836
+ href: string;
1837
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1838
+ description?: string | undefined;
1839
+ }[] | undefined;
1840
+ accountPending?: boolean | undefined;
1841
+ accountUnavailable?: boolean | undefined;
1842
+ }, {
1843
+ logoText: string;
1844
+ storeCategories: StoreCategory[];
1845
+ utilityLinks: {
1846
+ label: string;
1847
+ href: string;
1848
+ }[];
1849
+ className?: string | undefined;
1850
+ logoHref?: string | undefined;
1851
+ user?: {
1852
+ email: string;
1853
+ name: string;
1854
+ initials: string;
1855
+ avatar?: string | undefined;
1856
+ } | undefined;
1857
+ items?: {
1858
+ id: string;
1859
+ name: string;
1860
+ price: number;
1861
+ qty: number;
1862
+ variant?: string | undefined;
1863
+ image?: string | undefined;
1864
+ }[] | undefined;
1865
+ subtotal?: Money | undefined;
1866
+ subtotalUnavailableLabel?: string | undefined;
1867
+ shippingNote?: string | undefined;
1868
+ logoAccent?: {
1869
+ text: string;
1870
+ className?: string | undefined;
1871
+ } | undefined;
1872
+ accountHref?: string | undefined;
1873
+ searchQuery?: string | undefined;
1874
+ accountMenuItems?: {
1875
+ label: string;
1876
+ href: string;
1877
+ icon?: "orders" | "wishlist" | "addresses" | "settings" | undefined;
1878
+ description?: string | undefined;
1879
+ }[] | undefined;
1880
+ accountPending?: boolean | undefined;
1881
+ accountUnavailable?: boolean | undefined;
1882
+ }>;
1883
+ export type StorefrontNavbarSpecProps = z.infer<typeof storefrontNavbarPropsSchema>;
1884
+ /**
1885
+ * Serializable contracts for the two bounded editorial sections (`faq`, `cta`).
1886
+ * These are the serializable subset of `FaqBlock1Props`/`CtaSection1Props`: the
1887
+ * React-only callbacks (`onPrimaryClick`/`onSecondaryClick`) are intentionally
1888
+ * excluded — the catalog adapter binds them (see design D3).
1889
+ */
1890
+ export declare const ctaSchema: z.ZodObject<{
1891
+ label: z.ZodString;
1892
+ href: z.ZodOptional<z.ZodString>;
1893
+ }, "strip", z.ZodTypeAny, {
1894
+ label: string;
1895
+ href?: string | undefined;
1896
+ }, {
1897
+ label: string;
1898
+ href?: string | undefined;
1899
+ }>;
1900
+ export type CtaSpec = z.infer<typeof ctaSchema>;
1901
+ /** Bounded presentations of the page-level navigation header. */
1902
+ export declare const navbarPresentationSchema: z.ZodEnum<["bar", "mega", "floating"]>;
1903
+ export type NavbarPresentationSpec = z.infer<typeof navbarPresentationSchema>;
1904
+ export declare const navbarItemSchema: z.ZodObject<{
1905
+ label: z.ZodString;
1906
+ href: z.ZodString;
1907
+ description: z.ZodOptional<z.ZodString>;
1908
+ /** Key resolved through the consumer's host-bound `iconMap`. */
1909
+ icon: z.ZodOptional<z.ZodString>;
1910
+ }, "strip", z.ZodTypeAny, {
1911
+ label: string;
1912
+ href: string;
1913
+ icon?: string | undefined;
1914
+ description?: string | undefined;
1915
+ }, {
1916
+ label: string;
1917
+ href: string;
1918
+ icon?: string | undefined;
1919
+ description?: string | undefined;
1920
+ }>;
1921
+ export type NavbarItemSpec = z.infer<typeof navbarItemSchema>;
1922
+ export declare const navbarGroupSchema: z.ZodObject<{
1923
+ title: z.ZodOptional<z.ZodString>;
1924
+ items: z.ZodArray<z.ZodObject<{
1925
+ label: z.ZodString;
1926
+ href: z.ZodString;
1927
+ description: z.ZodOptional<z.ZodString>;
1928
+ /** Key resolved through the consumer's host-bound `iconMap`. */
1929
+ icon: z.ZodOptional<z.ZodString>;
1930
+ }, "strip", z.ZodTypeAny, {
1931
+ label: string;
1932
+ href: string;
1933
+ icon?: string | undefined;
1934
+ description?: string | undefined;
1935
+ }, {
1936
+ label: string;
1937
+ href: string;
1938
+ icon?: string | undefined;
1939
+ description?: string | undefined;
1940
+ }>, "many">;
1941
+ }, "strip", z.ZodTypeAny, {
1942
+ items: {
1943
+ label: string;
1944
+ href: string;
1945
+ icon?: string | undefined;
1946
+ description?: string | undefined;
1947
+ }[];
1948
+ title?: string | undefined;
1949
+ }, {
1950
+ items: {
1951
+ label: string;
1952
+ href: string;
1953
+ icon?: string | undefined;
1954
+ description?: string | undefined;
1955
+ }[];
1956
+ title?: string | undefined;
1957
+ }>;
1958
+ export type NavbarGroupSpec = z.infer<typeof navbarGroupSchema>;
1959
+ export declare const navbarLinkSchema: z.ZodObject<{
1960
+ label: z.ZodString;
1961
+ href: z.ZodOptional<z.ZodString>;
1962
+ groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
1963
+ title: z.ZodOptional<z.ZodString>;
1964
+ items: z.ZodArray<z.ZodObject<{
1965
+ label: z.ZodString;
1966
+ href: z.ZodString;
1967
+ description: z.ZodOptional<z.ZodString>;
1968
+ /** Key resolved through the consumer's host-bound `iconMap`. */
1969
+ icon: z.ZodOptional<z.ZodString>;
1970
+ }, "strip", z.ZodTypeAny, {
1971
+ label: string;
1972
+ href: string;
1973
+ icon?: string | undefined;
1974
+ description?: string | undefined;
1975
+ }, {
1976
+ label: string;
1977
+ href: string;
1978
+ icon?: string | undefined;
1979
+ description?: string | undefined;
1980
+ }>, "many">;
1981
+ }, "strip", z.ZodTypeAny, {
1982
+ items: {
1983
+ label: string;
1984
+ href: string;
1985
+ icon?: string | undefined;
1986
+ description?: string | undefined;
1987
+ }[];
1988
+ title?: string | undefined;
1989
+ }, {
1990
+ items: {
1991
+ label: string;
1992
+ href: string;
1993
+ icon?: string | undefined;
1994
+ description?: string | undefined;
1995
+ }[];
1996
+ title?: string | undefined;
1997
+ }>, "many">>;
1998
+ emphasis: z.ZodOptional<z.ZodBoolean>;
1999
+ }, "strip", z.ZodTypeAny, {
2000
+ label: string;
2001
+ href?: string | undefined;
2002
+ emphasis?: boolean | undefined;
2003
+ groups?: {
2004
+ items: {
2005
+ label: string;
2006
+ href: string;
2007
+ icon?: string | undefined;
2008
+ description?: string | undefined;
2009
+ }[];
2010
+ title?: string | undefined;
2011
+ }[] | undefined;
2012
+ }, {
2013
+ label: string;
2014
+ href?: string | undefined;
2015
+ emphasis?: boolean | undefined;
2016
+ groups?: {
2017
+ items: {
2018
+ label: string;
2019
+ href: string;
2020
+ icon?: string | undefined;
2021
+ description?: string | undefined;
2022
+ }[];
2023
+ title?: string | undefined;
2024
+ }[] | undefined;
2025
+ }>;
2026
+ export type NavbarLinkSpec = z.infer<typeof navbarLinkSchema>;
2027
+ export declare const navbarFeaturedSchema: z.ZodObject<{
2028
+ eyebrow: z.ZodString;
2029
+ title: z.ZodString;
2030
+ description: z.ZodOptional<z.ZodString>;
2031
+ href: z.ZodString;
2032
+ linkLabel: z.ZodOptional<z.ZodString>;
2033
+ image: z.ZodOptional<z.ZodString>;
2034
+ imageAlt: z.ZodOptional<z.ZodString>;
2035
+ }, "strip", z.ZodTypeAny, {
2036
+ title: string;
2037
+ href: string;
2038
+ eyebrow: string;
2039
+ image?: string | undefined;
2040
+ description?: string | undefined;
2041
+ imageAlt?: string | undefined;
2042
+ linkLabel?: string | undefined;
2043
+ }, {
2044
+ title: string;
2045
+ href: string;
2046
+ eyebrow: string;
2047
+ image?: string | undefined;
2048
+ description?: string | undefined;
2049
+ imageAlt?: string | undefined;
2050
+ linkLabel?: string | undefined;
2051
+ }>;
2052
+ export type NavbarFeaturedSpec = z.infer<typeof navbarFeaturedSchema>;
2053
+ /**
2054
+ * Serializable contract for the canonical page-level header (`Navbar`). The
2055
+ * serializable subset excludes the React-only bindings: `iconMap`, `onSignIn`,
2056
+ * and `onCtaClick` are bound by the host, exactly like the footer's icon map.
2057
+ */
2058
+ export declare const navbarPropsSchema: z.ZodObject<{
2059
+ presentation: z.ZodOptional<z.ZodEnum<["bar", "mega", "floating"]>>;
2060
+ logoText: z.ZodString;
2061
+ logoHref: z.ZodOptional<z.ZodString>;
2062
+ currentPath: z.ZodOptional<z.ZodString>;
2063
+ links: z.ZodArray<z.ZodObject<{
2064
+ label: z.ZodString;
2065
+ href: z.ZodOptional<z.ZodString>;
2066
+ groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
2067
+ title: z.ZodOptional<z.ZodString>;
2068
+ items: z.ZodArray<z.ZodObject<{
2069
+ label: z.ZodString;
2070
+ href: z.ZodString;
2071
+ description: z.ZodOptional<z.ZodString>;
2072
+ /** Key resolved through the consumer's host-bound `iconMap`. */
2073
+ icon: z.ZodOptional<z.ZodString>;
2074
+ }, "strip", z.ZodTypeAny, {
2075
+ label: string;
2076
+ href: string;
2077
+ icon?: string | undefined;
2078
+ description?: string | undefined;
2079
+ }, {
2080
+ label: string;
2081
+ href: string;
2082
+ icon?: string | undefined;
2083
+ description?: string | undefined;
2084
+ }>, "many">;
2085
+ }, "strip", z.ZodTypeAny, {
2086
+ items: {
2087
+ label: string;
2088
+ href: string;
2089
+ icon?: string | undefined;
2090
+ description?: string | undefined;
2091
+ }[];
2092
+ title?: string | undefined;
2093
+ }, {
2094
+ items: {
2095
+ label: string;
2096
+ href: string;
2097
+ icon?: string | undefined;
2098
+ description?: string | undefined;
2099
+ }[];
2100
+ title?: string | undefined;
2101
+ }>, "many">>;
2102
+ emphasis: z.ZodOptional<z.ZodBoolean>;
2103
+ }, "strip", z.ZodTypeAny, {
2104
+ label: string;
2105
+ href?: string | undefined;
2106
+ emphasis?: boolean | undefined;
2107
+ groups?: {
2108
+ items: {
2109
+ label: string;
2110
+ href: string;
2111
+ icon?: string | undefined;
2112
+ description?: string | undefined;
2113
+ }[];
2114
+ title?: string | undefined;
2115
+ }[] | undefined;
2116
+ }, {
2117
+ label: string;
2118
+ href?: string | undefined;
2119
+ emphasis?: boolean | undefined;
2120
+ groups?: {
2121
+ items: {
2122
+ label: string;
2123
+ href: string;
2124
+ icon?: string | undefined;
2125
+ description?: string | undefined;
2126
+ }[];
2127
+ title?: string | undefined;
2128
+ }[] | undefined;
2129
+ }>, "many">;
2130
+ featured: z.ZodOptional<z.ZodObject<{
2131
+ eyebrow: z.ZodString;
2132
+ title: z.ZodString;
2133
+ description: z.ZodOptional<z.ZodString>;
2134
+ href: z.ZodString;
2135
+ linkLabel: z.ZodOptional<z.ZodString>;
2136
+ image: z.ZodOptional<z.ZodString>;
2137
+ imageAlt: z.ZodOptional<z.ZodString>;
2138
+ }, "strip", z.ZodTypeAny, {
2139
+ title: string;
2140
+ href: string;
2141
+ eyebrow: string;
2142
+ image?: string | undefined;
2143
+ description?: string | undefined;
2144
+ imageAlt?: string | undefined;
2145
+ linkLabel?: string | undefined;
2146
+ }, {
2147
+ title: string;
2148
+ href: string;
2149
+ eyebrow: string;
2150
+ image?: string | undefined;
2151
+ description?: string | undefined;
2152
+ imageAlt?: string | undefined;
2153
+ linkLabel?: string | undefined;
2154
+ }>>;
2155
+ signIn: z.ZodOptional<z.ZodObject<{
2156
+ label: z.ZodString;
2157
+ href: z.ZodOptional<z.ZodString>;
2158
+ }, "strip", z.ZodTypeAny, {
2159
+ label: string;
2160
+ href?: string | undefined;
2161
+ }, {
2162
+ label: string;
2163
+ href?: string | undefined;
2164
+ }>>;
2165
+ cta: z.ZodOptional<z.ZodObject<{
2166
+ label: z.ZodString;
2167
+ href: z.ZodOptional<z.ZodString>;
2168
+ }, "strip", z.ZodTypeAny, {
2169
+ label: string;
2170
+ href?: string | undefined;
2171
+ }, {
2172
+ label: string;
2173
+ href?: string | undefined;
2174
+ }>>;
2175
+ /** Consumer-supplied classes merged onto the header surface last. */
2176
+ className: z.ZodOptional<z.ZodString>;
2177
+ }, "strip", z.ZodTypeAny, {
2178
+ links: {
2179
+ label: string;
2180
+ href?: string | undefined;
2181
+ emphasis?: boolean | undefined;
2182
+ groups?: {
2183
+ items: {
2184
+ label: string;
2185
+ href: string;
2186
+ icon?: string | undefined;
2187
+ description?: string | undefined;
2188
+ }[];
2189
+ title?: string | undefined;
2190
+ }[] | undefined;
2191
+ }[];
2192
+ logoText: string;
2193
+ className?: string | undefined;
2194
+ presentation?: "bar" | "mega" | "floating" | undefined;
2195
+ featured?: {
2196
+ title: string;
2197
+ href: string;
2198
+ eyebrow: string;
2199
+ image?: string | undefined;
2200
+ description?: string | undefined;
2201
+ imageAlt?: string | undefined;
2202
+ linkLabel?: string | undefined;
2203
+ } | undefined;
2204
+ currentPath?: string | undefined;
2205
+ signIn?: {
2206
+ label: string;
2207
+ href?: string | undefined;
2208
+ } | undefined;
2209
+ cta?: {
2210
+ label: string;
2211
+ href?: string | undefined;
2212
+ } | undefined;
2213
+ logoHref?: string | undefined;
2214
+ }, {
2215
+ links: {
2216
+ label: string;
2217
+ href?: string | undefined;
2218
+ emphasis?: boolean | undefined;
2219
+ groups?: {
2220
+ items: {
2221
+ label: string;
2222
+ href: string;
2223
+ icon?: string | undefined;
2224
+ description?: string | undefined;
2225
+ }[];
2226
+ title?: string | undefined;
2227
+ }[] | undefined;
2228
+ }[];
2229
+ logoText: string;
2230
+ className?: string | undefined;
2231
+ presentation?: "bar" | "mega" | "floating" | undefined;
2232
+ featured?: {
2233
+ title: string;
2234
+ href: string;
2235
+ eyebrow: string;
2236
+ image?: string | undefined;
2237
+ description?: string | undefined;
2238
+ imageAlt?: string | undefined;
2239
+ linkLabel?: string | undefined;
2240
+ } | undefined;
2241
+ currentPath?: string | undefined;
2242
+ signIn?: {
2243
+ label: string;
2244
+ href?: string | undefined;
2245
+ } | undefined;
2246
+ cta?: {
2247
+ label: string;
2248
+ href?: string | undefined;
2249
+ } | undefined;
2250
+ logoHref?: string | undefined;
2251
+ }>;
2252
+ export type NavbarSpecProps = z.infer<typeof navbarPropsSchema>;
2253
+ /**
2254
+ * Serializable subset of the canonical `StorefrontHero`'s props (callbacks
2255
+ * excluded). Every popularity, review, count, or countdown field is optional
2256
+ * host-supplied evidence: omitted fields render nothing (honest omission)
2257
+ * instead of fabricated defaults, and prices are formatted from the supplied
2258
+ * ISO 4217 `currency` via `Intl.NumberFormat` (never hardcoded).
2259
+ */
2260
+ export declare const storefrontHeroProductSchema: z.ZodObject<{
2261
+ id: z.ZodString;
2262
+ name: z.ZodString;
2263
+ price: z.ZodNumber;
2264
+ originalPrice: z.ZodOptional<z.ZodNumber>;
2265
+ image: z.ZodOptional<z.ZodString>;
2266
+ imageAlt: z.ZodOptional<z.ZodString>;
2267
+ brand: z.ZodOptional<z.ZodString>;
2268
+ colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2269
+ rating: z.ZodOptional<z.ZodNumber>;
2270
+ reviewCount: z.ZodOptional<z.ZodNumber>;
2271
+ inStock: z.ZodOptional<z.ZodBoolean>;
2272
+ isNew: z.ZodOptional<z.ZodBoolean>;
2273
+ tag: z.ZodOptional<z.ZodString>;
2274
+ }, "strip", z.ZodTypeAny, {
2275
+ id: string;
2276
+ name: string;
2277
+ price: number;
2278
+ image?: string | undefined;
2279
+ rating?: number | undefined;
2280
+ originalPrice?: number | undefined;
2281
+ imageAlt?: string | undefined;
2282
+ brand?: string | undefined;
2283
+ colors?: string[] | undefined;
2284
+ reviewCount?: number | undefined;
2285
+ inStock?: boolean | undefined;
2286
+ isNew?: boolean | undefined;
2287
+ tag?: string | undefined;
2288
+ }, {
2289
+ id: string;
2290
+ name: string;
2291
+ price: number;
2292
+ image?: string | undefined;
2293
+ rating?: number | undefined;
2294
+ originalPrice?: number | undefined;
2295
+ imageAlt?: string | undefined;
2296
+ brand?: string | undefined;
2297
+ colors?: string[] | undefined;
2298
+ reviewCount?: number | undefined;
2299
+ inStock?: boolean | undefined;
2300
+ isNew?: boolean | undefined;
2301
+ tag?: string | undefined;
2302
+ }>;
2303
+ export type StorefrontHeroProduct = z.infer<typeof storefrontHeroProductSchema>;
2304
+ export declare const storefrontHeroPropsSchema: z.ZodObject<{
2305
+ title: z.ZodString;
2306
+ description: z.ZodString;
2307
+ presentation: z.ZodOptional<z.ZodEnum<["compact", "showcase", "editorial", "promotional"]>>;
2308
+ currency: z.ZodOptional<z.ZodString>;
2309
+ products: z.ZodArray<z.ZodObject<{
2310
+ id: z.ZodString;
2311
+ name: z.ZodString;
2312
+ price: z.ZodNumber;
2313
+ originalPrice: z.ZodOptional<z.ZodNumber>;
2314
+ image: z.ZodOptional<z.ZodString>;
2315
+ imageAlt: z.ZodOptional<z.ZodString>;
2316
+ brand: z.ZodOptional<z.ZodString>;
2317
+ colors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2318
+ rating: z.ZodOptional<z.ZodNumber>;
2319
+ reviewCount: z.ZodOptional<z.ZodNumber>;
2320
+ inStock: z.ZodOptional<z.ZodBoolean>;
2321
+ isNew: z.ZodOptional<z.ZodBoolean>;
2322
+ tag: z.ZodOptional<z.ZodString>;
2323
+ }, "strip", z.ZodTypeAny, {
2324
+ id: string;
2325
+ name: string;
2326
+ price: number;
2327
+ image?: string | undefined;
2328
+ rating?: number | undefined;
2329
+ originalPrice?: number | undefined;
2330
+ imageAlt?: string | undefined;
2331
+ brand?: string | undefined;
2332
+ colors?: string[] | undefined;
2333
+ reviewCount?: number | undefined;
2334
+ inStock?: boolean | undefined;
2335
+ isNew?: boolean | undefined;
2336
+ tag?: string | undefined;
2337
+ }, {
2338
+ id: string;
2339
+ name: string;
2340
+ price: number;
2341
+ image?: string | undefined;
2342
+ rating?: number | undefined;
2343
+ originalPrice?: number | undefined;
2344
+ imageAlt?: string | undefined;
2345
+ brand?: string | undefined;
2346
+ colors?: string[] | undefined;
2347
+ reviewCount?: number | undefined;
2348
+ inStock?: boolean | undefined;
2349
+ isNew?: boolean | undefined;
2350
+ tag?: string | undefined;
2351
+ }>, "many">;
2352
+ badge: z.ZodOptional<z.ZodString>;
2353
+ titleAccent: z.ZodOptional<z.ZodString>;
2354
+ primaryCta: z.ZodOptional<z.ZodObject<{
2355
+ label: z.ZodString;
2356
+ href: z.ZodOptional<z.ZodString>;
2357
+ }, "strip", z.ZodTypeAny, {
2358
+ label: string;
2359
+ href?: string | undefined;
2360
+ }, {
2361
+ label: string;
2362
+ href?: string | undefined;
2363
+ }>>;
2364
+ secondaryCta: z.ZodOptional<z.ZodObject<{
2365
+ label: z.ZodString;
2366
+ href: z.ZodOptional<z.ZodString>;
2367
+ }, "strip", z.ZodTypeAny, {
2368
+ label: string;
2369
+ href?: string | undefined;
2370
+ }, {
2371
+ label: string;
2372
+ href?: string | undefined;
2373
+ }>>;
2374
+ heroImage: z.ZodOptional<z.ZodObject<{
2375
+ src: z.ZodString;
2376
+ alt: z.ZodString;
2377
+ }, "strip", z.ZodTypeAny, {
2378
+ alt: string;
2379
+ src: string;
2380
+ }, {
2381
+ alt: string;
2382
+ src: string;
2383
+ }>>;
2384
+ departments: z.ZodOptional<z.ZodArray<z.ZodObject<{
2385
+ id: z.ZodString;
2386
+ name: z.ZodString;
2387
+ image: z.ZodOptional<z.ZodString>;
2388
+ imageAlt: z.ZodOptional<z.ZodString>;
2389
+ count: z.ZodOptional<z.ZodString>;
2390
+ href: z.ZodOptional<z.ZodString>;
2391
+ }, "strip", z.ZodTypeAny, {
2392
+ id: string;
2393
+ name: string;
2394
+ image?: string | undefined;
2395
+ href?: string | undefined;
2396
+ count?: string | undefined;
2397
+ imageAlt?: string | undefined;
2398
+ }, {
2399
+ id: string;
2400
+ name: string;
2401
+ image?: string | undefined;
2402
+ href?: string | undefined;
2403
+ count?: string | undefined;
2404
+ imageAlt?: string | undefined;
2405
+ }>, "many">>;
2406
+ featuredDeals: z.ZodOptional<z.ZodArray<z.ZodObject<{
2407
+ id: z.ZodString;
2408
+ name: z.ZodString;
2409
+ description: z.ZodOptional<z.ZodString>;
2410
+ image: z.ZodOptional<z.ZodString>;
2411
+ imageAlt: z.ZodOptional<z.ZodString>;
2412
+ price: z.ZodNumber;
2413
+ originalPrice: z.ZodOptional<z.ZodNumber>;
2414
+ cta: z.ZodOptional<z.ZodObject<{
2415
+ label: z.ZodString;
2416
+ href: z.ZodOptional<z.ZodString>;
2417
+ }, "strip", z.ZodTypeAny, {
2418
+ label: string;
2419
+ href?: string | undefined;
2420
+ }, {
2421
+ label: string;
2422
+ href?: string | undefined;
2423
+ }>>;
2424
+ }, "strip", z.ZodTypeAny, {
2425
+ id: string;
2426
+ name: string;
2427
+ price: number;
2428
+ image?: string | undefined;
2429
+ cta?: {
2430
+ label: string;
2431
+ href?: string | undefined;
2432
+ } | undefined;
2433
+ description?: string | undefined;
2434
+ originalPrice?: number | undefined;
2435
+ imageAlt?: string | undefined;
2436
+ }, {
2437
+ id: string;
2438
+ name: string;
2439
+ price: number;
2440
+ image?: string | undefined;
2441
+ cta?: {
2442
+ label: string;
2443
+ href?: string | undefined;
2444
+ } | undefined;
2445
+ description?: string | undefined;
2446
+ originalPrice?: number | undefined;
2447
+ imageAlt?: string | undefined;
2448
+ }>, "many">>;
2449
+ storeLocator: z.ZodOptional<z.ZodObject<{
2450
+ title: z.ZodString;
2451
+ description: z.ZodString;
2452
+ ctaLabel: z.ZodString;
2453
+ ctaHref: z.ZodOptional<z.ZodString>;
2454
+ }, "strip", z.ZodTypeAny, {
2455
+ title: string;
2456
+ description: string;
2457
+ ctaLabel: string;
2458
+ ctaHref?: string | undefined;
2459
+ }, {
2460
+ title: string;
2461
+ description: string;
2462
+ ctaLabel: string;
2463
+ ctaHref?: string | undefined;
2464
+ }>>;
2465
+ shippingInfo: z.ZodOptional<z.ZodString>;
2466
+ deals: z.ZodOptional<z.ZodArray<z.ZodObject<{
2467
+ id: z.ZodString;
2468
+ title: z.ZodString;
2469
+ discount: z.ZodOptional<z.ZodString>;
2470
+ endTime: z.ZodOptional<z.ZodString>;
2471
+ }, "strip", z.ZodTypeAny, {
2472
+ title: string;
2473
+ id: string;
2474
+ discount?: string | undefined;
2475
+ endTime?: string | undefined;
2476
+ }, {
2477
+ title: string;
2478
+ id: string;
2479
+ discount?: string | undefined;
2480
+ endTime?: string | undefined;
2481
+ }>, "many">>;
2482
+ categories: z.ZodOptional<z.ZodArray<z.ZodObject<{
2483
+ id: z.ZodString;
2484
+ name: z.ZodString;
2485
+ image: z.ZodOptional<z.ZodString>;
2486
+ imageAlt: z.ZodOptional<z.ZodString>;
2487
+ count: z.ZodOptional<z.ZodString>;
2488
+ href: z.ZodOptional<z.ZodString>;
2489
+ }, "strip", z.ZodTypeAny, {
2490
+ id: string;
2491
+ name: string;
2492
+ image?: string | undefined;
2493
+ href?: string | undefined;
2494
+ count?: string | undefined;
2495
+ imageAlt?: string | undefined;
2496
+ }, {
2497
+ id: string;
2498
+ name: string;
2499
+ image?: string | undefined;
2500
+ href?: string | undefined;
2501
+ count?: string | undefined;
2502
+ imageAlt?: string | undefined;
2503
+ }>, "many">>;
2504
+ rotationInterval: z.ZodOptional<z.ZodNumber>;
2505
+ addToCartLabel: z.ZodOptional<z.ZodString>;
2506
+ buyNowLabel: z.ZodOptional<z.ZodString>;
2507
+ newLabel: z.ZodOptional<z.ZodString>;
2508
+ outOfStockLabel: z.ZodOptional<z.ZodString>;
2509
+ colorsLabel: z.ZodOptional<z.ZodString>;
2510
+ discountSuffixLabel: z.ZodOptional<z.ZodString>;
2511
+ searchPlaceholder: z.ZodOptional<z.ZodString>;
2512
+ searchLabel: z.ZodOptional<z.ZodString>;
2513
+ featuredDescription: z.ZodOptional<z.ZodString>;
2514
+ shopNowLabel: z.ZodOptional<z.ZodString>;
2515
+ endsInLabel: z.ZodOptional<z.ZodString>;
2516
+ productsLabel: z.ZodOptional<z.ZodString>;
2517
+ viewLabel: z.ZodOptional<z.ZodString>;
2518
+ }, "strip", z.ZodTypeAny, {
2519
+ title: string;
2520
+ description: string;
2521
+ products: {
2522
+ id: string;
2523
+ name: string;
2524
+ price: number;
2525
+ image?: string | undefined;
2526
+ rating?: number | undefined;
2527
+ originalPrice?: number | undefined;
2528
+ imageAlt?: string | undefined;
2529
+ brand?: string | undefined;
2530
+ colors?: string[] | undefined;
2531
+ reviewCount?: number | undefined;
2532
+ inStock?: boolean | undefined;
2533
+ isNew?: boolean | undefined;
2534
+ tag?: string | undefined;
2535
+ }[];
2536
+ presentation?: "compact" | "showcase" | "editorial" | "promotional" | undefined;
2537
+ badge?: string | undefined;
2538
+ currency?: string | undefined;
2539
+ addToCartLabel?: string | undefined;
2540
+ outOfStockLabel?: string | undefined;
2541
+ titleAccent?: string | undefined;
2542
+ primaryCta?: {
2543
+ label: string;
2544
+ href?: string | undefined;
2545
+ } | undefined;
2546
+ secondaryCta?: {
2547
+ label: string;
2548
+ href?: string | undefined;
2549
+ } | undefined;
2550
+ heroImage?: {
2551
+ alt: string;
2552
+ src: string;
2553
+ } | undefined;
2554
+ departments?: {
2555
+ id: string;
2556
+ name: string;
2557
+ image?: string | undefined;
2558
+ href?: string | undefined;
2559
+ count?: string | undefined;
2560
+ imageAlt?: string | undefined;
2561
+ }[] | undefined;
2562
+ featuredDeals?: {
2563
+ id: string;
2564
+ name: string;
2565
+ price: number;
2566
+ image?: string | undefined;
2567
+ cta?: {
2568
+ label: string;
2569
+ href?: string | undefined;
2570
+ } | undefined;
2571
+ description?: string | undefined;
2572
+ originalPrice?: number | undefined;
2573
+ imageAlt?: string | undefined;
2574
+ }[] | undefined;
2575
+ storeLocator?: {
2576
+ title: string;
2577
+ description: string;
2578
+ ctaLabel: string;
2579
+ ctaHref?: string | undefined;
2580
+ } | undefined;
2581
+ shippingInfo?: string | undefined;
2582
+ deals?: {
2583
+ title: string;
2584
+ id: string;
2585
+ discount?: string | undefined;
2586
+ endTime?: string | undefined;
2587
+ }[] | undefined;
2588
+ categories?: {
2589
+ id: string;
2590
+ name: string;
2591
+ image?: string | undefined;
2592
+ href?: string | undefined;
2593
+ count?: string | undefined;
2594
+ imageAlt?: string | undefined;
2595
+ }[] | undefined;
2596
+ rotationInterval?: number | undefined;
2597
+ buyNowLabel?: string | undefined;
2598
+ newLabel?: string | undefined;
2599
+ colorsLabel?: string | undefined;
2600
+ discountSuffixLabel?: string | undefined;
2601
+ searchPlaceholder?: string | undefined;
2602
+ searchLabel?: string | undefined;
2603
+ featuredDescription?: string | undefined;
2604
+ shopNowLabel?: string | undefined;
2605
+ endsInLabel?: string | undefined;
2606
+ productsLabel?: string | undefined;
2607
+ viewLabel?: string | undefined;
2608
+ }, {
2609
+ title: string;
2610
+ description: string;
2611
+ products: {
2612
+ id: string;
2613
+ name: string;
2614
+ price: number;
2615
+ image?: string | undefined;
2616
+ rating?: number | undefined;
2617
+ originalPrice?: number | undefined;
2618
+ imageAlt?: string | undefined;
2619
+ brand?: string | undefined;
2620
+ colors?: string[] | undefined;
2621
+ reviewCount?: number | undefined;
2622
+ inStock?: boolean | undefined;
2623
+ isNew?: boolean | undefined;
2624
+ tag?: string | undefined;
2625
+ }[];
2626
+ presentation?: "compact" | "showcase" | "editorial" | "promotional" | undefined;
2627
+ badge?: string | undefined;
2628
+ currency?: string | undefined;
2629
+ addToCartLabel?: string | undefined;
2630
+ outOfStockLabel?: string | undefined;
2631
+ titleAccent?: string | undefined;
2632
+ primaryCta?: {
2633
+ label: string;
2634
+ href?: string | undefined;
2635
+ } | undefined;
2636
+ secondaryCta?: {
2637
+ label: string;
2638
+ href?: string | undefined;
2639
+ } | undefined;
2640
+ heroImage?: {
2641
+ alt: string;
2642
+ src: string;
2643
+ } | undefined;
2644
+ departments?: {
2645
+ id: string;
2646
+ name: string;
2647
+ image?: string | undefined;
2648
+ href?: string | undefined;
2649
+ count?: string | undefined;
2650
+ imageAlt?: string | undefined;
2651
+ }[] | undefined;
2652
+ featuredDeals?: {
2653
+ id: string;
2654
+ name: string;
2655
+ price: number;
2656
+ image?: string | undefined;
2657
+ cta?: {
2658
+ label: string;
2659
+ href?: string | undefined;
2660
+ } | undefined;
2661
+ description?: string | undefined;
2662
+ originalPrice?: number | undefined;
2663
+ imageAlt?: string | undefined;
2664
+ }[] | undefined;
2665
+ storeLocator?: {
2666
+ title: string;
2667
+ description: string;
2668
+ ctaLabel: string;
2669
+ ctaHref?: string | undefined;
2670
+ } | undefined;
2671
+ shippingInfo?: string | undefined;
2672
+ deals?: {
2673
+ title: string;
2674
+ id: string;
2675
+ discount?: string | undefined;
2676
+ endTime?: string | undefined;
2677
+ }[] | undefined;
2678
+ categories?: {
2679
+ id: string;
2680
+ name: string;
2681
+ image?: string | undefined;
2682
+ href?: string | undefined;
2683
+ count?: string | undefined;
2684
+ imageAlt?: string | undefined;
2685
+ }[] | undefined;
2686
+ rotationInterval?: number | undefined;
2687
+ buyNowLabel?: string | undefined;
2688
+ newLabel?: string | undefined;
2689
+ colorsLabel?: string | undefined;
2690
+ discountSuffixLabel?: string | undefined;
2691
+ searchPlaceholder?: string | undefined;
2692
+ searchLabel?: string | undefined;
2693
+ featuredDescription?: string | undefined;
2694
+ shopNowLabel?: string | undefined;
2695
+ endsInLabel?: string | undefined;
2696
+ productsLabel?: string | undefined;
2697
+ viewLabel?: string | undefined;
2698
+ }>;
2699
+ export type StorefrontHeroSpecProps = z.infer<typeof storefrontHeroPropsSchema>;
2700
+ export declare const faqItemSchema: z.ZodObject<{
2701
+ value: z.ZodString;
2702
+ question: z.ZodString;
2703
+ answer: z.ZodString;
2704
+ }, "strip", z.ZodTypeAny, {
2705
+ value: string;
2706
+ question: string;
2707
+ answer: string;
2708
+ }, {
2709
+ value: string;
2710
+ question: string;
2711
+ answer: string;
2712
+ }>;
2713
+ export type FaqItemSpec = z.infer<typeof faqItemSchema>;
2714
+ export declare const faqBlock1PropsSchema: z.ZodObject<{
2715
+ items: z.ZodArray<z.ZodObject<{
2716
+ value: z.ZodString;
2717
+ question: z.ZodString;
2718
+ answer: z.ZodString;
2719
+ }, "strip", z.ZodTypeAny, {
2720
+ value: string;
2721
+ question: string;
2722
+ answer: string;
2723
+ }, {
2724
+ value: string;
2725
+ question: string;
2726
+ answer: string;
2727
+ }>, "many">;
2728
+ title: z.ZodOptional<z.ZodString>;
2729
+ description: z.ZodOptional<z.ZodString>;
2730
+ accordionType: z.ZodOptional<z.ZodEnum<["single", "multiple"]>>;
2731
+ }, "strip", z.ZodTypeAny, {
2732
+ items: {
2733
+ value: string;
2734
+ question: string;
2735
+ answer: string;
2736
+ }[];
2737
+ title?: string | undefined;
2738
+ description?: string | undefined;
2739
+ accordionType?: "single" | "multiple" | undefined;
2740
+ }, {
2741
+ items: {
2742
+ value: string;
2743
+ question: string;
2744
+ answer: string;
2745
+ }[];
2746
+ title?: string | undefined;
2747
+ description?: string | undefined;
2748
+ accordionType?: "single" | "multiple" | undefined;
2749
+ }>;
2750
+ export type FaqBlock1SpecProps = z.infer<typeof faqBlock1PropsSchema>;
2751
+ export declare const ctaSection1PropsSchema: z.ZodObject<{
2752
+ badgeText: z.ZodOptional<z.ZodString>;
2753
+ title: z.ZodOptional<z.ZodString>;
2754
+ description: z.ZodOptional<z.ZodString>;
2755
+ primaryCta: z.ZodOptional<z.ZodObject<{
2756
+ label: z.ZodString;
2757
+ href: z.ZodOptional<z.ZodString>;
2758
+ }, "strip", z.ZodTypeAny, {
2759
+ label: string;
2760
+ href?: string | undefined;
2761
+ }, {
2762
+ label: string;
2763
+ href?: string | undefined;
2764
+ }>>;
2765
+ secondaryCta: z.ZodOptional<z.ZodObject<{
2766
+ label: z.ZodString;
2767
+ href: z.ZodOptional<z.ZodString>;
2768
+ }, "strip", z.ZodTypeAny, {
2769
+ label: string;
2770
+ href?: string | undefined;
2771
+ }, {
2772
+ label: string;
2773
+ href?: string | undefined;
2774
+ }>>;
2775
+ }, "strip", z.ZodTypeAny, {
2776
+ title?: string | undefined;
2777
+ description?: string | undefined;
2778
+ primaryCta?: {
2779
+ label: string;
2780
+ href?: string | undefined;
2781
+ } | undefined;
2782
+ secondaryCta?: {
2783
+ label: string;
2784
+ href?: string | undefined;
2785
+ } | undefined;
2786
+ badgeText?: string | undefined;
2787
+ }, {
2788
+ title?: string | undefined;
2789
+ description?: string | undefined;
2790
+ primaryCta?: {
2791
+ label: string;
2792
+ href?: string | undefined;
2793
+ } | undefined;
2794
+ secondaryCta?: {
2795
+ label: string;
2796
+ href?: string | undefined;
2797
+ } | undefined;
2798
+ badgeText?: string | undefined;
2799
+ }>;
2800
+ export type CtaSection1SpecProps = z.infer<typeof ctaSection1PropsSchema>;
2801
+ /**
2802
+ * Serializable contract for the canonical `Feature` benefits section. The
2803
+ * item `icon` is a Lucide icon NAME (e.g. `'Zap'`) that the registry resolves
2804
+ * to a component at the seam; the React-only callbacks (`onCtaClick`,
2805
+ * `onLearnMore`) are intentionally excluded — the catalog adapter binds them.
2806
+ */
2807
+ export declare const featureItemSpecSchema: z.ZodObject<{
2808
+ id: z.ZodString;
2809
+ title: z.ZodString;
2810
+ description: z.ZodString;
2811
+ icon: z.ZodString;
2812
+ }, "strip", z.ZodTypeAny, {
2813
+ title: string;
2814
+ id: string;
2815
+ icon: string;
2816
+ description: string;
2817
+ }, {
2818
+ title: string;
2819
+ id: string;
2820
+ icon: string;
2821
+ description: string;
2822
+ }>;
2823
+ /**
2824
+ * `cards` branch: the card grid never owns an image. The presentation is
2825
+ * optional so an omitted value resolves to `cards`.
2826
+ */
2827
+ export declare const featureCardsSpecSchema: z.ZodObject<{
2828
+ items: z.ZodArray<z.ZodObject<{
2829
+ id: z.ZodString;
2830
+ title: z.ZodString;
2831
+ description: z.ZodString;
2832
+ icon: z.ZodString;
2833
+ }, "strip", z.ZodTypeAny, {
2834
+ title: string;
2835
+ id: string;
2836
+ icon: string;
2837
+ description: string;
2838
+ }, {
2839
+ title: string;
2840
+ id: string;
2841
+ icon: string;
2842
+ description: string;
2843
+ }>, "many">;
2844
+ presentation: z.ZodOptional<z.ZodLiteral<"cards">>;
2845
+ badge: z.ZodOptional<z.ZodString>;
2846
+ title: z.ZodOptional<z.ZodString>;
2847
+ description: z.ZodOptional<z.ZodString>;
2848
+ ctaLabel: z.ZodOptional<z.ZodString>;
2849
+ learnMoreLabel: z.ZodOptional<z.ZodString>;
2850
+ className: z.ZodOptional<z.ZodString>;
2851
+ }, "strip", z.ZodTypeAny, {
2852
+ items: {
2853
+ title: string;
2854
+ id: string;
2855
+ icon: string;
2856
+ description: string;
2857
+ }[];
2858
+ title?: string | undefined;
2859
+ className?: string | undefined;
2860
+ presentation?: "cards" | undefined;
2861
+ badge?: string | undefined;
2862
+ description?: string | undefined;
2863
+ ctaLabel?: string | undefined;
2864
+ learnMoreLabel?: string | undefined;
2865
+ }, {
2866
+ items: {
2867
+ title: string;
2868
+ id: string;
2869
+ icon: string;
2870
+ description: string;
2871
+ }[];
2872
+ title?: string | undefined;
2873
+ className?: string | undefined;
2874
+ presentation?: "cards" | undefined;
2875
+ badge?: string | undefined;
2876
+ description?: string | undefined;
2877
+ ctaLabel?: string | undefined;
2878
+ learnMoreLabel?: string | undefined;
2879
+ }>;
2880
+ export type FeatureCardsSpecProps = z.infer<typeof featureCardsSpecSchema>;
2881
+ /**
2882
+ * `split` branch: the editorial image is mandatory and must carry a non-empty
2883
+ * `src`. `alt` stays required so the caller decides whether the image is
2884
+ * informative or decorative. `cards`-only chrome is intentionally absent.
2885
+ */
2886
+ export declare const featureSplitSpecSchema: z.ZodObject<{
2887
+ items: z.ZodArray<z.ZodObject<{
2888
+ id: z.ZodString;
2889
+ title: z.ZodString;
2890
+ description: z.ZodString;
2891
+ icon: z.ZodString;
2892
+ }, "strip", z.ZodTypeAny, {
2893
+ title: string;
2894
+ id: string;
2895
+ icon: string;
2896
+ description: string;
2897
+ }, {
2898
+ title: string;
2899
+ id: string;
2900
+ icon: string;
2901
+ description: string;
2902
+ }>, "many">;
2903
+ presentation: z.ZodLiteral<"split">;
2904
+ title: z.ZodOptional<z.ZodString>;
2905
+ description: z.ZodOptional<z.ZodString>;
2906
+ image: z.ZodObject<{
2907
+ src: z.ZodString;
2908
+ alt: z.ZodString;
2909
+ }, "strip", z.ZodTypeAny, {
2910
+ alt: string;
2911
+ src: string;
2912
+ }, {
2913
+ alt: string;
2914
+ src: string;
2915
+ }>;
2916
+ className: z.ZodOptional<z.ZodString>;
2917
+ }, "strip", z.ZodTypeAny, {
2918
+ image: {
2919
+ alt: string;
2920
+ src: string;
2921
+ };
2922
+ presentation: "split";
2923
+ items: {
2924
+ title: string;
2925
+ id: string;
2926
+ icon: string;
2927
+ description: string;
2928
+ }[];
2929
+ title?: string | undefined;
2930
+ className?: string | undefined;
2931
+ description?: string | undefined;
2932
+ }, {
2933
+ image: {
2934
+ alt: string;
2935
+ src: string;
2936
+ };
2937
+ presentation: "split";
2938
+ items: {
2939
+ title: string;
2940
+ id: string;
2941
+ icon: string;
2942
+ description: string;
2943
+ }[];
2944
+ title?: string | undefined;
2945
+ className?: string | undefined;
2946
+ description?: string | undefined;
2947
+ }>;
2948
+ export type FeatureSplitSpecProps = z.infer<typeof featureSplitSpecSchema>;
2949
+ /**
2950
+ * Serialized `Feature` union. The split branch is listed first so
2951
+ * `presentation: 'split'` resolves deterministically; an omitted presentation
2952
+ * falls through to `cards`. A split input without a non-empty image matches
2953
+ * neither branch and fails to parse.
2954
+ */
2955
+ export declare const featurePropsSchema: z.ZodUnion<[z.ZodObject<{
2956
+ items: z.ZodArray<z.ZodObject<{
2957
+ id: z.ZodString;
2958
+ title: z.ZodString;
2959
+ description: z.ZodString;
2960
+ icon: z.ZodString;
2961
+ }, "strip", z.ZodTypeAny, {
2962
+ title: string;
2963
+ id: string;
2964
+ icon: string;
2965
+ description: string;
2966
+ }, {
2967
+ title: string;
2968
+ id: string;
2969
+ icon: string;
2970
+ description: string;
2971
+ }>, "many">;
2972
+ presentation: z.ZodLiteral<"split">;
2973
+ title: z.ZodOptional<z.ZodString>;
2974
+ description: z.ZodOptional<z.ZodString>;
2975
+ image: z.ZodObject<{
2976
+ src: z.ZodString;
2977
+ alt: z.ZodString;
2978
+ }, "strip", z.ZodTypeAny, {
2979
+ alt: string;
2980
+ src: string;
2981
+ }, {
2982
+ alt: string;
2983
+ src: string;
2984
+ }>;
2985
+ className: z.ZodOptional<z.ZodString>;
2986
+ }, "strip", z.ZodTypeAny, {
2987
+ image: {
2988
+ alt: string;
2989
+ src: string;
2990
+ };
2991
+ presentation: "split";
2992
+ items: {
2993
+ title: string;
2994
+ id: string;
2995
+ icon: string;
2996
+ description: string;
2997
+ }[];
2998
+ title?: string | undefined;
2999
+ className?: string | undefined;
3000
+ description?: string | undefined;
3001
+ }, {
3002
+ image: {
3003
+ alt: string;
3004
+ src: string;
3005
+ };
3006
+ presentation: "split";
3007
+ items: {
3008
+ title: string;
3009
+ id: string;
3010
+ icon: string;
3011
+ description: string;
3012
+ }[];
3013
+ title?: string | undefined;
3014
+ className?: string | undefined;
3015
+ description?: string | undefined;
3016
+ }>, z.ZodObject<{
3017
+ items: z.ZodArray<z.ZodObject<{
3018
+ id: z.ZodString;
3019
+ title: z.ZodString;
3020
+ description: z.ZodString;
3021
+ icon: z.ZodString;
3022
+ }, "strip", z.ZodTypeAny, {
3023
+ title: string;
3024
+ id: string;
3025
+ icon: string;
3026
+ description: string;
3027
+ }, {
3028
+ title: string;
3029
+ id: string;
3030
+ icon: string;
3031
+ description: string;
3032
+ }>, "many">;
3033
+ presentation: z.ZodOptional<z.ZodLiteral<"cards">>;
3034
+ badge: z.ZodOptional<z.ZodString>;
3035
+ title: z.ZodOptional<z.ZodString>;
3036
+ description: z.ZodOptional<z.ZodString>;
3037
+ ctaLabel: z.ZodOptional<z.ZodString>;
3038
+ learnMoreLabel: z.ZodOptional<z.ZodString>;
3039
+ className: z.ZodOptional<z.ZodString>;
3040
+ }, "strip", z.ZodTypeAny, {
3041
+ items: {
3042
+ title: string;
3043
+ id: string;
3044
+ icon: string;
3045
+ description: string;
3046
+ }[];
3047
+ title?: string | undefined;
3048
+ className?: string | undefined;
3049
+ presentation?: "cards" | undefined;
3050
+ badge?: string | undefined;
3051
+ description?: string | undefined;
3052
+ ctaLabel?: string | undefined;
3053
+ learnMoreLabel?: string | undefined;
3054
+ }, {
3055
+ items: {
3056
+ title: string;
3057
+ id: string;
3058
+ icon: string;
3059
+ description: string;
3060
+ }[];
3061
+ title?: string | undefined;
3062
+ className?: string | undefined;
3063
+ presentation?: "cards" | undefined;
3064
+ badge?: string | undefined;
3065
+ description?: string | undefined;
3066
+ ctaLabel?: string | undefined;
3067
+ learnMoreLabel?: string | undefined;
3068
+ }>]>;
3069
+ export type FeatureSpecProps = z.infer<typeof featurePropsSchema>;
3070
+ /**
3071
+ * Canonical category contract for the consolidated `ProductCategory` block.
3072
+ *
3073
+ * `categories` is the canonical category projection (a `@thorprovider/types`
3074
+ * `ProductCategory` subset): ids are canonical strings, optional fields are
3075
+ * omitted rather than serialized as `""`, and there are no demo-only required
3076
+ * fields (no required subtitle, sector icon enum, or Lucide component). `icon`
3077
+ * is a plain, serializable icon-key string resolved by the block against a
3078
+ * bounded map with a neutral fallback. The `presentation` value is a bounded
3079
+ * structure switch, never a per-store fork. Callbacks are runtime props and are
3080
+ * excluded here (see the component).
3081
+ */
3082
+ export declare const productCategoryItemSchema: z.ZodObject<{
3083
+ id: z.ZodString;
3084
+ handle: z.ZodOptional<z.ZodString>;
3085
+ name: z.ZodString;
3086
+ description: z.ZodOptional<z.ZodString>;
3087
+ /** Optional real count; an unknown count is omitted, never fabricated as `0`. */
3088
+ itemCount: z.ZodOptional<z.ZodNumber>;
3089
+ /** Omitted (never `""`) when the backend has no image. */
3090
+ image: z.ZodOptional<z.ZodString>;
3091
+ trending: z.ZodOptional<z.ZodBoolean>;
3092
+ /** Serializable icon key (e.g. `'shirt'`); unknown keys render a neutral fallback. */
3093
+ icon: z.ZodOptional<z.ZodString>;
3094
+ subcategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3095
+ featured: z.ZodOptional<z.ZodBoolean>;
3096
+ }, "strip", z.ZodTypeAny, {
3097
+ id: string;
3098
+ name: string;
3099
+ image?: string | undefined;
3100
+ icon?: string | undefined;
3101
+ featured?: boolean | undefined;
3102
+ handle?: string | undefined;
3103
+ description?: string | undefined;
3104
+ itemCount?: number | undefined;
3105
+ trending?: boolean | undefined;
3106
+ subcategories?: string[] | undefined;
3107
+ }, {
3108
+ id: string;
3109
+ name: string;
3110
+ image?: string | undefined;
3111
+ icon?: string | undefined;
3112
+ featured?: boolean | undefined;
3113
+ handle?: string | undefined;
3114
+ description?: string | undefined;
3115
+ itemCount?: number | undefined;
3116
+ trending?: boolean | undefined;
3117
+ subcategories?: string[] | undefined;
3118
+ }>;
3119
+ export type ProductCategoryItem = z.infer<typeof productCategoryItemSchema>;
3120
+ export declare const productCategoryPropsSchema: z.ZodObject<{
3121
+ categories: z.ZodArray<z.ZodObject<{
3122
+ id: z.ZodString;
3123
+ handle: z.ZodOptional<z.ZodString>;
3124
+ name: z.ZodString;
3125
+ description: z.ZodOptional<z.ZodString>;
3126
+ /** Optional real count; an unknown count is omitted, never fabricated as `0`. */
3127
+ itemCount: z.ZodOptional<z.ZodNumber>;
3128
+ /** Omitted (never `""`) when the backend has no image. */
3129
+ image: z.ZodOptional<z.ZodString>;
3130
+ trending: z.ZodOptional<z.ZodBoolean>;
3131
+ /** Serializable icon key (e.g. `'shirt'`); unknown keys render a neutral fallback. */
3132
+ icon: z.ZodOptional<z.ZodString>;
3133
+ subcategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3134
+ featured: z.ZodOptional<z.ZodBoolean>;
3135
+ }, "strip", z.ZodTypeAny, {
3136
+ id: string;
3137
+ name: string;
3138
+ image?: string | undefined;
3139
+ icon?: string | undefined;
3140
+ featured?: boolean | undefined;
3141
+ handle?: string | undefined;
3142
+ description?: string | undefined;
3143
+ itemCount?: number | undefined;
3144
+ trending?: boolean | undefined;
3145
+ subcategories?: string[] | undefined;
3146
+ }, {
3147
+ id: string;
3148
+ name: string;
3149
+ image?: string | undefined;
3150
+ icon?: string | undefined;
3151
+ featured?: boolean | undefined;
3152
+ handle?: string | undefined;
3153
+ description?: string | undefined;
3154
+ itemCount?: number | undefined;
3155
+ trending?: boolean | undefined;
3156
+ subcategories?: string[] | undefined;
3157
+ }>, "many">;
3158
+ presentation: z.ZodOptional<z.ZodEnum<["grid", "icons", "list"]>>;
3159
+ title: z.ZodOptional<z.ZodString>;
3160
+ description: z.ZodOptional<z.ZodString>;
3161
+ badge: z.ZodOptional<z.ZodString>;
3162
+ cta: z.ZodOptional<z.ZodObject<{
3163
+ label: z.ZodString;
3164
+ href: z.ZodOptional<z.ZodString>;
3165
+ }, "strip", z.ZodTypeAny, {
3166
+ label: string;
3167
+ href?: string | undefined;
3168
+ }, {
3169
+ label: string;
3170
+ href?: string | undefined;
3171
+ }>>;
3172
+ /** Controlled search value; filtering is owned by the host. */
3173
+ query: z.ZodOptional<z.ZodString>;
3174
+ searchPlaceholder: z.ZodOptional<z.ZodString>;
3175
+ searchLabel: z.ZodOptional<z.ZodString>;
3176
+ emptyLabel: z.ZodOptional<z.ZodString>;
3177
+ noResultsLabel: z.ZodOptional<z.ZodString>;
3178
+ browseLabel: z.ZodOptional<z.ZodString>;
3179
+ viewAllLabel: z.ZodOptional<z.ZodString>;
3180
+ trendingLabel: z.ZodOptional<z.ZodString>;
3181
+ featuredLabel: z.ZodOptional<z.ZodString>;
3182
+ itemsLabel: z.ZodOptional<z.ZodString>;
3183
+ imageFallback: z.ZodOptional<z.ZodString>;
3184
+ className: z.ZodOptional<z.ZodString>;
3185
+ }, "strip", z.ZodTypeAny, {
3186
+ categories: {
3187
+ id: string;
3188
+ name: string;
3189
+ image?: string | undefined;
3190
+ icon?: string | undefined;
3191
+ featured?: boolean | undefined;
3192
+ handle?: string | undefined;
3193
+ description?: string | undefined;
3194
+ itemCount?: number | undefined;
3195
+ trending?: boolean | undefined;
3196
+ subcategories?: string[] | undefined;
3197
+ }[];
3198
+ title?: string | undefined;
3199
+ className?: string | undefined;
3200
+ presentation?: "grid" | "list" | "icons" | undefined;
3201
+ badge?: string | undefined;
3202
+ cta?: {
3203
+ label: string;
3204
+ href?: string | undefined;
3205
+ } | undefined;
3206
+ description?: string | undefined;
3207
+ emptyLabel?: string | undefined;
3208
+ itemsLabel?: string | undefined;
3209
+ searchPlaceholder?: string | undefined;
3210
+ searchLabel?: string | undefined;
3211
+ query?: string | undefined;
3212
+ noResultsLabel?: string | undefined;
3213
+ browseLabel?: string | undefined;
3214
+ viewAllLabel?: string | undefined;
3215
+ trendingLabel?: string | undefined;
3216
+ featuredLabel?: string | undefined;
3217
+ imageFallback?: string | undefined;
3218
+ }, {
3219
+ categories: {
3220
+ id: string;
3221
+ name: string;
3222
+ image?: string | undefined;
3223
+ icon?: string | undefined;
3224
+ featured?: boolean | undefined;
3225
+ handle?: string | undefined;
3226
+ description?: string | undefined;
3227
+ itemCount?: number | undefined;
3228
+ trending?: boolean | undefined;
3229
+ subcategories?: string[] | undefined;
3230
+ }[];
3231
+ title?: string | undefined;
3232
+ className?: string | undefined;
3233
+ presentation?: "grid" | "list" | "icons" | undefined;
3234
+ badge?: string | undefined;
3235
+ cta?: {
3236
+ label: string;
3237
+ href?: string | undefined;
3238
+ } | undefined;
3239
+ description?: string | undefined;
3240
+ emptyLabel?: string | undefined;
3241
+ itemsLabel?: string | undefined;
3242
+ searchPlaceholder?: string | undefined;
3243
+ searchLabel?: string | undefined;
3244
+ query?: string | undefined;
3245
+ noResultsLabel?: string | undefined;
3246
+ browseLabel?: string | undefined;
3247
+ viewAllLabel?: string | undefined;
3248
+ trendingLabel?: string | undefined;
3249
+ featuredLabel?: string | undefined;
3250
+ imageFallback?: string | undefined;
3251
+ }>;
3252
+ export type ProductCategorySpecProps = z.infer<typeof productCategoryPropsSchema>;
3253
+ export declare const categoryCardPropsSchema: z.ZodObject<{
3254
+ category: z.ZodObject<{
3255
+ id: z.ZodString;
3256
+ handle: z.ZodOptional<z.ZodString>;
3257
+ name: z.ZodString;
3258
+ description: z.ZodOptional<z.ZodString>;
3259
+ /** Optional real count; an unknown count is omitted, never fabricated as `0`. */
3260
+ itemCount: z.ZodOptional<z.ZodNumber>;
3261
+ /** Omitted (never `""`) when the backend has no image. */
3262
+ image: z.ZodOptional<z.ZodString>;
3263
+ trending: z.ZodOptional<z.ZodBoolean>;
3264
+ /** Serializable icon key (e.g. `'shirt'`); unknown keys render a neutral fallback. */
3265
+ icon: z.ZodOptional<z.ZodString>;
3266
+ subcategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3267
+ featured: z.ZodOptional<z.ZodBoolean>;
3268
+ }, "strip", z.ZodTypeAny, {
3269
+ id: string;
3270
+ name: string;
3271
+ image?: string | undefined;
3272
+ icon?: string | undefined;
3273
+ featured?: boolean | undefined;
3274
+ handle?: string | undefined;
3275
+ description?: string | undefined;
3276
+ itemCount?: number | undefined;
3277
+ trending?: boolean | undefined;
3278
+ subcategories?: string[] | undefined;
3279
+ }, {
3280
+ id: string;
3281
+ name: string;
3282
+ image?: string | undefined;
3283
+ icon?: string | undefined;
3284
+ featured?: boolean | undefined;
3285
+ handle?: string | undefined;
3286
+ description?: string | undefined;
3287
+ itemCount?: number | undefined;
3288
+ trending?: boolean | undefined;
3289
+ subcategories?: string[] | undefined;
3290
+ }>;
3291
+ presentation: z.ZodOptional<z.ZodEnum<["grid", "icons", "list"]>>;
3292
+ browseLabel: z.ZodOptional<z.ZodString>;
3293
+ itemsLabel: z.ZodOptional<z.ZodString>;
3294
+ trendingLabel: z.ZodOptional<z.ZodString>;
3295
+ featuredLabel: z.ZodOptional<z.ZodString>;
3296
+ imageFallback: z.ZodOptional<z.ZodString>;
3297
+ }, "strip", z.ZodTypeAny, {
3298
+ category: {
3299
+ id: string;
3300
+ name: string;
3301
+ image?: string | undefined;
3302
+ icon?: string | undefined;
3303
+ featured?: boolean | undefined;
3304
+ handle?: string | undefined;
3305
+ description?: string | undefined;
3306
+ itemCount?: number | undefined;
3307
+ trending?: boolean | undefined;
3308
+ subcategories?: string[] | undefined;
3309
+ };
3310
+ presentation?: "grid" | "list" | "icons" | undefined;
3311
+ itemsLabel?: string | undefined;
3312
+ browseLabel?: string | undefined;
3313
+ trendingLabel?: string | undefined;
3314
+ featuredLabel?: string | undefined;
3315
+ imageFallback?: string | undefined;
3316
+ }, {
3317
+ category: {
3318
+ id: string;
3319
+ name: string;
3320
+ image?: string | undefined;
3321
+ icon?: string | undefined;
3322
+ featured?: boolean | undefined;
3323
+ handle?: string | undefined;
3324
+ description?: string | undefined;
3325
+ itemCount?: number | undefined;
3326
+ trending?: boolean | undefined;
3327
+ subcategories?: string[] | undefined;
3328
+ };
3329
+ presentation?: "grid" | "list" | "icons" | undefined;
3330
+ itemsLabel?: string | undefined;
3331
+ browseLabel?: string | undefined;
3332
+ trendingLabel?: string | undefined;
3333
+ featuredLabel?: string | undefined;
3334
+ imageFallback?: string | undefined;
3335
+ }>;
3336
+ export type CategoryCardSpecProps = z.infer<typeof categoryCardPropsSchema>;
3337
+ export declare const categoryGridPropsSchema: z.ZodObject<{
3338
+ categories: z.ZodArray<z.ZodObject<{
3339
+ id: z.ZodString;
3340
+ handle: z.ZodOptional<z.ZodString>;
3341
+ name: z.ZodString;
3342
+ description: z.ZodOptional<z.ZodString>;
3343
+ /** Optional real count; an unknown count is omitted, never fabricated as `0`. */
3344
+ itemCount: z.ZodOptional<z.ZodNumber>;
3345
+ /** Omitted (never `""`) when the backend has no image. */
3346
+ image: z.ZodOptional<z.ZodString>;
3347
+ trending: z.ZodOptional<z.ZodBoolean>;
3348
+ /** Serializable icon key (e.g. `'shirt'`); unknown keys render a neutral fallback. */
3349
+ icon: z.ZodOptional<z.ZodString>;
3350
+ subcategories: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3351
+ featured: z.ZodOptional<z.ZodBoolean>;
3352
+ }, "strip", z.ZodTypeAny, {
3353
+ id: string;
3354
+ name: string;
3355
+ image?: string | undefined;
3356
+ icon?: string | undefined;
3357
+ featured?: boolean | undefined;
3358
+ handle?: string | undefined;
3359
+ description?: string | undefined;
3360
+ itemCount?: number | undefined;
3361
+ trending?: boolean | undefined;
3362
+ subcategories?: string[] | undefined;
3363
+ }, {
3364
+ id: string;
3365
+ name: string;
3366
+ image?: string | undefined;
3367
+ icon?: string | undefined;
3368
+ featured?: boolean | undefined;
3369
+ handle?: string | undefined;
3370
+ description?: string | undefined;
3371
+ itemCount?: number | undefined;
3372
+ trending?: boolean | undefined;
3373
+ subcategories?: string[] | undefined;
3374
+ }>, "many">;
3375
+ presentation: z.ZodOptional<z.ZodEnum<["grid", "icons", "list"]>>;
3376
+ title: z.ZodOptional<z.ZodString>;
3377
+ description: z.ZodOptional<z.ZodString>;
3378
+ badge: z.ZodOptional<z.ZodString>;
3379
+ cta: z.ZodOptional<z.ZodObject<{
3380
+ label: z.ZodString;
3381
+ href: z.ZodOptional<z.ZodString>;
3382
+ }, "strip", z.ZodTypeAny, {
3383
+ label: string;
3384
+ href?: string | undefined;
3385
+ }, {
3386
+ label: string;
3387
+ href?: string | undefined;
3388
+ }>>;
3389
+ /** Controlled search value; filtering is owned by the host. */
3390
+ query: z.ZodOptional<z.ZodString>;
3391
+ searchPlaceholder: z.ZodOptional<z.ZodString>;
3392
+ searchLabel: z.ZodOptional<z.ZodString>;
3393
+ emptyLabel: z.ZodOptional<z.ZodString>;
3394
+ noResultsLabel: z.ZodOptional<z.ZodString>;
3395
+ browseLabel: z.ZodOptional<z.ZodString>;
3396
+ viewAllLabel: z.ZodOptional<z.ZodString>;
3397
+ trendingLabel: z.ZodOptional<z.ZodString>;
3398
+ featuredLabel: z.ZodOptional<z.ZodString>;
3399
+ itemsLabel: z.ZodOptional<z.ZodString>;
3400
+ imageFallback: z.ZodOptional<z.ZodString>;
3401
+ className: z.ZodOptional<z.ZodString>;
3402
+ } & {
3403
+ maxItems: z.ZodOptional<z.ZodNumber>;
3404
+ loading: z.ZodOptional<z.ZodBoolean>;
3405
+ skeletonCount: z.ZodOptional<z.ZodNumber>;
3406
+ }, "strip", z.ZodTypeAny, {
3407
+ categories: {
3408
+ id: string;
3409
+ name: string;
3410
+ image?: string | undefined;
3411
+ icon?: string | undefined;
3412
+ featured?: boolean | undefined;
3413
+ handle?: string | undefined;
3414
+ description?: string | undefined;
3415
+ itemCount?: number | undefined;
3416
+ trending?: boolean | undefined;
3417
+ subcategories?: string[] | undefined;
3418
+ }[];
3419
+ title?: string | undefined;
3420
+ className?: string | undefined;
3421
+ presentation?: "grid" | "list" | "icons" | undefined;
3422
+ badge?: string | undefined;
3423
+ loading?: boolean | undefined;
3424
+ cta?: {
3425
+ label: string;
3426
+ href?: string | undefined;
3427
+ } | undefined;
3428
+ description?: string | undefined;
3429
+ maxItems?: number | undefined;
3430
+ skeletonCount?: number | undefined;
3431
+ emptyLabel?: string | undefined;
3432
+ itemsLabel?: string | undefined;
3433
+ searchPlaceholder?: string | undefined;
3434
+ searchLabel?: string | undefined;
3435
+ query?: string | undefined;
3436
+ noResultsLabel?: string | undefined;
3437
+ browseLabel?: string | undefined;
3438
+ viewAllLabel?: string | undefined;
3439
+ trendingLabel?: string | undefined;
3440
+ featuredLabel?: string | undefined;
3441
+ imageFallback?: string | undefined;
3442
+ }, {
3443
+ categories: {
3444
+ id: string;
3445
+ name: string;
3446
+ image?: string | undefined;
3447
+ icon?: string | undefined;
3448
+ featured?: boolean | undefined;
3449
+ handle?: string | undefined;
3450
+ description?: string | undefined;
3451
+ itemCount?: number | undefined;
3452
+ trending?: boolean | undefined;
3453
+ subcategories?: string[] | undefined;
3454
+ }[];
3455
+ title?: string | undefined;
3456
+ className?: string | undefined;
3457
+ presentation?: "grid" | "list" | "icons" | undefined;
3458
+ badge?: string | undefined;
3459
+ loading?: boolean | undefined;
3460
+ cta?: {
3461
+ label: string;
3462
+ href?: string | undefined;
3463
+ } | undefined;
3464
+ description?: string | undefined;
3465
+ maxItems?: number | undefined;
3466
+ skeletonCount?: number | undefined;
3467
+ emptyLabel?: string | undefined;
3468
+ itemsLabel?: string | undefined;
3469
+ searchPlaceholder?: string | undefined;
3470
+ searchLabel?: string | undefined;
3471
+ query?: string | undefined;
3472
+ noResultsLabel?: string | undefined;
3473
+ browseLabel?: string | undefined;
3474
+ viewAllLabel?: string | undefined;
3475
+ trendingLabel?: string | undefined;
3476
+ featuredLabel?: string | undefined;
3477
+ imageFallback?: string | undefined;
3478
+ }>;
3479
+ export type CategoryGridSpecProps = z.infer<typeof categoryGridPropsSchema>;
3480
+ /**
3481
+ * Canonical order-history contracts (change: consolidate-order-history-family).
3482
+ *
3483
+ * `OrderHistory` is the order-level collection section and `OrderLine` is its
3484
+ * item cell. Both are `Money`-only: there is no numeric money field, so a host
3485
+ * cannot supply a `toFixed` amount, and the block never sums lines into a
3486
+ * total. `status` is data (`label` plus optional `tone`) so no status literal
3487
+ * is compared anywhere. Callbacks, `locale`, and the formatter are runtime
3488
+ * props and are excluded here, as in the cart contract.
3489
+ */
3490
+ export declare const orderHistoryPresentationSchema: z.ZodEnum<["cards", "rows"]>;
3491
+ export type OrderHistoryPresentationSpec = z.infer<typeof orderHistoryPresentationSchema>;
3492
+ export declare const orderHistoryStatusSchema: z.ZodObject<{
3493
+ label: z.ZodString;
3494
+ tone: z.ZodOptional<z.ZodEnum<["default", "secondary", "destructive", "outline"]>>;
3495
+ }, "strip", z.ZodTypeAny, {
3496
+ label: string;
3497
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3498
+ }, {
3499
+ label: string;
3500
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3501
+ }>;
3502
+ export type OrderHistoryStatusSpec = z.infer<typeof orderHistoryStatusSchema>;
3503
+ export declare const orderLineDataSchema: z.ZodObject<{
3504
+ /** Backend line identity; the React key. */
3505
+ id: z.ZodString;
3506
+ name: z.ZodString;
3507
+ /** Optional; absent images are omitted, never serialized as `""`. */
3508
+ image: z.ZodOptional<z.ZodString>;
3509
+ details: z.ZodOptional<z.ZodString>;
3510
+ quantity: z.ZodNumber;
3511
+ /** Canonical backend line total; rendered verbatim. */
3512
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
3513
+ }, "strip", z.ZodTypeAny, {
3514
+ id: string;
3515
+ name: string;
3516
+ quantity: number;
3517
+ lineTotal: Money;
3518
+ details?: string | undefined;
3519
+ image?: string | undefined;
3520
+ }, {
3521
+ id: string;
3522
+ name: string;
3523
+ quantity: number;
3524
+ lineTotal: Money;
3525
+ details?: string | undefined;
3526
+ image?: string | undefined;
3527
+ }>;
3528
+ export type OrderLineDataSpec = z.infer<typeof orderLineDataSchema>;
3529
+ export declare const orderHistoryOrderSchema: z.ZodObject<{
3530
+ /** Backend order identity; the React key and the action callback argument. */
3531
+ id: z.ZodString;
3532
+ number: z.ZodString;
3533
+ date: z.ZodString;
3534
+ status: z.ZodObject<{
3535
+ label: z.ZodString;
3536
+ tone: z.ZodOptional<z.ZodEnum<["default", "secondary", "destructive", "outline"]>>;
3537
+ }, "strip", z.ZodTypeAny, {
3538
+ label: string;
3539
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3540
+ }, {
3541
+ label: string;
3542
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3543
+ }>;
3544
+ /** Canonical backend order total; rendered verbatim, never aggregated. */
3545
+ total: z.ZodType<Money, z.ZodTypeDef, Money>;
3546
+ items: z.ZodArray<z.ZodObject<{
3547
+ /** Backend line identity; the React key. */
3548
+ id: z.ZodString;
3549
+ name: z.ZodString;
3550
+ /** Optional; absent images are omitted, never serialized as `""`. */
3551
+ image: z.ZodOptional<z.ZodString>;
3552
+ details: z.ZodOptional<z.ZodString>;
3553
+ quantity: z.ZodNumber;
3554
+ /** Canonical backend line total; rendered verbatim. */
3555
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
3556
+ }, "strip", z.ZodTypeAny, {
3557
+ id: string;
3558
+ name: string;
3559
+ quantity: number;
3560
+ lineTotal: Money;
3561
+ details?: string | undefined;
3562
+ image?: string | undefined;
3563
+ }, {
3564
+ id: string;
3565
+ name: string;
3566
+ quantity: number;
3567
+ lineTotal: Money;
3568
+ details?: string | undefined;
3569
+ image?: string | undefined;
3570
+ }>, "many">;
3571
+ trackable: z.ZodOptional<z.ZodBoolean>;
3572
+ }, "strip", z.ZodTypeAny, {
3573
+ number: string;
3574
+ id: string;
3575
+ status: {
3576
+ label: string;
3577
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3578
+ };
3579
+ date: string;
3580
+ items: {
3581
+ id: string;
3582
+ name: string;
3583
+ quantity: number;
3584
+ lineTotal: Money;
3585
+ details?: string | undefined;
3586
+ image?: string | undefined;
3587
+ }[];
3588
+ total: Money;
3589
+ trackable?: boolean | undefined;
3590
+ }, {
3591
+ number: string;
3592
+ id: string;
3593
+ status: {
3594
+ label: string;
3595
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3596
+ };
3597
+ date: string;
3598
+ items: {
3599
+ id: string;
3600
+ name: string;
3601
+ quantity: number;
3602
+ lineTotal: Money;
3603
+ details?: string | undefined;
3604
+ image?: string | undefined;
3605
+ }[];
3606
+ total: Money;
3607
+ trackable?: boolean | undefined;
3608
+ }>;
3609
+ export type OrderHistoryOrderSpec = z.infer<typeof orderHistoryOrderSchema>;
3610
+ export declare const orderHistoryPropsSchema: z.ZodObject<{
3611
+ orders: z.ZodArray<z.ZodObject<{
3612
+ /** Backend order identity; the React key and the action callback argument. */
3613
+ id: z.ZodString;
3614
+ number: z.ZodString;
3615
+ date: z.ZodString;
3616
+ status: z.ZodObject<{
3617
+ label: z.ZodString;
3618
+ tone: z.ZodOptional<z.ZodEnum<["default", "secondary", "destructive", "outline"]>>;
3619
+ }, "strip", z.ZodTypeAny, {
3620
+ label: string;
3621
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3622
+ }, {
3623
+ label: string;
3624
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3625
+ }>;
3626
+ /** Canonical backend order total; rendered verbatim, never aggregated. */
3627
+ total: z.ZodType<Money, z.ZodTypeDef, Money>;
3628
+ items: z.ZodArray<z.ZodObject<{
3629
+ /** Backend line identity; the React key. */
3630
+ id: z.ZodString;
3631
+ name: z.ZodString;
3632
+ /** Optional; absent images are omitted, never serialized as `""`. */
3633
+ image: z.ZodOptional<z.ZodString>;
3634
+ details: z.ZodOptional<z.ZodString>;
3635
+ quantity: z.ZodNumber;
3636
+ /** Canonical backend line total; rendered verbatim. */
3637
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
3638
+ }, "strip", z.ZodTypeAny, {
3639
+ id: string;
3640
+ name: string;
3641
+ quantity: number;
3642
+ lineTotal: Money;
3643
+ details?: string | undefined;
3644
+ image?: string | undefined;
3645
+ }, {
3646
+ id: string;
3647
+ name: string;
3648
+ quantity: number;
3649
+ lineTotal: Money;
3650
+ details?: string | undefined;
3651
+ image?: string | undefined;
3652
+ }>, "many">;
3653
+ trackable: z.ZodOptional<z.ZodBoolean>;
3654
+ }, "strip", z.ZodTypeAny, {
3655
+ number: string;
3656
+ id: string;
3657
+ status: {
3658
+ label: string;
3659
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3660
+ };
3661
+ date: string;
3662
+ items: {
3663
+ id: string;
3664
+ name: string;
3665
+ quantity: number;
3666
+ lineTotal: Money;
3667
+ details?: string | undefined;
3668
+ image?: string | undefined;
3669
+ }[];
3670
+ total: Money;
3671
+ trackable?: boolean | undefined;
3672
+ }, {
3673
+ number: string;
3674
+ id: string;
3675
+ status: {
3676
+ label: string;
3677
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3678
+ };
3679
+ date: string;
3680
+ items: {
3681
+ id: string;
3682
+ name: string;
3683
+ quantity: number;
3684
+ lineTotal: Money;
3685
+ details?: string | undefined;
3686
+ image?: string | undefined;
3687
+ }[];
3688
+ total: Money;
3689
+ trackable?: boolean | undefined;
3690
+ }>, "many">;
3691
+ presentation: z.ZodOptional<z.ZodEnum<["cards", "rows"]>>;
3692
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3693
+ className: z.ZodOptional<z.ZodString>;
3694
+ }, "strip", z.ZodTypeAny, {
3695
+ orders: {
3696
+ number: string;
3697
+ id: string;
3698
+ status: {
3699
+ label: string;
3700
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3701
+ };
3702
+ date: string;
3703
+ items: {
3704
+ id: string;
3705
+ name: string;
3706
+ quantity: number;
3707
+ lineTotal: Money;
3708
+ details?: string | undefined;
3709
+ image?: string | undefined;
3710
+ }[];
3711
+ total: Money;
3712
+ trackable?: boolean | undefined;
3713
+ }[];
3714
+ className?: string | undefined;
3715
+ presentation?: "cards" | "rows" | undefined;
3716
+ labels?: Record<string, string> | undefined;
3717
+ }, {
3718
+ orders: {
3719
+ number: string;
3720
+ id: string;
3721
+ status: {
3722
+ label: string;
3723
+ tone?: "default" | "secondary" | "destructive" | "outline" | undefined;
3724
+ };
3725
+ date: string;
3726
+ items: {
3727
+ id: string;
3728
+ name: string;
3729
+ quantity: number;
3730
+ lineTotal: Money;
3731
+ details?: string | undefined;
3732
+ image?: string | undefined;
3733
+ }[];
3734
+ total: Money;
3735
+ trackable?: boolean | undefined;
3736
+ }[];
3737
+ className?: string | undefined;
3738
+ presentation?: "cards" | "rows" | undefined;
3739
+ labels?: Record<string, string> | undefined;
3740
+ }>;
3741
+ export type OrderHistorySpecProps = z.infer<typeof orderHistoryPropsSchema>;
3742
+ export declare const orderLinePropsSchema: z.ZodObject<{
3743
+ name: z.ZodString;
3744
+ image: z.ZodOptional<z.ZodString>;
3745
+ details: z.ZodOptional<z.ZodString>;
3746
+ quantity: z.ZodNumber;
3747
+ lineTotal: z.ZodType<Money, z.ZodTypeDef, Money>;
3748
+ quantityLabel: z.ZodOptional<z.ZodString>;
3749
+ amountUnavailableLabel: z.ZodOptional<z.ZodString>;
3750
+ className: z.ZodOptional<z.ZodString>;
3751
+ }, "strip", z.ZodTypeAny, {
3752
+ name: string;
3753
+ quantity: number;
3754
+ lineTotal: Money;
3755
+ details?: string | undefined;
3756
+ image?: string | undefined;
3757
+ className?: string | undefined;
3758
+ quantityLabel?: string | undefined;
3759
+ amountUnavailableLabel?: string | undefined;
3760
+ }, {
3761
+ name: string;
3762
+ quantity: number;
3763
+ lineTotal: Money;
3764
+ details?: string | undefined;
3765
+ image?: string | undefined;
3766
+ className?: string | undefined;
3767
+ quantityLabel?: string | undefined;
3768
+ amountUnavailableLabel?: string | undefined;
3769
+ }>;
3770
+ export type OrderLineSpecProps = z.infer<typeof orderLinePropsSchema>;
3771
+ /**
3772
+ * Canonical review contracts (change: consolidate-review-family).
3773
+ *
3774
+ * `ReviewSummary` is the aggregate unit, `ReviewList` the collection section,
3775
+ * `ReviewCard` its item cell, and `ReviewComposer` the controlled form. The
3776
+ * aggregate fields are required here for the same reason they are required in
3777
+ * the component: an absent average must stop a host from rendering a summary,
3778
+ * not become a zero. Callbacks and `resetSignal` are runtime props and are
3779
+ * excluded, as in the cart and order-history contracts.
3780
+ */
3781
+ export declare const reviewRatingValueSchema: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>]>;
3782
+ export type ReviewRatingValueSpec = z.infer<typeof reviewRatingValueSchema>;
3783
+ export declare const reviewDistributionSchema: z.ZodObject<{
3784
+ /** Every rating value is required; a partial distribution is rejected. */
3785
+ 1: z.ZodNumber;
3786
+ 2: z.ZodNumber;
3787
+ 3: z.ZodNumber;
3788
+ 4: z.ZodNumber;
3789
+ 5: z.ZodNumber;
3790
+ }, "strip", z.ZodTypeAny, {
3791
+ 1: number;
3792
+ 2: number;
3793
+ 3: number;
3794
+ 4: number;
3795
+ 5: number;
3796
+ }, {
3797
+ 1: number;
3798
+ 2: number;
3799
+ 3: number;
3800
+ 4: number;
3801
+ 5: number;
3802
+ }>;
3803
+ export type ReviewDistributionSpec = z.infer<typeof reviewDistributionSchema>;
3804
+ export declare const reviewItemSchema: z.ZodObject<{
3805
+ /** Backend review identity; the React key and the action argument. */
3806
+ id: z.ZodString;
3807
+ author: z.ZodString;
3808
+ /** Optional; absent avatars are omitted, never serialized as `""`. */
3809
+ avatar: z.ZodOptional<z.ZodString>;
3810
+ /** Host-formatted display date, rendered verbatim. */
3811
+ date: z.ZodString;
3812
+ /** Optional machine-readable value; the cell emits it only when it parses. */
3813
+ dateTime: z.ZodOptional<z.ZodString>;
3814
+ rating: z.ZodNumber;
3815
+ content: z.ZodString;
3816
+ /** Host-authoritative count; absent means unknown, never zero. */
3817
+ helpfulCount: z.ZodOptional<z.ZodNumber>;
3818
+ likedByViewer: z.ZodOptional<z.ZodBoolean>;
3819
+ }, "strip", z.ZodTypeAny, {
3820
+ id: string;
3821
+ content: string;
3822
+ date: string;
3823
+ author: string;
3824
+ rating: number;
3825
+ avatar?: string | undefined;
3826
+ dateTime?: string | undefined;
3827
+ helpfulCount?: number | undefined;
3828
+ likedByViewer?: boolean | undefined;
3829
+ }, {
3830
+ id: string;
3831
+ content: string;
3832
+ date: string;
3833
+ author: string;
3834
+ rating: number;
3835
+ avatar?: string | undefined;
3836
+ dateTime?: string | undefined;
3837
+ helpfulCount?: number | undefined;
3838
+ likedByViewer?: boolean | undefined;
3839
+ }>;
3840
+ export type ReviewItemSpec = z.infer<typeof reviewItemSchema>;
3841
+ export declare const reviewSummaryPropsSchema: z.ZodObject<{
3842
+ averageRating: z.ZodNumber;
3843
+ totalReviews: z.ZodNumber;
3844
+ distribution: z.ZodObject<{
3845
+ /** Every rating value is required; a partial distribution is rejected. */
3846
+ 1: z.ZodNumber;
3847
+ 2: z.ZodNumber;
3848
+ 3: z.ZodNumber;
3849
+ 4: z.ZodNumber;
3850
+ 5: z.ZodNumber;
3851
+ }, "strip", z.ZodTypeAny, {
3852
+ 1: number;
3853
+ 2: number;
3854
+ 3: number;
3855
+ 4: number;
3856
+ 5: number;
3857
+ }, {
3858
+ 1: number;
3859
+ 2: number;
3860
+ 3: number;
3861
+ 4: number;
3862
+ 5: number;
3863
+ }>;
3864
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3865
+ locale: z.ZodOptional<z.ZodString>;
3866
+ className: z.ZodOptional<z.ZodString>;
3867
+ }, "strip", z.ZodTypeAny, {
3868
+ averageRating: number;
3869
+ totalReviews: number;
3870
+ distribution: {
3871
+ 1: number;
3872
+ 2: number;
3873
+ 3: number;
3874
+ 4: number;
3875
+ 5: number;
3876
+ };
3877
+ className?: string | undefined;
3878
+ labels?: Record<string, string> | undefined;
3879
+ locale?: string | undefined;
3880
+ }, {
3881
+ averageRating: number;
3882
+ totalReviews: number;
3883
+ distribution: {
3884
+ 1: number;
3885
+ 2: number;
3886
+ 3: number;
3887
+ 4: number;
3888
+ 5: number;
3889
+ };
3890
+ className?: string | undefined;
3891
+ labels?: Record<string, string> | undefined;
3892
+ locale?: string | undefined;
3893
+ }>;
3894
+ export type ReviewSummarySpecProps = z.infer<typeof reviewSummaryPropsSchema>;
3895
+ export declare const reviewListPresentationSchema: z.ZodEnum<["list", "carousel"]>;
3896
+ export type ReviewListPresentationSpec = z.infer<typeof reviewListPresentationSchema>;
3897
+ export declare const reviewListPropsSchema: z.ZodObject<{
3898
+ reviews: z.ZodArray<z.ZodObject<{
3899
+ /** Backend review identity; the React key and the action argument. */
3900
+ id: z.ZodString;
3901
+ author: z.ZodString;
3902
+ /** Optional; absent avatars are omitted, never serialized as `""`. */
3903
+ avatar: z.ZodOptional<z.ZodString>;
3904
+ /** Host-formatted display date, rendered verbatim. */
3905
+ date: z.ZodString;
3906
+ /** Optional machine-readable value; the cell emits it only when it parses. */
3907
+ dateTime: z.ZodOptional<z.ZodString>;
3908
+ rating: z.ZodNumber;
3909
+ content: z.ZodString;
3910
+ /** Host-authoritative count; absent means unknown, never zero. */
3911
+ helpfulCount: z.ZodOptional<z.ZodNumber>;
3912
+ likedByViewer: z.ZodOptional<z.ZodBoolean>;
3913
+ }, "strip", z.ZodTypeAny, {
3914
+ id: string;
3915
+ content: string;
3916
+ date: string;
3917
+ author: string;
3918
+ rating: number;
3919
+ avatar?: string | undefined;
3920
+ dateTime?: string | undefined;
3921
+ helpfulCount?: number | undefined;
3922
+ likedByViewer?: boolean | undefined;
3923
+ }, {
3924
+ id: string;
3925
+ content: string;
3926
+ date: string;
3927
+ author: string;
3928
+ rating: number;
3929
+ avatar?: string | undefined;
3930
+ dateTime?: string | undefined;
3931
+ helpfulCount?: number | undefined;
3932
+ likedByViewer?: boolean | undefined;
3933
+ }>, "many">;
3934
+ presentation: z.ZodOptional<z.ZodEnum<["list", "carousel"]>>;
3935
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3936
+ cardLabels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3937
+ className: z.ZodOptional<z.ZodString>;
3938
+ }, "strip", z.ZodTypeAny, {
3939
+ reviews: {
3940
+ id: string;
3941
+ content: string;
3942
+ date: string;
3943
+ author: string;
3944
+ rating: number;
3945
+ avatar?: string | undefined;
3946
+ dateTime?: string | undefined;
3947
+ helpfulCount?: number | undefined;
3948
+ likedByViewer?: boolean | undefined;
3949
+ }[];
3950
+ className?: string | undefined;
3951
+ presentation?: "list" | "carousel" | undefined;
3952
+ labels?: Record<string, string> | undefined;
3953
+ cardLabels?: Record<string, string> | undefined;
3954
+ }, {
3955
+ reviews: {
3956
+ id: string;
3957
+ content: string;
3958
+ date: string;
3959
+ author: string;
3960
+ rating: number;
3961
+ avatar?: string | undefined;
3962
+ dateTime?: string | undefined;
3963
+ helpfulCount?: number | undefined;
3964
+ likedByViewer?: boolean | undefined;
3965
+ }[];
3966
+ className?: string | undefined;
3967
+ presentation?: "list" | "carousel" | undefined;
3968
+ labels?: Record<string, string> | undefined;
3969
+ cardLabels?: Record<string, string> | undefined;
3970
+ }>;
3971
+ export type ReviewListSpecProps = z.infer<typeof reviewListPropsSchema>;
3972
+ export declare const reviewComposerDataSchema: z.ZodObject<{
3973
+ name: z.ZodString;
3974
+ email: z.ZodString;
3975
+ content: z.ZodString;
3976
+ rating: z.ZodUnion<[z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>, z.ZodLiteral<4>, z.ZodLiteral<5>]>;
3977
+ }, "strip", z.ZodTypeAny, {
3978
+ content: string;
3979
+ email: string;
3980
+ name: string;
3981
+ rating: 1 | 2 | 3 | 4 | 5;
3982
+ }, {
3983
+ content: string;
3984
+ email: string;
3985
+ name: string;
3986
+ rating: 1 | 2 | 3 | 4 | 5;
3987
+ }>;
3988
+ export type ReviewComposerDataSpec = z.infer<typeof reviewComposerDataSchema>;
3989
+ export declare const reviewComposerPropsSchema: z.ZodObject<{
3990
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3991
+ isSubmitting: z.ZodOptional<z.ZodBoolean>;
3992
+ error: z.ZodOptional<z.ZodString>;
3993
+ className: z.ZodOptional<z.ZodString>;
3994
+ }, "strip", z.ZodTypeAny, {
3995
+ className?: string | undefined;
3996
+ error?: string | undefined;
3997
+ labels?: Record<string, string> | undefined;
3998
+ isSubmitting?: boolean | undefined;
3999
+ }, {
4000
+ className?: string | undefined;
4001
+ error?: string | undefined;
4002
+ labels?: Record<string, string> | undefined;
4003
+ isSubmitting?: boolean | undefined;
4004
+ }>;
4005
+ export type ReviewComposerSpecProps = z.infer<typeof reviewComposerPropsSchema>;
4006
+ export { isCompleteFiniteDecimal, isAvailableMoney, formatMoney } from './money';
4007
+ export { resolveAbsoluteQuantity } from './cart';
4008
+ //# sourceMappingURL=contracts.d.ts.map