@servicetitan/anvil2 3.0.1 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +8 -6
  3. package/dist/{AiMark-B1-M3ZgP.js → AiMark-DiMotaq3.js} +3 -3
  4. package/dist/{AiMark-B1-M3ZgP.js.map → AiMark-DiMotaq3.js.map} +1 -1
  5. package/dist/AiMark.js +1 -1
  6. package/dist/{Alert-C04WIw7A.js → Alert-DhhVURcl.js} +2 -2
  7. package/dist/{Alert-C04WIw7A.js.map → Alert-DhhVURcl.js.map} +1 -1
  8. package/dist/Alert.js +1 -1
  9. package/dist/{Breadcrumbs-CAJMeA1D.js → Breadcrumbs-vvKOtFwN.js} +2 -2
  10. package/dist/{Breadcrumbs-CAJMeA1D.js.map → Breadcrumbs-vvKOtFwN.js.map} +1 -1
  11. package/dist/Breadcrumbs.js +1 -1
  12. package/dist/{Calendar-BAbAagIx.js → Calendar-CMzwTBdD.js} +2 -2
  13. package/dist/{Calendar-BAbAagIx.js.map → Calendar-CMzwTBdD.js.map} +1 -1
  14. package/dist/{Calendar-CaCMa_jq.js → Calendar-DCO_y5QZ.js} +3 -3
  15. package/dist/{Calendar-CaCMa_jq.js.map → Calendar-DCO_y5QZ.js.map} +1 -1
  16. package/dist/Calendar.js +2 -2
  17. package/dist/{Checkbox-BSAS8-DM.js → Checkbox-BngBrjEV.js} +3 -3
  18. package/dist/{Checkbox-BSAS8-DM.js.map → Checkbox-BngBrjEV.js.map} +1 -1
  19. package/dist/{Checkbox-Ckl8EFpF.js → Checkbox-lSwl_u26.js} +2 -2
  20. package/dist/{Checkbox-Ckl8EFpF.js.map → Checkbox-lSwl_u26.js.map} +1 -1
  21. package/dist/Checkbox.js +1 -1
  22. package/dist/{Chip-Da8c7tKP.js → Chip-DBn3KRak.js} +2 -2
  23. package/dist/{Chip-Da8c7tKP.js.map → Chip-DBn3KRak.js.map} +1 -1
  24. package/dist/Chip.js +1 -1
  25. package/dist/{Combobox-CBLaT1lU.js → Combobox-BwItJKgY.js} +5 -5
  26. package/dist/{Combobox-CBLaT1lU.js.map → Combobox-BwItJKgY.js.map} +1 -1
  27. package/dist/Combobox.js +1 -1
  28. package/dist/{DataTable-BDXdCF7J.js → DataTable-CME7SbPc.js} +1237 -149
  29. package/dist/DataTable-CME7SbPc.js.map +1 -0
  30. package/dist/DataTable.css +259 -103
  31. package/dist/{DateFieldRange-DPTC3EZz.js → DateFieldRange-U-5bf9og.js} +4 -4
  32. package/dist/{DateFieldRange-DPTC3EZz.js.map → DateFieldRange-U-5bf9og.js.map} +1 -1
  33. package/dist/DateFieldRange.js +1 -1
  34. package/dist/{DateFieldSingle-w1G-zd9G.js → DateFieldSingle-BKG9sqiM.js} +4 -4
  35. package/dist/{DateFieldSingle-w1G-zd9G.js.map → DateFieldSingle-BKG9sqiM.js.map} +1 -1
  36. package/dist/DateFieldSingle.js +1 -1
  37. package/dist/{DateFieldYearless-DHNVc7Sd.js → DateFieldYearless-DSqjzJu1.js} +4 -4
  38. package/dist/{DateFieldYearless-DHNVc7Sd.js.map → DateFieldYearless-DSqjzJu1.js.map} +1 -1
  39. package/dist/DateFieldYearless.js +1 -1
  40. package/dist/{DateFieldYearlessRange-C5ktVUgG.js → DateFieldYearlessRange-CTvEP2-M.js} +3 -3
  41. package/dist/{DateFieldYearlessRange-C5ktVUgG.js.map → DateFieldYearlessRange-CTvEP2-M.js.map} +1 -1
  42. package/dist/DateFieldYearlessRange.js +1 -1
  43. package/dist/{DaysOfTheWeek-BubWkBZ0.js → DaysOfTheWeek-BkvgTLLI.js} +4 -4
  44. package/dist/{DaysOfTheWeek-BubWkBZ0.js.map → DaysOfTheWeek-BkvgTLLI.js.map} +1 -1
  45. package/dist/DaysOfTheWeek.js +1 -1
  46. package/dist/{Dialog-ByTyuybu.js → Dialog-BG9oFx5p.js} +4 -4
  47. package/dist/{Dialog-ByTyuybu.js.map → Dialog-BG9oFx5p.js.map} +1 -1
  48. package/dist/Dialog.js +1 -1
  49. package/dist/Dnd.js +2 -1
  50. package/dist/Dnd.js.map +1 -1
  51. package/dist/DndHandleButton-Dgt9G-dF.js +43 -0
  52. package/dist/DndHandleButton-Dgt9G-dF.js.map +1 -0
  53. package/dist/DndHandleButton.css +22 -0
  54. package/dist/DndSort.js +3 -2
  55. package/dist/DndSort.js.map +1 -1
  56. package/dist/{Drawer-CwyfBcwt.js → Drawer-CmoV9FWV.js} +4 -4
  57. package/dist/{Drawer-CwyfBcwt.js.map → Drawer-CmoV9FWV.js.map} +1 -1
  58. package/dist/Drawer.js +1 -1
  59. package/dist/DrillDown.js +1 -1
  60. package/dist/{EditCard-DqLSnkih.js → EditCard-DFBjxF9l.js} +2 -2
  61. package/dist/{EditCard-DqLSnkih.js.map → EditCard-DFBjxF9l.js.map} +1 -1
  62. package/dist/EditCard.js +1 -1
  63. package/dist/{FieldLabel-DZWu5dMp.js → FieldLabel-rHPbiyR3.js} +3 -3
  64. package/dist/{FieldLabel-DZWu5dMp.js.map → FieldLabel-rHPbiyR3.js.map} +1 -1
  65. package/dist/FieldLabel.js +1 -1
  66. package/dist/{FilterBar-BU8StPPd.js → FilterBar-Cr0Tiw-y.js} +14 -14
  67. package/dist/{FilterBar-BU8StPPd.js.map → FilterBar-Cr0Tiw-y.js.map} +1 -1
  68. package/dist/FilterBar.js +1 -1
  69. package/dist/{Flex-DOUtHiPi.js → Flex-_orhvoxS.js} +3 -3
  70. package/dist/{Flex-DOUtHiPi.js.map → Flex-_orhvoxS.js.map} +1 -1
  71. package/dist/Flex.css +4 -20
  72. package/dist/Flex.js +1 -1
  73. package/dist/{Grid-B1VVssDD.js → Grid-_-rtwanf.js} +4 -4
  74. package/dist/{Grid-B1VVssDD.js.map → Grid-_-rtwanf.js.map} +1 -1
  75. package/dist/Grid.css +6 -22
  76. package/dist/Grid.js +1 -1
  77. package/dist/{InputMask-EwEJlW-t.js → InputMask-DxbFpzo7.js} +3 -3
  78. package/dist/{InputMask-EwEJlW-t.js.map → InputMask-DxbFpzo7.js.map} +1 -1
  79. package/dist/InputMask.js +1 -1
  80. package/dist/InteractiveCard-KGs2b_al.js +119 -0
  81. package/dist/InteractiveCard-KGs2b_al.js.map +1 -0
  82. package/dist/InteractiveCard.css +21 -28
  83. package/dist/InteractiveCard.js +1 -1
  84. package/dist/{ListView-DBO9Bl1H.js → ListView-CYkuvkAy.js} +2 -2
  85. package/dist/{ListView-DBO9Bl1H.js.map → ListView-CYkuvkAy.js.map} +1 -1
  86. package/dist/ListView.js +1 -1
  87. package/dist/{Listbox-C0tjQFDF.js → Listbox-DbSr9FiH.js} +3 -3
  88. package/dist/{Listbox-C0tjQFDF.js.map → Listbox-DbSr9FiH.js.map} +1 -1
  89. package/dist/Listbox.js +1 -1
  90. package/dist/MultiSelectField.js +1 -1
  91. package/dist/{MultiSelectFieldSync-ueey5UBM.js → MultiSelectFieldSync-CSTBMpZC.js} +29 -13
  92. package/dist/MultiSelectFieldSync-CSTBMpZC.js.map +1 -0
  93. package/dist/MultiSelectMenu.js +1 -1
  94. package/dist/{MultiSelectMenuSync-D7hqugcQ.js → MultiSelectMenuSync-DKt2MBno.js} +3 -3
  95. package/dist/{MultiSelectMenuSync-D7hqugcQ.js.map → MultiSelectMenuSync-DKt2MBno.js.map} +1 -1
  96. package/dist/{NumberField-DJbdyatF.js → NumberField-BDoMHzQ4.js} +7 -7
  97. package/dist/NumberField-BDoMHzQ4.js.map +1 -0
  98. package/dist/NumberField.js +1 -1
  99. package/dist/Overflow.js +2 -2
  100. package/dist/{Page-DbK-JKyB.js → Page-3UxH97bm.js} +10 -10
  101. package/dist/{Page-DbK-JKyB.js.map → Page-3UxH97bm.js.map} +1 -1
  102. package/dist/Page.js +1 -1
  103. package/dist/{Pagination-Bg5Nsdik.js → Pagination-8JccjxhO.js} +3 -3
  104. package/dist/{Pagination-Bg5Nsdik.js.map → Pagination-8JccjxhO.js.map} +1 -1
  105. package/dist/Pagination.js +1 -1
  106. package/dist/{Popover-CyB7yzSf.js → Popover-C_XdNvAZ.js} +2 -2
  107. package/dist/{Popover-CyB7yzSf.js.map → Popover-C_XdNvAZ.js.map} +1 -1
  108. package/dist/Popover.js +1 -1
  109. package/dist/{ProgressBar-DSrjgLTx.js → ProgressBar-Cpf78iq6.js} +3 -3
  110. package/dist/{ProgressBar-DSrjgLTx.js.map → ProgressBar-Cpf78iq6.js.map} +1 -1
  111. package/dist/ProgressBar.js +1 -1
  112. package/dist/{Radio-CQaXJ72d.js → Radio-DJ6KgfcS.js} +2 -2
  113. package/dist/{Radio-CQaXJ72d.js.map → Radio-DJ6KgfcS.js.map} +1 -1
  114. package/dist/{Radio-DO4UhbBE.js → Radio-IksHWkBl.js} +3 -3
  115. package/dist/{Radio-DO4UhbBE.js.map → Radio-IksHWkBl.js.map} +1 -1
  116. package/dist/Radio.js +1 -1
  117. package/dist/RichTextEditor-DUz-bi8H.js +30852 -0
  118. package/dist/RichTextEditor-DUz-bi8H.js.map +1 -0
  119. package/dist/RichTextEditor.css +178 -0
  120. package/dist/RichTextEditor.d.ts +2 -0
  121. package/dist/RichTextEditor.js +2 -0
  122. package/dist/RichTextEditor.js.map +1 -0
  123. package/dist/{SelectCard-CtXwY8FZ.js → SelectCard-E-13CjHS.js} +3 -3
  124. package/dist/{SelectCard-CtXwY8FZ.js.map → SelectCard-E-13CjHS.js.map} +1 -1
  125. package/dist/SelectCard.js +1 -1
  126. package/dist/SelectField.js +1 -1
  127. package/dist/{SelectFieldLabel-DLT5dKbx.js → SelectFieldLabel-DznBaE99.js} +4 -2
  128. package/dist/SelectFieldLabel-DznBaE99.js.map +1 -0
  129. package/dist/{SelectFieldSync-W_-jTf7z.js → SelectFieldSync-Ci9k35TH.js} +27 -11
  130. package/dist/SelectFieldSync-Ci9k35TH.js.map +1 -0
  131. package/dist/SelectMenu.js +1 -1
  132. package/dist/{SelectMenuSync-QcjbQtCO.js → SelectMenuSync-s2IzEHug.js} +3 -3
  133. package/dist/{SelectMenuSync-QcjbQtCO.js.map → SelectMenuSync-s2IzEHug.js.map} +1 -1
  134. package/dist/{SelectOptions-BsX0f22q.js → SelectOptions-5zgSQ6Xs.js} +2 -2
  135. package/dist/{SelectOptions-BsX0f22q.js.map → SelectOptions-5zgSQ6Xs.js.map} +1 -1
  136. package/dist/{SelectTrigger-BaDvF9JD.js → SelectTrigger-Ce9SHhQ9.js} +2 -2
  137. package/dist/{SelectTrigger-BaDvF9JD.js.map → SelectTrigger-Ce9SHhQ9.js.map} +1 -1
  138. package/dist/SelectTrigger.js +1 -1
  139. package/dist/{SelectTriggerBase-kMRqbXwu.js → SelectTriggerBase-BqTVE7Jr.js} +4 -4
  140. package/dist/{SelectTriggerBase-kMRqbXwu.js.map → SelectTriggerBase-BqTVE7Jr.js.map} +1 -1
  141. package/dist/{Switch-DeBu4Ucg.js → Switch-DTOkt0oQ.js} +3 -3
  142. package/dist/{Switch-DeBu4Ucg.js.map → Switch-DTOkt0oQ.js.map} +1 -1
  143. package/dist/Switch.js +1 -1
  144. package/dist/Table.js +1 -1
  145. package/dist/{Text-BH8gglCL.js → Text-C0F8AkvH.js} +2 -2
  146. package/dist/{Text-BH8gglCL.js.map → Text-C0F8AkvH.js.map} +1 -1
  147. package/dist/Text.js +1 -1
  148. package/dist/{TextField-CRDTnuUN.js → TextField-CLZEj0aI.js} +3 -3
  149. package/dist/{TextField-CRDTnuUN.js.map → TextField-CLZEj0aI.js.map} +1 -1
  150. package/dist/{TextField-YlMkDHp-.js → TextField-yL52fx5R.js} +2 -2
  151. package/dist/{TextField-YlMkDHp-.js.map → TextField-yL52fx5R.js.map} +1 -1
  152. package/dist/TextField.js +1 -1
  153. package/dist/{Textarea-CxXmr_Gx.js → Textarea-CGgyvnM8.js} +3 -3
  154. package/dist/{Textarea-CxXmr_Gx.js.map → Textarea-CGgyvnM8.js.map} +1 -1
  155. package/dist/Textarea.js +1 -1
  156. package/dist/{TimeField-Cz4tMYb3.js → TimeField-B6a5M2IF.js} +4 -4
  157. package/dist/{TimeField-Cz4tMYb3.js.map → TimeField-B6a5M2IF.js.map} +1 -1
  158. package/dist/TimeField.js +1 -1
  159. package/dist/Toast.js +2 -2
  160. package/dist/{Toaster-DYGDohJT.js → Toaster-BFqaSgtk.js} +2 -2
  161. package/dist/{Toaster-DYGDohJT.js.map → Toaster-BFqaSgtk.js.map} +1 -1
  162. package/dist/{Toaster-BV8RjmIN.js → Toaster-r2MSja0X.js} +3 -3
  163. package/dist/{Toaster-BV8RjmIN.js.map → Toaster-r2MSja0X.js.map} +1 -1
  164. package/dist/{Toolbar-Dzj2KMEy.js → Toolbar-B3gBBULy.js} +6 -6
  165. package/dist/{Toolbar-Dzj2KMEy.js.map → Toolbar-B3gBBULy.js.map} +1 -1
  166. package/dist/Toolbar-DVRr_0JF.js +780 -0
  167. package/dist/Toolbar-DVRr_0JF.js.map +1 -0
  168. package/dist/Toolbar.js +2 -2
  169. package/dist/{ToolbarButtonToggle--2Ka05N8.js → ToolbarButtonToggle-Ch0SH4oH.js} +5 -4
  170. package/dist/ToolbarButtonToggle-Ch0SH4oH.js.map +1 -0
  171. package/dist/{Tooltip-BlStOXN3.js → Tooltip-lBmgi5ZB.js} +7 -6
  172. package/dist/Tooltip-lBmgi5ZB.js.map +1 -0
  173. package/dist/Tooltip.css +7 -6
  174. package/dist/Tooltip.js +1 -1
  175. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js → YearlessDateInputWithPicker-DA2bOjrc.js} +3 -3
  176. package/dist/{YearlessDateInputWithPicker-DyytWt0x.js.map → YearlessDateInputWithPicker-DA2bOjrc.js.map} +1 -1
  177. package/dist/add-BcQkAUip.js +6 -0
  178. package/dist/add-BcQkAUip.js.map +1 -0
  179. package/dist/assets/css-utils/a2-border.css +23 -53
  180. package/dist/assets/css-utils/a2-color.css +221 -449
  181. package/dist/assets/css-utils/a2-font.css +21 -47
  182. package/dist/assets/css-utils/a2-spacing.css +238 -481
  183. package/dist/assets/css-utils/a2-utils.css +497 -1002
  184. package/dist/assets/css-utils/border.css +23 -53
  185. package/dist/assets/css-utils/color.css +221 -449
  186. package/dist/assets/css-utils/font.css +21 -47
  187. package/dist/assets/css-utils/spacing.css +238 -481
  188. package/dist/assets/css-utils/utils.css +497 -1002
  189. package/dist/beta/components/InteractiveCard/InteractiveCard.d.ts +3 -1
  190. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  191. package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  192. package/dist/beta/components/MultiSelectField/internal/types.d.ts +3 -1
  193. package/dist/beta/components/MultiSelectField/types.d.ts +5 -1
  194. package/dist/beta/components/RichTextEditor/RichTextEditor.d.ts +27 -0
  195. package/dist/beta/components/RichTextEditor/index.d.ts +2 -0
  196. package/dist/beta/components/RichTextEditor/internal/LinkPopover.d.ts +14 -0
  197. package/dist/beta/components/RichTextEditor/internal/MentionList.d.ts +14 -0
  198. package/dist/beta/components/RichTextEditor/internal/MentionNodeView.d.ts +11 -0
  199. package/dist/beta/components/RichTextEditor/internal/MentionPopover.d.ts +16 -0
  200. package/dist/beta/components/RichTextEditor/internal/RichTextEditorContext.d.ts +57 -0
  201. package/dist/beta/components/RichTextEditor/internal/RichTextEditorDragHandle.d.ts +6 -0
  202. package/dist/beta/components/RichTextEditor/internal/RichTextEditorMockData.d.ts +8 -0
  203. package/dist/beta/components/RichTextEditor/internal/RichTextEditorProvider.d.ts +8 -0
  204. package/dist/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
  205. package/dist/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +11 -0
  206. package/dist/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +11 -0
  207. package/dist/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +3 -0
  208. package/dist/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +8 -0
  209. package/dist/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +18 -0
  210. package/dist/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +8 -0
  211. package/dist/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +32 -0
  212. package/dist/beta/components/RichTextEditor/types.d.ts +103 -0
  213. package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
  214. package/dist/beta/components/SelectField/internal/SelectFieldLabel.d.ts +3 -1
  215. package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
  216. package/dist/beta/components/SelectField/types.d.ts +5 -1
  217. package/dist/beta/components/Table/DataTable/DataTable.d.ts +40 -1
  218. package/dist/beta/components/Table/DataTable/internal/DataTableBody.d.ts +22 -0
  219. package/dist/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +18 -1
  220. package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +16 -0
  221. package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +8 -0
  222. package/dist/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +49 -0
  223. package/dist/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +9 -5
  224. package/dist/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +3 -0
  225. package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -1
  226. package/dist/beta/components/Table/createColumnHelper.d.ts +48 -22
  227. package/dist/beta/components/Table/internal/getCommonPinningClasses.d.ts +1 -1
  228. package/dist/beta/components/Table/types.d.ts +311 -7
  229. package/dist/beta/components/index.d.ts +1 -0
  230. package/dist/beta.js +13 -12
  231. package/dist/beta.js.map +1 -1
  232. package/dist/components/Toolbar/internal/utils/accessibility.d.ts +5 -0
  233. package/dist/getKeyboardFocusableElements-B_U9rt6y.js +11 -0
  234. package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -0
  235. package/dist/index-CqesQXSt.js +17044 -0
  236. package/dist/index-CqesQXSt.js.map +1 -0
  237. package/dist/index-DtsM4pjR.js +71 -0
  238. package/dist/index-DtsM4pjR.js.map +1 -0
  239. package/dist/index.css +1 -22
  240. package/dist/index.js +47 -811
  241. package/dist/index.js.map +1 -1
  242. package/dist/internal/components/Surface/Surface.d.ts +141 -0
  243. package/dist/internal/components/Surface/index.d.ts +1 -0
  244. package/dist/internal/components/index.d.ts +1 -0
  245. package/dist/internal/functions/getKeyboardFocusableElements.d.ts +11 -0
  246. package/dist/internal/hooks/useNumberField/internal/useNumberFieldKeys.d.ts +2 -0
  247. package/dist/internal/hooks/useNumberField/useNumberField.d.ts +5 -0
  248. package/dist/internal/types/selectFieldInternalTypes.d.ts +3 -1
  249. package/dist/{stripInlineMarkdown-BWbMy7r_.js → stripInlineMarkdown-BOi-eJO3.js} +2 -2
  250. package/dist/{stripInlineMarkdown-BWbMy7r_.js.map → stripInlineMarkdown-BOi-eJO3.js.map} +1 -1
  251. package/dist/{syncFilterUtils-nJS_tCsu.js → syncFilterUtils-BCxA8KSW.js} +5 -5
  252. package/dist/{syncFilterUtils-nJS_tCsu.js.map → syncFilterUtils-BCxA8KSW.js.map} +1 -1
  253. package/dist/token/core/css-utils/a2-border.css +0 -30
  254. package/dist/token/core/css-utils/a2-color.css +0 -228
  255. package/dist/token/core/css-utils/a2-font.css +1 -27
  256. package/dist/token/core/css-utils/a2-spacing.css +1 -244
  257. package/dist/token/core/css-utils/a2-utils.css +0 -505
  258. package/dist/token/core/css-utils/border.css +0 -30
  259. package/dist/token/core/css-utils/color.css +0 -228
  260. package/dist/token/core/css-utils/font.css +1 -27
  261. package/dist/token/core/css-utils/spacing.css +1 -244
  262. package/dist/token/core/css-utils/utils.css +0 -505
  263. package/dist/{useDrilldown-DwzT0Fse.js → useDrilldown-DWqp5gyZ.js} +4 -4
  264. package/dist/{useDrilldown-DwzT0Fse.js.map → useDrilldown-DWqp5gyZ.js.map} +1 -1
  265. package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
  266. package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
  267. package/dist/{useNumberField-eMyk7MB8.js → useNumberField-D_ic9i2q.js} +4 -2
  268. package/dist/useNumberField-D_ic9i2q.js.map +1 -0
  269. package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
  270. package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
  271. package/dist/{useToggleSelection-CAwGOeXk.js → useToggleSelection-DLH87UOP.js} +2 -2
  272. package/dist/{useToggleSelection-CAwGOeXk.js.map → useToggleSelection-DLH87UOP.js.map} +1 -1
  273. package/package.json +18 -3
  274. package/dist/DataTable-BDXdCF7J.js.map +0 -1
  275. package/dist/InteractiveCard-CnW0m_F-.js +0 -87
  276. package/dist/InteractiveCard-CnW0m_F-.js.map +0 -1
  277. package/dist/MultiSelectFieldSync-ueey5UBM.js.map +0 -1
  278. package/dist/NumberField-DJbdyatF.js.map +0 -1
  279. package/dist/SelectFieldLabel-DLT5dKbx.js.map +0 -1
  280. package/dist/SelectFieldSync-W_-jTf7z.js.map +0 -1
  281. package/dist/ToolbarButtonToggle--2Ka05N8.js.map +0 -1
  282. package/dist/Tooltip-BlStOXN3.js.map +0 -1
  283. package/dist/getKeyboardFocusableElements-QqcABz0D.js +0 -12
  284. package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +0 -1
  285. package/dist/index-ByMdotWU.js +0 -107
  286. package/dist/index-ByMdotWU.js.map +0 -1
  287. package/dist/useNumberField-eMyk7MB8.js.map +0 -1
  288. /package/dist/{index2.css → Toolbar2.css} +0 -0
@@ -0,0 +1,178 @@
1
+ .anvil2 {._toolbar-wrapper_1tfzv_1 {
2
+ background-color: var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929)));
3
+ padding: var(--a2-size-1, 0.25rem);
4
+ }._btn-toggle_1tfzv_6[aria-pressed=false]:not([data-interactive=hover],
5
+ :hover,
6
+ [data-interactive=active],
7
+ :active) {
8
+ --a2-mod-button-toggle-unpressed-background-color: transparent;
9
+ --a2-mod-button-toggle-unpressed-border-color: transparent;
10
+ }
11
+ }.anvil2 {._rte_b1wla_1 {
12
+ display: flex;
13
+ flex-direction: column;
14
+ font-size: var(--a2-typography-paragraph-size-default, var(--a2-font-size-400, 1rem));
15
+ gap: var(--a2-size-2, 0.5rem);
16
+ }._editor-wrapper_b1wla_8 {
17
+ --a2-mod-rte-background-color: var(--a2-background-color-default, light-dark(var(--a2-color-neutral-0, #ffffff), var(--a2-color-neutral-900, #1a1a1a)));
18
+ --a2-mod-rte-border-color: var(--a2-border-color-default, light-dark(var(--a2-color-neutral-400, #8b8b8b), var(--a2-color-neutral-600, #545454)));
19
+ --a2-mod-rte-focus-ring-color: var(--a2-focus-ring-color-default, var(--a2-status-color-info, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff))));
20
+ background-color: var(--a2-mod-rte-background-color);
21
+ border: var(--a2-border-width-default, var(--a2-size-quarter, 0.0625rem)) solid var(--a2-mod-rte-border-color);
22
+ border-radius: var(--a2-border-radius-medium, var(--a2-radius-2, 0.375rem));
23
+ display: flex;
24
+ flex-direction: column;
25
+ min-width: 10rem;
26
+ overflow: hidden;
27
+ position: relative;
28
+ }._editor-wrapper_b1wla_8:focus-within:not(._disabled_b1wla_21) {
29
+ outline: var(--a2-size-half, 0.125rem) solid var(--a2-mod-rte-focus-ring-color);
30
+ outline-offset: var(--a2-size-half, 0.125rem);
31
+ }._error_b1wla_26 {
32
+ --a2-mod-rte-border-color: var(--a2-border-color-danger, light-dark(var(--a2-color-red-600, #d62100), var(--a2-color-red-200, #ffac9e)));
33
+ --a2-mod-rte-focus-ring-color: var(--a2-focus-ring-color-danger, var(--a2-status-color-danger, light-dark(var(--a2-color-red-600, #d62100), var(--a2-color-red-400, #ff5b3d))));
34
+ }._disabled_b1wla_21 {
35
+ --a2-mod-rte-background-color: var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929)));
36
+ opacity: 0.6;
37
+ pointer-events: none;
38
+ }._disabled_b1wla_21:hover {
39
+ cursor: not-allowed;
40
+ }._editor_b1wla_8 {
41
+ --a2-mod-rte-editor-padding-inline-start: var(--a2-size-3, 0.75rem);
42
+ cursor: text;
43
+ flex: 1;
44
+ min-height: 10rem;
45
+ padding: var(--a2-size-3, 0.75rem);
46
+ padding-inline-start: var(--a2-mod-rte-editor-padding-inline-start);
47
+ }._editor--drag_b1wla_52 {
48
+ --a2-mod-rte-editor-padding-inline-start: var(--a2-size-8, 2rem);
49
+ }._editor_b1wla_8 ._drag-handle_b1wla_200 {
50
+ margin-block-start: -var(--a2-size-1, 0.25rem);
51
+ }
52
+ }._disabled_b1wla_21 .ProseMirror {
53
+ pointer-events: none;
54
+ }._editor_b1wla_8 .ProseMirror {
55
+ color: var(--a2-foreground-color-default, light-dark(var(--a2-color-neutral-950, #040404), var(--a2-color-neutral-0, #ffffff)));
56
+ line-height: 1.5;
57
+ min-height: 10rem;
58
+ outline: none;
59
+ }._editor_b1wla_8 .ProseMirror p.is-editor-empty::before {
60
+ color: var(--a2-foreground-color-subdued, light-dark(var(--a2-color-neutral-500, #707070), var(--a2-color-neutral-200, #c4c4c4)));
61
+ content: attr(data-placeholder);
62
+ float: left;
63
+ height: 0;
64
+ pointer-events: none;
65
+ }._editor_b1wla_8 .ProseMirror p {
66
+ margin: 0 0 var(--a2-size-2, 0.5rem);
67
+ }._editor_b1wla_8 .ProseMirror p:last-child {
68
+ margin-bottom: 0;
69
+ }._editor_b1wla_8 .ProseMirror h1 {
70
+ font-size: var(--a2-typography-heading-size-xlarge, var(--a2-font-size-800, 2rem));
71
+ font-weight: var(--a2-typography-heading-font-weight, var(--a2-font-weight-bold, 700));
72
+ margin: 0 0 var(--a2-size-2, 0.5rem);
73
+ }._editor_b1wla_8 .ProseMirror h2 {
74
+ font-size: var(--a2-typography-heading-size-large, var(--a2-font-size-600, 1.5rem));
75
+ font-weight: var(--a2-typography-heading-font-weight, var(--a2-font-weight-bold, 700));
76
+ margin: 0 0 var(--a2-size-2, 0.5rem);
77
+ }._editor_b1wla_8 .ProseMirror h3 {
78
+ font-size: var(--a2-typography-heading-size-default, var(--a2-font-size-500, 1.25rem));
79
+ font-weight: var(--a2-typography-heading-font-weight, var(--a2-font-weight-bold, 700));
80
+ margin: 0 0 var(--a2-size-2, 0.5rem);
81
+ }._editor_b1wla_8 .ProseMirror ul,
82
+ ._editor_b1wla_8 .ProseMirror ol {
83
+ margin: 0 0 var(--a2-size-2, 0.5rem);
84
+ padding-inline-start: var(--a2-size-6, 1.5rem);
85
+ }._editor_b1wla_8 .ProseMirror ol {
86
+ list-style-type: decimal;
87
+ }._editor_b1wla_8 .ProseMirror ol ol {
88
+ list-style-type: lower-alpha;
89
+ }._editor_b1wla_8 .ProseMirror ol ol ol {
90
+ list-style-type: lower-roman;
91
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] {
92
+ list-style: none;
93
+ padding-inline-start: 0;
94
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] li {
95
+ align-items: flex-start;
96
+ display: flex;
97
+ gap: var(--a2-size-2, 0.5rem);
98
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] li > label {
99
+ flex-shrink: 0;
100
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] li > label > input {
101
+ margin-block-start: 0;
102
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] li > div {
103
+ flex: 1;
104
+ }._editor_b1wla_8 .ProseMirror ul[data-type=taskList] li[data-checked=true] > div {
105
+ color: var(--a2-foreground-color-subdued, light-dark(var(--a2-color-neutral-500, #707070), var(--a2-color-neutral-200, #c4c4c4)));
106
+ text-decoration: line-through;
107
+ }._editor_b1wla_8 .ProseMirror blockquote {
108
+ border-inline-start: var(--a2-size-1, 0.25rem) solid var(--a2-border-color-subdued, light-dark(var(--a2-color-neutral-80, #e6e6e6), var(--a2-color-neutral-700, #404040)));
109
+ margin: 0 0 var(--a2-size-2, 0.5rem);
110
+ padding-inline-start: var(--a2-size-6, 1.5rem);
111
+ }._editor_b1wla_8 .ProseMirror code {
112
+ background-color: var(--a2-background-color-stronger, light-dark(var(--a2-color-neutral-50, #eeeeee), var(--a2-color-neutral-700, #404040)));
113
+ border: none;
114
+ border-radius: var(--a2-border-radius-small, var(--a2-radius-1, 0.1875rem));
115
+ color: var(--a2-foreground-color-default, light-dark(var(--a2-color-neutral-950, #040404), var(--a2-color-neutral-0, #ffffff)));
116
+ font-family: var(--a2-typography-paragraph-font-family, var(--a2-font-family-base, "Nunito Sans", sans-serif));
117
+ font-size: inherit;
118
+ line-height: var(--a2-font-line-height-base, 1.5);
119
+ padding: 0 var(--a2-size-half, 0.125rem);
120
+ }._editor_b1wla_8 .ProseMirror a {
121
+ color: var(--a2-foreground-color-primary, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff)));
122
+ cursor: pointer;
123
+ text-decoration: underline;
124
+ text-decoration-line: underline;
125
+ -webkit-text-decoration-skip-ink: none;
126
+ text-decoration-skip-ink: none;
127
+ text-decoration-style: solid;
128
+ text-decoration-thickness: auto;
129
+ text-underline-offset: auto;
130
+ text-underline-position: from-font;
131
+ }._editor_b1wla_8 .ProseMirror img {
132
+ border-radius: var(--a2-border-radius-small, var(--a2-radius-1, 0.1875rem));
133
+ display: block;
134
+ height: auto;
135
+ max-width: min(560px, 100%);
136
+ outline: var(--a2-border-width-default, var(--a2-size-quarter, 0.0625rem)) solid transparent;
137
+ outline-offset: var(--a2-size-half, 0.125rem);
138
+ }._editor_b1wla_8 .ProseMirror img.ProseMirror-selectednode {
139
+ outline-color: var(--a2-focus-ring-color-default, var(--a2-status-color-info, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff))));
140
+ }._editor_b1wla_8 .ProseMirror img[style*="text-align: center"] {
141
+ margin-left: auto;
142
+ margin-right: auto;
143
+ }._editor_b1wla_8 .ProseMirror img[style*="text-align: right"] {
144
+ margin-left: auto;
145
+ margin-right: 0;
146
+ }._editor_b1wla_8 .ProseMirror div[data-youtube-video] {
147
+ margin: 0 0 var(--a2-size-2, 0.5rem);
148
+ }._editor_b1wla_8 .ProseMirror div[data-youtube-video] iframe {
149
+ aspect-ratio: 16/9;
150
+ border: none;
151
+ border-radius: var(--a2-border-radius-small, var(--a2-radius-1, 0.1875rem));
152
+ display: block;
153
+ }._editor_b1wla_8 .ProseMirror div[data-youtube-video] iframe[style*="text-align: center"] {
154
+ margin-left: auto;
155
+ margin-right: auto;
156
+ }._editor_b1wla_8 .ProseMirror div[data-youtube-video] iframe[style*="text-align: right"] {
157
+ margin-left: auto;
158
+ margin-right: 0;
159
+ }._editor_b1wla_8 .ProseMirror button[data-type=mention] {
160
+ -webkit-appearance: none;
161
+ -moz-appearance: none;
162
+ appearance: none;
163
+ background-color: var(--a2-background-color-primary-subdued, light-dark(var(--a2-color-blue-50, #e6f1ff), color-mix(in srgb, var(--a2-color-blue-300, #70b1ff) 20%, transparent)));
164
+ border: none;
165
+ border-radius: var(--a2-border-radius-small, var(--a2-radius-1, 0.1875rem));
166
+ color: var(--a2-foreground-color-primary, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff)));
167
+ cursor: pointer;
168
+ display: inline-block;
169
+ font: inherit;
170
+ line-height: inherit;
171
+ padding: 0 var(--a2-size-1, 0.25rem);
172
+ }.anvil2 {._empty_4nxfy_1 {
173
+ padding-block-end: var(--a2-size-4, 1rem);
174
+ padding-block-start: var(--a2-size-3, 0.75rem);
175
+ padding-inline-end: var(--a2-size-6, 1.5rem);
176
+ padding-inline-start: var(--a2-size-6, 1.5rem);
177
+ }
178
+ }
@@ -0,0 +1,2 @@
1
+ export * from './beta/components/RichTextEditor/index'
2
+ export {}
@@ -0,0 +1,2 @@
1
+ export { R as RichTextEditor } from './RichTextEditor-DUz-bi8H.js';
2
+ //# sourceMappingURL=RichTextEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RichTextEditor.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useContext, createContext, useState, useMemo, useId, forwardRef, useLayoutEffect, useRef } from 'react';
3
3
  import { c as cx } from './index-De1g9FRV.js';
4
- import { a as CheckboxGroup, C as Checkbox } from './Checkbox-BSAS8-DM.js';
5
- import { a as RadioGroup, R as Radio, S as SvgRadioButtonChecked, b as SvgRadioButtonUnchecked } from './Radio-DO4UhbBE.js';
4
+ import { a as CheckboxGroup, C as Checkbox } from './Checkbox-BngBrjEV.js';
5
+ import { a as RadioGroup, R as Radio, S as SvgRadioButtonChecked, b as SvgRadioButtonUnchecked } from './Radio-IksHWkBl.js';
6
6
  import { C as Card } from './Card-DSFuXUGk.js';
7
7
  import { I as Icon } from './Icon-BMMbp40n.js';
8
8
  import { S as SvgCheckBox, a as SvgCheckBoxOutlineBlank } from './check_box-0U1tbEAd.js';
@@ -348,4 +348,4 @@ const SelectCard = Object.assign(SelectCardElement, {
348
348
  });
349
349
 
350
350
  export { SelectCard as S };
351
- //# sourceMappingURL=SelectCard-CtXwY8FZ.js.map
351
+ //# sourceMappingURL=SelectCard-E-13CjHS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCard-CtXwY8FZ.js","sources":["../src/components/SelectCard/internal/SelectCardContext.tsx","../src/components/SelectCard/internal/SelectCardProvider.tsx","../src/components/SelectCard/SelectCardGroup.tsx","../src/components/SelectCard/SelectCard.tsx"],"sourcesContent":["import { ChangeEvent, createContext, useContext } from \"react\";\n\n/**\n * Interface for the select card state\n */\nexport interface ISelectCardState {\n /**\n * When `true`, adds the item to the selected state holder.\n */\n checked: boolean;\n\n /**\n * Gives an explicit id to each item in the set.\n */\n id?: string | number;\n}\n\n/**\n * Interface for the select card onChange options\n */\nexport interface ISelectCardOnChangeOptions {\n /**\n * When `true`, doesn't fire the user's `onChange`\n */\n internal?: boolean;\n}\n\n/**\n * Interface for the select card context\n */\nexport interface ISelectCardContext {\n /**\n * Callback function that is triggered when the selection state changes.\n *\n * @callback OnChangeCallback\n * @param {ChangeEvent<HTMLInputElement>} [e] - The native HTML input change event.\n * @param {ISelectCardState} [state] - The current state of the select card component after the change.\n * @returns {void}\n */\n onChange?: (\n e?: ChangeEvent<HTMLInputElement>,\n state?: ISelectCardState,\n options?: ISelectCardOnChangeOptions,\n ) => void;\n\n /**\n * Sets how many cards the user can select, either 'single' (radio buttons) or 'multiple' (checkboxes)\n */\n selectionMode: \"single\" | \"multiple\";\n\n /**\n * Used internally to create a UUID for the HTML `name` property on radios.\n */\n radioName: string;\n\n /**\n * Creates a set of ids that are selected.\n */\n selection: Set<string | number>;\n\n /**\n * When `true`, indicates that selection is controlled at the group level via the `value` prop.\n * @default false\n */\n isGroupControlled?: boolean;\n\n /**\n * When `true`, the group was given a `defaultValue` and owns the initial selection state.\n * Individual `SelectCard` mount syncs should be skipped to avoid overriding it.\n * @default false\n */\n hasGroupDefault?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the selection mode from SelectCard.Group context.\n * @default false\n */\n showSelectIndicator?: boolean;\n}\n\nexport const SelectCardContext = createContext<ISelectCardContext | null>(null);\n\n/**\n * Custom hook for accessing the SelectCard context.\n * @returns The SelectCard context or null if not within a SelectCardProvider\n */\nexport const useSelectCardContext = () => useContext(SelectCardContext);\n","import { ChangeEvent, ReactNode, useId, useMemo, useState } from \"react\";\nimport {\n ISelectCardContext,\n ISelectCardOnChangeOptions,\n ISelectCardState,\n SelectCardContext,\n} from \"./SelectCardContext\";\n\n/**\n * Props for the SelectCardProvider component\n * @extends Omit<ISelectCardContext, \"radioName\" | \"selection\">\n */\ninterface ISelectCardProviderProps extends Omit<\n ISelectCardContext,\n \"radioName\" | \"selection\"\n> {\n children: ReactNode;\n\n /**\n * Controlled selection state. When provided, the group becomes controlled.\n * Array of `SelectCard` ids that are currently selected.\n */\n value?: Array<string | number>;\n\n /**\n * Initial selection state for uncontrolled usage.\n * Array of `SelectCard` ids that are selected on first render.\n */\n defaultValue?: Array<string | number>;\n}\n\n/**\n * SelectCardProvider component for managing selection state across SelectCard components.\n *\n * Features:\n * - Provides context for SelectCard components to share selection state\n * - Manages selection mode (single vs multiple)\n * - Handles selection state updates and callbacks\n * - Generates unique radio button names for single selection mode\n * - Maintains a set of selected card IDs\n * - Integrates with SelectCardGroup for automatic context provision\n *\n * @example\n * <SelectCardProvider\n * selectionMode=\"multiple\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * >\n * <SelectCard id=\"1\" onChange={() => {}}>Option 1</SelectCard>\n * <SelectCard id=\"2\" onChange={() => {}}>Option 2</SelectCard>\n * </SelectCardProvider>\n */\nexport const SelectCardProvider = ({\n children,\n defaultValue,\n onChange,\n selectionMode,\n showSelectIndicator,\n value,\n}: ISelectCardProviderProps) => {\n const isControlled = value !== undefined;\n const [internalSelection, setInternalSelection] = useState<\n Set<string | number>\n >(() => {\n const ids = defaultValue ?? [];\n return new Set(selectionMode === \"single\" ? ids.slice(0, 1) : ids);\n });\n const selection = useMemo(() => {\n if (!isControlled) return internalSelection;\n const ids = value ?? [];\n return new Set(selectionMode === \"single\" ? ids.slice(0, 1) : ids);\n }, [isControlled, value, internalSelection, selectionMode]);\n\n const radioName = useId();\n\n const handleChange = (\n e?: ChangeEvent<HTMLInputElement>,\n state?: ISelectCardState,\n options?: ISelectCardOnChangeOptions,\n ) => {\n if (!state || !state.id) {\n if (!options?.internal) {\n onChange?.(e, state);\n }\n\n return;\n }\n\n // Update internal selection when uncontrolled\n if (!isControlled) {\n if (selectionMode === \"single\") {\n setInternalSelection(state.checked ? new Set([state.id]) : new Set());\n } else {\n setInternalSelection((prev) => {\n const next = new Set(prev);\n if (state.checked) {\n next.add(state.id!);\n } else {\n next.delete(state.id!);\n }\n return next;\n });\n }\n }\n\n if (!options?.internal) {\n onChange?.(e, state);\n }\n };\n\n const context = {\n hasGroupDefault: defaultValue !== undefined,\n isGroupControlled: isControlled,\n selectionMode,\n onChange: handleChange,\n radioName,\n selection,\n showSelectIndicator,\n };\n\n return (\n <SelectCardContext.Provider value={context}>\n {children}\n </SelectCardContext.Provider>\n );\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport { CheckboxGroup, CheckboxGroupProps } from \"../Checkbox/CheckboxGroup\";\nimport { RadioGroup } from \"../Radio/RadioGroup\";\nimport { SelectCardProvider } from \"./internal/SelectCardProvider\";\nimport { ISelectCardContext } from \"./internal/SelectCardContext\";\n\n/**\n * Props for the SelectCardGroup component\n * @extends Omit<ISelectCardContext, \"radioName\" | \"selection\">\n */\nexport interface SelectCardGroupProps\n extends\n Omit<ISelectCardContext, \"radioName\" | \"selection\">,\n Pick<CheckboxGroupProps, \"moreInfo\"> {\n /**\n * Associates the legend with content below.\n */\n ariaLabelledBy?: string;\n\n children?: ReactNode;\n\n /**\n * Initial selection state for uncontrolled usage.\n * Array of `SelectCard` ids that are selected on first render.\n * Takes precedence over individual `SelectCard` `defaultChecked` props.\n */\n defaultValue?: Array<string | number>;\n\n /**\n * Sets the legend on the group.\n */\n legend: CheckboxGroupProps[\"legend\"];\n\n /**\n * Additional props for the legend `FieldLabel` (for example `aiMark`, `className`).\n */\n legendProps?: CheckboxGroupProps[\"legendProps\"];\n\n /**\n * When `true`, sets \"required\" text in label.\n * @accessibility This does not enforce error when nothing is selected.\n * @default false\n */\n required?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the `selectionMode` setting.\n * @default false\n */\n showSelectIndicator?: boolean;\n\n /**\n * Controlled selection state. When provided, the group becomes controlled.\n * Array of `SelectCard` ids that are currently selected.\n */\n value?: Array<string | number>;\n}\n\n/**\n * SelectCardGroup component for managing groups of selectable cards.\n *\n * Features:\n * - Manages selection state for multiple SelectCard components\n * - Supports both single and multiple selection modes\n * - Provides proper accessibility with legends and ARIA labels\n * - Handles required field validation\n * - Automatic radio button grouping for single selection\n * - Context provider for child SelectCard components\n * - Integrates with CheckboxGroup and RadioGroup for proper form semantics\n * - Supports AI mark indicator\n *\n * @example\n * <SelectCardGroup\n * legend=\"Choose your plan\"\n * selectionMode=\"single\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * legendProps={{ aiMark: true }}\n * >\n * <SelectCard id=\"basic\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\" el=\"h3\">Basic Plan</Text>\n * </SelectCard>\n * <SelectCard id=\"premium\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\" el=\"h3\">Premium Plan</Text>\n * </SelectCard>\n * </SelectCardGroup>\n */\nexport const SelectCardGroup = forwardRef<\n HTMLInputElement,\n SelectCardGroupProps\n>((props, _ref) => {\n const {\n ariaLabelledBy,\n children,\n defaultValue,\n legend,\n legendProps,\n moreInfo,\n onChange,\n required = false,\n selectionMode,\n showSelectIndicator = false,\n value,\n ...rest\n } = props;\n\n return (\n <SelectCardProvider\n defaultValue={defaultValue}\n onChange={onChange}\n selectionMode={selectionMode}\n showSelectIndicator={showSelectIndicator}\n value={value}\n >\n {selectionMode === \"multiple\" && (\n <CheckboxGroup\n aria-labelledby={ariaLabelledBy}\n legend={legend}\n legendProps={legendProps}\n required={required}\n moreInfo={moreInfo}\n {...rest}\n >\n {children}\n </CheckboxGroup>\n )}\n {selectionMode === \"single\" && (\n <RadioGroup\n aria-labelledby={ariaLabelledBy}\n legend={legend}\n legendProps={legendProps}\n required={required}\n moreInfo={moreInfo}\n {...rest}\n >\n {children}\n </RadioGroup>\n )}\n </SelectCardProvider>\n );\n});\n\nSelectCardGroup.displayName = \"SelectCardGroup\";\n","import {\n useLayoutEffect,\n useState,\n useRef,\n forwardRef,\n type ChangeEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectCardGroup } from \"./SelectCardGroup\";\nimport { Card, CardProps } from \"../Card\";\nimport { Radio, RadioProps } from \"../Radio/internal/Radio\";\nimport { Checkbox, CheckboxProps } from \"../Checkbox/internal/Checkbox\";\nimport { useOptionallyControlledState } from \"../../internal/hooks\";\nimport { useSelectCardContext } from \"./internal/SelectCardContext\";\nimport { Icon } from \"../Icon\";\n\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport RadioOutline from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_unchecked.svg\";\nimport RadioChecked from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_checked.svg\";\n\nimport styles from \"./SelectCard.module.scss\";\n\n/**\n * Props for the SelectCard component\n * @extends Omit<CardProps, \"onChange\" | \"id\">\n */\nexport interface SelectCardProps extends Omit<CardProps, \"onChange\" | \"id\"> {\n /**\n * Passes props to the underlying `<Checkbox />` component.\n */\n checkboxProps?: Omit<CheckboxProps, \"label\">;\n\n /**\n * Controlled state. When provided, the component becomes controlled.\n */\n checked?: boolean;\n\n /**\n * Uncontrolled initial state. Ignored when inside a `SelectCard.Group` that sets `defaultValue`.\n */\n defaultChecked?: boolean;\n\n /**\n * When `true`, disables the card.\n */\n disabled?: boolean;\n\n /**\n * When `true`, sets error styling on the card.\n */\n errored?: boolean;\n\n /**\n * A unique identifier for the card, used to track the selection state.\n */\n id: string | number;\n\n /**\n * Function called on selection state change.\n */\n onChange?: (value: boolean) => void;\n\n /**\n * Passes props to the underlying `<Radio />` component.\n */\n radioProps?: Omit<RadioProps, \"label\">;\n\n /**\n * Removes the drop shadow effect on the card.\n */\n removeDropShadow?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the `selectionMode` prop on the\n * `SelectCard.Group`, and defaults to checkbox if no `SelectCard.Group` is used.\n * @default false\n */\n showSelectIndicator?: boolean;\n}\n\nconst SelectCardElement = forwardRef<HTMLInputElement, SelectCardProps>(\n (props, ref) => {\n const {\n checkboxProps,\n children,\n checked: checkedProp,\n className,\n defaultChecked: defaultCheckedProp,\n disabled,\n errored,\n radioProps,\n onChange,\n removeDropShadow,\n showSelectIndicator = false,\n id,\n ...rest\n } = props;\n\n const [checked, setChecked] = useOptionallyControlledState<boolean>({\n controlledValue: checkedProp,\n defaultValue: defaultCheckedProp || false,\n onChange,\n });\n\n const context = useSelectCardContext();\n const isCardControlled = checkedProp !== undefined;\n const isGroupControlled = context?.isGroupControlled ?? false;\n\n // we need to re-render after setting the initial selection state on context\n const [_, setForceRenderCount] = useState(0);\n useLayoutEffect(() => {\n // Sync initial checked state to context (for both controlled and uncontrolled modes).\n // Skip when group is controlled — the group's value prop owns the selection Set.\n const initialChecked = checkedProp ?? defaultCheckedProp;\n if (initialChecked && !isGroupControlled && !context?.hasGroupDefault) {\n context?.onChange?.(\n undefined,\n {\n id,\n checked: initialChecked,\n },\n { internal: true },\n );\n\n setForceRenderCount((prev) => prev + 1);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Sync controlled state changes to context (skip initial mount - handled by above effect)\n const isFirstRender = useRef(true);\n useLayoutEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n if (isCardControlled && context) {\n // In single selection mode, only sync when checked is true.\n // Unchecking is implicit when another card becomes checked.\n // Syncing checked=false would clear the entire selection.\n if (context.selectionMode === \"single\" && !checkedProp) {\n return;\n }\n context.onChange?.(\n undefined,\n {\n id,\n checked: checkedProp!,\n },\n { internal: true },\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedProp]);\n\n const handleChange = (event?: ChangeEvent<HTMLInputElement>) => {\n const newChecked = event ? event.target.checked : false;\n setChecked(newChecked);\n context?.onChange?.(event, {\n id,\n checked: newChecked,\n });\n };\n\n // A selection in the group context supersedes the normal checked state of the card\n const isChecked = context ? context.selection.has(id) : checked;\n const showIndicator = context?.showSelectIndicator || showSelectIndicator;\n\n // When group is controlled (value prop), drive input from context selection.\n // When group has defaultValue, it takes precedence — ignore individual defaultChecked.\n const inputChecked = isGroupControlled\n ? isChecked\n : isCardControlled\n ? checkedProp\n : undefined;\n const inputDefaultChecked =\n isGroupControlled || isCardControlled\n ? undefined\n : context?.hasGroupDefault\n ? context.selection.has(id)\n : defaultCheckedProp;\n\n const contentClassName = cx(styles[\"select-card\"], className, {\n [styles[\"select-card--remove-drop-shadow\"]]: removeDropShadow,\n [styles[\"select-card--checked\"]]: isChecked,\n [styles[\"select-card--selected\"]]: isChecked && !errored,\n [styles[\"select-card--errored\"]]: errored,\n [styles[\"select-card--disabled\"]]: disabled,\n });\n\n const iconClassNames = cx({\n [styles[\"icon-checked\"]]: isChecked && !errored && !disabled,\n [styles[\"icon-unchecked\"]]: !isChecked && !disabled,\n [styles[\"icon-checked-error\"]]: errored && !disabled,\n [styles[\"icon-checked-disabled\"]]: disabled,\n });\n\n return (\n <>\n {(!context || context?.selectionMode === \"multiple\") && (\n <Checkbox\n {...checkboxProps}\n className={cx(\n styles[\"select-card-wrapper\"],\n checkboxProps?.className,\n {\n [styles[\"select-card-checkbox-unchecked\"]]:\n !isChecked && !errored,\n [styles[\"select-card-checkbox-checked\"]]: isChecked && !errored,\n [styles[\"select-card-checkbox-error\"]]: errored,\n },\n )}\n labelWrapperClassName={styles[\"select-card-label\"]}\n checked={inputChecked}\n defaultChecked={inputDefaultChecked}\n onChange={handleChange}\n disabled={disabled}\n ref={ref}\n label={\n <Card\n {...rest}\n className={contentClassName}\n flex={showIndicator ? \"1\" : undefined}\n gap={showIndicator ? \"2\" : undefined}\n alignItems={showIndicator ? \"flex-start\" : undefined}\n >\n {showIndicator ? (\n <>\n <span className={styles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={isChecked ? CheckboxChecked : CheckboxOutline}\n className={iconClassNames}\n />\n </span>\n {children}\n </>\n ) : (\n children\n )}\n </Card>\n }\n hideCheckbox\n />\n )}\n {context?.selectionMode === \"single\" && (\n <Radio\n {...radioProps}\n className={cx(\n styles[\"select-card-wrapper\"],\n radioProps?.className,\n {\n [styles[\"select-card-checkbox-unchecked\"]]:\n !isChecked && !errored,\n [styles[\"select-card-checkbox-checked\"]]: isChecked && !errored,\n [styles[\"select-card-checkbox-error\"]]: errored,\n },\n )}\n labelWrapperClassName={styles[\"select-card-label\"]}\n checked={inputChecked}\n defaultChecked={inputDefaultChecked}\n onChange={handleChange}\n disabled={disabled}\n ref={ref}\n name={context.radioName}\n label={\n <Card\n {...rest}\n className={contentClassName}\n flex={showIndicator ? \"1\" : undefined}\n gap={showIndicator ? \"2\" : undefined}\n alignItems={showIndicator ? \"flex-start\" : undefined}\n >\n {showIndicator ? (\n <>\n <span className={styles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={isChecked ? RadioChecked : RadioOutline}\n className={iconClassNames}\n />\n </span>\n {children}\n </>\n ) : (\n children\n )}\n </Card>\n }\n hideRadio\n />\n )}\n </>\n );\n },\n);\n\nSelectCardElement.displayName = \"SelectCard\";\n\n/**\n * SelectCard component for creating interactive card-based selection interfaces.\n *\n * Features:\n * - Supports both single selection (radio) and multiple selection (checkbox) modes\n * - Automatic context detection for selection behavior\n * - Visual feedback for selected, disabled, and error states\n * - Accessible with proper ARIA roles and keyboard navigation\n * - Customizable styling through Card component props\n * - Hover and focus states with smooth transitions\n * - Integration with SelectCardGroup for grouped selection\n *\n * @example\n * <SelectCard\n * id=\"option-1\"\n * onChange={(checked) => console.log('Selected:', checked)}\n * >\n * <Text variant=\"headline\" size=\"small\">Option 1</Text>\n * <Text>Description of option 1</Text>\n * </SelectCard>\n */\nexport const SelectCard = Object.assign(SelectCardElement, {\n /**\n * SelectCardGroup component for managing groups of selectable cards.\n *\n * Features:\n * - Manages selection state for multiple SelectCard components\n * - Supports both single and multiple selection modes\n * - Provides proper accessibility with legends and ARIA labels\n * - Handles required field validation\n * - Automatic radio button grouping for single selection\n * - Context provider for child SelectCard components\n *\n * @example\n * <SelectCard.Group\n * legend=\"Choose your plan\"\n * selectionMode=\"single\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * >\n * <SelectCard id=\"basic\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\">Basic Plan</Text>\n * </SelectCard>\n * <SelectCard id=\"premium\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\">Premium Plan</Text>\n * </SelectCard>\n * </SelectCard.Group>\n */\n Group: SelectCardGroup,\n});\n"],"names":["CheckboxChecked","CheckboxOutline","RadioChecked","RadioOutline"],"mappings":"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"}
1
+ {"version":3,"file":"SelectCard-E-13CjHS.js","sources":["../src/components/SelectCard/internal/SelectCardContext.tsx","../src/components/SelectCard/internal/SelectCardProvider.tsx","../src/components/SelectCard/SelectCardGroup.tsx","../src/components/SelectCard/SelectCard.tsx"],"sourcesContent":["import { ChangeEvent, createContext, useContext } from \"react\";\n\n/**\n * Interface for the select card state\n */\nexport interface ISelectCardState {\n /**\n * When `true`, adds the item to the selected state holder.\n */\n checked: boolean;\n\n /**\n * Gives an explicit id to each item in the set.\n */\n id?: string | number;\n}\n\n/**\n * Interface for the select card onChange options\n */\nexport interface ISelectCardOnChangeOptions {\n /**\n * When `true`, doesn't fire the user's `onChange`\n */\n internal?: boolean;\n}\n\n/**\n * Interface for the select card context\n */\nexport interface ISelectCardContext {\n /**\n * Callback function that is triggered when the selection state changes.\n *\n * @callback OnChangeCallback\n * @param {ChangeEvent<HTMLInputElement>} [e] - The native HTML input change event.\n * @param {ISelectCardState} [state] - The current state of the select card component after the change.\n * @returns {void}\n */\n onChange?: (\n e?: ChangeEvent<HTMLInputElement>,\n state?: ISelectCardState,\n options?: ISelectCardOnChangeOptions,\n ) => void;\n\n /**\n * Sets how many cards the user can select, either 'single' (radio buttons) or 'multiple' (checkboxes)\n */\n selectionMode: \"single\" | \"multiple\";\n\n /**\n * Used internally to create a UUID for the HTML `name` property on radios.\n */\n radioName: string;\n\n /**\n * Creates a set of ids that are selected.\n */\n selection: Set<string | number>;\n\n /**\n * When `true`, indicates that selection is controlled at the group level via the `value` prop.\n * @default false\n */\n isGroupControlled?: boolean;\n\n /**\n * When `true`, the group was given a `defaultValue` and owns the initial selection state.\n * Individual `SelectCard` mount syncs should be skipped to avoid overriding it.\n * @default false\n */\n hasGroupDefault?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the selection mode from SelectCard.Group context.\n * @default false\n */\n showSelectIndicator?: boolean;\n}\n\nexport const SelectCardContext = createContext<ISelectCardContext | null>(null);\n\n/**\n * Custom hook for accessing the SelectCard context.\n * @returns The SelectCard context or null if not within a SelectCardProvider\n */\nexport const useSelectCardContext = () => useContext(SelectCardContext);\n","import { ChangeEvent, ReactNode, useId, useMemo, useState } from \"react\";\nimport {\n ISelectCardContext,\n ISelectCardOnChangeOptions,\n ISelectCardState,\n SelectCardContext,\n} from \"./SelectCardContext\";\n\n/**\n * Props for the SelectCardProvider component\n * @extends Omit<ISelectCardContext, \"radioName\" | \"selection\">\n */\ninterface ISelectCardProviderProps extends Omit<\n ISelectCardContext,\n \"radioName\" | \"selection\"\n> {\n children: ReactNode;\n\n /**\n * Controlled selection state. When provided, the group becomes controlled.\n * Array of `SelectCard` ids that are currently selected.\n */\n value?: Array<string | number>;\n\n /**\n * Initial selection state for uncontrolled usage.\n * Array of `SelectCard` ids that are selected on first render.\n */\n defaultValue?: Array<string | number>;\n}\n\n/**\n * SelectCardProvider component for managing selection state across SelectCard components.\n *\n * Features:\n * - Provides context for SelectCard components to share selection state\n * - Manages selection mode (single vs multiple)\n * - Handles selection state updates and callbacks\n * - Generates unique radio button names for single selection mode\n * - Maintains a set of selected card IDs\n * - Integrates with SelectCardGroup for automatic context provision\n *\n * @example\n * <SelectCardProvider\n * selectionMode=\"multiple\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * >\n * <SelectCard id=\"1\" onChange={() => {}}>Option 1</SelectCard>\n * <SelectCard id=\"2\" onChange={() => {}}>Option 2</SelectCard>\n * </SelectCardProvider>\n */\nexport const SelectCardProvider = ({\n children,\n defaultValue,\n onChange,\n selectionMode,\n showSelectIndicator,\n value,\n}: ISelectCardProviderProps) => {\n const isControlled = value !== undefined;\n const [internalSelection, setInternalSelection] = useState<\n Set<string | number>\n >(() => {\n const ids = defaultValue ?? [];\n return new Set(selectionMode === \"single\" ? ids.slice(0, 1) : ids);\n });\n const selection = useMemo(() => {\n if (!isControlled) return internalSelection;\n const ids = value ?? [];\n return new Set(selectionMode === \"single\" ? ids.slice(0, 1) : ids);\n }, [isControlled, value, internalSelection, selectionMode]);\n\n const radioName = useId();\n\n const handleChange = (\n e?: ChangeEvent<HTMLInputElement>,\n state?: ISelectCardState,\n options?: ISelectCardOnChangeOptions,\n ) => {\n if (!state || !state.id) {\n if (!options?.internal) {\n onChange?.(e, state);\n }\n\n return;\n }\n\n // Update internal selection when uncontrolled\n if (!isControlled) {\n if (selectionMode === \"single\") {\n setInternalSelection(state.checked ? new Set([state.id]) : new Set());\n } else {\n setInternalSelection((prev) => {\n const next = new Set(prev);\n if (state.checked) {\n next.add(state.id!);\n } else {\n next.delete(state.id!);\n }\n return next;\n });\n }\n }\n\n if (!options?.internal) {\n onChange?.(e, state);\n }\n };\n\n const context = {\n hasGroupDefault: defaultValue !== undefined,\n isGroupControlled: isControlled,\n selectionMode,\n onChange: handleChange,\n radioName,\n selection,\n showSelectIndicator,\n };\n\n return (\n <SelectCardContext.Provider value={context}>\n {children}\n </SelectCardContext.Provider>\n );\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport { CheckboxGroup, CheckboxGroupProps } from \"../Checkbox/CheckboxGroup\";\nimport { RadioGroup } from \"../Radio/RadioGroup\";\nimport { SelectCardProvider } from \"./internal/SelectCardProvider\";\nimport { ISelectCardContext } from \"./internal/SelectCardContext\";\n\n/**\n * Props for the SelectCardGroup component\n * @extends Omit<ISelectCardContext, \"radioName\" | \"selection\">\n */\nexport interface SelectCardGroupProps\n extends\n Omit<ISelectCardContext, \"radioName\" | \"selection\">,\n Pick<CheckboxGroupProps, \"moreInfo\"> {\n /**\n * Associates the legend with content below.\n */\n ariaLabelledBy?: string;\n\n children?: ReactNode;\n\n /**\n * Initial selection state for uncontrolled usage.\n * Array of `SelectCard` ids that are selected on first render.\n * Takes precedence over individual `SelectCard` `defaultChecked` props.\n */\n defaultValue?: Array<string | number>;\n\n /**\n * Sets the legend on the group.\n */\n legend: CheckboxGroupProps[\"legend\"];\n\n /**\n * Additional props for the legend `FieldLabel` (for example `aiMark`, `className`).\n */\n legendProps?: CheckboxGroupProps[\"legendProps\"];\n\n /**\n * When `true`, sets \"required\" text in label.\n * @accessibility This does not enforce error when nothing is selected.\n * @default false\n */\n required?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the `selectionMode` setting.\n * @default false\n */\n showSelectIndicator?: boolean;\n\n /**\n * Controlled selection state. When provided, the group becomes controlled.\n * Array of `SelectCard` ids that are currently selected.\n */\n value?: Array<string | number>;\n}\n\n/**\n * SelectCardGroup component for managing groups of selectable cards.\n *\n * Features:\n * - Manages selection state for multiple SelectCard components\n * - Supports both single and multiple selection modes\n * - Provides proper accessibility with legends and ARIA labels\n * - Handles required field validation\n * - Automatic radio button grouping for single selection\n * - Context provider for child SelectCard components\n * - Integrates with CheckboxGroup and RadioGroup for proper form semantics\n * - Supports AI mark indicator\n *\n * @example\n * <SelectCardGroup\n * legend=\"Choose your plan\"\n * selectionMode=\"single\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * legendProps={{ aiMark: true }}\n * >\n * <SelectCard id=\"basic\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\" el=\"h3\">Basic Plan</Text>\n * </SelectCard>\n * <SelectCard id=\"premium\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\" el=\"h3\">Premium Plan</Text>\n * </SelectCard>\n * </SelectCardGroup>\n */\nexport const SelectCardGroup = forwardRef<\n HTMLInputElement,\n SelectCardGroupProps\n>((props, _ref) => {\n const {\n ariaLabelledBy,\n children,\n defaultValue,\n legend,\n legendProps,\n moreInfo,\n onChange,\n required = false,\n selectionMode,\n showSelectIndicator = false,\n value,\n ...rest\n } = props;\n\n return (\n <SelectCardProvider\n defaultValue={defaultValue}\n onChange={onChange}\n selectionMode={selectionMode}\n showSelectIndicator={showSelectIndicator}\n value={value}\n >\n {selectionMode === \"multiple\" && (\n <CheckboxGroup\n aria-labelledby={ariaLabelledBy}\n legend={legend}\n legendProps={legendProps}\n required={required}\n moreInfo={moreInfo}\n {...rest}\n >\n {children}\n </CheckboxGroup>\n )}\n {selectionMode === \"single\" && (\n <RadioGroup\n aria-labelledby={ariaLabelledBy}\n legend={legend}\n legendProps={legendProps}\n required={required}\n moreInfo={moreInfo}\n {...rest}\n >\n {children}\n </RadioGroup>\n )}\n </SelectCardProvider>\n );\n});\n\nSelectCardGroup.displayName = \"SelectCardGroup\";\n","import {\n useLayoutEffect,\n useState,\n useRef,\n forwardRef,\n type ChangeEvent,\n} from \"react\";\nimport cx from \"classnames\";\n\nimport { SelectCardGroup } from \"./SelectCardGroup\";\nimport { Card, CardProps } from \"../Card\";\nimport { Radio, RadioProps } from \"../Radio/internal/Radio\";\nimport { Checkbox, CheckboxProps } from \"../Checkbox/internal/Checkbox\";\nimport { useOptionallyControlledState } from \"../../internal/hooks\";\nimport { useSelectCardContext } from \"./internal/SelectCardContext\";\nimport { Icon } from \"../Icon\";\n\nimport CheckboxOutline from \"@servicetitan/hammer-icon/mdi/round/check_box_outline_blank.svg\";\nimport CheckboxChecked from \"@servicetitan/hammer-icon/mdi/round/check_box.svg\";\nimport RadioOutline from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_unchecked.svg\";\nimport RadioChecked from \"@servicetitan/hammer-icon/mdi/two-tone/radio_button_checked.svg\";\n\nimport styles from \"./SelectCard.module.scss\";\n\n/**\n * Props for the SelectCard component\n * @extends Omit<CardProps, \"onChange\" | \"id\">\n */\nexport interface SelectCardProps extends Omit<CardProps, \"onChange\" | \"id\"> {\n /**\n * Passes props to the underlying `<Checkbox />` component.\n */\n checkboxProps?: Omit<CheckboxProps, \"label\">;\n\n /**\n * Controlled state. When provided, the component becomes controlled.\n */\n checked?: boolean;\n\n /**\n * Uncontrolled initial state. Ignored when inside a `SelectCard.Group` that sets `defaultValue`.\n */\n defaultChecked?: boolean;\n\n /**\n * When `true`, disables the card.\n */\n disabled?: boolean;\n\n /**\n * When `true`, sets error styling on the card.\n */\n errored?: boolean;\n\n /**\n * A unique identifier for the card, used to track the selection state.\n */\n id: string | number;\n\n /**\n * Function called on selection state change.\n */\n onChange?: (value: boolean) => void;\n\n /**\n * Passes props to the underlying `<Radio />` component.\n */\n radioProps?: Omit<RadioProps, \"label\">;\n\n /**\n * Removes the drop shadow effect on the card.\n */\n removeDropShadow?: boolean;\n\n /**\n * When `true`, displays a checkbox or radio indicator in a separate column on the left side of the card.\n * The indicator type (checkbox or radio) is automatically determined by the `selectionMode` prop on the\n * `SelectCard.Group`, and defaults to checkbox if no `SelectCard.Group` is used.\n * @default false\n */\n showSelectIndicator?: boolean;\n}\n\nconst SelectCardElement = forwardRef<HTMLInputElement, SelectCardProps>(\n (props, ref) => {\n const {\n checkboxProps,\n children,\n checked: checkedProp,\n className,\n defaultChecked: defaultCheckedProp,\n disabled,\n errored,\n radioProps,\n onChange,\n removeDropShadow,\n showSelectIndicator = false,\n id,\n ...rest\n } = props;\n\n const [checked, setChecked] = useOptionallyControlledState<boolean>({\n controlledValue: checkedProp,\n defaultValue: defaultCheckedProp || false,\n onChange,\n });\n\n const context = useSelectCardContext();\n const isCardControlled = checkedProp !== undefined;\n const isGroupControlled = context?.isGroupControlled ?? false;\n\n // we need to re-render after setting the initial selection state on context\n const [_, setForceRenderCount] = useState(0);\n useLayoutEffect(() => {\n // Sync initial checked state to context (for both controlled and uncontrolled modes).\n // Skip when group is controlled — the group's value prop owns the selection Set.\n const initialChecked = checkedProp ?? defaultCheckedProp;\n if (initialChecked && !isGroupControlled && !context?.hasGroupDefault) {\n context?.onChange?.(\n undefined,\n {\n id,\n checked: initialChecked,\n },\n { internal: true },\n );\n\n setForceRenderCount((prev) => prev + 1);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Sync controlled state changes to context (skip initial mount - handled by above effect)\n const isFirstRender = useRef(true);\n useLayoutEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n if (isCardControlled && context) {\n // In single selection mode, only sync when checked is true.\n // Unchecking is implicit when another card becomes checked.\n // Syncing checked=false would clear the entire selection.\n if (context.selectionMode === \"single\" && !checkedProp) {\n return;\n }\n context.onChange?.(\n undefined,\n {\n id,\n checked: checkedProp!,\n },\n { internal: true },\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkedProp]);\n\n const handleChange = (event?: ChangeEvent<HTMLInputElement>) => {\n const newChecked = event ? event.target.checked : false;\n setChecked(newChecked);\n context?.onChange?.(event, {\n id,\n checked: newChecked,\n });\n };\n\n // A selection in the group context supersedes the normal checked state of the card\n const isChecked = context ? context.selection.has(id) : checked;\n const showIndicator = context?.showSelectIndicator || showSelectIndicator;\n\n // When group is controlled (value prop), drive input from context selection.\n // When group has defaultValue, it takes precedence — ignore individual defaultChecked.\n const inputChecked = isGroupControlled\n ? isChecked\n : isCardControlled\n ? checkedProp\n : undefined;\n const inputDefaultChecked =\n isGroupControlled || isCardControlled\n ? undefined\n : context?.hasGroupDefault\n ? context.selection.has(id)\n : defaultCheckedProp;\n\n const contentClassName = cx(styles[\"select-card\"], className, {\n [styles[\"select-card--remove-drop-shadow\"]]: removeDropShadow,\n [styles[\"select-card--checked\"]]: isChecked,\n [styles[\"select-card--selected\"]]: isChecked && !errored,\n [styles[\"select-card--errored\"]]: errored,\n [styles[\"select-card--disabled\"]]: disabled,\n });\n\n const iconClassNames = cx({\n [styles[\"icon-checked\"]]: isChecked && !errored && !disabled,\n [styles[\"icon-unchecked\"]]: !isChecked && !disabled,\n [styles[\"icon-checked-error\"]]: errored && !disabled,\n [styles[\"icon-checked-disabled\"]]: disabled,\n });\n\n return (\n <>\n {(!context || context?.selectionMode === \"multiple\") && (\n <Checkbox\n {...checkboxProps}\n className={cx(\n styles[\"select-card-wrapper\"],\n checkboxProps?.className,\n {\n [styles[\"select-card-checkbox-unchecked\"]]:\n !isChecked && !errored,\n [styles[\"select-card-checkbox-checked\"]]: isChecked && !errored,\n [styles[\"select-card-checkbox-error\"]]: errored,\n },\n )}\n labelWrapperClassName={styles[\"select-card-label\"]}\n checked={inputChecked}\n defaultChecked={inputDefaultChecked}\n onChange={handleChange}\n disabled={disabled}\n ref={ref}\n label={\n <Card\n {...rest}\n className={contentClassName}\n flex={showIndicator ? \"1\" : undefined}\n gap={showIndicator ? \"2\" : undefined}\n alignItems={showIndicator ? \"flex-start\" : undefined}\n >\n {showIndicator ? (\n <>\n <span className={styles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={isChecked ? CheckboxChecked : CheckboxOutline}\n className={iconClassNames}\n />\n </span>\n {children}\n </>\n ) : (\n children\n )}\n </Card>\n }\n hideCheckbox\n />\n )}\n {context?.selectionMode === \"single\" && (\n <Radio\n {...radioProps}\n className={cx(\n styles[\"select-card-wrapper\"],\n radioProps?.className,\n {\n [styles[\"select-card-checkbox-unchecked\"]]:\n !isChecked && !errored,\n [styles[\"select-card-checkbox-checked\"]]: isChecked && !errored,\n [styles[\"select-card-checkbox-error\"]]: errored,\n },\n )}\n labelWrapperClassName={styles[\"select-card-label\"]}\n checked={inputChecked}\n defaultChecked={inputDefaultChecked}\n onChange={handleChange}\n disabled={disabled}\n ref={ref}\n name={context.radioName}\n label={\n <Card\n {...rest}\n className={contentClassName}\n flex={showIndicator ? \"1\" : undefined}\n gap={showIndicator ? \"2\" : undefined}\n alignItems={showIndicator ? \"flex-start\" : undefined}\n >\n {showIndicator ? (\n <>\n <span className={styles[\"icon-wrapper\"]} aria-hidden>\n <Icon\n size=\"large\"\n svg={isChecked ? RadioChecked : RadioOutline}\n className={iconClassNames}\n />\n </span>\n {children}\n </>\n ) : (\n children\n )}\n </Card>\n }\n hideRadio\n />\n )}\n </>\n );\n },\n);\n\nSelectCardElement.displayName = \"SelectCard\";\n\n/**\n * SelectCard component for creating interactive card-based selection interfaces.\n *\n * Features:\n * - Supports both single selection (radio) and multiple selection (checkbox) modes\n * - Automatic context detection for selection behavior\n * - Visual feedback for selected, disabled, and error states\n * - Accessible with proper ARIA roles and keyboard navigation\n * - Customizable styling through Card component props\n * - Hover and focus states with smooth transitions\n * - Integration with SelectCardGroup for grouped selection\n *\n * @example\n * <SelectCard\n * id=\"option-1\"\n * onChange={(checked) => console.log('Selected:', checked)}\n * >\n * <Text variant=\"headline\" size=\"small\">Option 1</Text>\n * <Text>Description of option 1</Text>\n * </SelectCard>\n */\nexport const SelectCard = Object.assign(SelectCardElement, {\n /**\n * SelectCardGroup component for managing groups of selectable cards.\n *\n * Features:\n * - Manages selection state for multiple SelectCard components\n * - Supports both single and multiple selection modes\n * - Provides proper accessibility with legends and ARIA labels\n * - Handles required field validation\n * - Automatic radio button grouping for single selection\n * - Context provider for child SelectCard components\n *\n * @example\n * <SelectCard.Group\n * legend=\"Choose your plan\"\n * selectionMode=\"single\"\n * onChange={(e, state) => console.log('Selection changed:', state)}\n * >\n * <SelectCard id=\"basic\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\">Basic Plan</Text>\n * </SelectCard>\n * <SelectCard id=\"premium\" onChange={() => {}}>\n * <Text variant=\"headline\" size=\"small\">Premium Plan</Text>\n * </SelectCard>\n * </SelectCard.Group>\n */\n Group: SelectCardGroup,\n});\n"],"names":["CheckboxChecked","CheckboxOutline","RadioChecked","RadioOutline"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { S as SelectCard, S as default } from './SelectCard-CtXwY8FZ.js';
1
+ export { S as SelectCard, S as default } from './SelectCard-E-13CjHS.js';
2
2
  //# sourceMappingURL=SelectCard.js.map
@@ -1,2 +1,2 @@
1
- export { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-W_-jTf7z.js';
1
+ export { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-Ci9k35TH.js';
2
2
  //# sourceMappingURL=SelectField.js.map
@@ -1,5 +1,5 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { F as FieldLabel } from './FieldLabel-DZWu5dMp.js';
2
+ import { F as FieldLabel } from './FieldLabel-rHPbiyR3.js';
3
3
  import { S as SrOnly } from './SrOnly-pnf8ajnh.js';
4
4
 
5
5
  const SelectFieldLabel = ({
@@ -8,6 +8,7 @@ const SelectFieldLabel = ({
8
8
  getLabelProps,
9
9
  hideLabel = false,
10
10
  moreInfo,
11
+ moreInfoId,
11
12
  moreInfoOpen,
12
13
  required
13
14
  }) => {
@@ -18,6 +19,7 @@ const SelectFieldLabel = ({
18
19
  aiMark,
19
20
  required,
20
21
  moreInfo,
22
+ moreInfoId,
21
23
  moreInfoOpen,
22
24
  children: label
23
25
  }
@@ -29,4 +31,4 @@ const SelectFieldLabel = ({
29
31
  };
30
32
 
31
33
  export { SelectFieldLabel as S };
32
- //# sourceMappingURL=SelectFieldLabel-DLT5dKbx.js.map
34
+ //# sourceMappingURL=SelectFieldLabel-DznBaE99.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectFieldLabel-DznBaE99.js","sources":["../src/beta/components/SelectField/internal/SelectFieldLabel.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { FieldLabel, FieldLabelProps } from \"../../../../components/FieldLabel\";\nimport { SrOnly } from \"../../../../components/SrOnly\";\n\ntype GetLabelProps = (options?: object) => { id: string; htmlFor: string };\n\n/**\n * Props for the SelectFieldLabel component\n * @property {AiMarkWithTooltipOrPopoverProps} aiMark - The AI mark to display\n * @property {string} label - The text content to display as the label\n * @property {GetLabelProps} getLabelProps - Downshift getter function that returns accessibility props for the label\n * @property {boolean} [required] - Whether the field is required. Shows a red asterisk (*) when true.\n * @property {ReactNode} [moreInfo] - Additional information to display in a tooltip\n * @property {string} [moreInfoId] - ID for the sr-only description span, referenced via aria-describedby on the associated input\n * @property {boolean} [moreInfoOpen] - Controls the open state of the more info tooltip\n * @property {boolean} [hideLabel] - Visually hides the label while keeping it accessible to screen readers\n */\nexport type SelectFieldLabelProps = {\n aiMark?: FieldLabelProps[\"aiMark\"];\n label: string;\n getLabelProps: GetLabelProps;\n hideLabel?: boolean;\n moreInfo?: ReactNode;\n moreInfoId?: string;\n moreInfoOpen?: boolean;\n required?: boolean;\n};\n\n/**\n * Internal label component for the SelectField that renders an accessible label element.\n *\n * Features:\n * - Renders a FieldLabel with proper accessibility attributes from Downshift\n * - Automatically associates the label with the combobox input\n * - Supports screen readers with proper labeling\n * - Optional required field indicator with red asterisk\n * - Help tooltip with info icon for additional context\n * - Can visually hide the label while maintaining accessibility\n *\n * @example\n * <SelectFieldLabel\n * label=\"Select an option\"\n * getLabelProps={getLabelProps}\n * required\n * moreInfo=\"Choose from available options\"\n * />\n */\nexport const SelectFieldLabel = ({\n aiMark,\n label,\n getLabelProps,\n hideLabel = false,\n moreInfo,\n moreInfoId,\n moreInfoOpen,\n required,\n}: SelectFieldLabelProps) => {\n const labelContent = (\n <FieldLabel\n {...getLabelProps()}\n aiMark={aiMark}\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n moreInfoOpen={moreInfoOpen}\n >\n {label}\n </FieldLabel>\n );\n\n if (hideLabel) {\n return <SrOnly>{labelContent}</SrOnly>;\n }\n\n return labelContent;\n};\n"],"names":[],"mappings":";;;;AA+CO,MAAM,mBAAmB,CAAC;AAAA,EAC/B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,QAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAA6B;AAC3B,EAAA,MAAM,YAAA,mBACJ,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACE,GAAG,aAAA,EAAc;AAAA,MAClB,MAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAGF,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,uBAAO,GAAA,CAAC,UAAQ,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,EAC/B;AAEA,EAAA,OAAO,YAAA;AACT;;;;"}
@@ -1,15 +1,15 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useMemo, useRef, useCallback, useEffect, forwardRef, useId } from 'react';
3
3
  import { w as warnDeprecatedErrorUsage } from './utils-CM48ODEJ.js';
4
- import { S as SelectOptions } from './SelectOptions-BsX0f22q.js';
4
+ import { S as SelectOptions } from './SelectOptions-5zgSQ6Xs.js';
5
5
  import { s as styles } from './SelectTriggerBase.module-DKF1FQnc.js';
6
6
  import { c as cx } from './index-De1g9FRV.js';
7
7
  import { B as Button } from './Button-Bnt8XUI7.js';
8
8
  import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
9
9
  import { S as SvgClose } from './close-DZj38AEh.js';
10
- import { S as SelectFieldLabel } from './SelectFieldLabel-DLT5dKbx.js';
10
+ import { S as SelectFieldLabel } from './SelectFieldLabel-DznBaE99.js';
11
11
  import { u as useDownshiftEnvironment, a as useCombobox, b as useSelect } from './downshift.esm-xtSnQp44.js';
12
- import { b as useProcessedOptions, c as buildSelectItems, h as toSelectItem, d as useDebouncedCallback, e as OptionsDialog, f as OptionsPopover, a as useSelectOrchestration, g as defaultSyncFilter, t as toSyncFilterFn, s as sortByGroup } from './syncFilterUtils-nJS_tCsu.js';
12
+ import { b as useProcessedOptions, c as buildSelectItems, h as toSelectItem, d as useDebouncedCallback, e as OptionsDialog, f as OptionsPopover, a as useSelectOrchestration, g as defaultSyncFilter, t as toSyncFilterFn, s as sortByGroup } from './syncFilterUtils-BCxA8KSW.js';
13
13
  import { F as FieldMessage } from './FieldMessage-DzxfodaI.js';
14
14
  import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
15
15
  import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-CB_zHDbW.js';
@@ -267,6 +267,8 @@ const SelectFieldComboboxMode = ({
267
267
  label,
268
268
  hideLabel,
269
269
  hint,
270
+ moreInfo,
271
+ moreInfoId,
270
272
  errorMessages,
271
273
  warning,
272
274
  description,
@@ -373,7 +375,9 @@ const SelectFieldComboboxMode = ({
373
375
  label,
374
376
  hideLabel,
375
377
  getLabelProps,
376
- required
378
+ required,
379
+ moreInfo,
380
+ moreInfoId
377
381
  }
378
382
  ),
379
383
  /* @__PURE__ */ jsx(
@@ -389,7 +393,7 @@ const SelectFieldComboboxMode = ({
389
393
  onClear: () => onSelectedOptionChange(null),
390
394
  id: `${id}-input`,
391
395
  inputProps: getInputProps({
392
- "aria-describedby": hasHelperText ? helperUid : void 0,
396
+ "aria-describedby": [hasHelperText && helperUid, moreInfo && moreInfoId].filter(Boolean).join(" ") || void 0,
393
397
  "aria-invalid": error ? true : void 0
394
398
  }),
395
399
  size,
@@ -474,7 +478,9 @@ const SelectFieldComboboxMode = ({
474
478
  label,
475
479
  hideLabel,
476
480
  getLabelProps,
477
- required
481
+ required,
482
+ moreInfo,
483
+ moreInfoId
478
484
  }
479
485
  ),
480
486
  /* @__PURE__ */ jsx(
@@ -485,7 +491,7 @@ const SelectFieldComboboxMode = ({
485
491
  required,
486
492
  inputProps: getInputProps({
487
493
  popovertarget: `${id}-popover`,
488
- "aria-describedby": hasHelperText ? helperUid : void 0,
494
+ "aria-describedby": [hasHelperText && helperUid, moreInfo && moreInfoId].filter(Boolean).join(" ") || void 0,
489
495
  "aria-invalid": error ? true : void 0
490
496
  }),
491
497
  toggleButtonProps: getToggleButtonProps(),
@@ -771,6 +777,8 @@ const SelectFieldSelectMode = ({
771
777
  label,
772
778
  hideLabel,
773
779
  hint,
780
+ moreInfo,
781
+ moreInfoId,
774
782
  errorMessages,
775
783
  warning,
776
784
  description,
@@ -838,7 +846,7 @@ const SelectFieldSelectMode = ({
838
846
  const toggleButtonProps = getToggleButtonProps({
839
847
  disabled: !!disabled,
840
848
  "aria-required": required ? true : void 0,
841
- "aria-describedby": hasHelperText ? helperUid : void 0,
849
+ "aria-describedby": [hasHelperText && helperUid, moreInfo && moreInfoId].filter(Boolean).join(" ") || void 0,
842
850
  "aria-invalid": error ? true : void 0
843
851
  });
844
852
  if (displayAs === "dialog") {
@@ -856,7 +864,9 @@ const SelectFieldSelectMode = ({
856
864
  label,
857
865
  hideLabel,
858
866
  getLabelProps,
859
- required
867
+ required,
868
+ moreInfo,
869
+ moreInfoId
860
870
  }
861
871
  ),
862
872
  /* @__PURE__ */ jsx(
@@ -938,7 +948,9 @@ const SelectFieldSelectMode = ({
938
948
  label,
939
949
  hideLabel,
940
950
  getLabelProps,
941
- required
951
+ required,
952
+ moreInfo,
953
+ moreInfoId
942
954
  }
943
955
  ),
944
956
  /* @__PURE__ */ jsx(
@@ -1026,6 +1038,7 @@ const SelectField = forwardRef(
1026
1038
  size,
1027
1039
  error,
1028
1040
  hint,
1041
+ moreInfo,
1029
1042
  description,
1030
1043
  errorAriaLive: _errorAriaLive,
1031
1044
  required,
@@ -1045,6 +1058,7 @@ const SelectField = forwardRef(
1045
1058
  const autoId = useId();
1046
1059
  const id = idProp ?? autoId;
1047
1060
  const helperUid = useId();
1061
+ const moreInfoUid = useId();
1048
1062
  warnDeprecatedErrorUsage("SelectField", error);
1049
1063
  const errorMessages = typeof error === "boolean" || error === void 0 ? void 0 : error;
1050
1064
  const hasHelperText = !!(hint || errorMessages || warning || description);
@@ -1091,6 +1105,8 @@ const SelectField = forwardRef(
1091
1105
  labelAiMark,
1092
1106
  hideLabel,
1093
1107
  hint,
1108
+ moreInfo,
1109
+ moreInfoId: moreInfo ? moreInfoUid : void 0,
1094
1110
  errorMessages,
1095
1111
  warning,
1096
1112
  description,
@@ -1157,4 +1173,4 @@ const SelectFieldSync = (props) => {
1157
1173
  };
1158
1174
 
1159
1175
  export { SelectField as S, SelectFieldSync as a };
1160
- //# sourceMappingURL=SelectFieldSync-W_-jTf7z.js.map
1176
+ //# sourceMappingURL=SelectFieldSync-Ci9k35TH.js.map