@persona/design-system 0.1.7 → 0.1.9

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 (952) hide show
  1. package/CHANGELOG.md +355 -221
  2. package/README.md +20 -1
  3. package/dist/{Action-DkNqzc2X.d.mts → Action-CVtzREhU.d.mts} +3 -3
  4. package/dist/Action.d.mts +1 -1
  5. package/dist/AdvancedFilterRuleRow.d.mts +37 -0
  6. package/dist/AdvancedFilterRulesPopover.d.mts +62 -0
  7. package/dist/ArrayValueControl.d.mts +38 -0
  8. package/dist/Attribute.d.mts +4 -4
  9. package/dist/AttributeGrid.d.mts +1 -1
  10. package/dist/{Badge-DRn_r6is.mjs → Badge-DEVbRlJX.mjs} +2 -2
  11. package/dist/{Badge-DRn_r6is.mjs.map → Badge-DEVbRlJX.mjs.map} +1 -1
  12. package/dist/Banner.d.mts +1 -1
  13. package/dist/BooleanValueControl.d.mts +20 -0
  14. package/dist/{Breadcrumb-On7pOpgt.d.mts → Breadcrumb-lziQ1FX9.d.mts} +15 -2
  15. package/dist/Breadcrumb.d.mts +2 -2
  16. package/dist/Breadcrumbs-DJ5qqqRD.d.mts +26 -0
  17. package/dist/Breadcrumbs-W8hIhdHD.mjs +288 -0
  18. package/dist/Breadcrumbs-W8hIhdHD.mjs.map +1 -0
  19. package/dist/Breadcrumbs.d.mts +2 -20
  20. package/dist/{Button-C_3p5Xfi.d.cts → Button-Vd5O4DUp.d.mts} +6 -6
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/ButtonGroup.d.mts +1 -1
  23. package/dist/Calendar.d.mts +1 -1
  24. package/dist/CalendarBase.d.mts +1 -1
  25. package/dist/{Card-CLTkZLKr.mjs → Card-BMCB9eFC.mjs} +4 -4
  26. package/dist/{Card-CLTkZLKr.mjs.map → Card-BMCB9eFC.mjs.map} +1 -1
  27. package/dist/{Card-IOBCsfke.d.mts → Card-CqnG--CU.d.mts} +4 -4
  28. package/dist/Card.d.mts +1 -1
  29. package/dist/Card2.d.mts +1 -1
  30. package/dist/CardV2-C0fcOUdp.mjs +411 -0
  31. package/dist/CardV2-C0fcOUdp.mjs.map +1 -0
  32. package/dist/{Checkbox-BghGF-iW.mjs → Checkbox-BcuiFvK7.mjs} +5 -5
  33. package/dist/{Checkbox-BghGF-iW.mjs.map → Checkbox-BcuiFvK7.mjs.map} +1 -1
  34. package/dist/{Checkbox-DfI0Xp3y.d.cts → Checkbox-Bm8exUfH.d.mts} +1 -1
  35. package/dist/Checkbox.d.mts +1 -1
  36. package/dist/CheckboxGroupField.d.mts +2 -2
  37. package/dist/ChoicesValueControl.d.mts +35 -0
  38. package/dist/{Combobox-CeKMrlxy.mjs → Combobox-B6JyLog8.mjs} +261 -71
  39. package/dist/Combobox-B6JyLog8.mjs.map +1 -0
  40. package/dist/{Combobox-5rAFq_52.d.cts → Combobox-BaD0f2Du.d.mts} +3 -3
  41. package/dist/Combobox.d.mts +2 -2
  42. package/dist/{ComboboxBase-DGZUdsQa.d.mts → ComboboxBase-BsPf8BZh.d.mts} +53 -8
  43. package/dist/ComboboxBase.d.mts +2 -2
  44. package/dist/{ComboboxMultiSelect-DMWPiBrE.d.mts → ComboboxMultiSelect-DhLzCWbz.d.mts} +2 -2
  45. package/dist/ComboboxMultiSelect.d.mts +1 -1
  46. package/dist/{ComboboxSingleSelect-CcppU_hq.d.mts → ComboboxSingleSelect-P0r5rs_u.d.mts} +4 -4
  47. package/dist/ComboboxSingleSelect.d.mts +1 -1
  48. package/dist/{CompactBar-2cpJD7qg.d.mts → CompactBar-CXqlVKy7.d.mts} +3 -3
  49. package/dist/CompactBar.d.mts +1 -1
  50. package/dist/{ConfigFormGroup-DISUwz5j.mjs → ConfigFormGroup-yhb2jldT.mjs} +3 -3
  51. package/dist/{ConfigFormGroup-DISUwz5j.mjs.map → ConfigFormGroup-yhb2jldT.mjs.map} +1 -1
  52. package/dist/{ControlBar-DXyl1gjc.d.mts → ControlBar-tOCQnbAl.d.mts} +2 -2
  53. package/dist/ControlBar.d.mts +1 -1
  54. package/dist/DataTable.d.mts +13 -4
  55. package/dist/DateField.d.mts +1 -1
  56. package/dist/DatePicker-Bw79p-Lx.mjs +922 -0
  57. package/dist/DatePicker-Bw79p-Lx.mjs.map +1 -0
  58. package/dist/DatePicker.d.mts +1 -1
  59. package/dist/DateRangePicker.d.mts +1 -1
  60. package/dist/DateValueControl.d.mts +26 -0
  61. package/dist/{DropdownButton-B397h6ka.mjs → DropdownButton-BI3IFJun.mjs} +3 -3
  62. package/dist/{DropdownButton-B397h6ka.mjs.map → DropdownButton-BI3IFJun.mjs.map} +1 -1
  63. package/dist/DropdownButton.d.mts +2 -2
  64. package/dist/{DropdownMenu-cnkoGc7C.mjs → DropdownMenu-D25WBCah.mjs} +3 -3
  65. package/dist/{DropdownMenu-cnkoGc7C.mjs.map → DropdownMenu-D25WBCah.mjs.map} +1 -1
  66. package/dist/{DropdownMenu-5qIgQ14A.d.mts → DropdownMenu-D6nfAsi0.d.mts} +3 -3
  67. package/dist/DropdownMenu.d.mts +1 -1
  68. package/dist/{ErrorProps-BosuK6zJ.d.cts → ErrorProps-CN2XjaOX.d.mts} +1 -1
  69. package/dist/ErrorProps.d.mts +1 -1
  70. package/dist/FieldRegistry-rqSkjchY.d.mts +122 -0
  71. package/dist/FieldRegistry.d.mts +2 -0
  72. package/dist/FilterBar-D3LiIy1-.d.mts +103 -0
  73. package/dist/FilterBar.d.mts +2 -0
  74. package/dist/FilterPickerMenu.d.mts +84 -0
  75. package/dist/FilterPill.d.mts +60 -0
  76. package/dist/FilterPopover.d.mts +87 -0
  77. package/dist/FloatValueControl.d.mts +40 -0
  78. package/dist/{FormControl-ArDcvmir.mjs → FormControl-CFU9uKF7.mjs} +6 -6
  79. package/dist/{FormControl-ArDcvmir.mjs.map → FormControl-CFU9uKF7.mjs.map} +1 -1
  80. package/dist/{FormControl-DnsC4vTX.d.mts → FormControl-DH3bgqaB.d.mts} +3 -3
  81. package/dist/FormControl.d.mts +1 -1
  82. package/dist/FormControlLabel.d.mts +1 -1
  83. package/dist/{FormField-BddCs6P0.d.mts → FormField-BugkBvN4.d.mts} +2 -2
  84. package/dist/FormField-DdmgSWq4.mjs +474 -0
  85. package/dist/FormField-DdmgSWq4.mjs.map +1 -0
  86. package/dist/FormField.d.mts +1 -1
  87. package/dist/{Header-B-Us54dR.d.mts → Header-CDTYK1XJ.d.mts} +2 -2
  88. package/dist/Header.d.mts +1 -1
  89. package/dist/{HelperTooltip-CofPKyZh.d.mts → HelperTooltip-B7Ysh8B3.d.mts} +3 -3
  90. package/dist/HelperTooltip.d.mts +1 -1
  91. package/dist/{HoverCopyableField-DR575ayC.mjs → HoverCopyableField-7TWP0Y1Z.mjs} +6 -6
  92. package/dist/{HoverCopyableField-DR575ayC.mjs.map → HoverCopyableField-7TWP0Y1Z.mjs.map} +1 -1
  93. package/dist/HoverCopyableField.d.mts +1 -1
  94. package/dist/{IconButton-ZcyTFjPn.d.cts → IconButton-BHCmHIx5.d.mts} +2 -2
  95. package/dist/{IconButton-DC4rh6ow.mjs → IconButton-P8w0JDI5.mjs} +5 -5
  96. package/dist/{IconButton-DC4rh6ow.mjs.map → IconButton-P8w0JDI5.mjs.map} +1 -1
  97. package/dist/IconButton.d.mts +1 -1
  98. package/dist/ImageTile.d.mts +2 -2
  99. package/dist/InlineCombobox.d.mts +2 -2
  100. package/dist/InlineInput.d.mts +1 -1
  101. package/dist/{Input-CEcTvtX2.d.cts → Input-DMgVyZyq.d.mts} +6 -6
  102. package/dist/{Input-PWfwMSJ7.mjs → Input-QC6xla6I.mjs} +5 -5
  103. package/dist/Input-QC6xla6I.mjs.map +1 -0
  104. package/dist/Input.d.mts +1 -1
  105. package/dist/{InputProps-DNlik5IZ.d.cts → InputProps-BnjxrdWQ.d.mts} +2 -2
  106. package/dist/InputProps.d.mts +1 -1
  107. package/dist/IntegerValueControl.d.mts +39 -0
  108. package/dist/LayoutLoadingShimmer.d.mts +20 -0
  109. package/dist/Link.d.mts +1 -1
  110. package/dist/{ListBox-DZIAlPbc.d.mts → ListBox-D09N1a5D.d.mts} +10 -5
  111. package/dist/{ListBox-CDNOJmvz.mjs → ListBox-TrL3Tb7X.mjs} +89 -14
  112. package/dist/ListBox-TrL3Tb7X.mjs.map +1 -0
  113. package/dist/ListBox.d.mts +1 -1
  114. package/dist/ListBoxField.d.mts +3 -3
  115. package/dist/{LoadingShimmer-Bu6KtQ06.mjs → LoadingShimmer-Dsc_RCCf.mjs} +1 -1
  116. package/dist/{LoadingShimmer-Bu6KtQ06.mjs.map → LoadingShimmer-Dsc_RCCf.mjs.map} +1 -1
  117. package/dist/LoadingShimmer.d.mts +2 -2
  118. package/dist/LogicRow-BcuiSTHN.d.mts +40 -0
  119. package/dist/LogicRow.d.mts +2 -0
  120. package/dist/MaskedInput.d.mts +1 -1
  121. package/dist/{Menu-BJ5c7HGD.d.mts → Menu-Bv8dsrz6.d.mts} +4 -4
  122. package/dist/{Menu-CVuFAxl2.mjs → Menu-DmeMgN-i.mjs} +4 -4
  123. package/dist/{Menu-CVuFAxl2.mjs.map → Menu-DmeMgN-i.mjs.map} +1 -1
  124. package/dist/Menu.d.mts +1 -1
  125. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs → MiddleTruncatedText-GXI-CPvs.mjs} +3 -3
  126. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs.map → MiddleTruncatedText-GXI-CPvs.mjs.map} +1 -1
  127. package/dist/Modal.d.mts +3 -3
  128. package/dist/PageHeader-jSLud2JI.mjs +65 -0
  129. package/dist/PageHeader-jSLud2JI.mjs.map +1 -0
  130. package/dist/PageHeader.d.mts +18 -4
  131. package/dist/{PageSelector-CMoV-cHa.d.mts → PageSelector-vay4jpMp.d.mts} +3 -3
  132. package/dist/PageSelector.d.mts +1 -1
  133. package/dist/PageSizeSelector.d.mts +7 -1
  134. package/dist/{Pagination-Cj08JRG9.mjs → Pagination-BeYukNCj.mjs} +13 -10
  135. package/dist/Pagination-BeYukNCj.mjs.map +1 -0
  136. package/dist/{Pagination-QWNK_hH7.d.mts → Pagination-ygLutOst.d.mts} +9 -3
  137. package/dist/Pagination.d.mts +1 -1
  138. package/dist/{Pii-Bxh6_R4T.mjs → Pii-QsTrz8wn.mjs} +2 -2
  139. package/dist/{Pii-Bxh6_R4T.mjs.map → Pii-QsTrz8wn.mjs.map} +1 -1
  140. package/dist/Pii.d.mts +1 -1
  141. package/dist/PillShell.d.mts +85 -0
  142. package/dist/{Popover-D0QY5f-J.mjs → Popover-BkDpDdaO.mjs} +5 -5
  143. package/dist/{Popover-D0QY5f-J.mjs.map → Popover-BkDpDdaO.mjs.map} +1 -1
  144. package/dist/Popover.d.mts +1 -1
  145. package/dist/ProgressBar.d.mts +1 -1
  146. package/dist/ProgressIndicator.d.mts +1 -1
  147. package/dist/{PseudoClassProps-ySXCGUEQ.d.mts → PseudoClassProps-DLxPxo7T.d.mts} +1 -1
  148. package/dist/PseudoClassProps.d.mts +1 -1
  149. package/dist/{Radio-C9DevagH.mjs → Radio-CSX2eO-O.mjs} +3 -3
  150. package/dist/{Radio-C9DevagH.mjs.map → Radio-CSX2eO-O.mjs.map} +1 -1
  151. package/dist/{RadioGroup-B3hRbIWF.mjs → RadioGroup-CnK0opBd.mjs} +3 -3
  152. package/dist/{RadioGroup-B3hRbIWF.mjs.map → RadioGroup-CnK0opBd.mjs.map} +1 -1
  153. package/dist/{RadioGroup-nhMXEbCx.d.mts → RadioGroup-DKqbSfju.d.mts} +1 -1
  154. package/dist/RadioGroup.d.mts +1 -1
  155. package/dist/RangeCalendar.d.mts +1 -1
  156. package/dist/RangeCalendarPresets.d.mts +1 -1
  157. package/dist/RuleEditorFields.d.mts +37 -0
  158. package/dist/RulesPill.d.mts +65 -0
  159. package/dist/{SearchInput-s6qGC2WZ.d.mts → SearchInput-Bp2yjaE1.d.mts} +3 -3
  160. package/dist/SearchInput.d.mts +1 -1
  161. package/dist/Section.d.mts +1 -1
  162. package/dist/{SectionHeading-CDBQ4m9E.d.mts → SectionHeading-Q-rx2LEd.d.mts} +2 -2
  163. package/dist/SectionHeading.d.mts +1 -1
  164. package/dist/{SegmentedControl-B1ZLgu61.mjs → SegmentedControl-CgDQIVll.mjs} +8 -7
  165. package/dist/SegmentedControl-CgDQIVll.mjs.map +1 -0
  166. package/dist/{SegmentedControl-BYuXohIp.d.cts → SegmentedControl-DrjdUOU9.d.mts} +2 -2
  167. package/dist/SegmentedControl.d.mts +1 -1
  168. package/dist/{Select-NcaURrGZ.d.cts → Select-Bk27TgN8.d.mts} +11 -5
  169. package/dist/{Select-ByTgXOlU.mjs → Select-C1ZoRk39.mjs} +14 -11
  170. package/dist/Select-C1ZoRk39.mjs.map +1 -0
  171. package/dist/Select.d.mts +1 -1
  172. package/dist/Slider.d.mts +1 -1
  173. package/dist/SliderRHF.d.mts +1 -1
  174. package/dist/SliderThumb.d.mts +1 -1
  175. package/dist/{Spacer-Ln3KChb5.mjs → Spacer-CJp0lwkL.mjs} +1 -1
  176. package/dist/{Spacer-Ln3KChb5.mjs.map → Spacer-CJp0lwkL.mjs.map} +1 -1
  177. package/dist/{Stack-ckRN7LrP.mjs → Stack-Bl54WmhY.mjs} +1 -1
  178. package/dist/{Stack-ckRN7LrP.mjs.map → Stack-Bl54WmhY.mjs.map} +1 -1
  179. package/dist/{Stack-UMhJ6F_3.d.mts → Stack-CkV7k7TE.d.mts} +2 -2
  180. package/dist/Stack.d.mts +1 -1
  181. package/dist/StatusIndicator.d.mts +32 -4
  182. package/dist/{Sticker-DjF9VJQB.d.mts → Sticker-Bs25ISz7.d.mts} +5 -5
  183. package/dist/{Sticker-B0TbkV4o.mjs → Sticker-CyGb9dEu.mjs} +3 -3
  184. package/dist/{Sticker-B0TbkV4o.mjs.map → Sticker-CyGb9dEu.mjs.map} +1 -1
  185. package/dist/Sticker.d.mts +1 -1
  186. package/dist/StringValueControl.d.mts +39 -0
  187. package/dist/SwatchPicker.d.mts +1 -1
  188. package/dist/Tab.d.mts +14 -5
  189. package/dist/{TabBar-ByusqAXF.mjs → TabBar-Bn8PHHBZ.mjs} +16 -10
  190. package/dist/TabBar-Bn8PHHBZ.mjs.map +1 -0
  191. package/dist/TabBarIconButton.d.mts +1 -1
  192. package/dist/{Table-DJZtluW3.d.cts → Table-BNScLj9g.d.mts} +1 -1
  193. package/dist/{Table-CNs8p8hL.mjs → Table-BfontAeY.mjs} +8 -6
  194. package/dist/{Table-CNs8p8hL.mjs.map → Table-BfontAeY.mjs.map} +1 -1
  195. package/dist/Table.d.mts +1 -1
  196. package/dist/{TableBody-BFPF07n4.d.cts → TableBody-CrDNMyT8.d.mts} +1 -1
  197. package/dist/TableBody.d.mts +1 -1
  198. package/dist/{TableBox-DIJffyts.mjs → TableBox-bmrKh_ax.mjs} +89 -38
  199. package/dist/TableBox-bmrKh_ax.mjs.map +1 -0
  200. package/dist/TableBox.d.mts +2 -2
  201. package/dist/{TableBoxCell-D1bjYv7b.d.mts → TableBoxCell-CvjLYhTV.d.mts} +24 -10
  202. package/dist/TableBoxCell.d.mts +1 -1
  203. package/dist/TableBoxField.d.mts +8 -5
  204. package/dist/{TableBoxRow-CTR14HJF.d.mts → TableBoxRow-BzXECgid.d.mts} +4 -4
  205. package/dist/TableBoxRow.d.mts +1 -1
  206. package/dist/{TableBoxRowActions-BoMt5d0b.d.mts → TableBoxRowActions-BAiFXiCh.d.mts} +2 -2
  207. package/dist/TableBoxRowActions.d.mts +1 -1
  208. package/dist/TableCell.d.mts +1 -1
  209. package/dist/{TableControls-BZyiqk9V.d.mts → TableControls-BehR7CKS.d.mts} +4 -4
  210. package/dist/TableControls-DVTtNAPo.mjs +3859 -0
  211. package/dist/TableControls-DVTtNAPo.mjs.map +1 -0
  212. package/dist/TableControls.d.mts +1 -1
  213. package/dist/{TableControlsContext-CleTWT7z.d.mts → TableControlsContext-D_SBFZN1.d.mts} +2 -2
  214. package/dist/TableControlsContext.d.mts +1 -1
  215. package/dist/{TableHead-CTsZNRJm.d.cts → TableHead-LxvG0e9k.d.mts} +1 -1
  216. package/dist/TableHead.d.mts +1 -1
  217. package/dist/{TableHeaderCell-UoY92mzR.d.cts → TableHeaderCell-Br8ZE3Xe.d.mts} +1 -1
  218. package/dist/TableHeaderCell.d.mts +1 -1
  219. package/dist/{TableLayout-_TWUnffx.d.mts → TableLayout-BZeP8qfg.d.mts} +7 -1
  220. package/dist/TableLayout.d.mts +1 -1
  221. package/dist/{TableRow-BVzduO4G.d.cts → TableRow-BvS4yjo6.d.mts} +2 -2
  222. package/dist/TableRow.d.mts +1 -1
  223. package/dist/TableTH.d.mts +1 -1
  224. package/dist/{TableViewConfigurationDropdown-D2TM2wCv.d.mts → TableViewConfigurationDropdown-BYPh4dIP.d.mts} +2 -2
  225. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  226. package/dist/TechnicalSticker.d.mts +1 -1
  227. package/dist/{Text-D3FXEnG6.d.mts → Text-DNPbAuUG.d.mts} +3 -3
  228. package/dist/{Text-hEoPeOc9.mjs → Text-RcEfNFLx.mjs} +1 -1
  229. package/dist/{Text-hEoPeOc9.mjs.map → Text-RcEfNFLx.mjs.map} +1 -1
  230. package/dist/Text.d.mts +1 -1
  231. package/dist/{TextArea-KpDoXg-5.d.cts → TextArea-B89wtTsF.d.mts} +2 -2
  232. package/dist/{TextArea-DIPeBLkr.mjs → TextArea-NCLsW-03.mjs} +3 -3
  233. package/dist/{TextArea-DIPeBLkr.mjs.map → TextArea-NCLsW-03.mjs.map} +1 -1
  234. package/dist/TextArea.d.mts +1 -1
  235. package/dist/{TextUnderlineTooltip-Cep5cgEQ.d.mts → TextUnderlineTooltip-5-0D8s4z.d.mts} +3 -3
  236. package/dist/TextUnderlineTooltip.d.mts +1 -1
  237. package/dist/Tile.d.mts +2 -2
  238. package/dist/Toast.d.mts +1 -1
  239. package/dist/{Toggle-CfjUQlcK.mjs → Toggle-Bie9zCem.mjs} +5 -5
  240. package/dist/{Toggle-CfjUQlcK.mjs.map → Toggle-Bie9zCem.mjs.map} +1 -1
  241. package/dist/{Toggle-BQCOJZjZ.d.mts → Toggle-DzYLgxGk.d.mts} +1 -1
  242. package/dist/Toggle.d.mts +1 -1
  243. package/dist/{Tooltip-CDvOu1UN.mjs → Tooltip-BvDbmXak.mjs} +3 -3
  244. package/dist/{Tooltip-CDvOu1UN.mjs.map → Tooltip-BvDbmXak.mjs.map} +1 -1
  245. package/dist/{Tooltip-DRgufW3i.d.mts → Tooltip-CUC-JuRL.d.mts} +3 -3
  246. package/dist/Tooltip.d.mts +1 -1
  247. package/dist/{TruncatedText-Cy8NpHzm.d.mts → TruncatedText-BJnowVTx.d.mts} +1 -1
  248. package/dist/components/Attribute/index.mjs +10 -10
  249. package/dist/components/Attribute/index.mjs.map +1 -1
  250. package/dist/components/Badge/index.mjs +1 -1
  251. package/dist/components/Banner/index.mjs +1 -1
  252. package/dist/components/Breadcrumbs/index.d.mts +2 -2
  253. package/dist/components/Breadcrumbs/index.mjs +1 -267
  254. package/dist/components/Button/index.d.mts +2 -2
  255. package/dist/components/Button/index.mjs +1 -1
  256. package/dist/components/ButtonGroup/index.mjs +3 -3
  257. package/dist/components/Card/index.d.mts +2 -2
  258. package/dist/components/Card/index.mjs +1 -1
  259. package/dist/components/CardV2/index.d.mts +1 -1
  260. package/dist/components/CardV2/index.mjs +1 -410
  261. package/dist/components/Checkbox/index.d.mts +1 -1
  262. package/dist/components/Checkbox/index.mjs +1 -1
  263. package/dist/components/Combobox/index.d.mts +2 -2
  264. package/dist/components/Combobox/index.mjs +1 -1
  265. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  266. package/dist/components/DataTable/TableControls/index.d.mts +16 -6
  267. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  268. package/dist/components/DataTable/index.mjs +28 -26
  269. package/dist/components/DataTable/index.mjs.map +1 -1
  270. package/dist/components/DataTable/types.d.mts +2 -2
  271. package/dist/components/DatePicker/index.mjs +1 -921
  272. package/dist/components/DropdownButton/index.mjs +1 -1
  273. package/dist/components/DropdownMenu/index.d.mts +1 -1
  274. package/dist/components/DropdownMenu/index.mjs +1 -1
  275. package/dist/components/FormControl/index.d.mts +2 -2
  276. package/dist/components/FormControl/index.mjs +2 -2
  277. package/dist/components/FormField/index.d.mts +3 -3
  278. package/dist/components/FormField/index.mjs +2 -471
  279. package/dist/components/HoverCopyableField/index.mjs +1 -1
  280. package/dist/components/ImageTile/index.mjs +8 -8
  281. package/dist/components/Input/index.d.mts +1 -1
  282. package/dist/components/Input/index.mjs +1 -1
  283. package/dist/components/Link/index.mjs +1 -1
  284. package/dist/components/ListBox/index.d.mts +4 -2
  285. package/dist/components/ListBox/index.mjs +1 -1
  286. package/dist/components/LoadingShimmer/index.mjs +1 -1
  287. package/dist/components/MaskedInput/index.mjs +2 -2
  288. package/dist/components/Menu/index.d.mts +1 -1
  289. package/dist/components/Menu/index.mjs +1 -1
  290. package/dist/components/Modal/index.mjs +7 -7
  291. package/dist/components/PageHeader/index.mjs +1 -63
  292. package/dist/components/Pagination/index.d.mts +3 -3
  293. package/dist/components/Pagination/index.mjs +1 -1
  294. package/dist/components/Pii/index.mjs +1 -1
  295. package/dist/components/Popover/index.mjs +1 -1
  296. package/dist/components/ProgressBar/index.mjs +1 -1
  297. package/dist/components/Radio/index.mjs +1 -1
  298. package/dist/components/RadioGroup/index.d.mts +1 -1
  299. package/dist/components/RadioGroup/index.mjs +1 -1
  300. package/dist/components/SegmentedControl/index.d.mts +1 -1
  301. package/dist/components/SegmentedControl/index.mjs +1 -1
  302. package/dist/components/Select/index.d.mts +1 -1
  303. package/dist/components/Select/index.mjs +1 -1
  304. package/dist/components/Slider/index.mjs +2 -2
  305. package/dist/components/Spacer/index.mjs +1 -1
  306. package/dist/components/Stack/index.d.mts +1 -1
  307. package/dist/components/Stack/index.mjs +1 -1
  308. package/dist/components/StatusIndicator/index.d.mts +2 -2
  309. package/dist/components/StatusIndicator/index.mjs +61 -12
  310. package/dist/components/StatusIndicator/index.mjs.map +1 -1
  311. package/dist/components/Sticker/index.d.mts +1 -1
  312. package/dist/components/Sticker/index.mjs +1 -1
  313. package/dist/components/TabBar/index.mjs +1 -1
  314. package/dist/components/Table/index.d.mts +7 -7
  315. package/dist/components/Table/index.mjs +1 -1
  316. package/dist/components/TableBox/index.d.mts +2 -2
  317. package/dist/components/TableBox/index.mjs +1 -1
  318. package/dist/components/TechnicalSticker/index.mjs +4 -4
  319. package/dist/components/Text/index.d.mts +1 -1
  320. package/dist/components/Text/index.mjs +1 -1
  321. package/dist/components/TextArea/index.d.mts +1 -1
  322. package/dist/components/TextArea/index.mjs +1 -1
  323. package/dist/components/Tile/index.mjs +4 -4
  324. package/dist/components/Toast/index.mjs +1 -1
  325. package/dist/components/Toggle/index.d.mts +1 -1
  326. package/dist/components/Toggle/index.mjs +1 -1
  327. package/dist/components/Tooltip/index.d.mts +3 -3
  328. package/dist/components/Tooltip/index.mjs +1 -1
  329. package/dist/compound-expression.d.mts +9 -0
  330. package/dist/{constants-DVwPpTt5.d.mts → constants-BASogfT_.d.mts} +1 -1
  331. package/dist/constants.d.mts +1 -1
  332. package/dist/containers.d.mts +8 -0
  333. package/dist/display.d.mts +8 -0
  334. package/dist/fieldPickerOptions.d.mts +29 -0
  335. package/dist/filter-size-context-Blw6Sd69.d.mts +52 -0
  336. package/dist/filter-size-context.d.mts +2 -0
  337. package/dist/helpers.d.mts +1 -1
  338. package/dist/index-4_B2yRzD.d.mts +7 -0
  339. package/dist/index-BxXTpeUb2.d.mts +55 -0
  340. package/dist/{index-BPnJP0jZ.d.mts → index-DDbjWdk0.d.mts} +4 -4
  341. package/dist/index.d.mts +1 -1
  342. package/dist/index2.d.mts +1 -1
  343. package/dist/index3.d.mts +4 -1
  344. package/dist/index4.d.mts +11 -0
  345. package/dist/index5.d.mts +2 -0
  346. package/dist/{input-BkzqXwn7.d.cts → input-Bv5fKt5J.d.mts} +3 -3
  347. package/dist/inputFields.d.mts +11 -11
  348. package/dist/{intersperse-yd3oMrQl.mjs → intersperse-vOYvFOfF.mjs} +1 -1
  349. package/dist/{intersperse-Gxwgpbk8.cjs.map → intersperse-vOYvFOfF.mjs.map} +1 -1
  350. package/dist/layouts/LayoutLoadingShimmer/index.d.mts +2 -0
  351. package/dist/layouts/LayoutLoadingShimmer/index.mjs +133 -0
  352. package/dist/layouts/LayoutLoadingShimmer/index.mjs.map +1 -0
  353. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  354. package/dist/lib/PDSProvider.d.mts +1 -1
  355. package/dist/lib/TruncatedText.d.mts +1 -1
  356. package/dist/lib/TruncatedText.mjs +1 -1
  357. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  358. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  359. package/dist/lib/message.d.mts +1 -1
  360. package/dist/lib/pseudoClass.d.mts +1 -1
  361. package/dist/lib/useScrollOverflow.d.mts +7 -0
  362. package/dist/lib/useScrollOverflow.mjs +22 -1
  363. package/dist/lib/useScrollOverflow.mjs.map +1 -1
  364. package/dist/{message-BfJ87aIU.d.mts → message-CMHvlPGn.d.mts} +1 -1
  365. package/dist/mixins/focus.d.mts +1 -1
  366. package/dist/mixins/hoverable.d.mts +2 -2
  367. package/dist/mixins/input.d.mts +1 -1
  368. package/dist/mixins/menuItem.d.mts +2 -2
  369. package/dist/mixins/text.d.mts +1 -1
  370. package/dist/operators-Bo31xlc2.d.mts +43 -0
  371. package/dist/operators.d.mts +2 -0
  372. package/dist/{text-CtoDqqAO.d.mts → text-B21s9mRZ.d.mts} +1 -1
  373. package/dist/{theme-Bx2sn3Lt.d.mts → theme-BzBpJXhO.d.mts} +1 -1
  374. package/dist/theme.d.mts +1 -1
  375. package/dist/types-D58IoRx6.d.mts +158 -0
  376. package/dist/types-D7ppqnNj.d.mts +45 -0
  377. package/dist/{types-B34lbI2k.d.mts → types-DEh_pXgS.d.mts} +1 -1
  378. package/dist/{types-CuCT-YnX.d.cts → types-TV9nVfSe.d.mts} +1 -1
  379. package/dist/types.d.mts +1 -1
  380. package/dist/types2.d.mts +2 -2
  381. package/dist/types3.d.mts +2 -0
  382. package/dist/types4.d.mts +2 -0
  383. package/dist/use-rules-popover-selection.d.mts +19 -0
  384. package/dist/useComboboxFooterAction.d.mts +47 -0
  385. package/dist/useFilterStateV2-DCQghouq.d.mts +93 -0
  386. package/dist/useFilterStateV2.d.mts +2 -0
  387. package/dist/{useFormField-BE0rTBF1.d.mts → useFormField-D8mLsiQc.d.mts} +2 -2
  388. package/dist/{useFormField-eftOPiXj.mjs → useFormField-DhYd6bNn.mjs} +2 -2
  389. package/dist/{useFormField-eftOPiXj.mjs.map → useFormField-DhYd6bNn.mjs.map} +1 -1
  390. package/dist/useFormField.d.mts +1 -1
  391. package/dist/{useFormGroup-BMukAMAd.mjs → useFormGroup-DWVW7A9f.mjs} +1 -1
  392. package/dist/{useFormGroup-BMukAMAd.mjs.map → useFormGroup-DWVW7A9f.mjs.map} +1 -1
  393. package/dist/{useTableBoxDragAndDrop--QBq2FQh.d.cts → useTableBoxDragAndDrop-BMo-iaUF.d.mts} +1 -1
  394. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  395. package/dist/{useToggle-3k3EkV8V.mjs → useToggle-Bo3yd14Y.mjs} +1 -1
  396. package/dist/{useToggle-3k3EkV8V.mjs.map → useToggle-Bo3yd14Y.mjs.map} +1 -1
  397. package/dist/useTruncation.d.mts +1 -1
  398. package/dist/{utilities-DqO6Sh94.d.cts → utilities-BO_95qFA.d.mts} +1 -1
  399. package/dist/utilities.d.mts +1 -1
  400. package/dist/utils/storybook.mjs +1 -1
  401. package/dist/utils/testing.d.mts +1 -1
  402. package/dist/utils/testing.mjs +1 -1
  403. package/dist/utils.d.mts +22 -5
  404. package/dist/utils2.d.mts +9 -0
  405. package/dist/validation-vLh3t2dk.d.mts +51 -0
  406. package/dist/validation.d.mts +2 -0
  407. package/dist/value-control-resolver-CE-bqdAl.d.mts +46 -0
  408. package/dist/value-control-resolver.d.mts +2 -0
  409. package/package.json +203 -738
  410. package/skills/ui-authoring/COMPONENTS.md +331 -0
  411. package/skills/ui-authoring/EXAMPLES.md +370 -0
  412. package/skills/ui-authoring/REFERENCE.md +293 -0
  413. package/skills/ui-authoring/SKILL.md +237 -0
  414. package/dist/Action-z1rV4qON.d.cts +0 -35
  415. package/dist/Action.d.cts +0 -2
  416. package/dist/Attribute.d.cts +0 -107
  417. package/dist/AttributeGrid.d.cts +0 -40
  418. package/dist/Badge-DAGPU4-e.cjs +0 -38
  419. package/dist/Badge-DAGPU4-e.cjs.map +0 -1
  420. package/dist/Badge.d.cts +0 -25
  421. package/dist/Banner.d.cts +0 -48
  422. package/dist/Breadcrumb-BOxfam3E.d.cts +0 -31
  423. package/dist/Breadcrumb.d.cts +0 -2
  424. package/dist/Breadcrumbs.d.cts +0 -20
  425. package/dist/Button-DXsYU5qU.d.mts +0 -101
  426. package/dist/Button.d.cts +0 -2
  427. package/dist/ButtonGroup.d.cts +0 -20
  428. package/dist/Calendar.d.cts +0 -11
  429. package/dist/Card-CaOItkgL.cjs +0 -248
  430. package/dist/Card-CaOItkgL.cjs.map +0 -1
  431. package/dist/Card-DnmrsQWi.d.cts +0 -52
  432. package/dist/Card.d.cts +0 -2
  433. package/dist/Card2.d.cts +0 -95
  434. package/dist/Checkbox-DhxpxzGp.cjs +0 -183
  435. package/dist/Checkbox-DhxpxzGp.cjs.map +0 -1
  436. package/dist/Checkbox-MUC37dLY.d.mts +0 -46
  437. package/dist/Checkbox.d.cts +0 -2
  438. package/dist/CheckboxGroupField.d.cts +0 -24
  439. package/dist/Combobox-4Bi9-N1p.cjs +0 -1693
  440. package/dist/Combobox-4Bi9-N1p.cjs.map +0 -1
  441. package/dist/Combobox-Bedo_GIj.d.mts +0 -11
  442. package/dist/Combobox-CeKMrlxy.mjs.map +0 -1
  443. package/dist/Combobox.d.cts +0 -3
  444. package/dist/ComboboxBase-BoR9DVwe.d.cts +0 -321
  445. package/dist/ComboboxBase.d.cts +0 -2
  446. package/dist/ComboboxMultiSelect-CnI6sFAF.d.cts +0 -47
  447. package/dist/ComboboxMultiSelect.d.cts +0 -2
  448. package/dist/ComboboxSingleSelect-Japejm0g.d.cts +0 -35
  449. package/dist/ComboboxSingleSelect.d.cts +0 -2
  450. package/dist/CompactBar-DTsGo1zU.d.cts +0 -21
  451. package/dist/CompactBar.d.cts +0 -2
  452. package/dist/ConfigFormGroup-DVRhkS2L.cjs +0 -35
  453. package/dist/ConfigFormGroup-DVRhkS2L.cjs.map +0 -1
  454. package/dist/ConfigFormGroup.d.cts +0 -7
  455. package/dist/ControlBar-BGmXymCB.d.cts +0 -151
  456. package/dist/ControlBar.d.cts +0 -2
  457. package/dist/DataTable.d.cts +0 -372
  458. package/dist/DateField.d.cts +0 -23
  459. package/dist/DatePicker.d.cts +0 -19
  460. package/dist/DateRangePicker.d.cts +0 -52
  461. package/dist/DropdownButton-Du6dwZVL.cjs +0 -32
  462. package/dist/DropdownButton-Du6dwZVL.cjs.map +0 -1
  463. package/dist/DropdownButton.d.cts +0 -26
  464. package/dist/DropdownMenu-CfJxgWN5.cjs +0 -74
  465. package/dist/DropdownMenu-CfJxgWN5.cjs.map +0 -1
  466. package/dist/DropdownMenu-FIYz6oAo.d.cts +0 -75
  467. package/dist/DropdownMenu.d.cts +0 -2
  468. package/dist/ErrorProps-iEj4BIVA.d.mts +0 -8
  469. package/dist/ErrorProps.d.cts +0 -2
  470. package/dist/FloatingActionBar.d.cts +0 -40
  471. package/dist/FormControl-BrsML00L.d.cts +0 -60
  472. package/dist/FormControl-Czt95h2L.cjs +0 -212
  473. package/dist/FormControl-Czt95h2L.cjs.map +0 -1
  474. package/dist/FormControl.d.cts +0 -2
  475. package/dist/FormField-DoSXvnJ3.d.cts +0 -69
  476. package/dist/FormField.d.cts +0 -2
  477. package/dist/Header-CkZvzbzL.d.cts +0 -35
  478. package/dist/Header.d.cts +0 -2
  479. package/dist/HelperTooltip-C1CYMpJP.d.cts +0 -20
  480. package/dist/HelperTooltip.d.cts +0 -2
  481. package/dist/HoverCopyableField-B_WNB7Qp.cjs +0 -110
  482. package/dist/HoverCopyableField-B_WNB7Qp.cjs.map +0 -1
  483. package/dist/HoverCopyableField.d.cts +0 -16
  484. package/dist/IconButton-DNy7g5zh.cjs +0 -372
  485. package/dist/IconButton-DNy7g5zh.cjs.map +0 -1
  486. package/dist/IconButton-Dnnlf9uO.d.mts +0 -24
  487. package/dist/IconButton.d.cts +0 -2
  488. package/dist/ImageTile.d.cts +0 -60
  489. package/dist/Input-4KeYlOWM.d.mts +0 -65
  490. package/dist/Input-BDLUq-pK.cjs +0 -209
  491. package/dist/Input-BDLUq-pK.cjs.map +0 -1
  492. package/dist/Input-PWfwMSJ7.mjs.map +0 -1
  493. package/dist/Input.d.cts +0 -2
  494. package/dist/InputProps-CTLG2Tr0.d.mts +0 -16
  495. package/dist/InputProps.d.cts +0 -2
  496. package/dist/Inserter.d.cts +0 -12
  497. package/dist/Link.d.cts +0 -43
  498. package/dist/ListBox-BCscLcYL.cjs +0 -379
  499. package/dist/ListBox-BCscLcYL.cjs.map +0 -1
  500. package/dist/ListBox-CDNOJmvz.mjs.map +0 -1
  501. package/dist/ListBox-WyZvseo5.d.cts +0 -138
  502. package/dist/ListBox.d.cts +0 -2
  503. package/dist/ListBoxField.d.cts +0 -46
  504. package/dist/LoadingShimmer-CUjbAqGd.cjs +0 -92
  505. package/dist/LoadingShimmer-CUjbAqGd.cjs.map +0 -1
  506. package/dist/LoadingShimmer.d.cts +0 -38
  507. package/dist/MaskedInput.d.cts +0 -10
  508. package/dist/MatchHighlight.d.cts +0 -11
  509. package/dist/Menu-BKMxOXkj.d.cts +0 -70
  510. package/dist/Menu-BXic-30n.cjs +0 -217
  511. package/dist/Menu-BXic-30n.cjs.map +0 -1
  512. package/dist/Menu.d.cts +0 -2
  513. package/dist/MiddleTruncatedText-BIzKECv9.cjs +0 -178
  514. package/dist/MiddleTruncatedText-BIzKECv9.cjs.map +0 -1
  515. package/dist/Modal.d.cts +0 -146
  516. package/dist/PageHeader.d.cts +0 -26
  517. package/dist/PageSelector-DoROR_Uh.d.cts +0 -30
  518. package/dist/PageSelector.d.cts +0 -2
  519. package/dist/Pagination-B97xQ-Wk.d.cts +0 -33
  520. package/dist/Pagination-Cj08JRG9.mjs.map +0 -1
  521. package/dist/Pagination-D4IVVj3S.cjs +0 -233
  522. package/dist/Pagination-D4IVVj3S.cjs.map +0 -1
  523. package/dist/Pagination.d.cts +0 -2
  524. package/dist/Pii-D-Ry7L0t.cjs +0 -25
  525. package/dist/Pii-D-Ry7L0t.cjs.map +0 -1
  526. package/dist/Pii.d.cts +0 -16
  527. package/dist/Popover-BAv7BujW.cjs +0 -168
  528. package/dist/Popover-BAv7BujW.cjs.map +0 -1
  529. package/dist/Popover.d.cts +0 -90
  530. package/dist/ProgressBar.d.cts +0 -83
  531. package/dist/ProgressIndicator.d.cts +0 -64
  532. package/dist/PseudoClassProps-C5jpj6Rp.d.cts +0 -12
  533. package/dist/PseudoClassProps.d.cts +0 -2
  534. package/dist/Radio-nw846eRv.cjs +0 -154
  535. package/dist/Radio-nw846eRv.cjs.map +0 -1
  536. package/dist/Radio.d.cts +0 -21
  537. package/dist/RadioGroup-D_H1B7JV.d.cts +0 -21
  538. package/dist/RadioGroup-DmGVJCgT.cjs +0 -57
  539. package/dist/RadioGroup-DmGVJCgT.cjs.map +0 -1
  540. package/dist/RadioGroup.d.cts +0 -2
  541. package/dist/SearchInput-CAHYPQVX.d.cts +0 -46
  542. package/dist/SearchInput.d.cts +0 -2
  543. package/dist/SectionHeading-D-L4uPoX.d.cts +0 -71
  544. package/dist/SectionHeading.d.cts +0 -2
  545. package/dist/SegmentedControl-B1ZLgu61.mjs.map +0 -1
  546. package/dist/SegmentedControl-CE845gnm.d.mts +0 -59
  547. package/dist/SegmentedControl-CIJz0oxY.cjs +0 -124
  548. package/dist/SegmentedControl-CIJz0oxY.cjs.map +0 -1
  549. package/dist/SegmentedControl.d.cts +0 -2
  550. package/dist/Select-BMEwCfbv.d.mts +0 -77
  551. package/dist/Select-ByTgXOlU.mjs.map +0 -1
  552. package/dist/Select-C65bfYeT.cjs +0 -262
  553. package/dist/Select-C65bfYeT.cjs.map +0 -1
  554. package/dist/Select.d.cts +0 -2
  555. package/dist/Slider.d.cts +0 -51
  556. package/dist/SliderRHF.d.cts +0 -18
  557. package/dist/Spacer-GYHbk-dS.cjs +0 -20
  558. package/dist/Spacer-GYHbk-dS.cjs.map +0 -1
  559. package/dist/Spacer.d.cts +0 -17
  560. package/dist/Spinner-B6bx70yR.cjs +0 -48
  561. package/dist/Spinner-B6bx70yR.cjs.map +0 -1
  562. package/dist/Spinner.d.cts +0 -26
  563. package/dist/Stack-BF-9YjA1.cjs +0 -53
  564. package/dist/Stack-BF-9YjA1.cjs.map +0 -1
  565. package/dist/Stack-D979gYU9.d.cts +0 -47
  566. package/dist/Stack.d.cts +0 -2
  567. package/dist/StatusIndicator.d.cts +0 -54
  568. package/dist/Sticker-D0jIU2Dt.cjs +0 -244
  569. package/dist/Sticker-D0jIU2Dt.cjs.map +0 -1
  570. package/dist/Sticker-N8XZnv7M.d.cts +0 -68
  571. package/dist/Sticker.d.cts +0 -2
  572. package/dist/SwatchPicker.d.cts +0 -18
  573. package/dist/Tab.d.cts +0 -26
  574. package/dist/TabBar-BpHMYvNb.cjs +0 -298
  575. package/dist/TabBar-BpHMYvNb.cjs.map +0 -1
  576. package/dist/TabBar-ByusqAXF.mjs.map +0 -1
  577. package/dist/TabBar.d.cts +0 -33
  578. package/dist/TabBarIconButton.d.cts +0 -10
  579. package/dist/Table-C9rjUVpn.cjs +0 -478
  580. package/dist/Table-C9rjUVpn.cjs.map +0 -1
  581. package/dist/Table-D3nyiZt0.d.mts +0 -13
  582. package/dist/Table.d.cts +0 -2
  583. package/dist/TableBody-DpRjZgzU.d.mts +0 -9
  584. package/dist/TableBody.d.cts +0 -2
  585. package/dist/TableBox-DIJffyts.mjs.map +0 -1
  586. package/dist/TableBox-DO-yToJk.cjs +0 -1370
  587. package/dist/TableBox-DO-yToJk.cjs.map +0 -1
  588. package/dist/TableBox.d.cts +0 -3
  589. package/dist/TableBoxCell-DOQ8PnAT.d.cts +0 -259
  590. package/dist/TableBoxCell.d.cts +0 -2
  591. package/dist/TableBoxField.d.cts +0 -99
  592. package/dist/TableBoxRow-BUK5RjRA.d.cts +0 -86
  593. package/dist/TableBoxRow.d.cts +0 -2
  594. package/dist/TableBoxRowActions-CKgUEH38.d.cts +0 -57
  595. package/dist/TableBoxRowActions.d.cts +0 -2
  596. package/dist/TableCell.d.cts +0 -2
  597. package/dist/TableControls-Bkd3jhC1.d.cts +0 -70
  598. package/dist/TableControls-BkdSeQvt.mjs +0 -1029
  599. package/dist/TableControls-BkdSeQvt.mjs.map +0 -1
  600. package/dist/TableControls-DcbnNqeK.cjs +0 -1080
  601. package/dist/TableControls-DcbnNqeK.cjs.map +0 -1
  602. package/dist/TableControls.d.cts +0 -2
  603. package/dist/TableControlsContext-D6XpuRVw.d.cts +0 -21
  604. package/dist/TableControlsContext.d.cts +0 -2
  605. package/dist/TableHead-wl78HqPT.d.mts +0 -12
  606. package/dist/TableHead.d.cts +0 -2
  607. package/dist/TableHeaderCell-B2yiOw4w.d.mts +0 -17
  608. package/dist/TableHeaderCell.d.cts +0 -2
  609. package/dist/TableLayout-GyRS-Awa.d.cts +0 -19
  610. package/dist/TableLayout.d.cts +0 -2
  611. package/dist/TableRow-C-faHbkL.d.mts +0 -13
  612. package/dist/TableRow.d.cts +0 -2
  613. package/dist/TableTH.d.cts +0 -2
  614. package/dist/TableViewConfigurationDropdown-u3-prEHJ.d.cts +0 -32
  615. package/dist/TableViewConfigurationDropdown.d.cts +0 -2
  616. package/dist/TechnicalSticker.d.cts +0 -51
  617. package/dist/Text-CrGiWG2E.d.cts +0 -42
  618. package/dist/Text-CzN0DOXV.cjs +0 -95
  619. package/dist/Text-CzN0DOXV.cjs.map +0 -1
  620. package/dist/Text.d.cts +0 -2
  621. package/dist/TextArea-DVHi0K7M.cjs +0 -40
  622. package/dist/TextArea-DVHi0K7M.cjs.map +0 -1
  623. package/dist/TextArea-weASn4Hq.d.mts +0 -10
  624. package/dist/TextArea.d.cts +0 -2
  625. package/dist/TextUnderlineTooltip-cSMjZOuB.d.cts +0 -18
  626. package/dist/TextUnderlineTooltip.d.cts +0 -2
  627. package/dist/Tile.d.cts +0 -63
  628. package/dist/Toast.d.cts +0 -23
  629. package/dist/Toggle-CTtrhzsV.cjs +0 -174
  630. package/dist/Toggle-CTtrhzsV.cjs.map +0 -1
  631. package/dist/Toggle-CYQE1Nk_.d.cts +0 -54
  632. package/dist/Toggle.d.cts +0 -2
  633. package/dist/Tooltip-BhGRP9QA.d.cts +0 -100
  634. package/dist/Tooltip-vylydKVv.cjs +0 -152
  635. package/dist/Tooltip-vylydKVv.cjs.map +0 -1
  636. package/dist/Tooltip.d.cts +0 -2
  637. package/dist/TruncatedText-D8f3AiBL.d.cts +0 -18
  638. package/dist/chunk-CKQMccvm.cjs +0 -28
  639. package/dist/components/Attribute/index.cjs +0 -210
  640. package/dist/components/Attribute/index.cjs.map +0 -1
  641. package/dist/components/Attribute/index.d.cts +0 -3
  642. package/dist/components/Badge/index.cjs +0 -7
  643. package/dist/components/Badge/index.d.cts +0 -2
  644. package/dist/components/Banner/index.cjs +0 -99
  645. package/dist/components/Banner/index.cjs.map +0 -1
  646. package/dist/components/Banner/index.d.cts +0 -2
  647. package/dist/components/Breadcrumbs/index.cjs +0 -275
  648. package/dist/components/Breadcrumbs/index.cjs.map +0 -1
  649. package/dist/components/Breadcrumbs/index.d.cts +0 -2
  650. package/dist/components/Breadcrumbs/index.mjs.map +0 -1
  651. package/dist/components/Button/index.cjs +0 -11
  652. package/dist/components/Button/index.d.cts +0 -3
  653. package/dist/components/ButtonGroup/index.cjs +0 -112
  654. package/dist/components/ButtonGroup/index.cjs.map +0 -1
  655. package/dist/components/ButtonGroup/index.d.cts +0 -2
  656. package/dist/components/Card/index.cjs +0 -12
  657. package/dist/components/Card/index.d.cts +0 -3
  658. package/dist/components/CardV2/index.cjs +0 -419
  659. package/dist/components/CardV2/index.cjs.map +0 -1
  660. package/dist/components/CardV2/index.d.cts +0 -3
  661. package/dist/components/CardV2/index.mjs.map +0 -1
  662. package/dist/components/Checkbox/index.cjs +0 -7
  663. package/dist/components/Checkbox/index.d.cts +0 -2
  664. package/dist/components/Combobox/index.cjs +0 -9
  665. package/dist/components/Combobox/index.d.cts +0 -3
  666. package/dist/components/ConfigFormGroup/index.cjs +0 -10
  667. package/dist/components/ConfigFormGroup/index.d.cts +0 -3
  668. package/dist/components/DataTable/TableControls/index.cjs +0 -13
  669. package/dist/components/DataTable/TableControls/index.d.cts +0 -6
  670. package/dist/components/DataTable/index.cjs +0 -1434
  671. package/dist/components/DataTable/index.cjs.map +0 -1
  672. package/dist/components/DataTable/index.d.cts +0 -8
  673. package/dist/components/DataTable/types.cjs +0 -0
  674. package/dist/components/DataTable/types.d.cts +0 -159
  675. package/dist/components/DatePicker/index.cjs +0 -933
  676. package/dist/components/DatePicker/index.cjs.map +0 -1
  677. package/dist/components/DatePicker/index.d.cts +0 -5
  678. package/dist/components/DatePicker/index.mjs.map +0 -1
  679. package/dist/components/DropdownButton/index.cjs +0 -7
  680. package/dist/components/DropdownButton/index.d.cts +0 -2
  681. package/dist/components/DropdownMenu/index.cjs +0 -7
  682. package/dist/components/DropdownMenu/index.d.cts +0 -2
  683. package/dist/components/FormControl/index.cjs +0 -15
  684. package/dist/components/FormControl/index.d.cts +0 -3
  685. package/dist/components/FormField/index.cjs +0 -490
  686. package/dist/components/FormField/index.cjs.map +0 -1
  687. package/dist/components/FormField/index.d.cts +0 -6
  688. package/dist/components/FormField/index.mjs.map +0 -1
  689. package/dist/components/HoverCopyableField/index.cjs +0 -2
  690. package/dist/components/HoverCopyableField/index.d.cts +0 -2
  691. package/dist/components/ImageTile/index.cjs +0 -225
  692. package/dist/components/ImageTile/index.cjs.map +0 -1
  693. package/dist/components/ImageTile/index.d.cts +0 -2
  694. package/dist/components/Input/index.cjs +0 -14
  695. package/dist/components/Input/index.cjs.map +0 -1
  696. package/dist/components/Input/index.d.cts +0 -2
  697. package/dist/components/Link/index.cjs +0 -87
  698. package/dist/components/Link/index.cjs.map +0 -1
  699. package/dist/components/Link/index.d.cts +0 -2
  700. package/dist/components/ListBox/index.cjs +0 -8
  701. package/dist/components/ListBox/index.d.cts +0 -2
  702. package/dist/components/LoadingShimmer/index.cjs +0 -6
  703. package/dist/components/LoadingShimmer/index.d.cts +0 -2
  704. package/dist/components/MaskedInput/index.cjs +0 -29
  705. package/dist/components/MaskedInput/index.cjs.map +0 -1
  706. package/dist/components/MaskedInput/index.d.cts +0 -2
  707. package/dist/components/MatchHighlight/index.cjs +0 -31
  708. package/dist/components/MatchHighlight/index.cjs.map +0 -1
  709. package/dist/components/MatchHighlight/index.d.cts +0 -2
  710. package/dist/components/Menu/index.cjs +0 -14
  711. package/dist/components/Menu/index.d.cts +0 -2
  712. package/dist/components/Modal/index.cjs +0 -290
  713. package/dist/components/Modal/index.cjs.map +0 -1
  714. package/dist/components/Modal/index.d.cts +0 -2
  715. package/dist/components/PageHeader/index.cjs +0 -71
  716. package/dist/components/PageHeader/index.cjs.map +0 -1
  717. package/dist/components/PageHeader/index.d.cts +0 -2
  718. package/dist/components/PageHeader/index.mjs.map +0 -1
  719. package/dist/components/Pagination/index.cjs +0 -10
  720. package/dist/components/Pagination/index.d.cts +0 -4
  721. package/dist/components/Pii/index.cjs +0 -2
  722. package/dist/components/Pii/index.d.cts +0 -2
  723. package/dist/components/Popover/index.cjs +0 -12
  724. package/dist/components/Popover/index.d.cts +0 -2
  725. package/dist/components/ProgressBar/index.cjs +0 -177
  726. package/dist/components/ProgressBar/index.cjs.map +0 -1
  727. package/dist/components/ProgressBar/index.d.cts +0 -2
  728. package/dist/components/ProgressIndicator/index.cjs +0 -185
  729. package/dist/components/ProgressIndicator/index.cjs.map +0 -1
  730. package/dist/components/ProgressIndicator/index.d.cts +0 -2
  731. package/dist/components/Radio/index.cjs +0 -7
  732. package/dist/components/Radio/index.d.cts +0 -2
  733. package/dist/components/RadioGroup/index.cjs +0 -7
  734. package/dist/components/RadioGroup/index.d.cts +0 -2
  735. package/dist/components/SegmentedControl/index.cjs +0 -8
  736. package/dist/components/SegmentedControl/index.d.cts +0 -2
  737. package/dist/components/Select/index.cjs +0 -9
  738. package/dist/components/Select/index.d.cts +0 -2
  739. package/dist/components/Slider/index.cjs +0 -245
  740. package/dist/components/Slider/index.cjs.map +0 -1
  741. package/dist/components/Slider/index.d.cts +0 -3
  742. package/dist/components/Spacer/index.cjs +0 -2
  743. package/dist/components/Spacer/index.d.cts +0 -2
  744. package/dist/components/Spinner/index.cjs +0 -7
  745. package/dist/components/Spinner/index.d.cts +0 -2
  746. package/dist/components/Stack/index.cjs +0 -8
  747. package/dist/components/Stack/index.d.cts +0 -2
  748. package/dist/components/StatusIndicator/index.cjs +0 -174
  749. package/dist/components/StatusIndicator/index.cjs.map +0 -1
  750. package/dist/components/StatusIndicator/index.d.cts +0 -2
  751. package/dist/components/Sticker/index.cjs +0 -11
  752. package/dist/components/Sticker/index.d.cts +0 -2
  753. package/dist/components/SwatchPicker/index.cjs +0 -63
  754. package/dist/components/SwatchPicker/index.cjs.map +0 -1
  755. package/dist/components/SwatchPicker/index.d.cts +0 -2
  756. package/dist/components/TabBar/index.cjs +0 -11
  757. package/dist/components/TabBar/index.d.cts +0 -4
  758. package/dist/components/Table/index.cjs +0 -21
  759. package/dist/components/Table/index.d.cts +0 -8
  760. package/dist/components/TableBox/index.cjs +0 -7
  761. package/dist/components/TableBox/index.d.cts +0 -3
  762. package/dist/components/TechnicalSticker/index.cjs +0 -239
  763. package/dist/components/TechnicalSticker/index.cjs.map +0 -1
  764. package/dist/components/TechnicalSticker/index.d.cts +0 -2
  765. package/dist/components/Text/index.cjs +0 -8
  766. package/dist/components/Text/index.d.cts +0 -2
  767. package/dist/components/TextArea/index.cjs +0 -7
  768. package/dist/components/TextArea/index.d.cts +0 -2
  769. package/dist/components/Tile/index.cjs +0 -102
  770. package/dist/components/Tile/index.cjs.map +0 -1
  771. package/dist/components/Tile/index.d.cts +0 -2
  772. package/dist/components/Toast/index.cjs +0 -134
  773. package/dist/components/Toast/index.cjs.map +0 -1
  774. package/dist/components/Toast/index.d.cts +0 -2
  775. package/dist/components/Toggle/index.cjs +0 -7
  776. package/dist/components/Toggle/index.d.cts +0 -2
  777. package/dist/components/Tooltip/index.cjs +0 -11
  778. package/dist/components/Tooltip/index.d.cts +0 -4
  779. package/dist/constants-kwVsjw8O.d.cts +0 -6
  780. package/dist/constants.d.cts +0 -2
  781. package/dist/constants2.d.cts +0 -10
  782. package/dist/helpers.d.cts +0 -76
  783. package/dist/index-D-BciAtf.d.cts +0 -1
  784. package/dist/index-D2HUTZ-d.d.cts +0 -1
  785. package/dist/index-D8dPsry7.d.mts +0 -1
  786. package/dist/index-DeEmP3Jc.d.cts +0 -1
  787. package/dist/index-DeVKzGce.d.mts +0 -1
  788. package/dist/index-DrZ2Dh-H.d.cts +0 -1
  789. package/dist/index-DxSM7VXJ.d.cts +0 -1
  790. package/dist/index-FtE8MXJ_.d.mts +0 -1
  791. package/dist/index-JuxZj_Qp2.d.mts +0 -1
  792. package/dist/index-LhFpnU-f.d.mts +0 -1
  793. package/dist/index-N-OgGgfF.d.mts +0 -1
  794. package/dist/index-NKYLt_R9.d.mts +0 -1
  795. package/dist/index-VWno75SQ.d.mts +0 -1
  796. package/dist/index-_tQRydn9.d.cts +0 -75
  797. package/dist/index-_wQ5ClJU.d.cts +0 -1
  798. package/dist/index-c55Utzva.d.mts +0 -1
  799. package/dist/index-gpCH5158.d.mts +0 -1
  800. package/dist/index-lQ_hGQ08.d.cts +0 -1
  801. package/dist/index-luywJTzJ.d.mts +0 -1
  802. package/dist/index-zO0Ly4bS.d.cts +0 -1
  803. package/dist/index.cjs +0 -0
  804. package/dist/index.d.cts +0 -2
  805. package/dist/index2.d.cts +0 -2
  806. package/dist/index3.d.cts +0 -1
  807. package/dist/input-DrG6mA0V.d.mts +0 -17
  808. package/dist/inputFields.d.cts +0 -83
  809. package/dist/intersperse-Gxwgpbk8.cjs +0 -26
  810. package/dist/intersperse-yd3oMrQl.mjs.map +0 -1
  811. package/dist/lib/ConfigContext.cjs +0 -15
  812. package/dist/lib/ConfigContext.cjs.map +0 -1
  813. package/dist/lib/ConfigContext.d.cts +0 -16
  814. package/dist/lib/GlobalStyles.cjs +0 -57
  815. package/dist/lib/GlobalStyles.cjs.map +0 -1
  816. package/dist/lib/GlobalStyles.d.cts +0 -8
  817. package/dist/lib/HeadlessAriaButton.cjs +0 -33
  818. package/dist/lib/HeadlessAriaButton.cjs.map +0 -1
  819. package/dist/lib/HeadlessAriaButton.d.cts +0 -12
  820. package/dist/lib/MiddleTruncatedText.cjs +0 -7
  821. package/dist/lib/MiddleTruncatedText.d.cts +0 -14
  822. package/dist/lib/PDSProvider.cjs +0 -13
  823. package/dist/lib/PDSProvider.cjs.map +0 -1
  824. package/dist/lib/PDSProvider.d.cts +0 -10
  825. package/dist/lib/TruncatedText.cjs +0 -39
  826. package/dist/lib/TruncatedText.cjs.map +0 -1
  827. package/dist/lib/TruncatedText.d.cts +0 -2
  828. package/dist/lib/TruncatedTextWithTooltip.cjs +0 -34
  829. package/dist/lib/TruncatedTextWithTooltip.cjs.map +0 -1
  830. package/dist/lib/TruncatedTextWithTooltip.d.cts +0 -15
  831. package/dist/lib/comboboxHelper.cjs +0 -46
  832. package/dist/lib/comboboxHelper.cjs.map +0 -1
  833. package/dist/lib/comboboxHelper.d.cts +0 -24
  834. package/dist/lib/copyTextToClipboard.cjs +0 -33
  835. package/dist/lib/copyTextToClipboard.cjs.map +0 -1
  836. package/dist/lib/copyTextToClipboard.d.cts +0 -4
  837. package/dist/lib/datePickerHelper.cjs +0 -36
  838. package/dist/lib/datePickerHelper.cjs.map +0 -1
  839. package/dist/lib/datePickerHelper.d.cts +0 -19
  840. package/dist/lib/message.cjs +0 -12
  841. package/dist/lib/message.cjs.map +0 -1
  842. package/dist/lib/message.d.cts +0 -2
  843. package/dist/lib/pseudoClass.cjs +0 -31
  844. package/dist/lib/pseudoClass.cjs.map +0 -1
  845. package/dist/lib/pseudoClass.d.cts +0 -45
  846. package/dist/lib/reorderItems.cjs +0 -38
  847. package/dist/lib/reorderItems.cjs.map +0 -1
  848. package/dist/lib/reorderItems.d.cts +0 -26
  849. package/dist/lib/selectHelper.cjs +0 -22
  850. package/dist/lib/selectHelper.cjs.map +0 -1
  851. package/dist/lib/selectHelper.d.cts +0 -14
  852. package/dist/lib/useControlled.cjs +0 -20
  853. package/dist/lib/useControlled.cjs.map +0 -1
  854. package/dist/lib/useControlled.d.cts +0 -16
  855. package/dist/lib/useIsOverflow.cjs +0 -58
  856. package/dist/lib/useIsOverflow.cjs.map +0 -1
  857. package/dist/lib/useIsOverflow.d.cts +0 -11
  858. package/dist/lib/useOutsideClick.cjs +0 -19
  859. package/dist/lib/useOutsideClick.cjs.map +0 -1
  860. package/dist/lib/useOutsideClick.d.cts +0 -13
  861. package/dist/lib/useScrollOverflow.cjs +0 -61
  862. package/dist/lib/useScrollOverflow.cjs.map +0 -1
  863. package/dist/lib/useScrollOverflow.d.cts +0 -36
  864. package/dist/lib/zindex.cjs +0 -26
  865. package/dist/lib/zindex.cjs.map +0 -1
  866. package/dist/lib/zindex.d.cts +0 -25
  867. package/dist/message-C2286H-r.d.cts +0 -9
  868. package/dist/mixins/focus.cjs +0 -39
  869. package/dist/mixins/focus.cjs.map +0 -1
  870. package/dist/mixins/focus.d.cts +0 -11
  871. package/dist/mixins/hoverable.cjs +0 -38
  872. package/dist/mixins/hoverable.cjs.map +0 -1
  873. package/dist/mixins/hoverable.d.cts +0 -16
  874. package/dist/mixins/input.cjs +0 -95
  875. package/dist/mixins/input.cjs.map +0 -1
  876. package/dist/mixins/input.d.cts +0 -2
  877. package/dist/mixins/menuItem.cjs +0 -110
  878. package/dist/mixins/menuItem.cjs.map +0 -1
  879. package/dist/mixins/menuItem.d.cts +0 -30
  880. package/dist/mixins/print/index.cjs +0 -25
  881. package/dist/mixins/print/index.cjs.map +0 -1
  882. package/dist/mixins/print/index.d.cts +0 -11
  883. package/dist/mixins/text.cjs +0 -93
  884. package/dist/mixins/text.cjs.map +0 -1
  885. package/dist/mixins/text.d.cts +0 -2
  886. package/dist/text-PmH5oc61.d.cts +0 -14
  887. package/dist/theme-Cadb1xzQ.d.cts +0 -154
  888. package/dist/theme.cjs +0 -353
  889. package/dist/theme.cjs.map +0 -1
  890. package/dist/theme.d.cts +0 -2
  891. package/dist/types-C_AUGurs.d.cts +0 -25
  892. package/dist/types-DTak9UTv.d.mts +0 -10
  893. package/dist/types.d.cts +0 -2
  894. package/dist/types2.d.cts +0 -2
  895. package/dist/useFormField-B98dmreO.cjs +0 -37
  896. package/dist/useFormField-B98dmreO.cjs.map +0 -1
  897. package/dist/useFormField-CaIdE7JQ.d.cts +0 -30
  898. package/dist/useFormField.d.cts +0 -2
  899. package/dist/useFormGroup-BE7v9eAj.cjs +0 -26
  900. package/dist/useFormGroup-BE7v9eAj.cjs.map +0 -1
  901. package/dist/useFormGroup.d.cts +0 -18
  902. package/dist/useTableBoxDragAndDrop-BTtv9PEt.d.mts +0 -69
  903. package/dist/useTableBoxDragAndDrop.d.cts +0 -2
  904. package/dist/useTableColumns.d.cts +0 -72
  905. package/dist/useToggle-CSkZWXtQ.cjs +0 -27
  906. package/dist/useToggle-CSkZWXtQ.cjs.map +0 -1
  907. package/dist/utilities-SMbDe8oK.d.mts +0 -9
  908. package/dist/utilities.d.cts +0 -2
  909. package/dist/utils/storybook.cjs +0 -12
  910. package/dist/utils/storybook.cjs.map +0 -1
  911. package/dist/utils/testing.cjs +0 -50
  912. package/dist/utils/testing.cjs.map +0 -1
  913. package/dist/utils/testing.d.cts +0 -18
  914. package/dist/variables/color.cjs +0 -22
  915. package/dist/variables/color.cjs.map +0 -1
  916. package/dist/variables/color.d.cts +0 -19
  917. package/dist/variables/effect.cjs +0 -27
  918. package/dist/variables/effect.cjs.map +0 -1
  919. package/dist/variables/effect.d.cts +0 -21
  920. package/dist/variables/keyframes.cjs +0 -22
  921. package/dist/variables/keyframes.cjs.map +0 -1
  922. package/dist/variables/keyframes.d.cts +0 -8
  923. package/dist/variables/spacing.cjs +0 -10
  924. package/dist/variables/spacing.cjs.map +0 -1
  925. package/dist/variables/spacing.d.cts +0 -8
  926. package/dist/variables/text.cjs +0 -13
  927. package/dist/variables/text.cjs.map +0 -1
  928. package/dist/variables/text.d.cts +0 -10
  929. package/dist/variables/transitions.cjs +0 -24
  930. package/dist/variables/transitions.cjs.map +0 -1
  931. package/dist/variables/transitions.d.cts +0 -19
  932. /package/dist/{index-8SLBz2NH.d.mts → index--p6oQT9I.d.mts} +0 -0
  933. /package/dist/{index-B2KLYYkM.d.cts → index-BYd3Btr1.d.mts} +0 -0
  934. /package/dist/{index-B5cbLMbC2.d.cts → index-CDGG7lCB.d.mts} +0 -0
  935. /package/dist/{index-BCsiC0tv.d.cts → index-CKKoxA9V.d.mts} +0 -0
  936. /package/dist/{index-BPSCxsMC.d.cts → index-CMuRFTR3.d.mts} +0 -0
  937. /package/dist/{index-BPiqSRRl.d.mts → index-CNxS4Tlu.d.mts} +0 -0
  938. /package/dist/{index-BR1oNnaF.d.cts → index-CWB6exYm.d.mts} +0 -0
  939. /package/dist/{index-BSVhZrWN.d.mts → index-CzItj62a.d.mts} +0 -0
  940. /package/dist/{index-BTImeehL2.d.mts → index-D4DUvwPf.d.mts} +0 -0
  941. /package/dist/{index-C0NRIDsj2.d.cts → index-DGsJdI5l.d.mts} +0 -0
  942. /package/dist/{index-C3kE54DD.d.mts → index-DM6vVDZD.d.mts} +0 -0
  943. /package/dist/{index-C6yvNuzO.d.cts → index-DWfPppPU.d.mts} +0 -0
  944. /package/dist/{index-C8k_zgEm.d.cts → index-DXJd7-2Z.d.mts} +0 -0
  945. /package/dist/{index-CEqOS-7M.d.mts → index-DkrC-i1D.d.mts} +0 -0
  946. /package/dist/{index-CROz1VSV.d.mts → index-DvuJXuAN.d.mts} +0 -0
  947. /package/dist/{index-CWt1yJ75.d.cts → index-Iujpc9_6.d.mts} +0 -0
  948. /package/dist/{index-CmCelmEL.d.cts → index-PWQavSPf.d.mts} +0 -0
  949. /package/dist/{index-CmUzJ4E-2.d.cts → index-e6k85DKM.d.mts} +0 -0
  950. /package/dist/{index-CsuikFeJ.d.mts → index-lIMqGGJz.d.mts} +0 -0
  951. /package/dist/{index-CtCMUyZA.d.cts → index-sViox9YW.d.mts} +0 -0
  952. /package/dist/{index-Cz6N-KeS.d.cts → index6.d.mts} +0 -0
@@ -1,1693 +0,0 @@
1
- const require_chunk = require("./chunk-CKQMccvm.cjs");
2
- const require_mixins_focus = require("./mixins/focus.cjs");
3
- const require_Text = require("./Text-CzN0DOXV.cjs");
4
- const require_lib_useOutsideClick = require("./lib/useOutsideClick.cjs");
5
- const require_lib_zindex = require("./lib/zindex.cjs");
6
- const require_Stack = require("./Stack-BF-9YjA1.cjs");
7
- const require_IconButton = require("./IconButton-DNy7g5zh.cjs");
8
- const require_Sticker = require("./Sticker-D0jIU2Dt.cjs");
9
- const require_useFormField = require("./useFormField-B98dmreO.cjs");
10
- const require_Input = require("./Input-BDLUq-pK.cjs");
11
- const require_components_Input_index = require("./components/Input/index.cjs");
12
- const require_Menu = require("./Menu-BXic-30n.cjs");
13
- const require_Checkbox = require("./Checkbox-DhxpxzGp.cjs");
14
- const require_Spinner = require("./Spinner-B6bx70yR.cjs");
15
- let _persona_design_tokens = require("@persona/design-tokens");
16
- let styled_components = require("styled-components");
17
- styled_components = require_chunk.__toESM(styled_components);
18
- let react = require("react");
19
- let react_jsx_runtime = require("react/jsx-runtime");
20
- let _persona_icons = require("@persona/icons");
21
- let fuse_js = require("fuse.js");
22
- fuse_js = require_chunk.__toESM(fuse_js);
23
- let react_dom = require("react-dom");
24
- let _tanstack_react_virtual = require("@tanstack/react-virtual");
25
- let downshift = require("downshift");
26
- //#region components/Combobox/ComboboxBase.tsx
27
- function isOptionGroup(item) {
28
- return "options" in item && Array.isArray(item.options);
29
- }
30
- /**
31
- * Flatten the visible leaves at the current navigation level. Inline
32
- * (non-nested) groups are walked through transparently — their leaves
33
- * surface at this level. Nested groups are skipped along with their
34
- * contents — those leaves live behind a navigation step in single-
35
- * select. Multi-select doesn't reach this code with nested groups
36
- * intact (it inlines them at the component boundary), so the skip
37
- * here is the single-select-only contract.
38
- */
39
- function flattenOptions(items) {
40
- const out = [];
41
- for (const item of items) if (isOptionGroup(item)) {
42
- if (!item.nested) out.push(...flattenOptions(item.options));
43
- } else out.push(item);
44
- return out;
45
- }
46
- /**
47
- * Recurse through the entire option tree looking for any nested
48
- * group. Used to gate nested-mode behavior so trees that don't opt
49
- * in (the overwhelmingly common case) skip the extra book-keeping
50
- * entirely. Single-select uses this to switch between its nested-nav
51
- * render path and the legacy renderer; multi-select uses it to
52
- * short-circuit its `nested → inline` transform when there's nothing
53
- * to convert.
54
- */
55
- function containsNestedGroup(items) {
56
- for (const item of items) if (isOptionGroup(item)) {
57
- if (item.nested) return true;
58
- if (containsNestedGroup(item.options)) return true;
59
- }
60
- return false;
61
- }
62
- /**
63
- * Find a nested-group child of `items` whose `label` matches `label`.
64
- * Walks transparently through inline (non-nested) groups at the same
65
- * level — they don't add a navigation step, so a nested submenu
66
- * declared inside an inline section header is still "at this level"
67
- * for descent purposes. Returns `null` if no match.
68
- */
69
- function findNestedGroupByLabel(items, label) {
70
- for (const item of items) {
71
- if (!isOptionGroup(item)) continue;
72
- if (item.nested) {
73
- if (item.label === label) return item;
74
- } else {
75
- const found = findNestedGroupByLabel(item.options, label);
76
- if (found) return found;
77
- }
78
- }
79
- return null;
80
- }
81
- /**
82
- * Walk the option tree by following `path` step-by-step. Each entry
83
- * in `path` is the `label` of a nested group at that level; we
84
- * descend into its `options` at each step. Returns the items visible
85
- * at the resolved level (a mix of leaves, inline groups, and further
86
- * nested groups).
87
- *
88
- * - Empty `path` returns the original top-level items unchanged.
89
- * - If any step doesn't resolve to a known nested group (e.g. stale
90
- * state after the registry changes), returns an empty list so the
91
- * consumer can fall back to the root view.
92
- */
93
- function getOptionsAtPath(options, path) {
94
- let scope = options;
95
- for (const label of path) {
96
- const found = findNestedGroupByLabel(scope, label);
97
- if (!found) return [];
98
- scope = found.options;
99
- }
100
- return scope;
101
- }
102
- /**
103
- * Recursively walk the tree and return every leaf option, each paired
104
- * with the labels of its nested-group ancestors. Used by single-select
105
- * Combobox to populate the search-results view: the search query
106
- * bypasses the active navigation path and matches against every leaf
107
- * in the tree, with the breadcrumb surfacing parent context in each
108
- * hit.
109
- *
110
- * Inline (non-nested) groups are walked through transparently — their
111
- * `label` isn't a breadcrumb crumb because they don't correspond to a
112
- * navigation step. Only nested groups contribute a crumb.
113
- */
114
- function flattenLeafOptions(options, breadcrumb = []) {
115
- const result = [];
116
- for (const item of options) if (isOptionGroup(item)) {
117
- const nextBreadcrumb = item.nested ? [...breadcrumb, item.label] : breadcrumb;
118
- result.push(...flattenLeafOptions(item.options, nextBreadcrumb));
119
- } else result.push({
120
- option: item,
121
- breadcrumb
122
- });
123
- return result;
124
- }
125
- /**
126
- * Build the flat list of navigable items at the current navigation
127
- * level, in document order. Inline (non-nested) groups are walked
128
- * through transparently; their leaves and any nested subgroups
129
- * contribute at this level. Nested groups become a `kind: 'group'`
130
- * entry that the renderer turns into a navigation row.
131
- */
132
- function getNavigableItemsAtLevel(items) {
133
- const out = [];
134
- for (const item of items) if (isOptionGroup(item)) if (item.nested) out.push({
135
- kind: "group",
136
- group: item
137
- });
138
- else out.push(...getNavigableItemsAtLevel(item.options));
139
- else out.push({
140
- kind: "leaf",
141
- option: item
142
- });
143
- return out;
144
- }
145
- /**
146
- * A hook which provides the caller with dynamically filtered options
147
- *
148
- * @param options - The options to filter (can be flat or grouped)
149
- * @param inputValue - The input value to filter the options by
150
- * @returns The subset of the options that match the input value according to the fuse.js library
151
- */
152
- function useFilteredOptions(options, inputValue) {
153
- return (0, react.useMemo)(() => {
154
- const flatOptions = flattenOptions(options);
155
- const fuse = new fuse_js.default(flatOptions, {
156
- shouldSort: false,
157
- threshold: 0,
158
- ignoreLocation: true,
159
- minMatchCharLength: 1,
160
- keys: ["label", "description"]
161
- });
162
- return inputValue === "" ? flatOptions : Array.from(new Set(fuse.search(inputValue).map(({ item }) => item)).values());
163
- }, [options, inputValue]);
164
- }
165
- function buildVirtualRows(options, filteredOptions, indexRealToIndexVirtual) {
166
- const rows = [];
167
- let idx = 0;
168
- for (const item of options) if (isOptionGroup(item)) {
169
- if (item.nested) continue;
170
- const visibleLeaves = flattenOptions(item.options).filter((opt) => filteredOptions.some((f) => f.value === opt.value));
171
- if (visibleLeaves.length > 0) {
172
- rows.push({
173
- kind: "group-header",
174
- label: item.label
175
- });
176
- for (const opt of visibleLeaves) {
177
- indexRealToIndexVirtual.set(idx, rows.length);
178
- rows.push({
179
- kind: "option",
180
- option: opt,
181
- index: idx++
182
- });
183
- }
184
- }
185
- } else if (filteredOptions.some((f) => f.value === item.value)) {
186
- indexRealToIndexVirtual.set(idx, rows.length);
187
- rows.push({
188
- kind: "option",
189
- option: item,
190
- index: idx++
191
- });
192
- }
193
- return rows;
194
- }
195
- /**
196
- * Renders options with support for groups, handling filtering and proper indexing
197
- *
198
- * @param params - Object containing options, filteredOptions, and renderOption
199
- * @param params.options - The original options array (can include groups)
200
- * @param params.filteredOptions - The flat filtered options to display
201
- * @param params.virtualizer - Optional virtualizer for large lists
202
- * @param params.virtualRows - Pre-built flat rows list (required when virtualizer is provided)
203
- * @param params.renderOption - Callback to render each individual option with its flat index
204
- * @returns React nodes with properly grouped and filtered options
205
- */
206
- function renderOptionsWithGroups({ options, filteredOptions, renderOption, virtualizer, virtualRows }) {
207
- if (virtualizer && virtualRows) {
208
- const rows = virtualRows;
209
- const vItems = virtualizer.getVirtualItems();
210
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
211
- style: {
212
- height: `${virtualizer.getTotalSize()}px`,
213
- width: "100%",
214
- position: "relative"
215
- },
216
- children: vItems.map((vItem) => {
217
- const row = rows[vItem.index];
218
- if (!row) return null;
219
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
220
- "data-index": vItem.index,
221
- ref: virtualizer.measureElement,
222
- style: {
223
- position: "absolute",
224
- top: 0,
225
- left: 0,
226
- width: "100%",
227
- transform: `translateY(${vItem.start}px)`
228
- },
229
- children: row.kind === "group-header" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu.MenuHeading, {
230
- as: "div",
231
- children: row.label
232
- }) : renderOption(row.option, row.index)
233
- }, String(vItem.key));
234
- })
235
- });
236
- }
237
- let flatIndex = -1;
238
- return options.map((item, groupIndex) => {
239
- if (isOptionGroup(item)) {
240
- if (item.nested) return null;
241
- const visibleLeaves = flattenOptions(item.options).filter((opt) => filteredOptions.some((filtered) => filtered.value === opt.value));
242
- if (visibleLeaves.length === 0) return null;
243
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu.MenuHeading, { children: item.label }), visibleLeaves.map((option) => {
244
- flatIndex++;
245
- return renderOption(option, flatIndex);
246
- })] }, `group-${groupIndex}`);
247
- } else {
248
- if (!filteredOptions.some((filtered) => filtered.value === item.value)) return null;
249
- flatIndex++;
250
- return renderOption(item, flatIndex);
251
- }
252
- });
253
- }
254
- const MAX_DROPDOWN_HEIGHT = "300px";
255
- const Container = styled_components.default.div`
256
- display: flex;
257
- position: relative;
258
- width: 100%;
259
- `;
260
- const InputContainer = styled_components.default.div`
261
- position: relative;
262
- width: 100%;
263
- `;
264
- const ComboboxInput = (0, styled_components.default)(require_components_Input_index.default)`
265
- padding-right: ${({ size }) => size === "sm" ? _persona_design_tokens.Spacing[5] : _persona_design_tokens.Spacing[6]}; /* Space for caret icon */
266
-
267
- ${({ $isOpen }) => $isOpen && styled_components.css`
268
- ${require_mixins_focus.focusStyle}
269
- `}
270
-
271
- /* Apply custom font family from selected item when dropdown is closed */
272
- ${({ $selectedItemStyle, $isOpen }) => !$isOpen && $selectedItemStyle?.fontFamily && styled_components.css`
273
- && {
274
- font-family: ${$selectedItemStyle.fontFamily};
275
- }
276
- `}
277
- `;
278
- const CaretButton = (0, styled_components.default)(require_IconButton.Button).attrs({ width: "icon" })`
279
- background-color: transparent;
280
- border: none;
281
- color: ${_persona_design_tokens.Color.BorderIconPrimary};
282
-
283
- &:hover:not(:disabled),
284
- &:active:not(:disabled) {
285
- color: ${_persona_design_tokens.Color.BorderIconPrimary};
286
- background-color: transparent;
287
- border: none;
288
- }
289
-
290
- &:disabled {
291
- color: ${_persona_design_tokens.Color.BorderIconDisabled};
292
- background-color: transparent;
293
- border: none;
294
- }
295
-
296
- position: absolute;
297
- right: 0;
298
- top: 0;
299
- `;
300
- const DropdownContainer = (0, styled_components.default)(require_Menu.FloatingCard)`
301
- ${({ $portal, $embedded, $top, $left, $width }) => $embedded ? styled_components.css`
302
- position: static;
303
- width: 100%;
304
- min-width: 0;
305
- border: 0;
306
- border-radius: 0;
307
- box-shadow: none;
308
- background: transparent;
309
- margin: 0;
310
- ` : $portal ? styled_components.css`
311
- position: fixed;
312
- top: ${$top != null ? `${$top}px` : "0"};
313
- left: ${$left != null ? `${$left}px` : "0"};
314
- width: ${$width != null ? `${$width}px` : "auto"};
315
- ` : styled_components.css`
316
- position: absolute;
317
- top: calc(100% + ${_persona_design_tokens.Spacing[2]});
318
- left: 0;
319
- right: 0;
320
- width: 100%;
321
- `}
322
-
323
- ${({ $minWidth }) => $minWidth && styled_components.css`
324
- min-width: ${$minWidth};
325
- `}
326
-
327
- display: flex;
328
- flex-direction: column;
329
- ${({ $embedded }) => $embedded && styled_components.css`
330
- gap: ${_persona_design_tokens.Spacing[2]};
331
- `}
332
- overflow: ${({ $embedded }) => $embedded ? "visible" : "hidden"}; /* Prevent floating menu overflow while preserving embedded focus rings */
333
- box-sizing: border-box;
334
- z-index: ${require_lib_zindex.Z_INDICES.modalDropdown}; /* Ensure portal dropdown appears above other content */
335
-
336
- ${({ $isOpen }) => !$isOpen && styled_components.css`
337
- display: none;
338
- `}
339
- `;
340
- const ScrollableMenuList = (0, styled_components.default)(require_Menu.MenuList)`
341
- max-height: ${MAX_DROPDOWN_HEIGHT};
342
- overflow-y: auto;
343
- overflow-x: hidden; /* Prevent horizontal scrolling */
344
- width: 100%; /* Ensure full width is used */
345
- box-sizing: border-box;
346
- `;
347
- const SearchInputContainer = styled_components.default.div`
348
- flex-shrink: 0;
349
- ${({ $embedded }) => $embedded ? styled_components.css`
350
- padding: 0;
351
- ` : styled_components.css`
352
- padding: ${_persona_design_tokens.Spacing[1]} ${_persona_design_tokens.Spacing[2]};
353
- border-bottom: 1px solid ${({ theme }) => theme.color.border.primary};
354
- `}
355
- `;
356
- const SearchInput = (0, styled_components.default)(require_components_Input_index.default)`
357
- ${({ $embedded }) => !$embedded && styled_components.css`
358
- /* Borderless strip inside floating menus */
359
- border: none;
360
- padding-top: ${_persona_design_tokens.Spacing[1]};
361
- padding-bottom: ${_persona_design_tokens.Spacing[1]};
362
-
363
- &:focus {
364
- outline: none !important;
365
- }
366
- `}
367
- `;
368
- const EmptyState = (0, styled_components.default)(require_Text.Paragraph).attrs(({ size }) => ({ size }))`
369
- padding: 0 ${({ size }) => size === "sm" ? _persona_design_tokens.Spacing[1] : _persona_design_tokens.Spacing[2]};
370
- color: ${({ theme }) => theme.color.text.tertiary};
371
- ${({ theme }) => theme.text.paragraph.md};
372
- `;
373
- const LoadingContainer = styled_components.default.div`
374
- display: flex;
375
- align-items: center;
376
- justify-content: center;
377
- min-height: 136px;
378
- padding: ${_persona_design_tokens.Spacing[3]};
379
- `;
380
- const OptionLabel = styled_components.default.div`
381
- overflow: hidden;
382
- text-overflow: ellipsis;
383
- white-space: nowrap;
384
- min-width: 0; /* Allow flex item to shrink below content size */
385
-
386
- /* Apply custom font family if provided */
387
- ${({ $labelStyle }) => $labelStyle?.fontFamily && styled_components.css`
388
- font-family: ${$labelStyle.fontFamily};
389
- `}
390
- `;
391
- const Description = styled_components.default.p`
392
- ${_persona_design_tokens.Typography.TextSmall};
393
- color: ${_persona_design_tokens.Color.TextSecondary};
394
- margin: 0;
395
-
396
- /* Multi-line truncation with 3-line limit */
397
- overflow: hidden;
398
- display: -webkit-box;
399
- -webkit-line-clamp: 3;
400
- -webkit-box-orient: vertical;
401
-
402
- /* Fallback for browsers that don't support -webkit-line-clamp */
403
- max-height: calc(${_persona_design_tokens.Typography.TextSmall.lineHeight} * 3); /* line-height * 3 lines */
404
- `;
405
- function useDropdownPosition(portalContainerRef, isOpen, portal) {
406
- const [position, setPosition] = (0, react.useState)({
407
- top: 0,
408
- left: 0,
409
- width: 0
410
- });
411
- (0, react.useEffect)(() => {
412
- if (!portal || !isOpen || !portalContainerRef.current) return;
413
- const updatePosition = () => {
414
- const rect = portalContainerRef.current.getBoundingClientRect();
415
- const spacing = parseInt(_persona_design_tokens.Spacing[2]);
416
- setPosition({
417
- top: rect.bottom + spacing,
418
- left: rect.left,
419
- width: rect.width
420
- });
421
- };
422
- updatePosition();
423
- window.addEventListener("scroll", updatePosition, true);
424
- window.addEventListener("resize", updatePosition);
425
- return () => {
426
- window.removeEventListener("scroll", updatePosition, true);
427
- window.removeEventListener("resize", updatePosition);
428
- };
429
- }, [
430
- portalContainerRef,
431
- isOpen,
432
- portal
433
- ]);
434
- return position;
435
- }
436
- function DropdownPortalWrapper({ children, portal }) {
437
- const portalRoot = (0, react.useRef)(null);
438
- (0, react.useEffect)(() => {
439
- if (portal) portalRoot.current = document.body;
440
- }, [portal]);
441
- if (portal && portalRoot.current) return (0, react_dom.createPortal)(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
442
- id: "combobox-dropdown-portal-wrapper",
443
- "data-react-aria-top-layer": "true",
444
- children
445
- }), portalRoot.current);
446
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children });
447
- }
448
- //#endregion
449
- //#region components/Combobox/useTruncation.ts
450
- /**
451
- * Custom hook for calculating truncation when multi-select items are restricted to a single line using actual DOM measurements
452
- * Ensures at least one item is always visible
453
- */
454
- function useTruncation(selectedItems, stickerRefs, truncatorRef, containerRef, truncate) {
455
- const [visibleCount, setVisibleCount] = (0, react.useState)(selectedItems.length);
456
- (0, react.useEffect)(() => {
457
- if (!truncate || selectedItems.length === 0 || !containerRef.current) {
458
- setVisibleCount(selectedItems.length);
459
- return;
460
- }
461
- const calculateVisibleCount = () => {
462
- const container = containerRef.current;
463
- if (!container) return;
464
- if (!(selectedItems.every((_, i) => stickerRefs.current[i] != null) && truncatorRef.current != null)) return;
465
- const computedStyle = window.getComputedStyle(container);
466
- const paddingLeft = parseFloat(computedStyle.paddingLeft) || 0;
467
- const paddingRight = parseFloat(computedStyle.paddingRight) || 0;
468
- const availableWidth = container.offsetWidth - paddingLeft - paddingRight;
469
- const gap = 4;
470
- const truncatorWidth = truncatorRef.current.offsetWidth;
471
- let count = 1;
472
- let totalWidth = stickerRefs.current[0].offsetWidth;
473
- for (let i = 1; i < selectedItems.length; i++) {
474
- const itemWidth = stickerRefs.current[i].offsetWidth;
475
- const wouldBeLastItem = i === selectedItems.length - 1;
476
- const widthWithItem = totalWidth + gap + itemWidth;
477
- if (widthWithItem + (wouldBeLastItem ? 0 : gap + truncatorWidth) <= availableWidth) {
478
- totalWidth = widthWithItem;
479
- count++;
480
- } else break;
481
- }
482
- setVisibleCount((prev) => prev === count ? prev : count);
483
- };
484
- const resizeObserver = new ResizeObserver(calculateVisibleCount);
485
- resizeObserver.observe(containerRef.current);
486
- return () => {
487
- resizeObserver.disconnect();
488
- };
489
- }, [
490
- selectedItems,
491
- stickerRefs,
492
- truncatorRef,
493
- containerRef,
494
- truncate
495
- ]);
496
- return visibleCount;
497
- }
498
- //#endregion
499
- //#region components/Combobox/ComboboxMultiSelect.tsx
500
- const SELECT_ALL_VALUE = "__SELECT_ALL__";
501
- const EXTERNAL_TRIGGER_DROPDOWN_MIN_WIDTH$1 = "240px";
502
- /**
503
- * Recursively drop the `nested: true` flag from every group in the
504
- * tree, converting nested-navigation groups into inline section-
505
- * header groups. Multi-select doesn't implement the nested-nav UX
506
- * (chevron rows, Back row, descent), so this graceful-degradation
507
- * transform keeps every leaf reachable as a checkable option under
508
- * its parent's section header — instead of having `flattenOptions` /
509
- * `renderOptionsWithGroups` silently drop them along with their
510
- * descendants. Single-select Combobox is unaffected; it owns its own
511
- * nested-nav render path.
512
- *
513
- * For a multi-level tree (`{nested, options: [{nested, options}]}`),
514
- * the inner inline group is walked through by `flattenOptions` so
515
- * its leaves surface under the outer header — the inner label is
516
- * lost, but all leaves stay reachable. Acceptable for the
517
- * graceful-degradation goal; nested-nav can be added later without
518
- * changing this API.
519
- */
520
- function inlineNestedGroups(items) {
521
- return items.map((item) => {
522
- if (!isOptionGroup(item)) return item;
523
- return {
524
- label: item.label,
525
- options: inlineNestedGroups(item.options)
526
- };
527
- });
528
- }
529
- const MultiSelectComboboxInput = (0, styled_components.default)(ComboboxInput)`
530
- position: absolute;
531
- inset: 0;
532
- height: auto;
533
- caret-color: transparent; /* Hide cursor in multi-select mode because we use stickers and focus into the search input */
534
- `;
535
- const MultiSelectScrollableMenuList = (0, styled_components.default)(ScrollableMenuList)`
536
- max-height: calc(${MAX_DROPDOWN_HEIGHT} - 60px); /* Subtract approximate search bar height */
537
- overflow-x: hidden; /* Prevent horizontal scrolling */
538
- width: 100%; /* Ensure full width is used */
539
- box-sizing: border-box;
540
- ${({ $embedded }) => $embedded && styled_components.css`
541
- padding: 0;
542
- `}
543
- `;
544
- const SelectedItemsContainer = styled_components.default.div`
545
- position: relative; /* Establish positioning context */
546
- box-sizing: border-box;
547
- min-height: ${({ $size }) => $size === "sm" ? _persona_design_tokens.Spacing[5] : _persona_design_tokens.Spacing[6]};
548
- max-height: ${({ $truncate, $size }) => $truncate ? $size === "sm" ? _persona_design_tokens.Spacing[5] : _persona_design_tokens.Spacing[6] : "none"};
549
- padding-left: ${_persona_design_tokens.Spacing[2]};
550
- padding-right: ${({ $size }) => $size === "sm" ? _persona_design_tokens.Spacing[5] : _persona_design_tokens.Spacing[6]}; /* Leave space for caret button. */
551
- padding-top: ${({ $size }) => $size === "sm" ? _persona_design_tokens.Spacing[1] : _persona_design_tokens.Spacing[2]};
552
- padding-bottom: ${({ $size }) => $size === "sm" ? _persona_design_tokens.Spacing[1] : _persona_design_tokens.Spacing[2]};
553
- display: flex;
554
- flex-wrap: ${({ $truncate }) => $truncate ? "nowrap" : "wrap"};
555
- gap: ${_persona_design_tokens.Spacing[1]};
556
- align-items: flex-start;
557
- align-content: flex-start;
558
- pointer-events: none; /* Allow clicks to pass through to underlying input */
559
- overflow: hidden; /* Required for truncation when truncate mode is enabled */
560
-
561
- /* Re-enable pointer events on stickers' dismiss buttons */
562
- button {
563
- pointer-events: auto;
564
- }
565
- `;
566
- const TruncatedItemsWrapper = styled_components.default.div`
567
- display: flex;
568
- flex-wrap: nowrap;
569
- gap: ${_persona_design_tokens.Spacing[1]};
570
- overflow: hidden;
571
- flex: 1;
572
- min-width: 0; /* Allow shrinking below content size */
573
- pointer-events: none;
574
- `;
575
- const TruncatedSticker = (0, styled_components.default)(require_Sticker.Sticker)`
576
- /* Allow first sticker to truncate its text only when it's the only item */
577
- flex-shrink: ${({ $isOnlyItem }) => $isOnlyItem ? 1 : 0};
578
- min-width: 0;
579
- max-width: 100%;
580
- /* If the sticker is an inline element it was causing the parent to gain an extra pixel of height */
581
- vertical-align: top;
582
- `;
583
- const TruncatorSticker = (0, styled_components.default)(require_Sticker.Sticker)`
584
- /* Truncator should never shrink */
585
- flex-shrink: 0;
586
- /* If the sticker is an inline element it was causing the parent to gain an extra pixel of height */
587
- vertical-align: top;
588
- `;
589
- const HiddenMeasurementContainer = styled_components.default.div`
590
- position: absolute;
591
- top: 0;
592
- left: 0;
593
- visibility: hidden;
594
- display: flex;
595
- flex-wrap: nowrap;
596
- gap: ${_persona_design_tokens.Spacing[1]};
597
- pointer-events: none;
598
- overflow: hidden;
599
- max-width: 100%;
600
- `;
601
- const StyledMenuItem$1 = (0, styled_components.default)(require_Menu.MenuItem)`
602
- /* These heights should add up to 24 and 32 respectively and the content is 20 already */
603
- padding: ${({ $size }) => $size === "sm" ? `2px ${_persona_design_tokens.Spacing[2]}` : `6px ${_persona_design_tokens.Spacing[2]}`};
604
- display: flex;
605
- flex-direction: column;
606
- align-items: flex-start;
607
- gap: ${_persona_design_tokens.Spacing[1]};
608
- min-width: 0; /* Allow content to shrink below natural size */
609
- width: 100%; /* Ensure full width of dropdown */
610
- box-sizing: border-box;
611
-
612
- /* Force all children to respect the container width */
613
- > * {
614
- width: 100%;
615
- min-width: 0;
616
- box-sizing: border-box;
617
- }
618
- `;
619
- const CheckboxLabel = styled_components.default.span`
620
- color: ${_persona_design_tokens.Color.TextPrimary};
621
- ${({ $size }) => $size === "sm" ? _persona_design_tokens.Typography.TextSmall : _persona_design_tokens.Typography.TextMedium};
622
- display: flex;
623
- flex-direction: column;
624
- gap: ${_persona_design_tokens.Spacing[1]};
625
- min-width: 0; /* Allow content to shrink below natural size */
626
-
627
- /** Nudge text for visual alignment */
628
- position: relative;
629
- bottom: -1px;
630
- `;
631
- function ComboboxMultiSelectComponent({ size = "md", options: rawOptions, isOptionsLoading, values = [], onValuesChange, searchPlaceholder = "Search...", onInputChange, placeholder = "Select an option...", emptyStateMessage = "No options found", disabled = false, hasWarning, hasError, id, labelId, "aria-label": ariaLabel, onOpenChange, truncate = false, selectAll = false, stableOptionOrder = false, portal = false, portalContainerRef: externalPortalContainerRef, trigger, embedded = false, virtualize = false, ...props }, ref) {
632
- const options = (0, react.useMemo)(() => containsNestedGroup(rawOptions) ? inlineNestedGroups(rawOptions) : rawOptions, [rawOptions]);
633
- const field = require_useFormField.useFormField({
634
- hasWarning,
635
- hasError,
636
- disabled,
637
- inputId: id
638
- });
639
- const [inputValue, setInputValue] = (0, react.useState)("");
640
- const searchInputRef = (0, react.useRef)(null);
641
- const comboboxInputRef = (0, react.useRef)(null);
642
- const caretButtonRef = (0, react.useRef)(null);
643
- const comboboxContainerRef = (0, react.useRef)(null);
644
- const scrollableListRef = (0, react.useRef)(null);
645
- const selectedItemsContainerRef = (0, react.useRef)(null);
646
- const measurementStickerRefs = (0, react.useRef)([]);
647
- const measurementTruncatorRef = (0, react.useRef)(null);
648
- const portalContainerRef = externalPortalContainerRef || comboboxContainerRef;
649
- const flatOptions = (0, react.useMemo)(() => flattenOptions(options), [options]);
650
- const selectedItems = flatOptions.filter((option) => values.includes(option.value));
651
- (0, react.useEffect)(() => {
652
- measurementStickerRefs.current = measurementStickerRefs.current.slice(0, selectedItems.length);
653
- }, [selectedItems.length]);
654
- const visibleCount = useTruncation(selectedItems, measurementStickerRefs, measurementTruncatorRef, selectedItemsContainerRef, truncate);
655
- (0, react.useImperativeHandle)(ref, () => ({
656
- ...comboboxInputRef.current,
657
- focusSearchInput: () => {
658
- if (searchInputRef.current) searchInputRef.current.focus();
659
- }
660
- }), []);
661
- const filteredOptions = useFilteredOptions(options, inputValue);
662
- const isGrouped = (0, react.useMemo)(() => options.some(isOptionGroup), [options]);
663
- const optionsWithSelectedFirstInGroups = (0, react.useMemo)(() => {
664
- if (!isGrouped || values.length === 0 || stableOptionOrder) return options;
665
- return options.map((item) => {
666
- if (isOptionGroup(item)) {
667
- const groupLeaves = flattenOptions(item.options);
668
- return {
669
- ...item,
670
- options: groupLeaves.toSorted((a, b) => {
671
- const aSelected = values.includes(a.value);
672
- if (aSelected === values.includes(b.value)) return 0;
673
- return aSelected ? -1 : 1;
674
- })
675
- };
676
- }
677
- return item;
678
- });
679
- }, [
680
- options,
681
- isGrouped,
682
- values,
683
- stableOptionOrder
684
- ]);
685
- const navigableItems = (0, react.useMemo)(() => {
686
- const items = [];
687
- if (isGrouped && values.length > 0) {
688
- if (selectAll && filteredOptions.length > 0) items.push({
689
- value: SELECT_ALL_VALUE,
690
- label: "Select all"
691
- });
692
- for (const item of optionsWithSelectedFirstInGroups) if (isOptionGroup(item)) {
693
- for (const opt of flattenOptions(item.options)) if (filteredOptions.some((f) => f.value === opt.value)) items.push(opt);
694
- } else if (filteredOptions.some((f) => f.value === item.value)) items.push(item);
695
- return items;
696
- }
697
- const orderedFiltered = !isGrouped && values.length > 0 && !stableOptionOrder ? filteredOptions.toSorted((a, b) => {
698
- const aSelected = values.includes(a.value);
699
- if (aSelected === values.includes(b.value)) return 0;
700
- return aSelected ? -1 : 1;
701
- }) : filteredOptions;
702
- if (selectAll && orderedFiltered.length > 0) items.push({
703
- value: SELECT_ALL_VALUE,
704
- label: "Select all"
705
- });
706
- items.push(...orderedFiltered);
707
- return items;
708
- }, [
709
- selectAll,
710
- filteredOptions,
711
- isGrouped,
712
- values,
713
- optionsWithSelectedFirstInGroups,
714
- stableOptionOrder
715
- ]);
716
- const optionsToRender = (0, react.useMemo)(() => {
717
- if (!isGrouped && values.length > 0) return navigableItems;
718
- const hasSelectAll = selectAll && filteredOptions.length > 0 && navigableItems[0]?.value === SELECT_ALL_VALUE;
719
- const baseOptions = isGrouped && values.length > 0 ? optionsWithSelectedFirstInGroups : options;
720
- return hasSelectAll ? [navigableItems[0], ...baseOptions] : baseOptions;
721
- }, [
722
- isGrouped,
723
- values,
724
- navigableItems,
725
- selectAll,
726
- filteredOptions,
727
- optionsWithSelectedFirstInGroups,
728
- options
729
- ]);
730
- const navigableToVirtualRowRef = (0, react.useRef)(/* @__PURE__ */ new Map());
731
- const virtualRows = (0, react.useMemo)(() => {
732
- if (!virtualize) return [];
733
- const map = /* @__PURE__ */ new Map();
734
- const rows = buildVirtualRows(optionsToRender, navigableItems, map);
735
- navigableToVirtualRowRef.current = map;
736
- return rows;
737
- }, [
738
- optionsToRender,
739
- navigableItems,
740
- virtualize
741
- ]);
742
- const virtualizer = (0, _tanstack_react_virtual.useVirtualizer)({
743
- count: virtualRows.length,
744
- getScrollElement: () => scrollableListRef.current,
745
- estimateSize: () => size === "sm" ? 24 : 32,
746
- overscan: 5
747
- });
748
- const itemToString = (0, react.useCallback)((item) => {
749
- return item ? item.label : "";
750
- }, []);
751
- const { addSelectedItem, getSelectedItemProps, getDropdownProps, removeSelectedItem, reset, setSelectedItems } = (0, downshift.useMultipleSelection)({
752
- selectedItems,
753
- onStateChange: ({ selectedItems: newSelectedItems, type }) => {
754
- switch (type) {
755
- case downshift.useMultipleSelection.stateChangeTypes.SelectedItemKeyDownBackspace:
756
- case downshift.useMultipleSelection.stateChangeTypes.SelectedItemKeyDownDelete:
757
- case downshift.useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace:
758
- case downshift.useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
759
- case downshift.useMultipleSelection.stateChangeTypes.FunctionAddSelectedItem:
760
- case downshift.useMultipleSelection.stateChangeTypes.FunctionSetSelectedItems:
761
- if (onValuesChange && newSelectedItems) {
762
- const newValues = newSelectedItems.map((item) => item.value);
763
- onValuesChange?.(newValues);
764
- }
765
- break;
766
- case downshift.useMultipleSelection.stateChangeTypes.FunctionReset:
767
- if (onValuesChange) onValuesChange([]);
768
- break;
769
- default: break;
770
- }
771
- }
772
- });
773
- const selectedState = (0, react.useMemo)(() => {
774
- const counts = filteredOptions.reduce((acc, option) => {
775
- if (values.includes(option.value)) acc.selected++;
776
- else acc.notSelected++;
777
- return acc;
778
- }, {
779
- selected: 0,
780
- notSelected: 0
781
- });
782
- return {
783
- allSelected: counts.selected === filteredOptions.length,
784
- allNotSelected: counts.notSelected === filteredOptions.length,
785
- indeterminate: counts.selected > 0 && counts.selected < filteredOptions.length
786
- };
787
- }, [values, filteredOptions]);
788
- const handleSelectAllToggle = (0, react.useCallback)(() => {
789
- if (selectedState.allSelected || selectedState.indeterminate) {
790
- const visibleValues = filteredOptions.map((option) => option.value);
791
- setSelectedItems(selectedItems.filter((item) => !visibleValues.includes(item.value)));
792
- } else {
793
- const newItems = filteredOptions.filter((option) => !values.includes(option.value));
794
- setSelectedItems([...selectedItems, ...newItems]);
795
- }
796
- }, [
797
- selectedState.allSelected,
798
- selectedState.indeterminate,
799
- filteredOptions,
800
- selectedItems,
801
- values,
802
- setSelectedItems
803
- ]);
804
- const { isOpen, getToggleButtonProps, getMenuProps, getInputProps, getItemProps, highlightedIndex, setHighlightedIndex, closeMenu, openMenu } = (0, downshift.useCombobox)({
805
- items: navigableItems,
806
- itemToString,
807
- isOpen: embedded ? true : void 0,
808
- selectedItem: null,
809
- initialHighlightedIndex: 0,
810
- defaultHighlightedIndex: 0,
811
- onIsOpenChange({ isOpen: newIsOpen }) {
812
- if (newIsOpen && inputValue !== "") setInputValue("");
813
- },
814
- onHighlightedIndexChange: ({ highlightedIndex, type }) => {
815
- if (virtualize && type !== downshift.useCombobox.stateChangeTypes.MenuMouseLeave && highlightedIndex >= 0) {
816
- const rowIndex = navigableToVirtualRowRef.current.get(highlightedIndex);
817
- if (rowIndex != null) virtualizer.scrollToIndex(rowIndex, { align: "auto" });
818
- }
819
- },
820
- onStateChange({ type, selectedItem: newSelectedItem, inputValue: newInputValue }) {
821
- switch (type) {
822
- case downshift.useCombobox.stateChangeTypes.InputChange:
823
- setInputValue(newInputValue || "");
824
- onInputChange?.(newInputValue || "");
825
- break;
826
- case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
827
- case downshift.useCombobox.stateChangeTypes.ItemClick:
828
- if (newSelectedItem && newSelectedItem.value === SELECT_ALL_VALUE) {
829
- handleSelectAllToggle();
830
- break;
831
- }
832
- if (newSelectedItem) if (values.includes(newSelectedItem.value)) removeSelectedItem(newSelectedItem);
833
- else addSelectedItem(newSelectedItem);
834
- break;
835
- default: break;
836
- }
837
- },
838
- stateReducer(state, actionAndChanges) {
839
- const { type, changes } = actionAndChanges;
840
- switch (type) {
841
- case downshift.useCombobox.stateChangeTypes.ItemClick:
842
- case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: return {
843
- ...changes,
844
- isOpen: true,
845
- inputValue: "",
846
- highlightedIndex: state.highlightedIndex
847
- };
848
- case downshift.useCombobox.stateChangeTypes.InputBlur:
849
- if (state.isOpen) return {
850
- ...changes,
851
- isOpen: true
852
- };
853
- return changes;
854
- case downshift.useCombobox.stateChangeTypes.InputClick:
855
- case downshift.useCombobox.stateChangeTypes.ToggleButtonClick: return changes;
856
- default: return changes;
857
- }
858
- }
859
- });
860
- const renderOption = (0, react.useCallback)((option, currentIndex) => {
861
- const isHighlighted = highlightedIndex === currentIndex;
862
- const isSelected = values.includes(option.value);
863
- if (option.value === SELECT_ALL_VALUE) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledMenuItem$1, {
864
- ...getItemProps({
865
- item: option,
866
- index: currentIndex
867
- }),
868
- focused: isHighlighted,
869
- selected: false,
870
- "aria-labelledby": `combobox-option-label-${currentIndex}`,
871
- $size: size,
872
- tabIndex: -1,
873
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Stack.Stack, {
874
- direction: "horizontal",
875
- align: "center",
876
- spacing: _persona_design_tokens.Spacing[2],
877
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Checkbox.Checkbox, {
878
- checked: selectedState.allSelected,
879
- indeterminate: selectedState.indeterminate,
880
- tabIndex: -1
881
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckboxLabel, {
882
- id: `combobox-option-label-${currentIndex}`,
883
- $size: size,
884
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OptionLabel, { children: option.label })
885
- })]
886
- })
887
- }, "select-all");
888
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledMenuItem$1, {
889
- ...getItemProps({
890
- item: option,
891
- index: currentIndex,
892
- "aria-selected": isSelected
893
- }),
894
- focused: isHighlighted,
895
- selected: false,
896
- "aria-labelledby": `combobox-option-label-${currentIndex}`,
897
- $size: size,
898
- tabIndex: -1,
899
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_Stack.Stack, {
900
- direction: "horizontal",
901
- align: "center",
902
- spacing: _persona_design_tokens.Spacing[2],
903
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Checkbox.Checkbox, {
904
- checked: isSelected,
905
- tabIndex: -1
906
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CheckboxLabel, {
907
- id: `combobox-option-label-${currentIndex}`,
908
- $size: size,
909
- children: option.labelStickerVariant ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Sticker.Sticker, {
910
- variant: option.labelStickerVariant,
911
- children: option.label
912
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(OptionLabel, {
913
- title: option.label,
914
- $labelStyle: option.PLEASE_DO_NOT_USE_labelFontStyle,
915
- children: option.label
916
- }), option.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Description, {
917
- title: option.description,
918
- children: option.description
919
- })] })
920
- })]
921
- })
922
- }, `${option.value}-${currentIndex}`);
923
- }, [
924
- highlightedIndex,
925
- values,
926
- getItemProps,
927
- size,
928
- selectedState
929
- ]);
930
- const isMenuOpen = isOpen;
931
- const handleKeyDown = (0, react.useCallback)((event) => {
932
- if (event.key === "Enter" && !isMenuOpen) openMenu();
933
- }, [isMenuOpen, openMenu]);
934
- const dropdownPosition = useDropdownPosition(portalContainerRef, isMenuOpen, embedded ? false : portal);
935
- (0, react.useEffect)(() => {
936
- onOpenChange?.(isMenuOpen);
937
- }, [isMenuOpen, onOpenChange]);
938
- (0, react.useEffect)(() => {
939
- if (isMenuOpen && navigableItems.length > 0) {
940
- if (highlightedIndex === -1 || highlightedIndex >= navigableItems.length) setHighlightedIndex(0);
941
- }
942
- }, [
943
- navigableItems,
944
- isMenuOpen,
945
- highlightedIndex,
946
- setHighlightedIndex
947
- ]);
948
- const searchInputId = `${field.inputId}-search`;
949
- (0, react.useEffect)(() => {
950
- if (isMenuOpen && searchInputRef.current) searchInputRef.current.focus();
951
- }, [isMenuOpen]);
952
- const handleSearchInputKeyDown = (0, react.useCallback)((e) => {
953
- if (e.key === "ArrowDown" && navigableItems.length > 0) {
954
- e.preventDefault();
955
- setHighlightedIndex(highlightedIndex === -1 ? 0 : (highlightedIndex + 1) % navigableItems.length);
956
- }
957
- if (e.key === "ArrowUp" && navigableItems.length > 0) {
958
- e.preventDefault();
959
- setHighlightedIndex(highlightedIndex === -1 ? navigableItems.length - 1 : (highlightedIndex - 1 + navigableItems.length) % navigableItems.length);
960
- }
961
- if (e.key === "Enter" && highlightedIndex >= 0 && navigableItems[highlightedIndex]) {
962
- e.preventDefault();
963
- const selectedItem = navigableItems[highlightedIndex];
964
- if (selectedItem.value === SELECT_ALL_VALUE) {
965
- handleSelectAllToggle();
966
- return;
967
- }
968
- if (values.includes(selectedItem.value)) removeSelectedItem(selectedItem);
969
- else addSelectedItem(selectedItem);
970
- }
971
- if (e.key === "Escape") {
972
- closeMenu();
973
- if (comboboxInputRef.current) comboboxInputRef.current.focus();
974
- }
975
- if (e.key === "Tab" && highlightedIndex >= 0 && navigableItems[highlightedIndex]) closeMenu();
976
- }, [
977
- navigableItems,
978
- highlightedIndex,
979
- setHighlightedIndex,
980
- values,
981
- addSelectedItem,
982
- removeSelectedItem,
983
- closeMenu,
984
- comboboxInputRef,
985
- handleSelectAllToggle
986
- ]);
987
- require_lib_useOutsideClick.useOutsideClick({
988
- ref: comboboxContainerRef,
989
- onOutsideClick: (0, react.useCallback)((e) => {
990
- if (!embedded && isMenuOpen && !e.target?.closest("#combobox-dropdown-portal-wrapper")) closeMenu();
991
- }, [
992
- embedded,
993
- isMenuOpen,
994
- closeMenu
995
- ])
996
- });
997
- const externalTrigger = (() => {
998
- if (embedded || trigger == null || !(0, react.isValidElement)(trigger)) return null;
999
- const triggerProps = trigger.props;
1000
- return (0, react.cloneElement)(trigger, getToggleButtonProps({
1001
- ...triggerProps,
1002
- disabled: field.disabled || Boolean(triggerProps.disabled)
1003
- }));
1004
- })();
1005
- const handleSearchInputBlur = (0, react.useCallback)((e) => {
1006
- if (!isMenuOpen) return;
1007
- const relatedTarget = e.relatedTarget;
1008
- const staysInCombobox = relatedTarget != null && (Boolean(comboboxContainerRef.current?.contains(relatedTarget)) || Boolean(relatedTarget.closest("#combobox-dropdown-portal-wrapper")));
1009
- if (!embedded && !staysInCombobox) closeMenu();
1010
- }, [
1011
- embedded,
1012
- isMenuOpen,
1013
- closeMenu
1014
- ]);
1015
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container, {
1016
- ...props,
1017
- ref: comboboxContainerRef,
1018
- children: [embedded ? null : externalTrigger != null ? externalTrigger : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(InputContainer, { children: [
1019
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MultiSelectComboboxInput, {
1020
- ...getInputProps(getDropdownProps({
1021
- ...props,
1022
- ref: comboboxInputRef,
1023
- id: field.inputId,
1024
- placeholder: selectedItems.length === 0 ? placeholder : "",
1025
- disabled: field.disabled,
1026
- "aria-label": ariaLabel,
1027
- "aria-labelledby": labelId,
1028
- "aria-describedby": [field.helperTextId, field.hasWarning ? field.warningTextId : null].filter(Boolean).join(" ") || void 0,
1029
- "aria-errormessage": field.hasError ? field.errorTextId : void 0,
1030
- "aria-invalid": field.hasError,
1031
- preventKeyAction: isMenuOpen,
1032
- onKeyDown: handleKeyDown
1033
- })),
1034
- size,
1035
- $isOpen: isMenuOpen,
1036
- hasWarning: field.hasWarning,
1037
- hasError: field.hasError,
1038
- value: ""
1039
- }),
1040
- truncate && selectedItems.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(HiddenMeasurementContainer, {
1041
- "aria-hidden": "true",
1042
- children: [selectedItems.map((item, index) => {
1043
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1044
- ref: (el) => measurementStickerRefs.current[index] = el,
1045
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Sticker.Sticker, {
1046
- variant: flatOptions.find((opt) => opt.value === item.value)?.labelStickerVariant || "grey",
1047
- disabled: field.disabled,
1048
- children: item.label
1049
- })
1050
- }, `measurement-${item.value}-${index}`);
1051
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1052
- ref: measurementTruncatorRef,
1053
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TruncatorSticker, {
1054
- variant: "grey",
1055
- disabled: field.disabled,
1056
- children: ["+", selectedItems.length - visibleCount]
1057
- })
1058
- })]
1059
- }),
1060
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SelectedItemsContainer, {
1061
- $size: size,
1062
- $truncate: truncate,
1063
- ref: selectedItemsContainerRef,
1064
- children: truncate ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TruncatedItemsWrapper, { children: [selectedItems.slice(0, visibleCount).map((item, index) => {
1065
- const { ref: _ref, ...stickerProps } = getSelectedItemProps({
1066
- selectedItem: item,
1067
- index
1068
- });
1069
- const stickerVariant = flatOptions.find((opt) => opt.value === item.value)?.labelStickerVariant || "grey";
1070
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TruncatedSticker, {
1071
- ...stickerProps,
1072
- variant: stickerVariant,
1073
- disabled: field.disabled,
1074
- $isOnlyItem: visibleCount === 1,
1075
- children: item.label
1076
- }, `selected-${item.value}-${index}`);
1077
- }), visibleCount < selectedItems.length && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(TruncatorSticker, {
1078
- variant: "grey",
1079
- disabled: field.disabled,
1080
- children: ["+", selectedItems.length - visibleCount]
1081
- })] }) : selectedItems.map((item, index) => {
1082
- const { ref, ...stickerProps } = getSelectedItemProps({
1083
- selectedItem: item,
1084
- index
1085
- });
1086
- const stickerVariant = flatOptions.find((opt) => opt.value === item.value)?.labelStickerVariant || "grey";
1087
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Sticker.Sticker, {
1088
- ...stickerProps,
1089
- variant: stickerVariant,
1090
- onDismiss: (e) => {
1091
- e.stopPropagation();
1092
- removeSelectedItem(item);
1093
- },
1094
- dismissButtonProps: { tabIndex: -1 },
1095
- disabled: field.disabled,
1096
- tabIndex: -1,
1097
- children: item.label
1098
- }, `selected-${item.value}-${index}`);
1099
- })
1100
- }),
1101
- selectedItems.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CaretButton, {
1102
- id: `${field.inputId}__clear-all`,
1103
- onClick: reset,
1104
- size,
1105
- disabled: field.disabled,
1106
- "aria-label": "Clear all selected items",
1107
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.CircleXInverseIcon, {})
1108
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CaretButton, {
1109
- ...getToggleButtonProps({ ref: caretButtonRef }),
1110
- size,
1111
- disabled: field.disabled,
1112
- "aria-label": `${isMenuOpen ? "Close" : "Open"} options menu`,
1113
- "aria-haspopup": "listbox",
1114
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.CaretDownIcon, {})
1115
- })
1116
- ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DropdownPortalWrapper, {
1117
- portal: embedded ? false : portal,
1118
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DropdownContainer, {
1119
- $isOpen: isMenuOpen,
1120
- $portal: embedded ? false : portal,
1121
- $embedded: embedded,
1122
- $top: dropdownPosition.top,
1123
- $left: dropdownPosition.left,
1124
- $width: dropdownPosition.width,
1125
- $minWidth: externalTrigger ? EXTERNAL_TRIGGER_DROPDOWN_MIN_WIDTH$1 : void 0,
1126
- ...getMenuProps(),
1127
- "aria-multiselectable": "true",
1128
- children: [isMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInputContainer, {
1129
- $embedded: embedded,
1130
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Input.InputGroup, {
1131
- leftIcon: embedded ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.SearchIcon, {}),
1132
- size,
1133
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, {
1134
- $embedded: embedded,
1135
- id: searchInputId,
1136
- ref: searchInputRef,
1137
- placeholder: searchPlaceholder,
1138
- value: inputValue,
1139
- onChange: (e) => {
1140
- setInputValue(e.target.value);
1141
- onInputChange?.(e.target.value);
1142
- },
1143
- onKeyDown: handleSearchInputKeyDown,
1144
- onBlur: handleSearchInputBlur,
1145
- disabled: field.disabled,
1146
- "aria-label": embedded ? "Search options" : ariaLabel ?? searchPlaceholder,
1147
- size
1148
- })
1149
- })
1150
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MultiSelectScrollableMenuList, {
1151
- $embedded: embedded,
1152
- tabIndex: -1,
1153
- ref: scrollableListRef,
1154
- children: isMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: isOptionsLoading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoadingContainer, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.Spinner, { size: "md" }) }) : navigableItems.length > 0 ? renderOptionsWithGroups({
1155
- options: optionsToRender,
1156
- filteredOptions: navigableItems,
1157
- renderOption,
1158
- virtualizer: virtualize ? virtualizer : void 0,
1159
- virtualRows: virtualize ? virtualRows : void 0
1160
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EmptyState, {
1161
- role: "status",
1162
- "aria-live": "polite",
1163
- size,
1164
- children: emptyStateMessage
1165
- }) })
1166
- })]
1167
- })
1168
- })]
1169
- });
1170
- }
1171
- const ComboboxMultiSelect = (0, react.forwardRef)(ComboboxMultiSelectComponent);
1172
- //#endregion
1173
- //#region components/Combobox/ComboboxSingleSelect.tsx
1174
- const StyledMenuItem = (0, styled_components.default)(require_Menu.MenuItem)`
1175
- display: flex;
1176
- flex-direction: column;
1177
- align-items: flex-start;
1178
- gap: ${_persona_design_tokens.Spacing[1]};
1179
- min-width: 0; /* Allow content to shrink below natural size */
1180
- width: 100%; /* Ensure full width of dropdown */
1181
- box-sizing: border-box;
1182
-
1183
- /* Force all children to respect the container width */
1184
- > * {
1185
- width: 100%;
1186
- min-width: 0;
1187
- box-sizing: border-box;
1188
- }
1189
- `;
1190
- const ParentMenuItem = (0, styled_components.default)(require_Menu.MenuItem)`
1191
- ${require_Menu.IconContainer} {
1192
- margin-right: 0;
1193
- }
1194
-
1195
- > ${require_Menu.IconContainer}:first-child:not(:last-child) {
1196
- margin-right: ${_persona_design_tokens.Spacing[2]};
1197
- }
1198
- `;
1199
- const ParentChevron = styled_components.default.span`
1200
- display: inline-flex;
1201
- align-items: center;
1202
- color: ${_persona_design_tokens.Color.BorderIconSecondary};
1203
- `;
1204
- const EXTERNAL_TRIGGER_DROPDOWN_MIN_WIDTH = "240px";
1205
- const SingleSelectScrollableMenuList = (0, styled_components.default)(ScrollableMenuList)`
1206
- ${({ $embedded }) => $embedded && styled_components.css`
1207
- padding: 0;
1208
- `}
1209
- `;
1210
- const BackRow = styled_components.default.button`
1211
- display: flex;
1212
- align-items: center;
1213
- gap: ${({ $size }) => $size === "sm" ? _persona_design_tokens.Spacing[1] : _persona_design_tokens.Spacing[2]};
1214
- width: 100%;
1215
- padding: ${({ $size }) => $size === "sm" ? `${_persona_design_tokens.Spacing[1]} ${_persona_design_tokens.Spacing[2]}` : _persona_design_tokens.Spacing[2]};
1216
- background: transparent;
1217
- border: 0;
1218
- cursor: pointer;
1219
- color: ${_persona_design_tokens.Color.TextPrimary};
1220
- ${({ $size }) => $size === "sm" ? _persona_design_tokens.Typography.TextSmall : _persona_design_tokens.Typography.TextMedium};
1221
-
1222
- svg {
1223
- color: ${_persona_design_tokens.Color.BorderIconPrimary};
1224
- }
1225
- `;
1226
- const StickerDisplay = (0, styled_components.default)(require_Sticker.Sticker)`
1227
- position: absolute;
1228
- left: ${_persona_design_tokens.Spacing[2]};
1229
- top: 50%;
1230
- transform: translateY(-50%);
1231
- pointer-events: none;
1232
- z-index: 1;
1233
- `;
1234
- const StickerComboboxInput = (0, styled_components.default)(ComboboxInput)`
1235
- /* Hide text when sticker is shown */
1236
- color: transparent;
1237
- caret-color: transparent;
1238
- `;
1239
- function ComboboxSingleSelectComponent({ size = "md", options, isOptionsLoading, value, onChange, onInputChange, placeholder = "Select an option...", emptyStateMessage = "No options found", disabled = false, hasWarning, hasError, id, labelId, "aria-label": ariaLabel, onOpenChange, portal = false, portalContainerRef: externalPortalContainerRef, trigger, embedded = false, ...props }, ref) {
1240
- const field = require_useFormField.useFormField({
1241
- hasWarning,
1242
- hasError,
1243
- disabled,
1244
- inputId: id
1245
- });
1246
- const [inputValue, setInputValue] = (0, react.useState)("");
1247
- const [isDropdownOpen, setIsDropdownOpen] = (0, react.useState)(embedded);
1248
- const [navigationPath, setNavigationPath] = (0, react.useState)([]);
1249
- const comboboxInputRef = (0, react.useRef)(null);
1250
- const internalContainerRef = (0, react.useRef)(null);
1251
- const pendingDescentRef = (0, react.useRef)(null);
1252
- const portalContainerRef = externalPortalContainerRef || internalContainerRef;
1253
- (0, react.useImperativeHandle)(ref, () => ({ ...comboboxInputRef.current }), []);
1254
- const isSearching = inputValue.trim() !== "";
1255
- const nestedOptions = (0, react.useMemo)(() => getOptionsAtPath(options, navigationPath), [options, navigationPath]);
1256
- const hasNestedGroups = (0, react.useMemo)(() => containsNestedGroup(options), [options]);
1257
- const navigableItems = (0, react.useMemo)(() => getNavigableItemsAtLevel(nestedOptions), [nestedOptions]);
1258
- const searchableLeaves = (0, react.useMemo)(() => {
1259
- if (!isSearching || !hasNestedGroups) return [];
1260
- return flattenLeafOptions(options).map(({ option }) => option);
1261
- }, [
1262
- options,
1263
- isSearching,
1264
- hasNestedGroups
1265
- ]);
1266
- const searchableLeafFuse = (0, react.useMemo)(() => {
1267
- if (!isSearching || !hasNestedGroups) return null;
1268
- return new fuse_js.default(flattenLeafOptions(options).map(({ option, breadcrumb }) => ({
1269
- option,
1270
- label: String(option.label),
1271
- description: option.description,
1272
- ancestors: breadcrumb.join(" ")
1273
- })), {
1274
- shouldSort: false,
1275
- threshold: 0,
1276
- ignoreLocation: true,
1277
- minMatchCharLength: 1,
1278
- keys: [
1279
- "label",
1280
- "description",
1281
- "ancestors"
1282
- ]
1283
- });
1284
- }, [
1285
- options,
1286
- isSearching,
1287
- hasNestedGroups
1288
- ]);
1289
- const renderSource = isSearching ? hasNestedGroups ? searchableLeaves : options : nestedOptions;
1290
- const standardFilteredOptions = useFilteredOptions(renderSource, inputValue);
1291
- const filteredOptions = (0, react.useMemo)(() => {
1292
- if (!isSearching || !hasNestedGroups || searchableLeafFuse == null) return standardFilteredOptions;
1293
- if (inputValue === "") return searchableLeaves;
1294
- return Array.from(new Set(searchableLeafFuse.search(inputValue).map(({ item }) => item.option)).values());
1295
- }, [
1296
- isSearching,
1297
- hasNestedGroups,
1298
- searchableLeafFuse,
1299
- inputValue,
1300
- searchableLeaves,
1301
- standardFilteredOptions
1302
- ]);
1303
- const downshiftItems = (0, react.useMemo)(() => {
1304
- if (isSearching) return filteredOptions.map((option) => ({
1305
- kind: "leaf",
1306
- option
1307
- }));
1308
- return navigableItems.filter((item) => item.kind === "group" || filteredOptions.some((f) => f.value === item.option.value));
1309
- }, [
1310
- isSearching,
1311
- filteredOptions,
1312
- navigableItems
1313
- ]);
1314
- const allLeaves = (0, react.useMemo)(() => flattenLeafOptions(options), [options]);
1315
- const flatOptionsForFallback = (0, react.useMemo)(() => flattenOptions(options), [options]);
1316
- const selectedOption = allLeaves.find(({ option }) => option.value === value)?.option ?? flatOptionsForFallback.find((option) => option.value === value) ?? null;
1317
- const selectedNavigableItem = (0, react.useMemo)(() => selectedOption ? {
1318
- kind: "leaf",
1319
- option: selectedOption
1320
- } : null, [selectedOption?.value, selectedOption?.label]);
1321
- const itemToString = (0, react.useCallback)((item) => {
1322
- if (!item) return "";
1323
- return item.kind === "leaf" ? item.option.label : item.group.label;
1324
- }, []);
1325
- const handleAscend = (0, react.useCallback)(() => {
1326
- setNavigationPath((prev) => prev.length > 0 ? prev.slice(0, -1) : prev);
1327
- setInputValue("");
1328
- }, []);
1329
- const handleDescend = (0, react.useCallback)((groupLabel) => {
1330
- setNavigationPath((prev) => [...prev, groupLabel]);
1331
- setInputValue("");
1332
- }, []);
1333
- const { isOpen, getToggleButtonProps, getMenuProps, getInputProps, getItemProps, highlightedIndex, setHighlightedIndex, openMenu } = (0, downshift.useCombobox)({
1334
- items: downshiftItems,
1335
- itemToString,
1336
- isOpen: embedded ? true : void 0,
1337
- selectedItem: isDropdownOpen ? null : selectedNavigableItem,
1338
- inputValue,
1339
- onInputValueChange({ inputValue: newInputValue }) {
1340
- if (newInputValue === "" && !embedded && trigger == null) onChange?.(null);
1341
- setInputValue(newInputValue || "");
1342
- onInputChange?.(newInputValue || "");
1343
- },
1344
- onIsOpenChange({ isOpen: newIsOpen }) {
1345
- if (embedded) return;
1346
- setIsDropdownOpen(newIsOpen);
1347
- if (newIsOpen) {
1348
- if (selectedOption || value && inputValue === flatOptionsForFallback.find((opt) => opt.value === value)?.label) setInputValue("");
1349
- } else setInputValue(selectedOption?.label || "");
1350
- },
1351
- onSelectedItemChange: ({ selectedItem: newSelectedItem }) => {
1352
- if (newSelectedItem == null || newSelectedItem.kind !== "leaf") return;
1353
- const leaf = newSelectedItem.option;
1354
- onChange?.(leaf.value);
1355
- setInputValue(leaf.label);
1356
- },
1357
- stateReducer(state, actionAndChanges) {
1358
- const { changes, type } = actionAndChanges;
1359
- switch (type) {
1360
- case downshift.useCombobox.stateChangeTypes.InputBlur: return {
1361
- ...changes,
1362
- selectedItem: state.selectedItem
1363
- };
1364
- case downshift.useCombobox.stateChangeTypes.ItemClick:
1365
- case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter: {
1366
- const candidate = changes.selectedItem;
1367
- if (candidate && candidate.kind === "group") {
1368
- pendingDescentRef.current = candidate.group.label;
1369
- return {
1370
- ...changes,
1371
- selectedItem: state.selectedItem,
1372
- isOpen: true
1373
- };
1374
- }
1375
- return changes;
1376
- }
1377
- default: return changes;
1378
- }
1379
- }
1380
- });
1381
- (0, react.useEffect)(() => {
1382
- if (pendingDescentRef.current != null) {
1383
- const target = pendingDescentRef.current;
1384
- pendingDescentRef.current = null;
1385
- handleDescend(target);
1386
- }
1387
- });
1388
- (0, react.useEffect)(() => {
1389
- if (!isOpen && !embedded && navigationPath.length > 0) setNavigationPath([]);
1390
- }, [
1391
- embedded,
1392
- isOpen,
1393
- navigationPath.length
1394
- ]);
1395
- const renderLeaf = (0, react.useCallback)((option, currentIndex) => {
1396
- const isHighlighted = highlightedIndex === currentIndex;
1397
- const isSelected = selectedOption?.value === option.value;
1398
- const itemProps = getItemProps({
1399
- item: {
1400
- kind: "leaf",
1401
- option
1402
- },
1403
- index: currentIndex,
1404
- "aria-selected": isSelected
1405
- });
1406
- const labelContent = option.labelStickerVariant ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Sticker.Sticker, {
1407
- variant: option.labelStickerVariant,
1408
- children: option.label
1409
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(OptionLabel, {
1410
- title: option.label,
1411
- $labelStyle: option.PLEASE_DO_NOT_USE_labelFontStyle,
1412
- children: option.label
1413
- }), option.description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Description, {
1414
- title: option.description,
1415
- children: option.description
1416
- })] });
1417
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StyledMenuItem, {
1418
- ...itemProps,
1419
- focused: isHighlighted,
1420
- selected: isSelected,
1421
- size,
1422
- tabIndex: -1,
1423
- children: labelContent
1424
- }, `leaf-${String(option.value)}-${currentIndex}`);
1425
- }, [
1426
- highlightedIndex,
1427
- selectedOption,
1428
- getItemProps,
1429
- size
1430
- ]);
1431
- const renderNestedGroupRow = (0, react.useCallback)((group, currentIndex) => {
1432
- const isHighlighted = highlightedIndex === currentIndex;
1433
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ParentMenuItem, {
1434
- ...getItemProps({
1435
- item: {
1436
- kind: "group",
1437
- group
1438
- },
1439
- index: currentIndex
1440
- }),
1441
- "aria-haspopup": "menu",
1442
- focused: isHighlighted,
1443
- prefixIcon: group.prefixIcon,
1444
- size,
1445
- tabIndex: -1,
1446
- stretchLabel: true,
1447
- suffixIcon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ParentChevron, {
1448
- "aria-hidden": "true",
1449
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.ChevronRightIcon, {})
1450
- }),
1451
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OptionLabel, {
1452
- title: group.label,
1453
- children: group.label
1454
- })
1455
- }, `group-${group.label}-${currentIndex}`);
1456
- }, [
1457
- highlightedIndex,
1458
- getItemProps,
1459
- size
1460
- ]);
1461
- const renderNestedLevel = (0, react.useCallback)((items) => {
1462
- let navIndex = -1;
1463
- const walk = (node, key) => {
1464
- if (isOptionGroup(node)) {
1465
- if (node.nested) {
1466
- if (!downshiftItems.some((i) => i.kind === "group" && i.group === node)) return null;
1467
- navIndex++;
1468
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react.Fragment, { children: renderNestedGroupRow(node, navIndex) }, key);
1469
- }
1470
- const childNodes = [];
1471
- for (let i = 0; i < node.options.length; i++) {
1472
- const rendered = walk(node.options[i], `${key}-${i}`);
1473
- if (rendered != null) childNodes.push(rendered);
1474
- }
1475
- if (childNodes.length === 0) return null;
1476
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Menu.MenuHeading, { children: node.label }), childNodes] }, key);
1477
- }
1478
- if (!downshiftItems.some((i) => i.kind === "leaf" && i.option === node)) return null;
1479
- navIndex++;
1480
- return renderLeaf(node, navIndex);
1481
- };
1482
- return items.map((item, idx) => walk(item, `item-${idx}`));
1483
- }, [
1484
- downshiftItems,
1485
- renderLeaf,
1486
- renderNestedGroupRow
1487
- ]);
1488
- const renderOption = (0, react.useCallback)((option, currentIndex) => renderLeaf(option, currentIndex), [renderLeaf]);
1489
- const isMenuOpen = isOpen;
1490
- const dropdownPosition = useDropdownPosition(portalContainerRef, isMenuOpen, embedded ? false : portal);
1491
- const handleKeyDown = (0, react.useCallback)((event) => {
1492
- if (event.key === "Enter" && !isMenuOpen) {
1493
- openMenu();
1494
- return;
1495
- }
1496
- if (!isMenuOpen || isSearching) return;
1497
- if (event.key === "ArrowRight") {
1498
- const highlighted = downshiftItems[highlightedIndex];
1499
- if (highlighted && highlighted.kind === "group") {
1500
- event.preventDefault();
1501
- handleDescend(highlighted.group.label);
1502
- }
1503
- return;
1504
- }
1505
- if (event.key === "ArrowLeft" && navigationPath.length > 0) {
1506
- const input = event.currentTarget;
1507
- if ((input.selectionStart ?? 0) === 0 && (input.selectionEnd ?? 0) === 0) {
1508
- event.preventDefault();
1509
- handleAscend();
1510
- }
1511
- }
1512
- }, [
1513
- isMenuOpen,
1514
- isSearching,
1515
- downshiftItems,
1516
- highlightedIndex,
1517
- navigationPath.length,
1518
- openMenu,
1519
- handleDescend,
1520
- handleAscend
1521
- ]);
1522
- (0, react.useEffect)(() => {
1523
- onOpenChange?.(isMenuOpen);
1524
- }, [isMenuOpen, onOpenChange]);
1525
- (0, react.useEffect)(() => {
1526
- if (!isMenuOpen) setInputValue(selectedOption?.label || "");
1527
- }, [selectedOption, isMenuOpen]);
1528
- (0, react.useEffect)(() => {
1529
- if (isMenuOpen && downshiftItems.length > 0) {
1530
- if (highlightedIndex === -1 || highlightedIndex >= downshiftItems.length) setHighlightedIndex(0);
1531
- }
1532
- }, [
1533
- downshiftItems,
1534
- isMenuOpen,
1535
- highlightedIndex,
1536
- setHighlightedIndex
1537
- ]);
1538
- const displayValue = isMenuOpen ? inputValue : selectedOption?.label || "";
1539
- const hasSticker = !isMenuOpen && selectedOption?.labelStickerVariant;
1540
- const InputComponent = hasSticker ? StickerComboboxInput : ComboboxInput;
1541
- const showBackRow = isMenuOpen && navigationPath.length > 0 && !isSearching;
1542
- const externalTrigger = (() => {
1543
- if (embedded || trigger == null || !(0, react.isValidElement)(trigger)) return null;
1544
- const triggerProps = trigger.props;
1545
- return (0, react.cloneElement)(trigger, getToggleButtonProps({
1546
- ...triggerProps,
1547
- disabled: field.disabled || Boolean(triggerProps.disabled)
1548
- }));
1549
- })();
1550
- const searchInputProps = getInputProps({
1551
- ref: comboboxInputRef,
1552
- id: field.inputId,
1553
- placeholder: "Search…",
1554
- disabled: field.disabled,
1555
- "aria-label": embedded ? "Search options" : ariaLabel ?? "Search options",
1556
- "aria-labelledby": embedded ? void 0 : labelId,
1557
- "aria-describedby": [field.helperTextId, field.hasWarning ? field.warningTextId : null].filter(Boolean).join(" ") || void 0,
1558
- "aria-errormessage": field.hasError ? field.errorTextId : void 0,
1559
- "aria-invalid": field.hasError,
1560
- onKeyDown: handleKeyDown
1561
- });
1562
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Container, {
1563
- ...props,
1564
- ref: internalContainerRef,
1565
- children: [embedded ? null : externalTrigger != null ? externalTrigger : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(InputContainer, { children: [
1566
- hasSticker && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StickerDisplay, {
1567
- variant: selectedOption.labelStickerVariant,
1568
- children: selectedOption.label
1569
- }),
1570
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InputComponent, {
1571
- ...getInputProps({
1572
- ...props,
1573
- ref: comboboxInputRef,
1574
- id: field.inputId,
1575
- placeholder,
1576
- disabled: field.disabled,
1577
- "aria-label": ariaLabel,
1578
- "aria-labelledby": labelId,
1579
- "aria-describedby": [field.helperTextId, field.hasWarning ? field.warningTextId : null].filter(Boolean).join(" ") || void 0,
1580
- "aria-errormessage": field.hasError ? field.errorTextId : void 0,
1581
- "aria-invalid": field.hasError,
1582
- onKeyDown: handleKeyDown
1583
- }),
1584
- size,
1585
- $isOpen: isMenuOpen,
1586
- hasWarning: field.hasWarning,
1587
- hasError: field.hasError,
1588
- value: displayValue,
1589
- $selectedItemStyle: selectedOption?.PLEASE_DO_NOT_USE_labelFontStyle
1590
- }),
1591
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CaretButton, {
1592
- ...getToggleButtonProps(),
1593
- size,
1594
- disabled: field.disabled,
1595
- "aria-label": `${isMenuOpen ? "Close" : "Open"} options menu`,
1596
- "aria-haspopup": "listbox",
1597
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.CaretDownIcon, {})
1598
- })
1599
- ] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DropdownPortalWrapper, {
1600
- portal: embedded ? false : portal,
1601
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(DropdownContainer, {
1602
- $isOpen: isMenuOpen,
1603
- $portal: embedded ? false : portal,
1604
- $embedded: embedded,
1605
- $top: dropdownPosition.top,
1606
- $left: dropdownPosition.left,
1607
- $width: dropdownPosition.width,
1608
- $minWidth: externalTrigger ? EXTERNAL_TRIGGER_DROPDOWN_MIN_WIDTH : void 0,
1609
- ...getMenuProps(),
1610
- children: [(externalTrigger || embedded) && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInputContainer, {
1611
- $embedded: embedded,
1612
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Input.InputGroup, {
1613
- leftIcon: embedded ? void 0 : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.SearchIcon, {}),
1614
- size,
1615
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SearchInput, {
1616
- $embedded: embedded,
1617
- ...searchInputProps,
1618
- size,
1619
- hasWarning: field.hasWarning,
1620
- hasError: field.hasError,
1621
- value: inputValue,
1622
- autoComplete: "off"
1623
- })
1624
- })
1625
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SingleSelectScrollableMenuList, {
1626
- $embedded: embedded,
1627
- tabIndex: -1,
1628
- children: isMenuOpen && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [showBackRow && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(BackRow, {
1629
- type: "button",
1630
- tabIndex: -1,
1631
- onMouseDown: (event) => {
1632
- event.preventDefault();
1633
- handleAscend();
1634
- },
1635
- onClick: (event) => {
1636
- if (event.detail === 0) handleAscend();
1637
- },
1638
- "aria-label": "Back to previous menu",
1639
- $size: size,
1640
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_persona_icons.ArrowLeftIcon, {
1641
- "aria-hidden": "true",
1642
- size: size === "sm" ? 12 : 16
1643
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: "Back" })]
1644
- }), isOptionsLoading ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LoadingContainer, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Spinner.Spinner, { size: "md" }) }) : downshiftItems.length > 0 ? hasNestedGroups && !isSearching ? renderNestedLevel(nestedOptions) : renderOptionsWithGroups({
1645
- options: renderSource,
1646
- filteredOptions,
1647
- renderOption
1648
- }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(EmptyState, {
1649
- role: "status",
1650
- "aria-live": "polite",
1651
- size,
1652
- children: emptyStateMessage
1653
- })] })
1654
- })]
1655
- })
1656
- })]
1657
- });
1658
- }
1659
- const ComboboxSingleSelect = (0, react.forwardRef)(ComboboxSingleSelectComponent);
1660
- //#endregion
1661
- //#region components/Combobox/Combobox.tsx
1662
- function ComboboxComponent(props, ref) {
1663
- if (props.multiple) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ComboboxMultiSelect, {
1664
- ref,
1665
- ...props
1666
- });
1667
- else return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ComboboxSingleSelect, {
1668
- ref,
1669
- ...props
1670
- });
1671
- }
1672
- const Combobox = (0, react.forwardRef)(ComboboxComponent);
1673
- //#endregion
1674
- Object.defineProperty(exports, "CaretButton", {
1675
- enumerable: true,
1676
- get: function() {
1677
- return CaretButton;
1678
- }
1679
- });
1680
- Object.defineProperty(exports, "Combobox", {
1681
- enumerable: true,
1682
- get: function() {
1683
- return Combobox;
1684
- }
1685
- });
1686
- Object.defineProperty(exports, "flattenOptions", {
1687
- enumerable: true,
1688
- get: function() {
1689
- return flattenOptions;
1690
- }
1691
- });
1692
-
1693
- //# sourceMappingURL=Combobox-4Bi9-N1p.cjs.map