@servicetitan/anvil2 2.7.0 → 2.8.0

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 (389) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/{floating-ui.react-C_s3_nEb.js → AiMark-Cwc9KoyE.js} +767 -5
  3. package/dist/AiMark-Cwc9KoyE.js.map +1 -0
  4. package/dist/AiMark.css +260 -0
  5. package/dist/AiMark.d.ts +2 -0
  6. package/dist/AiMark.js +2 -0
  7. package/dist/AiMark.js.map +1 -0
  8. package/dist/{Alert-C_o2f78C.js → Alert-5qhkSUN3.js} +27 -13
  9. package/dist/Alert-5qhkSUN3.js.map +1 -0
  10. package/dist/Alert.css +23 -15
  11. package/dist/Alert.js +1 -1
  12. package/dist/{Announcement-CyrTvgP4.js → Announcement-fQmFNysn.js} +2 -2
  13. package/dist/{Announcement-CyrTvgP4.js.map → Announcement-fQmFNysn.js.map} +1 -1
  14. package/dist/Announcement.js +1 -1
  15. package/dist/{Avatar-CCnbKkCm.js → Avatar-BckUfs1N.js} +48 -46
  16. package/dist/{Avatar-CCnbKkCm.js.map → Avatar-BckUfs1N.js.map} +1 -1
  17. package/dist/Avatar-ChybzixS.js +35 -0
  18. package/dist/Avatar-ChybzixS.js.map +1 -0
  19. package/dist/Avatar.js +2 -2
  20. package/dist/Breadcrumbs-BXo2FO2n.js +107 -0
  21. package/dist/Breadcrumbs-BXo2FO2n.js.map +1 -0
  22. package/dist/Breadcrumbs.js +1 -1
  23. package/dist/Button-a_D7tUgM.js +4517 -0
  24. package/dist/Button-a_D7tUgM.js.map +1 -0
  25. package/dist/Button.js +1 -1
  26. package/dist/{ButtonToggle-DaYJWso_.js → ButtonToggle-CmY77gUp.js} +2 -2
  27. package/dist/{ButtonToggle-DaYJWso_.js.map → ButtonToggle-CmY77gUp.js.map} +1 -1
  28. package/dist/ButtonToggle.js +1 -1
  29. package/dist/{Calendar-SGlTt-bs.js → Calendar-Bd_WELZC.js} +130 -119
  30. package/dist/Calendar-Bd_WELZC.js.map +1 -0
  31. package/dist/{Calendar-C1U2npPP.js → Calendar-d2owsYe9.js} +2 -2
  32. package/dist/{Calendar-C1U2npPP.js.map → Calendar-d2owsYe9.js.map} +1 -1
  33. package/dist/Calendar.css +51 -51
  34. package/dist/Calendar.js +2 -2
  35. package/dist/Card-wz71dEVA.js.map +1 -1
  36. package/dist/{Checkbox-CtKUNeyu.js → Checkbox-BlFc6ZWy.js} +25 -14
  37. package/dist/Checkbox-BlFc6ZWy.js.map +1 -0
  38. package/dist/Checkbox-DbaZrUE2.js +52 -0
  39. package/dist/Checkbox-DbaZrUE2.js.map +1 -0
  40. package/dist/Checkbox.js +1 -1
  41. package/dist/{Chip-DjTAR0va.js → Chip-BnofwIUN.js} +43 -13
  42. package/dist/Chip-BnofwIUN.js.map +1 -0
  43. package/dist/Chip.css +44 -28
  44. package/dist/Chip.js +1 -1
  45. package/dist/{Combobox-By8-34bw.js → Combobox-BOxAzG9v.js} +186 -183
  46. package/dist/{Combobox-By8-34bw.js.map → Combobox-BOxAzG9v.js.map} +1 -1
  47. package/dist/Combobox.js +1 -1
  48. package/dist/{DataTable-BYOS6icI.js → DataTable-DK9xRjnq.js} +762 -651
  49. package/dist/DataTable-DK9xRjnq.js.map +1 -0
  50. package/dist/DataTable.css +84 -74
  51. package/dist/{DateFieldRange-C8Uzrboc.js → DateFieldRange-5Jrz6dLl.js} +20 -6
  52. package/dist/DateFieldRange-5Jrz6dLl.js.map +1 -0
  53. package/dist/DateFieldRange.js +1 -1
  54. package/dist/{DateFieldSingle-DrhLIjlK.js → DateFieldSingle-DWFr6Ew4.js} +8 -8
  55. package/dist/{DateFieldSingle-DrhLIjlK.js.map → DateFieldSingle-DWFr6Ew4.js.map} +1 -1
  56. package/dist/DateFieldSingle.js +1 -1
  57. package/dist/{DateFieldYearless-DbivK4Hm.js → DateFieldYearless-UU22A5-E.js} +22 -6
  58. package/dist/DateFieldYearless-UU22A5-E.js.map +1 -0
  59. package/dist/DateFieldYearless.js +1 -1
  60. package/dist/{DateFieldYearlessRange-BEqJe4Uf.js → DateFieldYearlessRange-BoPLxm6t.js} +3 -3
  61. package/dist/DateFieldYearlessRange-BoPLxm6t.js.map +1 -0
  62. package/dist/DateFieldYearlessRange.js +1 -1
  63. package/dist/{DaysOfTheWeek-BR32AA32.js → DaysOfTheWeek-4cfTmjzm.js} +4 -4
  64. package/dist/{DaysOfTheWeek-BR32AA32.js.map → DaysOfTheWeek-4cfTmjzm.js.map} +1 -1
  65. package/dist/DaysOfTheWeek.js +1 -1
  66. package/dist/{Details-Dxq_v3Qg.js → Details-CZOIpNP_.js} +8 -8
  67. package/dist/Details-CZOIpNP_.js.map +1 -0
  68. package/dist/Details.js +1 -1
  69. package/dist/{Dialog-CGhwkwvq.js → Dialog-Dn836WQM.js} +73 -73
  70. package/dist/Dialog-Dn836WQM.js.map +1 -0
  71. package/dist/Dialog.js +1 -1
  72. package/dist/{DialogCancelButton-DQDMzGeT.js → DialogCancelButton-B-jfihJr.js} +2 -2
  73. package/dist/{DialogCancelButton-DQDMzGeT.js.map → DialogCancelButton-B-jfihJr.js.map} +1 -1
  74. package/dist/{Drawer-DA4iAgt-.js → Drawer-CdDWt_Ba.js} +86 -86
  75. package/dist/Drawer-CdDWt_Ba.js.map +1 -0
  76. package/dist/Drawer.js +1 -1
  77. package/dist/DrillDown.js +1 -1
  78. package/dist/{EditCard-CLN0GBN_.js → EditCard-CZibhEfS.js} +3 -3
  79. package/dist/{EditCard-CLN0GBN_.js.map → EditCard-CZibhEfS.js.map} +1 -1
  80. package/dist/EditCard.js +1 -1
  81. package/dist/FieldLabel-Dr41PRxH.js +180 -0
  82. package/dist/FieldLabel-Dr41PRxH.js.map +1 -0
  83. package/dist/FieldLabel.css +33 -73
  84. package/dist/FieldLabel.js +1 -1
  85. package/dist/Grid-DeYIx5k4.js +149 -0
  86. package/dist/Grid-DeYIx5k4.js.map +1 -0
  87. package/dist/Grid.js +1 -1
  88. package/dist/{InputMask-HjaNCb73.js → InputMask-CcXqzqdx.js} +3 -3
  89. package/dist/{InputMask-HjaNCb73.js.map → InputMask-CcXqzqdx.js.map} +1 -1
  90. package/dist/InputMask.js +1 -1
  91. package/dist/{Layout-VfhlilMG.js → Layout-CISAxILX.js} +34 -33
  92. package/dist/Layout-CISAxILX.js.map +1 -0
  93. package/dist/Layout.js +1 -1
  94. package/dist/List--KhCpjZn.js +103 -0
  95. package/dist/List--KhCpjZn.js.map +1 -0
  96. package/dist/List.js +1 -1
  97. package/dist/{ListView-mujFK6mQ.js → ListView-D9cZUVer.js} +6 -6
  98. package/dist/ListView-D9cZUVer.js.map +1 -0
  99. package/dist/ListView.js +1 -1
  100. package/dist/{Listbox-BtAgBDRS.js → Listbox-CgDwzRfz.js} +6 -5
  101. package/dist/Listbox-CgDwzRfz.js.map +1 -0
  102. package/dist/Listbox.js +1 -1
  103. package/dist/{Menu-BXsmCP20.js → Menu-CPbuIsqC.js} +367 -367
  104. package/dist/Menu-CPbuIsqC.js.map +1 -0
  105. package/dist/Menu.js +1 -1
  106. package/dist/MultiSelectField.js +1 -1
  107. package/dist/{MultiSelectFieldSync-DGpGgu8q.js → MultiSelectFieldSync-Ei7DXzvs.js} +31 -18
  108. package/dist/MultiSelectFieldSync-Ei7DXzvs.js.map +1 -0
  109. package/dist/MultiSelectMenu.js +1 -1
  110. package/dist/{MultiSelectMenuSync-DiLddJDw.js → MultiSelectMenuSync-B_mXpTEe.js} +29 -9
  111. package/dist/MultiSelectMenuSync-B_mXpTEe.js.map +1 -0
  112. package/dist/{NumberField-svhZp1kB.js → NumberField-C5t47Obp.js} +16 -5
  113. package/dist/NumberField-C5t47Obp.js.map +1 -0
  114. package/dist/NumberField.js +1 -1
  115. package/dist/Overflow.css +27 -26
  116. package/dist/Overflow.js +11 -11
  117. package/dist/{Page-Be029Dij.js → Page-2hbQxUj6.js} +223 -207
  118. package/dist/Page-2hbQxUj6.js.map +1 -0
  119. package/dist/Page.css +78 -76
  120. package/dist/Page.js +1 -1
  121. package/dist/{Pagination-BAwqfl_2.js → Pagination-CjGmJ_rU.js} +20 -18
  122. package/dist/Pagination-CjGmJ_rU.js.map +1 -0
  123. package/dist/Pagination.js +1 -1
  124. package/dist/{Popover-D0qSKZ1J.js → Popover-CpU9VAcb.js} +356 -358
  125. package/dist/Popover-CpU9VAcb.js.map +1 -0
  126. package/dist/Popover.js +1 -1
  127. package/dist/{ProgressBar-JpRDW5vG.js → ProgressBar-FMuK8viJ.js} +2 -2
  128. package/dist/{ProgressBar-JpRDW5vG.js.map → ProgressBar-FMuK8viJ.js.map} +1 -1
  129. package/dist/ProgressBar.js +1 -1
  130. package/dist/{Radio-BQg7exDG.js → Radio-CZZd8phn.js} +25 -14
  131. package/dist/Radio-CZZd8phn.js.map +1 -0
  132. package/dist/Radio-DmtVWAmN.js +60 -0
  133. package/dist/Radio-DmtVWAmN.js.map +1 -0
  134. package/dist/Radio.js +1 -1
  135. package/dist/{SegmentedControl-7fDLhgvh.js → SegmentedControl-B9NWUF7s.js} +81 -77
  136. package/dist/{SegmentedControl-7fDLhgvh.js.map → SegmentedControl-B9NWUF7s.js.map} +1 -1
  137. package/dist/SegmentedControl.js +1 -1
  138. package/dist/SelectCard-8OmIDl1m.js +352 -0
  139. package/dist/SelectCard-8OmIDl1m.js.map +1 -0
  140. package/dist/SelectCard.js +1 -1
  141. package/dist/SelectField.js +1 -1
  142. package/dist/{SelectFieldLabel-Dr8HeW3N.js → SelectFieldLabel-C8PrXxDU.js} +5 -4
  143. package/dist/SelectFieldLabel-C8PrXxDU.js.map +1 -0
  144. package/dist/{SelectFieldSync-CJ2Ie_v1.js → SelectFieldSync-DGK8F2G9.js} +13 -13
  145. package/dist/SelectFieldSync-DGK8F2G9.js.map +1 -0
  146. package/dist/SelectMenu.js +1 -1
  147. package/dist/{SelectMenuSync-CJA_coqD.js → SelectMenuSync-CuZp9mnt.js} +29 -9
  148. package/dist/SelectMenuSync-CuZp9mnt.js.map +1 -0
  149. package/dist/{SelectOptions-Bf4xsFek.js → SelectOptions-CmElsiTd.js} +2 -2
  150. package/dist/{SelectOptions-Bf4xsFek.js.map → SelectOptions-CmElsiTd.js.map} +1 -1
  151. package/dist/{SelectTrigger-ObsnAKNp.js → SelectTrigger-KF8w6Ynk.js} +8 -6
  152. package/dist/SelectTrigger-KF8w6Ynk.js.map +1 -0
  153. package/dist/SelectTrigger.js +1 -1
  154. package/dist/{SelectTriggerBase-DKfOL2RJ.js → SelectTriggerBase-Bxmv6oXk.js} +4 -4
  155. package/dist/{SelectTriggerBase-DKfOL2RJ.js.map → SelectTriggerBase-Bxmv6oXk.js.map} +1 -1
  156. package/dist/{SideNav-KksbSQn7.js → SideNav-CrxYExjh.js} +137 -135
  157. package/dist/{SideNav-KksbSQn7.js.map → SideNav-CrxYExjh.js.map} +1 -1
  158. package/dist/SideNav.css +72 -55
  159. package/dist/SideNav.js +1 -1
  160. package/dist/Skeleton.css +18 -12
  161. package/dist/Skeleton.js +24 -11
  162. package/dist/Skeleton.js.map +1 -1
  163. package/dist/{Stepper-Dt8_ImvJ.js → Stepper-_27Lmm2K.js} +158 -158
  164. package/dist/{Stepper-Dt8_ImvJ.js.map → Stepper-_27Lmm2K.js.map} +1 -1
  165. package/dist/Stepper.js +1 -1
  166. package/dist/{Switch-DpPHr3G3.js → Switch-DPGz7wC_.js} +14 -2
  167. package/dist/Switch-DPGz7wC_.js.map +1 -0
  168. package/dist/Switch.js +1 -1
  169. package/dist/{Tab-DO7LaUbw.js → Tab-BZpTCG0i.js} +227 -223
  170. package/dist/Tab-BZpTCG0i.js.map +1 -0
  171. package/dist/Tab.js +1 -1
  172. package/dist/Table.js +1 -1
  173. package/dist/{Text-BJo4oMI2.js → Text-MVxRo6yx.js} +30 -12
  174. package/dist/Text-MVxRo6yx.js.map +1 -0
  175. package/dist/Text.css +37 -20
  176. package/dist/Text.js +1 -1
  177. package/dist/{TextField-DeHpgPag.js → TextField-BpSxZa0z.js} +21 -5
  178. package/dist/TextField-BpSxZa0z.js.map +1 -0
  179. package/dist/{TextField-BW8sJAls.js → TextField-D93iv_pk.js} +2 -2
  180. package/dist/{TextField-BW8sJAls.js.map → TextField-D93iv_pk.js.map} +1 -1
  181. package/dist/TextField.js +1 -1
  182. package/dist/{Textarea-DyqdMTvQ.js → Textarea-1u2fSMTh.js} +21 -5
  183. package/dist/Textarea-1u2fSMTh.js.map +1 -0
  184. package/dist/Textarea.js +1 -1
  185. package/dist/{TimeField-Dc0Y1JD-.js → TimeField-B4gLlBQJ.js} +6 -5
  186. package/dist/{TimeField-Dc0Y1JD-.js.map → TimeField-B4gLlBQJ.js.map} +1 -1
  187. package/dist/TimeField.js +1 -1
  188. package/dist/Toast.js +2 -2
  189. package/dist/{Toaster-b0-Ub3yt.js → Toaster-CSJfSOHx.js} +5 -5
  190. package/dist/Toaster-CSJfSOHx.js.map +1 -0
  191. package/dist/{Toaster-DikGo_hR.js → Toaster-DbWYnF_t.js} +2 -2
  192. package/dist/{Toaster-DikGo_hR.js.map → Toaster-DbWYnF_t.js.map} +1 -1
  193. package/dist/{Toolbar-DAuz4Gs2.js → Toolbar-CWRk523l.js} +150 -149
  194. package/dist/{Toolbar-DAuz4Gs2.js.map → Toolbar-CWRk523l.js.map} +1 -1
  195. package/dist/Toolbar.js +1 -1
  196. package/dist/{Tooltip-Bupqao9B.js → Tooltip-C1PBRnJv.js} +225 -228
  197. package/dist/Tooltip-C1PBRnJv.js.map +1 -0
  198. package/dist/Tooltip.js +1 -1
  199. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js → YearlessDateInputWithPicker-BSl5z2zo.js} +2 -3
  200. package/dist/{YearlessDateInputWithPicker-DFi08TLG.js.map → YearlessDateInputWithPicker-BSl5z2zo.js.map} +1 -1
  201. package/dist/assets/icons/st/ai_mark_gradient.svg +1 -1
  202. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  203. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldInput.d.ts +3 -2
  204. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  205. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldTrigger.d.ts +3 -2
  206. package/dist/beta/components/MultiSelectField/internal/types.d.ts +4 -3
  207. package/dist/beta/components/MultiSelectField/types.d.ts +28 -7
  208. package/dist/beta/components/MultiSelectMenu/types.d.ts +15 -0
  209. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  210. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +4 -4
  211. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  212. package/dist/beta/components/SelectField/types.d.ts +5 -5
  213. package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +3 -1
  214. package/dist/beta/components/SelectMenu/types.d.ts +15 -0
  215. package/dist/beta/components/Table/DataTable/DataTable.d.ts +2 -15
  216. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +35 -0
  217. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +4 -3
  218. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +7 -0
  219. package/dist/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +34 -0
  220. package/dist/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +29 -0
  221. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +2 -4
  222. package/dist/beta/components/Table/DataTable/types.d.ts +48 -1
  223. package/dist/beta/components/Table/createColumnHelper.d.ts +23 -68
  224. package/dist/beta/components/Table/types.d.ts +218 -42
  225. package/dist/beta/components/Toolbar/Toolbar.d.ts +175 -44
  226. package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +5 -3
  227. package/dist/beta.js +9 -9
  228. package/dist/components/AiMark/AiMark.d.ts +87 -0
  229. package/dist/components/AiMark/index.d.ts +1 -0
  230. package/dist/components/AiMark/internal/AiMarkIconAnimated.d.ts +30 -0
  231. package/dist/components/AiMark/internal/AiMarkInteractive.d.ts +10 -0
  232. package/dist/components/AiMark/stories/aiMarkStoryArgTypes.d.ts +16 -0
  233. package/dist/components/Alert/Alert.d.ts +12 -0
  234. package/dist/components/Avatar/Avatar.d.ts +14 -0
  235. package/dist/components/Button/Button.d.ts +14 -6
  236. package/dist/components/Button/internal/buttonAiMarkUtils.d.ts +18 -0
  237. package/dist/components/Button/internal/index.d.ts +1 -0
  238. package/dist/components/Calendar/Calendar.d.ts +84 -26
  239. package/dist/components/Card/Card.d.ts +6 -1
  240. package/dist/components/Checkbox/Checkbox.d.ts +2 -0
  241. package/dist/components/Checkbox/CheckboxGroup.d.ts +27 -6
  242. package/dist/components/Chip/Chip.d.ts +10 -1
  243. package/dist/components/Chip/internal/Chip.d.ts +4 -0
  244. package/dist/components/Combobox/Combobox.d.ts +172 -1
  245. package/dist/components/DateFieldRange/internal/MaskedDateRangeInput.d.ts +1 -1
  246. package/dist/components/DateFieldRange/internal/useDateFieldRangeConversion.d.ts +1 -1
  247. package/dist/components/DateFieldSingle/internal/MaskedDateInput.d.ts +1 -1
  248. package/dist/components/DateFieldYearless/DateFieldYearless.d.ts +8 -1
  249. package/dist/components/DateFieldYearless/internal/YearlessDateInput.d.ts +1 -1
  250. package/dist/components/DateFieldYearless/internal/YearlessDateInputWithPicker.d.ts +1 -1
  251. package/dist/components/DateFieldYearlessRange/DateFieldYearlessRange.d.ts +7 -0
  252. package/dist/components/Dialog/Dialog.d.ts +96 -28
  253. package/dist/components/DrillDown/DrillDown.d.ts +7 -1
  254. package/dist/components/FieldLabel/FieldLabel.d.ts +2 -1
  255. package/dist/components/FieldLabel/internal/FieldLabelButton.d.ts +3 -2
  256. package/dist/components/Layout/Layout.d.ts +52 -44
  257. package/dist/components/ListView/ListView.d.ts +5 -5
  258. package/dist/components/Listbox/Listbox.d.ts +5 -23
  259. package/dist/components/Menu/Menu.d.ts +1 -4
  260. package/dist/components/NumberField/NumberField.d.ts +29 -2
  261. package/dist/components/Radio/Radio.d.ts +2 -0
  262. package/dist/components/Radio/RadioGroup.d.ts +27 -6
  263. package/dist/components/SelectCard/SelectCard.d.ts +1 -1
  264. package/dist/components/SelectCard/SelectCardGroup.d.ts +18 -1
  265. package/dist/components/SelectCard/internal/SelectCardContext.d.ts +11 -0
  266. package/dist/components/SelectCard/internal/SelectCardProvider.d.ts +11 -1
  267. package/dist/components/Skeleton/SkeletonCircle.d.ts +8 -0
  268. package/dist/components/Skeleton/SkeletonPill.d.ts +8 -0
  269. package/dist/components/Skeleton/SkeletonRectangle.d.ts +8 -0
  270. package/dist/components/Skeleton/SkeletonText.d.ts +6 -1
  271. package/dist/components/Skeleton/index.d.ts +3 -0
  272. package/dist/components/Switch/Switch.d.ts +11 -1
  273. package/dist/components/Text/types.d.ts +9 -0
  274. package/dist/components/TextField/internal/TextField.d.ts +11 -0
  275. package/dist/components/Textarea/Textarea.d.ts +9 -2
  276. package/dist/components/Toast/internal/Toast.d.ts +5 -0
  277. package/dist/components/Toast/toast.d.ts +1 -1
  278. package/dist/components/Toolbar/Toolbar.d.ts +8 -4
  279. package/dist/components/Toolbar/ToolbarSelect.d.ts +5 -3
  280. package/dist/components/index.d.ts +1 -0
  281. package/dist/{floating-ui.react-dom-imrk9N49.js → floating-ui.react-dom-CHrYz13o.js} +17 -2
  282. package/dist/floating-ui.react-dom-CHrYz13o.js.map +1 -0
  283. package/dist/hooks/index.d.ts +1 -0
  284. package/dist/hooks/usePrefersReducedMotion/index.d.ts +1 -0
  285. package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts +15 -0
  286. package/dist/index.js +135 -133
  287. package/dist/index.js.map +1 -1
  288. package/dist/internal/components/InlineMarkdown/InlineMarkdown.d.ts +23 -0
  289. package/dist/internal/components/InlineMarkdown/index.d.ts +1 -0
  290. package/dist/internal/components/Label/Label.d.ts +1 -1
  291. package/dist/internal/components/Popover/Popover.d.ts +3 -1
  292. package/dist/internal/components/index.d.ts +2 -1
  293. package/dist/internal/functions/index.d.ts +2 -0
  294. package/dist/internal/functions/inlineMarkdown.d.ts +20 -0
  295. package/dist/internal/functions/stripInlineMarkdown.d.ts +8 -0
  296. package/dist/internal/types/props.d.ts +2 -1
  297. package/dist/internal/types/selectFieldInternalTypes.d.ts +2 -2
  298. package/dist/internal/utils/index.d.ts +1 -0
  299. package/dist/internal/utils/inlineMarkdownRegex.d.ts +5 -0
  300. package/dist/{proxy-BbFHSE6L.js → proxy-DEehATlA.js} +8 -2
  301. package/dist/{proxy-BbFHSE6L.js.map → proxy-DEehATlA.js.map} +1 -1
  302. package/dist/stripInlineMarkdown-DyqLAQnf.js +25 -0
  303. package/dist/stripInlineMarkdown-DyqLAQnf.js.map +1 -0
  304. package/dist/{syncFilterUtils-vt8ldsES.js → syncFilterUtils-CsbCnI1-.js} +194 -194
  305. package/dist/{syncFilterUtils-vt8ldsES.js.map → syncFilterUtils-CsbCnI1-.js.map} +1 -1
  306. package/dist/types/ai-marks.d.ts +72 -0
  307. package/dist/types/index.d.ts +1 -0
  308. package/dist/{use-reduced-motion-DSpxmqyT.js → use-reduced-motion-CqjZZ5QB.js} +2 -2
  309. package/dist/{use-reduced-motion-DSpxmqyT.js.map → use-reduced-motion-CqjZZ5QB.js.map} +1 -1
  310. package/dist/{useDrilldown-wwXRpNgb.js → useDrilldown-C7eMBl68.js} +43 -41
  311. package/dist/{useDrilldown-wwXRpNgb.js.map → useDrilldown-C7eMBl68.js.map} +1 -1
  312. package/dist/{useInitialFocus-CdoVwSbr.js → useInitialFocus-DbaB-x5T.js} +2 -3
  313. package/dist/{useInitialFocus-CdoVwSbr.js.map → useInitialFocus-DbaB-x5T.js.map} +1 -1
  314. package/dist/{useMenuInteraction-zR_78KQC.js → useMenuInteraction-BwZ2ORo9.js} +8 -3
  315. package/dist/useMenuInteraction-BwZ2ORo9.js.map +1 -0
  316. package/dist/{index.esm-BZV0wNKZ.js → usePopoverTransitionStates-B1opfxxn.js} +88 -2
  317. package/dist/usePopoverTransitionStates-B1opfxxn.js.map +1 -0
  318. package/dist/usePrefersReducedMotion-DR9B_D6w.js +37 -0
  319. package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +1 -0
  320. package/dist/usePrefersReducedMotion.d.ts +2 -0
  321. package/dist/usePrefersReducedMotion.js +2 -0
  322. package/dist/usePrefersReducedMotion.js.map +1 -0
  323. package/dist/{useToggleSelection-BdXW3Zg3.js → useToggleSelection-BM8asdFj.js} +2 -2
  324. package/dist/{useToggleSelection-BdXW3Zg3.js.map → useToggleSelection-BM8asdFj.js.map} +1 -1
  325. package/package.json +4 -2
  326. package/dist/Alert-C_o2f78C.js.map +0 -1
  327. package/dist/Avatar--CnTAnfD.js +0 -35
  328. package/dist/Avatar--CnTAnfD.js.map +0 -1
  329. package/dist/Breadcrumbs-3Y7jnj-F.js +0 -105
  330. package/dist/Breadcrumbs-3Y7jnj-F.js.map +0 -1
  331. package/dist/Button-CVsGhVJz.js +0 -113
  332. package/dist/Button-CVsGhVJz.js.map +0 -1
  333. package/dist/Calendar-SGlTt-bs.js.map +0 -1
  334. package/dist/Checkbox-CjEKa5Iv.js +0 -50
  335. package/dist/Checkbox-CjEKa5Iv.js.map +0 -1
  336. package/dist/Checkbox-CtKUNeyu.js.map +0 -1
  337. package/dist/Chip-DjTAR0va.js.map +0 -1
  338. package/dist/DataTable-BYOS6icI.js.map +0 -1
  339. package/dist/DateFieldRange-C8Uzrboc.js.map +0 -1
  340. package/dist/DateFieldYearless-DbivK4Hm.js.map +0 -1
  341. package/dist/DateFieldYearlessRange-BEqJe4Uf.js.map +0 -1
  342. package/dist/Details-Dxq_v3Qg.js.map +0 -1
  343. package/dist/Dialog-CGhwkwvq.js.map +0 -1
  344. package/dist/Drawer-DA4iAgt-.js.map +0 -1
  345. package/dist/FieldLabel-DbMosKtd.js +0 -125
  346. package/dist/FieldLabel-DbMosKtd.js.map +0 -1
  347. package/dist/Grid-ONcUpb__.js +0 -147
  348. package/dist/Grid-ONcUpb__.js.map +0 -1
  349. package/dist/Layout-VfhlilMG.js.map +0 -1
  350. package/dist/List-CJZjElAQ.js +0 -101
  351. package/dist/List-CJZjElAQ.js.map +0 -1
  352. package/dist/ListView-mujFK6mQ.js.map +0 -1
  353. package/dist/Listbox-BtAgBDRS.js.map +0 -1
  354. package/dist/Menu-BXsmCP20.js.map +0 -1
  355. package/dist/MultiSelectFieldSync-DGpGgu8q.js.map +0 -1
  356. package/dist/MultiSelectMenuSync-DiLddJDw.js.map +0 -1
  357. package/dist/NumberField-svhZp1kB.js.map +0 -1
  358. package/dist/Page-Be029Dij.js.map +0 -1
  359. package/dist/Pagination-BAwqfl_2.js.map +0 -1
  360. package/dist/Popover-D0qSKZ1J.js.map +0 -1
  361. package/dist/Popover-DxZF6lbJ.js +0 -535
  362. package/dist/Popover-DxZF6lbJ.js.map +0 -1
  363. package/dist/Popover2.css +0 -68
  364. package/dist/Radio-BOq9UkpC.js +0 -60
  365. package/dist/Radio-BOq9UkpC.js.map +0 -1
  366. package/dist/Radio-BQg7exDG.js.map +0 -1
  367. package/dist/SelectCard-cu4MBuh8.js +0 -320
  368. package/dist/SelectCard-cu4MBuh8.js.map +0 -1
  369. package/dist/SelectFieldLabel-Dr8HeW3N.js.map +0 -1
  370. package/dist/SelectFieldSync-CJ2Ie_v1.js.map +0 -1
  371. package/dist/SelectMenuSync-CJA_coqD.js.map +0 -1
  372. package/dist/SelectTrigger-ObsnAKNp.js.map +0 -1
  373. package/dist/Switch-DpPHr3G3.js.map +0 -1
  374. package/dist/Tab-DO7LaUbw.js.map +0 -1
  375. package/dist/Text-BJo4oMI2.js.map +0 -1
  376. package/dist/TextField-DeHpgPag.js.map +0 -1
  377. package/dist/Textarea-DyqdMTvQ.js.map +0 -1
  378. package/dist/Toaster-b0-Ub3yt.js.map +0 -1
  379. package/dist/Tooltip-Bupqao9B.js.map +0 -1
  380. package/dist/floating-ui.react-C_s3_nEb.js.map +0 -1
  381. package/dist/floating-ui.react-dom-imrk9N49.js.map +0 -1
  382. package/dist/index.esm-BZV0wNKZ.js.map +0 -1
  383. package/dist/safePopover-BDso-xSH.js +0 -17
  384. package/dist/safePopover-BDso-xSH.js.map +0 -1
  385. package/dist/useMenuInteraction-zR_78KQC.js.map +0 -1
  386. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js +0 -68
  387. package/dist/useOpenCloseTransitionStates-CiTYrLGi.js.map +0 -1
  388. package/dist/usePopoverTransitionStates-CDIoNUuf.js +0 -24
  389. package/dist/usePopoverTransitionStates-CDIoNUuf.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
2
- import { LayoutUtilProps, Size } from '../../../types';
1
+ import { AriaAttributes, CSSProperties, ReactElement } from 'react';
2
+ import { AiMarkWithTooltipOrPopoverProps, LayoutUtilProps, Size } from '../../../types';
3
3
  import { AvatarProps, ChipProps, IconProps } from '../../..';
4
4
  /**
5
5
  * Configuration options for the SelectField cache.
@@ -187,10 +187,10 @@ type SelectFieldCommonSelectFieldProps = {
187
187
  */
188
188
  hint?: ReactElement | string;
189
189
  /**
190
- * Custom ReactNode to render as the label, overriding the default label text.
191
- * The `label` prop is still required for accessibility purposes.
190
+ * AI mark configuration to display next to the label.
191
+ * Can be a boolean to show a simple AI mark, or an object with tooltip/popover configuration.
192
192
  */
193
- labelNode?: ReactNode;
193
+ labelAiMark?: AiMarkWithTooltipOrPopoverProps["aiMark"];
194
194
  /**
195
195
  * Description text displayed below the input field.
196
196
  */
@@ -12,6 +12,8 @@ export type UseMenuInteractionConfig = {
12
12
  id: string;
13
13
  triggerRef: RefObject<HTMLButtonElement>;
14
14
  label: string;
15
+ onImplicitClose?: () => void;
16
+ onExplicitClose?: () => void;
15
17
  };
16
18
  export type MenuTriggerProps = {
17
19
  ref: RefObject<HTMLButtonElement>;
@@ -54,7 +56,7 @@ type ItemReturnProps = {
54
56
  };
55
57
  export type GetMenuPropsFn = (opts?: MenuPropsArg) => MenuReturnProps;
56
58
  export type GetItemPropsFn = (opts: ItemPropsArg) => ItemReturnProps;
57
- export declare const useMenuInteraction: ({ items, sectionsMeta: _sectionsMeta, onItemActivate, selectedItemIds, displayAs: _displayAs, closeOnActivate, disabled, id, triggerRef, label, }: UseMenuInteractionConfig) => {
59
+ export declare const useMenuInteraction: ({ items, sectionsMeta: _sectionsMeta, onItemActivate, selectedItemIds, displayAs: _displayAs, closeOnActivate, disabled, id, triggerRef, label, onImplicitClose, onExplicitClose, }: UseMenuInteractionConfig) => {
58
60
  isOpen: boolean;
59
61
  openMenu: () => void;
60
62
  closeMenu: (options?: {
@@ -52,6 +52,21 @@ type SelectMenuCommonProps = {
52
52
  * Render function that receives trigger props and returns the element that opens the menu.
53
53
  */
54
54
  trigger: (props: SelectMenuTriggerProps) => ReactElement;
55
+ /**
56
+ * Called when a key is pressed inside the menu (search field or listbox), before the
57
+ * menu's own key handling. Use `e.preventDefault()` to suppress the default behavior.
58
+ */
59
+ onMenuKeyDown?: (e: KeyboardEvent) => void;
60
+ /**
61
+ * Called when the menu closes implicitly — due to Tab navigation, clicking outside,
62
+ * or other ambient focus loss. Focus is not restored to the trigger in these cases.
63
+ */
64
+ onImplicitClose?: () => void;
65
+ /**
66
+ * Called when the menu closes explicitly — the user intentionally dismissed it
67
+ * via Escape, selecting an option, or toggling the trigger. Focus is restored to the trigger.
68
+ */
69
+ onExplicitClose?: () => void;
55
70
  /**
56
71
  * Accessible label for the menu. Used by screen readers but not rendered visually.
57
72
  */
@@ -1,21 +1,8 @@
1
1
  import { ComponentPropsWithoutRef, Ref, ReactNode } from 'react';
2
2
  import { LayoutUtilProps } from '../../../../types';
3
3
  import { ColumnDef, CustomTableFooterCellProps, TableRow } from '../types';
4
- import { DataTableEmptyState, DataTablePaginationConfig, DataTableRef } from './types';
5
- export type { DataTableRef, DataTableEmptyState };
6
- /**
7
- * Represents a sorted column configuration for DataTable
8
- */
9
- export type SortedColumn = {
10
- /**
11
- * The column identifier
12
- */
13
- id: string;
14
- /**
15
- * Whether the column is sorted in descending order
16
- */
17
- desc: boolean;
18
- };
4
+ import { DataTableCacheOptions, DataTableEmptyState, DataTablePaginationConfig, DataTableRef, SortedColumn } from './types';
5
+ export type { DataTableCacheOptions, DataTableRef, DataTableEmptyState, SortedColumn, };
19
6
  /**
20
7
  * Props for the DataTable component
21
8
  * @extends LayoutUtilProps
@@ -0,0 +1,35 @@
1
+ import { EditableCellImperativeHandle, BaseEditableCellProps } from './types';
2
+ export type DataTableEditableMultiselectAsyncCellProps<T> = BaseEditableCellProps<T>;
3
+ /**
4
+ * Renders an async editable multiselect cell in a DataTable. This component provides a
5
+ * MultiSelectMenu popover that loads options asynchronously via a `loadOptions` function.
6
+ * The loader receives a `context` object containing the current row data, enabling per-row
7
+ * option loading.
8
+ *
9
+ * Features:
10
+ * - Supports all four MultiSelectMenu lazy variants: eager, page, offset, and group
11
+ * - Passes row context to `loadOptions` for per-row async option loading
12
+ * - Auto-disables caching by default to prevent cross-row cache pollution
13
+ * - Supports full MultiSelectMenu passthrough props (debounceMs, virtualize, selectAll, etc.)
14
+ * - Live selection: `onChange` fires on each toggle
15
+ * - Keyboard navigation consistent with other editable cell types
16
+ *
17
+ * **Value contract**: Unlike `mode: "multiselect"` (which stores ID arrays), the cell value
18
+ * must be `MultiSelectMenuOption[]` — full option objects. The consumer stores them wholesale
19
+ * from the `onChange` callback.
20
+ *
21
+ * @param props - The props for the DataTableEditableMultiselectAsyncCell component
22
+ * @param props.cell - The TanStack table cell instance
23
+ * @param props.cellProps - Props for styling and event handling of the cell container
24
+ * @param props.cellPosition - The position of the cell in the table
25
+ * @param props.children - The content to display when not editing
26
+ * @param props.isHovered - Whether the cell is currently hovered
27
+ * @param ref - Ref to the imperative handle for programmatic control
28
+ * @returns The rendered async editable multiselect cell component
29
+ */
30
+ export declare function DataTableEditableMultiselectAsyncCellInner<T>(props: DataTableEditableMultiselectAsyncCellProps<T>, ref: React.Ref<EditableCellImperativeHandle>): import("react/jsx-runtime").JSX.Element;
31
+ export declare const DataTableEditableMultiselectAsyncCell: (<T>(props: DataTableEditableMultiselectAsyncCellProps<T> & {
32
+ ref?: React.Ref<EditableCellImperativeHandle>;
33
+ }) => React.ReactElement) & {
34
+ displayName: string;
35
+ };
@@ -1,9 +1,10 @@
1
1
  import { EditableCellImperativeHandle, BaseEditableCellProps } from './types';
2
2
  export type DataTableEditableMultiselectCellProps<T> = BaseEditableCellProps<T>;
3
3
  /**
4
- * Renders an editable multiselect cell in a DataTable. This component provides a popover with a
5
- * searchable list that appears when the cell is activated, allowing users to select multiple values
6
- * from a list of options. Supports keyboard navigation, search filtering, and commit/cancel operations.
4
+ * Renders an editable multiselect cell in a DataTable. This component provides a
5
+ * MultiSelectMenu popover with search that appears when the cell is activated, allowing
6
+ * users to select multiple values from a list of options. Supports keyboard navigation
7
+ * and live selection.
7
8
  *
8
9
  * @param props - The props for the DataTableEditableMultiselectCell component
9
10
  * @param props.cell - The TanStack table cell instance
@@ -0,0 +1,7 @@
1
+ import { EditableCellImperativeHandle, BaseEditableCellProps } from './types';
2
+ export type DataTableEditableSelectAsyncCellProps<T> = BaseEditableCellProps<T>;
3
+ export declare const DataTableEditableSelectAsyncCell: (<T>(props: DataTableEditableSelectAsyncCellProps<T> & {
4
+ ref?: React.Ref<EditableCellImperativeHandle>;
5
+ }) => React.ReactElement) & {
6
+ displayName: string;
7
+ };
@@ -0,0 +1,34 @@
1
+ import { CellPosition } from '../../../internal/types';
2
+ import { EditableCellImperativeHandle, EditableCellCellProps } from './types';
3
+ type UseEditableMenuCellOptions = {
4
+ cellPosition: CellPosition;
5
+ onCellKeyDown: EditableCellCellProps["onKeyDown"];
6
+ ref: React.Ref<EditableCellImperativeHandle>;
7
+ };
8
+ /**
9
+ * Shared hook for select/multiselect editable DataTable cells that use a menu-based
10
+ * editing UX (SelectMenu, MultiSelectMenu, and their async variants).
11
+ *
12
+ * Encapsulates the common state, refs, imperative handle, keyboard/focus/mouse handlers,
13
+ * and focus context value that are identical across all four menu-based cell components.
14
+ *
15
+ * @param options.cellPosition - The position of the cell in the table grid
16
+ * @param options.onCellKeyDown - The cell's keyDown handler from cellProps, forwarded when the menu is closed
17
+ * @param options.ref - Ref for the imperative handle (invoke/focus)
18
+ * @returns Shared state, refs, event handlers, and cellFocusContextValue
19
+ */
20
+ export declare function useEditableMenuCell({ cellPosition, onCellKeyDown, ref, }: UseEditableMenuCellOptions): {
21
+ tabIndex: number;
22
+ cellRef: import('react').RefObject<HTMLTableCellElement>;
23
+ triggerClickRef: import('react').MutableRefObject<(() => void) | null>;
24
+ handleCellKeyDown: (event: React.KeyboardEvent<HTMLElement>, menuKeyDown: ((event: React.KeyboardEvent<HTMLButtonElement>) => void) | undefined, isOpen: boolean) => void;
25
+ handleMenuKeyDown: (e: React.KeyboardEvent) => void;
26
+ handleImplicitClose: () => void;
27
+ handleCellMouseDown: (triggerOnClick: () => void) => () => void;
28
+ handleCellBlur: (e: React.FocusEvent<HTMLElement>) => void;
29
+ handleCellFocus: (event: React.FocusEvent<HTMLTableCellElement>) => void;
30
+ cellFocusContextValue: {
31
+ isCellFocused: boolean;
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,29 @@
1
+ import { TableRow } from '../../types';
2
+ import { DataTableCacheOptions, SortedColumn } from '../types';
3
+ /**
4
+ * Hook for caching resolved page data in DataTable.
5
+ *
6
+ * Features:
7
+ * - Caches resolved page data per page index using a Map stored in a ref
8
+ * - Returns cached data synchronously on cache hit, avoiding unnecessary API calls
9
+ * - Synchronously clears cache during render when invalidation triggers change
10
+ * - Size-based eviction (FIFO) when cache exceeds maxSize: oldest entry is dropped to make room
11
+ *
12
+ * @param config - Configuration including loadPageData function, cache options, and invalidation triggers
13
+ * @returns Object containing getOrLoad function and clearCache function
14
+ */
15
+ export declare function usePageDataCache<T>(config: {
16
+ loadPageData?: (params: {
17
+ pageIndex: number;
18
+ pageSize: number;
19
+ sorting?: SortedColumn;
20
+ }) => TableRow<T>[] | Promise<TableRow<T>[]>;
21
+ cache?: DataTableCacheOptions;
22
+ refreshKey?: string | number;
23
+ refreshCounter: number;
24
+ rowsPerPage: number;
25
+ sorting?: SortedColumn;
26
+ }): {
27
+ getOrLoad: (pageIndex: number, pageSize: number, sorting?: SortedColumn) => TableRow<T>[] | Promise<TableRow<T>[]>;
28
+ clearCache: () => void;
29
+ };
@@ -1,12 +1,10 @@
1
1
  import { ColumnDef as TanstackColumnDef } from '@tanstack/react-table';
2
2
  import { ReactNode } from 'react';
3
- import { ColumnDef } from '../../../types';
3
+ import { ColumnDef, EditMode } from '../../../types';
4
4
  declare module "@tanstack/react-table" {
5
5
  interface ColumnMeta<TData, TValue> {
6
- editMode?: ColumnDef<TData>["editMode"];
6
+ editMode?: EditMode;
7
7
  editConfig?: ColumnDef<TData>["editConfig"];
8
- onChange?: ColumnDef<TData>["onChange"];
9
- options?: ColumnDef<TData>["options"];
10
8
  /**
11
9
  * The original column definition, stored for type narrowing and runtime access
12
10
  */
@@ -1,6 +1,19 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { TableRow } from '../types';
3
3
  import { Svg } from '../../../../types';
4
+ /**
5
+ * Represents a sorted column configuration for DataTable
6
+ */
7
+ export type SortedColumn = {
8
+ /**
9
+ * The column identifier
10
+ */
11
+ id: string;
12
+ /**
13
+ * Whether the column is sorted in descending order
14
+ */
15
+ desc: boolean;
16
+ };
4
17
  /**
5
18
  * Configuration for the empty state displayed when the DataTable has no data
6
19
  */
@@ -19,6 +32,26 @@ export type DataTableEmptyState = {
19
32
  */
20
33
  content?: ReactNode;
21
34
  };
35
+ /**
36
+ * Configuration for caching loadPageData results in DataTable.
37
+ * When enabled, resolved page data is cached per page index, allowing
38
+ * instant restoration when returning to a previously loaded page.
39
+ * @property {boolean} [enabled] - Whether caching is enabled. Defaults to true.
40
+ * @property {number} [maxSize] - Maximum number of pages to cache. Oldest entry is evicted (FIFO) when the limit is reached. Defaults to 15.
41
+ */
42
+ export type DataTableCacheOptions = {
43
+ /**
44
+ * Whether caching is enabled.
45
+ * @default true
46
+ */
47
+ enabled?: boolean;
48
+ /**
49
+ * Maximum number of pages to cache. When the limit is reached, the oldest cached page is
50
+ * evicted (FIFO) to make room for the new entry.
51
+ * @default 15
52
+ */
53
+ maxSize?: number;
54
+ };
22
55
  /**
23
56
  * Configuration for pagination in DataTable
24
57
  */
@@ -45,10 +78,14 @@ export type DataTablePaginationConfig<T> = {
45
78
  * Function to get the data for the current page. When used, the data displayed will be
46
79
  * fully controlled by the implementor. This is useful for server-side pagination scenarios where
47
80
  * the total number of rows may differ from the data array length.
81
+ *
82
+ * The `sorting` parameter is provided when a column is sorted, allowing the server
83
+ * to return data in the correct sort order.
48
84
  */
49
- loadPageData?: ({ pageIndex, pageSize, }: {
85
+ loadPageData?: ({ pageIndex, pageSize, sorting, }: {
50
86
  pageIndex: number;
51
87
  pageSize: number;
88
+ sorting?: SortedColumn;
52
89
  }) => TableRow<T>[] | Promise<TableRow<T>[]>;
53
90
  /**
54
91
  * Default page index for uncontrolled mode (0-based)
@@ -75,10 +112,16 @@ export type DataTablePaginationConfig<T> = {
75
112
  * When changed, the page index automatically resets to 0.
76
113
  */
77
114
  refreshKey?: string | number;
115
+ /**
116
+ * Configuration for caching loadPageData results.
117
+ * Caching is enabled by default. Set `{ enabled: false }` to disable.
118
+ */
119
+ cache?: DataTableCacheOptions;
78
120
  };
79
121
  /**
80
122
  * Ref handle for DataTable component
81
123
  * @property {function} refresh - Triggers a data refetch and resets the page index to 0. Useful for manually refreshing data after external changes (e.g., after a mutation).
124
+ * @property {function} clearCache - Clears the page data cache without triggering a refetch.
82
125
  */
83
126
  export type DataTableRef = {
84
127
  /**
@@ -87,4 +130,8 @@ export type DataTableRef = {
87
130
  * When using controlled pagination, this will call `onPageChange(0)`.
88
131
  */
89
132
  refresh: () => void;
133
+ /**
134
+ * Clears the page data cache without triggering a refetch.
135
+ */
136
+ clearCache: () => void;
90
137
  };
@@ -1,11 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- import { ColumnDef, ColumnTypeConfig, TextEditConfig, NumberEditConfig, SelectEditConfig, MultiselectEditConfig, BooleanEditConfig, TableRow } from './types';
2
+ import { ColumnDef, ColumnTypeConfig, TextEditConfig, NumberEditConfig, SelectEditConfig, SelectAsyncEditConfig, MultiselectEditConfig, MultiselectAsyncEditConfig, BooleanEditConfig, TableRow } from './types';
3
+ import { MultiSelectMenuOption } from '../MultiSelectMenu';
3
4
  /**
4
- * Utility type that extracts the element type from an array type
5
- */
6
- type ArrayElement<T> = T extends (infer U)[] ? U : never;
7
- /**
8
- * Base column configuration without editMode-specific or editConfig-specific properties
5
+ * Base column configuration shared by all column types
9
6
  */
10
7
  type BaseColumnConfig<T, K extends keyof T> = {
11
8
  /**
@@ -70,9 +67,6 @@ type BaseColumnConfig<T, K extends keyof T> = {
70
67
  */
71
68
  type ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
72
69
  editConfig?: undefined;
73
- editMode?: undefined;
74
- onChange?: never;
75
- options?: never;
76
70
  };
77
71
  /**
78
72
  * Configuration for text editable columns using editConfig.
@@ -80,9 +74,6 @@ type ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
80
74
  */
81
75
  type TextEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string ? BaseColumnConfig<T, K> & {
82
76
  editConfig: TextEditConfig<T, K>;
83
- editMode?: undefined;
84
- onChange?: undefined;
85
- options?: undefined;
86
77
  } : never;
87
78
  /**
88
79
  * Configuration for number editable columns using editConfig.
@@ -90,18 +81,18 @@ type TextEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extend
90
81
  */
91
82
  type NumberEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends number ? BaseColumnConfig<T, K> & {
92
83
  editConfig: NumberEditConfig<T, K>;
93
- editMode?: undefined;
94
- onChange?: undefined;
95
- options?: undefined;
96
84
  } : never;
97
85
  /**
98
86
  * Configuration for select editable columns using editConfig
99
87
  */
100
88
  type SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
101
89
  editConfig: SelectEditConfig<T, K>;
102
- editMode?: undefined;
103
- onChange?: undefined;
104
- options?: undefined;
90
+ };
91
+ /**
92
+ * Configuration for async select editable columns using editConfig
93
+ */
94
+ type SelectAsyncEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
95
+ editConfig: SelectAsyncEditConfig<T>;
105
96
  };
106
97
  /**
107
98
  * Configuration for multiselect editable columns using editConfig
@@ -109,9 +100,14 @@ type SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K>
109
100
  */
110
101
  type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends unknown[] ? BaseColumnConfig<T, K> & {
111
102
  editConfig: MultiselectEditConfig<T, K>;
112
- editMode?: undefined;
113
- onChange?: undefined;
114
- options?: undefined;
103
+ } : never;
104
+ /**
105
+ * Configuration for async multiselect editable columns using editConfig.
106
+ * Only valid when T[K] is MultiSelectMenuOption[] — full option objects,
107
+ * not a plain primitive array like string[].
108
+ */
109
+ type MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends MultiSelectMenuOption[] ? BaseColumnConfig<T, K> & {
110
+ editConfig: MultiselectAsyncEditConfig<T>;
115
111
  } : never;
116
112
  /**
117
113
  * Configuration for boolean editable columns using editConfig.
@@ -119,53 +115,12 @@ type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]>
119
115
  */
120
116
  type BooleanEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends boolean ? BaseColumnConfig<T, K> & {
121
117
  editConfig: BooleanEditConfig<T, K>;
122
- editMode?: undefined;
123
- onChange?: undefined;
124
- options?: undefined;
125
- } : never;
126
- /**
127
- * Configuration for text editable columns (legacy).
128
- * Valid when T[K] is a string.
129
- * @deprecated Use editConfig instead: `editConfig: { mode: "text", onChange: ... }`
130
- */
131
- type TextEditableColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string ? BaseColumnConfig<T, K> & {
132
- editConfig?: undefined;
133
- editMode: "text";
134
- onChange?: (value: string, rowId: string) => void;
135
- options?: never;
136
- } : never;
137
- /**
138
- * Configuration for select editable columns (legacy)
139
- * @deprecated Use editConfig instead: `editConfig: { mode: "select", options: [...], onChange: ... }`
140
- */
141
- type SelectEditableColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
142
- editConfig?: undefined;
143
- editMode: "select";
144
- onChange?: (value: T[K], rowId: string) => void;
145
- options: {
146
- value: T[K];
147
- label: string;
148
- }[];
149
- };
150
- /**
151
- * Configuration for multiselect editable columns (legacy)
152
- * @deprecated Use editConfig instead: `editConfig: { mode: "multiselect", options: [...], onChange: ... }`
153
- */
154
- type MultiselectEditableColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends unknown[] ? BaseColumnConfig<T, K> & {
155
- editConfig?: undefined;
156
- editMode: "multiselect";
157
- onChange?: (value: T[K], rowId: string) => void;
158
- options: {
159
- value: ArrayElement<NonNullable<T[K]>>;
160
- label: string;
161
- }[];
162
118
  } : never;
163
119
  /**
164
120
  * Full column configuration type - union of all possible configurations.
165
- * Includes both new editConfig-based and legacy editMode-based configs.
166
- * TypeScript will enforce that the editMode/editConfig matches the value type constraints.
121
+ * TypeScript will enforce that the editConfig matches the value type constraints.
167
122
  */
168
- type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditConfigColumnConfig<T, K> | NumberEditConfigColumnConfig<T, K> | SelectEditConfigColumnConfig<T, K> | MultiselectEditConfigColumnConfig<T, K> | BooleanEditConfigColumnConfig<T, K> | TextEditableColumnConfig<T, K> | SelectEditableColumnConfig<T, K> | MultiselectEditableColumnConfig<T, K>;
123
+ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditConfigColumnConfig<T, K> | NumberEditConfigColumnConfig<T, K> | SelectEditConfigColumnConfig<T, K> | SelectAsyncEditConfigColumnConfig<T, K> | MultiselectEditConfigColumnConfig<T, K> | MultiselectAsyncEditConfigColumnConfig<T, K> | BooleanEditConfigColumnConfig<T, K>;
169
124
  /**
170
125
  * Factory function to create column helper function for defining Table columns.
171
126
  *
@@ -214,8 +169,8 @@ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditC
214
169
  * headerLabel: "Status",
215
170
  * editConfig: {
216
171
  * mode: "select",
217
- * options: [{ value: "active", label: "Active" }],
218
- * onChange: (value, rowId) => save(value, rowId)
172
+ * options: [{ id: "active", label: "Active" }],
173
+ * onChange: (option, rowId) => save(option?.id, rowId)
219
174
  * }
220
175
  * });
221
176
  *
@@ -224,8 +179,8 @@ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditC
224
179
  * headerLabel: "Tags",
225
180
  * editConfig: {
226
181
  * mode: "multiselect",
227
- * options: [{ value: "urgent", label: "Urgent" }],
228
- * onChange: (value, rowId) => save(value, rowId)
182
+ * options: [{ id: "urgent", label: "Urgent" }],
183
+ * onChange: (options, rowId) => save(options.map(o => o.id), rowId)
229
184
  * }
230
185
  * });
231
186
  * ```