themelia-react-ui 2.0.1 → 2.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 (480) hide show
  1. package/CHANGELOG.md +307 -131
  2. package/README.md +28 -8
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/{accordion-B6a3vVgA.js → accordion-Cjb6sx0G.js} +14 -13
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-ZK5RWdo6.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-ZK5RWdo6.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-CYxKfo69.js → auth-ax2BqjrI.js} +58 -54
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-BBnEJIx8.js → avatar-DAPlDvhJ.js} +7 -7
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/{badge-MrKVNzW9.js → badge-HpFqoqSY.js} +40 -40
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +40 -36
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +92 -92
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +2 -2
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +6 -6
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +14 -14
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +6 -6
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +171 -176
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +6 -6
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +79 -2
  61. package/dist/base/spinner.js.map +1 -0
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +46 -45
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZGDG-Si.js → batch-action-bar-DnUJ21NQ.js} +6 -5
  72. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  73. package/dist/blocks/admin.js +42 -42
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +260 -240
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +620 -585
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +1152 -1109
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +2 -2
  85. package/dist/blocks/onboarding.js +48 -39
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +13 -12
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/{breadcrumbs-D5t7I023.js → breadcrumbs-C-oqs1sQ.js} +5 -5
  91. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  92. package/dist/{button-QYwiyhD2.js → button-DVzspB_G.js} +2 -2
  93. package/dist/{button-QYwiyhD2.js.map → button-DVzspB_G.js.map} +1 -1
  94. package/dist/{buttons-SbIcm1HJ.js → buttons-DPZekJFu.js} +20 -15
  95. package/dist/buttons-DPZekJFu.js.map +1 -0
  96. package/dist/cards-BaBZR-AU.js +68 -0
  97. package/dist/cards-BaBZR-AU.js.map +1 -0
  98. package/dist/{chart-QfrARkXl.js → chart-ZOYyK2xG.js} +58 -55
  99. package/dist/chart-ZOYyK2xG.js.map +1 -0
  100. package/dist/{checkbox-DhB6K0bK.js → checkbox-AWIhNhmo.js} +2 -2
  101. package/dist/{checkbox-DhB6K0bK.js.map → checkbox-AWIhNhmo.js.map} +1 -1
  102. package/dist/{choice-inputs-t6w3ATNz.js → choice-inputs-CNHvARCJ.js} +49 -45
  103. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  104. package/dist/{code-block-Dgbu-CU3.js → code-block-DeneBJR_.js} +8 -8
  105. package/dist/code-block-DeneBJR_.js.map +1 -0
  106. package/dist/{collapsible-D8AEGU1-.js → collapsible-C-_l4hpy.js} +3 -3
  107. package/dist/{collapsible-D8AEGU1-.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  108. package/dist/{collection-content-uK16Grv0.js → collection-content-By56pLog.js} +3 -3
  109. package/dist/{collection-content-uK16Grv0.js.map → collection-content-By56pLog.js.map} +1 -1
  110. package/dist/combobox-C0EQW6dr.js +875 -0
  111. package/dist/combobox-C0EQW6dr.js.map +1 -0
  112. package/dist/combobox-xCQ2RMNE.js +309 -0
  113. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  114. package/dist/{command-kNR20o7x.js → command-C25VMRII.js} +7 -7
  115. package/dist/{command-kNR20o7x.js.map → command-C25VMRII.js.map} +1 -1
  116. package/dist/{comments-BpDuCUUu.js → comments-BYYlTA8E.js} +114 -105
  117. package/dist/comments-BYYlTA8E.js.map +1 -0
  118. package/dist/components/base/badge/badge.recipes.d.ts +1 -1
  119. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  120. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  121. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  122. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  123. package/dist/components/base/chart/chart.d.ts +2 -5
  124. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  125. package/dist/components/base/combobox/index.d.ts +30 -4
  126. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  127. package/dist/components/base/navigation/pagination.d.ts +5 -2
  128. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  129. package/dist/components/base/table/index.d.ts +9 -2
  130. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  131. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  132. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  133. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  134. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  135. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  136. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  137. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  139. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  140. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  142. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  143. package/dist/components/features/combobox/types.d.ts +4 -0
  144. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  145. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  146. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  147. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  148. package/dist/components/features/table/table-header.d.ts +1 -1
  149. package/dist/components/features/table/table.strings.d.ts +55 -1
  150. package/dist/components/features/table/table.types.d.ts +17 -4
  151. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  152. package/dist/components/primitives/number.d.ts +4 -2
  153. package/dist/components/primitives/value.d.ts +3 -1
  154. package/dist/components/typography/text-link.d.ts +4 -0
  155. package/dist/components/ui/combobox.d.ts +6 -2
  156. package/dist/components/ui/item.d.ts +8 -8
  157. package/dist/components/ui/tabs.d.ts +1 -1
  158. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  159. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  160. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  161. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  162. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  163. package/dist/data-display-DT_khPl_.js.map +1 -0
  164. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  165. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  166. package/dist/{date-picker-CF-DtUpF.js → date-picker-ay0Pha_a.js} +594 -593
  167. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  168. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  169. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  170. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  171. package/dist/display-hAc1HjpI.js.map +1 -0
  172. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  173. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  174. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  175. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  176. package/dist/features/activities.js +398 -375
  177. package/dist/features/activities.js.map +1 -1
  178. package/dist/features/ai-chat.js +188 -179
  179. package/dist/features/ai-chat.js.map +1 -1
  180. package/dist/features/appointment-calendar.js +683 -0
  181. package/dist/features/appointment-calendar.js.map +1 -0
  182. package/dist/features/async-preview.js +109 -107
  183. package/dist/features/async-preview.js.map +1 -1
  184. package/dist/features/combobox.js +1 -1
  185. package/dist/features/comments.js +1 -1
  186. package/dist/features/data-view.js +137 -137
  187. package/dist/features/data-view.js.map +1 -1
  188. package/dist/features/email-composer.js +255 -255
  189. package/dist/features/email-composer.js.map +1 -1
  190. package/dist/features/event-calendar.js +254 -248
  191. package/dist/features/event-calendar.js.map +1 -1
  192. package/dist/features/filters.js +1 -1
  193. package/dist/features/global-search.js +35 -32
  194. package/dist/features/global-search.js.map +1 -1
  195. package/dist/features/kanban.js +118 -117
  196. package/dist/features/kanban.js.map +1 -1
  197. package/dist/features/map.js +233 -231
  198. package/dist/features/map.js.map +1 -1
  199. package/dist/features/media-library.js +789 -775
  200. package/dist/features/media-library.js.map +1 -1
  201. package/dist/features/mentions.js +1 -1
  202. package/dist/features/overlays.js +1 -1
  203. package/dist/features/products.js +922 -902
  204. package/dist/features/products.js.map +1 -1
  205. package/dist/features/questionnaire.js +28 -24
  206. package/dist/features/questionnaire.js.map +1 -1
  207. package/dist/features/resource-assignment.js +18 -15
  208. package/dist/features/resource-assignment.js.map +1 -1
  209. package/dist/features/resource.js +12 -12
  210. package/dist/features/resource.js.map +1 -1
  211. package/dist/features/rich-text-editor.js +2 -2
  212. package/dist/features/schema-form.js +15 -13
  213. package/dist/features/schema-form.js.map +1 -1
  214. package/dist/features/suggestions.js +3 -3
  215. package/dist/features/sync.js +11 -5
  216. package/dist/features/sync.js.map +1 -1
  217. package/dist/features/table.js +1 -1
  218. package/dist/features/theme-tweaker.js +493 -489
  219. package/dist/features/theme-tweaker.js.map +1 -1
  220. package/dist/feedback-BYIhtitP.js +239 -0
  221. package/dist/feedback-BYIhtitP.js.map +1 -0
  222. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  223. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  224. package/dist/{filters-BkHH53uv.js → filters-BGfvjP4d.js} +589 -580
  225. package/dist/filters-BGfvjP4d.js.map +1 -0
  226. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  227. package/dist/form-field-CwH9y77i.js.map +1 -0
  228. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  229. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  230. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  231. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  232. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  233. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  234. package/dist/{header-BOefOKd1.js → header-CGXuhcRm.js} +160 -153
  235. package/dist/header-CGXuhcRm.js.map +1 -0
  236. package/dist/{hooks-9k_TtmKh.js → hooks-Dkz0K2WT.js} +2 -2
  237. package/dist/{hooks-9k_TtmKh.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  238. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  239. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  240. package/dist/index.js +3 -3
  241. package/dist/input-CZw8iU99.js +21 -0
  242. package/dist/input-CZw8iU99.js.map +1 -0
  243. package/dist/input-DQdEd0YD.js +263 -0
  244. package/dist/input-DQdEd0YD.js.map +1 -0
  245. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  246. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  247. package/dist/item-K5_ghvze.js +275 -0
  248. package/dist/item-K5_ghvze.js.map +1 -0
  249. package/dist/layout/app-shell.js +1 -1
  250. package/dist/layout/auth.js +1 -1
  251. package/dist/layout/containers.js +1 -1
  252. package/dist/layout/header.js +1 -1
  253. package/dist/layout/hooks.js +1 -1
  254. package/dist/layout/navigation.js +1 -1
  255. package/dist/layout/page.js +1 -1
  256. package/dist/layout/settings.js +1 -1
  257. package/dist/layout/sidebar.js +2 -2
  258. package/dist/layout/workspace.js +1 -1
  259. package/dist/layout.js +10 -10
  260. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  261. package/dist/lib/editable-text-recipe.d.ts +4 -4
  262. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  263. package/dist/lib/interaction-recipes.d.ts +5 -0
  264. package/dist/lib/theme-mode-css.d.ts +7 -0
  265. package/dist/lib/tone-recipes.d.ts +8 -0
  266. package/dist/lib/ui-provider/types.d.ts +2 -2
  267. package/dist/lib/utils.js +1 -1
  268. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  269. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  270. package/dist/{mentions-D-uyCh01.js → mentions-utuUvH1K.js} +144 -142
  271. package/dist/mentions-utuUvH1K.js.map +1 -0
  272. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  273. package/dist/message-DZ_ruyUV.js.map +1 -0
  274. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  275. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  276. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  277. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  278. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  279. package/dist/navigation-BzhHI3lo.js.map +1 -0
  280. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  281. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  282. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  283. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  284. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  285. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  286. package/dist/{overlays-I0axtYA6.js → overlays-DNWmZrJ4.js} +14 -12
  287. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  288. package/dist/{page-B5dTH9gE.js → page-Bgl1F560.js} +8 -8
  289. package/dist/{page-B5dTH9gE.js.map → page-Bgl1F560.js.map} +1 -1
  290. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  291. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  292. package/dist/pagination-BL25hu2s.js +158 -0
  293. package/dist/pagination-BL25hu2s.js.map +1 -0
  294. package/dist/{popover-Di55PyAI.js → popover-7_m66eYW.js} +8 -7
  295. package/dist/{popover-Di55PyAI.js.map → popover-7_m66eYW.js.map} +1 -1
  296. package/dist/popover-menu-B9WWygpa.js +100 -0
  297. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  298. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  299. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  300. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  301. package/dist/primitives-BFK08r9M.js.map +1 -0
  302. package/dist/primitives.js +4 -4
  303. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  304. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  305. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  306. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  307. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  308. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  309. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  310. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  311. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  312. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  313. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  314. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  315. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  316. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  317. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  318. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  319. package/dist/services/actions.js +1 -1
  320. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  321. package/dist/settings-ybnjVwbd.js.map +1 -0
  322. package/dist/{sheet-4SEvVYzA.js → sheet-CGpB3omz.js} +8 -7
  323. package/dist/{sheet-4SEvVYzA.js.map → sheet-CGpB3omz.js.map} +1 -1
  324. package/dist/{sidebar-d7Dg80ln.js → sidebar-A0ElHINE.js} +14 -13
  325. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-A0ElHINE.js.map} +1 -1
  326. package/dist/{sidebar-C7WWR29L.js → sidebar-CPx_7YBa.js} +183 -182
  327. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  328. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  329. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  330. package/dist/smart-card-DiC5aac3.js +604 -0
  331. package/dist/smart-card-DiC5aac3.js.map +1 -0
  332. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  333. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  334. package/dist/style.css +1 -1
  335. package/dist/table-BweFy_P9.js +1530 -0
  336. package/dist/table-BweFy_P9.js.map +1 -0
  337. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  338. package/dist/table-DsfzoUia.js.map +1 -0
  339. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  340. package/dist/tabs-CDocW5D1.js.map +1 -0
  341. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  342. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  343. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  344. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  345. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  346. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  347. package/dist/theme.css +285 -228
  348. package/dist/themes/green.css +16 -12
  349. package/dist/timelines-CwM_9IhD.js +457 -0
  350. package/dist/timelines-CwM_9IhD.js.map +1 -0
  351. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  352. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  353. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  354. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  355. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  356. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  357. package/dist/typography/rich-text.js +1 -1
  358. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  359. package/dist/typography-UTnveOEy.js.map +1 -0
  360. package/dist/typography.js +2 -2
  361. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  362. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  363. package/dist/ui-provider.js +2 -2
  364. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  365. package/dist/upload-CXyxmQBP.js.map +1 -0
  366. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  367. package/dist/upload-queue-Boscubn9.js.map +1 -0
  368. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  369. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  370. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  371. package/dist/utils-BRhFDwuU.js.map +1 -0
  372. package/dist/{value-inputs-TAYMX111.js → value-inputs-DXPDjvBU.js} +268 -252
  373. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  374. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  375. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  376. package/dist/{workspace-DH0v0KcB.js → workspace-Cdrg7k9f.js} +34 -33
  377. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +2 -2
  379. package/docs/consumer-skill/references/agents-md.md +1 -1
  380. package/docs/consumer-skill/references/composition.md +8 -6
  381. package/docs/consumer-skill/references/integration.md +4 -3
  382. package/docs/consumer-skill/references/public-api.json +105 -2
  383. package/docs/consumer-skill/references/review.md +7 -0
  384. package/docs/consumer-skill/references/theming.md +71 -6
  385. package/docs/consumer-skill/references/tokens.json +1 -1
  386. package/docs/consumer-skill/references/workflows.md +25 -0
  387. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  388. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  389. package/package.json +8 -4
  390. package/dist/accordion-B6a3vVgA.js.map +0 -1
  391. package/dist/action-menu-TzCoSlwL.js +0 -280
  392. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  393. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  394. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  395. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  396. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  397. package/dist/attachment-BtfhGm8i.js +0 -245
  398. package/dist/attachment-BtfhGm8i.js.map +0 -1
  399. package/dist/auth-CYxKfo69.js.map +0 -1
  400. package/dist/avatar-BBnEJIx8.js.map +0 -1
  401. package/dist/badge-MrKVNzW9.js.map +0 -1
  402. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  403. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  404. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  405. package/dist/cards-CiiHpKYd.js +0 -66
  406. package/dist/cards-CiiHpKYd.js.map +0 -1
  407. package/dist/chart-QfrARkXl.js.map +0 -1
  408. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  409. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  410. package/dist/combobox-2Ic8N9bL.js +0 -278
  411. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  412. package/dist/combobox-DLl0bfiq.js +0 -867
  413. package/dist/combobox-DLl0bfiq.js.map +0 -1
  414. package/dist/comments-BpDuCUUu.js.map +0 -1
  415. package/dist/data-display-DafIvCl5.js.map +0 -1
  416. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  417. package/dist/date-pickers-BmzxJl5l.js +0 -174
  418. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  419. package/dist/display-DsQTVzMz.js.map +0 -1
  420. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  421. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  422. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  423. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  424. package/dist/feedback-qNuMBtRH.js +0 -233
  425. package/dist/feedback-qNuMBtRH.js.map +0 -1
  426. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  427. package/dist/filters-BkHH53uv.js.map +0 -1
  428. package/dist/form-field-DUt4UxSV.js.map +0 -1
  429. package/dist/form-sizing-By94KzXE.js.map +0 -1
  430. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  431. package/dist/header-BOefOKd1.js.map +0 -1
  432. package/dist/input-DWhBBBww.js +0 -262
  433. package/dist/input-DWhBBBww.js.map +0 -1
  434. package/dist/input-Ddi_LSYv.js +0 -20
  435. package/dist/input-Ddi_LSYv.js.map +0 -1
  436. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  437. package/dist/item-DEmDiTlD.js +0 -265
  438. package/dist/item-DEmDiTlD.js.map +0 -1
  439. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  440. package/dist/mentions-D-uyCh01.js.map +0 -1
  441. package/dist/message-CdHgIWKf.js.map +0 -1
  442. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  443. package/dist/navigation-D3KwXmaq.js.map +0 -1
  444. package/dist/navigation-HJf5zxlH.js.map +0 -1
  445. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  446. package/dist/overlays-I0axtYA6.js.map +0 -1
  447. package/dist/pagination-3bPA_a6K.js +0 -149
  448. package/dist/pagination-3bPA_a6K.js.map +0 -1
  449. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  450. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  451. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  452. package/dist/primitives-B-CkiEMU.js.map +0 -1
  453. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  454. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  455. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  456. package/dist/settings-CQW3b-Cu.js.map +0 -1
  457. package/dist/sidebar-C7WWR29L.js.map +0 -1
  458. package/dist/smart-card-lFKxn5Hu.js +0 -595
  459. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  460. package/dist/spinner-fa3h1Aif.js +0 -80
  461. package/dist/spinner-fa3h1Aif.js.map +0 -1
  462. package/dist/table-CIKyLUsy.js.map +0 -1
  463. package/dist/table-CrcLN9Io.js +0 -1458
  464. package/dist/table-CrcLN9Io.js.map +0 -1
  465. package/dist/tabs-DwBJfjxX.js.map +0 -1
  466. package/dist/text-inputs-aaK9wcDT.js +0 -326
  467. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  468. package/dist/theme-scope-kStaAer0.js +0 -39
  469. package/dist/theme-scope-kStaAer0.js.map +0 -1
  470. package/dist/timelines-C_SBwHNP.js +0 -442
  471. package/dist/timelines-C_SBwHNP.js.map +0 -1
  472. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  473. package/dist/typography-DTRkE9zL.js.map +0 -1
  474. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  475. package/dist/upload-BO8-CLN6.js.map +0 -1
  476. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  477. package/dist/usage-card-obRaBskq.js.map +0 -1
  478. package/dist/utils-l5LpDw2z.js.map +0 -1
  479. package/dist/value-inputs-TAYMX111.js.map +0 -1
  480. package/dist/workspace-DH0v0KcB.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-display-DT_khPl_.js","names":["_Fragment","_Fragment","useDensityConfig","cn","Text","DisplayLabel","Heading","Grid","Stack","EmptyContent","EmptyHeader","Empty","EmptyMedia","Value","MonoValue","Badge","Separator","ContentBlock","ItemMedia","ItemActions","ItemGroup","ItemContent","Item","ItemTitle","Fragment$1","ScaleBar","max","i","value","label","KVRow","badge","badgeTone","DenseInfoDashboard","statusBadges","b","className","rows","row","scale","secondaryRows","footerBadges","footerText","InlineStat","ValuePrimitive","mono","labelContent","labelClassName","valueContent","valueWeight","valueClassName","layout","defaultDenseInfoStrings","DenseInfoClassification","stringsProp","strings","useStrings","stats","stat","items","item","totalValue","totalLabel","DenseInfoFinancial","headerBadges","lineItems","totalAmount","DenseInfoProjectCard","percentage","totalTasks","completedTasks","circumference","dashOffset","title","statusTone","statusLabel","description","metaPairs","idx","pair","date","priority","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","renderTitleBadge","RelationshipCardFrame","props","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/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-muted-foreground' : '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\ttype=\"inherit\"\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 { 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\ttitleSuffix={statusBadges.length > 0 ? (\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\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-dashboard--component', className)}\n\t\t>\n\t\t\t{/* Status badges sit with the title; groups below are separated by the\n\t\t\t section gap alone, so no rules divide the card. */}\n\t\t\t<Stack gap=\"2xl\">\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\n\t\t\t\t\t{!!scale && (\n\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\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{scale.label}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t<ScaleBar\n\t\t\t\t\t\t\t\tvalue={scale.value}\n\t\t\t\t\t\t\t\tmax={scale.max}\n\t\t\t\t\t\t\t\tlabel={`${String(scale.value)}/${String(scale.max ?? 5)}`}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\n\n\t\t\t\t{!!secondaryRows && secondaryRows.length > 0 && (\n\t\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t\t{secondaryRows.map((row) => (\n\t\t\t\t\t\t\t<KVRow\n\t\t\t\t\t\t\t\tkey={row.label}\n\t\t\t\t\t\t\t\t{...row}\n\t\t\t\t\t\t\t/>\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{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"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 * The value takes the shared `Value` text role at the provider text size.\n * `valueWeight` emphasises a fact or a total through that role. `mono`\n * switches the value to the monospace identifier role (references, codes,\n * keys). Amounts, counts, percentages and dates stay in the sans UI font: pass\n * `valueClassName=\"tabular-nums\"` (or a value primitive such as `Money` /\n * `Percent`, which are already tabular) when figures should align. Keep\n * `valueClassName` for layout (alignment, truncation, figures); the\n * surrounding row is intentionally plain so consumers can stack many of these\n * without visual clutter.\n */\nimport type { ReactNode } from 'react';\n\nimport { Stack } from '../../../base/structure';\nimport { MonoValue, Value, type ValueProps } 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/**\n\t * Weight of the value's text role. Defaults to the role weight: regular, or\n\t * medium with `mono`. Use `medium` for emphasised facts and `semibold` for totals.\n\t */\n\tvalueWeight?: ValueProps['weight'];\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\tvalueWeight,\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={cn('text-inherit', labelClassName)}>{label}</DisplayLabel>\n\t\t: <span className={labelClassName}>{label}</span>;\n\tconst valueContent = (\n\t\t<ValuePrimitive type=\"inherit\" weight={valueWeight} className={valueClassName}>\n\t\t\t{value}\n\t\t</ValuePrimitive>\n\t);\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{valueContent}\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{valueContent}\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\t/** Word after the task count (\"12/20 tasks\"). */\n\ttasks: string;\n\t/** Word after the priority value (\"High priority\"). Additive, so optional for existing dictionaries. */\n\tpriority?: string;\n}\n\nexport const defaultDenseInfoStrings: Required<DenseInfoStrings> = {\n\ttotal: 'Total',\n\ttasks: 'tasks',\n\tpriority: 'priority',\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=\"2xl\">\n\t\t\t\t{/* Plain figures, no tile per stat: the grid gap separates them and the\n\t\t\t\t larger section gap separates the stats from the breakdown. */}\n\t\t\t\t<Grid columns={{ base: 2, sm: 3 }} gap=\"xl\">\n\t\t\t\t\t{stats.map((stat) => (\n\t\t\t\t\t\t<Stack gap=\"dense\" key={stat.label} className=\"min-w-0 items-start\">\n\t\t\t\t\t\t\t<Heading tag=\"h4\" className=\"tabular-nums text-inherit\">\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<Badge tone={stat.trendTone ?? 'secondary'} className=\"self-start\">\n\t\t\t\t\t\t\t\t\t{stat.trendBadge}\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</Stack>\n\t\t\t\t\t))}\n\t\t\t\t</Grid>\n\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\t<Item key={item.label} size=\"sm\" role=\"listitem\">\n\t\t\t\t\t\t\t\t<ItemMedia>\n\t\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\t</ItemMedia>\n\t\t\t\t\t\t\t\t<ItemContent>\n\t\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\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 type=\"inherit\" weight=\"semibold\" className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t{item.value}\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))}\n\t\t\t\t\t</ItemGroup>\n\n\t\t\t\t\t{/* One rule above the grand total; the Stack gap sits on both sides of it. */}\n\t\t\t\t\t{!!totalValue && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={<Text type=\"inherit\" tag=\"span\" weight=\"bold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\t\t\tvalue={totalValue}\n\t\t\t\t\t\t\t\tvalueWeight=\"bold\"\n\t\t\t\t\t\t\t\tvalueClassName=\"tabular-nums\"\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{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"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 { Separator } from '../../../../base/display/separator';\nimport {\n\tItem,\n\tItemActions,\n\tItemContent,\n\tItemGroup,\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\ttitleSuffix={headerBadges.length > 0 ? (\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\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-financial--component', className)}\n\t\t>\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t{/* Line items touch (their density padding is the row rhythm); a single\n\t\t\t\t rule sits above the grand total with the Stack gap on both sides. */}\n\t\t\t\t<Stack gap=\"md\">\n\t\t\t\t\t<ItemGroup>\n\t\t\t\t\t\t{lineItems.map((item) => (\n\t\t\t\t\t\t\t<Item key={item.label} size=\"sm\" role=\"listitem\">\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 type=\"inherit\" 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))}\n\t\t\t\t\t</ItemGroup>\n\n\t\t\t\t\t{!!totalAmount && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Separator />\n\t\t\t\t\t\t\t<InlineStat\n\t\t\t\t\t\t\t\tlabel={<Text type=\"inherit\" tag=\"span\" weight=\"semibold\" lineHeight=\"tight\">{totalLabel ?? strings.total}</Text>}\n\t\t\t\t\t\t\t\tvalue={totalAmount}\n\t\t\t\t\t\t\t\tvalueWeight=\"semibold\"\n\t\t\t\t\t\t\t\tvalueClassName=\"tabular-nums\"\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{(!!footerBadges || !!footerText) && (\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"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 { Stack } from '../../../../base/structure';\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{/* The status reads with the title (no decorative folder glyph, no\n\t\t\t\t badge floating where actions go); date and priority are plain\n\t\t\t\t secondary text, and the task count needs no rule above it. */}\n\t\t\t\t<Stack gap=\"normal\">\n\t\t\t\t\t<Stack direction=\"horizontal\" wrap align=\"center\" gap=\"sm\">\n\t\t\t\t\t\t<Heading tag=\"h5\" className=\"text-inherit\">\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t\t<Badge tone={statusTone} dot>\n\t\t\t\t\t\t\t{statusLabel}\n\t\t\t\t\t\t</Badge>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t{!!description && (\n\t\t\t\t\t\t<Text type=\"secondary\" className=\"line-clamp-2\">\n\t\t\t\t\t\t\t{description}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</Stack>\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<Stack direction=\"horizontal\" align=\"center\" justify=\"between\" gap=\"md\">\n\t\t\t\t\t\t{!!date && <Text size=\"xs\" type=\"secondary\">{date}</Text>}\n\t\t\t\t\t\t{!!priority && <Text size=\"xs\" type=\"secondary\">{priority} {strings.priority}</Text>}\n\t\t\t\t\t</Stack>\n\t\t\t\t)}\n\n\t\t\t\t<div className=\"flex items-center gap-space-md\">\n\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" className=\"shrink-0\" aria-hidden=\"true\">\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tclassName=\"stroke-border\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<circle\n\t\t\t\t\t\t\tcx=\"10\"\n\t\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\t\tr=\"7\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\t\tstrokeDasharray={circumference}\n\t\t\t\t\t\t\tstrokeDashoffset={dashOffset}\n\t\t\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\t\t\tclassName=\"text-primary-accent\"\n\t\t\t\t\t\t\ttransform=\"rotate(-90 10 10)\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<Text type=\"inherit\" size=\"xs\" weight=\"medium\">\n\t\t\t\t\t\t{completedTasks}/{totalTasks} {strings.tasks}\n\t\t\t\t\t</Text>\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 { 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\ttitleSuffix={statusBadges.length > 0 ? (\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\t\t\t) : undefined}\n\t\t\tactions={actions}\n\t\t\tclassName={cn('dense-info-score-card--component', className)}\n\t\t>\n\t\t\t{/* The score, its factors and the footer are separated by the section gap\n\t\t\t alone; the segmented bar keeps its status colour. */}\n\t\t\t<Stack gap=\"2xl\">\n\t\t\t\t<Stack gap=\"md\" align=\"center\">\n\t\t\t\t\t<Heading tag=\"h2\" className=\"tabular-nums text-inherit\">\n\t\t\t\t\t\t{String(score)}\n\t\t\t\t\t</Heading>\n\n\t\t\t\t\t<Stack direction=\"horizontal\" align=\"center\" justify=\"center\" gap=\"xs\">\n\t\t\t\t\t\t{Array.from({ length: scoreTotal }, (_, i) => (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'h-5 w-2 rounded-radius-sm',\n\t\t\t\t\t\t\t\t\ti < scoreFilled ? barColor : 'bg-muted',\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Stack>\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<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\tvalueWeight=\"semibold\"\n\t\t\t\t\t\t\tvalueClassName=\"text-end tabular-nums\"\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\">\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/50 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 text-inherit\"\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\tlineHeight=\"relaxed\"\n\t\t\t\t\t\tclassName=\"empty-state--description [&>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/50 ring-8 ring-muted/30',\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/50 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/50 border-border absolute right-2 size-10 rounded-full border-2\" />\n\t\t</div>\n\t);\n}\n\nUsersCircleIllustration.displayName = 'UsersCircleIllustration';\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 type=\"inherit\" 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,8 +1,8 @@
1
1
  "use client";
2
- import { o as e } from "./ui-provider-1D_NSYzO.js";
3
- import { t } from "./utils-l5LpDw2z.js";
4
- import { s as n } from "./typography-DTRkE9zL.js";
5
- import { n as r, t as i } from "./value-typography-b8wpz1eX.js";
2
+ import { o as e } from "./ui-provider-C_U0Xma4.js";
3
+ import { t } from "./utils-BRhFDwuU.js";
4
+ import { c as n } from "./typography-UTnveOEy.js";
5
+ import { n as r, t as i } from "./value-typography-BP8OG6h5.js";
6
6
  import "react";
7
7
  import { Fragment as a, jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  import { format as c, formatDistanceToNow as l, isValid as u, parseISO as d } from "date-fns";
@@ -141,4 +141,4 @@ x.displayName = "Date";
141
141
  //#endregion
142
142
  export { S as a, T as i, w as n, y as o, C as r, g as s, x as t };
143
143
 
144
- //# sourceMappingURL=date-BgK3bTdo.js.map
144
+ //# sourceMappingURL=date-DCrsDTZc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-BgK3bTdo.js","names":["formatDateFns","_Fragment","useDatesConfig","Text","useValueTypography","emptyValueTypography","Fragment$1","datePresetFormats","timePresetFormats","DATE_ROLE","RELATIVE_TIME_ROLE","parseDateInput","value","isValid","parsed","parseISO","formatDateValue","format","formatString","locale","hasDateInput","formatDateRange","preset","fromLabel","from","toLabel","to","separator","FormattedDate","props","resolved","label","typography","weight","cn","componentClassName","className","emptyLabel","DatePrimitive","dates","Time","DateTime","dateFormat","timeFormat","DateRange","resolvedLocale","hasLabel","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\nimport { emptyValueTypography, useValueTypography, type ValueTypographyRole } from './value-typography';\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\t/** A native Date, ISO string or millisecond timestamp. Unparseable input renders the empty label. */\n\tvalue?: DateInput;\n\t/** date-fns pattern; prefer `preset` so a screen stays consistent. */\n\tformat?: string;\n\t/** Library preset. Defaults to the provider `dates.format`, then `medium`. */\n\tpreset?: DatePreset;\n\t/** date-fns locale. Defaults to the provider `dates.locale`. */\n\tlocale?: Locale;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `main`; inside running text, the surrounding colour. */\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\t/** Adds \"ago\"/\"in\". Defaults to `true`. */\n\taddSuffix?: boolean;\n\tincludeSeconds?: boolean;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `secondary` for feeds; inside running text, the surrounding colour. */\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\nconst DATE_ROLE: ValueTypographyRole = { type: 'main', weight: 'regular' };\nconst RELATIVE_TIME_ROLE: ValueTypographyRole = { type: 'secondary', weight: 'regular' };\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\ninterface FormattedDateProps extends SpanProps {\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\tref?: Ref<HTMLSpanElement>;\n}\n\n/** Shared span for Date, Time and DateTime: value typography plus the empty treatment. */\nfunction FormattedDate({\n\tcomponentClassName,\n\tvalue,\n\tformatString,\n\tlocale,\n\temptyLabel,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: FormattedDateProps) {\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\n\tconst label = formatDateValue(value, formatString, locale);\n\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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\t...props\n}: DateProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={formatString}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function Time({\n\tvalue,\n\tformat,\n\tpreset = 'short',\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: TimeProps) {\n\tconst dates = useDatesConfig();\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? timePresetFormats[preset]}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function DateTime({\n\tvalue,\n\tformat,\n\ttimeFormat = 'p',\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: DateTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst dateFormat = preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium;\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date-time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? `${dateFormat} ${timeFormat}`}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\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,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: DateRangeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\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\tconst typography = hasLabel ? resolved : emptyValueTypography(resolved, weight);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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,\n\ttype,\n\tformatRelativeTime,\n\tclassName,\n\tref,\n\t...props\n}: RelativeTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, RELATIVE_TIME_ROLE);\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\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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-DCrsDTZc.js","names":["formatDateFns","_Fragment","useDatesConfig","Text","useValueTypography","emptyValueTypography","Fragment$1","datePresetFormats","timePresetFormats","DATE_ROLE","RELATIVE_TIME_ROLE","parseDateInput","value","isValid","parsed","parseISO","formatDateValue","format","formatString","locale","hasDateInput","formatDateRange","preset","fromLabel","from","toLabel","to","separator","FormattedDate","props","resolved","label","typography","weight","cn","componentClassName","className","emptyLabel","DatePrimitive","dates","Time","DateTime","dateFormat","timeFormat","DateRange","resolvedLocale","hasLabel","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\nimport { emptyValueTypography, useValueTypography, type ValueTypographyRole } from './value-typography';\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\t/** A native Date, ISO string or millisecond timestamp. Unparseable input renders the empty label. */\n\tvalue?: DateInput;\n\t/** date-fns pattern; prefer `preset` so a screen stays consistent. */\n\tformat?: string;\n\t/** Library preset. Defaults to the provider `dates.format`, then `medium`. */\n\tpreset?: DatePreset;\n\t/** date-fns locale. Defaults to the provider `dates.locale`. */\n\tlocale?: Locale;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `main`; inside running text, the surrounding colour. */\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\t/** Adds \"ago\"/\"in\". Defaults to `true`. */\n\taddSuffix?: boolean;\n\tincludeSeconds?: boolean;\n\t/** Rendered with the shared empty treatment when the value is absent or invalid. Defaults to an em dash. */\n\temptyLabel?: ReactNode;\n\t/** Text size. Defaults to the provider text size; inside running text, the surrounding size. */\n\tsize?: TextSize;\n\talign?: TextProps['align'];\n\t/** Font weight. Defaults to `regular`; inside running text, the surrounding weight. */\n\tweight?: TextProps['weight'];\n\t/** Colour role. Defaults to `secondary` for feeds; inside running text, the surrounding colour. */\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\nconst DATE_ROLE: ValueTypographyRole = { type: 'main', weight: 'regular' };\nconst RELATIVE_TIME_ROLE: ValueTypographyRole = { type: 'secondary', weight: 'regular' };\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\ninterface FormattedDateProps extends SpanProps {\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\tref?: Ref<HTMLSpanElement>;\n}\n\n/** Shared span for Date, Time and DateTime: value typography plus the empty treatment. */\nfunction FormattedDate({\n\tcomponentClassName,\n\tvalue,\n\tformatString,\n\tlocale,\n\temptyLabel,\n\tsize,\n\talign,\n\tweight,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: FormattedDateProps) {\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\n\tconst label = formatDateValue(value, formatString, locale);\n\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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\t...props\n}: DateProps) {\n\tconst dates = useDatesConfig();\n\tconst formatString = format ?? (preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium);\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={formatString}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function Time({\n\tvalue,\n\tformat,\n\tpreset = 'short',\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: TimeProps) {\n\tconst dates = useDatesConfig();\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? timePresetFormats[preset]}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\n\t);\n}\n\nexport function DateTime({\n\tvalue,\n\tformat,\n\ttimeFormat = 'p',\n\tpreset,\n\tlocale,\n\temptyLabel = EMPTY,\n\t...props\n}: DateTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst dateFormat = preset ? datePresetFormats[preset] : dates.format ?? datePresetFormats.medium;\n\n\treturn (\n\t\t<FormattedDate\n\t\t\t{...props}\n\t\t\tcomponentClassName=\"date-time--component\"\n\t\t\tvalue={value}\n\t\t\tformatString={format ?? `${dateFormat} ${timeFormat}`}\n\t\t\tlocale={locale ?? dates.locale}\n\t\t\temptyLabel={emptyLabel}\n\t\t/>\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,\n\ttype,\n\tclassName,\n\tref,\n\t...props\n}: DateRangeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, DATE_ROLE);\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\tconst typography = hasLabel ? resolved : emptyValueTypography(resolved, weight);\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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,\n\ttype,\n\tformatRelativeTime,\n\tclassName,\n\tref,\n\t...props\n}: RelativeTimeProps) {\n\tconst dates = useDatesConfig();\n\tconst resolved = useValueTypography({ size, type, weight }, RELATIVE_TIME_ROLE);\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\tconst typography = label === null ? emptyValueTypography(resolved, weight) : resolved;\n\n\treturn (\n\t\t<Text\n\t\t\tref={ref}\n\t\t\ttag=\"span\"\n\t\t\tsize={typography.size}\n\t\t\talign={align}\n\t\t\tweight={typography.weight}\n\t\t\ttype={typography.type}\n\t\t\tlineHeight={typography.lineHeight}\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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"}