@thorprovider/blocks 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (842) hide show
  1. package/README.md +120 -8
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts +21 -0
  4. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts.map +1 -0
  5. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js +147 -0
  6. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js.map +1 -0
  7. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs +153 -0
  8. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs.map +1 -0
  9. package/dist/blocks/application/app-shells/app-shell-1.d.ts +27 -0
  10. package/dist/blocks/application/app-shells/app-shell-1.d.ts.map +1 -0
  11. package/dist/blocks/application/app-shells/app-shell-1.js +150 -0
  12. package/dist/blocks/application/app-shells/app-shell-1.js.map +1 -0
  13. package/dist/blocks/application/app-shells/app-shell-1.mjs +123 -0
  14. package/dist/blocks/application/app-shells/app-shell-1.mjs.map +1 -0
  15. package/dist/blocks/application/login-forms/login-page.d.ts +42 -0
  16. package/dist/blocks/application/login-forms/login-page.d.ts.map +1 -0
  17. package/dist/blocks/application/login-forms/login-page.js +209 -0
  18. package/dist/blocks/application/login-forms/login-page.js.map +1 -0
  19. package/dist/blocks/application/login-forms/login-page.mjs +185 -0
  20. package/dist/blocks/application/login-forms/login-page.mjs.map +1 -0
  21. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts +3 -0
  22. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts.map +1 -0
  23. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js +74 -0
  24. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js.map +1 -0
  25. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs +50 -0
  26. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs.map +1 -0
  27. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts +42 -0
  28. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts.map +1 -0
  29. package/dist/blocks/application/password-recovery/forgot-password-page-1.js +293 -0
  30. package/dist/blocks/application/password-recovery/forgot-password-page-1.js.map +1 -0
  31. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs +259 -0
  32. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs.map +1 -0
  33. package/dist/blocks/application/signup-forms/signup-page-1.d.ts +41 -0
  34. package/dist/blocks/application/signup-forms/signup-page-1.d.ts.map +1 -0
  35. package/dist/blocks/application/signup-forms/signup-page-1.js +195 -0
  36. package/dist/blocks/application/signup-forms/signup-page-1.js.map +1 -0
  37. package/dist/blocks/application/signup-forms/signup-page-1.mjs +171 -0
  38. package/dist/blocks/application/signup-forms/signup-page-1.mjs.map +1 -0
  39. package/dist/blocks/application/verification/verify-1.d.ts +35 -0
  40. package/dist/blocks/application/verification/verify-1.d.ts.map +1 -0
  41. package/dist/blocks/application/verification/verify-1.js +243 -0
  42. package/dist/blocks/application/verification/verify-1.js.map +1 -0
  43. package/dist/blocks/application/verification/verify-1.mjs +219 -0
  44. package/dist/blocks/application/verification/verify-1.mjs.map +1 -0
  45. package/dist/blocks/application/verification/verify-confetti.d.ts +22 -0
  46. package/dist/blocks/application/verification/verify-confetti.d.ts.map +1 -0
  47. package/dist/blocks/application/verification/verify-confetti.js +145 -0
  48. package/dist/blocks/application/verification/verify-confetti.js.map +1 -0
  49. package/dist/blocks/application/verification/verify-confetti.mjs +121 -0
  50. package/dist/blocks/application/verification/verify-confetti.mjs.map +1 -0
  51. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts +39 -0
  52. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts.map +1 -0
  53. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js +180 -0
  54. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js.map +1 -0
  55. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs +156 -0
  56. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs.map +1 -0
  57. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts +236 -0
  58. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts.map +1 -0
  59. package/dist/blocks/e-commerce/category-filters/category-listing.js +562 -0
  60. package/dist/blocks/e-commerce/category-filters/category-listing.js.map +1 -0
  61. package/dist/blocks/e-commerce/category-filters/category-listing.mjs +539 -0
  62. package/dist/blocks/e-commerce/category-filters/category-listing.mjs.map +1 -0
  63. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts +4 -0
  64. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts.map +1 -0
  65. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +97 -0
  66. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -0
  67. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +73 -0
  68. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -0
  69. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts +41 -0
  70. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts.map +1 -0
  71. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js +115 -0
  72. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js.map +1 -0
  73. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs +91 -0
  74. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs.map +1 -0
  75. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts +107 -0
  76. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts.map +1 -0
  77. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js +180 -0
  78. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js.map +1 -0
  79. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs +156 -0
  80. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs.map +1 -0
  81. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +13 -0
  82. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -0
  83. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +180 -0
  84. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -0
  85. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +156 -0
  86. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -0
  87. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts +12 -0
  88. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -0
  89. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +50 -0
  90. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -0
  91. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +33 -0
  92. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -0
  93. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts +11 -0
  94. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts.map +1 -0
  95. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js +50 -0
  96. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js.map +1 -0
  97. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs +25 -0
  98. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs.map +1 -0
  99. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts +5 -0
  100. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts.map +1 -0
  101. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js +17 -0
  102. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js.map +1 -0
  103. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs +1 -0
  104. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs.map +1 -0
  105. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +20 -0
  106. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -0
  107. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +176 -0
  108. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -0
  109. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +152 -0
  110. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -0
  111. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +12 -0
  112. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -0
  113. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +93 -0
  114. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -0
  115. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +69 -0
  116. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -0
  117. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts +11 -0
  118. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts.map +1 -0
  119. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js +76 -0
  120. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js.map +1 -0
  121. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs +52 -0
  122. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs.map +1 -0
  123. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +11 -0
  124. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -0
  125. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +64 -0
  126. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -0
  127. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +40 -0
  128. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -0
  129. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +17 -0
  130. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -0
  131. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +199 -0
  132. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -0
  133. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +175 -0
  134. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -0
  135. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +164 -0
  136. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -0
  137. package/dist/blocks/e-commerce/checkout-forms/checkout.js +351 -0
  138. package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -0
  139. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +327 -0
  140. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -0
  141. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts +28 -0
  142. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts.map +1 -0
  143. package/dist/blocks/e-commerce/navigation/back-to-top.js +78 -0
  144. package/dist/blocks/e-commerce/navigation/back-to-top.js.map +1 -0
  145. package/dist/blocks/e-commerce/navigation/back-to-top.mjs +52 -0
  146. package/dist/blocks/e-commerce/navigation/back-to-top.mjs.map +1 -0
  147. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts +61 -0
  148. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts.map +1 -0
  149. package/dist/blocks/e-commerce/navigation/breadcrumb.js +111 -0
  150. package/dist/blocks/e-commerce/navigation/breadcrumb.js.map +1 -0
  151. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs +93 -0
  152. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs.map +1 -0
  153. package/dist/blocks/e-commerce/navigation/category-icon.d.ts +28 -0
  154. package/dist/blocks/e-commerce/navigation/category-icon.d.ts.map +1 -0
  155. package/dist/blocks/e-commerce/navigation/category-icon.js +86 -0
  156. package/dist/blocks/e-commerce/navigation/category-icon.js.map +1 -0
  157. package/dist/blocks/e-commerce/navigation/category-icon.mjs +79 -0
  158. package/dist/blocks/e-commerce/navigation/category-icon.mjs.map +1 -0
  159. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts +112 -0
  160. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts.map +1 -0
  161. package/dist/blocks/e-commerce/navigation/mega-menu.js +250 -0
  162. package/dist/blocks/e-commerce/navigation/mega-menu.js.map +1 -0
  163. package/dist/blocks/e-commerce/navigation/mega-menu.mjs +228 -0
  164. package/dist/blocks/e-commerce/navigation/mega-menu.mjs.map +1 -0
  165. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts +71 -0
  166. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts.map +1 -0
  167. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js +94 -0
  168. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js.map +1 -0
  169. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs +68 -0
  170. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs.map +1 -0
  171. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts +121 -0
  172. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts.map +1 -0
  173. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js +257 -0
  174. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js.map +1 -0
  175. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs +235 -0
  176. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs.map +1 -0
  177. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts +25 -0
  178. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts.map +1 -0
  179. package/dist/blocks/e-commerce/navigation/skip-to-content.js +55 -0
  180. package/dist/blocks/e-commerce/navigation/skip-to-content.js.map +1 -0
  181. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs +30 -0
  182. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs.map +1 -0
  183. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts +23 -0
  184. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts.map +1 -0
  185. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js +127 -0
  186. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js.map +1 -0
  187. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs +111 -0
  188. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs.map +1 -0
  189. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts +66 -0
  190. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -0
  191. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +280 -0
  192. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -0
  193. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +263 -0
  194. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -0
  195. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts +13 -0
  196. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts.map +1 -0
  197. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js +83 -0
  198. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js.map +1 -0
  199. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs +59 -0
  200. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs.map +1 -0
  201. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts +8 -0
  202. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts.map +1 -0
  203. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js +73 -0
  204. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js.map +1 -0
  205. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs +49 -0
  206. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs.map +1 -0
  207. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts +121 -0
  208. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -0
  209. package/dist/blocks/e-commerce/navigation/storefront-navbar.js +424 -0
  210. package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -0
  211. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +399 -0
  212. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -0
  213. package/dist/blocks/e-commerce/order-history/order-history.d.ts +74 -0
  214. package/dist/blocks/e-commerce/order-history/order-history.d.ts.map +1 -0
  215. package/dist/blocks/e-commerce/order-history/order-history.js +161 -0
  216. package/dist/blocks/e-commerce/order-history/order-history.js.map +1 -0
  217. package/dist/blocks/e-commerce/order-history/order-history.mjs +141 -0
  218. package/dist/blocks/e-commerce/order-history/order-history.mjs.map +1 -0
  219. package/dist/blocks/e-commerce/order-history/order-line.d.ts +50 -0
  220. package/dist/blocks/e-commerce/order-history/order-line.d.ts.map +1 -0
  221. package/dist/blocks/e-commerce/order-history/order-line.js +75 -0
  222. package/dist/blocks/e-commerce/order-history/order-line.js.map +1 -0
  223. package/dist/blocks/e-commerce/order-history/order-line.mjs +49 -0
  224. package/dist/blocks/e-commerce/order-history/order-line.mjs.map +1 -0
  225. package/dist/blocks/e-commerce/product-categories/category-card.d.ts +9 -0
  226. package/dist/blocks/e-commerce/product-categories/category-card.d.ts.map +1 -0
  227. package/dist/blocks/e-commerce/product-categories/category-card.js +154 -0
  228. package/dist/blocks/e-commerce/product-categories/category-card.js.map +1 -0
  229. package/dist/blocks/e-commerce/product-categories/category-card.mjs +134 -0
  230. package/dist/blocks/e-commerce/product-categories/category-card.mjs.map +1 -0
  231. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts +15 -0
  232. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts.map +1 -0
  233. package/dist/blocks/e-commerce/product-categories/category-shared.js +101 -0
  234. package/dist/blocks/e-commerce/product-categories/category-shared.js.map +1 -0
  235. package/dist/blocks/e-commerce/product-categories/category-shared.mjs +97 -0
  236. package/dist/blocks/e-commerce/product-categories/category-shared.mjs.map +1 -0
  237. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts +10 -0
  238. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts.map +1 -0
  239. package/dist/blocks/e-commerce/product-categories/product-category-grid.js +138 -0
  240. package/dist/blocks/e-commerce/product-categories/product-category-grid.js.map +1 -0
  241. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs +114 -0
  242. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs.map +1 -0
  243. package/dist/blocks/e-commerce/product-categories/product-category.d.ts +41 -0
  244. package/dist/blocks/e-commerce/product-categories/product-category.d.ts.map +1 -0
  245. package/dist/blocks/e-commerce/product-categories/product-category.js +319 -0
  246. package/dist/blocks/e-commerce/product-categories/product-category.js.map +1 -0
  247. package/dist/blocks/e-commerce/product-categories/product-category.mjs +322 -0
  248. package/dist/blocks/e-commerce/product-categories/product-category.mjs.map +1 -0
  249. package/dist/blocks/e-commerce/product-list/product-card.d.ts +47 -0
  250. package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -0
  251. package/dist/blocks/e-commerce/product-list/product-card.js +361 -0
  252. package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -0
  253. package/dist/blocks/e-commerce/product-list/product-card.mjs +337 -0
  254. package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -0
  255. package/dist/blocks/e-commerce/product-list/product-grid.d.ts +28 -0
  256. package/dist/blocks/e-commerce/product-list/product-grid.d.ts.map +1 -0
  257. package/dist/blocks/e-commerce/product-list/product-grid.js +92 -0
  258. package/dist/blocks/e-commerce/product-list/product-grid.js.map +1 -0
  259. package/dist/blocks/e-commerce/product-list/product-grid.mjs +68 -0
  260. package/dist/blocks/e-commerce/product-list/product-grid.mjs.map +1 -0
  261. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts +30 -0
  262. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -0
  263. package/dist/blocks/e-commerce/product-list/product-showcase-1.js +245 -0
  264. package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -0
  265. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +221 -0
  266. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -0
  267. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts +20 -0
  268. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts.map +1 -0
  269. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js +71 -0
  270. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js.map +1 -0
  271. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs +47 -0
  272. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs.map +1 -0
  273. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts +15 -0
  274. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts.map +1 -0
  275. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js +118 -0
  276. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js.map +1 -0
  277. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs +94 -0
  278. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs.map +1 -0
  279. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts +26 -0
  280. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts.map +1 -0
  281. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js +85 -0
  282. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js.map +1 -0
  283. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs +61 -0
  284. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs.map +1 -0
  285. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts +32 -0
  286. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts.map +1 -0
  287. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js +79 -0
  288. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js.map +1 -0
  289. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs +51 -0
  290. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs.map +1 -0
  291. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts +121 -0
  292. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts.map +1 -0
  293. package/dist/blocks/e-commerce/product-overview/product-overview.js +844 -0
  294. package/dist/blocks/e-commerce/product-overview/product-overview.js.map +1 -0
  295. package/dist/blocks/e-commerce/product-overview/product-overview.mjs +821 -0
  296. package/dist/blocks/e-commerce/product-overview/product-overview.mjs.map +1 -0
  297. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts +17 -0
  298. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts.map +1 -0
  299. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js +123 -0
  300. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js.map +1 -0
  301. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs +99 -0
  302. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs.map +1 -0
  303. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts +20 -0
  304. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -0
  305. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +271 -0
  306. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -0
  307. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +253 -0
  308. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -0
  309. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts +68 -0
  310. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts.map +1 -0
  311. package/dist/blocks/e-commerce/product-overview/product-quick-view.js +84 -0
  312. package/dist/blocks/e-commerce/product-overview/product-quick-view.js.map +1 -0
  313. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs +60 -0
  314. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs.map +1 -0
  315. package/dist/blocks/e-commerce/reviews/review-card.d.ts +60 -0
  316. package/dist/blocks/e-commerce/reviews/review-card.d.ts.map +1 -0
  317. package/dist/blocks/e-commerce/reviews/review-card.js +166 -0
  318. package/dist/blocks/e-commerce/reviews/review-card.js.map +1 -0
  319. package/dist/blocks/e-commerce/reviews/review-card.mjs +139 -0
  320. package/dist/blocks/e-commerce/reviews/review-card.mjs.map +1 -0
  321. package/dist/blocks/e-commerce/reviews/review-composer.d.ts +50 -0
  322. package/dist/blocks/e-commerce/reviews/review-composer.d.ts.map +1 -0
  323. package/dist/blocks/e-commerce/reviews/review-composer.js +180 -0
  324. package/dist/blocks/e-commerce/reviews/review-composer.js.map +1 -0
  325. package/dist/blocks/e-commerce/reviews/review-composer.mjs +155 -0
  326. package/dist/blocks/e-commerce/reviews/review-composer.mjs.map +1 -0
  327. package/dist/blocks/e-commerce/reviews/review-list.d.ts +40 -0
  328. package/dist/blocks/e-commerce/reviews/review-list.d.ts.map +1 -0
  329. package/dist/blocks/e-commerce/reviews/review-list.js +138 -0
  330. package/dist/blocks/e-commerce/reviews/review-list.js.map +1 -0
  331. package/dist/blocks/e-commerce/reviews/review-list.mjs +119 -0
  332. package/dist/blocks/e-commerce/reviews/review-list.mjs.map +1 -0
  333. package/dist/blocks/e-commerce/reviews/review-summary.d.ts +49 -0
  334. package/dist/blocks/e-commerce/reviews/review-summary.d.ts.map +1 -0
  335. package/dist/blocks/e-commerce/reviews/review-summary.js +150 -0
  336. package/dist/blocks/e-commerce/reviews/review-summary.js.map +1 -0
  337. package/dist/blocks/e-commerce/reviews/review-summary.mjs +124 -0
  338. package/dist/blocks/e-commerce/reviews/review-summary.mjs.map +1 -0
  339. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts +98 -0
  340. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts.map +1 -0
  341. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js +417 -0
  342. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js.map +1 -0
  343. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs +393 -0
  344. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs.map +1 -0
  345. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts +13 -0
  346. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts.map +1 -0
  347. package/dist/blocks/e-commerce/store-containers/store-container-1.js +45 -0
  348. package/dist/blocks/e-commerce/store-containers/store-container-1.js.map +1 -0
  349. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs +21 -0
  350. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs.map +1 -0
  351. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts +163 -0
  352. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -0
  353. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +810 -0
  354. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -0
  355. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +786 -0
  356. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -0
  357. package/dist/blocks/marketing/banners/avatar-group.d.ts +8 -0
  358. package/dist/blocks/marketing/banners/avatar-group.d.ts.map +1 -0
  359. package/dist/blocks/marketing/banners/avatar-group.js +90 -0
  360. package/dist/blocks/marketing/banners/avatar-group.js.map +1 -0
  361. package/dist/blocks/marketing/banners/avatar-group.mjs +56 -0
  362. package/dist/blocks/marketing/banners/avatar-group.mjs.map +1 -0
  363. package/dist/blocks/marketing/banners/banner-1.d.ts +26 -0
  364. package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -0
  365. package/dist/blocks/marketing/banners/banner-1.js +177 -0
  366. package/dist/blocks/marketing/banners/banner-1.js.map +1 -0
  367. package/dist/blocks/marketing/banners/banner-1.mjs +153 -0
  368. package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -0
  369. package/dist/blocks/marketing/cta/cta-section-1.d.ts +13 -0
  370. package/dist/blocks/marketing/cta/cta-section-1.d.ts.map +1 -0
  371. package/dist/blocks/marketing/cta/cta-section-1.js +116 -0
  372. package/dist/blocks/marketing/cta/cta-section-1.js.map +1 -0
  373. package/dist/blocks/marketing/cta/cta-section-1.mjs +92 -0
  374. package/dist/blocks/marketing/cta/cta-section-1.mjs.map +1 -0
  375. package/dist/blocks/marketing/faq/faq-block-1.d.ts +16 -0
  376. package/dist/blocks/marketing/faq/faq-block-1.d.ts.map +1 -0
  377. package/dist/blocks/marketing/faq/faq-block-1.js +49 -0
  378. package/dist/blocks/marketing/faq/faq-block-1.js.map +1 -0
  379. package/dist/blocks/marketing/faq/faq-block-1.mjs +25 -0
  380. package/dist/blocks/marketing/faq/faq-block-1.mjs.map +1 -0
  381. package/dist/blocks/marketing/features/feature.d.ts +45 -0
  382. package/dist/blocks/marketing/features/feature.d.ts.map +1 -0
  383. package/dist/blocks/marketing/features/feature.js +135 -0
  384. package/dist/blocks/marketing/features/feature.js.map +1 -0
  385. package/dist/blocks/marketing/features/feature.mjs +111 -0
  386. package/dist/blocks/marketing/features/feature.mjs.map +1 -0
  387. package/dist/blocks/marketing/footers/footer-section.d.ts +59 -0
  388. package/dist/blocks/marketing/footers/footer-section.d.ts.map +1 -0
  389. package/dist/blocks/marketing/footers/footer-section.js +356 -0
  390. package/dist/blocks/marketing/footers/footer-section.js.map +1 -0
  391. package/dist/blocks/marketing/footers/footer-section.mjs +332 -0
  392. package/dist/blocks/marketing/footers/footer-section.mjs.map +1 -0
  393. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts +9 -0
  394. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts.map +1 -0
  395. package/dist/blocks/marketing/hero-sections/avatar-group.js +92 -0
  396. package/dist/blocks/marketing/hero-sections/avatar-group.js.map +1 -0
  397. package/dist/blocks/marketing/hero-sections/avatar-group.mjs +58 -0
  398. package/dist/blocks/marketing/hero-sections/avatar-group.mjs.map +1 -0
  399. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts +27 -0
  400. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts.map +1 -0
  401. package/dist/blocks/marketing/hero-sections/hero-section-1.js +124 -0
  402. package/dist/blocks/marketing/hero-sections/hero-section-1.js.map +1 -0
  403. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs +100 -0
  404. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs.map +1 -0
  405. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts +19 -0
  406. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts.map +1 -0
  407. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js +63 -0
  408. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js.map +1 -0
  409. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs +39 -0
  410. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs.map +1 -0
  411. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts +13 -0
  412. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts.map +1 -0
  413. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js +49 -0
  414. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js.map +1 -0
  415. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs +25 -0
  416. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs.map +1 -0
  417. package/dist/blocks/marketing/navbars/navbar.d.ts +80 -0
  418. package/dist/blocks/marketing/navbars/navbar.d.ts.map +1 -0
  419. package/dist/blocks/marketing/navbars/navbar.js +484 -0
  420. package/dist/blocks/marketing/navbars/navbar.js.map +1 -0
  421. package/dist/blocks/marketing/navbars/navbar.mjs +475 -0
  422. package/dist/blocks/marketing/navbars/navbar.mjs.map +1 -0
  423. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts +23 -0
  424. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts.map +1 -0
  425. package/dist/blocks/marketing/pricing/pricing-section-1.js +89 -0
  426. package/dist/blocks/marketing/pricing/pricing-section-1.js.map +1 -0
  427. package/dist/blocks/marketing/pricing/pricing-section-1.mjs +65 -0
  428. package/dist/blocks/marketing/pricing/pricing-section-1.mjs.map +1 -0
  429. package/dist/blocks/marketing/statistics/statistic-1.d.ts +19 -0
  430. package/dist/blocks/marketing/statistics/statistic-1.d.ts.map +1 -0
  431. package/dist/blocks/marketing/statistics/statistic-1.js +83 -0
  432. package/dist/blocks/marketing/statistics/statistic-1.js.map +1 -0
  433. package/dist/blocks/marketing/statistics/statistic-1.mjs +59 -0
  434. package/dist/blocks/marketing/statistics/statistic-1.mjs.map +1 -0
  435. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts +29 -0
  436. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts.map +1 -0
  437. package/dist/blocks/marketing/testimonials/testimonial-section.js +173 -0
  438. package/dist/blocks/marketing/testimonials/testimonial-section.js.map +1 -0
  439. package/dist/blocks/marketing/testimonials/testimonial-section.mjs +155 -0
  440. package/dist/blocks/marketing/testimonials/testimonial-section.mjs.map +1 -0
  441. package/dist/blocks/shared/reaction-toggle.d.ts +14 -0
  442. package/dist/blocks/shared/reaction-toggle.d.ts.map +1 -0
  443. package/dist/blocks/shared/reaction-toggle.js +138 -0
  444. package/dist/blocks/shared/reaction-toggle.js.map +1 -0
  445. package/dist/blocks/shared/reaction-toggle.mjs +114 -0
  446. package/dist/blocks/shared/reaction-toggle.mjs.map +1 -0
  447. package/dist/hooks/use-mobile.d.ts +2 -0
  448. package/dist/hooks/use-mobile.d.ts.map +1 -0
  449. package/dist/hooks/use-mobile.js +53 -0
  450. package/dist/hooks/use-mobile.js.map +1 -0
  451. package/dist/hooks/use-mobile.mjs +19 -0
  452. package/dist/hooks/use-mobile.mjs.map +1 -0
  453. package/dist/index.d.ts +100 -0
  454. package/dist/index.d.ts.map +1 -0
  455. package/dist/index.js +339 -0
  456. package/dist/index.js.map +1 -0
  457. package/dist/index.mjs +238 -0
  458. package/dist/index.mjs.map +1 -0
  459. package/{src/lib/cart.ts → dist/lib/cart.d.ts} +2 -3
  460. package/dist/lib/cart.d.ts.map +1 -0
  461. package/dist/lib/cart.js +31 -0
  462. package/dist/lib/cart.js.map +1 -0
  463. package/dist/lib/cart.mjs +7 -0
  464. package/dist/lib/cart.mjs.map +1 -0
  465. package/dist/lib/contracts.d.ts +4008 -0
  466. package/dist/lib/contracts.d.ts.map +1 -0
  467. package/dist/lib/contracts.js +828 -0
  468. package/dist/lib/contracts.js.map +1 -0
  469. package/dist/lib/contracts.mjs +737 -0
  470. package/dist/lib/contracts.mjs.map +1 -0
  471. package/dist/lib/money.d.ts +28 -0
  472. package/dist/lib/money.d.ts.map +1 -0
  473. package/dist/lib/money.js +50 -0
  474. package/dist/lib/money.js.map +1 -0
  475. package/dist/lib/money.mjs +24 -0
  476. package/dist/lib/money.mjs.map +1 -0
  477. package/dist/lib/types/menu.d.ts +40 -0
  478. package/dist/lib/types/menu.d.ts.map +1 -0
  479. package/dist/lib/types/menu.js +50 -0
  480. package/dist/lib/types/menu.js.map +1 -0
  481. package/dist/lib/types/menu.mjs +25 -0
  482. package/dist/lib/types/menu.mjs.map +1 -0
  483. package/dist/lib/types.d.ts +5 -0
  484. package/dist/lib/types.d.ts.map +1 -0
  485. package/dist/lib/types.js +17 -0
  486. package/dist/lib/types.js.map +1 -0
  487. package/dist/lib/types.mjs +1 -0
  488. package/dist/lib/types.mjs.map +1 -0
  489. package/dist/lib/utils.d.ts +7 -0
  490. package/dist/lib/utils.d.ts.map +1 -0
  491. package/dist/lib/utils.js +33 -0
  492. package/dist/lib/utils.js.map +1 -0
  493. package/dist/lib/utils.mjs +9 -0
  494. package/dist/lib/utils.mjs.map +1 -0
  495. package/dist/ui/accordion.d.ts +8 -0
  496. package/dist/ui/accordion.d.ts.map +1 -0
  497. package/dist/ui/accordion.js +93 -0
  498. package/dist/ui/accordion.js.map +1 -0
  499. package/dist/ui/accordion.mjs +66 -0
  500. package/dist/ui/accordion.mjs.map +1 -0
  501. package/dist/ui/avatar.d.ts +12 -0
  502. package/dist/ui/avatar.d.ts.map +1 -0
  503. package/dist/ui/avatar.js +134 -0
  504. package/dist/ui/avatar.js.map +1 -0
  505. package/{src/ui/avatar.tsx → dist/ui/avatar.mjs} +67 -70
  506. package/dist/ui/avatar.mjs.map +1 -0
  507. package/dist/ui/badge.d.ts +10 -0
  508. package/dist/ui/badge.d.ts.map +1 -0
  509. package/dist/ui/badge.js +69 -0
  510. package/dist/ui/badge.js.map +1 -0
  511. package/dist/ui/badge.mjs +44 -0
  512. package/dist/ui/badge.mjs.map +1 -0
  513. package/dist/ui/breadcrumb.d.ts +12 -0
  514. package/dist/ui/breadcrumb.d.ts.map +1 -0
  515. package/dist/ui/breadcrumb.js +134 -0
  516. package/dist/ui/breadcrumb.js.map +1 -0
  517. package/dist/ui/breadcrumb.mjs +104 -0
  518. package/dist/ui/breadcrumb.mjs.map +1 -0
  519. package/dist/ui/button-group.d.ts +12 -0
  520. package/dist/ui/button-group.d.ts.map +1 -0
  521. package/dist/ui/button-group.js +104 -0
  522. package/dist/ui/button-group.js.map +1 -0
  523. package/dist/ui/button-group.mjs +77 -0
  524. package/dist/ui/button-group.mjs.map +1 -0
  525. package/dist/ui/button.d.ts +11 -0
  526. package/dist/ui/button.d.ts.map +1 -0
  527. package/dist/ui/button.js +82 -0
  528. package/dist/ui/button.js.map +1 -0
  529. package/dist/ui/button.mjs +57 -0
  530. package/dist/ui/button.mjs.map +1 -0
  531. package/dist/ui/card.d.ts +10 -0
  532. package/dist/ui/card.d.ts.map +1 -0
  533. package/dist/ui/card.js +121 -0
  534. package/dist/ui/card.js.map +1 -0
  535. package/dist/ui/card.mjs +91 -0
  536. package/dist/ui/card.mjs.map +1 -0
  537. package/dist/ui/carousel.d.ts +20 -0
  538. package/dist/ui/carousel.d.ts.map +1 -0
  539. package/dist/ui/carousel.js +238 -0
  540. package/dist/ui/carousel.js.map +1 -0
  541. package/dist/ui/carousel.mjs +200 -0
  542. package/dist/ui/carousel.mjs.map +1 -0
  543. package/dist/ui/dialog.d.ts +18 -0
  544. package/dist/ui/dialog.d.ts.map +1 -0
  545. package/dist/ui/dialog.js +181 -0
  546. package/dist/ui/dialog.js.map +1 -0
  547. package/dist/ui/dialog.mjs +148 -0
  548. package/dist/ui/dialog.mjs.map +1 -0
  549. package/dist/ui/drawer.d.ts +14 -0
  550. package/dist/ui/drawer.d.ts.map +1 -0
  551. package/dist/ui/drawer.js +163 -0
  552. package/dist/ui/drawer.js.map +1 -0
  553. package/dist/ui/drawer.mjs +130 -0
  554. package/dist/ui/drawer.mjs.map +1 -0
  555. package/dist/ui/dropdown-menu.d.ts +26 -0
  556. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  557. package/dist/ui/dropdown-menu.js +271 -0
  558. package/dist/ui/dropdown-menu.js.map +1 -0
  559. package/dist/ui/dropdown-menu.mjs +233 -0
  560. package/dist/ui/dropdown-menu.mjs.map +1 -0
  561. package/dist/ui/empty.d.ts +12 -0
  562. package/dist/ui/empty.d.ts.map +1 -0
  563. package/dist/ui/empty.js +132 -0
  564. package/dist/ui/empty.js.map +1 -0
  565. package/dist/ui/empty.mjs +103 -0
  566. package/dist/ui/empty.mjs.map +1 -0
  567. package/dist/ui/field.d.ts +25 -0
  568. package/dist/ui/field.d.ts.map +1 -0
  569. package/dist/ui/field.js +264 -0
  570. package/dist/ui/field.js.map +1 -0
  571. package/{src/ui/field.tsx → dist/ui/field.mjs} +142 -159
  572. package/dist/ui/field.mjs.map +1 -0
  573. package/dist/ui/input-group.d.ts +17 -0
  574. package/dist/ui/input-group.d.ts.map +1 -0
  575. package/dist/ui/input-group.js +185 -0
  576. package/dist/ui/input-group.js.map +1 -0
  577. package/{src/ui/input-group.tsx → dist/ui/input-group.mjs} +92 -106
  578. package/dist/ui/input-group.mjs.map +1 -0
  579. package/dist/ui/input-otp.d.ts +12 -0
  580. package/dist/ui/input-otp.d.ts.map +1 -0
  581. package/dist/ui/input-otp.js +105 -0
  582. package/dist/ui/input-otp.js.map +1 -0
  583. package/dist/ui/input-otp.mjs +68 -0
  584. package/dist/ui/input-otp.mjs.map +1 -0
  585. package/dist/ui/input.d.ts +4 -0
  586. package/dist/ui/input.d.ts.map +1 -0
  587. package/dist/ui/input.js +46 -0
  588. package/dist/ui/input.js.map +1 -0
  589. package/{src/ui/input.tsx → dist/ui/input.mjs} +17 -15
  590. package/dist/ui/input.mjs.map +1 -0
  591. package/dist/ui/label.d.ts +5 -0
  592. package/dist/ui/label.d.ts.map +1 -0
  593. package/dist/ui/label.js +48 -0
  594. package/dist/ui/label.js.map +1 -0
  595. package/dist/ui/label.mjs +24 -0
  596. package/dist/ui/label.mjs.map +1 -0
  597. package/dist/ui/navigation-menu.d.ts +15 -0
  598. package/dist/ui/navigation-menu.d.ts.map +1 -0
  599. package/dist/ui/navigation-menu.js +203 -0
  600. package/dist/ui/navigation-menu.js.map +1 -0
  601. package/{src/ui/navigation-menu.tsx → dist/ui/navigation-menu.mjs} +116 -112
  602. package/dist/ui/navigation-menu.mjs.map +1 -0
  603. package/dist/ui/pagination.d.ts +14 -0
  604. package/dist/ui/pagination.d.ts.map +1 -0
  605. package/dist/ui/pagination.js +149 -0
  606. package/dist/ui/pagination.js.map +1 -0
  607. package/dist/ui/pagination.mjs +123 -0
  608. package/dist/ui/pagination.mjs.map +1 -0
  609. package/dist/ui/progress.d.ts +5 -0
  610. package/dist/ui/progress.d.ts.map +1 -0
  611. package/dist/ui/progress.js +57 -0
  612. package/dist/ui/progress.js.map +1 -0
  613. package/dist/ui/progress.mjs +33 -0
  614. package/dist/ui/progress.mjs.map +1 -0
  615. package/dist/ui/radio-group.d.ts +6 -0
  616. package/dist/ui/radio-group.d.ts.map +1 -0
  617. package/dist/ui/radio-group.js +72 -0
  618. package/dist/ui/radio-group.js.map +1 -0
  619. package/dist/ui/radio-group.mjs +47 -0
  620. package/dist/ui/radio-group.mjs.map +1 -0
  621. package/dist/ui/select.d.ts +16 -0
  622. package/dist/ui/select.d.ts.map +1 -0
  623. package/dist/ui/select.js +213 -0
  624. package/dist/ui/select.js.map +1 -0
  625. package/dist/ui/select.mjs +180 -0
  626. package/dist/ui/select.mjs.map +1 -0
  627. package/dist/ui/separator.d.ts +5 -0
  628. package/dist/ui/separator.d.ts.map +1 -0
  629. package/dist/ui/separator.js +52 -0
  630. package/dist/ui/separator.js.map +1 -0
  631. package/dist/ui/separator.mjs +28 -0
  632. package/dist/ui/separator.mjs.map +1 -0
  633. package/dist/ui/sheet.d.ts +15 -0
  634. package/dist/ui/sheet.d.ts.map +1 -0
  635. package/dist/ui/sheet.js +160 -0
  636. package/dist/ui/sheet.js.map +1 -0
  637. package/dist/ui/sheet.mjs +129 -0
  638. package/dist/ui/sheet.mjs.map +1 -0
  639. package/dist/ui/sidebar.d.ts +70 -0
  640. package/dist/ui/sidebar.d.ts.map +1 -0
  641. package/dist/ui/sidebar.js +697 -0
  642. package/dist/ui/sidebar.js.map +1 -0
  643. package/dist/ui/sidebar.mjs +651 -0
  644. package/dist/ui/sidebar.mjs.map +1 -0
  645. package/dist/ui/skeleton.d.ts +3 -0
  646. package/dist/ui/skeleton.d.ts.map +1 -0
  647. package/dist/ui/skeleton.js +40 -0
  648. package/dist/ui/skeleton.js.map +1 -0
  649. package/dist/ui/skeleton.mjs +16 -0
  650. package/dist/ui/skeleton.mjs.map +1 -0
  651. package/dist/ui/table.d.ts +11 -0
  652. package/dist/ui/table.d.ts.map +1 -0
  653. package/dist/ui/table.js +147 -0
  654. package/dist/ui/table.js.map +1 -0
  655. package/dist/ui/table.mjs +116 -0
  656. package/dist/ui/table.mjs.map +1 -0
  657. package/dist/ui/tabs.d.ts +12 -0
  658. package/dist/ui/tabs.d.ts.map +1 -0
  659. package/dist/ui/tabs.js +121 -0
  660. package/dist/ui/tabs.js.map +1 -0
  661. package/{src/ui/tabs.tsx → dist/ui/tabs.mjs} +59 -56
  662. package/dist/ui/tabs.mjs.map +1 -0
  663. package/dist/ui/textarea.d.ts +4 -0
  664. package/dist/ui/textarea.d.ts.map +1 -0
  665. package/dist/ui/textarea.js +43 -0
  666. package/dist/ui/textarea.js.map +1 -0
  667. package/{src/ui/textarea.tsx → dist/ui/textarea.mjs} +16 -14
  668. package/dist/ui/textarea.mjs.map +1 -0
  669. package/dist/ui/toggle-group.d.ts +10 -0
  670. package/dist/ui/toggle-group.d.ts.map +1 -0
  671. package/dist/ui/toggle-group.js +105 -0
  672. package/dist/ui/toggle-group.js.map +1 -0
  673. package/dist/ui/toggle-group.mjs +70 -0
  674. package/dist/ui/toggle-group.mjs.map +1 -0
  675. package/dist/ui/toggle.d.ts +10 -0
  676. package/dist/ui/toggle.d.ts.map +1 -0
  677. package/dist/ui/toggle.js +70 -0
  678. package/dist/ui/toggle.js.map +1 -0
  679. package/{src/ui/toggle.tsx → dist/ui/toggle.mjs} +25 -26
  680. package/dist/ui/toggle.mjs.map +1 -0
  681. package/dist/ui/tooltip.d.ts +8 -0
  682. package/dist/ui/tooltip.d.ts.map +1 -0
  683. package/dist/ui/tooltip.js +84 -0
  684. package/dist/ui/tooltip.js.map +1 -0
  685. package/dist/ui/tooltip.mjs +57 -0
  686. package/dist/ui/tooltip.mjs.map +1 -0
  687. package/package.json +10 -2
  688. package/AGENTS.md +0 -1
  689. package/CHANGELOG.md +0 -155
  690. package/components.json +0 -33
  691. package/docs/standards/data-contracts.md +0 -81
  692. package/docs/standards/theming.md +0 -112
  693. package/scripts/fix-esm-extensions.mjs +0 -40
  694. package/src/blocks/application/app-shells/app-shell-1-sidebar.tsx +0 -198
  695. package/src/blocks/application/app-shells/app-shell-1.tsx +0 -196
  696. package/src/blocks/application/login-forms/login-page.test.tsx +0 -190
  697. package/src/blocks/application/login-forms/login-page.tsx +0 -240
  698. package/src/blocks/application/password-recovery/forgot-password-page-1-brand-mark.tsx +0 -38
  699. package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +0 -318
  700. package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -229
  701. package/src/blocks/application/verification/verify-1.tsx +0 -307
  702. package/src/blocks/application/verification/verify-confetti.tsx +0 -192
  703. package/src/blocks/application/viewport-ownership.test.tsx +0 -41
  704. package/src/blocks/e-commerce/category-filters/category-listing-filter-fields.tsx +0 -218
  705. package/src/blocks/e-commerce/category-filters/category-listing.test.tsx +0 -601
  706. package/src/blocks/e-commerce/category-filters/category-listing.tsx +0 -934
  707. package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
  708. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
  709. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
  710. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
  711. package/src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx +0 -149
  712. package/src/blocks/e-commerce/checkout-forms/checkout-country-field.tsx +0 -53
  713. package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
  714. package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
  715. package/src/blocks/e-commerce/checkout-forms/checkout-order-summary.tsx +0 -230
  716. package/src/blocks/e-commerce/checkout-forms/checkout-payment-step.tsx +0 -100
  717. package/src/blocks/e-commerce/checkout-forms/checkout-progress.tsx +0 -62
  718. package/src/blocks/e-commerce/checkout-forms/checkout-review-step.tsx +0 -59
  719. package/src/blocks/e-commerce/checkout-forms/checkout-shipping-step.tsx +0 -180
  720. package/src/blocks/e-commerce/checkout-forms/checkout.test.tsx +0 -478
  721. package/src/blocks/e-commerce/checkout-forms/checkout.tsx +0 -550
  722. package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
  723. package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
  724. package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
  725. package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
  726. package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
  727. package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
  728. package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
  729. package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
  730. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
  731. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
  732. package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
  733. package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
  734. package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
  735. package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
  736. package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.test.tsx +0 -56
  737. package/src/blocks/e-commerce/navigation/storefront-navbar-account-menu.tsx +0 -134
  738. package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.test.tsx +0 -204
  739. package/src/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.tsx +0 -371
  740. package/src/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.tsx +0 -96
  741. package/src/blocks/e-commerce/navigation/storefront-navbar-search-bar.tsx +0 -52
  742. package/src/blocks/e-commerce/navigation/storefront-navbar.test.tsx +0 -264
  743. package/src/blocks/e-commerce/navigation/storefront-navbar.tsx +0 -604
  744. package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
  745. package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
  746. package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
  747. package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
  748. package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
  749. package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
  750. package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
  751. package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
  752. package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
  753. package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
  754. package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
  755. package/src/blocks/e-commerce/product-list/product-card.tsx +0 -447
  756. package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
  757. package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
  758. package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
  759. package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
  760. package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
  761. package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
  762. package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
  763. package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
  764. package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
  765. package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
  766. package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
  767. package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
  768. package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
  769. package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
  770. package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
  771. package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
  772. package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
  773. package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
  774. package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
  775. package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
  776. package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
  777. package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
  778. package/src/blocks/marketing/banners/banner-1.tsx +0 -188
  779. package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
  780. package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
  781. package/src/blocks/marketing/features/feature.test.tsx +0 -153
  782. package/src/blocks/marketing/features/feature.tsx +0 -195
  783. package/src/blocks/marketing/footers/footer-section-accessibility.test.tsx +0 -118
  784. package/src/blocks/marketing/footers/footer-section-actions.test.tsx +0 -131
  785. package/src/blocks/marketing/footers/footer-section-data.test.tsx +0 -127
  786. package/src/blocks/marketing/footers/footer-section-native-links.test.tsx +0 -100
  787. package/src/blocks/marketing/footers/footer-section-public-api.test.tsx +0 -11
  788. package/src/blocks/marketing/footers/footer-section.test.tsx +0 -46
  789. package/src/blocks/marketing/footers/footer-section.tsx +0 -532
  790. package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
  791. package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
  792. package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
  793. package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
  794. package/src/blocks/marketing/navbars/navbar-public-api.test.tsx +0 -57
  795. package/src/blocks/marketing/navbars/navbar.mega.test.tsx +0 -149
  796. package/src/blocks/marketing/navbars/navbar.test.tsx +0 -155
  797. package/src/blocks/marketing/navbars/navbar.tsx +0 -735
  798. package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
  799. package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
  800. package/src/blocks/marketing/testimonials/testimonial-section.test.tsx +0 -171
  801. package/src/blocks/marketing/testimonials/testimonial-section.tsx +0 -237
  802. package/src/blocks/shared/reaction-toggle.tsx +0 -145
  803. package/src/hooks/use-mobile.ts +0 -19
  804. package/src/index.ts +0 -284
  805. package/src/lib/cart.test.ts +0 -15
  806. package/src/lib/contracts-curated.test.ts +0 -225
  807. package/src/lib/contracts-server-boundary.test.ts +0 -52
  808. package/src/lib/contracts.test.ts +0 -228
  809. package/src/lib/contracts.ts +0 -857
  810. package/src/lib/money.test.ts +0 -64
  811. package/src/lib/money.ts +0 -65
  812. package/src/lib/types/menu.ts +0 -43
  813. package/src/lib/types.ts +0 -4
  814. package/src/lib/utils.ts +0 -10
  815. package/src/ui/accordion.tsx +0 -65
  816. package/src/ui/badge.tsx +0 -47
  817. package/src/ui/breadcrumb.tsx +0 -108
  818. package/src/ui/button-group.tsx +0 -83
  819. package/src/ui/button.tsx +0 -63
  820. package/src/ui/card.tsx +0 -91
  821. package/src/ui/carousel.tsx +0 -241
  822. package/src/ui/dialog.tsx +0 -158
  823. package/src/ui/drawer.tsx +0 -134
  824. package/src/ui/dropdown-menu.tsx +0 -256
  825. package/src/ui/empty.tsx +0 -103
  826. package/src/ui/input-otp.tsx +0 -76
  827. package/src/ui/label.tsx +0 -23
  828. package/src/ui/pagination.tsx +0 -127
  829. package/src/ui/progress.tsx +0 -30
  830. package/src/ui/radio-group.tsx +0 -44
  831. package/src/ui/select.tsx +0 -189
  832. package/src/ui/separator.tsx +0 -27
  833. package/src/ui/sheet.tsx +0 -142
  834. package/src/ui/sidebar.tsx +0 -726
  835. package/src/ui/skeleton.tsx +0 -13
  836. package/src/ui/table.tsx +0 -115
  837. package/src/ui/toggle-group.tsx +0 -83
  838. package/src/ui/tooltip.tsx +0 -56
  839. package/tsconfig.build.json +0 -12
  840. package/tsconfig.json +0 -20
  841. package/tsup.config.ts +0 -19
  842. package/vitest.config.ts +0 -17
@@ -0,0 +1,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