themelia-react-ui 1.0.1 → 1.0.2

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 (488) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +59 -13
  3. package/dist/{accordion-B-5Focs8.js → accordion-BRTcsp8J.js} +8 -8
  4. package/dist/accordion-BRTcsp8J.js.map +1 -0
  5. package/dist/{action-menu-Cx3SdfbN.js → action-menu-Drxw_vJk.js} +36 -36
  6. package/dist/action-menu-Drxw_vJk.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CL84ZN9A.js +63 -0
  8. package/dist/affordance-geometry.generated-CL84ZN9A.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-DLVdK0Py.js} +151 -155
  10. package/dist/ai-artifact-DLVdK0Py.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-C_fKpljx.js} +11 -10
  12. package/dist/app-shell-C_fKpljx.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-DbjUWsP0.js} +12 -12
  14. package/dist/{attachment-BO2R47wn.js.map → attachment-DbjUWsP0.js.map} +1 -1
  15. package/dist/auth-CAQcasMV.js +723 -0
  16. package/dist/auth-CAQcasMV.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-Bu2HhitA.js} +6 -6
  18. package/dist/{avatar-Bpzty83c.js.map → avatar-Bu2HhitA.js.map} +1 -1
  19. package/dist/{badge-BZXZT9wd.js → badge-CzId1Wlm.js} +4 -4
  20. package/dist/{badge-BZXZT9wd.js.map → badge-CzId1Wlm.js.map} +1 -1
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +25 -27
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +150 -148
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +40 -43
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +1 -1
  51. package/dist/base/repeaters.js +33 -33
  52. package/dist/base/repeaters.js.map +1 -1
  53. package/dist/base/sheet.js +1 -1
  54. package/dist/base/sidebar.js +1 -1
  55. package/dist/base/signature-pad.js +83 -81
  56. package/dist/base/signature-pad.js.map +1 -1
  57. package/dist/base/skeleton.js +1 -1
  58. package/dist/base/spinner.js +1 -1
  59. package/dist/base/structure.js +1 -1
  60. package/dist/base/table.js +1 -1
  61. package/dist/base/text-inputs.js +2 -2
  62. package/dist/base/toaster.js +6 -6
  63. package/dist/base/toaster.js.map +1 -1
  64. package/dist/base/tree.js +1 -1
  65. package/dist/base/upload-queue.js +1 -1
  66. package/dist/base/upload.js +3 -3
  67. package/dist/base/value-inputs.js +1 -1
  68. package/dist/blocks/admin.js +134 -134
  69. package/dist/blocks/admin.js.map +1 -1
  70. package/dist/blocks/ai.js +120 -117
  71. package/dist/blocks/ai.js.map +1 -1
  72. package/dist/blocks/analytics/usage-card.js +1 -1
  73. package/dist/blocks/analytics.js +510 -472
  74. package/dist/blocks/analytics.js.map +1 -1
  75. package/dist/blocks/collaboration.js +2 -2
  76. package/dist/blocks/commerce/receipt.js +1 -1
  77. package/dist/blocks/commerce.js +395 -383
  78. package/dist/blocks/commerce.js.map +1 -1
  79. package/dist/blocks/data-display.js +1 -1
  80. package/dist/blocks/onboarding.js +6 -6
  81. package/dist/blocks/onboarding.js.map +1 -1
  82. package/dist/blocks/planning.js +36 -36
  83. package/dist/blocks/planning.js.map +1 -1
  84. package/dist/blocks/timelines.js +1 -1
  85. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BuYz5SDU.js} +9 -8
  86. package/dist/breadcrumbs-BuYz5SDU.js.map +1 -0
  87. package/dist/button-BZDasD04.js +651 -0
  88. package/dist/button-BZDasD04.js.map +1 -0
  89. package/dist/{button-BS6l5JUw.js → button-BZyfTvwm.js} +3 -3
  90. package/dist/button-BZyfTvwm.js.map +1 -0
  91. package/dist/buttons-D_6KJvEE.js +99 -0
  92. package/dist/buttons-D_6KJvEE.js.map +1 -0
  93. package/dist/{cards-Cum56XOF.js → cards-qGSErLw_.js} +12 -12
  94. package/dist/{cards-Cum56XOF.js.map → cards-qGSErLw_.js.map} +1 -1
  95. package/dist/chart-Bsc5BICK.js +150 -0
  96. package/dist/chart-Bsc5BICK.js.map +1 -0
  97. package/dist/{checkbox-BavDRjF7.js → checkbox-BQNDjUCh.js} +3 -3
  98. package/dist/checkbox-BQNDjUCh.js.map +1 -0
  99. package/dist/choice-inputs-Mk3iWbhr.js +725 -0
  100. package/dist/choice-inputs-Mk3iWbhr.js.map +1 -0
  101. package/dist/{code-block-xHKbAJDj.js → code-block-DzHKRybS.js} +23 -23
  102. package/dist/code-block-DzHKRybS.js.map +1 -0
  103. package/dist/{collapsible-DsnktFNv.js → collapsible-ClvC7Bj3.js} +3 -3
  104. package/dist/{collapsible-DsnktFNv.js.map → collapsible-ClvC7Bj3.js.map} +1 -1
  105. package/dist/{collection-content-C4fthJV_.js → collection-content-D6S8cv_n.js} +3 -3
  106. package/dist/{collection-content-C4fthJV_.js.map → collection-content-D6S8cv_n.js.map} +1 -1
  107. package/dist/{combobox-DEbdr-3u.js → combobox-BFnbJJp3.js} +18 -18
  108. package/dist/combobox-BFnbJJp3.js.map +1 -0
  109. package/dist/{combobox-xv3yJbzl.js → combobox-hozNwUcc.js} +313 -316
  110. package/dist/combobox-hozNwUcc.js.map +1 -0
  111. package/dist/{command-C0xe7u9B.js → command-BnmSchli.js} +9 -9
  112. package/dist/command-BnmSchli.js.map +1 -0
  113. package/dist/comments-u5L0OGip.js +1156 -0
  114. package/dist/comments-u5L0OGip.js.map +1 -0
  115. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  116. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  117. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  118. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  119. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  120. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  121. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  122. package/dist/components/base/date-pickers/datepicker.types.d.ts +3 -0
  123. package/dist/components/base/forms/form-field.d.ts +1 -0
  124. package/dist/components/base/forms/form-sizing.d.ts +3 -3
  125. package/dist/components/base/navigation/tabs.d.ts +3 -5
  126. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  127. package/dist/components/base/table/index.d.ts +1 -1
  128. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  129. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  130. package/dist/components/blocks/analytics/types.d.ts +1 -1
  131. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  132. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  133. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  134. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  135. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  136. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  137. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  138. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  139. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  140. package/dist/components/features/media-library/media-library.d.ts +1 -1
  141. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  142. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  143. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  144. package/dist/components/features/overlays/overlays.types.d.ts +5 -4
  145. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  146. package/dist/components/features/table/data-table.d.ts +1 -1
  147. package/dist/components/features/table/table.types.d.ts +1 -1
  148. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  149. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  150. package/dist/components/layout/page/page.d.ts +0 -1
  151. package/dist/components/layout/page/page.types.d.ts +9 -3
  152. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  153. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  154. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  155. package/dist/components/typography/heading.d.ts +5 -2
  156. package/dist/components/typography/index.d.ts +1 -1
  157. package/dist/components/typography/text.styles.d.ts +10 -0
  158. package/dist/components/ui/popover.d.ts +1 -1
  159. package/dist/components/ui/sidebar.d.ts +1 -1
  160. package/dist/components/ui/table.d.ts +2 -1
  161. package/dist/container.recipes-D9t8MHR3.js +27 -0
  162. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  163. package/dist/{containers-6s-ucRQQ.js → containers-DqB-bSYE.js} +33 -56
  164. package/dist/containers-DqB-bSYE.js.map +1 -0
  165. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  166. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  167. package/dist/{copyable-B7SBXJMr.js → copyable-BTSByfmq.js} +6 -6
  168. package/dist/{copyable-B7SBXJMr.js.map → copyable-BTSByfmq.js.map} +1 -1
  169. package/dist/{data-display-cWIRdeaf.js → data-display-Bihs9Ven.js} +545 -332
  170. package/dist/data-display-Bihs9Ven.js.map +1 -0
  171. package/dist/{date-BFNMnrS5.js → date-DOKhJPu7.js} +4 -4
  172. package/dist/{date-BFNMnrS5.js.map → date-DOKhJPu7.js.map} +1 -1
  173. package/dist/{date-picker-CA6ogMQB.js → date-picker-DzP5HQq7.js} +492 -472
  174. package/dist/date-picker-DzP5HQq7.js.map +1 -0
  175. package/dist/date-pickers-BpgGz7S-.js +196 -0
  176. package/dist/date-pickers-BpgGz7S-.js.map +1 -0
  177. package/dist/{display-CFM5myut.js → display-CS6Hbk18.js} +8 -8
  178. package/dist/{display-CFM5myut.js.map → display-CS6Hbk18.js.map} +1 -1
  179. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-D-boNgGO.js} +7 -7
  180. package/dist/{dropdown-menu-BlnyHr-9.js.map → dropdown-menu-D-boNgGO.js.map} +1 -1
  181. package/dist/features/activities.js +152 -141
  182. package/dist/features/activities.js.map +1 -1
  183. package/dist/features/ai-chat.js +182 -179
  184. package/dist/features/ai-chat.js.map +1 -1
  185. package/dist/features/async-preview.js +9 -9
  186. package/dist/features/async-preview.js.map +1 -1
  187. package/dist/features/combobox.js +1 -1
  188. package/dist/features/comments.js +1 -1
  189. package/dist/features/data-view.js +25 -23
  190. package/dist/features/data-view.js.map +1 -1
  191. package/dist/features/email-composer/engine.js +1 -1
  192. package/dist/features/email-composer.js +103 -104
  193. package/dist/features/email-composer.js.map +1 -1
  194. package/dist/features/event-calendar.js +375 -373
  195. package/dist/features/event-calendar.js.map +1 -1
  196. package/dist/features/filters.js +1 -1
  197. package/dist/features/global-search.js +222 -224
  198. package/dist/features/global-search.js.map +1 -1
  199. package/dist/features/kanban.js +29 -29
  200. package/dist/features/kanban.js.map +1 -1
  201. package/dist/features/map.js +59 -58
  202. package/dist/features/map.js.map +1 -1
  203. package/dist/features/media-library.js +856 -855
  204. package/dist/features/media-library.js.map +1 -1
  205. package/dist/features/mentions.js +1 -1
  206. package/dist/features/overlays.js +1 -1
  207. package/dist/features/products.js +1209 -1209
  208. package/dist/features/products.js.map +1 -1
  209. package/dist/features/questionnaire.js +52 -52
  210. package/dist/features/questionnaire.js.map +1 -1
  211. package/dist/features/resource-assignment.js +29 -31
  212. package/dist/features/resource-assignment.js.map +1 -1
  213. package/dist/features/resource.js +13 -13
  214. package/dist/features/resource.js.map +1 -1
  215. package/dist/features/rich-text-editor.js +2 -2
  216. package/dist/features/schema-form.js +82 -82
  217. package/dist/features/schema-form.js.map +1 -1
  218. package/dist/features/suggestions.js +3 -3
  219. package/dist/features/sync.js +4 -4
  220. package/dist/features/sync.js.map +1 -1
  221. package/dist/features/table.js +1 -1
  222. package/dist/features/theme-tweaker.js +456 -450
  223. package/dist/features/theme-tweaker.js.map +1 -1
  224. package/dist/{feedback-DWUkgEjR.js → feedback-CJkUAapr.js} +29 -29
  225. package/dist/feedback-CJkUAapr.js.map +1 -0
  226. package/dist/field-affordance-recipes-uKY4MsZ_.js +25 -0
  227. package/dist/field-affordance-recipes-uKY4MsZ_.js.map +1 -0
  228. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-DQQpiLWC.js} +3 -3
  229. package/dist/field-state-recipes-DQQpiLWC.js.map +1 -0
  230. package/dist/{filters-BhsUtsxW.js → filters-D6FF8L6s.js} +715 -720
  231. package/dist/filters-D6FF8L6s.js.map +1 -0
  232. package/dist/{form-field-Bn7ZH1rA.js → form-field-CZwrkP7m.js} +17 -9
  233. package/dist/form-field-CZwrkP7m.js.map +1 -0
  234. package/dist/{form-sizing-BWs70_a2.js → form-sizing-QP8aIRaW.js} +8 -5
  235. package/dist/form-sizing-QP8aIRaW.js.map +1 -0
  236. package/dist/{forms-B7pzS25o.js → forms-B5NCbkSC.js} +35 -35
  237. package/dist/{forms-B7pzS25o.js.map → forms-B5NCbkSC.js.map} +1 -1
  238. package/dist/forms-numeric-Crrm80Lm.js +867 -0
  239. package/dist/forms-numeric-Crrm80Lm.js.map +1 -0
  240. package/dist/{header-C59QZyxV.js → header-kxruN3RM.js} +53 -49
  241. package/dist/header-kxruN3RM.js.map +1 -0
  242. package/dist/{hooks-CM1Vp9Pe.js → hooks-BrlnCwQd.js} +2 -2
  243. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-BrlnCwQd.js.map} +1 -1
  244. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  245. package/dist/http-CdEIHyQf.js.map +1 -0
  246. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-Btc6pQrp.js} +4 -4
  247. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-Btc6pQrp.js.map} +1 -1
  248. package/dist/index.js +2 -2
  249. package/dist/input-SX9V0AL3.js +255 -0
  250. package/dist/input-SX9V0AL3.js.map +1 -0
  251. package/dist/input-vxcaNCYC.js +20 -0
  252. package/dist/input-vxcaNCYC.js.map +1 -0
  253. package/dist/{item-pJ0GsOiJ.js → item-DE4YnuJx.js} +18 -17
  254. package/dist/item-DE4YnuJx.js.map +1 -0
  255. package/dist/layout/app-shell.js +1 -1
  256. package/dist/layout/auth.js +1 -1
  257. package/dist/layout/containers.js +1 -1
  258. package/dist/layout/header.js +1 -1
  259. package/dist/layout/hooks.js +1 -1
  260. package/dist/layout/navigation.js +1 -1
  261. package/dist/layout/page.js +1 -1
  262. package/dist/layout/settings.js +1 -1
  263. package/dist/layout/sidebar.js +2 -2
  264. package/dist/layout/workspace.js +1 -1
  265. package/dist/layout.js +10 -10
  266. package/dist/lib/affordance-geometry.generated.d.ts +40 -9
  267. package/dist/lib/control-group-recipes.d.ts +22 -0
  268. package/dist/lib/field-affordance-recipes.d.ts +35 -2
  269. package/dist/lib/field-state-recipes.d.ts +2 -2
  270. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  271. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -1
  272. package/dist/lib/surface-recipes.d.ts +5 -2
  273. package/dist/lib/token-merge.generated.d.ts +144 -2
  274. package/dist/lib/ui-provider/types.d.ts +4 -2
  275. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  276. package/dist/lib/utils.js +1 -1
  277. package/dist/{media-gallery-DhDRgnVZ.js → media-gallery-DLp3HAz0.js} +75 -74
  278. package/dist/media-gallery-DLp3HAz0.js.map +1 -0
  279. package/dist/{mentions-B8Ko-fhS.js → mentions-Cl0Kt_Pd.js} +52 -50
  280. package/dist/{mentions-B8Ko-fhS.js.map → mentions-Cl0Kt_Pd.js.map} +1 -1
  281. package/dist/message-SZUNB1eX.js +127 -0
  282. package/dist/message-SZUNB1eX.js.map +1 -0
  283. package/dist/{navigation-DBEu4POU.js → navigation-DnQSNMT0.js} +64 -55
  284. package/dist/navigation-DnQSNMT0.js.map +1 -0
  285. package/dist/{navigation-BUIn2Qxx.js → navigation-DyytsLRB.js} +37 -37
  286. package/dist/navigation-DyytsLRB.js.map +1 -0
  287. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DQEXQcqY.js} +3 -3
  288. package/dist/navigation-row-recipes-DQEXQcqY.js.map +1 -0
  289. package/dist/{number-BNT_BIzJ.js → number-DasMFWEG.js} +4 -4
  290. package/dist/{number-BNT_BIzJ.js.map → number-DasMFWEG.js.map} +1 -1
  291. package/dist/overlays-DUbs1KEi.js +1011 -0
  292. package/dist/overlays-DUbs1KEi.js.map +1 -0
  293. package/dist/{page-BV6ioQg3.js → page-hGmT4nWK.js} +75 -64
  294. package/dist/page-hGmT4nWK.js.map +1 -0
  295. package/dist/{page-header-DQRa0jug.js → page-header-D8nERkn5.js} +9 -9
  296. package/dist/page-header-D8nERkn5.js.map +1 -0
  297. package/dist/{pagination-C29vvt3I.js → pagination-NLGqRirf.js} +20 -20
  298. package/dist/pagination-NLGqRirf.js.map +1 -0
  299. package/dist/{popover-CoLDEg19.js → popover-CghIYdQf.js} +23 -22
  300. package/dist/popover-CghIYdQf.js.map +1 -0
  301. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-B4PoWhRl.js} +6 -6
  302. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-B4PoWhRl.js.map} +1 -1
  303. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-QlD4JenO.js} +5 -5
  304. package/dist/popover.recipes-QlD4JenO.js.map +1 -0
  305. package/dist/{primitives-DKPOGVpj.js → primitives-C7ff0QaI.js} +120 -113
  306. package/dist/primitives-C7ff0QaI.js.map +1 -0
  307. package/dist/primitives.js +3 -3
  308. package/dist/{progress-BOe8l_FZ.js → progress-BroqrAyV.js} +10 -9
  309. package/dist/progress-BroqrAyV.js.map +1 -0
  310. package/dist/{receipt-BM8xsGFy.js → receipt-BuJynLgf.js} +8 -8
  311. package/dist/{receipt-BM8xsGFy.js.map → receipt-BuJynLgf.js.map} +1 -1
  312. package/dist/{rich-text-B7sBAdDG.js → rich-text-DlxDOtf4.js} +4 -4
  313. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-DlxDOtf4.js.map} +1 -1
  314. package/dist/rich-text-editor-BKyG7rWz.js +574 -0
  315. package/dist/rich-text-editor-BKyG7rWz.js.map +1 -0
  316. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-B72Nfuze.js} +35 -26
  317. package/dist/rich-text-editor.recipes-B72Nfuze.js.map +1 -0
  318. package/dist/{scroll-area-BheMQ270.js → scroll-area-D-pIhEKl.js} +3 -3
  319. package/dist/scroll-area-D-pIhEKl.js.map +1 -0
  320. package/dist/{separator-Gk_WXH-l.js → separator-BNIgG3au.js} +3 -3
  321. package/dist/{separator-Gk_WXH-l.js.map → separator-BNIgG3au.js.map} +1 -1
  322. package/dist/{separator-DO0EbCEm.js → separator-BhtFyo4x.js} +2 -2
  323. package/dist/{separator-DO0EbCEm.js.map → separator-BhtFyo4x.js.map} +1 -1
  324. package/dist/services/actions.js +1 -1
  325. package/dist/{settings-BnCyyPOJ.js → settings-DOTOzeZ2.js} +10 -9
  326. package/dist/{settings-BnCyyPOJ.js.map → settings-DOTOzeZ2.js.map} +1 -1
  327. package/dist/{sheet-B-q914Ad.js → sheet-BFhrNehm.js} +11 -11
  328. package/dist/sheet-BFhrNehm.js.map +1 -0
  329. package/dist/{sidebar-DPR7fmqN.js → sidebar-CyR4XKwR.js} +219 -200
  330. package/dist/sidebar-CyR4XKwR.js.map +1 -0
  331. package/dist/{sidebar-C_2p3Tfj.js → sidebar-SvGJ0Zwi.js} +63 -58
  332. package/dist/sidebar-SvGJ0Zwi.js.map +1 -0
  333. package/dist/{skeleton-CmT1ppqb.js → skeleton-3F0uhYn3.js} +4 -4
  334. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-3F0uhYn3.js.map} +1 -1
  335. package/dist/{smart-card-CYLn46e6.js → smart-card-DjGVV2xr.js} +171 -165
  336. package/dist/smart-card-DjGVV2xr.js.map +1 -0
  337. package/dist/{spinner-BY9HbUEh.js → spinner-Cpf7oRkF.js} +5 -5
  338. package/dist/{spinner-BY9HbUEh.js.map → spinner-Cpf7oRkF.js.map} +1 -1
  339. package/dist/{structure-MvKVq-oL.js → structure-CRdqVawd.js} +2 -2
  340. package/dist/{structure-MvKVq-oL.js.map → structure-CRdqVawd.js.map} +1 -1
  341. package/dist/style.css +1 -1
  342. package/dist/{surface-recipes-CQfRr-VL.js → surface-recipes-Dd__PD-w.js} +4 -3
  343. package/dist/surface-recipes-Dd__PD-w.js.map +1 -0
  344. package/dist/{table-DnlAJ-xR.js → table-CLtJTxoR.js} +17 -16
  345. package/dist/table-CLtJTxoR.js.map +1 -0
  346. package/dist/table-CcRDZiLP.js +1444 -0
  347. package/dist/table-CcRDZiLP.js.map +1 -0
  348. package/dist/tabs-BNgu7g0u.js +188 -0
  349. package/dist/tabs-BNgu7g0u.js.map +1 -0
  350. package/dist/text-inputs-DsR56TR-.js +330 -0
  351. package/dist/text-inputs-DsR56TR-.js.map +1 -0
  352. package/dist/{text.styles-BwB7vAF2.js → text.styles-Q4sGAIgA.js} +18 -10
  353. package/dist/text.styles-Q4sGAIgA.js.map +1 -0
  354. package/dist/theme.css +77 -115
  355. package/dist/{timelines-B9ICkQcV.js → timelines-D1pkt3se.js} +84 -78
  356. package/dist/timelines-D1pkt3se.js.map +1 -0
  357. package/dist/{tree-BdWSaoFT.js → tree-BtmYyMZV.js} +8 -8
  358. package/dist/{tree-BdWSaoFT.js.map → tree-BtmYyMZV.js.map} +1 -1
  359. package/dist/typography/rich-text.js +1 -1
  360. package/dist/typography-BxQgiZyw.js +96 -0
  361. package/dist/typography-BxQgiZyw.js.map +1 -0
  362. package/dist/typography.js +1 -1
  363. package/dist/{ui-provider-CftIB6TY.js → ui-provider-DRPn3qNl.js} +3 -2
  364. package/dist/ui-provider-DRPn3qNl.js.map +1 -0
  365. package/dist/ui-provider.js +1 -1
  366. package/dist/{upload-D8Za5x_c.js → upload-CDbYw1WN.js} +326 -323
  367. package/dist/upload-CDbYw1WN.js.map +1 -0
  368. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-CNd_hH_a.js} +25 -25
  369. package/dist/upload-queue-CNd_hH_a.js.map +1 -0
  370. package/dist/{usage-card-DnmnJ58D.js → usage-card-VyJLUwRr.js} +53 -54
  371. package/dist/usage-card-VyJLUwRr.js.map +1 -0
  372. package/dist/utils-BvH9PSmq.js +4275 -0
  373. package/dist/utils-BvH9PSmq.js.map +1 -0
  374. package/dist/value-inputs-D0KCrfVC.js +840 -0
  375. package/dist/value-inputs-D0KCrfVC.js.map +1 -0
  376. package/dist/{workspace-C1PZmk8L.js → workspace-CcR8r-Nt.js} +115 -122
  377. package/dist/workspace-CcR8r-Nt.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +110 -119
  379. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  380. package/docs/consumer-skill/examples/app-layout.tsx +42 -12
  381. package/docs/consumer-skill/examples/detail.tsx +20 -4
  382. package/docs/consumer-skill/examples/manifest.json +13 -1
  383. package/docs/consumer-skill/examples/website.tsx +56 -0
  384. package/docs/consumer-skill/references/analytics.md +70 -0
  385. package/docs/consumer-skill/references/composition.md +116 -2
  386. package/docs/consumer-skill/references/design-contract.md +33 -7
  387. package/docs/consumer-skill/references/discovery.md +76 -5
  388. package/docs/consumer-skill/references/integration.md +14 -0
  389. package/docs/consumer-skill/references/public-api.json +2023 -218
  390. package/docs/consumer-skill/references/review.md +55 -3
  391. package/docs/consumer-skill/references/theming.md +52 -7
  392. package/docs/consumer-skill/references/tokens.json +177 -9
  393. package/docs/consumer-skill/references/workflows.md +32 -0
  394. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  395. package/docs/consumer-skill/scripts/composition-policy.mjs +179 -17
  396. package/docs/consumer-skill/scripts/discovery.mjs +61 -9
  397. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  398. package/package.json +7 -4
  399. package/dist/accordion-B-5Focs8.js.map +0 -1
  400. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  401. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  402. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  403. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  404. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  405. package/dist/auth-OFwWSAap.js +0 -704
  406. package/dist/auth-OFwWSAap.js.map +0 -1
  407. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  408. package/dist/button-BS6l5JUw.js.map +0 -1
  409. package/dist/buttons-Co6GavvM.js +0 -674
  410. package/dist/buttons-Co6GavvM.js.map +0 -1
  411. package/dist/chart-DVfcwQu6.js +0 -149
  412. package/dist/chart-DVfcwQu6.js.map +0 -1
  413. package/dist/checkbox-BavDRjF7.js.map +0 -1
  414. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  415. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  416. package/dist/code-block-xHKbAJDj.js.map +0 -1
  417. package/dist/combobox-DEbdr-3u.js.map +0 -1
  418. package/dist/combobox-xv3yJbzl.js.map +0 -1
  419. package/dist/command-C0xe7u9B.js.map +0 -1
  420. package/dist/comments-DviPLnwy.js +0 -1132
  421. package/dist/comments-DviPLnwy.js.map +0 -1
  422. package/dist/containers-6s-ucRQQ.js.map +0 -1
  423. package/dist/data-display-cWIRdeaf.js.map +0 -1
  424. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  425. package/dist/date-pickers-BPIKLdsD.js +0 -224
  426. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  427. package/dist/feedback-DWUkgEjR.js.map +0 -1
  428. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  429. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  430. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  431. package/dist/filters-BhsUtsxW.js.map +0 -1
  432. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  433. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  434. package/dist/forms-numeric-BUBxELBv.js +0 -867
  435. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  436. package/dist/header-C59QZyxV.js.map +0 -1
  437. package/dist/http-CLTVJc5I.js.map +0 -1
  438. package/dist/input-WwYQZJzG.js +0 -202
  439. package/dist/input-WwYQZJzG.js.map +0 -1
  440. package/dist/input-ci9fIgFH.js +0 -20
  441. package/dist/input-ci9fIgFH.js.map +0 -1
  442. package/dist/item-pJ0GsOiJ.js.map +0 -1
  443. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  444. package/dist/message-COsdEvXT.js +0 -108
  445. package/dist/message-COsdEvXT.js.map +0 -1
  446. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  447. package/dist/navigation-DBEu4POU.js.map +0 -1
  448. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  449. package/dist/overlays-B11wZka6.js +0 -982
  450. package/dist/overlays-B11wZka6.js.map +0 -1
  451. package/dist/page-BV6ioQg3.js.map +0 -1
  452. package/dist/page-header-DQRa0jug.js.map +0 -1
  453. package/dist/pagination-C29vvt3I.js.map +0 -1
  454. package/dist/popover-CoLDEg19.js.map +0 -1
  455. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  456. package/dist/primitives-DKPOGVpj.js.map +0 -1
  457. package/dist/progress-BOe8l_FZ.js.map +0 -1
  458. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  459. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  460. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  461. package/dist/scroll-area-BheMQ270.js.map +0 -1
  462. package/dist/select-B2mb-qN2.js +0 -108
  463. package/dist/select-B2mb-qN2.js.map +0 -1
  464. package/dist/sheet-B-q914Ad.js.map +0 -1
  465. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  466. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  467. package/dist/smart-card-CYLn46e6.js.map +0 -1
  468. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  469. package/dist/table-BS39xnlq.js +0 -1424
  470. package/dist/table-BS39xnlq.js.map +0 -1
  471. package/dist/table-DnlAJ-xR.js.map +0 -1
  472. package/dist/tabs-B5cNMWiP.js +0 -187
  473. package/dist/tabs-B5cNMWiP.js.map +0 -1
  474. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  475. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  476. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  477. package/dist/timelines-B9ICkQcV.js.map +0 -1
  478. package/dist/typography-Cv8MT-82.js +0 -96
  479. package/dist/typography-Cv8MT-82.js.map +0 -1
  480. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  481. package/dist/upload-D8Za5x_c.js.map +0 -1
  482. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  483. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  484. package/dist/utils-C2EKeIw3.js +0 -72
  485. package/dist/utils-C2EKeIw3.js.map +0 -1
  486. package/dist/value-inputs-DX2dbxjj.js +0 -824
  487. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  488. package/dist/workspace-C1PZmk8L.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-display-Bihs9Ven.js","names":["_Fragment","_Fragment","_Fragment","Link","DateValue","useDensityConfig","cn","Text","DisplayLabel","Tooltip","TooltipTrigger","TooltipContent","Grid","Stack","EmptyContent","EmptyHeader","Empty","EmptyMedia","Value","Phone","Url","MonoValue","Email","EmptyValue","Link$1","Money","Time","DateTime","DatePrimitive","Badge","Separator","fieldAffordanceRecipes","ContentBlock","ItemMedia","ItemSeparator","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","React","Fragment$1","ScaleBar","max","i","value","label","KVRow","badge","badgeTone","DenseInfoDashboard","className","statusBadges","b","rows","row","scale","secondaryRows","footerBadges","footerText","InlineStat","ValuePrimitive","mono","labelContent","jsx","labelClassName","layout","valueClassName","defaultDenseInfoStrings","DenseInfoClassification","stringsProp","strings","useStrings","stats","Heading","stat","items","item","totalValue","totalLabel","DenseInfoFinancial","headerBadges","lineItems","idx","totalAmount","DenseInfoProjectCard","percentage","totalTasks","completedTasks","circumference","dashOffset","FolderOpen","statusTone","statusLabel","title","description","metaPairs","pair","date","priority","Calendar","BarChart3","DenseInfoScoreCard","barColor","scoreLevel","score","scoreTotal","scoreFilled","defaultEmptyStateStrings","PADDING_CLASS","MEDIA_VARIANT_TO_PRIMITIVE","MEDIA_EXTRA_CLASS","EmptyState","forwardRef","resolvedPadding","padding","defaultScale","resolvedTitle","resolvedDescription","mediaNode","renderMedia","media","showMedia","ariaLabel","border","mediaVariant","actions","footer","DocumentStackIllustration","InboxCleanIllustration","trayClip","useId","SearchGlassIllustration","Search","StackedCardsIllustration","fadeId","UsersCircleIllustration","defaultMetadataListStrings","isEmpty","renderEmptyValue","emptyLabel","assertNever","MetadataValue","props","metadataColumnRecipes","resolveMetadataColumns","columns","resolveKey","index","isPrimitiveMetadataValue","isMetadataValueDescriptor","renderMetadataValue","valueBase","isEmptyValue","MetadataInfoTrigger","triggerProps","Info","MetadataList","list","isCompact","density","labelBase","titleClassName","hasTitle","shouldShowSeparator","titleSeparator","itemSeparatorText","itemSeparator","key","effectiveEmptyLabel","Icon","hasTooltip","hasCustomRender","showItemSeparator","separator","rowPaddingY","renderTitleBadge","RelationshipCardFrame","hasBody","alertSlot","metadataSlot","primaryActionSlot","selectorSlot","detailsSlot","headerClassName","icon","titleBadge","overflowActionSlot","bodyClassName"],"sources":["../src/components/blocks/data-display/dense-info-card/helpers.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.tsx","../src/components/blocks/data-display/inline-stat/inline-stat.tsx","../src/components/blocks/data-display/dense-info-card/dense-info.strings.ts","../src/components/blocks/data-display/dense-info-card/partials/dense-info-classification.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-financial.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-project.tsx","../src/components/blocks/data-display/dense-info-card/partials/dense-info-score.tsx","../src/components/blocks/data-display/empty-state/empty-state.strings.ts","../src/components/blocks/data-display/empty-state/empty-state.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/document-stack.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/search-glass.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.tsx","../src/components/blocks/data-display/empty-state/partials/illustrations/users-circle.tsx","../src/components/blocks/data-display/metadata/metadata-list.strings.ts","../src/components/blocks/data-display/metadata/metadata-value.tsx","../src/components/blocks/data-display/metadata/metadata-list.tsx","../src/components/blocks/data-display/relationship-card-frame.tsx"],"sourcesContent":["import { Badge } from '../../../base/badge';\nimport { Text } from '../../../typography/text';\nimport { Stack } from '../../../base/structure';\nimport { cn } from '../../../../lib/utils';\nimport { type DenseInfoBadgeTone } from './types';\n\n/* ─── Shared: Complexity / Scale Bar ─────────────────────────────────────── */\n\nexport function ScaleBar({\n\tvalue,\n\tmax = 5,\n\tlabel,\n}: {\n\t/** Current amount, used to fill the bar. */\n\tvalue: number;\n\t/** Value representing a full bar. Default: `5`. */\n\tmax?: number;\n\t/** Caption shown beside the bar. */\n\tlabel?: string;\n}) {\n\treturn (\n\t\t<div className={cn('helpers--component', 'flex items-center gap-space-md')}>\n\t\t\t<div className=\"flex items-center gap-space-xs\">\n\t\t\t{Array.from({ length: max }, (_, i) => (\n\t\t\t\t<div\n\t\t\t\t\tkey={i}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t'h-1.5 w-3 rounded-full',\n\t\t\t\t\t\ti < value ? 'bg-foreground/60' : 'bg-muted',\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t))}\n\t\t\t</div>\n\t\t\t{!!label && (\n\t\t\t\t<Text\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t>\n\t\t\t\t\t{label}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n\n/* ─── Shared: Key-Value Row ──────────────────────────────────────────────── */\n\nexport function KVRow({\n\tlabel,\n\tvalue,\n\tbadge,\n\tbadgeTone,\n}: {\n\t/** Row label. */\n\tlabel: string;\n\t/** Row value. */\n\tvalue?: string;\n\t/** Chip shown after the value. */\n\tbadge?: string;\n\t/** Badge tone for the chip. */\n\tbadgeTone?: DenseInfoBadgeTone;\n}) {\n\treturn (\n\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t<Text\n\t\t\t\tsize=\"xs\"\n\t\t\t\tclassName=\"shrink-0 text-muted-foreground\"\n\t\t\t>\n\t\t\t\t{label}\n\t\t\t</Text>\n\t\t\t{!!badge && (\n\t\t\t\t<Badge\n\t\t\t\t\ttone={badgeTone ?? 'secondary'}\n\t\t\t\t>\n\t\t\t\t\t{badge}\n\t\t\t\t</Badge>\n\t\t\t)}\n\t\t\t{!!value && !badge && (\n\t\t\t\t<Text\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tclassName=\"text-right tabular-nums\"\n\t\t\t\t>\n\t\t\t\t\t{value}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n}\n","import { ContentBlock } from '../../../../base/display';\nimport { Badge } from '../../../../base/badge';\nimport { Text } from '../../../../typography/text';\nimport { Separator } from '../../../../base/display/separator';\nimport { Stack } from '../../../../base/structure';\nimport { type DenseInfoDashboardProps } from '../types';\nimport { KVRow, ScaleBar } from '../helpers';\nimport { cn } from '../../../../../lib/utils';\n\nexport function DenseInfoDashboard({\n\ttitle,\n\tdescription,\n\tstatusBadges,\n\trows,\n\tsecondaryRows,\n\tscale,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tclassName,\n}: DenseInfoDashboardProps) {\n\treturn (\n\t\t<ContentBlock\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-dashboard--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{statusBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t<KVRow\n\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\t{...row}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t{!!scale && (\n\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{scale.label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<ScaleBar\n\t\t\t\t\t\t\tvalue={scale.value}\n\t\t\t\t\t\t\tmax={scale.max}\n\t\t\t\t\t\t\tlabel={`${String(scale.value)}/${String(scale.max ?? 5)}`}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!secondaryRows && secondaryRows.length > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t\t\t{secondaryRows.map((row) => (\n\t\t\t\t\t\t\t\t<KVRow\n\t\t\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\t\t\t{...row}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"border-border border-t pt-space-md\">\n\t\t\t\t\t\t{!!footerBadges &&\n\t\t\t\t\t\t\tfooterBadges.map((b) => (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\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\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nDenseInfoDashboard.displayName = 'DenseInfoDashboard';\n","/**\n * InlineStat — label + value pair, the workhorse of detail panels and card\n * footers. Three layouts:\n *\n * - `between` (default): label and value pushed to opposite ends of the row.\n * - `inline`: label sits immediately before the value, separator-style.\n * - `stacked`: label above (xs secondary), value below (md).\n *\n * `mono` toggles `tabular-nums` on the value side for amounts and counters.\n * Use `valueClassName` for one-off colour/weight overrides; the surrounding\n * row is intentionally plain so consumers can stack many of these without\n * visual clutter.\n */\nimport type { ReactNode } from 'react';\n\nimport { Stack } from '../../../base/structure';\nimport { MonoValue, Value } from '../../../primitives';\nimport { DisplayLabel } from '../../../typography';\nimport { cn } from '../../../../lib/utils';\n\nexport type InlineStatLayout = 'between' | 'inline' | 'stacked';\n\nexport interface InlineStatProps {\n\t/** Display label. Scalar labels use DisplayLabel; rich content owns its typography. */\n\tlabel: ReactNode;\n\t/** The figure to show. */\n\tvalue: ReactNode;\n\t/** Whether the label sits above the value or beside it. */\n\tlayout?: InlineStatLayout;\n\t/** Renders the value in tabular monospace figures. */\n\tmono?: boolean;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the label. */\n\tlabelClassName?: string;\n\t/** Merged onto the value. */\n\tvalueClassName?: string;\n}\n\nexport function InlineStat({\n\tlabel,\n\tvalue,\n\tlayout = 'between',\n\tmono = false,\n\tclassName,\n\tlabelClassName,\n\tvalueClassName,\n}: InlineStatProps) {\n\tconst ValuePrimitive = mono ? MonoValue : Value;\n\tconst labelContent = typeof label === 'string' || typeof label === 'number'\n\t\t? <DisplayLabel className={labelClassName}>{label}</DisplayLabel>\n\t\t: <span className={labelClassName}>{label}</span>;\n\n\tif (layout === 'stacked') {\n\t\treturn (\n\t\t\t<Stack gap=\"2xs\" className={cn('inline-stat--component', className)}>\n\t\t\t\t{labelContent}\n\t\t\t\t<ValuePrimitive\n\t\t\t\t\tsize=\"inherit\"\n\t\t\t\t\tclassName={cn('text-sm leading-snug', mono && 'tabular-nums', valueClassName)}\n\t\t\t\t>\n\t\t\t\t\t{value}\n\t\t\t\t</ValuePrimitive>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"horizontal\"\n\t\t\tgap=\"md\"\n\t\t\tjustify={layout === 'between' ? 'between' : 'start'}\n\t\t\twrap={false}\n\t\t\tclassName={cn('inline-stat--component', className)}\n\t\t>\n\t\t\t{labelContent}\n\t\t\t<ValuePrimitive\n\t\t\t\tsize=\"inherit\"\n\t\t\t\tclassName={cn('text-sm leading-snug', mono && 'tabular-nums', valueClassName)}\n\t\t\t>\n\t\t\t\t{value}\n\t\t\t</ValuePrimitive>\n\t\t</Stack>\n\t);\n}\n\nInlineStat.displayName = 'InlineStat';\n","export interface DenseInfoStrings {\n\t/** Total number of records across all pages. */\n\ttotal: string;\n\ttasks: string;\n}\n\nexport const defaultDenseInfoStrings: DenseInfoStrings = {\n\ttotal: 'Total',\n\ttasks: 'Tasks',\n};\n","import { ContentBlock } from '../../../../base/display';\nimport { Badge } from '../../../../base/badge';\nimport { Grid, Stack } from '../../../../base/structure';\nimport { Value } from '../../../../primitives';\nimport { Text } from '../../../../typography/text';\nimport { Heading } from '../../../../typography/heading';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport { Separator } from '../../../../base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemMedia,\n\tItemTitle,\n} from '../../../../base/item';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\nimport { type DenseInfoClassificationProps } from '../types';\n\nexport function DenseInfoClassification({\n\ttitle,\n\tdescription,\n\tstats,\n\titems,\n\ttotalLabel,\n\ttotalValue,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoClassificationProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\treturn (\n\t\t<ContentBlock\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-classification--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Grid columns={{ base: 2, sm: 3 }} gap=\"md\">\n\t\t\t\t\t{stats.map((stat) => (\n\t\t\t\t\t\t<Stack gap=\"dense\"\n\t\t\t\t\t\t\tkey={stat.label}\n\t\t\t\t\t\t\tclassName=\"rounded-radius border border-border/50 bg-muted/30 p-surface-xs text-center\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Heading tag=\"h4\" className=\"border-none pb-0 text-base font-semibold tabular-nums\">\n\t\t\t\t\t\t\t\t{stat.value}\n\t\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" weight=\"medium\">\n\t\t\t\t\t\t\t\t{stat.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!stat.trendBadge && (\n\t\t\t\t\t\t\t\t<div className=\"flex justify-center\">\n\t\t\t\t\t\t\t\t\t<Badge tone={stat.trendTone ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t{stat.trendBadge}\n\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t<Item key={item.label} size=\"sm\">\n\t\t\t\t\t\t\t<ItemMedia>\n\t\t\t\t\t\t\t\t<span className={cn('h-2 w-2 shrink-0 rounded-full', item.dotColor)} />\n\t\t\t\t\t\t\t</ItemMedia>\n\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t<ItemTitle bold={false} className=\"gap-space-md\">\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t<Badge tone={item.badgeTone ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</ItemTitle>\n\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t{item.value}\n\t\t\t\t\t\t\t\t</Value>\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</ItemGroup>\n\n\t\t\t\t{!!totalValue && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tlabel={<Text tag=\"span\" weight=\"bold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\t\tvalue={totalValue}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tvalueClassName=\"text-sm font-bold\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"border-border border-t pt-space-md\">\n\t\t\t\t\t\t{!!footerBadges && footerBadges.map((b) => (\n\t\t\t\t\t\t\t<Badge key={b.label} tone={b.tone}>\n\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\n\t\t\t\t\t\t\t<Text size=\"xs\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nDenseInfoClassification.displayName = 'DenseInfoClassification';\n","import { ContentBlock } from '../../../../base/display';\nimport { Stack } from '../../../../base/structure';\nimport { Badge } from '../../../../base/badge';\nimport { Value } from '../../../../primitives';\nimport { Text } from '../../../../typography/text';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\n\tItemSeparator,\n\tItemTitle,\n} from '../../../../base/item';\nimport { type DenseInfoFinancialProps } from '../types';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\n\nexport function DenseInfoFinancial({\n\ttitle,\n\tdescription,\n\theaderBadges,\n\tlineItems,\n\ttotalLabel,\n\ttotalAmount,\n\tfooterBadges,\n\tfooterText,\n\tactions,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoFinancialProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\treturn (\n\t\t<ContentBlock\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-financial--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{headerBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t{lineItems.map((item, idx) => (\n\t\t\t\t\t\t<div key={item.label}>\n\t\t\t\t\t\t\t{idx > 0 && <ItemSeparator className=\"my-0\" />}\n\t\t\t\t\t\t\t<Item size=\"sm\">\n\t\t\t\t\t\t\t\t<ItemContent>\n\t\t\t\t\t\t\t\t\t<ItemTitle className=\"gap-space-md\">\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t\t{!!item.badge && (\n\t\t\t\t\t\t\t\t\t\t\t<Badge tone={item.badgeTone ?? 'secondary'}>\n\t\t\t\t\t\t\t\t\t\t\t\t{item.badge}\n\t\t\t\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</ItemTitle>\n\t\t\t\t\t\t\t\t</ItemContent>\n\t\t\t\t\t\t\t\t<ItemActions>\n\t\t\t\t\t\t\t\t\t<Value weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{item.amount}\n\t\t\t\t\t\t\t\t\t</Value>\n\t\t\t\t\t\t\t\t</ItemActions>\n\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</ItemGroup>\n\n\t\t\t\t{!!totalAmount && (\n\t\t\t\t\t<InlineStat\n\t\t\t\t\t\tclassName=\"rounded-radius bg-muted/50 p-surface-xs\"\n\t\t\t\t\t\tlabel={<Text tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\tvalue={totalAmount}\n\t\t\t\t\t\tmono\n\t\t\t\t\t\tvalueClassName=\"text-sm font-semibold\"\n\t\t\t\t\t/>\n\t\t\t\t)}\n\n\t\t\t\t{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"border-border border-t pt-space-md\">\n\t\t\t\t\t\t{!!footerBadges &&\n\t\t\t\t\t\t\tfooterBadges.map((b) => (\n\t\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{!!footerText && (\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\tclassName=\"text-muted-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{footerText}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nDenseInfoFinancial.displayName = 'DenseInfoFinancial';\n","import { ContentBlock } from '../../../../base/display';\nimport { Badge } from '../../../../base/badge';\nimport { Text } from '../../../../typography/text';\nimport { Heading } from '../../../../typography/heading';\nimport { Separator } from '../../../../base/display/separator';\nimport { Stack } from '../../../../base/structure';\nimport {\n\tFolderOpen,\n\tCalendar,\n\tBarChart3,\n} from 'lucide-react';\nimport { type DenseInfoProjectCardProps } from '../types';\nimport { cn } from '../../../../../lib/utils';\nimport { useStrings } from '../../../../../lib/strings';\nimport { defaultDenseInfoStrings } from '../dense-info.strings';\n\nexport function DenseInfoProjectCard({\n\ttitle,\n\tdescription,\n\tstatusLabel,\n\tstatusTone,\n\tmetaPairs,\n\tdate,\n\tpriority,\n\tcompletedTasks,\n\ttotalTasks,\n\tactions,\n\tclassName,\n\tstrings: stringsProp,\n}: DenseInfoProjectCardProps) {\n\tconst strings = useStrings(defaultDenseInfoStrings, stringsProp);\n\tconst percentage = totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0;\n\tconst circumference = 2 * Math.PI * 7;\n\tconst dashOffset = circumference - (percentage / 100) * circumference;\n\n\treturn (\n\t\t<ContentBlock\n\t\t\tpadding=\"md\"\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-project-card--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<FolderOpen className=\"h-4 w-4 text-muted-foreground\" />\n\t\t\t\t\t<Badge tone={statusTone} dot>\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<Heading tag=\"h5\" className=\"font-bold border-none pb-0\">\n\t\t\t\t\t{title}\n\t\t\t\t</Heading>\n\n\t\t\t\t{!!description && (\n\t\t\t\t\t<Text type=\"secondary\" className=\"line-clamp-2\">\n\t\t\t\t\t\t{description}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\n\t\t\t\t{!!metaPairs && metaPairs.length > 0 && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t\t{metaPairs.map((pair, idx) => (\n\t\t\t\t\t\t\t<span key={pair.label} className=\"flex items-center gap-space-xs\">\n\t\t\t\t\t\t\t\t{idx > 0 && (\n\t\t\t\t\t\t\t\t\t<Text tag=\"span\" type=\"discrete\">&bull;</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!pair.icon && (\n\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground\">{pair.icon}</span>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{pair.label}</Text>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t{(!!date || !!priority) && (\n\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t{!!date && (\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<Calendar className=\"h-3 w-3 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{date}</Text>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!priority && (\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t<BarChart3 className=\"h-3 w-3 text-muted-foreground\" />\n\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">{priority}</Text>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" className=\"shrink-0\">\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\tclassName=\"text-muted/50\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\t\tstrokeDasharray={circumference}\n\t\t\t\t\t\t\t\tstrokeDashoffset={dashOffset}\n\t\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\t\tclassName=\"text-primary-accent\"\n\t\t\t\t\t\t\t\ttransform=\"rotate(-90 10 10)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t<Text size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t\t{completedTasks}/{totalTasks} {strings.tasks}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"h-6 w-6 rounded-full bg-muted\" />\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nDenseInfoProjectCard.displayName = 'DenseInfoProjectCard';\n","import { ContentBlock } from '../../../../base/display';\nimport { Badge } from '../../../../base/badge';\nimport { Heading, Text } from '../../../../typography';\nimport { InlineStat } from '../../inline-stat/inline-stat';\nimport { Separator } from '../../../../base/display/separator';\nimport { Stack } from '../../../../base/structure';\nimport { cn } from '../../../../../lib/utils';\nimport { type DenseInfoScoreCardProps } from '../types';\n\nexport function DenseInfoScoreCard({\n\ttitle,\n\tdescription,\n\tstatusBadges,\n\tscore,\n\tscoreLevel,\n\tscoreFilled,\n\tscoreTotal = 10,\n\trows,\n\tfooterBadges,\n\tactions,\n\tclassName,\n}: DenseInfoScoreCardProps) {\n\tconst barColor =\n\t\tscoreLevel === 'good'\n\t\t\t? 'bg-success'\n\t\t\t: scoreLevel === 'medium'\n\t\t\t\t? 'bg-warning'\n\t\t\t\t: 'bg-destructive';\n\n\treturn (\n\t\t<ContentBlock\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-score-card--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"lg\">\n\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t{statusBadges.map((b) => (\n\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t<div className=\"flex items-center justify-center py-space-md\">\n\t\t\t\t\t<Heading\n\t\t\t\t\t\ttag=\"h2\"\n\t\t\t\t\t\tclassName=\"text-base font-bold tabular-nums border-none pb-0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{String(score)}\n\t\t\t\t\t</Heading>\n\t\t\t\t</div>\n\n\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"xs\">\n\t\t\t\t\t{Array.from({ length: scoreTotal }, (_, i) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t'h-5 w-2 rounded-radius-sm',\n\t\t\t\t\t\t\t\ti < scoreFilled ? barColor : 'bg-muted',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t<Separator />\n\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t{rows.map((row) => (\n\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\tlabel={<Text tag=\"span\" size=\"xs\" type=\"secondary\" weight=\"medium\" lineHeight=\"tight\">{row.label}</Text>}\n\t\t\t\t\t\t\tvalue={row.value}\n\t\t\t\t\t\t\tmono\n\t\t\t\t\t\t\tvalueClassName=\"text-sm font-semibold text-right\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Stack>\n\n\t\t\t\t{!!footerBadges && footerBadges.length > 0 && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"md\" className=\"border-border border-t pt-space-md\">\n\t\t\t\t\t\t{footerBadges.map((b) => (\n\t\t\t\t\t\t\t<Badge\n\t\t\t\t\t\t\t\tkey={b.label}\n\t\t\t\t\t\t\t\ttone={b.tone}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{b.label}\n\t\t\t\t\t\t\t</Badge>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</ContentBlock>\n\t);\n}\n\nDenseInfoScoreCard.displayName = 'DenseInfoScoreCard';\n","/**\n * Strings for `<EmptyState>`. English defaults — every piece of copy is\n * deep-merge-overridable per rule 8.\n *\n * `title`/`description` here are the *fallback* defaults the component\n * renders when neither the prop nor a per-illustration preset supplies\n * its own copy. In practice, the consumer usually passes an explicit\n * `title` / `description` per resource (\"No products\", \"No invoices yet\")\n * — these defaults exist so a bare `<EmptyState />` still renders\n * sensibly during scaffolding.\n */\nexport interface EmptyStateStrings {\n\t/** Surface title. */\n\ttitle: string;\n\t/** Supporting copy shown under the label. */\n\tdescription: string;\n\tariaLabel: string;\n}\n\nexport const defaultEmptyStateStrings: EmptyStateStrings = {\n\ttitle: 'Nothing here yet',\n\tdescription: 'Once data lands, it will show up in this view.',\n\tariaLabel: 'Empty state',\n};\n","/**\n * EmptyState — the canonical zero-data surface for any list, table, or\n * collection in the library. Wraps the shadcn `ui/empty` primitive\n * (rule 1, rule 12) and applies our typography, density, and tokens:\n *\n * - Headline through `<Heading tag=\"h3\">` (admin scale, no marketing inflation)\n * - Description through provider-sized secondary Typography so a whole-state\n * explanation remains readable; compact footer metadata stays `xs`\n * - Padding driven by the package scale and CSS variables, not arbitrary literals\n * - Optional dashed-border affordance for \"this slot is a drop zone\"\n *\n * Composability:\n * - Slots: `media`, `actions`, `footer`\n * - Render-prop: `renderMedia(ctx)` for fully custom illustrations\n * - Strings: every piece of copy is overridable via `strings`\n *\n * The library ships a small illustration set under\n * `./partials/illustrations/*` — import explicitly per resource:\n *\n * import { StackedCardsIllustration } from\n * './partials/illustrations';\n *\n * Adaptive shape per resource: pass a different `media` per surface.\n * Don't fork the component.\n */\nimport { forwardRef } from 'react';\n\nimport { Heading, Text } from '../../../typography';\nimport {\n\tEmpty,\n\tEmptyContent,\n\tEmptyHeader,\n\tEmptyMedia,\n} from '../../../base/feedback';\nimport { Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\nimport { useDensityConfig } from '../../../../lib/ui-provider';\nimport { cn } from '../../../../lib/utils';\n\nimport { defaultEmptyStateStrings } from './empty-state.strings';\nimport type {\n\tEmptyStateMediaVariant,\n\tEmptyStatePadding,\n\tEmptyStateProps,\n} from './empty-state.types';\n\nconst PADDING_CLASS: Record<EmptyStatePadding, string> = {\n\tsm: '!p-surface-xs',\n\tmd: '!p-surface',\n\tlg: '!p-surface-lg',\n};\n\nconst MEDIA_VARIANT_TO_PRIMITIVE: Record<EmptyStateMediaVariant, 'default' | 'icon'> = {\n\tnone: 'default',\n\ticon: 'icon',\n\t'icon-soft': 'icon',\n\tillustration: 'default',\n};\n\nconst MEDIA_EXTRA_CLASS: Record<EmptyStateMediaVariant, string | undefined> = {\n\tnone: undefined,\n\ticon: undefined,\n\t'icon-soft': 'bg-muted/40 text-muted-foreground',\n\tillustration: 'mb-space-xl',\n};\n\nexport const EmptyState = forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState({\n\ttitle,\n\tdescription,\n\tmedia,\n\tmediaVariant = 'none',\n\trenderMedia,\n\tactions,\n\tfooter,\n\tpadding,\n\tborder = false,\n\tclassName,\n\tstrings: stringsProp,\n\tariaLabel,\n}, ref) {\n\tconst strings = useStrings(defaultEmptyStateStrings, stringsProp);\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedPadding = padding ?? defaultScale ?? 'md';\n\n\tconst resolvedTitle = title ?? strings.title;\n\tconst resolvedDescription =\n\t\tdescription === false ? null : description ?? strings.description;\n\tconst mediaNode = renderMedia ? renderMedia({ mediaVariant }) : media;\n\tconst showMedia = !!mediaNode;\n\n\treturn (\n\t\t<Empty\n\t\t\tref={ref}\n\t\t\trole=\"status\"\n\t\t\taria-label={ariaLabel ?? strings.ariaLabel}\n\t\t\tclassName={cn('empty-state--component', \n\t\t\t\tPADDING_CLASS[resolvedPadding],\n\t\t\t\tborder ? 'border-border border border-dashed' : 'border-border border-0',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<EmptyHeader className=\"empty-state--header\">\n\t\t\t\t{!!showMedia && (\n\t\t\t\t\t<EmptyMedia\n\t\t\t\t\t\tvariant={MEDIA_VARIANT_TO_PRIMITIVE[mediaVariant]}\n\t\t\t\t\t\tclassName={cn('empty-state--media', MEDIA_EXTRA_CLASS[mediaVariant])}\n\t\t\t\t\t>\n\t\t\t\t\t\t{mediaNode}\n\t\t\t\t\t</EmptyMedia>\n\t\t\t\t)}\n\t\t\t\t<Heading\n\t\t\t\t\ttag=\"h3\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tclassName=\"empty-state--title border-0 pb-0\"\n\t\t\t\t\tdata-slot=\"empty-title\"\n\t\t\t\t>\n\t\t\t\t\t{resolvedTitle}\n\t\t\t\t</Heading>\n\t\t\t\t{!!resolvedDescription && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tclassName=\"empty-state--description leading-relaxed [&>a]:text-primary-accent [&>a]:underline [&>a]:underline-offset-4 hover:[&>a]:no-underline\"\n\t\t\t\t\t\tdata-slot=\"empty-description\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{resolvedDescription}\n\t\t\t\t\t</Text>\n\t\t\t\t)}\n\t\t\t</EmptyHeader>\n\t\t\t{(!!actions || !!footer) && (\n\t\t\t\t<EmptyContent className=\"empty-state--content\">\n\t\t\t\t\t{!!actions && (\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"md\" justify=\"center\" className=\"empty-state--actions\">\n\t\t\t\t\t\t\t{actions}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t)}\n\t\t\t\t\t{!!footer && (\n\t\t\t\t\t\t<Text tag=\"div\" size=\"xs\" type=\"secondary\" align=\"center\" className=\"empty-state--footer\">\n\t\t\t\t\t\t\t{footer}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</EmptyContent>\n\t\t\t)}\n\t\t</Empty>\n\t);\n});\n\nEmptyState.displayName = 'EmptyState';\n","import { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Two staggered document silhouettes; all coordinates belong to the drawing. */\nexport function DocumentStackIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div className={cn('document-stack-illustration--component relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 128 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<g transform=\"rotate(-6 44 44)\">\n\t\t\t\t\t<rect x={4.5} y={4.5} width={79} height={79} style={{ rx: 'var(--radius-md)' }} className=\"fill-muted/70 dark:fill-muted/40 stroke-border/50 drop-shadow-xs\" />\n\t\t\t\t\t<rect x={13} y={13} width={48} height={8} rx={4} className=\"fill-muted\" />\n\t\t\t\t\t<rect x={13} y={27} width={40} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={13} y={39} width={36} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t</g>\n\t\t\t\t<g transform=\"rotate(3 84 48)\">\n\t\t\t\t\t<rect x={44.5} y={8.5} width={79} height={79} style={{ rx: 'var(--radius-md)' }} className=\"fill-background stroke-border drop-shadow-xs\" />\n\t\t\t\t\t<rect x={53} y={17} width={48} height={8} rx={4} className=\"fill-muted\" />\n\t\t\t\t\t<rect x={53} y={31} width={40} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={53} y={43} width={36} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<circle cx={56} cy={76} r={3} className=\"fill-success\" />\n\t\t\t\t\t<rect x={63} y={73} width={32} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t</g>\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nDocumentStackIllustration.displayName = 'DocumentStackIllustration';\n","import { useId } from 'react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Open inbox tray with a check; the scene has one intrinsic coordinate system. */\nexport function InboxCleanIllustration({ className }: EmptyStateIllustrationProps) {\n\tconst trayClip = useId();\n\treturn (\n\t\t<div className={cn('inbox-clean-illustration--component relative h-24 w-32', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 128 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<defs>\n\t\t\t\t\t<clipPath id={trayClip}>\n\t\t\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} />\n\t\t\t\t\t</clipPath>\n\t\t\t\t</defs>\n\t\t\t\t<circle cx={64} cy={16} r={15.5} className=\"fill-success/12 stroke-success/30\" />\n\t\t\t\t<path d=\"M59 16l3 3 7-7\" fill=\"none\" className=\"stroke-success\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} className=\"fill-background drop-shadow-xs\" />\n\t\t\t\t<g clipPath={`url(#${trayClip})`}>\n\t\t\t\t\t<rect x={1} y={41} width={126} height={12} className=\"fill-muted/30\" />\n\t\t\t\t\t<rect x={13} y={66} width={48} height={6} rx={3} className=\"fill-muted/60\" />\n\t\t\t\t\t<rect x={13} y={76} width={32} height={6} rx={3} className=\"fill-muted/40\" />\n\t\t\t\t\t<circle cx={109} cy={74} r={6} className=\"fill-muted/40\" />\n\t\t\t\t</g>\n\t\t\t\t<rect x={0.5} y={40.5} width={127} height={55} style={{ rx: 'var(--radius)' }} fill=\"none\" className=\"stroke-border\" />\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nInboxCleanIllustration.displayName = 'InboxCleanIllustration';\n","import { Search } from 'lucide-react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/**\n * Magnifying-glass illustration centered on a soft tinted disk — for\n * \"no search results\", \"nothing matches your filters\" surfaces.\n */\nexport function SearchGlassIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'search-glass-illustration--component',\n\t\t\t\t'flex size-20 items-center justify-center rounded-full bg-muted/40 ring-8 ring-muted/20',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Search className=\"size-8 text-muted-foreground\" />\n\t\t</div>\n\t);\n}\n\nSearchGlassIllustration.displayName = 'SearchGlassIllustration';\n","import { useId } from 'react';\n\nimport { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/** Three card silhouettes with a theme-backed fade; coordinates are drawing geometry. */\nexport function StackedCardsIllustration({ className }: EmptyStateIllustrationProps) {\n\tconst fadeId = useId();\n\treturn (\n\t\t<div className={cn('stacked-cards-illustration--component relative h-24 w-52', className)} aria-hidden=\"true\">\n\t\t\t<svg viewBox=\"0 0 208 96\" className=\"h-full w-full overflow-visible\" focusable=\"false\">\n\t\t\t\t<defs>\n\t\t\t\t\t<linearGradient id={fadeId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n\t\t\t\t\t\t<stop stopColor=\"var(--background)\" stopOpacity={0} />\n\t\t\t\t\t\t<stop offset=\"0.5\" stopColor=\"var(--background)\" stopOpacity={0.6} />\n\t\t\t\t\t\t<stop offset=\"1\" stopColor=\"var(--background)\" />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t</defs>\n\t\t\t\t<rect x={24.5} y={0.5} width={159} height={23} style={{ rx: 'var(--radius)' }} className=\"fill-muted/60 dark:fill-muted/30 stroke-border/50\" />\n\t\t\t\t<rect x={12.5} y={12.5} width={183} height={23} style={{ rx: 'var(--radius)' }} className=\"fill-muted/80 dark:fill-muted/50 stroke-border/60\" />\n\t\t\t\t<rect x={0.5} y={24.5} width={207} height={63} style={{ rx: 'var(--radius)' }} className=\"fill-background stroke-border drop-shadow-xs\" />\n\t\t\t\t<rect x={17} y={40} width={32} height={32} rx={4} className=\"fill-muted\" />\n\t\t\t\t<rect x={61} y={44} width={97.5} height={10} rx={4} className=\"fill-muted\" />\n\t\t\t\t<rect x={61} y={60} width={65} height={8} rx={4} className=\"fill-muted/60\" />\n\t\t\t\t<rect y={64} width={208} height={32} fill={`url(#${fadeId})`} />\n\t\t\t</svg>\n\t\t</div>\n\t);\n}\n\nStackedCardsIllustration.displayName = 'StackedCardsIllustration';\n","import { cn } from '../../../../../../lib/utils';\nimport type { EmptyStateIllustrationProps } from './types';\n\n/**\n * Three overlapping avatar circles — for \"no team members\", \"no\n * customers\", \"no contributors\" surfaces.\n */\nexport function UsersCircleIllustration({ className }: EmptyStateIllustrationProps) {\n\treturn (\n\t\t<div className={cn('users-circle-illustration--component relative flex h-24 w-32 items-center justify-center', className)} aria-hidden=\"true\">\n\t\t\t<div className=\"bg-muted/70 border-border absolute left-2 size-12 rounded-full border-2\" />\n\t\t\t<div className=\"bg-muted border-border z-10 size-14 rounded-full border-2 shadow-sm\" />\n\t\t\t<div className=\"bg-muted/60 border-border absolute right-2 size-10 rounded-full border-2\" />\n\t\t</div>\n\t);\n}\n\nUsersCircleIllustration.displayName = 'UsersCircleIllustration';\n","/**\n * Default user-facing strings for `<MetadataList>`.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <MetadataList strings={{ infoFallback: t('metadata.info') }} … />\n */\n\nexport interface MetadataListStrings {\n\t/**\n\t * Suffix appended to the label when generating the tooltip-trigger\n\t * `aria-label` (\"<label> info\"). Receives the label as the first arg\n\t * so consumers can localise the full template.\n\t */\n\tformatInfoAriaLabel: (label: string) => string;\n\t/** Fallback `aria-label` used when the field label is not a plain string. */\n\tinfoFallback: string;\n}\n\nexport const defaultMetadataListStrings: MetadataListStrings = {\n\tformatInfoAriaLabel: (label) => `${label} info`,\n\tinfoFallback: 'Info',\n};\n","/**\n * MetadataValue — primitive-backed adapter for typed label/value facts.\n *\n * Each descriptor kind exposes only the fields its primitive consumes. Custom\n * `node` values remain untouched so app-owned composition keeps its identity.\n */\nimport type { ReactNode } from 'react';\nimport type { Locale } from 'date-fns';\n\nimport { Badge, type BadgeProps } from '../../../base/badge';\nimport {\n\tDate as DateValue,\n\tDateTime,\n\tEmail,\n\tEmptyValue,\n\tLink,\n\tMoney,\n\tMonoValue,\n\tPhone,\n\tTime,\n\tUrl,\n\tValue,\n\ttype DateInput,\n\ttype DatePreset,\n\ttype MoneyProps,\n\ttype TimeProps,\n} from '../../../primitives';\nimport { EMPTY } from '../../../../lib/format';\nimport { cn } from '../../../../lib/utils';\n\nexport type MetadataValueKind =\n\t| 'text'\n\t| 'mono'\n\t| 'email'\n\t| 'phone'\n\t| 'url'\n\t| 'link'\n\t| 'date'\n\t| 'time'\n\t| 'datetime'\n\t| 'money'\n\t| 'badge'\n\t| 'node'\n\t| 'empty';\n\ntype MetadataDisplayValue = Exclude<ReactNode, null | undefined>;\ntype MetadataDateInput = Exclude<DateInput, null | undefined>;\n/** Styling hook shared by every descriptor. */\ntype MetadataDescriptorBase = {\n\t/** Merged onto the rendered value. */\n\tclassName?: string;\n};\n/** Empty handling shared by every descriptor that can receive a blank value. */\ntype MetadataValueFallback = {\n\t/** Copy shown when the value is empty. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n};\n/** Escape hatch for descriptors whose value can be rendered by the caller. */\ntype MetadataDisplayOverride = {\n\t/** Pre-rendered content used verbatim, bypassing this descriptor's formatting. */\n\tdisplay?: ReactNode;\n};\n\nexport type MetadataTextValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & MetadataDisplayOverride & {\n\t/** Plain text. The default when `kind` is omitted. */\n\tkind?: 'text';\n\t/** The value to show. */\n\tvalue: MetadataDisplayValue;\n};\n\nexport type MetadataMonoValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & MetadataDisplayOverride & {\n\t/** Monospace, for ids, hashes, and codes. */\n\tkind: 'mono';\n\t/** The value to show. */\n\tvalue: MetadataDisplayValue;\n};\n\nexport type MetadataContactValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & MetadataDisplayOverride & {\n\t/** Contact value, rendered as the matching `mailto:`, `tel:`, or external link. */\n\tkind: 'email' | 'phone' | 'url';\n\t/** The address, number, or URL. */\n\tvalue: string;\n};\n\nexport type MetadataLinkValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & MetadataDisplayOverride & {\n\t/** An arbitrary link, where text and destination differ. */\n\tkind: 'link';\n\t/** Destination for the entry, when it navigates. */\n\thref: string;\n\t/** Link text. Falls back to `href` when omitted. */\n\tvalue?: MetadataDisplayValue;\n};\n\nexport type MetadataDateValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & {\n\t/** A calendar date. */\n\tkind: 'date';\n\t/** The date to format. */\n\tvalue: MetadataDateInput;\n\t/** date-fns `Locale` for formatting. */\n\tdateLocale?: Locale;\n\t/** date-fns pattern, overriding `datePreset`. */\n\tdateFormat?: string;\n\t/** Named date length. */\n\tdatePreset?: DatePreset;\n};\n\nexport type MetadataTimeValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & {\n\t/** A time of day. */\n\tkind: 'time';\n\t/** The time to format. */\n\tvalue: MetadataDateInput;\n\t/** date-fns `Locale` for formatting. */\n\tdateLocale?: Locale;\n\t/** date-fns pattern, overriding `timePreset`. */\n\ttimeFormat?: string;\n\t/** Named time length. */\n\ttimePreset?: TimeProps['preset'];\n};\n\nexport type MetadataDateTimeValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & {\n\tkind: 'datetime';\n\t/** The instant to format. */\n\tvalue: MetadataDateInput;\n\t/** date-fns `Locale` for formatting. */\n\tdateLocale?: Locale;\n\t/** date-fns pattern for the date portion. */\n\tdateFormat?: string;\n\t/** date-fns pattern for the time portion. */\n\ttimeFormat?: string;\n\t/** Named date length, used when `dateFormat` is omitted. */\n\tdatePreset?: DatePreset;\n};\n\nexport type MetadataMoneyValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & {\n\t/** A monetary amount. */\n\tkind: 'money';\n\t/** The amount, in major units unless `minorUnitScale` says otherwise. */\n\tvalue: number | string;\n\t/** ISO currency code. */\n\tcurrency?: MoneyProps['currency'];\n\t/** Unit label shown after the amount. */\n\tunit?: MoneyProps['unit'];\n\t/** Divisor applied when the value arrives in minor units, e.g. `100` for cents. */\n\tminorUnitScale?: MoneyProps['minorUnitScale'];\n\t/** Explicit currency symbol, overriding the one derived from `currency`. */\n\tsymbol?: MoneyProps['symbol'];\n\t/** Whether the currency shows as a symbol, code, or name. */\n\tcurrencyDisplay?: MoneyProps['currencyDisplay'];\n\t/** Selects the compact or full presentation. */\n\tformatMode?: MoneyProps['formatMode'];\n\t/** Smallest number of decimals to show. */\n\tminimumFractionDigits?: MoneyProps['minimumFractionDigits'];\n\t/** Largest number of decimals to show. */\n\tmaximumFractionDigits?: MoneyProps['maximumFractionDigits'];\n\t/** BCP 47 locale for the amount. */\n\tlocale?: MoneyProps['locale'];\n};\n\nexport type MetadataBadgeValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & MetadataDisplayOverride & {\n\t/** A status chip. */\n\tkind: 'badge';\n\t/** Badge text. */\n\tvalue: MetadataDisplayValue;\n\t/** Badge tone. */\n\tbadgeTone?: BadgeProps['tone'];\n\t/** Badge size. */\n\tbadgeSize?: BadgeProps['size'];\n};\n\nexport type MetadataNodeValueDescriptor = {\n\t/** Arbitrary content, bypassing every formatting path. */\n\tkind: 'node';\n\t/** The content to render. */\n\tnode: ReactNode;\n};\n\nexport type MetadataEmptyValueDescriptor = MetadataDescriptorBase & MetadataValueFallback & {\n\t/** A known-absent value, rendered as the empty label rather than omitted. */\n\tkind: 'empty';\n};\n\nexport type MetadataValueDescriptor =\n\t| MetadataTextValueDescriptor\n\t| MetadataMonoValueDescriptor\n\t| MetadataContactValueDescriptor\n\t| MetadataLinkValueDescriptor\n\t| MetadataDateValueDescriptor\n\t| MetadataTimeValueDescriptor\n\t| MetadataDateTimeValueDescriptor\n\t| MetadataMoneyValueDescriptor\n\t| MetadataBadgeValueDescriptor\n\t| MetadataNodeValueDescriptor\n\t| MetadataEmptyValueDescriptor;\n\nexport type MetadataValueProps = MetadataValueDescriptor;\n\nfunction isEmpty(value: unknown) {\n\treturn value === null || value === undefined || value === '';\n}\n\nfunction renderEmptyValue(className: string | undefined, emptyLabel: ReactNode = EMPTY) {\n\treturn (\n\t\t<EmptyValue className={cn('metadata-value--component', className)}>\n\t\t\t{emptyLabel}\n\t\t</EmptyValue>\n\t);\n}\n\nfunction assertNever(_value: never): never {\n\tthrow new Error('Unsupported metadata value descriptor.');\n}\n\nexport function MetadataValue(props: MetadataValueProps) {\n\tif (props.kind === 'node') return <>{props.node}</>;\n\tif (props.kind === 'empty') return renderEmptyValue(props.className, props.emptyLabel);\n\n\tif (props.kind !== 'link' && isEmpty(props.value)) {\n\t\treturn renderEmptyValue(props.className, props.emptyLabel);\n\t}\n\n\tswitch (props.kind) {\n\t\tcase undefined:\n\t\tcase 'text':\n\t\t\treturn (\n\t\t\t\t<Value className={cn('metadata-value--component', props.className)}>\n\t\t\t\t\t{props.display ?? props.value}\n\t\t\t\t</Value>\n\t\t\t);\n\t\tcase 'mono':\n\t\t\treturn (\n\t\t\t\t<MonoValue className={cn('metadata-value--component', props.className)}>\n\t\t\t\t\t{props.display ?? props.value}\n\t\t\t\t</MonoValue>\n\t\t\t);\n\t\tcase 'email':\n\t\t\treturn <Email value={props.value} display={props.display} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'phone':\n\t\t\treturn <Phone value={props.value} display={props.display} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'url':\n\t\t\treturn <Url value={props.value} display={props.display} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'link':\n\t\t\treturn (\n\t\t\t\t<Link href={props.href} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)}>\n\t\t\t\t\t{props.display ?? props.value ?? props.href}\n\t\t\t\t</Link>\n\t\t\t);\n\t\tcase 'date':\n\t\t\treturn <DateValue value={props.value} format={props.dateFormat} preset={props.datePreset} locale={props.dateLocale} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'time':\n\t\t\treturn <Time value={props.value} format={props.timeFormat} preset={props.timePreset} locale={props.dateLocale} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'datetime':\n\t\t\treturn <DateTime value={props.value} format={props.dateFormat} timeFormat={props.timeFormat} preset={props.datePreset} locale={props.dateLocale} emptyLabel={props.emptyLabel} className={cn('metadata-value--component', props.className)} />;\n\t\tcase 'money':\n\t\t\treturn (\n\t\t\t\t<Money\n\t\t\t\t\tamount={props.value}\n\t\t\t\t\tcurrency={props.currency}\n\t\t\t\t\tunit={props.unit}\n\t\t\t\t\tminorUnitScale={props.minorUnitScale}\n\t\t\t\t\tsymbol={props.symbol}\n\t\t\t\t\tcurrencyDisplay={props.currencyDisplay}\n\t\t\t\t\tformatMode={props.formatMode}\n\t\t\t\t\tminimumFractionDigits={props.minimumFractionDigits}\n\t\t\t\t\tmaximumFractionDigits={props.maximumFractionDigits}\n\t\t\t\t\tlocale={props.locale}\n\t\t\t\t\temptyLabel={props.emptyLabel}\n\t\t\t\t\tclassName={cn('metadata-value--component', props.className)}\n\t\t\t\t/>\n\t\t\t);\n\t\tcase 'badge':\n\t\t\treturn (\n\t\t\t\t<Badge\n\t\t\t\t\ttone={props.badgeTone ?? 'secondary'}\n\t\t\t\t\tsize={props.badgeSize}\n\t\t\t\t\tinline\n\t\t\t\t\tclassName={cn('metadata-value--component self-start justify-self-start', props.className)}\n\t\t\t\t>\n\t\t\t\t\t{props.display ?? props.value}\n\t\t\t\t</Badge>\n\t\t\t);\n\t\tdefault:\n\t\t\treturn assertNever(props);\n\t}\n}\n\nMetadataValue.displayName = 'MetadataValue';\n","/**\n * MetadataList — flexible label/value list for entity metadata.\n *\n * Three layouts:\n * - `grid` (default): label-on-top, value-below cells for entity details.\n * - `rows`: two-column definition rows with hairline separators.\n * - `inline`: label/separator/value pairs that wrap, suitable for\n * pill-style summaries (e.g. \"Created Jan 4 · By Alice · v3.2\").\n *\n * Each item supports an optional icon, tooltip, React-node value, custom\n * `render`, and per-item `emptyLabel`. Falls back to the shared `EMPTY` when\n * both are missing. Returns `null` when the list is empty so callers can render\n * unconditionally.\n */\nimport { Info, type LucideIcon } from 'lucide-react';\nimport React from 'react';\n\nimport { Separator } from '../../../base/display/separator';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../../../base/display/tooltip';\nimport { Grid, Stack, type ResponsiveValue } from '../../../base/structure';\nimport { DisplayLabel } from '../../../typography/display-label';\nimport { Text } from '../../../typography/text';\nimport { EMPTY } from '../../../../lib/format';\nimport { fieldAffordanceRecipes } from '../../../../lib/field-affordance-recipes';\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tdefaultMetadataListStrings,\n\ttype MetadataListStrings,\n} from './metadata-list.strings';\nimport {\n\tMetadataValue,\n\ttype MetadataValueDescriptor,\n} from './metadata-value';\n\nexport type { MetadataListStrings };\nexport { defaultMetadataListStrings };\n\nexport type MetadataListItem = {\n\t/** Stable identity for this entry. */\n\tid?: string;\n\t/** Display label. */\n\tlabel: React.ReactNode;\n\tvalue?: React.ReactNode | MetadataValueDescriptor | null;\n\t/** Supporting copy shown under the label. */\n\tdescription?: React.ReactNode | null;\n\ttooltip?: React.ReactNode;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\temptyLabel?: React.ReactNode;\n\trender?: (item: MetadataListItem) => React.ReactNode;\n};\n\nexport type MetadataInlineListItem = Omit<MetadataListItem, 'description'> & {\n\tdescription?: never;\n};\n\nexport type MetadataLayout = 'grid' | 'rows' | 'inline';\nexport type MetadataDensity = 'default' | 'compact';\n\ntype MetadataListSharedProps = {\n\t/** How many columns the grid layout uses. Accepts a per-breakpoint value. */\n\tcolumns?: ResponsiveValue<1 | 2 | 3 | 4>;\n\t/** Row spacing. `compact` tightens the list for dense panels. */\n\tdensity?: MetadataDensity;\n\t/** Copy shown for an item whose value is empty. Defaults to an em dash. */\n\temptyLabel?: React.ReactNode;\n\t/** Surface title. */\n\ttitle?: React.ReactNode;\n\t/** Draws a rule between the title and the first item. */\n\ttitleSeparator?: boolean;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Character placed between a label and its value. Defaults to a colon. */\n\tseparator?: string;\n\t/** Divider between items — `true` for the default rule, or a character for inline layouts. */\n\titemSeparator?: boolean | string;\n\t/** Per-instance string overrides (deep-merged over `defaultMetadataListStrings`). */\n\tstrings?: StringsProp<MetadataListStrings>;\n};\n\ntype MetadataGridRowsProps = MetadataListSharedProps & {\n\t/** Label/value pairs to render. */\n\titems: MetadataListItem[];\n\t/** `grid` flows items into `columns`; `rows` stacks them one per line. Default: `grid`. */\n\tlayout?: 'grid' | 'rows';\n};\n\ntype MetadataInlineProps = MetadataListSharedProps & {\n\t/** Values to render, without labels. */\n\titems: MetadataInlineListItem[];\n\t/** Runs the values together on one line, separated by `itemSeparator`. */\n\tlayout: 'inline';\n};\n\nexport type MetadataListProps =\n\t| MetadataGridRowsProps\n\t| MetadataInlineProps;\n\nconst metadataColumnRecipes: Record<1 | 2 | 3 | 4, ResponsiveValue<1 | 2 | 3 | 4>> = {\n\t1: 1,\n\t2: { base: 1, md: 2 },\n\t3: { base: 1, sm: 2, lg: 3 },\n\t4: { base: 1, sm: 2, lg: 3, xl: 4 },\n};\n\nfunction resolveMetadataColumns(\n\tcolumns: ResponsiveValue<1 | 2 | 3 | 4>,\n): ResponsiveValue<1 | 2 | 3 | 4> {\n\treturn typeof columns === 'object' ? columns : metadataColumnRecipes[columns];\n}\n\nconst resolveKey = (item: MetadataListItem, index: number): string => {\n\tif (item.id) {\n\t\treturn item.id;\n\t}\n\n\tconst rawLabel = typeof item.label === 'string' ? item.label : `${index}`;\n\treturn `metadata-${rawLabel}-${index}`;\n};\n\nfunction isPrimitiveMetadataValue(value: React.ReactNode): value is string | number {\n\treturn typeof value === 'string' || typeof value === 'number';\n}\n\nfunction isMetadataValueDescriptor(value: unknown): value is MetadataValueDescriptor {\n\treturn (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t!React.isValidElement(value) &&\n\t\t!Array.isArray(value) &&\n\t\t('kind' in value || 'node' in value || 'value' in value)\n\t);\n}\n\nfunction renderMetadataValue({\n\tvalue,\n\tisEmptyValue,\n\temptyLabel,\n\tvalueBase,\n}: {\n\tvalue: React.ReactNode | MetadataValueDescriptor;\n\tisEmptyValue: boolean;\n\temptyLabel: React.ReactNode;\n\tvalueBase: string;\n}) {\n\tif (isMetadataValueDescriptor(value)) {\n\t\tif (value.kind === 'node') return <MetadataValue {...value} />;\n\t\treturn (\n\t\t\t<MetadataValue\n\t\t\t\t{...value}\n\t\t\t\temptyLabel={value.emptyLabel ?? emptyLabel}\n\t\t\t\tclassName={cn(valueBase, value.className)}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (isPrimitiveMetadataValue(value)) {\n\t\treturn (\n\t\t\t<MetadataValue\n\t\t\t\tvalue={value}\n\t\t\t\tkind={isEmptyValue ? 'empty' : 'text'}\n\t\t\t\temptyLabel={emptyLabel}\n\t\t\t\tclassName={valueBase}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn value;\n}\n\nfunction MetadataInfoTrigger({\n\ttriggerProps,\n\tariaLabel,\n}: {\n\ttriggerProps: React.ComponentProps<'button'>;\n\tariaLabel: string;\n}) {\n\tconst { className, ...props } = triggerProps;\n\treturn (\n\t\t<button\n\t\t\t{...props}\n\t\t\ttype=\"button\"\n\t\t\tclassName={cn(\n\t\t\t\t'metadata-list--info-trigger',\n\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\tfieldAffordanceRecipes.clear,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-label={ariaLabel}\n\t\t>\n\t\t\t<Info className={cn(fieldAffordanceRecipes.icon, 'cursor-help')} aria-hidden=\"true\" />\n\t\t</button>\n\t);\n}\n\nexport function MetadataList({\n\titems,\n\tcolumns = 2,\n\tdensity = 'default',\n\temptyLabel = EMPTY,\n\ttitle,\n\ttitleSeparator = false,\n\tclassName,\n\tlayout = 'grid',\n\tseparator = ': ',\n\titemSeparator = false,\n\tstrings: stringsProp,\n}: MetadataListProps) {\n\tconst strings = useStrings(defaultMetadataListStrings, stringsProp);\n\tconst list = React.useMemo(() => items.filter(Boolean), [items]);\n\n\tif (list.length === 0) {\n\t\treturn null;\n\t}\n\n\tconst isCompact = density === 'compact';\n\tconst labelBase = 'metadata--field text-left';\n\tconst valueBase = 'metadata-list--value text-sm';\n\tconst titleClassName = 'block';\n\tconst hasTitle = title !== null && title !== undefined;\n\tconst shouldShowSeparator = hasTitle && titleSeparator;\n\n\tif (layout === 'inline') {\n\t\tconst itemSeparatorText =\n\t\t\ttypeof itemSeparator === 'string'\n\t\t\t\t? itemSeparator\n\t\t\t\t: itemSeparator\n\t\t\t\t\t? ' | '\n\t\t\t\t\t: '';\n\n\t\treturn (\n\t\t\t<Stack gap=\"sm\" className={cn('metadata-list--component', 'metadata-list-container @container/metadata-list', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<DisplayLabel tag=\"div\" className={cn('metadata-list--title', titleClassName)}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</DisplayLabel>\n\t\t\t\t)}\n\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"metadata-list--title-separator\" />}\n\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"horizontal\"\n\t\t\t\t\talign=\"baseline\"\n\t\t\t\t\tgap={isCompact ? 'sm' : 'md'}\n\t\t\t\t\tclassName=\"metadata-list--inline\"\n\t\t\t\t>\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst isEmptyValue = item.value === null || item.value === undefined;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\t\t\t\t\t\tconst showItemSeparator = itemSeparatorText && index < list.length - 1;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<React.Fragment key={key}>\n\t\t\t\t\t\t\t\t<Stack direction=\"horizontal\" align=\"baseline\" gap=\"xs\" className=\"metadata-list--item min-w-0 [&>*]:max-w-full [&>*]:min-w-0 [&>.badge--component]:self-center\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon\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'flex-shrink-0 self-center',\n\t\t\t\t\t\t\t\t\t\t\t\tisCompact ? 'size-icon-sm' : 'size-icon',\n\t\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{/* Label, optional info trigger, and the separator are one\n\t\t\t\t\t\t\t\t\t unit: the item Stack's gap would otherwise fall\n\t\t\t\t\t\t\t\t\t between the label and the colon and render\n\t\t\t\t\t\t\t\t\t \"SKU : value\" — French spacing — instead of\n\t\t\t\t\t\t\t\t\t \"SKU: value\". The gap belongs after the colon only. */}\n\t\t\t\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"none\" align=\"baseline\" className=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t<DisplayLabel className={cn('metadata-list--label whitespace-nowrap', labelBase)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MetadataInfoTrigger\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerProps={triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tariaLabel={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{separator}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</Stack>\n\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? item.render?.(item) : renderMetadataValue({\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tisEmptyValue,\n\t\t\t\t\t\t\t\t\t\temptyLabel: effectiveEmptyLabel,\n\t\t\t\t\t\t\t\t\t\tvalueBase: cn(valueBase, 'leading-tight'),\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Stack>\n\n\t\t\t\t\t\t\t\t{!!showItemSeparator && (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"metadata-list--item-separator\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{itemSeparatorText}\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</React.Fragment>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\tif (layout === 'rows') {\n\t\tconst rowPaddingY = isCompact ? 'py-row-y-sm' : 'py-row-y';\n\t\treturn (\n\t\t\t<Stack gap=\"sm\" className={cn('metadata-list--component', 'metadata-list-container @container/metadata-list', className)}>\n\t\t\t\t{!!hasTitle && (\n\t\t\t\t\t<DisplayLabel tag=\"div\" className={cn('metadata-list--title', titleClassName)}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</DisplayLabel>\n\t\t\t\t)}\n\t\t\t\t{!!shouldShowSeparator && <Separator className=\"metadata-list--title-separator\" />}\n\t\t\t\t<Stack render={<dl />} gap=\"none\" className=\"metadata-list--rows m-0 divide-y divide-border/50\">\n\t\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\t\tconst isEmptyValue = item.value === null || item.value === undefined;\n\t\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\tclassName={cn('metadata-list--item flex items-baseline justify-between gap-x-space-md', rowPaddingY)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<dt className=\"flex shrink-0 items-center gap-space-sm min-w-0\">\n\t\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t\t<Icon className={cn('flex-shrink-0 text-muted-foreground', isCompact ? 'size-icon-sm' : 'size-icon')} />\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t<DisplayLabel className={cn('metadata-list--label', labelBase)}>\n\t\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t\t</DisplayLabel>\n\t\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<MetadataInfoTrigger\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerProps={triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tariaLabel={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<TooltipContent side=\"top\" align=\"start\" className=\"max-w-xs\">\n\t\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd className=\"m-0 grid min-w-0 justify-items-end text-right gap-dense break-words [overflow-wrap:anywhere] [&>*]:max-w-full [&>*]:min-w-0 [&>.badge--component]:justify-self-end\">\n\t\t\t\t\t\t\t\t\t{hasCustomRender ? item.render?.(item) : renderMetadataValue({\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tisEmptyValue,\n\t\t\t\t\t\t\t\t\t\temptyLabel: effectiveEmptyLabel,\n\t\t\t\t\t\t\t\t\t\tvalueBase: cn(valueBase, 'text-right break-words leading-tight'),\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" align=\"right\" lineHeight=\"snug\" className=\"metadata-list--description\">\n\t\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack gap=\"sm\" className={cn('metadata-list--component', 'metadata-list-container @container/metadata-list', className)}>\n\t\t\t{!!hasTitle && (\n\t\t\t\t<DisplayLabel tag=\"div\" className={cn('metadata-list--title', titleClassName)}>\n\t\t\t\t\t{title}\n\t\t\t\t</DisplayLabel>\n\t\t\t)}\n\n\t\t\t{!!shouldShowSeparator && <Separator className=\"metadata-list--title-separator\" />}\n\n\t\t\t<Grid\n\t\t\t\tcolumns={resolveMetadataColumns(columns)}\n\t\t\t\tgap={isCompact ? 'md' : 'xl'}\n\t\t\t\talign=\"start\"\n\t\t\t\tclassName=\"metadata-list--grid\"\n\t\t\t>\n\t\t\t\t{list.map((item, index) => {\n\t\t\t\t\tconst key = resolveKey(item, index);\n\t\t\t\t\tconst effectiveEmptyLabel = item.emptyLabel ?? emptyLabel;\n\t\t\t\t\tconst isEmptyValue = item.value === null || item.value === undefined;\n\t\t\t\t\tconst value = item.value ?? effectiveEmptyLabel;\n\t\t\t\t\tconst Icon = item.icon;\n\t\t\t\t\tconst hasTooltip = item.tooltip !== null && item.tooltip !== undefined;\n\t\t\t\t\tconst hasCustomRender = typeof item.render === 'function';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\tgap={isCompact ? '2xs' : 'xs'}\n\t\t\t\t\t\t\tclassName=\"metadata-list--item min-w-0 items-start [&>*]:max-w-full [&>*]:min-w-0 [&>.badge--component]:self-start\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div className=\"flex items-center gap-space-sm\">\n\t\t\t\t\t\t\t\t{!!Icon && (\n\t\t\t\t\t\t\t\t\t<Icon\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-shrink-0',\n\t\t\t\t\t\t\t\t\t\t\tisCompact ? 'size-icon-sm' : 'size-icon',\n\t\t\t\t\t\t\t\t\t\t\t'text-muted-foreground',\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\n\t\t\t\t\t\t\t\t<DisplayLabel className={cn('metadata-list--label', labelBase)}>\n\t\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t\t</DisplayLabel>\n\n\t\t\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t\t\t<TooltipTrigger\n\t\t\t\t\t\t\t\t\t\t\trender={(triggerProps) => (\n\t\t\t\t\t\t\t\t\t\t\t\t<MetadataInfoTrigger\n\t\t\t\t\t\t\t\t\t\t\t\t\ttriggerProps={triggerProps}\n\t\t\t\t\t\t\t\t\t\t\t\t\tariaLabel={typeof item.label === 'string' ? strings.formatInfoAriaLabel(item.label) : strings.infoFallback}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<TooltipContent\n\t\t\t\t\t\t\t\t\t\t\tside=\"top\"\n\t\t\t\t\t\t\t\t\t\t\talign=\"start\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"max-w-xs\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Text type=\"inverse\" size=\"xs\">{item.tooltip}</Text>\n\t\t\t\t\t\t\t\t\t\t</TooltipContent>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t{hasCustomRender ? item.render?.(item) : renderMetadataValue({\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tisEmptyValue,\n\t\t\t\t\t\t\t\temptyLabel: effectiveEmptyLabel,\n\t\t\t\t\t\t\t\tvalueBase: cn(valueBase, 'leading-tight'),\n\t\t\t\t\t\t\t})}\n\n\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\t\t\t\t\tclassName=\"metadata-list--description\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{item.description}\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);\n\t\t\t\t})}\n\t\t\t</Grid>\n\t\t</Stack>\n\t);\n}\n\nMetadataList.displayName = 'MetadataList';\n","/**\n * RelationshipCardFrame — card-free scaffold for app-owned resource cards.\n *\n * The package owns the visual grammar; the app owns the domain data,\n * selectors, mutations, and routing. Frame it with Card at the page,\n * drawer, or preview call site when card chrome is needed.\n */\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\n\nimport { Badge, type BadgeProps } from '../../base/badge';\nimport { Stack } from '../../base/structure';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\nexport interface RelationshipCardFrameProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n\t/** Leading glyph. */\n\ticon?: ReactNode;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Chip beside the title. Pass a node, or an object to use the built-in badge. */\n\ttitleBadge?: ReactNode | { label: ReactNode; tone?: BadgeProps['tone']; size?: BadgeProps['size'] };\n\t/** Notice between the header and the body. */\n\talertSlot?: ReactNode;\n\t/** Label/value facts under the title. */\n\tmetadataSlot?: ReactNode;\n\t/** Main control in the header. */\n\tprimaryActionSlot?: ReactNode;\n\t/** Overflow menu at the end of the header. */\n\toverflowActionSlot?: ReactNode;\n\t/** Control that changes which relationship is shown. */\n\tselectorSlot?: ReactNode;\n\t/** Expanded detail region below the body. */\n\tdetailsSlot?: ReactNode;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Merged onto the header. */\n\theaderClassName?: string;\n\t/** Merged onto the body. */\n\tbodyClassName?: string;\n}\n\nfunction renderTitleBadge(badge: RelationshipCardFrameProps['titleBadge']) {\n\tif (!badge) return null;\n\tif (typeof badge === 'object' && !Array.isArray(badge) && 'label' in badge) {\n\t\treturn (\n\t\t\t<Badge inline tone={badge.tone ?? 'secondary'} size={badge.size}>\n\t\t\t\t{badge.label}\n\t\t\t</Badge>\n\t\t);\n\t}\n\treturn badge;\n}\n\nexport const RelationshipCardFrame = forwardRef<HTMLDivElement, RelationshipCardFrameProps>(function RelationshipCardFrame({\n\ticon,\n\ttitle,\n\ttitleBadge,\n\talertSlot,\n\tmetadataSlot,\n\tprimaryActionSlot,\n\toverflowActionSlot,\n\tselectorSlot,\n\tdetailsSlot,\n\tclassName,\n\theaderClassName,\n\tbodyClassName,\n\t...props\n}, ref) {\n\tconst hasBody =\n\t\t!!alertSlot ||\n\t\t!!metadataSlot ||\n\t\t!!primaryActionSlot ||\n\t\t!!selectorSlot ||\n\t\t!!detailsSlot;\n\n\treturn (\n\t\t<Stack\n\t\t\tref={ref}\n\t\t\tclassName={cn('relationship-card-frame--component', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<Stack direction=\"horizontal\" gap=\"md\" align=\"start\" justify=\"between\" wrap={false} className={cn('relationship-card-frame--header', headerClassName)}>\n\t\t\t\t<Stack direction=\"horizontal\" gap=\"md\" align=\"start\" wrap={false} className=\"relationship-card-frame--header-start\">\n\t\t\t\t\t{!!icon && (\n\t\t\t\t\t\t<div className=\"relationship-card-frame--icon mt-space-2xs inline-flex shrink-0 items-center text-muted-foreground\">\n\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className=\"min-w-0\">\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" className=\"relationship-card-frame--title-row\">\n\t\t\t\t\t\t\t<Text tag=\"div\" weight=\"medium\" className=\"relationship-card-frame--title truncate\">\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{!!titleBadge && (\n\t\t\t\t\t\t\t\t<span className=\"relationship-card-frame--title-badge inline-flex\">\n\t\t\t\t\t\t\t\t\t{renderTitleBadge(titleBadge)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</div>\n\t\t\t\t</Stack>\n\t\t\t\t{!!overflowActionSlot && (\n\t\t\t\t\t<div className=\"relationship-card-frame--overflow shrink-0\">\n\t\t\t\t\t\t{overflowActionSlot}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\n\t\t\t{!!hasBody && (\n\t\t\t\t<Stack className={cn('relationship-card-frame--body', bodyClassName)}>\n\t\t\t\t\t{!!alertSlot && <div className=\"relationship-card-frame--alert\">{alertSlot}</div>}\n\t\t\t\t\t{!!selectorSlot && <div className=\"relationship-card-frame--selector\">{selectorSlot}</div>}\n\t\t\t\t\t{!!metadataSlot && <div className=\"relationship-card-frame--metadata\">{metadataSlot}</div>}\n\t\t\t\t\t{!!primaryActionSlot && <div className=\"relationship-card-frame--primary-action\">{primaryActionSlot}</div>}\n\t\t\t\t\t{!!detailsSlot && <div className=\"relationship-card-frame--details\">{detailsSlot}</div>}\n\t\t\t\t</Stack>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nRelationshipCardFrame.displayName = 'RelationshipCardFrame';\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { o as e } from "./ui-provider-CftIB6TY.js";
3
- import { t } from "./utils-C2EKeIw3.js";
4
- import { a as n } from "./typography-Cv8MT-82.js";
2
+ import { o as e } from "./ui-provider-DRPn3qNl.js";
3
+ import { t } from "./utils-BvH9PSmq.js";
4
+ import { a as n } from "./typography-BxQgiZyw.js";
5
5
  import "react";
6
6
  import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
7
7
  import { format as o, formatDistanceToNow as s, isValid as c, parseISO as l } from "date-fns";
@@ -137,4 +137,4 @@ _.displayName = "Date";
137
137
  //#endregion
138
138
  export { v as a, x as i, b as n, h as o, y as r, f as s, _ as t };
139
139
 
140
- //# sourceMappingURL=date-BFNMnrS5.js.map
140
+ //# sourceMappingURL=date-DOKhJPu7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-BFNMnrS5.js","names":["formatDateFns","_Fragment","useDatesConfig","Text","Fragment$1","datePresetFormats","timePresetFormats","parseDateInput","value","isValid","parsed","parseISO","formatDateValue","format","formatString","locale","hasDateInput","formatDateRange","preset","fromLabel","from","toLabel","to","separator","renderFormattedDate","label","cn","componentClassName","className","props","emptyLabel","DatePrimitive","dates","Time","DateTime","dateFormat","timeFormat","DateRange","resolvedLocale","hasLabel","type","RelativeTime","formatRelativeTime","formatDistanceToNow"],"sources":["../src/components/primitives/date.tsx"],"sourcesContent":["import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from 'react';\nimport {\n\tformat as formatDateFns,\n\tformatDistanceToNow,\n\tisValid,\n\tparseISO,\n\ttype Locale,\n} from 'date-fns';\n\nimport { Text, type TextProps } from '../typography';\nimport type { TextSize } from '../../lib/ui-provider';\nimport { EMPTY } from '../../lib/format';\nimport { useDatesConfig } from '../../lib/ui-provider';\nimport { cn } from '../../lib/utils';\n\ntype NativeDate = InstanceType<typeof globalThis.Date>;\nexport type DateInput = NativeDate | string | number | null | undefined;\ntype SpanProps = Omit<ComponentPropsWithoutRef<'span'>, 'children' | 'color'>;\n\nexport type DatePreset = 'compact' | 'short' | 'medium' | 'long';\n\nexport interface DateProps extends SpanProps {\n\tvalue?: DateInput;\n\tformat?: string;\n\tpreset?: DatePreset;\n\tlocale?: Locale;\n\temptyLabel?: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tref?: Ref<HTMLSpanElement>;\n}\n\nexport interface TimeProps extends Omit<DateProps, 'preset'> {\n\tpreset?: 'short' | 'medium';\n}\n\nexport interface DateTimeProps extends DateProps {\n\ttimeFormat?: string;\n}\n\nexport interface DateRangeValue {\n\tfrom?: DateInput;\n\tto?: DateInput;\n}\n\nexport interface FormatDateRangeOptions {\n\tformat?: string;\n\tpreset?: DatePreset;\n\tlocale?: Locale;\n\tseparator?: string;\n}\n\nexport interface DateRangeProps extends Omit<DateProps, 'value'>, DateRangeValue {\n\tseparator?: ReactNode;\n}\n\nexport interface RelativeTimeProps extends SpanProps {\n\tvalue?: DateInput;\n\tlocale?: Locale;\n\taddSuffix?: boolean;\n\tincludeSeconds?: boolean;\n\temptyLabel?: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tformatRelativeTime?: (iso: string) => string;\n\tref?: Ref<HTMLSpanElement>;\n}\n\nconst datePresetFormats: Record<DatePreset, string> = {\n\tcompact: 'dd MMM',\n\tshort: 'P',\n\tmedium: 'PP',\n\tlong: 'PPP',\n};\n\nconst timePresetFormats: Record<NonNullable<TimeProps['preset']>, string> = {\n\tshort: 'p',\n\tmedium: 'pp',\n};\n\nexport function parseDateInput(value: DateInput): NativeDate | null {\n\tif (value === null || value === undefined || value === '') return null;\n\tif (value instanceof globalThis.Date) return isValid(value) ? value : null;\n\tconst parsed = typeof value === 'string' ? parseISO(value) : new globalThis.Date(value);\n\treturn isValid(parsed) ? parsed : null;\n}\n\nfunction formatDateValue(value: DateInput, formatString: string, locale?: Locale) {\n\tconst parsed = parseDateInput(value);\n\tif (!parsed) return null;\n\treturn formatDateFns(parsed, formatString, locale ? { locale } : undefined);\n}\n\nfunction hasDateInput(value: DateInput) {\n\treturn value !== null && value !== undefined && value !== '';\n}\n\nexport function formatDateRange(\n\t{ from, to }: DateRangeValue,\n\t{\n\t\tformat,\n\t\tpreset = 'medium',\n\t\tlocale,\n\t\tseparator = ' – ',\n\t}: FormatDateRangeOptions = {},\n): string | null {\n\tconst formatString = format ?? datePresetFormats[preset];\n\tconst fromLabel = formatDateValue(from, formatString, locale);\n\tconst toLabel = formatDateValue(to, formatString, locale);\n\tif ((hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null)) return null;\n\tif (fromLabel && toLabel) return `${fromLabel}${separator}${toLabel}`;\n\treturn fromLabel ?? toLabel;\n}\n\nfunction renderFormattedDate({\n\tcomponentClassName,\n\tvalue,\n\tformatString,\n\tlocale,\n\temptyLabel,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tprops,\n\tref,\n}: {\n\tcomponentClassName: string;\n\tvalue: DateInput;\n\tformatString: string;\n\tlocale?: Locale;\n\temptyLabel: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tclassName?: string;\n\tprops: SpanProps;\n\tref?: Ref<HTMLSpanElement>;\n}) {\n\tconst label = formatDateValue(value, formatString, locale);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={type}\n\t\t\tclassName={cn(componentClassName, 'inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nexport function DatePrimitive({\n\tvalue,\n\tformat,\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\tconst resolvedLocale = locale ?? dates.locale;\n\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'date--component',\n\t\tvalue,\n\t\tformatString,\n\t\tlocale: resolvedLocale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function Time({\n\tvalue,\n\tformat,\n\tpreset = 'short',\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: TimeProps) {\n\tconst dates = useDatesConfig();\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'time--component',\n\t\tvalue,\n\t\tformatString: format ?? timePresetFormats[preset],\n\t\tlocale: locale ?? dates.locale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function DateTime({\n\tvalue,\n\tformat,\n\ttimeFormat = 'p',\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst dateFormat = preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium;\n\tconst formatString = format ?? `${dateFormat} ${timeFormat}`;\n\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'date-time--component',\n\t\tvalue,\n\t\tformatString,\n\t\tlocale: locale ?? dates.locale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function DateRange({\n\tfrom,\n\tto,\n\tformat,\n\tpreset,\n\tlocale,\n\tseparator = ' – ',\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateRangeProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst fromLabel = formatDateValue(from, formatString, resolvedLocale);\n\tconst toLabel = formatDateValue(to, formatString, resolvedLocale);\n\tconst invalid = (hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null);\n\tconst hasLabel = !invalid && Boolean(fromLabel || toLabel);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={hasLabel ? type : 'secondary'}\n\t\t\tclassName={cn('date-range--component inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasLabel ? (\n\t\t\t\t<>\n\t\t\t\t\t{fromLabel}\n\t\t\t\t\t{!!fromLabel && !!toLabel && separator}\n\t\t\t\t\t{toLabel}\n\t\t\t\t</>\n\t\t\t) : emptyLabel}\n\t\t</Text>\n\t);\n}\n\nexport function RelativeTime({\n\tvalue,\n\tlocale,\n\taddSuffix = true,\n\tincludeSeconds,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'secondary',\n\tformatRelativeTime,\n\tclassName,\n\tref,\n\t...props\n}: RelativeTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst parsed = parseDateInput(value);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst label = parsed\n\t\t? formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\tdates.formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\tformatDistanceToNow(parsed, {\n\t\t\t\taddSuffix,\n\t\t\t\tincludeSeconds,\n\t\t\t\t...(resolvedLocale ? { locale: resolvedLocale } : {}),\n\t\t\t})\n\t\t: null;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={type}\n\t\t\tclassName={cn('relative-time--component inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nDatePrimitive.displayName = 'Date';\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-DOKhJPu7.js","names":["formatDateFns","_Fragment","useDatesConfig","Text","Fragment$1","datePresetFormats","timePresetFormats","parseDateInput","value","isValid","parsed","parseISO","formatDateValue","format","formatString","locale","hasDateInput","formatDateRange","preset","fromLabel","from","toLabel","to","separator","renderFormattedDate","label","cn","componentClassName","className","props","emptyLabel","DatePrimitive","dates","Time","DateTime","dateFormat","timeFormat","DateRange","resolvedLocale","hasLabel","type","RelativeTime","formatRelativeTime","formatDistanceToNow"],"sources":["../src/components/primitives/date.tsx"],"sourcesContent":["import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from 'react';\nimport {\n\tformat as formatDateFns,\n\tformatDistanceToNow,\n\tisValid,\n\tparseISO,\n\ttype Locale,\n} from 'date-fns';\n\nimport { Text, type TextProps } from '../typography';\nimport type { TextSize } from '../../lib/ui-provider';\nimport { EMPTY } from '../../lib/format';\nimport { useDatesConfig } from '../../lib/ui-provider';\nimport { cn } from '../../lib/utils';\n\ntype NativeDate = InstanceType<typeof globalThis.Date>;\nexport type DateInput = NativeDate | string | number | null | undefined;\ntype SpanProps = Omit<ComponentPropsWithoutRef<'span'>, 'children' | 'color'>;\n\nexport type DatePreset = 'compact' | 'short' | 'medium' | 'long';\n\nexport interface DateProps extends SpanProps {\n\tvalue?: DateInput;\n\tformat?: string;\n\tpreset?: DatePreset;\n\tlocale?: Locale;\n\temptyLabel?: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tref?: Ref<HTMLSpanElement>;\n}\n\nexport interface TimeProps extends Omit<DateProps, 'preset'> {\n\tpreset?: 'short' | 'medium';\n}\n\nexport interface DateTimeProps extends DateProps {\n\ttimeFormat?: string;\n}\n\nexport interface DateRangeValue {\n\tfrom?: DateInput;\n\tto?: DateInput;\n}\n\nexport interface FormatDateRangeOptions {\n\tformat?: string;\n\tpreset?: DatePreset;\n\tlocale?: Locale;\n\tseparator?: string;\n}\n\nexport interface DateRangeProps extends Omit<DateProps, 'value'>, DateRangeValue {\n\tseparator?: ReactNode;\n}\n\nexport interface RelativeTimeProps extends SpanProps {\n\tvalue?: DateInput;\n\tlocale?: Locale;\n\taddSuffix?: boolean;\n\tincludeSeconds?: boolean;\n\temptyLabel?: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tformatRelativeTime?: (iso: string) => string;\n\tref?: Ref<HTMLSpanElement>;\n}\n\nconst datePresetFormats: Record<DatePreset, string> = {\n\tcompact: 'dd MMM',\n\tshort: 'P',\n\tmedium: 'PP',\n\tlong: 'PPP',\n};\n\nconst timePresetFormats: Record<NonNullable<TimeProps['preset']>, string> = {\n\tshort: 'p',\n\tmedium: 'pp',\n};\n\nexport function parseDateInput(value: DateInput): NativeDate | null {\n\tif (value === null || value === undefined || value === '') return null;\n\tif (value instanceof globalThis.Date) return isValid(value) ? value : null;\n\tconst parsed = typeof value === 'string' ? parseISO(value) : new globalThis.Date(value);\n\treturn isValid(parsed) ? parsed : null;\n}\n\nfunction formatDateValue(value: DateInput, formatString: string, locale?: Locale) {\n\tconst parsed = parseDateInput(value);\n\tif (!parsed) return null;\n\treturn formatDateFns(parsed, formatString, locale ? { locale } : undefined);\n}\n\nfunction hasDateInput(value: DateInput) {\n\treturn value !== null && value !== undefined && value !== '';\n}\n\nexport function formatDateRange(\n\t{ from, to }: DateRangeValue,\n\t{\n\t\tformat,\n\t\tpreset = 'medium',\n\t\tlocale,\n\t\tseparator = ' – ',\n\t}: FormatDateRangeOptions = {},\n): string | null {\n\tconst formatString = format ?? datePresetFormats[preset];\n\tconst fromLabel = formatDateValue(from, formatString, locale);\n\tconst toLabel = formatDateValue(to, formatString, locale);\n\tif ((hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null)) return null;\n\tif (fromLabel && toLabel) return `${fromLabel}${separator}${toLabel}`;\n\treturn fromLabel ?? toLabel;\n}\n\nfunction renderFormattedDate({\n\tcomponentClassName,\n\tvalue,\n\tformatString,\n\tlocale,\n\temptyLabel,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tprops,\n\tref,\n}: {\n\tcomponentClassName: string;\n\tvalue: DateInput;\n\tformatString: string;\n\tlocale?: Locale;\n\temptyLabel: ReactNode;\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\tweight?: TextProps['weight'];\n\ttype?: TextProps['type'];\n\tclassName?: string;\n\tprops: SpanProps;\n\tref?: Ref<HTMLSpanElement>;\n}) {\n\tconst label = formatDateValue(value, formatString, locale);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={type}\n\t\t\tclassName={cn(componentClassName, 'inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nexport function DatePrimitive({\n\tvalue,\n\tformat,\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\tconst resolvedLocale = locale ?? dates.locale;\n\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'date--component',\n\t\tvalue,\n\t\tformatString,\n\t\tlocale: resolvedLocale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function Time({\n\tvalue,\n\tformat,\n\tpreset = 'short',\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: TimeProps) {\n\tconst dates = useDatesConfig();\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'time--component',\n\t\tvalue,\n\t\tformatString: format ?? timePresetFormats[preset],\n\t\tlocale: locale ?? dates.locale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function DateTime({\n\tvalue,\n\tformat,\n\ttimeFormat = 'p',\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst dateFormat = preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium;\n\tconst formatString = format ?? `${dateFormat} ${timeFormat}`;\n\n\treturn renderFormattedDate({\n\t\tcomponentClassName: 'date-time--component',\n\t\tvalue,\n\t\tformatString,\n\t\tlocale: locale ?? dates.locale,\n\t\temptyLabel,\n\t\tsize,\n\t\talign,\n\t\tweight,\n\t\ttype,\n\t\tclassName,\n\t\tprops,\n\t\tref,\n\t});\n}\n\nexport function DateRange({\n\tfrom,\n\tto,\n\tformat,\n\tpreset,\n\tlocale,\n\tseparator = ' – ',\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'main',\n\tclassName,\n\tref,\n\t...props\n}: DateRangeProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst fromLabel = formatDateValue(from, formatString, resolvedLocale);\n\tconst toLabel = formatDateValue(to, formatString, resolvedLocale);\n\tconst invalid = (hasDateInput(from) && fromLabel === null) || (hasDateInput(to) && toLabel === null);\n\tconst hasLabel = !invalid && Boolean(fromLabel || toLabel);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={hasLabel ? type : 'secondary'}\n\t\t\tclassName={cn('date-range--component inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{hasLabel ? (\n\t\t\t\t<>\n\t\t\t\t\t{fromLabel}\n\t\t\t\t\t{!!fromLabel && !!toLabel && separator}\n\t\t\t\t\t{toLabel}\n\t\t\t\t</>\n\t\t\t) : emptyLabel}\n\t\t</Text>\n\t);\n}\n\nexport function RelativeTime({\n\tvalue,\n\tlocale,\n\taddSuffix = true,\n\tincludeSeconds,\n\temptyLabel = EMPTY,\n\tsize,\n\talign,\n\tweight = 'regular',\n\ttype = 'secondary',\n\tformatRelativeTime,\n\tclassName,\n\tref,\n\t...props\n}: RelativeTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst parsed = parseDateInput(value);\n\tconst resolvedLocale = locale ?? dates.locale;\n\tconst label = parsed\n\t\t? formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\tdates.formatRelativeTime?.(parsed.toISOString()) ??\n\t\t\tformatDistanceToNow(parsed, {\n\t\t\t\taddSuffix,\n\t\t\t\tincludeSeconds,\n\t\t\t\t...(resolvedLocale ? { locale: resolvedLocale } : {}),\n\t\t\t})\n\t\t: null;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={size}\n\t\t\talign={align}\n\t\t\tweight={weight}\n\t\t\ttype={type}\n\t\t\tclassName={cn('relative-time--component inline tabular-nums', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{label ?? emptyLabel}\n\t\t</Text>\n\t);\n}\n\nDatePrimitive.displayName = 'Date';\n"],"mappings":"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"}