themelia-react-ui 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/CHANGELOG.md +190 -1
  2. package/README.md +92 -13
  3. package/dist/{accordion-BRWh3BM1.js → accordion-BRTcsp8J.js} +8 -8
  4. package/dist/accordion-BRTcsp8J.js.map +1 -0
  5. package/dist/{action-menu-Cx3SdfbN.js → action-menu-Drxw_vJk.js} +36 -36
  6. package/dist/action-menu-Drxw_vJk.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CL84ZN9A.js +63 -0
  8. package/dist/affordance-geometry.generated-CL84ZN9A.js.map +1 -0
  9. package/dist/{ai-artifact-DkOArd3-.js → ai-artifact-DLVdK0Py.js} +151 -155
  10. package/dist/ai-artifact-DLVdK0Py.js.map +1 -0
  11. package/dist/{app-shell-BH_bGcE2.js → app-shell-C_fKpljx.js} +11 -10
  12. package/dist/app-shell-C_fKpljx.js.map +1 -0
  13. package/dist/{attachment-DsLgNHXt.js → attachment-DbjUWsP0.js} +12 -12
  14. package/dist/{attachment-DsLgNHXt.js.map → attachment-DbjUWsP0.js.map} +1 -1
  15. package/dist/auth-CAQcasMV.js +723 -0
  16. package/dist/auth-CAQcasMV.js.map +1 -0
  17. package/dist/{avatar-CsnWaYmt.js → avatar-Bu2HhitA.js} +76 -71
  18. package/dist/avatar-Bu2HhitA.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-CzId1Wlm.js} +4 -4
  20. package/dist/{badge-BZXZT9wd.js.map → badge-CzId1Wlm.js.map} +1 -1
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +25 -27
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +150 -148
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +3 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -3
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +233 -0
  44. package/dist/base/inline-edit.js.map +1 -0
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +1 -1
  51. package/dist/base/repeaters.js +33 -33
  52. package/dist/base/repeaters.js.map +1 -1
  53. package/dist/base/sheet.js +1 -1
  54. package/dist/base/sidebar.js +1 -1
  55. package/dist/base/signature-pad.js +83 -81
  56. package/dist/base/signature-pad.js.map +1 -1
  57. package/dist/base/skeleton.js +1 -1
  58. package/dist/base/spinner.js +1 -1
  59. package/dist/base/structure.js +1 -1
  60. package/dist/base/table.js +1 -1
  61. package/dist/base/text-inputs.js +2 -2
  62. package/dist/base/toaster.js +6 -6
  63. package/dist/base/toaster.js.map +1 -1
  64. package/dist/base/tree.js +1 -1
  65. package/dist/base/upload-queue.js +1 -1
  66. package/dist/base/upload.js +3 -3
  67. package/dist/base/value-inputs.js +1 -1
  68. package/dist/blocks/admin.js +134 -134
  69. package/dist/blocks/admin.js.map +1 -1
  70. package/dist/blocks/ai.js +120 -117
  71. package/dist/blocks/ai.js.map +1 -1
  72. package/dist/blocks/analytics/usage-card.js +3 -0
  73. package/dist/blocks/analytics.js +530 -491
  74. package/dist/blocks/analytics.js.map +1 -1
  75. package/dist/blocks/collaboration.js +2 -2
  76. package/dist/blocks/commerce/receipt.js +1 -1
  77. package/dist/blocks/commerce.js +395 -383
  78. package/dist/blocks/commerce.js.map +1 -1
  79. package/dist/blocks/data-display.js +1 -1
  80. package/dist/blocks/onboarding.js +6 -6
  81. package/dist/blocks/onboarding.js.map +1 -1
  82. package/dist/blocks/planning.js +311 -0
  83. package/dist/blocks/planning.js.map +1 -0
  84. package/dist/blocks/timelines.js +1 -1
  85. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BuYz5SDU.js} +9 -8
  86. package/dist/breadcrumbs-BuYz5SDU.js.map +1 -0
  87. package/dist/button-BZDasD04.js +651 -0
  88. package/dist/button-BZDasD04.js.map +1 -0
  89. package/dist/{button-BS6l5JUw.js → button-BZyfTvwm.js} +3 -3
  90. package/dist/button-BZyfTvwm.js.map +1 -0
  91. package/dist/buttons-D_6KJvEE.js +99 -0
  92. package/dist/buttons-D_6KJvEE.js.map +1 -0
  93. package/dist/{cards-BMB0laLG.js → cards-qGSErLw_.js} +12 -12
  94. package/dist/{cards-BMB0laLG.js.map → cards-qGSErLw_.js.map} +1 -1
  95. package/dist/chart-Bsc5BICK.js +150 -0
  96. package/dist/chart-Bsc5BICK.js.map +1 -0
  97. package/dist/checkbox-BQNDjUCh.js +34 -0
  98. package/dist/checkbox-BQNDjUCh.js.map +1 -0
  99. package/dist/choice-inputs-Mk3iWbhr.js +725 -0
  100. package/dist/choice-inputs-Mk3iWbhr.js.map +1 -0
  101. package/dist/{code-block-DIlqzoiD.js → code-block-DzHKRybS.js} +23 -23
  102. package/dist/code-block-DzHKRybS.js.map +1 -0
  103. package/dist/{collapsible-DsnktFNv.js → collapsible-ClvC7Bj3.js} +3 -3
  104. package/dist/{collapsible-DsnktFNv.js.map → collapsible-ClvC7Bj3.js.map} +1 -1
  105. package/dist/{collection-content-C4fthJV_.js → collection-content-D6S8cv_n.js} +3 -3
  106. package/dist/{collection-content-C4fthJV_.js.map → collection-content-D6S8cv_n.js.map} +1 -1
  107. package/dist/{combobox-HDftpzxt.js → combobox-BFnbJJp3.js} +18 -18
  108. package/dist/combobox-BFnbJJp3.js.map +1 -0
  109. package/dist/{combobox-CHD750do.js → combobox-hozNwUcc.js} +313 -316
  110. package/dist/combobox-hozNwUcc.js.map +1 -0
  111. package/dist/{command-D0kWBZfd.js → command-BnmSchli.js} +9 -9
  112. package/dist/command-BnmSchli.js.map +1 -0
  113. package/dist/comments-u5L0OGip.js +1156 -0
  114. package/dist/comments-u5L0OGip.js.map +1 -0
  115. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  116. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  117. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  118. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  119. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  120. package/dist/components/base/cards/smart-card.types.d.ts +3 -1
  121. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  122. package/dist/components/base/date-pickers/datepicker.types.d.ts +3 -0
  123. package/dist/components/base/forms/form-field.d.ts +1 -0
  124. package/dist/components/base/forms/form-sizing.d.ts +3 -3
  125. package/dist/components/base/inline-edit/index.d.ts +2 -0
  126. package/dist/components/base/inline-edit/inline-edit.d.ts +81 -0
  127. package/dist/components/base/inline-edit/inline-edit.recipes.d.ts +6 -0
  128. package/dist/components/base/navigation/tabs.d.ts +3 -5
  129. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  130. package/dist/components/base/structure/structure.recipes.d.ts +6 -0
  131. package/dist/components/base/table/index.d.ts +1 -1
  132. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  133. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  134. package/dist/components/blocks/analytics/index.d.ts +1 -0
  135. package/dist/components/blocks/analytics/types.d.ts +1 -1
  136. package/dist/components/blocks/analytics/usage-card/index.d.ts +3 -0
  137. package/dist/components/blocks/analytics/usage-card/types.d.ts +52 -0
  138. package/dist/components/blocks/analytics/usage-card/usage-card.d.ts +6 -0
  139. package/dist/components/blocks/analytics/usage-card/usage-card.data.d.ts +19 -0
  140. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +22 -0
  141. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  142. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  143. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  144. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  145. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  146. package/dist/components/blocks/planning/index.d.ts +3 -0
  147. package/dist/components/blocks/planning/task-card.d.ts +3 -0
  148. package/dist/components/blocks/planning/task-card.strings.d.ts +15 -0
  149. package/dist/components/blocks/planning/task-card.types.d.ts +66 -0
  150. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  151. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  152. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  153. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  154. package/dist/components/features/media-library/media-library.d.ts +1 -1
  155. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  156. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  157. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  158. package/dist/components/features/overlays/overlays.types.d.ts +5 -4
  159. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  160. package/dist/components/features/table/data-table.d.ts +1 -1
  161. package/dist/components/features/table/table.types.d.ts +1 -1
  162. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  163. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  164. package/dist/components/layout/page/page.d.ts +0 -1
  165. package/dist/components/layout/page/page.types.d.ts +9 -3
  166. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  167. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  168. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  169. package/dist/components/typography/heading.d.ts +5 -2
  170. package/dist/components/typography/index.d.ts +1 -1
  171. package/dist/components/typography/text.styles.d.ts +10 -0
  172. package/dist/components/ui/popover.d.ts +1 -1
  173. package/dist/components/ui/sidebar.d.ts +1 -1
  174. package/dist/components/ui/table.d.ts +2 -1
  175. package/dist/container.recipes-D9t8MHR3.js +27 -0
  176. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  177. package/dist/{containers-CPNyNo1_.js → containers-DqB-bSYE.js} +34 -56
  178. package/dist/containers-DqB-bSYE.js.map +1 -0
  179. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  180. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  181. package/dist/{copyable-B7SBXJMr.js → copyable-BTSByfmq.js} +6 -6
  182. package/dist/{copyable-B7SBXJMr.js.map → copyable-BTSByfmq.js.map} +1 -1
  183. package/dist/{data-display-b3d1TfL4.js → data-display-Bihs9Ven.js} +542 -329
  184. package/dist/data-display-Bihs9Ven.js.map +1 -0
  185. package/dist/{date-BFNMnrS5.js → date-DOKhJPu7.js} +4 -4
  186. package/dist/{date-BFNMnrS5.js.map → date-DOKhJPu7.js.map} +1 -1
  187. package/dist/{date-picker-DI6kPNof.js → date-picker-DzP5HQq7.js} +492 -472
  188. package/dist/date-picker-DzP5HQq7.js.map +1 -0
  189. package/dist/date-pickers-BpgGz7S-.js +196 -0
  190. package/dist/date-pickers-BpgGz7S-.js.map +1 -0
  191. package/dist/{display-ByI5tkqy.js → display-CS6Hbk18.js} +8 -8
  192. package/dist/{display-ByI5tkqy.js.map → display-CS6Hbk18.js.map} +1 -1
  193. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-D-boNgGO.js} +7 -7
  194. package/dist/{dropdown-menu-BlnyHr-9.js.map → dropdown-menu-D-boNgGO.js.map} +1 -1
  195. package/dist/features/activities.js +152 -141
  196. package/dist/features/activities.js.map +1 -1
  197. package/dist/features/ai-chat.js +182 -179
  198. package/dist/features/ai-chat.js.map +1 -1
  199. package/dist/features/async-preview.js +9 -9
  200. package/dist/features/async-preview.js.map +1 -1
  201. package/dist/features/combobox.js +1 -1
  202. package/dist/features/comments.js +1 -1
  203. package/dist/features/data-view.js +25 -23
  204. package/dist/features/data-view.js.map +1 -1
  205. package/dist/features/email-composer/engine.js +1 -1
  206. package/dist/features/email-composer.js +103 -104
  207. package/dist/features/email-composer.js.map +1 -1
  208. package/dist/features/event-calendar.js +375 -373
  209. package/dist/features/event-calendar.js.map +1 -1
  210. package/dist/features/filters.js +1 -1
  211. package/dist/features/global-search.js +222 -224
  212. package/dist/features/global-search.js.map +1 -1
  213. package/dist/features/kanban.js +29 -29
  214. package/dist/features/kanban.js.map +1 -1
  215. package/dist/features/map.js +59 -58
  216. package/dist/features/map.js.map +1 -1
  217. package/dist/features/media-library.js +856 -855
  218. package/dist/features/media-library.js.map +1 -1
  219. package/dist/features/mentions.js +1 -1
  220. package/dist/features/overlays.js +1 -1
  221. package/dist/features/products.js +1210 -1209
  222. package/dist/features/products.js.map +1 -1
  223. package/dist/features/questionnaire.js +133 -132
  224. package/dist/features/questionnaire.js.map +1 -1
  225. package/dist/features/resource-assignment.js +29 -31
  226. package/dist/features/resource-assignment.js.map +1 -1
  227. package/dist/features/resource.js +13 -13
  228. package/dist/features/resource.js.map +1 -1
  229. package/dist/features/rich-text-editor.js +2 -2
  230. package/dist/features/schema-form.js +82 -82
  231. package/dist/features/schema-form.js.map +1 -1
  232. package/dist/features/suggestions.js +3 -3
  233. package/dist/features/sync.js +4 -4
  234. package/dist/features/sync.js.map +1 -1
  235. package/dist/features/table.js +1 -1
  236. package/dist/features/theme-tweaker.js +456 -450
  237. package/dist/features/theme-tweaker.js.map +1 -1
  238. package/dist/feedback-CJkUAapr.js +233 -0
  239. package/dist/feedback-CJkUAapr.js.map +1 -0
  240. package/dist/field-affordance-recipes-uKY4MsZ_.js +25 -0
  241. package/dist/field-affordance-recipes-uKY4MsZ_.js.map +1 -0
  242. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-DQQpiLWC.js} +3 -3
  243. package/dist/field-state-recipes-DQQpiLWC.js.map +1 -0
  244. package/dist/{filters-qtrcv1hf.js → filters-D6FF8L6s.js} +715 -720
  245. package/dist/filters-D6FF8L6s.js.map +1 -0
  246. package/dist/{form-field-C6W-y2hR.js → form-field-CZwrkP7m.js} +17 -9
  247. package/dist/form-field-CZwrkP7m.js.map +1 -0
  248. package/dist/{form-sizing-39NohSqn.js → form-sizing-QP8aIRaW.js} +10 -6
  249. package/dist/form-sizing-QP8aIRaW.js.map +1 -0
  250. package/dist/{forms-BF-HSbff.js → forms-B5NCbkSC.js} +35 -35
  251. package/dist/{forms-BF-HSbff.js.map → forms-B5NCbkSC.js.map} +1 -1
  252. package/dist/forms-numeric-Crrm80Lm.js +867 -0
  253. package/dist/forms-numeric-Crrm80Lm.js.map +1 -0
  254. package/dist/{header-B8ex54cY.js → header-kxruN3RM.js} +53 -49
  255. package/dist/header-kxruN3RM.js.map +1 -0
  256. package/dist/{hooks-D6UBVzf2.js → hooks-BrlnCwQd.js} +2 -2
  257. package/dist/{hooks-D6UBVzf2.js.map → hooks-BrlnCwQd.js.map} +1 -1
  258. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  259. package/dist/http-CdEIHyQf.js.map +1 -0
  260. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-Btc6pQrp.js} +4 -4
  261. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-Btc6pQrp.js.map} +1 -1
  262. package/dist/index.js +2 -2
  263. package/dist/input-SX9V0AL3.js +255 -0
  264. package/dist/input-SX9V0AL3.js.map +1 -0
  265. package/dist/input-vxcaNCYC.js +20 -0
  266. package/dist/input-vxcaNCYC.js.map +1 -0
  267. package/dist/{item-pJ0GsOiJ.js → item-DE4YnuJx.js} +18 -17
  268. package/dist/item-DE4YnuJx.js.map +1 -0
  269. package/dist/layout/app-shell.js +1 -1
  270. package/dist/layout/auth.js +1 -1
  271. package/dist/layout/containers.js +1 -1
  272. package/dist/layout/header.js +1 -1
  273. package/dist/layout/hooks.js +1 -1
  274. package/dist/layout/navigation.js +1 -1
  275. package/dist/layout/page.js +1 -1
  276. package/dist/layout/settings.js +1 -1
  277. package/dist/layout/sidebar.js +2 -2
  278. package/dist/layout/workspace.js +1 -1
  279. package/dist/layout.js +10 -10
  280. package/dist/lib/affordance-geometry.generated.d.ts +44 -4
  281. package/dist/lib/control-group-recipes.d.ts +22 -0
  282. package/dist/lib/field-affordance-recipes.d.ts +35 -2
  283. package/dist/lib/field-state-recipes.d.ts +2 -2
  284. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  285. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -1
  286. package/dist/lib/surface-recipes.d.ts +5 -2
  287. package/dist/lib/token-merge.generated.d.ts +144 -2
  288. package/dist/lib/ui-provider/types.d.ts +4 -2
  289. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  290. package/dist/lib/utils.js +1 -1
  291. package/dist/{media-gallery-Ca4YmvBi.js → media-gallery-DLp3HAz0.js} +75 -74
  292. package/dist/media-gallery-DLp3HAz0.js.map +1 -0
  293. package/dist/{mentions-CRio8mTm.js → mentions-Cl0Kt_Pd.js} +52 -50
  294. package/dist/{mentions-CRio8mTm.js.map → mentions-Cl0Kt_Pd.js.map} +1 -1
  295. package/dist/message-SZUNB1eX.js +127 -0
  296. package/dist/message-SZUNB1eX.js.map +1 -0
  297. package/dist/{navigation-BTrEb5u4.js → navigation-DnQSNMT0.js} +64 -55
  298. package/dist/navigation-DnQSNMT0.js.map +1 -0
  299. package/dist/{navigation-DqEITuD2.js → navigation-DyytsLRB.js} +37 -37
  300. package/dist/navigation-DyytsLRB.js.map +1 -0
  301. package/dist/{navigation-row-recipes-BFpvGPGE.js → navigation-row-recipes-DQEXQcqY.js} +3 -3
  302. package/dist/navigation-row-recipes-DQEXQcqY.js.map +1 -0
  303. package/dist/{number-BNT_BIzJ.js → number-DasMFWEG.js} +4 -4
  304. package/dist/{number-BNT_BIzJ.js.map → number-DasMFWEG.js.map} +1 -1
  305. package/dist/overlays-DUbs1KEi.js +1011 -0
  306. package/dist/overlays-DUbs1KEi.js.map +1 -0
  307. package/dist/{page-BMBGjJY8.js → page-hGmT4nWK.js} +75 -64
  308. package/dist/page-hGmT4nWK.js.map +1 -0
  309. package/dist/{page-header-BH41wCyY.js → page-header-D8nERkn5.js} +9 -9
  310. package/dist/page-header-D8nERkn5.js.map +1 -0
  311. package/dist/{pagination-C29vvt3I.js → pagination-NLGqRirf.js} +20 -20
  312. package/dist/pagination-NLGqRirf.js.map +1 -0
  313. package/dist/{popover-TInGXsjg.js → popover-CghIYdQf.js} +23 -22
  314. package/dist/popover-CghIYdQf.js.map +1 -0
  315. package/dist/{popover-menu-BzqXqE72.js → popover-menu-B4PoWhRl.js} +6 -6
  316. package/dist/{popover-menu-BzqXqE72.js.map → popover-menu-B4PoWhRl.js.map} +1 -1
  317. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-QlD4JenO.js} +5 -5
  318. package/dist/popover.recipes-QlD4JenO.js.map +1 -0
  319. package/dist/{primitives-DKPOGVpj.js → primitives-C7ff0QaI.js} +120 -113
  320. package/dist/primitives-C7ff0QaI.js.map +1 -0
  321. package/dist/primitives.js +3 -3
  322. package/dist/progress-BroqrAyV.js +169 -0
  323. package/dist/progress-BroqrAyV.js.map +1 -0
  324. package/dist/{receipt-DYWTQGEc.js → receipt-BuJynLgf.js} +8 -8
  325. package/dist/{receipt-DYWTQGEc.js.map → receipt-BuJynLgf.js.map} +1 -1
  326. package/dist/{rich-text-B7sBAdDG.js → rich-text-DlxDOtf4.js} +4 -4
  327. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-DlxDOtf4.js.map} +1 -1
  328. package/dist/rich-text-editor-BKyG7rWz.js +574 -0
  329. package/dist/rich-text-editor-BKyG7rWz.js.map +1 -0
  330. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-B72Nfuze.js} +35 -26
  331. package/dist/rich-text-editor.recipes-B72Nfuze.js.map +1 -0
  332. package/dist/{scroll-area-BheMQ270.js → scroll-area-D-pIhEKl.js} +3 -3
  333. package/dist/scroll-area-D-pIhEKl.js.map +1 -0
  334. package/dist/{separator-Gk_WXH-l.js → separator-BNIgG3au.js} +3 -3
  335. package/dist/{separator-Gk_WXH-l.js.map → separator-BNIgG3au.js.map} +1 -1
  336. package/dist/{separator-DO0EbCEm.js → separator-BhtFyo4x.js} +2 -2
  337. package/dist/{separator-DO0EbCEm.js.map → separator-BhtFyo4x.js.map} +1 -1
  338. package/dist/services/actions.js +1 -1
  339. package/dist/{settings-D9f_wdIC.js → settings-DOTOzeZ2.js} +10 -9
  340. package/dist/{settings-D9f_wdIC.js.map → settings-DOTOzeZ2.js.map} +1 -1
  341. package/dist/{sheet-vOUloJ4O.js → sheet-BFhrNehm.js} +11 -11
  342. package/dist/sheet-BFhrNehm.js.map +1 -0
  343. package/dist/{sidebar-CNBKFDRW.js → sidebar-CyR4XKwR.js} +219 -200
  344. package/dist/sidebar-CyR4XKwR.js.map +1 -0
  345. package/dist/{sidebar-C3UKkbC5.js → sidebar-SvGJ0Zwi.js} +63 -58
  346. package/dist/sidebar-SvGJ0Zwi.js.map +1 -0
  347. package/dist/{skeleton-BvRhK8y-.js → skeleton-3F0uhYn3.js} +4 -4
  348. package/dist/{skeleton-BvRhK8y-.js.map → skeleton-3F0uhYn3.js.map} +1 -1
  349. package/dist/{smart-card-B5FcKODh.js → smart-card-DjGVV2xr.js} +206 -199
  350. package/dist/smart-card-DjGVV2xr.js.map +1 -0
  351. package/dist/{spinner-JtlFJ7Nc.js → spinner-Cpf7oRkF.js} +5 -5
  352. package/dist/{spinner-JtlFJ7Nc.js.map → spinner-Cpf7oRkF.js.map} +1 -1
  353. package/dist/{structure-BvW4vG4H.js → structure-CRdqVawd.js} +14 -14
  354. package/dist/{structure-BvW4vG4H.js.map → structure-CRdqVawd.js.map} +1 -1
  355. package/dist/{structure.recipes-DjqnBpwz.js → structure.recipes-Bqhf9oIh.js} +2 -2
  356. package/dist/structure.recipes-Bqhf9oIh.js.map +1 -0
  357. package/dist/style.css +1 -1
  358. package/dist/{surface-recipes-CQfRr-VL.js → surface-recipes-Dd__PD-w.js} +4 -3
  359. package/dist/surface-recipes-Dd__PD-w.js.map +1 -0
  360. package/dist/{table-DnlAJ-xR.js → table-CLtJTxoR.js} +17 -16
  361. package/dist/table-CLtJTxoR.js.map +1 -0
  362. package/dist/table-CcRDZiLP.js +1444 -0
  363. package/dist/table-CcRDZiLP.js.map +1 -0
  364. package/dist/tabs-BNgu7g0u.js +188 -0
  365. package/dist/tabs-BNgu7g0u.js.map +1 -0
  366. package/dist/text-inputs-DsR56TR-.js +330 -0
  367. package/dist/text-inputs-DsR56TR-.js.map +1 -0
  368. package/dist/{text.styles-BwB7vAF2.js → text.styles-Q4sGAIgA.js} +18 -10
  369. package/dist/text.styles-Q4sGAIgA.js.map +1 -0
  370. package/dist/theme.css +77 -115
  371. package/dist/{timelines-CnZ2S_Gr.js → timelines-D1pkt3se.js} +84 -78
  372. package/dist/timelines-D1pkt3se.js.map +1 -0
  373. package/dist/{tree-COD9BGdU.js → tree-BtmYyMZV.js} +8 -8
  374. package/dist/{tree-COD9BGdU.js.map → tree-BtmYyMZV.js.map} +1 -1
  375. package/dist/typography/rich-text.js +1 -1
  376. package/dist/typography-BxQgiZyw.js +96 -0
  377. package/dist/typography-BxQgiZyw.js.map +1 -0
  378. package/dist/typography.js +1 -1
  379. package/dist/{ui-provider-CftIB6TY.js → ui-provider-DRPn3qNl.js} +3 -2
  380. package/dist/ui-provider-DRPn3qNl.js.map +1 -0
  381. package/dist/ui-provider.js +1 -1
  382. package/dist/{upload-DIzw1dx1.js → upload-CDbYw1WN.js} +326 -323
  383. package/dist/upload-CDbYw1WN.js.map +1 -0
  384. package/dist/{upload-queue-xRJ3qDmd.js → upload-queue-CNd_hH_a.js} +25 -25
  385. package/dist/upload-queue-CNd_hH_a.js.map +1 -0
  386. package/dist/usage-card-VyJLUwRr.js +457 -0
  387. package/dist/usage-card-VyJLUwRr.js.map +1 -0
  388. package/dist/utils-BvH9PSmq.js +4275 -0
  389. package/dist/utils-BvH9PSmq.js.map +1 -0
  390. package/dist/value-inputs-D0KCrfVC.js +840 -0
  391. package/dist/value-inputs-D0KCrfVC.js.map +1 -0
  392. package/dist/{workspace-Cbqz4FzN.js → workspace-CcR8r-Nt.js} +115 -122
  393. package/dist/workspace-CcR8r-Nt.js.map +1 -0
  394. package/docs/consumer-skill/SKILL.md +112 -18
  395. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  396. package/docs/consumer-skill/examples/app-layout.tsx +42 -12
  397. package/docs/consumer-skill/examples/detail.tsx +24 -9
  398. package/docs/consumer-skill/examples/manifest.json +27 -1
  399. package/docs/consumer-skill/examples/planning-usage-edit.tsx +29 -0
  400. package/docs/consumer-skill/examples/scoped-directory.tsx +77 -0
  401. package/docs/consumer-skill/examples/website.tsx +56 -0
  402. package/docs/consumer-skill/references/analytics.md +70 -0
  403. package/docs/consumer-skill/references/composition.md +219 -2
  404. package/docs/consumer-skill/references/design-contract.md +37 -10
  405. package/docs/consumer-skill/references/discovery.md +93 -5
  406. package/docs/consumer-skill/references/installation.md +20 -3
  407. package/docs/consumer-skill/references/integration.md +26 -0
  408. package/docs/consumer-skill/references/public-api.json +2416 -388
  409. package/docs/consumer-skill/references/review.md +126 -0
  410. package/docs/consumer-skill/references/theming.md +52 -7
  411. package/docs/consumer-skill/references/tokens.json +177 -9
  412. package/docs/consumer-skill/references/workflows.md +129 -1
  413. package/docs/consumer-skill/scripts/check-composition.mjs +31 -0
  414. package/docs/consumer-skill/scripts/composition-policy.mjs +317 -0
  415. package/docs/consumer-skill/scripts/discovery.mjs +65 -8
  416. package/docs/consumer-skill/scripts/surface-policy.mjs +66 -0
  417. package/package.json +30 -6
  418. package/dist/accordion-BRWh3BM1.js.map +0 -1
  419. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  420. package/dist/affordance-geometry.generated-DXl-Zb3Z.js +0 -23
  421. package/dist/affordance-geometry.generated-DXl-Zb3Z.js.map +0 -1
  422. package/dist/ai-artifact-DkOArd3-.js.map +0 -1
  423. package/dist/app-shell-BH_bGcE2.js.map +0 -1
  424. package/dist/auth-BDB1V_2q.js +0 -704
  425. package/dist/auth-BDB1V_2q.js.map +0 -1
  426. package/dist/avatar-CsnWaYmt.js.map +0 -1
  427. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  428. package/dist/button-BS6l5JUw.js.map +0 -1
  429. package/dist/buttons-Co6GavvM.js +0 -674
  430. package/dist/buttons-Co6GavvM.js.map +0 -1
  431. package/dist/chart-DVfcwQu6.js +0 -149
  432. package/dist/chart-DVfcwQu6.js.map +0 -1
  433. package/dist/choice-inputs-CavA-SGV.js +0 -644
  434. package/dist/choice-inputs-CavA-SGV.js.map +0 -1
  435. package/dist/code-block-DIlqzoiD.js.map +0 -1
  436. package/dist/combobox-CHD750do.js.map +0 -1
  437. package/dist/combobox-HDftpzxt.js.map +0 -1
  438. package/dist/command-D0kWBZfd.js.map +0 -1
  439. package/dist/comments-CvYeglMS.js +0 -1132
  440. package/dist/comments-CvYeglMS.js.map +0 -1
  441. package/dist/containers-CPNyNo1_.js.map +0 -1
  442. package/dist/data-display-b3d1TfL4.js.map +0 -1
  443. package/dist/date-picker-DI6kPNof.js.map +0 -1
  444. package/dist/date-pickers-ByP6Cv2z.js +0 -224
  445. package/dist/date-pickers-ByP6Cv2z.js.map +0 -1
  446. package/dist/feedback-a9j9J-9A.js +0 -391
  447. package/dist/feedback-a9j9J-9A.js.map +0 -1
  448. package/dist/field-affordance-recipes-CHdUtn2Z.js +0 -17
  449. package/dist/field-affordance-recipes-CHdUtn2Z.js.map +0 -1
  450. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  451. package/dist/filters-qtrcv1hf.js.map +0 -1
  452. package/dist/form-field-C6W-y2hR.js.map +0 -1
  453. package/dist/form-sizing-39NohSqn.js.map +0 -1
  454. package/dist/forms-numeric-Y15Bg5Nr.js +0 -867
  455. package/dist/forms-numeric-Y15Bg5Nr.js.map +0 -1
  456. package/dist/header-B8ex54cY.js.map +0 -1
  457. package/dist/http-CLTVJc5I.js.map +0 -1
  458. package/dist/input-DMorJiTI.js +0 -202
  459. package/dist/input-DMorJiTI.js.map +0 -1
  460. package/dist/input-ci9fIgFH.js +0 -20
  461. package/dist/input-ci9fIgFH.js.map +0 -1
  462. package/dist/item-pJ0GsOiJ.js.map +0 -1
  463. package/dist/media-gallery-Ca4YmvBi.js.map +0 -1
  464. package/dist/message-B5-6LeYl.js +0 -108
  465. package/dist/message-B5-6LeYl.js.map +0 -1
  466. package/dist/navigation-BTrEb5u4.js.map +0 -1
  467. package/dist/navigation-DqEITuD2.js.map +0 -1
  468. package/dist/navigation-row-recipes-BFpvGPGE.js.map +0 -1
  469. package/dist/overlays-DBqV0J_V.js +0 -982
  470. package/dist/overlays-DBqV0J_V.js.map +0 -1
  471. package/dist/page-BMBGjJY8.js.map +0 -1
  472. package/dist/page-header-BH41wCyY.js.map +0 -1
  473. package/dist/pagination-C29vvt3I.js.map +0 -1
  474. package/dist/popover-TInGXsjg.js.map +0 -1
  475. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  476. package/dist/primitives-DKPOGVpj.js.map +0 -1
  477. package/dist/rich-text-editor-BZSJchAF.js +0 -575
  478. package/dist/rich-text-editor-BZSJchAF.js.map +0 -1
  479. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  480. package/dist/scroll-area-BheMQ270.js.map +0 -1
  481. package/dist/select-B2mb-qN2.js +0 -108
  482. package/dist/select-B2mb-qN2.js.map +0 -1
  483. package/dist/sheet-vOUloJ4O.js.map +0 -1
  484. package/dist/sidebar-C3UKkbC5.js.map +0 -1
  485. package/dist/sidebar-CNBKFDRW.js.map +0 -1
  486. package/dist/smart-card-B5FcKODh.js.map +0 -1
  487. package/dist/structure.recipes-DjqnBpwz.js.map +0 -1
  488. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  489. package/dist/table-DnlAJ-xR.js.map +0 -1
  490. package/dist/table-ghtAQ-JJ.js +0 -1424
  491. package/dist/table-ghtAQ-JJ.js.map +0 -1
  492. package/dist/tabs-DY09eoZg.js +0 -187
  493. package/dist/tabs-DY09eoZg.js.map +0 -1
  494. package/dist/text-inputs-BhOcedTo.js +0 -331
  495. package/dist/text-inputs-BhOcedTo.js.map +0 -1
  496. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  497. package/dist/timelines-CnZ2S_Gr.js.map +0 -1
  498. package/dist/typography-Cv8MT-82.js +0 -96
  499. package/dist/typography-Cv8MT-82.js.map +0 -1
  500. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  501. package/dist/upload-DIzw1dx1.js.map +0 -1
  502. package/dist/upload-queue-xRJ3qDmd.js.map +0 -1
  503. package/dist/utils-C2EKeIw3.js +0 -72
  504. package/dist/utils-C2EKeIw3.js.map +0 -1
  505. package/dist/value-inputs-Co1fu-xv.js +0 -824
  506. package/dist/value-inputs-Co1fu-xv.js.map +0 -1
  507. package/dist/workspace-Cbqz4FzN.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ /** Private field/action layout; geometry remains generated from shared roots. */
2
+ export declare const inlineEditRecipes: {
3
+ readonly frame: "transition-[grid-template-columns,column-gap] duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none";
4
+ readonly closedColumns: "grid-cols-[minmax(0,1fr)_0px]";
5
+ readonly actionsTrack: "min-w-0 flex items-center justify-end overflow-hidden focus-within:overflow-visible transition-opacity duration-180 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none";
6
+ };
@@ -1,11 +1,9 @@
1
1
  /**
2
2
  * Typography- and token-aware wrappers around the internal shadcn tabs parts.
3
3
  *
4
- * The shadcn source is left untouched, so its literal `gap-1.5 rounded-md px-2
5
- * py-1` reached consumers unchanged and opted tabs out of scoped `--space-scale`
6
- * and `--radius` overrides — the only interactive family in the package that
7
- * did. These wrappers restate the same values as tokens; `cn` merges them last,
8
- * so they win. Every value below is pixel-identical to the primitive's default.
4
+ * Raw anatomy and these wrappers share token-backed spacing. The wrappers
5
+ * add stable public hooks, canonical corners, scalar text and scroll controls;
6
+ * the primitive owns tab/list interaction and the nested list inset.
9
7
  */
10
8
  import type { ComponentProps } from 'react';
11
9
  import { Tabs as PrimitiveTabs, TabsContent as PrimitiveTabsContent, TabsList as PrimitiveTabsList, TabsTrigger as PrimitiveTabsTrigger } from '../../ui/tabs';
@@ -1,12 +1,12 @@
1
1
  import { type RowDensity } from '../../../lib/row-recipes';
2
2
  /** Shared anchored-surface chrome; Menu and Popover retain their own accessible behavior. */
3
3
  export declare const popoverRecipes: {
4
- readonly surface: "rounded-radius border border-border/60 bg-popover text-popover-foreground shadow-md ring-0";
4
+ readonly surface: "box-border rounded-radius border border-border bg-popover text-popover-foreground shadow-md ring-0";
5
5
  readonly display: "p-surface";
6
6
  readonly menu: "p-surface-xs";
7
7
  readonly menuRegion: "px-surface-xs py-space-md";
8
8
  readonly separator: "mx-0 my-space-xs h-px w-full shrink-0 bg-border/60";
9
- readonly row: "min-h-control rounded-inner px-row-x gap-space-sm font-medium leading-tight";
9
+ readonly row: "box-border min-h-control rounded-inner px-row-x gap-space-sm font-medium leading-tight";
10
10
  };
11
11
  export type PopoverContentType = 'display' | 'menu';
12
12
  /** One surface inset vocabulary for Popover, Command and their collections. */
@@ -24,6 +24,6 @@ export declare const collectionRecipes: {
24
24
  readonly interactive: "relative flex cursor-default items-center outline-none select-none transition-colors";
25
25
  readonly highlighted: "data-highlighted:bg-accent data-highlighted:text-accent-foreground data-highlighted:[&_svg]:text-accent-foreground";
26
26
  readonly disabled: "data-disabled:pointer-events-none data-disabled:opacity-50";
27
- readonly destructive: "data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:data-highlighted:text-destructive dark:data-[variant=destructive]:data-highlighted:bg-destructive/20 data-[variant=destructive]:[&_svg]:text-destructive data-[variant=destructive]:data-highlighted:[&_svg]:text-destructive";
27
+ readonly destructive: "data-[variant=destructive]:text-destructive data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:data-highlighted:text-destructive dark:data-[variant=destructive]:data-highlighted:bg-destructive/10 data-[variant=destructive]:[&_svg]:text-destructive data-[variant=destructive]:data-highlighted:[&_svg]:text-destructive";
28
28
  readonly tableRow: "min-h-action-xs py-space-2xs";
29
29
  };
@@ -1,4 +1,10 @@
1
1
  import type { AdaptiveGridMinimum, GridColumnLadder, ResponsiveValue, StructureAlign, StructureGap, StructureJustify } from './structure.types';
2
+ /** Shared region/peer rhythm for structures and composed surface owners. */
3
+ export declare function gapRecipe({ gap, rowGap, columnGap, }: {
4
+ gap?: ResponsiveValue<StructureGap>;
5
+ rowGap?: ResponsiveValue<StructureGap>;
6
+ columnGap?: ResponsiveValue<StructureGap>;
7
+ }): string[];
2
8
  export declare function stackRecipe({ direction, gap, align, justify, wrap, }: {
3
9
  direction?: ResponsiveValue<'vertical' | 'horizontal'>;
4
10
  gap?: ResponsiveValue<StructureGap>;
@@ -8,7 +8,7 @@ export type TableRowProps = React.ComponentProps<typeof UITableRow>;
8
8
  export type TableHeadProps = React.ComponentProps<typeof UITableHead>;
9
9
  export type TableCellProps = React.ComponentProps<typeof UITableCell>;
10
10
  export type TableCaptionProps = React.ComponentProps<typeof UITableCaption>;
11
- export declare function Table({ className, containerClassName, ...props }: TableProps): React.JSX.Element;
11
+ export declare function Table({ className, containerClassName, containerProps, ...props }: TableProps): React.JSX.Element;
12
12
  export declare function TableHeader({ className, ...props }: TableHeaderProps): React.JSX.Element;
13
13
  export declare function TableBody({ className, ...props }: TableBodyProps): React.JSX.Element;
14
14
  export declare function TableFooter({ className, ...props }: TableFooterProps): React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ /** Route inline clearing through the field's existing native change handler. */
2
+ export declare function clearNativeField(field: HTMLInputElement | HTMLTextAreaElement): void;
@@ -0,0 +1,3 @@
1
+ import { type ReactNode } from 'react';
2
+ /** Private composition seam: the Input owner lays out PasswordInput's action. */
3
+ export declare const InputTrailingActionContext: import("react").Context<ReactNode>;
@@ -32,3 +32,4 @@ export { MetricGradient, type MetricGradientProps, type MetricGradientTheme, } f
32
32
  export { ActivityHeatmap, type ActivityHeatmapDay, type ActivityHeatmapProps, type ActivityHeatmapStrings, type ActivityLevel, } from './activity-heatmap';
33
33
  export { ChartCard, type ChartCardProps } from './chart-card';
34
34
  export { TimeDistributionRuler, defaultTimeDistributionRulerStrings, type TimeDistributionRulerProps, type TimeDistributionRulerStrings, } from './time-ruler';
35
+ export * from './usage-card';
@@ -21,7 +21,7 @@ export type MetricColorScheme = 'default' | 'primary' | 'success' | 'warning' |
21
21
  export type MetricVariant =
22
22
  /** Default tile — label, value, optional sparkline / trend chip / footer. */
23
23
  'default'
24
- /** Standalone metric using the canonical SmartCard surface. */
24
+ /** Standalone metric using the canonical Card surface. */
25
25
  | 'card'
26
26
  /** Single-row icon + label + value + change chip. Compact list/sidebar use. */
27
27
  | 'compact'
@@ -0,0 +1,3 @@
1
+ export { UsageCard } from './usage-card';
2
+ export { defaultUsageCardStrings, type UsageCardStrings } from './usage-card.strings';
3
+ export type { UsageCardProps, UsageCardData, UsageCardQuota, UsageCardCategory, UsageCardDay, UsageCardResource, UsageCardPeriod } from './types';
@@ -0,0 +1,52 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { CardProps } from '../../../base/cards';
3
+ import type { StringsProp } from '../../../../lib/strings';
4
+ import type { UsageCardStrings } from './usage-card.strings';
5
+ /** Explicit `null` limit means unlimited; omitted limit means unavailable. */
6
+ export interface UsageCardQuota {
7
+ used: number | null;
8
+ limit?: number | null;
9
+ unit?: string;
10
+ }
11
+ export interface UsageCardCategory {
12
+ id: string;
13
+ label: string;
14
+ value: number | null;
15
+ /** Semantic chart role; defaults to cycling through the five chart roles. */
16
+ color?: 1 | 2 | 3 | 4 | 5;
17
+ }
18
+ export interface UsageCardDay {
19
+ /** App-formatted date or day label, in chronological order. */
20
+ label: string;
21
+ value: number | null;
22
+ }
23
+ export interface UsageCardResource extends UsageCardQuota {
24
+ id: string;
25
+ label: string;
26
+ }
27
+ export interface UsageCardData extends UsageCardQuota {
28
+ categories?: readonly UsageCardCategory[];
29
+ daily?: readonly UsageCardDay[];
30
+ resources?: readonly UsageCardResource[];
31
+ }
32
+ export interface UsageCardPeriod {
33
+ value: string;
34
+ label: string;
35
+ disabled?: boolean;
36
+ }
37
+ export interface UsageCardProps extends Pick<CardProps, 'title' | 'description' | 'icon' | 'titleSuffix' | 'headerAction' | 'surface' | 'padding' | 'className'> {
38
+ data?: UsageCardData | null;
39
+ /** Loading and error replace stale data; fetching stays in the application. */
40
+ status?: 'ready' | 'loading' | 'error' | 'empty';
41
+ periods?: readonly UsageCardPeriod[];
42
+ /** Controlled selection. Defaults visually to the first period when omitted. */
43
+ period?: string;
44
+ onPeriodChange?: (value: string) => void;
45
+ onRetry?: () => void;
46
+ loadingSlot?: ReactNode;
47
+ errorSlot?: ReactNode;
48
+ emptySlot?: ReactNode;
49
+ /** App-owned billing/navigation action in the Card footer. */
50
+ footerAction?: ReactNode;
51
+ strings?: StringsProp<UsageCardStrings>;
52
+ }
@@ -0,0 +1,6 @@
1
+ import type { UsageCardProps } from './types';
2
+ /** App-owned usage data and period callbacks in the canonical Card composition. */
3
+ export declare function UsageCard({ data, status, periods, period, onPeriodChange, onRetry, loadingSlot, errorSlot, emptySlot, footerAction, strings: stringsProp, ...cardProps }: UsageCardProps): import("react").JSX.Element;
4
+ export declare namespace UsageCard {
5
+ var displayName: string;
6
+ }
@@ -0,0 +1,19 @@
1
+ import type { UsageCardDay } from './types';
2
+ export declare function validUsage(value: number | null | undefined): number | null;
3
+ /** Account only for rounding accumulated by positive finite category additions. */
4
+ export declare function usageExceeds(actual: number, expected: number, terms?: number): boolean;
5
+ /** Retain actual numbers; cap only geometry. Zero quota has no finite percentage. */
6
+ export declare function quotaSummary(usedValue: number | null, limitValue: number | null | undefined): {
7
+ readonly kind: "unavailable" | "unlimited" | "limited";
8
+ readonly used: number | null;
9
+ readonly limit: number | null;
10
+ readonly percent: number | null;
11
+ readonly progress: number | null;
12
+ readonly remaining: number | null;
13
+ readonly excess: number | null;
14
+ };
15
+ export declare function dailySummary(days: readonly UsageCardDay[]): {
16
+ values: (number | null)[];
17
+ average: number | null;
18
+ maximum: number;
19
+ };
@@ -0,0 +1,22 @@
1
+ export interface UsageCardStrings {
2
+ title: string;
3
+ usage: string;
4
+ used: string;
5
+ of: string;
6
+ unlimited: string;
7
+ unavailable: string;
8
+ remaining: string;
9
+ overLimit: string;
10
+ breakdown: string;
11
+ inconsistentBreakdown: string;
12
+ daily: string;
13
+ average: string;
14
+ perDay: string;
15
+ resources: string;
16
+ periods: string;
17
+ loading: string;
18
+ error: string;
19
+ empty: string;
20
+ retry: string;
21
+ }
22
+ export declare const defaultUsageCardStrings: UsageCardStrings;
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ /** Obvious empty slot values have no media track; rich React nodes remain untouched. */
3
+ export declare function hasMessageMedia(media: ReactNode): boolean;
4
+ /** Transcript rows and their continuation regions share the actual media track. */
5
+ export declare const messageColumns: {
6
+ readonly start: "grid-cols-[auto_minmax(0,1fr)]";
7
+ readonly end: "grid-cols-[minmax(0,1fr)_auto]";
8
+ };
9
+ export declare const messageContentColumn: {
10
+ readonly start: "col-start-2";
11
+ readonly end: "col-start-1";
12
+ };
@@ -1,8 +1,5 @@
1
1
  import type { EmptyStateIllustrationProps } from './types';
2
- /**
3
- * Two staggered document silhouettes — for "no documents", "no
4
- * invoices", "no reports" surfaces.
5
- */
2
+ /** Two staggered document silhouettes; all coordinates belong to the drawing. */
6
3
  export declare function DocumentStackIllustration({ className }: EmptyStateIllustrationProps): import("react").JSX.Element;
7
4
  export declare namespace DocumentStackIllustration {
8
5
  var displayName: string;
@@ -1,8 +1,5 @@
1
1
  import type { EmptyStateIllustrationProps } from './types';
2
- /**
3
- * Open inbox tray with a soft check above — for "all caught up",
4
- * "no notifications", "inbox zero" surfaces.
5
- */
2
+ /** Open inbox tray with a check; the scene has one intrinsic coordinate system. */
6
3
  export declare function InboxCleanIllustration({ className }: EmptyStateIllustrationProps): import("react").JSX.Element;
7
4
  export declare namespace InboxCleanIllustration {
8
5
  var displayName: string;
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Token-driven illustrations for `<EmptyState>`.
3
3
  *
4
- * Each illustration is a small composition of `bg-muted` /
5
- * `bg-background` / `border-border` divs (no raw palette colors), so it
6
- * adapts to the consumer's theme automatically. Use as the `media`
4
+ * Each illustration uses semantic theme colors for its HTML or SVG drawing,
5
+ * so it adapts to the consumer's theme automatically. Intrinsic drawing
6
+ * coordinates remain independent of UI spacing and density. Use as the `media`
7
7
  * prop of `<EmptyState>` — pick one per resource:
8
8
  *
9
9
  * <EmptyState
@@ -1,10 +1,5 @@
1
1
  import type { EmptyStateIllustrationProps } from './types';
2
- /**
3
- * Three stacked card silhouettes with a fade-out at the bottom — the
4
- * generic "no records" illustration. Token-driven so it adapts to any
5
- * theme (uses `bg-muted`, `bg-background`, `border-border`, no raw
6
- * palette).
7
- */
2
+ /** Three card silhouettes with a theme-backed fade; coordinates are drawing geometry. */
8
3
  export declare function StackedCardsIllustration({ className }: EmptyStateIllustrationProps): import("react").JSX.Element;
9
4
  export declare namespace StackedCardsIllustration {
10
5
  var displayName: string;
@@ -0,0 +1,3 @@
1
+ export { TaskCard } from './task-card';
2
+ export { defaultTaskCardStrings, type TaskCardStrings } from './task-card.strings';
3
+ export type { TaskCardProps, TaskCardItem, TaskCardStatus, TaskCardDueDate } from './task-card.types';
@@ -0,0 +1,3 @@
1
+ import type { TaskCardProps } from './task-card.types';
2
+ /** Compact task summary with explicit keyboard disclosure and controlled subtasks. */
3
+ export declare const TaskCard: import("react").ForwardRefExoticComponent<TaskCardProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,15 @@
1
+ export interface TaskCardStrings {
2
+ expand: string;
3
+ collapse: string;
4
+ subtasks: string;
5
+ completion: string;
6
+ due: string;
7
+ open: string;
8
+ empty: string;
9
+ saving: string;
10
+ /** Compact visible count; the full completion formatter remains the accessible value. */
11
+ formatCompletionCount: (completed: number, total: number) => string;
12
+ formatCompletion: (completed: number, total: number) => string;
13
+ formatAssignedTo: (name: string) => string;
14
+ }
15
+ export declare const defaultTaskCardStrings: TaskCardStrings;
@@ -0,0 +1,66 @@
1
+ import type { ComponentPropsWithoutRef } from 'react';
2
+ import type { StackedAvatarUser } from '../../base/avatar';
3
+ import type { BadgeProps } from '../../base/badge';
4
+ import type { CardProps } from '../../base/cards';
5
+ import type { StringsProp } from '../../../lib/strings';
6
+ import type { TaskCardStrings } from './task-card.strings';
7
+ export interface TaskCardItem {
8
+ /** Stable identity emitted by the completion callback. */
9
+ id: string;
10
+ /** Task copy supplied by the application. */
11
+ title: string;
12
+ /** Controlled completion state. */
13
+ completed: boolean;
14
+ /** Optional individual assignee. */
15
+ assignee?: StackedAvatarUser;
16
+ /** Prevents completion changes for this item. */
17
+ disabled?: boolean;
18
+ /** Application-owned saving state; keeps the checkbox inert. */
19
+ busy?: boolean;
20
+ /** Application-owned error; connected to the checkbox and announced. */
21
+ error?: string;
22
+ }
23
+ export interface TaskCardStatus {
24
+ /** Application-owned workflow status, independent of subtask completion. */
25
+ label: string;
26
+ /** Semantic badge tone. Defaults to neutral. */
27
+ tone?: BadgeProps['tone'];
28
+ }
29
+ export interface TaskCardDueDate {
30
+ /** Application-formatted date; the library adds the localized Due label. */
31
+ label: string;
32
+ /** Optional machine-readable ISO date for native time semantics. */
33
+ dateTime?: string;
34
+ }
35
+ export interface TaskCardProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'title'> {
36
+ /** Task title. */
37
+ title: string;
38
+ /** Controlled subtasks. Completion is read-only without its callback. */
39
+ items: readonly TaskCardItem[];
40
+ /** Application-owned workflow status. */
41
+ status?: TaskCardStatus;
42
+ /** Optional due date. */
43
+ dueDate?: TaskCardDueDate;
44
+ /** People shown in the compact summary. */
45
+ assignees?: StackedAvatarUser[];
46
+ /** Task owner shown in the expanded footer. */
47
+ assignedTo?: StackedAvatarUser;
48
+ /** Controlled disclosure state. */
49
+ expanded?: boolean;
50
+ /** Initial disclosure state. Defaults to false. */
51
+ defaultExpanded?: boolean;
52
+ /** Called for pointer and keyboard disclosure changes. */
53
+ onExpandedChange?: (expanded: boolean) => void;
54
+ /** Completion request; update items to accept the change. */
55
+ onItemCompletedChange?: (id: string, completed: boolean) => void;
56
+ /** Open action supplied by the application. */
57
+ onOpen?: () => void;
58
+ /** Native navigation destination for the Open action. */
59
+ href?: string;
60
+ /** Disables disclosure, completion and the Open action. */
61
+ disabled?: boolean;
62
+ /** Canonical Card surface; inherits the provider default. */
63
+ surface?: CardProps['surface'];
64
+ /** Overrides this block's labels and formatters. */
65
+ strings?: StringsProp<TaskCardStrings>;
66
+ }
@@ -9,7 +9,7 @@ export interface ErrorMessageProps {
9
9
  size: ComboboxSize;
10
10
  className?: string;
11
11
  }
12
- export declare function ErrorMessage({ error, size, className, }: ErrorMessageProps): React.ReactElement | null;
12
+ export declare function ErrorMessage({ error, size: _size, className, }: ErrorMessageProps): React.ReactElement | null;
13
13
  export declare namespace ErrorMessage {
14
14
  var displayName: string;
15
15
  }
@@ -1,3 +1,5 @@
1
+ import { type StringsProp } from '../../../../lib/strings';
2
+ import { type CommentsStrings } from '../comments.strings';
1
3
  import type { CommentAttachment, CommentsAttachmentsConfig } from '../comments.types';
2
4
  export interface UseAttachmentUploadOptions extends CommentsAttachmentsConfig {
3
5
  /** Initial attachments — useful when editing an existing comment. */
@@ -6,6 +8,9 @@ export interface UseAttachmentUploadOptions extends CommentsAttachmentsConfig {
6
8
  onValueChange?: (attachments: ReadonlyArray<CommentAttachment>) => void;
7
9
  /** Fires when a validation or upload error happens. */
8
10
  onError?: (error: string) => void;
11
+ /** Validation and non-Error upload fallback copy; omitted keys use Comments defaults.
12
+ * Error objects retain their caller-supplied message. */
13
+ strings?: StringsProp<Pick<CommentsStrings, 'attachmentTooLargeError' | 'attachmentTooManyError' | 'attachmentFailedLabel'>>;
9
14
  }
10
15
  export interface UseAttachmentUploadReturn {
11
16
  /** All attachments — uploading + uploaded + failed. */
@@ -10,18 +10,6 @@ export interface SearchFacetProps {
10
10
  /** Merged onto the outermost node. */
11
11
  className?: string;
12
12
  }
13
- /**
14
- * Search Filter Facet
15
- *
16
- * This component implements a text search filter that allows users to:
17
- * - Enter search terms
18
- * - Configure search behavior (contains, equals, etc.)
19
- * - Set debounce delay for performance
20
- * - Customize placeholder text and appearance
21
- *
22
- * The component integrates with the filter context to manage the search value
23
- * and provides a responsive search input interface.
24
- */
25
13
  declare function SearchFacetComponent({ filter, value, onValueChange, className, }: SearchFacetProps): React.JSX.Element;
26
14
  export declare const SearchFacet: React.MemoExoticComponent<typeof SearchFacetComponent>;
27
15
  export {};
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { type FilterConfig } from '../filters.types';
2
+ import type { FilterConfig } from '../filters.types';
3
3
  export interface TagsFacetProps {
4
4
  /** Definition of the filter this control edits. */
5
5
  filter: FilterConfig;
@@ -1,3 +1,3 @@
1
1
  import type { MediaLibraryDialogProps, MediaLibraryProps } from './media-library.types';
2
- export declare function MediaLibrary<TItem = import('./media-library.types').MediaLibraryItem>({ title, description, confirmLabel, cancelLabel, selectionMode, density, showMeta, allowUpload, typeFilters, confirmOnSelect, onConfirm, onCancel, onClose, strings: stringsProp, slots, heightClassName, className, items, fetcher, accessors, collections, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onUpload, onError, tab, defaultTab, onTabChange, view, defaultView, onViewChange, query, defaultQuery, onQueryChange, type, defaultType, onTypeChange, collection, defaultCollection, onCollectionChange, sort, defaultSort, onSortChange, uploadOptions, defaultUploadOptions, onUploadOptionsChange, ...props }: MediaLibraryProps<TItem>): import("react").JSX.Element;
2
+ export declare function MediaLibrary<TItem = import('./media-library.types').MediaLibraryItem>({ title, titleSuffix, description, confirmLabel, cancelLabel, selectionMode, density, showMeta, allowUpload, typeFilters, confirmOnSelect, onConfirm, onCancel, onClose, strings: stringsProp, slots, heightClassName, className, items, fetcher, accessors, collections, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onItemReplace, onUpload, onError, tab, defaultTab, onTabChange, view, defaultView, onViewChange, query, defaultQuery, onQueryChange, type, defaultType, onTypeChange, collection, defaultCollection, onCollectionChange, sort, defaultSort, onSortChange, uploadOptions, defaultUploadOptions, onUploadOptionsChange, ...props }: MediaLibraryProps<TItem>): import("react").JSX.Element;
3
3
  export declare function MediaLibraryDialog<TItem = import('./media-library.types').MediaLibraryItem>({ open, onOpenChange, trigger, dialogTitle, dialogDescription, onClose, className, dialogClassName, contentClassName, closeOnEscape, closeOnBackdropClick, ...props }: MediaLibraryDialogProps<TItem>): import("react").JSX.Element;
@@ -114,7 +114,7 @@ export interface MediaLibraryAccessors<TItem = MediaLibraryItem> {
114
114
  export type ResolvedMediaLibraryAccessors<TItem = MediaLibraryItem> = Required<MediaLibraryAccessors<TItem>>;
115
115
  export interface MediaLibrarySlots<TItem = MediaLibraryItem> {
116
116
  headerStart?: ReactNode;
117
- /** Content at the end of the header, before the overflow menu. */
117
+ /** Header controls beside the library/upload tabs. Put title status in `titleSuffix`. */
118
118
  headerEnd?: ReactNode;
119
119
  /** Content at the end of the toolbar row. */
120
120
  toolbarEnd?: ReactNode;
@@ -151,6 +151,8 @@ export interface MediaLibraryDetailRenderContext<TItem = MediaLibraryItem> {
151
151
  accessors: ResolvedMediaLibraryAccessors<TItem>;
152
152
  update: (patch: MediaLibraryItemPatch) => Promise<boolean>;
153
153
  remove: () => Promise<boolean>;
154
+ /** Requests the consumer's replacement workflow for this inspected item, when supported. */
155
+ replace?: () => void;
154
156
  close: () => void;
155
157
  }
156
158
  export interface MediaLibraryState<TItem = MediaLibraryItem> {
@@ -300,6 +302,10 @@ export interface UseMediaLibraryOptions<TItem = MediaLibraryItem> {
300
302
  export interface MediaLibraryProps<TItem = MediaLibraryItem> extends Omit<ComponentPropsWithoutRef<'section'>, 'children' | 'defaultValue' | 'onError' | 'onSelect' | 'title'>, UseMediaLibraryOptions<TItem> {
301
303
  /** Heading above the browser. */
302
304
  title?: ReactNode;
305
+ /** Status, count, or version content directly after the title; header actions belong in `slots.headerEnd`. */
306
+ titleSuffix?: ReactNode;
307
+ /** Requests replacement of the inspected asset. The consumer owns file selection, persistence, identity, and refreshed `items`; omitted callbacks hide Replace file. */
308
+ onItemReplace?: (item: TItem) => void;
303
309
  /** Supporting line under the title. */
304
310
  description?: ReactNode;
305
311
  /** Copy for the confirm action. */
@@ -455,6 +461,8 @@ export interface MediaLibraryDetailPanelProps<TItem = MediaLibraryItem> {
455
461
  onUpdate: (patch: MediaLibraryItemPatch) => Promise<boolean>;
456
462
  /** Fired when an entry is removed. */
457
463
  onRemove: () => Promise<boolean>;
464
+ /** Opens the consumer-owned replacement workflow for the inspected item. */
465
+ onReplace?: () => void;
458
466
  /** Replaces the default detail rendering. */
459
467
  renderDetail?: MediaLibrarySlots<TItem>['renderDetail'];
460
468
  }
@@ -3,7 +3,7 @@ export declare function MediaLibraryEmptyState({ icon, title, description, actio
3
3
  export declare function MediaLibraryToolbar({ query, type, typeFilters, collection, sort, view, collections, strings, onQueryChange, onTypeChange, onCollectionChange, onSortChange, onViewChange, onClearFilters, toolbarEnd, }: MediaLibraryToolbarProps): import("react").JSX.Element;
4
4
  export declare function MediaLibraryCard<TItem>({ item, selected, density, showMeta, accessors, strings, onToggle, onDetails, className, }: MediaLibraryCardProps<TItem>): import("react").JSX.Element;
5
5
  export declare function MediaLibraryList<TItem>({ items, selectedSet, accessors, strings, onToggle, onDetails, }: MediaLibraryListProps<TItem>): import("react").JSX.Element;
6
- export declare function MediaLibraryDetailPanel<TItem>({ item, collections, accessors, strings, onClose, onUpdate, onRemove, renderDetail, }: MediaLibraryDetailPanelProps<TItem>): import("react").JSX.Element | null;
6
+ export declare function MediaLibraryDetailPanel<TItem>({ item, collections, accessors, strings, onClose, onUpdate, onRemove, onReplace, renderDetail, }: MediaLibraryDetailPanelProps<TItem>): import("react").JSX.Element | null;
7
7
  export declare function MediaLibraryUploadPanel({ stagedFiles, uploadOptions, collections, uploading, strings, onFiles, onRemoveFile, onOptionsChange, empty, }: MediaLibraryUploadPanelProps): import("react").JSX.Element;
8
8
  export declare function MediaLibraryFooterSummary({ tab, selectedIds, selectionMode, stagedFiles, strings, onClearSelection, className, }: MediaLibraryFooterSummaryProps): import("react").JSX.Element;
9
9
  export declare function MediaLibraryFooterActions<TItem>({ tab, selectedItems, selectedIds, stagedFiles, uploading, strings, confirmLabel, cancelLabel, onCancel, onConfirm, onUpload, onCancelUpload, className, }: MediaLibraryFooterActionsProps<TItem>): import("react").JSX.Element;
@@ -0,0 +1,2 @@
1
+ /** Keep modal focus anchored when its focused action becomes disabled. */
2
+ export declare function usePendingOverlayFocus(pending: boolean, modal?: boolean | 'trap-focus'): import("react").RefObject<HTMLDivElement | null>;
@@ -76,8 +76,9 @@ export interface OverlayActionProps {
76
76
  onConfirm?: () => void;
77
77
  /**
78
78
  * Awaited confirm. The confirm button shows a spinner and both buttons
79
- * disable until it settles. A rejection leaves the overlay open and is
80
- * reported through `onError`. Ignored when `onConfirm` is also set.
79
+ * disable until it settles. Close, Escape and backdrop dismissal also wait
80
+ * for completion. A rejection leaves the overlay open, restores the actions
81
+ * and is reported through `onError`. Ignored when `onConfirm` is also set.
81
82
  */
82
83
  onAsyncConfirm?: () => Promise<void>;
83
84
  /** Receives rejected async confirmations so consumers can report or toast them. */
@@ -91,7 +92,7 @@ export interface OverlayActionProps {
91
92
  confirmTone?: OverlayButtonTone;
92
93
  /** Confirm button fill treatment. */
93
94
  confirmStyle?: OverlayButtonStyle;
94
- /** Forces the pending presentation for confirm work owned outside the overlay. */
95
+ /** Applies the same pending action/dismissal lock for work owned outside the overlay. */
95
96
  loading?: boolean;
96
97
  /**
97
98
  * `id` of a form elsewhere in the tree. The confirm button calls
@@ -99,7 +100,7 @@ export interface OverlayActionProps {
99
100
  * `onSubmit` owns the outcome — `onConfirm` and `onAsyncConfirm` do not fire.
100
101
  */
101
102
  formId?: string;
102
- /** Replaces the generated footer entirely. The props above no longer apply. */
103
+ /** Replaces the generated footer; the consumer owns its action states. Pending dismissal protection still applies. */
103
104
  footer?: ReactNode;
104
105
  }
105
106
  /** Semantic weight — the header icon and the confirm button's tone. */
@@ -1,6 +1,7 @@
1
1
  /** Shared field anatomy for rich editors, including specialized document schemas. */
2
2
  export declare const richTextEditorRecipes: {
3
- readonly frame: "min-w-0 overflow-hidden border-input bg-background rounded-radius border";
3
+ readonly source: string;
4
+ readonly frame: "min-w-0 overflow-hidden border-input bg-background rounded-inner border";
4
5
  readonly disabled: "opacity-70";
5
6
  readonly content: "h-full [&_.ProseMirror]:h-full [&_.ProseMirror]:min-h-full [&_.ProseMirror]:outline-none";
6
7
  };
@@ -1,6 +1,6 @@
1
1
  export declare function useDataTableSize(): 'xs' | 'sm';
2
2
  import { type DataTableProps } from './table.types';
3
- export declare function DataTable<TData extends object, TValue = unknown>({ size, surface, headerTransparent, columns, data, columnGroups, rowActions, rowActionsMenuLabel, rowActionsDisplayMode, rowActionsBreakpoint, enableSorting, enableFiltering, filterColumn, filterPlaceholder, manualSorting, enableColumnVisibility, fullscreen: controlledFullscreen, defaultFullscreen, onFullscreenChange, showFullscreenToggle, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, pagination, pageQueryKey, onPageChange, onSortingChange, onColumnFiltersChange, onRowClick, onRowSelectionChange, stickyHeader, stickyToolbar, stickyFirstColumn, maxBodyHeight, fillAvailableHeight, emptyStateMessage, emptyStateAction, className, rowClassName, cellClassName, headerClassName, wrapperClassName, innerClassName, tableContainerClassName, getRowId, rowSelection: controlledRowSelection, sorting: controlledSorting, defaultSorting, columnVisibility: controlledColumnVisibility, defaultColumnVisibility, initialState, onColumnVisibilityChange, strings: stringsOverride, topbarContent, topbarEnd, topbarClassName, toolbarLabelVisibility, footerContent, selectionToolbar, bulkActions, selectionToolbarClassName, storageKey, }: DataTableProps<TData, TValue>): import("react").JSX.Element;
3
+ export declare function DataTable<TData extends object, TValue = unknown>({ size, surface, headerTransparent, columns, data, columnGroups, rowActions, rowActionsMenuLabel, rowActionsDisplayMode, rowActionsBreakpoint, enableSorting, enableResizing, enableFiltering, filterColumn, filterPlaceholder, manualSorting, enableColumnVisibility, fullscreen: controlledFullscreen, defaultFullscreen, onFullscreenChange, showFullscreenToggle, enableRowSelection, enableMultiRowSelection, enableSubRowSelection, pagination, pageQueryKey, onPageChange, onSortingChange, onColumnFiltersChange, onRowClick, onRowSelectionChange, stickyHeader, stickyToolbar, stickyFirstColumn, maxBodyHeight, fillAvailableHeight, emptyStateMessage, emptyStateAction, className, rowClassName, cellClassName, headerClassName, wrapperClassName, innerClassName, tableContainerClassName, getRowId, rowSelection: controlledRowSelection, sorting: controlledSorting, defaultSorting, columnVisibility: controlledColumnVisibility, defaultColumnVisibility, initialState, onColumnVisibilityChange, strings: stringsOverride, topbarContent, topbarEnd, topbarClassName, toolbarLabelVisibility, footerContent, selectionToolbar, bulkActions, selectionToolbarClassName, storageKey, }: DataTableProps<TData, TValue>): import("react").JSX.Element;
4
4
  export declare namespace DataTable {
5
5
  var displayName: string;
6
6
  }
@@ -171,7 +171,7 @@ export type DataTableSize = ComponentScale;
171
171
  *
172
172
  * - `card` (default): rounded card with `border-border bg-card` and a
173
173
  * soft shadow — the canonical admin treatment.
174
- * - `glass`: a hairline `border-border/60 rounded-radius-md` outline with no
174
+ * - `glass`: a hairline `border-border/60 rounded-radius` outline with no
175
175
  * shadow and no card background — pairs with consumer-supplied
176
176
  * surrounding chrome (e.g. dropping into an existing SmartCard).
177
177
  * Background remains transparent so a glassy parent shows
@@ -39,7 +39,9 @@ export interface ThemeProviderSettingsStrings {
39
39
  description: string;
40
40
  };
41
41
  };
42
- labels: Record<'locale' | 'defaultCurrency' | 'displayCurrency' | 'moneyFormat' | 'firstDay' | 'dateFormat' | 'textSize' | 'commentComposer' | 'dualPricing' | 'dualPricingMode' | 'dualPricingLayout' | 'componentScale' | 'itemVariant' | 'buttonTone' | 'buttonStyle' | 'badgeTone' | 'cardSurface' | 'spinner' | 'cardDivider' | 'toastPosition' | 'toastTheme' | 'toastDuration' | 'visibleToasts' | 'closeButton' | 'richColors', string>;
42
+ labels: Record<'locale' | 'defaultCurrency' | 'displayCurrency' | 'moneyFormat' | 'firstDay' | 'dateFormat' | 'textSize' | 'commentComposer' | 'dualPricing' | 'dualPricingMode' | 'dualPricingLayout' | 'componentScale' | 'itemVariant' | 'buttonTone' | 'buttonStyle' | 'badgeTone' | 'cardSurface' | 'spinner' | 'cardDivider' | 'toastPosition' | 'toastTheme' | 'toastDuration' | 'visibleToasts' | 'closeButton' | 'richColors', string> & {
43
+ cardFooterDivider?: string;
44
+ };
43
45
  dualPricingDescription: string;
44
46
  displayCurrencyPlaceholder: string;
45
47
  options: Record<string, string>;
@@ -205,6 +205,7 @@ export interface AuthShellProps extends Omit<HTMLAttributes<HTMLDivElement>, 'ti
205
205
  /** Content for the panel beside the form in the split layout. */
206
206
  splitPanel?: ReactNode | AuthSplitPanelProps;
207
207
  splitSide?: AuthSplitSide;
208
+ /** Panel behavior below the shell's own 64rem inline width; independent of viewport width. */
208
209
  splitMobile?: AuthSplitMobile;
209
210
  /** Merged onto the main region. */
210
211
  mainClassName?: string;
@@ -1,3 +1,2 @@
1
1
  import type { PageProps } from './page.types';
2
- /** Page — non-scrolling Container, PageHeader, and body-rhythm composition. */
3
2
  export declare const Page: import("react").ForwardRefExoticComponent<Omit<PageProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -7,7 +7,7 @@ import type { LayoutLinkRenderer, LayoutNavigationAdapter, LayoutSlotAttributes
7
7
  import type { TextGap } from '../../base/structure';
8
8
  import type { ButtonSize } from '../../base/buttons';
9
9
  import type { HeadingTag } from '../../typography';
10
- import type { ContainerMaxWidth, ContainerProps } from '../containers/containers.types';
10
+ import type { ContainerGutter, ContainerMaxWidth, ContainerProps } from '../containers/containers.types';
11
11
  import type { StringsProp } from '../../../lib/strings';
12
12
  import type { BadgeTone } from '../../base/badge';
13
13
  import type { ActionPresentation } from '../../../lib/action-presentation';
@@ -33,7 +33,7 @@ export interface PageHeaderProps extends LayoutNavigationAdapter {
33
33
  title: ReactNode;
34
34
  /** Supporting copy under the title. */
35
35
  description?: ReactNode;
36
- /** Shared title/description rhythm. Defaults to normal. */
36
+ /** Shared title/description rhythm. Defaults to dense for page copy. */
37
37
  textGap?: TextGap;
38
38
  /** Semantic heading level for the title. Defaults to `h3` for nested app pages. */
39
39
  headingTag?: HeadingTag;
@@ -130,8 +130,14 @@ export interface PageSlotProps {
130
130
  export interface PageProps extends LayoutNavigationAdapter, Omit<ContainerProps, 'children'> {
131
131
  /** Header region of the shell. */
132
132
  header?: PageHeaderProps;
133
- /** Maximum content width. Defaults to `lg` for readable page composition. */
133
+ /** Maximum content width. Explicit values override narrow. Defaults to `lg`. */
134
134
  maxWidth?: ContainerMaxWidth;
135
+ /** Center one resource or form at the existing `md` content measure. */
136
+ narrow?: boolean;
137
+ /** Inline page gutters. Defaults to `lg`; none requires an existing padded parent. */
138
+ gutter?: ContainerGutter;
139
+ /** Block padding around the whole page. Defaults to `lg`, independent of gutter. */
140
+ padding?: ContainerGutter;
135
141
  children?: ReactNode;
136
142
  /** Native attributes for stable page regions. */
137
143
  slotProps?: PageSlotProps;