@thorprovider/blocks 1.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (859) hide show
  1. package/README.md +274 -46
  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 +8 -1
  688. package/AGENTS.md +0 -1
  689. package/CHANGELOG.md +0 -107
  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-1.tsx +0 -246
  697. package/src/blocks/application/login-forms/login-page-2.tsx +0 -207
  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 -320
  700. package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -231
  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/e-commerce/category-filters/category-filter-1.tsx +0 -260
  704. package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +0 -222
  705. package/src/blocks/e-commerce/category-filters/category-filter-2.test.tsx +0 -513
  706. package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +0 -921
  707. package/src/blocks/e-commerce/category-filters/category-filter-4-chip-rail.tsx +0 -57
  708. package/src/blocks/e-commerce/category-filters/category-filter-4-drawer.tsx +0 -124
  709. package/src/blocks/e-commerce/category-filters/category-filter-4-fields.tsx +0 -170
  710. package/src/blocks/e-commerce/category-filters/category-filter-4-sidebar.tsx +0 -52
  711. package/src/blocks/e-commerce/category-filters/category-filter-4-sort-sheet.tsx +0 -57
  712. package/src/blocks/e-commerce/category-filters/category-filter-4-state.ts +0 -68
  713. package/src/blocks/e-commerce/category-filters/category-filter-4.tsx +0 -298
  714. package/src/blocks/e-commerce/checkout-forms/card-formatting.test.ts +0 -47
  715. package/src/blocks/e-commerce/checkout-forms/card-formatting.ts +0 -9
  716. package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
  717. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
  718. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
  719. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
  720. package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
  721. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-contact-step.tsx +0 -96
  722. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-country-field.tsx +0 -51
  723. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +0 -252
  724. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +0 -188
  725. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-progress.tsx +0 -36
  726. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-shipping-step.tsx +0 -156
  727. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +0 -216
  728. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +0 -338
  729. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-order-summary.tsx +0 -130
  730. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-payment-card.tsx +0 -175
  731. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-shipping-card.tsx +0 -190
  732. package/src/blocks/e-commerce/checkout-forms/checkout-form-2.tsx +0 -312
  733. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-information-step.tsx +0 -91
  734. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-order-summary.tsx +0 -110
  735. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-payment-step.tsx +0 -137
  736. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-progress.tsx +0 -68
  737. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-review-step.tsx +0 -79
  738. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-shipping-step.tsx +0 -172
  739. package/src/blocks/e-commerce/checkout-forms/checkout-form-3.tsx +0 -392
  740. package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
  741. package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
  742. package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
  743. package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
  744. package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
  745. package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
  746. package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
  747. package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
  748. package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
  749. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
  750. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
  751. package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
  752. package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
  753. package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
  754. package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
  755. package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
  756. package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
  757. package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
  758. package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
  759. package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
  760. package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
  761. package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
  762. package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
  763. package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
  764. package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
  765. package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
  766. package/src/blocks/e-commerce/product-list/product-card.tsx +0 -424
  767. package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
  768. package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
  769. package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
  770. package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
  771. package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
  772. package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
  773. package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
  774. package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
  775. package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
  776. package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
  777. package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
  778. package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
  779. package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
  780. package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
  781. package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
  782. package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
  783. package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
  784. package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
  785. package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
  786. package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
  787. package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
  788. package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
  789. package/src/blocks/marketing/banners/banner-1.tsx +0 -188
  790. package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
  791. package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
  792. package/src/blocks/marketing/features/feature.test.tsx +0 -153
  793. package/src/blocks/marketing/features/feature.tsx +0 -195
  794. package/src/blocks/marketing/footers/footer-section-1.test.tsx +0 -117
  795. package/src/blocks/marketing/footers/footer-section-1.tsx +0 -178
  796. package/src/blocks/marketing/footers/footer-section-3.tsx +0 -192
  797. package/src/blocks/marketing/footers/footer-section-4.tsx +0 -355
  798. package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
  799. package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
  800. package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
  801. package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
  802. package/src/blocks/marketing/navbars/navbar-1.tsx +0 -267
  803. package/src/blocks/marketing/navbars/navbar-2.tsx +0 -351
  804. package/src/blocks/marketing/navbars/navbar-3.tsx +0 -303
  805. package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +0 -56
  806. package/src/blocks/marketing/navbars/navbar-4-account-menu.tsx +0 -134
  807. package/src/blocks/marketing/navbars/navbar-4-cart-sheet.test.tsx +0 -204
  808. package/src/blocks/marketing/navbars/navbar-4-cart-sheet.tsx +0 -371
  809. package/src/blocks/marketing/navbars/navbar-4-like-button.tsx +0 -177
  810. package/src/blocks/marketing/navbars/navbar-4-mobile-nav.tsx +0 -104
  811. package/src/blocks/marketing/navbars/navbar-4-product-grid.tsx +0 -219
  812. package/src/blocks/marketing/navbars/navbar-4-search-bar.tsx +0 -52
  813. package/src/blocks/marketing/navbars/navbar-4.test.tsx +0 -264
  814. package/src/blocks/marketing/navbars/navbar-4.tsx +0 -604
  815. package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
  816. package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
  817. package/src/blocks/marketing/testimonials/testimonial-1.tsx +0 -141
  818. package/src/blocks/marketing/testimonials/testimonial-2.tsx +0 -108
  819. package/src/blocks/shared/reaction-toggle.tsx +0 -145
  820. package/src/hooks/use-mobile.ts +0 -19
  821. package/src/index.ts +0 -285
  822. package/src/lib/cart.test.ts +0 -15
  823. package/src/lib/contracts-curated.test.ts +0 -225
  824. package/src/lib/contracts-server-boundary.test.ts +0 -52
  825. package/src/lib/contracts.test.ts +0 -173
  826. package/src/lib/contracts.ts +0 -795
  827. package/src/lib/money.test.ts +0 -64
  828. package/src/lib/money.ts +0 -65
  829. package/src/lib/types/menu.ts +0 -43
  830. package/src/lib/types.ts +0 -4
  831. package/src/lib/utils.ts +0 -10
  832. package/src/ui/accordion.tsx +0 -65
  833. package/src/ui/badge.tsx +0 -47
  834. package/src/ui/breadcrumb.tsx +0 -108
  835. package/src/ui/button-group.tsx +0 -83
  836. package/src/ui/button.tsx +0 -63
  837. package/src/ui/card.tsx +0 -91
  838. package/src/ui/carousel.tsx +0 -241
  839. package/src/ui/dialog.tsx +0 -158
  840. package/src/ui/drawer.tsx +0 -134
  841. package/src/ui/dropdown-menu.tsx +0 -256
  842. package/src/ui/empty.tsx +0 -103
  843. package/src/ui/input-otp.tsx +0 -76
  844. package/src/ui/label.tsx +0 -23
  845. package/src/ui/pagination.tsx +0 -127
  846. package/src/ui/progress.tsx +0 -30
  847. package/src/ui/radio-group.tsx +0 -44
  848. package/src/ui/select.tsx +0 -189
  849. package/src/ui/separator.tsx +0 -27
  850. package/src/ui/sheet.tsx +0 -142
  851. package/src/ui/sidebar.tsx +0 -726
  852. package/src/ui/skeleton.tsx +0 -13
  853. package/src/ui/table.tsx +0 -115
  854. package/src/ui/toggle-group.tsx +0 -83
  855. package/src/ui/tooltip.tsx +0 -56
  856. package/tsconfig.build.json +0 -12
  857. package/tsconfig.json +0 -20
  858. package/tsup.config.ts +0 -19
  859. package/vitest.config.ts +0 -17
@@ -0,0 +1,68 @@
1
+ export interface QuickViewOption {
2
+ value: string;
3
+ label: string;
4
+ available: boolean;
5
+ /**
6
+ * A literal colour for a swatch, when the option is one.
7
+ *
8
+ * Finish colours are product data, not theme data: brass has to stay brass whatever preset the
9
+ * customizer is on. It is the one place in the block that is not a token, and the option's
10
+ * label always carries the same information in words.
11
+ */
12
+ swatch?: string;
13
+ }
14
+ export interface QuickViewVariant {
15
+ key: string;
16
+ label: string;
17
+ /**
18
+ * Which option a product opens on.
19
+ *
20
+ * Not simply the first available one: sizes are listed smallest first, and the sofa is sold as
21
+ * the size its name promises, so the panel would otherwise open on an option that disagrees
22
+ * with the card the reader just pressed.
23
+ */
24
+ defaultValue?: string;
25
+ options: QuickViewOption[];
26
+ }
27
+ export interface QuickViewProduct {
28
+ id: string;
29
+ name: string;
30
+ /** The one line that says what it is, under the name on the card and in the panel. */
31
+ tagline: string;
32
+ category: string;
33
+ price: number;
34
+ compareAt?: number;
35
+ rating: number;
36
+ reviewCount: number;
37
+ /** In stock, and low enough to be worth saying. Omitted when there is plenty. */
38
+ unitsLeft?: number;
39
+ image: string;
40
+ imageAlt: string;
41
+ description: string;
42
+ /** The panel shows these as a list, not as a specification table. */
43
+ details: string[];
44
+ variants: QuickViewVariant[];
45
+ /** Where the full product page lives. The panel only links to it when set. */
46
+ href?: string;
47
+ }
48
+ export interface ProductQuickViewProps {
49
+ products: QuickViewProduct[];
50
+ eyebrow?: string;
51
+ heading?: string;
52
+ lede?: string;
53
+ /**
54
+ * Called with the chosen options when the reader adds to cart. When absent the button still
55
+ * shows and keeps its added-to-cart confirmation; it just has nowhere to report to.
56
+ */
57
+ onAddToCart?: (product: QuickViewProduct, quantity: number, selection: Record<string, string>) => void;
58
+ }
59
+ /**
60
+ * A product grid whose point is the panel that opens over it.
61
+ *
62
+ * One dialog serves the whole catalogue rather than one per card: the panel steps between
63
+ * products from inside, the card it is showing stays lit underneath, and closing puts the reader
64
+ * back exactly where the grid says they are.
65
+ */
66
+ export declare function ProductQuickView({ products, eyebrow, heading, lede, onAddToCart, }: ProductQuickViewProps): import("react").JSX.Element;
67
+ export default ProductQuickView;
68
+ //# sourceMappingURL=product-quick-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-quick-view.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;IAClB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,eAAe,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,sFAAsF;IACtF,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,CACZ,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC9B,IAAI,CAAA;CACV;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAqC,EACrC,OAAmE,EACnE,IAAsM,EACtM,WAAW,GACZ,EAAE,qBAAqB,+BA6CvB;AAED,eAAe,gBAAgB,CAAA"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ "use client";
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var product_quick_view_exports = {};
21
+ __export(product_quick_view_exports, {
22
+ ProductQuickView: () => ProductQuickView,
23
+ default: () => product_quick_view_default
24
+ });
25
+ module.exports = __toCommonJS(product_quick_view_exports);
26
+ var import_jsx_runtime = require("react/jsx-runtime");
27
+ var import_react = require("react");
28
+ var import_badge = require("../../../ui/badge.js");
29
+ var import_product_quick_view_card = require("./product-quick-view-card.js");
30
+ var import_product_quick_view_dialog = require("./product-quick-view-dialog.js");
31
+ function ProductQuickView({
32
+ products,
33
+ eyebrow = "Novedades de la temporada",
34
+ heading = "Todo lo que vale la pena saber, sin salir de la rejilla",
35
+ lede = "Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviar\xEDa a la p\xE1gina del producto. Recorre el resto de la habitaci\xF3n desde dentro.",
36
+ onAddToCart
37
+ }) {
38
+ const [activeIndex, setActiveIndex] = (0, import_react.useState)(null);
39
+ const headingId = (0, import_react.useId)();
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", { "aria-labelledby": headingId, className: "bg-background w-full py-16 sm:py-24", children: [
41
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8", children: [
42
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex max-w-2xl flex-col items-start", children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_badge.Badge, { variant: "outline", className: "gap-2 rounded-full px-3", children: [
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "aria-hidden": "true", className: "bg-primary size-1.5 rounded-full" }),
45
+ eyebrow
46
+ ] }),
47
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
48
+ "h2",
49
+ {
50
+ id: headingId,
51
+ className: "mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl",
52
+ children: heading
53
+ }
54
+ ),
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground mt-4 text-base text-pretty", children: lede })
56
+ ] }),
57
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12", children: products.map((product, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
58
+ import_product_quick_view_card.ProductQuickViewCard,
59
+ {
60
+ product,
61
+ isActive: activeIndex === index,
62
+ onOpen: () => setActiveIndex(index)
63
+ },
64
+ product.id
65
+ )) })
66
+ ] }),
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
68
+ import_product_quick_view_dialog.ProductQuickViewDialog,
69
+ {
70
+ products,
71
+ activeIndex,
72
+ onActiveIndexChange: setActiveIndex,
73
+ onClose: () => setActiveIndex(null),
74
+ onAddToCart
75
+ }
76
+ )
77
+ ] });
78
+ }
79
+ var product_quick_view_default = ProductQuickView;
80
+ // Annotate the CommonJS export names for ESM import in node:
81
+ 0 && (module.exports = {
82
+ ProductQuickView
83
+ });
84
+ //# sourceMappingURL=product-quick-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"sourcesContent":["'use client'\n\nimport { useId, useState } from 'react'\n\nimport { Badge } from '../../../ui/badge'\n\nimport { ProductQuickViewCard } from './product-quick-view-card'\nimport { ProductQuickViewDialog } from './product-quick-view-dialog'\n\nexport interface QuickViewOption {\n value: string\n label: string\n available: boolean\n /**\n * A literal colour for a swatch, when the option is one.\n *\n * Finish colours are product data, not theme data: brass has to stay brass whatever preset the\n * customizer is on. It is the one place in the block that is not a token, and the option's\n * label always carries the same information in words.\n */\n swatch?: string\n}\n\nexport interface QuickViewVariant {\n key: string\n label: string\n /**\n * Which option a product opens on.\n *\n * Not simply the first available one: sizes are listed smallest first, and the sofa is sold as\n * the size its name promises, so the panel would otherwise open on an option that disagrees\n * with the card the reader just pressed.\n */\n defaultValue?: string\n options: QuickViewOption[]\n}\n\nexport interface QuickViewProduct {\n id: string\n name: string\n /** The one line that says what it is, under the name on the card and in the panel. */\n tagline: string\n category: string\n price: number\n compareAt?: number\n rating: number\n reviewCount: number\n /** In stock, and low enough to be worth saying. Omitted when there is plenty. */\n unitsLeft?: number\n image: string\n imageAlt: string\n description: string\n /** The panel shows these as a list, not as a specification table. */\n details: string[]\n variants: QuickViewVariant[]\n /** Where the full product page lives. The panel only links to it when set. */\n href?: string\n}\n\nexport interface ProductQuickViewProps {\n products: QuickViewProduct[]\n eyebrow?: string\n heading?: string\n lede?: string\n /**\n * Called with the chosen options when the reader adds to cart. When absent the button still\n * shows and keeps its added-to-cart confirmation; it just has nowhere to report to.\n */\n onAddToCart?: (\n product: QuickViewProduct,\n quantity: number,\n selection: Record<string, string>\n ) => void\n}\n\n/**\n * A product grid whose point is the panel that opens over it.\n *\n * One dialog serves the whole catalogue rather than one per card: the panel steps between\n * products from inside, the card it is showing stays lit underneath, and closing puts the reader\n * back exactly where the grid says they are.\n */\nexport function ProductQuickView({\n products,\n eyebrow = 'Novedades de la temporada',\n heading = 'Todo lo que vale la pena saber, sin salir de la rejilla',\n lede = 'Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviaría a la página del producto. Recorre el resto de la habitación desde dentro.',\n onAddToCart,\n}: ProductQuickViewProps) {\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n // A reusable block cannot carry a fixed heading id: two instances on a page would both claim it.\n const headingId = useId()\n\n return (\n <section aria-labelledby={headingId} className='bg-background w-full py-16 sm:py-24'>\n <div className='mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8'>\n <div className='flex max-w-2xl flex-col items-start'>\n <Badge variant='outline' className='gap-2 rounded-full px-3'>\n <span aria-hidden='true' className='bg-primary size-1.5 rounded-full' />\n {eyebrow}\n </Badge>\n\n <h2\n id={headingId}\n className='mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl'\n >\n {heading}\n </h2>\n\n <p className='text-muted-foreground mt-4 text-base text-pretty'>{lede}</p>\n </div>\n\n <div className='mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12'>\n {products.map((product, index) => (\n <ProductQuickViewCard\n key={product.id}\n product={product}\n isActive={activeIndex === index}\n onOpen={() => setActiveIndex(index)}\n />\n ))}\n </div>\n </div>\n\n <ProductQuickViewDialog\n products={products}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n onClose={() => setActiveIndex(null)}\n onAddToCart={onAddToCart}\n />\n </section>\n )\n}\n\nexport default ProductQuickView"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiGU;AA/FV,mBAAgC;AAEhC,mBAAsB;AAEtB,qCAAqC;AACrC,uCAAuC;AA2EhC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AACF,GAA0B;AACxB,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAwB,IAAI;AAElE,QAAM,gBAAY,oBAAM;AAExB,SACE,6CAAC,aAAQ,mBAAiB,WAAW,WAAU,uCAC7C;AAAA,iDAAC,SAAI,WAAU,iDACb;AAAA,mDAAC,SAAI,WAAU,uCACb;AAAA,qDAAC,sBAAM,SAAQ,WAAU,WAAU,2BACjC;AAAA,sDAAC,UAAK,eAAY,QAAO,WAAU,oCAAmC;AAAA,UACrE;AAAA,WACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEA,4CAAC,OAAE,WAAU,oDAAoD,gBAAK;AAAA,SACxE;AAAA,MAEA,4CAAC,SAAI,WAAU,uEACZ,mBAAS,IAAI,CAAC,SAAS,UACtB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,UAAU,gBAAgB;AAAA,UAC1B,QAAQ,MAAM,eAAe,KAAK;AAAA;AAAA,QAH7B,QAAQ;AAAA,MAIf,CACD,GACH;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,qBAAqB;AAAA,QACrB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,6BAAQ;","names":[]}
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useId, useState } from "react";
4
+ import { Badge } from "../../../ui/badge.mjs";
5
+ import { ProductQuickViewCard } from "./product-quick-view-card.mjs";
6
+ import { ProductQuickViewDialog } from "./product-quick-view-dialog.mjs";
7
+ function ProductQuickView({
8
+ products,
9
+ eyebrow = "Novedades de la temporada",
10
+ heading = "Todo lo que vale la pena saber, sin salir de la rejilla",
11
+ lede = "Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviar\xEDa a la p\xE1gina del producto. Recorre el resto de la habitaci\xF3n desde dentro.",
12
+ onAddToCart
13
+ }) {
14
+ const [activeIndex, setActiveIndex] = useState(null);
15
+ const headingId = useId();
16
+ return /* @__PURE__ */ jsxs("section", { "aria-labelledby": headingId, className: "bg-background w-full py-16 sm:py-24", children: [
17
+ /* @__PURE__ */ jsxs("div", { className: "mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8", children: [
18
+ /* @__PURE__ */ jsxs("div", { className: "flex max-w-2xl flex-col items-start", children: [
19
+ /* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "gap-2 rounded-full px-3", children: [
20
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "bg-primary size-1.5 rounded-full" }),
21
+ eyebrow
22
+ ] }),
23
+ /* @__PURE__ */ jsx(
24
+ "h2",
25
+ {
26
+ id: headingId,
27
+ className: "mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl",
28
+ children: heading
29
+ }
30
+ ),
31
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mt-4 text-base text-pretty", children: lede })
32
+ ] }),
33
+ /* @__PURE__ */ jsx("div", { className: "mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12", children: products.map((product, index) => /* @__PURE__ */ jsx(
34
+ ProductQuickViewCard,
35
+ {
36
+ product,
37
+ isActive: activeIndex === index,
38
+ onOpen: () => setActiveIndex(index)
39
+ },
40
+ product.id
41
+ )) })
42
+ ] }),
43
+ /* @__PURE__ */ jsx(
44
+ ProductQuickViewDialog,
45
+ {
46
+ products,
47
+ activeIndex,
48
+ onActiveIndexChange: setActiveIndex,
49
+ onClose: () => setActiveIndex(null),
50
+ onAddToCart
51
+ }
52
+ )
53
+ ] });
54
+ }
55
+ var product_quick_view_default = ProductQuickView;
56
+ export {
57
+ ProductQuickView,
58
+ product_quick_view_default as default
59
+ };
60
+ //# sourceMappingURL=product-quick-view.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-quick-view.tsx"],"sourcesContent":["'use client'\n\nimport { useId, useState } from 'react'\n\nimport { Badge } from '../../../ui/badge'\n\nimport { ProductQuickViewCard } from './product-quick-view-card'\nimport { ProductQuickViewDialog } from './product-quick-view-dialog'\n\nexport interface QuickViewOption {\n value: string\n label: string\n available: boolean\n /**\n * A literal colour for a swatch, when the option is one.\n *\n * Finish colours are product data, not theme data: brass has to stay brass whatever preset the\n * customizer is on. It is the one place in the block that is not a token, and the option's\n * label always carries the same information in words.\n */\n swatch?: string\n}\n\nexport interface QuickViewVariant {\n key: string\n label: string\n /**\n * Which option a product opens on.\n *\n * Not simply the first available one: sizes are listed smallest first, and the sofa is sold as\n * the size its name promises, so the panel would otherwise open on an option that disagrees\n * with the card the reader just pressed.\n */\n defaultValue?: string\n options: QuickViewOption[]\n}\n\nexport interface QuickViewProduct {\n id: string\n name: string\n /** The one line that says what it is, under the name on the card and in the panel. */\n tagline: string\n category: string\n price: number\n compareAt?: number\n rating: number\n reviewCount: number\n /** In stock, and low enough to be worth saying. Omitted when there is plenty. */\n unitsLeft?: number\n image: string\n imageAlt: string\n description: string\n /** The panel shows these as a list, not as a specification table. */\n details: string[]\n variants: QuickViewVariant[]\n /** Where the full product page lives. The panel only links to it when set. */\n href?: string\n}\n\nexport interface ProductQuickViewProps {\n products: QuickViewProduct[]\n eyebrow?: string\n heading?: string\n lede?: string\n /**\n * Called with the chosen options when the reader adds to cart. When absent the button still\n * shows and keeps its added-to-cart confirmation; it just has nowhere to report to.\n */\n onAddToCart?: (\n product: QuickViewProduct,\n quantity: number,\n selection: Record<string, string>\n ) => void\n}\n\n/**\n * A product grid whose point is the panel that opens over it.\n *\n * One dialog serves the whole catalogue rather than one per card: the panel steps between\n * products from inside, the card it is showing stays lit underneath, and closing puts the reader\n * back exactly where the grid says they are.\n */\nexport function ProductQuickView({\n products,\n eyebrow = 'Novedades de la temporada',\n heading = 'Todo lo que vale la pena saber, sin salir de la rejilla',\n lede = 'Abre cualquier pieza para ver sus acabados, sus medidas y la respuesta a la pregunta que, de otro modo, te enviaría a la página del producto. Recorre el resto de la habitación desde dentro.',\n onAddToCart,\n}: ProductQuickViewProps) {\n const [activeIndex, setActiveIndex] = useState<number | null>(null)\n // A reusable block cannot carry a fixed heading id: two instances on a page would both claim it.\n const headingId = useId()\n\n return (\n <section aria-labelledby={headingId} className='bg-background w-full py-16 sm:py-24'>\n <div className='mx-auto w-full max-w-6xl px-4 sm:px-6 lg:px-8'>\n <div className='flex max-w-2xl flex-col items-start'>\n <Badge variant='outline' className='gap-2 rounded-full px-3'>\n <span aria-hidden='true' className='bg-primary size-1.5 rounded-full' />\n {eyebrow}\n </Badge>\n\n <h2\n id={headingId}\n className='mt-5 text-3xl font-semibold tracking-tight text-balance sm:text-4xl'\n >\n {heading}\n </h2>\n\n <p className='text-muted-foreground mt-4 text-base text-pretty'>{lede}</p>\n </div>\n\n <div className='mt-10 grid grid-cols-1 gap-5 sm:grid-cols-2 md:grid-cols-3 lg:mt-12'>\n {products.map((product, index) => (\n <ProductQuickViewCard\n key={product.id}\n product={product}\n isActive={activeIndex === index}\n onOpen={() => setActiveIndex(index)}\n />\n ))}\n </div>\n </div>\n\n <ProductQuickViewDialog\n products={products}\n activeIndex={activeIndex}\n onActiveIndexChange={setActiveIndex}\n onClose={() => setActiveIndex(null)}\n onAddToCart={onAddToCart}\n />\n </section>\n )\n}\n\nexport default ProductQuickView"],"mappings":";AAiGU,SACE,KADF;AA/FV,SAAS,OAAO,gBAAgB;AAEhC,SAAS,aAAa;AAEtB,SAAS,4BAA4B;AACrC,SAAS,8BAA8B;AA2EhC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AACF,GAA0B;AACxB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,IAAI;AAElE,QAAM,YAAY,MAAM;AAExB,SACE,qBAAC,aAAQ,mBAAiB,WAAW,WAAU,uCAC7C;AAAA,yBAAC,SAAI,WAAU,iDACb;AAAA,2BAAC,SAAI,WAAU,uCACb;AAAA,6BAAC,SAAM,SAAQ,WAAU,WAAU,2BACjC;AAAA,8BAAC,UAAK,eAAY,QAAO,WAAU,oCAAmC;AAAA,UACrE;AAAA,WACH;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAEA,oBAAC,OAAE,WAAU,oDAAoD,gBAAK;AAAA,SACxE;AAAA,MAEA,oBAAC,SAAI,WAAU,uEACZ,mBAAS,IAAI,CAAC,SAAS,UACtB;AAAA,QAAC;AAAA;AAAA,UAEC;AAAA,UACA,UAAU,gBAAgB;AAAA,UAC1B,QAAQ,MAAM,eAAe,KAAK;AAAA;AAAA,QAH7B,QAAQ;AAAA,MAIf,CACD,GACH;AAAA,OACF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,qBAAqB;AAAA,QACrB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,IAAO,6BAAQ;","names":[]}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Canonical review item data.
3
+ *
4
+ * One customer review. `id` is the backend identity — the React key and the
5
+ * value every action reports; it is never rendered. `date` is a display string
6
+ * the host already formatted, and `dateTime` is the optional machine-readable
7
+ * value: the cell emits it only when it parses, so an unparsable date can never
8
+ * throw. `helpfulCount` and `likedByViewer` are host-authoritative engagement:
9
+ * the cell renders them and reports intent, it never increments either.
10
+ */
11
+ export interface ReviewItemData {
12
+ /** Backend review identity. Used as the React key; never rendered. */
13
+ id: string;
14
+ author: string;
15
+ /** Optional; an absent or empty avatar renders initials, never `src=""`. */
16
+ avatar?: string;
17
+ /** Display date, rendered verbatim. */
18
+ date: string;
19
+ /** Optional ISO-8601 value; emitted only when it parses as a date. */
20
+ dateTime?: string;
21
+ /** Rating from 1 to 5. Missing or out-of-range values are clamped for display. */
22
+ rating: number;
23
+ content: string;
24
+ /** Supplied helpful count. Absent means unknown, never zero. */
25
+ helpfulCount?: number;
26
+ /** Host-owned viewer state: the like control reflects it and never toggles it. */
27
+ likedByViewer?: boolean;
28
+ }
29
+ /** Every user-facing string the cell renders. All are overridable. */
30
+ export interface ReviewCardLabels {
31
+ ratingLabel: string;
32
+ helpfulLabel: string;
33
+ likeLabel: string;
34
+ unlikeLabel: string;
35
+ commentLabel: string;
36
+ }
37
+ export interface ReviewCardProps extends Omit<ReviewItemData, 'id'> {
38
+ /** Backend review identity, reported to the action handlers. */
39
+ id: string;
40
+ labels?: Partial<ReviewCardLabels>;
41
+ /** Renders the like control; receives the backend id and the intended state. */
42
+ onToggleLike?: (id: string, liked: boolean) => void;
43
+ /** Renders the comment control; receives the backend id. */
44
+ onComment?: (id: string) => void;
45
+ className?: string;
46
+ }
47
+ export declare const defaultReviewCardLabels: ReviewCardLabels;
48
+ /** Clamp a rating to the 1–5 range the star row can express. */
49
+ export declare function clampRating(rating: number): number;
50
+ /** Emit a `dateTime` attribute only when the value is a real date. */
51
+ export declare function safeDateTime(value: string | undefined): string | undefined;
52
+ /**
53
+ * The canonical review item cell: one customer review.
54
+ *
55
+ * It is an item cell, not a listing — it takes one review, renders one cell,
56
+ * and owns no engagement state. Actions exist only when their handler exists.
57
+ */
58
+ export declare function ReviewCard({ id, author, avatar, date, dateTime, rating, content, helpfulCount, likedByViewer, labels, onToggleLike, onComment, className, }: ReviewCardProps): import("react").JSX.Element;
59
+ export default ReviewCard;
60
+ //# sourceMappingURL=review-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-card.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/reviews/review-card.tsx"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;IACjE,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAClC,gFAAgF;IAChF,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACnD,4DAA4D;IAC5D,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,uBAAuB,EAAE,gBAMrC,CAAA;AAOD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK1E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,EAAE,EACF,MAAM,EACN,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,OAAO,EACP,YAAY,EACZ,aAAa,EACb,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,GACV,EAAE,eAAe,+BA8FjB;AAED,eAAe,UAAU,CAAA"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var review_card_exports = {};
20
+ __export(review_card_exports, {
21
+ ReviewCard: () => ReviewCard,
22
+ clampRating: () => clampRating,
23
+ default: () => review_card_default,
24
+ defaultReviewCardLabels: () => defaultReviewCardLabels,
25
+ safeDateTime: () => safeDateTime
26
+ });
27
+ module.exports = __toCommonJS(review_card_exports);
28
+ var import_jsx_runtime = require("react/jsx-runtime");
29
+ var import_lucide_react = require("lucide-react");
30
+ var import_utils = require("../../../lib/utils.js");
31
+ var import_avatar = require("../../../ui/avatar.js");
32
+ var import_button = require("../../../ui/button.js");
33
+ var import_card = require("../../../ui/card.js");
34
+ const defaultReviewCardLabels = {
35
+ ratingLabel: "{n} de 5 estrellas",
36
+ helpfulLabel: "A {n} personas les result\xF3 \xFAtil",
37
+ likeLabel: "Me gusta",
38
+ unlikeLabel: "Quitar me gusta",
39
+ commentLabel: "Comentar"
40
+ };
41
+ const interpolate = (template, values) => template.replace(
42
+ /\{(\w+)\}/g,
43
+ (match, key) => key in values ? String(values[key]) : match
44
+ );
45
+ function clampRating(rating) {
46
+ if (!Number.isFinite(rating)) return 0;
47
+ return Math.min(5, Math.max(0, Math.round(rating)));
48
+ }
49
+ function safeDateTime(value) {
50
+ if (value === void 0) return void 0;
51
+ const trimmed = value.trim();
52
+ if (trimmed === "") return void 0;
53
+ return Number.isNaN(Date.parse(trimmed)) ? void 0 : trimmed;
54
+ }
55
+ function ReviewCard({
56
+ id,
57
+ author,
58
+ avatar,
59
+ date,
60
+ dateTime,
61
+ rating,
62
+ content,
63
+ helpfulCount,
64
+ likedByViewer,
65
+ labels,
66
+ onToggleLike,
67
+ onComment,
68
+ className
69
+ }) {
70
+ const copy = { ...defaultReviewCardLabels, ...labels };
71
+ const filled = clampRating(rating);
72
+ const avatarSrc = typeof avatar === "string" && avatar.trim() !== "" ? avatar : void 0;
73
+ const initials = author.trim().slice(0, 2).toUpperCase();
74
+ const machineDate = safeDateTime(dateTime);
75
+ const liked = likedByViewer === true;
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("article", { className: (0, import_utils.cn)("h-full", className), "data-slot": "review-card", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.Card, { className: "flex h-full flex-col", children: [
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardHeader, { className: "gap-3", children: [
78
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-start gap-3", children: [
79
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_avatar.Avatar, { className: "size-10", children: [
80
+ avatarSrc ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_avatar.AvatarImage, { src: avatarSrc, alt: "" }) : null,
81
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_avatar.AvatarFallback, { "aria-hidden": "true", children: initials })
82
+ ] }),
83
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "truncate text-sm font-semibold", "data-slot": "review-author", children: author }),
85
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
86
+ "time",
87
+ {
88
+ className: "text-muted-foreground text-xs",
89
+ ...machineDate === void 0 ? {} : { dateTime: machineDate },
90
+ "data-slot": "review-date",
91
+ children: date
92
+ }
93
+ )
94
+ ] })
95
+ ] }),
96
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
97
+ "div",
98
+ {
99
+ role: "img",
100
+ "aria-label": interpolate(copy.ratingLabel, { n: filled }),
101
+ className: "flex items-center gap-0.5",
102
+ "data-slot": "review-rating",
103
+ children: Array.from({ length: 5 }, (_, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
104
+ import_lucide_react.Star,
105
+ {
106
+ "aria-hidden": "true",
107
+ className: (0, import_utils.cn)(
108
+ "size-4",
109
+ index < filled ? "fill-current text-foreground" : "text-muted-foreground"
110
+ )
111
+ },
112
+ index
113
+ ))
114
+ }
115
+ )
116
+ ] }),
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardContent, { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-sm whitespace-pre-line", "data-slot": "review-content", children: content }) }),
118
+ onToggleLike || onComment || helpfulCount !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardFooter, { className: "flex flex-wrap items-center gap-2 border-t pt-3", children: [
119
+ onToggleLike ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
120
+ import_button.Button,
121
+ {
122
+ type: "button",
123
+ variant: "ghost",
124
+ size: "sm",
125
+ className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
126
+ "aria-pressed": liked,
127
+ "aria-label": liked ? copy.unlikeLabel : copy.likeLabel,
128
+ "data-slot": "review-like",
129
+ onClick: () => onToggleLike(id, !liked),
130
+ children: [
131
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
132
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { "data-slot": "review-like-count", children: helpfulCount ?? "" })
133
+ ]
134
+ }
135
+ ) : helpfulCount !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-muted-foreground flex items-center gap-1.5 text-xs", children: [
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
137
+ interpolate(copy.helpfulLabel, { n: helpfulCount })
138
+ ] }) : null,
139
+ onComment ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
140
+ import_button.Button,
141
+ {
142
+ type: "button",
143
+ variant: "ghost",
144
+ size: "sm",
145
+ className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
146
+ "aria-label": copy.commentLabel,
147
+ "data-slot": "review-comment",
148
+ onClick: () => onComment(id),
149
+ children: [
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.MessageSquare, { "aria-hidden": "true", className: "size-3.5" }),
151
+ copy.commentLabel
152
+ ]
153
+ }
154
+ ) : null
155
+ ] }) : null
156
+ ] }) });
157
+ }
158
+ var review_card_default = ReviewCard;
159
+ // Annotate the CommonJS export names for ESM import in node:
160
+ 0 && (module.exports = {
161
+ ReviewCard,
162
+ clampRating,
163
+ defaultReviewCardLabels,
164
+ safeDateTime
165
+ });
166
+ //# sourceMappingURL=review-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/reviews/review-card.tsx"],"sourcesContent":["import { MessageSquare, Star, ThumbsUp } from 'lucide-react'\nimport { cn } from '../../../lib/utils'\nimport { Avatar, AvatarFallback, AvatarImage } from '../../../ui/avatar'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent, CardFooter, CardHeader } from '../../../ui/card'\n\n/**\n * Canonical review item data.\n *\n * One customer review. `id` is the backend identity — the React key and the\n * value every action reports; it is never rendered. `date` is a display string\n * the host already formatted, and `dateTime` is the optional machine-readable\n * value: the cell emits it only when it parses, so an unparsable date can never\n * throw. `helpfulCount` and `likedByViewer` are host-authoritative engagement:\n * the cell renders them and reports intent, it never increments either.\n */\nexport interface ReviewItemData {\n /** Backend review identity. Used as the React key; never rendered. */\n id: string\n author: string\n /** Optional; an absent or empty avatar renders initials, never `src=\"\"`. */\n avatar?: string\n /** Display date, rendered verbatim. */\n date: string\n /** Optional ISO-8601 value; emitted only when it parses as a date. */\n dateTime?: string\n /** Rating from 1 to 5. Missing or out-of-range values are clamped for display. */\n rating: number\n content: string\n /** Supplied helpful count. Absent means unknown, never zero. */\n helpfulCount?: number\n /** Host-owned viewer state: the like control reflects it and never toggles it. */\n likedByViewer?: boolean\n}\n\n/** Every user-facing string the cell renders. All are overridable. */\nexport interface ReviewCardLabels {\n ratingLabel: string\n helpfulLabel: string\n likeLabel: string\n unlikeLabel: string\n commentLabel: string\n}\n\nexport interface ReviewCardProps extends Omit<ReviewItemData, 'id'> {\n /** Backend review identity, reported to the action handlers. */\n id: string\n labels?: Partial<ReviewCardLabels>\n /** Renders the like control; receives the backend id and the intended state. */\n onToggleLike?: (id: string, liked: boolean) => void\n /** Renders the comment control; receives the backend id. */\n onComment?: (id: string) => void\n className?: string\n}\n\nexport const defaultReviewCardLabels: ReviewCardLabels = {\n ratingLabel: '{n} de 5 estrellas',\n helpfulLabel: 'A {n} personas les resultó útil',\n likeLabel: 'Me gusta',\n unlikeLabel: 'Quitar me gusta',\n commentLabel: 'Comentar',\n}\n\nconst interpolate = (template: string, values: Record<string, string | number>) =>\n template.replace(/\\{(\\w+)\\}/g, (match, key: string) =>\n key in values ? String(values[key]) : match,\n )\n\n/** Clamp a rating to the 1–5 range the star row can express. */\nexport function clampRating(rating: number): number {\n if (!Number.isFinite(rating)) return 0\n return Math.min(5, Math.max(0, Math.round(rating)))\n}\n\n/** Emit a `dateTime` attribute only when the value is a real date. */\nexport function safeDateTime(value: string | undefined): string | undefined {\n if (value === undefined) return undefined\n const trimmed = value.trim()\n if (trimmed === '') return undefined\n return Number.isNaN(Date.parse(trimmed)) ? undefined : trimmed\n}\n\n/**\n * The canonical review item cell: one customer review.\n *\n * It is an item cell, not a listing — it takes one review, renders one cell,\n * and owns no engagement state. Actions exist only when their handler exists.\n */\nexport function ReviewCard({\n id,\n author,\n avatar,\n date,\n dateTime,\n rating,\n content,\n helpfulCount,\n likedByViewer,\n labels,\n onToggleLike,\n onComment,\n className,\n}: ReviewCardProps) {\n const copy: ReviewCardLabels = { ...defaultReviewCardLabels, ...labels }\n const filled = clampRating(rating)\n const avatarSrc = typeof avatar === 'string' && avatar.trim() !== '' ? avatar : undefined\n const initials = author.trim().slice(0, 2).toUpperCase()\n const machineDate = safeDateTime(dateTime)\n const liked = likedByViewer === true\n\n return (\n <article className={cn('h-full', className)} data-slot='review-card'>\n <Card className='flex h-full flex-col'>\n <CardHeader className='gap-3'>\n <div className='flex items-start gap-3'>\n <Avatar className='size-10'>\n {avatarSrc ? <AvatarImage src={avatarSrc} alt='' /> : null}\n <AvatarFallback aria-hidden='true'>{initials}</AvatarFallback>\n </Avatar>\n <div className='flex min-w-0 flex-1 flex-col gap-0.5'>\n <h3 className='truncate text-sm font-semibold' data-slot='review-author'>\n {author}\n </h3>\n <time\n className='text-muted-foreground text-xs'\n {...(machineDate === undefined ? {} : { dateTime: machineDate })}\n data-slot='review-date'\n >\n {date}\n </time>\n </div>\n </div>\n <div\n role='img'\n aria-label={interpolate(copy.ratingLabel, { n: filled })}\n className='flex items-center gap-0.5'\n data-slot='review-rating'\n >\n {Array.from({ length: 5 }, (_, index) => (\n <Star\n key={index}\n aria-hidden='true'\n className={cn(\n 'size-4',\n index < filled ? 'fill-current text-foreground' : 'text-muted-foreground',\n )}\n />\n ))}\n </div>\n </CardHeader>\n <CardContent className='flex-1'>\n <p className='text-sm whitespace-pre-line' data-slot='review-content'>\n {content}\n </p>\n </CardContent>\n {onToggleLike || onComment || helpfulCount !== undefined ? (\n <CardFooter className='flex flex-wrap items-center gap-2 border-t pt-3'>\n {onToggleLike ? (\n <Button\n type='button'\n variant='ghost'\n size='sm'\n className='h-8 cursor-pointer gap-1.5 px-2 text-xs'\n aria-pressed={liked}\n aria-label={liked ? copy.unlikeLabel : copy.likeLabel}\n data-slot='review-like'\n onClick={() => onToggleLike(id, !liked)}\n >\n <ThumbsUp aria-hidden='true' className='size-3.5' />\n <span data-slot='review-like-count'>{helpfulCount ?? ''}</span>\n </Button>\n ) : helpfulCount !== undefined ? (\n <span className='text-muted-foreground flex items-center gap-1.5 text-xs'>\n <ThumbsUp aria-hidden='true' className='size-3.5' />\n {interpolate(copy.helpfulLabel, { n: helpfulCount })}\n </span>\n ) : null}\n {onComment ? (\n <Button\n type='button'\n variant='ghost'\n size='sm'\n className='h-8 cursor-pointer gap-1.5 px-2 text-xs'\n aria-label={copy.commentLabel}\n data-slot='review-comment'\n onClick={() => onComment(id)}\n >\n <MessageSquare aria-hidden='true' className='size-3.5' />\n {copy.commentLabel}\n </Button>\n ) : null}\n </CardFooter>\n ) : null}\n </Card>\n </article>\n )\n}\n\nexport default ReviewCard\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmHY;AAnHZ,0BAA8C;AAC9C,mBAAmB;AACnB,oBAAoD;AACpD,oBAAuB;AACvB,kBAA0D;AAmDnD,MAAM,0BAA4C;AAAA,EACvD,aAAa;AAAA,EACb,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,cAAc;AAChB;AAEA,MAAM,cAAc,CAAC,UAAkB,WACrC,SAAS;AAAA,EAAQ;AAAA,EAAc,CAAC,OAAO,QACrC,OAAO,SAAS,OAAO,OAAO,GAAG,CAAC,IAAI;AACxC;AAGK,SAAS,YAAY,QAAwB;AAClD,MAAI,CAAC,OAAO,SAAS,MAAM,EAAG,QAAO;AACrC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AACpD;AAGO,SAAS,aAAa,OAA+C;AAC1E,MAAI,UAAU,OAAW,QAAO;AAChC,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,YAAY,GAAI,QAAO;AAC3B,SAAO,OAAO,MAAM,KAAK,MAAM,OAAO,CAAC,IAAI,SAAY;AACzD;AAQO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAoB;AAClB,QAAM,OAAyB,EAAE,GAAG,yBAAyB,GAAG,OAAO;AACvE,QAAM,SAAS,YAAY,MAAM;AACjC,QAAM,YAAY,OAAO,WAAW,YAAY,OAAO,KAAK,MAAM,KAAK,SAAS;AAChF,QAAM,WAAW,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,YAAY;AACvD,QAAM,cAAc,aAAa,QAAQ;AACzC,QAAM,QAAQ,kBAAkB;AAEhC,SACE,4CAAC,aAAQ,eAAW,iBAAG,UAAU,SAAS,GAAG,aAAU,eACrD,uDAAC,oBAAK,WAAU,wBACd;AAAA,iDAAC,0BAAW,WAAU,SACpB;AAAA,mDAAC,SAAI,WAAU,0BACb;AAAA,qDAAC,wBAAO,WAAU,WACf;AAAA,sBAAY,4CAAC,6BAAY,KAAK,WAAW,KAAI,IAAG,IAAK;AAAA,UACtD,4CAAC,gCAAe,eAAY,QAAQ,oBAAS;AAAA,WAC/C;AAAA,QACA,6CAAC,SAAI,WAAU,wCACb;AAAA,sDAAC,QAAG,WAAU,kCAAiC,aAAU,iBACtD,kBACH;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACT,GAAI,gBAAgB,SAAY,CAAC,IAAI,EAAE,UAAU,YAAY;AAAA,cAC9D,aAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAY,YAAY,KAAK,aAAa,EAAE,GAAG,OAAO,CAAC;AAAA,UACvD,WAAU;AAAA,UACV,aAAU;AAAA,UAET,gBAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,UAC7B;AAAA,YAAC;AAAA;AAAA,cAEC,eAAY;AAAA,cACZ,eAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,SAAS,iCAAiC;AAAA,cACpD;AAAA;AAAA,YALK;AAAA,UAMP,CACD;AAAA;AAAA,MACH;AAAA,OACF;AAAA,IACA,4CAAC,2BAAY,WAAU,UACrB,sDAAC,OAAE,WAAU,+BAA8B,aAAU,kBAClD,mBACH,GACF;AAAA,IACC,gBAAgB,aAAa,iBAAiB,SAC7C,6CAAC,0BAAW,WAAU,mDACnB;AAAA,qBACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,gBAAc;AAAA,UACd,cAAY,QAAQ,KAAK,cAAc,KAAK;AAAA,UAC5C,aAAU;AAAA,UACV,SAAS,MAAM,aAAa,IAAI,CAAC,KAAK;AAAA,UAEtC;AAAA,wDAAC,gCAAS,eAAY,QAAO,WAAU,YAAW;AAAA,YAClD,4CAAC,UAAK,aAAU,qBAAqB,0BAAgB,IAAG;AAAA;AAAA;AAAA,MAC1D,IACE,iBAAiB,SACnB,6CAAC,UAAK,WAAU,2DACd;AAAA,oDAAC,gCAAS,eAAY,QAAO,WAAU,YAAW;AAAA,QACjD,YAAY,KAAK,cAAc,EAAE,GAAG,aAAa,CAAC;AAAA,SACrD,IACE;AAAA,MACH,YACC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAU;AAAA,UACV,cAAY,KAAK;AAAA,UACjB,aAAU;AAAA,UACV,SAAS,MAAM,UAAU,EAAE;AAAA,UAE3B;AAAA,wDAAC,qCAAc,eAAY,QAAO,WAAU,YAAW;AAAA,YACtD,KAAK;AAAA;AAAA;AAAA,MACR,IACE;AAAA,OACN,IACE;AAAA,KACN,GACF;AAEJ;AAEA,IAAO,sBAAQ;","names":[]}
@@ -0,0 +1,139 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { MessageSquare, Star, ThumbsUp } from "lucide-react";
3
+ import { cn } from "../../../lib/utils.mjs";
4
+ import { Avatar, AvatarFallback, AvatarImage } from "../../../ui/avatar.mjs";
5
+ import { Button } from "../../../ui/button.mjs";
6
+ import { Card, CardContent, CardFooter, CardHeader } from "../../../ui/card.mjs";
7
+ const defaultReviewCardLabels = {
8
+ ratingLabel: "{n} de 5 estrellas",
9
+ helpfulLabel: "A {n} personas les result\xF3 \xFAtil",
10
+ likeLabel: "Me gusta",
11
+ unlikeLabel: "Quitar me gusta",
12
+ commentLabel: "Comentar"
13
+ };
14
+ const interpolate = (template, values) => template.replace(
15
+ /\{(\w+)\}/g,
16
+ (match, key) => key in values ? String(values[key]) : match
17
+ );
18
+ function clampRating(rating) {
19
+ if (!Number.isFinite(rating)) return 0;
20
+ return Math.min(5, Math.max(0, Math.round(rating)));
21
+ }
22
+ function safeDateTime(value) {
23
+ if (value === void 0) return void 0;
24
+ const trimmed = value.trim();
25
+ if (trimmed === "") return void 0;
26
+ return Number.isNaN(Date.parse(trimmed)) ? void 0 : trimmed;
27
+ }
28
+ function ReviewCard({
29
+ id,
30
+ author,
31
+ avatar,
32
+ date,
33
+ dateTime,
34
+ rating,
35
+ content,
36
+ helpfulCount,
37
+ likedByViewer,
38
+ labels,
39
+ onToggleLike,
40
+ onComment,
41
+ className
42
+ }) {
43
+ const copy = { ...defaultReviewCardLabels, ...labels };
44
+ const filled = clampRating(rating);
45
+ const avatarSrc = typeof avatar === "string" && avatar.trim() !== "" ? avatar : void 0;
46
+ const initials = author.trim().slice(0, 2).toUpperCase();
47
+ const machineDate = safeDateTime(dateTime);
48
+ const liked = likedByViewer === true;
49
+ return /* @__PURE__ */ jsx("article", { className: cn("h-full", className), "data-slot": "review-card", children: /* @__PURE__ */ jsxs(Card, { className: "flex h-full flex-col", children: [
50
+ /* @__PURE__ */ jsxs(CardHeader, { className: "gap-3", children: [
51
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
52
+ /* @__PURE__ */ jsxs(Avatar, { className: "size-10", children: [
53
+ avatarSrc ? /* @__PURE__ */ jsx(AvatarImage, { src: avatarSrc, alt: "" }) : null,
54
+ /* @__PURE__ */ jsx(AvatarFallback, { "aria-hidden": "true", children: initials })
55
+ ] }),
56
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
57
+ /* @__PURE__ */ jsx("h3", { className: "truncate text-sm font-semibold", "data-slot": "review-author", children: author }),
58
+ /* @__PURE__ */ jsx(
59
+ "time",
60
+ {
61
+ className: "text-muted-foreground text-xs",
62
+ ...machineDate === void 0 ? {} : { dateTime: machineDate },
63
+ "data-slot": "review-date",
64
+ children: date
65
+ }
66
+ )
67
+ ] })
68
+ ] }),
69
+ /* @__PURE__ */ jsx(
70
+ "div",
71
+ {
72
+ role: "img",
73
+ "aria-label": interpolate(copy.ratingLabel, { n: filled }),
74
+ className: "flex items-center gap-0.5",
75
+ "data-slot": "review-rating",
76
+ children: Array.from({ length: 5 }, (_, index) => /* @__PURE__ */ jsx(
77
+ Star,
78
+ {
79
+ "aria-hidden": "true",
80
+ className: cn(
81
+ "size-4",
82
+ index < filled ? "fill-current text-foreground" : "text-muted-foreground"
83
+ )
84
+ },
85
+ index
86
+ ))
87
+ }
88
+ )
89
+ ] }),
90
+ /* @__PURE__ */ jsx(CardContent, { className: "flex-1", children: /* @__PURE__ */ jsx("p", { className: "text-sm whitespace-pre-line", "data-slot": "review-content", children: content }) }),
91
+ onToggleLike || onComment || helpfulCount !== void 0 ? /* @__PURE__ */ jsxs(CardFooter, { className: "flex flex-wrap items-center gap-2 border-t pt-3", children: [
92
+ onToggleLike ? /* @__PURE__ */ jsxs(
93
+ Button,
94
+ {
95
+ type: "button",
96
+ variant: "ghost",
97
+ size: "sm",
98
+ className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
99
+ "aria-pressed": liked,
100
+ "aria-label": liked ? copy.unlikeLabel : copy.likeLabel,
101
+ "data-slot": "review-like",
102
+ onClick: () => onToggleLike(id, !liked),
103
+ children: [
104
+ /* @__PURE__ */ jsx(ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
105
+ /* @__PURE__ */ jsx("span", { "data-slot": "review-like-count", children: helpfulCount ?? "" })
106
+ ]
107
+ }
108
+ ) : helpfulCount !== void 0 ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground flex items-center gap-1.5 text-xs", children: [
109
+ /* @__PURE__ */ jsx(ThumbsUp, { "aria-hidden": "true", className: "size-3.5" }),
110
+ interpolate(copy.helpfulLabel, { n: helpfulCount })
111
+ ] }) : null,
112
+ onComment ? /* @__PURE__ */ jsxs(
113
+ Button,
114
+ {
115
+ type: "button",
116
+ variant: "ghost",
117
+ size: "sm",
118
+ className: "h-8 cursor-pointer gap-1.5 px-2 text-xs",
119
+ "aria-label": copy.commentLabel,
120
+ "data-slot": "review-comment",
121
+ onClick: () => onComment(id),
122
+ children: [
123
+ /* @__PURE__ */ jsx(MessageSquare, { "aria-hidden": "true", className: "size-3.5" }),
124
+ copy.commentLabel
125
+ ]
126
+ }
127
+ ) : null
128
+ ] }) : null
129
+ ] }) });
130
+ }
131
+ var review_card_default = ReviewCard;
132
+ export {
133
+ ReviewCard,
134
+ clampRating,
135
+ review_card_default as default,
136
+ defaultReviewCardLabels,
137
+ safeDateTime
138
+ };
139
+ //# sourceMappingURL=review-card.mjs.map