admin-ui-starter-kit 0.6.9 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1360) hide show
  1. package/.agents/skills/admin-ui-consumer-migration/SKILL.md +29 -1
  2. package/.agents/skills/admin-ui-consumer-migration/references/package-gap-surfaces.md +14 -0
  3. package/.agents/skills/admin-ui-consumer-migration/references/theme-overrides.md +172 -0
  4. package/.agents/skills/component-library-rules/SKILL.md +5 -4
  5. package/.agents/skills/component-library-rules/references/components/INDEX.json +23 -4
  6. package/.agents/skills/component-library-rules/references/components/INDEX.md +21 -2
  7. package/.agents/skills/component-library-rules/references/components/base__avatar.md +3 -3
  8. package/.agents/skills/component-library-rules/references/components/base__carousel.md +8 -5
  9. package/.agents/skills/component-library-rules/references/components/base__css-variables.md +1 -0
  10. package/.agents/skills/component-library-rules/references/components/base__currency.md +10 -11
  11. package/.agents/skills/component-library-rules/references/components/base__item.md +7 -7
  12. package/.agents/skills/component-library-rules/references/components/base__money-display.md +4 -0
  13. package/.agents/skills/component-library-rules/references/components/base__typography.md +3 -3
  14. package/.agents/skills/component-library-rules/references/components/composed__commerce-address-card.md +74 -0
  15. package/.agents/skills/component-library-rules/references/components/composed__commerce-cart-summary.md +84 -0
  16. package/.agents/skills/component-library-rules/references/components/composed__commerce-coupon-input.md +52 -0
  17. package/.agents/skills/component-library-rules/references/components/composed__commerce-discount-stack.md +58 -0
  18. package/.agents/skills/component-library-rules/references/components/composed__commerce-inventory-section.md +168 -0
  19. package/.agents/skills/component-library-rules/references/components/composed__commerce-loyalty-points.md +60 -0
  20. package/.agents/skills/component-library-rules/references/components/composed__commerce-order-status.md +62 -0
  21. package/.agents/skills/component-library-rules/references/components/composed__commerce-payment-method.md +58 -0
  22. package/.agents/skills/component-library-rules/references/components/composed__commerce-refund-status.md +58 -0
  23. package/.agents/skills/component-library-rules/references/components/composed__commerce-seo-listing.md +106 -0
  24. package/.agents/skills/component-library-rules/references/components/composed__commerce-shipment-tracking.md +65 -0
  25. package/.agents/skills/component-library-rules/references/components/composed__commerce-subscription-summary.md +66 -0
  26. package/.agents/skills/component-library-rules/references/components/composed__commerce-tax-breakdown.md +60 -0
  27. package/.agents/skills/component-library-rules/references/components/composed__commerce-upcoming-booking.md +62 -0
  28. package/.agents/skills/component-library-rules/references/components/composed__commerce-voucher-entry.md +60 -0
  29. package/.agents/skills/component-library-rules/references/components/composed__commerce.md +29 -143
  30. package/.agents/skills/component-library-rules/references/components/features__products.md +18 -462
  31. package/.agents/skills/component-library-rules/references/components/features__products__actions.md +37 -0
  32. package/.agents/skills/component-library-rules/references/components/features__products__support-rail.md +73 -0
  33. package/.agents/skills/component-library-rules/references/components/features__products__variant-details.md +97 -0
  34. package/.agents/skills/component-library-rules/references/components/features__products__variant-management.md +269 -0
  35. package/.agents/skills/component-library-rules/references/components/layout__layout-auth.md +1 -1
  36. package/.agents/skills/component-library-rules/references/components/layout__layout-containers.md +43 -1
  37. package/.agents/skills/component-library-rules/references/testing.md +1 -1
  38. package/.agents/skills/token-system/SKILL.md +4 -1
  39. package/AGENTS.md +4 -3
  40. package/COMPONENT_SELECTION.md +15 -0
  41. package/INTEGRATION.md +41 -2
  42. package/MIGRATION.md +7 -7
  43. package/README.md +7 -3
  44. package/dist/_shared/accordion-CSRRDWVZ.js +135 -0
  45. package/dist/_shared/accordion-CSRRDWVZ.js.map +1 -0
  46. package/dist/_shared/accordion-ClVkIaCy.cjs +2 -0
  47. package/dist/_shared/accordion-ClVkIaCy.cjs.map +1 -0
  48. package/dist/_shared/action-menu-8RN2_Jdr.js +96 -0
  49. package/dist/_shared/action-menu-8RN2_Jdr.js.map +1 -0
  50. package/dist/_shared/action-menu-Cx2xaBjN.cjs +2 -0
  51. package/dist/_shared/action-menu-Cx2xaBjN.cjs.map +1 -0
  52. package/dist/_shared/ai-artifact-BO0XGFHz.cjs +3 -0
  53. package/dist/_shared/ai-artifact-BO0XGFHz.cjs.map +1 -0
  54. package/dist/_shared/ai-artifact-CbsGR1t8.js +1099 -0
  55. package/dist/_shared/ai-artifact-CbsGR1t8.js.map +1 -0
  56. package/dist/_shared/auth-CwipRgNB.cjs +2 -0
  57. package/dist/_shared/auth-CwipRgNB.cjs.map +1 -0
  58. package/dist/_shared/auth-Wipu0Oa_.js +643 -0
  59. package/dist/_shared/auth-Wipu0Oa_.js.map +1 -0
  60. package/dist/_shared/badge-B0Ashqkn.cjs +2 -0
  61. package/dist/_shared/badge-B0Ashqkn.cjs.map +1 -0
  62. package/dist/_shared/badge-DOJpEtsa.js +110 -0
  63. package/dist/_shared/badge-DOJpEtsa.js.map +1 -0
  64. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs +2 -0
  65. package/dist/_shared/breadcrumbs-C7PI8sxx.cjs.map +1 -0
  66. package/dist/_shared/breadcrumbs-xNjbIrGc.js +105 -0
  67. package/dist/_shared/breadcrumbs-xNjbIrGc.js.map +1 -0
  68. package/dist/_shared/button-CB8e7fui.cjs +2 -0
  69. package/dist/_shared/button-CB8e7fui.cjs.map +1 -0
  70. package/dist/_shared/button-CNEMqDHK.js +192 -0
  71. package/dist/_shared/button-CNEMqDHK.js.map +1 -0
  72. package/dist/_shared/buttons-BCFKQuB5.js +137 -0
  73. package/dist/_shared/buttons-BCFKQuB5.js.map +1 -0
  74. package/dist/_shared/buttons-DHj5I2YL.cjs +2 -0
  75. package/dist/_shared/buttons-DHj5I2YL.cjs.map +1 -0
  76. package/dist/_shared/card-radio-group-DdubYUJ6.cjs +2 -0
  77. package/dist/_shared/card-radio-group-DdubYUJ6.cjs.map +1 -0
  78. package/dist/_shared/card-radio-group-Du6rzuoC.js +150 -0
  79. package/dist/_shared/card-radio-group-Du6rzuoC.js.map +1 -0
  80. package/dist/_shared/cards-B7voInTJ.js +430 -0
  81. package/dist/_shared/cards-B7voInTJ.js.map +1 -0
  82. package/dist/_shared/cards-DvE5gRFf.cjs +2 -0
  83. package/dist/_shared/cards-DvE5gRFf.cjs.map +1 -0
  84. package/dist/_shared/combobox-AbXh9ft4.cjs +2 -0
  85. package/dist/_shared/combobox-AbXh9ft4.cjs.map +1 -0
  86. package/dist/_shared/combobox-ImXiC1qy.js +957 -0
  87. package/dist/_shared/combobox-ImXiC1qy.js.map +1 -0
  88. package/dist/_shared/command-B-Yokco3.js +39 -0
  89. package/dist/_shared/command-B-Yokco3.js.map +1 -0
  90. package/dist/_shared/command-kcPx4TM_.cjs +2 -0
  91. package/dist/_shared/command-kcPx4TM_.cjs.map +1 -0
  92. package/dist/_shared/comments-BR5ENvoo.cjs +2 -0
  93. package/dist/_shared/comments-BR5ENvoo.cjs.map +1 -0
  94. package/dist/_shared/comments-a3l--GJ-.js +952 -0
  95. package/dist/_shared/comments-a3l--GJ-.js.map +1 -0
  96. package/dist/_shared/containers-CclPUW7j.cjs +2 -0
  97. package/dist/_shared/containers-CclPUW7j.cjs.map +1 -0
  98. package/dist/_shared/containers-GDaJ3SOV.js +101 -0
  99. package/dist/_shared/containers-GDaJ3SOV.js.map +1 -0
  100. package/dist/_shared/copyable-C0KJlRVr.js +38 -0
  101. package/dist/_shared/copyable-C0KJlRVr.js.map +1 -0
  102. package/dist/_shared/copyable-tJxsOyn-.cjs +2 -0
  103. package/dist/_shared/copyable-tJxsOyn-.cjs.map +1 -0
  104. package/dist/_shared/data-display-0uNuZSN7.js +1878 -0
  105. package/dist/_shared/data-display-0uNuZSN7.js.map +1 -0
  106. package/dist/_shared/data-display-DRa39LH8.cjs +2 -0
  107. package/dist/_shared/data-display-DRa39LH8.cjs.map +1 -0
  108. package/dist/_shared/date-picker-BaPDfs1p.js +1361 -0
  109. package/dist/_shared/date-picker-BaPDfs1p.js.map +1 -0
  110. package/dist/_shared/date-picker-DrkoZZdr.cjs +2 -0
  111. package/dist/_shared/date-picker-DrkoZZdr.cjs.map +1 -0
  112. package/dist/_shared/date-pickers-CT3aZpPn.cjs +2 -0
  113. package/dist/_shared/date-pickers-CT3aZpPn.cjs.map +1 -0
  114. package/dist/_shared/date-pickers-DRp0VM7k.js +329 -0
  115. package/dist/_shared/date-pickers-DRp0VM7k.js.map +1 -0
  116. package/dist/_shared/display-BHIs_Y_j.js +1006 -0
  117. package/dist/_shared/display-BHIs_Y_j.js.map +1 -0
  118. package/dist/_shared/display-DV7n0KA1.cjs +2 -0
  119. package/dist/_shared/display-DV7n0KA1.cjs.map +1 -0
  120. package/dist/_shared/dropdown-menu-5fFMhKo4.js +147 -0
  121. package/dist/_shared/dropdown-menu-5fFMhKo4.js.map +1 -0
  122. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs +2 -0
  123. package/dist/_shared/dropdown-menu-B_SCGRL2.cjs.map +1 -0
  124. package/dist/_shared/form-sizing-VNEGzvM7.js +42 -0
  125. package/dist/_shared/form-sizing-VNEGzvM7.js.map +1 -0
  126. package/dist/_shared/form-sizing-lBFpJWv4.cjs +2 -0
  127. package/dist/_shared/form-sizing-lBFpJWv4.cjs.map +1 -0
  128. package/dist/_shared/forms-B7LYVbAy.cjs +2 -0
  129. package/dist/_shared/forms-B7LYVbAy.cjs.map +1 -0
  130. package/dist/_shared/forms-C5uZX_kQ.js +3534 -0
  131. package/dist/_shared/forms-C5uZX_kQ.js.map +1 -0
  132. package/dist/_shared/header-B4wGB6Ca.cjs +2 -0
  133. package/dist/_shared/header-B4wGB6Ca.cjs.map +1 -0
  134. package/dist/_shared/header-CWyOry0f.js +447 -0
  135. package/dist/_shared/header-CWyOry0f.js.map +1 -0
  136. package/dist/_shared/hooks-B4Cop5YI.cjs +2 -0
  137. package/dist/_shared/hooks-B4Cop5YI.cjs.map +1 -0
  138. package/dist/_shared/hooks-CFUZJW_S.js +95 -0
  139. package/dist/_shared/hooks-CFUZJW_S.js.map +1 -0
  140. package/dist/_shared/icon-size-CMNigtUu.js +15 -0
  141. package/dist/_shared/icon-size-CMNigtUu.js.map +1 -0
  142. package/dist/_shared/icon-size-D2NnYd0K.cjs +2 -0
  143. package/dist/_shared/icon-size-D2NnYd0K.cjs.map +1 -0
  144. package/dist/_shared/input-BEhrcsk7.js +182 -0
  145. package/dist/_shared/input-BEhrcsk7.js.map +1 -0
  146. package/dist/_shared/input-DGvh-izk.cjs +2 -0
  147. package/dist/_shared/input-DGvh-izk.cjs.map +1 -0
  148. package/dist/_shared/item-BG2iK1sy.cjs +2 -0
  149. package/dist/_shared/item-BG2iK1sy.cjs.map +1 -0
  150. package/dist/_shared/item-D75eGy8G.js +227 -0
  151. package/dist/_shared/item-D75eGy8G.js.map +1 -0
  152. package/dist/_shared/layout-DN8tzvlm.cjs +2 -0
  153. package/dist/_shared/layout-DN8tzvlm.cjs.map +1 -0
  154. package/dist/_shared/layout-DNrUkvzF.js +268 -0
  155. package/dist/_shared/layout-DNrUkvzF.js.map +1 -0
  156. package/dist/_shared/mentions-CWqC8Xds.js +506 -0
  157. package/dist/_shared/mentions-CWqC8Xds.js.map +1 -0
  158. package/dist/_shared/mentions-wtkrL2hX.cjs +2 -0
  159. package/dist/_shared/mentions-wtkrL2hX.cjs.map +1 -0
  160. package/dist/_shared/money-display-BabyaIWb.js +198 -0
  161. package/dist/_shared/money-display-BabyaIWb.js.map +1 -0
  162. package/dist/_shared/money-display-CrNRbByx.cjs +2 -0
  163. package/dist/_shared/money-display-CrNRbByx.cjs.map +1 -0
  164. package/dist/_shared/navigation-9DB-vtGI.js +436 -0
  165. package/dist/_shared/navigation-9DB-vtGI.js.map +1 -0
  166. package/dist/_shared/navigation-DAjFLSv5.cjs +2 -0
  167. package/dist/_shared/navigation-DAjFLSv5.cjs.map +1 -0
  168. package/dist/_shared/overlays-BK0J8zSv.cjs +2 -0
  169. package/dist/_shared/overlays-BK0J8zSv.cjs.map +1 -0
  170. package/dist/_shared/overlays-DKsXufDv.js +735 -0
  171. package/dist/_shared/overlays-DKsXufDv.js.map +1 -0
  172. package/dist/_shared/popover-menu-DXh14PIu.js +93 -0
  173. package/dist/_shared/popover-menu-DXh14PIu.js.map +1 -0
  174. package/dist/_shared/popover-menu-DkjPUZ4v.cjs +2 -0
  175. package/dist/_shared/popover-menu-DkjPUZ4v.cjs.map +1 -0
  176. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs +2 -0
  177. package/dist/_shared/rich-text-editor-DjZTJzdm.cjs.map +1 -0
  178. package/dist/_shared/rich-text-editor-DloyZq46.js +620 -0
  179. package/dist/_shared/rich-text-editor-DloyZq46.js.map +1 -0
  180. package/dist/_shared/settings-AIgixHbB.cjs +2 -0
  181. package/dist/_shared/settings-AIgixHbB.cjs.map +1 -0
  182. package/dist/_shared/settings-D3KdypJk.js +143 -0
  183. package/dist/_shared/settings-D3KdypJk.js.map +1 -0
  184. package/dist/_shared/sidebar-BzBincq3.js +548 -0
  185. package/dist/_shared/sidebar-BzBincq3.js.map +1 -0
  186. package/dist/_shared/sidebar-D5NLbyow.cjs +2 -0
  187. package/dist/_shared/sidebar-D5NLbyow.cjs.map +1 -0
  188. package/dist/_shared/skeleton-Bc_qa5l_.js +256 -0
  189. package/dist/_shared/skeleton-Bc_qa5l_.js.map +1 -0
  190. package/dist/_shared/skeleton-Wq6G0Kya.cjs +2 -0
  191. package/dist/_shared/skeleton-Wq6G0Kya.cjs.map +1 -0
  192. package/dist/_shared/spinner-C-yoZUk-.cjs +2 -0
  193. package/dist/_shared/spinner-C-yoZUk-.cjs.map +1 -0
  194. package/dist/_shared/spinner-CDVWFN0N.js +67 -0
  195. package/dist/_shared/spinner-CDVWFN0N.js.map +1 -0
  196. package/dist/_shared/table-B70kyH2E.js +1377 -0
  197. package/dist/_shared/table-B70kyH2E.js.map +1 -0
  198. package/dist/_shared/table-DQA2m2F0.cjs +2 -0
  199. package/dist/_shared/table-DQA2m2F0.cjs.map +1 -0
  200. package/dist/_shared/textarea-Dx9yEZY2.js +118 -0
  201. package/dist/_shared/textarea-Dx9yEZY2.js.map +1 -0
  202. package/dist/_shared/textarea-rfnSeHHC.cjs +2 -0
  203. package/dist/_shared/textarea-rfnSeHHC.cjs.map +1 -0
  204. package/dist/_shared/typography-C_kCoR1d.js +204 -0
  205. package/dist/_shared/typography-C_kCoR1d.js.map +1 -0
  206. package/dist/_shared/typography-sXFd02zl.cjs +2 -0
  207. package/dist/_shared/typography-sXFd02zl.cjs.map +1 -0
  208. package/dist/_shared/workspace-Bw-k_HXQ.js +357 -0
  209. package/dist/_shared/workspace-Bw-k_HXQ.js.map +1 -0
  210. package/dist/_shared/workspace-CLUsYC5y.cjs +2 -0
  211. package/dist/_shared/workspace-CLUsYC5y.cjs.map +1 -0
  212. package/dist/components/base/accordion/index.cjs +1 -1
  213. package/dist/components/base/accordion/index.js +1 -1
  214. package/dist/components/base/badge/index.cjs +1 -1
  215. package/dist/components/base/badge/index.js +1 -1
  216. package/dist/components/base/buttons/index.cjs +1 -1
  217. package/dist/components/base/buttons/index.js +2 -2
  218. package/dist/components/base/cards/index.cjs +1 -1
  219. package/dist/components/base/cards/index.js +1 -1
  220. package/dist/components/base/carousel/carousel.d.ts.map +1 -1
  221. package/dist/components/base/carousel/index.cjs +1 -1
  222. package/dist/components/base/carousel/index.cjs.map +1 -1
  223. package/dist/components/base/carousel/index.js +98 -97
  224. package/dist/components/base/carousel/index.js.map +1 -1
  225. package/dist/components/base/combobox/components/combobox-dropdown.d.ts.map +1 -1
  226. package/dist/components/base/combobox/index.cjs +1 -1
  227. package/dist/components/base/combobox/index.js +1 -1
  228. package/dist/components/base/command/command.d.ts +1 -1
  229. package/dist/components/base/command/index.cjs +1 -1
  230. package/dist/components/base/command/index.js +1 -1
  231. package/dist/components/base/copyable/index.cjs +1 -1
  232. package/dist/components/base/copyable/index.js +1 -1
  233. package/dist/components/base/currency/index.cjs +1 -1
  234. package/dist/components/base/currency/index.js +1 -1
  235. package/dist/components/base/date-pickers/index.cjs +1 -1
  236. package/dist/components/base/date-pickers/index.js +2 -2
  237. package/dist/components/base/display/alert.d.ts.map +1 -1
  238. package/dist/components/base/display/chart.cjs +1 -1
  239. package/dist/components/base/display/chart.js +1 -1
  240. package/dist/components/base/display/icon-size.d.ts +6 -0
  241. package/dist/components/base/display/icon-size.d.ts.map +1 -0
  242. package/dist/components/base/display/index.cjs +1 -1
  243. package/dist/components/base/display/index.d.ts +1 -0
  244. package/dist/components/base/display/index.d.ts.map +1 -1
  245. package/dist/components/base/display/index.js +10 -9
  246. package/dist/components/base/display/throttle-alert.d.ts.map +1 -1
  247. package/dist/components/base/event-calendar/index.cjs +1 -1
  248. package/dist/components/base/event-calendar/index.cjs.map +1 -1
  249. package/dist/components/base/event-calendar/index.js +4 -4
  250. package/dist/components/base/event-calendar/index.js.map +1 -1
  251. package/dist/components/base/forms/index.cjs +1 -1
  252. package/dist/components/base/forms/index.js +5 -5
  253. package/dist/components/base/item/index.cjs +1 -1
  254. package/dist/components/base/item/index.js +1 -1
  255. package/dist/components/base/item/item.d.ts.map +1 -1
  256. package/dist/components/base/map/index.cjs +1 -1
  257. package/dist/components/base/map/index.cjs.map +1 -1
  258. package/dist/components/base/map/index.js +3 -3
  259. package/dist/components/base/map/index.js.map +1 -1
  260. package/dist/components/base/map/map.d.ts +1 -1
  261. package/dist/components/base/map/map.d.ts.map +1 -1
  262. package/dist/components/base/navigation/dropdown-menu.d.ts +33 -1
  263. package/dist/components/base/navigation/dropdown-menu.d.ts.map +1 -1
  264. package/dist/components/base/navigation/index.cjs +1 -1
  265. package/dist/components/base/navigation/index.js +4 -4
  266. package/dist/components/base/popover-menu/index.cjs +1 -1
  267. package/dist/components/base/popover-menu/index.js +1 -1
  268. package/dist/components/base/spinner/index.cjs +1 -1
  269. package/dist/components/base/spinner/index.js +1 -1
  270. package/dist/components/base/table/index.cjs +1 -1
  271. package/dist/components/base/table/index.js +1 -1
  272. package/dist/components/composed/admin/index.cjs +1 -1
  273. package/dist/components/composed/admin/index.cjs.map +1 -1
  274. package/dist/components/composed/admin/index.js +10 -11
  275. package/dist/components/composed/admin/index.js.map +1 -1
  276. package/dist/components/composed/ai/index.cjs +1 -1
  277. package/dist/components/composed/ai/index.cjs.map +1 -1
  278. package/dist/components/composed/ai/index.js +8 -9
  279. package/dist/components/composed/ai/index.js.map +1 -1
  280. package/dist/components/composed/analytics/index.cjs +1 -1
  281. package/dist/components/composed/analytics/index.cjs.map +1 -1
  282. package/dist/components/composed/analytics/index.js +4 -4
  283. package/dist/components/composed/analytics/index.js.map +1 -1
  284. package/dist/components/composed/cards/index.cjs +1 -1
  285. package/dist/components/composed/cards/index.cjs.map +1 -1
  286. package/dist/components/composed/cards/index.js +13 -15
  287. package/dist/components/composed/cards/index.js.map +1 -1
  288. package/dist/components/composed/commerce/index.cjs +1 -1
  289. package/dist/components/composed/commerce/index.cjs.map +1 -1
  290. package/dist/components/composed/commerce/index.d.ts +2 -0
  291. package/dist/components/composed/commerce/index.d.ts.map +1 -1
  292. package/dist/components/composed/commerce/index.js +1246 -382
  293. package/dist/components/composed/commerce/index.js.map +1 -1
  294. package/dist/components/composed/commerce/inventory-section/index.d.ts +3 -0
  295. package/dist/components/composed/commerce/inventory-section/index.d.ts.map +1 -0
  296. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts +6 -0
  297. package/dist/components/composed/commerce/inventory-section/inventory-section.d.ts.map +1 -0
  298. package/dist/components/composed/commerce/inventory-section/types.d.ts +85 -0
  299. package/dist/components/composed/commerce/inventory-section/types.d.ts.map +1 -0
  300. package/dist/components/composed/commerce/seo-listing/index.d.ts +4 -0
  301. package/dist/components/composed/commerce/seo-listing/index.d.ts.map +1 -0
  302. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts +6 -0
  303. package/dist/components/composed/commerce/seo-listing/seo-listing-card.d.ts.map +1 -0
  304. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts +6 -0
  305. package/dist/components/composed/commerce/seo-listing/seo-listing-score.d.ts.map +1 -0
  306. package/dist/components/composed/commerce/seo-listing/types.d.ts +68 -0
  307. package/dist/components/composed/commerce/seo-listing/types.d.ts.map +1 -0
  308. package/dist/components/composed/dark-surfaces/index.cjs +1 -1
  309. package/dist/components/composed/dark-surfaces/index.cjs.map +1 -1
  310. package/dist/components/composed/dark-surfaces/index.js +7 -7
  311. package/dist/components/composed/dark-surfaces/index.js.map +1 -1
  312. package/dist/components/composed/data-display/index.cjs +1 -1
  313. package/dist/components/composed/data-display/index.js +1 -1
  314. package/dist/components/composed/navigation/index.cjs +1 -1
  315. package/dist/components/composed/navigation/index.cjs.map +1 -1
  316. package/dist/components/composed/navigation/index.js +5 -6
  317. package/dist/components/composed/navigation/index.js.map +1 -1
  318. package/dist/components/composed/onboarding/index.cjs +1 -1
  319. package/dist/components/composed/onboarding/index.js +3 -3
  320. package/dist/components/composed/timelines/index.cjs +1 -1
  321. package/dist/components/composed/timelines/index.js +3 -3
  322. package/dist/components/features/activities/index.cjs +1 -1
  323. package/dist/components/features/activities/index.js +5 -5
  324. package/dist/components/features/ai-chat/index.cjs +1 -1
  325. package/dist/components/features/ai-chat/index.js +5 -5
  326. package/dist/components/features/card/index.cjs +1 -1
  327. package/dist/components/features/card/index.js +4 -4
  328. package/dist/components/features/comments/index.cjs +1 -1
  329. package/dist/components/features/comments/index.js +2 -2
  330. package/dist/components/features/data-view/index.cjs +1 -1
  331. package/dist/components/features/data-view/index.js +2 -2
  332. package/dist/components/features/event-log/index.cjs +1 -1
  333. package/dist/components/features/event-log/index.js +4 -4
  334. package/dist/components/features/filters/index.cjs +1 -1
  335. package/dist/components/features/filters/index.cjs.map +1 -1
  336. package/dist/components/features/filters/index.js +64 -64
  337. package/dist/components/features/filters/index.js.map +1 -1
  338. package/dist/components/features/filters/partials/regular-filter-content.d.ts.map +1 -1
  339. package/dist/components/features/global-search/index.cjs +1 -1
  340. package/dist/components/features/global-search/index.js +4 -4
  341. package/dist/components/features/kanban/index.cjs +1 -1
  342. package/dist/components/features/kanban/index.js +3 -3
  343. package/dist/components/features/media-library/index.cjs +1 -1
  344. package/dist/components/features/media-library/index.cjs.map +1 -1
  345. package/dist/components/features/media-library/index.js +230 -206
  346. package/dist/components/features/media-library/index.js.map +1 -1
  347. package/dist/components/features/media-library/media-library.d.ts.map +1 -1
  348. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  349. package/dist/components/features/media-library/media-library.strings.d.ts.map +1 -1
  350. package/dist/components/features/media-library/partials/media-library-partials.d.ts.map +1 -1
  351. package/dist/components/features/mentions/index.cjs +1 -1
  352. package/dist/components/features/mentions/index.js +1 -1
  353. package/dist/components/features/overlays/index.cjs +1 -1
  354. package/dist/components/features/overlays/index.js +1 -1
  355. package/dist/components/features/products/components/index.d.ts +3 -0
  356. package/dist/components/features/products/components/index.d.ts.map +1 -1
  357. package/dist/components/features/products/components/product-options-matrix.d.ts +6 -0
  358. package/dist/components/features/products/components/product-options-matrix.d.ts.map +1 -0
  359. package/dist/components/features/products/components/product-variants-bulk-table.d.ts +6 -0
  360. package/dist/components/features/products/components/product-variants-bulk-table.d.ts.map +1 -0
  361. package/dist/components/features/products/components/product-variants-manager.d.ts +6 -0
  362. package/dist/components/features/products/components/product-variants-manager.d.ts.map +1 -0
  363. package/dist/components/features/products/index.cjs +1 -1
  364. package/dist/components/features/products/index.cjs.map +1 -1
  365. package/dist/components/features/products/index.js +1705 -511
  366. package/dist/components/features/products/index.js.map +1 -1
  367. package/dist/components/features/products/products.strings.d.ts +70 -0
  368. package/dist/components/features/products/products.strings.d.ts.map +1 -1
  369. package/dist/components/features/products/products.types.d.ts +163 -1
  370. package/dist/components/features/products/products.types.d.ts.map +1 -1
  371. package/dist/components/features/resource/index.cjs +1 -1
  372. package/dist/components/features/resource/index.js +5 -5
  373. package/dist/components/features/rich-text-editor/index.cjs +1 -1
  374. package/dist/components/features/rich-text-editor/index.js +1 -1
  375. package/dist/components/features/schema-form/index.cjs +1 -1
  376. package/dist/components/features/schema-form/index.js +8 -8
  377. package/dist/components/features/suggestions/index.cjs +1 -1
  378. package/dist/components/features/suggestions/index.js +1 -1
  379. package/dist/components/features/sync/index.cjs +1 -1
  380. package/dist/components/features/sync/index.js +2 -2
  381. package/dist/components/layout/auth/index.cjs +1 -1
  382. package/dist/components/layout/auth/index.js +1 -1
  383. package/dist/components/layout/containers/index.cjs +1 -1
  384. package/dist/components/layout/containers/index.d.ts +1 -0
  385. package/dist/components/layout/containers/index.d.ts.map +1 -1
  386. package/dist/components/layout/containers/index.js +2 -2
  387. package/dist/components/layout/containers/two-column-layout.d.ts +43 -0
  388. package/dist/components/layout/containers/two-column-layout.d.ts.map +1 -0
  389. package/dist/components/layout/header/index.cjs +1 -1
  390. package/dist/components/layout/header/index.js +1 -1
  391. package/dist/components/layout/hooks/index.cjs +1 -1
  392. package/dist/components/layout/hooks/index.js +1 -1
  393. package/dist/components/layout/index.cjs +1 -1
  394. package/dist/components/layout/index.js +9 -9
  395. package/dist/components/layout/page/index.cjs +1 -1
  396. package/dist/components/layout/page/index.js +1 -1
  397. package/dist/components/layout/page/page-content.d.ts +1 -1
  398. package/dist/components/layout/page/page-content.d.ts.map +1 -1
  399. package/dist/components/layout/settings/index.cjs +1 -1
  400. package/dist/components/layout/settings/index.js +1 -1
  401. package/dist/components/layout/sidebar/index.cjs +1 -1
  402. package/dist/components/layout/sidebar/index.js +2 -2
  403. package/dist/components/layout/workspace/index.cjs +1 -1
  404. package/dist/components/layout/workspace/index.js +1 -1
  405. package/dist/components/typography/index.cjs +1 -1
  406. package/dist/components/typography/index.js +1 -1
  407. package/dist/components/typography/text-link.d.ts +3 -1
  408. package/dist/components/typography/text-link.d.ts.map +1 -1
  409. package/dist/components/typography/text.d.ts.map +1 -1
  410. package/dist/lib/ui-provider/types.d.ts +1 -1
  411. package/dist/lib/ui-provider/types.d.ts.map +1 -1
  412. package/dist/lib/utils.cjs +1 -1
  413. package/dist/lib/utils.cjs.map +1 -1
  414. package/dist/lib/utils.d.ts.map +1 -1
  415. package/dist/lib/utils.js +1 -0
  416. package/dist/lib/utils.js.map +1 -1
  417. package/dist/services/actions/index.cjs +1 -1
  418. package/dist/services/actions/index.js +1 -1
  419. package/dist/showcase/assets/AreaChart-D_z9eYQj.js +6 -0
  420. package/dist/showcase/assets/CompositeItem-BSVzIXzg.js +1 -0
  421. package/dist/showcase/assets/CompositeRoot-Ewl7bgm-.js +1 -0
  422. package/dist/showcase/assets/DialogTrigger-CD-DcY4b.js +1 -0
  423. package/dist/showcase/assets/LabelableContext-BdRVtvs6.js +1 -0
  424. package/dist/showcase/assets/MenuTrigger-B8Y7BUCN.js +1 -0
  425. package/dist/showcase/assets/PreviewLayout-CE0fmzoc.js +1 -0
  426. package/dist/showcase/assets/RadioGroup-Qaf-akL1.js +1 -0
  427. package/dist/showcase/assets/ScrollAreaCorner-BQR87jzh.js +1 -0
  428. package/dist/showcase/assets/Separator-Cymh2jzU.js +1 -0
  429. package/dist/showcase/assets/ToolbarRootContext-P5BSzPlo.js +1 -0
  430. package/dist/showcase/assets/accordion-BGUvdQ5Z.js +171 -0
  431. package/dist/showcase/assets/accordion-variants-B56z6tQI.js +1 -0
  432. package/dist/showcase/assets/action-menu-C3DOQfP4.js +1 -0
  433. package/dist/showcase/assets/actions-DHG4zJRu.js +38 -0
  434. package/dist/showcase/assets/actions-IxPK0biY.js +310 -0
  435. package/dist/showcase/assets/activities-TK5Lr8Wb.js +500 -0
  436. package/dist/showcase/assets/activities-feed-card-tgQKimyh.js +1 -0
  437. package/dist/showcase/assets/admin-BQrDKNJa.js +140 -0
  438. package/dist/showcase/assets/ai-artifact-Cv7LTw1V.js +2 -0
  439. package/dist/showcase/assets/ai-chat-Dmg2Tqf1.js +568 -0
  440. package/dist/showcase/assets/ai-elements-BmokxSCy.js +387 -0
  441. package/dist/showcase/assets/ai-tool-call-6qESA6We.js +1 -0
  442. package/dist/showcase/assets/ai-xShhEkrM.js +207 -0
  443. package/dist/showcase/assets/alert--MONSwFW.js +1 -0
  444. package/dist/showcase/assets/alert-BuMNu_BZ.js +62 -0
  445. package/dist/showcase/assets/alert-z1RP5MhA.js +93 -0
  446. package/dist/showcase/assets/api-key-list-BhmXUJty.js +73 -0
  447. package/dist/showcase/assets/api-key-list-hPTN6gwa.js +1 -0
  448. package/dist/showcase/assets/app-sidebar-CY-XpIu6.js +1 -0
  449. package/dist/showcase/assets/arrow-down-D0XbhSDi.js +1 -0
  450. package/dist/showcase/assets/arrow-left-DBxsWbzL.js +1 -0
  451. package/dist/showcase/assets/arrow-right-Dk80zKWl.js +1 -0
  452. package/dist/showcase/assets/arrow-up-BiZ_VvpP.js +1 -0
  453. package/dist/showcase/assets/arrow-up-right-OdmPQEwY.js +1 -0
  454. package/dist/showcase/assets/avatar-BThv_quW.js +1 -0
  455. package/dist/showcase/assets/avatar-Bcy2snIC.js +67 -0
  456. package/dist/showcase/assets/avatar-Ca3to6dB.js +57 -0
  457. package/dist/showcase/assets/avatar-Dba0yVei.js +1 -0
  458. package/dist/showcase/assets/badge-A1w2eIaM.js +31 -0
  459. package/dist/showcase/assets/badge-check-DyqZ9Ff8.js +1 -0
  460. package/dist/showcase/assets/bell-DyqsYdKK.js +1 -0
  461. package/dist/showcase/assets/boolean-indicator-gaFjXuY1.js +1 -0
  462. package/dist/showcase/assets/bot-BGQvS_p9.js +1 -0
  463. package/dist/showcase/assets/box-BoFEAPr6.js +1 -0
  464. package/dist/showcase/assets/braces-D88Ve7g-.js +1 -0
  465. package/dist/showcase/assets/brain-hIv2TdLu.js +1 -0
  466. package/dist/showcase/assets/brand-CiWM8HzB.js +36 -0
  467. package/dist/showcase/assets/breadcrumb-DlHNoCer.js +1 -0
  468. package/dist/showcase/assets/breadcrumb-Dy-UbgK5.js +52 -0
  469. package/dist/showcase/assets/breadcrumbs-BoXmoDHt.js +1 -0
  470. package/dist/showcase/assets/briefcase-BeN7dk_G.js +1 -0
  471. package/dist/showcase/assets/building-2-ICycTKXZ.js +1 -0
  472. package/dist/showcase/assets/button-BADo_inb.js +44 -0
  473. package/dist/showcase/assets/button-group-BGkXY3HC.js +1 -0
  474. package/dist/showcase/assets/buttons-3z50eWMp.js +272 -0
  475. package/dist/showcase/assets/calendar-BAfoc476.js +1 -0
  476. package/dist/showcase/assets/calendar-DNxQUmlO.js +16 -0
  477. package/dist/showcase/assets/calendar-days-D86Fv-vG.js +1 -0
  478. package/dist/showcase/assets/calendar-pjS8iCZE.js +1 -0
  479. package/dist/showcase/assets/camera-DxWfctRe.js +1 -0
  480. package/dist/showcase/assets/card-BazLaDA9.js +188 -0
  481. package/dist/showcase/assets/card-F8Ona144.js +1 -0
  482. package/dist/showcase/assets/card-checkbox-group-DtK7aVPU.js +1 -0
  483. package/dist/showcase/assets/card-primitives-DzqLvy5f.js +1 -0
  484. package/dist/showcase/assets/card-radio-group-EjPkSg-w.js +1 -0
  485. package/dist/showcase/assets/cards--V2D7Sft.js +354 -0
  486. package/dist/showcase/assets/carousel-BNmTHQiN.js +452 -0
  487. package/dist/showcase/assets/cell-renderers-BdpeNGHs.js +1 -0
  488. package/dist/showcase/assets/chart-column-CJx3qWPs.js +1 -0
  489. package/dist/showcase/assets/chart-p7dUP6Mo.js +358 -0
  490. package/dist/showcase/assets/checkbox-BBxn_hxI.js +1 -0
  491. package/dist/showcase/assets/checkbox-BEyESyQ2.js +1 -0
  492. package/dist/showcase/assets/chevron-down-mjLUdP6b.js +1 -0
  493. package/dist/showcase/assets/chevron-left-DOofVtEd.js +1 -0
  494. package/dist/showcase/assets/chevron-up-BJk6z8Fg.js +1 -0
  495. package/dist/showcase/assets/chevrons-up-down-C-9zUpl_.js +1 -0
  496. package/dist/showcase/assets/circle-OmLq29jq.js +1 -0
  497. package/dist/showcase/assets/circle-alert-DSpR2pdl.js +1 -0
  498. package/dist/showcase/assets/circle-check-BjuHEm7p.js +1 -0
  499. package/dist/showcase/assets/circle-check-big-BuYdgE3Q.js +1 -0
  500. package/dist/showcase/assets/circle-dot-DlYGMuaF.js +1 -0
  501. package/dist/showcase/assets/circle-question-mark-BlgRDDu3.js +1 -0
  502. package/dist/showcase/assets/circle-x-BavQ4wuc.js +1 -0
  503. package/dist/showcase/assets/clock-3-CzeN1Iwk.js +1 -0
  504. package/dist/showcase/assets/clock-CZYS08d1.js +1 -0
  505. package/dist/showcase/assets/code-xml-D4NwoTpD.js +1 -0
  506. package/dist/showcase/assets/collapsible-BtawbO_2.js +1 -0
  507. package/dist/showcase/assets/collapsible-CJXE3z1T.js +27 -0
  508. package/dist/showcase/assets/collapsible-ws3VKPg9.js +1 -0
  509. package/dist/showcase/assets/combobox-Btpk7-vH.js +685 -0
  510. package/dist/showcase/assets/command-CoiVI2_b.js +1 -0
  511. package/dist/showcase/assets/command-Dkn9XqF2.js +1 -0
  512. package/dist/showcase/assets/comment-composer-BNnVQo1O.js +1 -0
  513. package/dist/showcase/assets/comment-item-BiIgcrPQ.js +1 -0
  514. package/dist/showcase/assets/comments-CvzWz23L.js +357 -0
  515. package/dist/showcase/assets/commerce-CBHLQF8q.js +19 -0
  516. package/dist/showcase/assets/commerce-address-card-Bqm0FQkG.js +33 -0
  517. package/dist/showcase/assets/commerce-cart-summary-BtGCOEun.js +43 -0
  518. package/dist/showcase/assets/commerce-coupon-input-I3FY6pgV.js +11 -0
  519. package/dist/showcase/assets/commerce-discount-stack-CWqyobuL.js +17 -0
  520. package/dist/showcase/assets/commerce-inventory-section-rBtMNLTt.js +123 -0
  521. package/dist/showcase/assets/commerce-loyalty-points-ne7c2ObQ.js +19 -0
  522. package/dist/showcase/assets/commerce-order-status-eLtUC1iE.js +21 -0
  523. package/dist/showcase/assets/commerce-payment-method-B3yFyhpS.js +17 -0
  524. package/dist/showcase/assets/commerce-refund-status-C1pzTSus.js +17 -0
  525. package/dist/showcase/assets/commerce-seo-listing-CBk_c8ru.js +61 -0
  526. package/dist/showcase/assets/commerce-shipment-tracking-auiKGGyV.js +24 -0
  527. package/dist/showcase/assets/commerce-subscription-summary-BCX4WxbS.js +25 -0
  528. package/dist/showcase/assets/commerce-tax-breakdown-D4F5dOjL.js +19 -0
  529. package/dist/showcase/assets/commerce-upcoming-booking-qlWKp0kq.js +20 -0
  530. package/dist/showcase/assets/commerce-voucher-entry-CqCuoKHq.js +19 -0
  531. package/dist/showcase/assets/composite-DeYDU7hg.js +1 -0
  532. package/dist/showcase/assets/conditional-rendering-CFHxzngX.js +1 -0
  533. package/dist/showcase/assets/contact-card-CxVeuwp_.js +65 -0
  534. package/dist/showcase/assets/content-container-CJN01OtO.js +1 -0
  535. package/dist/showcase/assets/copyable-DajG-Sgx.js +1 -0
  536. package/dist/showcase/assets/copyable-zOzqOOBl.js +96 -0
  537. package/dist/showcase/assets/course-card-DO8z-KeM.js +77 -0
  538. package/dist/showcase/assets/cpu-C8IgjvoP.js +1 -0
  539. package/dist/showcase/assets/credit-card-XYEEHtzk.js +1 -0
  540. package/dist/showcase/assets/css-variables-BglvDaVO.js +1223 -0
  541. package/dist/showcase/assets/currency-Bso6kejw.js +148 -0
  542. package/dist/showcase/assets/dark-surfaces-5WTjzxYN.js +90 -0
  543. package/dist/showcase/assets/data-view-B7uRWXOO.js +4 -0
  544. package/dist/showcase/assets/data-view-C4bGuOlY.js +124 -0
  545. package/dist/showcase/assets/database-CZLgFKRy.js +1 -0
  546. package/dist/showcase/assets/date-block-BicWaKPj.js +1 -0
  547. package/dist/showcase/assets/date-block-yRFY8Ne5.js +1 -0
  548. package/dist/showcase/assets/date-picker-CskCoiwf.js +1 -0
  549. package/dist/showcase/assets/date-pickers-fcqdsvef.js +73 -0
  550. package/dist/showcase/assets/dense-info-Dg38xVsF.js +106 -0
  551. package/dist/showcase/assets/design-system-consistency-DFa3RNWm.js +264 -0
  552. package/dist/showcase/assets/dialog-C4fhqXD0.js +1 -0
  553. package/dist/showcase/assets/dialog-CN_gfVV2.js +1 -0
  554. package/dist/showcase/assets/dialog-CoJdLYZ8.js +1 -0
  555. package/dist/showcase/assets/display-utilities-DB0eXAdH.js +4 -0
  556. package/dist/showcase/assets/display-utilities.examples-ez3DfdgN.js +309 -0
  557. package/dist/showcase/assets/dist-5H2NtsLp.js +45 -0
  558. package/dist/showcase/assets/dist-SJMpFlRc.js +1 -0
  559. package/dist/showcase/assets/dollar-sign-LBLhl0Y2.js +1 -0
  560. package/dist/showcase/assets/download-BkOWnQEj.js +1 -0
  561. package/dist/showcase/assets/dropdown-menu-5yqchTEF.js +1 -0
  562. package/dist/showcase/assets/dropzone-CJHqIcHB.js +1 -0
  563. package/dist/showcase/assets/earth-BGrx2u2i.js +1 -0
  564. package/dist/showcase/assets/ellipsis-Dumpj4aE.js +1 -0
  565. package/dist/showcase/assets/ellipsis-vertical-h1O9pibc.js +1 -0
  566. package/dist/showcase/assets/empty-Cc8JP5--.js +1 -0
  567. package/dist/showcase/assets/empty-item-C-v-Akyi.js +49 -0
  568. package/dist/showcase/assets/empty-state-B7BQDoeL.js +1 -0
  569. package/dist/showcase/assets/empty-state-BSvZNFnQ.js +190 -0
  570. package/dist/showcase/assets/enhanced-activities-D7g7ZD9m.js +357 -0
  571. package/dist/showcase/assets/enhanced-combobox-4Olgu--e.js +1 -0
  572. package/dist/showcase/assets/esm-CFFDcW-Z.js +2 -0
  573. package/dist/showcase/assets/event-calendar-vdFWcI49.js +138 -0
  574. package/dist/showcase/assets/event-log-BbHM_3Ko.js +330 -0
  575. package/dist/showcase/assets/example-BsDQngs7.js +1 -0
  576. package/dist/showcase/assets/external-link-BvVwsJxR.js +1 -0
  577. package/dist/showcase/assets/eye-CAeo-GNe.js +1 -0
  578. package/dist/showcase/assets/feature-announcement-7hZGrJd6.js +34 -0
  579. package/dist/showcase/assets/file-D4d3b9bx.js +1 -0
  580. package/dist/showcase/assets/file-text-C59ToXmU.js +1 -0
  581. package/dist/showcase/assets/filter-layout-BjoG6qxP.js +1 -0
  582. package/dist/showcase/assets/filters-CrE_UGbo.js +139 -0
  583. package/dist/showcase/assets/fixtures-ClOCQD2a.js +1 -0
  584. package/dist/showcase/assets/flag-CuF52WEl.js +1 -0
  585. package/dist/showcase/assets/folder-open-BLLtgh4E.js +1 -0
  586. package/dist/showcase/assets/form-field-D5kwgD4P.js +1 -0
  587. package/dist/showcase/assets/form-sizing-Bv0A0Oi0.js +1 -0
  588. package/dist/showcase/assets/format-LvvHefMj.js +1 -0
  589. package/dist/showcase/assets/forms-Ck6hPzLP.js +915 -0
  590. package/dist/showcase/assets/funnel-Bvp5cFZt.js +1 -0
  591. package/dist/showcase/assets/generic-Cownd_Wk.js +1 -0
  592. package/dist/showcase/assets/getPseudoElementBounds-CPnjAO3K.js +1 -0
  593. package/dist/showcase/assets/gift-BCQpmV33.js +1 -0
  594. package/dist/showcase/assets/giftcard-cards-B_78Meny.js +85 -0
  595. package/dist/showcase/assets/git-branch-r0dDGCKy.js +1 -0
  596. package/dist/showcase/assets/global-search-DD9cGOt5.js +1 -0
  597. package/dist/showcase/assets/global-search-fTKzzx8k.js +215 -0
  598. package/dist/showcase/assets/globe-RF5bwiar.js +1 -0
  599. package/dist/showcase/assets/gradient-card-BDJes3UK.js +58 -0
  600. package/dist/showcase/assets/grip-vertical-qqe2NqfZ.js +1 -0
  601. package/dist/showcase/assets/hash-D9_KYvHs.js +1 -0
  602. package/dist/showcase/assets/header-XNCAB6Rs.js +1 -0
  603. package/dist/showcase/assets/header-notifications-BdWsVoN3.js +1 -0
  604. package/dist/showcase/assets/heart-C56rAanb.js +1 -0
  605. package/dist/showcase/assets/hooks-fDydjf6M.js +220 -0
  606. package/dist/showcase/assets/house-DbYM6er_.js +1 -0
  607. package/dist/showcase/assets/icon-badge-DWQE6dAm.js +37 -0
  608. package/dist/showcase/assets/icon-badge-ruuI6tt0.js +1 -0
  609. package/dist/showcase/assets/icon-size-BHn0d6Zp.js +1 -0
  610. package/dist/showcase/assets/image-DCpC2weW.js +1 -0
  611. package/dist/showcase/assets/inbox-cvR2MbZq.js +1 -0
  612. package/dist/showcase/assets/index-B4sKWDcN.js +10 -0
  613. package/dist/showcase/assets/index-Dy3INIq2.css +2 -0
  614. package/dist/showcase/assets/inertValue-DhXA8ytu.js +1 -0
  615. package/dist/showcase/assets/info-DXwnIz56.js +1 -0
  616. package/dist/showcase/assets/inline-stat-C9Syz6in.js +1 -0
  617. package/dist/showcase/assets/inline-stat-CDcWILUM.js +15 -0
  618. package/dist/showcase/assets/input-CLQIEOQ4.js +1 -0
  619. package/dist/showcase/assets/input-D70ed8oB.js +1 -0
  620. package/dist/showcase/assets/input-group-CMJ2yUuD.js +47 -0
  621. package/dist/showcase/assets/input-group-DwZov3Y6.js +1 -0
  622. package/dist/showcase/assets/inputs-DQWbPvC8.js +155 -0
  623. package/dist/showcase/assets/installation-B2BcSkJr.js +134 -0
  624. package/dist/showcase/assets/invoice-header-Ds4A6mLs.js +36 -0
  625. package/dist/showcase/assets/invoice-items-LFYeS0eR.js +36 -0
  626. package/dist/showcase/assets/invoice-mini-BMVm8x43.js +14 -0
  627. package/dist/showcase/assets/invoice-table-BVZ-PtSC.js +30 -0
  628. package/dist/showcase/assets/isSameDay-BYK9pmDX.js +1 -0
  629. package/dist/showcase/assets/isToday-B3-xb910.js +1 -0
  630. package/dist/showcase/assets/italic-CPSVPc63.js +1 -0
  631. package/dist/showcase/assets/item-KsGEgVjl.js +1 -0
  632. package/dist/showcase/assets/item-WOhHNpnr.js +1 -0
  633. package/dist/showcase/assets/item-avTNp1z7.js +140 -0
  634. package/dist/showcase/assets/kanban-DwVW3Lab.js +188 -0
  635. package/dist/showcase/assets/key-round-CNEqnMGG.js +1 -0
  636. package/dist/showcase/assets/label-BZzl85ev.js +1 -0
  637. package/dist/showcase/assets/languages-BWquWXSu.js +1 -0
  638. package/dist/showcase/assets/layers-hYbCFSpT.js +1 -0
  639. package/dist/showcase/assets/layout-app-shell-BRLO7lFp.js +608 -0
  640. package/dist/showcase/assets/layout-auth-ysobcsYs.js +790 -0
  641. package/dist/showcase/assets/layout-containers-BoVYkBOk.js +141 -0
  642. package/dist/showcase/assets/layout-header-BnkgzPgS.js +203 -0
  643. package/dist/showcase/assets/layout-page-CdzQQr2_.js +315 -0
  644. package/dist/showcase/assets/layout-primitives-BXP_nFQX.js +34 -0
  645. package/dist/showcase/assets/layout-sidebar-tPHppANn.js +224 -0
  646. package/dist/showcase/assets/layout-users-DgChX6ig.js +117 -0
  647. package/dist/showcase/assets/layout-workspace-u1kkLDCd.js +191 -0
  648. package/dist/showcase/assets/lib-VG1Lf4Lk.js +1 -0
  649. package/dist/showcase/assets/list-checks-CUXbiTmk.js +1 -0
  650. package/dist/showcase/assets/lock-BwI_fNQW.js +1 -0
  651. package/dist/showcase/assets/lock-keyhole-DKi16lNp.js +1 -0
  652. package/dist/showcase/assets/mail-BlH-8y33.js +1 -0
  653. package/dist/showcase/assets/mail-check-DrNT7RWT.js +1 -0
  654. package/dist/showcase/assets/map-BKztQq4-.js +124 -0
  655. package/dist/showcase/assets/map-pin-BwGJCGY8.js +1 -0
  656. package/dist/showcase/assets/media-library-CUI_IPkM.js +699 -0
  657. package/dist/showcase/assets/mention-inline-suggestions-BIIRKRpU.js +1 -0
  658. package/dist/showcase/assets/mentions-CTkcQNFc.js +138 -0
  659. package/dist/showcase/assets/menus-DilZRggQ.js +171 -0
  660. package/dist/showcase/assets/message-square-Cjuladix.js +1 -0
  661. package/dist/showcase/assets/metadata-list-C6CF85o9.js +1 -0
  662. package/dist/showcase/assets/metadata-list-PqngP9QU.js +286 -0
  663. package/dist/showcase/assets/metric-C5Wrr90_.js +1 -0
  664. package/dist/showcase/assets/metric-bar-CIesI_gw.js +1 -0
  665. package/dist/showcase/assets/metric-grid-FlL7atag.js +1 -0
  666. package/dist/showcase/assets/metric-trend-chip-DxTiaCTB.js +1 -0
  667. package/dist/showcase/assets/metrics-analytics-bar-YabnSIOP.js +44 -0
  668. package/dist/showcase/assets/metrics-analytics-cards-Buas8exV.js +50 -0
  669. package/dist/showcase/assets/metrics-comparison-Jx1WGPZL.js +76 -0
  670. package/dist/showcase/assets/metrics-heatmap-C5cB95P9.js +27 -0
  671. package/dist/showcase/assets/metrics-inline-badge-D7r40gFm.js +17 -0
  672. package/dist/showcase/assets/metrics-kpi-row-CweMAqSm.js +31 -0
  673. package/dist/showcase/assets/metrics-micro-grid-UUa2fUGF.js +42 -0
  674. package/dist/showcase/assets/metrics-overview-eGnNPvwF.js +192 -0
  675. package/dist/showcase/assets/metrics-stat-cards-CEcX0zqZ.js +54 -0
  676. package/dist/showcase/assets/minus-CVVsGq91.js +1 -0
  677. package/dist/showcase/assets/money-display-Chu4t6MY.js +1 -0
  678. package/dist/showcase/assets/money-display-DNs6PXCm.js +3 -0
  679. package/dist/showcase/assets/month-year-picker-B0odiuhf.js +1 -0
  680. package/dist/showcase/assets/navigation-CQwt1f4b.js +90 -0
  681. package/dist/showcase/assets/navigation-KQxXtiL6.js +231 -0
  682. package/dist/showcase/assets/navigation-extras-2uJbGPhJ.js +43 -0
  683. package/dist/showcase/assets/notification-banner-Cx1Qm0ij.js +1 -0
  684. package/dist/showcase/assets/onboarding-checklist-CAHajXzP.js +119 -0
  685. package/dist/showcase/assets/overflow-tab-bar-gNULx5Wr.js +1 -0
  686. package/dist/showcase/assets/overlays-CaSVa-L2.js +159 -0
  687. package/dist/showcase/assets/overlays-zjTanrAP.js +408 -0
  688. package/dist/showcase/assets/overview-EZ_RMkeD.js +184 -0
  689. package/dist/showcase/assets/package-CqQQqj6Y.js +1 -0
  690. package/dist/showcase/assets/package-check-Nqr5Lv95.js +1 -0
  691. package/dist/showcase/assets/page-BTXFFFwT.js +1 -0
  692. package/dist/showcase/assets/page-action-button-NJqE-qP0.js +1 -0
  693. package/dist/showcase/assets/page-header-AFTuoGVw.js +1 -0
  694. package/dist/showcase/assets/pagination-B1Ewc7Co.js +1 -0
  695. package/dist/showcase/assets/pagination-DOdLcTiT.js +42 -0
  696. package/dist/showcase/assets/paperclip-D0oBI19t.js +1 -0
  697. package/dist/showcase/assets/password-input-C5MrNrHm.js +1 -0
  698. package/dist/showcase/assets/pencil-DdCEPDLe.js +1 -0
  699. package/dist/showcase/assets/phone-BdGmQ_eI.js +1 -0
  700. package/dist/showcase/assets/placeholder-pattern-BnyJukU0.js +1 -0
  701. package/dist/showcase/assets/plus-Dp_nZNjk.js +1 -0
  702. package/dist/showcase/assets/popover-BP4R2w67.js +1 -0
  703. package/dist/showcase/assets/popover-DfGXC2pN.js +1 -0
  704. package/dist/showcase/assets/popover-menu-DGkCA4YC.js +1 -0
  705. package/dist/showcase/assets/product-empty-state-CKylTX_h.js +1 -0
  706. package/dist/showcase/assets/product-option-action-menu-vqslODBe.js +1 -0
  707. package/dist/showcase/assets/product-rows-CWy63Dk5.js +1 -0
  708. package/dist/showcase/assets/product-structure-card-EJY038tP.js +1 -0
  709. package/dist/showcase/assets/product-variant-action-menu-CnRJscP3.js +1 -0
  710. package/dist/showcase/assets/products-jpCjHLbZ.js +61 -0
  711. package/dist/showcase/assets/progress-D19PRprP.js +1 -0
  712. package/dist/showcase/assets/progress-UbtWRfF2.js +18 -0
  713. package/dist/showcase/assets/progress-twHfoY8k.js +1 -0
  714. package/dist/showcase/assets/props-table-aynAz90t.js +1 -0
  715. package/dist/showcase/assets/props.generated-IUhT2lh_.json +42950 -0
  716. package/dist/showcase/assets/qr-code-ywR6kVzD.js +1 -0
  717. package/dist/showcase/assets/quote-BFMPQa3L.js +1 -0
  718. package/dist/showcase/assets/receipt-CcTseXcy.js +1 -0
  719. package/dist/showcase/assets/receipt-text-C9BMAbTL.js +1 -0
  720. package/dist/showcase/assets/refinement-guide-lotMKye4.js +189 -0
  721. package/dist/showcase/assets/refresh-cw-DpfoVhbc.js +1 -0
  722. package/dist/showcase/assets/resolveValueLabel-mzTN-8j9.js +1 -0
  723. package/dist/showcase/assets/resource-CwHVDrOk.js +1 -0
  724. package/dist/showcase/assets/resource-kPziVtVy.js +139 -0
  725. package/dist/showcase/assets/resource-selector-card-xIysiHOg.js +43 -0
  726. package/dist/showcase/assets/rich-text-editor-Bi6stpAW.js +124 -0
  727. package/dist/showcase/assets/rich-text-editor-DggGI4Dj.js +143 -0
  728. package/dist/showcase/assets/rotate-ccw-Uau0Jm3_.js +1 -0
  729. package/dist/showcase/assets/route-Dj29lOBc.js +1 -0
  730. package/dist/showcase/assets/save-j-PKUm-B.js +1 -0
  731. package/dist/showcase/assets/schema-form-D4kfmM1o.js +327 -0
  732. package/dist/showcase/assets/scroll-area-CK1S6JpQ.js +1 -0
  733. package/dist/showcase/assets/scroll-area-Di7TDfFD.js +32 -0
  734. package/dist/showcase/assets/section-C_rLy6Zn.js +1 -0
  735. package/dist/showcase/assets/select-BRC14Sd3.js +1 -0
  736. package/dist/showcase/assets/select-J0hPSc5B.js +1 -0
  737. package/dist/showcase/assets/send-BnVbRsaN.js +1 -0
  738. package/dist/showcase/assets/separator-7gHhV7ed.js +1 -0
  739. package/dist/showcase/assets/separator-CjWigMul.js +1 -0
  740. package/dist/showcase/assets/separator-Dpo134G3.js +28 -0
  741. package/dist/showcase/assets/separator-JYQ5rY8E.js +1 -0
  742. package/dist/showcase/assets/settings-2-D06IRW2d.js +1 -0
  743. package/dist/showcase/assets/settings-YDwquOPS.js +1 -0
  744. package/dist/showcase/assets/sheet-O9T8bfRr.js +1 -0
  745. package/dist/showcase/assets/shield-Cebk5nXH.js +1 -0
  746. package/dist/showcase/assets/shield-alert-BldSpQ1t.js +1 -0
  747. package/dist/showcase/assets/shield-check-CNudpzdR.js +1 -0
  748. package/dist/showcase/assets/shopping-bag-BuHsmxnN.js +1 -0
  749. package/dist/showcase/assets/showcase-B1BPgzRP.js +132 -0
  750. package/dist/showcase/assets/sidebar-DPVgEwE0.js +1 -0
  751. package/dist/showcase/assets/sidebar.context-CYk51BQ5.js +1 -0
  752. package/dist/showcase/assets/skeleton-CrB6dGV4.js +29 -0
  753. package/dist/showcase/assets/skeleton-DMWrHdVi.js +1 -0
  754. package/dist/showcase/assets/skeleton-IBZSxxTq.js +1 -0
  755. package/dist/showcase/assets/skeleton-OK5SgmlA.js +1 -0
  756. package/dist/showcase/assets/slider-DMLIlQeO.js +1 -0
  757. package/dist/showcase/assets/smart-card-CwDYx0xj.js +1 -0
  758. package/dist/showcase/assets/sonner-Dpe1Nwfb.js +22 -0
  759. package/dist/showcase/assets/sortable.esm-BSC2lHxr.js +5 -0
  760. package/dist/showcase/assets/sparkles-BDnbTUMq.js +1 -0
  761. package/dist/showcase/assets/spinner-BZ0h-j9y.js +49 -0
  762. package/dist/showcase/assets/spinner-TNaSAQh7.js +30 -0
  763. package/dist/showcase/assets/spinner-k76a4i_M.js +1 -0
  764. package/dist/showcase/assets/square-pen-Cn-sFtCo.js +1 -0
  765. package/dist/showcase/assets/stacked-avatars-Ds8eV_Nx.js +1 -0
  766. package/dist/showcase/assets/star-BzQGhFDT.js +1 -0
  767. package/dist/showcase/assets/startOfDay-BfIUGWW-.js +1 -0
  768. package/dist/showcase/assets/styles-BleHZ-uX.js +1 -0
  769. package/dist/showcase/assets/suggestions-CsrJSY__.js +126 -0
  770. package/dist/showcase/assets/support-rail-C_fc_C1j.js +26 -0
  771. package/dist/showcase/assets/switch-BEfD8lic.js +1 -0
  772. package/dist/showcase/assets/switch-BOlIXIn9.js +1 -0
  773. package/dist/showcase/assets/switch-card-CCJ-MaRI.js +1 -0
  774. package/dist/showcase/assets/sync-vACCm2ND.js +124 -0
  775. package/dist/showcase/assets/table-CeZy8iT0.js +686 -0
  776. package/dist/showcase/assets/table-DPpHEvR_.js +1 -0
  777. package/dist/showcase/assets/table-actions-C9J5piiU.js +1 -0
  778. package/dist/showcase/assets/tabs-Ca6ldTWi.js +1 -0
  779. package/dist/showcase/assets/tabs-DGP5RvNm.js +19 -0
  780. package/dist/showcase/assets/tags-input-BOemEMZS.js +1 -0
  781. package/dist/showcase/assets/text-button-C8qZqcCy.js +1 -0
  782. package/dist/showcase/assets/text-link-BFYPeXTq.js +1 -0
  783. package/dist/showcase/assets/textarea-DcCHHuP-.js +1 -0
  784. package/dist/showcase/assets/textarea-RUqV9hNm.js +1 -0
  785. package/dist/showcase/assets/throttle-alert-Sf7FjTvh.js +1 -0
  786. package/dist/showcase/assets/timelines-nQ8shLIn.js +200 -0
  787. package/dist/showcase/assets/toggle-group-k5nqOfUW.js +1 -0
  788. package/dist/showcase/assets/toggles-E80ufOk5.js +71 -0
  789. package/dist/showcase/assets/toggles-group-vaJ63gg9.js +32 -0
  790. package/dist/showcase/assets/tooltip-DIvBe7hb.js +31 -0
  791. package/dist/showcase/assets/trash-2-C-6T17-B.js +1 -0
  792. package/dist/showcase/assets/trending-up-DRyRbFnA.js +1 -0
  793. package/dist/showcase/assets/truck-BE6OFjJs.js +1 -0
  794. package/dist/showcase/assets/typography-i6Zhj3TO.js +223 -0
  795. package/dist/showcase/assets/ui-badge-MBQsz2Mn.js +28 -0
  796. package/dist/showcase/assets/ui-card-jaEeRDe5.js +30 -0
  797. package/dist/showcase/assets/ui-table-CbmOEWVu.js +42 -0
  798. package/dist/showcase/assets/upload-tray-D4aE56cX.js +138 -0
  799. package/dist/showcase/assets/use-layout-link-DpqFiDf-.js +1 -0
  800. package/dist/showcase/assets/useAriaLabelledBy-DSKQpAlQ.js +1 -0
  801. package/dist/showcase/assets/useCollapsiblePanel-DL6IpVQS.js +1 -0
  802. package/dist/showcase/assets/useCompositeItem-jckozrpu.js +1 -0
  803. package/dist/showcase/assets/useCompositeListItem-Ce0eZtsp.js +1 -0
  804. package/dist/showcase/assets/useLabelableId-Bs8clfkJ.js +1 -0
  805. package/dist/showcase/assets/useOpenInteractionType-KBhpVaur.js +1 -0
  806. package/dist/showcase/assets/useRender-Bn5cjIfs.js +1 -0
  807. package/dist/showcase/assets/useTriggerFocusGuards-D5Cl055z.js +1 -0
  808. package/dist/showcase/assets/useValueChanged-B-czUWmg.js +1 -0
  809. package/dist/showcase/assets/user-C7ORJkSr.js +1 -0
  810. package/dist/showcase/assets/user-plus-O410ITvy.js +1 -0
  811. package/dist/showcase/assets/users-BlcUaVEY.js +1 -0
  812. package/dist/showcase/assets/variant-details-BJ0OtpeL.js +50 -0
  813. package/dist/showcase/assets/variant-management-pTZ83MM_.js +209 -0
  814. package/dist/showcase/assets/vendor-profile-F2EP-AGx.js +37 -0
  815. package/dist/showcase/assets/video-fYZEPex_.js +1 -0
  816. package/dist/showcase/assets/visually-hidden-C1KAHG63.js +1 -0
  817. package/dist/showcase/assets/weight-input-_wl5mPGA.js +1 -0
  818. package/dist/showcase/assets/wrench-BzqNpztP.js +1 -0
  819. package/dist/showcase/assets/x-C5_SzMQM.js +1 -0
  820. package/dist/showcase/assets/zap-DdInHaAD.js +1 -0
  821. package/dist/showcase/index.html +2 -2
  822. package/dist/style.css +1 -1
  823. package/package.json +1 -1
  824. package/src/css/tokens/components.css +17 -2
  825. package/src/css/tokens/foundation.css +4 -2
  826. package/dist/_shared/accordion-8B4OFqiT.cjs +0 -2
  827. package/dist/_shared/accordion-8B4OFqiT.cjs.map +0 -1
  828. package/dist/_shared/accordion-DlpTSZ3p.js +0 -135
  829. package/dist/_shared/accordion-DlpTSZ3p.js.map +0 -1
  830. package/dist/_shared/action-menu-BYrYdpkR.cjs +0 -2
  831. package/dist/_shared/action-menu-BYrYdpkR.cjs.map +0 -1
  832. package/dist/_shared/action-menu-CYwMZX-b.js +0 -96
  833. package/dist/_shared/action-menu-CYwMZX-b.js.map +0 -1
  834. package/dist/_shared/ai-artifact-Cv8VBibf.cjs +0 -3
  835. package/dist/_shared/ai-artifact-Cv8VBibf.cjs.map +0 -1
  836. package/dist/_shared/ai-artifact-DwfXQuh4.js +0 -1099
  837. package/dist/_shared/ai-artifact-DwfXQuh4.js.map +0 -1
  838. package/dist/_shared/auth-Cz5ci18c.cjs +0 -2
  839. package/dist/_shared/auth-Cz5ci18c.cjs.map +0 -1
  840. package/dist/_shared/auth-DDWsgFUL.js +0 -643
  841. package/dist/_shared/auth-DDWsgFUL.js.map +0 -1
  842. package/dist/_shared/badge-C65rt1M9.cjs +0 -2
  843. package/dist/_shared/badge-C65rt1M9.cjs.map +0 -1
  844. package/dist/_shared/badge-r8ae66Vd.js +0 -110
  845. package/dist/_shared/badge-r8ae66Vd.js.map +0 -1
  846. package/dist/_shared/breadcrumbs-CuT0YIfo.js +0 -105
  847. package/dist/_shared/breadcrumbs-CuT0YIfo.js.map +0 -1
  848. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs +0 -2
  849. package/dist/_shared/breadcrumbs-jNzlYqS9.cjs.map +0 -1
  850. package/dist/_shared/button-Be2ayMxF.js +0 -192
  851. package/dist/_shared/button-Be2ayMxF.js.map +0 -1
  852. package/dist/_shared/button-CfQtOuBK.cjs +0 -2
  853. package/dist/_shared/button-CfQtOuBK.cjs.map +0 -1
  854. package/dist/_shared/buttons-DABiSx6N.cjs +0 -2
  855. package/dist/_shared/buttons-DABiSx6N.cjs.map +0 -1
  856. package/dist/_shared/buttons-DYQqQPpk.js +0 -137
  857. package/dist/_shared/buttons-DYQqQPpk.js.map +0 -1
  858. package/dist/_shared/card-radio-group-DKhZhBFV.cjs +0 -2
  859. package/dist/_shared/card-radio-group-DKhZhBFV.cjs.map +0 -1
  860. package/dist/_shared/card-radio-group-DRjmLN5s.js +0 -150
  861. package/dist/_shared/card-radio-group-DRjmLN5s.js.map +0 -1
  862. package/dist/_shared/cards-BJctT9KD.js +0 -428
  863. package/dist/_shared/cards-BJctT9KD.js.map +0 -1
  864. package/dist/_shared/cards-m03XN10f.cjs +0 -2
  865. package/dist/_shared/cards-m03XN10f.cjs.map +0 -1
  866. package/dist/_shared/combobox-BdBpeD3C.cjs +0 -2
  867. package/dist/_shared/combobox-BdBpeD3C.cjs.map +0 -1
  868. package/dist/_shared/combobox-D9tU_83-.js +0 -954
  869. package/dist/_shared/combobox-D9tU_83-.js.map +0 -1
  870. package/dist/_shared/command-BbJB0pjP.cjs +0 -2
  871. package/dist/_shared/command-BbJB0pjP.cjs.map +0 -1
  872. package/dist/_shared/command-IP2wy_HN.js +0 -39
  873. package/dist/_shared/command-IP2wy_HN.js.map +0 -1
  874. package/dist/_shared/comments-DAzpeuQq.cjs +0 -2
  875. package/dist/_shared/comments-DAzpeuQq.cjs.map +0 -1
  876. package/dist/_shared/comments-DzZaKP9x.js +0 -952
  877. package/dist/_shared/comments-DzZaKP9x.js.map +0 -1
  878. package/dist/_shared/containers-CB7zaAvN.cjs +0 -2
  879. package/dist/_shared/containers-CB7zaAvN.cjs.map +0 -1
  880. package/dist/_shared/containers-CLBmhGfs.js +0 -48
  881. package/dist/_shared/containers-CLBmhGfs.js.map +0 -1
  882. package/dist/_shared/copyable-BJYx2SlN.js +0 -38
  883. package/dist/_shared/copyable-BJYx2SlN.js.map +0 -1
  884. package/dist/_shared/copyable-DiDEjp8Z.cjs +0 -2
  885. package/dist/_shared/copyable-DiDEjp8Z.cjs.map +0 -1
  886. package/dist/_shared/data-display-DQUUEzCx.cjs +0 -2
  887. package/dist/_shared/data-display-DQUUEzCx.cjs.map +0 -1
  888. package/dist/_shared/data-display-LlvMEFTK.js +0 -1878
  889. package/dist/_shared/data-display-LlvMEFTK.js.map +0 -1
  890. package/dist/_shared/date-picker-CrC-lHyF.cjs +0 -2
  891. package/dist/_shared/date-picker-CrC-lHyF.cjs.map +0 -1
  892. package/dist/_shared/date-picker-DbYBek-b.js +0 -1361
  893. package/dist/_shared/date-picker-DbYBek-b.js.map +0 -1
  894. package/dist/_shared/date-pickers-9AU8YQK2.js +0 -329
  895. package/dist/_shared/date-pickers-9AU8YQK2.js.map +0 -1
  896. package/dist/_shared/date-pickers-DUEwCWig.cjs +0 -2
  897. package/dist/_shared/date-pickers-DUEwCWig.cjs.map +0 -1
  898. package/dist/_shared/display-BqoPOdof.cjs +0 -2
  899. package/dist/_shared/display-BqoPOdof.cjs.map +0 -1
  900. package/dist/_shared/display-CQoSwU74.js +0 -986
  901. package/dist/_shared/display-CQoSwU74.js.map +0 -1
  902. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs +0 -2
  903. package/dist/_shared/dropdown-menu-CHQzQWUK.cjs.map +0 -1
  904. package/dist/_shared/dropdown-menu-CoWmrjYX.js +0 -147
  905. package/dist/_shared/dropdown-menu-CoWmrjYX.js.map +0 -1
  906. package/dist/_shared/form-sizing-DJus3nK3.cjs +0 -2
  907. package/dist/_shared/form-sizing-DJus3nK3.cjs.map +0 -1
  908. package/dist/_shared/form-sizing-DWjJsQSR.js +0 -42
  909. package/dist/_shared/form-sizing-DWjJsQSR.js.map +0 -1
  910. package/dist/_shared/forms-CNh-S9FK.cjs +0 -2
  911. package/dist/_shared/forms-CNh-S9FK.cjs.map +0 -1
  912. package/dist/_shared/forms-DIz3SCA9.js +0 -3534
  913. package/dist/_shared/forms-DIz3SCA9.js.map +0 -1
  914. package/dist/_shared/header-Bs61tQla.js +0 -447
  915. package/dist/_shared/header-Bs61tQla.js.map +0 -1
  916. package/dist/_shared/header-D01oOxna.cjs +0 -2
  917. package/dist/_shared/header-D01oOxna.cjs.map +0 -1
  918. package/dist/_shared/hooks-ACnpaIli.js +0 -95
  919. package/dist/_shared/hooks-ACnpaIli.js.map +0 -1
  920. package/dist/_shared/hooks-B7khuHkk.cjs +0 -2
  921. package/dist/_shared/hooks-B7khuHkk.cjs.map +0 -1
  922. package/dist/_shared/input-CzJzVyQ0.js +0 -182
  923. package/dist/_shared/input-CzJzVyQ0.js.map +0 -1
  924. package/dist/_shared/input-Dvvmn96E.cjs +0 -2
  925. package/dist/_shared/input-Dvvmn96E.cjs.map +0 -1
  926. package/dist/_shared/item-CVjjpHQd.js +0 -226
  927. package/dist/_shared/item-CVjjpHQd.js.map +0 -1
  928. package/dist/_shared/item-ChHblHhR.cjs +0 -2
  929. package/dist/_shared/item-ChHblHhR.cjs.map +0 -1
  930. package/dist/_shared/layout-CGi5w1mo.js +0 -268
  931. package/dist/_shared/layout-CGi5w1mo.js.map +0 -1
  932. package/dist/_shared/layout-ccVwjUG8.cjs +0 -2
  933. package/dist/_shared/layout-ccVwjUG8.cjs.map +0 -1
  934. package/dist/_shared/mentions-Cg_4vFxd.cjs +0 -2
  935. package/dist/_shared/mentions-Cg_4vFxd.cjs.map +0 -1
  936. package/dist/_shared/mentions-Ci9RFTfw.js +0 -506
  937. package/dist/_shared/mentions-Ci9RFTfw.js.map +0 -1
  938. package/dist/_shared/money-display-BFk9Gu21.cjs +0 -2
  939. package/dist/_shared/money-display-BFk9Gu21.cjs.map +0 -1
  940. package/dist/_shared/money-display-DpuLnsK2.js +0 -198
  941. package/dist/_shared/money-display-DpuLnsK2.js.map +0 -1
  942. package/dist/_shared/navigation-C1QN2-Vq.cjs +0 -2
  943. package/dist/_shared/navigation-C1QN2-Vq.cjs.map +0 -1
  944. package/dist/_shared/navigation-CMrLO8v5.js +0 -436
  945. package/dist/_shared/navigation-CMrLO8v5.js.map +0 -1
  946. package/dist/_shared/overlays-BJLczwpz.js +0 -735
  947. package/dist/_shared/overlays-BJLczwpz.js.map +0 -1
  948. package/dist/_shared/overlays-DbaPLT67.cjs +0 -2
  949. package/dist/_shared/overlays-DbaPLT67.cjs.map +0 -1
  950. package/dist/_shared/popover-menu-D_t6rCvN.cjs +0 -2
  951. package/dist/_shared/popover-menu-D_t6rCvN.cjs.map +0 -1
  952. package/dist/_shared/popover-menu-f2O6R_27.js +0 -93
  953. package/dist/_shared/popover-menu-f2O6R_27.js.map +0 -1
  954. package/dist/_shared/rich-text-editor-DmZHbsms.js +0 -620
  955. package/dist/_shared/rich-text-editor-DmZHbsms.js.map +0 -1
  956. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs +0 -2
  957. package/dist/_shared/rich-text-editor-DqUU-H7i.cjs.map +0 -1
  958. package/dist/_shared/settings-CgtcSI8L.js +0 -143
  959. package/dist/_shared/settings-CgtcSI8L.js.map +0 -1
  960. package/dist/_shared/settings-csNmeT7b.cjs +0 -2
  961. package/dist/_shared/settings-csNmeT7b.cjs.map +0 -1
  962. package/dist/_shared/sidebar-DyGIcJd9.cjs +0 -2
  963. package/dist/_shared/sidebar-DyGIcJd9.cjs.map +0 -1
  964. package/dist/_shared/sidebar-OT-xIguQ.js +0 -548
  965. package/dist/_shared/sidebar-OT-xIguQ.js.map +0 -1
  966. package/dist/_shared/skeleton-DwF5VdMh.cjs +0 -2
  967. package/dist/_shared/skeleton-DwF5VdMh.cjs.map +0 -1
  968. package/dist/_shared/skeleton-yUXqeWzB.js +0 -256
  969. package/dist/_shared/skeleton-yUXqeWzB.js.map +0 -1
  970. package/dist/_shared/spinner-BDrUzfTo.cjs +0 -2
  971. package/dist/_shared/spinner-BDrUzfTo.cjs.map +0 -1
  972. package/dist/_shared/spinner-CuVZhJhN.js +0 -67
  973. package/dist/_shared/spinner-CuVZhJhN.js.map +0 -1
  974. package/dist/_shared/table-BVWemr79.cjs +0 -2
  975. package/dist/_shared/table-BVWemr79.cjs.map +0 -1
  976. package/dist/_shared/table-WYSjfQRr.js +0 -1377
  977. package/dist/_shared/table-WYSjfQRr.js.map +0 -1
  978. package/dist/_shared/textarea-C0iZwWdD.js +0 -118
  979. package/dist/_shared/textarea-C0iZwWdD.js.map +0 -1
  980. package/dist/_shared/textarea-bHFAtwYd.cjs +0 -2
  981. package/dist/_shared/textarea-bHFAtwYd.cjs.map +0 -1
  982. package/dist/_shared/typography-5bLhAYaK.js +0 -201
  983. package/dist/_shared/typography-5bLhAYaK.js.map +0 -1
  984. package/dist/_shared/typography-CWEobAJV.cjs +0 -2
  985. package/dist/_shared/typography-CWEobAJV.cjs.map +0 -1
  986. package/dist/_shared/workspace-BkwsqTrc.cjs +0 -2
  987. package/dist/_shared/workspace-BkwsqTrc.cjs.map +0 -1
  988. package/dist/_shared/workspace-DpU1YG1t.js +0 -357
  989. package/dist/_shared/workspace-DpU1YG1t.js.map +0 -1
  990. package/dist/showcase/assets/AreaChart-DxDBymDt.js +0 -6
  991. package/dist/showcase/assets/CompositeItem-owAA4Ah3.js +0 -1
  992. package/dist/showcase/assets/CompositeRoot-DzHTtLBs.js +0 -1
  993. package/dist/showcase/assets/DialogTrigger-OUBMI353.js +0 -1
  994. package/dist/showcase/assets/LabelableContext-Cd9Gf7TR.js +0 -1
  995. package/dist/showcase/assets/PreviewLayout-X_NxjYOV.js +0 -1
  996. package/dist/showcase/assets/RadioGroup-BzveyiIV.js +0 -1
  997. package/dist/showcase/assets/ScrollAreaCorner-IZFF348L.js +0 -1
  998. package/dist/showcase/assets/Separator-CSYYEo-X.js +0 -1
  999. package/dist/showcase/assets/ToolbarRootContext-BYSKM0e8.js +0 -1
  1000. package/dist/showcase/assets/accordion-B9VkLXiy.js +0 -171
  1001. package/dist/showcase/assets/accordion-variants-g7lk5hEX.js +0 -1
  1002. package/dist/showcase/assets/action-menu-CWIvuiLO.js +0 -1
  1003. package/dist/showcase/assets/actions-BuwzXYEF.js +0 -310
  1004. package/dist/showcase/assets/activities-BTBlr1G4.js +0 -500
  1005. package/dist/showcase/assets/activities-feed-card-C5lcwUFk.js +0 -1
  1006. package/dist/showcase/assets/admin-kbK6nUjx.js +0 -140
  1007. package/dist/showcase/assets/ai-CKu9EGmA.js +0 -207
  1008. package/dist/showcase/assets/ai-artifact-Bg1MFGeF.js +0 -2
  1009. package/dist/showcase/assets/ai-chat-DEntRhJD.js +0 -568
  1010. package/dist/showcase/assets/ai-elements-DyKRCWiS.js +0 -387
  1011. package/dist/showcase/assets/ai-tool-call-DFrTelEX.js +0 -1
  1012. package/dist/showcase/assets/alert-C0wSpBYn.js +0 -93
  1013. package/dist/showcase/assets/alert-CZ4rgwPr.js +0 -62
  1014. package/dist/showcase/assets/alert-WTKIdE4s.js +0 -1
  1015. package/dist/showcase/assets/api-key-list-BnrUT9Uf.js +0 -1
  1016. package/dist/showcase/assets/api-key-list-bQ6QzFhA.js +0 -73
  1017. package/dist/showcase/assets/app-sidebar-B3veRbac.js +0 -1
  1018. package/dist/showcase/assets/arrow-down-CEXJx115.js +0 -1
  1019. package/dist/showcase/assets/arrow-left-Ca6ri5q0.js +0 -1
  1020. package/dist/showcase/assets/arrow-right-a3STqWgx.js +0 -1
  1021. package/dist/showcase/assets/arrow-up-CCU1MaGq.js +0 -1
  1022. package/dist/showcase/assets/arrow-up-right-BDImqvM2.js +0 -1
  1023. package/dist/showcase/assets/avatar-Bwgai0SK.js +0 -67
  1024. package/dist/showcase/assets/avatar-DSmL52Us.js +0 -57
  1025. package/dist/showcase/assets/avatar-kK9n1a25.js +0 -1
  1026. package/dist/showcase/assets/avatar-nb7MgV_x.js +0 -1
  1027. package/dist/showcase/assets/badge-CTGPRSXm.js +0 -31
  1028. package/dist/showcase/assets/badge-check-zqoYYrVj.js +0 -1
  1029. package/dist/showcase/assets/bell-D7HWGStL.js +0 -1
  1030. package/dist/showcase/assets/boolean-indicator-CqwlV0cf.js +0 -1
  1031. package/dist/showcase/assets/bot-Owx4SMiU.js +0 -1
  1032. package/dist/showcase/assets/box-BeeoLlMd.js +0 -1
  1033. package/dist/showcase/assets/braces-fzrExVIx.js +0 -1
  1034. package/dist/showcase/assets/brain-Da2fsBjd.js +0 -1
  1035. package/dist/showcase/assets/brand-Bo6uwdGf.js +0 -36
  1036. package/dist/showcase/assets/breadcrumb-B-K-6dtd.js +0 -1
  1037. package/dist/showcase/assets/breadcrumb-B6lR9Cq2.js +0 -52
  1038. package/dist/showcase/assets/breadcrumbs-Bamog6P5.js +0 -1
  1039. package/dist/showcase/assets/briefcase-DQjbh28E.js +0 -1
  1040. package/dist/showcase/assets/building-2-DaQW5yJa.js +0 -1
  1041. package/dist/showcase/assets/button-D3skvyQS.js +0 -44
  1042. package/dist/showcase/assets/button-group-BYtbrhme.js +0 -1
  1043. package/dist/showcase/assets/buttons-B3IkMmNQ.js +0 -272
  1044. package/dist/showcase/assets/calendar-C4fCDK3O.js +0 -1
  1045. package/dist/showcase/assets/calendar-CcwkVxCK.js +0 -16
  1046. package/dist/showcase/assets/calendar-DBkwxV9H.js +0 -1
  1047. package/dist/showcase/assets/calendar-days-BWed1W3Z.js +0 -1
  1048. package/dist/showcase/assets/camera-BUoAyoZT.js +0 -1
  1049. package/dist/showcase/assets/card-7DBPqWuv.js +0 -1
  1050. package/dist/showcase/assets/card-ClwyNDHJ.js +0 -188
  1051. package/dist/showcase/assets/card-primitives-BE1YpEQW.js +0 -1
  1052. package/dist/showcase/assets/card-radio-group-1NMbocuG.js +0 -1
  1053. package/dist/showcase/assets/cards-Bu8uaGSU.js +0 -354
  1054. package/dist/showcase/assets/carousel-dTTRRSQg.js +0 -449
  1055. package/dist/showcase/assets/cell-renderers-CcyBuUsC.js +0 -1
  1056. package/dist/showcase/assets/chart-BSboeIO6.js +0 -358
  1057. package/dist/showcase/assets/chart-column-CCzA6B9l.js +0 -1
  1058. package/dist/showcase/assets/checkbox-CSdEPNT5.js +0 -1
  1059. package/dist/showcase/assets/checkbox-CqNLi9Q3.js +0 -1
  1060. package/dist/showcase/assets/chevron-down-C91gNQdT.js +0 -1
  1061. package/dist/showcase/assets/chevron-left-SiAoYFSo.js +0 -1
  1062. package/dist/showcase/assets/chevron-up-Beb1_ET_.js +0 -1
  1063. package/dist/showcase/assets/chevrons-up-down-DaST4VKL.js +0 -1
  1064. package/dist/showcase/assets/circle-D9KiRp8C.js +0 -1
  1065. package/dist/showcase/assets/circle-alert-BQkAwFkl.js +0 -1
  1066. package/dist/showcase/assets/circle-check-big-CN5YOJqq.js +0 -1
  1067. package/dist/showcase/assets/circle-check-dqmKTiDe.js +0 -1
  1068. package/dist/showcase/assets/circle-dot-B7LPN_0V.js +0 -1
  1069. package/dist/showcase/assets/circle-question-mark-yTRkQO3d.js +0 -1
  1070. package/dist/showcase/assets/circle-x-CW2dFcX-.js +0 -1
  1071. package/dist/showcase/assets/clock-3-CXJ_JotW.js +0 -1
  1072. package/dist/showcase/assets/clock-DUqvfazQ.js +0 -1
  1073. package/dist/showcase/assets/code-xml-BmdQDeID.js +0 -1
  1074. package/dist/showcase/assets/collapsible-C-WYhJxn.js +0 -1
  1075. package/dist/showcase/assets/collapsible-CL37AlCX.js +0 -27
  1076. package/dist/showcase/assets/collapsible-uGO5Rj8q.js +0 -1
  1077. package/dist/showcase/assets/combobox-CFh5kUzj.js +0 -685
  1078. package/dist/showcase/assets/command-CtpLaHjh.js +0 -1
  1079. package/dist/showcase/assets/command-DSlK-QAE.js +0 -1
  1080. package/dist/showcase/assets/comment-composer-Rr_a5tZQ.js +0 -1
  1081. package/dist/showcase/assets/comment-item-Dme2o2KI.js +0 -1
  1082. package/dist/showcase/assets/comments-CW2nz465.js +0 -357
  1083. package/dist/showcase/assets/commerce-bwcq6oPn.js +0 -267
  1084. package/dist/showcase/assets/composite-DMIR0vmP.js +0 -1
  1085. package/dist/showcase/assets/conditional-rendering-Bk6AC76c.js +0 -1
  1086. package/dist/showcase/assets/contact-card-BCXS9tWq.js +0 -65
  1087. package/dist/showcase/assets/content-container-b1dC2caJ.js +0 -1
  1088. package/dist/showcase/assets/copyable-BIABx-Vv.js +0 -96
  1089. package/dist/showcase/assets/copyable-Ic9wzVaj.js +0 -1
  1090. package/dist/showcase/assets/course-card-Bo5P3TYv.js +0 -77
  1091. package/dist/showcase/assets/cpu-_VqU6yRO.js +0 -1
  1092. package/dist/showcase/assets/credit-card-BbxO8xLo.js +0 -1
  1093. package/dist/showcase/assets/css-variables-zqpBgnS1.js +0 -1205
  1094. package/dist/showcase/assets/currency-Cjvt4F0b.js +0 -149
  1095. package/dist/showcase/assets/dark-surfaces-CLwERt1f.js +0 -90
  1096. package/dist/showcase/assets/data-view-AtyUp7b-.js +0 -124
  1097. package/dist/showcase/assets/data-view-cnEmgP1C.js +0 -4
  1098. package/dist/showcase/assets/database-TbVXEw7v.js +0 -1
  1099. package/dist/showcase/assets/date-block-CDHemKnP.js +0 -1
  1100. package/dist/showcase/assets/date-block-COb89Y_-.js +0 -1
  1101. package/dist/showcase/assets/date-picker-CK8llBIN.js +0 -1
  1102. package/dist/showcase/assets/date-pickers-DFfDnW9w.js +0 -73
  1103. package/dist/showcase/assets/dense-info-CaFVDE90.js +0 -106
  1104. package/dist/showcase/assets/design-system-consistency-CeSMuTuu.js +0 -264
  1105. package/dist/showcase/assets/dialog-CRQNEK2K.js +0 -1
  1106. package/dist/showcase/assets/dialog-CsCLDb0G.js +0 -1
  1107. package/dist/showcase/assets/dialog-Qh3EHEKq.js +0 -1
  1108. package/dist/showcase/assets/display-utilities-rP3hb4FK.js +0 -4
  1109. package/dist/showcase/assets/display-utilities.examples-BwbvHOcx.js +0 -309
  1110. package/dist/showcase/assets/dist-CbqRct9s.js +0 -1
  1111. package/dist/showcase/assets/dist-iivamCjp.js +0 -45
  1112. package/dist/showcase/assets/dollar-sign-COaRmdJE.js +0 -1
  1113. package/dist/showcase/assets/download-yCcb4rfH.js +0 -1
  1114. package/dist/showcase/assets/dropdown-menu-KoFNw-fX.js +0 -1
  1115. package/dist/showcase/assets/dropzone-DLguWnmu.js +0 -1
  1116. package/dist/showcase/assets/earth-TDRqTA4S.js +0 -1
  1117. package/dist/showcase/assets/ellipsis-Q_fBbRE9.js +0 -1
  1118. package/dist/showcase/assets/ellipsis-vertical-Bh8t3Z1g.js +0 -1
  1119. package/dist/showcase/assets/empty-DvmDTSAj.js +0 -1
  1120. package/dist/showcase/assets/empty-item-C3HP5nuw.js +0 -49
  1121. package/dist/showcase/assets/empty-state-Dcin4cOt.js +0 -190
  1122. package/dist/showcase/assets/empty-state-IV_GTNEI.js +0 -1
  1123. package/dist/showcase/assets/enhanced-activities-BLf2gpes.js +0 -357
  1124. package/dist/showcase/assets/enhanced-combobox-ClZcVnhv.js +0 -1
  1125. package/dist/showcase/assets/esm-Cf6QQstQ.js +0 -2
  1126. package/dist/showcase/assets/event-calendar-zrfI_3AM.js +0 -138
  1127. package/dist/showcase/assets/event-log-D-_CViAw.js +0 -330
  1128. package/dist/showcase/assets/example-6bZGEb3-.js +0 -1
  1129. package/dist/showcase/assets/external-link-7ldgjHZM.js +0 -1
  1130. package/dist/showcase/assets/eye-pXVkim6z.js +0 -1
  1131. package/dist/showcase/assets/feature-announcement-CFcGj3ge.js +0 -34
  1132. package/dist/showcase/assets/file-Bn9sAGaT.js +0 -1
  1133. package/dist/showcase/assets/file-text-Cvxg6pjh.js +0 -1
  1134. package/dist/showcase/assets/filter-layout-DqNRRzDU.js +0 -1
  1135. package/dist/showcase/assets/filters-CQMI_T63.js +0 -139
  1136. package/dist/showcase/assets/flag-vI_WJ-BU.js +0 -1
  1137. package/dist/showcase/assets/folder-open-0AyKSRQS.js +0 -1
  1138. package/dist/showcase/assets/form-field-BaBeXn7a.js +0 -1
  1139. package/dist/showcase/assets/form-sizing-Dltt6Fj-.js +0 -1
  1140. package/dist/showcase/assets/format-DLLMyN-3.js +0 -1
  1141. package/dist/showcase/assets/forms-gPD-Caru.js +0 -915
  1142. package/dist/showcase/assets/funnel-Ca9nWMHm.js +0 -1
  1143. package/dist/showcase/assets/generic-AAssz0h7.js +0 -1
  1144. package/dist/showcase/assets/getPseudoElementBounds-fbxSMOsb.js +0 -1
  1145. package/dist/showcase/assets/gift-BC42Oxfz.js +0 -1
  1146. package/dist/showcase/assets/giftcard-cards-CFKnYe0c.js +0 -85
  1147. package/dist/showcase/assets/git-branch-B-nF8w-J.js +0 -1
  1148. package/dist/showcase/assets/global-search-D6Gxw0G3.js +0 -1
  1149. package/dist/showcase/assets/global-search-jsb_4idg.js +0 -215
  1150. package/dist/showcase/assets/globe-C92uBSrO.js +0 -1
  1151. package/dist/showcase/assets/gradient-card-D4ly60sD.js +0 -58
  1152. package/dist/showcase/assets/hash-BShTbxlR.js +0 -1
  1153. package/dist/showcase/assets/header-CSiNqg9Q.js +0 -1
  1154. package/dist/showcase/assets/header-notifications-CpHeFPQF.js +0 -1
  1155. package/dist/showcase/assets/heart-B3hXs7fr.js +0 -1
  1156. package/dist/showcase/assets/hooks-CamAqFFh.js +0 -220
  1157. package/dist/showcase/assets/house-4_CouE-Y.js +0 -1
  1158. package/dist/showcase/assets/icon-badge-CePIZqWR.js +0 -1
  1159. package/dist/showcase/assets/icon-badge-DSbvvnxh.js +0 -37
  1160. package/dist/showcase/assets/image-BxbFIbVJ.js +0 -1
  1161. package/dist/showcase/assets/inbox-BXab1SM6.js +0 -1
  1162. package/dist/showcase/assets/index-BPUtPJjB.css +0 -2
  1163. package/dist/showcase/assets/index-BjjNfnhP.js +0 -10
  1164. package/dist/showcase/assets/inertValue-CZOzgsmF.js +0 -1
  1165. package/dist/showcase/assets/info-DzqwCq93.js +0 -1
  1166. package/dist/showcase/assets/inline-stat-D5ybpUh-.js +0 -15
  1167. package/dist/showcase/assets/inline-stat-Dq34wv-6.js +0 -1
  1168. package/dist/showcase/assets/input-C8OfUHCK.js +0 -1
  1169. package/dist/showcase/assets/input-D34Ge3rh.js +0 -1
  1170. package/dist/showcase/assets/input-group-BCPZ6Pwq.js +0 -1
  1171. package/dist/showcase/assets/input-group-CySTANka.js +0 -47
  1172. package/dist/showcase/assets/inputs-CnmHo_lj.js +0 -155
  1173. package/dist/showcase/assets/installation-BPvseS46.js +0 -134
  1174. package/dist/showcase/assets/invoice-header-C9JjJWQX.js +0 -36
  1175. package/dist/showcase/assets/invoice-items-DB8tbCv9.js +0 -36
  1176. package/dist/showcase/assets/invoice-mini-Q_PnimKL.js +0 -14
  1177. package/dist/showcase/assets/invoice-table-CLDvpLib.js +0 -30
  1178. package/dist/showcase/assets/isSameDay-D8bDebyL.js +0 -1
  1179. package/dist/showcase/assets/isToday-XVjRuMtp.js +0 -1
  1180. package/dist/showcase/assets/italic-Cm13b8qb.js +0 -1
  1181. package/dist/showcase/assets/item-C07859JQ.js +0 -1
  1182. package/dist/showcase/assets/item-LinnMxvu.js +0 -1
  1183. package/dist/showcase/assets/item-i7ZUMs5t.js +0 -140
  1184. package/dist/showcase/assets/kanban-CIMTpuN5.js +0 -188
  1185. package/dist/showcase/assets/key-round-Bh7EzOyR.js +0 -1
  1186. package/dist/showcase/assets/label-C3A4CjeG.js +0 -1
  1187. package/dist/showcase/assets/languages-C37jhetw.js +0 -1
  1188. package/dist/showcase/assets/layers-Lyr6p-Nt.js +0 -1
  1189. package/dist/showcase/assets/layout-app-shell-BWAkl9gq.js +0 -608
  1190. package/dist/showcase/assets/layout-auth-y1alnhc8.js +0 -790
  1191. package/dist/showcase/assets/layout-containers-B6c-uvil.js +0 -101
  1192. package/dist/showcase/assets/layout-header-DNhJHWNw.js +0 -203
  1193. package/dist/showcase/assets/layout-page-CXU7CnQK.js +0 -315
  1194. package/dist/showcase/assets/layout-primitives-StuFwfwh.js +0 -34
  1195. package/dist/showcase/assets/layout-sidebar-D-QjnZPh.js +0 -224
  1196. package/dist/showcase/assets/layout-users-D7KMzs3-.js +0 -117
  1197. package/dist/showcase/assets/layout-workspace-Butr7CL5.js +0 -191
  1198. package/dist/showcase/assets/lib-D5nOMXIt.js +0 -1
  1199. package/dist/showcase/assets/list-checks-Cg9HZf4W.js +0 -1
  1200. package/dist/showcase/assets/lock-Da21HhQx.js +0 -1
  1201. package/dist/showcase/assets/lock-keyhole-DNTfa9e3.js +0 -1
  1202. package/dist/showcase/assets/mail-Bamky-ti.js +0 -1
  1203. package/dist/showcase/assets/mail-check-BfVYPC42.js +0 -1
  1204. package/dist/showcase/assets/map-BTlWnRAQ.js +0 -124
  1205. package/dist/showcase/assets/map-pin-BU2RBuvC.js +0 -1
  1206. package/dist/showcase/assets/media-library-DJxgoGAF.js +0 -699
  1207. package/dist/showcase/assets/mention-inline-suggestions-CbXVAvbK.js +0 -1
  1208. package/dist/showcase/assets/mentions-kMT-Z3qU.js +0 -138
  1209. package/dist/showcase/assets/menus-bhp_n9PT.js +0 -171
  1210. package/dist/showcase/assets/message-square-DC5Bb9Zs.js +0 -1
  1211. package/dist/showcase/assets/metadata-list-DGr729EW.js +0 -286
  1212. package/dist/showcase/assets/metadata-list-DyjhZi6d.js +0 -1
  1213. package/dist/showcase/assets/metric-DRDok6Ci.js +0 -1
  1214. package/dist/showcase/assets/metric-bar-DZsH4Q3U.js +0 -1
  1215. package/dist/showcase/assets/metric-grid-BlFXTrid.js +0 -1
  1216. package/dist/showcase/assets/metric-trend-chip-oEihbEK8.js +0 -1
  1217. package/dist/showcase/assets/metrics-analytics-bar-BovaXHQX.js +0 -44
  1218. package/dist/showcase/assets/metrics-analytics-cards-CeX9Skmd.js +0 -50
  1219. package/dist/showcase/assets/metrics-comparison-DFPSmREl.js +0 -76
  1220. package/dist/showcase/assets/metrics-heatmap-CXzfZwe_.js +0 -27
  1221. package/dist/showcase/assets/metrics-inline-badge-DQJaNpYH.js +0 -17
  1222. package/dist/showcase/assets/metrics-kpi-row-BIpv8CPU.js +0 -31
  1223. package/dist/showcase/assets/metrics-micro-grid-EOCkRI5Z.js +0 -42
  1224. package/dist/showcase/assets/metrics-overview-BD4s9H2T.js +0 -192
  1225. package/dist/showcase/assets/metrics-stat-cards-t7asN5nA.js +0 -54
  1226. package/dist/showcase/assets/minus-Dr1iTc_q.js +0 -1
  1227. package/dist/showcase/assets/money-display-B5_VqQC0.js +0 -1
  1228. package/dist/showcase/assets/money-display-bU2_cVGX.js +0 -1
  1229. package/dist/showcase/assets/month-year-picker-DVRuYbLm.js +0 -1
  1230. package/dist/showcase/assets/navigation-DBKvJoe-.js +0 -231
  1231. package/dist/showcase/assets/navigation-DOhfmtgy.js +0 -90
  1232. package/dist/showcase/assets/navigation-extras-BkO2TZP7.js +0 -43
  1233. package/dist/showcase/assets/notification-banner-CE1Ei_ZT.js +0 -1
  1234. package/dist/showcase/assets/onboarding-checklist-Bf0aoBoa.js +0 -119
  1235. package/dist/showcase/assets/overflow-tab-bar-B2RXtyMP.js +0 -1
  1236. package/dist/showcase/assets/overlays-4E_sUgkz.js +0 -408
  1237. package/dist/showcase/assets/overlays-ulNl-Vhr.js +0 -159
  1238. package/dist/showcase/assets/overview-CgymfIBq.js +0 -184
  1239. package/dist/showcase/assets/package-CADuUP1u.js +0 -1
  1240. package/dist/showcase/assets/package-check-O7MD6XE_.js +0 -1
  1241. package/dist/showcase/assets/page-GB6OIgID.js +0 -1
  1242. package/dist/showcase/assets/page-action-button-Dpprot7y.js +0 -1
  1243. package/dist/showcase/assets/page-header-2VEUPx67.js +0 -1
  1244. package/dist/showcase/assets/pagination-BBuRtAX9.js +0 -1
  1245. package/dist/showcase/assets/pagination-C4mt4Q4l.js +0 -42
  1246. package/dist/showcase/assets/paperclip-Cmyh3Bhf.js +0 -1
  1247. package/dist/showcase/assets/password-input-CgZj1niQ.js +0 -1
  1248. package/dist/showcase/assets/pencil-CtdXjogr.js +0 -1
  1249. package/dist/showcase/assets/phone-CAFMH1vV.js +0 -1
  1250. package/dist/showcase/assets/placeholder-pattern-DHKm-uYV.js +0 -1
  1251. package/dist/showcase/assets/plus-CN2dzUxL.js +0 -1
  1252. package/dist/showcase/assets/popover-DILNXLWy.js +0 -1
  1253. package/dist/showcase/assets/popover-menu-Bp08xxOf.js +0 -1
  1254. package/dist/showcase/assets/popover-o1EO2yVS.js +0 -1
  1255. package/dist/showcase/assets/products-CCLAbHBN.js +0 -423
  1256. package/dist/showcase/assets/progress-BGna-ZmU.js +0 -18
  1257. package/dist/showcase/assets/progress-BSYlNLIJ.js +0 -1
  1258. package/dist/showcase/assets/progress-CZVy3LGB.js +0 -1
  1259. package/dist/showcase/assets/props-table-X9St7Q4m.js +0 -1
  1260. package/dist/showcase/assets/props.generated-f_jHBhPb.json +0 -41753
  1261. package/dist/showcase/assets/qr-code-CEmKf9xU.js +0 -1
  1262. package/dist/showcase/assets/quote-IH6r-rlY.js +0 -1
  1263. package/dist/showcase/assets/receipt-m9rOe5lY.js +0 -1
  1264. package/dist/showcase/assets/receipt-text-C0TobatH.js +0 -1
  1265. package/dist/showcase/assets/refinement-guide-t9T7iAS2.js +0 -189
  1266. package/dist/showcase/assets/refresh-cw-Dy_Nc4jA.js +0 -1
  1267. package/dist/showcase/assets/resolveValueLabel-DR7LgQP5.js +0 -1
  1268. package/dist/showcase/assets/resource-BcJ8O6uj.js +0 -1
  1269. package/dist/showcase/assets/resource-_zDXez77.js +0 -139
  1270. package/dist/showcase/assets/resource-selector-card-CCAEF-AT.js +0 -43
  1271. package/dist/showcase/assets/rich-text-editor-BJG_ECJp.js +0 -143
  1272. package/dist/showcase/assets/rich-text-editor-fbgVfyEH.js +0 -124
  1273. package/dist/showcase/assets/rotate-ccw-CGuTkHQ3.js +0 -1
  1274. package/dist/showcase/assets/route-C7EZ2Njy.js +0 -1
  1275. package/dist/showcase/assets/save-fKrt-yFG.js +0 -1
  1276. package/dist/showcase/assets/schema-form-k7TXeirD.js +0 -327
  1277. package/dist/showcase/assets/scroll-area-CqNwdlI6.js +0 -32
  1278. package/dist/showcase/assets/scroll-area-UVtlGOgx.js +0 -1
  1279. package/dist/showcase/assets/section-DuBNJP4P.js +0 -1
  1280. package/dist/showcase/assets/select-CINVEIWn.js +0 -1
  1281. package/dist/showcase/assets/select-ZLaamXrm.js +0 -1
  1282. package/dist/showcase/assets/send-DBvt_4jT.js +0 -1
  1283. package/dist/showcase/assets/separator-BdBXRpc3.js +0 -28
  1284. package/dist/showcase/assets/separator-CkJjJQWW.js +0 -1
  1285. package/dist/showcase/assets/separator-CxOeStjL.js +0 -1
  1286. package/dist/showcase/assets/separator-O-VQMSf_.js +0 -1
  1287. package/dist/showcase/assets/settings-2-BWjMVlyS.js +0 -1
  1288. package/dist/showcase/assets/settings-D9Z79UcG.js +0 -1
  1289. package/dist/showcase/assets/sheet-CK9C6r7_.js +0 -1
  1290. package/dist/showcase/assets/shield-BboB3Zlo.js +0 -1
  1291. package/dist/showcase/assets/shield-alert-CAAobStl.js +0 -1
  1292. package/dist/showcase/assets/shield-check-Rfyzz9bK.js +0 -1
  1293. package/dist/showcase/assets/shopping-bag-5hLD82YW.js +0 -1
  1294. package/dist/showcase/assets/showcase-DhOQXB5E.js +0 -132
  1295. package/dist/showcase/assets/sidebar-ZTUACc0t.js +0 -1
  1296. package/dist/showcase/assets/sidebar.context-BiNOpG5W.js +0 -1
  1297. package/dist/showcase/assets/skeleton-BZUSoHbk.js +0 -1
  1298. package/dist/showcase/assets/skeleton-BZkYzAdq.js +0 -1
  1299. package/dist/showcase/assets/skeleton-CrOp8tx3.js +0 -29
  1300. package/dist/showcase/assets/skeleton-P5GXAj4U.js +0 -1
  1301. package/dist/showcase/assets/slider-zlE7nLrp.js +0 -1
  1302. package/dist/showcase/assets/smart-card-OExZHSsj.js +0 -1
  1303. package/dist/showcase/assets/sonner-eMphKM9E.js +0 -22
  1304. package/dist/showcase/assets/sortable.esm-CM9VD5N4.js +0 -5
  1305. package/dist/showcase/assets/sparkles-CIB5irID.js +0 -1
  1306. package/dist/showcase/assets/spinner-11-kP-Ob.js +0 -1
  1307. package/dist/showcase/assets/spinner-D4G5TFSm.js +0 -49
  1308. package/dist/showcase/assets/spinner-DKGukuFV.js +0 -30
  1309. package/dist/showcase/assets/square-pen-zflKy9oX.js +0 -1
  1310. package/dist/showcase/assets/stacked-avatars-Cve1Y6GY.js +0 -1
  1311. package/dist/showcase/assets/star-DleXDkCp.js +0 -1
  1312. package/dist/showcase/assets/startOfDay-TDP2erzM.js +0 -1
  1313. package/dist/showcase/assets/styles-BKlX_Ipc.js +0 -1
  1314. package/dist/showcase/assets/suggestions-Dt2hm1NY.js +0 -126
  1315. package/dist/showcase/assets/switch-DAPAgJbv.js +0 -1
  1316. package/dist/showcase/assets/switch-fQpP2tJl.js +0 -1
  1317. package/dist/showcase/assets/sync-BRcK160D.js +0 -124
  1318. package/dist/showcase/assets/table-Dhmbe1yN.js +0 -686
  1319. package/dist/showcase/assets/table-actions-GGrPOQcv.js +0 -1
  1320. package/dist/showcase/assets/table-v0Eu5yZn.js +0 -1
  1321. package/dist/showcase/assets/tabs-DmaXB1aF.js +0 -19
  1322. package/dist/showcase/assets/tabs-vbNIJ-eo.js +0 -1
  1323. package/dist/showcase/assets/tags-input-Bms_Q5CE.js +0 -1
  1324. package/dist/showcase/assets/text-button-gvJCzaXS.js +0 -1
  1325. package/dist/showcase/assets/text-link-DkByVX4d.js +0 -1
  1326. package/dist/showcase/assets/textarea-B6Ho29y3.js +0 -1
  1327. package/dist/showcase/assets/textarea-JCb0yhZ1.js +0 -1
  1328. package/dist/showcase/assets/throttle-alert-CPU-u6Rs.js +0 -1
  1329. package/dist/showcase/assets/timelines-Bw7mvAdx.js +0 -200
  1330. package/dist/showcase/assets/toggle-group-jlIGX1zh.js +0 -1
  1331. package/dist/showcase/assets/toggles-DV6V9vj-.js +0 -71
  1332. package/dist/showcase/assets/toggles-group-C-Y3dG8q.js +0 -32
  1333. package/dist/showcase/assets/tooltip-CDtPyNOv.js +0 -31
  1334. package/dist/showcase/assets/trash-2-CXRm3lMl.js +0 -1
  1335. package/dist/showcase/assets/trending-up-Bcyp9cw8.js +0 -1
  1336. package/dist/showcase/assets/truck-DVgzuKLP.js +0 -1
  1337. package/dist/showcase/assets/typography-BKPf4j85.js +0 -223
  1338. package/dist/showcase/assets/ui-badge-D-Ud2MES.js +0 -28
  1339. package/dist/showcase/assets/ui-card-gGqI2cfr.js +0 -30
  1340. package/dist/showcase/assets/ui-table-Bqcab_kq.js +0 -42
  1341. package/dist/showcase/assets/upload-tray-BFh6twLE.js +0 -138
  1342. package/dist/showcase/assets/use-layout-link-e9jr981L.js +0 -1
  1343. package/dist/showcase/assets/useAriaLabelledBy-ByBTPUi3.js +0 -1
  1344. package/dist/showcase/assets/useCollapsiblePanel-Bx_-SRtw.js +0 -1
  1345. package/dist/showcase/assets/useCompositeItem-Dmih9c3W.js +0 -1
  1346. package/dist/showcase/assets/useCompositeListItem-C0QJgAKb.js +0 -1
  1347. package/dist/showcase/assets/useLabelableId-COfjI9qt.js +0 -1
  1348. package/dist/showcase/assets/useOpenInteractionType-CRefmlni.js +0 -1
  1349. package/dist/showcase/assets/useRender-Bgu76j1u.js +0 -1
  1350. package/dist/showcase/assets/useTriggerFocusGuards-B2fPZeWf.js +0 -1
  1351. package/dist/showcase/assets/useValueChanged-CNjJ-spo.js +0 -1
  1352. package/dist/showcase/assets/user-CmkLnMh9.js +0 -1
  1353. package/dist/showcase/assets/user-plus-3CGFNUf0.js +0 -1
  1354. package/dist/showcase/assets/users-CuO8W7wn.js +0 -1
  1355. package/dist/showcase/assets/vendor-profile-HLMsE22G.js +0 -37
  1356. package/dist/showcase/assets/video-CoHnn0fp.js +0 -1
  1357. package/dist/showcase/assets/visually-hidden-D5bPAL7Q.js +0 -1
  1358. package/dist/showcase/assets/wrench-C93IxaGt.js +0 -1
  1359. package/dist/showcase/assets/x-BJDvVLAz.js +0 -1
  1360. package/dist/showcase/assets/zap-DYD_Ljkv.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/products/products.strings.ts","../../../../src/components/features/products/partials/product-empty-state.tsx","../../../../src/components/features/products/partials/product-tone.tsx","../../../../src/components/features/products/partials/product-metric-tile.tsx","../../../../src/components/features/products/partials/product-actions.tsx","../../../../src/components/features/products/partials/product-rows.tsx","../../../../src/components/features/products/components/product-contract-overview.tsx","../../../../src/components/features/products/components/product-details-card.tsx","../../../../src/components/features/products/components/product-option-action-menu.tsx","../../../../src/components/features/products/components/product-operations-card.tsx","../../../../src/components/features/products/components/product-options-summary.tsx","../../../../src/components/features/products/components/product-policies-card.tsx","../../../../src/components/features/products/partials/product-values.ts","../../../../src/components/features/products/components/product-quote-preview-card.tsx","../../../../src/components/features/products/components/product-readiness-card.tsx","../../../../src/components/features/products/components/product-structure-card.tsx","../../../../src/components/features/products/components/product-variant-action-menu.tsx","../../../../src/components/features/products/partials/product-variant-table-parts.tsx","../../../../src/components/features/products/components/product-variants-table.tsx","../../../../src/components/features/products/components/product-overview.tsx","../../../../src/components/features/products/components/product-variant-details.tsx","../../../../src/components/features/products/components/product-variant-editor.tsx","../../../../src/components/features/products/products.tsx"],"sourcesContent":["export interface ProductReadinessCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tscoreLabel: string;\n\tprogressLabel: string;\n\tcreateLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tactionLabel: string;\n}\n\nexport const defaultProductReadinessCardStrings: ProductReadinessCardStrings = {\n\ttitle: 'Readiness',\n\tdescription: 'Publishing checks and operational setup.',\n\tscoreLabel: 'Overall readiness',\n\tprogressLabel: 'Readiness progress',\n\tcreateLabel: 'Add check',\n\teditLabel: 'Edit check',\n\tdeleteLabel: 'Delete check',\n\tactionsLabel: 'Check actions',\n\temptyTitle: 'No readiness checks',\n\temptyDescription: 'Pass readiness items from your product workflow to show progress.',\n\tactionLabel: 'Open',\n};\n\nexport interface ProductStructureCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductStructureCardStrings: ProductStructureCardStrings = {\n\ttitle: 'Structure',\n\tdescription: 'Media, taxonomy, options, and content coverage.',\n\tcreateLabel: 'Add metric',\n\tviewLabel: 'Open',\n\teditLabel: 'Edit metric',\n\tdeleteLabel: 'Delete metric',\n\tactionsLabel: 'Metric actions',\n\temptyTitle: 'No structure metrics',\n\temptyDescription: 'Pass structure metrics to summarize the product setup.',\n};\n\nexport interface ProductOperationsCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tactionLabel: string;\n}\n\nexport const defaultProductOperationsCardStrings: ProductOperationsCardStrings = {\n\ttitle: 'Operations',\n\tdescription: 'Availability, channels, service rules, and fulfilment signals.',\n\tcreateLabel: 'Add signal',\n\teditLabel: 'Edit signal',\n\tdeleteLabel: 'Delete signal',\n\tactionsLabel: 'Signal actions',\n\temptyTitle: 'No operational signals',\n\temptyDescription: 'Pass operational rows to show channel and availability health.',\n\tactionLabel: 'Open',\n};\n\nexport interface ProductDetailsCardStrings {\n\ttitle: string;\n\tdescription: string;\n\teditLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductDetailsCardStrings: ProductDetailsCardStrings = {\n\ttitle: 'Product details',\n\tdescription: 'Core identity and catalogue fields.',\n\teditLabel: 'Edit details',\n\temptyTitle: 'No details',\n\temptyDescription: 'Pass metadata rows to render product details.',\n};\n\nexport interface ProductContractOverviewStrings {\n\ttitle: string;\n\tdescription: string;\n\ttermsTitle: string;\n\trulesTitle: string;\n\tactionLabel: string;\n\teditLabel: string;\n\tcreateRuleLabel: string;\n\tviewRuleLabel: string;\n\teditRuleLabel: string;\n\tdeleteRuleLabel: string;\n\truleActionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductContractOverviewStrings: ProductContractOverviewStrings = {\n\ttitle: 'Contract',\n\tdescription: 'Commercial terms, pricing rules, and customer-facing conditions.',\n\ttermsTitle: 'Terms',\n\trulesTitle: 'Rules',\n\tactionLabel: 'Manage contract',\n\teditLabel: 'Edit contract',\n\tcreateRuleLabel: 'Add rule',\n\tviewRuleLabel: 'Open rule',\n\teditRuleLabel: 'Edit rule',\n\tdeleteRuleLabel: 'Delete rule',\n\truleActionsLabel: 'Rule actions',\n\temptyTitle: 'No contract summary',\n\temptyDescription: 'Pass metrics, terms, or rules to summarize the product contract.',\n};\n\nexport interface ProductOptionsSummaryStrings {\n\ttitle: string;\n\tdescription: string;\n\tmanageLabel: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductOptionsSummaryStrings: ProductOptionsSummaryStrings = {\n\ttitle: 'Options',\n\tdescription: 'Variant-driving choices and add-ons customers can select.',\n\tmanageLabel: 'Manage options',\n\tcreateLabel: 'Add option',\n\tviewLabel: 'Open option',\n\teditLabel: 'Edit option',\n\tdeleteLabel: 'Delete option',\n\tactionsLabel: 'Option actions',\n\temptyTitle: 'No options',\n\temptyDescription: 'Pass option groups to summarize configurable product choices.',\n};\n\nexport interface ProductOptionActionMenuStrings {\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n}\n\nexport const defaultProductOptionActionMenuStrings: ProductOptionActionMenuStrings = {\n\tviewLabel: 'Open option',\n\teditLabel: 'Edit option',\n\tdeleteLabel: 'Delete option',\n\tactionsLabel: 'Option actions',\n};\n\nexport interface ProductQuotePreviewCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tsubtotalLabel: string;\n\ttaxLabel: string;\n\tdiscountLabel: string;\n\ttotalLabel: string;\n\tactionLabel: string;\n\tcreateLineLabel: string;\n\tviewLineLabel: string;\n\teditLineLabel: string;\n\tdeleteLineLabel: string;\n\tlineActionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductQuotePreviewCardStrings: ProductQuotePreviewCardStrings = {\n\ttitle: 'Quote preview',\n\tdescription: 'How the product appears in a compact customer quote.',\n\tsubtotalLabel: 'Subtotal',\n\ttaxLabel: 'Tax',\n\tdiscountLabel: 'Discount',\n\ttotalLabel: 'Total',\n\tactionLabel: 'Open quote',\n\tcreateLineLabel: 'Add line',\n\tviewLineLabel: 'Open line',\n\teditLineLabel: 'Edit line',\n\tdeleteLineLabel: 'Delete line',\n\tlineActionsLabel: 'Line actions',\n\temptyTitle: 'No quote lines',\n\temptyDescription: 'Pass quote lines to preview pricing.',\n};\n\nexport interface ProductPoliciesCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductPoliciesCardStrings: ProductPoliciesCardStrings = {\n\ttitle: 'Policies',\n\tdescription: 'Cancellation, booking, service, and customer-facing rules.',\n\tcreateLabel: 'Add policy',\n\tviewLabel: 'View',\n\teditLabel: 'Edit policy',\n\tdeleteLabel: 'Delete policy',\n\tactionsLabel: 'Policy actions',\n\temptyTitle: 'No policies',\n\temptyDescription: 'Pass policies to summarize customer-facing rules.',\n};\n\nexport interface ProductVariantsTableStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tduplicateLabel: string;\n\tdeleteLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\theaders: {\n\t\tvariant: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tchannels: string;\n\t\tupdated: string;\n\t\tactions: string;\n\t};\n}\n\nexport const defaultProductVariantsTableStrings: ProductVariantsTableStrings = {\n\ttitle: 'Variants',\n\tdescription: 'Sellable combinations with price, availability, and SKU.',\n\tcreateLabel: 'Add variant',\n\tviewLabel: 'Open variant',\n\teditLabel: 'Edit',\n\tduplicateLabel: 'Duplicate',\n\tdeleteLabel: 'Delete',\n\temptyTitle: 'No variants',\n\temptyDescription: 'Create or pass variants to show sellable rows.',\n\theaders: {\n\t\tvariant: 'Variant',\n\t\tsku: 'SKU',\n\t\tprice: 'Price',\n\t\tinventory: 'Available',\n\t\tchannels: 'Channels',\n\t\tupdated: 'Updated',\n\t\tactions: 'Actions',\n\t},\n};\n\nexport interface ProductVariantActionMenuStrings {\n\tviewLabel: string;\n\teditLabel: string;\n\tduplicateLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n}\n\nexport const defaultProductVariantActionMenuStrings: ProductVariantActionMenuStrings = {\n\tviewLabel: 'Open variant',\n\teditLabel: 'Edit',\n\tduplicateLabel: 'Duplicate',\n\tdeleteLabel: 'Delete',\n\tactionsLabel: 'Variant actions',\n};\n\nexport interface ProductVariantDetailsStrings {\n\ttitle: string;\n\tdescription: string;\n\tbackLabel: string;\n\tfactsTitle: string;\n\tselectedOptionsTitle: string;\n\trelatedOptionsTitle: string;\n\tviewOptionLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tmetadata: {\n\t\tprice: string;\n\t\tinventory: string;\n\t\tsku: string;\n\t\tchannels: string;\n\t\tupdated: string;\n\t};\n}\n\nexport const defaultProductVariantDetailsStrings: ProductVariantDetailsStrings = {\n\ttitle: 'Variant',\n\tdescription: 'Sellable variant details, options, pricing, and fulfilment data.',\n\tbackLabel: 'Back',\n\tfactsTitle: 'Variant facts',\n\tselectedOptionsTitle: 'Selected options',\n\trelatedOptionsTitle: 'Option groups',\n\tviewOptionLabel: 'Open option',\n\temptyTitle: 'No variant selected',\n\temptyDescription: 'Pass a variant to render a standalone variant detail surface.',\n\tmetadata: {\n\t\tprice: 'Price',\n\t\tinventory: 'Available',\n\t\tsku: 'SKU',\n\t\tchannels: 'Channels',\n\t\tupdated: 'Updated',\n\t},\n};\n\nexport interface ProductVariantEditorStrings {\n\ttitle: string;\n\tdescription: string;\n\tidentityTitle: string;\n\tcommercialTitle: string;\n\toptionsTitle: string;\n\tsaveLabel: string;\n\tsavingLabel: string;\n\tcancelLabel: string;\n\tdeleteLabel: string;\n\tstatusPlaceholder: string;\n\toptionPlaceholder: string;\n\tfields: {\n\t\tname: string;\n\t\tdescription: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tstatus: string;\n\t\tchannels: string;\n\t};\n\tplaceholders: {\n\t\tname: string;\n\t\tdescription: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tstatus: string;\n\t\tchannels: string;\n\t};\n}\n\nexport const defaultProductVariantEditorStrings: ProductVariantEditorStrings = {\n\ttitle: 'Edit variant',\n\tdescription: 'Controlled form for variant identity, pricing, inventory, and option values.',\n\tidentityTitle: 'Identity',\n\tcommercialTitle: 'Commercial setup',\n\toptionsTitle: 'Options',\n\tsaveLabel: 'Save variant',\n\tsavingLabel: 'Saving',\n\tcancelLabel: 'Cancel',\n\tdeleteLabel: 'Delete variant',\n\tstatusPlaceholder: 'Select status',\n\toptionPlaceholder: 'Select value',\n\tfields: {\n\t\tname: 'Name',\n\t\tdescription: 'Description',\n\t\tsku: 'SKU',\n\t\tprice: 'Price',\n\t\tinventory: 'Inventory',\n\t\tstatus: 'Status',\n\t\tchannels: 'Channels',\n\t},\n\tplaceholders: {\n\t\tname: '750 ml bottle',\n\t\tdescription: 'Standard retail pack',\n\t\tsku: 'BAL-750-CL',\n\t\tprice: 'US$ 24.00',\n\t\tinventory: '82',\n\t\tstatus: 'Active',\n\t\tchannels: 'Online store, POS',\n\t},\n};\n\nexport interface ProductOverviewStrings {\n\tmainLabel: string;\n\trailLabel: string;\n}\n\nexport const defaultProductOverviewStrings: ProductOverviewStrings = {\n\tmainLabel: 'Product overview',\n\trailLabel: 'Product supporting information',\n};\n","import type { ReactNode } from 'react';\n\nimport { EmptyState } from '@/components/composed/data-display';\nimport { cn } from '@/lib/utils';\n\nexport function ProductEmptyState({\n\ttitle,\n\tdescription,\n\taction,\n\tclassName,\n}: {\n\ttitle: ReactNode;\n\tdescription: ReactNode;\n\taction?: ReactNode;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<EmptyState\n\t\t\tpadding=\"small\"\n\t\t\tborder\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={action}\n\t\t\tclassName={cn('product-empty-state--component bg-muted/20', className)}\n\t\t/>\n\t);\n}\n","import type { ComposedBadgeVariant } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { ProductTone } from '../products.types';\n\nexport const PRODUCT_TONE_BADGE: Record<ProductTone, ComposedBadgeVariant> = {\n\tneutral: 'secondary',\n\tprimary: 'primary',\n\tsuccess: 'success',\n\twarning: 'warning',\n\terror: 'error',\n\tinfo: 'info',\n};\n\nexport const PRODUCT_TONE_SURFACE: Record<ProductTone, string> = {\n\tneutral: 'border-border bg-card text-muted-foreground',\n\tprimary: 'border-primary/20 bg-primary/5 text-primary',\n\tsuccess: 'border-success/20 bg-success/5 text-success',\n\twarning: 'border-warning/30 bg-warning/8 text-warning',\n\terror: 'border-destructive/25 bg-destructive/8 text-destructive',\n\tinfo: 'border-info/20 bg-info/5 text-info',\n};\n\nexport function clampProductPercent(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\treturn Math.min(100, Math.max(0, Math.round(value)));\n}\n\nexport function ProductToneDot({ tone = 'neutral' }: { tone?: ProductTone }) {\n\treturn (\n\t\t<span\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn('product-tone-dot--component size-2 rounded-full', {\n\t\t\t\t'bg-muted-foreground': tone === 'neutral',\n\t\t\t\t'bg-primary': tone === 'primary',\n\t\t\t\t'bg-success': tone === 'success',\n\t\t\t\t'bg-warning': tone === 'warning',\n\t\t\t\t'bg-destructive': tone === 'error',\n\t\t\t\t'bg-info': tone === 'info',\n\t\t\t})}\n\t\t/>\n\t);\n}\n","import { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ProductMetricSummary, ProductStructureMetric } from '../products.types';\nimport { PRODUCT_TONE_SURFACE } from './product-tone';\n\nexport function ProductMetricTile({ metric }: { metric: ProductStructureMetric | ProductMetricSummary }) {\n\tconst tone = metric.tone ?? 'neutral';\n\n\treturn (\n\t\t<div className={cn('product-metric-tile--component rounded-md border px-3 py-2.5', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t<div className=\"flex items-start justify-between gap-2\">\n\t\t\t\t<div className=\"min-w-0 space-y-0.5\">\n\t\t\t\t\t<Text size=\"xs\" type={tone === 'neutral' ? 'secondary' : 'main'} className=\"truncate\">\n\t\t\t\t\t\t{metric.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t{metric.value}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t\t{'icon' in metric && !!metric.icon && (\n\t\t\t\t\t<div className=\"shrink-0 opacity-80\">{metric.icon}</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!metric.description && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1.5 leading-snug\">\n\t\t\t\t\t{metric.description}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { DataTableActions, type ActionItem } from '@/components/base/table';\nimport { cn } from '@/lib/utils';\n\nexport function ProductRowActions<TItem>({\n\titem,\n\tactions,\n\tmenuLabel,\n\tclassName,\n}: {\n\titem: TItem;\n\tactions: ActionItem<TItem>[];\n\tmenuLabel: string;\n\tclassName?: string;\n}) {\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<div className={cn('product-row-actions--component flex justify-end', className)}>\n\t\t\t<DataTableActions\n\t\t\t\trow={item}\n\t\t\t\tactions={actions}\n\t\t\t\tmenuLabel={menuLabel}\n\t\t\t\tdisplayMode=\"menu\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { ArrowRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n\tProductOperationsItem,\n\tProductOptionSummary,\n\tProductPolicySummary,\n\tProductReadinessItem,\n\tProductStructureMetric,\n} from '../products.types';\nimport {\n\tPRODUCT_TONE_BADGE,\n\tPRODUCT_TONE_SURFACE,\n\tProductToneDot,\n} from './product-tone';\n\nexport function ProductStructureMetricRow({\n\tmetric,\n\tactions,\n}: {\n\tmetric: ProductStructureMetric;\n\tactions?: ReactNode;\n}) {\n\tconst tone = metric.tone ?? 'neutral';\n\n\treturn (\n\t\t<Item className=\"product-structure-metric-row--component product-structure-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t{metric.icon ?? <ProductToneDot tone={tone} />}\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{metric.label}</ItemTitle>\n\t\t\t\t{!!metric.description && <ItemDescription clamp={2}>{metric.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t<ItemActions className=\"ml-auto shrink-0 gap-2\">\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{metric.value}\n\t\t\t\t</Text>\n\t\t\t\t{actions}\n\t\t\t</ItemActions>\n\t\t</Item>\n\t);\n}\n\nexport function ProductReadinessRow({\n\titem,\n\tactionFallback,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductReadinessItem;\n\tactionFallback: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? (item.completed ? 'success' : 'neutral');\n\tconst select = item.onSelect ?? onSelect;\n\n\treturn (\n\t\t<Item className=\"product-readiness-row--component product-readiness-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || select || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && (\n\t\t\t\t\t\t<Badge variant={PRODUCT_TONE_BADGE[tone]}>{item.value}</Badge>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!select && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={select} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{item.actionLabel ?? actionFallback}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n\nexport function ProductOperationRow({\n\titem,\n\tactionFallback,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductOperationsItem;\n\tactionFallback: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? 'neutral';\n\tconst select = item.onSelect ?? onSelect;\n\n\treturn (\n\t\t<Item className=\"product-operation-row--component product-operations-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || select || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && <Text tag=\"span\" size=\"xs\" weight=\"semibold\">{item.value}</Text>}\n\t\t\t\t\t{!!select && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={select} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{item.actionLabel ?? actionFallback}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n\nexport function ProductSummaryRow({\n\titem,\n\tactionLabel,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductOptionSummary | ProductPolicySummary;\n\tactionLabel?: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? 'neutral';\n\tconst values = 'values' in item ? item.values : undefined;\n\n\treturn (\n\t\t<Item className=\"product-summary-row--component\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t\t{!!values?.length && (\n\t\t\t\t\t<div className=\"mt-2 flex flex-wrap gap-1\">\n\t\t\t\t\t\t{values.map((value, index) => (\n\t\t\t\t\t\t\t<Badge key={index} variant=\"secondary\">\n\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || item.badge || onSelect || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && <Text tag=\"span\" size=\"xs\" weight=\"semibold\">{item.value}</Text>}\n\t\t\t\t\t{!!item.badge && item.badge}\n\t\t\t\t\t{!!onSelect && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onSelect} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{actionLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n","import {\n\tArrowRight,\n\tEye,\n\tFileText,\n\tPencil,\n\tPlus,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList } from '@/components/composed/data-display';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductContractOverviewStrings } from '../products.strings';\nimport type { ProductContractOverviewProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductMetricTile } from '../partials/product-metric-tile';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductSummaryRow } from '../partials/product-rows';\n\nexport function ProductContractOverview({\n\tmetrics = [],\n\tterms = [],\n\trules = [],\n\tonOpenContract,\n\tonEditContract,\n\tonCreateRule,\n\tonSelectRule,\n\tonEditRule,\n\tonDeleteRule,\n\trenderRuleActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductContractOverviewProps) {\n\tconst strings = useStrings(defaultProductContractOverviewStrings, stringsProp);\n\tconst hasContent = metrics.length > 0 || terms.length > 0 || rules.length > 0;\n\tconst headerAction = onOpenContract || onEditContract || onCreateRule ? (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t{!!onCreateRule && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateRule} icon={Plus}>\n\t\t\t\t\t{strings.createRuleLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onEditContract && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onEditContract} icon={Pencil}>\n\t\t\t\t\t{strings.editLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onOpenContract && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onOpenContract} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t{strings.actionLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<FileText className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-contract-overview--component w-full', className)}\n\t\t>\n\t\t\t{!hasContent ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateRule ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateRule} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createRuleLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"space-y-4\">\n\t\t\t\t\t{metrics.length > 0 && (\n\t\t\t\t\t\t<div className=\"grid gap-2 sm:grid-cols-3\">\n\t\t\t\t\t\t\t{metrics.map((metric) => (\n\t\t\t\t\t\t\t\t<ProductMetricTile key={metric.id} metric={metric} />\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{terms.length > 0 && (\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\">{strings.termsTitle}</Text>\n\t\t\t\t\t\t\t<MetadataList items={terms} columns={2} dense />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{rules.length > 0 && (\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\">{strings.rulesTitle}</Text>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{rules.map((rule, index) => {\n\t\t\t\t\t\t\t\t\tconst onSelect = onSelectRule ? () => onSelectRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst onEdit = onEditRule ? () => onEditRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst onDelete = onDeleteRule ? () => onDeleteRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst ruleActions = [\n\t\t\t\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.viewRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.editRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.deleteRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tconst rowActions = renderRuleActions\n\t\t\t\t\t\t\t\t\t\t? renderRuleActions(rule, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t\t\t: <ProductRowActions item={rule} actions={ruleActions} menuLabel={strings.ruleActionsLabel} />;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\t\t\tkey={rule.id}\n\t\t\t\t\t\t\t\t\t\t\titem={rule}\n\t\t\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductContractOverview.displayName = 'ProductContractOverview';\n","import {\n\tBox,\n\tPencil } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList } from '@/components/composed/data-display';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductDetailsCardStrings } from '../products.strings';\nimport type { ProductDetailsCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\n\nexport function ProductDetailsCard({\n\ttitle,\n\tdescription,\n\tmetadata = [],\n\tmedia,\n\tonEditDetails,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductDetailsCardProps) {\n\tconst strings = useStrings(defaultProductDetailsCardStrings, stringsProp);\n\tconst headerAction = onEditDetails ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onEditDetails} icon={Pencil}>\n\t\t\t{strings.editLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Box className=\"size-4\" />}\n\t\t\ttitle={title ?? strings.title}\n\t\t\tdescription={description === false ? undefined : description ?? strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-details-card--component w-full', className)}\n\t\t>\n\t\t\t{metadata.length === 0 ? (\n\t\t\t\tempty ?? <ProductEmptyState title={strings.emptyTitle} description={strings.emptyDescription} />\n\t\t\t) : (\n\t\t\t\t<div className=\"@container/product-details\">\n\t\t\t\t\t<div className={cn('grid gap-4', media && '@xl/product-details:grid-cols-[12rem_minmax(0,1fr)]')}>\n\t\t\t\t\t\t{!!media && (\n\t\t\t\t\t\t\t<div className=\"product-details-card--media overflow-hidden rounded-md border border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t{media}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<MetadataList\n\t\t\t\t\t\t\titems={metadata}\n\t\t\t\t\t\t\tcolumns={media ? 1 : 2}\n\t\t\t\t\t\t\tdense\n\t\t\t\t\t\t\tclassName=\"min-w-0\"\n\t\t\t\t\t\t\tvalueClassName=\"break-words\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductDetailsCard.displayName = 'ProductDetailsCard';\n","import { Eye, Pencil, Trash2 } from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductOptionActionMenuStrings,\n} from '../products.strings';\nimport type {\n\tProductOptionActionMenuProps,\n\tProductOptionSummary,\n} from '../products.types';\nimport { ProductRowActions } from '../partials/product-actions';\n\nexport function ProductOptionActionMenu({\n\toption,\n\tindex = 0,\n\tonSelectOption,\n\tonEditOption,\n\tonDeleteOption,\n\trenderOptionActions,\n\tmenuLabel,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOptionActionMenuProps) {\n\tconst strings = useStrings(defaultProductOptionActionMenuStrings, stringsProp);\n\tconst onSelect = onSelectOption ? () => onSelectOption(option) : undefined;\n\tconst onEdit = onEditOption ? () => onEditOption(option) : undefined;\n\tconst onDelete = onDeleteOption ? () => onDeleteOption(option) : undefined;\n\tconst hasActions = !!(onSelect || onEdit || onDelete || renderOptionActions);\n\n\tif (!hasActions) return null;\n\n\tif (renderOptionActions) {\n\t\treturn (\n\t\t\t<div className={cn('product-option-action-menu--component flex justify-end', className)}>\n\t\t\t\t{renderOptionActions(option, { index, onSelect, onEdit, onDelete })}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ProductRowActions<ProductOptionSummary>\n\t\t\titem={option}\n\t\t\tmenuLabel={menuLabel ?? strings.actionsLabel}\n\t\t\tclassName={cn('product-option-action-menu--component', className)}\n\t\t\tactions={[\n\t\t\t\t...(onSelect ? [{\n\t\t\t\t\tid: 'open',\n\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onEdit ? [{\n\t\t\t\t\tid: 'edit',\n\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDelete ? [{\n\t\t\t\t\tid: 'delete',\n\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t}] : []),\n\t\t\t]}\n\t\t/>\n\t);\n}\n\nProductOptionActionMenu.displayName = 'ProductOptionActionMenu';\n","import { PackageCheck, Pencil, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOperationsCardStrings } from '../products.strings';\nimport type { ProductOperationsCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductOperationRow } from '../partials/product-rows';\n\nexport function ProductOperationsCard({\n\titems = [],\n\tonCreateOperation,\n\tonSelectOperation,\n\tonEditOperation,\n\tonDeleteOperation,\n\trenderOperationActions,\n\tactions,\n\tfooterSlot,\n\trenderItem,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOperationsCardProps) {\n\tconst strings = useStrings(defaultProductOperationsCardStrings, stringsProp);\n\tconst headerAction = onCreateOperation ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateOperation} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<PackageCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-operations-card--component w-full', className)}\n\t\t>\n\t\t\t{items.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateOperation ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateOperation} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectOperation ? () => onSelectOperation(item) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditOperation ? () => onEditOperation(item) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteOperation ? () => onDeleteOperation(item) : undefined;\n\t\t\t\t\t\tconst operationActions = [\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderOperationActions\n\t\t\t\t\t\t\t? renderOperationActions(item, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={item} actions={operationActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn renderItem ? (\n\t\t\t\t\t\t\t<div key={item.id}>{renderItem(item, index)}</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ProductOperationRow\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tactionFallback={strings.actionLabel}\n\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductOperationsCard.displayName = 'ProductOperationsCard';\n","import { Plus, SlidersHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOptionsSummaryStrings } from '../products.strings';\nimport type { ProductOptionsSummaryProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductSummaryRow } from '../partials/product-rows';\nimport { ProductOptionActionMenu } from './product-option-action-menu';\n\nexport function ProductOptionsSummary({\n\toptions = [],\n\tonManageOptions,\n\tonCreateOption,\n\tonSelectOption,\n\tonEditOption,\n\tonDeleteOption,\n\trenderOptionActions,\n\tactions,\n\tfooterSlot,\n\trenderOption,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOptionsSummaryProps) {\n\tconst strings = useStrings(defaultProductOptionsSummaryStrings, stringsProp);\n\tconst hasOptionActions = !!(\n\t\tonSelectOption ||\n\t\tonEditOption ||\n\t\tonDeleteOption ||\n\t\trenderOptionActions\n\t);\n\tconst cardActions = [\n\t\t...(actions ?? []),\n\t\t...(onCreateOption && onManageOptions ? [{\n\t\t\tid: 'manage-options',\n\t\t\tlabel: strings.manageLabel,\n\t\t\ticon: <SlidersHorizontal className=\"size-3.5\" />,\n\t\t\tonClick: onManageOptions,\n\t\t}] : []),\n\t];\n\tconst headerAction = onCreateOption || onManageOptions ? (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tonClick={onCreateOption ?? onManageOptions}\n\t\t\ticon={onCreateOption ? Plus : SlidersHorizontal}\n\t\t>\n\t\t\t{onCreateOption ? strings.createLabel : strings.manageLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<SlidersHorizontal className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={cardActions.length > 0 ? cardActions : undefined}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-options-summary--component w-full', className)}\n\t\t>\n\t\t\t{options.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateOption ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateOption} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\tconst rowActions = hasOptionActions ? (\n\t\t\t\t\t\t\t\t<ProductOptionActionMenu\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\tonSelectOption={onSelectOption}\n\t\t\t\t\t\t\t\t\tonEditOption={onEditOption}\n\t\t\t\t\t\t\t\t\tonDeleteOption={onDeleteOption}\n\t\t\t\t\t\t\t\t\trenderOptionActions={renderOptionActions}\n\t\t\t\t\t\t\t\t\tmenuLabel={strings.actionsLabel}\n\t\t\t\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\t\t\t\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\t\tactionsLabel: strings.actionsLabel,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : undefined;\n\n\t\t\t\t\t\t\treturn renderOption ? (\n\t\t\t\t\t\t\t\t<div key={option.id}>{renderOption(option, index)}</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\titem={option}\n\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})()\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductOptionsSummary.displayName = 'ProductOptionsSummary';\n","import { Pencil, Plus, ShieldCheck, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductPoliciesCardStrings } from '../products.strings';\nimport type { ProductPoliciesCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductSummaryRow } from '../partials/product-rows';\n\nexport function ProductPoliciesCard({\n\tpolicies = [],\n\tonCreatePolicy,\n\tonSelectPolicy,\n\tonEditPolicy,\n\tonDeletePolicy,\n\trenderPolicyActions,\n\tactions,\n\tfooterSlot,\n\trenderPolicy,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductPoliciesCardProps) {\n\tconst strings = useStrings(defaultProductPoliciesCardStrings, stringsProp);\n\tconst headerAction = onCreatePolicy ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreatePolicy} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ShieldCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-policies-card--component w-full', className)}\n\t\t>\n\t\t\t{policies.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreatePolicy ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreatePolicy} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{policies.map((policy, index) => (\n\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\tconst onSelect = onSelectPolicy ? () => onSelectPolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst onEdit = onEditPolicy ? () => onEditPolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst onDelete = onDeletePolicy ? () => onDeletePolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst policyActions = [\n\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tconst rowActions = renderPolicyActions\n\t\t\t\t\t\t\t\t? renderPolicyActions(policy, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t: <ProductRowActions item={policy} actions={policyActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\t\treturn renderPolicy ? (\n\t\t\t\t\t\t\t\t<div key={policy.id}>{renderPolicy(policy, index)}</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\tkey={policy.id}\n\t\t\t\t\t\t\t\t\titem={policy}\n\t\t\t\t\t\t\t\t\tactionLabel={strings.viewLabel}\n\t\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})()\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductPoliciesCard.displayName = 'ProductPoliciesCard';\n","export const PRODUCT_EMPTY_VALUE = '-';\n","import {\n\tArrowRight,\n\tEye,\n\tPencil,\n\tPlus,\n\tReceiptText,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductQuotePreviewCardStrings } from '../products.strings';\nimport type { ProductQuotePreviewCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { PRODUCT_EMPTY_VALUE } from '../partials/product-values';\n\nexport function ProductQuotePreviewCard({\n\tlines = [],\n\tsubtotal,\n\ttax,\n\tdiscount,\n\ttotal,\n\tonOpenQuote,\n\tonCreateLine,\n\tonSelectLine,\n\tonEditLine,\n\tonDeleteLine,\n\trenderLineActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductQuotePreviewCardProps) {\n\tconst strings = useStrings(defaultProductQuotePreviewCardStrings, stringsProp);\n\tconst headerAction = onCreateLine || onOpenQuote ? (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t{!!onCreateLine && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateLine} icon={Plus}>\n\t\t\t\t\t{strings.createLineLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onOpenQuote && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onOpenQuote} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t{strings.actionLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ReceiptText className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-quote-preview-card--component w-full', className)}\n\t\t>\n\t\t\t{lines.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateLine ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateLine} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLineLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"space-y-3\">\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t{lines.map((line, index) => {\n\t\t\t\t\t\t\tconst onSelect = onSelectLine ? () => onSelectLine(line) : undefined;\n\t\t\t\t\t\t\tconst onEdit = onEditLine ? () => onEditLine(line) : undefined;\n\t\t\t\t\t\t\tconst onDelete = onDeleteLine ? () => onDeleteLine(line) : undefined;\n\t\t\t\t\t\t\tconst lineActions = [\n\t\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\t\tlabel: strings.viewLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: strings.editLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\tlabel: strings.deleteLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tconst rowActions = renderLineActions\n\t\t\t\t\t\t\t\t? renderLineActions(line, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t: <ProductRowActions item={line} actions={lineActions} menuLabel={strings.lineActionsLabel} />;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={line.id} className=\"flex items-start justify-between gap-3 rounded-md border border-border bg-muted/20 px-3 py-2\">\n\t\t\t\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate\">{line.label}</Text>\n\t\t\t\t\t\t\t\t\t\t{!!line.description && <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">{line.description}</Text>}\n\t\t\t\t\t\t\t\t\t\t{!!line.quantity && <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">{line.quantity}</Text>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"flex shrink-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums\">{line.amount}</Text>\n\t\t\t\t\t\t\t\t\t\t{rowActions}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5 rounded-md bg-muted/30 px-3 py-2.5\">\n\t\t\t\t\t\t{subtotal !== undefined && <InlineStat label={strings.subtotalLabel} value={subtotal} mono />}\n\t\t\t\t\t\t{tax !== undefined && <InlineStat label={strings.taxLabel} value={tax} mono />}\n\t\t\t\t\t\t{discount !== undefined && <InlineStat label={strings.discountLabel} value={discount} mono valueClassName=\"text-success\" />}\n\t\t\t\t\t\t<InlineStat label={strings.totalLabel} value={total ?? PRODUCT_EMPTY_VALUE} mono labelClassName=\"font-semibold\" valueClassName=\"font-semibold\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductQuotePreviewCard.displayName = 'ProductQuotePreviewCard';\n","import {\n\tClipboardCheck,\n\tPencil,\n\tPlus,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Progress,\n} from '@/components/base/display';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductReadinessCardStrings } from '../products.strings';\nimport type { ProductReadinessCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductReadinessRow } from '../partials/product-rows';\nimport { clampProductPercent } from '../partials/product-tone';\n\nexport function ProductReadinessCard({\n\titems = [],\n\tscore,\n\tscoreLabel,\n\tsummary,\n\tonCreateReadinessItem,\n\tonSelectReadinessItem,\n\tonEditReadinessItem,\n\tonDeleteReadinessItem,\n\trenderReadinessItemActions,\n\tactions,\n\tfooterSlot,\n\trenderItem,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductReadinessCardProps) {\n\tconst strings = useStrings(defaultProductReadinessCardStrings, stringsProp);\n\tconst completion = score === undefined ? undefined : clampProductPercent(score);\n\tconst headerAction = onCreateReadinessItem ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateReadinessItem} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ClipboardCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-readiness-card--component w-full', className)}\n\t\t>\n\t\t\t{completion !== undefined && (\n\t\t\t\t<div className=\"mb-3 rounded-md border border-border bg-muted/20 px-3 py-2.5\">\n\t\t\t\t\t<div className=\"mb-2 flex items-center justify-between gap-3\">\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{scoreLabel ?? strings.scoreLabel}</Text>\n\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">{completion}%</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\tvalue={completion}\n\t\t\t\t\t\taria-label={typeof scoreLabel === 'string' ? scoreLabel : strings.progressLabel}\n\t\t\t\t\t\taria-valuetext={`${completion}%`}\n\t\t\t\t\t\tclassName=\"h-1.5\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!summary && <Text size=\"xs\" type=\"secondary\" className=\"mb-3 leading-relaxed\">{summary}</Text>}\n\t\t\t{items.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateReadinessItem ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateReadinessItem} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectReadinessItem ? () => onSelectReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditReadinessItem ? () => onEditReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteReadinessItem ? () => onDeleteReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst readinessActions = [\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderReadinessItemActions\n\t\t\t\t\t\t\t? renderReadinessItemActions(item, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={item} actions={readinessActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn renderItem ? (\n\t\t\t\t\t\t\t<div key={item.id}>{renderItem(item, index)}</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ProductReadinessRow\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tactionFallback={strings.actionLabel}\n\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductReadinessCard.displayName = 'ProductReadinessCard';\n","import { Eye, Layers3, Pencil, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductStructureCardStrings } from '../products.strings';\nimport type { ProductStructureCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductStructureMetricRow } from '../partials/product-rows';\n\nexport function ProductStructureCard({\n\tmetrics = [],\n\tonCreateMetric,\n\tonSelectMetric,\n\tonEditMetric,\n\tonDeleteMetric,\n\trenderMetricActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductStructureCardProps) {\n\tconst strings = useStrings(defaultProductStructureCardStrings, stringsProp);\n\tconst headerAction = onCreateMetric ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateMetric} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Layers3 className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-structure-card--component w-full', className)}\n\t\t>\n\t\t\t{metrics.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateMetric ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateMetric} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{metrics.map((metric, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectMetric ? () => onSelectMetric(metric) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditMetric ? () => onEditMetric(metric) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteMetric ? () => onDeleteMetric(metric) : undefined;\n\t\t\t\t\t\tconst metricActions = [\n\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderMetricActions\n\t\t\t\t\t\t\t? renderMetricActions(metric, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={metric} actions={metricActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ProductStructureMetricRow\n\t\t\t\t\t\t\t\tkey={metric.id}\n\t\t\t\t\t\t\t\tmetric={metric}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductStructureCard.displayName = 'ProductStructureCard';\n","import { Copy, Eye, Pencil, Trash2 } from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductVariantActionMenuStrings,\n} from '../products.strings';\nimport type {\n\tProductVariantActionMenuProps,\n\tProductVariantSummary,\n} from '../products.types';\nimport { ProductRowActions } from '../partials/product-actions';\n\nexport function ProductVariantActionMenu({\n\tvariant,\n\tindex = 0,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tmenuLabel,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantActionMenuProps) {\n\tconst strings = useStrings(defaultProductVariantActionMenuStrings, stringsProp);\n\tconst onSelect = onSelectVariant ? () => onSelectVariant(variant) : undefined;\n\tconst onEdit = onEditVariant ? () => onEditVariant(variant) : undefined;\n\tconst onDuplicate = onDuplicateVariant ? () => onDuplicateVariant(variant) : undefined;\n\tconst onDelete = onDeleteVariant ? () => onDeleteVariant(variant) : undefined;\n\tconst hasActions = !!(onSelect || onEdit || onDuplicate || onDelete || renderVariantActions);\n\n\tif (!hasActions) return null;\n\n\tif (renderVariantActions) {\n\t\treturn (\n\t\t\t<div className={cn('product-variant-action-menu--component flex justify-end', className)}>\n\t\t\t\t{renderVariantActions(variant, { index, onSelect, onEdit, onDuplicate, onDelete })}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ProductRowActions<ProductVariantSummary>\n\t\t\titem={variant}\n\t\t\tmenuLabel={menuLabel ?? strings.actionsLabel}\n\t\t\tclassName={cn('product-variant-action-menu--component', className)}\n\t\t\tactions={[\n\t\t\t\t...(onSelect ? [{\n\t\t\t\t\tid: 'open',\n\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onEdit ? [{\n\t\t\t\t\tid: 'edit',\n\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDuplicate ? [{\n\t\t\t\t\tid: 'duplicate',\n\t\t\t\t\tlabel: strings.duplicateLabel,\n\t\t\t\t\ticon: <Copy className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDuplicate(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDelete ? [{\n\t\t\t\t\tid: 'delete',\n\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t}] : []),\n\t\t\t]}\n\t\t/>\n\t);\n}\n\nProductVariantActionMenu.displayName = 'ProductVariantActionMenu';\n","import type { ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { ProductVariantActionMenu } from '../components/product-variant-action-menu';\nimport type {\n\tProductVariantSummary,\n\tProductVariantsTableProps,\n} from '../products.types';\nimport type { ProductVariantsTableStrings } from '../products.strings';\n\nexport function ProductVariantActions({\n\tvariant,\n\tindex,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tstrings,\n\tclassName,\n}: {\n\tvariant: ProductVariantSummary;\n\tindex: number;\n\tonSelectVariant?: ProductVariantsTableProps['onSelectVariant'];\n\tonEditVariant?: ProductVariantsTableProps['onEditVariant'];\n\tonDuplicateVariant?: ProductVariantsTableProps['onDuplicateVariant'];\n\tonDeleteVariant?: ProductVariantsTableProps['onDeleteVariant'];\n\trenderVariantActions?: ProductVariantsTableProps['renderVariantActions'];\n\tstrings: ProductVariantsTableStrings;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<ProductVariantActionMenu\n\t\t\tvariant={variant}\n\t\t\tindex={index}\n\t\t\tonSelectVariant={onSelectVariant}\n\t\t\tonEditVariant={onEditVariant}\n\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\trenderVariantActions={renderVariantActions}\n\t\t\tmenuLabel={strings.headers.actions}\n\t\t\tclassName={cn('product-variant-actions--component product-variants-table--row-actions', className)}\n\t\t\tstrings={{\n\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\tduplicateLabel: strings.duplicateLabel,\n\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\tactionsLabel: strings.headers.actions,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nexport function ProductVariantCell({\n\tlabel,\n\tchildren,\n\tclassName,\n\ttextClassName,\n\tweight,\n}: {\n\tlabel: ReactNode;\n\tchildren: ReactNode;\n\tclassName?: string;\n\ttextClassName?: string;\n\tweight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}) {\n\treturn (\n\t\t<div className={cn('product-variant-cell--component grid min-w-0 grid-cols-[6rem_minmax(0,1fr)] items-center gap-2 lg:block lg:space-y-0.5', className)}>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide lg:sr-only\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text size=\"xs\" type=\"secondary\" weight={weight} className={cn('truncate', textClassName)}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import { ListChecks, Plus } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantsTableStrings } from '../products.strings';\nimport type { ProductVariantsTableProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport {\n\tProductVariantCell,\n} from '../partials/product-variant-table-parts';\nimport { PRODUCT_EMPTY_VALUE } from '../partials/product-values';\nimport { ProductVariantActionMenu } from './product-variant-action-menu';\n\nexport function ProductVariantsTable({\n\tvariants = [],\n\tonCreateVariant,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantsTableProps) {\n\tconst strings = useStrings(defaultProductVariantsTableStrings, stringsProp);\n\tconst hasVariantActions = !!(\n\t\tonSelectVariant ||\n\t\tonEditVariant ||\n\t\tonDuplicateVariant ||\n\t\tonDeleteVariant ||\n\t\trenderVariantActions\n\t);\n\tconst gridTemplate = 'lg:grid-cols-[minmax(12rem,1.45fr)_minmax(4rem,0.6fr)_minmax(4rem,0.55fr)_minmax(4.75rem,0.7fr)_minmax(4rem,0.55fr)]';\n\tconst headerAction = onCreateVariant ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ListChecks className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variants-table--component w-full', className)}\n\t\t>\n\t\t\t{variants.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateVariant ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"product-variants-table--table rounded-md border border-border\">\n\t\t\t\t\t<div className=\"lg:min-w-136\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn('hidden gap-3 border-b border-border bg-muted/40 px-3 py-2 lg:grid', gridTemplate)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.variant}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.price}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.inventory}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.sku}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.updated}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"divide-y divide-border\">\n\t\t\t\t\t\t\t{variants.map((variant, index) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={variant.id}\n\t\t\t\t\t\t\t\t\tclassName={cn('grid gap-2 px-3 py-3 lg:items-center lg:gap-3 lg:py-2.5', gridTemplate)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 items-start gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate\">{variant.name}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.status && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={variant.statusVariant ?? 'secondary'}>{variant.status}</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.description && <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">{variant.description}</Text>}\n\t\t\t\t\t\t\t\t\t\t\t\t{!!(variant.options?.length || variant.channels) && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mt-1.5 flex flex-wrap items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{variant.options?.map((option, optionIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge key={optionIndex} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{option}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.channels && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"pl-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.headers.channels}: {variant.channels}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{!!hasVariantActions && (\n\t\t\t\t\t\t\t\t\t\t\t\t<ProductVariantActionMenu\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectVariant={onSelectVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonEditVariant={onEditVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderVariantActions={renderVariantActions}\n\t\t\t\t\t\t\t\t\t\t\t\t\tmenuLabel={strings.headers.actions}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tduplicateLabel: strings.duplicateLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactionsLabel: strings.headers.actions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.price} weight=\"semibold\" textClassName=\"tabular-nums text-foreground\">{variant.price ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.inventory} textClassName=\"tabular-nums\">{variant.inventory ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.sku} textClassName=\"tabular-nums\">{variant.sku ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.updated}>{variant.updatedAt ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantsTable.displayName = 'ProductVariantsTable';\n","import { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOverviewStrings } from '../products.strings';\nimport type { ProductOverviewProps } from '../products.types';\nimport { ProductContractOverview } from './product-contract-overview';\nimport { ProductDetailsCard } from './product-details-card';\nimport { ProductOperationsCard } from './product-operations-card';\nimport { ProductOptionsSummary } from './product-options-summary';\nimport { ProductPoliciesCard } from './product-policies-card';\nimport { ProductQuotePreviewCard } from './product-quote-preview-card';\nimport { ProductReadinessCard } from './product-readiness-card';\nimport { ProductStructureCard } from './product-structure-card';\nimport { ProductVariantsTable } from './product-variants-table';\n\nexport function ProductOverview({\n\tdetails,\n\tcontract,\n\toptions,\n\tvariants,\n\treadiness,\n\tstructure,\n\toperations,\n\tquote,\n\tpolicies,\n\tslots,\n\tclassName,\n\tmainClassName,\n\trailClassName,\n\tstrings: stringsProp,\n}: ProductOverviewProps) {\n\tconst strings = useStrings(defaultProductOverviewStrings, stringsProp);\n\tconst hasRail = !!(readiness || structure || operations || quote || policies || slots?.railTop || slots?.railBottom);\n\n\treturn (\n\t\t<div className={cn('product-overview--component @container/product-overview space-y-4', className)}>\n\t\t\t{slots?.before}\n\t\t\t<div className={cn('grid gap-4', hasRail && '@5xl/product-overview:grid-cols-[minmax(0,1fr)_22rem]')}>\n\t\t\t\t<section aria-label={strings.mainLabel} className={cn('product-overview--main min-w-0 space-y-4', mainClassName)}>\n\t\t\t\t\t{slots?.mainTop}\n\t\t\t\t\t{!!details && <ProductDetailsCard {...details} />}\n\t\t\t\t\t{!!contract && <ProductContractOverview {...contract} />}\n\t\t\t\t\t{!!options && <ProductOptionsSummary {...options} />}\n\t\t\t\t\t{!!variants && <ProductVariantsTable {...variants} />}\n\t\t\t\t\t{slots?.mainBottom}\n\t\t\t\t</section>\n\t\t\t\t{!!hasRail && (\n\t\t\t\t\t<aside aria-label={strings.railLabel} className={cn('product-overview--rail min-w-0 space-y-4', railClassName)}>\n\t\t\t\t\t\t{slots?.railTop}\n\t\t\t\t\t\t{!!readiness && <ProductReadinessCard {...readiness} />}\n\t\t\t\t\t\t{!!structure && <ProductStructureCard {...structure} />}\n\t\t\t\t\t\t{!!operations && <ProductOperationsCard {...operations} />}\n\t\t\t\t\t\t{!!quote && <ProductQuotePreviewCard {...quote} />}\n\t\t\t\t\t\t{!!policies && <ProductPoliciesCard {...policies} />}\n\t\t\t\t\t\t{slots?.railBottom}\n\t\t\t\t\t</aside>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{slots?.after}\n\t\t</div>\n\t);\n}\n\nProductOverview.displayName = 'ProductOverview';\n","import { ArrowLeft, ListChecks } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList, type MetadataListItem } from '@/components/composed/data-display/metadata';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantDetailsStrings } from '../products.strings';\nimport type {\n\tProductOptionSummary,\n\tProductVariantDetailsProps,\n\tProductVariantSummary,\n} from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductSummaryRow } from '../partials/product-rows';\nimport { ProductVariantActionMenu } from './product-variant-action-menu';\n\nconst isPresent = (value: ReactNode): boolean => (\n\tvalue !== undefined &&\n\tvalue !== null &&\n\tvalue !== false &&\n\tvalue !== ''\n);\n\ntype ProductVariantMetadataLabels = {\n\tprice: string;\n\tinventory: string;\n\tsku: string;\n\tchannels: string;\n\tupdated: string;\n};\n\nfunction getDefaultMetadata(\n\tvariant: ProductVariantSummary,\n\tlabels: ProductVariantMetadataLabels,\n): MetadataListItem[] {\n\treturn [\n\t\t{ label: labels.price, value: variant.price },\n\t\t{ label: labels.inventory, value: variant.inventory },\n\t\t{ label: labels.sku, value: variant.sku },\n\t\t{ label: labels.channels, value: variant.channels },\n\t\t{ label: labels.updated, value: variant.updatedAt },\n\t].filter((item) => isPresent(item.value));\n}\n\nexport function ProductVariantDetails({\n\tvariant,\n\tmetadata,\n\toptionItems = [],\n\tmedia,\n\tonBack,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\tonSelectOption,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\trenderActions,\n\trenderMetadata,\n\trenderOption,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantDetailsProps) {\n\tconst strings = useStrings(defaultProductVariantDetailsStrings, stringsProp);\n\tconst resolvedMetadata = variant ? (metadata ?? getDefaultMetadata(variant, strings.metadata)) : [];\n\tconst hasActionMenu = !!(\n\t\tvariant &&\n\t\t(onSelectVariant || onEditVariant || onDuplicateVariant || onDeleteVariant || renderActions)\n\t);\n\tconst headerAction = (\n\t\t<div className=\"product-variant-details--header-actions flex items-center gap-2\">\n\t\t\t{!!onBack && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onBack} icon={ArrowLeft}>\n\t\t\t\t\t{strings.backLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!hasActionMenu && variant && (\n\t\t\t\t<ProductVariantActionMenu\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tonSelectVariant={onSelectVariant}\n\t\t\t\t\tonEditVariant={onEditVariant}\n\t\t\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\t\t\trenderVariantActions={renderActions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n\tconst selectedOptions = variant?.options ?? [];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ListChecks className=\"size-4\" />}\n\t\t\ttitle={variant?.name ?? strings.title}\n\t\t\ttitleSuffix={variant?.status ? (\n\t\t\t\t<Badge variant={variant.statusVariant ?? 'secondary'}>{variant.status}</Badge>\n\t\t\t) : undefined}\n\t\t\tdescription={variant?.description ?? strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={onBack || hasActionMenu ? headerAction : undefined}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variant-details--component w-full', className)}\n\t\t>\n\t\t\t{!variant ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"product-variant-details--body grid gap-5\">\n\t\t\t\t\t{!!media && (\n\t\t\t\t\t\t<div className=\"product-variant-details--media overflow-hidden rounded-md border border-border bg-muted/30\">\n\t\t\t\t\t\t\t{media}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{renderMetadata ? (\n\t\t\t\t\t\trenderMetadata(variant)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<MetadataList\n\t\t\t\t\t\t\ttitle={strings.factsTitle}\n\t\t\t\t\t\t\titems={resolvedMetadata}\n\t\t\t\t\t\t\tcolumns={3}\n\t\t\t\t\t\t\tdense\n\t\t\t\t\t\t\tclassName=\"product-variant-details--metadata\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!selectedOptions.length && (\n\t\t\t\t\t\t<div className=\"product-variant-details--selected-options space-y-2\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.selectedOptionsTitle}</Text>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-1.5\">\n\t\t\t\t\t\t\t\t{selectedOptions.map((option, index) => (\n\t\t\t\t\t\t\t\t\t<Badge key={index} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t{option}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!optionItems.length && (\n\t\t\t\t\t\t<div className=\"product-variant-details--related-options space-y-2\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.relatedOptionsTitle}</Text>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{optionItems.map((option: ProductOptionSummary, index) => (\n\t\t\t\t\t\t\t\t\trenderOption ? (\n\t\t\t\t\t\t\t\t\t\t<div key={option.id}>{renderOption(option, index)}</div>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\t\t\titem={option}\n\t\t\t\t\t\t\t\t\t\t\tactionLabel={strings.viewOptionLabel}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={onSelectOption ? () => onSelectOption(option) : undefined}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantDetails.displayName = 'ProductVariantDetails';\n","import { Pencil, Save, Trash2, X } from 'lucide-react';\nimport { type FormEvent, useId, useState } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { FormField } from '@/components/base/forms';\nimport { Input, Select, Textarea } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantEditorStrings } from '../products.strings';\nimport type {\n\tProductChoice,\n\tProductVariantEditorProps,\n\tProductVariantEditorValues,\n\tProductVariantOptionField,\n} from '../products.types';\n\nconst toSelectOptions = (choices: ProductChoice[]) => (\n\tchoices.map((choice) => ({\n\t\tvalue: choice.value,\n\t\tlabel: choice.label,\n\t\tdisabled: choice.disabled,\n\t}))\n);\n\nexport function ProductVariantEditor({\n\tvalue: valueProp,\n\tdefaultValue,\n\toptionFields = [],\n\tstatusOptions = [],\n\tonValueChange,\n\tonSubmit,\n\tonCancel,\n\tonDelete,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tdisabled = false,\n\tisSubmitting = false,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantEditorProps) {\n\tconst strings = useStrings(defaultProductVariantEditorStrings, stringsProp);\n\tconst formId = useId();\n\tconst isControlled = valueProp !== undefined;\n\tconst [internalValue, setInternalValue] = useState<ProductVariantEditorValues>(defaultValue ?? {});\n\tconst value = (isControlled ? valueProp : internalValue) ?? {};\n\tconst isDisabled = disabled || isSubmitting;\n\n\tconst updateValue = (next: ProductVariantEditorValues) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(next);\n\t\t}\n\n\t\tonValueChange?.(next);\n\t};\n\n\tconst updateField = (field: keyof Omit<ProductVariantEditorValues, 'options'>, nextValue: string) => {\n\t\tupdateValue({\n\t\t\t...value,\n\t\t\t[field]: nextValue,\n\t\t});\n\t};\n\n\tconst updateOption = (field: ProductVariantOptionField, nextValue: string | undefined) => {\n\t\tupdateValue({\n\t\t\t...value,\n\t\t\toptions: {\n\t\t\t\t...(value.options ?? {}),\n\t\t\t\t[field.id]: nextValue,\n\t\t\t},\n\t\t});\n\t};\n\n\tconst handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n\t\tevent.preventDefault();\n\t\tonSubmit?.(value);\n\t};\n\n\tconst defaultFooter = (\n\t\t<div className=\"product-variant-editor--footer flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between\">\n\t\t\t<div>\n\t\t\t\t{!!onDelete && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tonClick={() => onDelete(value)}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={Trash2}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.deleteLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\">\n\t\t\t\t{!!onCancel && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={X}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.cancelLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{!!onSubmit && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tform={formId}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={Save}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isSubmitting ? strings.savingLabel : strings.saveLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n\tconst hasDefaultFooter = !!(onDelete || onCancel || onSubmit);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Pencil className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot ?? (hasDefaultFooter ? defaultFooter : undefined)}\n\t\t\tfooterDivider\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variant-editor--component w-full', className)}\n\t\t>\n\t\t\t<form id={formId} className=\"product-variant-editor--form grid gap-5\" onSubmit={handleSubmit}>\n\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t<Text weight=\"semibold\">{strings.identityTitle}</Text>\n\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t<FormField label={strings.fields.name} required>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.name ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('name', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.name}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.sku}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.sku ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('sku', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.sku}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.description} className=\"md:col-span-2\">\n\t\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\t\tvalue={value.description ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('description', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.description}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\tautoResize\n\t\t\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\n\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t<Text weight=\"semibold\">{strings.commercialTitle}</Text>\n\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t<FormField label={strings.fields.price}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.price ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('price', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.price}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.inventory}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.inventory ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('inventory', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.inventory}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.status}>\n\t\t\t\t\t\t\t{statusOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\toptions={toSelectOptions(statusOptions)}\n\t\t\t\t\t\t\t\t\tvalue={value.status ?? null}\n\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateField('status', nextValue ?? '')}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.statusPlaceholder}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\taria-label={strings.fields.status}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.status ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('status', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.status}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.channels}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.channels ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('channels', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.channels}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\n\t\t\t\t{!!optionFields.length && (\n\t\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t\t<Text weight=\"semibold\">{strings.optionsTitle}</Text>\n\t\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t\t{optionFields.map((field) => {\n\t\t\t\t\t\t\t\tconst fieldValue = field.value ?? value.options?.[field.id] ?? '';\n\t\t\t\t\t\t\t\tconst hasChoices = !!field.choices?.length;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\t\t\tkey={field.id}\n\t\t\t\t\t\t\t\t\t\tlabel={field.label}\n\t\t\t\t\t\t\t\t\t\thelperText={field.helperText}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{hasChoices ? (\n\t\t\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\t\t\toptions={toSelectOptions(field.choices ?? [])}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue || null}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateOption(field, nextValue)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={field.placeholder ?? strings.optionPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateOption(field, event.target.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={field.placeholder ?? strings.optionPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</section>\n\t\t\t\t)}\n\t\t\t</form>\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantEditor.displayName = 'ProductVariantEditor';\n","import { cn } from '@/lib/utils';\n\nimport { ProductOverview } from './components/product-overview';\nimport type { ProductOverviewProps } from './products.types';\n\nexport function Products({ className, ...props }: ProductOverviewProps) {\n\treturn (\n\t\t<ProductOverview\n\t\t\t{...props}\n\t\t\tclassName={cn('products--component', className)}\n\t\t/>\n\t);\n}\n\nProducts.displayName = 'Products';\n\nexport { ProductOverview } from './components/product-overview';\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/components/features/products/products.strings.ts","../../../../src/components/features/products/partials/product-empty-state.tsx","../../../../src/components/features/products/partials/product-tone.tsx","../../../../src/components/features/products/partials/product-metric-tile.tsx","../../../../src/components/features/products/partials/product-actions.tsx","../../../../src/components/features/products/partials/product-rows.tsx","../../../../src/components/features/products/components/product-contract-overview.tsx","../../../../src/components/features/products/components/product-details-card.tsx","../../../../src/components/features/products/components/product-option-action-menu.tsx","../../../../src/components/features/products/components/product-operations-card.tsx","../../../../src/components/features/products/components/product-options-matrix.tsx","../../../../src/components/features/products/components/product-options-summary.tsx","../../../../src/components/features/products/components/product-policies-card.tsx","../../../../src/components/features/products/partials/product-values.ts","../../../../src/components/features/products/components/product-quote-preview-card.tsx","../../../../src/components/features/products/components/product-readiness-card.tsx","../../../../src/components/features/products/components/product-structure-card.tsx","../../../../src/components/features/products/components/product-variant-action-menu.tsx","../../../../src/components/features/products/partials/product-variant-table-parts.tsx","../../../../src/components/features/products/components/product-variants-table.tsx","../../../../src/components/features/products/components/product-overview.tsx","../../../../src/components/features/products/components/product-variant-details.tsx","../../../../src/components/features/products/components/product-variant-editor.tsx","../../../../src/components/features/products/components/product-variants-bulk-table.tsx","../../../../src/components/features/products/components/product-variants-manager.tsx","../../../../src/components/features/products/products.tsx"],"sourcesContent":["export interface ProductReadinessCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tscoreLabel: string;\n\tprogressLabel: string;\n\tcreateLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tactionLabel: string;\n}\n\nexport const defaultProductReadinessCardStrings: ProductReadinessCardStrings = {\n\ttitle: 'Readiness',\n\tdescription: 'Publishing checks and operational setup.',\n\tscoreLabel: 'Overall readiness',\n\tprogressLabel: 'Readiness progress',\n\tcreateLabel: 'Add check',\n\teditLabel: 'Edit check',\n\tdeleteLabel: 'Delete check',\n\tactionsLabel: 'Check actions',\n\temptyTitle: 'No readiness checks',\n\temptyDescription: 'Pass readiness items from your product workflow to show progress.',\n\tactionLabel: 'Open',\n};\n\nexport interface ProductStructureCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductStructureCardStrings: ProductStructureCardStrings = {\n\ttitle: 'Structure',\n\tdescription: 'Media, taxonomy, options, and content coverage.',\n\tcreateLabel: 'Add metric',\n\tviewLabel: 'Open',\n\teditLabel: 'Edit metric',\n\tdeleteLabel: 'Delete metric',\n\tactionsLabel: 'Metric actions',\n\temptyTitle: 'No structure metrics',\n\temptyDescription: 'Pass structure metrics to summarize the product setup.',\n};\n\nexport interface ProductOperationsCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tactionLabel: string;\n}\n\nexport const defaultProductOperationsCardStrings: ProductOperationsCardStrings = {\n\ttitle: 'Operations',\n\tdescription: 'Availability, channels, service rules, and fulfilment signals.',\n\tcreateLabel: 'Add signal',\n\teditLabel: 'Edit signal',\n\tdeleteLabel: 'Delete signal',\n\tactionsLabel: 'Signal actions',\n\temptyTitle: 'No operational signals',\n\temptyDescription: 'Pass operational rows to show channel and availability health.',\n\tactionLabel: 'Open',\n};\n\nexport interface ProductDetailsCardStrings {\n\ttitle: string;\n\tdescription: string;\n\teditLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductDetailsCardStrings: ProductDetailsCardStrings = {\n\ttitle: 'Product details',\n\tdescription: 'Core identity and catalogue fields.',\n\teditLabel: 'Edit details',\n\temptyTitle: 'No details',\n\temptyDescription: 'Pass metadata rows to render product details.',\n};\n\nexport interface ProductContractOverviewStrings {\n\ttitle: string;\n\tdescription: string;\n\ttermsTitle: string;\n\trulesTitle: string;\n\tactionLabel: string;\n\teditLabel: string;\n\tcreateRuleLabel: string;\n\tviewRuleLabel: string;\n\teditRuleLabel: string;\n\tdeleteRuleLabel: string;\n\truleActionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductContractOverviewStrings: ProductContractOverviewStrings = {\n\ttitle: 'Contract',\n\tdescription: 'Commercial terms, pricing rules, and customer-facing conditions.',\n\ttermsTitle: 'Terms',\n\trulesTitle: 'Rules',\n\tactionLabel: 'Manage contract',\n\teditLabel: 'Edit contract',\n\tcreateRuleLabel: 'Add rule',\n\tviewRuleLabel: 'Open rule',\n\teditRuleLabel: 'Edit rule',\n\tdeleteRuleLabel: 'Delete rule',\n\truleActionsLabel: 'Rule actions',\n\temptyTitle: 'No contract summary',\n\temptyDescription: 'Pass metrics, terms, or rules to summarize the product contract.',\n};\n\nexport interface ProductOptionsSummaryStrings {\n\ttitle: string;\n\tdescription: string;\n\tmanageLabel: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductOptionsSummaryStrings: ProductOptionsSummaryStrings = {\n\ttitle: 'Options',\n\tdescription: 'Variant-driving choices and add-ons customers can select.',\n\tmanageLabel: 'Manage options',\n\tcreateLabel: 'Add option',\n\tviewLabel: 'Open option',\n\teditLabel: 'Edit option',\n\tdeleteLabel: 'Delete option',\n\tactionsLabel: 'Option actions',\n\temptyTitle: 'No options',\n\temptyDescription: 'Pass option groups to summarize configurable product choices.',\n};\n\nexport interface ProductOptionActionMenuStrings {\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n}\n\nexport const defaultProductOptionActionMenuStrings: ProductOptionActionMenuStrings = {\n\tviewLabel: 'Open option',\n\teditLabel: 'Edit option',\n\tdeleteLabel: 'Delete option',\n\tactionsLabel: 'Option actions',\n};\n\nexport interface ProductOptionsMatrixStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\taddValueLabel: string;\n\taddAnotherValueLabel: string;\n\taddAnotherOptionLabel: string;\n\tdeleteValueLabel: string;\n\tdoneLabel: string;\n\tsaveLabel: string;\n\tcancelLabel: string;\n\texpandOptionLabel: string;\n\tcollapseOptionLabel: string;\n\tactionsLabel: string;\n\toptionNameLabel: string;\n\toptionValuesLabel: string;\n\tvaluesLabel: string;\n\tuseForVariantsLabel: string;\n\tusedForVariantsLabel: string;\n\tnotUsedForVariantsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tnoValuesLabel: string;\n}\n\nexport const defaultProductOptionsMatrixStrings: ProductOptionsMatrixStrings = {\n\ttitle: 'Variant options',\n\tdescription: 'Define option groups and values before generating sellable variants.',\n\tcreateLabel: 'Add attribute',\n\teditLabel: 'Configure',\n\tdeleteLabel: 'Delete option',\n\taddValueLabel: 'Add value',\n\taddAnotherValueLabel: 'Add another value',\n\taddAnotherOptionLabel: 'Add another option',\n\tdeleteValueLabel: 'Delete value',\n\tdoneLabel: 'Done',\n\tsaveLabel: 'Save',\n\tcancelLabel: 'Cancel',\n\texpandOptionLabel: 'Expand option',\n\tcollapseOptionLabel: 'Collapse option',\n\tactionsLabel: 'Option actions',\n\toptionNameLabel: 'Option name',\n\toptionValuesLabel: 'Option values',\n\tvaluesLabel: 'Values',\n\tuseForVariantsLabel: 'Use for variants',\n\tusedForVariantsLabel: 'Used for variants',\n\tnotUsedForVariantsLabel: 'Not used for variants',\n\temptyTitle: 'No option groups',\n\temptyDescription: 'Add options such as size, color, or packaging to create variant combinations.',\n\tnoValuesLabel: 'No values',\n};\n\nexport interface ProductQuotePreviewCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tsubtotalLabel: string;\n\ttaxLabel: string;\n\tdiscountLabel: string;\n\ttotalLabel: string;\n\tactionLabel: string;\n\tcreateLineLabel: string;\n\tviewLineLabel: string;\n\teditLineLabel: string;\n\tdeleteLineLabel: string;\n\tlineActionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductQuotePreviewCardStrings: ProductQuotePreviewCardStrings = {\n\ttitle: 'Quote preview',\n\tdescription: 'How the product appears in a compact customer quote.',\n\tsubtotalLabel: 'Subtotal',\n\ttaxLabel: 'Tax',\n\tdiscountLabel: 'Discount',\n\ttotalLabel: 'Total',\n\tactionLabel: 'Open quote',\n\tcreateLineLabel: 'Add line',\n\tviewLineLabel: 'Open line',\n\teditLineLabel: 'Edit line',\n\tdeleteLineLabel: 'Delete line',\n\tlineActionsLabel: 'Line actions',\n\temptyTitle: 'No quote lines',\n\temptyDescription: 'Pass quote lines to preview pricing.',\n};\n\nexport interface ProductPoliciesCardStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultProductPoliciesCardStrings: ProductPoliciesCardStrings = {\n\ttitle: 'Policies',\n\tdescription: 'Cancellation, booking, service, and customer-facing rules.',\n\tcreateLabel: 'Add policy',\n\tviewLabel: 'View',\n\teditLabel: 'Edit policy',\n\tdeleteLabel: 'Delete policy',\n\tactionsLabel: 'Policy actions',\n\temptyTitle: 'No policies',\n\temptyDescription: 'Pass policies to summarize customer-facing rules.',\n};\n\nexport interface ProductVariantsTableStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tduplicateLabel: string;\n\tdeleteLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\theaders: {\n\t\tvariant: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tchannels: string;\n\t\tupdated: string;\n\t\tactions: string;\n\t};\n}\n\nexport const defaultProductVariantsTableStrings: ProductVariantsTableStrings = {\n\ttitle: 'Variants',\n\tdescription: 'Sellable combinations with price, availability, and SKU.',\n\tcreateLabel: 'Add variant',\n\tviewLabel: 'Open variant',\n\teditLabel: 'Edit',\n\tduplicateLabel: 'Duplicate',\n\tdeleteLabel: 'Delete',\n\temptyTitle: 'No variants',\n\temptyDescription: 'Create or pass variants to show sellable rows.',\n\theaders: {\n\t\tvariant: 'Variant',\n\t\tsku: 'SKU',\n\t\tprice: 'Price',\n\t\tinventory: 'Available',\n\t\tchannels: 'Channels',\n\t\tupdated: 'Updated',\n\t\tactions: 'Actions',\n\t},\n};\n\nexport interface ProductVariantBulkTableStrings {\n\ttitle: string;\n\tdescription: string;\n\tcreateLabel: string;\n\tgenerateLabel: string;\n\tbulkEditLabel: string;\n\tviewLabel: string;\n\teditLabel: string;\n\tduplicateLabel: string;\n\tdeleteLabel: string;\n\tbulkApplyLabel: string;\n\tbulkDeleteLabel: string;\n\tselectedLabel: (count: number, total: number) => string;\n\tgroupCountLabel: (count: number) => string;\n\tclearSelectionLabel: string;\n\tselectAllLabel: string;\n\tselectRowLabel: (index: number) => string;\n\temptyTitle: string;\n\temptyDescription: string;\n\theaders: {\n\t\tvariant: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tsku: string;\n\t\tstatus: string;\n\t\tupdated: string;\n\t\tactions: string;\n\t};\n}\n\nexport const defaultProductVariantsBulkTableStrings: ProductVariantBulkTableStrings = {\n\ttitle: 'Variants',\n\tdescription: 'Review generated combinations, select rows, and apply bulk operations.',\n\tcreateLabel: 'Add variant',\n\tgenerateLabel: 'Generate variants',\n\tbulkEditLabel: 'Bulk edit selected',\n\tviewLabel: 'Open variant',\n\teditLabel: 'Edit',\n\tduplicateLabel: 'Duplicate',\n\tdeleteLabel: 'Delete',\n\tbulkApplyLabel: 'Apply changes',\n\tbulkDeleteLabel: 'Delete selected',\n\tselectedLabel: (count, total) => `${count} of ${total} selected`,\n\tgroupCountLabel: (count) => `${count} ${count === 1 ? 'variant' : 'variants'}`,\n\tclearSelectionLabel: 'Clear',\n\tselectAllLabel: 'Select all variants',\n\tselectRowLabel: (index) => `Select row ${index + 1}`,\n\temptyTitle: 'No variants',\n\temptyDescription: 'Generate variants from option groups or pass sellable rows from the app.',\n\theaders: {\n\t\tvariant: 'Variant',\n\t\tprice: 'Price',\n\t\tinventory: 'Available',\n\t\tsku: 'SKU',\n\t\tstatus: 'Status',\n\t\tupdated: 'Updated',\n\t\tactions: 'Actions',\n\t},\n};\n\nexport interface ProductVariantsManagerStrings {\n\ttitle: string;\n\tdescription: string;\n\toptionsTitle: string;\n\tvariantsTitle: string;\n\tgroupByLabel: string;\n\tsearchLabel: string;\n\tfilterLabel: string;\n\tgenerateLabel: string;\n\tcreateVariantLabel: string;\n\tactionsLabel: string;\n}\n\nexport const defaultProductVariantsManagerStrings: ProductVariantsManagerStrings = {\n\ttitle: 'Variants',\n\tdescription: 'Configure option groups first, then manage the generated sellable variants.',\n\toptionsTitle: 'Variant options',\n\tvariantsTitle: 'Variants',\n\tgroupByLabel: 'Group by',\n\tsearchLabel: 'Search variants',\n\tfilterLabel: 'Filter variants',\n\tgenerateLabel: 'Generate variants',\n\tcreateVariantLabel: 'Add variant',\n\tactionsLabel: 'Variant manager actions',\n};\n\nexport interface ProductVariantActionMenuStrings {\n\tviewLabel: string;\n\teditLabel: string;\n\tduplicateLabel: string;\n\tdeleteLabel: string;\n\tactionsLabel: string;\n}\n\nexport const defaultProductVariantActionMenuStrings: ProductVariantActionMenuStrings = {\n\tviewLabel: 'Open variant',\n\teditLabel: 'Edit',\n\tduplicateLabel: 'Duplicate',\n\tdeleteLabel: 'Delete',\n\tactionsLabel: 'Variant actions',\n};\n\nexport interface ProductVariantDetailsStrings {\n\ttitle: string;\n\tdescription: string;\n\tbackLabel: string;\n\tfactsTitle: string;\n\tselectedOptionsTitle: string;\n\trelatedOptionsTitle: string;\n\tviewOptionLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n\tmetadata: {\n\t\tprice: string;\n\t\tinventory: string;\n\t\tsku: string;\n\t\tchannels: string;\n\t\tupdated: string;\n\t};\n}\n\nexport const defaultProductVariantDetailsStrings: ProductVariantDetailsStrings = {\n\ttitle: 'Variant',\n\tdescription: 'Sellable variant details, options, pricing, and fulfilment data.',\n\tbackLabel: 'Back',\n\tfactsTitle: 'Variant facts',\n\tselectedOptionsTitle: 'Selected options',\n\trelatedOptionsTitle: 'Option groups',\n\tviewOptionLabel: 'Open option',\n\temptyTitle: 'No variant selected',\n\temptyDescription: 'Pass a variant to render a standalone variant detail surface.',\n\tmetadata: {\n\t\tprice: 'Price',\n\t\tinventory: 'Available',\n\t\tsku: 'SKU',\n\t\tchannels: 'Channels',\n\t\tupdated: 'Updated',\n\t},\n};\n\nexport interface ProductVariantEditorStrings {\n\ttitle: string;\n\tdescription: string;\n\tidentityTitle: string;\n\tcommercialTitle: string;\n\toptionsTitle: string;\n\tsaveLabel: string;\n\tsavingLabel: string;\n\tcancelLabel: string;\n\tdeleteLabel: string;\n\tstatusPlaceholder: string;\n\toptionPlaceholder: string;\n\tfields: {\n\t\tname: string;\n\t\tdescription: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tstatus: string;\n\t\tchannels: string;\n\t};\n\tplaceholders: {\n\t\tname: string;\n\t\tdescription: string;\n\t\tsku: string;\n\t\tprice: string;\n\t\tinventory: string;\n\t\tstatus: string;\n\t\tchannels: string;\n\t};\n}\n\nexport const defaultProductVariantEditorStrings: ProductVariantEditorStrings = {\n\ttitle: 'Edit variant',\n\tdescription: 'Controlled form for variant identity, pricing, inventory, and option values.',\n\tidentityTitle: 'Identity',\n\tcommercialTitle: 'Commercial setup',\n\toptionsTitle: 'Options',\n\tsaveLabel: 'Save variant',\n\tsavingLabel: 'Saving',\n\tcancelLabel: 'Cancel',\n\tdeleteLabel: 'Delete variant',\n\tstatusPlaceholder: 'Select status',\n\toptionPlaceholder: 'Select value',\n\tfields: {\n\t\tname: 'Name',\n\t\tdescription: 'Description',\n\t\tsku: 'SKU',\n\t\tprice: 'Price',\n\t\tinventory: 'Inventory',\n\t\tstatus: 'Status',\n\t\tchannels: 'Channels',\n\t},\n\tplaceholders: {\n\t\tname: '750 ml bottle',\n\t\tdescription: 'Standard retail pack',\n\t\tsku: 'BAL-750-CL',\n\t\tprice: 'US$ 24.00',\n\t\tinventory: '82',\n\t\tstatus: 'Active',\n\t\tchannels: 'Online store, POS',\n\t},\n};\n\nexport interface ProductOverviewStrings {\n\tmainLabel: string;\n\trailLabel: string;\n}\n\nexport const defaultProductOverviewStrings: ProductOverviewStrings = {\n\tmainLabel: 'Product overview',\n\trailLabel: 'Product supporting information',\n};\n","import type { ReactNode } from 'react';\n\nimport { EmptyState } from '@/components/composed/data-display';\nimport { cn } from '@/lib/utils';\n\nexport function ProductEmptyState({\n\ttitle,\n\tdescription,\n\taction,\n\tclassName,\n}: {\n\ttitle: ReactNode;\n\tdescription: ReactNode;\n\taction?: ReactNode;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<EmptyState\n\t\t\tpadding=\"small\"\n\t\t\tborder\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={action}\n\t\t\tclassName={cn('product-empty-state--component bg-muted/20', className)}\n\t\t/>\n\t);\n}\n","import type { ComposedBadgeVariant } from '@/components/base/badge';\nimport { cn } from '@/lib/utils';\n\nimport type { ProductTone } from '../products.types';\n\nexport const PRODUCT_TONE_BADGE: Record<ProductTone, ComposedBadgeVariant> = {\n\tneutral: 'secondary',\n\tprimary: 'primary',\n\tsuccess: 'success',\n\twarning: 'warning',\n\terror: 'error',\n\tinfo: 'info',\n};\n\nexport const PRODUCT_TONE_SURFACE: Record<ProductTone, string> = {\n\tneutral: 'border-border bg-card text-muted-foreground',\n\tprimary: 'border-primary/20 bg-primary/5 text-primary',\n\tsuccess: 'border-success/20 bg-success/5 text-success',\n\twarning: 'border-warning/30 bg-warning/8 text-warning',\n\terror: 'border-destructive/25 bg-destructive/8 text-destructive',\n\tinfo: 'border-info/20 bg-info/5 text-info',\n};\n\nexport function clampProductPercent(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\treturn Math.min(100, Math.max(0, Math.round(value)));\n}\n\nexport function ProductToneDot({ tone = 'neutral' }: { tone?: ProductTone }) {\n\treturn (\n\t\t<span\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName={cn('product-tone-dot--component size-2 rounded-full', {\n\t\t\t\t'bg-muted-foreground': tone === 'neutral',\n\t\t\t\t'bg-primary': tone === 'primary',\n\t\t\t\t'bg-success': tone === 'success',\n\t\t\t\t'bg-warning': tone === 'warning',\n\t\t\t\t'bg-destructive': tone === 'error',\n\t\t\t\t'bg-info': tone === 'info',\n\t\t\t})}\n\t\t/>\n\t);\n}\n","import { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type { ProductMetricSummary, ProductStructureMetric } from '../products.types';\nimport { PRODUCT_TONE_SURFACE } from './product-tone';\n\nexport function ProductMetricTile({ metric }: { metric: ProductStructureMetric | ProductMetricSummary }) {\n\tconst tone = metric.tone ?? 'neutral';\n\n\treturn (\n\t\t<div className={cn('product-metric-tile--component rounded-md border px-3 py-2.5', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t<div className=\"flex items-start justify-between gap-2\">\n\t\t\t\t<div className=\"min-w-0 space-y-0.5\">\n\t\t\t\t\t<Text size=\"xs\" type={tone === 'neutral' ? 'secondary' : 'main'} className=\"truncate\">\n\t\t\t\t\t\t{metric.label}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t{metric.value}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\t\t\t\t{'icon' in metric && !!metric.icon && (\n\t\t\t\t\t<div className=\"shrink-0 opacity-80\">{metric.icon}</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{!!metric.description && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-1.5 leading-snug\">\n\t\t\t\t\t{metric.description}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { DataTableActions, type ActionItem } from '@/components/base/table';\nimport { cn } from '@/lib/utils';\n\nexport function ProductRowActions<TItem>({\n\titem,\n\tactions,\n\tmenuLabel,\n\tclassName,\n}: {\n\titem: TItem;\n\tactions: ActionItem<TItem>[];\n\tmenuLabel: string;\n\tclassName?: string;\n}) {\n\tif (actions.length === 0) return null;\n\n\treturn (\n\t\t<div className={cn('product-row-actions--component flex justify-end', className)}>\n\t\t\t<DataTableActions\n\t\t\t\trow={item}\n\t\t\t\tactions={actions}\n\t\t\t\tmenuLabel={menuLabel}\n\t\t\t\tdisplayMode=\"menu\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { ArrowRight } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport type {\n\tProductOperationsItem,\n\tProductOptionSummary,\n\tProductPolicySummary,\n\tProductReadinessItem,\n\tProductStructureMetric,\n} from '../products.types';\nimport {\n\tPRODUCT_TONE_BADGE,\n\tPRODUCT_TONE_SURFACE,\n\tProductToneDot,\n} from './product-tone';\n\nexport function ProductStructureMetricRow({\n\tmetric,\n\tactions,\n}: {\n\tmetric: ProductStructureMetric;\n\tactions?: ReactNode;\n}) {\n\tconst tone = metric.tone ?? 'neutral';\n\n\treturn (\n\t\t<Item className=\"product-structure-metric-row--component product-structure-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t{metric.icon ?? <ProductToneDot tone={tone} />}\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{metric.label}</ItemTitle>\n\t\t\t\t{!!metric.description && <ItemDescription clamp={2}>{metric.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t<ItemActions className=\"ml-auto shrink-0 gap-2\">\n\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t{metric.value}\n\t\t\t\t</Text>\n\t\t\t\t{actions}\n\t\t\t</ItemActions>\n\t\t</Item>\n\t);\n}\n\nexport function ProductReadinessRow({\n\titem,\n\tactionFallback,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductReadinessItem;\n\tactionFallback: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? (item.completed ? 'success' : 'neutral');\n\tconst select = item.onSelect ?? onSelect;\n\n\treturn (\n\t\t<Item className=\"product-readiness-row--component product-readiness-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || select || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && (\n\t\t\t\t\t\t<Badge variant={PRODUCT_TONE_BADGE[tone]}>{item.value}</Badge>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!select && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={select} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{item.actionLabel ?? actionFallback}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n\nexport function ProductOperationRow({\n\titem,\n\tactionFallback,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductOperationsItem;\n\tactionFallback: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? 'neutral';\n\tconst select = item.onSelect ?? onSelect;\n\n\treturn (\n\t\t<Item className=\"product-operation-row--component product-operations-card--item\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || select || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && <Text tag=\"span\" size=\"xs\" weight=\"semibold\">{item.value}</Text>}\n\t\t\t\t\t{!!select && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={select} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{item.actionLabel ?? actionFallback}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n\nexport function ProductSummaryRow({\n\titem,\n\tactionLabel,\n\tonSelect,\n\tactions,\n}: {\n\titem: ProductOptionSummary | ProductPolicySummary;\n\tactionLabel?: ReactNode;\n\tonSelect?: () => void;\n\tactions?: ReactNode;\n}) {\n\tconst tone = item.tone ?? 'neutral';\n\tconst values = 'values' in item ? item.values : undefined;\n\n\treturn (\n\t\t<Item className=\"product-summary-row--component\">\n\t\t\t<ItemMedia variant=\"icon\" className={cn('rounded-full border', PRODUCT_TONE_SURFACE[tone])}>\n\t\t\t\t<ProductToneDot tone={tone} />\n\t\t\t</ItemMedia>\n\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t<ItemTitle>{item.label}</ItemTitle>\n\t\t\t\t{!!item.description && <ItemDescription clamp={2}>{item.description}</ItemDescription>}\n\t\t\t\t{!!values?.length && (\n\t\t\t\t\t<div className=\"mt-2 flex flex-wrap gap-1\">\n\t\t\t\t\t\t{values.map((value, index) => (\n\t\t\t\t\t\t\t<Badge key={index} variant=\"secondary\">\n\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</ItemContent>\n\t\t\t{!!(item.value || item.badge || onSelect || actions) && (\n\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end gap-2\">\n\t\t\t\t\t{!!item.value && <Text tag=\"span\" size=\"xs\" weight=\"semibold\">{item.value}</Text>}\n\t\t\t\t\t{!!item.badge && item.badge}\n\t\t\t\t\t{!!onSelect && (\n\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onSelect} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t\t\t{actionLabel}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{actions}\n\t\t\t\t</ItemActions>\n\t\t\t)}\n\t\t</Item>\n\t);\n}\n","import {\n\tArrowRight,\n\tEye,\n\tFileText,\n\tPencil,\n\tPlus,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList } from '@/components/composed/data-display';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductContractOverviewStrings } from '../products.strings';\nimport type { ProductContractOverviewProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductMetricTile } from '../partials/product-metric-tile';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductSummaryRow } from '../partials/product-rows';\n\nexport function ProductContractOverview({\n\tmetrics = [],\n\tterms = [],\n\trules = [],\n\tonOpenContract,\n\tonEditContract,\n\tonCreateRule,\n\tonSelectRule,\n\tonEditRule,\n\tonDeleteRule,\n\trenderRuleActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductContractOverviewProps) {\n\tconst strings = useStrings(defaultProductContractOverviewStrings, stringsProp);\n\tconst hasContent = metrics.length > 0 || terms.length > 0 || rules.length > 0;\n\tconst headerAction = onOpenContract || onEditContract || onCreateRule ? (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t{!!onCreateRule && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateRule} icon={Plus}>\n\t\t\t\t\t{strings.createRuleLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onEditContract && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onEditContract} icon={Pencil}>\n\t\t\t\t\t{strings.editLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onOpenContract && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onOpenContract} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t{strings.actionLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<FileText className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-contract-overview--component w-full', className)}\n\t\t>\n\t\t\t{!hasContent ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateRule ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateRule} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createRuleLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"space-y-4\">\n\t\t\t\t\t{metrics.length > 0 && (\n\t\t\t\t\t\t<div className=\"grid gap-2 sm:grid-cols-3\">\n\t\t\t\t\t\t\t{metrics.map((metric) => (\n\t\t\t\t\t\t\t\t<ProductMetricTile key={metric.id} metric={metric} />\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{terms.length > 0 && (\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\">{strings.termsTitle}</Text>\n\t\t\t\t\t\t\t<MetadataList items={terms} columns={2} dense />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{rules.length > 0 && (\n\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\">{strings.rulesTitle}</Text>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{rules.map((rule, index) => {\n\t\t\t\t\t\t\t\t\tconst onSelect = onSelectRule ? () => onSelectRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst onEdit = onEditRule ? () => onEditRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst onDelete = onDeleteRule ? () => onDeleteRule(rule) : undefined;\n\t\t\t\t\t\t\t\t\tconst ruleActions = [\n\t\t\t\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.viewRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.editRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\t\t\tlabel: strings.deleteRuleLabel,\n\t\t\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\tconst rowActions = renderRuleActions\n\t\t\t\t\t\t\t\t\t\t? renderRuleActions(rule, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t\t\t: <ProductRowActions item={rule} actions={ruleActions} menuLabel={strings.ruleActionsLabel} />;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\t\t\tkey={rule.id}\n\t\t\t\t\t\t\t\t\t\t\titem={rule}\n\t\t\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductContractOverview.displayName = 'ProductContractOverview';\n","import {\n\tBox,\n\tPencil } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList } from '@/components/composed/data-display';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductDetailsCardStrings } from '../products.strings';\nimport type { ProductDetailsCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\n\nexport function ProductDetailsCard({\n\ttitle,\n\tdescription,\n\tmetadata = [],\n\tmedia,\n\tonEditDetails,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductDetailsCardProps) {\n\tconst strings = useStrings(defaultProductDetailsCardStrings, stringsProp);\n\tconst headerAction = onEditDetails ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onEditDetails} icon={Pencil}>\n\t\t\t{strings.editLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Box className=\"size-4\" />}\n\t\t\ttitle={title ?? strings.title}\n\t\t\tdescription={description === false ? undefined : description ?? strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-details-card--component w-full', className)}\n\t\t>\n\t\t\t{metadata.length === 0 ? (\n\t\t\t\tempty ?? <ProductEmptyState title={strings.emptyTitle} description={strings.emptyDescription} />\n\t\t\t) : (\n\t\t\t\t<div className=\"@container/product-details\">\n\t\t\t\t\t<div className={cn('grid gap-4', media && '@xl/product-details:grid-cols-[12rem_minmax(0,1fr)]')}>\n\t\t\t\t\t\t{!!media && (\n\t\t\t\t\t\t\t<div className=\"product-details-card--media overflow-hidden rounded-md border border-border bg-muted/30\">\n\t\t\t\t\t\t\t\t{media}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<MetadataList\n\t\t\t\t\t\t\titems={metadata}\n\t\t\t\t\t\t\tcolumns={media ? 1 : 2}\n\t\t\t\t\t\t\tdense\n\t\t\t\t\t\t\tclassName=\"min-w-0\"\n\t\t\t\t\t\t\tvalueClassName=\"break-words\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductDetailsCard.displayName = 'ProductDetailsCard';\n","import { Eye, Pencil, Trash2 } from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductOptionActionMenuStrings,\n} from '../products.strings';\nimport type {\n\tProductOptionActionMenuProps,\n\tProductOptionSummary,\n} from '../products.types';\nimport { ProductRowActions } from '../partials/product-actions';\n\nexport function ProductOptionActionMenu({\n\toption,\n\tindex = 0,\n\tonSelectOption,\n\tonEditOption,\n\tonDeleteOption,\n\trenderOptionActions,\n\tmenuLabel,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOptionActionMenuProps) {\n\tconst strings = useStrings(defaultProductOptionActionMenuStrings, stringsProp);\n\tconst onSelect = onSelectOption ? () => onSelectOption(option) : undefined;\n\tconst onEdit = onEditOption ? () => onEditOption(option) : undefined;\n\tconst onDelete = onDeleteOption ? () => onDeleteOption(option) : undefined;\n\tconst hasActions = !!(onSelect || onEdit || onDelete || renderOptionActions);\n\n\tif (!hasActions) return null;\n\n\tif (renderOptionActions) {\n\t\treturn (\n\t\t\t<div className={cn('product-option-action-menu--component flex justify-end', className)}>\n\t\t\t\t{renderOptionActions(option, { index, onSelect, onEdit, onDelete })}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ProductRowActions<ProductOptionSummary>\n\t\t\titem={option}\n\t\t\tmenuLabel={menuLabel ?? strings.actionsLabel}\n\t\t\tclassName={cn('product-option-action-menu--component', className)}\n\t\t\tactions={[\n\t\t\t\t...(onSelect ? [{\n\t\t\t\t\tid: 'open',\n\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onEdit ? [{\n\t\t\t\t\tid: 'edit',\n\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDelete ? [{\n\t\t\t\t\tid: 'delete',\n\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t}] : []),\n\t\t\t]}\n\t\t/>\n\t);\n}\n\nProductOptionActionMenu.displayName = 'ProductOptionActionMenu';\n","import { PackageCheck, Pencil, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOperationsCardStrings } from '../products.strings';\nimport type { ProductOperationsCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductOperationRow } from '../partials/product-rows';\n\nexport function ProductOperationsCard({\n\titems = [],\n\tonCreateOperation,\n\tonSelectOperation,\n\tonEditOperation,\n\tonDeleteOperation,\n\trenderOperationActions,\n\tactions,\n\tfooterSlot,\n\trenderItem,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOperationsCardProps) {\n\tconst strings = useStrings(defaultProductOperationsCardStrings, stringsProp);\n\tconst headerAction = onCreateOperation ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateOperation} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<PackageCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-operations-card--component w-full', className)}\n\t\t>\n\t\t\t{items.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateOperation ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateOperation} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectOperation ? () => onSelectOperation(item) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditOperation ? () => onEditOperation(item) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteOperation ? () => onDeleteOperation(item) : undefined;\n\t\t\t\t\t\tconst operationActions = [\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderOperationActions\n\t\t\t\t\t\t\t? renderOperationActions(item, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={item} actions={operationActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn renderItem ? (\n\t\t\t\t\t\t\t<div key={item.id}>{renderItem(item, index)}</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ProductOperationRow\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tactionFallback={strings.actionLabel}\n\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductOperationsCard.displayName = 'ProductOperationsCard';\n","import { ChevronDown, GripVertical, Plus, PlusCircle, Trash2, X } from 'lucide-react';\nimport { useCallback, useMemo, useState, type ReactNode } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Input, ToggleSwitch } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductOptionsMatrixStrings,\n} from '../products.strings';\nimport type {\n\tProductOptionEditDraft,\n\tProductOptionGroup,\n\tProductOptionsMatrixProps,\n\tProductOptionValue,\n} from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\n\nfunction getPlainText(value: ReactNode): string {\n\tif (typeof value === 'string' || typeof value === 'number') return String(value);\n\treturn '';\n}\n\nfunction getValueLabel(value: ProductOptionValue): ReactNode {\n\treturn value.label;\n}\n\nfunction getOptionEditLabel(prefix: string, option: ProductOptionGroup): string {\n\tconst optionName = getPlainText(option.name);\n\treturn optionName ? `${prefix}: ${optionName}` : prefix;\n}\n\nfunction getOptionDraft(option: ProductOptionGroup): ProductOptionEditDraft {\n\treturn {\n\t\tname: getPlainText(option.name),\n\t\tvalues: (option.values ?? []).map((value) => ({\n\t\t\t...value,\n\t\t\tlabel: getPlainText(value.label),\n\t\t})),\n\t};\n}\n\nexport function ProductOptionsMatrix({\n\toptionGroups = [],\n\tsurface = 'card',\n\tcollapsedOptionIds,\n\tdefaultCollapsedOptionIds = [],\n\tonCollapsedOptionIdsChange,\n\teditingOptionId,\n\tdefaultEditingOptionId,\n\tonEditingOptionIdChange,\n\tonCreateOption,\n\tonEditOption,\n\tonDeleteOption,\n\tonAddValue,\n\tonDeleteValue,\n\tonOptionNameChange,\n\tonValueLabelChange,\n\tonDoneEditingOption,\n\tonSaveEditingOption,\n\tonCancelEditingOption,\n\tonToggleUsedForVariants,\n\trenderOptionActions,\n\trenderValue,\n\tshowHeader: showHeaderProp,\n\tshowCollapseControls = true,\n\tshowInlineActions = true,\n\tshowVariantToggle = true,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOptionsMatrixProps) {\n\tconst strings = useStrings(defaultProductOptionsMatrixStrings, stringsProp);\n\tconst isCollapsedControlled = collapsedOptionIds !== undefined;\n\tconst [internalCollapsedOptionIds, setInternalCollapsedOptionIds] = useState(defaultCollapsedOptionIds);\n\tconst resolvedCollapsedOptionIds = isCollapsedControlled ? collapsedOptionIds : internalCollapsedOptionIds;\n\tconst collapsedOptionIdSet = useMemo(() => new Set(resolvedCollapsedOptionIds), [resolvedCollapsedOptionIds]);\n\tconst supportsInlineEditing =\n\t\teditingOptionId !== undefined ||\n\t\tdefaultEditingOptionId !== undefined ||\n\t\t!!onEditingOptionIdChange ||\n\t\t!!onOptionNameChange ||\n\t\t!!onValueLabelChange ||\n\t\t!!onDoneEditingOption ||\n\t\t!!onSaveEditingOption ||\n\t\t!!onCancelEditingOption;\n\tconst isEditingControlled = editingOptionId !== undefined;\n\tconst [internalEditingOptionId, setInternalEditingOptionId] = useState<string | null>(defaultEditingOptionId ?? null);\n\tconst [draftByOptionId, setDraftByOptionId] = useState<Record<string, ProductOptionEditDraft>>({});\n\tconst resolvedEditingOptionId = supportsInlineEditing\n\t\t? (isEditingControlled ? editingOptionId : internalEditingOptionId)\n\t\t: null;\n\tconst hasGroups = optionGroups.length > 0;\n\tconst showPanelHeader = surface === 'embedded' && showHeaderProp !== false;\n\tconst showCreateRow = hasGroups && !!onCreateOption;\n\n\tconst updateCollapsedOptionIds = useCallback(\n\t\t(nextIds: string[]) => {\n\t\t\tif (!isCollapsedControlled) {\n\t\t\t\tsetInternalCollapsedOptionIds(nextIds);\n\t\t\t}\n\t\t\tonCollapsedOptionIdsChange?.(\n\t\t\t\tnextIds,\n\t\t\t\toptionGroups.filter((option) => nextIds.includes(option.id)),\n\t\t\t);\n\t\t},\n\t\t[isCollapsedControlled, onCollapsedOptionIdsChange, optionGroups],\n\t);\n\n\tconst toggleCollapsed = useCallback(\n\t\t(option: ProductOptionGroup) => {\n\t\t\tconst nextIds = collapsedOptionIdSet.has(option.id)\n\t\t\t\t? resolvedCollapsedOptionIds.filter((id) => id !== option.id)\n\t\t\t\t: [...resolvedCollapsedOptionIds, option.id];\n\t\t\tupdateCollapsedOptionIds(nextIds);\n\t\t},\n\t\t[collapsedOptionIdSet, resolvedCollapsedOptionIds, updateCollapsedOptionIds],\n\t);\n\n\tconst updateEditingOptionId = useCallback(\n\t\t(nextId: string | null, option?: ProductOptionGroup) => {\n\t\t\tif (!supportsInlineEditing) return;\n\t\t\tif (!isEditingControlled) {\n\t\t\t\tsetInternalEditingOptionId(nextId);\n\t\t\t}\n\t\t\tonEditingOptionIdChange?.(nextId, option);\n\t\t},\n\t\t[isEditingControlled, onEditingOptionIdChange, supportsInlineEditing],\n\t);\n\n\tconst startEditing = useCallback(\n\t\t(option: ProductOptionGroup) => {\n\t\t\tsetDraftByOptionId((current) => ({\n\t\t\t\t...current,\n\t\t\t\t[option.id]: getOptionDraft(option),\n\t\t\t}));\n\t\t\tupdateEditingOptionId(option.id, option);\n\t\t\tonEditOption?.(option);\n\t\t},\n\t\t[onEditOption, updateEditingOptionId],\n\t);\n\n\tconst getResolvedDraft = useCallback(\n\t\t(option: ProductOptionGroup) => draftByOptionId[option.id] ?? getOptionDraft(option),\n\t\t[draftByOptionId],\n\t);\n\n\tconst updateDraft = useCallback(\n\t\t(option: ProductOptionGroup, updater: (draft: ProductOptionEditDraft) => ProductOptionEditDraft) => {\n\t\t\tsetDraftByOptionId((current) => ({\n\t\t\t\t...current,\n\t\t\t\t[option.id]: updater(current[option.id] ?? getOptionDraft(option)),\n\t\t\t}));\n\t\t},\n\t\t[],\n\t);\n\n\tconst cancelEditing = useCallback(\n\t\t(option: ProductOptionGroup) => {\n\t\t\tconst draft = getResolvedDraft(option);\n\t\t\tsetDraftByOptionId((current) => {\n\t\t\t\tconst { [option.id]: _removed, ...rest } = current;\n\t\t\t\treturn rest;\n\t\t\t});\n\t\t\tupdateEditingOptionId(null, option);\n\t\t\tonCancelEditingOption?.(option, draft);\n\t\t},\n\t\t[getResolvedDraft, onCancelEditingOption, updateEditingOptionId],\n\t);\n\n\tconst saveEditing = useCallback(\n\t\t(option: ProductOptionGroup) => {\n\t\t\tconst draft = getResolvedDraft(option);\n\t\t\tconst originalValues = option.values ?? [];\n\t\t\tconst originalValueIds = new Set(originalValues.map((value) => value.id));\n\t\t\tconst draftValueIds = new Set(draft.values.map((value) => value.id));\n\n\t\t\tonSaveEditingOption?.(option, draft);\n\t\t\tonOptionNameChange?.(option, draft.name);\n\t\t\toriginalValues.forEach((value) => {\n\t\t\t\tconst draftValue = draft.values.find((item) => item.id === value.id);\n\t\t\t\tif (draftValue && getPlainText(value.label) !== getPlainText(draftValue.label)) {\n\t\t\t\t\tonValueLabelChange?.(option, value, getPlainText(draftValue.label));\n\t\t\t\t}\n\t\t\t});\n\t\t\tdraft.values.forEach((value) => {\n\t\t\t\tif (!originalValueIds.has(value.id)) {\n\t\t\t\t\tonAddValue?.(option);\n\t\t\t\t}\n\t\t\t});\n\t\t\toriginalValues.forEach((value) => {\n\t\t\t\tif (!draftValueIds.has(value.id)) {\n\t\t\t\t\tonDeleteValue?.(option, value);\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetDraftByOptionId((current) => {\n\t\t\t\tconst { [option.id]: _removed, ...rest } = current;\n\t\t\t\treturn rest;\n\t\t\t});\n\t\t\tupdateEditingOptionId(null, option);\n\t\t\tonDoneEditingOption?.(option);\n\t\t},\n\t\t[getResolvedDraft, onAddValue, onDeleteValue, onDoneEditingOption, onOptionNameChange, onSaveEditingOption, onValueLabelChange, updateEditingOptionId],\n\t);\n\n\tconst deleteOption = useCallback(\n\t\t(option: ProductOptionGroup) => {\n\t\t\tif (resolvedEditingOptionId === option.id) {\n\t\t\t\tsetDraftByOptionId((current) => {\n\t\t\t\t\tconst { [option.id]: _removed, ...rest } = current;\n\t\t\t\t\treturn rest;\n\t\t\t\t});\n\t\t\t\tupdateEditingOptionId(null, option);\n\t\t\t}\n\t\t\tonDeleteOption?.(option);\n\t\t},\n\t\t[onDeleteOption, resolvedEditingOptionId, updateEditingOptionId],\n\t);\n\n\tconst headerAction = onCreateOption ? (\n\t\t<Button type=\"button\" variant=\"dark\" onClick={onCreateOption} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\tconst panelHeader = showPanelHeader ? (\n\t\t<div className=\"product-options-matrix--panel-header flex min-w-0 flex-wrap items-center justify-between gap-space-md p-surface\">\n\t\t\t<Text weight=\"semibold\">{strings.title}</Text>\n\t\t\t{headerAction}\n\t\t</div>\n\t) : null;\n\n\tconst content = (\n\t\t<div className=\"product-options-matrix--body min-w-0\">\n\t\t\t<div className=\"product-options-matrix--panel overflow-hidden rounded-radius-lg border border-border bg-background\">\n\t\t\t\t{panelHeader}\n\n\t\t\t\t{!hasGroups ? (\n\t\t\t\t\t<div className={cn(showPanelHeader && 'border-t border-border/70')}>\n\t\t\t\t\t\t{empty ?? (\n\t\t\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\t\t\taction={onCreateOption && !showPanelHeader ? (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateOption} icon={Plus}>\n\t\t\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={cn('product-options-matrix--list', showPanelHeader && 'border-t border-border/70')}>\n\t\t\t\t\t\t{optionGroups.map((option, optionIndex) => {\n\t\t\t\t\t\t\tconst values = option.values ?? [];\n\t\t\t\t\t\t\tconst isCollapsed = collapsedOptionIdSet.has(option.id);\n\t\t\t\t\t\t\tconst isEditing = resolvedEditingOptionId === option.id;\n\t\t\t\t\t\t\tconst canEdit = !!onEditOption || supportsInlineEditing;\n\t\t\t\t\t\t\tconst canDelete = !!onDeleteOption;\n\t\t\t\t\t\t\tconst canAddValue = !!onAddValue;\n\t\t\t\t\t\t\tconst optionDraft = getResolvedDraft(option);\n\t\t\t\t\t\t\tconst renderedActions = renderOptionActions?.(option, {\n\t\t\t\t\t\t\t\tindex: optionIndex,\n\t\t\t\t\t\t\t\tonEdit: canEdit ? () => startEditing(option) : undefined,\n\t\t\t\t\t\t\t\tonDelete: onDeleteOption ? () => deleteOption(option) : undefined,\n\t\t\t\t\t\t\t\tonAddValue: onAddValue ? () => onAddValue(option) : undefined,\n\t\t\t\t\t\t\t\tonToggleCollapsed: () => toggleCollapsed(option),\n\t\t\t\t\t\t\t\tcollapsed: isCollapsed,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tconst menuActions = [\n\t\t\t\t\t\t\t\t...(canAddValue ? [{\n\t\t\t\t\t\t\t\t\tid: 'add-value',\n\t\t\t\t\t\t\t\t\tlabel: strings.addValueLabel,\n\t\t\t\t\t\t\t\t\ticon: <Plus className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onAddValue?.(option),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(canDelete ? [{\n\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => deleteOption(option),\n\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tconst defaultActions = showInlineActions ? (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{!!canEdit && (\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => startEditing(option)}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{strings.editLabel}\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<ProductRowActions\n\t\t\t\t\t\t\t\t\t\titem={option}\n\t\t\t\t\t\t\t\t\t\tactions={menuActions}\n\t\t\t\t\t\t\t\t\t\tmenuLabel={strings.actionsLabel}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t) : null;\n\t\t\t\t\t\t\tconst resolvedActions = renderedActions !== undefined ? renderedActions : defaultActions;\n\n\t\t\t\t\t\t\tif (isEditing) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\t\tclassName=\"product-options-matrix--item product-options-matrix--item-editing border-b border-border/70 p-surface last:border-b-0\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-[auto_minmax(0,1fr)] gap-x-space-md gap-y-space-lg\">\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"product-options-matrix--drag-handle mt-[2.625rem] flex size-icon-lg items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t<GripVertical className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor grid min-w-0 gap-space-lg\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor-field grid min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\">{strings.optionNameLabel}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={optionDraft.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst nextName = event.currentTarget.value;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdateDraft(option, (draft) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...draft,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: nextName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={strings.optionNameLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-background\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor-field grid min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\">{strings.optionValuesLabel}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor-values grid min-w-0 gap-space-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{optionDraft.values.length === 0 && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.noValuesLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{optionDraft.values.map((value) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={value.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"product-options-matrix--editor-value grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-space-sm\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex size-icon-lg items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<GripVertical className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={getPlainText(value.label)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst nextLabel = event.currentTarget.value;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tupdateDraft(option, (draft) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...draft,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: draft.values.map((item) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\titem.id === value.id\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { ...item, label: nextLabel }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: item\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={`${strings.optionValuesLabel}: ${getPlainText(value.label)}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-background\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateDraft(option, (draft) => ({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...draft,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: draft.values.filter((item) => item.id !== value.id),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={strings.deleteValueLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Trash2 className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">{strings.deleteValueLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor-add-value grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto] items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"size-icon-lg\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => updateDraft(option, (draft) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst nextIndex = draft.values.length + 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...draft,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...draft.values,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ id: `${option.id}-draft-value-${nextIndex}`, label: '' },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"justify-start border-input bg-background text-muted-foreground hover:bg-muted/60\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.addAnotherValueLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"size-control-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--editor-actions flex min-w-0 items-center justify-between gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!onDeleteOption && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => deleteOption(option)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.deleteLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-end gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={() => cancelEditing(option)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.cancelLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button type=\"button\" variant=\"dark\" onClick={() => saveEditing(option)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.saveLabel ?? strings.doneLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst optionSummary = (\n\t\t\t\t\t\t\t\t<span className=\"grid min-w-0 gap-space-sm\">\n\t\t\t\t\t\t\t\t\t<span className=\"flex min-w-0 flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"min-w-0 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t\t\t\t{option.name}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t{option.badge}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{!!option.description && (\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"max-w-prose\">\n\t\t\t\t\t\t\t\t\t\t\t{option.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t{!isCollapsed && (\n\t\t\t\t\t\t\t\t\t\t<span className=\"product-options-matrix--values grid gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t{values.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.noValuesLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"flex flex-wrap gap-space-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t{values.map((value, valueIndex) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst deleteValue = onDeleteValue ? () => onDeleteValue(option, value) : undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst renderedValue = renderValue?.(value, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toption,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toptionIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalueIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonDelete: deleteValue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (renderedValue) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn <span key={value.id}>{renderedValue}</span>;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={value.id}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'product-options-matrix--value inline-flex max-w-full items-center gap-space-xs rounded-radius-sm bg-muted px-space-sm py-space-xs text-pxs font-medium leading-none text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue.disabled && 'opacity-60',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"min-w-0 whitespace-normal break-words\">{getValueLabel(value)}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{value.badge}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!deleteValue && showInlineActions && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={deleteValue}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={strings.deleteValueLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"size-icon-sm shrink-0 rounded-radius-sm text-muted-foreground/70 hover:text-destructive\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<X className=\"size-3\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">{strings.deleteValueLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\tclassName=\"product-options-matrix--item border-b border-border/70 last:border-b-0\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"grid min-w-0 grid-cols-[auto_minmax(0,1fr)] items-center gap-x-space-md gap-y-space-md p-surface lg:grid-cols-[auto_minmax(0,1fr)_auto]\">\n\t\t\t\t\t\t\t\t\t\t{showCollapseControls ? (\n\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => toggleCollapsed(option)}\n\t\t\t\t\t\t\t\t\t\t\t\taria-expanded={!isCollapsed}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={isCollapsed ? strings.expandOptionLabel : strings.collapseOptionLabel}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"product-options-matrix--collapse-trigger mt-space-2xs shrink-0 text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<ChevronDown className={cn('size-icon-sm transition-transform', isCollapsed && '-rotate-90')} aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"sr-only\">{isCollapsed ? strings.expandOptionLabel : strings.collapseOptionLabel}</span>\n\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<span className=\"product-options-matrix--drag-handle flex size-icon-lg items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t<GripVertical className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--item-main min-w-0\">\n\t\t\t\t\t\t\t\t\t\t\t{canEdit && !showInlineActions ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => startEditing(option)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={getOptionEditLabel(strings.editLabel, option)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-auto min-h-0 w-full justify-start rounded-radius-sm p-0 text-left hover:bg-transparent focus-visible:ring-offset-2\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{optionSummary}\n\t\t\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t\t\t) : optionSummary}\n\t\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t\t{(showVariantToggle || !!resolvedActions) && (\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"product-options-matrix--item-actions col-start-2 flex min-w-fit flex-wrap items-center justify-start gap-space-md lg:col-start-auto lg:justify-end\">\n\t\t\t\t\t\t\t\t\t\t\t\t{!!onToggleUsedForVariants && showVariantToggle && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"inline-flex items-center gap-space-sm text-pxs font-medium text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span id={`product-option-${option.id}-variant-toggle-label`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.useForVariantsLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<ToggleSwitch\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={!!option.usedForVariants}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) => onToggleUsedForVariants(option, checked)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-labelledby={`product-option-${option.id}-variant-toggle-label`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t{resolvedActions}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t{!!showCreateRow && (\n\t\t\t\t\t\t\t<div className=\"product-options-matrix--create-row border-t border-border/70\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tonClick={onCreateOption}\n\t\t\t\t\t\t\t\t\ticon={PlusCircle}\n\t\t\t\t\t\t\t\t\tclassName=\"h-auto min-h-control-sm w-full justify-start rounded-none px-surface py-space-sm text-foreground hover:bg-muted/60\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{strings.addAnotherOptionLabel}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n\n\tif (surface === 'embedded') {\n\t\treturn (\n\t\t\t<section\n\t\t\t\taria-label={strings.title}\n\t\t\t\tclassName={cn('product-options-matrix--component min-w-0', className)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</section>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-options-matrix--component w-full', className)}\n\t\t>\n\t\t\t{content}\n\t\t</SmartCard>\n\t);\n}\n\nProductOptionsMatrix.displayName = 'ProductOptionsMatrix';\n","import { Plus, SlidersHorizontal } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOptionsSummaryStrings } from '../products.strings';\nimport type { ProductOptionsSummaryProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductSummaryRow } from '../partials/product-rows';\nimport { ProductOptionActionMenu } from './product-option-action-menu';\n\nexport function ProductOptionsSummary({\n\toptions = [],\n\tonManageOptions,\n\tonCreateOption,\n\tonSelectOption,\n\tonEditOption,\n\tonDeleteOption,\n\trenderOptionActions,\n\tactions,\n\tfooterSlot,\n\trenderOption,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductOptionsSummaryProps) {\n\tconst strings = useStrings(defaultProductOptionsSummaryStrings, stringsProp);\n\tconst hasOptionActions = !!(\n\t\tonSelectOption ||\n\t\tonEditOption ||\n\t\tonDeleteOption ||\n\t\trenderOptionActions\n\t);\n\tconst cardActions = [\n\t\t...(actions ?? []),\n\t\t...(onCreateOption && onManageOptions ? [{\n\t\t\tid: 'manage-options',\n\t\t\tlabel: strings.manageLabel,\n\t\t\ticon: <SlidersHorizontal className=\"size-3.5\" />,\n\t\t\tonClick: onManageOptions,\n\t\t}] : []),\n\t];\n\tconst headerAction = onCreateOption || onManageOptions ? (\n\t\t<Button\n\t\t\ttype=\"button\"\n\t\t\tvariant=\"secondary\"\n\t\t\tbuttonStyle=\"ghost\"\n\t\t\tonClick={onCreateOption ?? onManageOptions}\n\t\t\ticon={onCreateOption ? Plus : SlidersHorizontal}\n\t\t>\n\t\t\t{onCreateOption ? strings.createLabel : strings.manageLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<SlidersHorizontal className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={cardActions.length > 0 ? cardActions : undefined}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-options-summary--component w-full', className)}\n\t\t>\n\t\t\t{options.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateOption ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateOption} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{options.map((option, index) => (\n\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\tconst rowActions = hasOptionActions ? (\n\t\t\t\t\t\t\t\t<ProductOptionActionMenu\n\t\t\t\t\t\t\t\t\toption={option}\n\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\tonSelectOption={onSelectOption}\n\t\t\t\t\t\t\t\t\tonEditOption={onEditOption}\n\t\t\t\t\t\t\t\t\tonDeleteOption={onDeleteOption}\n\t\t\t\t\t\t\t\t\trenderOptionActions={renderOptionActions}\n\t\t\t\t\t\t\t\t\tmenuLabel={strings.actionsLabel}\n\t\t\t\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\t\t\t\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\t\tactionsLabel: strings.actionsLabel,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : undefined;\n\n\t\t\t\t\t\t\treturn renderOption ? (\n\t\t\t\t\t\t\t\t<div key={option.id}>{renderOption(option, index)}</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\titem={option}\n\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})()\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductOptionsSummary.displayName = 'ProductOptionsSummary';\n","import { Pencil, Plus, ShieldCheck, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductPoliciesCardStrings } from '../products.strings';\nimport type { ProductPoliciesCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductSummaryRow } from '../partials/product-rows';\n\nexport function ProductPoliciesCard({\n\tpolicies = [],\n\tonCreatePolicy,\n\tonSelectPolicy,\n\tonEditPolicy,\n\tonDeletePolicy,\n\trenderPolicyActions,\n\tactions,\n\tfooterSlot,\n\trenderPolicy,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductPoliciesCardProps) {\n\tconst strings = useStrings(defaultProductPoliciesCardStrings, stringsProp);\n\tconst headerAction = onCreatePolicy ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreatePolicy} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ShieldCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-policies-card--component w-full', className)}\n\t\t>\n\t\t\t{policies.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreatePolicy ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreatePolicy} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{policies.map((policy, index) => (\n\t\t\t\t\t\t(() => {\n\t\t\t\t\t\t\tconst onSelect = onSelectPolicy ? () => onSelectPolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst onEdit = onEditPolicy ? () => onEditPolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst onDelete = onDeletePolicy ? () => onDeletePolicy(policy) : undefined;\n\t\t\t\t\t\t\tconst policyActions = [\n\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tconst rowActions = renderPolicyActions\n\t\t\t\t\t\t\t\t? renderPolicyActions(policy, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t: <ProductRowActions item={policy} actions={policyActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\t\treturn renderPolicy ? (\n\t\t\t\t\t\t\t\t<div key={policy.id}>{renderPolicy(policy, index)}</div>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\tkey={policy.id}\n\t\t\t\t\t\t\t\t\titem={policy}\n\t\t\t\t\t\t\t\t\tactionLabel={strings.viewLabel}\n\t\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})()\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductPoliciesCard.displayName = 'ProductPoliciesCard';\n","export const PRODUCT_EMPTY_VALUE = '-';\n","import {\n\tArrowRight,\n\tEye,\n\tPencil,\n\tPlus,\n\tReceiptText,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { InlineStat } from '@/components/composed/data-display';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductQuotePreviewCardStrings } from '../products.strings';\nimport type { ProductQuotePreviewCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { PRODUCT_EMPTY_VALUE } from '../partials/product-values';\n\nexport function ProductQuotePreviewCard({\n\tlines = [],\n\tsubtotal,\n\ttax,\n\tdiscount,\n\ttotal,\n\tonOpenQuote,\n\tonCreateLine,\n\tonSelectLine,\n\tonEditLine,\n\tonDeleteLine,\n\trenderLineActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductQuotePreviewCardProps) {\n\tconst strings = useStrings(defaultProductQuotePreviewCardStrings, stringsProp);\n\tconst headerAction = onCreateLine || onOpenQuote ? (\n\t\t<div className=\"flex items-center gap-2\">\n\t\t\t{!!onCreateLine && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateLine} icon={Plus}>\n\t\t\t\t\t{strings.createLineLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onOpenQuote && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onOpenQuote} icon={ArrowRight} iconPosition=\"right\">\n\t\t\t\t\t{strings.actionLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ReceiptText className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-quote-preview-card--component w-full', className)}\n\t\t>\n\t\t\t{lines.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateLine ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateLine} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLineLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"space-y-3\">\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t{lines.map((line, index) => {\n\t\t\t\t\t\t\tconst onSelect = onSelectLine ? () => onSelectLine(line) : undefined;\n\t\t\t\t\t\t\tconst onEdit = onEditLine ? () => onEditLine(line) : undefined;\n\t\t\t\t\t\t\tconst onDelete = onDeleteLine ? () => onDeleteLine(line) : undefined;\n\t\t\t\t\t\t\tconst lineActions = [\n\t\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\t\tlabel: strings.viewLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\tlabel: strings.editLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\tlabel: strings.deleteLineLabel,\n\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tconst rowActions = renderLineActions\n\t\t\t\t\t\t\t\t? renderLineActions(line, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t\t: <ProductRowActions item={line} actions={lineActions} menuLabel={strings.lineActionsLabel} />;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div key={line.id} className=\"flex items-start justify-between gap-3 rounded-md border border-border bg-muted/20 px-3 py-2\">\n\t\t\t\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate\">{line.label}</Text>\n\t\t\t\t\t\t\t\t\t\t{!!line.description && <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">{line.description}</Text>}\n\t\t\t\t\t\t\t\t\t\t{!!line.quantity && <Text size=\"xs\" type=\"secondary\" className=\"mt-1\">{line.quantity}</Text>}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<div className=\"flex shrink-0 items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"tabular-nums\">{line.amount}</Text>\n\t\t\t\t\t\t\t\t\t\t{rowActions}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"space-y-1.5 rounded-md bg-muted/30 px-3 py-2.5\">\n\t\t\t\t\t\t{subtotal !== undefined && <InlineStat label={strings.subtotalLabel} value={subtotal} mono />}\n\t\t\t\t\t\t{tax !== undefined && <InlineStat label={strings.taxLabel} value={tax} mono />}\n\t\t\t\t\t\t{discount !== undefined && <InlineStat label={strings.discountLabel} value={discount} mono valueClassName=\"text-success\" />}\n\t\t\t\t\t\t<InlineStat label={strings.totalLabel} value={total ?? PRODUCT_EMPTY_VALUE} mono labelClassName=\"font-semibold\" valueClassName=\"font-semibold\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductQuotePreviewCard.displayName = 'ProductQuotePreviewCard';\n","import {\n\tClipboardCheck,\n\tPencil,\n\tPlus,\n\tTrash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Progress,\n} from '@/components/base/display';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductReadinessCardStrings } from '../products.strings';\nimport type { ProductReadinessCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductReadinessRow } from '../partials/product-rows';\nimport { clampProductPercent } from '../partials/product-tone';\n\nexport function ProductReadinessCard({\n\titems = [],\n\tscore,\n\tscoreLabel,\n\tsummary,\n\tonCreateReadinessItem,\n\tonSelectReadinessItem,\n\tonEditReadinessItem,\n\tonDeleteReadinessItem,\n\trenderReadinessItemActions,\n\tactions,\n\tfooterSlot,\n\trenderItem,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductReadinessCardProps) {\n\tconst strings = useStrings(defaultProductReadinessCardStrings, stringsProp);\n\tconst completion = score === undefined ? undefined : clampProductPercent(score);\n\tconst headerAction = onCreateReadinessItem ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateReadinessItem} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ClipboardCheck className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-readiness-card--component w-full', className)}\n\t\t>\n\t\t\t{completion !== undefined && (\n\t\t\t\t<div className=\"mb-3 rounded-md border border-border bg-muted/20 px-3 py-2.5\">\n\t\t\t\t\t<div className=\"mb-2 flex items-center justify-between gap-3\">\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{scoreLabel ?? strings.scoreLabel}</Text>\n\t\t\t\t\t\t<Text size=\"xs\" weight=\"semibold\" className=\"tabular-nums\">{completion}%</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Progress\n\t\t\t\t\t\tvalue={completion}\n\t\t\t\t\t\taria-label={typeof scoreLabel === 'string' ? scoreLabel : strings.progressLabel}\n\t\t\t\t\t\taria-valuetext={`${completion}%`}\n\t\t\t\t\t\tclassName=\"h-1.5\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{!!summary && <Text size=\"xs\" type=\"secondary\" className=\"mb-3 leading-relaxed\">{summary}</Text>}\n\t\t\t{items.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateReadinessItem ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateReadinessItem} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectReadinessItem ? () => onSelectReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditReadinessItem ? () => onEditReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteReadinessItem ? () => onDeleteReadinessItem(item) : undefined;\n\t\t\t\t\t\tconst readinessActions = [\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderReadinessItemActions\n\t\t\t\t\t\t\t? renderReadinessItemActions(item, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={item} actions={readinessActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn renderItem ? (\n\t\t\t\t\t\t\t<div key={item.id}>{renderItem(item, index)}</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ProductReadinessRow\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tactionFallback={strings.actionLabel}\n\t\t\t\t\t\t\t\tonSelect={onSelect}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductReadinessCard.displayName = 'ProductReadinessCard';\n","import { Eye, Layers3, Pencil, Plus, Trash2 } from 'lucide-react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { ItemGroup } from '@/components/base/item';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductStructureCardStrings } from '../products.strings';\nimport type { ProductStructureCardProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { ProductStructureMetricRow } from '../partials/product-rows';\n\nexport function ProductStructureCard({\n\tmetrics = [],\n\tonCreateMetric,\n\tonSelectMetric,\n\tonEditMetric,\n\tonDeleteMetric,\n\trenderMetricActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductStructureCardProps) {\n\tconst strings = useStrings(defaultProductStructureCardStrings, stringsProp);\n\tconst headerAction = onCreateMetric ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateMetric} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Layers3 className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-structure-card--component w-full', className)}\n\t\t>\n\t\t\t{metrics.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateMetric ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateMetric} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{metrics.map((metric, index) => {\n\t\t\t\t\t\tconst onSelect = onSelectMetric ? () => onSelectMetric(metric) : undefined;\n\t\t\t\t\t\tconst onEdit = onEditMetric ? () => onEditMetric(metric) : undefined;\n\t\t\t\t\t\tconst onDelete = onDeleteMetric ? () => onDeleteMetric(metric) : undefined;\n\t\t\t\t\t\tconst metricActions = [\n\t\t\t\t\t\t\t...(onSelect ? [{\n\t\t\t\t\t\t\t\tid: 'open',\n\t\t\t\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onEdit ? [{\n\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t...(onDelete ? [{\n\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst rowActions = renderMetricActions\n\t\t\t\t\t\t\t? renderMetricActions(metric, { index, onSelect, onEdit, onDelete })\n\t\t\t\t\t\t\t: <ProductRowActions item={metric} actions={metricActions} menuLabel={strings.actionsLabel} />;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<ProductStructureMetricRow\n\t\t\t\t\t\t\t\tkey={metric.id}\n\t\t\t\t\t\t\t\tmetric={metric}\n\t\t\t\t\t\t\t\tactions={rowActions}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ItemGroup>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductStructureCard.displayName = 'ProductStructureCard';\n","import { Copy, Eye, Pencil, Trash2 } from 'lucide-react';\n\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductVariantActionMenuStrings,\n} from '../products.strings';\nimport type {\n\tProductVariantActionMenuProps,\n\tProductVariantSummary,\n} from '../products.types';\nimport { ProductRowActions } from '../partials/product-actions';\n\nexport function ProductVariantActionMenu({\n\tvariant,\n\tindex = 0,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tmenuLabel,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantActionMenuProps) {\n\tconst strings = useStrings(defaultProductVariantActionMenuStrings, stringsProp);\n\tconst onSelect = onSelectVariant ? () => onSelectVariant(variant) : undefined;\n\tconst onEdit = onEditVariant ? () => onEditVariant(variant) : undefined;\n\tconst onDuplicate = onDuplicateVariant ? () => onDuplicateVariant(variant) : undefined;\n\tconst onDelete = onDeleteVariant ? () => onDeleteVariant(variant) : undefined;\n\tconst hasActions = !!(onSelect || onEdit || onDuplicate || onDelete || renderVariantActions);\n\n\tif (!hasActions) return null;\n\n\tif (renderVariantActions) {\n\t\treturn (\n\t\t\t<div className={cn('product-variant-action-menu--component flex justify-end', className)}>\n\t\t\t\t{renderVariantActions(variant, { index, onSelect, onEdit, onDuplicate, onDelete })}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ProductRowActions<ProductVariantSummary>\n\t\t\titem={variant}\n\t\t\tmenuLabel={menuLabel ?? strings.actionsLabel}\n\t\t\tclassName={cn('product-variant-action-menu--component', className)}\n\t\t\tactions={[\n\t\t\t\t...(onSelect ? [{\n\t\t\t\t\tid: 'open',\n\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onSelect(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onEdit ? [{\n\t\t\t\t\tid: 'edit',\n\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onEdit(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDuplicate ? [{\n\t\t\t\t\tid: 'duplicate',\n\t\t\t\t\tlabel: strings.duplicateLabel,\n\t\t\t\t\ticon: <Copy className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDuplicate(),\n\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t}] : []),\n\t\t\t\t...(onDelete ? [{\n\t\t\t\t\tid: 'delete',\n\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\tonClick: () => onDelete(),\n\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t}] : []),\n\t\t\t]}\n\t\t/>\n\t);\n}\n\nProductVariantActionMenu.displayName = 'ProductVariantActionMenu';\n","import type { ReactNode } from 'react';\n\nimport { Text } from '@/components/typography';\nimport { cn } from '@/lib/utils';\n\nimport { ProductVariantActionMenu } from '../components/product-variant-action-menu';\nimport type {\n\tProductVariantSummary,\n\tProductVariantsTableProps,\n} from '../products.types';\nimport type { ProductVariantsTableStrings } from '../products.strings';\n\nexport function ProductVariantActions({\n\tvariant,\n\tindex,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tstrings,\n\tclassName,\n}: {\n\tvariant: ProductVariantSummary;\n\tindex: number;\n\tonSelectVariant?: ProductVariantsTableProps['onSelectVariant'];\n\tonEditVariant?: ProductVariantsTableProps['onEditVariant'];\n\tonDuplicateVariant?: ProductVariantsTableProps['onDuplicateVariant'];\n\tonDeleteVariant?: ProductVariantsTableProps['onDeleteVariant'];\n\trenderVariantActions?: ProductVariantsTableProps['renderVariantActions'];\n\tstrings: ProductVariantsTableStrings;\n\tclassName?: string;\n}) {\n\treturn (\n\t\t<ProductVariantActionMenu\n\t\t\tvariant={variant}\n\t\t\tindex={index}\n\t\t\tonSelectVariant={onSelectVariant}\n\t\t\tonEditVariant={onEditVariant}\n\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\trenderVariantActions={renderVariantActions}\n\t\t\tmenuLabel={strings.headers.actions}\n\t\t\tclassName={cn('product-variant-actions--component product-variants-table--row-actions', className)}\n\t\t\tstrings={{\n\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\tduplicateLabel: strings.duplicateLabel,\n\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\tactionsLabel: strings.headers.actions,\n\t\t\t}}\n\t\t/>\n\t);\n}\n\nexport function ProductVariantCell({\n\tlabel,\n\tchildren,\n\tclassName,\n\ttextClassName,\n\tweight,\n}: {\n\tlabel: ReactNode;\n\tchildren: ReactNode;\n\tclassName?: string;\n\ttextClassName?: string;\n\tweight?: 'regular' | 'medium' | 'semibold' | 'bold';\n}) {\n\treturn (\n\t\t<div className={cn('product-variant-cell--component grid min-w-0 grid-cols-[6rem_minmax(0,1fr)] items-center gap-2 lg:block lg:space-y-0.5', className)}>\n\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"uppercase tracking-wide lg:sr-only\">\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t<Text size=\"xs\" type=\"secondary\" weight={weight} className={cn('truncate', textClassName)}>\n\t\t\t\t{children}\n\t\t\t</Text>\n\t\t</div>\n\t);\n}\n","import { ListChecks, Plus } from 'lucide-react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantsTableStrings } from '../products.strings';\nimport type { ProductVariantsTableProps } from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport {\n\tProductVariantCell,\n} from '../partials/product-variant-table-parts';\nimport { PRODUCT_EMPTY_VALUE } from '../partials/product-values';\nimport { ProductVariantActionMenu } from './product-variant-action-menu';\n\nexport function ProductVariantsTable({\n\tvariants = [],\n\tonCreateVariant,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\trenderVariantActions,\n\tactions,\n\tfooterSlot,\n\tempty,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantsTableProps) {\n\tconst strings = useStrings(defaultProductVariantsTableStrings, stringsProp);\n\tconst hasVariantActions = !!(\n\t\tonSelectVariant ||\n\t\tonEditVariant ||\n\t\tonDuplicateVariant ||\n\t\tonDeleteVariant ||\n\t\trenderVariantActions\n\t);\n\tconst gridTemplate = 'lg:grid-cols-[minmax(12rem,1.45fr)_minmax(4rem,0.6fr)_minmax(4rem,0.55fr)_minmax(4.75rem,0.7fr)_minmax(4rem,0.55fr)]';\n\tconst headerAction = onCreateVariant ? (\n\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t{strings.createLabel}\n\t\t</Button>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ListChecks className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variants-table--component w-full', className)}\n\t\t>\n\t\t\t{variants.length === 0 ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t\taction={onCreateVariant ? (\n\t\t\t\t\t\t\t<Button type=\"button\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t\t\t\t\t\t{strings.createLabel}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t) : undefined}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"product-variants-table--table rounded-md border border-border\">\n\t\t\t\t\t<div className=\"lg:min-w-136\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={cn('hidden gap-3 border-b border-border bg-muted/40 px-3 py-2 lg:grid', gridTemplate)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.variant}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.price}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.inventory}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.sku}</Text>\n\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" weight=\"semibold\" type=\"secondary\">{strings.headers.updated}</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"divide-y divide-border\">\n\t\t\t\t\t\t\t{variants.map((variant, index) => (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tkey={variant.id}\n\t\t\t\t\t\t\t\t\tclassName={cn('grid gap-2 px-3 py-3 lg:items-center lg:gap-3 lg:py-2.5', gridTemplate)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 items-start gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate\">{variant.name}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.status && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={variant.statusVariant ?? 'secondary'}>{variant.status}</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.description && <Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">{variant.description}</Text>}\n\t\t\t\t\t\t\t\t\t\t\t\t{!!(variant.options?.length || variant.channels) && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mt-1.5 flex flex-wrap items-center gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{variant.options?.map((option, optionIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge key={optionIndex} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{option}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!!variant.channels && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"pl-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.headers.channels}: {variant.channels}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t{!!hasVariantActions && (\n\t\t\t\t\t\t\t\t\t\t\t\t<ProductVariantActionMenu\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={variant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tindex={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectVariant={onSelectVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonEditVariant={onEditVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderVariantActions={renderVariantActions}\n\t\t\t\t\t\t\t\t\t\t\t\t\tmenuLabel={strings.headers.actions}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewLabel: strings.viewLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\teditLabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tduplicateLabel: strings.duplicateLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteLabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactionsLabel: strings.headers.actions,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.price} weight=\"semibold\" textClassName=\"tabular-nums text-foreground\">{variant.price ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.inventory} textClassName=\"tabular-nums\">{variant.inventory ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.sku} textClassName=\"tabular-nums\">{variant.sku ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t\t<ProductVariantCell label={strings.headers.updated}>{variant.updatedAt ?? PRODUCT_EMPTY_VALUE}</ProductVariantCell>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantsTable.displayName = 'ProductVariantsTable';\n","import { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductOverviewStrings } from '../products.strings';\nimport type { ProductOverviewProps } from '../products.types';\nimport { ProductContractOverview } from './product-contract-overview';\nimport { ProductDetailsCard } from './product-details-card';\nimport { ProductOperationsCard } from './product-operations-card';\nimport { ProductOptionsSummary } from './product-options-summary';\nimport { ProductPoliciesCard } from './product-policies-card';\nimport { ProductQuotePreviewCard } from './product-quote-preview-card';\nimport { ProductReadinessCard } from './product-readiness-card';\nimport { ProductStructureCard } from './product-structure-card';\nimport { ProductVariantsTable } from './product-variants-table';\n\nexport function ProductOverview({\n\tdetails,\n\tcontract,\n\toptions,\n\tvariants,\n\treadiness,\n\tstructure,\n\toperations,\n\tquote,\n\tpolicies,\n\tslots,\n\tclassName,\n\tmainClassName,\n\trailClassName,\n\tstrings: stringsProp,\n}: ProductOverviewProps) {\n\tconst strings = useStrings(defaultProductOverviewStrings, stringsProp);\n\tconst hasRail = !!(readiness || structure || operations || quote || policies || slots?.railTop || slots?.railBottom);\n\n\treturn (\n\t\t<div className={cn('product-overview--component @container/product-overview space-y-4', className)}>\n\t\t\t{slots?.before}\n\t\t\t<div className={cn('grid gap-4', hasRail && '@5xl/product-overview:grid-cols-[minmax(0,1fr)_22rem]')}>\n\t\t\t\t<section aria-label={strings.mainLabel} className={cn('product-overview--main min-w-0 space-y-4', mainClassName)}>\n\t\t\t\t\t{slots?.mainTop}\n\t\t\t\t\t{!!details && <ProductDetailsCard {...details} />}\n\t\t\t\t\t{!!contract && <ProductContractOverview {...contract} />}\n\t\t\t\t\t{!!options && <ProductOptionsSummary {...options} />}\n\t\t\t\t\t{!!variants && <ProductVariantsTable {...variants} />}\n\t\t\t\t\t{slots?.mainBottom}\n\t\t\t\t</section>\n\t\t\t\t{!!hasRail && (\n\t\t\t\t\t<aside aria-label={strings.railLabel} className={cn('product-overview--rail min-w-0 space-y-4', railClassName)}>\n\t\t\t\t\t\t{slots?.railTop}\n\t\t\t\t\t\t{!!readiness && <ProductReadinessCard {...readiness} />}\n\t\t\t\t\t\t{!!structure && <ProductStructureCard {...structure} />}\n\t\t\t\t\t\t{!!operations && <ProductOperationsCard {...operations} />}\n\t\t\t\t\t\t{!!quote && <ProductQuotePreviewCard {...quote} />}\n\t\t\t\t\t\t{!!policies && <ProductPoliciesCard {...policies} />}\n\t\t\t\t\t\t{slots?.railBottom}\n\t\t\t\t\t</aside>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{slots?.after}\n\t\t</div>\n\t);\n}\n\nProductOverview.displayName = 'ProductOverview';\n","import { ArrowLeft, ListChecks } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { MetadataList, type MetadataListItem } from '@/components/composed/data-display/metadata';\nimport { ItemGroup } from '@/components/base/item';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantDetailsStrings } from '../products.strings';\nimport type {\n\tProductOptionSummary,\n\tProductVariantDetailsProps,\n\tProductVariantSummary,\n} from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductSummaryRow } from '../partials/product-rows';\nimport { ProductVariantActionMenu } from './product-variant-action-menu';\n\nconst isPresent = (value: ReactNode): boolean => (\n\tvalue !== undefined &&\n\tvalue !== null &&\n\tvalue !== false &&\n\tvalue !== ''\n);\n\ntype ProductVariantMetadataLabels = {\n\tprice: string;\n\tinventory: string;\n\tsku: string;\n\tchannels: string;\n\tupdated: string;\n};\n\nfunction getDefaultMetadata(\n\tvariant: ProductVariantSummary,\n\tlabels: ProductVariantMetadataLabels,\n): MetadataListItem[] {\n\treturn [\n\t\t{ label: labels.price, value: variant.price },\n\t\t{ label: labels.inventory, value: variant.inventory },\n\t\t{ label: labels.sku, value: variant.sku },\n\t\t{ label: labels.channels, value: variant.channels },\n\t\t{ label: labels.updated, value: variant.updatedAt },\n\t].filter((item) => isPresent(item.value));\n}\n\nexport function ProductVariantDetails({\n\tvariant,\n\tmetadata,\n\toptionItems = [],\n\tmedia,\n\tonBack,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\tonSelectOption,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\trenderActions,\n\trenderMetadata,\n\trenderOption,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantDetailsProps) {\n\tconst strings = useStrings(defaultProductVariantDetailsStrings, stringsProp);\n\tconst resolvedMetadata = variant ? (metadata ?? getDefaultMetadata(variant, strings.metadata)) : [];\n\tconst hasActionMenu = !!(\n\t\tvariant &&\n\t\t(onSelectVariant || onEditVariant || onDuplicateVariant || onDeleteVariant || renderActions)\n\t);\n\tconst headerAction = (\n\t\t<div className=\"product-variant-details--header-actions flex items-center gap-2\">\n\t\t\t{!!onBack && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onBack} icon={ArrowLeft}>\n\t\t\t\t\t{strings.backLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!hasActionMenu && variant && (\n\t\t\t\t<ProductVariantActionMenu\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tonSelectVariant={onSelectVariant}\n\t\t\t\t\tonEditVariant={onEditVariant}\n\t\t\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\t\t\trenderVariantActions={renderActions}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n\tconst selectedOptions = variant?.options ?? [];\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ListChecks className=\"size-4\" />}\n\t\t\ttitle={variant?.name ?? strings.title}\n\t\t\ttitleSuffix={variant?.status ? (\n\t\t\t\t<Badge variant={variant.statusVariant ?? 'secondary'}>{variant.status}</Badge>\n\t\t\t) : undefined}\n\t\t\tdescription={variant?.description ?? strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={onBack || hasActionMenu ? headerAction : undefined}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variant-details--component w-full', className)}\n\t\t>\n\t\t\t{!variant ? (\n\t\t\t\tempty ?? (\n\t\t\t\t\t<ProductEmptyState\n\t\t\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t) : (\n\t\t\t\t<div className=\"product-variant-details--body grid gap-5\">\n\t\t\t\t\t{!!media && (\n\t\t\t\t\t\t<div className=\"product-variant-details--media overflow-hidden rounded-md border border-border bg-muted/30\">\n\t\t\t\t\t\t\t{media}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{renderMetadata ? (\n\t\t\t\t\t\trenderMetadata(variant)\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<MetadataList\n\t\t\t\t\t\t\ttitle={strings.factsTitle}\n\t\t\t\t\t\t\titems={resolvedMetadata}\n\t\t\t\t\t\t\tcolumns={3}\n\t\t\t\t\t\t\tdense\n\t\t\t\t\t\t\tclassName=\"product-variant-details--metadata\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!selectedOptions.length && (\n\t\t\t\t\t\t<div className=\"product-variant-details--selected-options space-y-2\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.selectedOptionsTitle}</Text>\n\t\t\t\t\t\t\t<div className=\"flex flex-wrap gap-1.5\">\n\t\t\t\t\t\t\t\t{selectedOptions.map((option, index) => (\n\t\t\t\t\t\t\t\t\t<Badge key={index} variant=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t{option}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{!!optionItems.length && (\n\t\t\t\t\t\t<div className=\"product-variant-details--related-options space-y-2\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.relatedOptionsTitle}</Text>\n\t\t\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t\t\t{optionItems.map((option: ProductOptionSummary, index) => (\n\t\t\t\t\t\t\t\t\trenderOption ? (\n\t\t\t\t\t\t\t\t\t\t<div key={option.id}>{renderOption(option, index)}</div>\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<ProductSummaryRow\n\t\t\t\t\t\t\t\t\t\t\tkey={option.id}\n\t\t\t\t\t\t\t\t\t\t\titem={option}\n\t\t\t\t\t\t\t\t\t\t\tactionLabel={strings.viewOptionLabel}\n\t\t\t\t\t\t\t\t\t\t\tonSelect={onSelectOption ? () => onSelectOption(option) : undefined}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantDetails.displayName = 'ProductVariantDetails';\n","import { Pencil, Save, Trash2, X } from 'lucide-react';\nimport { type FormEvent, useId, useState } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { FormField } from '@/components/base/forms';\nimport { Input, Select, Textarea } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport { defaultProductVariantEditorStrings } from '../products.strings';\nimport type {\n\tProductChoice,\n\tProductVariantEditorProps,\n\tProductVariantEditorValues,\n\tProductVariantOptionField,\n} from '../products.types';\n\nconst toSelectOptions = (choices: ProductChoice[]) => (\n\tchoices.map((choice) => ({\n\t\tvalue: choice.value,\n\t\tlabel: choice.label,\n\t\tdisabled: choice.disabled,\n\t}))\n);\n\nexport function ProductVariantEditor({\n\tvalue: valueProp,\n\tdefaultValue,\n\toptionFields = [],\n\tstatusOptions = [],\n\tonValueChange,\n\tonSubmit,\n\tonCancel,\n\tonDelete,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tdisabled = false,\n\tisSubmitting = false,\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantEditorProps) {\n\tconst strings = useStrings(defaultProductVariantEditorStrings, stringsProp);\n\tconst formId = useId();\n\tconst isControlled = valueProp !== undefined;\n\tconst [internalValue, setInternalValue] = useState<ProductVariantEditorValues>(defaultValue ?? {});\n\tconst value = (isControlled ? valueProp : internalValue) ?? {};\n\tconst isDisabled = disabled || isSubmitting;\n\n\tconst updateValue = (next: ProductVariantEditorValues) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(next);\n\t\t}\n\n\t\tonValueChange?.(next);\n\t};\n\n\tconst updateField = (field: keyof Omit<ProductVariantEditorValues, 'options'>, nextValue: string) => {\n\t\tupdateValue({\n\t\t\t...value,\n\t\t\t[field]: nextValue,\n\t\t});\n\t};\n\n\tconst updateOption = (field: ProductVariantOptionField, nextValue: string | undefined) => {\n\t\tupdateValue({\n\t\t\t...value,\n\t\t\toptions: {\n\t\t\t\t...(value.options ?? {}),\n\t\t\t\t[field.id]: nextValue,\n\t\t\t},\n\t\t});\n\t};\n\n\tconst handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n\t\tevent.preventDefault();\n\t\tonSubmit?.(value);\n\t};\n\n\tconst defaultFooter = (\n\t\t<div className=\"product-variant-editor--footer flex flex-col-reverse gap-2 sm:flex-row sm:items-center sm:justify-between\">\n\t\t\t<div>\n\t\t\t\t{!!onDelete && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"error\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tonClick={() => onDelete(value)}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={Trash2}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.deleteLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\">\n\t\t\t\t{!!onCancel && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tonClick={onCancel}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={X}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.cancelLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{!!onSubmit && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\tform={formId}\n\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\ticon={Save}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isSubmitting ? strings.savingLabel : strings.saveLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n\tconst hasDefaultFooter = !!(onDelete || onCancel || onSubmit);\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<Pencil className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot ?? (hasDefaultFooter ? defaultFooter : undefined)}\n\t\t\tfooterDivider\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variant-editor--component w-full', className)}\n\t\t>\n\t\t\t<form id={formId} className=\"product-variant-editor--form grid gap-5\" onSubmit={handleSubmit}>\n\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t<Text weight=\"semibold\">{strings.identityTitle}</Text>\n\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t<FormField label={strings.fields.name} required>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.name ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('name', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.name}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.sku}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.sku ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('sku', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.sku}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.description} className=\"md:col-span-2\">\n\t\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\t\tvalue={value.description ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('description', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.description}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\tautoResize\n\t\t\t\t\t\t\t\tminRows={2}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\n\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t<Text weight=\"semibold\">{strings.commercialTitle}</Text>\n\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t<FormField label={strings.fields.price}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.price ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('price', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.price}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.inventory}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.inventory ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('inventory', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.inventory}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.status}>\n\t\t\t\t\t\t\t{statusOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\toptions={toSelectOptions(statusOptions)}\n\t\t\t\t\t\t\t\t\tvalue={value.status ?? null}\n\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateField('status', nextValue ?? '')}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.statusPlaceholder}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\taria-label={strings.fields.status}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.status ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('status', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.status}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t<FormField label={strings.fields.channels}>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tvalue={value.channels ?? ''}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('channels', event.target.value)}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.channels}\n\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\n\t\t\t\t{!!optionFields.length && (\n\t\t\t\t\t<section className=\"product-variant-editor--section grid gap-3\">\n\t\t\t\t\t\t<Text weight=\"semibold\">{strings.optionsTitle}</Text>\n\t\t\t\t\t\t<div className=\"grid gap-3 md:grid-cols-2\">\n\t\t\t\t\t\t\t{optionFields.map((field) => {\n\t\t\t\t\t\t\t\tconst fieldValue = field.value ?? value.options?.[field.id] ?? '';\n\t\t\t\t\t\t\t\tconst hasChoices = !!field.choices?.length;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\t\t\tkey={field.id}\n\t\t\t\t\t\t\t\t\t\tlabel={field.label}\n\t\t\t\t\t\t\t\t\t\thelperText={field.helperText}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{hasChoices ? (\n\t\t\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\t\t\toptions={toSelectOptions(field.choices ?? [])}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue || null}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(nextValue) => updateOption(field, nextValue)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={field.placeholder ?? strings.optionPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={field.label}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={fieldValue}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateOption(field, event.target.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={field.placeholder ?? strings.optionPlaceholder}\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</section>\n\t\t\t\t)}\n\t\t\t</form>\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantEditor.displayName = 'ProductVariantEditor';\n","import { Copy, Eye, ListChecks, Pencil, Plus, RefreshCw, Trash2 } from 'lucide-react';\nimport { Fragment, useCallback, useMemo, useState, type ReactNode } from 'react';\n\nimport { Badge } from '@/components/base/badge';\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Checkbox, Input } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductVariantsBulkTableStrings,\n} from '../products.strings';\nimport type {\n\tProductOptionGroup,\n\tProductVariantBulkActionContext,\n\tProductVariantCellDisplay,\n\tProductVariantCellDisplayConfig,\n\tProductVariantCellRenderContext,\n\tProductVariantEditableField,\n\tProductVariantFieldChangeContext,\n\tProductVariantOptionCombinationDisplay,\n\tProductVariantRow,\n\tProductVariantSelectionMode,\n\tProductVariantsBulkTableColumn,\n\tProductVariantsBulkTableProps,\n} from '../products.types';\nimport { ProductEmptyState } from '../partials/product-empty-state';\nimport { ProductRowActions } from '../partials/product-actions';\nimport { PRODUCT_EMPTY_VALUE } from '../partials/product-values';\n\nconst DEFAULT_VISIBLE_COLUMNS: ProductVariantsBulkTableColumn[] = ['variant', 'sku', 'price', 'inventory', 'status'];\nconst DEFAULT_OPTION_COMBINATION_DISPLAY: ProductVariantOptionCombinationDisplay = 'text';\nconst DEFAULT_CELL_DISPLAY: ProductVariantCellDisplay = 'text';\nconst DEFAULT_SELECTION_MODE: ProductVariantSelectionMode = 'multiple';\n\nfunction getPlainText(value: unknown): string {\n\tif (typeof value === 'string' || typeof value === 'number') return String(value);\n\treturn '';\n}\n\nfunction getOptionValue(variant: ProductVariantRow, option: ProductOptionGroup) {\n\tconst directValue = variant.optionValues?.[option.id];\n\tif (directValue !== undefined && directValue !== null && directValue !== false && directValue !== '') {\n\t\treturn directValue;\n\t}\n\n\tconst valueId = variant.optionValueIds?.[option.id];\n\tconst matchedValue = option.values?.find((value) => value.id === valueId);\n\treturn matchedValue?.label ?? undefined;\n}\n\nfunction getVariantName(variant: ProductVariantRow, optionGroups: ProductOptionGroup[]) {\n\tif (variant.name !== undefined && variant.name !== null && variant.name !== '') {\n\t\treturn variant.name;\n\t}\n\n\tconst derivedName = optionGroups\n\t\t.filter((option) => option.usedForVariants !== false)\n\t\t.map((option) => getOptionValue(variant, option))\n\t\t.filter((value): value is NonNullable<typeof value> => value !== undefined && value !== null && value !== '')\n\t\t.map((value) => getPlainText(value))\n\t\t.filter(Boolean)\n\t\t.join(' / ');\n\n\treturn derivedName || PRODUCT_EMPTY_VALUE;\n}\n\nfunction getVariantOptionSummary(variant: ProductVariantRow, optionGroups: ProductOptionGroup[]) {\n\treturn optionGroups\n\t\t.filter((option) => option.usedForVariants !== false)\n\t\t.map((option) => getOptionValue(variant, option))\n\t\t.filter((value): value is NonNullable<typeof value> => value !== undefined && value !== null && value !== '');\n}\n\nfunction getOptionCombinationLabel(values: ReactNode[]) {\n\treturn values.map(getPlainText).filter(Boolean).join(' / ');\n}\n\nfunction getGroupLabel(variant: ProductVariantRow, option: ProductOptionGroup) {\n\tconst value = getOptionValue(variant, option);\n\tconst label = getPlainText(value);\n\treturn label || PRODUCT_EMPTY_VALUE;\n}\n\nfunction selectedIdsToRows(ids: string[], rowById: Map<string, ProductVariantRow>): ProductVariantRow[] {\n\treturn ids.map((id) => rowById.get(id)).filter((row): row is ProductVariantRow => !!row);\n}\n\nfunction renderFieldValue(value: ReactNode | undefined) {\n\tif (value === undefined || value === null || value === '') return PRODUCT_EMPTY_VALUE;\n\treturn value;\n}\n\nfunction hasCellValue(value: ReactNode | undefined) {\n\treturn value !== undefined && value !== null && value !== '';\n}\n\nfunction isEditableField(column: ProductVariantsBulkTableColumn): column is ProductVariantEditableField {\n\treturn column === 'sku' || column === 'price' || column === 'inventory';\n}\n\nfunction resolveCellDisplay(display: ProductVariantCellDisplayConfig, field: ProductVariantEditableField): ProductVariantCellDisplay {\n\tif (display === 'text' || display === 'field') return display;\n\treturn display[field] ?? DEFAULT_CELL_DISPLAY;\n}\n\nfunction getFieldChangeContext(\n\tindex: number,\n\tfield: ProductVariantEditableField,\n\tpreviousValue: ReactNode | undefined,\n\tvalue: string,\n): ProductVariantFieldChangeContext {\n\treturn {\n\t\tindex,\n\t\tfield,\n\t\tpreviousValue,\n\t\tvalue,\n\t};\n}\n\nfunction renderVariantCellValue(\n\tvalue: ReactNode | undefined,\n\tlabel: string,\n\tdisplay: ProductVariantCellDisplay,\n\tonChange?: (value: string) => void,\n\tonBlur?: (value: string) => void,\n) {\n\tconst plainValue = getPlainText(value);\n\n\tif (display === 'field') {\n\t\tconst canEdit = !!onChange;\n\n\t\treturn (\n\t\t\t<Input\n\t\t\t\treadOnly={!canEdit}\n\t\t\t\tvalue={plainValue}\n\t\t\t\tonChange={canEdit ? (event) => onChange(event.currentTarget.value) : undefined}\n\t\t\t\tonBlur={onBlur ? (event) => onBlur(event.currentTarget.value) : undefined}\n\t\t\t\taria-label={label}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'h-10 w-full min-w-36 bg-background px-space-md shadow-xs',\n\t\t\t\t\t!canEdit && 'text-muted-foreground',\n\t\t\t\t)}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text className=\"min-w-0 whitespace-normal break-words tabular-nums\" type={hasCellValue(value) ? 'main' : 'secondary'}>\n\t\t\t{renderFieldValue(value)}\n\t\t</Text>\n\t);\n}\n\nexport function ProductVariantsBulkTable({\n\tvariants = [],\n\toptionGroups = [],\n\tgroupByOptionId,\n\tvisibleColumns = DEFAULT_VISIBLE_COLUMNS,\n\toptionCombinationDisplay = DEFAULT_OPTION_COMBINATION_DISPLAY,\n\tcellDisplay = DEFAULT_CELL_DISPLAY,\n\tselectionMode,\n\trenderOptionCombination,\n\trenderCell,\n\tselectedVariantIds,\n\tdefaultSelectedVariantIds = [],\n\tonSelectedVariantIdsChange,\n\tonVariantFieldChange,\n\tonVariantFieldBlur,\n\tonCreateVariant,\n\tonGenerateVariants,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\tonBulkEdit,\n\tonBulkApply,\n\tonBulkDelete,\n\trenderVariantActions,\n\trenderBulkActions,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tempty,\n\tsurface = 'card',\n\tclassName,\n\tstrings: stringsProp,\n}: ProductVariantsBulkTableProps) {\n\tconst strings = useStrings(defaultProductVariantsBulkTableStrings, stringsProp);\n\tconst isSelectionControlled = selectedVariantIds !== undefined;\n\tconst [internalSelectedIds, setInternalSelectedIds] = useState(defaultSelectedVariantIds);\n\tconst hasBulkActions = !!(renderBulkActions || onBulkEdit || onBulkApply || onBulkDelete);\n\tconst resolvedSelectionMode = selectionMode\n\t\t?? (hasBulkActions || isSelectionControlled || !!onSelectedVariantIdsChange ? DEFAULT_SELECTION_MODE : 'none');\n\tconst isSelectable = resolvedSelectionMode === 'multiple';\n\tconst selectedIds = useMemo(\n\t\t() => (isSelectable ? (isSelectionControlled ? selectedVariantIds : internalSelectedIds) : []),\n\t\t[internalSelectedIds, isSelectable, isSelectionControlled, selectedVariantIds],\n\t);\n\tconst rowById = useMemo(\n\t\t() => new Map(variants.map((variant) => [variant.id, variant])),\n\t\t[variants],\n\t);\n\tconst selectedRows = useMemo(\n\t\t() => selectedIdsToRows(selectedIds, rowById),\n\t\t[rowById, selectedIds],\n\t);\n\tconst selectedIdSet = useMemo(() => new Set(selectedIds), [selectedIds]);\n\tconst visibleColumnSet = useMemo(() => new Set(visibleColumns), [visibleColumns]);\n\tconst groupByOption = useMemo(\n\t\t() => optionGroups.find((option) => option.id === groupByOptionId),\n\t\t[optionGroups, groupByOptionId],\n\t);\n\tconst rowIndexById = useMemo(\n\t\t() => new Map(variants.map((variant, index) => [variant.id, index])),\n\t\t[variants],\n\t);\n\tconst orderedVariants = useMemo(() => {\n\t\tif (!groupByOption) return variants;\n\t\tconst valueOrder = new Map((groupByOption.values ?? []).map((value, index) => [value.id, index]));\n\n\t\treturn [...variants].sort((a, b) => {\n\t\t\tconst aValueId = a.optionValueIds?.[groupByOption.id];\n\t\t\tconst bValueId = b.optionValueIds?.[groupByOption.id];\n\t\t\tconst aOrder = aValueId !== undefined ? valueOrder.get(aValueId) : undefined;\n\t\t\tconst bOrder = bValueId !== undefined ? valueOrder.get(bValueId) : undefined;\n\t\t\tconst resolvedAOrder = aOrder ?? Number.MAX_SAFE_INTEGER;\n\t\t\tconst resolvedBOrder = bOrder ?? Number.MAX_SAFE_INTEGER;\n\t\t\tif (resolvedAOrder !== resolvedBOrder) return resolvedAOrder - resolvedBOrder;\n\t\t\treturn (rowIndexById.get(a.id) ?? 0) - (rowIndexById.get(b.id) ?? 0);\n\t\t});\n\t}, [groupByOption, rowIndexById, variants]);\n\tconst groupCounts = useMemo(() => {\n\t\tif (!groupByOption) return new Map<string, number>();\n\t\tconst counts = new Map<string, number>();\n\t\tvariants.forEach((variant) => {\n\t\t\tconst label = getGroupLabel(variant, groupByOption);\n\t\t\tcounts.set(label, (counts.get(label) ?? 0) + 1);\n\t\t});\n\t\treturn counts;\n\t}, [groupByOption, variants]);\n\tconst hasBulkControls = isSelectable && hasBulkActions;\n\tconst hasRows = variants.length > 0;\n\tconst allRowsSelected = isSelectable && hasRows && variants.every((variant) => selectedIdSet.has(variant.id));\n\tconst hasRowActions = !!(\n\t\tonSelectVariant ||\n\t\tonEditVariant ||\n\t\tonDuplicateVariant ||\n\t\tonDeleteVariant ||\n\t\trenderVariantActions\n\t);\n\tconst visibleColumnCount = visibleColumns.filter((column) => visibleColumnSet.has(column)).length;\n\tconst tableColumnCount = visibleColumnCount + (isSelectable ? 1 : 0) + (hasRowActions ? 1 : 0);\n\n\tconst updateSelection = useCallback(\n\t\t(nextIds: string[]) => {\n\t\t\tconst nextRows = selectedIdsToRows(nextIds, rowById);\n\t\t\tif (!isSelectionControlled) {\n\t\t\t\tsetInternalSelectedIds(nextIds);\n\t\t\t}\n\t\t\tonSelectedVariantIdsChange?.(nextIds, nextRows);\n\t\t},\n\t\t[isSelectionControlled, onSelectedVariantIdsChange, rowById],\n\t);\n\n\tconst clearSelection = useCallback(() => updateSelection([]), [updateSelection]);\n\tconst toggleRow = useCallback(\n\t\t(variant: ProductVariantRow, checked: boolean | 'indeterminate') => {\n\t\t\tif (!isSelectable) return;\n\t\t\tconst shouldSelect = checked === true;\n\t\t\tconst nextIds = shouldSelect\n\t\t\t\t? Array.from(new Set([...selectedIds, variant.id]))\n\t\t\t\t: selectedIds.filter((id) => id !== variant.id);\n\t\t\tupdateSelection(nextIds);\n\t\t},\n\t\t[isSelectable, selectedIds, updateSelection],\n\t);\n\tconst toggleAll = useCallback(\n\t\t(checked: boolean | 'indeterminate') => {\n\t\t\tif (!isSelectable) return;\n\t\t\tupdateSelection(checked === true ? variants.map((variant) => variant.id) : []);\n\t\t},\n\t\t[isSelectable, updateSelection, variants],\n\t);\n\n\tconst bulkContext: ProductVariantBulkActionContext = {\n\t\tselectedRows,\n\t\tselectedIds,\n\t\tallRows: variants,\n\t\tselectedCount: selectedRows.length,\n\t\ttotalCount: variants.length,\n\t\tallRowsSelected,\n\t\tclearSelection,\n\t\tsetSelectedIds: updateSelection,\n\t};\n\n\tconst headerAction = (onCreateVariant || onGenerateVariants) ? (\n\t\t<div className=\"product-variants-bulk-table--header-actions flex flex-wrap items-center justify-end gap-space-sm\">\n\t\t\t{!!onGenerateVariants && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"outline\" onClick={onGenerateVariants} icon={RefreshCw}>\n\t\t\t\t\t{strings.generateLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onCreateVariant && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"ghost\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t\t\t{strings.createLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\tconst bulkToolbar = hasBulkControls ? (\n\t\t<div className=\"product-variants-bulk-table--bulk-toolbar flex min-w-0 flex-wrap items-center justify-between gap-space-md rounded-radius-lg bg-muted/45 px-space-lg py-space-md\">\n\t\t\t<div className=\"flex min-w-0 flex-wrap items-center gap-space-md\">\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.selectedLabel(selectedRows.length, variants.length)}\n\t\t\t\t</Text>\n\t\t\t\t{!!selectedRows.length && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.clearSelectionLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div className=\"flex min-w-0 flex-wrap items-center justify-end gap-space-md\">\n\t\t\t\t{!!onBulkEdit && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"solid\"\n\t\t\t\t\t\tdisabled={!selectedRows.length}\n\t\t\t\t\t\tonClick={() => onBulkEdit(selectedRows)}\n\t\t\t\t\t\tclassName=\"bg-background text-foreground hover:bg-background/80 disabled:opacity-70\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.bulkEditLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{!!onBulkDelete && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tdisabled={!selectedRows.length}\n\t\t\t\t\t\tonClick={() => onBulkDelete(selectedRows)}\n\t\t\t\t\t\ticon={Trash2}\n\t\t\t\t\t\tclassName=\"text-muted-foreground hover:text-destructive disabled:text-muted-foreground/55\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.bulkDeleteLabel} ({selectedRows.length})\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{!!onBulkApply && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tdisabled={!selectedRows.length}\n\t\t\t\t\t\tonClick={() => onBulkApply(selectedRows)}\n\t\t\t\t\t\tclassName=\"text-muted-foreground disabled:text-muted-foreground/55\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.bulkApplyLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t{renderBulkActions?.(bulkContext)}\n\t\t\t</div>\n\t\t</div>\n\t) : null;\n\n\tconst content = variants.length === 0 ? (\n\t\tempty ?? (\n\t\t\t<ProductEmptyState\n\t\t\t\ttitle={strings.emptyTitle}\n\t\t\t\tdescription={strings.emptyDescription}\n\t\t\t\taction={onGenerateVariants ? (\n\t\t\t\t\t<Button type=\"button\" onClick={onGenerateVariants} icon={RefreshCw}>\n\t\t\t\t\t\t{strings.generateLabel}\n\t\t\t\t\t</Button>\n\t\t\t\t) : undefined}\n\t\t\t/>\n\t\t)\n\t) : (\n\t\t<div className=\"product-variants-bulk-table--body grid min-w-0 gap-space-md\">\n\t\t\t{bulkToolbar}\n\t\t\t<div\n\t\t\t\tclassName=\"product-variants-bulk-table--table overflow-hidden rounded-radius-lg border border-border bg-background\"\n\t\t\t>\n\t\t\t\t<div className=\"overflow-x-auto [scrollbar-gutter:stable] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-2.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-border [&::-webkit-scrollbar-track]:bg-muted/40\">\n\t\t\t\t\t<table className=\"w-full min-w-max border-collapse\">\n\t\t\t\t\t\t<colgroup>\n\t\t\t\t\t\t\t{isSelectable && <col className=\"w-14 min-w-14 max-w-14\" style={{ width: '3.5rem' }} />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('variant') && <col />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('sku') && <col />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('price') && <col />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('inventory') && <col />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('status') && <col />}\n\t\t\t\t\t\t\t{visibleColumnSet.has('updated') && <col />}\n\t\t\t\t\t\t\t{hasRowActions && <col style={{ width: '4.5rem' }} />}\n\t\t\t\t\t\t</colgroup>\n\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t<tr className=\"h-12 border-b border-border/70 bg-muted/45\">\n\t\t\t\t\t\t\t\t{isSelectable && (\n\t\t\t\t\t\t\t\t\t<th className=\"w-14 min-w-14 max-w-14 px-0 py-space-md text-center align-middle\" style={{ width: '3.5rem' }}>\n\t\t\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\t\t\tchecked={allRowsSelected}\n\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={toggleAll}\n\t\t\t\t\t\t\t\t\t\t\taria-label={strings.selectAllLabel}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"mx-auto\"\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('variant') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.variant}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('sku') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.sku}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('price') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.price}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('inventory') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.inventory}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('status') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.status}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{visibleColumnSet.has('updated') && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-left align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.updated}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{hasRowActions && (\n\t\t\t\t\t\t\t\t\t<th className=\"px-space-lg py-space-md text-right align-middle\">\n\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"pxs\" type=\"secondary\" weight=\"medium\" className=\"whitespace-normal uppercase tracking-wider\">\n\t\t\t\t\t\t\t\t\t\t\t{strings.headers.actions}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t<tbody>\n\t\t\t\t\t\t\t{orderedVariants.map((variant, displayIndex) => {\n\t\t\t\t\t\t\t\tconst index = rowIndexById.get(variant.id) ?? displayIndex;\n\t\t\t\t\t\t\t\tconst groupLabel = groupByOption ? getGroupLabel(variant, groupByOption) : null;\n\t\t\t\t\t\t\t\tconst previousVariant = displayIndex > 0 ? orderedVariants[displayIndex - 1] : undefined;\n\t\t\t\t\t\t\t\tconst previousGroupLabel = groupByOption && previousVariant\n\t\t\t\t\t\t\t\t\t? getGroupLabel(previousVariant, groupByOption)\n\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t\tconst shouldRenderGroup = !!groupByOption && groupLabel !== previousGroupLabel;\n\t\t\t\t\t\t\t\tconst isSelected = selectedIdSet.has(variant.id);\n\t\t\t\t\t\t\t\tconst actionContext = {\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\tonSelect: onSelectVariant ? () => onSelectVariant(variant) : undefined,\n\t\t\t\t\t\t\t\t\tonEdit: onEditVariant ? () => onEditVariant(variant) : undefined,\n\t\t\t\t\t\t\t\t\tonDuplicate: onDuplicateVariant ? () => onDuplicateVariant(variant) : undefined,\n\t\t\t\t\t\t\t\t\tonDelete: onDeleteVariant ? () => onDeleteVariant(variant) : undefined,\n\t\t\t\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\t\t\t\tonToggleSelected: isSelectable ? (checked: boolean) => toggleRow(variant, checked) : undefined,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst summaryOptionGroups = groupByOption\n\t\t\t\t\t\t\t\t\t? optionGroups.filter((option) => option.id !== groupByOption.id)\n\t\t\t\t\t\t\t\t\t: optionGroups;\n\t\t\t\t\t\t\t\tconst optionSummary = getVariantOptionSummary(variant, summaryOptionGroups);\n\t\t\t\t\t\t\t\tconst groupedVariantName = groupByOption\n\t\t\t\t\t\t\t\t\t? getVariantName({ ...variant, name: undefined }, summaryOptionGroups)\n\t\t\t\t\t\t\t\t\t: getVariantName(variant, optionGroups);\n\t\t\t\t\t\t\t\tconst variantName = groupedVariantName === PRODUCT_EMPTY_VALUE && groupByOption\n\t\t\t\t\t\t\t\t\t? getVariantName(variant, optionGroups)\n\t\t\t\t\t\t\t\t\t: groupedVariantName;\n\t\t\t\t\t\t\t\tconst optionLabel = getOptionCombinationLabel(optionSummary);\n\t\t\t\t\t\t\t\tconst optionLabelMatchesVariantName = optionLabel === getPlainText(variantName);\n\t\t\t\t\t\t\t\tconst createCellContext = (\n\t\t\t\t\t\t\t\t\tcolumn: ProductVariantsBulkTableColumn,\n\t\t\t\t\t\t\t\t\tvalue: ReactNode | undefined,\n\t\t\t\t\t\t\t\t\tdisplay: ProductVariantCellDisplay = DEFAULT_CELL_DISPLAY,\n\t\t\t\t\t\t\t\t): ProductVariantCellRenderContext => {\n\t\t\t\t\t\t\t\t\tconst onChange = isEditableField(column) && onVariantFieldChange\n\t\t\t\t\t\t\t\t\t\t? (nextValue: string) => onVariantFieldChange(\n\t\t\t\t\t\t\t\t\t\t\tvariant,\n\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\tnextValue,\n\t\t\t\t\t\t\t\t\t\t\tgetFieldChangeContext(index, column, value, nextValue),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t\t\t\tconst onBlur = isEditableField(column) && onVariantFieldBlur\n\t\t\t\t\t\t\t\t\t\t? (nextValue: string) => onVariantFieldBlur(\n\t\t\t\t\t\t\t\t\t\t\tvariant,\n\t\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\t\tnextValue,\n\t\t\t\t\t\t\t\t\t\t\tgetFieldChangeContext(index, column, value, nextValue),\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\tcolumn,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tvariantName,\n\t\t\t\t\t\t\t\t\t\toptionValues: optionSummary,\n\t\t\t\t\t\t\t\t\t\toptionLabel,\n\t\t\t\t\t\t\t\t\t\tcellDisplay: display,\n\t\t\t\t\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t\t\t\t\tonBlur,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst renderCellContent = (\n\t\t\t\t\t\t\t\t\tcolumn: ProductVariantsBulkTableColumn,\n\t\t\t\t\t\t\t\t\tvalue: ReactNode | undefined,\n\t\t\t\t\t\t\t\t\tdisplay: ProductVariantCellDisplay,\n\t\t\t\t\t\t\t\t\tfallback: (context: ProductVariantCellRenderContext) => ReactNode,\n\t\t\t\t\t\t\t\t) => {\n\t\t\t\t\t\t\t\t\tconst context = createCellContext(column, value, display);\n\t\t\t\t\t\t\t\t\tconst rendered = renderCell?.(variant, context);\n\t\t\t\t\t\t\t\t\treturn rendered !== undefined ? rendered : fallback(context);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst shouldRenderOptionCombination =\n\t\t\t\t\t\t\t\t\toptionCombinationDisplay !== 'none' &&\n\t\t\t\t\t\t\t\t\toptionSummary.length > 0 &&\n\t\t\t\t\t\t\t\t\t(groupByOption ? !optionLabelMatchesVariantName : (optionCombinationDisplay === 'tags' || !optionLabelMatchesVariantName));\n\t\t\t\t\t\t\t\tconst renderedOptionCombination = optionCombinationDisplay !== 'none'\n\t\t\t\t\t\t\t\t\t? renderOptionCombination?.(variant, {\n\t\t\t\t\t\t\t\t\t\toptionGroups,\n\t\t\t\t\t\t\t\t\t\toptionValues: optionSummary,\n\t\t\t\t\t\t\t\t\t\toptionLabel,\n\t\t\t\t\t\t\t\t\t\tdisplay: optionCombinationDisplay,\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t\tconst defaultRowActions = [\n\t\t\t\t\t\t\t\t\t...(onSelectVariant ? [{\n\t\t\t\t\t\t\t\t\t\tid: 'view',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.viewLabel,\n\t\t\t\t\t\t\t\t\t\ticon: <Eye className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\tonClick: () => onSelectVariant(variant),\n\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t...(onEditVariant ? [{\n\t\t\t\t\t\t\t\t\t\tid: 'edit',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.editLabel,\n\t\t\t\t\t\t\t\t\t\ticon: <Pencil className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\tonClick: () => onEditVariant(variant),\n\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t...(onDuplicateVariant ? [{\n\t\t\t\t\t\t\t\t\t\tid: 'duplicate',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.duplicateLabel,\n\t\t\t\t\t\t\t\t\t\ticon: <Copy className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\tonClick: () => onDuplicateVariant(variant),\n\t\t\t\t\t\t\t\t\t\tvariant: 'ghost' as const,\n\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t\t...(onDeleteVariant ? [{\n\t\t\t\t\t\t\t\t\t\tid: 'delete',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.deleteLabel,\n\t\t\t\t\t\t\t\t\t\ticon: <Trash2 className=\"size-3.5\" />,\n\t\t\t\t\t\t\t\t\t\tonClick: () => onDeleteVariant(variant),\n\t\t\t\t\t\t\t\t\t\tvariant: 'destructive' as const,\n\t\t\t\t\t\t\t\t\t}] : []),\n\t\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Fragment key={variant.id}>\n\t\t\t\t\t\t\t\t\t\t{shouldRenderGroup && (\n\t\t\t\t\t\t\t\t\t\t\t<tr className=\"product-variants-bulk-table--group-row border-b border-border/70 bg-muted/30\">\n\t\t\t\t\t\t\t\t\t\t\t\t<td colSpan={tableColumnCount} className=\"px-space-lg py-space-md align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" className=\"min-w-0 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{groupLabel}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"whitespace-nowrap\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{strings.groupCountLabel(groupCounts.get(groupLabel ?? '') ?? 0)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<tr className=\"h-20 border-b border-border/70 last:border-b-0\">\n\t\t\t\t\t\t\t\t\t\t{isSelectable && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"w-14 min-w-14 max-w-14 px-0 py-space-lg text-center align-middle\" style={{ width: '3.5rem' }}>\n\t\t\t\t\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={isSelected}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonCheckedChange={(checked) => toggleRow(variant, checked)}\n\t\t\t\t\t\t\t\t\t\t\t\t\taria-label={strings.selectRowLabel(index)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"mx-auto\"\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('variant') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-lg align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('variant', variantName, DEFAULT_CELL_DISPLAY, () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"grid min-w-0 gap-space-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" className=\"min-w-0 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{variantName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{renderedOptionCombination}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!renderedOptionCombination && shouldRenderOptionCombination && optionCombinationDisplay === 'text' && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"min-w-0 whitespace-normal break-words\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{optionSummary.map((value, valueIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span key={`${variant.id}-option-text-${valueIndex}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{valueIndex > 0 ? ' / ' : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!renderedOptionCombination && shouldRenderOptionCombination && optionCombinationDisplay === 'tags' && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex min-w-0 flex-wrap gap-space-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{optionSummary.map((value, valueIndex) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`${variant.id}-option-${valueIndex}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-full rounded-radius-sm bg-muted px-space-sm py-space-2xs text-pxs font-medium text-muted-foreground\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('sku') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-md align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('sku', variant.sku, resolveCellDisplay(cellDisplay, 'sku'), (context) => renderVariantCellValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant.sku,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${strings.headers.sku}: ${getPlainText(variantName)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.cellDisplay,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onBlur,\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('price') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-md align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('price', variant.price, resolveCellDisplay(cellDisplay, 'price'), (context) => renderVariantCellValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant.price,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${strings.headers.price}: ${getPlainText(variantName)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.cellDisplay,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onBlur,\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('inventory') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-md align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('inventory', variant.inventory, resolveCellDisplay(cellDisplay, 'inventory'), (context) => renderVariantCellValue(\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant.inventory,\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${strings.headers.inventory}: ${getPlainText(variantName)}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.cellDisplay,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontext.onBlur,\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('status') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-lg align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('status', variant.status, DEFAULT_CELL_DISPLAY, () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariant.status ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Badge variant={variant.statusVariant ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{variant.status}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"secondary\">{PRODUCT_EMPTY_VALUE}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{visibleColumnSet.has('updated') && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-lg align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderCellContent('updated', variant.updatedAt, DEFAULT_CELL_DISPLAY, () => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{renderFieldValue(variant.updatedAt)}</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{hasRowActions && (\n\t\t\t\t\t\t\t\t\t\t\t<td className=\"px-space-lg py-space-lg text-right align-middle\">\n\t\t\t\t\t\t\t\t\t\t\t\t{renderVariantActions ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderVariantActions(variant, actionContext)\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ProductRowActions\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titem={variant}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactions={defaultRowActions}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmenuLabel={strings.headers.actions}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</tbody>\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n\n\tif (surface === 'embedded') {\n\t\treturn (\n\t\t\t<section\n\t\t\t\taria-label={strings.title}\n\t\t\t\tclassName={cn('product-variants-bulk-table--component min-w-0', className)}\n\t\t\t>\n\t\t\t\t{content}\n\t\t\t</section>\n\t\t);\n\t}\n\n\treturn (\n\t\t<SmartCard\n\t\t\ticon={<ListChecks className=\"size-4\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\theaderAction={headerAction}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1\"\n\t\t\tclassName={cn('product-variants-bulk-table--component w-full', className)}\n\t\t>\n\t\t\t{content}\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantsBulkTable.displayName = 'ProductVariantsBulkTable';\n","import { ListFilter, Plus, RefreshCw, Search } from 'lucide-react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport { Button } from '@/components/base/buttons';\nimport { SmartCard } from '@/components/base/cards';\nimport { Select } from '@/components/base/forms/fields';\nimport { Text } from '@/components/typography';\nimport { useStrings } from '@/lib/strings';\nimport { cn } from '@/lib/utils';\n\nimport {\n\tdefaultProductVariantsManagerStrings,\n} from '../products.strings';\nimport type {\n\tProductVariantsManagerProps,\n} from '../products.types';\nimport { ProductOptionsMatrix } from './product-options-matrix';\nimport { ProductVariantsBulkTable } from './product-variants-bulk-table';\n\nexport function ProductVariantsManager({\n\toptionGroups = [],\n\tvariants = [],\n\tvisibleColumns,\n\toptionCombinationDisplay,\n\tcellDisplay,\n\tselectionMode,\n\trenderOptionCombination,\n\trenderCell,\n\tselectedVariantIds,\n\tdefaultSelectedVariantIds,\n\tonSelectedVariantIdsChange,\n\tonVariantFieldChange,\n\tonVariantFieldBlur,\n\tcollapsedOptionIds,\n\tdefaultCollapsedOptionIds,\n\tonCollapsedOptionIdsChange,\n\teditingOptionId,\n\tdefaultEditingOptionId,\n\tonEditingOptionIdChange,\n\tonCreateOption,\n\tonEditOption,\n\tonDeleteOption,\n\tonAddValue,\n\tonDeleteValue,\n\tonOptionNameChange,\n\tonValueLabelChange,\n\tonDoneEditingOption,\n\tonSaveEditingOption,\n\tonCancelEditingOption,\n\tonToggleUsedForVariants,\n\trenderOptionActions,\n\trenderValue,\n\tonCreateVariant,\n\tonGenerateVariants,\n\tonSelectVariant,\n\tonEditVariant,\n\tonDuplicateVariant,\n\tonDeleteVariant,\n\tonBulkEdit,\n\tonBulkApply,\n\tonBulkDelete,\n\trenderVariantActions,\n\trenderBulkActions,\n\tgroupByOptionId,\n\tdefaultGroupByOptionId,\n\tonGroupByOptionIdChange,\n\tonSearchVariants,\n\tonFilterVariants,\n\tcontrolsEnd,\n\tactions,\n\theaderEnd,\n\tfooterSlot,\n\tclassName,\n\tstrings: stringsProp,\n\toptionsStrings,\n\tvariantsStrings,\n}: ProductVariantsManagerProps) {\n\tconst strings = useStrings(defaultProductVariantsManagerStrings, stringsProp);\n\tconst groupableOptions = useMemo(\n\t\t() => optionGroups.filter((option) => option.usedForVariants !== false),\n\t\t[optionGroups],\n\t);\n\tconst fallbackGroupByOptionId = groupableOptions[0]?.id ?? null;\n\tconst isGroupByControlled = groupByOptionId !== undefined;\n\tconst [internalGroupByOptionId, setInternalGroupByOptionId] = useState<string | null>(\n\t\tdefaultGroupByOptionId ?? fallbackGroupByOptionId,\n\t);\n\tconst resolvedGroupByOptionId = groupByOptionId ?? internalGroupByOptionId ?? fallbackGroupByOptionId;\n\tconst groupByOptions = useMemo(\n\t\t() => groupableOptions.map((option) => ({\n\t\t\tvalue: option.id,\n\t\t\tlabel: String(typeof option.name === 'string' || typeof option.name === 'number' ? option.name : option.id),\n\t\t})),\n\t\t[groupableOptions],\n\t);\n\tconst updateGroupByOptionId = useCallback(\n\t\t(nextId: string | undefined) => {\n\t\t\tconst matchedOption = optionGroups.find((option) => option.id === nextId);\n\t\t\tif (!isGroupByControlled) {\n\t\t\t\tsetInternalGroupByOptionId(nextId ?? null);\n\t\t\t}\n\t\t\tonGroupByOptionIdChange?.(nextId, matchedOption);\n\t\t},\n\t\t[isGroupByControlled, onGroupByOptionIdChange, optionGroups],\n\t);\n\tconst headerAction = (onGenerateVariants || onCreateVariant) ? (\n\t\t<div className=\"product-variants-manager--header-actions flex min-w-0 flex-wrap items-center justify-end gap-space-sm\">\n\t\t\t{!!onGenerateVariants && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"outline\" onClick={onGenerateVariants} icon={RefreshCw}>\n\t\t\t\t\t{strings.generateLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t\t{!!onCreateVariant && (\n\t\t\t\t<Button type=\"button\" variant=\"secondary\" buttonStyle=\"outline\" onClick={onCreateVariant} icon={Plus}>\n\t\t\t\t\t{strings.createVariantLabel}\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : undefined;\n\n\treturn (\n\t\t<SmartCard\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\tactions={actions}\n\t\t\tactionsLabel={strings.actionsLabel}\n\t\t\theaderAction={headerAction}\n\t\t\theaderEnd={headerEnd}\n\t\t\tfooterSlot={footerSlot}\n\t\t\tcontentClassName=\"mt-1 px-0 pb-0\"\n\t\t\tclassName={cn('product-variants-manager--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"product-variants-manager--body grid min-w-0 gap-0\">\n\t\t\t\t<section className=\"product-variants-manager--options min-w-0 px-surface pb-space-lg\">\n\t\t\t\t\t<ProductOptionsMatrix\n\t\t\t\t\t\toptionGroups={optionGroups}\n\t\t\t\t\t\tcollapsedOptionIds={collapsedOptionIds}\n\t\t\t\t\t\tdefaultCollapsedOptionIds={defaultCollapsedOptionIds}\n\t\t\t\t\t\tonCollapsedOptionIdsChange={onCollapsedOptionIdsChange}\n\t\t\t\t\t\teditingOptionId={editingOptionId}\n\t\t\t\t\t\tdefaultEditingOptionId={defaultEditingOptionId}\n\t\t\t\t\t\tonEditingOptionIdChange={onEditingOptionIdChange}\n\t\t\t\t\t\tsurface=\"embedded\"\n\t\t\t\t\t\tonCreateOption={onCreateOption}\n\t\t\t\t\t\tonEditOption={onEditOption}\n\t\t\t\t\t\tonDeleteOption={onDeleteOption}\n\t\t\t\t\t\tonAddValue={onAddValue}\n\t\t\t\t\t\tonDeleteValue={onDeleteValue}\n\t\t\t\t\t\tonOptionNameChange={onOptionNameChange}\n\t\t\t\t\t\tonValueLabelChange={onValueLabelChange}\n\t\t\t\t\t\tonDoneEditingOption={onDoneEditingOption}\n\t\t\t\t\t\tonSaveEditingOption={onSaveEditingOption}\n\t\t\t\t\t\tonCancelEditingOption={onCancelEditingOption}\n\t\t\t\t\t\tonToggleUsedForVariants={onToggleUsedForVariants}\n\t\t\t\t\t\trenderOptionActions={renderOptionActions}\n\t\t\t\t\t\trenderValue={renderValue}\n\t\t\t\t\t\tshowHeader={false}\n\t\t\t\t\t\tshowCollapseControls={false}\n\t\t\t\t\t\tshowInlineActions={false}\n\t\t\t\t\t\tshowVariantToggle={false}\n\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\ttitle: strings.optionsTitle,\n\t\t\t\t\t\t\t...optionsStrings,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</section>\n\n\t\t\t\t<div className=\"product-variants-manager--controls flex min-w-0 flex-wrap items-center justify-between gap-space-md border-t border-border/70 px-surface py-space-md\">\n\t\t\t\t\t<div className=\"product-variants-manager--group-by flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"whitespace-nowrap\">{strings.groupByLabel}</Text>\n\t\t\t\t\t\t{groupByOptions.length > 0 && (\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\toptions={groupByOptions}\n\t\t\t\t\t\t\t\tvalue={resolvedGroupByOptionId}\n\t\t\t\t\t\t\t\tonChange={updateGroupByOptionId}\n\t\t\t\t\t\t\t\taria-label={strings.groupByLabel}\n\t\t\t\t\t\t\t\tclassName=\"min-w-32 bg-background\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"product-variants-manager--controls-end flex min-w-0 items-center justify-end gap-space-sm\">\n\t\t\t\t\t\t<div className=\"product-variants-manager--tool-buttons inline-flex overflow-hidden rounded-radius border border-border bg-background shadow-xs\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tonClick={onSearchVariants}\n\t\t\t\t\t\t\t\taria-label={strings.searchLabel}\n\t\t\t\t\t\t\t\tclassName=\"rounded-none border-r border-border text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Search className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<span className=\"sr-only\">{strings.searchLabel}</span>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tsize=\"icon-small\"\n\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tonClick={onFilterVariants}\n\t\t\t\t\t\t\t\taria-label={strings.filterLabel}\n\t\t\t\t\t\t\t\tclassName=\"rounded-none text-muted-foreground hover:text-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ListFilter className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t<span className=\"sr-only\">{strings.filterLabel}</span>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{controlsEnd}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<section className=\"product-variants-manager--variants min-w-0 px-surface pb-surface pt-space-md\">\n\t\t\t\t\t<ProductVariantsBulkTable\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\toptionGroups={optionGroups}\n\t\t\t\t\t\tgroupByOptionId={resolvedGroupByOptionId}\n\t\t\t\t\t\tvisibleColumns={visibleColumns}\n\t\t\t\t\t\toptionCombinationDisplay={optionCombinationDisplay}\n\t\t\t\t\t\tcellDisplay={cellDisplay}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\trenderOptionCombination={renderOptionCombination}\n\t\t\t\t\t\trenderCell={renderCell}\n\t\t\t\t\t\tsurface=\"embedded\"\n\t\t\t\t\t\tselectedVariantIds={selectedVariantIds}\n\t\t\t\t\t\tdefaultSelectedVariantIds={defaultSelectedVariantIds}\n\t\t\t\t\t\tonSelectedVariantIdsChange={onSelectedVariantIdsChange}\n\t\t\t\t\t\tonVariantFieldChange={onVariantFieldChange}\n\t\t\t\t\t\tonVariantFieldBlur={onVariantFieldBlur}\n\t\t\t\t\t\tonCreateVariant={onCreateVariant}\n\t\t\t\t\t\tonGenerateVariants={onGenerateVariants}\n\t\t\t\t\t\tonSelectVariant={onSelectVariant}\n\t\t\t\t\t\tonEditVariant={onEditVariant}\n\t\t\t\t\t\tonDuplicateVariant={onDuplicateVariant}\n\t\t\t\t\t\tonDeleteVariant={onDeleteVariant}\n\t\t\t\t\t\tonBulkEdit={onBulkEdit}\n\t\t\t\t\t\tonBulkApply={onBulkApply}\n\t\t\t\t\t\tonBulkDelete={onBulkDelete}\n\t\t\t\t\t\trenderVariantActions={renderVariantActions}\n\t\t\t\t\t\trenderBulkActions={renderBulkActions}\n\t\t\t\t\t\tstrings={{\n\t\t\t\t\t\t\ttitle: strings.variantsTitle,\n\t\t\t\t\t\t\tgenerateLabel: strings.generateLabel,\n\t\t\t\t\t\t\t...variantsStrings,\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</section>\n\t\t\t</div>\n\t\t</SmartCard>\n\t);\n}\n\nProductVariantsManager.displayName = 'ProductVariantsManager';\n","import { cn } from '@/lib/utils';\n\nimport { ProductOverview } from './components/product-overview';\nimport type { ProductOverviewProps } from './products.types';\n\nexport function Products({ className, ...props }: ProductOverviewProps) {\n\treturn (\n\t\t<ProductOverview\n\t\t\t{...props}\n\t\t\tclassName={cn('products--component', className)}\n\t\t/>\n\t);\n}\n\nProducts.displayName = 'Products';\n\nexport { ProductOverview } from './components/product-overview';\n"],"mappings":"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"}