themelia-react-ui 2.0.5 → 2.0.6

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 (489) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/MIGRATION.md +119 -0
  3. package/README.md +13 -6
  4. package/dist/{accordion-B9MHG0cT.js → accordion-0tQUZ20r.js} +7 -7
  5. package/dist/accordion-0tQUZ20r.js.map +1 -0
  6. package/dist/{action-menu-Dr8K-ghE.js → action-menu-C0gjzLyE.js} +7 -7
  7. package/dist/{action-menu-Dr8K-ghE.js.map → action-menu-C0gjzLyE.js.map} +1 -1
  8. package/dist/{ai-artifact-C58tQcBy.js → ai-artifact-CGGpQryR.js} +172 -157
  9. package/dist/ai-artifact-CGGpQryR.js.map +1 -0
  10. package/dist/{app-shell-B_IuNWOo.js → app-shell-EHuuRDGy.js} +5 -5
  11. package/dist/{app-shell-B_IuNWOo.js.map → app-shell-EHuuRDGy.js.map} +1 -1
  12. package/dist/{attachment-Dg_69lPS.js → attachment-BCpA4e7i.js} +8 -8
  13. package/dist/{attachment-Dg_69lPS.js.map → attachment-BCpA4e7i.js.map} +1 -1
  14. package/dist/{auth-DTkkshS8.js → auth-B0girIk_.js} +15 -15
  15. package/dist/auth-B0girIk_.js.map +1 -0
  16. package/dist/{avatar-CeZaFmNH.js → avatar-B9Jnp-T-.js} +3 -3
  17. package/dist/{avatar-CeZaFmNH.js.map → avatar-B9Jnp-T-.js.map} +1 -1
  18. package/dist/{badge-xIiV_E7f.js → badge-wWauMgAt.js} +3 -3
  19. package/dist/{badge-xIiV_E7f.js.map → badge-wWauMgAt.js.map} +1 -1
  20. package/dist/base/accordion.js +1 -1
  21. package/dist/base/action-menu.js +1 -1
  22. package/dist/base/attachment.js +1 -1
  23. package/dist/base/avatar.js +1 -1
  24. package/dist/base/badge.js +1 -1
  25. package/dist/base/batch-action-bar.js +1 -1
  26. package/dist/base/buttons.js +1 -1
  27. package/dist/base/cards.js +2 -2
  28. package/dist/base/carousel.js +3 -3
  29. package/dist/base/cascader.js +1 -1
  30. package/dist/base/chart.js +1 -1
  31. package/dist/base/choice-inputs.js +2 -2
  32. package/dist/base/code-block.js +1 -1
  33. package/dist/base/combobox.js +1 -1
  34. package/dist/base/command.js +1 -1
  35. package/dist/base/copyable.js +1 -1
  36. package/dist/base/date-pickers.js +2 -2
  37. package/dist/base/display.js +6 -6
  38. package/dist/base/feedback.js +4 -4
  39. package/dist/base/forms-numeric.js +1 -1
  40. package/dist/base/forms.js +2 -2
  41. package/dist/base/inline-edit.js +8 -8
  42. package/dist/base/item.js +1 -1
  43. package/dist/base/media-gallery.js +1 -1
  44. package/dist/base/metadata-list.js +1 -1
  45. package/dist/base/navigation.js +6 -6
  46. package/dist/base/popover-menu.js +1 -1
  47. package/dist/base/popover.js +1 -1
  48. package/dist/base/qr-code.js +1 -1
  49. package/dist/base/repeaters.js +195 -188
  50. package/dist/base/repeaters.js.map +1 -1
  51. package/dist/base/sheet.js +1 -1
  52. package/dist/base/sidebar.js +2 -2
  53. package/dist/base/signature-pad.js +7 -7
  54. package/dist/base/skeleton.js +1 -1
  55. package/dist/base/spinner.js +5 -5
  56. package/dist/base/spinner.js.map +1 -1
  57. package/dist/base/structure.js +1 -1
  58. package/dist/base/table.js +1 -1
  59. package/dist/base/text-inputs.js +2 -2
  60. package/dist/base/toaster.js +1 -1
  61. package/dist/base/tree.js +1 -1
  62. package/dist/base/upload-queue.js +1 -1
  63. package/dist/base/upload.js +3 -3
  64. package/dist/base/value-inputs.js +1 -1
  65. package/dist/{batch-action-bar-Cb8cuvyy.js → batch-action-bar-BoqWIIpV.js} +5 -5
  66. package/dist/{batch-action-bar-Cb8cuvyy.js.map → batch-action-bar-BoqWIIpV.js.map} +1 -1
  67. package/dist/blocks/admin.js +17 -17
  68. package/dist/blocks/ai.js +227 -221
  69. package/dist/blocks/ai.js.map +1 -1
  70. package/dist/blocks/analytics/usage-card.js +1 -1
  71. package/dist/blocks/analytics.js +424 -449
  72. package/dist/blocks/analytics.js.map +1 -1
  73. package/dist/blocks/collaboration.js +1 -1
  74. package/dist/blocks/commerce/receipt.js +1 -1
  75. package/dist/blocks/commerce.js +225 -220
  76. package/dist/blocks/commerce.js.map +1 -1
  77. package/dist/blocks/data-display.js +2 -2
  78. package/dist/blocks/onboarding.js +5 -5
  79. package/dist/blocks/planning.js +11 -11
  80. package/dist/blocks/timelines.js +1 -1
  81. package/dist/{breadcrumbs-J-K2kl4c.js → breadcrumbs-Bp9Ke7kd.js} +4 -4
  82. package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
  83. package/dist/{button-S2Cubiiz.js → button-ChBovTx0.js} +2 -2
  84. package/dist/{button-S2Cubiiz.js.map → button-ChBovTx0.js.map} +1 -1
  85. package/dist/{buttons-BedGfygC.js → buttons-DeW0bQeK.js} +6 -6
  86. package/dist/{buttons-BedGfygC.js.map → buttons-DeW0bQeK.js.map} +1 -1
  87. package/dist/{cards-rNX1M4Xn.js → cards-CNXnmvV5.js} +8 -8
  88. package/dist/{cards-rNX1M4Xn.js.map → cards-CNXnmvV5.js.map} +1 -1
  89. package/dist/{cascader-B1MiqkBq.js → cascader-CrAl9zD5.js} +15 -15
  90. package/dist/{cascader-B1MiqkBq.js.map → cascader-CrAl9zD5.js.map} +1 -1
  91. package/dist/{chart-Darg_0Kv.js → chart-I7ROnsl8.js} +5 -5
  92. package/dist/{chart-Darg_0Kv.js.map → chart-I7ROnsl8.js.map} +1 -1
  93. package/dist/{checkbox-fflqmODR.js → checkbox-MoyHIAPs.js} +3 -3
  94. package/dist/{checkbox-fflqmODR.js.map → checkbox-MoyHIAPs.js.map} +1 -1
  95. package/dist/{choice-inputs-zUgBZfE4.js → choice-inputs-DHGtx0QV.js} +122 -110
  96. package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
  97. package/dist/{code-block-BzmM9Eig.js → code-block-BSJyq9e-.js} +7 -7
  98. package/dist/{code-block-BzmM9Eig.js.map → code-block-BSJyq9e-.js.map} +1 -1
  99. package/dist/{collapsible-BkAI_XD4.js → collapsible-BzJ91LUG.js} +3 -3
  100. package/dist/{collapsible-BkAI_XD4.js.map → collapsible-BzJ91LUG.js.map} +1 -1
  101. package/dist/{collection-content-gDh1v6O4.js → collection-content-CSnwtOTH.js} +3 -3
  102. package/dist/{collection-content-gDh1v6O4.js.map → collection-content-CSnwtOTH.js.map} +1 -1
  103. package/dist/{combobox-BEx0vJgF.js → combobox-Bcvu5J8O.js} +11 -10
  104. package/dist/{combobox-BEx0vJgF.js.map → combobox-Bcvu5J8O.js.map} +1 -1
  105. package/dist/combobox-C2JiSQPc.js +915 -0
  106. package/dist/combobox-C2JiSQPc.js.map +1 -0
  107. package/dist/{command-CrlPIL6m.js → command-9e52NPgK.js} +6 -6
  108. package/dist/{command-CrlPIL6m.js.map → command-9e52NPgK.js.map} +1 -1
  109. package/dist/{comments-Dmpp0YIc.js → comments-BsgErEqd.js} +33 -28
  110. package/dist/comments-BsgErEqd.js.map +1 -0
  111. package/dist/components/base/choice-inputs/choice-types.d.ts +4 -0
  112. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
  113. package/dist/components/base/combobox/combobox-field.d.ts +2 -2
  114. package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
  115. package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
  116. package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
  117. package/dist/components/base/feedback/state-display.d.ts +5 -1
  118. package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
  119. package/dist/components/base/forms/form-field.d.ts +7 -2
  120. package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -1
  121. package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
  122. package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
  123. package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
  124. package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
  125. package/dist/components/base/navigation/language-switcher.d.ts +12 -4
  126. package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
  127. package/dist/components/base/sidebar/sidebar.d.ts +2 -0
  128. package/dist/components/base/upload/avatar-upload.d.ts +2 -1
  129. package/dist/components/base/upload/image-upload.d.ts +2 -1
  130. package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
  131. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
  132. package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
  133. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +2 -0
  134. package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
  135. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
  136. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
  137. package/dist/components/blocks/analytics/types.d.ts +2 -2
  138. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  139. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
  140. package/dist/components/features/activities/activities.types.d.ts +18 -11
  141. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
  142. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
  143. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  144. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
  145. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  146. package/dist/components/features/combobox/combobox.d.ts +2 -2
  147. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
  148. package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
  149. package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
  150. package/dist/components/features/combobox/types.d.ts +37 -8
  151. package/dist/components/features/email-composer/types.d.ts +3 -1
  152. package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
  153. package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
  154. package/dist/components/features/filters/filters.types.d.ts +3 -3
  155. package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
  156. package/dist/components/features/filters/partials/filter-popover-content.d.ts +4 -2
  157. package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
  158. package/dist/components/features/filters/utils/filter-utils.d.ts +5 -1
  159. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  160. package/dist/components/features/media-library/media-library.d.ts +1 -1
  161. package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
  162. package/dist/components/features/media-library/media-library.types.d.ts +36 -8
  163. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  164. package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
  165. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
  166. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
  167. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
  168. package/dist/components/features/products/products.types.d.ts +2 -2
  169. package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
  170. package/dist/components/features/resource/resource.d.ts +1 -1
  171. package/dist/components/features/resource/resource.types.d.ts +2 -0
  172. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  173. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +1 -1
  174. package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
  175. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
  176. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  177. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
  178. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
  179. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
  180. package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
  181. package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
  182. package/dist/components/features/table/data-table.d.ts +1 -1
  183. package/dist/components/features/table/index.d.ts +1 -0
  184. package/dist/components/features/table/table-body.d.ts +1 -1
  185. package/dist/components/features/table/table-helpers.d.ts +6 -3
  186. package/dist/components/features/table/table.strings.d.ts +3 -0
  187. package/dist/components/features/table/table.types.d.ts +17 -1
  188. package/dist/components/layout/header/header.types.d.ts +3 -2
  189. package/dist/components/layout/layout.types.d.ts +5 -3
  190. package/dist/components/layout/navigation/side-nav.d.ts +3 -2
  191. package/dist/components/layout/normalize-layout-path.d.ts +1 -0
  192. package/dist/components/layout/settings/settings.d.ts +1 -1
  193. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  194. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +3 -1
  195. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -0
  196. package/dist/components/layout/sidebar/sidebar.types.d.ts +2 -0
  197. package/dist/components/primitives/link.d.ts +3 -2
  198. package/dist/components/primitives/money.d.ts +1 -1
  199. package/dist/components/primitives/number.d.ts +1 -1
  200. package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
  201. package/dist/{containers-CIxwbZt5.js → containers-CSdc32h9.js} +2 -2
  202. package/dist/{containers-CIxwbZt5.js.map → containers-CSdc32h9.js.map} +1 -1
  203. package/dist/{copyable-DIznBqiT.js → copyable-3fdHfMR3.js} +4 -4
  204. package/dist/{copyable-DIznBqiT.js.map → copyable-3fdHfMR3.js.map} +1 -1
  205. package/dist/{data-display-BdgCAw8T.js → data-display-Cmj-xZYl.js} +16 -15
  206. package/dist/data-display-Cmj-xZYl.js.map +1 -0
  207. package/dist/{date-Cq8ioE4o.js → date-Br0FicVv.js} +4 -4
  208. package/dist/{date-Cq8ioE4o.js.map → date-Br0FicVv.js.map} +1 -1
  209. package/dist/date-picker-CyQlFYsP.js +1617 -0
  210. package/dist/date-picker-CyQlFYsP.js.map +1 -0
  211. package/dist/date-pickers-tj2MXmXd.js +185 -0
  212. package/dist/date-pickers-tj2MXmXd.js.map +1 -0
  213. package/dist/{display-KsZLw9Ov.js → display-CT_N2a3w.js} +7 -7
  214. package/dist/{display-KsZLw9Ov.js.map → display-CT_N2a3w.js.map} +1 -1
  215. package/dist/{dropdown-menu-CLs8Lihj.js → dropdown-menu-C08iIugv.js} +6 -6
  216. package/dist/{dropdown-menu-CLs8Lihj.js.map → dropdown-menu-C08iIugv.js.map} +1 -1
  217. package/dist/features/activities.js +283 -270
  218. package/dist/features/activities.js.map +1 -1
  219. package/dist/features/ai-chat.js +40 -27
  220. package/dist/features/ai-chat.js.map +1 -1
  221. package/dist/features/appointment-calendar.js +126 -126
  222. package/dist/features/appointment-calendar.js.map +1 -1
  223. package/dist/features/async-preview.js +9 -9
  224. package/dist/features/combobox.js +1 -1
  225. package/dist/features/comments.js +1 -1
  226. package/dist/features/data-view.js +10 -10
  227. package/dist/features/email-composer.js +24 -19
  228. package/dist/features/email-composer.js.map +1 -1
  229. package/dist/features/event-calendar.js +129 -125
  230. package/dist/features/event-calendar.js.map +1 -1
  231. package/dist/features/filters.js +2 -2
  232. package/dist/features/global-search.js +16 -20
  233. package/dist/features/global-search.js.map +1 -1
  234. package/dist/features/kanban.js +18 -28
  235. package/dist/features/kanban.js.map +1 -1
  236. package/dist/features/map/style.css +15 -0
  237. package/dist/features/map.js +331 -314
  238. package/dist/features/map.js.map +1 -1
  239. package/dist/features/media-library.js +1044 -866
  240. package/dist/features/media-library.js.map +1 -1
  241. package/dist/features/mentions.js +2 -2
  242. package/dist/features/overlays.js +1 -1
  243. package/dist/features/products.js +978 -964
  244. package/dist/features/products.js.map +1 -1
  245. package/dist/features/questionnaire.js +159 -152
  246. package/dist/features/questionnaire.js.map +1 -1
  247. package/dist/features/resource-assignment.js +8 -8
  248. package/dist/features/resource.js +74 -71
  249. package/dist/features/resource.js.map +1 -1
  250. package/dist/features/rich-text-editor.js +28 -19
  251. package/dist/features/rich-text-editor.js.map +1 -1
  252. package/dist/features/schema-form.js +297 -256
  253. package/dist/features/schema-form.js.map +1 -1
  254. package/dist/features/suggestions.js +57 -50
  255. package/dist/features/suggestions.js.map +1 -1
  256. package/dist/features/sync.js +3 -3
  257. package/dist/features/table.js +1 -1
  258. package/dist/features/theme-tweaker.js +400 -399
  259. package/dist/features/theme-tweaker.js.map +1 -1
  260. package/dist/feedback-Dzo1xtAU.js +246 -0
  261. package/dist/feedback-Dzo1xtAU.js.map +1 -0
  262. package/dist/{field-affordance-recipes-DWcNcOjh.js → field-affordance-recipes-D6H7tVJi.js} +2 -2
  263. package/dist/{field-affordance-recipes-DWcNcOjh.js.map → field-affordance-recipes-D6H7tVJi.js.map} +1 -1
  264. package/dist/field-control-attributes-B6i335wr.js +18 -0
  265. package/dist/field-control-attributes-B6i335wr.js.map +1 -0
  266. package/dist/{field-state-recipes-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
  267. package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
  268. package/dist/{filters-DzgSJpMK.js → filters-Dl80yYtN.js} +763 -605
  269. package/dist/filters-Dl80yYtN.js.map +1 -0
  270. package/dist/form-field-CAPdwdnZ.js +74 -0
  271. package/dist/form-field-CAPdwdnZ.js.map +1 -0
  272. package/dist/{form-sizing-Bs2qFUeE.js → form-sizing-CgcrUbLU.js} +2 -2
  273. package/dist/{form-sizing-Bs2qFUeE.js.map → form-sizing-CgcrUbLU.js.map} +1 -1
  274. package/dist/{forms-C0RGnJTe.js → forms-B3W8CH7-.js} +8 -8
  275. package/dist/{forms-C0RGnJTe.js.map → forms-B3W8CH7-.js.map} +1 -1
  276. package/dist/forms-numeric-CwjQJe-O.js +991 -0
  277. package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
  278. package/dist/{header-DMMxG__r.js → header-ZIIsRKxP.js} +113 -113
  279. package/dist/header-ZIIsRKxP.js.map +1 -0
  280. package/dist/hooks/use-files.d.ts +2 -0
  281. package/dist/{hooks-DB6CJ4MR.js → hooks-BitHSh-Y.js} +3 -3
  282. package/dist/{hooks-DB6CJ4MR.js.map → hooks-BitHSh-Y.js.map} +1 -1
  283. package/dist/{icon-badge-DZF-YjQp.js → icon-badge-npxF1SLX.js} +2 -2
  284. package/dist/{icon-badge-DZF-YjQp.js.map → icon-badge-npxF1SLX.js.map} +1 -1
  285. package/dist/index.js +1 -1
  286. package/dist/{input-CvyDQlY7.js → input-7KAc7XQL.js} +6 -6
  287. package/dist/{input-CvyDQlY7.js.map → input-7KAc7XQL.js.map} +1 -1
  288. package/dist/{input-DMBwAZmr.js → input-DIREVYHs.js} +3 -3
  289. package/dist/{input-DMBwAZmr.js.map → input-DIREVYHs.js.map} +1 -1
  290. package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
  291. package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
  292. package/dist/{item-DjCcM18E.js → item-FfWnaYST.js} +99 -98
  293. package/dist/item-FfWnaYST.js.map +1 -0
  294. package/dist/layout/app-shell.js +1 -1
  295. package/dist/layout/auth.js +1 -1
  296. package/dist/layout/containers.js +1 -1
  297. package/dist/layout/header.js +1 -1
  298. package/dist/layout/hooks.js +1 -1
  299. package/dist/layout/navigation.js +1 -1
  300. package/dist/layout/page.js +1 -1
  301. package/dist/layout/settings.js +1 -1
  302. package/dist/layout/sidebar.js +2 -2
  303. package/dist/layout/workspace.js +1 -1
  304. package/dist/layout.js +11 -11
  305. package/dist/layout.types-E_GAApzO.js +30 -0
  306. package/dist/layout.types-E_GAApzO.js.map +1 -0
  307. package/dist/lib/field-control-attributes.d.ts +11 -0
  308. package/dist/lib/field-state-recipes.d.ts +2 -0
  309. package/dist/lib/format.d.ts +1 -0
  310. package/dist/lib/surface-recipes.d.ts +1 -1
  311. package/dist/lib/token-merge.generated.d.ts +6 -6
  312. package/dist/lib/utils.js +1 -1
  313. package/dist/{media-gallery-C-vChPmE.js → media-gallery-C81DAnKI.js} +6 -6
  314. package/dist/{media-gallery-C-vChPmE.js.map → media-gallery-C81DAnKI.js.map} +1 -1
  315. package/dist/{mentions-0_4nWuI-.js → mentions-qOnedSt4.js} +236 -167
  316. package/dist/mentions-qOnedSt4.js.map +1 -0
  317. package/dist/message-BJHnn43M.js +135 -0
  318. package/dist/message-BJHnn43M.js.map +1 -0
  319. package/dist/{metadata-list-C3MkU-Om.js → metadata-list-XkqZ_UXH.js} +11 -11
  320. package/dist/{metadata-list-C3MkU-Om.js.map → metadata-list-XkqZ_UXH.js.map} +1 -1
  321. package/dist/{navigation-DaRjthVk.js → navigation-BgtPJAhi.js} +119 -119
  322. package/dist/navigation-BgtPJAhi.js.map +1 -0
  323. package/dist/{navigation-C90-oQFq.js → navigation-Bt-v7rWP.js} +52 -46
  324. package/dist/navigation-Bt-v7rWP.js.map +1 -0
  325. package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
  326. package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
  327. package/dist/{number-CRU3kGuk.js → number-CYqBcrSj.js} +78 -86
  328. package/dist/number-CYqBcrSj.js.map +1 -0
  329. package/dist/{overflow-tab-bar-IVFVQFV6.js → overflow-tab-bar-BQCA2Zn2.js} +7 -7
  330. package/dist/{overflow-tab-bar-IVFVQFV6.js.map → overflow-tab-bar-BQCA2Zn2.js.map} +1 -1
  331. package/dist/{overlays-BSgCtM2v.js → overlays-CC8zI3Du.js} +264 -260
  332. package/dist/overlays-CC8zI3Du.js.map +1 -0
  333. package/dist/{page-DUUKDAjo.js → page-BoQ1VaFJ.js} +13 -13
  334. package/dist/{page-DUUKDAjo.js.map → page-BoQ1VaFJ.js.map} +1 -1
  335. package/dist/{page-header-commands-7P3sfE9u.js → page-header-commands-DIKspJfx.js} +4 -4
  336. package/dist/{page-header-commands-7P3sfE9u.js.map → page-header-commands-DIKspJfx.js.map} +1 -1
  337. package/dist/{pagination-CgCjElfu.js → pagination-Br8TdV9A.js} +4 -4
  338. package/dist/{pagination-CgCjElfu.js.map → pagination-Br8TdV9A.js.map} +1 -1
  339. package/dist/{popover-B85RenIl.js → popover-k8TdUcAt.js} +10 -10
  340. package/dist/popover-k8TdUcAt.js.map +1 -0
  341. package/dist/{popover-menu-DlnQ2zlR.js → popover-menu-yn-o0kyA.js} +7 -7
  342. package/dist/{popover-menu-DlnQ2zlR.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
  343. package/dist/{popover.recipes-DdiEp0rd.js → popover.recipes-DJ0AkUan.js} +2 -2
  344. package/dist/{popover.recipes-DdiEp0rd.js.map → popover.recipes-DJ0AkUan.js.map} +1 -1
  345. package/dist/{portal-recipes-BpsV_iRw.js → portal-recipes-DyUXqUtD.js} +2 -2
  346. package/dist/{portal-recipes-BpsV_iRw.js.map → portal-recipes-DyUXqUtD.js.map} +1 -1
  347. package/dist/{primitives-ByWgGUgt.js → primitives-BkkQjYl7.js} +22 -17
  348. package/dist/primitives-BkkQjYl7.js.map +1 -0
  349. package/dist/primitives.js +4 -4
  350. package/dist/{progress-BJhQP9WX.js → progress-DZFXXzPs.js} +4 -4
  351. package/dist/{progress-BJhQP9WX.js.map → progress-DZFXXzPs.js.map} +1 -1
  352. package/dist/{receipt-tOc7B3hw.js → receipt-C7LhOg7Q.js} +6 -6
  353. package/dist/{receipt-tOc7B3hw.js.map → receipt-C7LhOg7Q.js.map} +1 -1
  354. package/dist/rich-text-BnTzZjIo.js +45 -0
  355. package/dist/rich-text-BnTzZjIo.js.map +1 -0
  356. package/dist/rich-text-editor-CAurDwT5.js +1273 -0
  357. package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
  358. package/dist/{rich-text-editor-toolbar-laT3tpBT.js → rich-text-editor-toolbar-DbXig7Jk.js} +36 -35
  359. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
  360. package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
  361. package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
  362. package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
  363. package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
  364. package/dist/{scroll-area-B0dB2cBi.js → scroll-area-Bj6CRUif.js} +2 -2
  365. package/dist/{scroll-area-B0dB2cBi.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
  366. package/dist/{separator-Bb17I4pu.js → separator-B9ewiCGO.js} +2 -2
  367. package/dist/{separator-Bb17I4pu.js.map → separator-B9ewiCGO.js.map} +1 -1
  368. package/dist/{separator-Ct_WSWTJ.js → separator-DM6gs2vu.js} +3 -3
  369. package/dist/{separator-Ct_WSWTJ.js.map → separator-DM6gs2vu.js.map} +1 -1
  370. package/dist/services/actions.js +1 -1
  371. package/dist/settings-DZPHgpx4.js +155 -0
  372. package/dist/settings-DZPHgpx4.js.map +1 -0
  373. package/dist/{sheet-BGPERY55.js → sheet-C4DHsgLk.js} +6 -6
  374. package/dist/{sheet-BGPERY55.js.map → sheet-C4DHsgLk.js.map} +1 -1
  375. package/dist/sidebar-C8BnDwTH.js +709 -0
  376. package/dist/sidebar-C8BnDwTH.js.map +1 -0
  377. package/dist/{sidebar-f9gRWXIR.js → sidebar-CmD6a-HK.js} +16 -13
  378. package/dist/sidebar-CmD6a-HK.js.map +1 -0
  379. package/dist/{skeleton-BapcJd9C.js → skeleton-DDgdhmu9.js} +5 -5
  380. package/dist/{skeleton-BapcJd9C.js.map → skeleton-DDgdhmu9.js.map} +1 -1
  381. package/dist/{smart-card-CW0hjetE.js → smart-card-B6vLxqa_.js} +8 -8
  382. package/dist/{smart-card-CW0hjetE.js.map → smart-card-B6vLxqa_.js.map} +1 -1
  383. package/dist/{structure-DuxKl954.js → structure-DZJ2wbAU.js} +2 -2
  384. package/dist/{structure-DuxKl954.js.map → structure-DZJ2wbAU.js.map} +1 -1
  385. package/dist/style.css +1 -1
  386. package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
  387. package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
  388. package/dist/{table-CFOWY9pQ.js → table-CBonSdTp.js} +534 -486
  389. package/dist/table-CBonSdTp.js.map +1 -0
  390. package/dist/{table-B4TE7iOV.js → table-CXSPHH25.js} +75 -71
  391. package/dist/table-CXSPHH25.js.map +1 -0
  392. package/dist/{tabs-e7ko9S2o.js → tabs-C4Kr_hCr.js} +50 -49
  393. package/dist/tabs-C4Kr_hCr.js.map +1 -0
  394. package/dist/{text-inputs-B1culiSK.js → text-inputs-jdkS3ReG.js} +9 -9
  395. package/dist/{text-inputs-B1culiSK.js.map → text-inputs-jdkS3ReG.js.map} +1 -1
  396. package/dist/{timelines-D3Sl9ueq.js → timelines-CoPwdJP0.js} +10 -10
  397. package/dist/{timelines-D3Sl9ueq.js.map → timelines-CoPwdJP0.js.map} +1 -1
  398. package/dist/{tooltip-8wz5S_Zr.js → tooltip-31NwIpTo.js} +4 -4
  399. package/dist/{tooltip-8wz5S_Zr.js.map → tooltip-31NwIpTo.js.map} +1 -1
  400. package/dist/{tree-CzUJHnFs.js → tree-CeYVzdFE.js} +6 -6
  401. package/dist/{tree-CzUJHnFs.js.map → tree-CeYVzdFE.js.map} +1 -1
  402. package/dist/typography/rich-text.js +1 -1
  403. package/dist/{typography-BQnine1k.js → typography-C7-YMW1S.js} +2 -2
  404. package/dist/{typography-BQnine1k.js.map → typography-C7-YMW1S.js.map} +1 -1
  405. package/dist/typography.js +1 -1
  406. package/dist/{upload-BOW6U2tI.js → upload-Hdm5gObf.js} +303 -291
  407. package/dist/upload-Hdm5gObf.js.map +1 -0
  408. package/dist/{upload-queue-qUXn1ykN.js → upload-queue-D0sYPuqo.js} +8 -8
  409. package/dist/{upload-queue-qUXn1ykN.js.map → upload-queue-D0sYPuqo.js.map} +1 -1
  410. package/dist/{usage-card-BeSLY0i0.js → usage-card-9s8hLDfn.js} +9 -9
  411. package/dist/{usage-card-BeSLY0i0.js.map → usage-card-9s8hLDfn.js.map} +1 -1
  412. package/dist/{utils-B6kKb8jB.js → utils-DhuoqFy4.js} +31 -37
  413. package/dist/utils-DhuoqFy4.js.map +1 -0
  414. package/dist/{value-inputs-skdVB2zh.js → value-inputs-D3aPgq9H.js} +15 -15
  415. package/dist/{value-inputs-skdVB2zh.js.map → value-inputs-D3aPgq9H.js.map} +1 -1
  416. package/dist/{value-typography-uAmWUAL1.js → value-typography-uSzzG9Gf.js} +32 -26
  417. package/dist/value-typography-uSzzG9Gf.js.map +1 -0
  418. package/dist/{workspace-DHeHv0qw.js → workspace-CC8Vchiu.js} +12 -12
  419. package/dist/{workspace-DHeHv0qw.js.map → workspace-CC8Vchiu.js.map} +1 -1
  420. package/docs/consumer-skill/examples/edit.tsx +3 -3
  421. package/docs/consumer-skill/references/agents-md.md +19 -19
  422. package/docs/consumer-skill/references/analytics.md +15 -0
  423. package/docs/consumer-skill/references/component-contracts.json +14724 -13057
  424. package/docs/consumer-skill/references/composition.md +21 -4
  425. package/docs/consumer-skill/references/design-contract.md +1 -0
  426. package/docs/consumer-skill/references/installation.md +51 -8
  427. package/docs/consumer-skill/references/integration.md +24 -1
  428. package/docs/consumer-skill/references/public-api.json +172 -34
  429. package/docs/consumer-skill/references/review.md +51 -11
  430. package/docs/consumer-skill/references/rhf-workflows.md +72 -0
  431. package/docs/consumer-skill/references/theming.md +7 -2
  432. package/docs/consumer-skill/references/tokens.json +1 -1
  433. package/docs/consumer-skill/scripts/composition-policy.mjs +144 -30
  434. package/docs/consumer-skill/scripts/setup-skills.mjs +46 -9
  435. package/package.json +4 -2
  436. package/templates/admin-shell-template.tsx +1 -2
  437. package/templates/customers-template.tsx +18 -16
  438. package/dist/accordion-B9MHG0cT.js.map +0 -1
  439. package/dist/ai-artifact-C58tQcBy.js.map +0 -1
  440. package/dist/auth-DTkkshS8.js.map +0 -1
  441. package/dist/breadcrumbs-J-K2kl4c.js.map +0 -1
  442. package/dist/choice-inputs-zUgBZfE4.js.map +0 -1
  443. package/dist/combobox-BwzoXFSG.js +0 -884
  444. package/dist/combobox-BwzoXFSG.js.map +0 -1
  445. package/dist/comments-Dmpp0YIc.js.map +0 -1
  446. package/dist/data-display-BdgCAw8T.js.map +0 -1
  447. package/dist/date-picker-RlIzKom_.js +0 -1551
  448. package/dist/date-picker-RlIzKom_.js.map +0 -1
  449. package/dist/date-pickers-DY-CpXS1.js +0 -179
  450. package/dist/date-pickers-DY-CpXS1.js.map +0 -1
  451. package/dist/feedback-Dm4izqFn.js +0 -240
  452. package/dist/feedback-Dm4izqFn.js.map +0 -1
  453. package/dist/filters-DzgSJpMK.js.map +0 -1
  454. package/dist/form-field-BriWAXyg.js +0 -63
  455. package/dist/form-field-BriWAXyg.js.map +0 -1
  456. package/dist/forms-numeric-DIhghX1Q.js +0 -910
  457. package/dist/forms-numeric-DIhghX1Q.js.map +0 -1
  458. package/dist/header-DMMxG__r.js.map +0 -1
  459. package/dist/item-DjCcM18E.js.map +0 -1
  460. package/dist/layout.types-Cn7aUzJp.js +0 -20
  461. package/dist/layout.types-Cn7aUzJp.js.map +0 -1
  462. package/dist/mentions-0_4nWuI-.js.map +0 -1
  463. package/dist/message-g8p7eVtN.js +0 -128
  464. package/dist/message-g8p7eVtN.js.map +0 -1
  465. package/dist/navigation-C90-oQFq.js.map +0 -1
  466. package/dist/navigation-DaRjthVk.js.map +0 -1
  467. package/dist/number-CRU3kGuk.js.map +0 -1
  468. package/dist/overlays-BSgCtM2v.js.map +0 -1
  469. package/dist/popover-B85RenIl.js.map +0 -1
  470. package/dist/primitives-ByWgGUgt.js.map +0 -1
  471. package/dist/rich-text-Dth5E882.js +0 -78
  472. package/dist/rich-text-Dth5E882.js.map +0 -1
  473. package/dist/rich-text-editor-C1fOjBTd.js +0 -1195
  474. package/dist/rich-text-editor-C1fOjBTd.js.map +0 -1
  475. package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +0 -1
  476. package/dist/safe-image-src-C6kQSMBZ.js +0 -17
  477. package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
  478. package/dist/sanitize-html-DsQmI48u.js.map +0 -1
  479. package/dist/settings-Bar5wiSo.js +0 -167
  480. package/dist/settings-Bar5wiSo.js.map +0 -1
  481. package/dist/sidebar-D-JYMMbY.js +0 -686
  482. package/dist/sidebar-D-JYMMbY.js.map +0 -1
  483. package/dist/sidebar-f9gRWXIR.js.map +0 -1
  484. package/dist/table-B4TE7iOV.js.map +0 -1
  485. package/dist/table-CFOWY9pQ.js.map +0 -1
  486. package/dist/tabs-e7ko9S2o.js.map +0 -1
  487. package/dist/upload-BOW6U2tI.js.map +0 -1
  488. package/dist/utils-B6kKb8jB.js.map +0 -1
  489. package/dist/value-typography-uAmWUAL1.js.map +0 -1
@@ -1,9 +1,11 @@
1
1
  import { type ComponentProps } from 'react';
2
2
  import { PopoverContent } from '../../../base/popover';
3
- import { type FilterConfig, type FilterTriggerSource } from '../filters.types';
3
+ import { type FilterConfig, type FilterOperator, type FilterTriggerSource } from '../filters.types';
4
4
  export interface FilterPopoverContentProps {
5
5
  /** Which filter the popover is currently editing. */
6
6
  activeFilterInPopover: FilterConfig | null;
7
+ /** Active operator when the caller already owns the displayed selection. */
8
+ operator?: FilterOperator;
7
9
  /** Filters the user may add. */
8
10
  availableFilters: FilterConfig[];
9
11
  /** Filters currently applied. */
@@ -33,4 +35,4 @@ export interface FilterPopoverContentProps {
33
35
  * The component is used to wrap filter content in a consistent
34
36
  * popover interface across different filter types.
35
37
  */
36
- export declare function FilterPopoverContent({ activeFilterInPopover, availableFilters, activeFilters, getFilterValue, setFilterValue, onFilterSelect, onBackToFilterList, onClose, triggerSource, finalFocus, }: FilterPopoverContentProps): import("react").JSX.Element;
38
+ export declare function FilterPopoverContent({ activeFilterInPopover, operator, availableFilters, activeFilters, getFilterValue, setFilterValue, onFilterSelect, onBackToFilterList, onClose, triggerSource, finalFocus, }: FilterPopoverContentProps): import("react").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import type { FilterConfig, FilterOperator, FilterTriggerSource } from '../filters.types';
2
+ interface RangeFilterContentProps {
3
+ filter: FilterConfig;
4
+ operator: FilterOperator;
5
+ value: string[];
6
+ onFilterChange: (value: string[]) => void;
7
+ onBackToFilterList: () => void;
8
+ onClose: () => void;
9
+ triggerSource: FilterTriggerSource;
10
+ }
11
+ export declare function RangeFilterContent({ filter, operator, value, onFilterChange, onBackToFilterList, onClose, triggerSource }: RangeFilterContentProps): import("react").JSX.Element;
12
+ export {};
@@ -1,6 +1,10 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import type { CascaderNode } from '../../../base/cascader';
3
- import type { FilterConfig, FilterDependency, FilterOption } from '../filters.types';
3
+ import type { FilterConfig, FilterDependency, FilterOperator, FilterOption } from '../filters.types';
4
+ export declare function getRangeBounds(value: readonly string[], operator?: FilterOperator): [min: string, max: string];
5
+ export declare function isCompleteDateRange(value: readonly string[]): boolean;
6
+ /** Filter dates use local calendar days or the app's explicit parameter format. */
7
+ export declare function parseFilterDate(value: string | undefined, pattern?: string): Date | undefined;
4
8
  /**
5
9
  * The option for a value and its ancestors, searching nested options.
6
10
  */
@@ -2,4 +2,4 @@ import type { MediaLibraryAccessors, MediaLibraryItem, ResolvedMediaLibraryAcces
2
2
  export declare function resolveMediaLibraryAccessors<TItem = MediaLibraryItem>(accessors?: MediaLibraryAccessors<TItem>): ResolvedMediaLibraryAccessors<TItem>;
3
3
  export declare function formatMediaLibrarySize(bytes?: number): string;
4
4
  export declare function getMediaLibraryDimensions<TItem>(item: TItem, accessors: ResolvedMediaLibraryAccessors<TItem>): string;
5
- export declare function useMediaLibrary<TItem = MediaLibraryItem>({ items: itemsProp, fetcher, accessors: accessorsProp, selectionMode, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onUpload, onError, tab: tabProp, defaultTab, onTabChange, view: viewProp, defaultView, onViewChange, query: queryProp, defaultQuery, onQueryChange, type: typeProp, defaultType, onTypeChange, collection: collectionProp, defaultCollection, onCollectionChange, sort: sortProp, defaultSort, onSortChange, uploadOptions: uploadOptionsProp, defaultUploadOptions, onUploadOptionsChange, selecting: selectingProp, defaultSelecting, onSelectingChange, }?: UseMediaLibraryOptions<TItem>): MediaLibraryState<TItem>;
5
+ export declare function useMediaLibrary<TItem = MediaLibraryItem>({ items: itemsProp, fetcher, refreshKey, accessors: accessorsProp, selectionMode, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onUpload, onError, tab: tabProp, defaultTab, onTabChange, view: viewProp, defaultView, onViewChange, query: queryProp, defaultQuery, onQueryChange, type: typeProp, defaultType, onTypeChange, collection: collectionProp, defaultCollection, onCollectionChange, sort: sortProp, defaultSort, onSortChange, uploadOptions: uploadOptionsProp, defaultUploadOptions, onUploadOptionsChange, selecting: selectingProp, defaultSelecting, onSelectingChange, }?: UseMediaLibraryOptions<TItem>): MediaLibraryState<TItem>;
@@ -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, titleSuffix, description, confirmLabel, cancelLabel, selectionMode, density, showMeta, allowUpload, typeFilters, confirmOnSelect, onConfirm, onCancel, onClose, bulkActions, strings: stringsProp, slots, heightClassName, className, items, fetcher, accessors, collections, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onItemReplace, onItemOpen, onUpload, onError, selecting, defaultSelecting, onSelectingChange, 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, bulkActions, strings: stringsProp, slots, heightClassName, className, items, fetcher, refreshKey, accessors, collections, value, defaultValue, onValueChange, onItemUpdate, onItemDelete, onItemReplace, onItemOpen, onUpload, onError, selecting, defaultSelecting, onSelectingChange, 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;
@@ -81,6 +81,11 @@ export interface MediaLibraryStrings {
81
81
  replace: string;
82
82
  delete: string;
83
83
  close: string;
84
+ mutationError?: string;
85
+ confirmDeleteTitle?: string;
86
+ confirmDeleteDescription?: string;
87
+ confirmDeleteLabel?: string;
88
+ confirmDeleteError?: string;
84
89
  };
85
90
  upload: {
86
91
  dropTitle: string;
@@ -96,6 +101,7 @@ export interface MediaLibraryStrings {
96
101
  removeFile: string;
97
102
  uploading: string;
98
103
  done: string;
104
+ error?: string;
99
105
  };
100
106
  footer: {
101
107
  pickOne: string;
@@ -89,6 +89,8 @@ export type MediaLibraryFetcher<TItem = MediaLibraryItem> = (params: MediaLibrar
89
89
  export interface MediaLibraryUploadHelpers {
90
90
  /** Aborted when the user cancels or the media-library instance unmounts. */
91
91
  signal: AbortSignal;
92
+ /** IDs in the same order as the files passed to this upload call. */
93
+ fileIds?: readonly string[];
92
94
  setProgress: (fileId: string, progress: number) => void;
93
95
  setFileStatus: (fileId: string, status: MediaLibraryUploadStatus, error?: string) => void;
94
96
  }
@@ -154,6 +156,9 @@ export interface MediaLibraryDetailRenderContext<TItem = MediaLibraryItem> {
154
156
  /** Reads id, name, URL, type, and size off your own asset shape. */
155
157
  accessors: ResolvedMediaLibraryAccessors<TItem>;
156
158
  update: (patch: MediaLibraryItemPatch) => Promise<boolean>;
159
+ /** The most recent failed mutation for this asset. */
160
+ mutationError?: MediaLibraryState<TItem>['mutationError'];
161
+ /** In MediaLibrary, resolves after the user confirms or cancels removal. */
157
162
  remove: () => Promise<boolean>;
158
163
  /** Requests the consumer's replacement workflow for this inspected item, when supported. */
159
164
  replace?: () => void;
@@ -185,7 +190,7 @@ export interface MediaLibraryState<TItem = MediaLibraryItem> {
185
190
  visibleItems: TItem[];
186
191
  /** Ids of the currently selected assets. */
187
192
  selectedIds: string[];
188
- /** The currently selected assets, resolved from their ids. */
193
+ /** The selected assets that have been loaded or uploaded, including earlier server results. */
189
194
  selectedItems: TItem[];
190
195
  /** Ids of the currently selected assets, for fast lookup per row. */
191
196
  selectedSet: Set<string>;
@@ -200,7 +205,20 @@ export interface MediaLibraryState<TItem = MediaLibraryItem> {
200
205
  setSelecting: (selecting: boolean) => void;
201
206
  clearFilters: () => void;
202
207
  loading: boolean;
208
+ /** Whether remote or newly uploaded results are available during a request. */
209
+ hasLoadedResults?: boolean;
210
+ /** Legacy operation error. Cleared when the next load, mutation or upload starts. */
203
211
  error: unknown;
212
+ /** The current fetch failure. Local mode has no load error. */
213
+ loadError?: unknown;
214
+ /** The most recent failed update or delete, with the affected asset ID. */
215
+ mutationError?: {
216
+ itemId: string;
217
+ operation: 'update' | 'delete';
218
+ cause: unknown;
219
+ } | null;
220
+ /** The current upload request failure, separate from individual file statuses. */
221
+ uploadError?: unknown;
204
222
  /** Runs the fetcher again for the current query after a failure; does nothing in local mode. */
205
223
  retry: () => void;
206
224
  hasFilters: boolean;
@@ -218,9 +236,9 @@ export interface MediaLibraryState<TItem = MediaLibraryItem> {
218
236
  uploading: boolean;
219
237
  startUpload: () => Promise<void>;
220
238
  cancelUpload: () => void;
221
- /** Resolves `false` after rollback when the consumer mutation fails. */
239
+ /** Requires `onItemUpdate`. Resolves `false` when unavailable or after a failed edit rolls back. */
222
240
  updateItem: (item: TItem, patch: MediaLibraryItemPatch) => Promise<boolean>;
223
- /** Resolves `false` after rollback when the consumer mutation fails. */
241
+ /** Requires `onItemDelete`. Resolves `false` when unavailable or after a failed delete rolls back. */
224
242
  removeItem: (item: TItem) => Promise<boolean>;
225
243
  /** Reads id, name, URL, type, and size off your own asset shape. */
226
244
  accessors: ResolvedMediaLibraryAccessors<TItem>;
@@ -246,6 +264,8 @@ export interface UseMediaLibraryOptions<TItem = MediaLibraryItem> {
246
264
  * the returned assets itself.
247
265
  */
248
266
  fetcher?: MediaLibraryFetcher<TItem>;
267
+ /** Change this key to reload the current remote query. Callback identity alone does not reload it. */
268
+ refreshKey?: string | number;
249
269
  /**
250
270
  * Reads id, name, URL, type, and size off your own asset shape. Omit only
251
271
  * when items already match `MediaLibraryItem`.
@@ -259,11 +279,11 @@ export interface UseMediaLibraryOptions<TItem = MediaLibraryItem> {
259
279
  value?: readonly string[];
260
280
  /** Initially selected asset ids, for uncontrolled use. */
261
281
  defaultValue?: readonly string[];
262
- /** Fired with the selected ids and their resolved assets. */
282
+ /** Fired with every selected id and the records loaded or uploaded so far. */
263
283
  onValueChange?: (ids: string[], items: TItem[]) => void;
264
- /** Applies an edit to an asset's metadata. May be awaited. */
284
+ /** Applies a metadata edit. Without it, details are read-only. May be awaited. */
265
285
  onItemUpdate?: (item: TItem, patch: MediaLibraryItemPatch) => void | Promise<void>;
266
- /** Removes an asset. May be awaited. */
286
+ /** Persists removal. The built-in library asks for confirmation and only offers Delete with this callback. */
267
287
  onItemDelete?: (item: TItem) => void | Promise<void>;
268
288
  /** Fired when an entry is uploaded. */
269
289
  onUpload?: MediaLibraryUploadHandler<TItem>;
@@ -360,7 +380,7 @@ export interface MediaLibraryProps<TItem = MediaLibraryItem> extends Omit<Compon
360
380
  * and skipping the footer. Suits single-select pickers.
361
381
  */
362
382
  confirmOnSelect?: boolean;
363
- /** Fired with the chosen assets and their ids. */
383
+ /** Fired with every chosen ID and the selected records loaded or uploaded so far. */
364
384
  onConfirm?: (items: TItem[], ids: string[]) => void;
365
385
  /** Fired when the user backs out without choosing. */
366
386
  onCancel?: () => void;
@@ -534,8 +554,14 @@ export interface MediaLibraryDetailPanelProps<TItem = MediaLibraryItem> {
534
554
  strings: MediaLibraryStrings;
535
555
  onClose: () => void;
536
556
  onUpdate: (patch: MediaLibraryItemPatch) => Promise<boolean>;
537
- /** Fired when an entry is removed. */
557
+ /** Keeps metadata visible while preventing edits. */
558
+ readOnly?: boolean;
559
+ /** A failed mutation for the inspected asset. */
560
+ mutationError?: MediaLibraryState<TItem>['mutationError'];
561
+ /** Requests removal. */
538
562
  onRemove: () => Promise<boolean>;
563
+ /** Offers the Delete action and enables removal from custom details. Defaults to true. */
564
+ allowDelete?: boolean;
539
565
  /** Opens the consumer-owned replacement workflow for the inspected item. */
540
566
  onReplace?: () => void;
541
567
  /** Replaces the default detail rendering. */
@@ -550,6 +576,8 @@ export interface MediaLibraryUploadPanelProps {
550
576
  collections?: readonly MediaLibraryCollectionOption[];
551
577
  /** Whether an upload is in flight. */
552
578
  uploading?: boolean;
579
+ /** Shows an inline notice for a failed upload request. */
580
+ hasUploadError?: boolean;
553
581
  /** Overrides this surface's own copy. */
554
582
  strings: MediaLibraryStrings;
555
583
  onFiles: (files: File[]) => void;
@@ -3,8 +3,8 @@ 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, selecting, onSelectingChange, summary, disabled, }: MediaLibraryToolbarProps): import("react").JSX.Element;
4
4
  export declare function MediaLibraryCard<TItem>({ item, selected, density, showMeta, accessors, strings, onToggle, onDetails, onOpen, selecting, className, }: MediaLibraryCardProps<TItem>): import("react").JSX.Element;
5
5
  export declare function MediaLibraryList<TItem>({ items, selectedSet, accessors, strings, onToggle, onDetails, onOpen, selecting, }: MediaLibraryListProps<TItem>): import("react").JSX.Element;
6
- export declare function MediaLibraryDetailPanel<TItem>({ item, collections, accessors, strings, onClose, onUpdate, onRemove, onReplace, renderDetail, }: MediaLibraryDetailPanelProps<TItem>): import("react").JSX.Element | null;
7
- export declare function MediaLibraryUploadPanel({ stagedFiles, uploadOptions, collections, uploading, strings, onFiles, onRemoveFile, onOptionsChange, empty, }: MediaLibraryUploadPanelProps): import("react").JSX.Element;
6
+ export declare function MediaLibraryDetailPanel<TItem>({ item, collections, accessors, strings, onClose, onUpdate, readOnly, mutationError, onRemove, allowDelete, onReplace, renderDetail, }: MediaLibraryDetailPanelProps<TItem>): import("react").JSX.Element | null;
7
+ export declare function MediaLibraryUploadPanel({ stagedFiles, uploadOptions, collections, uploading, hasUploadError, 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
- export declare function MediaLibraryFooterActions<TItem>({ tab, selectedItems, selectedIds, stagedFiles, uploading, strings, confirmLabel, cancelLabel, onCancel, onConfirm, onUpload, onCancelUpload, className, }: MediaLibraryFooterActionsProps<TItem>): import("react").JSX.Element;
9
+ export declare function MediaLibraryFooterActions<TItem>({ tab, selectedIds, stagedFiles, uploading, strings, confirmLabel, cancelLabel, onCancel, onConfirm, onUpload, onCancelUpload, className, }: MediaLibraryFooterActionsProps<TItem>): import("react").JSX.Element;
10
10
  export declare function MediaLibraryFooter<TItem>({ tab, selectedItems, selectedIds, selectionMode, stagedFiles, uploading, strings, confirmLabel, cancelLabel, onCancel, onConfirm, onClearSelection, onUpload, onCancelUpload, chrome, className, }: MediaLibraryFooterProps<TItem>): import("react").JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { RefObject } from 'react';
1
+ import type { FocusEvent, RefObject } from 'react';
2
2
  import type { Mention, MentionSuggestion } from '../mentions.types';
3
3
  import { type UseMentionsSearchOptions, type UseMentionsSearchReturn } from './use-mentions-search';
4
4
  /**
@@ -25,6 +25,21 @@ export interface UseMentionsReturn<TResource extends string = string> extends Us
25
25
  triggerActive: boolean;
26
26
  /** Wire to the editor's `onCaretChange` to enable inline triggers. */
27
27
  handleCaretChange: () => void;
28
+ /** Whether the inline suggestions panel is open. */
29
+ inlineOpen: boolean;
30
+ /** ID to pass to the inline suggestion list. */
31
+ listboxId: string;
32
+ /** Highlighted option index, or -1 when no option is highlighted. */
33
+ activeIndex: number;
34
+ /** Completion metadata for the editable body while options are available. */
35
+ suggestionPopup?: {
36
+ listboxId: string;
37
+ activeOptionId?: string;
38
+ };
39
+ /** Handles inline navigation and returns whether the editor should consume the key. */
40
+ handleKeyDown: (event: KeyboardEvent) => boolean;
41
+ /** Bind to the wrapper containing both the editor and inline suggestions. */
42
+ handleBlur: (event: FocusEvent<HTMLElement>) => void;
28
43
  /**
29
44
  * Convert a suggestion into a Mention, register it, insert the chip
30
45
  * into the editor (replacing the trigger range when one is active),
@@ -17,6 +17,10 @@ export interface MentionInlineSuggestionsProps<TResource extends string = string
17
17
  suggestionsByKind?: Readonly<Record<string, ReadonlyArray<MentionSuggestion<TResource>>>>;
18
18
  /** Matches for the text typed after the trigger character. */
19
19
  suggestions: ReadonlyArray<MentionSuggestion<TResource>>;
20
+ /** ID shared with the editor's controlled listbox. */
21
+ listboxId?: string;
22
+ /** Highlighted option supplied by the editor's keyboard navigation. */
23
+ activeIndex?: number;
20
24
  /** Replaces the content with the loading state. */
21
25
  loading: boolean;
22
26
  /** Live query the panel echoes in the header; the consumer owns the editor input. */
@@ -33,4 +37,4 @@ export interface MentionInlineSuggestionsProps<TResource extends string = string
33
37
  /** Merged onto the outermost node. */
34
38
  className?: string;
35
39
  }
36
- export declare function MentionInlineSuggestions<TResource extends string = string>({ open, activeKind, setActiveKind, kinds, resources, suggestionsByKind, suggestions, loading, query, onManualKindChange, onSelect, strings: stringsProp, className, }: MentionInlineSuggestionsProps<TResource>): import("react").JSX.Element | null;
40
+ export declare function MentionInlineSuggestions<TResource extends string = string>({ open, activeKind, setActiveKind, kinds, resources, suggestionsByKind, suggestions, listboxId, activeIndex, loading, query, onManualKindChange, onSelect, strings: stringsProp, className, }: MentionInlineSuggestionsProps<TResource>): import("react").JSX.Element | null;
@@ -1,10 +1,3 @@
1
- /**
2
- * Split an HTML string into a list of `html` chunks and `mention`
3
- * placeholders, keyed by the `data-ref-id` attribute the writer set.
4
- *
5
- * Used by `<MentionContent>` to render the body once with React chips
6
- * for the references and `dangerouslySetInnerHTML` for everything else.
7
- */
8
1
  export type MentionHtmlSegment = {
9
2
  kind: 'html';
10
3
  value: string;
@@ -13,4 +6,5 @@ export type MentionHtmlSegment = {
13
6
  refId: string;
14
7
  fallback: string;
15
8
  };
9
+ /** @deprecated Render mentions within the original HTML tree with MentionContent. */
16
10
  export declare function splitHtmlByMentions(html: string): MentionHtmlSegment[];
@@ -11,7 +11,7 @@ export interface UseOverlayVisibilityOptions {
11
11
  defaultOpen?: boolean;
12
12
  /** Controlled visibility. Omit to let the hook own it. */
13
13
  open?: boolean;
14
- /** Fired once for every actual visibility change. */
14
+ /** Fired for each request that differs from the current visibility. */
15
15
  onOpenChange?: (open: boolean) => void;
16
16
  /** Fired after a change to open. */
17
17
  onOpen?: () => void;
@@ -33,7 +33,7 @@ export interface UseOverlayVisibilityGroupOptions<TKey extends string = string>
33
33
  defaultOpen?: Partial<Record<TKey, boolean>>;
34
34
  /** Controlled visibility per key. */
35
35
  open?: Partial<Record<TKey, boolean>>;
36
- /** Fired once for every actual change, with the key, its visibility and the next group state. */
36
+ /** Fired for each requested change, with the key, its visibility and the proposed group state. */
37
37
  onOpenChange?: (key: TKey, open: boolean, state: OverlayVisibilityGroupState<TKey>) => void;
38
38
  /** Opening one key closes the others, for one-at-a-time overlays. Default: `false`. */
39
39
  closeOthersOnOpen?: boolean;
@@ -290,7 +290,7 @@ export interface ProductOptionValue {
290
290
  export interface ProductOptionGroup {
291
291
  /** Stable identity for this entry. */
292
292
  id: string;
293
- /** Display name. */
293
+ /** Display name. Inline configuration requires text or a number. Use onEditOption for rich names. */
294
294
  name: ReactNode;
295
295
  /** Supporting copy shown under the label. */
296
296
  description?: ReactNode;
@@ -835,7 +835,7 @@ export interface ProductVariantOptionField {
835
835
  id: string;
836
836
  /** Display label. */
837
837
  label: string;
838
- /** Value shown beside the label. */
838
+ /** Fallback for an absent option value. @deprecated Set value.options or defaultValue.options on ProductVariantEditor. */
839
839
  value?: string;
840
840
  choices?: ProductChoice[];
841
841
  placeholder?: string;
@@ -83,6 +83,9 @@ export interface QuestionnaireProps extends Omit<ComponentPropsWithoutRef<'form'
83
83
  /** Controlled active question key. */
84
84
  questionId?: string;
85
85
  defaultQuestionId?: string;
86
+ /** Fired when navigation requests a question. Takes precedence over `onQuestionChange`. */
87
+ onQuestionIdChange?: (id: string) => void;
88
+ /** Legacy alias for `onQuestionIdChange`. */
86
89
  onQuestionChange?: (id: string) => void;
87
90
  disabled?: boolean;
88
91
  /** Receives only visible, enabled questions. Respect signal to cancel application requests. */
@@ -8,5 +8,5 @@ export declare function ResourceIndexShell(props: ResourceIndexShellProps): impo
8
8
  /** @deprecated Use Page from themelia-react-ui/layout/page; PageHeader is available for embedded headers. */
9
9
  export declare function ResourceShowShell(props: ResourceShowShellProps): import("react").JSX.Element;
10
10
  /** @deprecated Use Page from themelia-react-ui/layout/page; PageHeader is available for embedded headers. */
11
- export declare function TabbedResourceShell({ tabs, activeTab, onTabChange, tabsClassName, moreLabel, tabsAriaLabel, toolbar, slots, className, strings: stringsProp, ...props }: TabbedResourceShellProps): import("react").JSX.Element;
11
+ export declare function TabbedResourceShell({ tabs, activeTab, defaultActiveTab, onTabChange, tabsClassName, moreLabel, tabsAriaLabel, toolbar, slots, className, strings: stringsProp, ...props }: TabbedResourceShellProps): import("react").JSX.Element;
12
12
  export declare function ResourceDetailsSection({ metadata, metadataColumns, metadataDense, body, help, children, contentClassName, ...props }: ResourceDetailsSectionProps): import("react").JSX.Element;
@@ -188,6 +188,8 @@ export interface TabbedResourceShellProps extends ResourceShowShellProps {
188
188
  tabs: OverflowTabItem[];
189
189
  /** Controlled active tab identifier. */
190
190
  activeTab?: string;
191
+ /** Initial tab identifier when the shell manages selection. `activeTab` takes precedence. */
192
+ defaultActiveTab?: string;
191
193
  /** Called when a visible or overflow tab is selected. */
192
194
  onTabChange?: (id: string) => void;
193
195
  /** Class name for the overflow tab bar. */
@@ -3,4 +3,4 @@ export interface FormRichTextEditorProps extends Omit<RichTextEditorProps, 'valu
3
3
  /** Form field name, forwarded for native submits. */
4
4
  name: string;
5
5
  }
6
- export declare function FormRichTextEditor({ name, ...props }: FormRichTextEditorProps): import("react").JSX.Element;
6
+ export declare function FormRichTextEditor({ name, className, disabled, invalid, onBlur, ...props }: FormRichTextEditorProps): import("react").JSX.Element;
@@ -24,5 +24,5 @@ export declare function readCaretContext(): RichTextCaretContext | null;
24
24
  * range with the chip atomically — no manual text-content mutation, no
25
25
  * timing races between "delete" and "insert".
26
26
  */
27
- export declare function replaceBeforeCaret(editor: TiptapEditor | null, length: number, html: string, notifyChange: (next: string) => void): void;
27
+ export declare function replaceBeforeCaret(editor: TiptapEditor | null, length: number, html: string, notifyChange?: (next: string) => void): void;
28
28
  export declare function insertHtmlIntoEditable(editable: HTMLElement | null, html: string): void;
@@ -0,0 +1,14 @@
1
+ export declare function editorFieldAria(label: string, listboxId?: string, activeOptionId?: string): {
2
+ readonly role: "textbox";
3
+ readonly 'aria-label': string;
4
+ readonly 'aria-multiline': "true";
5
+ } | {
6
+ readonly 'aria-activedescendant'?: string | undefined;
7
+ readonly role: "combobox";
8
+ readonly 'aria-label': string;
9
+ readonly 'aria-expanded': "true";
10
+ readonly 'aria-haspopup': "listbox";
11
+ readonly 'aria-autocomplete': "list";
12
+ readonly 'aria-controls': string;
13
+ readonly 'aria-multiline'?: undefined;
14
+ };
@@ -6,6 +6,8 @@ export interface RichTextEditorToolbarProps {
6
6
  buttons: ToolbarButtonConfig[];
7
7
  /** Additional controls appended to the toolbar. */
8
8
  extraToolbarItems?: ReadonlyArray<RichTextEditorToolbarItem>;
9
+ /** Active values read from the editor's transaction subscription. */
10
+ extraToolbarActive?: readonly boolean[];
9
11
  /** Hides the control that switches to HTML source. */
10
12
  hideSourceToggle?: boolean;
11
13
  /** Whether the editor is currently showing HTML source. */
@@ -27,7 +29,7 @@ export interface RichTextEditorToolbarProps {
27
29
  /** Merged onto the outermost node. */
28
30
  className?: string;
29
31
  }
30
- export declare function RichTextEditorToolbar({ buttons, extraToolbarItems, hideSourceToggle, sourceMode, toggleSourceMode, disabled, hasEditor, toolbarTrailing, strings, className, }: RichTextEditorToolbarProps): import("react").JSX.Element;
32
+ export declare function RichTextEditorToolbar({ buttons, extraToolbarItems, extraToolbarActive, hideSourceToggle, sourceMode, toggleSourceMode, disabled, hasEditor, toolbarTrailing, strings, className, }: RichTextEditorToolbarProps): import("react").JSX.Element;
31
33
  export declare namespace RichTextEditorToolbar {
32
34
  var displayName: string;
33
35
  }
@@ -11,7 +11,7 @@ export declare const richTextEditorRecipes: {
11
11
  readonly placeholder: "pointer-events-none absolute inset-0 p-surface-xs";
12
12
  /** Inline inset for the regions under the body (image details, counts, footer slot). */
13
13
  readonly regionX: "px-surface-xs";
14
- readonly frame: "min-w-0 overflow-hidden border-input bg-background rounded-radius border";
14
+ readonly frame: string;
15
15
  readonly disabled: "opacity-50";
16
16
  readonly disabledControl: "disabled:opacity-100 aria-disabled:opacity-100";
17
17
  readonly content: "h-full [&_.ProseMirror]:h-full [&_.ProseMirror]:min-h-full [&_.ProseMirror]:outline-none";
@@ -1,5 +1,6 @@
1
- import type { ComponentType, ReactNode } from 'react';
1
+ import type { ComponentType, FocusEventHandler, ReactNode } from 'react';
2
2
  import type * as TiptapReact from '@tiptap/react';
3
+ import type { FieldControlAttributes } from '../../../lib/field-control-attributes';
3
4
  import type { StringsProp } from '../../../lib/strings';
4
5
  import type { RichTextImageRendering } from '../../typography/rich-text';
5
6
  import type { RichTextEditorStrings } from './rich-text-editor.strings';
@@ -94,11 +95,15 @@ export interface RichTextEditorImages extends RichTextImageRendering {
94
95
  }
95
96
  /** Body floor roles for the rich text editor. */
96
97
  export type RichTextEditorBodyHeight = 'control' | 'field' | 'document';
97
- export interface RichTextEditorProps {
98
+ export interface RichTextEditorProps extends FieldControlAttributes {
98
99
  /** Editor content as HTML. Controlled. */
99
100
  value: string;
100
- /** Fired with the next value. */
101
+ /** Reports the document HTML. Source edits commit when switching back to rich text. */
101
102
  onValueChange: (html: string) => void;
103
+ /** Includes the committed HTML under this name in native form submissions. */
104
+ name?: string;
105
+ /** Runs when focus leaves the editor and its toolbar. */
106
+ onBlur?: FocusEventHandler<HTMLElement>;
102
107
  /** Shown while the document is empty. */
103
108
  placeholder?: string;
104
109
  /** Tightens the toolbar and body for inline use. */
@@ -115,6 +120,8 @@ export interface RichTextEditorProps {
115
120
  maxHeight?: string;
116
121
  /** Renders the entry as unselectable. */
117
122
  disabled?: boolean;
123
+ /** Marks the editable field invalid and applies the shared field state. */
124
+ invalid?: boolean;
118
125
  /** Show character and word counts in a footer bar. */
119
126
  showCounts?: boolean;
120
127
  /** Optional character limit — displayed as "X / max" when showCounts is true. */
@@ -137,6 +144,13 @@ export interface RichTextEditorProps {
137
144
  * comment composer to detect `@`-style trigger characters.
138
145
  */
139
146
  onCaretChange?: () => void;
147
+ /** Consumes an editable-body key before the editor handles it. Return true to handle the key. */
148
+ onEditorKeyDown?: (event: KeyboardEvent) => boolean;
149
+ /** Associates the editable body with an open inline completion listbox. */
150
+ suggestionPopup?: {
151
+ listboxId: string;
152
+ activeOptionId?: string;
153
+ };
140
154
  /** Per-instance string overrides (deep-merged over `defaultRichTextEditorStrings`). */
141
155
  strings?: StringsProp<RichTextEditorStrings>;
142
156
  /**
@@ -15,9 +15,13 @@ export interface UseSchemaFormResult extends SchemaFormSubmitHelpers {
15
15
  errors: SchemaFormErrors;
16
16
  getFieldError: (key: string) => string | undefined;
17
17
  getFieldValue: (key: string) => SchemaFormValue;
18
+ /** Reads the latest values, including writes made in the current event. */
19
+ getValues: () => SchemaFormValues;
18
20
  setFieldValue: (key: string, value: SchemaFormValue) => void;
19
21
  setValues: (values: SchemaFormValues) => void;
22
+ /** Registers a field editor's current parse validity with form validation. */
23
+ setFieldParseValidity: (key: string, valid: boolean) => void;
20
24
  reset: () => SchemaFormValues;
21
25
  validate: () => boolean;
22
26
  }
23
- export declare function useSchemaForm({ fields, value, defaultValue, errors: externalErrors, onValueChange, onFieldChange, formatRequiredError, validationError, onError, }: UseSchemaFormOptions): UseSchemaFormResult;
27
+ export declare function useSchemaForm(options: UseSchemaFormOptions): UseSchemaFormResult;
@@ -5,8 +5,10 @@ export interface SchemaFormFieldRendererProps extends SchemaFormFieldContext {
5
5
  strings: SchemaFormStrings;
6
6
  /** Merged onto the outermost node. */
7
7
  className?: string;
8
+ /** Reports whether the JSON editor can parse its current draft. */
9
+ onParseValidityChange?: (key: string, valid: boolean) => void;
8
10
  }
9
- export declare function SchemaFormFieldRenderer({ field, value, values, error, disabled, required, fieldId, onValueChange, onError, strings, className, }: SchemaFormFieldRendererProps): import("react").JSX.Element;
11
+ export declare function SchemaFormFieldRenderer({ field, value, values, error, disabled, required, fieldId, onValueChange, onError, strings, className, onParseValidityChange, }: SchemaFormFieldRendererProps): import("react").JSX.Element;
10
12
  export declare namespace SchemaFormFieldRenderer {
11
13
  var displayName: string;
12
14
  }
@@ -10,7 +10,7 @@ export declare function toStringValue(value: SchemaFormValue): string;
10
10
  export declare function toStringArray(value: SchemaFormValue): string[];
11
11
  export declare function toBooleanValue(value: SchemaFormValue): boolean;
12
12
  export declare function parseNumberValue(rawValue: string, integer?: boolean): number | null;
13
- export declare function formatJsonValue(value: SchemaFormValue, indent?: number): string;
13
+ export declare function formatJsonValue(value: SchemaFormValue, indent?: number, quoteString?: boolean): string;
14
14
  export declare function parseJsonValue(rawValue: string): {
15
15
  value: SchemaFormValue;
16
16
  valid: boolean;
@@ -68,7 +68,7 @@ export interface SuggestionsComboboxProps<T> extends UseSuggestionsConfig<T> {
68
68
  renderError?: (context: SuggestionsErrorRenderContext) => ReactNode;
69
69
  /** Shows a control that clears the current selection. */
70
70
  allowClear?: boolean;
71
- /** Resets the query when the list closes without a selection. */
71
+ /** Resets the query when a results list closes. Failed queries remain available to retry. */
72
72
  clearInputOnClose?: boolean;
73
73
  /** Renders the entry as unselectable. */
74
74
  disabled?: boolean;
@@ -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, 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, selectionToolbarPlacement, totalRowCount: totalRowCountProp, storageKey, }: DataTableProps<TData, TValue>): import("react").JSX.Element;
3
+ export declare function DataTable<TData extends object, TValue = unknown>({ size, surface, headerTransparent, columns, data, loading, loadingRows, 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, selectionToolbarPlacement, totalRowCount: totalRowCountProp, storageKey, }: DataTableProps<TData, TValue>): import("react").JSX.Element;
4
4
  export declare namespace DataTable {
5
5
  var displayName: string;
6
6
  }
@@ -9,6 +9,7 @@ export { DataTableToolbar } from './table-toolbar';
9
9
  export { CellValue, CellStack, type CellStackProps, type CellStackValue, type CellValueDescriptor, type CellValueKind, type CellValueProps, type CellValueTuple, type PrimitiveCellValue, } from './partials/cell-value';
10
10
  export { TableLink, type TableLinkProps } from './partials/table-link';
11
11
  export { StatusCell, type StatusCellEntry, type StatusCellProps, StatusClusterCell, type StatusClusterCellItem, type StatusClusterCellProps, DateCell, type DateCellProps, DateMetaCell, type DateMetaCellProps, CurrencyCell, type CurrencyCellProps, AvatarCell, type AvatarCellProps, ResourceCell, type ResourceCellBadge, type ResourceCellLinkProps, type ResourceCellMetadataItem, type ResourceCellProps, } from './partials/cell-renderers';
12
+ export type { ColumnDef } from '@tanstack/react-table';
12
13
  export * from './table.types';
13
14
  export { defaultDataTableStrings, mergeDataTableStrings } from './table.strings';
14
15
  export { handleRowSelectionChange, handleSortingChange, handleColumnVisibilityChange, getRowClassName, getCellClassName, getSelectedRowsData, createRowSelectionCheckbox, createHeaderSelectionCheckbox, addSelectionColumn, } from './table-helpers';
@@ -1,5 +1,5 @@
1
1
  import { type DataTableBodyProps } from './table.types';
2
- export declare function DataTableBody<TData>({ table, onRowClick, emptyStateMessage, emptyStateAction, cellClassName, rowClassName, stickyFirstColumn, striped, strings, }: DataTableBodyProps<TData>): import("react").JSX.Element;
2
+ export declare function DataTableBody<TData>({ loading, loadingRows, table, onRowClick, emptyStateMessage, emptyStateAction, cellClassName, rowClassName, stickyFirstColumn, striped, strings, }: DataTableBodyProps<TData>): import("react").JSX.Element;
3
3
  export declare namespace DataTableBody {
4
4
  var displayName: string;
5
5
  }
@@ -1,6 +1,11 @@
1
1
  import type { SortingState, RowSelectionState, VisibilityState, Table, Row, Updater, ColumnDef } from '@tanstack/react-table';
2
2
  import React from 'react';
3
3
  import type { DataTableStrings } from './table.types';
4
+ export interface GeneratedColumnOptions<TData> {
5
+ strings: DataTableStrings;
6
+ renderActions?: (row: TData) => React.ReactNode;
7
+ }
8
+ export declare function getGeneratedColumnOptions<TData>(table: Table<TData>): GeneratedColumnOptions<TData> | undefined;
4
9
  /**
5
10
  * Helper function for handling row selection changes with OnChangeFn compatibility
6
11
  */
@@ -33,7 +38,5 @@ export declare const createRowSelectionCheckbox: <TData>(row: Row<TData>, string
33
38
  * Create header selection checkbox
34
39
  */
35
40
  export declare const createHeaderSelectionCheckbox: <TData>(table: Table<TData>, strings?: DataTableStrings) => React.JSX.Element;
36
- /**
37
- * Add selection column to columns
38
- */
41
+ /** Prepends the checkbox selection column. Explicit strings override table defaults. */
39
42
  export declare const addSelectionColumn: <TData, TValue = unknown>(columns: ColumnDef<TData, TValue>[], strings?: DataTableStrings) => ColumnDef<TData, TValue>[];
@@ -1,5 +1,8 @@
1
1
  import { type DataTableStrings, type DataTableStringsOverride } from './table.types';
2
2
  export declare const defaultDataTableStrings: {
3
+ loading: {
4
+ label: string;
5
+ };
3
6
  emptyState: {
4
7
  message: string;
5
8
  ariaLabel: string;