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
@@ -1 +0,0 @@
1
- {"version":3,"file":"smart-card-lFKxn5Hu.js","names":["Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","styles","styles","CardPrimitive","CardHeaderPrimitive","CardTitlePrimitive","CardDescriptionPrimitive","CardContentPrimitive","CardFooterPrimitive","useCardConfig","useDensityConfig","resolveComponentScale","cn","Button","RunningTextContext","motionRecipes","TooltipTrigger","TooltipContent","Tooltip","gapRecipe","Stack","ICON_CHILD_SIZE_CLASSNAMES","toneRecipes","surfaceDividerRecipes","ActionMenu","alertVariants","cva","isSimpleText","value","Alert","forwardRef","props","tone","variant","className","AlertTitle","children","Text","AlertDescription","AlertMetadata","AlertMetadataItem","icon","label","numeric","AlertAction","Card$1","size","CardHeader$1","CardTitle$1","CardDescription$1","CardContent$1","CardFooter$1","cardRegionPaddingClasses","cardRecipes","CARD_BEM","CARD_INSET","SURFACE_CLASSES","hasRenderableContent","content","isValidElement","Fragment","CARD_TITLE_SIZE_CLASSES","CARD_TITLE_TEXT_SIZE","CardShell","CardHeader","padding","textGap","CardTitle","sizeProp","defaultScale","CardDescription","CardContent","CardFooter","SmartCardAlert","hasHeader","alertTone","alert","SurfaceTitle","plainTitle","title","dataSlot","suffix","suffixClassName","ActionsMenu","actionDefinitions","actions","action","index","actionsLabel","TooltipTrigger_Info","passthrough","triggerProps","tooltipLabel","Info","SmartCardHeaderRow","cardActions","hasActions","hasIcon","hasTitle","hasTitleSuffix","titleSuffix","hasDescription","description","hasTooltip","tooltip","hasHeaderStart","headerStart","hasHeaderEnd","headerEnd","hasHeaderAction","headerAction","showTitleRow","showTrailing","titleSize","defaultSmartCardStrings","Card","footerDividerProp","expandedProp","stringsProp","rootProps","footerDivider","defaultFooterDivider","resolvedTitleSize","inset","vertical","tokens","framedHeader","headerPlacement","strings","useStrings","resolvedActionsLabel","isExpandable","expandable","collapsedMaxHeightRaw","collapsedMaxHeight","isExpandedControlled","internalExpanded","setInternalExpanded","useState","defaultExpanded","expanded","handleToggle","useCallback","next","onExpandedChange","hasAlert","hasFooterText","footerText","hasFooterSlot","footerSlot","hasContentTop","contentTop","hasContentBottom","contentBottom","hasBody","headerFooterOnly","tooltipAriaLabel","collapseStyle","resolvedSurface","surface","defaultSurface","resolvedHeaderDivider","headerDivider","defaultHeaderDivider","sharedHeaderFooterDivider","gap","headerClassName","contentClassName","contentGap","footerClassName","ChevronDown","SmartCard"],"sources":["../src/components/base/feedback/alert.tsx","../src/components/ui/card.tsx","../src/components/base/cards/card.recipes.ts","../src/components/base/cards/smart-card.tokens.ts","../src/components/base/cards/partials/has-renderable-content.ts","../src/components/base/cards/partials/card-primitives.tsx","../src/components/base/cards/partials/smart-card-alert.tsx","../src/components/base/display/surface-title.tsx","../src/components/base/cards/partials/smart-card-actions-menu.tsx","../src/components/base/cards/partials/smart-card-header-row.tsx","../src/components/base/cards/smart-card.strings.ts","../src/components/base/cards/smart-card.tsx"],"sourcesContent":["/**\n * Alert — base notice primitive with semantic variants and responsive actions.\n *\n * Package-owned notice inspired by ReUI's alert layout. Consumers import this\n * base alert for the library's typography, token, and DOM-hook contract.\n */\nimport {\n\tforwardRef,\n\ttype ComponentPropsWithoutRef,\n\ttype ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { Text } from '../../typography';\nimport { Stack } from '../structure';\nimport { cn } from '../../../lib/utils';\nimport { ICON_CHILD_SIZE_CLASSNAMES } from '../display/icon-size';\nimport type { SemanticTone } from '../../../lib/component-vocabulary';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nconst alertVariants = cva(\n\t[\n\t\t// The surface inset and copy rhythm are Card's (p-surface, gap-normal); the\n\t\t// leading glyph and the action column keep Toast's glyph/action gap.\n\t\t'alert--component relative grid w-full grid-cols-[0_1fr] items-start gap-y-normal rounded-radius border p-surface text-start',\n\t\t'has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-space-md',\n\t\t'has-[>[data-slot=alert-action]]:sm:grid-cols-[0_minmax(0,1fr)_auto] has-[>svg]:has-[>[data-slot=alert-action]]:sm:grid-cols-[auto_minmax(0,1fr)_auto] has-[>[data-slot=alert-action]]:gap-x-space-md',\n\t\t// Root tokens, not the `--spacing-*` aliases: an alias resolves at :root and would\n\t\t// ignore a scoped density/space/icon boundary.\n\t\t'[&>svg]:row-span-2 [&>svg]:mt-[calc((1em*1.375-var(--icon))/2)] [&>svg]:shrink-0',\n\t\tICON_CHILD_SIZE_CLASSNAMES.md,\n\t],\n\t{\n\t\tvariants: {\n\t\t\ttone: {\n\t\t\t\tneutral: 'border-border bg-card text-card-foreground',\n\t\t\t\tprimary: `${toneRecipes.primary.edge} ${toneRecipes.primary.wash} text-card-foreground [&>svg]:text-primary-accent`,\n\t\t\t\tsecondary: 'border-border bg-muted/50 text-card-foreground [&>svg]:text-secondary-foreground',\n\t\t\t\tinfo: `${toneRecipes.info.edge} ${toneRecipes.info.wash} text-card-foreground [&>svg]:text-info`,\n\t\t\t\tsuccess: `${toneRecipes.success.edge} ${toneRecipes.success.wash} text-card-foreground [&>svg]:text-success`,\n\t\t\t\twarning: `${toneRecipes.warning.edge} ${toneRecipes.warning.wash} text-card-foreground [&>svg]:text-warning-accent`,\n\t\t\t\tdestructive: `${toneRecipes.destructive.edge} ${toneRecipes.destructive.wash} text-card-foreground [&>svg]:text-destructive`,\n\t\t\t},\n\t\t\tvariant: {\n\t\t\t\tdefault: '',\n\t\t\t\tinverse: [\n\t\t\t\t\t'border-foreground bg-foreground text-background',\n\t\t\t\t\t'[&>svg]:text-background',\n\t\t\t\t\t'[&_[data-slot=alert-title]_[data-typography=text]]:text-background',\n\t\t\t\t\t'[&_[data-slot=alert-description]_[data-typography=text]]:text-background/75',\n\t\t\t\t\t'[&_[data-slot=alert-metadata-item]]:bg-background/10',\n\t\t\t\t\t'[&_[data-slot=alert-metadata-item]>svg]:text-background/75',\n\t\t\t\t\t'[&_[data-slot=alert-metadata-label]_[data-typography=text]]:text-background/75',\n\t\t\t\t\t'[&_[data-slot=alert-metadata-value]_[data-typography=text]]:text-background',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\ttone: 'neutral',\n\t\t\tvariant: 'default',\n\t\t},\n\t},\n);\n\nexport type AlertVariant = NonNullable<VariantProps<typeof alertVariants>['variant']>;\nexport type AlertTone = SemanticTone;\n\nexport interface AlertProps\n\textends ComponentPropsWithoutRef<'div'>,\n\t\tVariantProps<typeof alertVariants> {}\n\nfunction isSimpleText(value: ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\nconst Alert = forwardRef<HTMLDivElement, AlertProps>(function Alert(\n\t{ className, tone, variant, role = 'alert', ...props },\n\tref,\n) {\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tdata-slot=\"alert\"\n\t\t\tdata-tone={tone ?? 'neutral'}\n\t\t\tdata-variant={variant ?? 'default'}\n\t\t\trole={role}\n\t\t\tclassName={cn(alertVariants({ tone, variant }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\nAlert.displayName = 'Alert';\n\nconst AlertTitle = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction AlertTitle({ className, children, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-title\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'alert--title col-start-2 min-h-icon leading-snug [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:opacity-80',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isSimpleText(children) ? (\n\t\t\t\t\t<Text tag=\"span\" weight=\"semibold\" lineHeight=\"snug\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</div>\n\t\t);\n\t},\n);\nAlertTitle.displayName = 'AlertTitle';\n\nconst AlertDescription = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction AlertDescription({ className, children, ...props }, ref) {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-description\"\n\t\t\t\tgap=\"xs\"\n\t\t\t\talign=\"start\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'alert--description col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:opacity-80 [&_p]:leading-relaxed',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{isSimpleText(children) ? (\n\t\t\t\t\t<Text tag=\"span\" type=\"secondary\">\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</Text>\n\t\t\t\t) : children}\n\t\t\t</Stack>\n\t\t);\n\t},\n);\nAlertDescription.displayName = 'AlertDescription';\n\nexport interface AlertMetadataProps extends ComponentPropsWithoutRef<'dl'> {\n\t/** Metadata items or consumer-owned definition-list content. */\n\tchildren?: ReactNode;\n\t/** Accessible name for the fact group when the alert title is not sufficient. */\n\t'aria-label'?: string;\n\t/** Consumer styling hook merged with the tokenized defaults. */\n\tclassName?: string;\n}\n\n/**\n * Compact semantic facts associated with an alert. Use `aria-label` when the\n * surrounding title does not already describe the metadata group.\n */\nconst AlertMetadata = forwardRef<HTMLDListElement, AlertMetadataProps>(\n\tfunction AlertMetadata({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<dl\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-metadata\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'alert-metadata--component alert--metadata col-start-2 mt-space-xs flex min-w-0 flex-wrap items-center gap-x-space-md gap-y-space-xs',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nAlertMetadata.displayName = 'AlertMetadata';\n\nexport interface AlertMetadataItemProps\n\textends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n\t/** Consumer styling hook merged with the tokenized defaults. */\n\tclassName?: string;\n\t/** Decorative or semantic leading media. Decorative icons should be aria-hidden. */\n\ticon?: ReactNode;\n\t/** User-provided metadata key; the Alert component owns no copy. */\n\tlabel: ReactNode;\n\t/** User-provided metadata value. May contain a package value primitive. */\n\tvalue: ReactNode;\n\t/** Applies tabular figures to simple numeric values, in the sans UI font. */\n\tnumeric?: boolean;\n}\n\n/** A label/value pair rendered with native `dt` and `dd` semantics. */\nconst AlertMetadataItem = forwardRef<HTMLDivElement, AlertMetadataItemProps>(\n\tfunction AlertMetadataItem(\n\t\t{ className, icon, label, value, numeric = false, ...props },\n\t\tref,\n\t) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-metadata-item\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'alert-metadata-item--component alert--metadata-item inline-flex max-w-full min-w-0 items-center gap-space-sm rounded-radius-sm bg-foreground/8 px-control-xs py-space-xs',\n\t\t\t\t\t'[&>svg]:size-icon-sm [&>svg]:shrink-0 [&>svg]:text-muted-foreground',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{icon}\n\t\t\t\t<dt data-slot=\"alert-metadata-label\" className=\"alert--metadata-label shrink-0\">\n\t\t\t\t\t{isSimpleText(label) ? (\n\t\t\t\t\t\t<Text tag=\"span\" size=\"xs\" type=\"secondary\" className=\"leading-none\">\n\t\t\t\t\t\t\t{label}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : label}\n\t\t\t\t</dt>\n\t\t\t\t<dd data-slot=\"alert-metadata-value\" className=\"alert--metadata-value m-0 min-w-0\">\n\t\t\t\t\t{isSimpleText(value) ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttag=\"span\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\t\t\tclassName={cn('break-words leading-none', numeric && 'tabular-nums')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t) : value}\n\t\t\t\t</dd>\n\t\t\t</div>\n\t\t);\n\t},\n);\nAlertMetadataItem.displayName = 'AlertMetadataItem';\n\nconst AlertAction = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'>>(\n\tfunction AlertAction({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t// Direction/alignment come from Stack; the remaining classes are grid\n\t\t\t// placement inside the alert's own template, which is the parent's\n\t\t\t// concern rather than this row's.\n\t\t\t<Stack\n\t\t\t\tref={ref}\n\t\t\t\tdirection=\"horizontal\"\n\t\t\t\talign=\"center\"\n\t\t\t\tjustify={{ base: 'start', sm: 'end' }}\n\t\t\t\twrap\n\t\t\t\tgap=\"sm\"\n\t\t\t\tdata-slot=\"alert-action\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'alert--action max-sm:col-start-2 max-sm:mt-space-md sm:col-start-3 sm:row-start-1 sm:row-span-2 sm:self-start',\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\nAlertAction.displayName = 'AlertAction';\n\nexport {\n\tAlert,\n\tAlertTitle,\n\tAlertDescription,\n\tAlertMetadata,\n\tAlertMetadataItem,\n\tAlertAction,\n};\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"card--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"card-header--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"card-title--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"card-description--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\"card-action--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"card-content--primitive\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"card-footer--primitive\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import { surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport type { SmartCardProps } from './smart-card.types';\n\n/** Explicit region insets; omitted padding preserves the compound's inline-only defaults. */\nexport const cardRegionPaddingClasses = {\n\tnone: 'p-0',\n\tsm: 'p-surface-xs',\n\tmd: 'p-surface',\n\tlg: 'p-surface-lg',\n} as const satisfies Record<NonNullable<SmartCardProps['padding']>, string>;\n/** Private Tailwind recipes; public props and DOM hooks remain owned by the component. */\nexport const cardRecipes = {\n\troot: \"flex flex-col w-full font-sans rounded-radius box-border overflow-hidden py-surface gap-space-xl transition-[background-color,border-color,box-shadow] duration-150\",\n\tshell: \"@container/card flex flex-col w-full font-sans rounded-radius box-border overflow-hidden py-surface gap-space-xl transition-[background-color,border-color,box-shadow] duration-150\",\n\tsurfaceCard: `bg-card ${surfaceDividerRecipes.frame.shell} shadow-sm text-card-foreground`,\n\tsurfaceDefault: `bg-card ${surfaceDividerRecipes.frame.shell} shadow-sm text-card-foreground`,\n\tsurfaceFlat: \"bg-transparent border-0 shadow-none text-foreground\",\n\tsurfaceFramed: `bg-card ${surfaceDividerRecipes.frame.shell} shadow-sm ${surfaceDividerRecipes.frame.ring} text-card-foreground`,\n\tsurfaceRaised: `bg-card ${surfaceDividerRecipes.frame.shell} shadow-md text-card-foreground`,\n\tsurfaceSunken: `bg-muted ${surfaceDividerRecipes.frame.shell} text-foreground`,\n\theader: \"flex flex-col gap-normal px-surface box-border\",\n\t// Wrapping follows available header space, independent of caller-owned\n\t// container names on the surface. Both title and commands keep their identity.\n\theaderRow: \"flex-row flex-wrap items-start justify-between gap-space-lg pb-0\",\n\theaderRowSingle: \"items-center\",\n\theaderLeading: \"min-w-0 max-w-full flex-1 basis-64\",\n\theaderLeadingSingle: \"basis-36\",\n\theaderTrailing: \"flex max-w-full flex-wrap shrink-0 items-center gap-space-md\",\n\theaderDivider: `${surfaceDividerRecipes.frame.header} [&.border-b]:!pb-surface`,\n\ttitle: \"min-w-0 leading-tight text-card-foreground\",\n\ttitleSm: \"text-sm\",\n\ttitleMd: \"text-base\",\n\ttitleLg: \"text-lg\",\n\tdescription: \"text-sm text-muted-foreground leading-normal\",\n\tcontent: \"px-surface box-border min-w-0\",\n\tfooter: \"flex items-center px-surface box-border\",\n\tfooterDivider: `${surfaceDividerRecipes.frame.footer} [&.border-t]:!pt-surface`,\n\talert: \"px-surface\",\n\talertWithHeader: \"-mt-space-xs\",\n\texpandToggle: \"flex justify-center pb-surface -mt-space-md\",\n} as const satisfies Record<string, string>;\n","import type { SmartCardSurface } from './smart-card.types';\nimport { cardRecipes as styles } from './card.recipes';\n\n/**\n * BEM-style hooks applied to every SmartCard subregion. Library\n * consumers can target them in CSS / tests / analytics without\n * relying on shadcn's data-slot attributes (which are framework\n * internals). Keep these names consistent — they are part of the\n * public DOM contract.\n */\nexport const CARD_BEM = {\n\troot: 'card--component',\n\theader: 'card--header',\n\ttitle: 'card--title',\n\tdescription: 'card--description',\n\tcontent: 'card--content',\n\tfooter: 'card--footer',\n\talert: 'card--alert',\n\tcollapseFade: 'card--collapse-fade',\n\texpandToggle: 'card--expand-toggle',\n\texpandToggleButton: 'card--expand-toggle-button',\n} as const;\n\ninterface PaddingTokens {\n\tshell: string;\n\theaderX: string;\n\t/** Tokenized divider inset that overrides the shadcn primitive's fixed 24px rule. */\n\theaderDividerY: string;\n\tcontentX: string;\n\tcontentY: string;\n\tfooterX: string;\n\t/** Tokenized divider inset that overrides the shadcn primitive's fixed 24px rule. */\n\tfooterDividerY: string;\n\talertX: string;\n\t/** Bottom clearance for the half-inset expandable control. */\n\texpandableBottom: string;\n\t/** Vertical offset applied when alert sits BELOW the header (pulls it up). */\n\talertOffsetWithHeader: string;\n\t/** Vertical spacing applied when alert is the first content (no header). */\n\talertOffsetStandalone: string;\n}\n\nexport const CARD_INSET: PaddingTokens = {\n\tshell: styles.shell,\n\theaderX: 'px-surface',\n\theaderDividerY: styles.headerDivider,\n\tcontentX: styles.content,\n\tcontentY: '',\n\tfooterX: styles.footer,\n\tfooterDividerY: styles.footerDivider,\n\talertX: styles.alert,\n\texpandableBottom: 'pb-surface',\n\talertOffsetWithHeader: styles.alertWithHeader,\n\talertOffsetStandalone: '',\n};\n\n/**\n * Surface-specific shell classes.\n */\nexport const SURFACE_CLASSES: Record<SmartCardSurface, string> = {\n\tcard: styles.surfaceCard,\n\tflat: styles.surfaceFlat,\n\tframed: styles.surfaceFramed,\n};\n","import { Fragment, isValidElement, type ReactNode } from 'react';\n\n/**\n * Predicate used by SmartCard subregions to decide whether each slot\n * warrants rendering its wrapper. Numbers (incl. `0`) and JSX always\n * render; falsy / empty-string content is treated as absent. Fragments\n * recurse into their children.\n */\nexport function hasRenderableContent(content?: ReactNode): boolean {\n\tif (content === null || content === undefined) return false;\n\tif (typeof content === 'boolean') return false;\n\tif (typeof content === 'string') return content.trim().length > 0;\n\tif (typeof content === 'number' || typeof content === 'bigint') return true;\n\tif (Array.isArray(content)) return content.some(hasRenderableContent);\n\tif (isValidElement<{ children?: ReactNode }>(content)) {\n\t\tif (content.type === Fragment) return hasRenderableContent(content.props.children);\n\t\treturn true;\n\t}\n\treturn true;\n}\n","import type { TextGap } from '../../structure';\n/**\n * Internal layout primitives — re-exported from `smart-card.tsx` for\n * advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each primitive is intentionally thin:\n * a single responsibility, a single set of default classes, no business\n * logic. The BEM hooks (`card--component`, `card--header`, etc.) are\n * applied here so the public DOM contract lives in one place.\n */\nimport {\n\ttype ComponentPropsWithRef,\n\ttype ComponentPropsWithoutRef,\n} from 'react';\n\nimport {\n\tCard as CardPrimitive,\n\tCardContent as CardContentPrimitive,\n\tCardDescription as CardDescriptionPrimitive,\n\tCardFooter as CardFooterPrimitive,\n\tCardHeader as CardHeaderPrimitive,\n\tCardTitle as CardTitlePrimitive,\n} from '../../../ui/card';\nimport { Text } from '../../../typography/text';\nimport { RunningTextContext } from '../../../typography/running-text';\nimport { useDensityConfig } from '../../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../../lib/ui-provider/scale';\nimport { cn } from '../../../../lib/utils';\n\nimport { CARD_BEM } from '../smart-card.tokens';\nimport type { CardTitleSize, SmartCardProps } from '../smart-card.types';\nimport { cardRecipes as styles, cardRegionPaddingClasses } from '../card.recipes';\n\nimport { hasRenderableContent } from './has-renderable-content';\n\nconst CARD_TITLE_SIZE_CLASSES: Record<CardTitleSize, string> = {\n\tsm: styles.titleSm,\n\tmd: styles.titleMd,\n\tlg: styles.titleLg,\n};\n\nconst CARD_TITLE_TEXT_SIZE: Record<CardTitleSize, 'sm' | 'base' | 'lg'> = {\n\tsm: 'sm',\n\tmd: 'base',\n\tlg: 'lg',\n};\n\ntype CardRegionProps = ComponentPropsWithRef<'div'> & {\n\t/** Full surface inset. Omit to retain the established inline-only inset. */\n\tpadding?: SmartCardProps['padding'];\n};\n\nexport function CardShell({ className, ...props }: ComponentPropsWithRef<'div'>) {\n\treturn (\n\t\t<CardPrimitive\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.root,\n\t\t\t\tstyles.shell,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardHeader({\n\tclassName,\n\ttextGap = 'normal',\n\tpadding,\n\t...props\n}: CardRegionProps & { textGap?: TextGap }) {\n\treturn (\n\t\t<CardHeaderPrimitive\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.header,\n\t\t\t\tstyles.header,\n\t\t\t\tpadding !== undefined && cardRegionPaddingClasses[padding],\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardTitle({\n\tclassName,\n\tchildren,\n\tsize: sizeProp,\n\t...props\n}: ComponentPropsWithoutRef<'div'> & { size?: CardTitleSize }) {\n\tconst { defaultScale } = useDensityConfig();\n\tconst size = resolveComponentScale(sizeProp, defaultScale);\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardTitlePrimitive\n\t\t\t\tclassName={cn(CARD_BEM.title, styles.title, 'font-medium', CARD_TITLE_SIZE_CLASSES[size], className)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</CardTitlePrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-title\"\n\t\t\ttag=\"div\"\n\t\t\tsize={CARD_TITLE_TEXT_SIZE[size]}\n\t\t\tweight=\"semibold\"\n\t\t\tlineHeight=\"tight\"\n\t\t\tclassName={cn(CARD_BEM.title, styles.title, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardDescription({\n\tclassName,\n\tchildren,\n\t...props\n}: ComponentPropsWithoutRef<'div'>) {\n\tif (!hasRenderableContent(children)) return null;\n\n\tconst isPlainText =\n\t\ttypeof children === 'string' ||\n\t\ttypeof children === 'number' ||\n\t\ttypeof children === 'bigint';\n\n\tif (!isPlainText) {\n\t\treturn (\n\t\t\t<CardDescriptionPrimitive\n\t\t\t\tclassName={cn(\n\t\t\t\t\tCARD_BEM.description,\n\t\t\t\t\tstyles.description,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{/* Inline value primitives inside a rich description inherit its text role. */}\n\t\t\t\t<RunningTextContext.Provider value>{children}</RunningTextContext.Provider>\n\t\t\t</CardDescriptionPrimitive>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Text\n\t\t\tdata-slot=\"card-description\"\n\t\t\ttag=\"div\"\n\t\t\ttype=\"secondary\"\n\t\t\tclassName={cn(CARD_BEM.description, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</Text>\n\t);\n}\n\nexport function CardContent({\n\tclassName,\n\tpadding,\n\t...props\n}: CardRegionProps) {\n\treturn (\n\t\t<CardContentPrimitive\n\t\t\tclassName={cn(CARD_BEM.content, styles.content, padding !== undefined && cardRegionPaddingClasses[padding], className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function CardFooter({\n\tclassName,\n\tpadding,\n\t...props\n}: CardRegionProps) {\n\treturn (\n\t\t<CardFooterPrimitive\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.footer,\n\t\t\t\tstyles.footer,\n\t\t\t\tpadding !== undefined && cardRegionPaddingClasses[padding],\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n","/**\n * Inline alert banner rendered between the header and the card body.\n * Pulls itself up under the header (`alertOffsetWithHeader`) when one\n * exists so the visual gap between header bottom and alert top stays\n * tight; otherwise pushes itself down (`alertOffsetStandalone`) so it\n * doesn't kiss the card top edge.\n */\nimport type { ReactNode } from 'react';\n\nimport { Alert, AlertDescription } from '../../feedback/alert';\nimport { cn } from '../../../../lib/utils';\n\nimport { CARD_BEM, CARD_INSET } from '../smart-card.tokens';\nimport type { CardAlertTone } from '../smart-card.types';\n\ninterface AlertSlotProps {\n\t/** Banner content. A plain string is wrapped for you. */\n\talert: ReactNode | string;\n\t/** Tone of the banner. */\n\talertTone: CardAlertTone;\n\t/** Whether a header sits above, deciding the banner's top spacing. */\n\thasHeader: boolean;\n\tclassName?: string;\n}\n\nexport function SmartCardAlert({\n\talert,\n\talertTone,\n\thasHeader,\n\tclassName,\n}: AlertSlotProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tCARD_BEM.alert,\n\t\t\t\tCARD_INSET.alertX,\n\t\t\t\tclassName,\n\t\t\t\thasHeader ? CARD_INSET.alertOffsetWithHeader : CARD_INSET.alertOffsetStandalone,\n\t\t\t)}\n\t\t>\n\t\t\t<Alert tone={alertTone}>\n\t\t\t\t<AlertDescription>{alert}</AlertDescription>\n\t\t\t</Alert>\n\t\t</div>\n\t);\n}\n","import type { ReactNode } from 'react';\nimport { Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\n\n/**\n * One wrapping title/suffix composition shared by cards and content structures.\n * A plain-text title is exposed as a level-2 heading (below the page's h1) so\n * screen-reader users can move between surfaces; suffix badges stay outside its\n * accessible name. Custom title nodes keep their own semantics.\n */\nexport function SurfaceTitle({title, suffix, size = 'base', className, suffixClassName, dataSlot}: {\n title?: ReactNode; suffix?: ReactNode; size?: 'sm' | 'base' | 'lg';\n className?: string; suffixClassName?: string; dataSlot?: string;\n}) {\n const plainTitle = typeof title === 'string' || typeof title === 'number' || typeof title === 'bigint';\n return <Text tag=\"div\" size={size} weight={plainTitle ? 'semibold' : 'medium'} lineHeight=\"tight\" data-slot={dataSlot} className={cn('surface-title--component flex min-w-0 flex-wrap items-center gap-space-md break-words leading-tight', className)}>\n {title != null && <span className=\"min-w-0 max-w-full\" {...(plainTitle ? {role: 'heading', 'aria-level': 2} : {})}>{title}</span>}\n {suffix != null && <div className={cn('surface-title--suffix inline-flex max-w-full flex-wrap items-center gap-space-md', suffixClassName)}>{suffix}</div>}\n </Text>;\n}\n","/**\n * SmartCard actions menu — the shared `⋯` overflow trigger and dropdown of\n * consumer-supplied `SmartCardAction` items. It ends the header's trailing\n * row, after `headerEnd` and `headerAction`, as the quiet ghost square at the\n * provider scale.\n */\nimport {\n\tActionMenu,\n\ttype ActionMenuAction,\n} from '../../action-menu';\n\nimport type { SmartCardAction } from '../smart-card.types';\n\ninterface ActionsMenuProps {\n\t/** Controls offered on the surface. */\n\tactions: readonly SmartCardAction[];\n\tactionsLabel: string;\n}\n\nexport function ActionsMenu({ actions, actionsLabel }: ActionsMenuProps) {\n\tconst actionDefinitions: ActionMenuAction[] = actions.map((action, index) => ({ ...action, id: action.id ?? `card-action-${index}` }));\n\n\treturn (\n\t\t<ActionMenu\n\t\t\tactions={actionDefinitions}\n\t\t\tsrText={actionsLabel}\n\t\t\talign=\"end\"\n\t\t\tcloseOnSelect\n\t\t\tbuttonProps={{ className: 'card--actions-trigger' }}\n\t\t/>\n\t);\n}\n","/**\n * SmartCardHeaderRow — the chrome above the card body. Combines icon /\n * title / description / tooltip / suffix on the leading side with the\n * trailing `headerEnd` / `headerAction` slots and the actions menu.\n *\n * `TooltipTrigger_Info` is colocated here because it's only used by the\n * header — keeping it private avoids polluting the public partial\n * surface.\n */\nimport { Info } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { SurfaceTitle } from '../../display/surface-title';\nimport { Button } from '../../buttons';\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipTrigger,\n} from '../../display/tooltip';\nimport { Stack, type TextGap } from '../../structure';\nimport { cn } from '../../../../lib/utils';\n\nimport { CARD_INSET } from '../smart-card.tokens';\nimport { cardRecipes } from '../card.recipes';\nimport type { CardTitleSize, SmartCardAction } from '../smart-card.types';\n\nimport { CardHeader, CardDescription } from './card-primitives';\nimport { hasRenderableContent } from './has-renderable-content';\nimport { ActionsMenu } from './smart-card-actions-menu';\n\nfunction TooltipTrigger_Info({ tooltipLabel }: { tooltipLabel: string }) {\n\treturn (\n\t\t<TooltipTrigger\n\t\t\trender={(triggerProps) => {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\t\t\tconst passthrough = triggerProps as Record<string, any>;\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\t{...passthrough}\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'card--tooltip-trigger',\n\t\t\t\t\t\t\t'text-muted-foreground',\n\t\t\t\t\t\t\tpassthrough.className,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={tooltipLabel}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Info className=\"size-icon-md\" />\n\t\t\t\t\t</Button>\n\t\t\t\t);\n\t\t\t}}\n\t\t/>\n\t);\n}\n\ninterface HeaderProps {\n\t/** Leading glyph on the title line. */\n\ticon?: ReactNode;\n\t/** Card title. */\n\ttitle?: ReactNode;\n\t/** Content immediately after the title. */\n\ttitleSuffix?: ReactNode;\n\t/** Supporting sentence under the title. */\n\tdescription?: ReactNode;\n\ttextGap?: TextGap;\n\t/** Explanatory copy behind an info affordance on the title line. */\n\ttooltip?: ReactNode;\n\t/** Accessible name for the tooltip trigger. */\n\ttooltipLabel: string;\n\t/** Full-width row above the title. */\n\theaderStart?: ReactNode;\n\t/** Content at the end of the header. */\n\theaderEnd?: ReactNode;\n\t/** Single control before the overflow menu. */\n\theaderAction?: ReactNode;\n\t/** Overflow menu at the far end of the header. */\n\tactions?: readonly SmartCardAction[];\n\t/** Accessible name for the overflow trigger. */\n\tactionsLabel: string;\n\t/** Card title typography. */\n\ttitleSize: CardTitleSize;\n\tclassName?: string;\n}\n\nexport function SmartCardHeaderRow({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttextGap = 'normal',\n\ttooltip,\n\ttooltipLabel,\n\theaderStart,\n\theaderEnd,\n\theaderAction,\n\tactions,\n\tactionsLabel,\n\ttitleSize,\n\tclassName,\n}: HeaderProps) {\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst hasActions = cardActions.length > 0;\n\n\tconst hasIcon = hasRenderableContent(icon);\n\tconst hasTitle = hasRenderableContent(title);\n\tconst hasTitleSuffix = hasRenderableContent(titleSuffix);\n\tconst hasDescription = hasRenderableContent(description);\n\tconst hasTooltip = hasRenderableContent(tooltip);\n\tconst hasHeaderStart = hasRenderableContent(headerStart);\n\tconst hasHeaderEnd = hasRenderableContent(headerEnd);\n\tconst hasHeaderAction = hasRenderableContent(headerAction);\n\n\tconst showTitleRow = hasIcon || hasTitle || hasTitleSuffix || hasTooltip;\n\tconst showTrailing = hasHeaderEnd || hasHeaderAction || hasActions;\n\n\treturn (\n\t\t<CardHeader\n\t\t\tclassName={cn(\n\t\t\t\tcardRecipes.headerRow,\n\t\t\t\t!hasDescription && !hasHeaderStart && cardRecipes.headerRowSingle,\n\t\t\t\tCARD_INSET.headerX,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t<Stack gap={textGap} className={cn(\"card--header-start\", cardRecipes.headerLeading, !hasDescription && !hasHeaderStart && cardRecipes.headerLeadingSingle)}>\n\t\t\t\t{!!hasHeaderStart && headerStart}\n\n\t\t\t\t{!!showTitleRow && (\n\t\t\t\t\t<div className=\"card--title-row flex min-w-0 items-start gap-space-sm\">\n\t\t\t\t\t\t{!!hasIcon && (\n\t\t\t\t\t\t\t<span className=\"card--icon flex shrink-0 items-center pt-space-2xs text-muted-foreground [&_svg]:size-icon\">\n\t\t\t\t\t\t\t\t{icon}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<SurfaceTitle dataSlot=\"card-title\" title={title} suffix={hasTitleSuffix ? titleSuffix : undefined} size={titleSize === 'md' ? 'base' : titleSize === 'lg' ? 'lg' : 'sm'} className=\"card--title flex-1\" suffixClassName=\"card--title-suffix\" />\n\t\t\t\t\t\t{!!hasTooltip && (\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger_Info tooltipLabel={tooltipLabel} />\n\t\t\t\t\t\t\t\t<TooltipContent>{tooltip}</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasDescription && (\n\t\t\t\t\t<CardDescription className=\"text-start\">{description}</CardDescription>\n\t\t\t\t)}\n\t\t\t</Stack>\n\n\t\t\t{!!showTrailing && (\n\t\t\t\t<div className={cn(\"card--header-end\", cardRecipes.headerTrailing)}>\n\t\t\t\t\t{!!hasHeaderEnd && headerEnd}\n\t\t\t\t\t{!!hasHeaderAction && headerAction}\n\t\t\t\t\t{!!hasActions && (\n\t\t\t\t\t\t<ActionsMenu actions={cardActions} actionsLabel={actionsLabel} />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardHeader>\n\t);\n}\n","/**\n * SmartCard strings — i18n surface for the chrome the consumer doesn't\n * pass directly. Most copy (title, description, action labels, alert\n * body) flows in via props; the strings here cover the implicit\n * affordances (header actions, tooltip, and expand toggle).\n */\n\nexport interface SmartCardStrings {\n\tactionsLabel: string;\n\ttooltipLabel: string;\n\texpandLabel: string;\n\tcollapseLabel: string;\n}\n\nexport const defaultSmartCardStrings = {\n\tactionsLabel: 'More actions',\n\ttooltipLabel: 'Card info',\n\texpandLabel: 'Expand card',\n\tcollapseLabel: 'Collapse card',\n} satisfies SmartCardStrings;\n","import { surfaceDividerRecipes } from '../../../lib/surface-recipes';\n/**\n * SmartCard — blocks card with header (icon, title, suffix, description,\n * tooltip), actions menu, alert banner, header / content / footer slots,\n * surface variants (card / flat / framed), and an opt-in expandable body.\n *\n * The single card primitive everything else builds on — never reach past it\n * to shadcn `Card` directly. The CardShell / CardHeader / CardTitle /\n * CardDescription / CardContent / CardFooter primitives are re-exported\n * for advanced composition (deeply customised layouts that still want the\n * design-system surface tokens). Each subregion paints a BEM-style hook\n * (`card--component`, `card--header`, `card--title`, …) for CSS / test /\n * analytics targeting independent of shadcn's data-slot internals.\n *\n * The file is a thin orchestrator. The actual chrome lives in:\n * - `./smart-card.types.ts` — public prop / variant types\n * - `./smart-card.strings.ts` — i18n (expand toggle copy)\n * - `./smart-card.tokens.ts` — CARD_INSET + SURFACE_CLASSES + CARD_BEM\n * - `./partials/card-primitives.tsx` — CardShell + CardHeader / Title /\n * Description / Content / Footer\n * - `./partials/smart-card-header-row.tsx` — header layout + actions menu\n * - `./partials/smart-card-alert.tsx` — inline alert banner\n * - `./partials/smart-card-actions-menu.tsx` — shared `⋯` overflow menu\n * - `./partials/smart-card-skeleton.tsx` — loading placeholder\n * - `./partials/has-renderable-content.ts` — slot-empty predicate\n */\nimport { ChevronDown } from 'lucide-react';\nimport {\n\ttype CSSProperties,\n\tforwardRef,\n\tuseCallback,\n\tuseState,\n} from 'react';\n\nimport { Button } from '../buttons';\nimport { Text } from '../../typography';\nimport { Stack } from '../structure';\nimport { gapRecipe } from '../structure/structure.recipes';\nimport { useStrings } from '../../../lib/strings';\nimport { useCardConfig, useDensityConfig } from '../../../lib/ui-provider';\nimport { resolveComponentScale } from '../../../lib/ui-provider/scale';\nimport { cn } from '../../../lib/utils';\n\nimport {\n\tCardContent,\n\tCardFooter,\n\tCardShell,\n} from './partials/card-primitives';\nimport { hasRenderableContent } from './partials/has-renderable-content';\nimport { SmartCardAlert } from './partials/smart-card-alert';\nimport { SmartCardHeaderRow } from './partials/smart-card-header-row';\nimport {\n\tdefaultSmartCardStrings,\n} from './smart-card.strings';\nimport {\n\tCARD_BEM,\n\tCARD_INSET,\n\tSURFACE_CLASSES,\n} from './smart-card.tokens';\nimport type {\n\tSmartCardProps,\n\tSmartCardSurface,\n} from './smart-card.types';\nimport { motionRecipes } from '../../../lib/motion-recipes';\n\nexport const Card = forwardRef<HTMLDivElement, SmartCardProps>(function Card({\n\ticon,\n\ttitle,\n\ttitleSuffix,\n\tdescription,\n\ttextGap = 'normal',\n\ttooltip,\n\ttooltipAriaLabel,\n\tfooterText,\n\talert,\n\talertTone = 'neutral',\n\tsurface,\n\tpadding = 'md',\n\theaderPlacement = 'inside',\n\tgap,\n\tcontentGap,\n\ttitleSize,\n\tactions,\n\tactionsLabel,\n\theaderAction,\n\theaderStart,\n\theaderEnd,\n\tcontentTop,\n\tcontentBottom,\n\tfooterSlot,\n\theaderDivider,\n\tfooterDivider: footerDividerProp,\n\texpandable = false,\n\tdefaultExpanded = false,\n\texpanded: expandedProp,\n\tonExpandedChange,\n\tchildren,\n\tclassName,\n\theaderClassName,\n\tcontentClassName,\n\tfooterClassName,\n\tstrings: stringsProp,\n\t...rootProps\n}, ref) {\n\tconst {\n\t\tdefaultSurface,\n\t\tdefaultHeaderDivider,\n\t\tdefaultFooterDivider,\n\t} = useCardConfig();\n\tconst footerDivider = footerDividerProp ?? defaultFooterDivider ?? false;\n\tconst { defaultScale } = useDensityConfig();\n\tconst resolvedTitleSize = resolveComponentScale(titleSize, defaultScale);\n\tconst inset = { none: 'px-0', sm: 'px-surface-xs', md: 'px-surface', lg: 'px-surface-lg' }[padding];\n\tconst vertical = { none: 'py-0', sm: 'py-surface-xs', md: 'py-surface', lg: 'py-surface-lg' }[padding];\n\tconst tokens = { ...CARD_INSET, headerX: inset, contentX: inset, footerX: inset, headerDividerY: { none: '!pb-0', sm: '!pb-surface-xs', md: '!pb-surface', lg: '!pb-surface-lg' }[padding], footerDividerY: { none: '!pt-0', sm: '!pt-surface-xs', md: '!pt-surface', lg: '!pt-surface-lg' }[padding] };\n\tconst framedHeader = headerPlacement === 'frame';\n\tconst cardActions = Array.isArray(actions) ? actions : [];\n\tconst strings = useStrings(defaultSmartCardStrings, stringsProp);\n\tconst resolvedActionsLabel =\n\t\tactionsLabel ?? strings.actionsLabel;\n\n\tconst isExpandable = expandable !== false && expandable !== undefined;\n\tconst collapsedMaxHeightRaw =\n\t\ttypeof expandable === 'object' && expandable?.collapsedMaxHeight !== undefined\n\t\t\t? expandable.collapsedMaxHeight\n\t\t\t: '12rem';\n\tconst collapsedMaxHeight =\n\t\ttypeof collapsedMaxHeightRaw === 'number'\n\t\t\t? `${collapsedMaxHeightRaw}px`\n\t\t\t: collapsedMaxHeightRaw;\n\n\tconst isExpandedControlled = expandedProp !== undefined;\n\tconst [internalExpanded, setInternalExpanded] = useState(defaultExpanded);\n\tconst expanded = isExpandedControlled ? expandedProp : internalExpanded;\n\tconst handleToggle = useCallback(() => {\n\t\tconst next = !expanded;\n\t\tif (!isExpandedControlled) setInternalExpanded(next);\n\t\tonExpandedChange?.(next);\n\t}, [expanded, isExpandedControlled, onExpandedChange]);\n\n\tconst hasHeader =\n\t\thasRenderableContent(icon) ||\n\t\thasRenderableContent(title) ||\n\t\thasRenderableContent(description) ||\n\t\tcardActions.length > 0 ||\n\t\thasRenderableContent(headerAction) ||\n\t\thasRenderableContent(headerStart) ||\n\t\thasRenderableContent(headerEnd);\n\n\tconst hasAlert = hasRenderableContent(alert);\n\tconst hasFooterText = hasRenderableContent(footerText);\n\tconst hasFooterSlot = hasRenderableContent(footerSlot);\n\tconst hasContentTop = hasRenderableContent(contentTop);\n\tconst hasContentBottom = hasRenderableContent(contentBottom);\n\t// Expandable cards retain their explicitly requested collapse region.\n\tconst hasBody = hasContentTop || hasContentBottom || hasRenderableContent(children) || isExpandable;\n\tconst headerFooterOnly = hasHeader && (hasFooterText || hasFooterSlot) && !hasAlert && !hasBody && !framedHeader;\n\n\tconst tooltipLabel =\n\t\ttooltipAriaLabel && tooltipAriaLabel.trim().length > 0\n\t\t\t? tooltipAriaLabel\n\t\t\t: strings.tooltipLabel;\n\n\tconst collapseStyle: CSSProperties | undefined = isExpandable\n\t\t? {\n\t\t\t\tmaxHeight: expanded ? '' : collapsedMaxHeight,\n\t\t\t}\n\t\t: undefined;\n\n\t// Resolve surface from the instance, then the provider default.\n\tconst resolvedSurface: SmartCardSurface =\n\t\tsurface ?? defaultSurface ?? 'framed';\n\tconst resolvedHeaderDivider = headerDivider ?? defaultHeaderDivider ?? false;\n\t// Adjacent header/footer regions share one boundary, owned by the footer.\n\tconst sharedHeaderFooterDivider = headerFooterOnly && (resolvedHeaderDivider || footerDivider);\n\n\treturn (\n\t\t<CardShell\n\t\t\t{...rootProps}\n\t\t\tdata-header-placement={headerPlacement}\n\t\t\tref={ref}\n\t\t\tdata-surface={resolvedSurface}\n\t\t\tclassName={cn(\n\t\t\t\tSURFACE_CLASSES[resolvedSurface],\n\t\t\t\ttokens.shell,\n\t\t\t\tvertical,\n\t\t\t\t// One header-to-body rhythm for every surface: a flat, uninset card keeps\n\t\t\t\t// the framed card's step instead of tightening to a row gap above lists.\n\t\t\t\tgapRecipe({ gap: gap ?? 'xl' }),\n\t\t\t\tsharedHeaderFooterDivider && 'gap-0',\n\t\t\t\tframedHeader && 'rounded-radius bg-muted p-surface-xs pt-0 gap-0 ring-0',\n\t\t\t\t// Flat subject structure has no surface edge to clip against.\n\t\t\t\t// With no inset, rounded clipping otherwise cuts into its heading.\n\t\t\t\tresolvedSurface === 'flat' && !framedHeader && 'overflow-visible',\n\t\t\t\t// The toggle straddles the card edge. Keep tokenized clearance\n\t\t\t\t// inside the card and reserve its outside half in document flow.\n\t\t\t\t// `overflow-visible` counters the shadcn primitive's clipping.\n\t\t\t\tisExpandable && cn(\n\t\t\t\t\t'relative mb-space-xl !overflow-visible',\n\t\t\t\t\ttokens.expandableBottom,\n\t\t\t\t),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{!!hasHeader && (\n\t\t\t\t<SmartCardHeaderRow\n\t\t\t\t\ticon={icon}\n\t\t\t\t\ttitle={title}\n\t\t\t\t\ttitleSuffix={titleSuffix}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\ttextGap={textGap}\n\t\t\t\t\ttooltip={tooltip}\n\t\t\t\t\ttooltipLabel={tooltipLabel}\n\t\t\t\t\theaderStart={headerStart}\n\t\t\t\t\theaderEnd={headerEnd}\n\t\t\t\t\theaderAction={headerAction}\n\t\t\t\t\tactions={cardActions}\n\t\t\t\t\tactionsLabel={resolvedActionsLabel}\n\t\t\t\t\ttitleSize={resolvedTitleSize}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tresolvedHeaderDivider && !sharedHeaderFooterDivider && cn(\n\t\t\t\t\t\t\tsurfaceDividerRecipes.frame.header,\n\t\t\t\t\t\t\ttokens.headerDividerY,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tsharedHeaderFooterDivider && tokens.headerDividerY,\n\t\t\t\t\t\ttokens.headerX,\n\t\t\t\t\t\tframedHeader && 'flex-row items-center min-h-action px-surface-xs py-space-2xs [&_.card--title-row]:items-center [&_.card--icon]:pt-0',\n\t\t\t\t\t\theaderClassName,\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t<div className={framedHeader ? cn('card--body-surface flex min-w-0 flex-col rounded-inner bg-card text-card-foreground', gapRecipe({ gap: gap ?? 'xl' }), surfaceDividerRecipes.frame.shell, vertical) : 'contents'}>\n\t\t\t{!!hasAlert && (\n\t\t\t\t<SmartCardAlert\n\t\t\t\t\talert={alert}\n\t\t\t\t\talertTone={alertTone}\n\t\t\t\t\thasHeader={hasHeader}\n\t\t\t\t\tclassName={inset}\n\t\t\t\t/>\n\t\t\t)}\n\n\t\t\t{!!hasBody && <CardContent\n\t\t\t\tclassName={cn(\n\t\t\t\t\ttokens.contentX,\n\t\t\t\t\ttokens.contentY,\n\t\t\t\t\tisExpandable &&\n\t\t\t\t\t\t'relative overflow-hidden transition-[max-height] duration-500 ease-in-out',\n\t\t\t\t\tcontentClassName,\n\t\t\t\t)}\n\t\t\t\tstyle={collapseStyle}\n\t\t\t>\n\t\t\t\t{hasContentTop || hasContentBottom ? (\n\t\t\t\t\t// contentTop/contentBottom are body regions, so they share the content gap with children.\n\t\t\t\t\t<Stack gap={contentGap ?? 'lg'}>\n\t\t\t\t\t\t{!!hasContentTop && contentTop}\n\t\t\t\t\t\t{contentGap ? <Stack gap={contentGap}>{children}</Stack> : <div className=\"min-w-0\">{children}</div>}\n\t\t\t\t\t\t{!!hasContentBottom && contentBottom}\n\t\t\t\t\t</Stack>\n\t\t\t\t) : contentGap ? <Stack gap={contentGap}>{children}</Stack> : children}\n\n\t\t\t\t{!!isExpandable && !expanded && (\n\t\t\t\t\t<div\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tCARD_BEM.collapseFade,\n\t\t\t\t\t\t\t'pointer-events-none absolute inset-x-0 bottom-0 h-20 rounded-b-radius bg-linear-to-t to-transparent',\n\t\t\t\t\t\t\tresolvedSurface === 'flat' ? 'from-background' : 'from-card',\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</CardContent>}\n\n\t\t\t{(hasFooterText || hasFooterSlot) && (\n\t\t\t\t<CardFooter className={cn(\n\t\t\t\t\ttokens.footerX,\n\t\t\t\t\thasFooterSlot ? 'flex-col items-stretch gap-space-md' : 'justify-end',\n\t\t\t\t\t(footerDivider || sharedHeaderFooterDivider) && cn(surfaceDividerRecipes.frame.footer, tokens.footerDividerY),\n\t\t\t\t\tfooterClassName,\n\t\t\t\t)}>\n\t\t\t\t\t{hasFooterText && (typeof footerText === 'string' || typeof footerText === 'number' || typeof footerText === 'bigint'\n\t\t\t\t\t\t? <Text tag=\"span\" size=\"xs\" type=\"secondary\">{footerText}</Text>\n\t\t\t\t\t\t: footerText)}\n\t\t\t\t\t{hasFooterSlot && footerSlot}\n\t\t\t\t</CardFooter>\n\t\t\t)}\n\n\t\t\t</div>\n\n\t\t\t{!!isExpandable && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\tCARD_BEM.expandToggle,\n\t\t\t\t\t\t'absolute bottom-0 left-1/2 z-10 -translate-x-1/2 translate-y-1/2',\n\t\t\t\t\t)}\n\t\t\t\t>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tbuttonStyle=\"outline\"\n\t\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\t\taria-expanded={expanded}\n\t\t\t\t\t\taria-label={expanded ? strings.collapseLabel : strings.expandLabel}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\tCARD_BEM.expandToggleButton,\n\t\t\t\t\t\t\tcn(surfaceDividerRecipes.frame.shell, 'bg-background text-foreground shadow-sm'),\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<ChevronDown\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t`size-icon ${motionRecipes.chevron}`,\n\t\t\t\t\t\t\t\texpanded && 'rotate-180',\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</CardShell>\n\t);\n});\n\nCard.displayName = 'Card';\n\n/** @deprecated Use Card. */\nexport const SmartCard = Card;\n\n// ──────────────────────────────────────────────────────────────────────────\n// Re-exports — public surface lives here so `import { ... } from\n// '.'` keeps working through the file split.\n// ──────────────────────────────────────────────────────────────────────────\n\nexport {\n\tdefaultSmartCardStrings,\n\ttype SmartCardStrings,\n} from './smart-card.strings';\nexport type {\n\tCardAlertTone,\n\tSmartCardAction,\n\tSmartCardProps,\n\tSmartCardSkeletonProps,\n\tSmartCardSurface,\n} from './smart-card.types';\nexport {\n\tCardContent,\n\tCardDescription,\n\tCardFooter,\n\tCardHeader,\n\tCardShell,\n\tCardTitle,\n} from './partials/card-primitives';\nexport { hasRenderableContent } from './partials/has-renderable-content';\nexport { SmartCardSkeleton } from './partials/smart-card-skeleton';\n"],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- "use client";
2
- import { f as e } from "./ui-provider-1D_NSYzO.js";
3
- import { useStrings as t } from "./lib/strings.js";
4
- import { t as n } from "./utils-l5LpDw2z.js";
5
- import { s as r } from "./typography-DTRkE9zL.js";
6
- import { t as i } from "./structure-DC2dygdA.js";
7
- import { n as a } from "./track-recipes-CDcKmndW.js";
8
- import { forwardRef as o } from "react";
9
- import { jsx as s, jsxs as c } from "react/jsx-runtime";
10
- //#region src/components/base/spinner/spinner.tsx
11
- var l = { loading: "Loading" }, u = o(function({ label: a, className: o = "", variant: u, strings: m, style: h }, g) {
12
- let { defaultVariant: _ } = e(), v = t(l, m), y = u ?? _ ?? "default";
13
- return /* @__PURE__ */ s("div", {
14
- ref: g,
15
- role: y === "progress" ? void 0 : "status",
16
- "aria-label": y === "progress" || a ? void 0 : v.loading,
17
- className: n("spinner--component", "flex items-center justify-center p-surface"),
18
- style: h,
19
- children: /* @__PURE__ */ c(i, {
20
- gap: "md",
21
- align: "center",
22
- justify: "center",
23
- className: "w-full text-center",
24
- children: [
25
- y === "default" && /* @__PURE__ */ s(d, { className: o }),
26
- y === "shimmer" && /* @__PURE__ */ s(f, { className: o }),
27
- y === "progress" && /* @__PURE__ */ s(p, {
28
- className: o,
29
- label: a ?? v.loading
30
- }),
31
- !!a && /* @__PURE__ */ s(r, {
32
- type: "secondary",
33
- children: a
34
- })
35
- ]
36
- })
37
- });
38
- });
39
- u.displayName = "Spinner";
40
- function d({ className: e = "" }) {
41
- return /* @__PURE__ */ c("svg", {
42
- className: n("h-10 w-10 text-primary-accent", e),
43
- fill: "currentColor",
44
- viewBox: "0 0 24 24",
45
- xmlns: "http://www.w3.org/2000/svg",
46
- "aria-hidden": "true",
47
- children: [/* @__PURE__ */ s("path", {
48
- d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z",
49
- opacity: ".25"
50
- }), /* @__PURE__ */ s("path", {
51
- d: "M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z",
52
- children: /* @__PURE__ */ s("animateTransform", {
53
- attributeName: "transform",
54
- type: "rotate",
55
- dur: "0.75s",
56
- values: "0 12 12;360 12 12",
57
- repeatCount: "indefinite"
58
- })
59
- })]
60
- });
61
- }
62
- function f({ className: e = "" }) {
63
- return /* @__PURE__ */ s("div", {
64
- className: n("h-10 w-10 rounded-full bg-gradient-to-r from-muted via-muted-foreground/30 to-muted bg-[length:200%_100%]", "animate-[shimmer_1.5s_ease-in-out_infinite]", e),
65
- "aria-hidden": "true"
66
- });
67
- }
68
- function p({ className: e = "", label: t }) {
69
- return /* @__PURE__ */ s("div", {
70
- className: n("w-full max-w-32 overflow-hidden rounded-full bg-muted", a.md, e),
71
- role: "progressbar",
72
- "aria-label": t,
73
- "aria-busy": "true",
74
- children: /* @__PURE__ */ s("div", { className: "h-full w-1/3 animate-[progress-slide_1.4s_ease-in-out_infinite] rounded-full bg-primary" })
75
- });
76
- }
77
- //#endregion
78
- export { l as n, u as t };
79
-
80
- //# sourceMappingURL=spinner-fa3h1Aif.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spinner-fa3h1Aif.js","names":["useSpinnerConfig","cn","Text","Stack","trackHeightClasses","defaultSpinnerStrings","Spinner","forwardRef","variantProp","stringsProp","strings","useStrings","variant","defaultVariant","label","SpinnerDefault","SpinnerShimmer","SpinnerProgress","className"],"sources":["../src/components/base/spinner/spinner.tsx"],"sourcesContent":["import { trackHeightClasses } from '../../../lib/track-recipes';\n/**\n * Spinner — three-variant loading indicator with optional label.\n *\n * Variants:\n * - `default` — circular SVG spinner\n * - `shimmer` — round shimmer bar\n * - `progress` — slim animated progress strip\n *\n * `variant` resolves via `useSpinnerConfig().defaultVariant ?? 'default'`,\n * so a consumer can set the library-wide spinner style at the\n * `<UIProvider>` root and override per-mount as needed. Forwards a ref to\n * the outer wrapper so consumers can position/measure the spinner.\n */\nimport { forwardRef, type CSSProperties } from 'react';\n\nimport { Text } from '../../typography';\nimport { Stack } from '../structure';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { useSpinnerConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nexport type SpinnerVariant = 'default' | 'shimmer' | 'progress';\n\nexport interface SpinnerStrings {\n\t/** Accessible fallback when an indeterminate progress bar has no visible label. */\n\tloading: string;\n}\n\nexport const defaultSpinnerStrings: SpinnerStrings = {\n\tloading: 'Loading',\n};\n\nexport interface SpinnerProps {\n\t/** Visible label under the indicator; also its accessible name. */\n\tlabel?: string;\n\t/** Merged onto the indicator graphic (size, colour), not the padded wrapper. */\n\tclassName?: string;\n\t/** Indicator style: circular `default`, `shimmer`, or `progress` strip. Defaults to `UIProvider.spinner.defaultVariant`, then `default`. */\n\tvariant?: SpinnerVariant;\n\t/** Localizes the fallback progress-bar name. */\n\tstrings?: StringsProp<SpinnerStrings>;\n\tstyle?: CSSProperties;\n}\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(\n\t{ label, className = '', variant: variantProp, strings: stringsProp, style },\n\tref,\n) {\n\tconst { defaultVariant } = useSpinnerConfig();\n\tconst strings = useStrings(defaultSpinnerStrings, stringsProp);\n\tconst variant: SpinnerVariant = variantProp ?? defaultVariant ?? 'default';\n\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\t// The progress strip names itself as a progressbar; the other indicators\n\t\t\t// are announced as a polite status named by the label or loading copy.\n\t\t\trole={variant === 'progress' ? undefined : 'status'}\n\t\t\taria-label={variant === 'progress' || label ? undefined : strings.loading}\n\t\t\tclassName={cn('spinner--component', 'flex items-center justify-center p-surface')}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t<Stack gap=\"md\" align=\"center\" justify=\"center\" className=\"w-full text-center\">\n\t\t\t\t{variant === 'default' && <SpinnerDefault className={className} />}\n\t\t\t\t{variant === 'shimmer' && <SpinnerShimmer className={className} />}\n\t\t\t\t{variant === 'progress' && <SpinnerProgress className={className} label={label ?? strings.loading} />}\n\t\t\t\t{!!label && <Text type=\"secondary\">{label}</Text>}\n\t\t\t</Stack>\n\t\t</div>\n\t);\n});\n\nSpinner.displayName = 'Spinner';\n\nfunction SpinnerDefault({ className = '' }: { className?: string }) {\n\treturn (\n\t\t<svg\n\t\t\tclassName={cn('h-10 w-10 text-primary-accent', className)}\n\t\t\tfill=\"currentColor\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<path\n\t\t\t\td=\"M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z\"\n\t\t\t\topacity=\".25\"\n\t\t\t/>\n\t\t\t<path d=\"M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z\">\n\t\t\t\t<animateTransform\n\t\t\t\t\tattributeName=\"transform\"\n\t\t\t\t\ttype=\"rotate\"\n\t\t\t\t\tdur=\"0.75s\"\n\t\t\t\t\tvalues=\"0 12 12;360 12 12\"\n\t\t\t\t\trepeatCount=\"indefinite\"\n\t\t\t\t/>\n\t\t\t</path>\n\t\t</svg>\n\t);\n}\n\nfunction SpinnerShimmer({ className = '' }: { className?: string }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t'h-10 w-10 rounded-full bg-gradient-to-r from-muted via-muted-foreground/30 to-muted bg-[length:200%_100%]',\n\t\t\t\t'animate-[shimmer_1.5s_ease-in-out_infinite]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\taria-hidden=\"true\"\n\t\t/>\n\t);\n}\n\nfunction SpinnerProgress({ className = '', label }: { className?: string; label: string }) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn('w-full max-w-32 overflow-hidden rounded-full bg-muted', trackHeightClasses.md, className)}\n\t\t\trole=\"progressbar\"\n\t\t\taria-label={label}\n\t\t\taria-busy=\"true\"\n\t\t>\n\t\t\t<div className=\"h-full w-1/3 animate-[progress-slide_1.4s_ease-in-out_infinite] rounded-full bg-primary\" />\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;;;;AA6BA,IAAaK,IAAwC,EACpD,SAAS,UACV,GAcaC,IAAUC,EAAyC,SAC/D,EAAE,UAAO,eAAY,IAAI,SAASC,GAAa,SAASC,GAAa,YACrE,GACC;CACD,IAAM,EAAE,sBAAmBT,EAAiB,GACtCU,IAAUC,EAAWN,GAAuBI,CAAW,GACvDG,IAA0BJ,KAAeK,KAAkB;CAEjE,OACC,kBAAC,OAAD;EACM;EAGL,MAAMD,MAAY,aAAa,KAAA,IAAY;EAC3C,cAAYA,MAAY,cAAcE,IAAQ,KAAA,IAAYJ,EAAQ;EAClE,WAAWT,EAAG,sBAAsB,4CAA4C;EACzE;EAEP,UAAA,kBAACE,GAAD;GAAO,KAAI;GAAK,OAAM;GAAS,SAAQ;GAAS,WAAU;GAA1D,UAAA;IACES,MAAY,aAAa,kBAACG,GAAD,EAA2B,aAAY,CAAA;IAChEH,MAAY,aAAa,kBAACI,GAAD,EAA2B,aAAY,CAAA;IAChEJ,MAAY,cAAc,kBAACK,GAAD;KAA4B;KAAW,OAAOH,KAASJ,EAAQ;IAAU,CAAA;IACnG,CAAC,CAACI,KAAS,kBAACZ,GAAD;KAAM,MAAK;KAAa,UAAAY;IAAY,CAAA;GAC1C;;CACH,CAAA;AAEP,CAAC;AAED,EAAQ,cAAc;AAEtB,SAASC,EAAe,EAAE,eAAY,MAA8B;CACnE,OACC,kBAAC,OAAD;EACC,WAAWd,EAAG,iCAAiCiB,CAAS;EACxD,MAAK;EACL,SAAQ;EACR,OAAM;EACN,eAAY;EALb,UAAA,CAOC,kBAAC,QAAD;GACC,GAAE;GACF,SAAQ;EACR,CAAA,GACD,kBAAC,QAAD;GAAM,GAAE;GACP,UAAA,kBAAC,oBAAD;IACC,eAAc;IACd,MAAK;IACL,KAAI;IACJ,QAAO;IACP,aAAY;GACZ,CAAA;EACI,CAAA,CACF;;AAEP;AAEA,SAASF,EAAe,EAAE,eAAY,MAA8B;CACnE,OACC,kBAAC,OAAD;EACC,WAAWf,EACV,6GACA,+CACAiB,CACD;EACA,eAAY;CACZ,CAAA;AAEH;AAEA,SAASD,EAAgB,EAAE,eAAY,IAAI,YAAgD;CAC1F,OACC,kBAAC,OAAD;EACC,WAAWhB,EAAG,yDAAyDG,EAAmB,IAAIc,CAAS;EACvG,MAAK;EACL,cAAYJ;EACZ,aAAU;EAEV,UAAA,kBAAC,OAAD,EAAK,WAAU,0FAA2F,CAAA;CACtG,CAAA;AAEP"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-CIKyLUsy.js","names":["Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","React","UITable","UITableHeader","UITableBody","UITableFooter","UITableRow","UITableHead","UITableCell","UITableCaption","cn","DisplayLabel","Text","focusRecipes","React$1","Table$1","props","containerProps","containerClassName","className","TableHeader$1","TableBody$1","TableFooter$1","TableRow$1","TableHead$1","TableCell$1","TableCaption$1","isSimpleText","value","useHorizontalOverflow","overflowing","setOverflowing","observerRef","node","measure","observer","Table","overflowRef","consumerRef","containerRef","TableHeader","TableBody","TableFooter","TableRow","TableHead","children","TableCell","TableCaption"],"sources":["../src/components/ui/table.tsx","../src/components/base/table/index.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\ntype TableProps = React.ComponentProps<\"table\"> & {\n containerClassName?: string\n containerProps?: React.ComponentProps<\"div\">\n}\n\nfunction Table({ className, containerClassName, containerProps, ...props }: TableProps) {\n return (\n <div\n {...containerProps}\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", containerClassName, containerProps?.className)}\n >\n <table\n data-slot=\"table\"\n // The package ships no preflight: collapsed borders are what make the\n // row rules visible and remove the native cell spacing in any host.\n className={cn(\"w-full caption-bottom border-collapse text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"border-border [&_tr]:border-b [&_tr]:border-border\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"border-border bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"border-border hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\", className)}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\"text-foreground h-10 px-2 text-start align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pe-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-space-xl text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react';\n\nimport {\n\tTable as UITable,\n\tTableBody as UITableBody,\n\tTableCaption as UITableCaption,\n\tTableCell as UITableCell,\n\tTableFooter as UITableFooter,\n\tTableHead as UITableHead,\n\tTableHeader as UITableHeader,\n\tTableRow as UITableRow,\n} from '../../ui/table';\nimport { DisplayLabel, Text } from '../../typography';\nimport { cn } from '../../../lib/utils';\nimport { focusRecipes } from '../../../lib/focus-recipes';\n\nexport type TableProps = React.ComponentProps<typeof UITable>;\nexport type TableHeaderProps = React.ComponentProps<typeof UITableHeader>;\nexport type TableBodyProps = React.ComponentProps<typeof UITableBody>;\nexport type TableFooterProps = React.ComponentProps<typeof UITableFooter>;\nexport type TableRowProps = React.ComponentProps<typeof UITableRow>;\nexport type TableHeadProps = React.ComponentProps<typeof UITableHead>;\nexport type TableCellProps = React.ComponentProps<typeof UITableCell>;\nexport type TableCaptionProps = React.ComponentProps<typeof UITableCaption>;\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/**\n * The scroll container joins the Tab order only while the table actually\n * overflows, so keyboard users can scroll a wide table without every table\n * on a page adding an empty tab stop. An explicit `containerProps.tabIndex` wins.\n */\nfunction useHorizontalOverflow() {\n\tconst [overflowing, setOverflowing] = React.useState(true);\n\tconst observerRef = React.useRef<ResizeObserver | null>(null);\n\tconst ref = React.useCallback((node: HTMLDivElement | null) => {\n\t\tobserverRef.current?.disconnect();\n\t\tobserverRef.current = null;\n\t\tif (!node || typeof ResizeObserver === 'undefined') return;\n\t\tconst measure = () => setOverflowing(node.scrollWidth > node.clientWidth + 1);\n\t\tconst observer = new ResizeObserver(measure);\n\t\tobserver.observe(node);\n\t\tif (node.firstElementChild) observer.observe(node.firstElementChild);\n\t\tobserverRef.current = observer;\n\t\tmeasure();\n\t}, []);\n\treturn { ref, overflowing };\n}\n\nexport function Table({ className, containerClassName, containerProps, ...props }: TableProps) {\n\tconst { ref: overflowRef, overflowing } = useHorizontalOverflow();\n\tconst consumerRef = containerProps?.ref;\n\tconst containerRef = React.useCallback((node: HTMLDivElement | null) => {\n\t\toverflowRef(node);\n\t\tif (typeof consumerRef === 'function') consumerRef(node);\n\t\telse if (consumerRef) (consumerRef as React.RefObject<HTMLDivElement | null>).current = node;\n\t}, [overflowRef, consumerRef]);\n\treturn (\n\t\t\t<UITable\n\t\t\t\tcontainerProps={{ tabIndex: overflowing ? 0 : undefined, ...containerProps, ref: containerRef }}\n\t\t\t\tcontainerClassName={cn(\n\t\t\t\t`table--container relative w-full overflow-x-auto focus-visible:outline-none ${focusRecipes.edge}`,\n\t\t\t\tcontainerClassName,\n\t\t\t)}\n\t\t\t\tclassName={cn('table--component font-sans text-sm', className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t);\n}\n\nexport function TableHeader({ className, ...props }: TableHeaderProps) {\n\treturn (\n\t\t<UITableHeader\n\t\t\t// Header rows label columns; they do not take the body's hover tint.\n\t\t\tclassName={cn('table--header [&_tr]:border-border [&_tr]:hover:bg-transparent', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function TableBody({ className, ...props }: TableBodyProps) {\n\treturn (\n\t\t<UITableBody\n\t\t\tclassName={cn('table--body', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function TableFooter({ className, ...props }: TableFooterProps) {\n\treturn (\n\t\t<UITableFooter\n\t\t\tclassName={cn('table--footer border-border', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function TableRow({ className, ...props }: TableRowProps) {\n\treturn (\n\t\t<UITableRow\n\t\t\tclassName={cn('table--row border-border', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport function TableHead({ className, children, ...props }: TableHeadProps) {\n\treturn (\n\t\t<UITableHead\n\t\t\tclassName={cn('table--head h-12 px-row-x py-row-y-lg text-sm', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<DisplayLabel tag=\"span\" className=\"table--head-text\">\n\t\t\t\t\t{children}\n\t\t\t\t</DisplayLabel>\n\t\t\t) : children}\n\t\t</UITableHead>\n\t);\n}\n\nexport function TableCell({ className, children, ...props }: TableCellProps) {\n\treturn (\n\t\t<UITableCell\n\t\t\tclassName={cn('table--cell px-row-x py-row-y text-sm', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" className=\"table--cell-text text-inherit\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</UITableCell>\n\t);\n}\n\nexport function TableCaption({ className, children, ...props }: TableCaptionProps) {\n\treturn (\n\t\t<UITableCaption\n\t\t\tclassName={cn('table--caption', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" size=\"inherit\" type=\"secondary\" className=\"table--caption-text\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</UITableCaption>\n\t);\n}\n"],"mappings":"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"}