@thorprovider/blocks 1.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (859) hide show
  1. package/README.md +274 -46
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts +21 -0
  4. package/dist/blocks/application/app-shells/app-shell-1-sidebar.d.ts.map +1 -0
  5. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js +147 -0
  6. package/dist/blocks/application/app-shells/app-shell-1-sidebar.js.map +1 -0
  7. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs +153 -0
  8. package/dist/blocks/application/app-shells/app-shell-1-sidebar.mjs.map +1 -0
  9. package/dist/blocks/application/app-shells/app-shell-1.d.ts +27 -0
  10. package/dist/blocks/application/app-shells/app-shell-1.d.ts.map +1 -0
  11. package/dist/blocks/application/app-shells/app-shell-1.js +150 -0
  12. package/dist/blocks/application/app-shells/app-shell-1.js.map +1 -0
  13. package/dist/blocks/application/app-shells/app-shell-1.mjs +123 -0
  14. package/dist/blocks/application/app-shells/app-shell-1.mjs.map +1 -0
  15. package/dist/blocks/application/login-forms/login-page.d.ts +42 -0
  16. package/dist/blocks/application/login-forms/login-page.d.ts.map +1 -0
  17. package/dist/blocks/application/login-forms/login-page.js +209 -0
  18. package/dist/blocks/application/login-forms/login-page.js.map +1 -0
  19. package/dist/blocks/application/login-forms/login-page.mjs +185 -0
  20. package/dist/blocks/application/login-forms/login-page.mjs.map +1 -0
  21. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts +3 -0
  22. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.d.ts.map +1 -0
  23. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js +74 -0
  24. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.js.map +1 -0
  25. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs +50 -0
  26. package/dist/blocks/application/password-recovery/forgot-password-page-1-brand-mark.mjs.map +1 -0
  27. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts +42 -0
  28. package/dist/blocks/application/password-recovery/forgot-password-page-1.d.ts.map +1 -0
  29. package/dist/blocks/application/password-recovery/forgot-password-page-1.js +293 -0
  30. package/dist/blocks/application/password-recovery/forgot-password-page-1.js.map +1 -0
  31. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs +259 -0
  32. package/dist/blocks/application/password-recovery/forgot-password-page-1.mjs.map +1 -0
  33. package/dist/blocks/application/signup-forms/signup-page-1.d.ts +41 -0
  34. package/dist/blocks/application/signup-forms/signup-page-1.d.ts.map +1 -0
  35. package/dist/blocks/application/signup-forms/signup-page-1.js +195 -0
  36. package/dist/blocks/application/signup-forms/signup-page-1.js.map +1 -0
  37. package/dist/blocks/application/signup-forms/signup-page-1.mjs +171 -0
  38. package/dist/blocks/application/signup-forms/signup-page-1.mjs.map +1 -0
  39. package/dist/blocks/application/verification/verify-1.d.ts +35 -0
  40. package/dist/blocks/application/verification/verify-1.d.ts.map +1 -0
  41. package/dist/blocks/application/verification/verify-1.js +243 -0
  42. package/dist/blocks/application/verification/verify-1.js.map +1 -0
  43. package/dist/blocks/application/verification/verify-1.mjs +219 -0
  44. package/dist/blocks/application/verification/verify-1.mjs.map +1 -0
  45. package/dist/blocks/application/verification/verify-confetti.d.ts +22 -0
  46. package/dist/blocks/application/verification/verify-confetti.d.ts.map +1 -0
  47. package/dist/blocks/application/verification/verify-confetti.js +145 -0
  48. package/dist/blocks/application/verification/verify-confetti.js.map +1 -0
  49. package/dist/blocks/application/verification/verify-confetti.mjs +121 -0
  50. package/dist/blocks/application/verification/verify-confetti.mjs.map +1 -0
  51. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts +39 -0
  52. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.d.ts.map +1 -0
  53. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js +180 -0
  54. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.js.map +1 -0
  55. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs +156 -0
  56. package/dist/blocks/e-commerce/category-filters/category-listing-filter-fields.mjs.map +1 -0
  57. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts +236 -0
  58. package/dist/blocks/e-commerce/category-filters/category-listing.d.ts.map +1 -0
  59. package/dist/blocks/e-commerce/category-filters/category-listing.js +562 -0
  60. package/dist/blocks/e-commerce/category-filters/category-listing.js.map +1 -0
  61. package/dist/blocks/e-commerce/category-filters/category-listing.mjs +539 -0
  62. package/dist/blocks/e-commerce/category-filters/category-listing.mjs.map +1 -0
  63. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts +4 -0
  64. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.d.ts.map +1 -0
  65. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +97 -0
  66. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -0
  67. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +73 -0
  68. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -0
  69. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts +41 -0
  70. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.d.ts.map +1 -0
  71. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js +115 -0
  72. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.js.map +1 -0
  73. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs +91 -0
  74. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.mjs.map +1 -0
  75. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts +107 -0
  76. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.d.ts.map +1 -0
  77. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js +180 -0
  78. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.js.map +1 -0
  79. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs +156 -0
  80. package/dist/blocks/e-commerce/checkout-forms/checkout-confirmation.mjs.map +1 -0
  81. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +13 -0
  82. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -0
  83. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +180 -0
  84. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -0
  85. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +156 -0
  86. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -0
  87. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts +12 -0
  88. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -0
  89. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +50 -0
  90. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -0
  91. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +33 -0
  92. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -0
  93. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts +11 -0
  94. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.d.ts.map +1 -0
  95. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js +50 -0
  96. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.js.map +1 -0
  97. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs +25 -0
  98. package/dist/blocks/e-commerce/checkout-forms/checkout-field-feedback.mjs.map +1 -0
  99. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts +5 -0
  100. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.d.ts.map +1 -0
  101. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js +17 -0
  102. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.js.map +1 -0
  103. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs +1 -0
  104. package/dist/blocks/e-commerce/checkout-forms/checkout-form-types.mjs.map +1 -0
  105. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +20 -0
  106. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -0
  107. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +176 -0
  108. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -0
  109. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +152 -0
  110. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -0
  111. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +12 -0
  112. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -0
  113. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +93 -0
  114. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -0
  115. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +69 -0
  116. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -0
  117. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts +11 -0
  118. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.d.ts.map +1 -0
  119. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js +76 -0
  120. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.js.map +1 -0
  121. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs +52 -0
  122. package/dist/blocks/e-commerce/checkout-forms/checkout-progress.mjs.map +1 -0
  123. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +11 -0
  124. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -0
  125. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +64 -0
  126. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -0
  127. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +40 -0
  128. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -0
  129. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +17 -0
  130. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -0
  131. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +199 -0
  132. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -0
  133. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +175 -0
  134. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -0
  135. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +164 -0
  136. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -0
  137. package/dist/blocks/e-commerce/checkout-forms/checkout.js +351 -0
  138. package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -0
  139. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +327 -0
  140. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -0
  141. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts +28 -0
  142. package/dist/blocks/e-commerce/navigation/back-to-top.d.ts.map +1 -0
  143. package/dist/blocks/e-commerce/navigation/back-to-top.js +78 -0
  144. package/dist/blocks/e-commerce/navigation/back-to-top.js.map +1 -0
  145. package/dist/blocks/e-commerce/navigation/back-to-top.mjs +52 -0
  146. package/dist/blocks/e-commerce/navigation/back-to-top.mjs.map +1 -0
  147. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts +61 -0
  148. package/dist/blocks/e-commerce/navigation/breadcrumb.d.ts.map +1 -0
  149. package/dist/blocks/e-commerce/navigation/breadcrumb.js +111 -0
  150. package/dist/blocks/e-commerce/navigation/breadcrumb.js.map +1 -0
  151. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs +93 -0
  152. package/dist/blocks/e-commerce/navigation/breadcrumb.mjs.map +1 -0
  153. package/dist/blocks/e-commerce/navigation/category-icon.d.ts +28 -0
  154. package/dist/blocks/e-commerce/navigation/category-icon.d.ts.map +1 -0
  155. package/dist/blocks/e-commerce/navigation/category-icon.js +86 -0
  156. package/dist/blocks/e-commerce/navigation/category-icon.js.map +1 -0
  157. package/dist/blocks/e-commerce/navigation/category-icon.mjs +79 -0
  158. package/dist/blocks/e-commerce/navigation/category-icon.mjs.map +1 -0
  159. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts +112 -0
  160. package/dist/blocks/e-commerce/navigation/mega-menu.d.ts.map +1 -0
  161. package/dist/blocks/e-commerce/navigation/mega-menu.js +250 -0
  162. package/dist/blocks/e-commerce/navigation/mega-menu.js.map +1 -0
  163. package/dist/blocks/e-commerce/navigation/mega-menu.mjs +228 -0
  164. package/dist/blocks/e-commerce/navigation/mega-menu.mjs.map +1 -0
  165. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts +71 -0
  166. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.d.ts.map +1 -0
  167. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js +94 -0
  168. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.js.map +1 -0
  169. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs +68 -0
  170. package/dist/blocks/e-commerce/navigation/mobile-bottom-nav.mjs.map +1 -0
  171. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts +121 -0
  172. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.d.ts.map +1 -0
  173. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js +257 -0
  174. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.js.map +1 -0
  175. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs +235 -0
  176. package/dist/blocks/e-commerce/navigation/mobile-category-drawer.mjs.map +1 -0
  177. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts +25 -0
  178. package/dist/blocks/e-commerce/navigation/skip-to-content.d.ts.map +1 -0
  179. package/dist/blocks/e-commerce/navigation/skip-to-content.js +55 -0
  180. package/dist/blocks/e-commerce/navigation/skip-to-content.js.map +1 -0
  181. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs +30 -0
  182. package/dist/blocks/e-commerce/navigation/skip-to-content.mjs.map +1 -0
  183. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts +23 -0
  184. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.d.ts.map +1 -0
  185. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js +127 -0
  186. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.js.map +1 -0
  187. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs +111 -0
  188. package/dist/blocks/e-commerce/navigation/storefront-navbar-account-menu.mjs.map +1 -0
  189. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts +66 -0
  190. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -0
  191. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +280 -0
  192. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -0
  193. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +263 -0
  194. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -0
  195. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts +13 -0
  196. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.d.ts.map +1 -0
  197. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js +83 -0
  198. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.js.map +1 -0
  199. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs +59 -0
  200. package/dist/blocks/e-commerce/navigation/storefront-navbar-mobile-nav.mjs.map +1 -0
  201. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts +8 -0
  202. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.d.ts.map +1 -0
  203. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js +73 -0
  204. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.js.map +1 -0
  205. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs +49 -0
  206. package/dist/blocks/e-commerce/navigation/storefront-navbar-search-bar.mjs.map +1 -0
  207. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts +121 -0
  208. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -0
  209. package/dist/blocks/e-commerce/navigation/storefront-navbar.js +424 -0
  210. package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -0
  211. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +399 -0
  212. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -0
  213. package/dist/blocks/e-commerce/order-history/order-history.d.ts +74 -0
  214. package/dist/blocks/e-commerce/order-history/order-history.d.ts.map +1 -0
  215. package/dist/blocks/e-commerce/order-history/order-history.js +161 -0
  216. package/dist/blocks/e-commerce/order-history/order-history.js.map +1 -0
  217. package/dist/blocks/e-commerce/order-history/order-history.mjs +141 -0
  218. package/dist/blocks/e-commerce/order-history/order-history.mjs.map +1 -0
  219. package/dist/blocks/e-commerce/order-history/order-line.d.ts +50 -0
  220. package/dist/blocks/e-commerce/order-history/order-line.d.ts.map +1 -0
  221. package/dist/blocks/e-commerce/order-history/order-line.js +75 -0
  222. package/dist/blocks/e-commerce/order-history/order-line.js.map +1 -0
  223. package/dist/blocks/e-commerce/order-history/order-line.mjs +49 -0
  224. package/dist/blocks/e-commerce/order-history/order-line.mjs.map +1 -0
  225. package/dist/blocks/e-commerce/product-categories/category-card.d.ts +9 -0
  226. package/dist/blocks/e-commerce/product-categories/category-card.d.ts.map +1 -0
  227. package/dist/blocks/e-commerce/product-categories/category-card.js +154 -0
  228. package/dist/blocks/e-commerce/product-categories/category-card.js.map +1 -0
  229. package/dist/blocks/e-commerce/product-categories/category-card.mjs +134 -0
  230. package/dist/blocks/e-commerce/product-categories/category-card.mjs.map +1 -0
  231. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts +15 -0
  232. package/dist/blocks/e-commerce/product-categories/category-shared.d.ts.map +1 -0
  233. package/dist/blocks/e-commerce/product-categories/category-shared.js +101 -0
  234. package/dist/blocks/e-commerce/product-categories/category-shared.js.map +1 -0
  235. package/dist/blocks/e-commerce/product-categories/category-shared.mjs +97 -0
  236. package/dist/blocks/e-commerce/product-categories/category-shared.mjs.map +1 -0
  237. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts +10 -0
  238. package/dist/blocks/e-commerce/product-categories/product-category-grid.d.ts.map +1 -0
  239. package/dist/blocks/e-commerce/product-categories/product-category-grid.js +138 -0
  240. package/dist/blocks/e-commerce/product-categories/product-category-grid.js.map +1 -0
  241. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs +114 -0
  242. package/dist/blocks/e-commerce/product-categories/product-category-grid.mjs.map +1 -0
  243. package/dist/blocks/e-commerce/product-categories/product-category.d.ts +41 -0
  244. package/dist/blocks/e-commerce/product-categories/product-category.d.ts.map +1 -0
  245. package/dist/blocks/e-commerce/product-categories/product-category.js +319 -0
  246. package/dist/blocks/e-commerce/product-categories/product-category.js.map +1 -0
  247. package/dist/blocks/e-commerce/product-categories/product-category.mjs +322 -0
  248. package/dist/blocks/e-commerce/product-categories/product-category.mjs.map +1 -0
  249. package/dist/blocks/e-commerce/product-list/product-card.d.ts +47 -0
  250. package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -0
  251. package/dist/blocks/e-commerce/product-list/product-card.js +361 -0
  252. package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -0
  253. package/dist/blocks/e-commerce/product-list/product-card.mjs +337 -0
  254. package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -0
  255. package/dist/blocks/e-commerce/product-list/product-grid.d.ts +28 -0
  256. package/dist/blocks/e-commerce/product-list/product-grid.d.ts.map +1 -0
  257. package/dist/blocks/e-commerce/product-list/product-grid.js +92 -0
  258. package/dist/blocks/e-commerce/product-list/product-grid.js.map +1 -0
  259. package/dist/blocks/e-commerce/product-list/product-grid.mjs +68 -0
  260. package/dist/blocks/e-commerce/product-list/product-grid.mjs.map +1 -0
  261. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts +30 -0
  262. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -0
  263. package/dist/blocks/e-commerce/product-list/product-showcase-1.js +245 -0
  264. package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -0
  265. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +221 -0
  266. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -0
  267. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts +20 -0
  268. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.d.ts.map +1 -0
  269. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js +71 -0
  270. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.js.map +1 -0
  271. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs +47 -0
  272. package/dist/blocks/e-commerce/product-overview/product-overview-gallery.mjs.map +1 -0
  273. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts +15 -0
  274. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.d.ts.map +1 -0
  275. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js +118 -0
  276. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.js.map +1 -0
  277. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs +94 -0
  278. package/dist/blocks/e-commerce/product-overview/product-overview-lightbox-tab.mjs.map +1 -0
  279. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts +26 -0
  280. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.d.ts.map +1 -0
  281. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js +85 -0
  282. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.js.map +1 -0
  283. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs +61 -0
  284. package/dist/blocks/e-commerce/product-overview/product-overview-reviews-tab.mjs.map +1 -0
  285. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts +32 -0
  286. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.d.ts.map +1 -0
  287. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js +79 -0
  288. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.js.map +1 -0
  289. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs +51 -0
  290. package/dist/blocks/e-commerce/product-overview/product-overview-tabs.mjs.map +1 -0
  291. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts +121 -0
  292. package/dist/blocks/e-commerce/product-overview/product-overview.d.ts.map +1 -0
  293. package/dist/blocks/e-commerce/product-overview/product-overview.js +844 -0
  294. package/dist/blocks/e-commerce/product-overview/product-overview.js.map +1 -0
  295. package/dist/blocks/e-commerce/product-overview/product-overview.mjs +821 -0
  296. package/dist/blocks/e-commerce/product-overview/product-overview.mjs.map +1 -0
  297. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts +17 -0
  298. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.d.ts.map +1 -0
  299. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js +123 -0
  300. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.js.map +1 -0
  301. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs +99 -0
  302. package/dist/blocks/e-commerce/product-overview/product-quick-view-card.mjs.map +1 -0
  303. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts +20 -0
  304. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -0
  305. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +271 -0
  306. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -0
  307. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +253 -0
  308. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -0
  309. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts +68 -0
  310. package/dist/blocks/e-commerce/product-overview/product-quick-view.d.ts.map +1 -0
  311. package/dist/blocks/e-commerce/product-overview/product-quick-view.js +84 -0
  312. package/dist/blocks/e-commerce/product-overview/product-quick-view.js.map +1 -0
  313. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs +60 -0
  314. package/dist/blocks/e-commerce/product-overview/product-quick-view.mjs.map +1 -0
  315. package/dist/blocks/e-commerce/reviews/review-card.d.ts +60 -0
  316. package/dist/blocks/e-commerce/reviews/review-card.d.ts.map +1 -0
  317. package/dist/blocks/e-commerce/reviews/review-card.js +166 -0
  318. package/dist/blocks/e-commerce/reviews/review-card.js.map +1 -0
  319. package/dist/blocks/e-commerce/reviews/review-card.mjs +139 -0
  320. package/dist/blocks/e-commerce/reviews/review-card.mjs.map +1 -0
  321. package/dist/blocks/e-commerce/reviews/review-composer.d.ts +50 -0
  322. package/dist/blocks/e-commerce/reviews/review-composer.d.ts.map +1 -0
  323. package/dist/blocks/e-commerce/reviews/review-composer.js +180 -0
  324. package/dist/blocks/e-commerce/reviews/review-composer.js.map +1 -0
  325. package/dist/blocks/e-commerce/reviews/review-composer.mjs +155 -0
  326. package/dist/blocks/e-commerce/reviews/review-composer.mjs.map +1 -0
  327. package/dist/blocks/e-commerce/reviews/review-list.d.ts +40 -0
  328. package/dist/blocks/e-commerce/reviews/review-list.d.ts.map +1 -0
  329. package/dist/blocks/e-commerce/reviews/review-list.js +138 -0
  330. package/dist/blocks/e-commerce/reviews/review-list.js.map +1 -0
  331. package/dist/blocks/e-commerce/reviews/review-list.mjs +119 -0
  332. package/dist/blocks/e-commerce/reviews/review-list.mjs.map +1 -0
  333. package/dist/blocks/e-commerce/reviews/review-summary.d.ts +49 -0
  334. package/dist/blocks/e-commerce/reviews/review-summary.d.ts.map +1 -0
  335. package/dist/blocks/e-commerce/reviews/review-summary.js +150 -0
  336. package/dist/blocks/e-commerce/reviews/review-summary.js.map +1 -0
  337. package/dist/blocks/e-commerce/reviews/review-summary.mjs +124 -0
  338. package/dist/blocks/e-commerce/reviews/review-summary.mjs.map +1 -0
  339. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts +98 -0
  340. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.d.ts.map +1 -0
  341. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js +417 -0
  342. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.js.map +1 -0
  343. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs +393 -0
  344. package/dist/blocks/e-commerce/shopping-carts/shopping-cart.mjs.map +1 -0
  345. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts +13 -0
  346. package/dist/blocks/e-commerce/store-containers/store-container-1.d.ts.map +1 -0
  347. package/dist/blocks/e-commerce/store-containers/store-container-1.js +45 -0
  348. package/dist/blocks/e-commerce/store-containers/store-container-1.js.map +1 -0
  349. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs +21 -0
  350. package/dist/blocks/e-commerce/store-containers/store-container-1.mjs.map +1 -0
  351. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts +163 -0
  352. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -0
  353. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +810 -0
  354. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -0
  355. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +786 -0
  356. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -0
  357. package/dist/blocks/marketing/banners/avatar-group.d.ts +8 -0
  358. package/dist/blocks/marketing/banners/avatar-group.d.ts.map +1 -0
  359. package/dist/blocks/marketing/banners/avatar-group.js +90 -0
  360. package/dist/blocks/marketing/banners/avatar-group.js.map +1 -0
  361. package/dist/blocks/marketing/banners/avatar-group.mjs +56 -0
  362. package/dist/blocks/marketing/banners/avatar-group.mjs.map +1 -0
  363. package/dist/blocks/marketing/banners/banner-1.d.ts +26 -0
  364. package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -0
  365. package/dist/blocks/marketing/banners/banner-1.js +177 -0
  366. package/dist/blocks/marketing/banners/banner-1.js.map +1 -0
  367. package/dist/blocks/marketing/banners/banner-1.mjs +153 -0
  368. package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -0
  369. package/dist/blocks/marketing/cta/cta-section-1.d.ts +13 -0
  370. package/dist/blocks/marketing/cta/cta-section-1.d.ts.map +1 -0
  371. package/dist/blocks/marketing/cta/cta-section-1.js +116 -0
  372. package/dist/blocks/marketing/cta/cta-section-1.js.map +1 -0
  373. package/dist/blocks/marketing/cta/cta-section-1.mjs +92 -0
  374. package/dist/blocks/marketing/cta/cta-section-1.mjs.map +1 -0
  375. package/dist/blocks/marketing/faq/faq-block-1.d.ts +16 -0
  376. package/dist/blocks/marketing/faq/faq-block-1.d.ts.map +1 -0
  377. package/dist/blocks/marketing/faq/faq-block-1.js +49 -0
  378. package/dist/blocks/marketing/faq/faq-block-1.js.map +1 -0
  379. package/dist/blocks/marketing/faq/faq-block-1.mjs +25 -0
  380. package/dist/blocks/marketing/faq/faq-block-1.mjs.map +1 -0
  381. package/dist/blocks/marketing/features/feature.d.ts +45 -0
  382. package/dist/blocks/marketing/features/feature.d.ts.map +1 -0
  383. package/dist/blocks/marketing/features/feature.js +135 -0
  384. package/dist/blocks/marketing/features/feature.js.map +1 -0
  385. package/dist/blocks/marketing/features/feature.mjs +111 -0
  386. package/dist/blocks/marketing/features/feature.mjs.map +1 -0
  387. package/dist/blocks/marketing/footers/footer-section.d.ts +59 -0
  388. package/dist/blocks/marketing/footers/footer-section.d.ts.map +1 -0
  389. package/dist/blocks/marketing/footers/footer-section.js +356 -0
  390. package/dist/blocks/marketing/footers/footer-section.js.map +1 -0
  391. package/dist/blocks/marketing/footers/footer-section.mjs +332 -0
  392. package/dist/blocks/marketing/footers/footer-section.mjs.map +1 -0
  393. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts +9 -0
  394. package/dist/blocks/marketing/hero-sections/avatar-group.d.ts.map +1 -0
  395. package/dist/blocks/marketing/hero-sections/avatar-group.js +92 -0
  396. package/dist/blocks/marketing/hero-sections/avatar-group.js.map +1 -0
  397. package/dist/blocks/marketing/hero-sections/avatar-group.mjs +58 -0
  398. package/dist/blocks/marketing/hero-sections/avatar-group.mjs.map +1 -0
  399. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts +27 -0
  400. package/dist/blocks/marketing/hero-sections/hero-section-1.d.ts.map +1 -0
  401. package/dist/blocks/marketing/hero-sections/hero-section-1.js +124 -0
  402. package/dist/blocks/marketing/hero-sections/hero-section-1.js.map +1 -0
  403. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs +100 -0
  404. package/dist/blocks/marketing/hero-sections/hero-section-1.mjs.map +1 -0
  405. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts +19 -0
  406. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.d.ts.map +1 -0
  407. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js +63 -0
  408. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.js.map +1 -0
  409. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs +39 -0
  410. package/dist/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.mjs.map +1 -0
  411. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts +13 -0
  412. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.d.ts.map +1 -0
  413. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js +49 -0
  414. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.js.map +1 -0
  415. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs +25 -0
  416. package/dist/blocks/marketing/logo-clouds/logo-cloud-1.mjs.map +1 -0
  417. package/dist/blocks/marketing/navbars/navbar.d.ts +80 -0
  418. package/dist/blocks/marketing/navbars/navbar.d.ts.map +1 -0
  419. package/dist/blocks/marketing/navbars/navbar.js +484 -0
  420. package/dist/blocks/marketing/navbars/navbar.js.map +1 -0
  421. package/dist/blocks/marketing/navbars/navbar.mjs +475 -0
  422. package/dist/blocks/marketing/navbars/navbar.mjs.map +1 -0
  423. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts +23 -0
  424. package/dist/blocks/marketing/pricing/pricing-section-1.d.ts.map +1 -0
  425. package/dist/blocks/marketing/pricing/pricing-section-1.js +89 -0
  426. package/dist/blocks/marketing/pricing/pricing-section-1.js.map +1 -0
  427. package/dist/blocks/marketing/pricing/pricing-section-1.mjs +65 -0
  428. package/dist/blocks/marketing/pricing/pricing-section-1.mjs.map +1 -0
  429. package/dist/blocks/marketing/statistics/statistic-1.d.ts +19 -0
  430. package/dist/blocks/marketing/statistics/statistic-1.d.ts.map +1 -0
  431. package/dist/blocks/marketing/statistics/statistic-1.js +83 -0
  432. package/dist/blocks/marketing/statistics/statistic-1.js.map +1 -0
  433. package/dist/blocks/marketing/statistics/statistic-1.mjs +59 -0
  434. package/dist/blocks/marketing/statistics/statistic-1.mjs.map +1 -0
  435. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts +29 -0
  436. package/dist/blocks/marketing/testimonials/testimonial-section.d.ts.map +1 -0
  437. package/dist/blocks/marketing/testimonials/testimonial-section.js +173 -0
  438. package/dist/blocks/marketing/testimonials/testimonial-section.js.map +1 -0
  439. package/dist/blocks/marketing/testimonials/testimonial-section.mjs +155 -0
  440. package/dist/blocks/marketing/testimonials/testimonial-section.mjs.map +1 -0
  441. package/dist/blocks/shared/reaction-toggle.d.ts +14 -0
  442. package/dist/blocks/shared/reaction-toggle.d.ts.map +1 -0
  443. package/dist/blocks/shared/reaction-toggle.js +138 -0
  444. package/dist/blocks/shared/reaction-toggle.js.map +1 -0
  445. package/dist/blocks/shared/reaction-toggle.mjs +114 -0
  446. package/dist/blocks/shared/reaction-toggle.mjs.map +1 -0
  447. package/dist/hooks/use-mobile.d.ts +2 -0
  448. package/dist/hooks/use-mobile.d.ts.map +1 -0
  449. package/dist/hooks/use-mobile.js +53 -0
  450. package/dist/hooks/use-mobile.js.map +1 -0
  451. package/dist/hooks/use-mobile.mjs +19 -0
  452. package/dist/hooks/use-mobile.mjs.map +1 -0
  453. package/dist/index.d.ts +100 -0
  454. package/dist/index.d.ts.map +1 -0
  455. package/dist/index.js +339 -0
  456. package/dist/index.js.map +1 -0
  457. package/dist/index.mjs +238 -0
  458. package/dist/index.mjs.map +1 -0
  459. package/{src/lib/cart.ts → dist/lib/cart.d.ts} +2 -3
  460. package/dist/lib/cart.d.ts.map +1 -0
  461. package/dist/lib/cart.js +31 -0
  462. package/dist/lib/cart.js.map +1 -0
  463. package/dist/lib/cart.mjs +7 -0
  464. package/dist/lib/cart.mjs.map +1 -0
  465. package/dist/lib/contracts.d.ts +4008 -0
  466. package/dist/lib/contracts.d.ts.map +1 -0
  467. package/dist/lib/contracts.js +828 -0
  468. package/dist/lib/contracts.js.map +1 -0
  469. package/dist/lib/contracts.mjs +737 -0
  470. package/dist/lib/contracts.mjs.map +1 -0
  471. package/dist/lib/money.d.ts +28 -0
  472. package/dist/lib/money.d.ts.map +1 -0
  473. package/dist/lib/money.js +50 -0
  474. package/dist/lib/money.js.map +1 -0
  475. package/dist/lib/money.mjs +24 -0
  476. package/dist/lib/money.mjs.map +1 -0
  477. package/dist/lib/types/menu.d.ts +40 -0
  478. package/dist/lib/types/menu.d.ts.map +1 -0
  479. package/dist/lib/types/menu.js +50 -0
  480. package/dist/lib/types/menu.js.map +1 -0
  481. package/dist/lib/types/menu.mjs +25 -0
  482. package/dist/lib/types/menu.mjs.map +1 -0
  483. package/dist/lib/types.d.ts +5 -0
  484. package/dist/lib/types.d.ts.map +1 -0
  485. package/dist/lib/types.js +17 -0
  486. package/dist/lib/types.js.map +1 -0
  487. package/dist/lib/types.mjs +1 -0
  488. package/dist/lib/types.mjs.map +1 -0
  489. package/dist/lib/utils.d.ts +7 -0
  490. package/dist/lib/utils.d.ts.map +1 -0
  491. package/dist/lib/utils.js +33 -0
  492. package/dist/lib/utils.js.map +1 -0
  493. package/dist/lib/utils.mjs +9 -0
  494. package/dist/lib/utils.mjs.map +1 -0
  495. package/dist/ui/accordion.d.ts +8 -0
  496. package/dist/ui/accordion.d.ts.map +1 -0
  497. package/dist/ui/accordion.js +93 -0
  498. package/dist/ui/accordion.js.map +1 -0
  499. package/dist/ui/accordion.mjs +66 -0
  500. package/dist/ui/accordion.mjs.map +1 -0
  501. package/dist/ui/avatar.d.ts +12 -0
  502. package/dist/ui/avatar.d.ts.map +1 -0
  503. package/dist/ui/avatar.js +134 -0
  504. package/dist/ui/avatar.js.map +1 -0
  505. package/{src/ui/avatar.tsx → dist/ui/avatar.mjs} +67 -70
  506. package/dist/ui/avatar.mjs.map +1 -0
  507. package/dist/ui/badge.d.ts +10 -0
  508. package/dist/ui/badge.d.ts.map +1 -0
  509. package/dist/ui/badge.js +69 -0
  510. package/dist/ui/badge.js.map +1 -0
  511. package/dist/ui/badge.mjs +44 -0
  512. package/dist/ui/badge.mjs.map +1 -0
  513. package/dist/ui/breadcrumb.d.ts +12 -0
  514. package/dist/ui/breadcrumb.d.ts.map +1 -0
  515. package/dist/ui/breadcrumb.js +134 -0
  516. package/dist/ui/breadcrumb.js.map +1 -0
  517. package/dist/ui/breadcrumb.mjs +104 -0
  518. package/dist/ui/breadcrumb.mjs.map +1 -0
  519. package/dist/ui/button-group.d.ts +12 -0
  520. package/dist/ui/button-group.d.ts.map +1 -0
  521. package/dist/ui/button-group.js +104 -0
  522. package/dist/ui/button-group.js.map +1 -0
  523. package/dist/ui/button-group.mjs +77 -0
  524. package/dist/ui/button-group.mjs.map +1 -0
  525. package/dist/ui/button.d.ts +11 -0
  526. package/dist/ui/button.d.ts.map +1 -0
  527. package/dist/ui/button.js +82 -0
  528. package/dist/ui/button.js.map +1 -0
  529. package/dist/ui/button.mjs +57 -0
  530. package/dist/ui/button.mjs.map +1 -0
  531. package/dist/ui/card.d.ts +10 -0
  532. package/dist/ui/card.d.ts.map +1 -0
  533. package/dist/ui/card.js +121 -0
  534. package/dist/ui/card.js.map +1 -0
  535. package/dist/ui/card.mjs +91 -0
  536. package/dist/ui/card.mjs.map +1 -0
  537. package/dist/ui/carousel.d.ts +20 -0
  538. package/dist/ui/carousel.d.ts.map +1 -0
  539. package/dist/ui/carousel.js +238 -0
  540. package/dist/ui/carousel.js.map +1 -0
  541. package/dist/ui/carousel.mjs +200 -0
  542. package/dist/ui/carousel.mjs.map +1 -0
  543. package/dist/ui/dialog.d.ts +18 -0
  544. package/dist/ui/dialog.d.ts.map +1 -0
  545. package/dist/ui/dialog.js +181 -0
  546. package/dist/ui/dialog.js.map +1 -0
  547. package/dist/ui/dialog.mjs +148 -0
  548. package/dist/ui/dialog.mjs.map +1 -0
  549. package/dist/ui/drawer.d.ts +14 -0
  550. package/dist/ui/drawer.d.ts.map +1 -0
  551. package/dist/ui/drawer.js +163 -0
  552. package/dist/ui/drawer.js.map +1 -0
  553. package/dist/ui/drawer.mjs +130 -0
  554. package/dist/ui/drawer.mjs.map +1 -0
  555. package/dist/ui/dropdown-menu.d.ts +26 -0
  556. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  557. package/dist/ui/dropdown-menu.js +271 -0
  558. package/dist/ui/dropdown-menu.js.map +1 -0
  559. package/dist/ui/dropdown-menu.mjs +233 -0
  560. package/dist/ui/dropdown-menu.mjs.map +1 -0
  561. package/dist/ui/empty.d.ts +12 -0
  562. package/dist/ui/empty.d.ts.map +1 -0
  563. package/dist/ui/empty.js +132 -0
  564. package/dist/ui/empty.js.map +1 -0
  565. package/dist/ui/empty.mjs +103 -0
  566. package/dist/ui/empty.mjs.map +1 -0
  567. package/dist/ui/field.d.ts +25 -0
  568. package/dist/ui/field.d.ts.map +1 -0
  569. package/dist/ui/field.js +264 -0
  570. package/dist/ui/field.js.map +1 -0
  571. package/{src/ui/field.tsx → dist/ui/field.mjs} +142 -159
  572. package/dist/ui/field.mjs.map +1 -0
  573. package/dist/ui/input-group.d.ts +17 -0
  574. package/dist/ui/input-group.d.ts.map +1 -0
  575. package/dist/ui/input-group.js +185 -0
  576. package/dist/ui/input-group.js.map +1 -0
  577. package/{src/ui/input-group.tsx → dist/ui/input-group.mjs} +92 -106
  578. package/dist/ui/input-group.mjs.map +1 -0
  579. package/dist/ui/input-otp.d.ts +12 -0
  580. package/dist/ui/input-otp.d.ts.map +1 -0
  581. package/dist/ui/input-otp.js +105 -0
  582. package/dist/ui/input-otp.js.map +1 -0
  583. package/dist/ui/input-otp.mjs +68 -0
  584. package/dist/ui/input-otp.mjs.map +1 -0
  585. package/dist/ui/input.d.ts +4 -0
  586. package/dist/ui/input.d.ts.map +1 -0
  587. package/dist/ui/input.js +46 -0
  588. package/dist/ui/input.js.map +1 -0
  589. package/{src/ui/input.tsx → dist/ui/input.mjs} +17 -15
  590. package/dist/ui/input.mjs.map +1 -0
  591. package/dist/ui/label.d.ts +5 -0
  592. package/dist/ui/label.d.ts.map +1 -0
  593. package/dist/ui/label.js +48 -0
  594. package/dist/ui/label.js.map +1 -0
  595. package/dist/ui/label.mjs +24 -0
  596. package/dist/ui/label.mjs.map +1 -0
  597. package/dist/ui/navigation-menu.d.ts +15 -0
  598. package/dist/ui/navigation-menu.d.ts.map +1 -0
  599. package/dist/ui/navigation-menu.js +203 -0
  600. package/dist/ui/navigation-menu.js.map +1 -0
  601. package/{src/ui/navigation-menu.tsx → dist/ui/navigation-menu.mjs} +116 -112
  602. package/dist/ui/navigation-menu.mjs.map +1 -0
  603. package/dist/ui/pagination.d.ts +14 -0
  604. package/dist/ui/pagination.d.ts.map +1 -0
  605. package/dist/ui/pagination.js +149 -0
  606. package/dist/ui/pagination.js.map +1 -0
  607. package/dist/ui/pagination.mjs +123 -0
  608. package/dist/ui/pagination.mjs.map +1 -0
  609. package/dist/ui/progress.d.ts +5 -0
  610. package/dist/ui/progress.d.ts.map +1 -0
  611. package/dist/ui/progress.js +57 -0
  612. package/dist/ui/progress.js.map +1 -0
  613. package/dist/ui/progress.mjs +33 -0
  614. package/dist/ui/progress.mjs.map +1 -0
  615. package/dist/ui/radio-group.d.ts +6 -0
  616. package/dist/ui/radio-group.d.ts.map +1 -0
  617. package/dist/ui/radio-group.js +72 -0
  618. package/dist/ui/radio-group.js.map +1 -0
  619. package/dist/ui/radio-group.mjs +47 -0
  620. package/dist/ui/radio-group.mjs.map +1 -0
  621. package/dist/ui/select.d.ts +16 -0
  622. package/dist/ui/select.d.ts.map +1 -0
  623. package/dist/ui/select.js +213 -0
  624. package/dist/ui/select.js.map +1 -0
  625. package/dist/ui/select.mjs +180 -0
  626. package/dist/ui/select.mjs.map +1 -0
  627. package/dist/ui/separator.d.ts +5 -0
  628. package/dist/ui/separator.d.ts.map +1 -0
  629. package/dist/ui/separator.js +52 -0
  630. package/dist/ui/separator.js.map +1 -0
  631. package/dist/ui/separator.mjs +28 -0
  632. package/dist/ui/separator.mjs.map +1 -0
  633. package/dist/ui/sheet.d.ts +15 -0
  634. package/dist/ui/sheet.d.ts.map +1 -0
  635. package/dist/ui/sheet.js +160 -0
  636. package/dist/ui/sheet.js.map +1 -0
  637. package/dist/ui/sheet.mjs +129 -0
  638. package/dist/ui/sheet.mjs.map +1 -0
  639. package/dist/ui/sidebar.d.ts +70 -0
  640. package/dist/ui/sidebar.d.ts.map +1 -0
  641. package/dist/ui/sidebar.js +697 -0
  642. package/dist/ui/sidebar.js.map +1 -0
  643. package/dist/ui/sidebar.mjs +651 -0
  644. package/dist/ui/sidebar.mjs.map +1 -0
  645. package/dist/ui/skeleton.d.ts +3 -0
  646. package/dist/ui/skeleton.d.ts.map +1 -0
  647. package/dist/ui/skeleton.js +40 -0
  648. package/dist/ui/skeleton.js.map +1 -0
  649. package/dist/ui/skeleton.mjs +16 -0
  650. package/dist/ui/skeleton.mjs.map +1 -0
  651. package/dist/ui/table.d.ts +11 -0
  652. package/dist/ui/table.d.ts.map +1 -0
  653. package/dist/ui/table.js +147 -0
  654. package/dist/ui/table.js.map +1 -0
  655. package/dist/ui/table.mjs +116 -0
  656. package/dist/ui/table.mjs.map +1 -0
  657. package/dist/ui/tabs.d.ts +12 -0
  658. package/dist/ui/tabs.d.ts.map +1 -0
  659. package/dist/ui/tabs.js +121 -0
  660. package/dist/ui/tabs.js.map +1 -0
  661. package/{src/ui/tabs.tsx → dist/ui/tabs.mjs} +59 -56
  662. package/dist/ui/tabs.mjs.map +1 -0
  663. package/dist/ui/textarea.d.ts +4 -0
  664. package/dist/ui/textarea.d.ts.map +1 -0
  665. package/dist/ui/textarea.js +43 -0
  666. package/dist/ui/textarea.js.map +1 -0
  667. package/{src/ui/textarea.tsx → dist/ui/textarea.mjs} +16 -14
  668. package/dist/ui/textarea.mjs.map +1 -0
  669. package/dist/ui/toggle-group.d.ts +10 -0
  670. package/dist/ui/toggle-group.d.ts.map +1 -0
  671. package/dist/ui/toggle-group.js +105 -0
  672. package/dist/ui/toggle-group.js.map +1 -0
  673. package/dist/ui/toggle-group.mjs +70 -0
  674. package/dist/ui/toggle-group.mjs.map +1 -0
  675. package/dist/ui/toggle.d.ts +10 -0
  676. package/dist/ui/toggle.d.ts.map +1 -0
  677. package/dist/ui/toggle.js +70 -0
  678. package/dist/ui/toggle.js.map +1 -0
  679. package/{src/ui/toggle.tsx → dist/ui/toggle.mjs} +25 -26
  680. package/dist/ui/toggle.mjs.map +1 -0
  681. package/dist/ui/tooltip.d.ts +8 -0
  682. package/dist/ui/tooltip.d.ts.map +1 -0
  683. package/dist/ui/tooltip.js +84 -0
  684. package/dist/ui/tooltip.js.map +1 -0
  685. package/dist/ui/tooltip.mjs +57 -0
  686. package/dist/ui/tooltip.mjs.map +1 -0
  687. package/package.json +8 -1
  688. package/AGENTS.md +0 -1
  689. package/CHANGELOG.md +0 -107
  690. package/components.json +0 -33
  691. package/docs/standards/data-contracts.md +0 -81
  692. package/docs/standards/theming.md +0 -112
  693. package/scripts/fix-esm-extensions.mjs +0 -40
  694. package/src/blocks/application/app-shells/app-shell-1-sidebar.tsx +0 -198
  695. package/src/blocks/application/app-shells/app-shell-1.tsx +0 -196
  696. package/src/blocks/application/login-forms/login-page-1.tsx +0 -246
  697. package/src/blocks/application/login-forms/login-page-2.tsx +0 -207
  698. package/src/blocks/application/password-recovery/forgot-password-page-1-brand-mark.tsx +0 -38
  699. package/src/blocks/application/password-recovery/forgot-password-page-1.tsx +0 -320
  700. package/src/blocks/application/signup-forms/signup-page-1.tsx +0 -231
  701. package/src/blocks/application/verification/verify-1.tsx +0 -307
  702. package/src/blocks/application/verification/verify-confetti.tsx +0 -192
  703. package/src/blocks/e-commerce/category-filters/category-filter-1.tsx +0 -260
  704. package/src/blocks/e-commerce/category-filters/category-filter-2-filter-panel.tsx +0 -222
  705. package/src/blocks/e-commerce/category-filters/category-filter-2.test.tsx +0 -513
  706. package/src/blocks/e-commerce/category-filters/category-filter-2.tsx +0 -921
  707. package/src/blocks/e-commerce/category-filters/category-filter-4-chip-rail.tsx +0 -57
  708. package/src/blocks/e-commerce/category-filters/category-filter-4-drawer.tsx +0 -124
  709. package/src/blocks/e-commerce/category-filters/category-filter-4-fields.tsx +0 -170
  710. package/src/blocks/e-commerce/category-filters/category-filter-4-sidebar.tsx +0 -52
  711. package/src/blocks/e-commerce/category-filters/category-filter-4-sort-sheet.tsx +0 -57
  712. package/src/blocks/e-commerce/category-filters/category-filter-4-state.ts +0 -68
  713. package/src/blocks/e-commerce/category-filters/category-filter-4.tsx +0 -298
  714. package/src/blocks/e-commerce/checkout-forms/card-formatting.test.ts +0 -47
  715. package/src/blocks/e-commerce/checkout-forms/card-formatting.ts +0 -9
  716. package/src/blocks/e-commerce/checkout-forms/checkbox-check.tsx +0 -74
  717. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation-fulfilment-progress.tsx +0 -195
  718. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.test.tsx +0 -136
  719. package/src/blocks/e-commerce/checkout-forms/checkout-confirmation.tsx +0 -329
  720. package/src/blocks/e-commerce/checkout-forms/checkout-field-feedback.tsx +0 -29
  721. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-contact-step.tsx +0 -96
  722. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-country-field.tsx +0 -51
  723. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-order-summary.tsx +0 -252
  724. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-payment-step.tsx +0 -188
  725. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-progress.tsx +0 -36
  726. package/src/blocks/e-commerce/checkout-forms/checkout-form-1-shipping-step.tsx +0 -156
  727. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.test.tsx +0 -216
  728. package/src/blocks/e-commerce/checkout-forms/checkout-form-1.tsx +0 -338
  729. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-order-summary.tsx +0 -130
  730. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-payment-card.tsx +0 -175
  731. package/src/blocks/e-commerce/checkout-forms/checkout-form-2-shipping-card.tsx +0 -190
  732. package/src/blocks/e-commerce/checkout-forms/checkout-form-2.tsx +0 -312
  733. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-information-step.tsx +0 -91
  734. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-order-summary.tsx +0 -110
  735. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-payment-step.tsx +0 -137
  736. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-progress.tsx +0 -68
  737. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-review-step.tsx +0 -79
  738. package/src/blocks/e-commerce/checkout-forms/checkout-form-3-shipping-step.tsx +0 -172
  739. package/src/blocks/e-commerce/checkout-forms/checkout-form-3.tsx +0 -392
  740. package/src/blocks/e-commerce/checkout-forms/checkout-form-types.ts +0 -7
  741. package/src/blocks/e-commerce/navigation/back-to-top.test.tsx +0 -27
  742. package/src/blocks/e-commerce/navigation/back-to-top.tsx +0 -71
  743. package/src/blocks/e-commerce/navigation/breadcrumb.test.tsx +0 -174
  744. package/src/blocks/e-commerce/navigation/breadcrumb.tsx +0 -130
  745. package/src/blocks/e-commerce/navigation/category-icon.test.tsx +0 -54
  746. package/src/blocks/e-commerce/navigation/category-icon.tsx +0 -94
  747. package/src/blocks/e-commerce/navigation/mega-menu.test.tsx +0 -139
  748. package/src/blocks/e-commerce/navigation/mega-menu.tsx +0 -271
  749. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.test.tsx +0 -74
  750. package/src/blocks/e-commerce/navigation/mobile-bottom-nav.tsx +0 -78
  751. package/src/blocks/e-commerce/navigation/mobile-category-drawer.test.tsx +0 -192
  752. package/src/blocks/e-commerce/navigation/mobile-category-drawer.tsx +0 -278
  753. package/src/blocks/e-commerce/navigation/skip-to-content.test.tsx +0 -35
  754. package/src/blocks/e-commerce/navigation/skip-to-content.tsx +0 -37
  755. package/src/blocks/e-commerce/order-history/order-history-1.tsx +0 -159
  756. package/src/blocks/e-commerce/order-history/order-history-2.tsx +0 -222
  757. package/src/blocks/e-commerce/product-categories/category-card-grid.test.tsx +0 -122
  758. package/src/blocks/e-commerce/product-categories/category-card.test.tsx +0 -68
  759. package/src/blocks/e-commerce/product-categories/category-card.tsx +0 -172
  760. package/src/blocks/e-commerce/product-categories/category-grid.test.tsx +0 -67
  761. package/src/blocks/e-commerce/product-categories/category-shared.tsx +0 -109
  762. package/src/blocks/e-commerce/product-categories/product-category-grid.tsx +0 -170
  763. package/src/blocks/e-commerce/product-categories/product-category.test.tsx +0 -266
  764. package/src/blocks/e-commerce/product-categories/product-category.tsx +0 -462
  765. package/src/blocks/e-commerce/product-list/product-card.test.tsx +0 -263
  766. package/src/blocks/e-commerce/product-list/product-card.tsx +0 -424
  767. package/src/blocks/e-commerce/product-list/product-grid.test.tsx +0 -162
  768. package/src/blocks/e-commerce/product-list/product-grid.tsx +0 -114
  769. package/src/blocks/e-commerce/product-list/product-showcase-1.test.tsx +0 -78
  770. package/src/blocks/e-commerce/product-list/product-showcase-1.tsx +0 -277
  771. package/src/blocks/e-commerce/product-overview/product-overview-gallery.tsx +0 -71
  772. package/src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx +0 -116
  773. package/src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx +0 -105
  774. package/src/blocks/e-commerce/product-overview/product-overview-tabs.tsx +0 -70
  775. package/src/blocks/e-commerce/product-overview/product-overview.test.tsx +0 -283
  776. package/src/blocks/e-commerce/product-overview/product-overview.tsx +0 -1186
  777. package/src/blocks/e-commerce/product-overview/product-quick-view-card.tsx +0 -135
  778. package/src/blocks/e-commerce/product-overview/product-quick-view-dialog.tsx +0 -393
  779. package/src/blocks/e-commerce/product-overview/product-quick-view.tsx +0 -136
  780. package/src/blocks/e-commerce/reviews/review-rating-1-review-form.tsx +0 -133
  781. package/src/blocks/e-commerce/reviews/review-rating-1.tsx +0 -178
  782. package/src/blocks/e-commerce/reviews/review-rating-2.tsx +0 -245
  783. package/src/blocks/e-commerce/shopping-carts/shopping-cart.test.tsx +0 -399
  784. package/src/blocks/e-commerce/shopping-carts/shopping-cart.tsx +0 -628
  785. package/src/blocks/e-commerce/store-containers/store-container-1.tsx +0 -29
  786. package/src/blocks/e-commerce/storefront-hero/storefront-hero.test.tsx +0 -412
  787. package/src/blocks/e-commerce/storefront-hero/storefront-hero.tsx +0 -1283
  788. package/src/blocks/marketing/banners/avatar-group.tsx +0 -69
  789. package/src/blocks/marketing/banners/banner-1.tsx +0 -188
  790. package/src/blocks/marketing/cta/cta-section-1.tsx +0 -112
  791. package/src/blocks/marketing/faq/faq-block-1.tsx +0 -45
  792. package/src/blocks/marketing/features/feature.test.tsx +0 -153
  793. package/src/blocks/marketing/features/feature.tsx +0 -195
  794. package/src/blocks/marketing/footers/footer-section-1.test.tsx +0 -117
  795. package/src/blocks/marketing/footers/footer-section-1.tsx +0 -178
  796. package/src/blocks/marketing/footers/footer-section-3.tsx +0 -192
  797. package/src/blocks/marketing/footers/footer-section-4.tsx +0 -355
  798. package/src/blocks/marketing/hero-sections/avatar-group.tsx +0 -86
  799. package/src/blocks/marketing/hero-sections/hero-section-1.tsx +0 -135
  800. package/src/blocks/marketing/logo-clouds/logo-cloud-1-logo-icon.tsx +0 -52
  801. package/src/blocks/marketing/logo-clouds/logo-cloud-1.tsx +0 -56
  802. package/src/blocks/marketing/navbars/navbar-1.tsx +0 -267
  803. package/src/blocks/marketing/navbars/navbar-2.tsx +0 -351
  804. package/src/blocks/marketing/navbars/navbar-3.tsx +0 -303
  805. package/src/blocks/marketing/navbars/navbar-4-account-menu.test.tsx +0 -56
  806. package/src/blocks/marketing/navbars/navbar-4-account-menu.tsx +0 -134
  807. package/src/blocks/marketing/navbars/navbar-4-cart-sheet.test.tsx +0 -204
  808. package/src/blocks/marketing/navbars/navbar-4-cart-sheet.tsx +0 -371
  809. package/src/blocks/marketing/navbars/navbar-4-like-button.tsx +0 -177
  810. package/src/blocks/marketing/navbars/navbar-4-mobile-nav.tsx +0 -104
  811. package/src/blocks/marketing/navbars/navbar-4-product-grid.tsx +0 -219
  812. package/src/blocks/marketing/navbars/navbar-4-search-bar.tsx +0 -52
  813. package/src/blocks/marketing/navbars/navbar-4.test.tsx +0 -264
  814. package/src/blocks/marketing/navbars/navbar-4.tsx +0 -604
  815. package/src/blocks/marketing/pricing/pricing-section-1.tsx +0 -94
  816. package/src/blocks/marketing/statistics/statistic-1.tsx +0 -93
  817. package/src/blocks/marketing/testimonials/testimonial-1.tsx +0 -141
  818. package/src/blocks/marketing/testimonials/testimonial-2.tsx +0 -108
  819. package/src/blocks/shared/reaction-toggle.tsx +0 -145
  820. package/src/hooks/use-mobile.ts +0 -19
  821. package/src/index.ts +0 -285
  822. package/src/lib/cart.test.ts +0 -15
  823. package/src/lib/contracts-curated.test.ts +0 -225
  824. package/src/lib/contracts-server-boundary.test.ts +0 -52
  825. package/src/lib/contracts.test.ts +0 -173
  826. package/src/lib/contracts.ts +0 -795
  827. package/src/lib/money.test.ts +0 -64
  828. package/src/lib/money.ts +0 -65
  829. package/src/lib/types/menu.ts +0 -43
  830. package/src/lib/types.ts +0 -4
  831. package/src/lib/utils.ts +0 -10
  832. package/src/ui/accordion.tsx +0 -65
  833. package/src/ui/badge.tsx +0 -47
  834. package/src/ui/breadcrumb.tsx +0 -108
  835. package/src/ui/button-group.tsx +0 -83
  836. package/src/ui/button.tsx +0 -63
  837. package/src/ui/card.tsx +0 -91
  838. package/src/ui/carousel.tsx +0 -241
  839. package/src/ui/dialog.tsx +0 -158
  840. package/src/ui/drawer.tsx +0 -134
  841. package/src/ui/dropdown-menu.tsx +0 -256
  842. package/src/ui/empty.tsx +0 -103
  843. package/src/ui/input-otp.tsx +0 -76
  844. package/src/ui/label.tsx +0 -23
  845. package/src/ui/pagination.tsx +0 -127
  846. package/src/ui/progress.tsx +0 -30
  847. package/src/ui/radio-group.tsx +0 -44
  848. package/src/ui/select.tsx +0 -189
  849. package/src/ui/separator.tsx +0 -27
  850. package/src/ui/sheet.tsx +0 -142
  851. package/src/ui/sidebar.tsx +0 -726
  852. package/src/ui/skeleton.tsx +0 -13
  853. package/src/ui/table.tsx +0 -115
  854. package/src/ui/toggle-group.tsx +0 -83
  855. package/src/ui/tooltip.tsx +0 -56
  856. package/tsconfig.build.json +0 -12
  857. package/tsconfig.json +0 -20
  858. package/tsup.config.ts +0 -19
  859. package/vitest.config.ts +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-gallery.tsx"],"sourcesContent":["import { Camera } from 'lucide-react'\nimport { Badge } from '../../../ui/badge'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewGalleryProps {\n /** Resolved image URLs for the product (never empty strings; a fallback is allowed). */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n /** Optional badge label; omitted when absent. */\n badgeLabel?: string\n selectedImage: number\n onSelectImage: (index: number) => void\n photosLabel?: string\n}\n\n/**\n * Image-forward gallery used by the canonical ProductOverview `rich` presentation: a large\n * primary image with an optional badge and a photo count, plus a thumbnail strip. Operates on\n * already-resolved URLs so it carries no product-shape assumption (no `mainImages`/`galleryImages`\n * split, no sector fields).\n */\nexport function ProductOverviewGallery({\n images,\n title,\n badgeLabel,\n selectedImage,\n onSelectImage,\n photosLabel = 'fotos',\n}: ProductOverviewGalleryProps) {\n const activeImage = images[Math.min(selectedImage, images.length - 1)]\n\n return (\n <div>\n <div className='bg-muted relative aspect-square overflow-hidden rounded-xl'>\n <img src={activeImage || undefined} alt={title} className='size-full object-cover' />\n {badgeLabel ? (\n <Badge className='absolute top-4 left-4 px-2.5 py-0.5 font-semibold'>{badgeLabel}</Badge>\n ) : null}\n <div className='absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm'>\n <Camera className='mr-1 inline size-4' />\n {images.length} {photosLabel}\n </div>\n </div>\n\n {images.length > 1 ? (\n <div className='mt-4 flex gap-3 overflow-x-auto pb-2'>\n {images.map((image, index) => (\n <button\n type='button'\n key={`${title}:gallery:${index}`}\n onClick={() => onSelectImage(index)}\n className={cn(\n 'relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all',\n selectedImage === index\n ? 'border-primary ring-primary/20 shadow-md ring-2'\n : 'border-muted hover:border-muted-foreground/50',\n )}\n aria-label={`Mostrar imagen ${index + 1} de ${title}`}\n aria-pressed={selectedImage === index}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default ProductOverviewGallery\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCQ;AAnCR,0BAAuB;AACvB,mBAAsB;AACtB,mBAAmB;AAoBZ,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAgC;AAC9B,QAAM,cAAc,OAAO,KAAK,IAAI,eAAe,OAAO,SAAS,CAAC,CAAC;AAErE,SACE,6CAAC,SACC;AAAA,iDAAC,SAAI,WAAU,8DACb;AAAA,kDAAC,SAAI,KAAK,eAAe,QAAW,KAAK,OAAO,WAAU,0BAAyB;AAAA,MAClF,aACC,4CAAC,sBAAM,WAAU,qDAAqD,sBAAW,IAC/E;AAAA,MACJ,6CAAC,SAAI,WAAU,sGACb;AAAA,oDAAC,8BAAO,WAAU,sBAAqB;AAAA,QACtC,OAAO;AAAA,QAAO;AAAA,QAAE;AAAA,SACnB;AAAA,OACF;AAAA,IAEC,OAAO,SAAS,IACf,4CAAC,SAAI,WAAU,wCACZ,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QAEL,SAAS,MAAM,cAAc,KAAK;AAAA,QAClC,eAAW;AAAA,UACT;AAAA,UACA,kBAAkB,QACd,oDACA;AAAA,QACN;AAAA,QACA,cAAY,kBAAkB,QAAQ,CAAC,OAAO,KAAK;AAAA,QACnD,gBAAc,kBAAkB;AAAA,QAEhC,sDAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MAX1F,GAAG,KAAK,YAAY,KAAK;AAAA,IAYhC,CACD,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
@@ -0,0 +1,47 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Camera } from "lucide-react";
3
+ import { Badge } from "../../../ui/badge.mjs";
4
+ import { cn } from "../../../lib/utils.mjs";
5
+ function ProductOverviewGallery({
6
+ images,
7
+ title,
8
+ badgeLabel,
9
+ selectedImage,
10
+ onSelectImage,
11
+ photosLabel = "fotos"
12
+ }) {
13
+ const activeImage = images[Math.min(selectedImage, images.length - 1)];
14
+ return /* @__PURE__ */ jsxs("div", { children: [
15
+ /* @__PURE__ */ jsxs("div", { className: "bg-muted relative aspect-square overflow-hidden rounded-xl", children: [
16
+ /* @__PURE__ */ jsx("img", { src: activeImage || void 0, alt: title, className: "size-full object-cover" }),
17
+ badgeLabel ? /* @__PURE__ */ jsx(Badge, { className: "absolute top-4 left-4 px-2.5 py-0.5 font-semibold", children: badgeLabel }) : null,
18
+ /* @__PURE__ */ jsxs("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm", children: [
19
+ /* @__PURE__ */ jsx(Camera, { className: "mr-1 inline size-4" }),
20
+ images.length,
21
+ " ",
22
+ photosLabel
23
+ ] })
24
+ ] }),
25
+ images.length > 1 ? /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-3 overflow-x-auto pb-2", children: images.map((image, index) => /* @__PURE__ */ jsx(
26
+ "button",
27
+ {
28
+ type: "button",
29
+ onClick: () => onSelectImage(index),
30
+ className: cn(
31
+ "relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all",
32
+ selectedImage === index ? "border-primary ring-primary/20 shadow-md ring-2" : "border-muted hover:border-muted-foreground/50"
33
+ ),
34
+ "aria-label": `Mostrar imagen ${index + 1} de ${title}`,
35
+ "aria-pressed": selectedImage === index,
36
+ children: /* @__PURE__ */ jsx("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
37
+ },
38
+ `${title}:gallery:${index}`
39
+ )) }) : null
40
+ ] });
41
+ }
42
+ var product_overview_gallery_default = ProductOverviewGallery;
43
+ export {
44
+ ProductOverviewGallery,
45
+ product_overview_gallery_default as default
46
+ };
47
+ //# sourceMappingURL=product-overview-gallery.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-gallery.tsx"],"sourcesContent":["import { Camera } from 'lucide-react'\nimport { Badge } from '../../../ui/badge'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewGalleryProps {\n /** Resolved image URLs for the product (never empty strings; a fallback is allowed). */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n /** Optional badge label; omitted when absent. */\n badgeLabel?: string\n selectedImage: number\n onSelectImage: (index: number) => void\n photosLabel?: string\n}\n\n/**\n * Image-forward gallery used by the canonical ProductOverview `rich` presentation: a large\n * primary image with an optional badge and a photo count, plus a thumbnail strip. Operates on\n * already-resolved URLs so it carries no product-shape assumption (no `mainImages`/`galleryImages`\n * split, no sector fields).\n */\nexport function ProductOverviewGallery({\n images,\n title,\n badgeLabel,\n selectedImage,\n onSelectImage,\n photosLabel = 'fotos',\n}: ProductOverviewGalleryProps) {\n const activeImage = images[Math.min(selectedImage, images.length - 1)]\n\n return (\n <div>\n <div className='bg-muted relative aspect-square overflow-hidden rounded-xl'>\n <img src={activeImage || undefined} alt={title} className='size-full object-cover' />\n {badgeLabel ? (\n <Badge className='absolute top-4 left-4 px-2.5 py-0.5 font-semibold'>{badgeLabel}</Badge>\n ) : null}\n <div className='absolute right-4 bottom-4 rounded-full bg-black/60 px-3 py-1.5 text-sm text-white backdrop-blur-sm'>\n <Camera className='mr-1 inline size-4' />\n {images.length} {photosLabel}\n </div>\n </div>\n\n {images.length > 1 ? (\n <div className='mt-4 flex gap-3 overflow-x-auto pb-2'>\n {images.map((image, index) => (\n <button\n type='button'\n key={`${title}:gallery:${index}`}\n onClick={() => onSelectImage(index)}\n className={cn(\n 'relative aspect-square size-20 flex-shrink-0 cursor-pointer overflow-hidden rounded-lg border-2 transition-all',\n selectedImage === index\n ? 'border-primary ring-primary/20 shadow-md ring-2'\n : 'border-muted hover:border-muted-foreground/50',\n )}\n aria-label={`Mostrar imagen ${index + 1} de ${title}`}\n aria-pressed={selectedImage === index}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n ))}\n </div>\n ) : null}\n </div>\n )\n}\n\nexport default ProductOverviewGallery\n"],"mappings":"AAmCQ,cAIA,YAJA;AAnCR,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,UAAU;AAoBZ,SAAS,uBAAuB;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,GAAgC;AAC9B,QAAM,cAAc,OAAO,KAAK,IAAI,eAAe,OAAO,SAAS,CAAC,CAAC;AAErE,SACE,qBAAC,SACC;AAAA,yBAAC,SAAI,WAAU,8DACb;AAAA,0BAAC,SAAI,KAAK,eAAe,QAAW,KAAK,OAAO,WAAU,0BAAyB;AAAA,MAClF,aACC,oBAAC,SAAM,WAAU,qDAAqD,sBAAW,IAC/E;AAAA,MACJ,qBAAC,SAAI,WAAU,sGACb;AAAA,4BAAC,UAAO,WAAU,sBAAqB;AAAA,QACtC,OAAO;AAAA,QAAO;AAAA,QAAE;AAAA,SACnB;AAAA,OACF;AAAA,IAEC,OAAO,SAAS,IACf,oBAAC,SAAI,WAAU,wCACZ,iBAAO,IAAI,CAAC,OAAO,UAClB;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QAEL,SAAS,MAAM,cAAc,KAAK;AAAA,QAClC,WAAW;AAAA,UACT;AAAA,UACA,kBAAkB,QACd,oDACA;AAAA,QACN;AAAA,QACA,cAAY,kBAAkB,QAAQ,CAAC,OAAO,KAAK;AAAA,QACnD,gBAAc,kBAAkB;AAAA,QAEhC,8BAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MAX1F,GAAG,KAAK,YAAY,KAAK;AAAA,IAYhC,CACD,GACH,IACE;AAAA,KACN;AAEJ;AAEA,IAAO,mCAAQ;","names":[]}
@@ -0,0 +1,15 @@
1
+ export interface ProductOverviewLightboxTabProps {
2
+ /** Resolved image URLs for the product. */
3
+ images: string[];
4
+ /** Product title, used for alt text. */
5
+ title: string;
6
+ galleryLabel?: string;
7
+ ofCounterLabel?: string;
8
+ }
9
+ /**
10
+ * Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with
11
+ * prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.
12
+ */
13
+ export declare function ProductOverviewLightboxTab({ images, title, galleryLabel, ofCounterLabel, }: ProductOverviewLightboxTabProps): import("react").JSX.Element;
14
+ export default ProductOverviewLightboxTab;
15
+ //# sourceMappingURL=product-overview-lightbox-tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-overview-lightbox-tab.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,+BAA+B;IAC9C,2CAA2C;IAC3C,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,MAAM,EACN,KAAK,EACL,YAAwB,EACxB,cAAuC,GACxC,EAAE,+BAA+B,+BAsFjC;AAED,eAAe,0BAA0B,CAAA"}
@@ -0,0 +1,118 @@
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_overview_lightbox_tab_exports = {};
21
+ __export(product_overview_lightbox_tab_exports, {
22
+ ProductOverviewLightboxTab: () => ProductOverviewLightboxTab,
23
+ default: () => product_overview_lightbox_tab_default
24
+ });
25
+ module.exports = __toCommonJS(product_overview_lightbox_tab_exports);
26
+ var import_jsx_runtime = require("react/jsx-runtime");
27
+ var import_react = require("react");
28
+ var import_lucide_react = require("lucide-react");
29
+ var import_button = require("../../../ui/button.js");
30
+ var import_card = require("../../../ui/card.js");
31
+ var import_dialog = require("../../../ui/dialog.js");
32
+ var import_utils = require("../../../lib/utils.js");
33
+ function ProductOverviewLightboxTab({
34
+ images,
35
+ title,
36
+ galleryLabel = "Galer\xEDa",
37
+ ofCounterLabel = "{current} de {total}"
38
+ }) {
39
+ const [modalImageIndex, setModalImageIndex] = (0, import_react.useState)(0);
40
+ const nextImage = () => setModalImageIndex((prev) => (prev + 1) % images.length);
41
+ const prevImage = () => setModalImageIndex((prev) => (prev - 1 + images.length) % images.length);
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardContent, { className: "p-8 py-0", children: [
43
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: "mb-6 text-xl font-semibold text-balance", children: galleryLabel }),
44
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: images.map((image, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.Dialog, { children: [
45
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.DialogTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ "button",
47
+ {
48
+ type: "button",
49
+ className: "block aspect-square cursor-pointer overflow-hidden rounded-xl",
50
+ onClick: () => setModalImageIndex(index),
51
+ "aria-label": `Abrir imagen ${index + 1} de ${title}`,
52
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
53
+ }
54
+ ) }),
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.DialogContent, { className: "max-w-4xl border-0 bg-transparent p-0", showCloseButton: false, children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_dialog.DialogTitle, { className: "sr-only", children: [
57
+ "Imagen de galer\xEDa ",
58
+ modalImageIndex + 1
59
+ ] }),
60
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "relative", children: [
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
+ "img",
63
+ {
64
+ src: images[modalImageIndex] || void 0,
65
+ alt: `${title} ${modalImageIndex + 1}`,
66
+ className: "max-h-[80vh] w-full object-contain"
67
+ }
68
+ ),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dialog.DialogClose, { className: "absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.X, { className: "size-4" }) }),
70
+ images.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
72
+ import_button.Button,
73
+ {
74
+ variant: "ghost",
75
+ size: "icon",
76
+ className: "absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
77
+ onClick: prevImage,
78
+ "aria-label": "Imagen anterior",
79
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronLeft, { className: "size-4" })
80
+ }
81
+ ),
82
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
83
+ import_button.Button,
84
+ {
85
+ variant: "ghost",
86
+ size: "icon",
87
+ className: "absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
88
+ onClick: nextImage,
89
+ "aria-label": "Imagen siguiente",
90
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronRight, { className: "size-4" })
91
+ }
92
+ )
93
+ ] }) : null,
94
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2", children: images.map((_, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
95
+ "button",
96
+ {
97
+ type: "button",
98
+ "aria-label": `Mostrar imagen ${idx + 1}`,
99
+ className: (0, import_utils.cn)(
100
+ "size-2 rounded-full transition-colors",
101
+ idx === modalImageIndex ? "bg-white" : "bg-white/50"
102
+ ),
103
+ onClick: () => setModalImageIndex(idx)
104
+ },
105
+ `${title}:dot:${idx}`
106
+ )) }),
107
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white", children: ofCounterLabel.replace("{current}", String(modalImageIndex + 1)).replace("{total}", String(images.length)) })
108
+ ] })
109
+ ] })
110
+ ] }, `${title}:lightbox:${index}`)) })
111
+ ] }) });
112
+ }
113
+ var product_overview_lightbox_tab_default = ProductOverviewLightboxTab;
114
+ // Annotate the CommonJS export names for ESM import in node:
115
+ 0 && (module.exports = {
116
+ ProductOverviewLightboxTab
117
+ });
118
+ //# sourceMappingURL=product-overview-lightbox-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { ChevronLeft, ChevronRight, X } from 'lucide-react'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from '../../../ui/dialog'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewLightboxTabProps {\n /** Resolved image URLs for the product. */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n galleryLabel?: string\n ofCounterLabel?: string\n}\n\n/**\n * Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with\n * prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.\n */\nexport function ProductOverviewLightboxTab({\n images,\n title,\n galleryLabel = 'Galería',\n ofCounterLabel = '{current} de {total}',\n}: ProductOverviewLightboxTabProps) {\n const [modalImageIndex, setModalImageIndex] = useState(0)\n\n const nextImage = () => setModalImageIndex(prev => (prev + 1) % images.length)\n const prevImage = () => setModalImageIndex(prev => (prev - 1 + images.length) % images.length)\n\n return (\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <h3 className='mb-6 text-xl font-semibold text-balance'>{galleryLabel}</h3>\n <div className='grid gap-4 sm:grid-cols-2 lg:grid-cols-3'>\n {images.map((image, index) => (\n <Dialog key={`${title}:lightbox:${index}`}>\n <DialogTrigger asChild>\n <button\n type='button'\n className='block aspect-square cursor-pointer overflow-hidden rounded-xl'\n onClick={() => setModalImageIndex(index)}\n aria-label={`Abrir imagen ${index + 1} de ${title}`}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n </DialogTrigger>\n <DialogContent className='max-w-4xl border-0 bg-transparent p-0' showCloseButton={false}>\n <DialogTitle className='sr-only'>Imagen de galería {modalImageIndex + 1}</DialogTitle>\n <div className='relative'>\n <img\n src={images[modalImageIndex] || undefined}\n alt={`${title} ${modalImageIndex + 1}`}\n className='max-h-[80vh] w-full object-contain'\n />\n <DialogClose className='absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30'>\n <X className='size-4' />\n </DialogClose>\n\n {images.length > 1 ? (\n <>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={prevImage}\n aria-label='Imagen anterior'\n >\n <ChevronLeft className='size-4' />\n </Button>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={nextImage}\n aria-label='Imagen siguiente'\n >\n <ChevronRight className='size-4' />\n </Button>\n </>\n ) : null}\n\n <div className='absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2'>\n {images.map((_, idx) => (\n <button\n type='button'\n key={`${title}:dot:${idx}`}\n aria-label={`Mostrar imagen ${idx + 1}`}\n className={cn(\n 'size-2 rounded-full transition-colors',\n idx === modalImageIndex ? 'bg-white' : 'bg-white/50',\n )}\n onClick={() => setModalImageIndex(idx)}\n />\n ))}\n </div>\n\n <div className='absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white'>\n {ofCounterLabel\n .replace('{current}', String(modalImageIndex + 1))\n .replace('{total}', String(images.length))}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n ))}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default ProductOverviewLightboxTab\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoCQ;AAlCR,mBAAyB;AACzB,0BAA6C;AAC7C,oBAAuB;AACvB,kBAAkC;AAClC,oBAA+E;AAC/E,mBAAmB;AAeZ,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,GAAoC;AAClC,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,uBAAS,CAAC;AAExD,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,KAAK,OAAO,MAAM;AAC7E,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,IAAI,OAAO,UAAU,OAAO,MAAM;AAE7F,SACE,4CAAC,oBAAK,WAAU,sBACd,uDAAC,2BAAY,WAAU,YACrB;AAAA,gDAAC,QAAG,WAAU,2CAA2C,wBAAa;AAAA,IACtE,4CAAC,SAAI,WAAU,4CACZ,iBAAO,IAAI,CAAC,OAAO,UAClB,6CAAC,wBACC;AAAA,kDAAC,+BAAc,SAAO,MACpB;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM,mBAAmB,KAAK;AAAA,UACvC,cAAY,gBAAgB,QAAQ,CAAC,OAAO,KAAK;AAAA,UAEjD,sDAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MACjG,GACF;AAAA,MACA,6CAAC,+BAAc,WAAU,yCAAwC,iBAAiB,OAChF;AAAA,qDAAC,6BAAY,WAAU,WAAU;AAAA;AAAA,UAAmB,kBAAkB;AAAA,WAAE;AAAA,QACxE,6CAAC,SAAI,WAAU,YACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,OAAO,eAAe,KAAK;AAAA,cAChC,KAAK,GAAG,KAAK,IAAI,kBAAkB,CAAC;AAAA,cACpC,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,4CAAC,6BAAY,WAAU,sGACrB,sDAAC,yBAAE,WAAU,UAAS,GACxB;AAAA,UAEC,OAAO,SAAS,IACf,4EACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,sDAAC,mCAAY,WAAU,UAAS;AAAA;AAAA,YAClC;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,sDAAC,oCAAa,WAAU,UAAS;AAAA;AAAA,YACnC;AAAA,aACF,IACE;AAAA,UAEJ,4CAAC,SAAI,WAAU,0DACZ,iBAAO,IAAI,CAAC,GAAG,QACd;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cAEL,cAAY,kBAAkB,MAAM,CAAC;AAAA,cACrC,eAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,kBAAkB,aAAa;AAAA,cACzC;AAAA,cACA,SAAS,MAAM,mBAAmB,GAAG;AAAA;AAAA,YANhC,GAAG,KAAK,QAAQ,GAAG;AAAA,UAO1B,CACD,GACH;AAAA,UAEA,4CAAC,SAAI,WAAU,mFACZ,yBACE,QAAQ,aAAa,OAAO,kBAAkB,CAAC,CAAC,EAChD,QAAQ,WAAW,OAAO,OAAO,MAAM,CAAC,GAC7C;AAAA,WACF;AAAA,SACF;AAAA,SAnEW,GAAG,KAAK,aAAa,KAAK,EAoEvC,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,wCAAQ;","names":[]}
@@ -0,0 +1,94 @@
1
+ "use client";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useState } from "react";
4
+ import { ChevronLeft, ChevronRight, X } from "lucide-react";
5
+ import { Button } from "../../../ui/button.mjs";
6
+ import { Card, CardContent } from "../../../ui/card.mjs";
7
+ import { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from "../../../ui/dialog.mjs";
8
+ import { cn } from "../../../lib/utils.mjs";
9
+ function ProductOverviewLightboxTab({
10
+ images,
11
+ title,
12
+ galleryLabel = "Galer\xEDa",
13
+ ofCounterLabel = "{current} de {total}"
14
+ }) {
15
+ const [modalImageIndex, setModalImageIndex] = useState(0);
16
+ const nextImage = () => setModalImageIndex((prev) => (prev + 1) % images.length);
17
+ const prevImage = () => setModalImageIndex((prev) => (prev - 1 + images.length) % images.length);
18
+ return /* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-8 py-0", children: [
19
+ /* @__PURE__ */ jsx("h3", { className: "mb-6 text-xl font-semibold text-balance", children: galleryLabel }),
20
+ /* @__PURE__ */ jsx("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: images.map((image, index) => /* @__PURE__ */ jsxs(Dialog, { children: [
21
+ /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
22
+ "button",
23
+ {
24
+ type: "button",
25
+ className: "block aspect-square cursor-pointer overflow-hidden rounded-xl",
26
+ onClick: () => setModalImageIndex(index),
27
+ "aria-label": `Abrir imagen ${index + 1} de ${title}`,
28
+ children: /* @__PURE__ */ jsx("img", { src: image || void 0, alt: `${title} ${index + 1}`, className: "size-full object-cover" })
29
+ }
30
+ ) }),
31
+ /* @__PURE__ */ jsxs(DialogContent, { className: "max-w-4xl border-0 bg-transparent p-0", showCloseButton: false, children: [
32
+ /* @__PURE__ */ jsxs(DialogTitle, { className: "sr-only", children: [
33
+ "Imagen de galer\xEDa ",
34
+ modalImageIndex + 1
35
+ ] }),
36
+ /* @__PURE__ */ jsxs("div", { className: "relative", children: [
37
+ /* @__PURE__ */ jsx(
38
+ "img",
39
+ {
40
+ src: images[modalImageIndex] || void 0,
41
+ alt: `${title} ${modalImageIndex + 1}`,
42
+ className: "max-h-[80vh] w-full object-contain"
43
+ }
44
+ ),
45
+ /* @__PURE__ */ jsx(DialogClose, { className: "absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30", children: /* @__PURE__ */ jsx(X, { className: "size-4" }) }),
46
+ images.length > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
47
+ /* @__PURE__ */ jsx(
48
+ Button,
49
+ {
50
+ variant: "ghost",
51
+ size: "icon",
52
+ className: "absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
53
+ onClick: prevImage,
54
+ "aria-label": "Imagen anterior",
55
+ children: /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4" })
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsx(
59
+ Button,
60
+ {
61
+ variant: "ghost",
62
+ size: "icon",
63
+ className: "absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30",
64
+ onClick: nextImage,
65
+ "aria-label": "Imagen siguiente",
66
+ children: /* @__PURE__ */ jsx(ChevronRight, { className: "size-4" })
67
+ }
68
+ )
69
+ ] }) : null,
70
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2", children: images.map((_, idx) => /* @__PURE__ */ jsx(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ "aria-label": `Mostrar imagen ${idx + 1}`,
75
+ className: cn(
76
+ "size-2 rounded-full transition-colors",
77
+ idx === modalImageIndex ? "bg-white" : "bg-white/50"
78
+ ),
79
+ onClick: () => setModalImageIndex(idx)
80
+ },
81
+ `${title}:dot:${idx}`
82
+ )) }),
83
+ /* @__PURE__ */ jsx("div", { className: "absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white", children: ofCounterLabel.replace("{current}", String(modalImageIndex + 1)).replace("{total}", String(images.length)) })
84
+ ] })
85
+ ] })
86
+ ] }, `${title}:lightbox:${index}`)) })
87
+ ] }) });
88
+ }
89
+ var product_overview_lightbox_tab_default = ProductOverviewLightboxTab;
90
+ export {
91
+ ProductOverviewLightboxTab,
92
+ product_overview_lightbox_tab_default as default
93
+ };
94
+ //# sourceMappingURL=product-overview-lightbox-tab.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-lightbox-tab.tsx"],"sourcesContent":["'use client'\n\nimport { useState } from 'react'\nimport { ChevronLeft, ChevronRight, X } from 'lucide-react'\nimport { Button } from '../../../ui/button'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Dialog, DialogClose, DialogContent, DialogTitle, DialogTrigger } from '../../../ui/dialog'\nimport { cn } from '../../../lib/utils'\n\nexport interface ProductOverviewLightboxTabProps {\n /** Resolved image URLs for the product. */\n images: string[]\n /** Product title, used for alt text. */\n title: string\n galleryLabel?: string\n ofCounterLabel?: string\n}\n\n/**\n * Gallery panel for the `rich` presentation: a thumbnail grid that opens a lightbox with\n * prev/next navigation. Operates on already-resolved URLs so it carries no sector assumption.\n */\nexport function ProductOverviewLightboxTab({\n images,\n title,\n galleryLabel = 'Galería',\n ofCounterLabel = '{current} de {total}',\n}: ProductOverviewLightboxTabProps) {\n const [modalImageIndex, setModalImageIndex] = useState(0)\n\n const nextImage = () => setModalImageIndex(prev => (prev + 1) % images.length)\n const prevImage = () => setModalImageIndex(prev => (prev - 1 + images.length) % images.length)\n\n return (\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <h3 className='mb-6 text-xl font-semibold text-balance'>{galleryLabel}</h3>\n <div className='grid gap-4 sm:grid-cols-2 lg:grid-cols-3'>\n {images.map((image, index) => (\n <Dialog key={`${title}:lightbox:${index}`}>\n <DialogTrigger asChild>\n <button\n type='button'\n className='block aspect-square cursor-pointer overflow-hidden rounded-xl'\n onClick={() => setModalImageIndex(index)}\n aria-label={`Abrir imagen ${index + 1} de ${title}`}\n >\n <img src={image || undefined} alt={`${title} ${index + 1}`} className='size-full object-cover' />\n </button>\n </DialogTrigger>\n <DialogContent className='max-w-4xl border-0 bg-transparent p-0' showCloseButton={false}>\n <DialogTitle className='sr-only'>Imagen de galería {modalImageIndex + 1}</DialogTitle>\n <div className='relative'>\n <img\n src={images[modalImageIndex] || undefined}\n alt={`${title} ${modalImageIndex + 1}`}\n className='max-h-[80vh] w-full object-contain'\n />\n <DialogClose className='absolute top-4 right-4 rounded-full bg-black/20 p-2 text-white transition-colors hover:bg-black/30'>\n <X className='size-4' />\n </DialogClose>\n\n {images.length > 1 ? (\n <>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 left-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={prevImage}\n aria-label='Imagen anterior'\n >\n <ChevronLeft className='size-4' />\n </Button>\n <Button\n variant='ghost'\n size='icon'\n className='absolute top-1/2 right-4 size-9 -translate-y-1/2 cursor-pointer rounded-full bg-black/20 text-white hover:bg-black/30'\n onClick={nextImage}\n aria-label='Imagen siguiente'\n >\n <ChevronRight className='size-4' />\n </Button>\n </>\n ) : null}\n\n <div className='absolute bottom-4 left-1/2 flex -translate-x-1/2 gap-2'>\n {images.map((_, idx) => (\n <button\n type='button'\n key={`${title}:dot:${idx}`}\n aria-label={`Mostrar imagen ${idx + 1}`}\n className={cn(\n 'size-2 rounded-full transition-colors',\n idx === modalImageIndex ? 'bg-white' : 'bg-white/50',\n )}\n onClick={() => setModalImageIndex(idx)}\n />\n ))}\n </div>\n\n <div className='absolute right-4 bottom-4 rounded-full bg-black/20 px-3 py-1 text-sm text-white'>\n {ofCounterLabel\n .replace('{current}', String(modalImageIndex + 1))\n .replace('{total}', String(images.length))}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n ))}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nexport default ProductOverviewLightboxTab\n"],"mappings":";AAoCQ,SA2BY,UA3BZ,KAeQ,YAfR;AAlCR,SAAS,gBAAgB;AACzB,SAAS,aAAa,cAAc,SAAS;AAC7C,SAAS,cAAc;AACvB,SAAS,MAAM,mBAAmB;AAClC,SAAS,QAAQ,aAAa,eAAe,aAAa,qBAAqB;AAC/E,SAAS,UAAU;AAeZ,SAAS,2BAA2B;AAAA,EACzC;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,iBAAiB;AACnB,GAAoC;AAClC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,CAAC;AAExD,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,KAAK,OAAO,MAAM;AAC7E,QAAM,YAAY,MAAM,mBAAmB,WAAS,OAAO,IAAI,OAAO,UAAU,OAAO,MAAM;AAE7F,SACE,oBAAC,QAAK,WAAU,sBACd,+BAAC,eAAY,WAAU,YACrB;AAAA,wBAAC,QAAG,WAAU,2CAA2C,wBAAa;AAAA,IACtE,oBAAC,SAAI,WAAU,4CACZ,iBAAO,IAAI,CAAC,OAAO,UAClB,qBAAC,UACC;AAAA,0BAAC,iBAAc,SAAO,MACpB;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAU;AAAA,UACV,SAAS,MAAM,mBAAmB,KAAK;AAAA,UACvC,cAAY,gBAAgB,QAAQ,CAAC,OAAO,KAAK;AAAA,UAEjD,8BAAC,SAAI,KAAK,SAAS,QAAW,KAAK,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,WAAU,0BAAyB;AAAA;AAAA,MACjG,GACF;AAAA,MACA,qBAAC,iBAAc,WAAU,yCAAwC,iBAAiB,OAChF;AAAA,6BAAC,eAAY,WAAU,WAAU;AAAA;AAAA,UAAmB,kBAAkB;AAAA,WAAE;AAAA,QACxE,qBAAC,SAAI,WAAU,YACb;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAK,OAAO,eAAe,KAAK;AAAA,cAChC,KAAK,GAAG,KAAK,IAAI,kBAAkB,CAAC;AAAA,cACpC,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,oBAAC,eAAY,WAAU,sGACrB,8BAAC,KAAE,WAAU,UAAS,GACxB;AAAA,UAEC,OAAO,SAAS,IACf,iCACE;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,8BAAC,eAAY,WAAU,UAAS;AAAA;AAAA,YAClC;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBACT,cAAW;AAAA,gBAEX,8BAAC,gBAAa,WAAU,UAAS;AAAA;AAAA,YACnC;AAAA,aACF,IACE;AAAA,UAEJ,oBAAC,SAAI,WAAU,0DACZ,iBAAO,IAAI,CAAC,GAAG,QACd;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cAEL,cAAY,kBAAkB,MAAM,CAAC;AAAA,cACrC,WAAW;AAAA,gBACT;AAAA,gBACA,QAAQ,kBAAkB,aAAa;AAAA,cACzC;AAAA,cACA,SAAS,MAAM,mBAAmB,GAAG;AAAA;AAAA,YANhC,GAAG,KAAK,QAAQ,GAAG;AAAA,UAO1B,CACD,GACH;AAAA,UAEA,oBAAC,SAAI,WAAU,mFACZ,yBACE,QAAQ,aAAa,OAAO,kBAAkB,CAAC,CAAC,EAChD,QAAQ,WAAW,OAAO,OAAO,MAAM,CAAC,GAC7C;AAAA,WACF;AAAA,SACF;AAAA,SAnEW,GAAG,KAAK,aAAa,KAAK,EAoEvC,CACD,GACH;AAAA,KACF,GACF;AAEJ;AAEA,IAAO,wCAAQ;","names":[]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the
3
+ * host (optional block data), never seeded by the block.
4
+ */
5
+ export interface ProductOverviewReview {
6
+ id: number;
7
+ author: string;
8
+ rating: number;
9
+ comment: string;
10
+ date: string;
11
+ helpful?: number;
12
+ }
13
+ export interface ProductOverviewReviewsTabProps {
14
+ /** Aggregate rating (0–5); rendered only when the host supplies reviews. */
15
+ rating: number;
16
+ reviews: ProductOverviewReview[];
17
+ basedOnReviewsLabel?: string;
18
+ foundHelpfulLabel?: string;
19
+ }
20
+ /**
21
+ * Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered
22
+ * only when the host supplies reviews, so it never fabricates an empty review surface.
23
+ */
24
+ export declare function ProductOverviewReviewsTab({ rating, reviews, basedOnReviewsLabel, foundHelpfulLabel, }: ProductOverviewReviewsTabProps): import("react").JSX.Element;
25
+ export default ProductOverviewReviewsTab;
26
+ //# sourceMappingURL=product-overview-reviews-tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-overview-reviews-tab.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAeD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,OAAO,EACP,mBAAiD,EACjD,iBAA4D,GAC7D,EAAE,8BAA8B,+BAuDhC;AAED,eAAe,yBAAyB,CAAA"}
@@ -0,0 +1,85 @@
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 product_overview_reviews_tab_exports = {};
20
+ __export(product_overview_reviews_tab_exports, {
21
+ ProductOverviewReviewsTab: () => ProductOverviewReviewsTab,
22
+ default: () => product_overview_reviews_tab_default
23
+ });
24
+ module.exports = __toCommonJS(product_overview_reviews_tab_exports);
25
+ var import_jsx_runtime = require("react/jsx-runtime");
26
+ var import_lucide_react = require("lucide-react");
27
+ var import_card = require("../../../ui/card.js");
28
+ var import_progress = require("../../../ui/progress.js");
29
+ function renderStars(rating) {
30
+ return Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
31
+ import_lucide_react.Star,
32
+ {
33
+ className: `size-4 ${i < Math.floor(rating) ? "fill-foreground text-foreground" : i < rating ? "text-foreground" : ""}`
34
+ },
35
+ i
36
+ ));
37
+ }
38
+ function formatDate(dateString) {
39
+ return new Date(dateString).toLocaleDateString("es-ES", { year: "numeric", month: "short", day: "numeric" });
40
+ }
41
+ function ProductOverviewReviewsTab({
42
+ rating,
43
+ reviews,
44
+ basedOnReviewsLabel = "Basado en {count} rese\xF1as",
45
+ foundHelpfulLabel = "{count} personas encontraron esto \xFAtil"
46
+ }) {
47
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col gap-6", children: [
48
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.CardContent, { className: "p-8 py-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-col items-start gap-8 md:flex-row md:items-center", children: [
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "text-center", children: [
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-4xl font-bold", children: rating }),
51
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-2 flex justify-center", children: renderStars(rating) }),
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground mt-2 text-sm", children: basedOnReviewsLabel.replace("{count}", String(reviews.length)) })
53
+ ] }),
54
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex-1", children: [5, 4, 3, 2, 1].map((stars) => {
55
+ const count = reviews.filter((review) => Math.floor(review.rating) === stars).length;
56
+ const percentage = reviews.length > 0 ? count / reviews.length * 100 : 0;
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mb-3 flex items-center gap-3", children: [
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "w-8 text-sm font-medium", children: [
59
+ stars,
60
+ "\u2605"
61
+ ] }),
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_progress.Progress, { value: percentage, className: "h-2 flex-1 rounded-full" }),
63
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground w-8 text-sm", children: count })
64
+ ] }, stars);
65
+ }) })
66
+ ] }) }) }),
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-col gap-4", children: reviews.map((review) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_card.Card, { className: "border shadow-none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_card.CardContent, { className: "p-6 py-0", children: [
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mb-4 flex items-start justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-sm font-medium", children: review.author }),
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mt-2 flex items-center gap-2", children: [
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex", children: renderStars(review.rating) }),
72
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "text-muted-foreground text-sm", children: formatDate(review.date) })
73
+ ] })
74
+ ] }) }),
75
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground mb-3 text-sm leading-relaxed", children: review.comment }),
76
+ typeof review.helpful === "number" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-muted-foreground text-xs", children: foundHelpfulLabel.replace("{count}", String(review.helpful)) }) : null
77
+ ] }) }, review.id)) })
78
+ ] });
79
+ }
80
+ var product_overview_reviews_tab_default = ProductOverviewReviewsTab;
81
+ // Annotate the CommonJS export names for ESM import in node:
82
+ 0 && (module.exports = {
83
+ ProductOverviewReviewsTab
84
+ });
85
+ //# sourceMappingURL=product-overview-reviews-tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"sourcesContent":["import { Star } from 'lucide-react'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Progress } from '../../../ui/progress'\n\n/**\n * Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the\n * host (optional block data), never seeded by the block.\n */\nexport interface ProductOverviewReview {\n id: number\n author: string\n rating: number\n comment: string\n date: string\n helpful?: number\n}\n\nexport interface ProductOverviewReviewsTabProps {\n /** Aggregate rating (0–5); rendered only when the host supplies reviews. */\n rating: number\n reviews: ProductOverviewReview[]\n basedOnReviewsLabel?: string\n foundHelpfulLabel?: string\n}\n\nfunction renderStars(rating: number) {\n return Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={`size-4 ${i < Math.floor(rating) ? 'fill-foreground text-foreground' : i < rating ? 'text-foreground' : ''}`}\n />\n ))\n}\n\nfunction formatDate(dateString: string) {\n return new Date(dateString).toLocaleDateString('es-ES', { year: 'numeric', month: 'short', day: 'numeric' })\n}\n\n/**\n * Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered\n * only when the host supplies reviews, so it never fabricates an empty review surface.\n */\nexport function ProductOverviewReviewsTab({\n rating,\n reviews,\n basedOnReviewsLabel = 'Basado en {count} reseñas',\n foundHelpfulLabel = '{count} personas encontraron esto útil',\n}: ProductOverviewReviewsTabProps) {\n return (\n <div className='flex flex-col gap-6'>\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <div className='flex flex-col items-start gap-8 md:flex-row md:items-center'>\n <div className='text-center'>\n <div className='text-4xl font-bold'>{rating}</div>\n <div className='mt-2 flex justify-center'>{renderStars(rating)}</div>\n <div className='text-muted-foreground mt-2 text-sm'>\n {basedOnReviewsLabel.replace('{count}', String(reviews.length))}\n </div>\n </div>\n <div className='flex-1'>\n {[5, 4, 3, 2, 1].map(stars => {\n const count = reviews.filter(review => Math.floor(review.rating) === stars).length\n const percentage = reviews.length > 0 ? (count / reviews.length) * 100 : 0\n return (\n <div key={stars} className='mb-3 flex items-center gap-3'>\n <span className='w-8 text-sm font-medium'>{stars}★</span>\n <Progress value={percentage} className='h-2 flex-1 rounded-full' />\n <span className='text-muted-foreground w-8 text-sm'>{count}</span>\n </div>\n )\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className='flex flex-col gap-4'>\n {reviews.map(review => (\n <Card key={review.id} className='border shadow-none'>\n <CardContent className='p-6 py-0'>\n <div className='mb-4 flex items-start justify-between'>\n <div>\n <div className='text-sm font-medium'>{review.author}</div>\n <div className='mt-2 flex items-center gap-2'>\n <div className='flex'>{renderStars(review.rating)}</div>\n <span className='text-muted-foreground text-sm'>{formatDate(review.date)}</span>\n </div>\n </div>\n </div>\n <p className='text-muted-foreground mb-3 text-sm leading-relaxed'>{review.comment}</p>\n {typeof review.helpful === 'number' ? (\n <div className='text-muted-foreground text-xs'>\n {foundHelpfulLabel.replace('{count}', String(review.helpful))}\n </div>\n ) : null}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ProductOverviewReviewsTab\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BI;AA3BJ,0BAAqB;AACrB,kBAAkC;AAClC,sBAAyB;AAuBzB,SAAS,YAAY,QAAgB;AACnC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MACnC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,UAAU,IAAI,KAAK,MAAM,MAAM,IAAI,oCAAoC,IAAI,SAAS,oBAAoB,EAAE;AAAA;AAAA,IADhH;AAAA,EAEP,CACD;AACH;AAEA,SAAS,WAAW,YAAoB;AACtC,SAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS,EAAE,MAAM,WAAW,OAAO,SAAS,KAAK,UAAU,CAAC;AAC7G;AAMO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,GAAmC;AACjC,SACE,6CAAC,SAAI,WAAU,uBACb;AAAA,gDAAC,oBAAK,WAAU,sBACd,sDAAC,2BAAY,WAAU,YACrB,uDAAC,SAAI,WAAU,+DACb;AAAA,mDAAC,SAAI,WAAU,eACb;AAAA,oDAAC,SAAI,WAAU,sBAAsB,kBAAO;AAAA,QAC5C,4CAAC,SAAI,WAAU,4BAA4B,sBAAY,MAAM,GAAE;AAAA,QAC/D,4CAAC,SAAI,WAAU,sCACZ,8BAAoB,QAAQ,WAAW,OAAO,QAAQ,MAAM,CAAC,GAChE;AAAA,SACF;AAAA,MACA,4CAAC,SAAI,WAAU,UACZ,WAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,WAAS;AAC5B,cAAM,QAAQ,QAAQ,OAAO,YAAU,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK,EAAE;AAC5E,cAAM,aAAa,QAAQ,SAAS,IAAK,QAAQ,QAAQ,SAAU,MAAM;AACzE,eACE,6CAAC,SAAgB,WAAU,gCACzB;AAAA,uDAAC,UAAK,WAAU,2BAA2B;AAAA;AAAA,YAAM;AAAA,aAAC;AAAA,UAClD,4CAAC,4BAAS,OAAO,YAAY,WAAU,2BAA0B;AAAA,UACjE,4CAAC,UAAK,WAAU,qCAAqC,iBAAM;AAAA,aAHnD,KAIV;AAAA,MAEJ,CAAC,GACH;AAAA,OACF,GACF,GACF;AAAA,IAEA,4CAAC,SAAI,WAAU,uBACZ,kBAAQ,IAAI,YACX,4CAAC,oBAAqB,WAAU,sBAC9B,uDAAC,2BAAY,WAAU,YACrB;AAAA,kDAAC,SAAI,WAAU,yCACb,uDAAC,SACC;AAAA,oDAAC,SAAI,WAAU,uBAAuB,iBAAO,QAAO;AAAA,QACpD,6CAAC,SAAI,WAAU,gCACb;AAAA,sDAAC,SAAI,WAAU,QAAQ,sBAAY,OAAO,MAAM,GAAE;AAAA,UAClD,4CAAC,UAAK,WAAU,iCAAiC,qBAAW,OAAO,IAAI,GAAE;AAAA,WAC3E;AAAA,SACF,GACF;AAAA,MACA,4CAAC,OAAE,WAAU,sDAAsD,iBAAO,SAAQ;AAAA,MACjF,OAAO,OAAO,YAAY,WACzB,4CAAC,SAAI,WAAU,iCACZ,4BAAkB,QAAQ,WAAW,OAAO,OAAO,OAAO,CAAC,GAC9D,IACE;AAAA,OACN,KAjBS,OAAO,EAkBlB,CACD,GACH;AAAA,KACF;AAEJ;AAEA,IAAO,uCAAQ;","names":[]}
@@ -0,0 +1,61 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Star } from "lucide-react";
3
+ import { Card, CardContent } from "../../../ui/card.mjs";
4
+ import { Progress } from "../../../ui/progress.mjs";
5
+ function renderStars(rating) {
6
+ return Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsx(
7
+ Star,
8
+ {
9
+ className: `size-4 ${i < Math.floor(rating) ? "fill-foreground text-foreground" : i < rating ? "text-foreground" : ""}`
10
+ },
11
+ i
12
+ ));
13
+ }
14
+ function formatDate(dateString) {
15
+ return new Date(dateString).toLocaleDateString("es-ES", { year: "numeric", month: "short", day: "numeric" });
16
+ }
17
+ function ProductOverviewReviewsTab({
18
+ rating,
19
+ reviews,
20
+ basedOnReviewsLabel = "Basado en {count} rese\xF1as",
21
+ foundHelpfulLabel = "{count} personas encontraron esto \xFAtil"
22
+ }) {
23
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6", children: [
24
+ /* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsx(CardContent, { className: "p-8 py-0", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-start gap-8 md:flex-row md:items-center", children: [
25
+ /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
26
+ /* @__PURE__ */ jsx("div", { className: "text-4xl font-bold", children: rating }),
27
+ /* @__PURE__ */ jsx("div", { className: "mt-2 flex justify-center", children: renderStars(rating) }),
28
+ /* @__PURE__ */ jsx("div", { className: "text-muted-foreground mt-2 text-sm", children: basedOnReviewsLabel.replace("{count}", String(reviews.length)) })
29
+ ] }),
30
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: [5, 4, 3, 2, 1].map((stars) => {
31
+ const count = reviews.filter((review) => Math.floor(review.rating) === stars).length;
32
+ const percentage = reviews.length > 0 ? count / reviews.length * 100 : 0;
33
+ return /* @__PURE__ */ jsxs("div", { className: "mb-3 flex items-center gap-3", children: [
34
+ /* @__PURE__ */ jsxs("span", { className: "w-8 text-sm font-medium", children: [
35
+ stars,
36
+ "\u2605"
37
+ ] }),
38
+ /* @__PURE__ */ jsx(Progress, { value: percentage, className: "h-2 flex-1 rounded-full" }),
39
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-8 text-sm", children: count })
40
+ ] }, stars);
41
+ }) })
42
+ ] }) }) }),
43
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: reviews.map((review) => /* @__PURE__ */ jsx(Card, { className: "border shadow-none", children: /* @__PURE__ */ jsxs(CardContent, { className: "p-6 py-0", children: [
44
+ /* @__PURE__ */ jsx("div", { className: "mb-4 flex items-start justify-between", children: /* @__PURE__ */ jsxs("div", { children: [
45
+ /* @__PURE__ */ jsx("div", { className: "text-sm font-medium", children: review.author }),
46
+ /* @__PURE__ */ jsxs("div", { className: "mt-2 flex items-center gap-2", children: [
47
+ /* @__PURE__ */ jsx("div", { className: "flex", children: renderStars(review.rating) }),
48
+ /* @__PURE__ */ jsx("span", { className: "text-muted-foreground text-sm", children: formatDate(review.date) })
49
+ ] })
50
+ ] }) }),
51
+ /* @__PURE__ */ jsx("p", { className: "text-muted-foreground mb-3 text-sm leading-relaxed", children: review.comment }),
52
+ typeof review.helpful === "number" ? /* @__PURE__ */ jsx("div", { className: "text-muted-foreground text-xs", children: foundHelpfulLabel.replace("{count}", String(review.helpful)) }) : null
53
+ ] }) }, review.id)) })
54
+ ] });
55
+ }
56
+ var product_overview_reviews_tab_default = ProductOverviewReviewsTab;
57
+ export {
58
+ ProductOverviewReviewsTab,
59
+ product_overview_reviews_tab_default as default
60
+ };
61
+ //# sourceMappingURL=product-overview-reviews-tab.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-reviews-tab.tsx"],"sourcesContent":["import { Star } from 'lucide-react'\nimport { Card, CardContent } from '../../../ui/card'\nimport { Progress } from '../../../ui/progress'\n\n/**\n * Canonical review entry for the ProductOverview `rich` presentation. Reviews are supplied by the\n * host (optional block data), never seeded by the block.\n */\nexport interface ProductOverviewReview {\n id: number\n author: string\n rating: number\n comment: string\n date: string\n helpful?: number\n}\n\nexport interface ProductOverviewReviewsTabProps {\n /** Aggregate rating (0–5); rendered only when the host supplies reviews. */\n rating: number\n reviews: ProductOverviewReview[]\n basedOnReviewsLabel?: string\n foundHelpfulLabel?: string\n}\n\nfunction renderStars(rating: number) {\n return Array.from({ length: 5 }, (_, i) => (\n <Star\n key={i}\n className={`size-4 ${i < Math.floor(rating) ? 'fill-foreground text-foreground' : i < rating ? 'text-foreground' : ''}`}\n />\n ))\n}\n\nfunction formatDate(dateString: string) {\n return new Date(dateString).toLocaleDateString('es-ES', { year: 'numeric', month: 'short', day: 'numeric' })\n}\n\n/**\n * Reviews panel for the `rich` presentation: an aggregate summary plus the review list. Rendered\n * only when the host supplies reviews, so it never fabricates an empty review surface.\n */\nexport function ProductOverviewReviewsTab({\n rating,\n reviews,\n basedOnReviewsLabel = 'Basado en {count} reseñas',\n foundHelpfulLabel = '{count} personas encontraron esto útil',\n}: ProductOverviewReviewsTabProps) {\n return (\n <div className='flex flex-col gap-6'>\n <Card className='border shadow-none'>\n <CardContent className='p-8 py-0'>\n <div className='flex flex-col items-start gap-8 md:flex-row md:items-center'>\n <div className='text-center'>\n <div className='text-4xl font-bold'>{rating}</div>\n <div className='mt-2 flex justify-center'>{renderStars(rating)}</div>\n <div className='text-muted-foreground mt-2 text-sm'>\n {basedOnReviewsLabel.replace('{count}', String(reviews.length))}\n </div>\n </div>\n <div className='flex-1'>\n {[5, 4, 3, 2, 1].map(stars => {\n const count = reviews.filter(review => Math.floor(review.rating) === stars).length\n const percentage = reviews.length > 0 ? (count / reviews.length) * 100 : 0\n return (\n <div key={stars} className='mb-3 flex items-center gap-3'>\n <span className='w-8 text-sm font-medium'>{stars}★</span>\n <Progress value={percentage} className='h-2 flex-1 rounded-full' />\n <span className='text-muted-foreground w-8 text-sm'>{count}</span>\n </div>\n )\n })}\n </div>\n </div>\n </CardContent>\n </Card>\n\n <div className='flex flex-col gap-4'>\n {reviews.map(review => (\n <Card key={review.id} className='border shadow-none'>\n <CardContent className='p-6 py-0'>\n <div className='mb-4 flex items-start justify-between'>\n <div>\n <div className='text-sm font-medium'>{review.author}</div>\n <div className='mt-2 flex items-center gap-2'>\n <div className='flex'>{renderStars(review.rating)}</div>\n <span className='text-muted-foreground text-sm'>{formatDate(review.date)}</span>\n </div>\n </div>\n </div>\n <p className='text-muted-foreground mb-3 text-sm leading-relaxed'>{review.comment}</p>\n {typeof review.helpful === 'number' ? (\n <div className='text-muted-foreground text-xs'>\n {foundHelpfulLabel.replace('{count}', String(review.helpful))}\n </div>\n ) : null}\n </CardContent>\n </Card>\n ))}\n </div>\n </div>\n )\n}\n\nexport default ProductOverviewReviewsTab\n"],"mappings":"AA2BI,cA0BQ,YA1BR;AA3BJ,SAAS,YAAY;AACrB,SAAS,MAAM,mBAAmB;AAClC,SAAS,gBAAgB;AAuBzB,SAAS,YAAY,QAAgB;AACnC,SAAO,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,MACnC;AAAA,IAAC;AAAA;AAAA,MAEC,WAAW,UAAU,IAAI,KAAK,MAAM,MAAM,IAAI,oCAAoC,IAAI,SAAS,oBAAoB,EAAE;AAAA;AAAA,IADhH;AAAA,EAEP,CACD;AACH;AAEA,SAAS,WAAW,YAAoB;AACtC,SAAO,IAAI,KAAK,UAAU,EAAE,mBAAmB,SAAS,EAAE,MAAM,WAAW,OAAO,SAAS,KAAK,UAAU,CAAC;AAC7G;AAMO,SAAS,0BAA0B;AAAA,EACxC;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,GAAmC;AACjC,SACE,qBAAC,SAAI,WAAU,uBACb;AAAA,wBAAC,QAAK,WAAU,sBACd,8BAAC,eAAY,WAAU,YACrB,+BAAC,SAAI,WAAU,+DACb;AAAA,2BAAC,SAAI,WAAU,eACb;AAAA,4BAAC,SAAI,WAAU,sBAAsB,kBAAO;AAAA,QAC5C,oBAAC,SAAI,WAAU,4BAA4B,sBAAY,MAAM,GAAE;AAAA,QAC/D,oBAAC,SAAI,WAAU,sCACZ,8BAAoB,QAAQ,WAAW,OAAO,QAAQ,MAAM,CAAC,GAChE;AAAA,SACF;AAAA,MACA,oBAAC,SAAI,WAAU,UACZ,WAAC,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,IAAI,WAAS;AAC5B,cAAM,QAAQ,QAAQ,OAAO,YAAU,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK,EAAE;AAC5E,cAAM,aAAa,QAAQ,SAAS,IAAK,QAAQ,QAAQ,SAAU,MAAM;AACzE,eACE,qBAAC,SAAgB,WAAU,gCACzB;AAAA,+BAAC,UAAK,WAAU,2BAA2B;AAAA;AAAA,YAAM;AAAA,aAAC;AAAA,UAClD,oBAAC,YAAS,OAAO,YAAY,WAAU,2BAA0B;AAAA,UACjE,oBAAC,UAAK,WAAU,qCAAqC,iBAAM;AAAA,aAHnD,KAIV;AAAA,MAEJ,CAAC,GACH;AAAA,OACF,GACF,GACF;AAAA,IAEA,oBAAC,SAAI,WAAU,uBACZ,kBAAQ,IAAI,YACX,oBAAC,QAAqB,WAAU,sBAC9B,+BAAC,eAAY,WAAU,YACrB;AAAA,0BAAC,SAAI,WAAU,yCACb,+BAAC,SACC;AAAA,4BAAC,SAAI,WAAU,uBAAuB,iBAAO,QAAO;AAAA,QACpD,qBAAC,SAAI,WAAU,gCACb;AAAA,8BAAC,SAAI,WAAU,QAAQ,sBAAY,OAAO,MAAM,GAAE;AAAA,UAClD,oBAAC,UAAK,WAAU,iCAAiC,qBAAW,OAAO,IAAI,GAAE;AAAA,WAC3E;AAAA,SACF,GACF;AAAA,MACA,oBAAC,OAAE,WAAU,sDAAsD,iBAAO,SAAQ;AAAA,MACjF,OAAO,OAAO,YAAY,WACzB,oBAAC,SAAI,WAAU,iCACZ,4BAAkB,QAAQ,WAAW,OAAO,OAAO,OAAO,CAAC,GAC9D,IACE;AAAA,OACN,KAjBS,OAAO,EAkBlB,CACD,GACH;AAAA,KACF;AAEJ;AAEA,IAAO,uCAAQ;","names":[]}
@@ -0,0 +1,32 @@
1
+ import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
2
+ /**
3
+ * The full tab set the canonical ProductOverview renders on for its `rich`
4
+ * presentation.
5
+ *
6
+ * The block's classes target Base UI state attributes (`data-active:bg-transparent` on the
7
+ * triggers), the indicator reads Base UI positioning CSS variables (`--active-tab-*`), and the
8
+ * content fade relies on Base UI unmounting the inactive panel - so the whole tabs area runs on
9
+ * Base UI rather than the Radix-backed shadcn `tabs`. It lives here rather than in the shared ui
10
+ * `tabs` so the block installs standalone: the shadcn `tabs` component you get from the registry
11
+ * has no indicator or fading panel.
12
+ */
13
+ export declare function ProductOverviewTabs(props: TabsPrimitive.Root.Props): import("react").JSX.Element;
14
+ export declare function ProductOverviewTabsList({ className, ...props }: TabsPrimitive.List.Props): import("react").JSX.Element;
15
+ /**
16
+ * Base UI's tab button carries no layout of its own, so the inline-flex centring that the
17
+ * Radix-backed shadcn trigger used to supply is re-stated here.
18
+ */
19
+ export declare function ProductOverviewTabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): import("react").JSX.Element;
20
+ /**
21
+ * Panel with a fade-in on every switch. Base UI unmounts the inactive panel by default, so each
22
+ * activation is a fresh mount - `animate-in` plays automatically without needing a transition-state
23
+ * data attribute to gate it.
24
+ */
25
+ export declare function ProductOverviewTabsContentFade({ className, ...props }: TabsPrimitive.Panel.Props): import("react").JSX.Element;
26
+ /**
27
+ * Sliding pill that tracks the active trigger. Render as the first child of TabsList, and pair
28
+ * with `data-active:bg-transparent` on the triggers so their own active background doesn't double
29
+ * up with the pill.
30
+ */
31
+ export declare function ProductOverviewTabsIndicator({ className, ...props }: TabsPrimitive.Indicator.Props): import("react").JSX.Element;
32
+ //# sourceMappingURL=product-overview-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-overview-tabs.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/product-overview/product-overview-tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAI3D;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,+BAElE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,+BAExF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,+BAQ1F;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,+BAOhG;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,+BAalG"}