themelia-react-ui 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1338) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +21 -0
  3. package/README.md +249 -2
  4. package/THIRD_PARTY_NOTICES.md +65 -0
  5. package/dist/accordion-BRWh3BM1.js +205 -0
  6. package/dist/accordion-BRWh3BM1.js.map +1 -0
  7. package/dist/action-menu-Cx3SdfbN.js +265 -0
  8. package/dist/action-menu-Cx3SdfbN.js.map +1 -0
  9. package/dist/action-presentation.js +11 -0
  10. package/dist/action-presentation.js.map +1 -0
  11. package/dist/affordance-geometry.generated-DXl-Zb3Z.js +23 -0
  12. package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +1 -0
  13. package/dist/ai-artifact-DkOArd3-.js +1121 -0
  14. package/dist/ai-artifact-DkOArd3-.js.map +1 -0
  15. package/dist/anchored-positioning-DPnKTvNs.js +6 -0
  16. package/dist/anchored-positioning-DPnKTvNs.js.map +1 -0
  17. package/dist/app-shell-BH_bGcE2.js +235 -0
  18. package/dist/app-shell-BH_bGcE2.js.map +1 -0
  19. package/dist/attachment-DsLgNHXt.js +244 -0
  20. package/dist/attachment-DsLgNHXt.js.map +1 -0
  21. package/dist/auth-BDB1V_2q.js +704 -0
  22. package/dist/auth-BDB1V_2q.js.map +1 -0
  23. package/dist/avatar-CsnWaYmt.js +173 -0
  24. package/dist/avatar-CsnWaYmt.js.map +1 -0
  25. package/dist/badge-BZXZT9wd.js +92 -0
  26. package/dist/badge-BZXZT9wd.js.map +1 -0
  27. package/dist/base/accordion.js +3 -0
  28. package/dist/base/action-menu.js +3 -0
  29. package/dist/base/attachment.js +3 -0
  30. package/dist/base/avatar.js +3 -0
  31. package/dist/base/badge.js +3 -0
  32. package/dist/base/buttons.js +3 -0
  33. package/dist/base/cards.js +4 -0
  34. package/dist/base/carousel.js +251 -0
  35. package/dist/base/carousel.js.map +1 -0
  36. package/dist/base/cascader.js +361 -0
  37. package/dist/base/cascader.js.map +1 -0
  38. package/dist/base/chart.js +3 -0
  39. package/dist/base/choice-inputs.js +3 -0
  40. package/dist/base/code-block.js +3 -0
  41. package/dist/base/combobox.js +3 -0
  42. package/dist/base/command.js +3 -0
  43. package/dist/base/copyable.js +3 -0
  44. package/dist/base/date-pickers.js +4 -0
  45. package/dist/base/display.js +8 -0
  46. package/dist/base/feedback.js +4 -0
  47. package/dist/base/forms-numeric.js +3 -0
  48. package/dist/base/forms.js +4 -0
  49. package/dist/base/item.js +3 -0
  50. package/dist/base/media-gallery.js +3 -0
  51. package/dist/base/navigation.js +8 -0
  52. package/dist/base/popover-menu.js +3 -0
  53. package/dist/base/popover.js +3 -0
  54. package/dist/base/qr-code.js +63 -0
  55. package/dist/base/qr-code.js.map +1 -0
  56. package/dist/base/repeaters.js +620 -0
  57. package/dist/base/repeaters.js.map +1 -0
  58. package/dist/base/sheet.js +3 -0
  59. package/dist/base/sidebar.js +3 -0
  60. package/dist/base/signature-pad.js +364 -0
  61. package/dist/base/signature-pad.js.map +1 -0
  62. package/dist/base/skeleton.js +3 -0
  63. package/dist/base/spinner.js +3 -0
  64. package/dist/base/structure.js +3 -0
  65. package/dist/base/table.js +3 -0
  66. package/dist/base/text-inputs.js +4 -0
  67. package/dist/base/toaster.js +102 -0
  68. package/dist/base/toaster.js.map +1 -0
  69. package/dist/base/tree.js +3 -0
  70. package/dist/base/upload-queue.js +3 -0
  71. package/dist/base/upload.js +5 -0
  72. package/dist/base/value-inputs.js +3 -0
  73. package/dist/blocks/admin.js +478 -0
  74. package/dist/blocks/admin.js.map +1 -0
  75. package/dist/blocks/ai.js +1021 -0
  76. package/dist/blocks/ai.js.map +1 -0
  77. package/dist/blocks/analytics.js +1499 -0
  78. package/dist/blocks/analytics.js.map +1 -0
  79. package/dist/blocks/collaboration.js +3 -0
  80. package/dist/blocks/commerce/receipt.js +3 -0
  81. package/dist/blocks/commerce.js +3393 -0
  82. package/dist/blocks/commerce.js.map +1 -0
  83. package/dist/blocks/data-display.js +3 -0
  84. package/dist/blocks/onboarding.js +128 -0
  85. package/dist/blocks/onboarding.js.map +1 -0
  86. package/dist/blocks/timelines.js +3 -0
  87. package/dist/breadcrumbs-DdQ_I5ra.js +127 -0
  88. package/dist/breadcrumbs-DdQ_I5ra.js.map +1 -0
  89. package/dist/button-BS6l5JUw.js +47 -0
  90. package/dist/button-BS6l5JUw.js.map +1 -0
  91. package/dist/buttons-Co6GavvM.js +674 -0
  92. package/dist/buttons-Co6GavvM.js.map +1 -0
  93. package/dist/cards-BMB0laLG.js +66 -0
  94. package/dist/cards-BMB0laLG.js.map +1 -0
  95. package/dist/chart-DVfcwQu6.js +149 -0
  96. package/dist/chart-DVfcwQu6.js.map +1 -0
  97. package/dist/choice-inputs-CavA-SGV.js +644 -0
  98. package/dist/choice-inputs-CavA-SGV.js.map +1 -0
  99. package/dist/code-block-DIlqzoiD.js +183 -0
  100. package/dist/code-block-DIlqzoiD.js.map +1 -0
  101. package/dist/collapsible-DsnktFNv.js +81 -0
  102. package/dist/collapsible-DsnktFNv.js.map +1 -0
  103. package/dist/collection-content-C4fthJV_.js +53 -0
  104. package/dist/collection-content-C4fthJV_.js.map +1 -0
  105. package/dist/combobox-CHD750do.js +850 -0
  106. package/dist/combobox-CHD750do.js.map +1 -0
  107. package/dist/combobox-HDftpzxt.js +273 -0
  108. package/dist/combobox-HDftpzxt.js.map +1 -0
  109. package/dist/command-D0kWBZfd.js +421 -0
  110. package/dist/command-D0kWBZfd.js.map +1 -0
  111. package/dist/comments-CvYeglMS.js +1132 -0
  112. package/dist/comments-CvYeglMS.js.map +1 -0
  113. package/dist/component-vocabulary.js +26 -0
  114. package/dist/component-vocabulary.js.map +1 -0
  115. package/dist/components/base/accordion/accordion-variants.d.ts +36 -0
  116. package/dist/components/base/accordion/accordion.d.ts +20 -0
  117. package/dist/components/base/accordion/accordion.strings.d.ts +15 -0
  118. package/dist/components/base/accordion/accordion.types.d.ts +74 -0
  119. package/dist/components/base/accordion/index.d.ts +4 -0
  120. package/dist/components/base/accordion/smart-accordion.d.ts +7 -0
  121. package/dist/components/base/action-menu/action-menu.d.ts +147 -0
  122. package/dist/components/base/action-menu/action-menu.strings.d.ts +4 -0
  123. package/dist/components/base/action-menu/index.d.ts +11 -0
  124. package/dist/components/base/attachment/attachment.d.ts +17 -0
  125. package/dist/components/base/attachment/attachment.types.d.ts +49 -0
  126. package/dist/components/base/attachment/index.d.ts +2 -0
  127. package/dist/components/base/avatar/avatar.d.ts +24 -0
  128. package/dist/components/base/avatar/index.d.ts +14 -0
  129. package/dist/components/base/avatar/stacked-avatars.d.ts +39 -0
  130. package/dist/components/base/badge/badge.d.ts +22 -0
  131. package/dist/components/base/badge/badge.recipes.d.ts +20 -0
  132. package/dist/components/base/badge/index.d.ts +2 -0
  133. package/dist/components/base/buttons/base-button.d.ts +24 -0
  134. package/dist/components/base/buttons/button-group.d.ts +28 -0
  135. package/dist/components/base/buttons/button-group.recipes.d.ts +6 -0
  136. package/dist/components/base/buttons/button.d.ts +47 -0
  137. package/dist/components/base/buttons/button.recipes.d.ts +23 -0
  138. package/dist/components/base/buttons/button.variants.d.ts +8 -0
  139. package/dist/components/base/buttons/index.d.ts +7 -0
  140. package/dist/components/base/buttons/loader-button.d.ts +40 -0
  141. package/dist/components/base/buttons/text-button.d.ts +19 -0
  142. package/dist/components/base/buttons/tooltip-button.d.ts +7 -0
  143. package/dist/components/base/cards/card-actions.d.ts +41 -0
  144. package/dist/components/base/cards/card.recipes.d.ts +28 -0
  145. package/dist/components/base/cards/index.d.ts +5 -0
  146. package/dist/components/base/cards/partials/card-primitives.d.ts +21 -0
  147. package/dist/components/base/cards/partials/has-renderable-content.d.ts +8 -0
  148. package/dist/components/base/cards/partials/smart-card-actions-menu.d.ts +8 -0
  149. package/dist/components/base/cards/partials/smart-card-alert.d.ts +20 -0
  150. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +33 -0
  151. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +16 -0
  152. package/dist/components/base/cards/smart-card.d.ts +9 -0
  153. package/dist/components/base/cards/smart-card.strings.d.ts +18 -0
  154. package/dist/components/base/cards/smart-card.tokens.d.ts +44 -0
  155. package/dist/components/base/cards/smart-card.types.d.ts +144 -0
  156. package/dist/components/base/carousel/carousel.d.ts +105 -0
  157. package/dist/components/base/carousel/carousel.strings.d.ts +6 -0
  158. package/dist/components/base/carousel/index.d.ts +2 -0
  159. package/dist/components/base/cascader/cascader.d.ts +2 -0
  160. package/dist/components/base/cascader/cascader.types.d.ts +57 -0
  161. package/dist/components/base/cascader/index.d.ts +2 -0
  162. package/dist/components/base/chart/chart.d.ts +99 -0
  163. package/dist/components/base/chart/index.d.ts +9 -0
  164. package/dist/components/base/choice-inputs/card-checkbox-group.d.ts +27 -0
  165. package/dist/components/base/choice-inputs/card-radio-group.d.ts +19 -0
  166. package/dist/components/base/choice-inputs/checkbox.d.ts +17 -0
  167. package/dist/components/base/choice-inputs/choice-types.d.ts +57 -0
  168. package/dist/components/base/choice-inputs/index.d.ts +28 -0
  169. package/dist/components/base/choice-inputs/list-radio-group.d.ts +13 -0
  170. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +27 -0
  171. package/dist/components/base/choice-inputs/select-popup.d.ts +26 -0
  172. package/dist/components/base/choice-inputs/select.d.ts +94 -0
  173. package/dist/components/base/choice-inputs/switch-card.d.ts +36 -0
  174. package/dist/components/base/choice-inputs/switch.d.ts +38 -0
  175. package/dist/components/base/choice-inputs/toggle-field.d.ts +41 -0
  176. package/dist/components/base/code-block/code-block.d.ts +3 -0
  177. package/dist/components/base/code-block/code-block.types.d.ts +46 -0
  178. package/dist/components/base/code-block/index.d.ts +2 -0
  179. package/dist/components/base/code-block/use-code-copy.d.ts +6 -0
  180. package/dist/components/base/combobox/index.d.ts +27 -0
  181. package/dist/components/base/command/command.d.ts +73 -0
  182. package/dist/components/base/command/index.d.ts +1 -0
  183. package/dist/components/base/copyable/copyable.d.ts +36 -0
  184. package/dist/components/base/copyable/index.d.ts +1 -0
  185. package/dist/components/base/date-pickers/date-picker-footer.d.ts +14 -0
  186. package/dist/components/base/date-pickers/date-picker-header.d.ts +10 -0
  187. package/dist/components/base/date-pickers/date-picker-helpers.d.ts +87 -0
  188. package/dist/components/base/date-pickers/date-picker-internals.d.ts +10 -0
  189. package/dist/components/base/date-pickers/date-picker-multiple.d.ts +20 -0
  190. package/dist/components/base/date-pickers/date-picker-range.d.ts +15 -0
  191. package/dist/components/base/date-pickers/date-picker-single.d.ts +15 -0
  192. package/dist/components/base/date-pickers/date-picker.d.ts +3 -0
  193. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +18 -0
  194. package/dist/components/base/date-pickers/date-pickers.strings.d.ts +14 -0
  195. package/dist/components/base/date-pickers/datepicker.types.d.ts +285 -0
  196. package/dist/components/base/date-pickers/index.d.ts +7 -0
  197. package/dist/components/base/date-pickers/month-year-picker.d.ts +4 -0
  198. package/dist/components/base/date-pickers/time-picker.d.ts +70 -0
  199. package/dist/components/base/display/alert-dialog.d.ts +25 -0
  200. package/dist/components/base/display/boolean-indicator.d.ts +25 -0
  201. package/dist/components/base/display/collapsible.d.ts +21 -0
  202. package/dist/components/base/display/content-block.d.ts +73 -0
  203. package/dist/components/base/display/content-block.strings.d.ts +5 -0
  204. package/dist/components/base/display/date-block.d.ts +70 -0
  205. package/dist/components/base/display/dialog.d.ts +35 -0
  206. package/dist/components/base/display/icon-badge/icon-badge.d.ts +45 -0
  207. package/dist/components/base/display/icon-badge/index.d.ts +1 -0
  208. package/dist/components/base/display/icon-size.d.ts +5 -0
  209. package/dist/components/base/display/index.d.ts +31 -0
  210. package/dist/components/base/display/placeholder-pattern.d.ts +7 -0
  211. package/dist/components/base/display/scroll-area.d.ts +12 -0
  212. package/dist/components/base/display/separator.d.ts +10 -0
  213. package/dist/components/base/display/surface-title.d.ts +10 -0
  214. package/dist/components/base/display/tooltip.d.ts +28 -0
  215. package/dist/components/base/display/visually-hidden.d.ts +14 -0
  216. package/dist/components/base/feedback/alert.d.ts +49 -0
  217. package/dist/components/base/feedback/empty.d.ts +48 -0
  218. package/dist/components/base/feedback/index.d.ts +27 -0
  219. package/dist/components/base/feedback/progress.d.ts +81 -0
  220. package/dist/components/base/feedback/progress.strings.d.ts +5 -0
  221. package/dist/components/base/feedback/state-display.d.ts +39 -0
  222. package/dist/components/base/forms/controlled-form-field.d.ts +32 -0
  223. package/dist/components/base/forms/controlled-form-field.strings.d.ts +7 -0
  224. package/dist/components/base/forms/form-field.d.ts +38 -0
  225. package/dist/components/base/forms/form-sizing.d.ts +86 -0
  226. package/dist/components/base/forms/index.d.ts +4 -0
  227. package/dist/components/base/forms/operation-password-form.d.ts +16 -0
  228. package/dist/components/base/forms/workflow.d.ts +68 -0
  229. package/dist/components/base/forms-numeric/coordinates-input.d.ts +47 -0
  230. package/dist/components/base/forms-numeric/currency-input.d.ts +44 -0
  231. package/dist/components/base/forms-numeric/decimal-input.d.ts +53 -0
  232. package/dist/components/base/forms-numeric/dimensions-input.d.ts +79 -0
  233. package/dist/components/base/forms-numeric/index.d.ts +21 -0
  234. package/dist/components/base/forms-numeric/money-input.d.ts +67 -0
  235. package/dist/components/base/forms-numeric/money-input.strings.d.ts +6 -0
  236. package/dist/components/base/forms-numeric/percentage-input.d.ts +8 -0
  237. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +12 -0
  238. package/dist/components/base/forms-numeric/weight-input.d.ts +54 -0
  239. package/dist/components/base/item/index.d.ts +2 -0
  240. package/dist/components/base/item/item.d.ts +12 -0
  241. package/dist/components/base/item/item.types.d.ts +100 -0
  242. package/dist/components/base/media-gallery/index.d.ts +2 -0
  243. package/dist/components/base/media-gallery/media-gallery.d.ts +45 -0
  244. package/dist/components/base/navigation/breadcrumbs.d.ts +37 -0
  245. package/dist/components/base/navigation/dropdown-menu.d.ts +45 -0
  246. package/dist/components/base/navigation/index.d.ts +21 -0
  247. package/dist/components/base/navigation/language-switcher.d.ts +12 -0
  248. package/dist/components/base/navigation/navigation-tabs.d.ts +40 -0
  249. package/dist/components/base/navigation/overflow-tab-bar.d.ts +43 -0
  250. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  251. package/dist/components/base/navigation/page-header/page-header.d.ts +88 -0
  252. package/dist/components/base/navigation/pagination.d.ts +61 -0
  253. package/dist/components/base/navigation/tab-scroll-viewport.d.ts +12 -0
  254. package/dist/components/base/navigation/tabs.d.ts +23 -0
  255. package/dist/components/base/popover/collection-content.d.ts +22 -0
  256. package/dist/components/base/popover/index.d.ts +1 -0
  257. package/dist/components/base/popover/popover.d.ts +54 -0
  258. package/dist/components/base/popover/popover.recipes.d.ts +29 -0
  259. package/dist/components/base/popover-menu/index.d.ts +3 -0
  260. package/dist/components/base/popover-menu/popover-menu.d.ts +82 -0
  261. package/dist/components/base/popover-menu/popover-menu.types.d.ts +30 -0
  262. package/dist/components/base/qr-code/index.d.ts +8 -0
  263. package/dist/components/base/qr-code/qr-code.d.ts +13 -0
  264. package/dist/components/base/repeaters/index.d.ts +21 -0
  265. package/dist/components/base/repeaters/key-value-editor.d.ts +27 -0
  266. package/dist/components/base/repeaters/localized-object-field.d.ts +35 -0
  267. package/dist/components/base/repeaters/localized-string-field.d.ts +25 -0
  268. package/dist/components/base/repeaters/localized-string-repeater.d.ts +44 -0
  269. package/dist/components/base/repeaters/object-repeater.d.ts +66 -0
  270. package/dist/components/base/repeaters/repeater.d.ts +87 -0
  271. package/dist/components/base/repeaters/repeaters.strings.d.ts +16 -0
  272. package/dist/components/base/repeaters/string-repeater.d.ts +65 -0
  273. package/dist/components/base/repeaters/string-repeater.utils.d.ts +2 -0
  274. package/dist/components/base/sheet/index.d.ts +1 -0
  275. package/dist/components/base/sheet/sheet.d.ts +35 -0
  276. package/dist/components/base/sidebar/index.d.ts +6 -0
  277. package/dist/components/base/sidebar/sidebar.d.ts +135 -0
  278. package/dist/components/base/signature-pad/index.d.ts +4 -0
  279. package/dist/components/base/signature-pad/signature-pad.d.ts +4 -0
  280. package/dist/components/base/signature-pad/signature-pad.types.d.ts +66 -0
  281. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +8 -0
  282. package/dist/components/base/skeleton/index.d.ts +14 -0
  283. package/dist/components/base/skeleton/skeleton.d.ts +54 -0
  284. package/dist/components/base/spinner/index.d.ts +1 -0
  285. package/dist/components/base/spinner/spinner.d.ts +32 -0
  286. package/dist/components/base/structure/adaptive-grid.d.ts +3 -0
  287. package/dist/components/base/structure/grid-cell.d.ts +3 -0
  288. package/dist/components/base/structure/grid.d.ts +3 -0
  289. package/dist/components/base/structure/index.d.ts +5 -0
  290. package/dist/components/base/structure/stack.d.ts +3 -0
  291. package/dist/components/base/structure/structure.context.d.ts +6 -0
  292. package/dist/components/base/structure/structure.recipes.d.ts +27 -0
  293. package/dist/components/base/structure/structure.responsive.d.ts +5 -0
  294. package/dist/components/base/structure/structure.types.d.ts +51 -0
  295. package/dist/components/base/table/index.d.ts +18 -0
  296. package/dist/components/base/text-inputs/hooks/index.d.ts +1 -0
  297. package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +48 -0
  298. package/dist/components/base/text-inputs/index.d.ts +21 -0
  299. package/dist/components/base/text-inputs/input-group.d.ts +46 -0
  300. package/dist/components/base/text-inputs/input.d.ts +45 -0
  301. package/dist/components/base/text-inputs/password-input.d.ts +28 -0
  302. package/dist/components/base/text-inputs/slug-field.d.ts +21 -0
  303. package/dist/components/base/text-inputs/textarea.d.ts +37 -0
  304. package/dist/components/base/toaster/index.d.ts +1 -0
  305. package/dist/components/base/toaster/toaster.d.ts +6 -0
  306. package/dist/components/base/tree/hierarchy.d.ts +11 -0
  307. package/dist/components/base/tree/index.d.ts +2 -0
  308. package/dist/components/base/tree/tree.d.ts +3 -0
  309. package/dist/components/base/tree/tree.types.d.ts +47 -0
  310. package/dist/components/base/upload/avatar-upload.d.ts +39 -0
  311. package/dist/components/base/upload/dropzone.d.ts +40 -0
  312. package/dist/components/base/upload/file-picker-input.d.ts +15 -0
  313. package/dist/components/base/upload/file-upload.d.ts +9 -0
  314. package/dist/components/base/upload/file-upload.strings.d.ts +18 -0
  315. package/dist/components/base/upload/file-upload.types.d.ts +68 -0
  316. package/dist/components/base/upload/file-upload.validation.d.ts +21 -0
  317. package/dist/components/base/upload/image-upload.d.ts +57 -0
  318. package/dist/components/base/upload/index.d.ts +26 -0
  319. package/dist/components/base/upload/use-file-drop-target.d.ts +22 -0
  320. package/dist/components/base/upload-queue/index.d.ts +3 -0
  321. package/dist/components/base/upload-queue/upload-progress-list.d.ts +55 -0
  322. package/dist/components/base/upload-queue/upload-tray.d.ts +46 -0
  323. package/dist/components/base/value-inputs/color-input.d.ts +26 -0
  324. package/dist/components/base/value-inputs/date-time-input.d.ts +19 -0
  325. package/dist/components/base/value-inputs/index.d.ts +25 -0
  326. package/dist/components/base/value-inputs/phone-input.d.ts +48 -0
  327. package/dist/components/base/value-inputs/slider.d.ts +59 -0
  328. package/dist/components/base/value-inputs/tags-input.d.ts +67 -0
  329. package/dist/components/blocks/admin/action-surfaces/index.d.ts +127 -0
  330. package/dist/components/blocks/admin/admin.strings.d.ts +11 -0
  331. package/dist/components/blocks/admin/api-key-list/api-key-list.d.ts +2 -0
  332. package/dist/components/blocks/admin/api-key-list/api-key-list.strings.d.ts +16 -0
  333. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +58 -0
  334. package/dist/components/blocks/admin/api-key-list/index.d.ts +3 -0
  335. package/dist/components/blocks/admin/index.d.ts +4 -0
  336. package/dist/components/blocks/admin/role-permission/index.d.ts +2 -0
  337. package/dist/components/blocks/admin/role-permission/role-permission.d.ts +5 -0
  338. package/dist/components/blocks/admin/role-permission/types.d.ts +26 -0
  339. package/dist/components/blocks/ai/ai-agent/ai-agent.d.ts +5 -0
  340. package/dist/components/blocks/ai/ai-agent/index.d.ts +2 -0
  341. package/dist/components/blocks/ai/ai-agent/types.d.ts +30 -0
  342. package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +5 -0
  343. package/dist/components/blocks/ai/ai-artifact/index.d.ts +2 -0
  344. package/dist/components/blocks/ai/ai-artifact/types.d.ts +50 -0
  345. package/dist/components/blocks/ai/ai-attachment/ai-attachment.d.ts +5 -0
  346. package/dist/components/blocks/ai/ai-attachment/index.d.ts +2 -0
  347. package/dist/components/blocks/ai/ai-attachment/types.d.ts +35 -0
  348. package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +5 -0
  349. package/dist/components/blocks/ai/ai-chain-of-thought/index.d.ts +2 -0
  350. package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +36 -0
  351. package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +5 -0
  352. package/dist/components/blocks/ai/ai-citation/index.d.ts +2 -0
  353. package/dist/components/blocks/ai/ai-citation/types.d.ts +38 -0
  354. package/dist/components/blocks/ai/ai-classification/ai-classification.d.ts +2 -0
  355. package/dist/components/blocks/ai/ai-classification/index.d.ts +2 -0
  356. package/dist/components/blocks/ai/ai-classification/types.d.ts +27 -0
  357. package/dist/components/blocks/ai/ai-code-block/ai-code-block.d.ts +6 -0
  358. package/dist/components/blocks/ai/ai-code-block/index.d.ts +2 -0
  359. package/dist/components/blocks/ai/ai-code-block/types.d.ts +38 -0
  360. package/dist/components/blocks/ai/ai-confidence/ai-confidence.d.ts +5 -0
  361. package/dist/components/blocks/ai/ai-confidence/index.d.ts +2 -0
  362. package/dist/components/blocks/ai/ai-confidence/types.d.ts +25 -0
  363. package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +5 -0
  364. package/dist/components/blocks/ai/ai-confirmation/index.d.ts +2 -0
  365. package/dist/components/blocks/ai/ai-confirmation/types.d.ts +40 -0
  366. package/dist/components/blocks/ai/ai-feedback/ai-feedback.d.ts +5 -0
  367. package/dist/components/blocks/ai/ai-feedback/index.d.ts +2 -0
  368. package/dist/components/blocks/ai/ai-feedback/types.d.ts +24 -0
  369. package/dist/components/blocks/ai/ai-file-tree/ai-file-tree.d.ts +5 -0
  370. package/dist/components/blocks/ai/ai-file-tree/index.d.ts +2 -0
  371. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +59 -0
  372. package/dist/components/blocks/ai/ai-inline-citation/ai-inline-citation.d.ts +5 -0
  373. package/dist/components/blocks/ai/ai-inline-citation/index.d.ts +2 -0
  374. package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +22 -0
  375. package/dist/components/blocks/ai/ai-message-bubble/ai-message-bubble.d.ts +6 -0
  376. package/dist/components/blocks/ai/ai-message-bubble/index.d.ts +2 -0
  377. package/dist/components/blocks/ai/ai-message-bubble/types.d.ts +35 -0
  378. package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +5 -0
  379. package/dist/components/blocks/ai/ai-package-info/index.d.ts +2 -0
  380. package/dist/components/blocks/ai/ai-package-info/types.d.ts +39 -0
  381. package/dist/components/blocks/ai/ai-prompt-suggestions/ai-prompt-suggestions.d.ts +5 -0
  382. package/dist/components/blocks/ai/ai-prompt-suggestions/index.d.ts +2 -0
  383. package/dist/components/blocks/ai/ai-prompt-suggestions/types.d.ts +26 -0
  384. package/dist/components/blocks/ai/ai-reasoning/ai-reasoning.d.ts +5 -0
  385. package/dist/components/blocks/ai/ai-reasoning/index.d.ts +2 -0
  386. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +32 -0
  387. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +5 -0
  388. package/dist/components/blocks/ai/ai-shimmer/index.d.ts +2 -0
  389. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +11 -0
  390. package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +5 -0
  391. package/dist/components/blocks/ai/ai-sources/index.d.ts +2 -0
  392. package/dist/components/blocks/ai/ai-sources/types.d.ts +44 -0
  393. package/dist/components/blocks/ai/ai-summary/ai-summary.d.ts +2 -0
  394. package/dist/components/blocks/ai/ai-summary/index.d.ts +2 -0
  395. package/dist/components/blocks/ai/ai-summary/types.d.ts +32 -0
  396. package/dist/components/blocks/ai/ai-task/ai-task.d.ts +5 -0
  397. package/dist/components/blocks/ai/ai-task/index.d.ts +2 -0
  398. package/dist/components/blocks/ai/ai-task/types.d.ts +38 -0
  399. package/dist/components/blocks/ai/ai-token-usage/ai-token-usage.d.ts +5 -0
  400. package/dist/components/blocks/ai/ai-token-usage/index.d.ts +2 -0
  401. package/dist/components/blocks/ai/ai-token-usage/types.d.ts +22 -0
  402. package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +5 -0
  403. package/dist/components/blocks/ai/ai-tool-call/index.d.ts +2 -0
  404. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +38 -0
  405. package/dist/components/blocks/ai/ai.strings.d.ts +36 -0
  406. package/dist/components/blocks/ai/index.d.ts +24 -0
  407. package/dist/components/blocks/ai/use-copy-feedback.d.ts +6 -0
  408. package/dist/components/blocks/analytics/activity-heatmap/activity-heatmap.d.ts +5 -0
  409. package/dist/components/blocks/analytics/activity-heatmap/index.d.ts +2 -0
  410. package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +20 -0
  411. package/dist/components/blocks/analytics/analytics.strings.d.ts +35 -0
  412. package/dist/components/blocks/analytics/atoms/metric-skeleton.d.ts +13 -0
  413. package/dist/components/blocks/analytics/atoms/metric-sparkline.d.ts +15 -0
  414. package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +15 -0
  415. package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +42 -0
  416. package/dist/components/blocks/analytics/chart-card/index.d.ts +1 -0
  417. package/dist/components/blocks/analytics/format-metric-value.d.ts +8 -0
  418. package/dist/components/blocks/analytics/index.d.ts +34 -0
  419. package/dist/components/blocks/analytics/metric/index.d.ts +1 -0
  420. package/dist/components/blocks/analytics/metric/metric.d.ts +28 -0
  421. package/dist/components/blocks/analytics/metric-bar/index.d.ts +1 -0
  422. package/dist/components/blocks/analytics/metric-bar/metric-bar.d.ts +22 -0
  423. package/dist/components/blocks/analytics/metric-comparison/index.d.ts +1 -0
  424. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +26 -0
  425. package/dist/components/blocks/analytics/metric-gradient/index.d.ts +1 -0
  426. package/dist/components/blocks/analytics/metric-gradient/metric-gradient.d.ts +19 -0
  427. package/dist/components/blocks/analytics/metric-grid/index.d.ts +1 -0
  428. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +33 -0
  429. package/dist/components/blocks/analytics/metric-micro-grid/index.d.ts +1 -0
  430. package/dist/components/blocks/analytics/metric-micro-grid/metric-micro-grid.d.ts +23 -0
  431. package/dist/components/blocks/analytics/time-ruler/index.d.ts +2 -0
  432. package/dist/components/blocks/analytics/time-ruler/time-ruler.d.ts +5 -0
  433. package/dist/components/blocks/analytics/time-ruler/types.d.ts +32 -0
  434. package/dist/components/blocks/analytics/types.d.ts +83 -0
  435. package/dist/components/blocks/collaboration/index.d.ts +1 -0
  436. package/dist/components/blocks/collaboration/message/index.d.ts +2 -0
  437. package/dist/components/blocks/collaboration/message/message.d.ts +8 -0
  438. package/dist/components/blocks/collaboration/message/message.types.d.ts +30 -0
  439. package/dist/components/blocks/commerce/address-card/address-card.d.ts +5 -0
  440. package/dist/components/blocks/commerce/address-card/index.d.ts +2 -0
  441. package/dist/components/blocks/commerce/address-card/types.d.ts +43 -0
  442. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +12 -0
  443. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +36 -0
  444. package/dist/components/blocks/commerce/booking-calendar-event-card/index.d.ts +2 -0
  445. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +5 -0
  446. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -0
  447. package/dist/components/blocks/commerce/cart-summary/types.d.ts +53 -0
  448. package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +5 -0
  449. package/dist/components/blocks/commerce/coupon-input/index.d.ts +2 -0
  450. package/dist/components/blocks/commerce/coupon-input/types.d.ts +35 -0
  451. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +5 -0
  452. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -0
  453. package/dist/components/blocks/commerce/discount-stack/types.d.ts +27 -0
  454. package/dist/components/blocks/commerce/format-signed-amount.d.ts +22 -0
  455. package/dist/components/blocks/commerce/giftcard-card/giftcard-card.d.ts +62 -0
  456. package/dist/components/blocks/commerce/giftcard-card/index.d.ts +2 -0
  457. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +10 -0
  458. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +9 -0
  459. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +7 -0
  460. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +11 -0
  461. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +10 -0
  462. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +10 -0
  463. package/dist/components/blocks/commerce/giftcard-card/types.d.ts +83 -0
  464. package/dist/components/blocks/commerce/index.d.ts +34 -0
  465. package/dist/components/blocks/commerce/inventory-level/index.d.ts +3 -0
  466. package/dist/components/blocks/commerce/inventory-level/inventory-level.d.ts +5 -0
  467. package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +10 -0
  468. package/dist/components/blocks/commerce/inventory-level/types.d.ts +20 -0
  469. package/dist/components/blocks/commerce/inventory-section/index.d.ts +2 -0
  470. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +5 -0
  471. package/dist/components/blocks/commerce/inventory-section/types.d.ts +105 -0
  472. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -0
  473. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +5 -0
  474. package/dist/components/blocks/commerce/invoice-header/types.d.ts +51 -0
  475. package/dist/components/blocks/commerce/invoice-line-items/index.d.ts +2 -0
  476. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +5 -0
  477. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +64 -0
  478. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -0
  479. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +5 -0
  480. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +28 -0
  481. package/dist/components/blocks/commerce/loyalty-points/index.d.ts +2 -0
  482. package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +5 -0
  483. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +32 -0
  484. package/dist/components/blocks/commerce/order-status/index.d.ts +2 -0
  485. package/dist/components/blocks/commerce/order-status/order-status.d.ts +5 -0
  486. package/dist/components/blocks/commerce/order-status/types.d.ts +35 -0
  487. package/dist/components/blocks/commerce/order-timeline/index.d.ts +2 -0
  488. package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +5 -0
  489. package/dist/components/blocks/commerce/order-timeline/types.d.ts +22 -0
  490. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -0
  491. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +5 -0
  492. package/dist/components/blocks/commerce/payment-method/types.d.ts +33 -0
  493. package/dist/components/blocks/commerce/payment-timeline/index.d.ts +2 -0
  494. package/dist/components/blocks/commerce/payment-timeline/payment-timeline.d.ts +5 -0
  495. package/dist/components/blocks/commerce/payment-timeline/types.d.ts +15 -0
  496. package/dist/components/blocks/commerce/receipt/index.d.ts +3 -0
  497. package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +2 -0
  498. package/dist/components/blocks/commerce/receipt/receipt.d.ts +3 -0
  499. package/dist/components/blocks/commerce/receipt/types.d.ts +42 -0
  500. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -0
  501. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +5 -0
  502. package/dist/components/blocks/commerce/refund-status/types.d.ts +37 -0
  503. package/dist/components/blocks/commerce/seo-listing/index.d.ts +3 -0
  504. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +5 -0
  505. package/dist/components/blocks/commerce/seo-listing/seo-listing-score.d.ts +5 -0
  506. package/dist/components/blocks/commerce/seo-listing/types.d.ts +92 -0
  507. package/dist/components/blocks/commerce/shipment-tracking/index.d.ts +2 -0
  508. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +5 -0
  509. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +44 -0
  510. package/dist/components/blocks/commerce/subscription-summary/index.d.ts +2 -0
  511. package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +5 -0
  512. package/dist/components/blocks/commerce/subscription-summary/types.d.ts +39 -0
  513. package/dist/components/blocks/commerce/tax-breakdown/index.d.ts +2 -0
  514. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +5 -0
  515. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +34 -0
  516. package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -0
  517. package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +29 -0
  518. package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +5 -0
  519. package/dist/components/blocks/commerce/vendor-profile/index.d.ts +3 -0
  520. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +86 -0
  521. package/dist/components/blocks/commerce/vendor-profile/vendor-profile.d.ts +2 -0
  522. package/dist/components/blocks/commerce/voucher-entry/index.d.ts +2 -0
  523. package/dist/components/blocks/commerce/voucher-entry/types.d.ts +33 -0
  524. package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +5 -0
  525. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +6 -0
  526. package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +19 -0
  527. package/dist/components/blocks/data-display/dense-info-card/index.d.ts +7 -0
  528. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +5 -0
  529. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +5 -0
  530. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +5 -0
  531. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +5 -0
  532. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +5 -0
  533. package/dist/components/blocks/data-display/dense-info-card/types.d.ts +183 -0
  534. package/dist/components/blocks/data-display/empty-state/empty-state.d.ts +2 -0
  535. package/dist/components/blocks/data-display/empty-state/empty-state.strings.d.ts +19 -0
  536. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +86 -0
  537. package/dist/components/blocks/data-display/empty-state/index.d.ts +5 -0
  538. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +9 -0
  539. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +9 -0
  540. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +25 -0
  541. package/dist/components/blocks/data-display/empty-state/partials/illustrations/search-glass.d.ts +9 -0
  542. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +11 -0
  543. package/dist/components/blocks/data-display/empty-state/partials/illustrations/types.d.ts +4 -0
  544. package/dist/components/blocks/data-display/empty-state/partials/illustrations/users-circle.d.ts +9 -0
  545. package/dist/components/blocks/data-display/index.d.ts +6 -0
  546. package/dist/components/blocks/data-display/inline-stat/index.d.ts +1 -0
  547. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +35 -0
  548. package/dist/components/blocks/data-display/metadata/index.d.ts +4 -0
  549. package/dist/components/blocks/data-display/metadata/metadata-list.d.ts +78 -0
  550. package/dist/components/blocks/data-display/metadata/metadata-list.strings.d.ts +18 -0
  551. package/dist/components/blocks/data-display/metadata/metadata-value.d.ts +142 -0
  552. package/dist/components/blocks/data-display/relationship-card-frame.d.ts +40 -0
  553. package/dist/components/blocks/onboarding/checklist/checklist.d.ts +2 -0
  554. package/dist/components/blocks/onboarding/checklist/checklist.strings.d.ts +15 -0
  555. package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +64 -0
  556. package/dist/components/blocks/onboarding/checklist/index.d.ts +4 -0
  557. package/dist/components/blocks/onboarding/checklist/partials/step-status-indicator.d.ts +12 -0
  558. package/dist/components/blocks/onboarding/index.d.ts +7 -0
  559. package/dist/components/blocks/timelines/changelog/changelog-timeline.d.ts +5 -0
  560. package/dist/components/blocks/timelines/changelog/index.d.ts +2 -0
  561. package/dist/components/blocks/timelines/changelog/types.d.ts +33 -0
  562. package/dist/components/blocks/timelines/index.d.ts +5 -0
  563. package/dist/components/blocks/timelines/milestones/index.d.ts +2 -0
  564. package/dist/components/blocks/timelines/milestones/milestones-timeline.d.ts +5 -0
  565. package/dist/components/blocks/timelines/milestones/types.d.ts +32 -0
  566. package/dist/components/blocks/timelines/shared/index.d.ts +1 -0
  567. package/dist/components/blocks/timelines/shared/timeline.d.ts +40 -0
  568. package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -0
  569. package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +9 -0
  570. package/dist/components/blocks/timelines/steps-card/types.d.ts +38 -0
  571. package/dist/components/features/activities/activities-feed.d.ts +5 -0
  572. package/dist/components/features/activities/activities.config.d.ts +6 -0
  573. package/dist/components/features/activities/activities.strings.d.ts +38 -0
  574. package/dist/components/features/activities/activities.types.d.ts +431 -0
  575. package/dist/components/features/activities/activity-event-adapter.d.ts +38 -0
  576. package/dist/components/features/activities/activity-log.d.ts +6 -0
  577. package/dist/components/features/activities/hooks/index.d.ts +2 -0
  578. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +44 -0
  579. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +22 -0
  580. package/dist/components/features/activities/index.d.ts +8 -0
  581. package/dist/components/features/activities/partials/activity-actions-menu.d.ts +11 -0
  582. package/dist/components/features/activities/partials/activity-changes.d.ts +8 -0
  583. package/dist/components/features/activities/partials/activity-date-label.d.ts +9 -0
  584. package/dist/components/features/activities/partials/activity-empty-state.d.ts +9 -0
  585. package/dist/components/features/activities/partials/activity-headline.d.ts +20 -0
  586. package/dist/components/features/activities/partials/activity-marker.d.ts +25 -0
  587. package/dist/components/features/activities/partials/activity-resource-tag.d.ts +11 -0
  588. package/dist/components/features/activities/partials/activity-row.d.ts +68 -0
  589. package/dist/components/features/activities/partials/index.d.ts +8 -0
  590. package/dist/components/features/activities/partials/tone-tokens.d.ts +25 -0
  591. package/dist/components/features/ai-chat/ai-chat.d.ts +81 -0
  592. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +56 -0
  593. package/dist/components/features/ai-chat/ai-chat.types.d.ts +170 -0
  594. package/dist/components/features/ai-chat/hooks/index.d.ts +1 -0
  595. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +15 -0
  596. package/dist/components/features/ai-chat/index.d.ts +5 -0
  597. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +15 -0
  598. package/dist/components/features/ai-chat/partials/ai-chat-conversation.d.ts +28 -0
  599. package/dist/components/features/ai-chat/partials/ai-chat-empty-state.d.ts +22 -0
  600. package/dist/components/features/ai-chat/partials/ai-chat-message.d.ts +21 -0
  601. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +59 -0
  602. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +19 -0
  603. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +18 -0
  604. package/dist/components/features/ai-chat/partials/index.d.ts +7 -0
  605. package/dist/components/features/async-preview/async-preview.d.ts +84 -0
  606. package/dist/components/features/async-preview/async-preview.strings.d.ts +14 -0
  607. package/dist/components/features/async-preview/async-preview.types.d.ts +133 -0
  608. package/dist/components/features/async-preview/hooks/index.d.ts +1 -0
  609. package/dist/components/features/async-preview/hooks/use-async-preview.d.ts +8 -0
  610. package/dist/components/features/async-preview/index.d.ts +6 -0
  611. package/dist/components/features/async-preview/partials/index.d.ts +1 -0
  612. package/dist/components/features/async-preview/preview-trigger-cell.d.ts +45 -0
  613. package/dist/components/features/combobox/async-resource-combobox.d.ts +94 -0
  614. package/dist/components/features/combobox/combobox.d.ts +20 -0
  615. package/dist/components/features/combobox/combobox.strings.d.ts +14 -0
  616. package/dist/components/features/combobox/components/combobox-dropdown.d.ts +57 -0
  617. package/dist/components/features/combobox/components/error-message.d.ts +15 -0
  618. package/dist/components/features/combobox/components/highlighted-text.d.ts +14 -0
  619. package/dist/components/features/combobox/components/index.d.ts +13 -0
  620. package/dist/components/features/combobox/components/loading-more.d.ts +15 -0
  621. package/dist/components/features/combobox/components/status-content.d.ts +21 -0
  622. package/dist/components/features/combobox/constants.d.ts +19 -0
  623. package/dist/components/features/combobox/hooks/index.d.ts +2 -0
  624. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +30 -0
  625. package/dist/components/features/combobox/hooks/use-debounced-search.d.ts +10 -0
  626. package/dist/components/features/combobox/hooks/use-grouped-items.d.ts +9 -0
  627. package/dist/components/features/combobox/hooks/use-load-more.d.ts +12 -0
  628. package/dist/components/features/combobox/index.d.ts +13 -0
  629. package/dist/components/features/combobox/types.d.ts +184 -0
  630. package/dist/components/features/comments/comments-provider.d.ts +15 -0
  631. package/dist/components/features/comments/comments.d.ts +2 -0
  632. package/dist/components/features/comments/comments.strings.d.ts +91 -0
  633. package/dist/components/features/comments/comments.types.d.ts +369 -0
  634. package/dist/components/features/comments/hooks/index.d.ts +4 -0
  635. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +28 -0
  636. package/dist/components/features/comments/hooks/use-comments.d.ts +34 -0
  637. package/dist/components/features/comments/index.d.ts +8 -0
  638. package/dist/components/features/comments/partials/comment-attachment-chip.d.ts +23 -0
  639. package/dist/components/features/comments/partials/comment-composer.d.ts +12 -0
  640. package/dist/components/features/comments/partials/comment-content.d.ts +13 -0
  641. package/dist/components/features/comments/partials/comment-empty.d.ts +12 -0
  642. package/dist/components/features/comments/partials/comment-item.d.ts +3 -0
  643. package/dist/components/features/comments/partials/comment-timeline.d.ts +3 -0
  644. package/dist/components/features/comments/partials/index.d.ts +9 -0
  645. package/dist/components/features/data-view/data-view-filtering.d.ts +3 -0
  646. package/dist/components/features/data-view/data-view.d.ts +7 -0
  647. package/dist/components/features/data-view/data-view.strings.d.ts +9 -0
  648. package/dist/components/features/data-view/data-view.types.d.ts +191 -0
  649. package/dist/components/features/data-view/hooks/index.d.ts +1 -0
  650. package/dist/components/features/data-view/hooks/use-data-view.d.ts +2 -0
  651. package/dist/components/features/data-view/index.d.ts +4 -0
  652. package/dist/components/features/email-composer/document.d.ts +8 -0
  653. package/dist/components/features/email-composer/email-composer.d.ts +2 -0
  654. package/dist/components/features/email-composer/email-html.d.ts +5 -0
  655. package/dist/components/features/email-composer/engine.d.ts +18 -0
  656. package/dist/components/features/email-composer/http.d.ts +6 -0
  657. package/dist/components/features/email-composer/index.d.ts +6 -0
  658. package/dist/components/features/email-composer/partials/body-editor.d.ts +11 -0
  659. package/dist/components/features/email-composer/partials/data-status.d.ts +8 -0
  660. package/dist/components/features/email-composer/partials/html-preview.d.ts +6 -0
  661. package/dist/components/features/email-composer/partials/recipients.d.ts +14 -0
  662. package/dist/components/features/email-composer/partials/variables.d.ts +11 -0
  663. package/dist/components/features/email-composer/strings.d.ts +79 -0
  664. package/dist/components/features/email-composer/types.d.ts +195 -0
  665. package/dist/components/features/email-composer/use-composer.d.ts +119 -0
  666. package/dist/components/features/event-calendar/colors.d.ts +29 -0
  667. package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +5 -0
  668. package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +5 -0
  669. package/dist/components/features/event-calendar/event-calendar-event-card.d.ts +16 -0
  670. package/dist/components/features/event-calendar/event-calendar-header.d.ts +8 -0
  671. package/dist/components/features/event-calendar/event-calendar-legend.d.ts +5 -0
  672. package/dist/components/features/event-calendar/event-calendar.d.ts +5 -0
  673. package/dist/components/features/event-calendar/event-calendar.types.d.ts +350 -0
  674. package/dist/components/features/event-calendar/index.d.ts +11 -0
  675. package/dist/components/features/event-calendar/use-event-calendar-data.d.ts +15 -0
  676. package/dist/components/features/event-calendar/use-event-calendar.d.ts +24 -0
  677. package/dist/components/features/filters/facets/async-select-facet.d.ts +28 -0
  678. package/dist/components/features/filters/facets/date-facet.d.ts +18 -0
  679. package/dist/components/features/filters/facets/range-facet.d.ts +30 -0
  680. package/dist/components/features/filters/facets/search-facet.d.ts +27 -0
  681. package/dist/components/features/filters/facets/select-facet.d.ts +19 -0
  682. package/dist/components/features/filters/facets/tags-facet.d.ts +27 -0
  683. package/dist/components/features/filters/filter-context.d.ts +61 -0
  684. package/dist/components/features/filters/filter-layout.d.ts +16 -0
  685. package/dist/components/features/filters/filter-query.d.ts +21 -0
  686. package/dist/components/features/filters/filters.strings.d.ts +103 -0
  687. package/dist/components/features/filters/filters.types.d.ts +222 -0
  688. package/dist/components/features/filters/hooks/index.d.ts +3 -0
  689. package/dist/components/features/filters/hooks/use-async-options.d.ts +16 -0
  690. package/dist/components/features/filters/hooks/use-filter-groups.d.ts +16 -0
  691. package/dist/components/features/filters/index.d.ts +42 -0
  692. package/dist/components/features/filters/operator-options.d.ts +9 -0
  693. package/dist/components/features/filters/partials/active-filter-item.d.ts +37 -0
  694. package/dist/components/features/filters/partials/async-filter-content.d.ts +21 -0
  695. package/dist/components/features/filters/partials/date-filter-content.d.ts +14 -0
  696. package/dist/components/features/filters/partials/filter-error-boundary.d.ts +9 -0
  697. package/dist/components/features/filters/partials/filter-list-content.d.ts +24 -0
  698. package/dist/components/features/filters/partials/filter-list-item.d.ts +19 -0
  699. package/dist/components/features/filters/partials/filter-operator-select.d.ts +22 -0
  700. package/dist/components/features/filters/partials/filter-pill.d.ts +26 -0
  701. package/dist/components/features/filters/partials/filter-popover-content.d.ts +36 -0
  702. package/dist/components/features/filters/partials/filter-tabs.d.ts +14 -0
  703. package/dist/components/features/filters/partials/filter-value-display.d.ts +21 -0
  704. package/dist/components/features/filters/partials/filters-button.d.ts +32 -0
  705. package/dist/components/features/filters/partials/index.d.ts +14 -0
  706. package/dist/components/features/filters/partials/regular-filter-content.d.ts +28 -0
  707. package/dist/components/features/filters/partials/search-filters-list.d.ts +25 -0
  708. package/dist/components/features/filters/partials/tags-filter-content.d.ts +28 -0
  709. package/dist/components/features/filters/utils/filter-utils.d.ts +37 -0
  710. package/dist/components/features/filters/validators.d.ts +63 -0
  711. package/dist/components/features/global-search/global-search-dialog.d.ts +13 -0
  712. package/dist/components/features/global-search/global-search.d.ts +52 -0
  713. package/dist/components/features/global-search/global-search.strings.d.ts +36 -0
  714. package/dist/components/features/global-search/global-search.types.d.ts +105 -0
  715. package/dist/components/features/global-search/hooks/index.d.ts +2 -0
  716. package/dist/components/features/global-search/hooks/use-global-search.d.ts +33 -0
  717. package/dist/components/features/global-search/index.d.ts +9 -0
  718. package/dist/components/features/global-search/partials/global-search-empty-state.d.ts +7 -0
  719. package/dist/components/features/global-search/partials/global-search-footer.d.ts +13 -0
  720. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +12 -0
  721. package/dist/components/features/global-search/partials/global-search-input.d.ts +17 -0
  722. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +16 -0
  723. package/dist/components/features/global-search/partials/global-search-tabs.d.ts +13 -0
  724. package/dist/components/features/global-search/partials/index.d.ts +12 -0
  725. package/dist/components/features/global-search/partials/tone-palettes.d.ts +8 -0
  726. package/dist/components/features/kanban/hooks/index.d.ts +1 -0
  727. package/dist/components/features/kanban/hooks/use-kanban.d.ts +32 -0
  728. package/dist/components/features/kanban/index.d.ts +5 -0
  729. package/dist/components/features/kanban/kanban-context.d.ts +25 -0
  730. package/dist/components/features/kanban/kanban-keyboard.d.ts +10 -0
  731. package/dist/components/features/kanban/kanban.d.ts +38 -0
  732. package/dist/components/features/kanban/kanban.strings.d.ts +24 -0
  733. package/dist/components/features/kanban/kanban.types.d.ts +168 -0
  734. package/dist/components/features/map/index.d.ts +13 -0
  735. package/dist/components/features/map/map.d.ts +166 -0
  736. package/dist/components/features/map/place-autocomplete.d.ts +97 -0
  737. package/dist/components/features/map/public-leaflet.types.d.ts +71 -0
  738. package/dist/components/features/map/use-map-color-scheme.d.ts +2 -0
  739. package/dist/components/features/media-library/hooks/index.d.ts +1 -0
  740. package/dist/components/features/media-library/hooks/use-media-library.d.ts +5 -0
  741. package/dist/components/features/media-library/index.d.ts +6 -0
  742. package/dist/components/features/media-library/media-library.d.ts +3 -0
  743. package/dist/components/features/media-library/media-library.strings.d.ts +124 -0
  744. package/dist/components/features/media-library/media-library.types.d.ts +568 -0
  745. package/dist/components/features/media-library/media-resource-gallery.d.ts +2 -0
  746. package/dist/components/features/media-library/partials/index.d.ts +1 -0
  747. package/dist/components/features/media-library/partials/media-library-partials.d.ts +10 -0
  748. package/dist/components/features/mentions/hooks/index.d.ts +2 -0
  749. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +41 -0
  750. package/dist/components/features/mentions/hooks/use-mentions.d.ts +35 -0
  751. package/dist/components/features/mentions/index.d.ts +5 -0
  752. package/dist/components/features/mentions/mentions.strings.d.ts +26 -0
  753. package/dist/components/features/mentions/mentions.types.d.ts +100 -0
  754. package/dist/components/features/mentions/partials/index.d.ts +4 -0
  755. package/dist/components/features/mentions/partials/mention-chip.d.ts +29 -0
  756. package/dist/components/features/mentions/partials/mention-content.d.ts +22 -0
  757. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +36 -0
  758. package/dist/components/features/mentions/partials/mention-picker.d.ts +31 -0
  759. package/dist/components/features/mentions/utils/build-mention-html.d.ts +24 -0
  760. package/dist/components/features/mentions/utils/index.d.ts +3 -0
  761. package/dist/components/features/mentions/utils/parse-mentions-from-html.d.ts +13 -0
  762. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +16 -0
  763. package/dist/components/features/overlays/alert-dialog.d.ts +4 -0
  764. package/dist/components/features/overlays/dialog.d.ts +4 -0
  765. package/dist/components/features/overlays/drawer.d.ts +4 -0
  766. package/dist/components/features/overlays/hooks/index.d.ts +2 -0
  767. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +24 -0
  768. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +36 -0
  769. package/dist/components/features/overlays/index.d.ts +6 -0
  770. package/dist/components/features/overlays/overlays.strings.d.ts +19 -0
  771. package/dist/components/features/overlays/overlays.types.d.ts +169 -0
  772. package/dist/components/features/products/components/index.d.ts +17 -0
  773. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  774. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  775. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  776. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  777. package/dist/components/features/products/components/product-options-matrix.d.ts +5 -0
  778. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  779. package/dist/components/features/products/components/product-overview.d.ts +5 -0
  780. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  781. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  782. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  783. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  784. package/dist/components/features/products/components/product-variant-action-menu.d.ts +5 -0
  785. package/dist/components/features/products/components/product-variant-details.d.ts +5 -0
  786. package/dist/components/features/products/components/product-variant-editor.d.ts +5 -0
  787. package/dist/components/features/products/components/product-variants-bulk-table.d.ts +5 -0
  788. package/dist/components/features/products/components/product-variants-manager.d.ts +5 -0
  789. package/dist/components/features/products/components/product-variants-table.d.ts +5 -0
  790. package/dist/components/features/products/index.d.ts +3 -0
  791. package/dist/components/features/products/partials/index.d.ts +7 -0
  792. package/dist/components/features/products/partials/product-actions.d.ts +10 -0
  793. package/dist/components/features/products/partials/product-empty-state.d.ts +10 -0
  794. package/dist/components/features/products/partials/product-metric-tile.d.ts +4 -0
  795. package/dist/components/features/products/partials/product-rows.d.ts +35 -0
  796. package/dist/components/features/products/partials/product-tone.d.ts +8 -0
  797. package/dist/components/features/products/partials/product-values.d.ts +1 -0
  798. package/dist/components/features/products/partials/product-variant-table-parts.d.ts +28 -0
  799. package/dist/components/features/products/products.strings.d.ts +308 -0
  800. package/dist/components/features/products/products.types.d.ts +906 -0
  801. package/dist/components/features/questionnaire/index.d.ts +3 -0
  802. package/dist/components/features/questionnaire/questionnaire-control.d.ts +3 -0
  803. package/dist/components/features/questionnaire/questionnaire.d.ts +2 -0
  804. package/dist/components/features/questionnaire/questionnaire.types.d.ts +98 -0
  805. package/dist/components/features/questionnaire/questionnaire.utils.d.ts +5 -0
  806. package/dist/components/features/resource/index.d.ts +3 -0
  807. package/dist/components/features/resource/resource.d.ts +8 -0
  808. package/dist/components/features/resource/resource.strings.d.ts +12 -0
  809. package/dist/components/features/resource/resource.types.d.ts +161 -0
  810. package/dist/components/features/resource-assignment/hooks/index.d.ts +2 -0
  811. package/dist/components/features/resource-assignment/hooks/use-shared-resource-card.d.ts +32 -0
  812. package/dist/components/features/resource-assignment/index.d.ts +6 -0
  813. package/dist/components/features/resource-assignment/partials/default-shared-resource-partials.d.ts +31 -0
  814. package/dist/components/features/resource-assignment/partials/index.d.ts +1 -0
  815. package/dist/components/features/resource-assignment/resource-assignment.d.ts +12 -0
  816. package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +17 -0
  817. package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +193 -0
  818. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +6 -0
  819. package/dist/components/features/rich-text-editor/index.d.ts +5 -0
  820. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +28 -0
  821. package/dist/components/features/rich-text-editor/partials/counts-footer.d.ts +32 -0
  822. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +7 -0
  823. package/dist/components/features/rich-text-editor/partials/index.d.ts +7 -0
  824. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +8 -0
  825. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +3 -0
  826. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +33 -0
  827. package/dist/components/features/rich-text-editor/rich-text-editor.d.ts +3 -0
  828. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  829. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +32 -0
  830. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +111 -0
  831. package/dist/components/features/schema-form/hooks/index.d.ts +1 -0
  832. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +23 -0
  833. package/dist/components/features/schema-form/index.d.ts +5 -0
  834. package/dist/components/features/schema-form/partials/index.d.ts +3 -0
  835. package/dist/components/features/schema-form/partials/schema-form-actions.d.ts +23 -0
  836. package/dist/components/features/schema-form/partials/schema-form-empty.d.ts +12 -0
  837. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +12 -0
  838. package/dist/components/features/schema-form/schema-form.d.ts +5 -0
  839. package/dist/components/features/schema-form/schema-form.strings.d.ts +11 -0
  840. package/dist/components/features/schema-form/schema-form.types.d.ts +271 -0
  841. package/dist/components/features/schema-form/schema-form.utils.d.ts +18 -0
  842. package/dist/components/features/suggestions/hooks/index.d.ts +1 -0
  843. package/dist/components/features/suggestions/hooks/use-suggestions.d.ts +9 -0
  844. package/dist/components/features/suggestions/index.d.ts +4 -0
  845. package/dist/components/features/suggestions/suggestions.d.ts +5 -0
  846. package/dist/components/features/suggestions/suggestions.strings.d.ts +16 -0
  847. package/dist/components/features/suggestions/suggestions.types.d.ts +79 -0
  848. package/dist/components/features/sync/index.d.ts +3 -0
  849. package/dist/components/features/sync/sync-range-dialog-form.d.ts +5 -0
  850. package/dist/components/features/sync/sync.strings.d.ts +18 -0
  851. package/dist/components/features/sync/sync.types.d.ts +44 -0
  852. package/dist/components/features/table/column-visibility-toggle.d.ts +5 -0
  853. package/dist/components/features/table/data-table.d.ts +6 -0
  854. package/dist/components/features/table/filter-bar.d.ts +5 -0
  855. package/dist/components/features/table/hooks.d.ts +47 -0
  856. package/dist/components/features/table/index.d.ts +16 -0
  857. package/dist/components/features/table/pagination.d.ts +5 -0
  858. package/dist/components/features/table/partials/cell-renderers.d.ts +141 -0
  859. package/dist/components/features/table/partials/cell-value.d.ts +121 -0
  860. package/dist/components/features/table/partials/fullscreen-toggle.d.ts +16 -0
  861. package/dist/components/features/table/partials/resource-cell.d.ts +63 -0
  862. package/dist/components/features/table/partials/table-link.d.ts +3 -0
  863. package/dist/components/features/table/table-actions.d.ts +5 -0
  864. package/dist/components/features/table/table-body.d.ts +5 -0
  865. package/dist/components/features/table/table-header.d.ts +6 -0
  866. package/dist/components/features/table/table-helpers.d.ts +39 -0
  867. package/dist/components/features/table/table-toolbar.d.ts +5 -0
  868. package/dist/components/features/table/table.strings.d.ts +3 -0
  869. package/dist/components/features/table/table.types.d.ts +489 -0
  870. package/dist/components/features/theme-tweaker/admin-ui-theme-provider.d.ts +6 -0
  871. package/dist/components/features/theme-tweaker/index.d.ts +10 -0
  872. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +49 -0
  873. package/dist/components/features/theme-tweaker/theme-scope.d.ts +7 -0
  874. package/dist/components/features/theme-tweaker/theme-tweaker.d.ts +2 -0
  875. package/dist/components/features/theme-tweaker/theme-tweaker.fields.d.ts +7 -0
  876. package/dist/components/features/theme-tweaker/theme-tweaker.recipes.d.ts +25 -0
  877. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +75 -0
  878. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +161 -0
  879. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +23 -0
  880. package/dist/components/features/theme-tweaker/use-applied-theme.d.ts +11 -0
  881. package/dist/components/layout/app-shell/app-layout.d.ts +12 -0
  882. package/dist/components/layout/app-shell/app-shell.types.d.ts +151 -0
  883. package/dist/components/layout/app-shell/index.d.ts +6 -0
  884. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +2 -0
  885. package/dist/components/layout/app-shell/stacked-layout.d.ts +2 -0
  886. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +2 -0
  887. package/dist/components/layout/auth/auth-card.d.ts +2 -0
  888. package/dist/components/layout/auth/auth-footer-links.d.ts +2 -0
  889. package/dist/components/layout/auth/auth-form.d.ts +11 -0
  890. package/dist/components/layout/auth/auth-hooks.d.ts +4 -0
  891. package/dist/components/layout/auth/auth-method-switch.d.ts +4 -0
  892. package/dist/components/layout/auth/auth-shell.d.ts +2 -0
  893. package/dist/components/layout/auth/auth-social-providers.d.ts +3 -0
  894. package/dist/components/layout/auth/auth-split-panel.d.ts +2 -0
  895. package/dist/components/layout/auth/auth.strings.d.ts +21 -0
  896. package/dist/components/layout/auth/auth.types.d.ts +282 -0
  897. package/dist/components/layout/auth/index.d.ts +10 -0
  898. package/dist/components/layout/containers/container.recipes.d.ts +5 -0
  899. package/dist/components/layout/containers/containers.types.d.ts +17 -0
  900. package/dist/components/layout/containers/content-container.d.ts +3 -0
  901. package/dist/components/layout/containers/index.d.ts +5 -0
  902. package/dist/components/layout/containers/page-viewport.d.ts +3 -0
  903. package/dist/components/layout/containers/section.d.ts +3 -0
  904. package/dist/components/layout/containers/two-column-layout.d.ts +27 -0
  905. package/dist/components/layout/header/header.d.ts +2 -0
  906. package/dist/components/layout/header/header.types.d.ts +198 -0
  907. package/dist/components/layout/header/index.d.ts +9 -0
  908. package/dist/components/layout/header/partials/header-breadcrumbs.d.ts +4 -0
  909. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +2 -0
  910. package/dist/components/layout/header/partials/header-notifications.d.ts +2 -0
  911. package/dist/components/layout/header/partials/header-search.d.ts +2 -0
  912. package/dist/components/layout/header/partials/header-tool-button.d.ts +4 -0
  913. package/dist/components/layout/header/partials/header-tool-popover.d.ts +2 -0
  914. package/dist/components/layout/header/partials/header-user-menu.d.ts +2 -0
  915. package/dist/components/layout/hooks/index.d.ts +3 -0
  916. package/dist/components/layout/hooks/use-active-path.d.ts +1 -0
  917. package/dist/components/layout/hooks/use-command-shortcut.d.ts +7 -0
  918. package/dist/components/layout/hooks/use-layout-link.d.ts +2 -0
  919. package/dist/components/layout/index.d.ts +24 -0
  920. package/dist/components/layout/layout.types.d.ts +91 -0
  921. package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +5 -0
  922. package/dist/components/layout/navigation/breadcrumb-progress/index.d.ts +2 -0
  923. package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +24 -0
  924. package/dist/components/layout/navigation/category-nav/category-nav.d.ts +5 -0
  925. package/dist/components/layout/navigation/category-nav/index.d.ts +2 -0
  926. package/dist/components/layout/navigation/category-nav/types.d.ts +22 -0
  927. package/dist/components/layout/navigation/index.d.ts +17 -0
  928. package/dist/components/layout/navigation/section-nav/index.d.ts +1 -0
  929. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +29 -0
  930. package/dist/components/layout/navigation/side-nav.d.ts +58 -0
  931. package/dist/components/layout/page/index.d.ts +4 -0
  932. package/dist/components/layout/page/page.d.ts +3 -0
  933. package/dist/components/layout/page/page.types.d.ts +138 -0
  934. package/dist/components/layout/page/partials/page-actions.d.ts +2 -0
  935. package/dist/components/layout/page/partials/page-header.d.ts +2 -0
  936. package/dist/components/layout/settings/index.d.ts +1 -0
  937. package/dist/components/layout/settings/settings.d.ts +65 -0
  938. package/dist/components/layout/sidebar/app-sidebar.d.ts +7 -0
  939. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +4 -0
  940. package/dist/components/layout/sidebar/components/sidebar-logo.d.ts +10 -0
  941. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +2 -0
  942. package/dist/components/layout/sidebar/components/sidebar-navigation-user.d.ts +23 -0
  943. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +4 -0
  944. package/dist/components/layout/sidebar/components/sidebar-workspace-dropdown.d.ts +2 -0
  945. package/dist/components/layout/sidebar/index.d.ts +11 -0
  946. package/dist/components/layout/sidebar/sidebar.context.d.ts +17 -0
  947. package/dist/components/layout/sidebar/sidebar.d.ts +9 -0
  948. package/dist/components/layout/sidebar/sidebar.types.d.ts +218 -0
  949. package/dist/components/layout/sidebar/sidebar.utils.d.ts +29 -0
  950. package/dist/components/layout/workspace/index.d.ts +3 -0
  951. package/dist/components/layout/workspace/workspace.d.ts +6 -0
  952. package/dist/components/layout/workspace/workspace.strings.d.ts +18 -0
  953. package/dist/components/layout/workspace/workspace.types.d.ts +141 -0
  954. package/dist/components/primitives/date.d.ts +63 -0
  955. package/dist/components/primitives/dimensions.d.ts +30 -0
  956. package/dist/components/primitives/duration.d.ts +23 -0
  957. package/dist/components/primitives/file-size.d.ts +23 -0
  958. package/dist/components/primitives/index.d.ts +11 -0
  959. package/dist/components/primitives/initials-format.d.ts +21 -0
  960. package/dist/components/primitives/initials.d.ts +16 -0
  961. package/dist/components/primitives/link.d.ts +28 -0
  962. package/dist/components/primitives/money.d.ts +79 -0
  963. package/dist/components/primitives/name.d.ts +16 -0
  964. package/dist/components/primitives/number.d.ts +23 -0
  965. package/dist/components/primitives/value.d.ts +23 -0
  966. package/dist/components/typography/content-typography.d.ts +4 -0
  967. package/dist/components/typography/display-label.d.ts +5 -0
  968. package/dist/components/typography/heading.d.ts +16 -0
  969. package/dist/components/typography/index.d.ts +10 -0
  970. package/dist/components/typography/label.d.ts +8 -0
  971. package/dist/components/typography/rich-text/index.d.ts +2 -0
  972. package/dist/components/typography/rich-text/rich-text.d.ts +6 -0
  973. package/dist/components/typography/text-link.d.ts +7 -0
  974. package/dist/components/typography/text.d.ts +17 -0
  975. package/dist/components/typography/text.styles.d.ts +50 -0
  976. package/dist/components/ui/accordion.d.ts +6 -0
  977. package/dist/components/ui/alert-dialog.d.ts +21 -0
  978. package/dist/components/ui/avatar.d.ts +11 -0
  979. package/dist/components/ui/badge.d.ts +5 -0
  980. package/dist/components/ui/breadcrumb.d.ts +11 -0
  981. package/dist/components/ui/button-group.d.ts +12 -0
  982. package/dist/components/ui/button.d.ts +12 -0
  983. package/dist/components/ui/calendar.d.ts +10 -0
  984. package/dist/components/ui/card.d.ts +11 -0
  985. package/dist/components/ui/checkbox.d.ts +6 -0
  986. package/dist/components/ui/collapsible.d.ts +9 -0
  987. package/dist/components/ui/combobox.d.ts +40 -0
  988. package/dist/components/ui/command.d.ts +50 -0
  989. package/dist/components/ui/dialog.d.ts +26 -0
  990. package/dist/components/ui/disclosure-panel.d.ts +14 -0
  991. package/dist/components/ui/empty.d.ts +11 -0
  992. package/dist/components/ui/input-group.d.ts +18 -0
  993. package/dist/components/ui/input.d.ts +3 -0
  994. package/dist/components/ui/item.d.ts +22 -0
  995. package/dist/components/ui/overlay.recipes.d.ts +2 -0
  996. package/dist/components/ui/pagination.d.ts +17 -0
  997. package/dist/components/ui/popover.d.ts +22 -0
  998. package/dist/components/ui/select.d.ts +18 -0
  999. package/dist/components/ui/separator.d.ts +3 -0
  1000. package/dist/components/ui/sheet.d.ts +25 -0
  1001. package/dist/components/ui/sidebar.d.ts +64 -0
  1002. package/dist/components/ui/skeleton.d.ts +2 -0
  1003. package/dist/components/ui/slot.d.ts +6 -0
  1004. package/dist/components/ui/sonner.d.ts +3 -0
  1005. package/dist/components/ui/switch.d.ts +5 -0
  1006. package/dist/components/ui/table.d.ts +13 -0
  1007. package/dist/components/ui/tabs.d.ts +10 -0
  1008. package/dist/components/ui/textarea.d.ts +3 -0
  1009. package/dist/components/ui/toggle-group.d.ts +12 -0
  1010. package/dist/components/ui/toggle.d.ts +8 -0
  1011. package/dist/components/ui/tooltip.d.ts +13 -0
  1012. package/dist/containers-CPNyNo1_.js +124 -0
  1013. package/dist/containers-CPNyNo1_.js.map +1 -0
  1014. package/dist/content-typography-CnwgMJ37.js +6 -0
  1015. package/dist/content-typography-CnwgMJ37.js.map +1 -0
  1016. package/dist/copyable-B7SBXJMr.js +65 -0
  1017. package/dist/copyable-B7SBXJMr.js.map +1 -0
  1018. package/dist/data-display-b3d1TfL4.js +1129 -0
  1019. package/dist/data-display-b3d1TfL4.js.map +1 -0
  1020. package/dist/date-BFNMnrS5.js +140 -0
  1021. package/dist/date-BFNMnrS5.js.map +1 -0
  1022. package/dist/date-picker-DI6kPNof.js +1521 -0
  1023. package/dist/date-picker-DI6kPNof.js.map +1 -0
  1024. package/dist/date-pickers-ByP6Cv2z.js +224 -0
  1025. package/dist/date-pickers-ByP6Cv2z.js.map +1 -0
  1026. package/dist/disclosure-panel-B0HFNZ9x.js +35 -0
  1027. package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -0
  1028. package/dist/display-ByI5tkqy.js +343 -0
  1029. package/dist/display-ByI5tkqy.js.map +1 -0
  1030. package/dist/dropdown-menu-BlnyHr-9.js +186 -0
  1031. package/dist/dropdown-menu-BlnyHr-9.js.map +1 -0
  1032. package/dist/editable-text-recipe-Bkm6wKHp.js +10 -0
  1033. package/dist/editable-text-recipe-Bkm6wKHp.js.map +1 -0
  1034. package/dist/favicon.svg +1 -0
  1035. package/dist/features/activities.js +1360 -0
  1036. package/dist/features/activities.js.map +1 -0
  1037. package/dist/features/ai-chat.js +567 -0
  1038. package/dist/features/ai-chat.js.map +1 -0
  1039. package/dist/features/async-preview.js +478 -0
  1040. package/dist/features/async-preview.js.map +1 -0
  1041. package/dist/features/combobox.js +3 -0
  1042. package/dist/features/comments.js +3 -0
  1043. package/dist/features/data-view.js +519 -0
  1044. package/dist/features/data-view.js.map +1 -0
  1045. package/dist/features/email-composer/engine.js +2 -0
  1046. package/dist/features/email-composer.js +1099 -0
  1047. package/dist/features/email-composer.js.map +1 -0
  1048. package/dist/features/event-calendar.js +711 -0
  1049. package/dist/features/event-calendar.js.map +1 -0
  1050. package/dist/features/filters.js +3 -0
  1051. package/dist/features/global-search.js +593 -0
  1052. package/dist/features/global-search.js.map +1 -0
  1053. package/dist/features/kanban.js +425 -0
  1054. package/dist/features/kanban.js.map +1 -0
  1055. package/dist/features/map/images/layers-2x.png +0 -0
  1056. package/dist/features/map/images/layers.png +0 -0
  1057. package/dist/features/map/images/marker-icon-2x.png +0 -0
  1058. package/dist/features/map/images/marker-icon.png +0 -0
  1059. package/dist/features/map/images/marker-shadow.png +0 -0
  1060. package/dist/features/map/images/spritesheet-2x.png +0 -0
  1061. package/dist/features/map/images/spritesheet.png +0 -0
  1062. package/dist/features/map/images/spritesheet.svg +156 -0
  1063. package/dist/features/map/style.css +809 -0
  1064. package/dist/features/map.js +1052 -0
  1065. package/dist/features/map.js.map +1 -0
  1066. package/dist/features/media-library.js +2007 -0
  1067. package/dist/features/media-library.js.map +1 -0
  1068. package/dist/features/mentions.js +3 -0
  1069. package/dist/features/overlays.js +3 -0
  1070. package/dist/features/products.js +3076 -0
  1071. package/dist/features/products.js.map +1 -0
  1072. package/dist/features/questionnaire.js +365 -0
  1073. package/dist/features/questionnaire.js.map +1 -0
  1074. package/dist/features/resource-assignment.js +317 -0
  1075. package/dist/features/resource-assignment.js.map +1 -0
  1076. package/dist/features/resource.js +254 -0
  1077. package/dist/features/resource.js.map +1 -0
  1078. package/dist/features/rich-text-editor.js +23 -0
  1079. package/dist/features/rich-text-editor.js.map +1 -0
  1080. package/dist/features/schema-form.js +744 -0
  1081. package/dist/features/schema-form.js.map +1 -0
  1082. package/dist/features/suggestions.js +149 -0
  1083. package/dist/features/suggestions.js.map +1 -0
  1084. package/dist/features/sync.js +136 -0
  1085. package/dist/features/sync.js.map +1 -0
  1086. package/dist/features/table.js +3 -0
  1087. package/dist/features/theme-tweaker.js +2083 -0
  1088. package/dist/features/theme-tweaker.js.map +1 -0
  1089. package/dist/feedback-a9j9J-9A.js +391 -0
  1090. package/dist/feedback-a9j9J-9A.js.map +1 -0
  1091. package/dist/field-affordance-recipes-CHdUtn2Z.js +17 -0
  1092. package/dist/field-affordance-recipes-CHdUtn2Z.js.map +1 -0
  1093. package/dist/field-state-recipes-CBTRt9Bt.js +11 -0
  1094. package/dist/field-state-recipes-CBTRt9Bt.js.map +1 -0
  1095. package/dist/filters-qtrcv1hf.js +2203 -0
  1096. package/dist/filters-qtrcv1hf.js.map +1 -0
  1097. package/dist/form-field-C6W-y2hR.js +48 -0
  1098. package/dist/form-field-C6W-y2hR.js.map +1 -0
  1099. package/dist/form-sizing-39NohSqn.js +99 -0
  1100. package/dist/form-sizing-39NohSqn.js.map +1 -0
  1101. package/dist/format-iamDSqs2.js +110 -0
  1102. package/dist/format-iamDSqs2.js.map +1 -0
  1103. package/dist/forms-BF-HSbff.js +194 -0
  1104. package/dist/forms-BF-HSbff.js.map +1 -0
  1105. package/dist/forms-numeric-Y15Bg5Nr.js +867 -0
  1106. package/dist/forms-numeric-Y15Bg5Nr.js.map +1 -0
  1107. package/dist/header-B8ex54cY.js +452 -0
  1108. package/dist/header-B8ex54cY.js.map +1 -0
  1109. package/dist/hooks/use-debounce.d.ts +1 -0
  1110. package/dist/hooks/use-debounced-callback.d.ts +40 -0
  1111. package/dist/hooks/use-files.d.ts +48 -0
  1112. package/dist/hooks/use-mobile.d.ts +2 -0
  1113. package/dist/hooks/useFormErrors.d.ts +7 -0
  1114. package/dist/hooks-D6UBVzf2.js +88 -0
  1115. package/dist/hooks-D6UBVzf2.js.map +1 -0
  1116. package/dist/http-CLTVJc5I.js +331 -0
  1117. package/dist/http-CLTVJc5I.js.map +1 -0
  1118. package/dist/icon-badge-Dv0RYQwj.js +53 -0
  1119. package/dist/icon-badge-Dv0RYQwj.js.map +1 -0
  1120. package/dist/icon-size-B6PVwjbC.js +18 -0
  1121. package/dist/icon-size-B6PVwjbC.js.map +1 -0
  1122. package/dist/index.d.ts +14 -0
  1123. package/dist/index.js +7 -0
  1124. package/dist/initials-format-CDoQEOd_.js +35 -0
  1125. package/dist/initials-format-CDoQEOd_.js.map +1 -0
  1126. package/dist/input-DMorJiTI.js +202 -0
  1127. package/dist/input-DMorJiTI.js.map +1 -0
  1128. package/dist/input-ci9fIgFH.js +20 -0
  1129. package/dist/input-ci9fIgFH.js.map +1 -0
  1130. package/dist/item-pJ0GsOiJ.js +257 -0
  1131. package/dist/item-pJ0GsOiJ.js.map +1 -0
  1132. package/dist/layout/app-shell.js +3 -0
  1133. package/dist/layout/auth.js +3 -0
  1134. package/dist/layout/containers.js +3 -0
  1135. package/dist/layout/header.js +3 -0
  1136. package/dist/layout/hooks.js +3 -0
  1137. package/dist/layout/navigation.js +3 -0
  1138. package/dist/layout/page.js +3 -0
  1139. package/dist/layout/settings.js +3 -0
  1140. package/dist/layout/sidebar.js +4 -0
  1141. package/dist/layout/workspace.js +3 -0
  1142. package/dist/layout.js +13 -0
  1143. package/dist/layout.types-Cn7aUzJp.js +20 -0
  1144. package/dist/layout.types-Cn7aUzJp.js.map +1 -0
  1145. package/dist/lib/action-presentation.d.ts +15 -0
  1146. package/dist/lib/affordance-geometry.generated.d.ts +18 -0
  1147. package/dist/lib/anchored-positioning.d.ts +5 -0
  1148. package/dist/lib/command-filter.d.ts +1 -0
  1149. package/dist/lib/component-vocabulary.d.ts +12 -0
  1150. package/dist/lib/editable-text-recipe.d.ts +6 -0
  1151. package/dist/lib/email-composer.d.ts +6 -0
  1152. package/dist/lib/field-affordance-recipes.d.ts +20 -0
  1153. package/dist/lib/field-state-recipes.d.ts +10 -0
  1154. package/dist/lib/format.d.ts +53 -0
  1155. package/dist/lib/motion-recipes.d.ts +8 -0
  1156. package/dist/lib/navigation-row-recipes.d.ts +26 -0
  1157. package/dist/lib/overlay-anatomy-recipes.d.ts +8 -0
  1158. package/dist/lib/row-recipes.d.ts +3 -0
  1159. package/dist/lib/sanitize-html.d.ts +8 -0
  1160. package/dist/lib/strings.d.ts +16 -0
  1161. package/dist/lib/strings.js +32 -0
  1162. package/dist/lib/strings.js.map +1 -0
  1163. package/dist/lib/surface-recipes.d.ts +27 -0
  1164. package/dist/lib/theme-scope.d.ts +31 -0
  1165. package/dist/lib/token-merge.generated.d.ts +2 -0
  1166. package/dist/lib/track-recipes.d.ts +4 -0
  1167. package/dist/lib/ui-provider/defaults.d.ts +12 -0
  1168. package/dist/lib/ui-provider/hooks.d.ts +13 -0
  1169. package/dist/lib/ui-provider/index.d.ts +28 -0
  1170. package/dist/lib/ui-provider/provider.d.ts +15 -0
  1171. package/dist/lib/ui-provider/scale.d.ts +5 -0
  1172. package/dist/lib/ui-provider/store.d.ts +11 -0
  1173. package/dist/lib/ui-provider/types.d.ts +157 -0
  1174. package/dist/lib/utils.d.ts +2 -0
  1175. package/dist/lib/utils.js +2 -0
  1176. package/dist/map-demo-tile.svg +1 -0
  1177. package/dist/media-gallery-Ca4YmvBi.js +200 -0
  1178. package/dist/media-gallery-Ca4YmvBi.js.map +1 -0
  1179. package/dist/mentions-CRio8mTm.js +563 -0
  1180. package/dist/mentions-CRio8mTm.js.map +1 -0
  1181. package/dist/message-B5-6LeYl.js +108 -0
  1182. package/dist/message-B5-6LeYl.js.map +1 -0
  1183. package/dist/motion-recipes-B6jKXEcN.js +27 -0
  1184. package/dist/motion-recipes-B6jKXEcN.js.map +1 -0
  1185. package/dist/navigation-BTrEb5u4.js +267 -0
  1186. package/dist/navigation-BTrEb5u4.js.map +1 -0
  1187. package/dist/navigation-DqEITuD2.js +265 -0
  1188. package/dist/navigation-DqEITuD2.js.map +1 -0
  1189. package/dist/navigation-row-recipes-BFpvGPGE.js +29 -0
  1190. package/dist/navigation-row-recipes-BFpvGPGE.js.map +1 -0
  1191. package/dist/number-BNT_BIzJ.js +269 -0
  1192. package/dist/number-BNT_BIzJ.js.map +1 -0
  1193. package/dist/overlay.recipes-BxW5FIfK.js +6 -0
  1194. package/dist/overlay.recipes-BxW5FIfK.js.map +1 -0
  1195. package/dist/overlays-DBqV0J_V.js +982 -0
  1196. package/dist/overlays-DBqV0J_V.js.map +1 -0
  1197. package/dist/page-BMBGjJY8.js +202 -0
  1198. package/dist/page-BMBGjJY8.js.map +1 -0
  1199. package/dist/page-header-BH41wCyY.js +112 -0
  1200. package/dist/page-header-BH41wCyY.js.map +1 -0
  1201. package/dist/pagination-C29vvt3I.js +149 -0
  1202. package/dist/pagination-C29vvt3I.js.map +1 -0
  1203. package/dist/popover-TInGXsjg.js +194 -0
  1204. package/dist/popover-TInGXsjg.js.map +1 -0
  1205. package/dist/popover-menu-BzqXqE72.js +99 -0
  1206. package/dist/popover-menu-BzqXqE72.js.map +1 -0
  1207. package/dist/popover.recipes-zgBhMlUu.js +34 -0
  1208. package/dist/popover.recipes-zgBhMlUu.js.map +1 -0
  1209. package/dist/primitives-DKPOGVpj.js +330 -0
  1210. package/dist/primitives-DKPOGVpj.js.map +1 -0
  1211. package/dist/primitives.js +7 -0
  1212. package/dist/receipt-DYWTQGEc.js +113 -0
  1213. package/dist/receipt-DYWTQGEc.js.map +1 -0
  1214. package/dist/rich-text-B7sBAdDG.js +32 -0
  1215. package/dist/rich-text-B7sBAdDG.js.map +1 -0
  1216. package/dist/rich-text-editor-BZSJchAF.js +575 -0
  1217. package/dist/rich-text-editor-BZSJchAF.js.map +1 -0
  1218. package/dist/rich-text-editor.recipes-DxvOE0Lp.js +72 -0
  1219. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +1 -0
  1220. package/dist/rich-text-editor.strings-BpnIQgMl.js +25 -0
  1221. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +1 -0
  1222. package/dist/row-recipes-DL8n7t_b.js +10 -0
  1223. package/dist/row-recipes-DL8n7t_b.js.map +1 -0
  1224. package/dist/sanitize-html-BG9FGe-j.js +64 -0
  1225. package/dist/sanitize-html-BG9FGe-j.js.map +1 -0
  1226. package/dist/scroll-area-BheMQ270.js +47 -0
  1227. package/dist/scroll-area-BheMQ270.js.map +1 -0
  1228. package/dist/select-B2mb-qN2.js +108 -0
  1229. package/dist/select-B2mb-qN2.js.map +1 -0
  1230. package/dist/separator-DO0EbCEm.js +17 -0
  1231. package/dist/separator-DO0EbCEm.js.map +1 -0
  1232. package/dist/separator-Gk_WXH-l.js +21 -0
  1233. package/dist/separator-Gk_WXH-l.js.map +1 -0
  1234. package/dist/services/actions/action-adapters.d.ts +77 -0
  1235. package/dist/services/actions/action-overlay-outlet.d.ts +3 -0
  1236. package/dist/services/actions/action-provider.d.ts +7 -0
  1237. package/dist/services/actions/action-scope.d.ts +3 -0
  1238. package/dist/services/actions/action-store.d.ts +55 -0
  1239. package/dist/services/actions/actions.strings.d.ts +2 -0
  1240. package/dist/services/actions/actions.types.d.ts +322 -0
  1241. package/dist/services/actions/hooks.d.ts +8 -0
  1242. package/dist/services/actions/index.d.ts +8 -0
  1243. package/dist/services/actions.js +811 -0
  1244. package/dist/services/actions.js.map +1 -0
  1245. package/dist/settings-D9f_wdIC.js +160 -0
  1246. package/dist/settings-D9f_wdIC.js.map +1 -0
  1247. package/dist/sheet-vOUloJ4O.js +205 -0
  1248. package/dist/sheet-vOUloJ4O.js.map +1 -0
  1249. package/dist/sidebar-C3UKkbC5.js +501 -0
  1250. package/dist/sidebar-C3UKkbC5.js.map +1 -0
  1251. package/dist/sidebar-CNBKFDRW.js +598 -0
  1252. package/dist/sidebar-CNBKFDRW.js.map +1 -0
  1253. package/dist/skeleton-BvRhK8y-.js +264 -0
  1254. package/dist/skeleton-BvRhK8y-.js.map +1 -0
  1255. package/dist/slot-CLF9kLrS.js +16 -0
  1256. package/dist/slot-CLF9kLrS.js.map +1 -0
  1257. package/dist/smart-card-B5FcKODh.js +577 -0
  1258. package/dist/smart-card-B5FcKODh.js.map +1 -0
  1259. package/dist/spinner-JtlFJ7Nc.js +78 -0
  1260. package/dist/spinner-JtlFJ7Nc.js.map +1 -0
  1261. package/dist/structure-BvW4vG4H.js +95 -0
  1262. package/dist/structure-BvW4vG4H.js.map +1 -0
  1263. package/dist/structure.recipes-DjqnBpwz.js +548 -0
  1264. package/dist/structure.recipes-DjqnBpwz.js.map +1 -0
  1265. package/dist/style.css +3 -0
  1266. package/dist/surface-recipes-CQfRr-VL.js +27 -0
  1267. package/dist/surface-recipes-CQfRr-VL.js.map +1 -0
  1268. package/dist/table-DnlAJ-xR.js +146 -0
  1269. package/dist/table-DnlAJ-xR.js.map +1 -0
  1270. package/dist/table-ghtAQ-JJ.js +1424 -0
  1271. package/dist/table-ghtAQ-JJ.js.map +1 -0
  1272. package/dist/tabs-DY09eoZg.js +187 -0
  1273. package/dist/tabs-DY09eoZg.js.map +1 -0
  1274. package/dist/text-inputs-BhOcedTo.js +331 -0
  1275. package/dist/text-inputs-BhOcedTo.js.map +1 -0
  1276. package/dist/text.styles-BwB7vAF2.js +64 -0
  1277. package/dist/text.styles-BwB7vAF2.js.map +1 -0
  1278. package/dist/theme-scope-kStaAer0.js +39 -0
  1279. package/dist/theme-scope-kStaAer0.js.map +1 -0
  1280. package/dist/theme.css +872 -0
  1281. package/dist/timelines-CnZ2S_Gr.js +446 -0
  1282. package/dist/timelines-CnZ2S_Gr.js.map +1 -0
  1283. package/dist/track-recipes-LLPNVwFg.js +10 -0
  1284. package/dist/track-recipes-LLPNVwFg.js.map +1 -0
  1285. package/dist/tree-COD9BGdU.js +185 -0
  1286. package/dist/tree-COD9BGdU.js.map +1 -0
  1287. package/dist/types/index.d.ts +11 -0
  1288. package/dist/types/locale.types.d.ts +7 -0
  1289. package/dist/types/pagination.types.d.ts +24 -0
  1290. package/dist/typography/rich-text.js +3 -0
  1291. package/dist/typography-Cv8MT-82.js +96 -0
  1292. package/dist/typography-Cv8MT-82.js.map +1 -0
  1293. package/dist/typography.js +3 -0
  1294. package/dist/ui-provider-CftIB6TY.js +128 -0
  1295. package/dist/ui-provider-CftIB6TY.js.map +1 -0
  1296. package/dist/ui-provider.js +4 -0
  1297. package/dist/upload-DIzw1dx1.js +849 -0
  1298. package/dist/upload-DIzw1dx1.js.map +1 -0
  1299. package/dist/upload-queue-xRJ3qDmd.js +410 -0
  1300. package/dist/upload-queue-xRJ3qDmd.js.map +1 -0
  1301. package/dist/use-debounce-DZ_1ZBPa.js +18 -0
  1302. package/dist/use-debounce-DZ_1ZBPa.js.map +1 -0
  1303. package/dist/use-debounced-callback-Cx1h-hdv.js +30 -0
  1304. package/dist/use-debounced-callback-Cx1h-hdv.js.map +1 -0
  1305. package/dist/use-file-drop-target-BX7GnhoQ.js +39 -0
  1306. package/dist/use-file-drop-target-BX7GnhoQ.js.map +1 -0
  1307. package/dist/use-mobile-vaLKwgyf.js +15 -0
  1308. package/dist/use-mobile-vaLKwgyf.js.map +1 -0
  1309. package/dist/utils-C2EKeIw3.js +72 -0
  1310. package/dist/utils-C2EKeIw3.js.map +1 -0
  1311. package/dist/value-inputs-Co1fu-xv.js +824 -0
  1312. package/dist/value-inputs-Co1fu-xv.js.map +1 -0
  1313. package/dist/workspace-Cbqz4FzN.js +402 -0
  1314. package/dist/workspace-Cbqz4FzN.js.map +1 -0
  1315. package/docs/consumer-skill/SKILL.md +32 -0
  1316. package/docs/consumer-skill/examples/app-layout.tsx +31 -0
  1317. package/docs/consumer-skill/examples/composition.tsx +37 -0
  1318. package/docs/consumer-skill/examples/content-workflow.tsx +13 -0
  1319. package/docs/consumer-skill/examples/destructive-confirm.tsx +42 -0
  1320. package/docs/consumer-skill/examples/detail.tsx +28 -0
  1321. package/docs/consumer-skill/examples/edit.tsx +61 -0
  1322. package/docs/consumer-skill/examples/email-composer.tsx +25 -0
  1323. package/docs/consumer-skill/examples/hierarchy-capture.tsx +25 -0
  1324. package/docs/consumer-skill/examples/index-table.tsx +36 -0
  1325. package/docs/consumer-skill/examples/manifest.json +94 -0
  1326. package/docs/consumer-skill/examples/receipt.tsx +19 -0
  1327. package/docs/consumer-skill/references/composition.md +170 -0
  1328. package/docs/consumer-skill/references/design-contract.md +145 -0
  1329. package/docs/consumer-skill/references/discovery.md +33 -0
  1330. package/docs/consumer-skill/references/installation.md +66 -0
  1331. package/docs/consumer-skill/references/integration.md +57 -0
  1332. package/docs/consumer-skill/references/public-api.json +17527 -0
  1333. package/docs/consumer-skill/references/theming.md +56 -0
  1334. package/docs/consumer-skill/references/tokens.json +422 -0
  1335. package/docs/consumer-skill/references/workflows.md +39 -0
  1336. package/docs/consumer-skill/scripts/discovery.mjs +79 -0
  1337. package/docs/consumer-skill/scripts/find-components.mjs +11 -0
  1338. package/package.json +621 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commerce.js","names":["NumberValue","_Fragment","_Fragment","_Fragment","NumberValue","Receipt","NumberValue","_Fragment","normalizeCode","NumberValue","_Fragment","NumberValue","NumberValue","_Fragment","useMoneyConfig","cn","Button","Heading","DisplayLabel","TextLink","Grid","Stack","Card","hasRenderableContent","Progress","CardPrimaryAction","Value","Phone","SecondaryValue","MonoValue","Initials","Percent","Money","Number$1","IconBadge","AvatarFallback","Avatar","AvatarImage","Badge","Separator","Input","DateBlock","ContentBlock","FormField","ToggleField","Select","CardRadioGroup","TagsInput","DecimalInput","WeightInput","ItemFooter","ItemMedia","ItemDescription","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","TabsTrigger","TabsContent","TabsList","Tabs","InlineStat","MetadataList","Receipt","ReceiptItems","Timeline","Fragment$1","Receipt$1","UpcomingBookingRow","className","bookings","b","timePlacement","dateTone","dateVariant","idx","renderItemValue","value","BookingCalendarEventCard","status","contentClassName","items","item","onAction","actionLabel","defaultLoyaltyPointsStrings","LoyaltyPoints","stringsProp","strings","useStrings","tierTone","Trophy","tier","balance","Text","history","entry","Gift","onRedeem","stripLeadingMinus","formatDeduction","defaultDiscountStackStrings","DiscountStackPreview","discounts","d","index","totalSavings","shipmentStatusDotTone","defaultShipmentTrackingStrings","ShipmentTracking","trackingNumber","carrier","steps","step","i","details","detail","defaultGiftcardStrings","giftcardStatusTone","inverseGradient","gradientMap","compactGradientMap","accentColorMap","headerGradientMap","GiftcardCompact","statusLabel","statusTone","isPartiallyUsed","remainingAmount","amount","displayAmount","gradient","code","recipientName","GiftcardCopyButton","copyStrings","generation","useRef","result","setResult","useState","state","previous","label","Icon","Check","X","Loader2","Copy","copy","request","inverse","GiftcardCardDark","metadataItems","expiresAt","onView","Eye","GiftcardFull","_createdAt","_template","senderName","pattern","message","GiftcardCardIllustrated","headerColor","GiftcardCardMinimal","accent","color","ArrowRight","GiftcardCard","props","defaultVendorProfileStrings","CHANGE_VARIANTS","ChangeBadge","children","tone","VendorProfileCard","forwardRef","internalView","setInternalView","defaultView","isViewControlled","view","hasEarnings","earnings","hasOverviewContent","metrics","hasStatsContent","stats","availableTabs","requestedView","activeView","hasBody","hasActions","onMessage","onHire","handleViewChange","nextValue","onViewChange","overviewContent","earningsChangeTone","earningsChange","metric","statsContent","stat","profileBody","avatarUrl","name","initials","role","verified","MessageSquare","ChevronRight","defaultInventoryLevelStrings","InventoryLevel","pct","stock","maxStock","isLow","reorderLevel","isCritical","badgeTone","badgeLabel","productName","variant","lastRestocked","defaultTaxBreakdownStrings","TaxBreakdownCard","subtotal","taxes","tax","totalTax","total","defaultSubscriptionSummaryStrings","SubscriptionSummaryCard","Repeat","planName","priceLabel","cycleLabel","Calendar","nextBillingDate","perks","perk","onManage","onUpgrade","defaultRefundStatusStrings","STAGE_ORDER","RefundStatusCard","currentIdx","stage","RotateCcw","requestedAt","done","current","s","reason","method","eta","defaultAddressCardStrings","AddressCard","defaultAddress","titleByKind","cityLine","city","region","postalCode","actions","onEdit","Edit2","onMakeDefault","Star","onRemove","Trash2","MapPin","kind","line1","line2","country","phone","defaultVoucherEntryStrings","normalizeCode$1","VoucherEntry","inputId","useId","setCode","trimmedCode","appliedCode","event","onCheck","error","defaultCartSummaryStrings","resolveCartLineTitle","resolveCartLineImageSrc","CartLineImagePlaceholder","title","CartSummaryCard","hasBreakdown","shipping","discount","ShoppingBag","it","imageSrc","onCheckout","defaultCouponInputStrings","normalizeCode","CouponInputCard","TicketPercent","appliedDiscount","Sparkles","onApply","defaultOrderStatusStrings","VARIANT_BY_STATUS","OrderStatusCard","lastCompleteIdx","events","e","acc","latestEvent","nextEvent","Package","orderNumber","currentEta","isLast","isCurrent","CalendarClock","Circle","defaultPaymentMethodStrings","BRAND_LABEL","BRAND_SURFACE","BRAND_GRADIENT","PaymentMethod","defaultMethod","brandLabel","brand","CreditCard","onChange","last4","holderName","expiry","DEFAULT_SEO_LISTING_LIMITS","resolveLimits","limits","clampScore","getCheckStatus","maxScore","ratio","score","makeCheck","scoreRatio","range","lengthScore","length","min","max","overBy","getSeoPermalinkPath","permalink","getSeoPermalinkSlug","permalinkScore","path","slugScore","slug","urlScore","baseUrl","keywordScore","keyword","input","haystack","calculateSeoListingScore","description","permalinkPath","checks","sum","check","defaultSeoListingCardStrings","SCORE_BADGE_TONE","SCORE_PROGRESS_CLASS","SCORE_PANEL_CLASS","SCORE_ICON_CLASS","CHECK_ICON","CheckCircle2","TriangleAlert","CircleAlert","CHECK_ICON_CLASS","CHECK_ROW_CLASS","trimSlashes","buildUrlParts","permalinkParts","pathSegments","buildHref","base","getCheckDetail","SeoCheckRow","SeoListingCard","resolvedBaseUrl","resolvedSiteName","siteName","resolvedTitle","resolvedDescription","scoreResult","href","urlParts","Search","Pencil","ExternalLink","part","price","Gauge","showChecks","defaultInvoiceMiniStrings","count","invoiceStatusTone","InvoiceMini","mergeStrings","labelByStatus","invoice","defaultInvoiceHeaderStrings","PartyBlock","eyebrow","location","InvoiceHeader","resolvedStatusTone","invoiceNumber","from","to","issuedDate","dueDate","defaultInvoiceLineItemsStrings","wrapperGlass","ALIGN_CLASS","InvoiceCurrencyValue","buildDefaultColumns","buildDefaultFooterRows","taxRate","InvoiceLineItems","resolvedCurrency","currency","defaultCurrency","resolvedColumns","columns","resolvedFooterRows","footerRows","gridTemplate","c","defaultGrid","col","row","isSimpleText","OrderTimeline","PaymentTimeline","defaultInventorySectionStrings","STATUS_VARIANT","METRIC_TONE_CLASS","parseQuantity","parsed","getInventoryStatus","available","threshold","getMetricTone","metricId","SectionHeading","SummaryMetric","InventorySectionCard","isDisabled","disabled","readOnly","isTracked","requiresShipping","shippingFieldsDisabled","isSectionVisible","visibleSections","section","isFieldVisible","visibleFields","field","updateField","previousValue","next","handleGenerateSku","onGenerateSku","generatedSku","PackageCheck","onRestock","RefreshCw","errors","Barcode","checked","locationOptions","unit","countryOptions","nextTags","tagRecommendations","maxTags"],"sources":["../../src/components/blocks/commerce/upcoming-booking/upcoming-booking.tsx","../../src/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.tsx","../../src/components/blocks/commerce/loyalty-points/types.ts","../../src/components/blocks/commerce/loyalty-points/loyalty-points.tsx","../../src/components/blocks/commerce/format-signed-amount.ts","../../src/components/blocks/commerce/discount-stack/types.ts","../../src/components/blocks/commerce/discount-stack/discount-stack.tsx","../../src/components/blocks/commerce/shipment-tracking/types.ts","../../src/components/blocks/commerce/shipment-tracking/shipment-tracking.tsx","../../src/components/blocks/commerce/giftcard-card/types.ts","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-compact.tsx","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.tsx","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-dark.tsx","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-full.tsx","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.tsx","../../src/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.tsx","../../src/components/blocks/commerce/giftcard-card/giftcard-card.tsx","../../src/components/blocks/commerce/vendor-profile/types.ts","../../src/components/blocks/commerce/vendor-profile/vendor-profile.tsx","../../src/components/blocks/commerce/inventory-level/inventory-level.strings.ts","../../src/components/blocks/commerce/inventory-level/inventory-level.tsx","../../src/components/blocks/commerce/tax-breakdown/types.ts","../../src/components/blocks/commerce/tax-breakdown/tax-breakdown.tsx","../../src/components/blocks/commerce/subscription-summary/types.ts","../../src/components/blocks/commerce/subscription-summary/subscription-summary.tsx","../../src/components/blocks/commerce/refund-status/types.ts","../../src/components/blocks/commerce/refund-status/refund-status.tsx","../../src/components/blocks/commerce/address-card/types.ts","../../src/components/blocks/commerce/address-card/address-card.tsx","../../src/components/blocks/commerce/voucher-entry/types.ts","../../src/components/blocks/commerce/voucher-entry/voucher-entry.tsx","../../src/components/blocks/commerce/cart-summary/types.ts","../../src/components/blocks/commerce/cart-summary/cart-summary.tsx","../../src/components/blocks/commerce/coupon-input/types.ts","../../src/components/blocks/commerce/coupon-input/coupon-input.tsx","../../src/components/blocks/commerce/order-status/types.ts","../../src/components/blocks/commerce/order-status/order-status.tsx","../../src/components/blocks/commerce/payment-method/types.ts","../../src/components/blocks/commerce/payment-method/payment-method.tsx","../../src/components/blocks/commerce/seo-listing/seo-listing-score.ts","../../src/components/blocks/commerce/seo-listing/types.ts","../../src/components/blocks/commerce/seo-listing/seo-listing-card.tsx","../../src/components/blocks/commerce/invoice-mini/types.ts","../../src/components/blocks/commerce/invoice-mini/invoice-mini.tsx","../../src/components/blocks/commerce/invoice-header/types.ts","../../src/components/blocks/commerce/invoice-header/invoice-header.tsx","../../src/components/blocks/commerce/invoice-line-items/types.ts","../../src/components/blocks/commerce/invoice-line-items/invoice-line-items.tsx","../../src/components/blocks/commerce/order-timeline/order-timeline.tsx","../../src/components/blocks/commerce/payment-timeline/payment-timeline.tsx","../../src/components/blocks/commerce/inventory-section/types.ts","../../src/components/blocks/commerce/inventory-section/inventory-section.tsx"],"sourcesContent":["/**\n * UpcomingBookingRow — compact booking list. Each row shows a `DateBlock`\n * (weekday / day / month / time) on the left, service + customer in the\n * middle, and trailing amount. Locale and date-tone are configurable.\n *\n * Time is placed BELOW the date block by default (matches the date block\n * vertical rhythm); pass `timePlacement=\"inline-trailing\"` to use a\n * separate trailing time column.\n */\nimport { DateBlock } from '../../../base/display/date-block';\nimport { SecondaryValue, Value } from '../../../primitives';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\n\nimport type { UpcomingBookingRowProps } from './types';\n\nimport { cn } from '../../../../lib/utils';\n\nexport function UpcomingBookingRow({\n\tbookings,\n\tclassName,\n\tlocale,\n\t// `inverse` paints a near-black tile in the light theme, which reads as a\n\t// heavy foreign block in an otherwise soft admin list and does not match how\n\t// DateBlock renders anywhere else. Neutral by default; pass\n\t// `dateVariant=\"inverse\"` for the inverted treatment deliberately.\n\tdateTone = 'neutral',\n\tdateVariant = 'default',\n\ttimePlacement = 'below',\n}: UpcomingBookingRowProps) {\n\treturn (\n\t\t<ItemGroup className={cn('upcoming-booking--component w-full gap-space-md', className)}>\n\t\t\t{bookings.map((b, idx) => (\n\t\t\t\t\t<Item key={b.id ?? `${b.service}-${b.time}-${idx}`} className=\"items-center\">\n\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t<DateBlock\n\t\t\t\t\t\t\t\tdate={b.date}\n\t\t\t\t\t\t\t\ttime={timePlacement === 'below' ? b.time : undefined}\n\t\t\t\t\t\t\t\ttone={dateTone}\n\t\t\t\t\t\t\t\tvariant={dateVariant}\n\t\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\t\ttimePlacement=\"below\"\n\t\t\t\t\t\t\t\tlayout=\"stacked\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t<ItemContent className=\"min-w-0 sm:min-w-48\">\n\t\t\t\t\t\t\t<ItemTitle>{b.service}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{b.customer}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions className=\"ml-auto shrink-0 flex-wrap justify-end\">\n\t\t\t\t\t\t\t{timePlacement === 'inline-trailing' && (\n\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t\t{b.time}\n\t\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t{b.amount}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t))}\n\t\t</ItemGroup>\n\t);\n}\n\nUpcomingBookingRow.displayName = 'UpcomingBookingRow';\n","import type { ReactNode } from 'react';\n\nimport { CardPrimaryAction } from '../../../base/cards';\nimport { ContentBlock } from '../../../base/display';\nimport { Value } from '../../../primitives';\nimport { DisplayLabel } from '../../../typography';\nimport { cn } from '../../../../lib/utils';\n\nimport type { BookingCalendarEventCardProps } from './booking-calendar-event-card.types';\n\nfunction renderItemValue(value: ReactNode): ReactNode {\n\tif (\n\t\ttypeof value === 'string' ||\n\t\ttypeof value === 'number' ||\n\t\ttypeof value === 'bigint'\n\t) {\n\t\treturn <Value>{String(value)}</Value>;\n\t}\n\n\treturn value;\n}\n\n/**\n * Compact, card-free booking detail composition.\n *\n * All visible copy is supplied by props, so this component intentionally has\n * no strings file. Frame it with `Card` only when the page needs card\n * chrome.\n */\nexport function BookingCalendarEventCard({\n\ttitle,\n\tdescription,\n\tstatus,\n\titems,\n\tactionLabel,\n\tonAction,\n\tclassName,\n\tcontentClassName,\n}: BookingCalendarEventCardProps) {\n\treturn (\n\t\t<ContentBlock\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\theaderEnd={status}\n\t\t\theaderDivider\n\t\t\tclassName={cn('booking-calendar-event-card--component @container/booking-calendar-event-card', className)}\n\t\t\tcontentClassName={cn('grid gap-space-lg', contentClassName)}\n\t\t>\n\t\t\t<dl className=\"booking-calendar-event-card--details grid gap-space-lg @md/booking-calendar-event-card:grid-cols-2\">\n\t\t\t\t{items.map((item) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'grid min-w-0 gap-space-sm',\n\t\t\t\t\t\t\titem.fullWidth === true &&\n\t\t\t\t\t\t\t\t'@md/booking-calendar-event-card:col-span-2 rounded-radius bg-muted/45 p-surface-xs',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<dt><DisplayLabel>{item.label}</DisplayLabel></dt>\n\t\t\t\t\t\t<dd className=\"min-w-0\">{renderItemValue(item.value)}</dd>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</dl>\n\n\t\t\t<div className=\"booking-calendar-event-card--action flex justify-end border-t border-border/60 pt-space-lg\">\n\t\t\t\t<CardPrimaryAction\n\t\t\t\t\tfullWidth={false}\n\t\t\t\t\tclassName=\"w-full @md/booking-calendar-event-card:w-auto\"\n\t\t\t\t\tonClick={onAction}\n\t\t\t\t>\n\t\t\t\t\t{actionLabel}\n\t\t\t\t</CardPrimaryAction>\n\t\t\t</div>\n\t\t</ContentBlock>\n\t);\n}\n\nBookingCalendarEventCard.displayName = 'BookingCalendarEventCard';\n","import type { BadgeTone } from '../../../base/badge';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport interface LoyaltyHistoryEntry {\n\t/** Display label. */\n\tlabel: string;\n\tpoints: string;\n\tdate: string;\n\tpositive: boolean;\n}\n\nexport interface LoyaltyPointsStrings {\n\tbalanceLabel: string;\n\tpointsAvailable: string;\n\tredeem: string;\n\t/** Tier chip label used when `tier` is not passed. */\n\ttier: string;\n}\n\nexport const defaultLoyaltyPointsStrings: LoyaltyPointsStrings = {\n\tbalanceLabel: 'Loyalty Balance',\n\tpointsAvailable: 'points available',\n\tredeem: 'Redeem Points',\n\ttier: 'Gold Tier',\n};\n\nexport interface LoyaltyPointsProps {\n\t/** Points currently available. */\n\tbalance: number | string;\n\t/** Membership tier name. Defaults to `strings.tier`. */\n\ttier?: string;\n\t/** Badge tone for the tier chip. @default 'warning' */\n\ttierTone?: BadgeTone;\n\t/** Recent point movements. */\n\thistory?: LoyaltyHistoryEntry[];\n\tonRedeem?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<LoyaltyPointsStrings>;\n}\n","/**\n * LoyaltyPoints — current balance, tier badge, recent history rows\n * (label / date / signed-points), and a redemption CTA. Strings overridable\n * for i18n.\n */\nimport { Badge } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { ContentBlock } from '../../../base/display';\nimport { Number as NumberValue } from '../../../primitives';\nimport { Heading } from '../../../typography/heading';\nimport { Text } from '../../../typography/text';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemTitle,\n} from '../../../base/item';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\nimport { Gift, Trophy } from 'lucide-react';\n\nimport { defaultLoyaltyPointsStrings, type LoyaltyPointsProps } from './types';\n\nexport function LoyaltyPoints({\n\tbalance,\n\ttier,\n\ttierTone = 'warning',\n\thistory = [],\n\tonRedeem,\n\tclassName,\n\tstrings: stringsProp,\n}: LoyaltyPointsProps) {\n\tconst strings = useStrings(defaultLoyaltyPointsStrings, stringsProp);\n\treturn (\n\t\t<ContentBlock className={cn('loyalty-points--component w-full', className)}>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.balanceLabel}\n\t\t\t\tvalue={\n\t\t\t\t\t<Badge tone={tierTone}>\n\t\t\t\t\t\t<Trophy className=\"mr-1 inline size-icon-sm\" />\n\t\t\t\t\t\t{tier ?? strings.tier}\n\t\t\t\t\t</Badge>\n\t\t\t\t}\n\t\t\t/>\n\n\t\t\t<Heading tag=\"h3\" className=\"text-base tabular-nums tracking-tight\">\n\t\t\t\t{typeof balance === 'number' ? (\n\t\t\t\t\t<NumberValue value={balance} size=\"base\" weight=\"bold\" align=\"left\" />\n\t\t\t\t) : balance}\n\t\t\t</Heading>\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{strings.pointsAvailable}\n\t\t\t</Text>\n\n\t\t\t<Separator className=\"my-space-xl\" />\n\n\t\t\t<ItemGroup>\n\t\t\t\t{history.map((entry) => (\n\t\t\t\t\t<Item key={entry.date + entry.label} size=\"sm\">\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{entry.label}</ItemTitle>\n\t\t\t\t\t\t\t<ItemDescription clamp={1}>{entry.date}</ItemDescription>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'tabular-nums',\n\t\t\t\t\t\t\t\t\tentry.positive ? 'text-success' : 'text-destructive',\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{entry.points}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Button\n\t\t\t\ticon={Gift}\n\t\t\t\tfullWidth\n\t\t\t\tclassName=\"mt-space-xl\"\n\t\t\t\tonClick={onRedeem}\n\t\t\t>\n\t\t\t\t{strings.redeem}\n\t\t\t</Button>\n\t\t</ContentBlock>\n\t);\n}\n\nLoyaltyPoints.displayName = 'LoyaltyPoints';\n","/**\n * Negative-amount presentation shared across commerce surfaces.\n *\n * Consumers pass amounts as opaque preformatted strings, sometimes already\n * carrying a leading \"-\" and sometimes not. Rendering those raw meant the same\n * concept — money coming off a total — appeared with a HYPHEN-MINUS in one card\n * and a MINUS SIGN in the next.\n *\n * U+2212 is the correct glyph: it is drawn to the width of a digit and sits on\n * the maths axis, so it aligns in a tabular-figures column where the narrower,\n * lower hyphen does not.\n */\n\n/** U+2212 MINUS SIGN. */\nexport const MINUS_SIGN = '−';\n\n/** Drop any leading sign or whitespace a consumer already supplied. */\nexport function stripLeadingMinus(value: string): string {\n\treturn value.replace(/^[\\s−-]+/, '');\n}\n\n/**\n * Present an amount as a deduction: exactly one U+2212, whatever the caller\n * passed in. An empty or whitespace-only value is returned untouched so the\n * caller's own empty handling still applies.\n */\nexport function formatDeduction(value: string): string {\n\tif (!value.trim()) return value;\n\treturn `${MINUS_SIGN}${stripLeadingMinus(value)}`;\n}\n","import type { BadgeTone } from '../../../base/badge';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport interface Discount {\n\ttype: string;\n\t/** Display label. */\n\tlabel: string;\n\tamount: string;\n\t/** Chip rendered beside the label. */\n\tbadge: BadgeTone;\n}\n\nexport interface DiscountStackStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Formatted sum of every discount. */\n\ttotalSavings: string;\n}\n\nexport const defaultDiscountStackStrings: DiscountStackStrings = {\n\ttitle: 'Applied Discounts',\n\ttotalSavings: 'Total Savings',\n};\n\nexport interface DiscountStackPreviewProps {\n\t/** Discounts applied, in the order they stack. */\n\tdiscounts: Discount[];\n\t/** Formatted sum of every discount. */\n\ttotalSavings: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<DiscountStackStrings>;\n}\n","/**\n * DiscountStackPreview — list of applied discounts (type chip + label +\n * amount) with a total-savings summary line. Strings overridable for i18n.\n */\nimport { Badge } from '../../../base/badge';\nimport { ContentBlock } from '../../../base/display';\nimport { Heading, Text } from '../../../typography';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { Value } from '../../../primitives';\nimport { formatDeduction } from '../format-signed-amount';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { useStrings } from '../../../../lib/strings';\n\nimport { defaultDiscountStackStrings, type DiscountStackPreviewProps } from './types';\n\nimport { cn } from '../../../../lib/utils';\nexport function DiscountStackPreview({\n\tdiscounts,\n\ttotalSavings,\n\tclassName,\n\tstrings: stringsProp,\n}: DiscountStackPreviewProps) {\n\tconst strings = useStrings(defaultDiscountStackStrings, stringsProp);\n\treturn (\n\t\t<ContentBlock title={strings.title} className={cn('discount-stack--component w-full', className)}>\n\t\t\t<ItemGroup className=\"mt-space-xl\">\n\t\t\t\t{/* `type` is a chip label, not an identity — two \"SEASONAL\" rows\n\t\t\t\t collided on it and React dropped one. Index-suffixing keeps the\n\t\t\t\t key unique without inventing a required `id` prop. */}\n\t\t\t\t{discounts.map((d, index) => (\n\t\t\t\t\t<Item key={`${d.type}-${d.label}-${String(index)}`} size=\"sm\">\n\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t<Badge tone={d.badge} className=\"w-16 justify-center\">\n\t\t\t\t\t\t\t\t{d.type}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle bold={false}>{d.label}</ItemTitle>\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums text-success\">\n\t\t\t\t\t\t\t\t{formatDeduction(d.amount)}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ItemGroup>\n\n\t\t\t<Separator className=\"my-space-xl\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={<Text tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{strings.totalSavings}</Text>}\n\t\t\t\tvalue={\n\t\t\t\t\t<Heading tag=\"h4\" className=\"text-base tabular-nums tracking-tight text-success border-none pb-0\">\n\t\t\t\t\t\t{formatDeduction(totalSavings)}\n\t\t\t\t\t</Heading>\n\t\t\t\t}\n\t\t\t/>\n\t\t</ContentBlock>\n\t);\n}\n\nDiscountStackPreview.displayName = 'DiscountStackPreview';\n","import type { StringsProp } from '../../../../lib/strings';\n\n/**\n * Transit stage. Drives the status label (through `strings`) and the tone of\n * the status dot, so a delayed shipment can never be painted as a healthy one.\n */\nexport type ShipmentStatus = 'pending' | 'in_transit' | 'delivered' | 'delayed';\n\n/** Dot tone per stage. Semantic state tokens only — never a raw palette colour. */\nexport const shipmentStatusDotTone: Record<ShipmentStatus, string> = {\n\tpending: 'bg-muted-foreground',\n\tin_transit: 'bg-info',\n\tdelivered: 'bg-success',\n\tdelayed: 'bg-warning',\n};\n\nexport interface TrackingStep {\n\t/** Display label. */\n\tlabel: string;\n\tdone: boolean;\n}\n\nexport interface ShipmentDetail {\n\t/** Display label. */\n\tlabel: string;\n\tvalue: string;\n}\n\nexport interface ShipmentTrackingStrings {\n\t/** Accessible name for the surface. */\n\ttitle: string;\n\t/** Status label for each `ShipmentStatus`. */\n\tpending: string;\n\tin_transit: string;\n\tdelivered: string;\n\tdelayed: string;\n}\n\nexport const defaultShipmentTrackingStrings: ShipmentTrackingStrings = {\n\ttitle: 'Shipment tracking',\n\tpending: 'Pending',\n\tin_transit: 'In transit',\n\tdelivered: 'Delivered',\n\tdelayed: 'Delayed',\n};\n\nexport interface ShipmentTrackingProps {\n\t/** Carrier tracking reference. */\n\ttrackingNumber: string;\n\t/** Carrier handling the shipment. */\n\tcarrier?: string;\n\t/** Current transit stage. */\n\tstatus: ShipmentStatus;\n\t/** Tracking checkpoints, oldest first. */\n\tsteps: TrackingStep[];\n\t/** Label/value facts about the shipment. */\n\tdetails?: ShipmentDetail[];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<ShipmentTrackingStrings>;\n}\n","/**\n * ShipmentTracking — tracking number + carrier header, current status\n * with a status dot, horizontal step progress bar, and an optional details row\n * grid (e.g. weight, ETA, recipient). Step and detail labels are\n * consumer-supplied; the status label and its dot tone are both derived from\n * `status`, with the labels overridable through `strings`.\n */\nimport { Badge } from '../../../base/badge';\nimport { ContentBlock } from '../../../base/display';\nimport { Text } from '../../../typography/text';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { MonoValue } from '../../../primitives';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultShipmentTrackingStrings,\n\tshipmentStatusDotTone,\n\ttype ShipmentTrackingProps,\n} from './types';\n\nexport function ShipmentTracking({\n\ttrackingNumber,\n\tcarrier,\n\tstatus,\n\tsteps,\n\tdetails = [],\n\tclassName,\n\tstrings: stringsProp,\n}: ShipmentTrackingProps) {\n\tconst strings = useStrings(defaultShipmentTrackingStrings, stringsProp);\n\n\treturn (\n\t\t<ContentBlock\n\t\t\taria-label={strings.title}\n\t\t\tclassName={cn('shipment-tracking--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t<MonoValue className=\"text-muted-foreground tracking-wide\">\n\t\t\t\t\t{trackingNumber}\n\t\t\t\t</MonoValue>\n\t\t\t\t{!!carrier && <Badge tone=\"info\">{carrier}</Badge>}\n\t\t\t</div>\n\n\t\t\t<div className=\"shipment-tracking--status mt-space-xl flex items-center gap-space-sm\">\n\t\t\t\t<span\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'shipment-tracking--status-dot h-2 w-2 rounded-full',\n\t\t\t\t\t\tshipmentStatusDotTone[status],\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t<Text weight=\"semibold\">\n\t\t\t\t\t{strings[status]}\n\t\t\t\t</Text>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-5 flex items-center justify-between\">\n\t\t\t\t{steps.map((step, i) => (\n\t\t\t\t\t// The dot leads its column and the connector fills the remainder,\n\t\t\t\t\t// so the node sits at the column's left edge. The label has to\n\t\t\t\t\t// start there too — centring it in the column pushed every label\n\t\t\t\t\t// half a column right of the dot it names, which read as if the\n\t\t\t\t\t// labels belonged to the segments between nodes.\n\t\t\t\t\t<div key={step.label} className=\"flex flex-1 flex-col items-start gap-space-md\">\n\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t<div className={cn('size-icon-sm shrink-0 rounded-full', step.done ? 'bg-success' : 'bg-muted')} />\n\t\t\t\t\t\t\t{i < steps.length - 1 && (\n\t\t\t\t\t\t\t\t<div className={cn('h-0.5 flex-1', step.done ? 'bg-success' : 'bg-muted')} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"text-left leading-tight\">\n\t\t\t\t\t\t\t{step.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t{details.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator className=\"my-space-xl\" />\n\t\t\t\t\t<div className=\"space-y-space-md\">\n\t\t\t\t\t\t{details.map((detail) => (\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tkey={detail.label}\n\t\t\t\t\t\t\t\tlabel={detail.label}\n\t\t\t\t\t\t\t\tvalue={detail.value}\n\t\t\t\t\t\t\t\tvalueClassName=\"font-medium truncate max-w-[180px]\"\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)}\n\t\t</ContentBlock>\n\t);\n}\n\nShipmentTracking.displayName = 'ShipmentTracking';\n","import type { StringsProp } from '../../../../lib/strings';\n\n/**\n * The card's content, shared by all five presentations. Every field is\n * pre-formatted display copy — this family renders what it is handed and does\n * no currency or date formatting of its own, so localisation stays with the\n * consumer.\n */\nexport interface GiftcardData {\n\t/** Redemption code, shown in a monospace run. */\n\tcode: string;\n\t/** Formatted face value, e.g. `\"$50.00\"`. */\n\tamount: string;\n\t/** Formatted balance left. Omit for a card that shows only its face value. */\n\tremainingAmount?: string;\n\t/** Currency label shown beside the amount when the formatted values omit it. */\n\tcurrency?: string;\n\t/** Lifecycle state, driving the status chip's tone. */\n\tstatus: 'active' | 'redeemed' | 'expired' | 'disabled';\n\t/** Who the card is for. */\n\trecipientName?: string;\n\t/** Who sent it. */\n\tsenderName?: string;\n\t/** Personal note from the sender. */\n\tmessage?: string;\n\t/** Formatted expiry date. */\n\texpiresAt?: string;\n\t/** Formatted issue date. */\n\tcreatedAt?: string;\n\t/** Design name shown as the card's template label. */\n\ttemplate?: string;\n\t/** Fired by the card's view action. Omit to render the card without it. */\n\tonView?: () => void;\n}\n\n/** Background gradient for the illustrated and full presentations. */\nexport type GradientVariant = 'purple' | 'green' | 'warm';\n/** Decorative overlay drawn on top of the gradient. */\nexport type PatternVariant = 'none' | 'circles' | 'waves';\n/** Accent used for the minimal presentation's rule and highlights. */\nexport type AccentColor = 'green' | 'purple' | 'warm';\n/** Header band colour for the compact presentation. */\nexport type HeaderColor = 'green' | 'blue' | 'amber';\n\nexport type GiftcardStatus = GiftcardData['status'];\n\n/**\n * Localised labels for giftcard cards. Covers status chips, the recurring\n * field labels rendered by all five partials (full / dark / illustrated /\n * minimal / compact), and the inline button labels.\n *\n * Override per-instance via `strings`.\n */\nexport interface GiftcardStrings {\n\tstatus: Record<GiftcardStatus, string>;\n\tgiftCard: string;\n\tbalance: string;\n\tpersonalMessage: string;\n\tto: string;\n\tfrom: string;\n\texpires: string;\n\trecipient: string;\n\tviewDetails: string;\n\tcopyCode: string;\n\t/** Successful code-copy feedback. */\n\tcopiedCode?: string;\n\t/** Failed code-copy feedback and retry affordance. */\n\tcopyFailed?: string;\n\t/** Pending code-copy label. */\n\tcopyingCode?: string;\n}\n\nexport const defaultGiftcardStrings: Required<GiftcardStrings> = {\n\tstatus: {\n\t\tactive: 'Active',\n\t\tredeemed: 'Redeemed',\n\t\texpired: 'Expired',\n\t\tdisabled: 'Disabled',\n\t},\n\tgiftCard: 'Gift Card',\n\tbalance: 'Balance',\n\tpersonalMessage: 'Personal Message',\n\tto: 'To',\n\tfrom: 'From',\n\texpires: 'Expires',\n\trecipient: 'Recipient',\n\tviewDetails: 'View Details',\n\tcopyCode: 'Copy code',\n\tcopiedCode: 'Code copied',\n\tcopyFailed: 'Could not copy code. Try again.',\n\tcopyingCode: 'Copying code…',\n};\n\nexport interface GiftcardCommonProps {\n\t/** Override default English giftcard strings. */\n\tstrings?: StringsProp<GiftcardStrings>;\n}\n\nexport const giftcardStatusTone: Record<\n\tGiftcardStatus,\n\t'success' | 'secondary' | 'destructive' | 'warning'\n> = {\n\tactive: 'success',\n\tredeemed: 'secondary',\n\texpired: 'destructive',\n\tdisabled: 'warning',\n};\n\n// Reading regions stay inverse; preset colors belong to their decorative strip.\nconst inverseGradient = 'bg-inverse-background from-inverse-background via-inverse-surface to-inverse-background';\n\nexport const gradientMap: Record<GradientVariant, { card: string; strip: string }> = {\n\tpurple: {\n\t\tcard: inverseGradient,\n\t\tstrip: 'from-primary via-primary/90 to-info',\n\t},\n\tgreen: {\n\t\tcard: inverseGradient,\n\t\tstrip: 'from-success via-info to-success',\n\t},\n\twarm: {\n\t\tcard: inverseGradient,\n\t\tstrip: 'from-warning via-warning/90 to-destructive',\n\t},\n};\n\nexport const compactGradientMap: Record<GradientVariant, string> = {\n\tpurple: 'from-primary to-info',\n\tgreen: 'from-success to-info',\n\twarm: 'from-warning to-destructive',\n};\n\nexport const accentColorMap: Record<AccentColor, { line: string; iconBg: string }> = {\n\tgreen: { line: 'bg-success', iconBg: 'bg-success/15 text-success' },\n\tpurple: { line: 'bg-primary', iconBg: 'bg-primary/15 text-primary-accent' },\n\twarm: { line: 'bg-warning', iconBg: 'bg-warning/15 text-warning-accent' },\n};\n\nexport const headerGradientMap: Record<HeaderColor, string> = {\n\tgreen: 'from-success to-info',\n\tblue: 'from-info to-primary',\n\tamber: 'from-warning to-destructive',\n};\n\n","/**\n * GiftcardCompact — single-row compact layout. Square gradient gift icon on\n * the left, code + recipient in the middle, amount + status badge on the\n * right. Use for inline lists / tables of giftcards. Strings overridable.\n */\nimport { Badge } from '../../../../base/badge';\nimport { MonoValue, Value } from '../../../../primitives';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '../../../../base/item';\nimport { Stack } from '../../../../base/structure';\nimport { useStrings } from '../../../../../lib/strings';\nimport { cn } from '../../../../../lib/utils';\nimport { Gift } from 'lucide-react';\nimport {\n\ttype GiftcardCommonProps,\n\ttype GiftcardData,\n\ttype GradientVariant,\n\tcompactGradientMap,\n\tdefaultGiftcardStrings,\n\tgiftcardStatusTone,\n} from '../types';\n\nexport function GiftcardCompact({\n\tcode,\n\tamount,\n\tremainingAmount,\n\tstatus,\n\trecipientName,\n\tgradient = 'purple',\n\tclassName,\n\tstrings: stringsProp,\n}: GiftcardData & GiftcardCommonProps & {\n\t/** Background gradient for the leading block. */\n\tgradient?: GradientVariant;\n\t/** Merged onto the row root. */\n\tclassName?: string;\n}) {\n\tconst strings = useStrings(defaultGiftcardStrings, stringsProp);\n\tconst statusLabel = strings.status[status];\n\tconst statusTone = giftcardStatusTone[status];\n\tconst isPartiallyUsed = !!remainingAmount && remainingAmount !== amount;\n\tconst displayAmount = isPartiallyUsed ? remainingAmount : amount;\n\n\treturn (\n\t\t<Item\n\t\t\tsize=\"sm\"\n\t\t\tvariant=\"outline\"\n\t\t\tpadding=\"default\"\n\t\t\tclassName={cn(\n\t\t\t\t'giftcard-card--component giftcard-compact--component flex-nowrap gap-x-2.5 shadow-sm transition-colors duration-150 hover:border-border',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<ItemMedia variant=\"image\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'flex size-full items-center justify-center bg-gradient-to-br p-space-2xs',\n\t\t\t\t\t\tcompactGradientMap[gradient],\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<span className=\"flex size-full items-center justify-center rounded-inner bg-inverse-background\"><Gift className=\"h-4 w-4 text-inverse-foreground\" /></span>\n\t\t\t\t</div>\n\t\t\t</ItemMedia>\n\n\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t<ItemTitle className=\"w-full max-w-full truncate whitespace-nowrap\">\n\t\t\t\t\t<MonoValue>{code}</MonoValue>\n\t\t\t\t</ItemTitle>\n\t\t\t\t{!!recipientName && <ItemDescription clamp={1}>{recipientName}</ItemDescription>}\n\t\t\t</ItemContent>\n\n\t\t\t<ItemActions className=\"shrink-0\">\n\t\t\t\t<Stack gap=\"2xs\" align=\"end\" className=\"shrink-0\">\n\t\t\t\t\t<div className=\"flex items-baseline gap-space-xs\">\n\t\t\t\t\t\t<Value weight=\"bold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{displayAmount}\n\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t{!!isPartiallyUsed && (\n\t\t\t\t\t\t\t<Value size=\"xs\" className=\"line-through tabular-nums text-muted-foreground\">\n\t\t\t\t\t\t\t\t{amount}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<Badge tone={statusTone} size=\"sm\">{statusLabel}</Badge>\n\t\t\t\t</Stack>\n\t\t\t</ItemActions>\n\t\t</Item>\n\t);\n}\n\nGiftcardCompact.displayName = 'GiftcardCompact';\n","import { useEffect, useRef, useState } from 'react';\nimport { Check, Copy, Loader2, X } from 'lucide-react';\nimport { Button } from '../../../../base/buttons';\nimport { Text } from '../../../../typography';\nimport { cn } from '../../../../../lib/utils';\nimport { defaultGiftcardStrings, type GiftcardStrings } from '../types';\nimport { useStrings } from '../../../../../lib/strings';\n\ntype CopyState = 'idle' | 'pending' | 'copied' | 'failed';\n\n/** Owns the four giftcard code actions without changing their display strips. */\nexport function GiftcardCopyButton({ code, strings, inverse = false, className }: {\n code: string;\n strings: Pick<GiftcardStrings, 'copyCode' | 'copiedCode' | 'copyFailed' | 'copyingCode'>;\n /** Explicit inverse reading surface, independent of the surrounding page theme. */\n inverse?: boolean;\n className?: string;\n}) {\n const copyStrings = useStrings<Required<GiftcardStrings>>(defaultGiftcardStrings, strings);\n const generation = useRef(0);\n const [result, setResult] = useState<{ code: string; state: CopyState }>({code, state: 'idle'});\n const state = result.code === code ? result.state : 'idle';\n useEffect(() => {\n generation.current++;\n setResult(previous => previous.code === code ? previous : {code, state: 'idle'});\n return () => { generation.current++; };\n }, [code]);\n const label = state === 'copied' ? copyStrings.copiedCode : state === 'failed' ? copyStrings.copyFailed : state === 'pending' ? copyStrings.copyingCode : copyStrings.copyCode;\n const Icon = state === 'copied' ? Check : state === 'failed' ? X : state === 'pending' ? Loader2 : Copy;\n const copy = async () => {\n if (!code || state === 'pending') return;\n const request = generation.current;\n setResult({code, state: 'pending'});\n try {\n await navigator.clipboard.writeText(code);\n if (generation.current === request) setResult({code, state: 'copied'});\n } catch {\n if (generation.current === request) setResult({code, state: 'failed'});\n }\n };\n return <>\n <Button\n type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" iconOnly\n disabled={!code || state === 'pending'} aria-busy={state === 'pending'}\n aria-label={label} withTooltip={label}\n className={cn(\n 'giftcard-copy--component', className,\n // Match the base ghost recipe's disabled-aware selector so inverse chrome\n // owns the hovered fill rather than the page's light/dark accent.\n inverse && 'text-inverse-foreground [&:not([aria-disabled=true]):not(:disabled)]:hover:bg-inverse-surface [&:not([aria-disabled=true]):not(:disabled)]:hover:text-inverse-foreground focus-visible:bg-inverse-surface focus-visible:ring-offset-inverse-background',\n )}\n onClick={() => void copy()}\n >\n <Icon aria-hidden className={cn('size-icon-sm', state === 'pending' && 'animate-spin')} />\n </Button>\n {(state === 'copied' || state === 'failed') && <Text tag=\"span\" role=\"status\" className=\"sr-only\">{label}</Text>}\n </>;\n}\n","import { GiftcardCopyButton } from './giftcard-copy-button';\n/**\n * GiftcardCardDark — premium dark variant. Header with chart-2 gift icon,\n * status chip, balance + strike-through line, code strip, metadata rows\n * (recipient / expires), and an outline call-to-action footer. Strings\n * overridable for i18n.\n */\nimport { Heading } from '../../../../typography/heading';\nimport { Text } from '../../../../typography/text';\nimport { Badge } from '../../../../base/badge';\nimport { Button } from '../../../../base/buttons';\nimport { MetadataList, type MetadataListItem } from '../../../data-display/metadata';\nimport { MonoValue, Value } from '../../../../primitives';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemMedia,\n\tItemTitle,\n} from '../../../../base/item';\nimport { useStrings } from '../../../../../lib/strings';\nimport { Stack } from '../../../../base/structure';\nimport { cn } from '../../../../../lib/utils';\nimport { Gift, Eye } from 'lucide-react';\nimport {\n\ttype GiftcardCommonProps,\n\ttype GiftcardData,\n\tdefaultGiftcardStrings,\n\tgiftcardStatusTone,\n} from '../types';\n\nexport function GiftcardCardDark({\n\tcode,\n\tamount,\n\tremainingAmount,\n\tstatus,\n\trecipientName,\n\texpiresAt,\n\tonView,\n\tclassName,\n\tstrings: stringsProp,\n}: GiftcardData & GiftcardCommonProps & { className?: string }) {\n\tconst strings = useStrings(defaultGiftcardStrings, stringsProp);\n\tconst statusLabel = strings.status[status];\n\tconst statusTone = giftcardStatusTone[status];\n\tconst isPartiallyUsed = !!remainingAmount && remainingAmount !== amount;\n\tconst displayAmount = isPartiallyUsed ? remainingAmount : amount;\n\tconst metadataItems: MetadataListItem[] = [\n\t\t...(recipientName ? [{ label: strings.recipient, value: recipientName }] : []),\n\t\t...(expiresAt ? [{ label: strings.expires, value: expiresAt }] : []),\n\t];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'giftcard-card--component giftcard-dark--component dark w-full max-w-sm overflow-hidden rounded-radius bg-card text-card-foreground shadow-sm ring-1 ring-border',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Item size=\"sm\" className=\"p-surface\">\n\t\t\t\t<ItemMedia>\n\t\t\t\t\t<div className=\"flex h-8 w-8 items-center justify-center rounded-full bg-warning/15\">\n\t\t\t\t\t\t<Gift className=\"h-4 w-4 text-warning\" />\n\t\t\t\t\t</div>\n\t\t\t\t</ItemMedia>\n\t\t\t\t<ItemContent>\n\t\t\t\t\t<ItemTitle bold={false}>\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"text-inverse-muted\">\n\t\t\t\t\t\t\t{strings.giftCard}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</ItemTitle>\n\t\t\t\t</ItemContent>\n\t\t\t\t<ItemActions>\n\t\t\t\t\t<Badge tone={statusTone}>{statusLabel}</Badge>\n\t\t\t\t</ItemActions>\n\t\t\t</Item>\n\n\t\t\t{/* Amount */}\n\t\t\t<div className=\"px-surface pb-surface-xs pt-space-sm\">\n\t\t\t\t<div className=\"flex items-baseline gap-space-md\">\n\t\t\t\t\t<Heading tag=\"h2\" className=\"border-none pb-0 text-base tabular-nums text-inverse-foreground\">\n\t\t\t\t\t\t{displayAmount}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!isPartiallyUsed && (\n\t\t\t\t\t\t<Value className=\"line-through tabular-nums text-inverse-disabled\">\n\t\t\t\t\t\t\t{amount}\n\t\t\t\t\t\t</Value>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Code strip */}\n\t\t\t<div className=\"mx-space-xl rounded-radius-md border border-inverse-border bg-inverse-surface p-surface-xs\">\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\">\n\t\t\t\t<MonoValue className=\"flex-1 tracking-[0.15em] text-inverse-foreground\">\n\t\t\t\t\t{code}\n\t\t\t\t</MonoValue>\n\t\t\t\t<GiftcardCopyButton code={code} strings={strings} inverse />\n\t\t\t</Stack>\n\t\t\t</div>\n\n\t\t\t<MetadataList\n\t\t\t\titems={metadataItems}\n\t\t\t\tcolumns={1}\n\t\t\t\tclassName=\"px-surface pb-surface-xs pt-surface-xs [&_.metadata-list--label]:text-inverse-muted [&_.metadata-list--value]:text-inverse-foreground\"\n\t\t\t/>\n\n\t\t\t{/* Footer — inverse button on the dark surface so the label\n\t\t\t always reads without raw palette overrides. */}\n\t\t\t{!!onView && (\n\t\t\t\t<div className=\"px-surface pb-surface pt-space-sm\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttone=\"neutral\"\n\t\t\t\t\t\tbuttonStyle=\"solid\"\n\t\t\t\t\t\ticon={Eye}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tonClick={onView}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.viewDetails}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nGiftcardCardDark.displayName = 'GiftcardCardDark';\n","import { GiftcardCopyButton } from './giftcard-copy-button';\n/**\n * GiftcardCard (full) — premium gradient layout with optional\n * pattern overlay (circles / waves), header status chip, balance / strike-\n * through line, copyable code strip, personal message block, and metadata\n * grid (To / From / Expires). Strings overridable for i18n.\n */\nimport { DisplayLabel } from '../../../../typography/display-label';\nimport { Text } from '../../../../typography/text';\nimport { Heading } from '../../../../typography/heading';\nimport { Badge } from '../../../../base/badge';\nimport { Button } from '../../../../base/buttons';\nimport { Stack } from '../../../../base/structure';\nimport { MetadataList, type MetadataListItem } from '../../../data-display/metadata';\nimport { MonoValue, Value } from '../../../../primitives';\nimport { useStrings } from '../../../../../lib/strings';\nimport { cn } from '../../../../../lib/utils';\nimport {\n\tGift,\n\tEye,\n} from 'lucide-react';\nimport {\n\ttype GiftcardCommonProps,\n\ttype GiftcardData,\n\ttype GradientVariant,\n\ttype PatternVariant,\n\tdefaultGiftcardStrings,\n\tgiftcardStatusTone,\n\tgradientMap,\n} from '../types';\n\nexport function GiftcardFull({\n\tcode,\n\tamount,\n\tremainingAmount,\n\tstatus,\n\trecipientName,\n\tsenderName,\n\tmessage,\n\texpiresAt,\n\tcreatedAt: _createdAt,\n\ttemplate: _template,\n\tonView,\n\tgradient = 'purple',\n\tpattern = 'none',\n\tclassName,\n\tstrings: stringsProp,\n}: GiftcardData &\n\tGiftcardCommonProps & {\n\t\t/** Background gradient. */\n\t\tgradient?: GradientVariant;\n\t\t/** Decorative overlay on the gradient. */\n\t\tpattern?: PatternVariant;\n\t\tclassName?: string;\n\t}) {\n\tconst strings = useStrings(defaultGiftcardStrings, stringsProp);\n\tconst statusLabel = strings.status[status];\n\tconst statusTone = giftcardStatusTone[status];\n\tconst isPartiallyUsed = !!remainingAmount && remainingAmount !== amount;\n\tconst displayAmount = isPartiallyUsed ? remainingAmount : amount;\n\tconst metadataItems: MetadataListItem[] = [\n\t\t...(recipientName ? [{ label: strings.to, value: recipientName }] : []),\n\t\t...(senderName ? [{ label: strings.from, value: senderName }] : []),\n\t\t...(expiresAt ? [{ label: strings.expires, value: expiresAt }] : []),\n\t];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'giftcard-card--component w-full max-w-sm transition-shadow duration-300 ease-out',\n\t\t\t\t'hover:shadow-md hover:shadow-foreground/10',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{/* Gift card header */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative overflow-hidden rounded-t-radius bg-gradient-to-br p-surface',\n\t\t\t\t\tgradientMap[gradient].card,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div aria-hidden className={cn('absolute inset-x-0 top-0 h-1 bg-gradient-to-r', gradientMap[gradient].strip)} />\n\t\t\t\t{/* Pattern: circles */}\n\t\t\t\t{pattern === 'circles' && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className=\"absolute -top-8 -right-8 h-32 w-32 rounded-full bg-inverse-decoration\" aria-hidden=\"true\" />\n\t\t\t\t\t\t<div className=\"absolute -bottom-4 -left-4 h-20 w-20 rounded-full bg-inverse-decoration\" aria-hidden=\"true\" />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t{/* Pattern: waves */}\n\t\t\t\t{pattern === 'waves' && (\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclassName=\"absolute inset-0 h-full w-full opacity-5\"\n\t\t\t\t\t\tviewBox=\"0 0 400 200\"\n\t\t\t\t\t\tpreserveAspectRatio=\"none\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M0 80 C100 20, 200 140, 400 60 L400 200 L0 200 Z\" className=\"fill-inverse-foreground\" />\n\t\t\t\t\t\t<path d=\"M0 120 C120 60, 280 180, 400 100 L400 200 L0 200 Z\" className=\"fill-inverse-foreground\" />\n\t\t\t\t\t</svg>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"absolute top-4 right-4 z-20\">\n\t\t\t\t\t<Badge\n\t\t\t\t\t\ttone={statusTone}\n\t\t\t\t\t\tinline\n\t\t\t\t\t\tdot\n\t\t\t\t\t\tclassName=\"border border-inverse-border bg-inverse-background text-inverse-foreground shadow-sm backdrop-blur-md\"\n\t\t\t\t\t\tdata-status={statusTone}\n\t\t\t\t\t>\n\t\t\t\t\t\t{statusLabel}\n\t\t\t\t\t</Badge>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative z-10\">\n\t\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t\t<Gift className=\"h-5 w-5 text-inverse-muted\" />\n\t\t\t\t\t\t<Text weight=\"medium\" className=\"text-inverse-muted\">{strings.giftCard}</Text>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"mt-8 mb-5\">\n\t\t\t\t\t\t<DisplayLabel tone=\"inverse\">{strings.balance}</DisplayLabel>\n\t\t\t\t\t\t<div className=\"flex items-baseline gap-2.5 mt-1\">\n\t\t\t\t\t\t\t<Heading tag=\"h2\" className=\"text-base border-none pb-0 text-inverse-foreground tabular-nums drop-shadow-sm\">\n\t\t\t\t\t\t\t\t{displayAmount}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t{!!isPartiallyUsed && (\n\t\t\t\t\t\t\t\t<Value className=\"line-through tabular-nums text-inverse-disabled\">{amount}</Value>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{/* Code strip — premium feel */}\n\t\t\t\t\t<div className={cn(\n\t\t\t\t\t\t\t'giftcard-full--code',\n\t\t\t\t\t\t\t'rounded-radius p-surface-xs',\n\t\t\t\t\t\t\t'bg-inverse-surface backdrop-blur-sm',\n\t\t\t\t\t\t\t'border border-inverse-border',\n\t\t\t\t\t\t\t'shadow-sm',\n\t\t\t\t\t\t)}>\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\">\n\t\t\t\t\t\t<MonoValue weight=\"semibold\" className=\"flex-1 tracking-[0.2em] text-inverse-foreground\">\n\t\t\t\t\t\t\t{code}\n\t\t\t\t\t\t</MonoValue>\n\t\t\t\t\t\t<GiftcardCopyButton code={code} strings={strings} inverse />\n\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Details section — structured metadata grid */}\n\t\t\t\t<div className=\"rounded-b-radius bg-card p-surface shadow-sm border border-t-0 border-border/50\">\n\t\t\t\t<Stack gap=\"xl\">\n\t\t\t\t{!!message && (\n\t\t\t\t\t<div className=\"giftcard-full--message rounded-radius bg-muted/50 p-surface-xs border border-border/30\">\n\t\t\t\t\t\t<DisplayLabel className=\"mb-1\">\n\t\t\t\t\t\t\t{strings.personalMessage}\n\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"italic leading-relaxed\">\n\t\t\t\t\t\t\t&ldquo;{message}&rdquo;\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<MetadataList\n\t\t\t\t\titems={metadataItems}\n\t\t\t\t\tcolumns={{ base: 1, sm: 2 }}\n\t\t\t\t/>\n\n\t\t\t\t{!!onView && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\ticon={Eye}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tonClick={onView}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.viewDetails}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nGiftcardFull.displayName = 'GiftcardFull';\n","import { GiftcardCopyButton } from './giftcard-copy-button';\n/**\n * GiftcardCardIllustrated — gift-card surface with a compact illustrated\n * header, balance + status row, code strip, details, and a footer action.\n * Strings are overridable for i18n.\n */\nimport { DisplayLabel } from '../../../../typography/display-label';\nimport { Text } from '../../../../typography/text';\nimport { Heading } from '../../../../typography/heading';\nimport { Badge } from '../../../../base/badge';\nimport { Button } from '../../../../base/buttons';\nimport { IconBadge } from '../../../../base/display';\nimport { Stack } from '../../../../base/structure';\nimport { MetadataList, type MetadataListItem } from '../../../data-display/metadata';\nimport { MonoValue, Value } from '../../../../primitives';\nimport { useStrings } from '../../../../../lib/strings';\nimport { cn } from '../../../../../lib/utils';\nimport { Gift, Eye } from 'lucide-react';\nimport {\n\ttype GiftcardCommonProps,\n\ttype GiftcardData,\n\ttype HeaderColor,\n\tdefaultGiftcardStrings,\n\tgiftcardStatusTone,\n\theaderGradientMap,\n} from '../types';\n\nexport function GiftcardCardIllustrated({\n\tcode,\n\tamount,\n\tremainingAmount,\n\tstatus,\n\trecipientName,\n\texpiresAt,\n\tonView,\n\theaderColor = 'green',\n\tclassName,\n\tstrings: stringsProp,\n}: GiftcardData & GiftcardCommonProps & {\n\t/** Colour of the header band. */\n\theaderColor?: HeaderColor;\n\t/** Merged onto the card root. */\n\tclassName?: string;\n}) {\n\tconst strings = useStrings(defaultGiftcardStrings, stringsProp);\n\tconst statusLabel = strings.status[status];\n\tconst statusTone = giftcardStatusTone[status];\n\tconst isPartiallyUsed = !!remainingAmount && remainingAmount !== amount;\n\tconst displayAmount = isPartiallyUsed ? remainingAmount : amount;\n\tconst metadataItems: MetadataListItem[] = [\n\t\t...(recipientName ? [{ label: strings.recipient, value: recipientName }] : []),\n\t\t...(expiresAt ? [{ label: strings.expires, value: expiresAt }] : []),\n\t];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'giftcard-card--component giftcard-illustrated--component w-full max-w-sm overflow-hidden rounded-radius border border-border bg-card shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"relative flex h-16 items-center justify-between overflow-hidden bg-inverse-background bg-gradient-to-br from-inverse-background via-inverse-surface to-inverse-background px-surface\">\n\t\t\t\t<div aria-hidden className={cn('absolute inset-x-0 top-0 h-1 bg-gradient-to-r', headerGradientMap[headerColor])} />\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"absolute inset-0 opacity-80\"\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\tbackgroundImage:\n\t\t\t\t\t\t\t'repeating-linear-gradient(45deg, transparent 0 10px, color-mix(in oklch, var(--inverse-foreground) 3%, transparent) 10px 20px)',\n\t\t\t\t\t}}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t\t<IconBadge\n\t\t\t\t\ticon={Gift}\n\t\t\t\t\tsize=\"md\"\n\t\t\t\t\tshape=\"square\"\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'relative rounded-radius-md bg-inverse-surface text-inverse-foreground ring-1 ring-inverse-border',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t<DisplayLabel tone=\"inverse\" className=\"relative\">\n\t\t\t\t\t{strings.giftCard}\n\t\t\t\t</DisplayLabel>\n\t\t\t</div>\n\n\t\t\t\t<div className=\"p-surface\">\n\t\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<div className=\"flex items-start justify-between\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<div className=\"flex items-baseline gap-space-md\">\n\t\t\t\t\t\t\t<Heading tag=\"h2\" className=\"border-none pb-0 text-base tabular-nums\">\n\t\t\t\t\t\t\t\t{displayAmount}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t{!!isPartiallyUsed && (\n\t\t\t\t\t\t\t\t<Value className=\"line-through tabular-nums text-muted-foreground\">\n\t\t\t\t\t\t\t\t\t{amount}\n\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">\n\t\t\t\t\t\t\t{strings.balance}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Badge tone={statusTone}>{statusLabel}</Badge>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"giftcard-illustrated--code rounded-radius-md border border-border/50 bg-muted/40 p-surface-xs\">\n\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"md\">\n\t\t\t\t\t<MonoValue className=\"flex-1 tracking-[0.15em]\">\n\t\t\t\t\t\t{code}\n\t\t\t\t\t</MonoValue>\n\t\t\t\t\t<GiftcardCopyButton code={code} strings={strings} />\n\t\t\t\t\t</Stack>\n\t\t\t\t</div>\n\n\t\t\t\t<MetadataList items={metadataItems} columns={2} />\n\n\t\t\t\t{!!onView && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\ticon={Eye}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tonClick={onView}\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.viewDetails}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nGiftcardCardIllustrated.displayName = 'GiftcardCardIllustrated';\n","import { GiftcardCopyButton } from './giftcard-copy-button';\n/**\n * GiftcardCardMinimal — clean minimal layout. A small accent line (driven by\n * `color`) sits above the header icon + label, balance, code strip, and\n * metadata rows. Footer \"View details\" link uses an arrow affordance.\n * Strings overridable for i18n.\n */\nimport { Heading } from '../../../../typography/heading';\nimport { Text } from '../../../../typography/text';\nimport { Badge } from '../../../../base/badge';\nimport { Button } from '../../../../base/buttons';\nimport { MetadataList, type MetadataListItem } from '../../../data-display/metadata';\nimport { MonoValue, Value } from '../../../../primitives';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemMedia,\n\tItemTitle,\n} from '../../../../base/item';\nimport { useStrings } from '../../../../../lib/strings';\nimport { Stack } from '../../../../base/structure';\nimport { cn } from '../../../../../lib/utils';\nimport { Gift, ArrowRight } from 'lucide-react';\nimport {\n\ttype AccentColor,\n\ttype GiftcardCommonProps,\n\ttype GiftcardData,\n\taccentColorMap,\n\tdefaultGiftcardStrings,\n\tgiftcardStatusTone,\n} from '../types';\n\nexport function GiftcardCardMinimal({\n\tcode,\n\tamount,\n\tremainingAmount,\n\tstatus,\n\trecipientName,\n\texpiresAt,\n\tonView,\n\tcolor = 'green',\n\tclassName,\n\tstrings: stringsProp,\n}: GiftcardData & GiftcardCommonProps & {\n\t/** Accent for the rule and highlights. */\n\tcolor?: AccentColor;\n\t/** Merged onto the card root. */\n\tclassName?: string;\n}) {\n\tconst strings = useStrings(defaultGiftcardStrings, stringsProp);\n\tconst statusLabel = strings.status[status];\n\tconst statusTone = giftcardStatusTone[status];\n\tconst isPartiallyUsed = !!remainingAmount && remainingAmount !== amount;\n\tconst displayAmount = isPartiallyUsed ? remainingAmount : amount;\n\tconst accent = accentColorMap[color];\n\tconst metadataItems: MetadataListItem[] = [\n\t\t...(recipientName ? [{ label: strings.recipient, value: recipientName }] : []),\n\t\t...(expiresAt ? [{ label: strings.expires, value: expiresAt }] : []),\n\t];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'giftcard-card--component giftcard-minimal--component w-full max-w-sm overflow-hidden rounded-radius border border-border bg-card shadow-sm',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div className={cn('mx-space-xl mt-space-lg h-1 w-12 rounded-radius-sm', accent.line)} />\n\n\t\t\t<Item size=\"sm\" className=\"flex-nowrap items-center p-surface-xs\">\n\t\t\t\t<ItemMedia>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex h-7 w-7 items-center justify-center rounded-full',\n\t\t\t\t\t\t\taccent.iconBg,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Gift className=\"h-3.5 w-3.5\" />\n\t\t\t\t\t</div>\n\t\t\t\t</ItemMedia>\n\t\t\t\t<ItemContent>\n\t\t\t\t\t<ItemTitle bold={false}>\n\t\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\">\n\t\t\t\t\t\t\t{strings.giftCard}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</ItemTitle>\n\t\t\t\t</ItemContent>\n\t\t\t\t<ItemActions className=\"shrink-0\">\n\t\t\t\t\t<Badge tone={statusTone} size=\"sm\">{statusLabel}</Badge>\n\t\t\t\t</ItemActions>\n\t\t\t</Item>\n\n\t\t\t<div className=\"px-surface pb-surface-xs pt-0\">\n\t\t\t\t<div className=\"flex items-baseline gap-space-md\">\n\t\t\t\t\t<Heading tag=\"h2\" className=\"border-none pb-0 text-base tabular-nums\">\n\t\t\t\t\t\t{displayAmount}\n\t\t\t\t\t</Heading>\n\t\t\t\t\t{!!isPartiallyUsed && (\n\t\t\t\t\t\t<Value className=\"line-through tabular-nums text-muted-foreground\">\n\t\t\t\t\t\t\t{amount}\n\t\t\t\t\t\t</Value>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div className=\"giftcard-minimal--code mx-space-xl rounded-radius-md border border-border/30 bg-muted/50 p-surface-xs\">\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"sm\">\n\t\t\t\t<MonoValue className=\"flex-1 tracking-[0.15em]\">\n\t\t\t\t\t{code}\n\t\t\t\t</MonoValue>\n\t\t\t\t<GiftcardCopyButton code={code} strings={strings} className=\"shrink-0\" />\n\t\t\t</Stack>\n\t\t\t</div>\n\n\t\t\t<MetadataList\n\t\t\t\titems={metadataItems}\n\t\t\t\tcolumns={1}\n\t\t\t\tdensity=\"compact\"\n\t\t\t\tclassName=\"px-surface pb-space-sm pt-space-md [&_.metadata-list--grid]:gap-space-sm\"\n\t\t\t/>\n\n\t\t\t{!!onView && (\n\t\t\t\t<div className=\"mt-1 border-t border-border/30 p-surface-xs\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tonClick={onView}\n\t\t\t\t\t\tclassName=\"group/link\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.viewDetails}\n\t\t\t\t\t\t<ArrowRight className=\"ml-1 h-3.5 w-3.5 transition-transform group-hover/link:translate-x-0.5\" />\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nGiftcardCardMinimal.displayName = 'GiftcardCardMinimal';\n","import { GiftcardCompact } from './partials/giftcard-compact';\nimport { GiftcardCardDark } from './partials/giftcard-dark';\nimport { GiftcardFull } from './partials/giftcard-full';\nimport { GiftcardCardIllustrated } from './partials/giftcard-illustrated';\nimport { GiftcardCardMinimal } from './partials/giftcard-minimal';\nimport type {\n\tAccentColor,\n\tGiftcardCommonProps,\n\tGiftcardData,\n\tGradientVariant,\n\tHeaderColor,\n\tPatternVariant,\n} from './types';\nimport { cn } from '../../../../lib/utils';\n\nexport type GiftcardCardVariant =\n\t| 'gradient'\n\t| 'compact'\n\t| 'minimal'\n\t| 'dark'\n\t| 'illustrated';\n\ninterface GiftcardCardSharedProps extends GiftcardData, GiftcardCommonProps {\n\t/** Merged onto the card root. */\n\tclassName?: string;\n}\n\n/**\n * Each variant admits only the styling prop it can actually use; the others are\n * typed `never`, so passing `headerColor` to the gradient card is a type error\n * rather than a silently ignored prop.\n */\nexport type GiftcardCardProps = GiftcardCardSharedProps & (\n\t| {\n\t\t/** Premium gradient card. The default presentation. */\n\t\tvariant?: 'gradient';\n\t\t/** Background gradient. Default: `purple`. */\n\t\tgradient?: GradientVariant;\n\t\t/** Decorative overlay on the gradient. Default: `none`. */\n\t\tpattern?: PatternVariant;\n\t\tcolor?: never;\n\t\theaderColor?: never;\n\t}\n\t| {\n\t\t/** Short row for collections and lists. */\n\t\tvariant: 'compact';\n\t\t/** Background gradient for the row's leading block. */\n\t\tgradient?: GradientVariant;\n\t\tpattern?: never;\n\t\tcolor?: never;\n\t\theaderColor?: never;\n\t}\n\t| {\n\t\t/** Restrained card that inherits the surrounding surface. */\n\t\tvariant: 'minimal';\n\t\t/** Accent for the rule and highlights. */\n\t\tcolor?: AccentColor;\n\t\tgradient?: never;\n\t\tpattern?: never;\n\t\theaderColor?: never;\n\t}\n\t| {\n\t\t/** Solid dark card, for light surfaces that need contrast. */\n\t\tvariant: 'dark';\n\t\tgradient?: never;\n\t\tpattern?: never;\n\t\tcolor?: never;\n\t\theaderColor?: never;\n\t}\n\t| {\n\t\t/** Illustrated card with a coloured header band. */\n\t\tvariant: 'illustrated';\n\t\t/** Colour of the header band. */\n\t\theaderColor?: HeaderColor;\n\t\tgradient?: never;\n\t\tpattern?: never;\n\t\tcolor?: never;\n\t}\n);\n\n/**\n * GiftcardCard — one gift-card data contract with five deliberate visual\n * variants. The premium gradient card is the useful default; compact is for\n * collection rows, while minimal, dark, and illustrated are explicit styles.\n */\nexport function GiftcardCard(props: GiftcardCardProps) {\n\tconst className = cn('giftcard-card--component', props.className);\n\tswitch (props.variant) {\n\t\tcase 'compact':\n\t\t\treturn <GiftcardCompact {...props} className={className} />;\n\t\tcase 'minimal':\n\t\t\treturn <GiftcardCardMinimal {...props} className={className} />;\n\t\tcase 'dark':\n\t\t\treturn <GiftcardCardDark {...props} className={className} />;\n\t\tcase 'illustrated':\n\t\t\treturn <GiftcardCardIllustrated {...props} className={className} />;\n\t\tdefault:\n\t\t\treturn <GiftcardFull {...props} className={className} />;\n\t}\n}\n\nGiftcardCard.displayName = 'GiftcardCard';\n","import type { SmartCardSurface } from '../../../base/cards';\nimport type { StringsProp } from '../../../../lib/strings';\nimport type { ReactNode } from 'react';\nimport type { SemanticTone } from '../../../../lib/component-vocabulary';\n\nexport type VendorProfileChangeTone = Extract<\n\tSemanticTone,\n\t'secondary' | 'success' | 'warning' | 'destructive'\n>;\n\n/** The two data views available when a dossier has overview and performance data. */\nexport type VendorProfileView = 'overview' | 'stats';\n\n/** A performance tile shown in the stats view. */\nexport interface VendorProfileStat {\n\t/** Stable key used when the stat collection changes order. */\n\tid?: string;\n\t/** Consumer-owned stat label. */\n\tlabel: ReactNode;\n\t/** Display value; prefer package primitives such as Money, Number, or Percent. */\n\tvalue: ReactNode;\n\t/** Optional comparison value rendered as a badge. */\n\tchange?: ReactNode;\n\t/** Explicit semantic meaning of the comparison. Defaults to neutral secondary. */\n\tchangeTone?: VendorProfileChangeTone;\n}\n\n/** An operational label/value row shown in the overview view. */\nexport interface VendorProfileMetric {\n\t/** Stable key used when the metric collection changes order. */\n\tid?: string;\n\t/** Consumer-owned metric label. */\n\tlabel: ReactNode;\n\t/** Display value; prefer a semantic package primitive when one exists. */\n\tvalue: ReactNode;\n}\n\n/**\n * Localised labels for VendorProfileCard. Override per-instance via `strings`.\n */\nexport interface VendorProfileStrings {\n\t/** Label for the operating overview tab. */\n\ttabOverview: string;\n\t/** Label for the performance statistics tab. */\n\ttabStats: string;\n\t/** Label above the primary earnings value. */\n\ttotalEarnings: string;\n\t/** Label for the message action. */\n\tmessage: string;\n\t/** Label for the engagement action. */\n\thire: string;\n\t/** Accessible and visible label for the verified badge. */\n\tverifiedAriaLabel: string;\n}\n\nexport const defaultVendorProfileStrings: VendorProfileStrings = {\n\ttabOverview: 'Overview',\n\ttabStats: 'Stats',\n\ttotalEarnings: 'Total earnings',\n\tmessage: 'Message',\n\thire: 'Hire vendor',\n\tverifiedAriaLabel: 'Verified',\n};\n\nexport interface VendorProfileCardProps {\n\t/** Vendor display name used by the identity header and avatar fallback. */\n\tname: string;\n\t/** Explicit avatar fallback text. Derived from `name` when omitted. */\n\tinitials?: string;\n\t/** Optional vendor avatar URL. */\n\tavatarUrl?: string;\n\t/** Secondary identity context such as category, market, or location. */\n\trole?: ReactNode;\n\t/** Shows the localized verified badge when true. */\n\tverified?: boolean;\n\t/** Primary earnings display; prefer the canonical Money primitive. */\n\tearnings?: ReactNode;\n\t/** Optional comparison rendered beside earnings. */\n\tearningsChange?: ReactNode;\n\t/** Explicit semantic meaning of `earningsChange`. Defaults to neutral secondary. */\n\tearningsChangeTone?: VendorProfileChangeTone;\n\t/** Operational rows rendered in the overview view. */\n\tmetrics?: VendorProfileMetric[];\n\t/** Performance tiles rendered in the stats view. */\n\tstats?: VendorProfileStat[];\n\t/** Controlled active view. Only used when both overview and stats exist. */\n\tview?: VendorProfileView;\n\t/** Initial active view for uncontrolled usage. Defaults to `overview`. */\n\tdefaultView?: VendorProfileView;\n\t/** Called when the user requests a different view in either state mode. */\n\tonViewChange?: (view: VendorProfileView) => void;\n\t/** Shows the message action and delegates its behavior to the consumer. */\n\tonMessage?: () => void;\n\t/** Shows the engagement action and delegates its behavior to the consumer. */\n\tonHire?: () => void;\n\t/** Card surface override. Defaults through the shared SmartCard configuration. */\n\tsurface?: SmartCardSurface;\n\t/** Card density override. Defaults through the shared SmartCard configuration. */\n\t/** Additional classes applied to the outer SmartCard element. */\n\tclassName?: string;\n\t/** Deep-partial localized label overrides. */\n\tstrings?: StringsProp<VendorProfileStrings>;\n}\n","/**\n * VendorProfileCard — a compact vendor dossier with identity, earnings,\n * operating metrics, performance stats, and callback-driven actions.\n *\n * The component owns card chrome because it is a fixed-format profile card.\n * Consumers can still opt into `surface=\"flat\"` when embedding the dossier in\n * a larger surface. Its overview/stats view supports controlled and\n * uncontrolled state. Tabs only render when both content views are available;\n * an identity-only profile never grows dead controls or actions.\n */\nimport { Check, ChevronRight, MessageSquare } from 'lucide-react';\nimport { forwardRef, type ReactNode, useState } from 'react';\n\nimport { Avatar, AvatarFallback, AvatarImage } from '../../../base/avatar';\nimport { Badge, type BadgeProps } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { hasRenderableContent, Card } from '../../../base/cards';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../../base/navigation/tabs';\nimport { Grid, Stack } from '../../../base/structure';\nimport { InlineStat } from '../../data-display';\nimport { Initials, Value } from '../../../primitives';\nimport { DisplayLabel } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultVendorProfileStrings,\n\ttype VendorProfileCardProps,\n\ttype VendorProfileChangeTone,\n\ttype VendorProfileView,\n} from './types';\n\nconst CHANGE_VARIANTS: Record<\n\tVendorProfileChangeTone,\n\tNonNullable<BadgeProps['tone']>\n> = {\n\tsecondary: 'secondary',\n\tsuccess: 'success',\n\twarning: 'warning',\n\tdestructive: 'destructive',\n};\n\nfunction ChangeBadge({\n\tchildren,\n\ttone,\n}: {\n\tchildren?: ReactNode;\n\ttone?: VendorProfileChangeTone;\n}) {\n\tif (!hasRenderableContent(children)) return null;\n\n\treturn (\n\t\t<Badge\n\t\t\ttone={CHANGE_VARIANTS[tone ?? 'secondary']}\n\t\t\tclassName=\"vendor-profile--change shrink-0 tabular-nums\"\n\t\t>\n\t\t\t{children}\n\t\t</Badge>\n\t);\n}\n\nexport const VendorProfileCard = forwardRef<HTMLDivElement, VendorProfileCardProps>(\n\tfunction VendorProfileCard(\n\t\t{\n\t\t\tname,\n\t\t\tinitials,\n\t\t\tavatarUrl,\n\t\t\trole,\n\t\t\tverified = false,\n\t\t\tearnings,\n\t\t\tearningsChange,\n\t\t\tearningsChangeTone,\n\t\t\tmetrics = [],\n\t\t\tstats = [],\n\t\t\tview,\n\t\t\tdefaultView = 'overview',\n\t\t\tonViewChange,\n\t\t\tonMessage,\n\t\t\tonHire,\n\t\t\tsurface,\n\t\t\tclassName,\n\t\t\tstrings: stringsProp,\n\t\t}: VendorProfileCardProps,\n\t\tref,\n\t) {\n\t\tconst strings = useStrings(defaultVendorProfileStrings, stringsProp);\n\t\tconst [internalView, setInternalView] = useState<VendorProfileView>(defaultView);\n\t\tconst isViewControlled = view !== undefined;\n\n\t\tconst hasEarnings = hasRenderableContent(earnings);\n\t\tconst hasOverviewContent = hasEarnings || metrics.length > 0;\n\t\tconst hasStatsContent = stats.length > 0;\n\t\tconst availableTabs: VendorProfileView[] = [\n\t\t\t...(hasOverviewContent ? (['overview'] as const) : []),\n\t\t\t...(hasStatsContent ? (['stats'] as const) : []),\n\t\t];\n\t\tconst requestedView = isViewControlled ? view : internalView;\n\t\tconst activeView = availableTabs.includes(requestedView)\n\t\t\t? requestedView\n\t\t\t: availableTabs[0] ?? 'overview';\n\t\tconst hasBody = availableTabs.length > 0;\n\t\tconst hasActions = Boolean(onMessage || onHire);\n\t\tconst handleViewChange = (nextValue: string) => {\n\t\t\tif (nextValue !== 'overview' && nextValue !== 'stats') return;\n\t\t\tif (!availableTabs.includes(nextValue)) return;\n\t\t\tif (!isViewControlled) setInternalView(nextValue);\n\t\t\tonViewChange?.(nextValue);\n\t\t};\n\n\t\tconst overviewContent = (\n\t\t\t<Stack gap=\"lg\" className=\"vendor-profile--overview\">\n\t\t\t\t{hasEarnings && (\n\t\t\t\t\t<div className=\"vendor-profile--earnings rounded-radius bg-muted/45 p-surface-xs\">\n\t\t\t\t\t\t<DisplayLabel>{strings.totalEarnings}</DisplayLabel>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"md\" align=\"baseline\" justify=\"between\" className=\"mt-space-sm\">\n\t\t\t\t\t\t\t<Value size=\"base\" weight=\"semibold\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t\t\t\t\t{earnings}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t<ChangeBadge tone={earningsChangeTone}>{earningsChange}</ChangeBadge>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{metrics.length > 0 && (\n\t\t\t\t\t<div className=\"vendor-profile--metrics divide-y divide-border/60\">\n\t\t\t\t\t\t{metrics.map((metric, index) => (\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tkey={metric.id ?? index}\n\t\t\t\t\t\t\t\tclassName=\"py-row-y first:pt-0 last:pb-0\"\n\t\t\t\t\t\t\t\tlabel={metric.label}\n\t\t\t\t\t\t\t\tvalue={metric.value}\n\t\t\t\t\t\t\t\tvalueClassName=\"font-medium\"\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</Stack>\n\t\t);\n\n\t\tconst statsContent = (\n\t\t\t<Grid columns={{ base: 1, sm: 2 }} gap=\"sm\" className=\"vendor-profile--stats\">\n\t\t\t\t{stats.map((stat, index) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={stat.id ?? index}\n\t\t\t\t\t\tclassName=\"vendor-profile--stat rounded-radius bg-muted/45 p-surface-xs\"\n\t\t\t\t\t>\n\t\t\t\t\t<Stack gap=\"sm\">\n\t\t\t\t\t\t<DisplayLabel className=\"truncate\">{stat.label}</DisplayLabel>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"baseline\" justify=\"between\">\n\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"min-w-0 tabular-nums\">\n\t\t\t\t\t\t\t\t{stat.value}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t<ChangeBadge tone={stat.changeTone}>{stat.change}</ChangeBadge>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</Grid>\n\t\t);\n\n\t\tconst profileBody = availableTabs.length > 1 ? (\n\t\t\t<Tabs\n\t\t\t\tvalue={activeView}\n\t\t\t\tonValueChange={handleViewChange}\n\t\t\t\tclassName=\"vendor-profile--tabs gap-space-lg\"\n\t\t\t>\n\t\t\t\t<TabsList className=\"grid h-auto w-full grid-cols-2 rounded-radius p-space-xs\">\n\t\t\t\t\t<TabsTrigger value=\"overview\" className=\"h-action-sm rounded-radius-sm px-control-sm text-pxs\">\n\t\t\t\t\t\t{strings.tabOverview}\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t\t<TabsTrigger value=\"stats\" className=\"h-action-sm rounded-radius-sm px-control-sm text-pxs\">\n\t\t\t\t\t\t{strings.tabStats}\n\t\t\t\t\t</TabsTrigger>\n\t\t\t\t</TabsList>\n\t\t\t\t<TabsContent value=\"overview\" className=\"mt-0\">\n\t\t\t\t\t{overviewContent}\n\t\t\t\t</TabsContent>\n\t\t\t\t<TabsContent value=\"stats\" className=\"mt-0\">\n\t\t\t\t\t{statsContent}\n\t\t\t\t</TabsContent>\n\t\t\t</Tabs>\n\t\t) : activeView === 'stats' ? (\n\t\t\tstatsContent\n\t\t) : (\n\t\t\toverviewContent\n\t\t);\n\n\t\treturn (\n\t\t\t<Card\n\t\t\t\tref={ref}\n\t\t\t\tsurface={surface}\n\t\t\t\theaderStart={\n\t\t\t\t\t<Item className=\"vendor-profile--identity flex-nowrap py-0\">\n\t\t\t\t\t\t<ItemMedia variant=\"avatar\">\n\t\t\t\t\t\t\t<Avatar>\n\t\t\t\t\t\t\t\t{!!avatarUrl && <AvatarImage src={avatarUrl} alt={name} />}\n\t\t\t\t\t\t\t\t<AvatarFallback className=\"bg-primary/12 text-primary-accent\">\n\t\t\t\t\t\t\t\t\t{initials ?? <Initials value={name} strategy=\"first-words\" />}\n\t\t\t\t\t\t\t\t</AvatarFallback>\n\t\t\t\t\t\t\t</Avatar>\n\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t<ItemTitle>{name}</ItemTitle>\n\t\t\t\t\t\t\t{!!role && <ItemDescription clamp={2}>{role}</ItemDescription>}\n\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t{!!verified && (\n\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t<Badge tone=\"success\" aria-label={strings.verifiedAriaLabel}>\n\t\t\t\t\t\t\t\t\t<Check className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t{strings.verifiedAriaLabel}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Item>\n\t\t\t\t}\n\t\t\t\theaderDivider={hasBody}\n\t\t\t\tfooterDivider={hasActions}\n\t\t\t\tfooterSlot={\n\t\t\t\t\thasActions ? (\n\t\t\t\t\t\t<div className=\"vendor-profile--actions flex flex-wrap gap-space-sm\">\n\t\t\t\t\t\t\t{!!onMessage && (\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\ttone=\"secondary\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1\"\n\t\t\t\t\t\t\t\t\tonClick={onMessage}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<MessageSquare className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t{strings.message}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onHire && (\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\ttone=\"primary\"\n\t\t\t\t\t\t\t\t\tclassName=\"min-w-0 flex-1\"\n\t\t\t\t\t\t\t\t\tonClick={onHire}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{strings.hire}\n\t\t\t\t\t\t\t\t\t<ChevronRight className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : undefined\n\t\t\t\t}\n\t\t\t\tcontentClassName={cn(!hasBody && 'hidden')}\n\t\t\t\tclassName={cn('vendor-profile--component', className)}\n\t\t\t>\n\t\t\t\t{hasBody ? profileBody : null}\n\t\t\t</Card>\n\t\t);\n\t},\n);\n\nVendorProfileCard.displayName = 'VendorProfileCard';\n","export interface InventoryLevelStrings {\n\tstatusInStock: string;\n\tstatusLowStock: string;\n\tstatusCritical: string;\n\tvariantLabel: string;\n\tunitsAvailable: string;\n\treorderAtLabel: string;\n\tlastRestockedLabel: string;\n}\n\nexport const defaultInventoryLevelStrings: InventoryLevelStrings = {\n\tstatusInStock: 'In Stock',\n\tstatusLowStock: 'Low Stock',\n\tstatusCritical: 'Critical',\n\tvariantLabel: 'Variant',\n\tunitsAvailable: 'units available',\n\treorderAtLabel: 'Reorder at',\n\tlastRestockedLabel: 'Last restocked',\n};\n","/**\n * InventoryLevel — single-product inventory snapshot with stock total,\n * reorder threshold, and a status pill (Critical / Low Stock / In Stock).\n *\n * Status thresholds are computed from `stock`, `reorderLevel`, and the\n * critical threshold (50% of `reorderLevel`). Status pill labels flow via\n * the `strings` prop so consumers can localise without forking the file.\n */\nimport { Badge } from '../../../base/badge';\nimport { Item } from '../../../base/item';\nimport { Stack } from '../../../base/structure';\nimport { Number as NumberValue, SecondaryValue } from '../../../primitives';\nimport { Text } from '../../../typography/text';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { defaultInventoryLevelStrings } from './inventory-level.strings';\nimport type { InventoryLevelProps } from './types';\n\nexport function InventoryLevel({\n\tproductName,\n\tvariant,\n\tstock,\n\treorderLevel,\n\tmaxStock,\n\tlastRestocked,\n\tclassName,\n\tstrings: stringsProp,\n}: InventoryLevelProps) {\n\tconst strings = useStrings(defaultInventoryLevelStrings, stringsProp);\n\tconst pct = Math.round((stock / maxStock) * 100);\n\tconst isLow = stock <= reorderLevel;\n\tconst isCritical = stock <= reorderLevel * 0.5;\n\n\tconst badgeTone = isCritical ? 'destructive' : isLow ? 'warning' : 'success';\n\tconst badgeLabel = isCritical\n\t\t? strings.statusCritical\n\t\t: isLow\n\t\t\t? strings.statusLowStock\n\t\t\t: strings.statusInStock;\n\n\treturn (\n\t\t<Stack\n\t\t\tdata-component=\"inventory-level\"\n\t\t\tdata-slot=\"inventory-level\"\n\t\t\tgap=\"md\"\n\t\t\tclassName={cn('inventory-level--component', className)}\n\t\t>\n\t\t\t<Item\n\t\t\t\tsize=\"sm\"\n\t\t\t\ttitle={productName}\n\t\t\t\tdescription={variant ? `${strings.variantLabel}: ${variant}` : undefined}\n\t\t\t\tdescriptionClamp={1}\n\t\t\t\ttrailing={<Badge tone={badgeTone}>{badgeLabel}</Badge>}\n\t\t\t/>\n\n\t\t\t<NumberValue value={stock} weight=\"semibold\" align=\"left\" className=\"tracking-tight\" />\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{strings.unitsAvailable}\n\t\t\t</Text>\n\n\t\t\t<Stack gap=\"md\" className=\"mt-space-xl\">\n\t\t\t\t<div className=\"h-1.5 overflow-hidden rounded-full bg-muted\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'h-full rounded-full transition-all',\n\t\t\t\t\t\t\tisCritical ? 'bg-destructive' : isLow ? 'bg-warning' : 'bg-success',\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tstyle={{ width: `${pct}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{/* `size=\"xs\"` keeps the value inside its own 12px line: without\n\t\t\t\t\t\t it the number inherits the 14px provider default and reads\n\t\t\t\t\t\t a size larger than the label it belongs to, and than the\n\t\t\t\t\t\t last-restocked value beside it. `weight` still carries the\n\t\t\t\t\t\t emphasis. */}\n\t\t\t\t\t\t{strings.reorderAtLabel}: <NumberValue value={reorderLevel} size=\"xs\" weight=\"medium\" align=\"left\" />\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!lastRestocked && (\n\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t{strings.lastRestockedLabel}: <SecondaryValue size=\"xs\">{lastRestocked}</SecondaryValue>\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nInventoryLevel.displayName = 'InventoryLevel';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport interface TaxLineItem {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** Display label. */\n\tlabel: string;\n\trate?: string;\n\tamount: string;\n}\n\nexport interface TaxBreakdownStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Formatted amount before tax. */\n\tsubtotal: string;\n\t/** Formatted sum of every tax line. */\n\ttotalTax: string;\n\t/** Formatted grand total, including tax. */\n\ttotal: string;\n}\n\nexport const defaultTaxBreakdownStrings: TaxBreakdownStrings = {\n\ttitle: 'Tax Breakdown',\n\tsubtotal: 'Subtotal',\n\ttotalTax: 'Total Tax',\n\ttotal: 'Total',\n};\n\nexport interface TaxBreakdownCardProps {\n\t/** Formatted amount before tax. */\n\tsubtotal: string;\n\t/** Individual tax lines making up the total. */\n\ttaxes: TaxLineItem[];\n\t/** Formatted sum of every tax line. */\n\ttotalTax?: string;\n\t/** Formatted grand total, including tax. */\n\ttotal: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<TaxBreakdownStrings>;\n}\n","/**\n * TaxBreakdownCard — itemised tax breakdown for an order or invoice. Shows a\n * subtotal, one row per tax line (with optional rate suffix), an optional\n * \"Total tax\" rollup, and a final total. Pairs with `CartSummaryCard` when\n * consumers need to expose VAT / regional tax detail. Strings overridable\n * for i18n.\n */\nimport { Receipt } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { Stack } from '../../../base/structure';\nimport { Text } from '../../../typography';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { Value } from '../../../primitives';\nimport { useStrings } from '../../../../lib/strings';\n\nimport { defaultTaxBreakdownStrings, type TaxBreakdownCardProps } from './types';\n\nimport { cn } from '../../../../lib/utils';\nexport function TaxBreakdownCard({\n\tsubtotal,\n\ttaxes,\n\ttotalTax,\n\ttotal,\n\tclassName,\n\tstrings: stringsProp,\n}: TaxBreakdownCardProps) {\n\tconst strings = useStrings(defaultTaxBreakdownStrings, stringsProp);\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<Receipt className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('tax-breakdown--component w-full', className)}\n\t\t>\n\t\t\t<InlineStat\n\t\t\t\tlabel={strings.subtotal}\n\t\t\t\tvalue={subtotal}\n\t\t\t\tmono\n\t\t\t\tvalueClassName=\"text-sm font-medium\"\n\t\t\t/>\n\n\t\t\t\t<div className=\"mt-space-lg rounded-radius border border-border/50 bg-muted/30 p-surface\">\n\t\t\t\t<Stack gap=\"sm\">\n\t\t\t\t{taxes.map((tax, i) => (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tkey={tax.id ?? `${tax.label}-${i}`}\n\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\talign=\"baseline\"\n\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\tgap=\"lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"baseline\" gap=\"sm\" className=\"min-w-0\">\n\t\t\t\t\t\t\t<Text className=\"truncate\">{tax.label}</Text>\n\t\t\t\t\t\t\t{!!tax.rate && (\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"discrete\" className=\"shrink-0\">\n\t\t\t\t\t\t\t\t\t{tax.rate}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Value weight=\"medium\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t{tax.amount}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t))}\n\t\t\t\t{!!totalTax && taxes.length > 1 && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tlabel={strings.totalTax}\n\t\t\t\t\t\tvalue={totalTax}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tclassName=\"border-t border-border/50 pt-1.5 mt-0.5\"\n\t\t\t\t\t\tvalueClassName=\"text-sm font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t\t</div>\n\n\t\t\t<Separator className=\"my-space-lg\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={<Text tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{strings.total}</Text>}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\t\t</ContentBlock>\n\t);\n}\n\nTaxBreakdownCard.displayName = 'TaxBreakdownCard';\n","import type { LucideIcon } from 'lucide-react';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport interface SubscriptionPerk {\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\t/** Display label. */\n\tlabel: string;\n}\n\nexport interface SubscriptionSummaryStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tplan: string;\n\tnextBilling: string;\n\t/** Benefits included in the plan. */\n\tperks: string;\n\tmanage: string;\n\tupgrade: string;\n}\n\nexport const defaultSubscriptionSummaryStrings: SubscriptionSummaryStrings = {\n\ttitle: 'Subscription',\n\tplan: 'Plan',\n\tnextBilling: 'Next billing',\n\tperks: 'Included',\n\tmanage: 'Manage',\n\tupgrade: 'Upgrade',\n};\n\nexport interface SubscriptionSummaryCardProps {\n\t/** Name of the subscribed plan. */\n\tplanName: string;\n\t/** Formatted recurring price. */\n\tpriceLabel: string;\n\t/** Billing interval, e.g. monthly or yearly. */\n\tcycleLabel: string;\n\t/** Formatted date of the next charge. */\n\tnextBillingDate: string;\n\t/** Current subscription state. */\n\tstatusLabel?: string;\n\t/** Benefits included in the plan. */\n\tperks?: SubscriptionPerk[];\n\tonManage?: () => void;\n\tonUpgrade?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SubscriptionSummaryStrings>;\n}\n","/**\n * SubscriptionSummaryCard — at-a-glance subscription card with the active\n * plan name as the hero heading, an inline price + cycle, the next billing\n * date in a meta row, an optional perks list, and trailing\n * Manage / Upgrade actions. Strings overridable for i18n.\n */\nimport {\n\tCalendar,\n\tCheck,\n\tChevronRight,\n\tRepeat } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { ContentBlock } from '../../../base/display';\nimport { IconBadge,\n} from '../../../base/display';\nimport {\n\tItem,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { Stack } from '../../../base/structure';\nimport { Value } from '../../../primitives';\nimport { Heading } from '../../../typography/heading';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\n\nimport {\n\tdefaultSubscriptionSummaryStrings,\n\ttype SubscriptionSummaryCardProps,\n} from './types';\n\nimport { cn } from '../../../../lib/utils';\nexport function SubscriptionSummaryCard({\n\tplanName,\n\tpriceLabel,\n\tcycleLabel,\n\tnextBillingDate,\n\tstatusLabel,\n\tperks = [],\n\tonManage,\n\tonUpgrade,\n\tclassName,\n\tstrings: stringsProp,\n}: SubscriptionSummaryCardProps) {\n\tconst strings = useStrings(defaultSubscriptionSummaryStrings, stringsProp);\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<Repeat className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\theaderEnd={statusLabel ? <Badge tone=\"success\">{statusLabel}</Badge> : null}\n\t\t\tclassName={cn('subscription-summary--component w-full', className)}\n\t\t>\n\t\t\t{/* Plan identity left, price right — the same label/value idiom the\n\t\t\t \"next billing\" row below uses, and the one tax-breakdown and\n\t\t\t order-status use inside their panels. Stacking all three lines on\n\t\t\t the left instead left ~80% of this panel empty. */}\n\t\t\t<div className=\"rounded-radius border border-border/60 bg-muted/30 p-surface\">\n\t\t\t\t<Stack direction=\"horizontal\" justify=\"between\" align=\"start\" gap=\"lg\">\n\t\t\t\t\t<Stack gap=\"none\" className=\"min-w-0\">\n\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t{strings.plan}\n\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t<Heading tag=\"h3\" className=\"mt-1 text-base font-semibold tracking-tight border-none pb-0\">\n\t\t\t\t\t\t\t{planName}\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"baseline\" gap=\"xs\" className=\"shrink-0\">\n\t\t\t\t\t\t<Value weight=\"bold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{priceLabel}\n\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t<Text type=\"secondary\">\n\t\t\t\t\t\t\t{cycleLabel}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t</div>\n\n\t\t\t<div className=\"mt-space-lg flex items-center justify-between rounded-radius-md bg-card px-space-xs\">\n\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t<Calendar className=\"size-icon-md text-muted-foreground\" />\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{strings.nextBilling}</Text>\n\t\t\t\t</div>\n\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">{nextBillingDate}</Value>\n\t\t\t</div>\n\n\t\t\t{perks.length > 0 && (\n\t\t\t\t\t<Stack gap=\"md\" className=\"mt-space-xl\">\n\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t{strings.perks}\n\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{perks.map((perk, i) => {\n\t\t\t\t\t\t\tconst Icon = perk.icon ?? Check;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Item key={`${perk.label}-${i}`} size=\"sm\">\n\t\t\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t\t\t<IconBadge icon={Icon} tone=\"success\" size=\"sm\" />\n\t\t\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t\t<ItemTitle bold={false}>{perk.label}</ItemTitle>\n\t\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{(onManage || onUpgrade) && (\n\t\t\t\t<div className=\"mt-space-xl flex items-center gap-space-md\">\n\t\t\t\t\t{!!onManage && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\tonClick={onManage}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.manage}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onUpgrade && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttone=\"primary\"\n\t\t\t\t\t\t\tonClick={onUpgrade}\n\t\t\t\t\t\t\tclassName=\"flex-1\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.upgrade}\n\t\t\t\t\t\t\t<ChevronRight className=\"ml-1 size-icon-md\" />\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</ContentBlock>\n\t);\n}\n\nSubscriptionSummaryCard.displayName = 'SubscriptionSummaryCard';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport type RefundStage = 'requested' | 'approved' | 'processing' | 'completed';\n\nexport interface RefundStatusStrings {\n\t/** Surface title. */\n\ttitle: string;\n\trequested: string;\n\tapproved: string;\n\tprocessing: string;\n\tcompleted: string;\n\t/** Formatted refund amount. */\n\tamount: string;\n\t/** Why the refund was requested. */\n\treason: string;\n\t/** Formatted estimate for the funds landing. */\n\teta: string;\n\t/** Where the money is being returned to. */\n\tmethod: string;\n}\n\nexport const defaultRefundStatusStrings: RefundStatusStrings = {\n\ttitle: 'Refund Status',\n\trequested: 'Requested',\n\tapproved: 'Approved',\n\tprocessing: 'Processing',\n\tcompleted: 'Completed',\n\tamount: 'Refund amount',\n\treason: 'Reason',\n\teta: 'Expected by',\n\tmethod: 'Refund to',\n};\n\nexport interface RefundStatusCardProps {\n\t/** How far the refund has progressed. */\n\tstage: RefundStage;\n\t/** Formatted refund amount. */\n\tamount: string;\n\t/** Why the refund was requested. */\n\treason?: string;\n\t/** Where the money is being returned to. */\n\tmethod?: string;\n\t/** Formatted estimate for the funds landing. */\n\teta?: string;\n\t/** Formatted date the refund was raised. */\n\trequestedAt?: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<RefundStatusStrings>;\n}\n","/**\n * RefundStatusCard — refund-flow tracker. Shows the four canonical refund\n * stages (Requested → Approved → Processing → Completed) as a horizontal\n * progress bar, with refund amount as the lead figure and an optional reason\n * / method / ETA detail block. Strings overridable for i18n.\n */\nimport {\n\tCheck,\n\tRotateCcw } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { Stack } from '../../../base/structure';\nimport { Number as NumberValue, SecondaryValue, Value } from '../../../primitives';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultRefundStatusStrings,\n\ttype RefundStage,\n\ttype RefundStatusCardProps,\n} from './types';\n\nconst STAGE_ORDER: RefundStage[] = ['requested', 'approved', 'processing', 'completed'];\n\nexport function RefundStatusCard({\n\tstage,\n\tamount,\n\treason,\n\tmethod,\n\teta,\n\trequestedAt,\n\tclassName,\n\tstrings: stringsProp,\n}: RefundStatusCardProps) {\n\tconst strings = useStrings(defaultRefundStatusStrings, stringsProp);\n\tconst currentIdx = STAGE_ORDER.indexOf(stage);\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<RotateCcw className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('refund-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-radius bg-muted/40 p-surface\">\n\t\t\t\t{/* `DisplayLabel` is block and `Value` is inline, so stacking them\n\t\t\t\t bare rendered \"Refund amount180.00 USD\" with no separation at\n\t\t\t\t all. Pair them as label-left / value-right, the idiom the rest\n\t\t\t\t of the commerce panels use. */}\n\t\t\t\t<Stack direction=\"horizontal\" justify=\"between\" align=\"baseline\" gap=\"lg\">\n\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t{strings.amount}\n\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t<Value size=\"base\" weight=\"bold\" className=\"tabular-nums tracking-tight\">\n\t\t\t\t\t\t{amount}\n\t\t\t\t\t</Value>\n\t\t\t\t</Stack>\n\t\t\t\t{!!requestedAt && (\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"mt-0.5\">\n\t\t\t\t\t\t{strings.requested}: <SecondaryValue size=\"xs\">{requestedAt}</SecondaryValue>\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Stages */}\n\t\t\t<div className=\"mt-space-xl flex items-center justify-between\">\n\t\t\t\t{STAGE_ORDER.map((s, i) => {\n\t\t\t\t\tconst done = i <= currentIdx;\n\t\t\t\t\tconst current = i === currentIdx;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t// The dot leads its column and the connector fills the rest, so\n\t\t\t\t\t\t// the node sits at the column's left edge; the label has to\n\t\t\t\t\t\t// start there too. Centring it pushed every label ~46px right\n\t\t\t\t\t\t// of the stage it names. Same fix as ShipmentTracking.\n\t\t\t\t\t\t<div key={s} className=\"flex flex-1 flex-col items-start gap-space-sm\">\n\t\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t'relative flex size-icon-lg shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\t\t\tdone\n\t\t\t\t\t\t\t\t\t\t\t? 'bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t: 'border border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\tcurrent && 'ring-2 ring-success/30 ring-offset-2 ring-offset-background',\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\t\t{done ? (\n\t\t\t\t\t\t\t\t\t\t<Check className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t<NumberValue value={i + 1} size=\"xs\" weight=\"medium\" align=\"center\" />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{i < STAGE_ORDER.length - 1 && (\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'h-0.5 flex-1',\n\t\t\t\t\t\t\t\t\t\t\ti < currentIdx ? 'bg-success' : 'bg-border',\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</div>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tweight={current ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\ttype={done ? 'main' : 'secondary'}\n\t\t\t\t\t\t\t\tclassName=\"text-left leading-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{strings[s]}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\n\t\t\t{(reason || method || eta) && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator className=\"my-space-xl\" />\n\t\t\t\t\t<div className=\"space-y-space-md\">\n\t\t\t\t\t\t{!!reason && (\n\t\t\t\t\t\t\t<InlineStat label={strings.reason} value={reason} className=\"items-start\" valueClassName=\"text-sm font-medium text-right\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!method && (\n\t\t\t\t\t\t\t<InlineStat label={strings.method} value={method} valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!eta && (\n\t\t\t\t\t\t\t<InlineStat label={strings.eta} value={eta} mono valueClassName=\"text-sm font-medium\" />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</ContentBlock>\n\t);\n}\n\nRefundStatusCard.displayName = 'RefundStatusCard';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport type AddressKind = 'shipping' | 'billing' | 'pickup';\n\nexport interface AddressCardStrings {\n\tdefaultBadge: string;\n\tedit: string;\n\tremove: string;\n\tmakeDefault: string;\n\tshipping: string;\n\tbilling: string;\n\tpickup: string;\n}\n\nexport const defaultAddressCardStrings: AddressCardStrings = {\n\tdefaultBadge: 'Default',\n\tedit: 'Edit',\n\tremove: 'Remove',\n\tmakeDefault: 'Make default',\n\tshipping: 'Shipping address',\n\tbilling: 'Billing address',\n\tpickup: 'Pickup address',\n};\n\nexport interface AddressCardProps {\n\t/** What the address is for — billing, shipping, or both. */\n\tkind?: AddressKind;\n\t/** Display name. */\n\tname: string;\n\t/** Street address. */\n\tline1: string;\n\t/** Apartment, suite, or unit. */\n\tline2?: string;\n\t/** City or town. */\n\tcity: string;\n\t/** State, province, or region. */\n\tregion?: string;\n\t/** Postal or ZIP code. */\n\tpostalCode?: string;\n\t/** Country name or code. */\n\tcountry: string;\n\t/** Contact number for the delivery. */\n\tphone?: string;\n\t/** Marks this as the account's default address. */\n\tdefault?: boolean;\n\t/** Fired when an entry is edited. */\n\tonEdit?: () => void;\n\t/** Fired when an entry is removed. */\n\tonRemove?: () => void;\n\tonMakeDefault?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<AddressCardStrings>;\n}\n","/**\n * AddressCard — saved postal address surface. Title varies by `kind`\n * (shipping / billing / pickup); shows recipient name, address lines, phone,\n * and a \"Default\" badge when applicable.\n *\n * Edit / remove / make-default actions ride through the centralized action\n * menu instead of inline footer buttons.\n */\nimport { Edit2, MapPin, Star, Trash2 } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { ContentBlock } from '../../../base/display';\nimport { Stack } from '../../../base/structure';\nimport type { ActionMenuAction } from '../../../base/action-menu';\nimport { Phone } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\n\nimport {\n\tdefaultAddressCardStrings,\n\ttype AddressCardProps,\n\ttype AddressKind,\n} from './types';\n\nimport { cn } from '../../../../lib/utils';\nexport function AddressCard({\n\tkind = 'shipping',\n\tname,\n\tline1,\n\tline2,\n\tcity,\n\tregion,\n\tpostalCode,\n\tcountry,\n\tphone,\n\tdefault: defaultAddress = false,\n\tonEdit,\n\tonRemove,\n\tonMakeDefault,\n\tclassName,\n\tstrings: stringsProp,\n}: AddressCardProps) {\n\tconst strings = useStrings(defaultAddressCardStrings, stringsProp);\n\tconst titleByKind: Record<AddressKind, string> = {\n\t\tshipping: strings.shipping,\n\t\tbilling: strings.billing,\n\t\tpickup: strings.pickup,\n\t};\n\n\tconst cityLine = [city, region, postalCode].filter(Boolean).join(', ');\n\n\tconst actions: ActionMenuAction[] = [];\n\tif (onEdit) {\n\t\tactions.push({\n\t\t\tid: 'edit',\n\t\t\tlabel: strings.edit,\n\t\t\ticon: <Edit2 className=\"size-icon-md\" />,\n\t\t\tonClick: onEdit,\n\t\t});\n\t}\n\tif (onMakeDefault && !defaultAddress) {\n\t\tactions.push({\n\t\t\tid: 'make-default',\n\t\t\tlabel: strings.makeDefault,\n\t\t\ticon: <Star className=\"size-icon-md\" />,\n\t\t\tonClick: onMakeDefault,\n\t\t});\n\t}\n\tif (onRemove) {\n\t\tactions.push({\n\t\t\tid: 'remove',\n\t\t\tlabel: strings.remove,\n\t\t\ticon: <Trash2 className=\"size-icon-md\" />,\n\t\t\tonClick: onRemove,\n\t\t});\n\t}\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<MapPin className=\"size-icon\" />}\n\t\t\ttitle={titleByKind[kind]}\n\t\t\ttitleSuffix={\n\t\t\t\tdefaultAddress ? <Badge tone=\"primary\">{strings.defaultBadge}</Badge> : null\n\t\t\t}\n\t\t\tactions={actions.length > 0 ? actions : undefined}\n\t\t\tclassName={cn('address-card--component w-full', className)}\n\t\t>\n\t\t\t\t<Stack gap=\"2xs\">\n\t\t\t\t<Text weight=\"semibold\">{name}</Text>\n\t\t\t\t<Text>{line1}</Text>\n\t\t\t\t{!!line2 && <Text>{line2}</Text>}\n\t\t\t\t{!!cityLine && <Text>{cityLine}</Text>}\n\t\t\t\t<Text type=\"secondary\">{country}</Text>\n\t\t\t\t{!!phone && (\n\t\t\t\t\t<Phone\n\t\t\t\t\t\tvalue={phone}\n\t\t\t\t\t\tdisplay={<Text tag=\"span\" size=\"xs\">{phone}</Text>}\n\t\t\t\t\t\tclassName=\"mt-space-sm inline-flex\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nAddressCard.displayName = 'AddressCard';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport interface VoucherEntryStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tinputLabel: string;\n\tplaceholder: string;\n\thelperText: string;\n\tcheck: string;\n\tremove: string;\n\t/** Formatted remaining value on the voucher. */\n\tbalance: string;\n\tapplied: string;\n\tnotFound: string;\n}\n\nexport const defaultVoucherEntryStrings: VoucherEntryStrings = {\n\ttitle: 'Redeem a gift card',\n\tinputLabel: 'Gift card code',\n\tplaceholder: 'Enter gift card code',\n\thelperText: 'Apply one gift card or voucher to this order.',\n\tcheck: 'Check balance',\n\tremove: 'Remove',\n\tbalance: 'Available balance',\n\tapplied: 'Applied',\n\tnotFound: 'That gift card code is not valid.',\n};\n\nexport interface VoucherEntryProps {\n\t/** Voucher currently applied, if any. */\n\tappliedCode?: string;\n\t/** Formatted remaining value on the voucher. */\n\tbalance?: string;\n\t/** Validation message for a rejected code. */\n\terror?: string;\n\t/** Whether a code is being checked. */\n\tloading?: boolean;\n\t/** Fired with the trimmed, upper-cased code when the form is submitted. */\n\tonCheck?: (code: string) => void;\n\t/** Fired when an entry is removed. */\n\tonRemove?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<VoucherEntryStrings>;\n}\n","/**\n * VoucherEntry — gift-card / voucher redemption entry.\n *\n * Empty state — leading gift icon input + check button, helper line surfacing\n * errors. Applied state — success-tinted row with check medallion, code,\n * balance amount, and a destructive remove icon.\n *\n * The component owns the input's draft state and nothing else. Submitting the\n * form — by the check button or by Enter — calls `onCheck(code)` with the\n * trimmed, upper-cased code; the consumer looks it up and drives the applied\n * state back in through `appliedCode`, `balance`, `error`, and `loading`.\n * `onRemove` clears an applied voucher.\n */\nimport {\n\ttype FormEvent,\n\tuseId,\n\tuseState } from 'react';\nimport { Check,\n\tGift,\n\tX } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { ContentBlock } from '../../../base/display';\nimport { IconBadge,\n} from '../../../base/display';\nimport { FormField } from '../../../base/forms';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemFooter,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { Input } from '../../../base/text-inputs';\nimport { MonoValue, Value } from '../../../primitives';\nimport { useStrings } from '../../../../lib/strings';\n\nimport { defaultVoucherEntryStrings, type VoucherEntryProps } from './types';\n\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function VoucherEntry({\n\tappliedCode,\n\tbalance,\n\terror,\n\tloading,\n\tonCheck,\n\tonRemove,\n\tclassName,\n\tstrings: stringsProp,\n}: VoucherEntryProps) {\n\tconst strings = useStrings(defaultVoucherEntryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\tconst handleSubmit = (event: FormEvent<HTMLFormElement>) => {\n\t\tevent.preventDefault();\n\t\tif (!trimmedCode) return;\n\t\tonCheck?.(trimmedCode);\n\t};\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<ContentBlock\n\t\t\t\ticon={<Gift className=\"size-icon\" />}\n\t\t\t\ttitle={strings.title}\n\t\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t\t>\n\t\t\t\t<Item size=\"sm\" variant=\"outline\" className=\"items-center gap-x-2.5 gap-y-space-sm border-success/30 bg-success/5\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"md\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t\t\t<ItemTitle className=\"max-w-full\">\n\t\t\t\t\t\t\t\t<MonoValue className=\"tracking-wider\">{appliedCode}</MonoValue>\n\t\t\t\t\t\t\t</ItemTitle>\n\t\t\t\t\t\t\t<Badge tone=\"success\" size=\"sm\">{strings.applied}</Badge>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t<ItemDescription clamp={1}>{strings.balance}</ItemDescription>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemFooter className=\"border-t border-success/15 pt-1\">\n\t\t\t\t\t\t<span />\n\t\t\t\t\t\t<ItemActions className=\"shrink-0 gap-space-sm\">\n\t\t\t\t\t\t\t{!!balance && (\n\t\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"shrink-0 tabular-nums text-success\">\n\t\t\t\t\t\t\t\t\t{balance}\n\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{!!onRemove && (\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\ttone=\"destructive\"\n\t\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\t\tclassName=\"size-action-xs shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<X className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t</ItemFooter>\n\t\t\t\t</Item>\n\t\t\t</ContentBlock>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<Gift className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\tclassName={cn('voucher-entry--component w-full', className)}\n\t\t>\n\t\t\t<form onSubmit={handleSubmit}>\n\t\t\t\t<FormField\n\t\t\t\t\tlabel={strings.inputLabel}\n\t\t\t\t\thtmlFor={inputId}\n\t\t\t\t\terror={error}\n\t\t\t\t\thint={error ? undefined : strings.helperText}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"flex flex-wrap gap-space-md\">\n\t\t\t\t\t\t<div className=\"min-w-48 flex-1\">\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\t\tstartIcon={Gift}\n\t\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.check}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</FormField>\n\t\t\t</form>\n\t\t</ContentBlock>\n\t);\n}\n\nVoucherEntry.displayName = 'VoucherEntry';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport interface CartLineItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display name. */\n\tname?: string;\n\tproductTitle?: string;\n\t/** Surface title. */\n\ttitle?: string;\n\tvariantTitle?: string;\n\tqty: number;\n\tprice: string;\n\timageUrl?: string;\n\timageSrc?: string;\n\tsrc?: string;\n\turl?: string;\n\timageAlt?: string;\n}\n\nexport interface CartSummaryStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Formatted total before tax, shipping, and discounts. */\n\tsubtotal: string;\n\t/** Formatted tax amount. */\n\ttax: string;\n\t/** Formatted shipping cost. */\n\tshipping: string;\n\t/** Formatted discount, shown as a deduction. */\n\tdiscount: string;\n\t/** Formatted order total. */\n\ttotal: string;\n\tcheckout: string;\n}\n\nexport const defaultCartSummaryStrings: CartSummaryStrings = {\n\ttitle: 'Cart',\n\tsubtotal: 'Subtotal',\n\ttax: 'Tax',\n\tshipping: 'Shipping',\n\tdiscount: 'Discount',\n\ttotal: 'Total',\n\tcheckout: 'Checkout',\n};\n\nexport interface CartSummaryCardProps {\n\t/** Line items in the cart. */\n\titems: CartLineItem[];\n\t/** Formatted total before tax, shipping, and discounts. */\n\tsubtotal?: string;\n\t/** Formatted tax amount. */\n\ttax?: string;\n\t/** Formatted shipping cost. */\n\tshipping?: string;\n\t/** Formatted discount, shown as a deduction. */\n\tdiscount?: string;\n\t/** Formatted order total. */\n\ttotal: string;\n\tonCheckout?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<CartSummaryStrings>;\n}\n","/**\n * CartSummaryCard — line-item list with optional subtotal / tax / shipping /\n * discount breakdown and a primary \"Checkout\" action. Items render through\n * `<ItemGroup>` for density consistency; the breakdown rows sit in a tight\n * summary block above the total. The discount value is shown as a signed\n * delta in success colour.\n */\nimport { ShoppingBag } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { Button } from '../../../base/buttons';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { Stack } from '../../../base/structure';\nimport { Initials, Number as NumberValue, Value } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemDescription,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { useStrings } from '../../../../lib/strings';\n\nimport { defaultCartSummaryStrings, type CartLineItem, type CartSummaryCardProps } from './types';\n\nimport { cn } from '../../../../lib/utils';\nimport { formatDeduction } from '../format-signed-amount';\n\nconst resolveCartLineTitle = (item: CartLineItem): string => {\n\treturn [item.productTitle, item.title, item.name].find((value) => !!value?.trim()) ?? item.id;\n};\n\nconst resolveCartLineImageSrc = (item: CartLineItem): string | undefined => {\n\treturn [item.imageUrl, item.imageSrc, item.src, item.url].find((value) => !!value?.trim());\n};\n\nfunction CartLineImagePlaceholder({ title }: { title: string }) {\n\treturn (\n\t\t<div\n\t\t\taria-hidden=\"true\"\n\t\t\tclassName=\"flex size-full items-center justify-center rounded-[inherit] bg-muted ring-1 ring-border/60\"\n\t\t>\n\t\t\t<Initials\n\t\t\t\tvalue={title}\n\t\t\t\tstrategy=\"first-words\"\n\t\t\t\tfallback={title.trim().slice(0, 2).toUpperCase()}\n\t\t\t\tsize=\"xs\"\n\t\t\t\tweight=\"semibold\"\n\t\t\t\ttype=\"secondary\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function CartSummaryCard({\n\titems,\n\tsubtotal,\n\ttax,\n\tshipping,\n\tdiscount,\n\ttotal,\n\tonCheckout,\n\tclassName,\n\tstrings: stringsProp,\n}: CartSummaryCardProps) {\n\tconst strings = useStrings(defaultCartSummaryStrings, stringsProp);\n\tconst hasBreakdown = !!(subtotal || tax || shipping || discount);\n\n\treturn (\n\t\t<ContentBlock icon={<ShoppingBag className=\"size-icon\" />} title={strings.title} className={cn('cart-summary--component w-full', className)}>\n\t\t\t<ItemGroup>\n\t\t\t\t{items.map((it) => {\n\t\t\t\t\tconst title = resolveCartLineTitle(it);\n\t\t\t\t\tconst imageSrc = resolveCartLineImageSrc(it);\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Item key={it.id} className=\"cart-summary--item\">\n\t\t\t\t\t\t\t<ItemMedia variant=\"image\" className=\"cart-summary--item-media\">\n\t\t\t\t\t\t\t\t{imageSrc ? (\n\t\t\t\t\t\t\t\t\t<img src={imageSrc} alt={it.imageAlt ?? title} />\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<CartLineImagePlaceholder title={title} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t<ItemContent className=\"cart-summary--item-content\">\n\t\t\t\t\t\t\t\t<ItemTitle>{title}</ItemTitle>\n\t\t\t\t\t\t\t\t{!!it.variantTitle && (\n\t\t\t\t\t\t\t\t\t<ItemDescription clamp={1}>{it.variantTitle}</ItemDescription>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t<ItemActions className=\"cart-summary--item-actions\">\n\t\t\t\t\t\t\t\t<Stack gap=\"2xs\" align=\"end\" className=\"shrink-0\">\n\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\tx<NumberValue value={it.qty} size=\"xs\" type=\"secondary\" align=\"left\" />\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">{it.price}</Value>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t</Item>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</ItemGroup>\n\n\t\t\t{!!hasBreakdown && (\n\t\t\t\t\t<div className=\"mt-space-lg rounded-radius bg-muted/30 p-surface\">\n\t\t\t\t\t<Stack gap=\"sm\">\n\t\t\t\t\t{!!subtotal && (\n\t\t\t\t\t\t<InlineStat label={strings.subtotal} value={subtotal} mono valueClassName=\"font-medium\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!tax && (\n\t\t\t\t\t\t<InlineStat label={strings.tax} value={tax} mono valueClassName=\"font-medium\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!shipping && (\n\t\t\t\t\t\t<InlineStat label={strings.shipping} value={shipping} mono valueClassName=\"font-medium\" />\n\t\t\t\t\t)}\n\t\t\t\t\t{!!discount && (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlabel={strings.discount}\n\t\t\t\t\t\t\tvalue={formatDeduction(discount)}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tvalueClassName=\"font-semibold text-success\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<Separator className=\"my-space-lg\" />\n\n\t\t\t<InlineStat\n\t\t\t\tlabel={<Text tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{strings.total}</Text>}\n\t\t\t\tvalue={total}\n\t\t\t\tmono\n\t\t\t\tvalueClassName=\"text-base font-bold\"\n\t\t\t/>\n\n\t\t\t{!!onCheckout && (\n\t\t\t\t<Button onClick={onCheckout} fullWidth className=\"mt-space-xl\">{strings.checkout}</Button>\n\t\t\t)}\n\t\t</ContentBlock>\n\t);\n}\n\nCartSummaryCard.displayName = 'CartSummaryCard';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport interface CouponInputStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/**\n\t * Accessible name for the code field. The card shows no visible label — the\n\t * placeholder carries the hint — so this is the field's only accessible\n\t * name, and a placeholder alone is not one: it is not reliably announced and\n\t * disappears as soon as the user types.\n\t */\n\tfieldLabel: string;\n\tplaceholder: string;\n\tapply: string;\n\tremove: string;\n\tapplied: string;\n\tinvalid: string;\n}\n\nexport const defaultCouponInputStrings: CouponInputStrings = {\n\ttitle: 'Have a code?',\n\tfieldLabel: 'Coupon code',\n\tplaceholder: 'Enter coupon code',\n\tapply: 'Apply',\n\tremove: 'Remove',\n\tapplied: 'Applied',\n\tinvalid: 'That code is not valid',\n};\n\nexport interface CouponInputCardProps {\n\t/** Coupon currently applied, if any. */\n\tappliedCode?: string;\n\t/** Formatted discount the coupon grants. */\n\tappliedDiscount?: string;\n\t/** Validation message for a rejected code. */\n\terror?: string;\n\tonApply?: (code: string) => void;\n\t/** Fired when an entry is removed. */\n\tonRemove?: () => void;\n\t/** Whether a code is being checked. */\n\tloading?: boolean;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<CouponInputStrings>;\n}\n","/**\n * CouponInputCard — promo / coupon code entry with an applied state and\n * inline error messaging.\n *\n * Empty state — leading-icon input + apply button, helper line for\n * placeholders or errors. Applied state — success-tinted row with a check\n * medallion, monospaced code, discount delta, and a destructive remove icon.\n */\nimport {\n\tuseState } from 'react';\nimport { Check,\n\tSparkles,\n\tTicketPercent,\n\tX } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { Button } from '../../../base/buttons';\nimport { IconBadge,\n} from '../../../base/display';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemMedia,\n\tItemTitle,\n} from '../../../base/item';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { Input } from '../../../base/text-inputs';\nimport { Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\n\nimport { defaultCouponInputStrings, type CouponInputCardProps } from './types';\n\nimport { cn } from '../../../../lib/utils';\nimport { formatDeduction } from '../format-signed-amount';\nconst normalizeCode = (value: string): string => value.toUpperCase();\n\nexport function CouponInputCard({\n\tappliedCode,\n\tappliedDiscount,\n\terror,\n\tonApply,\n\tonRemove,\n\tloading,\n\tclassName,\n\tstrings: stringsProp,\n}: CouponInputCardProps) {\n\tconst strings = useStrings(defaultCouponInputStrings, stringsProp);\n\tconst [code, setCode] = useState('');\n\tconst trimmedCode = code.trim();\n\n\tif (appliedCode) {\n\t\treturn (\n\t\t\t<ContentBlock icon={<TicketPercent className=\"size-icon\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t\t<Item size=\"sm\" variant=\"muted\" className=\"items-center gap-x-2.5 gap-y-space-sm border border-success/30 bg-success/8\">\n\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t<IconBadge icon={Check} tone=\"success\" size=\"md\" className=\"ring-1 ring-success/20\" />\n\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t{/*\n\t\t\t\t\t\tCode and status share one line so the applied panel matches the\n\t\t\t\t\t\tempty state's control height. Stacking them made this state ~20px\n\t\t\t\t\t\ttaller than the input it replaces, so applying a coupon shifted\n\t\t\t\t\t\teverything below it in the surrounding checkout column.\n\t\t\t\t\t*/}\n\t\t\t\t\t<ItemContent className=\"min-w-0\">\n\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" gap=\"sm\" wrap={false} className=\"min-w-0\">\n\t\t\t\t\t\t\t<ItemTitle className=\"min-w-0 truncate font-mono tracking-wider\">{appliedCode}</ItemTitle>\n\t\t\t\t\t\t\t<DisplayLabel className=\"shrink-0\">\n\t\t\t\t\t\t\t\t{strings.applied}\n\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ItemContent>\n\t\t\t\t\t<ItemActions className=\"ml-auto shrink-0 gap-space-sm\">\n\t\t\t\t\t\t{!!appliedDiscount && (\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\t\ttype=\"success\"\n\t\t\t\t\t\t\t\tclassName=\"tabular-nums shrink-0\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{formatDeduction(appliedDiscount)}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!onRemove && (\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\ttone=\"destructive\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\t\t\tonClick={onRemove}\n\t\t\t\t\t\t\t\taria-label={strings.remove}\n\t\t\t\t\t\t\t\tclassName=\"size-action-xs shrink-0 text-muted-foreground hover:text-destructive\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</ItemActions>\n\t\t\t\t</Item>\n\t\t\t</ContentBlock>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ContentBlock icon={<TicketPercent className=\"size-icon\" />} title={strings.title} className={cn('coupon-input--component w-full', className)}>\n\t\t\t<Stack gap=\"md\">\n\t\t\t\t<div className=\"flex flex-wrap gap-space-md\">\n\t\t\t\t\t<div className=\"min-w-44 flex-1\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tvalue={code}\n\t\t\t\t\t\t\tonChange={(e) => setCode(normalizeCode((e.target as HTMLInputElement).value))}\n\t\t\t\t\t\t\taria-label={strings.fieldLabel}\n\t\t\t\t\t\t\tplaceholder={strings.placeholder}\n\t\t\t\t\t\t\tstartIcon={Sparkles}\n\t\t\t\t\t\t\tautoCapitalize=\"characters\"\n\t\t\t\t\t\t\tspellCheck={false}\n\t\t\t\t\t\t\tclassName=\"font-mono\"\n\t\t\t\t\t\t\tinvalid={Boolean(error)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tonClick={() => onApply?.(trimmedCode)}\n\t\t\t\t\t\tloading={loading}\n\t\t\t\t\t\tdisabled={!trimmedCode}\n\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.apply}\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t{!!error && (\n\t\t\t\t\t<Text size=\"xs\" type=\"error\">{error || strings.invalid}</Text>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nCouponInputCard.displayName = 'CouponInputCard';\n","import type { BadgeTone } from '../../../base/badge';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type OrderStatusKind = 'pending' | 'paid' | 'fulfilled' | 'shipped' | 'delivered' | 'cancelled';\n\nexport interface OrderStatusEvent {\n\t/** Display label. */\n\tlabel: string;\n\t/** Formatted time for the entry. */\n\ttimestamp?: string;\n\tcomplete: boolean;\n}\n\nexport interface OrderStatusStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tstatusLabel: string;\n\teta: string;\n\tlatestEvent: string;\n\tcurrentStep: string;\n}\n\nexport const defaultOrderStatusStrings: OrderStatusStrings = {\n\ttitle: 'Order status',\n\tstatusLabel: 'Current status',\n\teta: 'ETA',\n\tlatestEvent: 'Latest event',\n\tcurrentStep: 'Current step',\n};\n\nexport interface OrderStatusCardProps {\n\t/** Human-facing order reference. */\n\torderNumber: string;\n\t/** Current fulfilment stage. */\n\tstatus: OrderStatusKind;\n\t/** Badge tone for the status chip. */\n\tstatusTone?: BadgeTone;\n\t/** Timeline entries, oldest first. */\n\tevents: OrderStatusEvent[];\n\t/** Formatted delivery estimate. */\n\tcurrentEta?: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<OrderStatusStrings>;\n}\n","/**\n * OrderStatusCard — order number + status badge + readable event timeline.\n * Ideal for dashboards / receipt summaries. Strings overridable for i18n.\n */\nimport { CalendarClock, Check, Circle, Package } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { SecondaryValue, Value } from '../../../primitives';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { Badge } from '../../../base/badge';\nimport { Grid } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultOrderStatusStrings,\n\ttype OrderStatusCardProps,\n\ttype OrderStatusKind,\n} from './types';\n\nconst VARIANT_BY_STATUS: Record<OrderStatusKind, 'primary' | 'success' | 'warning' | 'destructive' | 'info' | 'secondary'> = {\n\tpending: 'warning',\n\tpaid: 'info',\n\tfulfilled: 'info',\n\tshipped: 'primary',\n\tdelivered: 'success',\n\tcancelled: 'destructive',\n};\n\nexport function OrderStatusCard({\n\torderNumber,\n\tstatus,\n\tstatusTone,\n\tevents,\n\tcurrentEta,\n\tclassName,\n\tstrings: stringsProp,\n}: OrderStatusCardProps) {\n\tconst strings = useStrings(defaultOrderStatusStrings, stringsProp);\n\tconst variant = statusTone ?? VARIANT_BY_STATUS[status];\n\tconst lastCompleteIdx = events.reduce((acc, e, i) => (e.complete ? i : acc), -1);\n\tconst latestEvent = events[lastCompleteIdx] ?? events[0];\n\tconst nextEvent = events.find((event) => !event.complete);\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<Package className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={<Badge tone={variant} className=\"capitalize\">{status}</Badge>}\n\t\t\tdescription={`#${orderNumber}`}\n\t\t\tclassName={cn('order-status--component w-full', className)}\n\t\t>\n\t\t\t<div className=\"rounded-radius border border-border bg-muted/20 p-surface\">\n\t\t\t\t<Grid columns={{ base: 1, sm: 3 }} gap=\"lg\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t{strings.statusLabel}\n\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5 capitalize\">\n\t\t\t\t\t\t\t{status}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!latestEvent && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t\t{latestEvent.complete ? strings.latestEvent : strings.currentStep}\n\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"mt-0.5\">\n\t\t\t\t\t\t\t\t{latestEvent.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!currentEta && (\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t\t\t{strings.eta}\n\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t{/* `Value` is inline by default, so without `block` the date\n\t\t\t\t\t\t\t runs straight on from its label (\"ETAMar 29, 2026\") and\n\t\t\t\t\t\t\t the top margin is dropped — the two sibling cells use\n\t\t\t\t\t\t\t block-level `Text` and stack correctly. */}\n\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"mt-0.5 block tabular-nums\">\n\t\t\t\t\t\t\t\t{currentEta}\n\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Grid>\n\t\t\t</div>\n\n\t\t\t{events.length > 0 && (\n\t\t\t\t<ol className=\"mt-space-xl\">\n\t\t\t\t\t{events.map((event, index) => {\n\t\t\t\t\t\tconst isLast = index === events.length - 1;\n\t\t\t\t\t\tconst isCurrent = nextEvent ? event === nextEvent : index === lastCompleteIdx;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={`${event.label}-${index}`} className=\"relative flex gap-space-lg\">\n\t\t\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t'flex size-6 shrink-0 items-center justify-center rounded-full border',\n\t\t\t\t\t\t\t\t\t\t\tevent.complete\n\t\t\t\t\t\t\t\t\t\t\t\t? 'border-success bg-success text-success-foreground'\n\t\t\t\t\t\t\t\t\t\t\t\t: 'border-border bg-card text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t// The up-next marker sits directly beneath success-filled steps,\n\t\t\t\t\t\t\t\t\t\t\t// and primary is a neighbouring hue to success in this theme, so a\n\t\t\t\t\t\t\t\t\t\t\t// 10% ring read as the same state at a glance. A tinted fill plus a\n\t\t\t\t\t\t\t\t\t\t\t// heavier border and ring separate it by weight rather than by hue,\n\t\t\t\t\t\t\t\t\t\t\t// which survives a retheme that moves primary closer to success.\n\t\t\t\t\t\t\t\t\t\t\tisCurrent && !event.complete && 'border-2 border-primary-accent bg-primary/10 text-primary-accent ring-4 ring-primary/30',\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\t\t{event.complete ? (\n\t\t\t\t\t\t\t\t\t\t\t<Check className=\"size-icon-md\" strokeWidth={2.5} />\n\t\t\t\t\t\t\t\t\t\t) : isCurrent ? (\n\t\t\t\t\t\t\t\t\t\t\t<CalendarClock className=\"size-icon-md\" />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<Circle className=\"size-icon-sm\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\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'min-h-6 w-px flex-1',\n\t\t\t\t\t\t\t\t\t\t\t\tindex < lastCompleteIdx ? 'bg-success' : 'bg-border',\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)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div className={cn('min-w-0 flex-1 pb-space-xl', isLast && 'pb-0')}>\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tweight={event.complete || isCurrent ? 'semibold' : 'medium'}\n\t\t\t\t\t\t\t\t\t\tclassName={cn(!event.complete && !isCurrent && 'text-muted-foreground')}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{event.label}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!event.timestamp && (\n\t\t\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"mt-0.5 tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{event.timestamp}\n\t\t\t\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t)}\n\t\t</ContentBlock>\n\t);\n}\n\nOrderStatusCard.displayName = 'OrderStatusCard';\n","import type { StringsProp } from '../../../../lib/strings';\n\nexport type PaymentBrand = 'visa' | 'mastercard' | 'amex' | 'paypal' | 'applepay' | 'googlepay' | 'unknown';\n\nexport interface PaymentMethodStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tdefault: string;\n\tcardHolder: string;\n\texpires: string;\n\tchange: string;\n}\n\nexport const defaultPaymentMethodStrings: PaymentMethodStrings = {\n\ttitle: 'Payment method',\n\tdefault: 'Default',\n\tcardHolder: 'Card holder',\n\texpires: 'Expires',\n\tchange: 'Change',\n};\n\nexport interface PaymentMethodProps {\n\t/** Card network or wallet. */\n\tbrand: PaymentBrand;\n\t/** Last four digits, the only card number this component accepts. */\n\tlast4: string;\n\t/** Expiry in MM/YY form. */\n\texpiry?: string; // MM/YY\n\t/** Name printed on the card. */\n\tholderName?: string;\n\t/** Marks this as the account's default method. */\n\tdefault?: boolean;\n\t/**\n\t * Fired when the \"Change\" action is pressed. It carries no value — the\n\t * component never holds a payment method to hand back — so treat it as a\n\t * request to open your own method picker.\n\t */\n\tonChange?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<PaymentMethodStrings>;\n}\n","/**\n * PaymentMethod — saved-card surface. The hero block is rendered as a\n * mini credit-card mock with real card proportions, brand chip top-right, and\n * holder + expiry on the bottom row. The centre line is drawn as a full PAN\n * but only `last4` is ever supplied — the leading digits are decorative\n * bullets, and the component neither accepts nor stores a full card number.\n * `onChange` is a request to open the consumer's own method picker; it\n * carries no value.\n */\nimport { CreditCard } from 'lucide-react';\nimport { ContentBlock } from '../../../base/display';\nimport { Button } from '../../../base/buttons';\nimport { Value } from '../../../primitives';\nimport { DisplayLabel, Text } from '../../../typography';\nimport { Badge } from '../../../base/badge';\nimport { useStrings } from '../../../../lib/strings';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\n\nimport { defaultPaymentMethodStrings, type PaymentBrand, type PaymentMethodProps } from './types';\n\nconst BRAND_LABEL: Record<PaymentBrand, string> = {\n\tvisa: 'VISA',\n\tmastercard: 'MasterCard',\n\tamex: 'AMEX',\n\tpaypal: 'PayPal',\n\tapplepay: 'Apple Pay',\n\tgooglepay: 'Google Pay',\n\tunknown: 'Card',\n};\n\n/**\n * The card face is an artwork-backed surface, which `--inverse-*` exists for.\n * Brands previously borrowed semantic state colours — a Visa painted `info`,\n * Google Pay `success` — so retheming an alert colour would have repainted\n * every stored card. Those tokens mean states, not brands. Identity comes from\n * the brand label and mark; the surface stays canonical, which also matches how\n * real cards read in an admin list.\n */\n// Translucent gloss composites over its explicit inverse base in both themes.\nconst BRAND_SURFACE = 'bg-inverse-background from-inverse-background via-inverse-surface-strong to-inverse-background';\n\nconst BRAND_GRADIENT: Record<PaymentBrand, string> = {\n\tvisa: BRAND_SURFACE,\n\tmastercard: BRAND_SURFACE,\n\tamex: BRAND_SURFACE,\n\tpaypal: BRAND_SURFACE,\n\tapplepay: BRAND_SURFACE,\n\tgooglepay: BRAND_SURFACE,\n\tunknown: BRAND_SURFACE,\n};\n\nexport function PaymentMethod({\n\tbrand,\n\tlast4,\n\texpiry,\n\tholderName,\n\tdefault: defaultMethod = false,\n\tonChange,\n\tclassName,\n\tstrings: stringsProp,\n}: PaymentMethodProps) {\n\tconst strings = useStrings(defaultPaymentMethodStrings, stringsProp);\n\tconst brandLabel = BRAND_LABEL[brand];\n\tconst gradient = BRAND_GRADIENT[brand];\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<CreditCard className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={defaultMethod ? <Badge tone=\"primary\">{strings.default}</Badge> : null}\n\t\t\theaderAction={onChange ? (\n\t\t\t\t<Button buttonStyle=\"ghost\" tone=\"secondary\" onClick={onChange}>\n\t\t\t\t\t{strings.change}\n\t\t\t\t</Button>\n\t\t\t) : undefined}\n\t\t\tclassName={cn('payment-method--component w-full', className)}\n\t\t>\n\t\t\t{/* Mini card mock */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'relative mx-auto flex aspect-[85.6/53.98] w-full max-w-[22rem] flex-col justify-between overflow-hidden rounded-radius bg-gradient-to-br p-surface text-inverse-foreground shadow-sm ring-1 ring-inverse-border',\n\t\t\t\t\tgradient,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<div className=\"relative flex items-start justify-between\">\n\t\t\t\t\t<div className=\"flex size-7 items-center justify-center rounded-radius-md bg-gradient-to-br from-muted to-muted-foreground/60 shadow-sm\">\n\t\t\t\t\t\t<div className=\"size-icon rounded-radius-sm border border-warning-foreground/25 bg-warning-foreground/15\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tweight=\"bold\"\n\t\t\t\t\t\tclassName=\"rounded bg-inverse-surface px-2 py-0.5 tracking-[0.15em] text-inverse-foreground backdrop-blur-sm\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{brandLabel}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<div className=\"relative\">\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\tclassName=\"block font-mono tracking-[0.25em] text-inverse-foreground\"\n\t\t\t\t\t>\n\t\t\t\t\t\t•••• •••• •••• {last4}\n\t\t\t\t\t</Text>\n\t\t\t\t</div>\n\n\t\t\t\t<Stack direction=\"horizontal\" align=\"end\" justify=\"between\" gap=\"lg\" className=\"relative\">\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t{!!holderName && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DisplayLabel tone=\"inverse\" className=\"block\">{strings.cardHolder}</DisplayLabel>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\" className=\"truncate text-inverse-foreground\">{holderName}</Text>\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{!!expiry && (\n\t\t\t\t\t\t<div className=\"text-right shrink-0\">\n\t\t\t\t\t\t\t<DisplayLabel tone=\"inverse\" className=\"block\">{strings.expires}</DisplayLabel>\n\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums text-inverse-foreground\">{expiry}</Value>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</div>\n\n\t\t</ContentBlock>\n\t);\n}\n\nPaymentMethod.displayName = 'PaymentMethod';\n","import type {\n\tSeoListingCheckId,\n\tSeoListingCheckResult,\n\tSeoListingCheckStatus,\n\tSeoListingScoreInput,\n\tSeoListingScoreLimits,\n\tSeoListingScoreResult,\n} from './types';\n\nexport const DEFAULT_SEO_LISTING_LIMITS: Required<SeoListingScoreLimits> = {\n\ttitleMin: 35,\n\ttitleMax: 60,\n\tdescriptionMin: 120,\n\tdescriptionMax: 160,\n\tpermalinkMax: 75,\n};\n\nfunction resolveLimits(limits?: SeoListingScoreLimits): Required<SeoListingScoreLimits> {\n\treturn {\n\t\t...DEFAULT_SEO_LISTING_LIMITS,\n\t\t...limits,\n\t};\n}\n\nfunction clampScore(value: number): number {\n\tif (!Number.isFinite(value)) return 0;\n\treturn Math.max(0, Math.min(1, value));\n}\n\nfunction getCheckStatus(score: number, maxScore: number): SeoListingCheckStatus {\n\tif (maxScore <= 0) return 'missing';\n\tconst ratio = score / maxScore;\n\tif (ratio >= 0.9) return 'good';\n\tif (ratio >= 0.5) return 'review';\n\treturn 'missing';\n}\n\nfunction makeCheck(\n\tid: SeoListingCheckId,\n\tscoreRatio: number,\n\tmaxScore: number,\n\tactual: number,\n\trange?: Pick<SeoListingCheckResult, 'min' | 'max'>,\n): SeoListingCheckResult {\n\tconst score = Math.round(clampScore(scoreRatio) * maxScore);\n\treturn {\n\t\tid,\n\t\tscore,\n\t\tmaxScore,\n\t\tactual,\n\t\tstatus: getCheckStatus(score, maxScore),\n\t\t...range,\n\t};\n}\n\nfunction lengthScore(value: string, min: number, max: number): number {\n\tconst length = value.trim().length;\n\tif (length === 0) return 0;\n\tif (length >= min && length <= max) return 1;\n\tif (length < min) return Math.max(0.35, length / min);\n\tif (length > max * 2) return 0.35;\n\tconst overBy = length - max;\n\treturn Math.max(0.55, 1 - overBy / max);\n}\n\nexport function getSeoPermalinkPath(permalink?: string): string {\n\tconst value = permalink?.trim() ?? '';\n\tif (!value) return '';\n\n\tconst withoutHash = value.split('#')[0] ?? '';\n\tconst withoutQuery = withoutHash.split('?')[0] ?? '';\n\tconst withoutProtocol = withoutQuery.replace(/^https?:\\/\\/[^/]+/i, '');\n\n\treturn withoutProtocol.replace(/^\\/+|\\/+$/g, '');\n}\n\nexport function getSeoPermalinkSlug(permalink?: string): string {\n\tconst path = getSeoPermalinkPath(permalink);\n\tconst parts = path.split('/').filter(Boolean);\n\treturn parts.at(-1) ?? '';\n}\n\nfunction permalinkScore(permalink?: string, max = DEFAULT_SEO_LISTING_LIMITS.permalinkMax): number {\n\tconst path = getSeoPermalinkPath(permalink);\n\tif (!path) return 0;\n\tif (path.length <= max) return 1;\n\tif (path.length > max * 2) return 0.35;\n\treturn Math.max(0.55, 1 - (path.length - max) / max);\n}\n\nfunction slugScore(permalink?: string): number {\n\tconst slug = getSeoPermalinkSlug(permalink);\n\tif (!slug) return 0;\n\tif (/^[\\p{L}\\p{N}]+(?:-[\\p{L}\\p{N}]+)*$/u.test(slug) && slug === slug.toLowerCase()) {\n\t\treturn 1;\n\t}\n\tif (!/\\s/.test(slug) && !/[?#]/.test(slug)) return 0.65;\n\treturn 0.25;\n}\n\nfunction urlScore(baseUrl?: string): number {\n\tconst value = baseUrl?.trim() ?? '';\n\tif (!value) return 0;\n\tif (/^https:\\/\\//i.test(value)) return 1;\n\tif (/^http:\\/\\//i.test(value)) return 0.6;\n\treturn 0.45;\n}\n\nfunction keywordScore(input: SeoListingScoreInput): number | null {\n\tconst keyword = input.keyword?.trim().toLowerCase();\n\tif (!keyword) return null;\n\n\tconst haystack = [\n\t\tinput.title,\n\t\tinput.description,\n\t\tgetSeoPermalinkPath(input.permalink),\n\t]\n\t\t.filter(Boolean)\n\t\t.join(' ')\n\t\t.toLowerCase();\n\n\tif (!haystack) return 0;\n\treturn haystack.includes(keyword) ? 1 : 0.35;\n}\n\nexport function calculateSeoListingScore(input: SeoListingScoreInput): SeoListingScoreResult {\n\tconst limits = resolveLimits(input.limits);\n\tconst title = input.title?.trim() ?? '';\n\tconst description = input.description?.trim() ?? '';\n\tconst permalinkPath = getSeoPermalinkPath(input.permalink);\n\tconst slug = getSeoPermalinkSlug(input.permalink);\n\tconst checks: SeoListingCheckResult[] = [\n\t\tmakeCheck('title', lengthScore(title, limits.titleMin, limits.titleMax), 30, title.length, {\n\t\t\tmin: limits.titleMin,\n\t\t\tmax: limits.titleMax,\n\t\t}),\n\t\tmakeCheck(\n\t\t\t'description',\n\t\t\tlengthScore(description, limits.descriptionMin, limits.descriptionMax),\n\t\t\t30,\n\t\t\tdescription.length,\n\t\t\t{\n\t\t\t\tmin: limits.descriptionMin,\n\t\t\t\tmax: limits.descriptionMax,\n\t\t\t},\n\t\t),\n\t\tmakeCheck('permalink', permalinkScore(input.permalink, limits.permalinkMax), 15, permalinkPath.length, {\n\t\t\tmax: limits.permalinkMax,\n\t\t}),\n\t\tmakeCheck('slug', slugScore(input.permalink), 10, slug.length),\n\t\tmakeCheck('url', urlScore(input.baseUrl), 10, input.baseUrl?.trim().length ?? 0),\n\t];\n\n\tconst keyword = keywordScore(input);\n\tif (keyword !== null) {\n\t\tchecks.push(makeCheck('keyword', keyword, 5, input.keyword?.trim().length ?? 0));\n\t}\n\n\tconst score = Math.round(\n\t\t(checks.reduce((sum, check) => sum + check.score, 0) /\n\t\t\tchecks.reduce((sum, check) => sum + check.maxScore, 0)) *\n\t\t\t100,\n\t);\n\n\treturn {\n\t\tscore,\n\t\tstatus: getCheckStatus(score, 100),\n\t\tchecks,\n\t\tlimits,\n\t};\n}\n","import type { ReactNode } from 'react';\n\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type SeoListingCheckId =\n\t| 'title'\n\t| 'description'\n\t| 'permalink'\n\t| 'slug'\n\t| 'url'\n\t| 'keyword';\n\nexport type SeoListingCheckStatus = 'good' | 'review' | 'missing';\n\nexport interface SeoListingScoreLimits {\n\ttitleMin?: number;\n\ttitleMax?: number;\n\tdescriptionMin?: number;\n\tdescriptionMax?: number;\n\tpermalinkMax?: number;\n}\n\nexport interface SeoListingScoreInput {\n\t/** Surface title. */\n\ttitle?: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\t/** Full URL shown under the title. */\n\tpermalink?: string;\n\t/** Origin the permalink is built on. */\n\tbaseUrl?: string;\n\t/** Target keyword the copy is scored against. */\n\tkeyword?: string;\n\t/** Character caps for the title and description. */\n\tlimits?: SeoListingScoreLimits;\n}\n\nexport interface SeoListingCheckResult {\n\t/** Stable identity for this entry. */\n\tid: SeoListingCheckId;\n\tstatus: SeoListingCheckStatus;\n\t/** Overall SEO score, 0-100. */\n\tscore: number;\n\tmaxScore: number;\n\tactual: number;\n\tmin?: number;\n\tmax?: number;\n}\n\nexport interface SeoListingScoreResult {\n\t/** Overall SEO score, 0-100. */\n\tscore: number;\n\tstatus: SeoListingCheckStatus;\n\tchecks: SeoListingCheckResult[];\n\t/** Character caps for the title and description. */\n\tlimits: Required<SeoListingScoreLimits>;\n}\n\nexport interface SeoListingCardStrings {\n\t/** Surface title. */\n\ttitle: string;\n\teditLabel: string;\n\tscoreLabel: string;\n\tchecksLabel: string;\n\tsiteFallback: string;\n\ttitleFallback: string;\n\tdescriptionFallback: string;\n\turlFallback: string;\n\tcharacters: string;\n\tmaxLabel: string;\n\ttargetLabel: string;\n\tstatus: Record<SeoListingCheckStatus, string>;\n\tcheckLabels: Record<SeoListingCheckId, string>;\n\tcheckHints: Record<SeoListingCheckId, string>;\n}\n\nexport const defaultSeoListingCardStrings: SeoListingCardStrings = {\n\ttitle: 'Search engine listing',\n\teditLabel: 'Edit search listing',\n\tscoreLabel: 'SEO score',\n\tchecksLabel: 'SEO checks',\n\tsiteFallback: 'Website',\n\ttitleFallback: 'Add an SEO title',\n\tdescriptionFallback: 'Add a meta description to control the search snippet.',\n\turlFallback: 'https://example.com',\n\tcharacters: 'characters',\n\tmaxLabel: 'max',\n\ttargetLabel: 'target',\n\tstatus: {\n\t\tgood: 'Good',\n\t\treview: 'Review',\n\t\tmissing: 'Missing',\n\t},\n\tcheckLabels: {\n\t\ttitle: 'Title',\n\t\tdescription: 'Description',\n\t\tpermalink: 'Permalink',\n\t\tslug: 'Slug format',\n\t\turl: 'URL',\n\t\tkeyword: 'Keyword',\n\t},\n\tcheckHints: {\n\t\ttitle: 'Keep the title inside the target range.',\n\t\tdescription: 'Use a complete meta description inside the target range.',\n\t\tpermalink: 'Keep the permalink readable and below the maximum length.',\n\t\tslug: 'Use lowercase words separated by hyphens.',\n\t\turl: 'Prefer a secure canonical URL.',\n\t\tkeyword: 'Use the focus keyword in the title, description, or permalink.',\n\t},\n};\n\nexport interface SeoListingCardProps {\n\t/** Site name shown in the search preview. */\n\tsiteName?: string;\n\t/** Origin the permalink is built on. */\n\tbaseUrl?: string;\n\t/** Path parts appended to the base URL. */\n\tpathSegments?: string[];\n\t/** Full URL shown under the title. */\n\tpermalink?: string;\n\t/** Surface title. */\n\ttitle?: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\t/** Formatted price shown in the rich result. */\n\tprice?: ReactNode;\n\t/** Target keyword the copy is scored against. */\n\tkeyword?: string;\n\t/** Overall SEO score, 0-100. */\n\tscore?: SeoListingScoreResult;\n\t/** Character caps for the title and description. */\n\tlimits?: SeoListingScoreLimits;\n\t/** Renders the checks. */\n\tshowChecks?: boolean;\n\t/** Fired when an entry is edited. */\n\tonEdit?: () => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<SeoListingCardStrings>;\n}\n","/**\n * SeoListingCard — search-result preview with a reusable SEO score.\n *\n * The card is render-only: consumers own form state and call `onEdit` or\n * compose their own editor around the exported `calculateSeoListingScore`\n * helper. Scoring is intentionally configurable through `limits` so apps can\n * tune their own title, description, and permalink thresholds.\n */\nimport {\n\tCheckCircle2,\n\tCircleAlert,\n\tExternalLink,\n\tGauge,\n\tPencil,\n\tSearch,\n\tTriangleAlert,\n\ttype LucideIcon,\n} from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Badge, type BadgeTone } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { ContentBlock } from '../../../base/display';\nimport { Progress } from '../../../base/feedback';\nimport { Stack } from '../../../base/structure';\nimport { Number as NumberValue, SecondaryValue, Value } from '../../../primitives';\nimport { Text, TextLink } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tcalculateSeoListingScore,\n\tgetSeoPermalinkPath,\n} from './seo-listing-score';\nimport {\n\tdefaultSeoListingCardStrings,\n\ttype SeoListingCardProps,\n\ttype SeoListingCardStrings,\n\ttype SeoListingCheckResult,\n\ttype SeoListingCheckStatus,\n} from './types';\n\n// `good` is success, not info: the row already carries a CheckCircle2, and\n// every other commerce surface (order status, inventory level, discount\n// stack, applied coupon, refund stages) signals a passing state in success\n// green. The review/missing rungs already matched the shared vocabulary.\nconst SCORE_BADGE_TONE: Record<SeoListingCheckStatus, BadgeTone> = {\n\tgood: 'success',\n\treview: 'warning',\n\tmissing: 'destructive',\n};\n\nconst SCORE_PROGRESS_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: '[&_[data-slot=progress-indicator]]:bg-success',\n\treview: '[&_[data-slot=progress-indicator]]:bg-warning',\n\tmissing: '[&_[data-slot=progress-indicator]]:bg-destructive',\n};\n\nconst SCORE_PANEL_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'border-success/20 bg-success/5',\n\treview: 'border-warning/30 bg-warning/10',\n\tmissing: 'border-destructive/20 bg-destructive/5',\n};\n\nconst SCORE_ICON_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'bg-success/10 text-success',\n\treview: 'bg-warning/10 text-warning-accent',\n\tmissing: 'bg-destructive/10 text-destructive',\n};\n\nconst CHECK_ICON: Record<SeoListingCheckStatus, LucideIcon> = {\n\tgood: CheckCircle2,\n\treview: TriangleAlert,\n\tmissing: CircleAlert,\n};\n\nconst CHECK_ICON_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'bg-success/10 text-success',\n\treview: 'bg-warning/10 text-warning-accent',\n\tmissing: 'bg-destructive/10 text-destructive',\n};\n\nconst CHECK_ROW_CLASS: Record<SeoListingCheckStatus, string> = {\n\tgood: 'border-success/25 bg-success/5',\n\treview: 'border-warning/30 bg-warning/10',\n\tmissing: 'border-destructive/20 bg-destructive/5',\n};\n\nfunction trimSlashes(value: string): string {\n\treturn value.replace(/^\\/+|\\/+$/g, '');\n}\n\nfunction buildUrlParts(baseUrl: string, pathSegments: string[], permalink?: string): string[] {\n\tconst path = getSeoPermalinkPath(permalink);\n\tconst permalinkParts = path.split('/').filter(Boolean);\n\treturn [\n\t\tbaseUrl,\n\t\t...pathSegments.map(trimSlashes).filter(Boolean),\n\t\t...permalinkParts,\n\t].filter(Boolean);\n}\n\nfunction buildHref(baseUrl: string, pathSegments: string[], permalink?: string): string | undefined {\n\tif (!baseUrl.trim()) return undefined;\n\tconst base = baseUrl.replace(/\\/+$/g, '');\n\tconst path = [\n\t\t...pathSegments.map(trimSlashes).filter(Boolean),\n\t\t...getSeoPermalinkPath(permalink).split('/').filter(Boolean),\n\t].join('/');\n\n\treturn path ? `${base}/${path}` : base;\n}\n\nfunction getCheckDetail(check: SeoListingCheckResult, strings: SeoListingCardStrings): string {\n\tif (check.id === 'title' || check.id === 'description') {\n\t\treturn `${check.actual}/${check.max} ${strings.characters} · ${strings.targetLabel} ${check.min}-${check.max}`;\n\t}\n\tif (check.id === 'permalink') {\n\t\treturn `${check.actual}/${check.max} ${strings.characters} ${strings.maxLabel}`;\n\t}\n\treturn strings.checkHints[check.id];\n}\n\nfunction SeoCheckRow({\n\tcheck,\n\tdetail,\n\tstrings,\n}: {\n\tcheck: SeoListingCheckResult;\n\tdetail: ReactNode;\n\tstrings: SeoListingCardStrings;\n}) {\n\tconst Icon = CHECK_ICON[check.status];\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'seo-listing-card--check min-w-0 rounded-radius-sm border px-space-lg py-space-md',\n\t\t\t\tCHECK_ROW_CLASS[check.status],\n\t\t\t)}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" gap=\"lg\" align=\"start\" wrap={false}>\n\t\t\t\t<span\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'seo-listing-card--check-icon inline-flex size-icon-lg shrink-0 items-center justify-center rounded-radius-sm',\n\t\t\t\t\t\tCHECK_ICON_CLASS[check.status],\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Icon className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t</span>\n\t\t\t\t<Stack gap=\"dense\" className=\"min-w-0 flex-1\">\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" justify=\"between\" wrap={false}>\n\t\t\t\t\t\t<Text tag=\"span\" weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t\t{strings.checkLabels[check.id]}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\ttone={SCORE_BADGE_TONE[check.status]}\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tinline\n\t\t\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{strings.status[check.status]}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"snug\">\n\t\t\t\t\t\t{detail}\n\t\t\t\t\t</Text>\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</div>\n\t);\n}\n\nexport function SeoListingCard({\n\tsiteName,\n\tbaseUrl,\n\tpathSegments = [],\n\tpermalink,\n\ttitle,\n\tdescription,\n\tprice,\n\tkeyword,\n\tscore,\n\tlimits,\n\tshowChecks = true,\n\tonEdit,\n\tclassName,\n\tstrings: stringsProp,\n}: SeoListingCardProps) {\n\tconst strings = useStrings(defaultSeoListingCardStrings, stringsProp);\n\tconst resolvedBaseUrl = baseUrl?.trim() || strings.urlFallback;\n\tconst resolvedSiteName = siteName?.trim() || strings.siteFallback;\n\tconst resolvedTitle = title?.trim() || strings.titleFallback;\n\tconst resolvedDescription = description?.trim() || strings.descriptionFallback;\n\tconst scoreResult = score ?? calculateSeoListingScore({\n\t\ttitle,\n\t\tdescription,\n\t\tpermalink,\n\t\tbaseUrl,\n\t\tkeyword,\n\t\tlimits,\n\t});\n\tconst href = buildHref(resolvedBaseUrl, pathSegments, permalink);\n\tconst urlParts = buildUrlParts(resolvedBaseUrl, pathSegments, permalink);\n\tconst statusTone = SCORE_BADGE_TONE[scoreResult.status];\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<Search className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\ttitleSuffix={(\n\t\t\t\t<Badge tone={statusTone} size=\"sm\" inline className=\"shrink-0\">\n\t\t\t\t\t{scoreResult.score}/100 {strings.status[scoreResult.status]}\n\t\t\t\t</Badge>\n\t\t\t)}\n\t\t\tclassName={cn('seo-listing-card--component @container/seo-listing-card w-full', className)}\n\t\t\tcontentGap=\"xl\"\n\t\t\theaderAction={\n\t\t\t\tonEdit ? (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\taria-label={strings.editLabel}\n\t\t\t\t\t\tonClick={onEdit}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Pencil className=\"size-icon-sm\" />\n\t\t\t\t\t</Button>\n\t\t\t\t) : undefined\n\t\t\t}\n\t\t>\n\t\t\t{/*\n\t\t\t\t\t`data-artwork` marks this subtree as a depiction of an external\n\t\t\t\t\tproduct rather than part of the consumer's theme. A search result\n\t\t\t\t\tmust look like a search result whatever colour the admin is themed,\n\t\t\t\t\tso the snippet title states Google's link blue outright instead of\n\t\t\t\t\tborrowing `--color-info`, which would have repainted the preview\n\t\t\t\t\twhenever someone retuned their informational-message colour.\n\t\t\t\t*/}\n\t\t\t\t<div data-artwork=\"serp\" className=\"seo-listing-card--preview min-w-0 rounded-radius border border-border/60 bg-background px-control py-space-xl shadow-xs\">\n\t\t\t\t<Stack gap=\"sm\" className=\"min-w-0\">\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" wrap={false}>\n\t\t\t\t\t\t<Text weight=\"medium\" className=\"truncate\">\n\t\t\t\t\t\t\t{resolvedSiteName}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t{!!href && <ExternalLink className=\"size-icon-sm shrink-0 text-muted-foreground\" aria-hidden=\"true\" />}\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<div className=\"seo-listing-card--url flex min-w-0 flex-wrap items-center gap-x-space-sm gap-y-space-2xs\">\n\t\t\t\t\t\t{urlParts.map((part, index) => (\n\t\t\t\t\t\t\t<span key={`${part}-${index}`} className=\"inline-flex min-w-0 items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"truncate\">\n\t\t\t\t\t\t\t\t\t{part}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{index < urlParts.length - 1 && (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t›\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t{href ? (\n\t\t\t\t\t\t<TextLink\n\t\t\t\t\t\t\thref={href}\n\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\t\t\tunderline={false}\n\t\t\t\t\t\t\tclassName=\"seo-listing-card--snippet-title block text-[#1a0dab] dark:text-[#8ab4f8]\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{resolvedTitle}\n\t\t\t\t\t\t</TextLink>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"base\"\n\t\t\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\t\t\tclassName=\"seo-listing-card--snippet-title text-[#1a0dab] dark:text-[#8ab4f8]\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{resolvedTitle}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t\t<Text type=\"secondary\" lineHeight=\"relaxed\" className=\"seo-listing-card--description max-w-4xl\">\n\t\t\t\t\t\t{resolvedDescription}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{!!price && (\n\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"seo-listing-card--price block tabular-nums\">\n\t\t\t\t\t\t\t{price}\n\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t</div>\n\n\t\t\t<div className={cn('seo-listing-card--score overflow-hidden rounded-radius border', SCORE_PANEL_CLASS[scoreResult.status])}>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"lg\" justify=\"between\" wrap={false} className=\"border-b border-border/60 px-control py-space-lg\">\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" wrap={false}>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'seo-listing-card--score-icon inline-flex size-icon-lg shrink-0 items-center justify-center rounded-radius-sm',\n\t\t\t\t\t\t\t\tSCORE_ICON_CLASS[scoreResult.status],\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Gauge className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t\t<Text weight=\"semibold\">{strings.scoreLabel}</Text>\n\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t<NumberValue value={scoreResult.checks.length} size=\"xs\" type=\"secondary\" align=\"left\" /> {strings.checksLabel}\n\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" wrap={false} className=\"shrink-0\">\n\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t{scoreResult.score}/100\n\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t<Badge tone={statusTone} size=\"sm\" inline>\n\t\t\t\t\t\t\t{strings.status[scoreResult.status]}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Stack>\n\t\t\t\t<Stack gap=\"lg\" className=\"px-control py-space-lg\">\n\t\t\t\t\t<Progress\n\t\t\t\t\t\tvalue={scoreResult.score}\n\t\t\t\t\t\taria-label={strings.scoreLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'seo-listing-card--score-progress',\n\t\t\t\t\t\t\t'[&_[data-slot=progress-track]]:h-space-md',\n\t\t\t\t\t\t\tSCORE_PROGRESS_CLASS[scoreResult.status],\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t\t{!!showChecks && (\n\t\t\t\t\t\t<div className=\"seo-listing-card--checks grid gap-x-space-lg gap-y-space-lg @xl/seo-listing-card:grid-cols-2\">\n\t\t\t\t\t\t\t{scoreResult.checks.map((check) => (\n\t\t\t\t\t\t\t\t<SeoCheckRow\n\t\t\t\t\t\t\t\t\tkey={check.id}\n\t\t\t\t\t\t\t\t\tcheck={check}\n\t\t\t\t\t\t\t\t\tdetail={getCheckDetail(check, strings)}\n\t\t\t\t\t\t\t\t\tstrings={strings}\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)}\n\t\t\t\t</Stack>\n\t\t\t</div>\n\t\t</ContentBlock>\n\t);\n}\n\nSeoListingCard.displayName = 'SeoListingCard';\n","import type { BadgeTone } from '../../../base/badge';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type InvoiceStatus = 'paid' | 'pending' | 'overdue';\n\nexport interface InvoiceMiniData {\n\tinvoiceNumber: string;\n\tcustomerName: string;\n\tlineItemsCount: number;\n\ttotalAmount: string;\n\tstatus: InvoiceStatus;\n\tdueDate: string;\n}\n\nexport interface InvoiceMiniStrings {\n\tpaid: string;\n\tpending: string;\n\toverdue: string;\n\titems: (count: number) => string;\n\tdue: string;\n}\n\nexport const defaultInvoiceMiniStrings: InvoiceMiniStrings = {\n\tpaid: 'Paid',\n\tpending: 'Pending',\n\toverdue: 'Overdue',\n\titems: (count) => (count === 1 ? '1 line item' : `${count} line items`),\n\tdue: 'Due',\n};\n\nexport interface InvoiceMiniProps {\n\t/** The invoice to summarise. */\n\tinvoice: InvoiceMiniData;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<InvoiceMiniStrings>;\n}\n\nexport const invoiceStatusTone: Record<InvoiceStatus, BadgeTone> = {\n\tpaid: 'success',\n\tpending: 'warning',\n\toverdue: 'destructive',\n};\n","/**\n * InvoiceMini — compact invoice tile for lists / dashboards. Header\n * (number + status chip), customer name, footer split between items-count /\n * due date and the total amount. Strings (status labels, \"Due\", item count\n * pluralisation) overridable for i18n via the `strings` prop.\n */\nimport { Badge } from '../../../base/badge';\nimport { Stack } from '../../../base/structure';\nimport { MonoValue, SecondaryValue, Value } from '../../../primitives';\nimport { Text } from '../../../typography/text';\nimport { mergeStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultInvoiceMiniStrings,\n\tinvoiceStatusTone,\n\ttype InvoiceMiniProps,\n\ttype InvoiceStatus,\n} from './types';\n\nexport function InvoiceMini({\n\tinvoice,\n\tclassName,\n\tstrings: stringsProp,\n}: InvoiceMiniProps) {\n\tconst strings = mergeStrings(defaultInvoiceMiniStrings, stringsProp);\n\tconst labelByStatus: Record<InvoiceStatus, string> = {\n\t\tpaid: strings.paid,\n\t\tpending: strings.pending,\n\t\toverdue: strings.overdue,\n\t};\n\n\treturn (\n\t\t<Stack\n\t\t\tgap=\"md\"\n\t\t\tdata-component=\"invoice-mini\"\n\t\t\tdata-slot=\"invoice-mini\"\n\t\t\tclassName={cn('invoice-mini--component', className)}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" gap=\"md\" justify=\"between\" wrap={false}>\n\t\t\t\t<MonoValue className=\"min-w-0 flex-1 truncate tracking-wide\">\n\t\t\t\t\t{invoice.invoiceNumber}\n\t\t\t\t</MonoValue>\n\t\t\t\t<Badge\n\t\t\t\t\ttone={invoiceStatusTone[invoice.status]}\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tdot\n\t\t\t\t\tclassName=\"shrink-0\"\n\t\t\t\t>\n\t\t\t\t\t{labelByStatus[invoice.status]}\n\t\t\t\t</Badge>\n\t\t\t</Stack>\n\n\t\t\t<Text type=\"secondary\" className=\"truncate\">\n\t\t\t\t{invoice.customerName}\n\t\t\t</Text>\n\n\t\t\t<Stack direction=\"horizontal\" gap=\"lg\" align=\"end\" justify=\"between\" className=\"pt-space-xs\">\n\t\t\t\t<Stack gap=\"2xs\" className=\"min-w-0\">\n\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t{strings.items(invoice.lineItemsCount)}\n\t\t\t\t\t</Text>\n\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"whitespace-nowrap tabular-nums\">\n\t\t\t\t\t\t{strings.due} {invoice.dueDate}\n\t\t\t\t\t</SecondaryValue>\n\t\t\t\t</Stack>\n\t\t\t\t<Value\n\t\t\t\t\tsize=\"base\"\n\t\t\t\t\tweight=\"bold\"\n\t\t\t\t\tclassName={cn('ml-auto shrink-0 tabular-nums leading-none')}\n\t\t\t\t>\n\t\t\t\t\t{invoice.totalAmount}\n\t\t\t\t</Value>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nInvoiceMini.displayName = 'InvoiceMini';\n","import type { BadgeTone } from '../../../base/badge';\nimport type { StringsProp } from '../../../../lib/strings';\n\nimport type { InvoiceStatus } from '../invoice-mini/types';\n\nexport interface InvoiceParty {\n\t/** Display name. */\n\tname: string;\n\tlocation?: string;\n}\n\nexport interface InvoiceHeaderStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tbillFrom: string;\n\tbillTo: string;\n\tissued: string;\n\tdue: string;\n\tamountDue: string;\n\t/** Chip label for each `InvoiceStatus`. */\n\tpaid: string;\n\tpending: string;\n\toverdue: string;\n}\n\nexport const defaultInvoiceHeaderStrings: InvoiceHeaderStrings = {\n\ttitle: 'Invoice',\n\tbillFrom: 'Bill From',\n\tbillTo: 'Bill To',\n\tissued: 'Issued',\n\tdue: 'Due',\n\tamountDue: 'Amount Due',\n\tpaid: 'Paid',\n\tpending: 'Pending',\n\toverdue: 'Overdue',\n};\n\nexport interface InvoiceHeaderProps {\n\t/** Human-facing invoice reference. */\n\tinvoiceNumber: string;\n\t/**\n\t * Payment state. Drives both the chip label (through `strings`) and its\n\t * tone, so the two can never disagree. Shares the `InvoiceStatus` union\n\t * with `InvoiceMini`.\n\t */\n\tstatus: InvoiceStatus;\n\t/**\n\t * Overrides the badge tone derived from `status`. Reach for it only when\n\t * the surrounding surface needs a tone the status does not imply.\n\t */\n\tstatusTone?: BadgeTone;\n\t/** Issuing party. */\n\tfrom: InvoiceParty;\n\t/** Billed party. */\n\tto: InvoiceParty;\n\t/** Formatted issue date. */\n\tissuedDate?: string;\n\t/** Formatted due date. */\n\tdueDate?: string;\n\t/** Formatted invoice total. */\n\tamount: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<InvoiceHeaderStrings>;\n}\n","/**\n * InvoiceHeader — invoice document header.\n *\n * Top row: invoice number (mono, prominent) + status chip.\n * Middle: Bill-from / Bill-to parties as a 2-col grid that stacks on small\n * screens and uses an uppercase-tracking-wider eyebrow + name + secondary\n * location.\n * Bottom: dates on the leading edge + amount-due block on the trailing edge.\n *\n * Strings overridable for i18n via the `strings` prop.\n */\nimport { Badge } from '../../../base/badge';\nimport { Heading } from '../../../typography/heading';\nimport { DisplayLabel } from '../../../typography/display-label';\nimport { Text } from '../../../typography/text';\nimport { InlineStat } from '../../data-display';\nimport { Separator } from '../../../base/display/separator';\nimport { Grid, Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { invoiceStatusTone, type InvoiceStatus } from '../invoice-mini/types';\nimport { defaultInvoiceHeaderStrings, type InvoiceHeaderProps } from './types';\n\nfunction PartyBlock({\n\teyebrow,\n\tname,\n\tlocation,\n}: {\n\teyebrow: string;\n\tname: string;\n\tlocation?: string;\n}) {\n\treturn (\n\t\t<Stack gap=\"xs\" className=\"invoice-header--party\">\n\t\t\t<DisplayLabel>\n\t\t\t\t{eyebrow}\n\t\t\t</DisplayLabel>\n\t\t\t<Text weight=\"semibold\" className=\"leading-snug\">\n\t\t\t\t{name}\n\t\t\t</Text>\n\t\t\t{!!location && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"leading-snug\">\n\t\t\t\t\t{location}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n}\n\nexport function InvoiceHeader({\n\tinvoiceNumber,\n\tstatus,\n\tstatusTone,\n\tfrom,\n\tto,\n\tissuedDate,\n\tdueDate,\n\tamount,\n\tclassName,\n\tstrings: stringsProp,\n}: InvoiceHeaderProps) {\n\tconst strings = useStrings(defaultInvoiceHeaderStrings, stringsProp);\n\tconst labelByStatus: Record<InvoiceStatus, string> = {\n\t\tpaid: strings.paid,\n\t\tpending: strings.pending,\n\t\toverdue: strings.overdue,\n\t};\n\t// The tone follows the status the same way `InvoiceMini` resolves it, so\n\t// an overdue invoice can no longer inherit a green chip from a default.\n\tconst resolvedStatusTone = statusTone ?? invoiceStatusTone[status];\n\n\treturn (\n\t\t<Stack\n\t\t\tgap=\"2xl\"\n\t\t\tdata-component=\"invoice-header\"\n\t\t\tdata-slot=\"invoice-header\"\n\t\t\tclassName={cn('invoice-header--component min-w-0', className)}\n\t\t\taria-label={strings.title}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"lg\">\n\t\t\t\t<Text\n\t\t\t\t\tweight=\"bold\"\n\t\t\t\t\tclassName=\"font-mono tracking-wide\"\n\t\t\t\t>\n\t\t\t\t\t{invoiceNumber}\n\t\t\t\t</Text>\n\t\t\t\t<Badge tone={resolvedStatusTone}>{labelByStatus[status]}</Badge>\n\t\t\t</Stack>\n\n\t\t\t<Grid columns={{ base: 1, sm: 2 }} gap={{ base: 'xl', sm: '2xl' }}>\n\t\t\t\t<PartyBlock eyebrow={strings.billFrom} name={from.name} location={from.location} />\n\t\t\t\t<PartyBlock eyebrow={strings.billTo} name={to.name} location={to.location} />\n\t\t\t</Grid>\n\n\t\t\t<Separator />\n\n\t\t\t<Stack direction=\"horizontal\" gap=\"xl\" align=\"end\" justify=\"between\">\n\t\t\t\t<Stack gap=\"xs\">\n\t\t\t\t\t{!!issuedDate && (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlayout=\"inline\"\n\t\t\t\t\t\t\tlabel={strings.issued}\n\t\t\t\t\t\t\tvalue={issuedDate}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tvalueClassName=\"font-medium\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!dueDate && (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlayout=\"inline\"\n\t\t\t\t\t\t\tlabel={strings.due}\n\t\t\t\t\t\t\tvalue={dueDate}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tvalueClassName=\"font-medium\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t\t<div className=\"text-right\">\n\t\t\t\t\t<DisplayLabel>\n\t\t\t\t\t\t{strings.amountDue}\n\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\t\tclassName={cn('mt-1 text-base tabular-nums leading-none tracking-tight border-none pb-0')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{amount}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n}\n\nInvoiceHeader.displayName = 'InvoiceHeader';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\n\n/** Default line-item shape used by the concise InvoiceLineItems mode. */\nexport interface InvoiceLineItem {\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tqty: number;\n\tprice: number;\n\t/** Total number of records across all pages. */\n\ttotal: number;\n}\n\n/**\n * Per-column definition. Each column declares how to render its header label\n * and a row's cell. Generic over the row type so consumers can pass arbitrary\n * data without losing type safety.\n */\nexport interface InvoiceColumn<TItem = InvoiceLineItem> {\n\t/** Stable identity for this entry. */\n\tid: string;\n\theader: ReactNode;\n\t/** Tailwind class for the column's grid track (e.g. `'1fr'`, `'80px'`). */\n\twidth?: string;\n\talign?: 'left' | 'right' | 'center';\n\tcell: (item: TItem, index: number) => ReactNode;\n\t/** Class names appended to header cell. */\n\theaderClassName?: string;\n\t/** Class names appended to each row cell of this column. */\n\tcellClassName?: string;\n}\n\n/** A footer row (totals, taxes, etc.). Ordered as written. */\nexport interface InvoiceLineItemsFooterRow {\n\t/** Display label. */\n\tlabel: ReactNode;\n\tvalue: ReactNode;\n\t/** Emphasis for the row. `total` renders bold + thicker top spacing. */\n\temphasis?: 'normal' | 'total';\n}\n\nexport interface InvoiceLineItemsStrings {\n\titem: string;\n\tquantity: string;\n\tprice: string;\n\tsubtotal: string;\n\ttax: string;\n\t/** Total number of records across all pages. */\n\ttotal: string;\n}\n\nexport const defaultInvoiceLineItemsStrings: InvoiceLineItemsStrings = {\n\titem: 'Item',\n\tquantity: 'Qty',\n\tprice: 'Price',\n\tsubtotal: 'Subtotal',\n\ttax: 'Tax',\n\ttotal: 'Total',\n};\n\nexport interface InvoiceLineItemsProps<TItem = InvoiceLineItem> {\n\t/** Line items on the invoice. */\n\titems: TItem[];\n\t/** Optional custom columns. Defaults to Description / Qty / Price / Total. */\n\tcolumns?: InvoiceColumn<TItem>[];\n\t/** Optional custom footer rows. When omitted with the default columns, an\n\t * auto-computed subtotal / tax / total footer is used. */\n\tfooterRows?: InvoiceLineItemsFooterRow[];\n\t/** Tax ratio for the default footer (`0.2` means 20%). @default 0.2 */\n\ttaxRate?: number;\n\t/** ISO 4217 code for default monetary cells. Falls back to UIProvider. */\n\tcurrency?: string;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<InvoiceLineItemsStrings>;\n}\n","/**\n * InvoiceLineItems — flexible invoice line-item table.\n *\n * Generic over the row type. Pass custom `columns` and `footerRows` for any\n * shape of data. Without those, uses the concise default\n * `InvoiceLineItem` shape (description / qty / price / total) with an\n * auto-computed subtotal / tax / total footer.\n */\nimport type { ReactNode } from 'react';\n\nimport { DisplayLabel } from '../../../typography/display-label';\nimport { Text } from '../../../typography/text';\nimport { Separator } from '../../../base/display/separator';\nimport { Stack } from '../../../base/structure';\nimport { Money, Number as NumberValue, Percent, Value } from '../../../primitives';\nimport { useStrings } from '../../../../lib/strings';\nimport { useMoneyConfig } from '../../../../lib/ui-provider';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultInvoiceLineItemsStrings,\n\ttype InvoiceColumn,\n\ttype InvoiceLineItem,\n\ttype InvoiceLineItemsFooterRow,\n\ttype InvoiceLineItemsProps,\n} from './types';\n\nconst wrapperGlass = 'border border-border shadow-sm';\n\nconst ALIGN_CLASS = {\n\tleft: 'text-left justify-start',\n\tright: 'text-right justify-end',\n\tcenter: 'text-center justify-center',\n} as const;\n\nfunction InvoiceCurrencyValue({\n\tamount,\n\tcurrency,\n\tweight = 'regular',\n}: {\n\tamount: number;\n\tcurrency: string;\n\tweight?: 'regular' | 'bold';\n}) {\n\treturn (\n\t\t<Money\n\t\t\tamount={amount}\n\t\t\tcurrency={currency}\n\t\t\tminimumFractionDigits={2}\n\t\t\tmaximumFractionDigits={2}\n\t\t\tweight={weight}\n\t\t/>\n\t);\n}\n\nfunction buildDefaultColumns(\n\tcurrency: string,\n\tstrings: typeof defaultInvoiceLineItemsStrings,\n): InvoiceColumn<InvoiceLineItem>[] {\n\treturn [\n\t\t{\n\t\t\tid: 'description',\n\t\t\theader: strings.item,\n\t\t\twidth: 'minmax(0,1fr)',\n\t\t\tcell: (item) => <Text className=\"break-words\">{item.description}</Text>,\n\t\t},\n\t\t{\n\t\t\tid: 'qty',\n\t\t\theader: strings.quantity,\n\t\t\twidth: '36px',\n\t\t\talign: 'center',\n\t\t\tcell: (item) => <NumberValue value={item.qty} align=\"center\" />,\n\t\t},\n\t\t{\n\t\t\tid: 'price',\n\t\t\theader: strings.price,\n\t\t\twidth: '82px',\n\t\t\talign: 'right',\n\t\t\tcell: (item) => <InvoiceCurrencyValue amount={item.price} currency={currency} />,\n\t\t},\n\t\t{\n\t\t\tid: 'total',\n\t\t\theader: strings.total,\n\t\t\twidth: '82px',\n\t\t\talign: 'right',\n\t\t\tcell: (item) => <InvoiceCurrencyValue amount={item.total} currency={currency} />,\n\t\t},\n\t];\n}\n\nfunction buildDefaultFooterRows(\n\titems: InvoiceLineItem[],\n\ttaxRate: number,\n\tcurrency: string,\n\tstrings: typeof defaultInvoiceLineItemsStrings,\n): InvoiceLineItemsFooterRow[] {\n\tconst subtotal = items.reduce((s, i) => s + i.total, 0);\n\tconst tax = Math.round(subtotal * taxRate * 100) / 100;\n\tconst total = subtotal + tax;\n\treturn [\n\t\t{ label: strings.subtotal, value: <InvoiceCurrencyValue amount={subtotal} currency={currency} /> },\n\t\t{\n\t\t\tlabel: <>{strings.tax} (<Percent value={taxRate} />)</>,\n\t\t\tvalue: <InvoiceCurrencyValue amount={tax} currency={currency} />,\n\t\t},\n\t\t{ label: strings.total, value: <InvoiceCurrencyValue amount={total} currency={currency} weight=\"bold\" />, emphasis: 'total' },\n\t];\n}\n\nexport function InvoiceLineItems<TItem = InvoiceLineItem>({\n\titems,\n\tcolumns,\n\tfooterRows,\n\ttaxRate = 0.2,\n\tcurrency,\n\tclassName,\n\tstrings: stringsProp,\n}: InvoiceLineItemsProps<TItem>) {\n\tconst strings = useStrings(defaultInvoiceLineItemsStrings, stringsProp);\n\tconst { defaultCurrency } = useMoneyConfig();\n\tconst resolvedCurrency = currency ?? defaultCurrency ?? '€';\n\n\t// Boundary casts: the default builders are intentionally non-generic and\n\t// only run in concise default mode where the consumer didn't pass\n\t// `columns`. In that mode the runtime row shape IS `InvoiceLineItem` —\n\t// the cast is the documented bridge between the generic `<TItem>` API\n\t// and the concrete default shape.\n\tconst resolvedColumns: InvoiceColumn<TItem>[] =\n\t\tcolumns ?? (buildDefaultColumns(resolvedCurrency, strings) as unknown as InvoiceColumn<TItem>[]);\n\n\tconst resolvedFooterRows: InvoiceLineItemsFooterRow[] = footerRows\n\t\t?? (columns\n\t\t\t? []\n\t\t\t: buildDefaultFooterRows(items as unknown as InvoiceLineItem[], taxRate, resolvedCurrency, strings));\n\n\tconst gridTemplate = columns ? resolvedColumns.map((c) => c.width ?? '1fr').join(' ') : undefined;\n\tconst defaultGrid = 'grid-cols-3 @lg/invoice-line-items:grid-cols-[minmax(0,1fr)_36px_82px_82px]';\n\n\treturn (\n\t\t<div className={cn('invoice-line-items--component', '@container/invoice-line-items w-full min-w-0 max-w-full overflow-hidden rounded-radius bg-card', wrapperGlass, className)}>\n\t\t\t{/* Header */}\n\t\t\t<div\n\t\t\t\tclassName={cn('invoice-line-items--header min-w-0 gap-space-md bg-muted/40 px-row-x py-row-y', columns ? 'grid' : ['hidden @lg/invoice-line-items:grid', defaultGrid])}\n\t\t\t\tstyle={{ gridTemplateColumns: gridTemplate }}\n\t\t\t>\n\t\t\t\t{resolvedColumns.map((col) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'flex min-w-0',\n\t\t\t\t\t\t\tALIGN_CLASS[col.align ?? 'left'],\n\t\t\t\t\t\t\tcol.headerClassName,\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<DisplayLabel className=\"min-w-0 truncate\">\n\t\t\t\t\t\t\t{col.header}\n\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t{/* Rows */}\n\t\t\t{items.map((item, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={i}\n\t\t\t\t\tclassName={cn('invoice-line-items--row grid min-w-0 gap-space-md px-row-x py-row-y', !columns && defaultGrid, i % 2 === 1 && 'bg-muted/20')}\n\t\t\t\t\tstyle={{ gridTemplateColumns: gridTemplate }}\n\t\t\t\t>\n\t\t\t\t\t{resolvedColumns.map((col) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={col.id}\n\t\t\t\t\t\t\tdata-column={col.id}\n\t\t\t\t\t\t\tclassName={cn('min-w-0', columns ? ['flex items-center', ALIGN_CLASS[col.align ?? 'left']] : col.id === 'description' ? 'col-span-full @lg/invoice-line-items:col-span-1' : ['grid gap-space-xs', col.align === 'center' ? 'text-center justify-items-center' : 'text-right justify-items-end'], col.cellClassName)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{!columns && col.id !== 'description' && <DisplayLabel className=\"@lg/invoice-line-items:hidden\">{col.header}</DisplayLabel>}\n\t\t\t\t\t\t\t{col.cell(item, i)}\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\n\t\t\t{/* Footer */}\n\t\t\t{resolvedFooterRows.length > 0 && (\n\t\t\t\t<>\n\t\t\t\t\t<Separator />\n\t\t\t\t\t<div className=\"invoice-line-items--footer p-surface\">\n\t\t\t\t\t<Stack gap=\"sm\">\n\t\t\t\t\t\t{resolvedFooterRows.map((row, idx) => (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tkey={idx}\n\t\t\t\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\t\t\t\tjustify=\"between\"\n\t\t\t\t\t\t\t\talign=\"baseline\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\trow.emphasis === 'total' && 'pt-space-md',\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<Text\n\t\t\t\t\t\t\t\t\ttype={row.emphasis === 'total' ? undefined : 'secondary'}\n\t\t\t\t\t\t\t\t\tweight={row.emphasis === 'total' ? 'bold' : 'regular'}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{row.label}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{isSimpleText(row.value) ? (\n\t\t\t\t\t\t\t\t\t<Value weight={row.emphasis === 'total' ? 'bold' : 'regular'}>\n\t\t\t\t\t\t\t\t\t\t{row.value}\n\t\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<div className=\"invoice-line-items--footer-value shrink-0\">{row.value}</div>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\nInvoiceLineItems.displayName = 'InvoiceLineItems';\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n","import { ContentBlock } from '../../../base/display';\nimport { cn } from '../../../../lib/utils';\n\nimport { Timeline, type TimelineItem } from '../../timelines';\nimport type { OrderTimelineProps } from './types';\n\nexport function OrderTimeline({\n\ttitle,\n\tdescription,\n\tevents,\n\tfooterText,\n\tclassName,\n}: OrderTimelineProps) {\n\tconst items: TimelineItem[] = events.map((event) => ({\n\t\tid: event.id,\n\t\ttitle: event.title,\n\t\tdescription: event.description,\n\t\ttimestamp: event.timestamp,\n\t\tstatus: event.status,\n\t}));\n\n\treturn (\n\t\t<ContentBlock\n\t\t\tdata-component=\"order-timeline\"\n\t\t\tdata-slot=\"order-timeline\"\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tfooterText={footerText}\n\t\t\tclassName={cn('order-timeline--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} />\n\t\t</ContentBlock>\n\t);\n}\n\nOrderTimeline.displayName = 'OrderTimeline';\n","import { Value } from '../../../primitives';\nimport { cn } from '../../../../lib/utils';\n\nimport { Timeline, type TimelineItem } from '../../timelines';\nimport type { PaymentTimelineProps } from './types';\n\nexport function PaymentTimeline({ events, className }: PaymentTimelineProps) {\n\tconst items: TimelineItem[] = events.map((event, index) => ({\n\t\tid: `${event.label}-${String(index)}`,\n\t\ttitle: event.label,\n\t\tdescription: event.date,\n\t\ticon: event.icon,\n\t\tstatus: event.done ? 'success' : 'pending',\n\t\tchildren: event.amount ? (\n\t\t\t<Value weight=\"medium\" className=\"tabular-nums text-success\">\n\t\t\t\t{event.amount}\n\t\t\t</Value>\n\t\t) : undefined,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"payment-timeline\"\n\t\t\tdata-slot=\"payment-timeline\"\n\t\t\tclassName={cn('payment-timeline--component min-w-0', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"lg\" />\n\t\t</div>\n\t);\n}\n\nPaymentTimeline.displayName = 'PaymentTimeline';\n","import type { SelectOption } from '../../../base/choice-inputs';\nimport type { WeightUnit } from '../../../base/forms-numeric';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type InventoryPolicy = 'deny' | 'continue';\nexport type InventoryStatus = 'in_stock' | 'low_stock' | 'out_of_stock' | 'untracked';\n\nexport interface InventorySectionValue {\n\tsku?: string;\n\tbarcode?: string;\n\ttrackQuantity?: boolean;\n\tavailable?: string;\n\tcommitted?: string;\n\tincoming?: string;\n\tlowStockThreshold?: string;\n\tinventoryPolicy?: InventoryPolicy;\n\tlocationId?: string;\n\tbinLocation?: string;\n\trequiresShipping?: boolean;\n\tweight?: string;\n\tweightUnit?: WeightUnit;\n\tcountryOfOrigin?: string;\n\thsCode?: string;\n\ttags?: string[];\n}\n\nexport type InventorySectionField = keyof InventorySectionValue;\n\nexport type InventorySectionName =\n\t| 'summary'\n\t| 'identity'\n\t| 'tracking'\n\t| 'location'\n\t| 'shipping'\n\t| 'customs'\n\t| 'tags';\n\nexport interface InventorySectionChange {\n\tfield: InventorySectionField;\n\tvalue: InventorySectionValue[InventorySectionField];\n\tpreviousValue: InventorySectionValue[InventorySectionField];\n}\n\nexport interface InventorySectionMetric {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Display label. */\n\tlabel: string;\n\tvalue: string;\n\t/** Supporting copy shown under the label. */\n\tdescription?: string;\n\t/** Semantic tone driving the entry's colour. */\n\ttone?: 'default' | 'success' | 'warning' | 'error' | 'info';\n}\n\nexport interface InventorySectionStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tstatus: Record<InventoryStatus, string>;\n\tsections: Record<Exclude<InventorySectionName, 'summary'>, string>;\n\tfields: Record<InventorySectionField, string>;\n\tplaceholders: Partial<Record<InventorySectionField, string>>;\n\thints: Partial<Record<InventorySectionField, string>>;\n\t/** Overflow menu for the surface as a whole. */\n\tactions: {\n\t\tgenerateSku: string;\n\t\trestock: string;\n\t};\n\tpolicyOptions: Record<InventoryPolicy, {\n\t\tlabel: string;\n\t\tdescription: string;\n\t}>;\n\tsummary: {\n\t\tavailable: string;\n\t\tcommitted: string;\n\t\tincoming: string;\n\t\tthreshold: string;\n\t\tuntracked: string;\n\t};\n\ttagInput: {\n\t\tplaceholder: string;\n\t\temptyRecommendations: string;\n\t\tclearAll: string;\n\t\tsummary: (current: number, max: number) => string;\n\t};\n}\n\nexport const defaultInventorySectionStrings: InventorySectionStrings = {\n\ttitle: 'Inventory',\n\tdescription: 'Manage stock tracking, availability, fulfillment, and compliance details.',\n\tstatus: {\n\t\tin_stock: 'In stock',\n\t\tlow_stock: 'Low stock',\n\t\tout_of_stock: 'Out of stock',\n\t\tuntracked: 'Not tracked',\n\t},\n\tsections: {\n\t\tidentity: 'Identifiers',\n\t\ttracking: 'Stock tracking',\n\t\tlocation: 'Location',\n\t\tshipping: 'Shipping',\n\t\tcustoms: 'Customs',\n\t\ttags: 'Tags',\n\t},\n\tfields: {\n\t\tsku: 'SKU',\n\t\tbarcode: 'Barcode',\n\t\ttrackQuantity: 'Track quantity',\n\t\tavailable: 'Available',\n\t\tcommitted: 'Committed',\n\t\tincoming: 'Incoming',\n\t\tlowStockThreshold: 'Low-stock threshold',\n\t\tinventoryPolicy: 'When sold out',\n\t\tlocationId: 'Stock location',\n\t\tbinLocation: 'Bin / shelf',\n\t\trequiresShipping: 'Requires shipping',\n\t\tweight: 'Weight',\n\t\tweightUnit: 'Weight unit',\n\t\tcountryOfOrigin: 'Country of origin',\n\t\thsCode: 'HS code',\n\t\ttags: 'Inventory tags',\n\t},\n\tplaceholders: {\n\t\tsku: 'BAL-750-CL',\n\t\tbarcode: 'Scan or enter barcode',\n\t\tavailable: '0',\n\t\tcommitted: '0',\n\t\tincoming: '0',\n\t\tlowStockThreshold: '5',\n\t\tlocationId: 'Select location',\n\t\tbinLocation: 'Aisle / shelf / bin',\n\t\tweight: '0.00',\n\t\tcountryOfOrigin: 'Country code or name',\n\t\thsCode: 'e.g. 2204.21',\n\t\ttags: 'Add tag...',\n\t},\n\thints: {\n\t\tsku: 'Internal stock keeping unit.',\n\t\tbarcode: 'GTIN, UPC, EAN, ISBN, or internal scan code.',\n\t\tavailable: 'Units currently sellable at this location.',\n\t\tcommitted: 'Units already reserved by open orders.',\n\t\tincoming: 'Units expected from transfers, suppliers, or production.',\n\t\tlowStockThreshold: 'Used for low-stock warnings.',\n\t\tinventoryPolicy: 'Choose whether checkout should block when inventory reaches zero.',\n\t\tlocationId: 'Where this inventory is stocked or fulfilled from.',\n\t\tbinLocation: 'Optional warehouse shelf, bay, or bin reference.',\n\t\tweight: 'Used for shipping rates and fulfillment labels.',\n\t\tcountryOfOrigin: 'Required for international customs in many markets.',\n\t\thsCode: 'Harmonized System tariff code for customs.',\n\t\ttags: 'Optional operational labels such as preorder, seasonal, or batch codes.',\n\t},\n\tactions: {\n\t\tgenerateSku: 'Generate SKU',\n\t\trestock: 'Restock',\n\t},\n\tpolicyOptions: {\n\t\tdeny: {\n\t\t\tlabel: 'Stop selling',\n\t\t\tdescription: 'Block checkout when available inventory reaches zero.',\n\t\t},\n\t\tcontinue: {\n\t\t\tlabel: 'Continue selling',\n\t\t\tdescription: 'Allow backorders or made-to-order fulfillment.',\n\t\t},\n\t},\n\tsummary: {\n\t\tavailable: 'Available',\n\t\tcommitted: 'Committed',\n\t\tincoming: 'Incoming',\n\t\tthreshold: 'Low-stock at',\n\t\tuntracked: 'Inventory is not tracked for this product.',\n\t},\n\ttagInput: {\n\t\tplaceholder: 'Add inventory tag...',\n\t\temptyRecommendations: 'No matching tags.',\n\t\tclearAll: 'Clear tags',\n\t\tsummary: (current, max) => `${current} / ${max} tags`,\n\t},\n};\n\nexport interface InventorySectionCardProps {\n\t/** Current field values for every inventory section. Controlled. */\n\tvalue: InventorySectionValue;\n\t/** Fired with the next value. */\n\tonValueChange?: (value: InventorySectionValue, change: InventorySectionChange) => void;\n\t/** Validation messages keyed by field, rendered under the matching control. */\n\terrors?: Partial<Record<InventorySectionField, string>>;\n\t/** Renders the entry as unselectable. */\n\tdisabled?: boolean;\n\t/** Renders every field as read-only text instead of an editable control. */\n\treadOnly?: boolean;\n\t/** Which sections are shown. Omitted sections default to visible. */\n\tvisibleSections?: Partial<Record<InventorySectionName, boolean>>;\n\t/** Which individual fields are shown. Omitted fields default to visible. */\n\tvisibleFields?: Partial<Record<InventorySectionField, boolean>>;\n\t/** Choices for the stock-location select. */\n\tlocationOptions?: SelectOption[];\n\t/** Choices for the country-of-origin select. */\n\tcountryOptions?: SelectOption[];\n\t/** Suggested tags offered beneath the tag input. */\n\ttagRecommendations?: string[];\n\t/** Caps how many tags may be added. */\n\tmaxTags?: number;\n\tonGenerateSku?: (value: InventorySectionValue) => string | void;\n\tonRestock?: (value: InventorySectionValue) => void;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<InventorySectionStrings>;\n}\n","/**\n * InventorySectionCard — controlled commerce inventory form card.\n *\n * The component owns no persistence and performs no routing. Consumers pass a\n * `value` object, receive field-level `onValueChange` updates, and decide how to\n * submit or validate. Section and field visibility props let apps reuse the\n * same surface for physical products, digital products, variants, and location\n * level inventory without forking the component.\n */\nimport { Barcode, PackageCheck, RefreshCw, Sparkles } from 'lucide-react';\n\nimport { Badge, type BadgeTone } from '../../../base/badge';\nimport { Button } from '../../../base/buttons';\nimport { ContentBlock } from '../../../base/display';\nimport { CardRadioGroup, Select, ToggleField } from '../../../base/choice-inputs';\nimport { FormField } from '../../../base/forms';\nimport { Input } from '../../../base/text-inputs';\nimport { TagsInput } from '../../../base/value-inputs';\nimport { DecimalInput, WeightInput } from '../../../base/forms-numeric';\nimport { Grid, Stack } from '../../../base/structure';\nimport { Value } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultInventorySectionStrings,\n\ttype InventoryPolicy,\n\ttype InventorySectionCardProps,\n\ttype InventorySectionField,\n\ttype InventorySectionMetric,\n\ttype InventorySectionName,\n\ttype InventorySectionValue,\n\ttype InventoryStatus,\n} from './types';\n\nconst STATUS_VARIANT: Record<InventoryStatus, BadgeTone> = {\n\tin_stock: 'success',\n\tlow_stock: 'warning',\n\tout_of_stock: 'destructive',\n\tuntracked: 'secondary',\n};\n\nconst METRIC_TONE_CLASS: Record<NonNullable<InventorySectionMetric['tone']>, string> = {\n\tdefault: 'border-border/60 bg-muted/20',\n\tsuccess: 'border-success/20 bg-success/5',\n\twarning: 'border-warning/30 bg-warning/10',\n\terror: 'border-destructive/20 bg-destructive/5',\n\tinfo: 'border-info/20 bg-info/5',\n};\n\nfunction parseQuantity(value?: string): number | undefined {\n\tif (value === undefined || value.trim() === '') return undefined;\n\tconst parsed = Number(value);\n\treturn Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction getInventoryStatus(value: InventorySectionValue): InventoryStatus {\n\tconst isTracked = value.trackQuantity ?? true;\n\tif (!isTracked) return 'untracked';\n\n\tconst available = parseQuantity(value.available) ?? 0;\n\tif (available <= 0) return 'out_of_stock';\n\n\tconst threshold = parseQuantity(value.lowStockThreshold);\n\tif (threshold !== undefined && available <= threshold) return 'low_stock';\n\n\treturn 'in_stock';\n}\n\nfunction getMetricTone(metricId: string, status: InventoryStatus): InventorySectionMetric['tone'] {\n\tif (metricId === 'available') {\n\t\tif (status === 'in_stock') return 'success';\n\t\tif (status === 'low_stock') return 'warning';\n\t\tif (status === 'out_of_stock') return 'error';\n\t\treturn 'default';\n\t}\n\t// `available` above is the only metric carrying a state: it tracks the actual\n\t// stock status and turns amber, then red, as that degrades. `incoming` was\n\t// tinted `info` unconditionally — a fixed decoration wearing a state token,\n\t// which left two of four tiles coloured for no reason a reader could infer.\n\t// A pending restock is a plain number until something is wrong with it.\n\treturn 'default';\n}\n\nfunction SectionHeading({ children, className }: { children: string; className?: string }) {\n\treturn (\n\t\t<Text weight=\"semibold\" className={cn('inventory-section-card--section-title', className)}>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nfunction SummaryMetric({ metric }: { metric: InventorySectionMetric }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'inventory-section-card--metric min-w-0 rounded-radius-sm border px-space-lg py-space-md',\n\t\t\t\tMETRIC_TONE_CLASS[metric.tone ?? 'default'],\n\t\t\t)}\n\t\t>\n\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t{metric.label}\n\t\t\t</Text>\n\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t{metric.value}\n\t\t\t</Value>\n\t\t\t{!!metric.description && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"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\nexport function InventorySectionCard({\n\tvalue,\n\tonValueChange,\n\terrors,\n\tdisabled = false,\n\treadOnly = false,\n\tvisibleSections,\n\tvisibleFields,\n\tlocationOptions = [],\n\tcountryOptions = [],\n\ttagRecommendations,\n\tmaxTags,\n\tonGenerateSku,\n\tonRestock,\n\tclassName,\n\tstrings: stringsProp,\n}: InventorySectionCardProps) {\n\tconst strings = useStrings(defaultInventorySectionStrings, stringsProp);\n\tconst status = getInventoryStatus(value);\n\tconst isDisabled = disabled || readOnly;\n\tconst isTracked = value.trackQuantity ?? true;\n\tconst requiresShipping = value.requiresShipping ?? true;\n\tconst shippingFieldsDisabled = isDisabled || !requiresShipping;\n\n\tconst isSectionVisible = (section: InventorySectionName) => visibleSections?.[section] !== false;\n\tconst isFieldVisible = (field: InventorySectionField) => visibleFields?.[field] !== false;\n\n\tconst updateField = <TField extends InventorySectionField>(\n\t\tfield: TField,\n\t\tnextValue: InventorySectionValue[TField],\n\t) => {\n\t\tconst previousValue = value[field];\n\t\tconst next = {\n\t\t\t...value,\n\t\t\t[field]: nextValue,\n\t\t};\n\n\t\tonValueChange?.(next, {\n\t\t\tfield,\n\t\t\tvalue: nextValue,\n\t\t\tpreviousValue,\n\t\t});\n\t};\n\n\tconst handleGenerateSku = () => {\n\t\tif (!onGenerateSku || isDisabled) return;\n\t\tconst generatedSku = onGenerateSku(value);\n\t\tif (typeof generatedSku === 'string') {\n\t\t\tupdateField('sku', generatedSku);\n\t\t}\n\t};\n\n\tconst metrics: InventorySectionMetric[] = [\n\t\t{\n\t\t\tid: 'available',\n\t\t\tlabel: strings.summary.available,\n\t\t\tvalue: isTracked ? value.available || '0' : '-',\n\t\t\t// `summary.threshold` is the *label* of the low-stock tile, not a\n\t\t\t// sentence — using it here rendered a dangling \"Low-stock at\" under\n\t\t\t// the available count with no number attached, duplicating a tile\n\t\t\t// that already carries both. Only the untracked case needs a caption,\n\t\t\t// to explain why the value reads \"-\".\n\t\t\tdescription: isTracked ? undefined : strings.summary.untracked,\n\t\t\ttone: getMetricTone('available', status),\n\t\t},\n\t\t{\n\t\t\tid: 'committed',\n\t\t\tlabel: strings.summary.committed,\n\t\t\tvalue: value.committed || '0',\n\t\t\ttone: getMetricTone('committed', status),\n\t\t},\n\t\t{\n\t\t\tid: 'incoming',\n\t\t\tlabel: strings.summary.incoming,\n\t\t\tvalue: value.incoming || '0',\n\t\t\ttone: getMetricTone('incoming', status),\n\t\t},\n\t\t{\n\t\t\tid: 'threshold',\n\t\t\tlabel: strings.summary.threshold,\n\t\t\tvalue: value.lowStockThreshold || '-',\n\t\t\ttone: getMetricTone('threshold', status),\n\t\t},\n\t];\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ticon={<PackageCheck className=\"size-icon\" />}\n\t\t\ttitle={strings.title}\n\t\t\tdescription={strings.description}\n\t\t\ttitleSuffix={<Badge tone={STATUS_VARIANT[status]}>{strings.status[status]}</Badge>}\n\t\t\theaderAction={\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\tgap=\"sm\"\n\t\t\t\t\tclassName=\"w-full @md/inventory-section-card:w-auto @md/inventory-section-card:justify-end\"\n\t\t\t\t>\n\t\t\t\t\t{!!onGenerateSku && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tonClick={handleGenerateSku}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Sparkles className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{strings.actions.generateSku}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!onRestock && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\tonClick={() => onRestock(value)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<RefreshCw className=\"size-icon-sm\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t{strings.actions.restock}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t}\n\t\t\theaderDivider\n\t\t\tclassName={cn('inventory-section-card--component @container/inventory-section-card w-full', className)}\n\t\t\theaderClassName=\"@max-md/inventory-section-card:flex-col @max-md/inventory-section-card:items-stretch\"\n\t\t\tcontentGap=\"xl\"\n\t\t>\n\t\t\t{!!isSectionVisible('summary') && (\n\t\t\t\t<div className=\"inventory-section-card--summary grid min-w-0 grid-cols-1 gap-space-md @md/inventory-section-card:grid-cols-2 @3xl/inventory-section-card:grid-cols-4\">\n\t\t\t\t\t{metrics.map((metric) => (\n\t\t\t\t\t\t<SummaryMetric key={metric.id} metric={metric} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('identity') && (\n\t\t\t\t<Stack render={<section />} gap=\"md\" className=\"inventory-section-card--identity\">\n\t\t\t\t\t<SectionHeading>{strings.sections.identity}</SectionHeading>\n\t\t\t\t\t<Grid>\n\t\t\t\t\t\t{!!isFieldVisible('sku') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.sku} error={errors?.sku} hint={strings.hints.sku}>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.sku ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('sku', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.sku}\n\t\t\t\t\t\t\t\t\tstartIcon={PackageCheck}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.sku}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('barcode') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.barcode} error={errors?.barcode} hint={strings.hints.barcode}>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.barcode ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('barcode', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.barcode}\n\t\t\t\t\t\t\t\t\tstartIcon={Barcode}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.barcode}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('tracking') && (\n\t\t\t\t<Stack\n\t\t\t\t\trender={<section />}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName=\"inventory-section-card--tracking border-t border-border/60 pt-space-xl\"\n\t\t\t\t>\n\t\t\t\t\t<SectionHeading>{strings.sections.tracking}</SectionHeading>\n\t\t\t\t\t{!!isFieldVisible('trackQuantity') && (\n\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\tlabel={strings.fields.trackQuantity}\n\t\t\t\t\t\t\tdescription={strings.hints.available}\n\t\t\t\t\t\t\tvalue={isTracked}\n\t\t\t\t\t\t\tonValueChange={(checked) => updateField('trackQuantity', checked)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"inventory-section-card--tracking-grid grid min-w-0 grid-cols-1 gap-space-xl @md/inventory-section-card:grid-cols-2 @3xl/inventory-section-card:grid-cols-4\">\n\t\t\t\t\t\t{!!isFieldVisible('available') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.available} error={errors?.available} hint={strings.hints.available}>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.available ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('available', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.available}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.available}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('committed') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.committed} error={errors?.committed} hint={strings.hints.committed}>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.committed ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('committed', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.committed}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.committed}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('incoming') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.incoming} error={errors?.incoming} hint={strings.hints.incoming}>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.incoming ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('incoming', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.incoming}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.incoming}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('lowStockThreshold') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.lowStockThreshold}\n\t\t\t\t\t\t\t\terror={errors?.lowStockThreshold}\n\t\t\t\t\t\t\t\thint={strings.hints.lowStockThreshold}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DecimalInput\n\t\t\t\t\t\t\t\t\tvalue={value.lowStockThreshold ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('lowStockThreshold', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.lowStockThreshold}\n\t\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\t\tdecimalPlaces={0}\n\t\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.lowStockThreshold}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t{!!isFieldVisible('inventoryPolicy') && (\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tlabel={strings.fields.inventoryPolicy}\n\t\t\t\t\t\t\terror={errors?.inventoryPolicy}\n\t\t\t\t\t\t\thint={strings.hints.inventoryPolicy}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CardRadioGroup\n\t\t\t\t\t\t\t\tcolumns={2}\n\t\t\t\t\t\t\t\tvalue={value.inventoryPolicy ?? 'deny'}\n\t\t\t\t\t\t\t\tonValueChange={(nextValue) => updateField('inventoryPolicy', nextValue as InventoryPolicy)}\n\t\t\t\t\t\t\t\tdisabled={isDisabled || !isTracked}\n\t\t\t\t\t\t\t\tinvalid={!!errors?.inventoryPolicy}\n\t\t\t\t\t\t\t\toptions={[\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tvalue: 'deny',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.policyOptions.deny.label,\n\t\t\t\t\t\t\t\t\t\tdescription: strings.policyOptions.deny.description,\n\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\t\tvalue: 'continue',\n\t\t\t\t\t\t\t\t\t\tlabel: strings.policyOptions.continue.label,\n\t\t\t\t\t\t\t\t\t\tdescription: strings.policyOptions.continue.description,\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/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('location') && (\n\t\t\t\t<Stack\n\t\t\t\t\trender={<section />}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName=\"inventory-section-card--location border-t border-border/60 pt-space-xl\"\n\t\t\t\t>\n\t\t\t\t\t<SectionHeading>{strings.sections.location}</SectionHeading>\n\t\t\t\t\t<Grid>\n\t\t\t\t\t\t{!!isFieldVisible('locationId') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.locationId} error={errors?.locationId} hint={strings.hints.locationId}>\n\t\t\t\t\t\t\t\t{locationOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={value.locationId ?? null}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(nextValue) => updateField('locationId', nextValue)}\n\t\t\t\t\t\t\t\t\t\toptions={locationOptions}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.locationId}\n\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.locationId}\n\t\t\t\t\t\t\t\t\t\tallowClear\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\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={value.locationId ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('locationId', event.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.locationId}\n\t\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.locationId}\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</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('binLocation') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.binLocation}\n\t\t\t\t\t\t\t\terror={errors?.binLocation}\n\t\t\t\t\t\t\t\thint={strings.hints.binLocation}\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.binLocation ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('binLocation', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.binLocation}\n\t\t\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.binLocation}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('shipping') && (\n\t\t\t\t<Stack\n\t\t\t\t\trender={<section />}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName=\"inventory-section-card--shipping border-t border-border/60 pt-space-xl\"\n\t\t\t\t>\n\t\t\t\t\t<SectionHeading>{strings.sections.shipping}</SectionHeading>\n\t\t\t\t\t{!!isFieldVisible('requiresShipping') && (\n\t\t\t\t\t\t<ToggleField\n\t\t\t\t\t\t\tlabel={strings.fields.requiresShipping}\n\t\t\t\t\t\t\tdescription={strings.hints.weight}\n\t\t\t\t\t\t\tvalue={requiresShipping}\n\t\t\t\t\t\t\tonValueChange={(checked) => updateField('requiresShipping', checked)}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!isFieldVisible('weight') && (\n\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\tlabel={strings.fields.weight}\n\t\t\t\t\t\t\terror={errors?.weight ?? errors?.weightUnit}\n\t\t\t\t\t\t\thint={strings.hints.weight}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WeightInput\n\t\t\t\t\t\t\t\tvalue={value.weight ?? ''}\n\t\t\t\t\t\t\t\tunit={value.weightUnit ?? 'kg'}\n\t\t\t\t\t\t\t\tonChange={(event) => updateField('weight', event.target.value)}\n\t\t\t\t\t\t\t\tonUnitChange={(unit) => updateField('weightUnit', unit)}\n\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\tinvalid={!!errors?.weight || !!errors?.weightUnit}\n\t\t\t\t\t\t\t\tdecimalPlaces={2}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</FormField>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('customs') && (\n\t\t\t\t<Stack\n\t\t\t\t\trender={<section />}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName=\"inventory-section-card--customs border-t border-border/60 pt-space-xl\"\n\t\t\t\t>\n\t\t\t\t\t<SectionHeading>{strings.sections.customs}</SectionHeading>\n\t\t\t\t\t<Grid>\n\t\t\t\t\t\t{!!isFieldVisible('countryOfOrigin') && (\n\t\t\t\t\t\t\t<FormField\n\t\t\t\t\t\t\t\tlabel={strings.fields.countryOfOrigin}\n\t\t\t\t\t\t\t\terror={errors?.countryOfOrigin}\n\t\t\t\t\t\t\t\thint={strings.hints.countryOfOrigin}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{countryOptions.length > 0 ? (\n\t\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\t\tvalue={value.countryOfOrigin ?? null}\n\t\t\t\t\t\t\t\t\t\tonValueChange={(nextValue) => updateField('countryOfOrigin', nextValue)}\n\t\t\t\t\t\t\t\t\t\toptions={countryOptions}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tallowClear\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\t\t<Input\n\t\t\t\t\t\t\t\t\t\tvalue={value.countryOfOrigin ?? ''}\n\t\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('countryOfOrigin', event.target.value)}\n\t\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.countryOfOrigin}\n\t\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\t\tinvalid={!!errors?.countryOfOrigin}\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</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!isFieldVisible('hsCode') && (\n\t\t\t\t\t\t\t<FormField label={strings.fields.hsCode} error={errors?.hsCode} hint={strings.hints.hsCode}>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tvalue={value.hsCode ?? ''}\n\t\t\t\t\t\t\t\t\tonChange={(event) => updateField('hsCode', event.target.value)}\n\t\t\t\t\t\t\t\t\tplaceholder={strings.placeholders.hsCode}\n\t\t\t\t\t\t\t\t\tdisabled={shippingFieldsDisabled}\n\t\t\t\t\t\t\t\t\tinvalid={!!errors?.hsCode}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FormField>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t)}\n\n\t\t\t{!!isSectionVisible('tags') && !!isFieldVisible('tags') && (\n\t\t\t\t<Stack\n\t\t\t\t\trender={<section />}\n\t\t\t\t\tgap=\"md\"\n\t\t\t\t\tclassName=\"inventory-section-card--tags border-t border-border/60 pt-space-xl\"\n\t\t\t\t>\n\t\t\t\t\t<SectionHeading>{strings.sections.tags}</SectionHeading>\n\t\t\t\t\t<FormField label={strings.fields.tags} error={errors?.tags} hint={strings.hints.tags}>\n\t\t\t\t\t\t<TagsInput\n\t\t\t\t\t\t\tvalue={value.tags ?? []}\n\t\t\t\t\t\t\tonValueChange={(nextTags) => updateField('tags', nextTags)}\n\t\t\t\t\t\t\trecommendations={tagRecommendations}\n\t\t\t\t\t\t\tmaxTags={maxTags}\n\t\t\t\t\t\t\tshowMaxTags={maxTags !== undefined}\n\t\t\t\t\t\t\tdisabled={isDisabled}\n\t\t\t\t\t\t\tinvalid={!!errors?.tags}\n\t\t\t\t\t\t\tstrings={strings.tagInput}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</ContentBlock>\n\t);\n}\n\nInventorySectionCard.displayName = 'InventorySectionCard';\n"],"mappings":"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"}