themelia-react-ui 2.0.1 → 2.0.3

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 (490) hide show
  1. package/CHANGELOG.md +317 -131
  2. package/README.md +25 -9
  3. package/THIRD_PARTY_NOTICES.md +7 -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-BGua8ouh.js} +58 -54
  17. package/dist/auth-BGua8ouh.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-DaHESuiL.js +355 -0
  111. package/dist/combobox-DaHESuiL.js.map +1 -0
  112. package/dist/{combobox-DLl0bfiq.js → combobox-Dxo2fAYQ.js} +289 -279
  113. package/dist/combobox-Dxo2fAYQ.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-DD0DUPwJ.js} +114 -105
  117. package/dist/comments-DD0DUPwJ.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-field.d.ts +16 -0
  125. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  126. package/dist/components/base/combobox/index.d.ts +30 -4
  127. package/dist/components/base/forms/form-sizing.d.ts +11 -3
  128. package/dist/components/base/navigation/pagination.d.ts +5 -2
  129. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  130. package/dist/components/base/table/index.d.ts +9 -2
  131. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  132. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  133. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  134. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +3 -1
  135. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  136. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  137. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  138. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  139. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  140. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  141. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  142. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  143. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  144. package/dist/components/features/combobox/types.d.ts +4 -0
  145. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  146. package/dist/components/features/rich-text-editor/index.d.ts +1 -1
  147. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +6 -0
  148. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +9 -1
  149. package/dist/components/features/table/table-header.d.ts +1 -1
  150. package/dist/components/features/table/table.strings.d.ts +55 -1
  151. package/dist/components/features/table/table.types.d.ts +17 -4
  152. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  153. package/dist/components/primitives/number.d.ts +4 -2
  154. package/dist/components/primitives/value.d.ts +3 -1
  155. package/dist/components/typography/text-link.d.ts +4 -0
  156. package/dist/components/ui/combobox-dismiss.d.ts +16 -0
  157. package/dist/components/ui/combobox.d.ts +16 -7
  158. package/dist/components/ui/dialog.d.ts +1 -1
  159. package/dist/components/ui/item.d.ts +8 -8
  160. package/dist/components/ui/popover.d.ts +1 -1
  161. package/dist/components/ui/sheet.d.ts +1 -1
  162. package/dist/components/ui/tabs.d.ts +1 -1
  163. package/dist/{containers-DmWiJa2I.js → containers-Mu1LMGV1.js} +2 -2
  164. package/dist/{containers-DmWiJa2I.js.map → containers-Mu1LMGV1.js.map} +1 -1
  165. package/dist/{copyable-B3Gwgdqc.js → copyable-ClBuk_UK.js} +4 -4
  166. package/dist/{copyable-B3Gwgdqc.js.map → copyable-ClBuk_UK.js.map} +1 -1
  167. package/dist/{data-display-DafIvCl5.js → data-display-DT_khPl_.js} +98 -87
  168. package/dist/data-display-DT_khPl_.js.map +1 -0
  169. package/dist/{date-BgK3bTdo.js → date-DCrsDTZc.js} +5 -5
  170. package/dist/{date-BgK3bTdo.js.map → date-DCrsDTZc.js.map} +1 -1
  171. package/dist/{date-picker-CF-DtUpF.js → date-picker-B2K3ucWn.js} +594 -593
  172. package/dist/date-picker-B2K3ucWn.js.map +1 -0
  173. package/dist/date-pickers-Ds8gLaoP.js +175 -0
  174. package/dist/date-pickers-Ds8gLaoP.js.map +1 -0
  175. package/dist/{display-DsQTVzMz.js → display-hAc1HjpI.js} +49 -49
  176. package/dist/display-hAc1HjpI.js.map +1 -0
  177. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  178. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  179. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  180. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  181. package/dist/features/activities.js +398 -375
  182. package/dist/features/activities.js.map +1 -1
  183. package/dist/features/ai-chat.js +188 -179
  184. package/dist/features/ai-chat.js.map +1 -1
  185. package/dist/features/appointment-calendar.js +683 -0
  186. package/dist/features/appointment-calendar.js.map +1 -0
  187. package/dist/features/async-preview.js +109 -107
  188. package/dist/features/async-preview.js.map +1 -1
  189. package/dist/features/combobox.js +1 -1
  190. package/dist/features/comments.js +1 -1
  191. package/dist/features/data-view.js +137 -137
  192. package/dist/features/data-view.js.map +1 -1
  193. package/dist/features/email-composer.js +255 -255
  194. package/dist/features/email-composer.js.map +1 -1
  195. package/dist/features/event-calendar.js +254 -248
  196. package/dist/features/event-calendar.js.map +1 -1
  197. package/dist/features/filters.js +1 -1
  198. package/dist/features/global-search.js +35 -32
  199. package/dist/features/global-search.js.map +1 -1
  200. package/dist/features/kanban.js +118 -117
  201. package/dist/features/kanban.js.map +1 -1
  202. package/dist/features/map.js +233 -231
  203. package/dist/features/map.js.map +1 -1
  204. package/dist/features/media-library.js +789 -775
  205. package/dist/features/media-library.js.map +1 -1
  206. package/dist/features/mentions.js +1 -1
  207. package/dist/features/overlays.js +1 -1
  208. package/dist/features/products.js +922 -902
  209. package/dist/features/products.js.map +1 -1
  210. package/dist/features/questionnaire.js +28 -24
  211. package/dist/features/questionnaire.js.map +1 -1
  212. package/dist/features/resource-assignment.js +18 -15
  213. package/dist/features/resource-assignment.js.map +1 -1
  214. package/dist/features/resource.js +12 -12
  215. package/dist/features/resource.js.map +1 -1
  216. package/dist/features/rich-text-editor.js +2 -2
  217. package/dist/features/schema-form.js +15 -13
  218. package/dist/features/schema-form.js.map +1 -1
  219. package/dist/features/suggestions.js +3 -3
  220. package/dist/features/sync.js +11 -5
  221. package/dist/features/sync.js.map +1 -1
  222. package/dist/features/table.js +1 -1
  223. package/dist/features/theme-tweaker.js +493 -489
  224. package/dist/features/theme-tweaker.js.map +1 -1
  225. package/dist/feedback-BYIhtitP.js +239 -0
  226. package/dist/feedback-BYIhtitP.js.map +1 -0
  227. package/dist/{field-affordance-recipes-qQeIf4lG.js → field-affordance-recipes-DZhnIL_Y.js} +11 -18
  228. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  229. package/dist/{filters-BkHH53uv.js → filters-DJVAveHA.js} +589 -580
  230. package/dist/filters-DJVAveHA.js.map +1 -0
  231. package/dist/{form-field-DUt4UxSV.js → form-field-CwH9y77i.js} +6 -5
  232. package/dist/form-field-CwH9y77i.js.map +1 -0
  233. package/dist/{form-sizing-By94KzXE.js → form-sizing-BdP_Mf5p.js} +39 -44
  234. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  235. package/dist/{forms-Bzha-Y3B.js → forms-B9G_xwzi.js} +8 -8
  236. package/dist/{forms-Bzha-Y3B.js.map → forms-B9G_xwzi.js.map} +1 -1
  237. package/dist/{forms-numeric-C0bvjRPZ.js → forms-numeric-B_jraJaQ.js} +309 -309
  238. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  239. package/dist/{header-BOefOKd1.js → header-BSfIEWbI.js} +160 -153
  240. package/dist/header-BSfIEWbI.js.map +1 -0
  241. package/dist/{hooks-9k_TtmKh.js → hooks-ClH9thn4.js} +2 -2
  242. package/dist/{hooks-9k_TtmKh.js.map → hooks-ClH9thn4.js.map} +1 -1
  243. package/dist/{icon-badge-CAuKupo9.js → icon-badge-DYKIwvOV.js} +4 -4
  244. package/dist/{icon-badge-CAuKupo9.js.map → icon-badge-DYKIwvOV.js.map} +1 -1
  245. package/dist/index.js +3 -3
  246. package/dist/input-CZw8iU99.js +21 -0
  247. package/dist/input-CZw8iU99.js.map +1 -0
  248. package/dist/input-DQdEd0YD.js +263 -0
  249. package/dist/input-DQdEd0YD.js.map +1 -0
  250. package/dist/{interaction-recipes-CHr0dJUs.js → interaction-recipes-XR9ZpVYL.js} +2 -1
  251. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  252. package/dist/item-K5_ghvze.js +275 -0
  253. package/dist/item-K5_ghvze.js.map +1 -0
  254. package/dist/layout/app-shell.js +1 -1
  255. package/dist/layout/auth.js +1 -1
  256. package/dist/layout/containers.js +1 -1
  257. package/dist/layout/header.js +1 -1
  258. package/dist/layout/hooks.js +1 -1
  259. package/dist/layout/navigation.js +1 -1
  260. package/dist/layout/page.js +1 -1
  261. package/dist/layout/settings.js +1 -1
  262. package/dist/layout/sidebar.js +2 -2
  263. package/dist/layout/workspace.js +1 -1
  264. package/dist/layout.js +10 -10
  265. package/dist/lib/affordance-geometry.generated.d.ts +71 -0
  266. package/dist/lib/editable-text-recipe.d.ts +4 -4
  267. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  268. package/dist/lib/interaction-recipes.d.ts +5 -0
  269. package/dist/lib/theme-mode-css.d.ts +7 -0
  270. package/dist/lib/tone-recipes.d.ts +8 -0
  271. package/dist/lib/ui-provider/types.d.ts +2 -2
  272. package/dist/lib/use-popup-focus-recovery.d.ts +8 -0
  273. package/dist/lib/utils.js +1 -1
  274. package/dist/{media-gallery-DcTtAaeC.js → media-gallery-3zIVLMWH.js} +8 -8
  275. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  276. package/dist/{mentions-D-uyCh01.js → mentions-CGlEJ15c.js} +144 -142
  277. package/dist/mentions-CGlEJ15c.js.map +1 -0
  278. package/dist/{message-CdHgIWKf.js → message-DZ_ruyUV.js} +6 -5
  279. package/dist/message-DZ_ruyUV.js.map +1 -0
  280. package/dist/{metadata-list-X5rYAKSB.js → metadata-list-8N16ZMW_.js} +130 -119
  281. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  282. package/dist/{navigation-D3KwXmaq.js → navigation-Bnotn4AQ.js} +19 -19
  283. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  284. package/dist/{navigation-HJf5zxlH.js → navigation-BzhHI3lo.js} +36 -35
  285. package/dist/navigation-BzhHI3lo.js.map +1 -0
  286. package/dist/{navigation-row-recipes-BVowojQw.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  287. package/dist/{navigation-row-recipes-BVowojQw.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  288. package/dist/{number-DMhe-Vsk.js → number-DbV1Dija.js} +36 -34
  289. package/dist/{number-DMhe-Vsk.js.map → number-DbV1Dija.js.map} +1 -1
  290. package/dist/{overflow-tab-bar-sQHXLlwQ.js → overflow-tab-bar-CWY7Nogn.js} +105 -103
  291. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  292. package/dist/{overlays-I0axtYA6.js → overlays-tMkF-VAN.js} +282 -278
  293. package/dist/overlays-tMkF-VAN.js.map +1 -0
  294. package/dist/{page-B5dTH9gE.js → page-CL9YeH_V.js} +8 -8
  295. package/dist/{page-B5dTH9gE.js.map → page-CL9YeH_V.js.map} +1 -1
  296. package/dist/{page-header-commands-DjzFEq3E.js → page-header-commands-DOb6WsfD.js} +5 -5
  297. package/dist/{page-header-commands-DjzFEq3E.js.map → page-header-commands-DOb6WsfD.js.map} +1 -1
  298. package/dist/pagination-BL25hu2s.js +158 -0
  299. package/dist/pagination-BL25hu2s.js.map +1 -0
  300. package/dist/{popover-Di55PyAI.js → popover-gnTOhbFM.js} +69 -66
  301. package/dist/popover-gnTOhbFM.js.map +1 -0
  302. package/dist/popover-menu-Cn9rUkdc.js +100 -0
  303. package/dist/popover-menu-Cn9rUkdc.js.map +1 -0
  304. package/dist/{popover.recipes-Bdyhj2db.js → popover.recipes-D3j8R8Yp.js} +17 -10
  305. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  306. package/dist/{primitives-B-CkiEMU.js → primitives-BFK08r9M.js} +45 -44
  307. package/dist/primitives-BFK08r9M.js.map +1 -0
  308. package/dist/primitives.js +4 -4
  309. package/dist/{progress-rnS8-uAW.js → progress-B1VnCT0K.js} +5 -5
  310. package/dist/{progress-rnS8-uAW.js.map → progress-B1VnCT0K.js.map} +1 -1
  311. package/dist/{receipt-D0oswZ0p.js → receipt-BVSOH3Xo.js} +9 -6
  312. package/dist/{receipt-D0oswZ0p.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  313. package/dist/{rich-text-DvGulsNJ.js → rich-text-GOUyKQ-s.js} +3 -3
  314. package/dist/{rich-text-DvGulsNJ.js.map → rich-text-GOUyKQ-s.js.map} +1 -1
  315. package/dist/{rich-text-editor-sMU_Scqm.js → rich-text-editor-cRLC-eBK.js} +418 -426
  316. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  317. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  318. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  319. package/dist/{scroll-area-Bt_vXY2b.js → scroll-area-DcI-M1UT.js} +2 -2
  320. package/dist/{scroll-area-Bt_vXY2b.js.map → scroll-area-DcI-M1UT.js.map} +1 -1
  321. package/dist/{separator-C8DlRGwF.js → separator-BDV-Y648.js} +3 -3
  322. package/dist/{separator-C8DlRGwF.js.map → separator-BDV-Y648.js.map} +1 -1
  323. package/dist/{separator-CYHnjsAb.js → separator-Bom7NsGO.js} +2 -2
  324. package/dist/{separator-CYHnjsAb.js.map → separator-Bom7NsGO.js.map} +1 -1
  325. package/dist/services/actions.js +1 -1
  326. package/dist/{settings-CQW3b-Cu.js → settings-ybnjVwbd.js} +20 -19
  327. package/dist/settings-ybnjVwbd.js.map +1 -0
  328. package/dist/{sheet-4SEvVYzA.js → sheet-ijlsjq-n.js} +76 -73
  329. package/dist/sheet-ijlsjq-n.js.map +1 -0
  330. package/dist/{sidebar-C7WWR29L.js → sidebar-Db6gkh3U.js} +183 -182
  331. package/dist/sidebar-Db6gkh3U.js.map +1 -0
  332. package/dist/{sidebar-d7Dg80ln.js → sidebar-DkTO4VTO.js} +14 -13
  333. package/dist/{sidebar-d7Dg80ln.js.map → sidebar-DkTO4VTO.js.map} +1 -1
  334. package/dist/{skeleton-Cz890JZF.js → skeleton-Byjnt7qr.js} +3 -3
  335. package/dist/{skeleton-Cz890JZF.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  336. package/dist/smart-card-DiC5aac3.js +604 -0
  337. package/dist/smart-card-DiC5aac3.js.map +1 -0
  338. package/dist/{structure-DC2dygdA.js → structure-BmisBK-3.js} +2 -2
  339. package/dist/{structure-DC2dygdA.js.map → structure-BmisBK-3.js.map} +1 -1
  340. package/dist/style.css +1 -1
  341. package/dist/table-BweFy_P9.js +1530 -0
  342. package/dist/table-BweFy_P9.js.map +1 -0
  343. package/dist/{table-CIKyLUsy.js → table-DsfzoUia.js} +75 -63
  344. package/dist/table-DsfzoUia.js.map +1 -0
  345. package/dist/{tabs-DwBJfjxX.js → tabs-CDocW5D1.js} +14 -13
  346. package/dist/tabs-CDocW5D1.js.map +1 -0
  347. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  348. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  349. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  350. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  351. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  352. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  353. package/dist/theme.css +285 -228
  354. package/dist/themes/green.css +16 -12
  355. package/dist/timelines-CwM_9IhD.js +457 -0
  356. package/dist/timelines-CwM_9IhD.js.map +1 -0
  357. package/dist/{tone-recipes-CPoExcTE.js → tone-recipes-BPsRAvhu.js} +5 -2
  358. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  359. package/dist/{tooltip-CsfgrfS7.js → tooltip-yiRJUFjp.js} +4 -4
  360. package/dist/{tooltip-CsfgrfS7.js.map → tooltip-yiRJUFjp.js.map} +1 -1
  361. package/dist/{tree-BiKhg8AY.js → tree-WnKQzwbq.js} +9 -9
  362. package/dist/{tree-BiKhg8AY.js.map → tree-WnKQzwbq.js.map} +1 -1
  363. package/dist/typography/rich-text.js +1 -1
  364. package/dist/{typography-DTRkE9zL.js → typography-UTnveOEy.js} +6 -6
  365. package/dist/typography-UTnveOEy.js.map +1 -0
  366. package/dist/typography.js +2 -2
  367. package/dist/{ui-provider-1D_NSYzO.js → ui-provider-C_U0Xma4.js} +3 -3
  368. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  369. package/dist/ui-provider.js +2 -2
  370. package/dist/{upload-BO8-CLN6.js → upload-CXyxmQBP.js} +13 -12
  371. package/dist/upload-CXyxmQBP.js.map +1 -0
  372. package/dist/{upload-queue-EOC8g1gf.js → upload-queue-Boscubn9.js} +11 -9
  373. package/dist/upload-queue-Boscubn9.js.map +1 -0
  374. package/dist/{usage-card-obRaBskq.js → usage-card-BhO5eqkX.js} +53 -37
  375. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  376. package/dist/use-popup-focus-recovery-C0QPvgOR.js +36 -0
  377. package/dist/use-popup-focus-recovery-C0QPvgOR.js.map +1 -0
  378. package/dist/{utils-l5LpDw2z.js → utils-BRhFDwuU.js} +59 -44
  379. package/dist/utils-BRhFDwuU.js.map +1 -0
  380. package/dist/{value-inputs-TAYMX111.js → value-inputs-TaX4OjNk.js} +268 -252
  381. package/dist/value-inputs-TaX4OjNk.js.map +1 -0
  382. package/dist/{value-typography-b8wpz1eX.js → value-typography-BP8OG6h5.js} +2 -2
  383. package/dist/{value-typography-b8wpz1eX.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  384. package/dist/{workspace-DH0v0KcB.js → workspace-B-OEm3Kf.js} +34 -33
  385. package/dist/workspace-B-OEm3Kf.js.map +1 -0
  386. package/docs/consumer-skill/SKILL.md +3 -3
  387. package/docs/consumer-skill/references/agents-md.md +1 -1
  388. package/docs/consumer-skill/references/composition.md +8 -6
  389. package/docs/consumer-skill/references/installation.md +6 -0
  390. package/docs/consumer-skill/references/integration.md +4 -3
  391. package/docs/consumer-skill/references/public-api.json +105 -2
  392. package/docs/consumer-skill/references/review.md +7 -0
  393. package/docs/consumer-skill/references/theming.md +71 -6
  394. package/docs/consumer-skill/references/tokens.json +1 -1
  395. package/docs/consumer-skill/references/workflows.md +26 -0
  396. package/docs/consumer-skill/scripts/composition-policy.mjs +3 -2
  397. package/docs/consumer-skill/scripts/surface-policy.mjs +11 -0
  398. package/package.json +8 -4
  399. package/dist/accordion-B6a3vVgA.js.map +0 -1
  400. package/dist/action-menu-TzCoSlwL.js +0 -280
  401. package/dist/action-menu-TzCoSlwL.js.map +0 -1
  402. package/dist/affordance-geometry.generated-B5iu-Mkr.js +0 -69
  403. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +0 -1
  404. package/dist/ai-artifact-BMJdv-6q.js +0 -1115
  405. package/dist/ai-artifact-BMJdv-6q.js.map +0 -1
  406. package/dist/attachment-BtfhGm8i.js +0 -245
  407. package/dist/attachment-BtfhGm8i.js.map +0 -1
  408. package/dist/auth-CYxKfo69.js.map +0 -1
  409. package/dist/avatar-BBnEJIx8.js.map +0 -1
  410. package/dist/badge-MrKVNzW9.js.map +0 -1
  411. package/dist/batch-action-bar-BZGDG-Si.js.map +0 -1
  412. package/dist/breadcrumbs-D5t7I023.js.map +0 -1
  413. package/dist/buttons-SbIcm1HJ.js.map +0 -1
  414. package/dist/cards-CiiHpKYd.js +0 -66
  415. package/dist/cards-CiiHpKYd.js.map +0 -1
  416. package/dist/chart-QfrARkXl.js.map +0 -1
  417. package/dist/choice-inputs-t6w3ATNz.js.map +0 -1
  418. package/dist/code-block-Dgbu-CU3.js.map +0 -1
  419. package/dist/combobox-2Ic8N9bL.js +0 -278
  420. package/dist/combobox-2Ic8N9bL.js.map +0 -1
  421. package/dist/combobox-DLl0bfiq.js.map +0 -1
  422. package/dist/comments-BpDuCUUu.js.map +0 -1
  423. package/dist/data-display-DafIvCl5.js.map +0 -1
  424. package/dist/date-picker-CF-DtUpF.js.map +0 -1
  425. package/dist/date-pickers-BmzxJl5l.js +0 -174
  426. package/dist/date-pickers-BmzxJl5l.js.map +0 -1
  427. package/dist/display-DsQTVzMz.js.map +0 -1
  428. package/dist/dropdown-menu-E2qmdC7o.js +0 -193
  429. package/dist/dropdown-menu-E2qmdC7o.js.map +0 -1
  430. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  431. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  432. package/dist/feedback-qNuMBtRH.js +0 -233
  433. package/dist/feedback-qNuMBtRH.js.map +0 -1
  434. package/dist/field-affordance-recipes-qQeIf4lG.js.map +0 -1
  435. package/dist/filters-BkHH53uv.js.map +0 -1
  436. package/dist/form-field-DUt4UxSV.js.map +0 -1
  437. package/dist/form-sizing-By94KzXE.js.map +0 -1
  438. package/dist/forms-numeric-C0bvjRPZ.js.map +0 -1
  439. package/dist/header-BOefOKd1.js.map +0 -1
  440. package/dist/input-DWhBBBww.js +0 -262
  441. package/dist/input-DWhBBBww.js.map +0 -1
  442. package/dist/input-Ddi_LSYv.js +0 -20
  443. package/dist/input-Ddi_LSYv.js.map +0 -1
  444. package/dist/interaction-recipes-CHr0dJUs.js.map +0 -1
  445. package/dist/item-DEmDiTlD.js +0 -265
  446. package/dist/item-DEmDiTlD.js.map +0 -1
  447. package/dist/media-gallery-DcTtAaeC.js.map +0 -1
  448. package/dist/mentions-D-uyCh01.js.map +0 -1
  449. package/dist/message-CdHgIWKf.js.map +0 -1
  450. package/dist/metadata-list-X5rYAKSB.js.map +0 -1
  451. package/dist/navigation-D3KwXmaq.js.map +0 -1
  452. package/dist/navigation-HJf5zxlH.js.map +0 -1
  453. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +0 -1
  454. package/dist/overlays-I0axtYA6.js.map +0 -1
  455. package/dist/pagination-3bPA_a6K.js +0 -149
  456. package/dist/pagination-3bPA_a6K.js.map +0 -1
  457. package/dist/popover-Di55PyAI.js.map +0 -1
  458. package/dist/popover-menu-B71Tn2Qz.js +0 -99
  459. package/dist/popover-menu-B71Tn2Qz.js.map +0 -1
  460. package/dist/popover.recipes-Bdyhj2db.js.map +0 -1
  461. package/dist/primitives-B-CkiEMU.js.map +0 -1
  462. package/dist/rich-text-editor-sMU_Scqm.js.map +0 -1
  463. package/dist/rich-text-editor.recipes-CadiF_Uu.js +0 -88
  464. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +0 -1
  465. package/dist/settings-CQW3b-Cu.js.map +0 -1
  466. package/dist/sheet-4SEvVYzA.js.map +0 -1
  467. package/dist/sidebar-C7WWR29L.js.map +0 -1
  468. package/dist/smart-card-lFKxn5Hu.js +0 -595
  469. package/dist/smart-card-lFKxn5Hu.js.map +0 -1
  470. package/dist/spinner-fa3h1Aif.js +0 -80
  471. package/dist/spinner-fa3h1Aif.js.map +0 -1
  472. package/dist/table-CIKyLUsy.js.map +0 -1
  473. package/dist/table-CrcLN9Io.js +0 -1458
  474. package/dist/table-CrcLN9Io.js.map +0 -1
  475. package/dist/tabs-DwBJfjxX.js.map +0 -1
  476. package/dist/text-inputs-aaK9wcDT.js +0 -326
  477. package/dist/text-inputs-aaK9wcDT.js.map +0 -1
  478. package/dist/theme-scope-kStaAer0.js +0 -39
  479. package/dist/theme-scope-kStaAer0.js.map +0 -1
  480. package/dist/timelines-C_SBwHNP.js +0 -442
  481. package/dist/timelines-C_SBwHNP.js.map +0 -1
  482. package/dist/tone-recipes-CPoExcTE.js.map +0 -1
  483. package/dist/typography-DTRkE9zL.js.map +0 -1
  484. package/dist/ui-provider-1D_NSYzO.js.map +0 -1
  485. package/dist/upload-BO8-CLN6.js.map +0 -1
  486. package/dist/upload-queue-EOC8g1gf.js.map +0 -1
  487. package/dist/usage-card-obRaBskq.js.map +0 -1
  488. package/dist/utils-l5LpDw2z.js.map +0 -1
  489. package/dist/value-inputs-TAYMX111.js.map +0 -1
  490. package/dist/workspace-DH0v0KcB.js.map +0 -1
@@ -5,20 +5,24 @@
5
5
  * import 'themelia-react-ui/style.css';
6
6
  * import 'themelia-react-ui/themes/green.css';
7
7
  *
8
- * It replaces only the brand roles. The green sits about 22° of hue from the
9
- * success color, so pair it with labels or icons wherever state matters.
8
+ * It replaces only the brand roles; the sidebar's primary follows them. The
9
+ * green sits about 22° of hue from the success color, so pair it with labels
10
+ * or icons wherever state matters. The first chart series is already this
11
+ * green in the default theme, so it needs no override here.
10
12
  * Both blocks are needed: a later :root rule alone would also win in dark mode.
11
13
  */
12
- :root,
13
- .light {
14
- --primary: oklch(0.45 0.09 167.35); /* Green primary-action fill and brand ink. */
15
- --primary-foreground: oklch(0.985 0 0); /* Text and icons on the green fill. */
16
- --chart-1: oklch(0.56 0.11 167); /* The first chart series follows the brand. */
14
+ @layer theme {
15
+ :root,
16
+ .light {
17
+ --primary: oklch(0.45 0.09 167.35); /* Green primary-action fill and brand ink. */
18
+ --primary-foreground: oklch(0.985 0 0); /* Text and icons on the green fill. */
19
+ }
17
20
  }
18
21
 
19
- .dark {
20
- --primary: oklch(0.70 0.13 167.35); /* Lightened for readable brand text and controls on dark surfaces. */
21
- --primary-foreground: oklch(0.18 0.03 167.35); /* Dark ink on the lightened primary fill. */
22
- --primary-accent: oklch(0.72 0.124 167.35); /* Brand foreground accent on dark surfaces. */
23
- --chart-1: oklch(0.74 0.13 167);
22
+ @layer theme {
23
+ .dark {
24
+ --primary: oklch(0.70 0.13 167.35); /* Lightened for readable brand text and controls on dark surfaces. */
25
+ --primary-foreground: oklch(0.18 0.03 167.35); /* Dark ink on the lightened primary fill. */
26
+ --primary-accent: oklch(0.72 0.124 167.35); /* Brand foreground accent on dark surfaces. */
27
+ }
24
28
  }
@@ -0,0 +1,457 @@
1
+ "use client";
2
+ import { useStrings as e } from "./lib/strings.js";
3
+ import { t } from "./utils-BRhFDwuU.js";
4
+ import { c as n } from "./typography-UTnveOEy.js";
5
+ import { t as r } from "./structure-BmisBK-3.js";
6
+ import { i } from "./tone-recipes-BPsRAvhu.js";
7
+ import { t as a } from "./progress-B1VnCT0K.js";
8
+ import { g as o, m as s } from "./primitives-BFK08r9M.js";
9
+ import { n as c } from "./number-DbV1Dija.js";
10
+ import { t as l } from "./icon-badge-DYKIwvOV.js";
11
+ import { t as u } from "./badge-HpFqoqSY.js";
12
+ import { n as d } from "./display-hAc1HjpI.js";
13
+ import { jsx as f, jsxs as p } from "react/jsx-runtime";
14
+ import { Check as m, Circle as h, Clock as g, GitCommit as _, Loader2 as v, Minus as y, Plus as b, Wrench as x, X as S } from "lucide-react";
15
+ //#region src/components/blocks/timelines/shared/timeline.tsx
16
+ var C = {
17
+ sm: "size-2.5",
18
+ md: "size-icon-md",
19
+ lg: "size-icon-lg"
20
+ }, w = {
21
+ sm: "size-2",
22
+ md: "size-2.5",
23
+ lg: "size-icon-sm"
24
+ }, T = {
25
+ completed: {
26
+ bg: i.success.solid,
27
+ text: "text-success-foreground",
28
+ ring: i.success.halo,
29
+ line: i.success.line
30
+ },
31
+ current: {
32
+ bg: i.primary.solid,
33
+ text: "text-primary-foreground",
34
+ ring: i.primary.halo,
35
+ line: i.primary.line
36
+ },
37
+ pending: {
38
+ bg: "bg-muted",
39
+ text: "text-muted-foreground",
40
+ ring: "ring-border",
41
+ line: "bg-border"
42
+ },
43
+ success: {
44
+ bg: i.success.solid,
45
+ text: "text-success-foreground",
46
+ ring: i.success.halo,
47
+ line: i.success.line
48
+ },
49
+ warning: {
50
+ bg: i.warning.solid,
51
+ text: "text-warning-foreground",
52
+ ring: i.warning.halo,
53
+ line: i.warning.line
54
+ },
55
+ error: {
56
+ bg: i.destructive.solid,
57
+ text: "text-destructive-foreground",
58
+ ring: i.destructive.halo,
59
+ line: i.destructive.line
60
+ },
61
+ neutral: {
62
+ bg: "bg-card",
63
+ text: "text-card-foreground",
64
+ ring: "ring-border",
65
+ line: "bg-border"
66
+ }
67
+ };
68
+ function E({ items: e, dotSize: i = "md", className: a }) {
69
+ return /* @__PURE__ */ f(r, {
70
+ render: /* @__PURE__ */ f("ol", {}),
71
+ gap: "xl",
72
+ className: t("timeline--component", "relative m-0 p-0 list-none", a),
73
+ children: e.map((a, s) => {
74
+ let c = a.status ?? "neutral", l = T[c], u = a.icon, d = s === e.length - 1;
75
+ return /* @__PURE__ */ p("li", {
76
+ "data-status": c,
77
+ "aria-current": c === "current" ? "step" : void 0,
78
+ className: "timeline--item relative flex gap-space-lg",
79
+ children: [
80
+ !d && /* @__PURE__ */ f("span", {
81
+ "aria-hidden": "true",
82
+ className: t("absolute left-[7px] top-4 bottom-[-1rem] w-px", l.line, i === "lg" && "left-[10px]", i === "sm" && "left-[5px]")
83
+ }),
84
+ /* @__PURE__ */ f("div", {
85
+ className: "relative z-[1] mt-0.5 flex shrink-0 items-start",
86
+ children: /* @__PURE__ */ f("span", {
87
+ className: t("inline-flex items-center justify-center rounded-full ring-2", l.bg, l.text, l.ring, C[i]),
88
+ children: !!u && /* @__PURE__ */ f(u, { className: w[i] })
89
+ })
90
+ }),
91
+ /* @__PURE__ */ p(r, {
92
+ gap: "md",
93
+ className: "min-w-0 flex-1 pb-space-md",
94
+ children: [/* @__PURE__ */ p(r, {
95
+ gap: "dense",
96
+ children: [/* @__PURE__ */ p("div", {
97
+ className: "flex items-baseline justify-between gap-space-md",
98
+ children: [/* @__PURE__ */ f(n, {
99
+ type: "inherit",
100
+ weight: "medium",
101
+ lineHeight: "tight",
102
+ children: a.title
103
+ }), !!a.timestamp && /* @__PURE__ */ f(o, {
104
+ size: "xs",
105
+ className: "shrink-0 tabular-nums",
106
+ children: a.timestamp
107
+ })]
108
+ }), !!a.description && /* @__PURE__ */ f(n, {
109
+ size: "xs",
110
+ type: "secondary",
111
+ children: a.description
112
+ })]
113
+ }), !!a.children && /* @__PURE__ */ f("div", {
114
+ className: "min-w-0",
115
+ children: a.children
116
+ })]
117
+ })
118
+ ]
119
+ }, a.id);
120
+ })
121
+ });
122
+ }
123
+ E.displayName = "Timeline";
124
+ //#endregion
125
+ //#region src/components/blocks/timelines/steps-card/steps-card.tsx
126
+ var D = {
127
+ completed: {
128
+ title: "inherit",
129
+ Icon: m
130
+ },
131
+ current: {
132
+ title: "inherit",
133
+ Icon: v
134
+ },
135
+ upcoming: {
136
+ title: "secondary",
137
+ Icon: h
138
+ }
139
+ };
140
+ function O({ title: e, description: r, steps: i, footerText: a, className: o }) {
141
+ let s = i.map((e) => {
142
+ let { Icon: t, title: r } = D[e.status];
143
+ return {
144
+ id: e.id,
145
+ title: /* @__PURE__ */ p("span", {
146
+ className: "inline-flex flex-wrap items-center gap-space-sm",
147
+ children: [/* @__PURE__ */ f(n, {
148
+ tag: "span",
149
+ size: "inherit",
150
+ weight: "semibold",
151
+ type: r,
152
+ children: e.title
153
+ }), e.badge ? /* @__PURE__ */ f(u, {
154
+ tone: e.badgeTone ?? "secondary",
155
+ children: e.badge
156
+ }) : null]
157
+ }),
158
+ description: e.description,
159
+ timestamp: e.timestamp,
160
+ icon: t,
161
+ status: e.status === "upcoming" ? "pending" : e.status,
162
+ children: e.content
163
+ };
164
+ });
165
+ return /* @__PURE__ */ f(d, {
166
+ "data-component": "steps-card",
167
+ "data-slot": "steps-card",
168
+ title: e,
169
+ description: r,
170
+ footerText: a,
171
+ className: t("steps-card--component", o),
172
+ children: /* @__PURE__ */ f(E, {
173
+ items: s,
174
+ dotSize: "lg"
175
+ })
176
+ });
177
+ }
178
+ O.displayName = "StepsCard";
179
+ function k({ status: e, stepNumber: t }) {
180
+ return e === "completed" ? /* @__PURE__ */ f(l, {
181
+ icon: m,
182
+ tone: "success",
183
+ solid: !0,
184
+ shape: "square",
185
+ size: "md",
186
+ className: "relative z-10"
187
+ }) : /* @__PURE__ */ f(l, {
188
+ tone: e === "current" ? "primary" : "neutral",
189
+ solid: e === "current",
190
+ shape: "square",
191
+ size: "md",
192
+ "aria-hidden": !1,
193
+ className: "relative z-10",
194
+ children: /* @__PURE__ */ f(n, {
195
+ tag: "span",
196
+ type: "inherit",
197
+ weight: e === "current" ? "bold" : "medium",
198
+ className: "tabular-nums",
199
+ children: t
200
+ })
201
+ });
202
+ }
203
+ function A({ title: e, description: i, steps: a, footerText: o, className: s }) {
204
+ return /* @__PURE__ */ p("div", {
205
+ "data-component": "steps-horizontal",
206
+ "data-slot": "steps-horizontal",
207
+ className: t("steps-horizontal--component @container/steps-horizontal grid min-w-0 gap-space-md", s),
208
+ children: [
209
+ !!(e || i) && /* @__PURE__ */ p("div", {
210
+ className: "steps-horizontal--header grid min-w-0 gap-normal",
211
+ children: [!!e && /* @__PURE__ */ f(n, {
212
+ type: "inherit",
213
+ weight: "semibold",
214
+ children: e
215
+ }), !!i && /* @__PURE__ */ f(n, {
216
+ type: "secondary",
217
+ children: i
218
+ })]
219
+ }),
220
+ /* @__PURE__ */ f(r, {
221
+ gap: "lg",
222
+ className: "@xl/steps-horizontal:hidden",
223
+ children: a.map((e, i) => {
224
+ let o = i === a.length - 1, s = e.status === "completed" ? "bg-success" : "bg-border";
225
+ return /* @__PURE__ */ p("div", {
226
+ className: "flex gap-space-lg",
227
+ children: [/* @__PURE__ */ p("div", {
228
+ className: "flex flex-col items-center",
229
+ children: [/* @__PURE__ */ f(k, {
230
+ status: e.status,
231
+ stepNumber: i + 1
232
+ }), !o && /* @__PURE__ */ f("div", { className: t("mt-1 w-0.5 flex-1 min-h-5", s) })]
233
+ }), /* @__PURE__ */ p(r, {
234
+ gap: "dense",
235
+ className: t("min-w-0 flex-1 pb-space-md", o && "pb-0"),
236
+ children: [/* @__PURE__ */ f(n, {
237
+ weight: "semibold",
238
+ lineHeight: "snug",
239
+ type: D[e.status].title,
240
+ children: e.title
241
+ }), !!e.description && /* @__PURE__ */ f(n, {
242
+ size: "xs",
243
+ type: "secondary",
244
+ className: "line-clamp-2",
245
+ children: e.description
246
+ })]
247
+ })]
248
+ }, e.id);
249
+ })
250
+ }),
251
+ /* @__PURE__ */ f("div", {
252
+ className: "hidden overflow-x-auto @xl/steps-horizontal:block",
253
+ children: /* @__PURE__ */ f("div", {
254
+ className: "flex min-w-fit items-start",
255
+ children: a.map((e, i) => {
256
+ let o = i === a.length - 1, s = e.status === "completed" ? "bg-success" : "bg-border";
257
+ return /* @__PURE__ */ f("div", {
258
+ className: "flex min-w-28 flex-1 items-start",
259
+ children: /* @__PURE__ */ p(r, {
260
+ gap: "md",
261
+ align: "center",
262
+ className: "w-full",
263
+ children: [/* @__PURE__ */ p("div", {
264
+ className: "flex w-full items-center",
265
+ children: [
266
+ i > 0 && /* @__PURE__ */ f("div", { className: t("h-0.5 flex-1", a[i - 1].status === "completed" ? "bg-success" : "bg-border") }),
267
+ i === 0 && /* @__PURE__ */ f("div", { className: "flex-1" }),
268
+ /* @__PURE__ */ f(k, {
269
+ status: e.status,
270
+ stepNumber: i + 1
271
+ }),
272
+ !o && /* @__PURE__ */ f("div", { className: t("h-0.5 flex-1", s) }),
273
+ !!o && /* @__PURE__ */ f("div", { className: "flex-1" })
274
+ ]
275
+ }), /* @__PURE__ */ p(r, {
276
+ gap: "dense",
277
+ align: "center",
278
+ className: "w-full px-space-xs",
279
+ children: [/* @__PURE__ */ f(n, {
280
+ weight: "semibold",
281
+ lineHeight: "snug",
282
+ align: "center",
283
+ type: D[e.status].title,
284
+ className: "line-clamp-2",
285
+ children: e.title
286
+ }), !!e.description && /* @__PURE__ */ f(n, {
287
+ size: "xs",
288
+ type: "secondary",
289
+ lineHeight: "snug",
290
+ align: "center",
291
+ className: "line-clamp-2",
292
+ children: e.description
293
+ })]
294
+ })]
295
+ })
296
+ }, e.id);
297
+ })
298
+ })
299
+ }),
300
+ !!o && /* @__PURE__ */ f(n, {
301
+ size: "xs",
302
+ type: "secondary",
303
+ children: o
304
+ })
305
+ ]
306
+ });
307
+ }
308
+ A.displayName = "StepsHorizontal";
309
+ //#endregion
310
+ //#region src/components/blocks/timelines/changelog/types.ts
311
+ var j = {
312
+ title: "Changelog",
313
+ added: "Added",
314
+ removed: "Removed",
315
+ modified: "Modified",
316
+ fixed: "Fixed"
317
+ }, M = {
318
+ added: b,
319
+ removed: y,
320
+ modified: x,
321
+ fixed: _
322
+ };
323
+ function N({ entries: i, className: a, strings: o }) {
324
+ let c = e(j, o), l = {
325
+ added: c.added,
326
+ removed: c.removed,
327
+ modified: c.modified,
328
+ fixed: c.fixed
329
+ }, d = i.map((e) => ({
330
+ id: e.id,
331
+ title: /* @__PURE__ */ p("span", {
332
+ className: "inline-flex flex-wrap items-center gap-space-sm",
333
+ children: [
334
+ /* @__PURE__ */ f(u, { children: l[e.kind] }),
335
+ /* @__PURE__ */ f(n, {
336
+ type: "inherit",
337
+ tag: "span",
338
+ size: "inherit",
339
+ weight: "medium",
340
+ lineHeight: "tight",
341
+ children: e.title
342
+ }),
343
+ !!e.version && /* @__PURE__ */ f(s, {
344
+ size: "xs",
345
+ className: "text-muted-foreground",
346
+ children: e.version
347
+ })
348
+ ]
349
+ }),
350
+ description: e.author ? /* @__PURE__ */ p(r, {
351
+ render: /* @__PURE__ */ f("span", {}),
352
+ direction: "horizontal",
353
+ gap: "md",
354
+ className: "inline-flex",
355
+ children: [e.description, /* @__PURE__ */ p(n, {
356
+ tag: "span",
357
+ size: "xs",
358
+ type: "discrete",
359
+ children: ["— ", e.author]
360
+ })]
361
+ }) : e.description,
362
+ timestamp: e.timestamp,
363
+ icon: M[e.kind],
364
+ status: "neutral"
365
+ }));
366
+ return /* @__PURE__ */ f("div", {
367
+ "data-component": "changelog-timeline",
368
+ "data-slot": "changelog-timeline",
369
+ className: t("changelog-timeline--component", a),
370
+ children: /* @__PURE__ */ f(E, {
371
+ items: d,
372
+ dotSize: "md"
373
+ })
374
+ });
375
+ }
376
+ N.displayName = "ChangelogTimeline";
377
+ //#endregion
378
+ //#region src/components/blocks/timelines/milestones/types.ts
379
+ var P = {
380
+ title: "Milestones",
381
+ completed: "Completed",
382
+ in_progress: "In progress",
383
+ upcoming: "Upcoming",
384
+ blocked: "Blocked",
385
+ dueOn: "Due"
386
+ }, F = {
387
+ completed: "completed",
388
+ in_progress: "current",
389
+ upcoming: "pending",
390
+ blocked: "error"
391
+ }, I = {
392
+ completed: m,
393
+ in_progress: g,
394
+ upcoming: h,
395
+ blocked: S
396
+ }, L = {
397
+ completed: "success",
398
+ in_progress: "info",
399
+ upcoming: "secondary",
400
+ blocked: "destructive"
401
+ };
402
+ function R({ milestones: i, className: o, strings: s }) {
403
+ let l = e(P, s), d = {
404
+ completed: l.completed,
405
+ in_progress: l.in_progress,
406
+ upcoming: l.upcoming,
407
+ blocked: l.blocked
408
+ }, m = i.map((e) => ({
409
+ id: e.id,
410
+ title: /* @__PURE__ */ p("span", {
411
+ className: "inline-flex flex-wrap items-center gap-space-sm",
412
+ children: [/* @__PURE__ */ f(n, {
413
+ type: "inherit",
414
+ tag: "span",
415
+ size: "inherit",
416
+ weight: "medium",
417
+ lineHeight: "tight",
418
+ children: e.title
419
+ }), /* @__PURE__ */ f(u, {
420
+ tone: L[e.status],
421
+ children: d[e.status]
422
+ })]
423
+ }),
424
+ description: e.description,
425
+ timestamp: e.dueDate ? `${l.dueOn} ${e.dueDate}` : void 0,
426
+ icon: I[e.status],
427
+ status: F[e.status],
428
+ children: e.status === "in_progress" && typeof e.progress == "number" ? /* @__PURE__ */ p(r, {
429
+ gap: "xs",
430
+ className: "milestones-timeline--progress",
431
+ children: [/* @__PURE__ */ f(a, {
432
+ value: e.progress,
433
+ "aria-label": d.in_progress
434
+ }), /* @__PURE__ */ f(c, {
435
+ value: Math.round(e.progress),
436
+ scaled: !0,
437
+ size: "xs",
438
+ type: "secondary",
439
+ align: "left"
440
+ })]
441
+ }) : void 0
442
+ }));
443
+ return /* @__PURE__ */ f("div", {
444
+ "data-component": "milestones-timeline",
445
+ "data-slot": "milestones-timeline",
446
+ className: t("milestones-timeline--component", o),
447
+ children: /* @__PURE__ */ f(E, {
448
+ items: m,
449
+ dotSize: "md"
450
+ })
451
+ });
452
+ }
453
+ R.displayName = "MilestonesTimeline";
454
+ //#endregion
455
+ export { O as a, j as i, P as n, A as o, N as r, E as s, R as t };
456
+
457
+ //# sourceMappingURL=timelines-CwM_9IhD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timelines-CwM_9IhD.js","names":["Text","Stack","Progress","SecondaryValue","MonoValue","Percent","IconBadge","Badge","ContentBlock","DOT_PX","ICON_PX","STATUS_TONE","toneRecipes","Timeline","cn","className","items","status","item","tone","Icon","isLast","i","dotSize","statusStyles","Check","Loader2","Circle","StepsCard","steps","titleType","step","HorizontalDot","stepNumber","StepsHorizontal","title","description","idx","lineColor","footerText","defaultChangelogTimelineStrings","KIND_ICON","Plus","Minus","Wrench","GitCommit","ChangelogTimeline","stringsProp","strings","useStrings","labelByKind","entries","entry","defaultMilestonesTimelineStrings","STATUS_TO_TIMELINE","STATUS_ICON","Clock","X","STATUS_BADGE","MilestonesTimeline","labelByStatus","milestones","m"],"sources":["../src/components/blocks/timelines/shared/timeline.tsx","../src/components/blocks/timelines/steps-card/steps-card.tsx","../src/components/blocks/timelines/changelog/types.ts","../src/components/blocks/timelines/changelog/changelog-timeline.tsx","../src/components/blocks/timelines/milestones/types.ts","../src/components/blocks/timelines/milestones/milestones-timeline.tsx"],"sourcesContent":["/**\n * Timeline — shared base primitive for the blocks timeline family.\n *\n * Renders a vertical, dot-and-line list of events. Each item supports an\n * icon (Lucide component), a status that maps to dot tone, a title row, an\n * optional description block, an optional timestamp, and free-form content\n * via `children`. Use this primitive directly for new timeline variants\n * instead of reinventing the dot/line geometry — see `ChangeLogTimeline`,\n * `MilestonesTimeline`, and the existing OrderTimeline / PaymentTimeline /\n * ActivityStream consumers for examples.\n */\nimport type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { SecondaryValue } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport type { ComponentScale } from '../../../../lib/component-vocabulary';\nimport { cn } from '../../../../lib/utils';\nimport { toneRecipes } from '../../../../lib/tone-recipes';\n\nexport type TimelineStatus =\n\t| 'completed'\n\t| 'current'\n\t| 'pending'\n\t| 'success'\n\t| 'warning'\n\t| 'error'\n\t| 'neutral';\n\nexport type TimelineDotSize = ComponentScale;\n\nexport interface TimelineItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\t/** Formatted time for the entry. */\n\ttimestamp?: ReactNode;\n\t/** Leading glyph. */\n\ticon?: LucideIcon;\n\tstatus?: TimelineStatus;\n\tchildren?: ReactNode;\n}\n\nexport interface TimelineProps {\n\titems: TimelineItem[];\n\tdotSize?: TimelineDotSize;\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n}\n\nconst DOT_PX: Record<TimelineDotSize, string> = {\n\tsm: 'size-2.5',\n\tmd: 'size-icon-md',\n\tlg: 'size-icon-lg',\n};\n\nconst ICON_PX: Record<TimelineDotSize, string> = {\n\tsm: 'size-2',\n\tmd: 'size-2.5',\n\tlg: 'size-icon-sm',\n};\n\nconst STATUS_TONE: Record<TimelineStatus, { bg: string; text: string; ring: string; line: string }> = {\n\tcompleted: { bg: toneRecipes.success.solid, text: 'text-success-foreground', ring: toneRecipes.success.halo, line: toneRecipes.success.line },\n\tcurrent: { bg: toneRecipes.primary.solid, text: 'text-primary-foreground', ring: toneRecipes.primary.halo, line: toneRecipes.primary.line },\n\tpending: { bg: 'bg-muted', text: 'text-muted-foreground', ring: 'ring-border', line: 'bg-border' },\n\tsuccess: { bg: toneRecipes.success.solid, text: 'text-success-foreground', ring: toneRecipes.success.halo, line: toneRecipes.success.line },\n\twarning: { bg: toneRecipes.warning.solid, text: 'text-warning-foreground', ring: toneRecipes.warning.halo, line: toneRecipes.warning.line },\n\terror: { bg: toneRecipes.destructive.solid, text: 'text-destructive-foreground', ring: toneRecipes.destructive.halo, line: toneRecipes.destructive.line },\n\tneutral: { bg: 'bg-card', text: 'text-card-foreground', ring: 'ring-border', line: 'bg-border' },\n};\n\nexport function Timeline({ items, dotSize = 'md', className }: TimelineProps) {\n\treturn (\n\t\t<Stack render={<ol />} gap=\"xl\" className={cn('timeline--component', 'relative m-0 p-0 list-none', className)}>\n\t\t\t{items.map((item, i) => {\n\t\t\t\tconst status = item.status ?? 'neutral';\n\t\t\t\tconst tone = STATUS_TONE[status];\n\t\t\t\tconst Icon = item.icon;\n\t\t\t\tconst isLast = i === items.length - 1;\n\n\t\t\t\treturn (\n\t\t\t\t\t// `data-status` exposes the state as a hook; the current step is\n\t\t\t\t\t// announced through `aria-current`, independently of its colour.\n\t\t\t\t\t<li\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\tdata-status={status}\n\t\t\t\t\t\taria-current={status === 'current' ? 'step' : undefined}\n\t\t\t\t\t\tclassName=\"timeline--item relative flex gap-space-lg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* Connector line — fills available space below dot until last */}\n\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'absolute left-[7px] top-4 bottom-[-1rem] w-px',\n\t\t\t\t\t\t\t\t\ttone.line,\n\t\t\t\t\t\t\t\t\tdotSize === 'lg' && 'left-[10px]',\n\t\t\t\t\t\t\t\t\tdotSize === 'sm' && 'left-[5px]',\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\n\t\t\t\t\t\t<div className=\"relative z-[1] mt-0.5 flex shrink-0 items-start\">\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'inline-flex items-center justify-center rounded-full ring-2',\n\t\t\t\t\t\t\t\t\ttone.bg,\n\t\t\t\t\t\t\t\t\ttone.text,\n\t\t\t\t\t\t\t\t\ttone.ring,\n\t\t\t\t\t\t\t\t\tDOT_PX[dotSize],\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!Icon && <Icon className={ICON_PX[dotSize]} />}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<Stack gap=\"md\" className=\"min-w-0 flex-1 pb-space-md\">\n\t\t\t\t\t\t\t<Stack gap=\"dense\">\n\t\t\t\t\t\t\t\t<div className=\"flex items-baseline justify-between gap-space-md\">\n\t\t\t\t\t\t\t\t\t<Text type=\"inherit\" weight=\"medium\" lineHeight=\"tight\">\n\t\t\t\t\t\t\t\t\t\t{item.title}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t{!!item.timestamp && (\n\t\t\t\t\t\t\t\t\t\t<SecondaryValue size=\"xs\" className=\"shrink-0 tabular-nums\">\n\t\t\t\t\t\t\t\t\t\t\t{item.timestamp}\n\t\t\t\t\t\t\t\t\t\t</SecondaryValue>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{!!item.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t\t\t\t\t\t{item.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t{!!item.children && <div className=\"min-w-0\">{item.children}</div>}\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t})}\n\t\t</Stack>\n\t);\n}\n\nTimeline.displayName = 'Timeline';\n","import { Stack } from '../../../base/structure';\nimport { Text } from '../../../typography/text';\nimport { Badge } from '../../../base/badge';\nimport { ContentBlock, IconBadge } from '../../../base/display';\nimport { cn } from '../../../../lib/utils';\nimport { Check, Circle, Loader2 } from 'lucide-react';\nimport { Timeline, type TimelineItem } from '../shared';\nimport { type StepStatus, type StepsCardProps, type StepsHorizontalProps } from './types';\n\nconst statusStyles: Record<StepStatus, {\n\ttitle: 'inherit' | 'secondary';\n\tIcon: typeof Check;\n}> = {\n\tcompleted: { title: 'inherit', Icon: Check },\n\tcurrent: { title: 'inherit', Icon: Loader2 },\n\tupcoming: { title: 'secondary', Icon: Circle },\n};\n\n/* ─── Vertical StepsCard (original) ────────────────────────────────────────── */\n\nexport function StepsCard({ title, description, steps, footerText, className }: StepsCardProps) {\n\tconst items: TimelineItem[] = steps.map((step) => {\n\t\tconst { Icon, title: titleType } = statusStyles[step.status];\n\t\treturn {\n\t\t\tid: step.id,\n\t\t\ttitle: (\n\t\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t\t<Text tag=\"span\" size=\"inherit\" weight=\"semibold\" type={titleType}>\n\t\t\t\t\t\t{step.title}\n\t\t\t\t\t</Text>\n\t\t\t\t\t{step.badge ? (\n\t\t\t\t\t\t<Badge tone={step.badgeTone ?? 'secondary'}>{step.badge}</Badge>\n\t\t\t\t\t) : null}\n\t\t\t\t</span>\n\t\t\t),\n\t\t\tdescription: step.description,\n\t\t\ttimestamp: step.timestamp,\n\t\t\ticon: Icon,\n\t\t\tstatus: step.status === 'upcoming' ? 'pending' : step.status,\n\t\t\tchildren: step.content,\n\t\t};\n\t});\n\n\treturn (\n\t\t<ContentBlock\n\t\t\tdata-component=\"steps-card\"\n\t\t\tdata-slot=\"steps-card\"\n\t\t\ttitle={title}\n\t\t\tdescription={description}\n\t\t\tfooterText={footerText}\n\t\t\tclassName={cn('steps-card--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"lg\" />\n\t\t</ContentBlock>\n\t);\n}\n\nStepsCard.displayName = 'StepsCard';\n\n/*──────────────────────────────────────────────────────────────────────────────\n * STEPS HORIZONTAL — Horizontal step bar with connecting lines\n *────────────────────────────────────────────────────────────────────────────*/\n\n/** Step marker on the shared IconBadge tile: reached steps show a check, the rest their number. */\nfunction HorizontalDot({ status, stepNumber }: { status: StepStatus; stepNumber: number }) {\n\tif (status === 'completed') {\n\t\treturn <IconBadge icon={Check} tone=\"success\" solid shape=\"square\" size=\"md\" className=\"relative z-10\" />;\n\t}\n\n\t// The number is the step's position, so it stays readable to assistive technology.\n\treturn (\n\t\t<IconBadge\n\t\t\ttone={status === 'current' ? 'primary' : 'neutral'}\n\t\t\tsolid={status === 'current'}\n\t\t\tshape=\"square\"\n\t\t\tsize=\"md\"\n\t\t\taria-hidden={false}\n\t\t\tclassName=\"relative z-10\"\n\t\t>\n\t\t\t<Text tag=\"span\" type=\"inherit\" weight={status === 'current' ? 'bold' : 'medium'} className=\"tabular-nums\">\n\t\t\t\t{stepNumber}\n\t\t\t</Text>\n\t\t</IconBadge>\n\t);\n}\n\nexport function StepsHorizontal({ title, description, steps, footerText, className }: StepsHorizontalProps) {\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"steps-horizontal\"\n\t\t\tdata-slot=\"steps-horizontal\"\n\t\t\tclassName={cn('steps-horizontal--component @container/steps-horizontal grid min-w-0 gap-space-md', className)}\n\t\t>\n\t\t\t{!!(title || description) && (\n\t\t\t\t<div className=\"steps-horizontal--header grid min-w-0 gap-normal\">\n\t\t\t\t\t{!!title && <Text type=\"inherit\" weight=\"semibold\">{title}</Text>}\n\t\t\t\t\t{!!description && <Text type=\"secondary\">{description}</Text>}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t<Stack gap=\"lg\" className=\"@xl/steps-horizontal:hidden\">\n\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\tconst isLast = idx === steps.length - 1;\n\t\t\t\t\tconst lineColor = step.status === 'completed' ? 'bg-success' : 'bg-border';\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<div key={step.id} className=\"flex gap-space-lg\">\n\t\t\t\t\t\t\t<div className=\"flex flex-col items-center\">\n\t\t\t\t\t\t\t\t<HorizontalDot status={step.status} stepNumber={idx + 1} />\n\t\t\t\t\t\t\t\t{!isLast && <div className={cn('mt-1 w-0.5 flex-1 min-h-5', lineColor)} />}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<Stack gap=\"dense\" className={cn('min-w-0 flex-1 pb-space-md', isLast && 'pb-0')}>\n\t\t\t\t\t\t\t\t<Text weight=\"semibold\" lineHeight=\"snug\" type={statusStyles[step.status].title}>\n\t\t\t\t\t\t\t\t\t{step.title}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t{!!step.description && (\n\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t{step.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</Stack>\n\n\t\t\t{/* Horizontal scroll wrapper — when total step width exceeds the\n\t\t\t\tcard, this lets users scroll instead of clipping labels. */}\n\t\t\t<div className=\"hidden overflow-x-auto @xl/steps-horizontal:block\">\n\t\t\t\t<div className=\"flex min-w-fit items-start\">\n\t\t\t\t\t{steps.map((step, idx) => {\n\t\t\t\t\t\tconst isLast = idx === steps.length - 1;\n\t\t\t\t\t\tconst lineColor = step.status === 'completed' ? 'bg-success' : 'bg-border';\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div key={step.id} className=\"flex min-w-28 flex-1 items-start\">\n\t\t\t\t\t\t\t\t<Stack gap=\"md\" align=\"center\" className=\"w-full\">\n\t\t\t\t\t\t\t\t\t<div className=\"flex w-full items-center\">\n\t\t\t\t\t\t\t\t\t\t{idx > 0 && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t'h-0.5 flex-1',\n\t\t\t\t\t\t\t\t\t\t\t\tsteps[idx - 1].status === 'completed' ? 'bg-success' : 'bg-border',\n\t\t\t\t\t\t\t\t\t\t\t)} />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{idx === 0 && <div className=\"flex-1\" />}\n\n\t\t\t\t\t\t\t\t\t\t<HorizontalDot status={step.status} stepNumber={idx + 1} />\n\n\t\t\t\t\t\t\t\t\t\t{!isLast && (\n\t\t\t\t\t\t\t\t\t\t\t<div className={cn('h-0.5 flex-1', lineColor)} />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{!!isLast && <div className=\"flex-1\" />}\n\t\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t\t{/* Labels below dot — clamped to 2 lines so long step\n\t\t\t\t\t\t\t\t\t\tnames break gracefully instead of pushing the\n\t\t\t\t\t\t\t\t\t\trow taller. */}\n\t\t\t\t\t\t\t\t\t<Stack gap=\"dense\" align=\"center\" className=\"w-full px-space-xs\">\n\t\t\t\t\t\t\t\t\t\t<Text weight=\"semibold\" lineHeight=\"snug\" align=\"center\" type={statusStyles[step.status].title} className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t\t{step.title}\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t{!!step.description && (\n\t\t\t\t\t\t\t\t\t\t\t<Text size=\"xs\" type=\"secondary\" lineHeight=\"snug\" align=\"center\" className=\"line-clamp-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{step.description}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{!!footerText && <Text size=\"xs\" type=\"secondary\">{footerText}</Text>}\n\t\t</div>\n\t);\n}\n\nStepsHorizontal.displayName = 'StepsHorizontal';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type ChangelogEntryKind = 'added' | 'removed' | 'modified' | 'fixed';\n\nexport interface ChangelogEntry {\n\t/** Stable identity for this entry. */\n\tid: string;\n\tkind: ChangelogEntryKind;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\tversion?: string;\n\t/** Formatted time for the entry. */\n\ttimestamp?: string;\n\t/** Who produced the entry. */\n\tauthor?: string;\n}\n\nexport interface ChangelogTimelineStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tadded: string;\n\tremoved: string;\n\tmodified: string;\n\tfixed: string;\n}\n\nexport const defaultChangelogTimelineStrings: ChangelogTimelineStrings = {\n\ttitle: 'Changelog',\n\tadded: 'Added',\n\tremoved: 'Removed',\n\tmodified: 'Modified',\n\tfixed: 'Fixed',\n};\n\nexport interface ChangelogTimelineProps {\n\tentries: ChangelogEntry[];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<ChangelogTimelineStrings>;\n}\n","/**\n * ChangelogTimeline — code/release changelog rendered through the shared\n * `Timeline` primitive. Each entry's kind (added / removed / modified /\n * fixed) is a neutral chip plus the marker glyph: a kind is a category, not a\n * status, so it carries no colour. An optional version label and timestamp\n * follow. Strings overridable for i18n.\n */\nimport { GitCommit, Minus, Plus, Wrench } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { MonoValue } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport { useStrings } from '../../../../lib/strings';\n\nimport {\n\tTimeline,\n\ttype TimelineItem,\n} from '../shared';\nimport {\n\tdefaultChangelogTimelineStrings,\n\ttype ChangelogEntry,\n\ttype ChangelogEntryKind,\n\ttype ChangelogTimelineProps,\n} from './types';\n\nimport { cn } from '../../../../lib/utils';\nconst KIND_ICON = {\n\tadded: Plus,\n\tremoved: Minus,\n\tmodified: Wrench,\n\tfixed: GitCommit,\n} as const;\n\nexport function ChangelogTimeline({\n\tentries,\n\tclassName,\n\tstrings: stringsProp,\n}: ChangelogTimelineProps) {\n\tconst strings = useStrings(defaultChangelogTimelineStrings, stringsProp);\n\tconst labelByKind: Record<ChangelogEntryKind, string> = {\n\t\tadded: strings.added,\n\t\tremoved: strings.removed,\n\t\tmodified: strings.modified,\n\t\tfixed: strings.fixed,\n\t};\n\n\tconst items: TimelineItem[] = entries.map((entry: ChangelogEntry) => ({\n\t\tid: entry.id,\n\t\ttitle: (\n\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t<Badge>\n\t\t\t\t\t{labelByKind[entry.kind]}\n\t\t\t\t</Badge>\n\t\t\t\t<Text type=\"inherit\" tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\">\n\t\t\t\t\t{entry.title}\n\t\t\t\t</Text>\n\t\t\t\t{!!entry.version && (\n\t\t\t\t\t<MonoValue size=\"xs\" className=\"text-muted-foreground\">\n\t\t\t\t\t\t{entry.version}\n\t\t\t\t\t</MonoValue>\n\t\t\t\t)}\n\t\t\t</span>\n\t\t),\n\t\tdescription: entry.author ? (\n\t\t\t<Stack render={<span />} direction=\"horizontal\" gap=\"md\" className=\"inline-flex\">\n\t\t\t\t{entry.description}\n\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"discrete\">\n\t\t\t\t\t— {entry.author}\n\t\t\t\t</Text>\n\t\t\t</Stack>\n\t\t) : (\n\t\t\tentry.description\n\t\t),\n\t\ttimestamp: entry.timestamp,\n\t\ticon: KIND_ICON[entry.kind],\n\t\tstatus: 'neutral',\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"changelog-timeline\"\n\t\t\tdata-slot=\"changelog-timeline\"\n\t\t\tclassName={cn('changelog-timeline--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"md\" />\n\t\t</div>\n\t);\n}\n\nChangelogTimeline.displayName = 'ChangelogTimeline';\n","import type { ReactNode } from 'react';\nimport type { StringsProp } from '../../../../lib/strings';\n\nexport type MilestoneStatus = 'completed' | 'in_progress' | 'upcoming' | 'blocked';\n\nexport interface MilestoneItem {\n\t/** Stable identity for this entry. */\n\tid: string;\n\t/** Surface title. */\n\ttitle: ReactNode;\n\t/** Supporting copy shown under the label. */\n\tdescription?: ReactNode;\n\tdueDate?: string;\n\tstatus: MilestoneStatus;\n\t/** 0–100; only used when status is `in_progress`. */\n\tprogress?: number;\n}\n\nexport interface MilestonesTimelineStrings {\n\t/** Surface title. */\n\ttitle: string;\n\tcompleted: string;\n\tin_progress: string;\n\tupcoming: string;\n\tblocked: string;\n\tdueOn: string;\n}\n\nexport const defaultMilestonesTimelineStrings: MilestonesTimelineStrings = {\n\ttitle: 'Milestones',\n\tcompleted: 'Completed',\n\tin_progress: 'In progress',\n\tupcoming: 'Upcoming',\n\tblocked: 'Blocked',\n\tdueOn: 'Due',\n};\n\nexport interface MilestonesTimelineProps {\n\tmilestones: MilestoneItem[];\n\t/** Merged onto the outermost node. */\n\tclassName?: string;\n\t/** Overrides this surface's own copy. */\n\tstrings?: StringsProp<MilestonesTimelineStrings>;\n}\n","/**\n * MilestonesTimeline — project / goal milestones rendered through the\n * shared `Timeline` primitive. Each milestone has a status (completed /\n * in-progress / upcoming / blocked) that drives the dot tone, and an\n * optional `progress` percent that renders an inline progress bar when the\n * milestone is in flight. Strings overridable for i18n.\n */\nimport { Check, Circle, Clock, X } from 'lucide-react';\nimport { Badge } from '../../../base/badge';\nimport { Progress } from '../../../base/feedback';\nimport { Stack } from '../../../base/structure';\nimport { Percent } from '../../../primitives';\nimport { Text } from '../../../typography';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport {\n\tTimeline,\n\ttype TimelineItem,\n\ttype TimelineStatus,\n} from '../shared';\nimport {\n\tdefaultMilestonesTimelineStrings,\n\ttype MilestoneItem,\n\ttype MilestoneStatus,\n\ttype MilestonesTimelineProps,\n} from './types';\n\nconst STATUS_TO_TIMELINE: Record<MilestoneStatus, TimelineStatus> = {\n\tcompleted: 'completed',\n\tin_progress: 'current',\n\tupcoming: 'pending',\n\tblocked: 'error',\n};\n\nconst STATUS_ICON = {\n\tcompleted: Check,\n\tin_progress: Clock,\n\tupcoming: Circle,\n\tblocked: X,\n} as const;\n\n// In progress is a status (info); primary is reserved for the main command.\nconst STATUS_BADGE: Record<MilestoneStatus, 'success' | 'info' | 'secondary' | 'destructive'> = {\n\tcompleted: 'success',\n\tin_progress: 'info',\n\tupcoming: 'secondary',\n\tblocked: 'destructive',\n};\n\nexport function MilestonesTimeline({\n\tmilestones,\n\tclassName,\n\tstrings: stringsProp,\n}: MilestonesTimelineProps) {\n\tconst strings = useStrings(defaultMilestonesTimelineStrings, stringsProp);\n\tconst labelByStatus: Record<MilestoneStatus, string> = {\n\t\tcompleted: strings.completed,\n\t\tin_progress: strings.in_progress,\n\t\tupcoming: strings.upcoming,\n\t\tblocked: strings.blocked,\n\t};\n\n\tconst items: TimelineItem[] = milestones.map((m: MilestoneItem) => ({\n\t\tid: m.id,\n\t\ttitle: (\n\t\t\t<span className=\"inline-flex flex-wrap items-center gap-space-sm\">\n\t\t\t\t<Text type=\"inherit\" tag=\"span\" size=\"inherit\" weight=\"medium\" lineHeight=\"tight\">\n\t\t\t\t\t{m.title}\n\t\t\t\t</Text>\n\t\t\t\t<Badge tone={STATUS_BADGE[m.status]}>\n\t\t\t\t\t{labelByStatus[m.status]}\n\t\t\t\t</Badge>\n\t\t\t</span>\n\t\t),\n\t\tdescription: m.description,\n\t\ttimestamp: m.dueDate ? `${strings.dueOn} ${m.dueDate}` : undefined,\n\t\ticon: STATUS_ICON[m.status],\n\t\tstatus: STATUS_TO_TIMELINE[m.status],\n\t\tchildren:\n\t\t\tm.status === 'in_progress' && typeof m.progress === 'number' ? (\n\t\t\t\t<Stack gap=\"xs\" className=\"milestones-timeline--progress\">\n\t\t\t\t\t<Progress value={m.progress} aria-label={labelByStatus.in_progress} />\n\t\t\t\t\t<Percent value={Math.round(m.progress)} scaled size=\"xs\" type=\"secondary\" align=\"left\" />\n\t\t\t\t</Stack>\n\t\t\t) : undefined,\n\t}));\n\n\treturn (\n\t\t<div\n\t\t\tdata-component=\"milestones-timeline\"\n\t\t\tdata-slot=\"milestones-timeline\"\n\t\t\tclassName={cn('milestones-timeline--component', className)}\n\t\t>\n\t\t\t<Timeline items={items} dotSize=\"md\" />\n\t\t</div>\n\t);\n}\n\nMilestonesTimeline.displayName = 'MilestonesTimeline';\n"],"mappings":"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"}
@@ -50,6 +50,9 @@ var e = {
50
50
  removed: `rounded-radius-sm px-space-2xs line-through ${e.destructive.tint} ${e.destructive.ink}`,
51
51
  added: `rounded-radius-sm px-space-2xs ${e.success.tint} ${e.success.ink}`
52
52
  }, n = {
53
+ inline: "size-1.5 shrink-0 rounded-full",
54
+ marker: "size-2 shrink-0 rounded-full"
55
+ }, r = {
53
56
  activity: [
54
57
  "fill-muted",
55
58
  "fill-success/20",
@@ -65,6 +68,6 @@ var e = {
65
68
  ]
66
69
  };
67
70
  //#endregion
68
- export { n, e as r, t };
71
+ export { e as i, t as n, r, n as t };
69
72
 
70
- //# sourceMappingURL=tone-recipes-CPoExcTE.js.map
73
+ //# sourceMappingURL=tone-recipes-BPsRAvhu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tone-recipes-BPsRAvhu.js","names":["toneRecipes","markRecipes","dotRecipes","rampRecipes"],"sources":["../src/lib/tone-recipes.ts"],"sourcesContent":["/**\n * One tint scale for every status tone. The contrast contract tests each tone's ink\n * on its own tint (20%, destructive 10%), so strengths live here, not in each\n * component:\n * - `wash` tints a large surface (alerts, callouts, highlighted rows) and stays\n * subtle; the saturated hues (info, destructive, primary) wash at 5%.\n * - `tint` fills chips, badges and icon tiles that carry the tone's ink.\n * - `edge`, `halo` and `line` draw a toned border, ring and connector.\n * - `solid` fills dots, bars and markers.\n * Design lint rejects status tints spelled anywhere else.\n */\nexport const toneRecipes = {\n\tinfo: {\n\t\twash: 'bg-info/5', tint: 'bg-info/20', edge: 'border-info/30', halo: 'ring-info/30',\n\t\tline: 'bg-info/30', ink: 'text-info', solid: 'bg-info',\n\t},\n\tsuccess: {\n\t\twash: 'bg-success/10', tint: 'bg-success/20', edge: 'border-success/30', halo: 'ring-success/30',\n\t\tline: 'bg-success/30', ink: 'text-success', solid: 'bg-success',\n\t},\n\twarning: {\n\t\twash: 'bg-warning/10', tint: 'bg-warning/20', edge: 'border-warning/40', halo: 'ring-warning/40',\n\t\tline: 'bg-warning/40', ink: 'text-warning-accent', solid: 'bg-warning',\n\t},\n\tdestructive: {\n\t\twash: 'bg-destructive/5', tint: 'bg-destructive/10', edge: 'border-destructive/30', halo: 'ring-destructive/30',\n\t\tline: 'bg-destructive/30', ink: 'text-destructive', solid: 'bg-destructive',\n\t},\n\tprimary: {\n\t\twash: 'bg-primary/5', tint: 'bg-primary/20', edge: 'border-primary/30', halo: 'ring-primary/30',\n\t\tline: 'bg-primary/30', ink: 'text-primary-accent', solid: 'bg-primary',\n\t},\n} as const;\n\nexport type ToneRecipeName = keyof typeof toneRecipes;\n\n/**\n * Inline marks inside running text: a search match, and an edit's removed and\n * added values. Each is a tone tint behind the run, never a box around it. A\n * match often sits inside a word, so it adds no inline padding that would split it.\n */\nexport const markRecipes = {\n\tmatch: `rounded-radius-xs text-foreground ${toneRecipes.warning.tint}`,\n\tremoved: `rounded-radius-sm px-space-2xs line-through ${toneRecipes.destructive.tint} ${toneRecipes.destructive.ink}`,\n\tadded: `rounded-radius-sm px-space-2xs ${toneRecipes.success.tint} ${toneRecipes.success.ink}`,\n} as const;\n\n/**\n * Status dots. One size sits beside text (badges, legends, labels); the other is a\n * standalone marker (feeds, queues, timelines). The colour comes from the tone.\n */\nexport const dotRecipes = {\n\tinline: 'size-1.5 shrink-0 rounded-full',\n\tmarker: 'size-2 shrink-0 rounded-full',\n} as const;\n\n/**\n * Sequential data ramps: an empty step, then rising strengths of one hue. They\n * encode quantity, not status, so they live apart from the tint scale above.\n */\nexport const rampRecipes = {\n\t/** Activity heatmap cells (SVG fills): empty and four levels. */\n\tactivity: ['fill-muted', 'fill-success/20', 'fill-success/40', 'fill-success/65', 'fill-success'],\n\t/** Distribution ruler segments: empty, low, medium and high. */\n\tdensity: ['bg-muted', 'bg-primary/25', 'bg-primary/55', 'bg-primary'],\n} as const;\n"],"mappings":";AAWA,IAAaA,IAAc;CAC1B,MAAM;EACL,MAAM;EAAa,MAAM;EAAc,MAAM;EAAkB,MAAM;EACrE,MAAM;EAAc,KAAK;EAAa,OAAO;CAC9C;CACA,SAAS;EACR,MAAM;EAAiB,MAAM;EAAiB,MAAM;EAAqB,MAAM;EAC/E,MAAM;EAAiB,KAAK;EAAgB,OAAO;CACpD;CACA,SAAS;EACR,MAAM;EAAiB,MAAM;EAAiB,MAAM;EAAqB,MAAM;EAC/E,MAAM;EAAiB,KAAK;EAAuB,OAAO;CAC3D;CACA,aAAa;EACZ,MAAM;EAAoB,MAAM;EAAqB,MAAM;EAAyB,MAAM;EAC1F,MAAM;EAAqB,KAAK;EAAoB,OAAO;CAC5D;CACA,SAAS;EACR,MAAM;EAAgB,MAAM;EAAiB,MAAM;EAAqB,MAAM;EAC9E,MAAM;EAAiB,KAAK;EAAuB,OAAO;CAC3D;AACD,GASaC,IAAc;CAC1B,OAAO,qCAAqCD,EAAY,QAAQ;CAChE,SAAS,+CAA+CA,EAAY,YAAY,KAAK,GAAGA,EAAY,YAAY;CAChH,OAAO,kCAAkCA,EAAY,QAAQ,KAAK,GAAGA,EAAY,QAAQ;AAC1F,GAMaE,IAAa;CACzB,QAAQ;CACR,QAAQ;AACT,GAMaC,IAAc;CAE1B,UAAU;EAAC;EAAc;EAAmB;EAAmB;EAAmB;CAAc;CAEhG,SAAS;EAAC;EAAY;EAAiB;EAAiB;CAAY;AACrE"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { r as e } from "./theme-scope-kStaAer0.js";
3
- import { t } from "./utils-l5LpDw2z.js";
4
- import { s as n } from "./typography-DTRkE9zL.js";
2
+ import { r as e } from "./theme-scope-BJ6eE2xt.js";
3
+ import { t } from "./utils-BRhFDwuU.js";
4
+ import { c as n } from "./typography-UTnveOEy.js";
5
5
  import { t as r } from "./anchored-positioning-DPnKTvNs.js";
6
6
  import { t as i } from "./motion-recipes-ChBg4HBq.js";
7
7
  import { t as a } from "./slot-CLF9kLrS.js";
@@ -108,4 +108,4 @@ b.displayName = "Tooltip", x.displayName = "TooltipProvider", S.displayName = "T
108
108
  //#endregion
109
109
  export { h as a, S as i, C as n, _ as o, x as r, g as s, b as t };
110
110
 
111
- //# sourceMappingURL=tooltip-CsfgrfS7.js.map
111
+ //# sourceMappingURL=tooltip-yiRJUFjp.js.map