@persona/design-system 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{Action-DnR0YTxO.d.mts → Action-CnNf5T-l.d.mts} +2 -2
  3. package/dist/Action.d.mts +1 -1
  4. package/dist/AdvancedFilterRuleRow.d.mts +3 -3
  5. package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
  6. package/dist/ArrayValueControl.d.mts +1 -1
  7. package/dist/Attribute.d.mts +2 -2
  8. package/dist/AttributeGrid.d.mts +1 -1
  9. package/dist/{Badge-DRn_r6is.mjs → Badge-BqS6Nk4J.mjs} +2 -2
  10. package/dist/{Badge-DRn_r6is.mjs.map → Badge-BqS6Nk4J.mjs.map} +1 -1
  11. package/dist/Banner.d.mts +1 -1
  12. package/dist/BooleanValueControl.d.mts +1 -1
  13. package/dist/{Breadcrumbs-Byf2ye6H.mjs → Breadcrumbs-CqKtnZqu.mjs} +8 -8
  14. package/dist/{Breadcrumbs-Byf2ye6H.mjs.map → Breadcrumbs-CqKtnZqu.mjs.map} +1 -1
  15. package/dist/{Button-DkjwN_Op.d.mts → Button-C0F0F2IL.d.mts} +2 -2
  16. package/dist/Button.d.mts +1 -1
  17. package/dist/ButtonGroup.d.mts +1 -1
  18. package/dist/Calendar-BvLNcHQM.d.mts +12 -0
  19. package/dist/Calendar.d.mts +2 -12
  20. package/dist/CalendarBase.d.mts +1 -1
  21. package/dist/{Card-CLTkZLKr.mjs → Card-BMCB9eFC.mjs} +4 -4
  22. package/dist/{Card-CLTkZLKr.mjs.map → Card-BMCB9eFC.mjs.map} +1 -1
  23. package/dist/{Card-DxFajLnx.d.mts → Card-BxNoIQWw.d.mts} +3 -3
  24. package/dist/Card.d.mts +1 -1
  25. package/dist/Card2.d.mts +1 -1
  26. package/dist/{CardV2-m9yOInMU.mjs → CardV2-B0ZweQYk.mjs} +22 -16
  27. package/dist/CardV2-B0ZweQYk.mjs.map +1 -0
  28. package/dist/{Checkbox-Bmm-r5ei.d.mts → Checkbox-Bm8exUfH.d.mts} +1 -1
  29. package/dist/{Checkbox-CU27-Aa8.mjs → Checkbox-DAvbgZgO.mjs} +5 -5
  30. package/dist/Checkbox-DAvbgZgO.mjs.map +1 -0
  31. package/dist/Checkbox.d.mts +1 -1
  32. package/dist/CheckboxGroupField.d.mts +2 -2
  33. package/dist/ChoicesValueControl.d.mts +1 -1
  34. package/dist/{Combobox-BgKEHP9p.d.mts → Combobox-C8ue0cBP.d.mts} +3 -3
  35. package/dist/{Combobox-DhTUY8JT.mjs → Combobox-xBrxiUAu.mjs} +18 -18
  36. package/dist/Combobox-xBrxiUAu.mjs.map +1 -0
  37. package/dist/Combobox.d.mts +2 -2
  38. package/dist/{ComboboxBase-Dmzn8a53.d.mts → ComboboxBase-DJGTMf1_.d.mts} +6 -6
  39. package/dist/ComboboxBase.d.mts +1 -1
  40. package/dist/{ComboboxMultiSelect-BLKUKNEW.d.mts → ComboboxMultiSelect-D7A2bbWU.d.mts} +2 -2
  41. package/dist/ComboboxMultiSelect.d.mts +1 -1
  42. package/dist/{ComboboxSingleSelect-Kpl-iOok.d.mts → ComboboxSingleSelect-D1uzEyKj.d.mts} +4 -4
  43. package/dist/ComboboxSingleSelect.d.mts +1 -1
  44. package/dist/{CompactBar-E9hPDRvI.d.mts → CompactBar-DMuvqaV5.d.mts} +3 -3
  45. package/dist/CompactBar.d.mts +1 -1
  46. package/dist/{ConfigFormGroup-GgzSDzgL.mjs → ConfigFormGroup-D2_sajXe.mjs} +2 -2
  47. package/dist/{ConfigFormGroup-GgzSDzgL.mjs.map → ConfigFormGroup-D2_sajXe.mjs.map} +1 -1
  48. package/dist/{ControlBar-DYrjBDzu.d.mts → ControlBar-Dg8JeU8f.d.mts} +2 -2
  49. package/dist/ControlBar.d.mts +1 -1
  50. package/dist/DataTable.d.mts +4 -4
  51. package/dist/DateField-Com9f2-j.d.mts +23 -0
  52. package/dist/DateField.d.mts +2 -23
  53. package/dist/DatePicker-BGO6doLx.d.mts +19 -0
  54. package/dist/{DatePicker-DpGvo7Bd.mjs → DatePicker-BlnE2MBD.mjs} +17 -16
  55. package/dist/{DatePicker-DpGvo7Bd.mjs.map → DatePicker-BlnE2MBD.mjs.map} +1 -1
  56. package/dist/DatePicker.d.mts +2 -19
  57. package/dist/DateRangePicker-DfRBm9z4.d.mts +53 -0
  58. package/dist/DateRangePicker.d.mts +2 -53
  59. package/dist/DateRangeValueControl.d.mts +19 -0
  60. package/dist/DateValueControl.d.mts +1 -1
  61. package/dist/{DropdownButton-DGgfGW_o.mjs → DropdownButton-CpWNRUma.mjs} +3 -3
  62. package/dist/{DropdownButton-DGgfGW_o.mjs.map → DropdownButton-CpWNRUma.mjs.map} +1 -1
  63. package/dist/DropdownButton.d.mts +2 -2
  64. package/dist/{DropdownMenu-DZIFSJXD.mjs → DropdownMenu-BCyV8nC0.mjs} +3 -3
  65. package/dist/{DropdownMenu-DZIFSJXD.mjs.map → DropdownMenu-BCyV8nC0.mjs.map} +1 -1
  66. package/dist/{DropdownMenu-B2t3Bwky.d.mts → DropdownMenu-CnaK78rP.d.mts} +3 -3
  67. package/dist/DropdownMenu.d.mts +1 -1
  68. package/dist/{ErrorProps-DX50vo-U.d.mts → ErrorProps-CN2XjaOX.d.mts} +1 -1
  69. package/dist/ErrorProps.d.mts +1 -1
  70. package/dist/{FieldRegistry-COyIA4VU.d.mts → FieldRegistry-DdA63Vnh.d.mts} +2 -2
  71. package/dist/FieldRegistry.d.mts +1 -1
  72. package/dist/{FilterBar-CS2YjiTr.d.mts → FilterBar-CxNsBVrn.d.mts} +5 -8
  73. package/dist/FilterBar.d.mts +1 -1
  74. package/dist/FilterPickerMenu.d.mts +3 -3
  75. package/dist/FilterPill.d.mts +1 -1
  76. package/dist/FilterPopover.d.mts +3 -13
  77. package/dist/FloatValueControl.d.mts +1 -1
  78. package/dist/FloatingPanel.d.mts +80 -0
  79. package/dist/FloatingPanelContext.d.mts +33 -0
  80. package/dist/FloatingPanelRenderer.d.mts +7 -0
  81. package/dist/{FormControl-CZFmub1N.d.mts → FormControl-Doj2gvF0.d.mts} +3 -3
  82. package/dist/{FormControl-BIXJ-FPI.mjs → FormControl-HVzZEqJH.mjs} +4 -4
  83. package/dist/FormControl-HVzZEqJH.mjs.map +1 -0
  84. package/dist/FormControl.d.mts +1 -1
  85. package/dist/{FormField-DcGQvgNW.mjs → FormField-B9P3BWvS.mjs} +50 -48
  86. package/dist/FormField-B9P3BWvS.mjs.map +1 -0
  87. package/dist/{FormField-8rlT8pm0.d.mts → FormField-D8dHbqZZ.d.mts} +2 -2
  88. package/dist/FormField.d.mts +1 -1
  89. package/dist/{Header-OLZuv8fF.d.mts → Header-CBlB65NY.d.mts} +2 -2
  90. package/dist/Header.d.mts +1 -1
  91. package/dist/{HelperTooltip-CJDG7Ugp.d.mts → HelperTooltip-C28h1zFl.d.mts} +3 -3
  92. package/dist/HelperTooltip.d.mts +1 -1
  93. package/dist/{HoverCopyableField-BHdCaR-R.mjs → HoverCopyableField-0Bzygbp9.mjs} +6 -6
  94. package/dist/{HoverCopyableField-BHdCaR-R.mjs.map → HoverCopyableField-0Bzygbp9.mjs.map} +1 -1
  95. package/dist/HoverCopyableField.d.mts +1 -1
  96. package/dist/{IconButton-DC4rh6ow.mjs → IconButton-BfDlic2K.mjs} +8 -8
  97. package/dist/IconButton-BfDlic2K.mjs.map +1 -0
  98. package/dist/{IconButton-Dc17jZPG.d.mts → IconButton-CBcW7ZU8.d.mts} +2 -2
  99. package/dist/IconButton.d.mts +1 -1
  100. package/dist/ImageTile.d.mts +2 -2
  101. package/dist/InlineCombobox.d.mts +2 -2
  102. package/dist/InlineInput.d.mts +1 -1
  103. package/dist/{Input-PWfwMSJ7.mjs → Input-Bimw8KFj.mjs} +4 -4
  104. package/dist/{Input-PWfwMSJ7.mjs.map → Input-Bimw8KFj.mjs.map} +1 -1
  105. package/dist/{Input-DsS4J78T.d.mts → Input-CVdjkX88.d.mts} +4 -4
  106. package/dist/Input.d.mts +1 -1
  107. package/dist/{InputProps-Buxtnz77.d.mts → InputProps-BwKkmImn.d.mts} +2 -2
  108. package/dist/InputProps.d.mts +1 -1
  109. package/dist/IntegerValueControl.d.mts +1 -1
  110. package/dist/Link.d.mts +1 -1
  111. package/dist/{ListBox-Nl9aOBeh.d.mts → ListBox-CDl5oZPX.d.mts} +5 -5
  112. package/dist/{ListBox-BwD-q7wF.mjs → ListBox-DKZpGYjo.mjs} +22 -15
  113. package/dist/ListBox-DKZpGYjo.mjs.map +1 -0
  114. package/dist/ListBox.d.mts +1 -1
  115. package/dist/ListBoxField.d.mts +6 -3
  116. package/dist/{LoadingShimmer-BPYPtFE1.mjs → LoadingShimmer-DC2vqicd.mjs} +1 -1
  117. package/dist/{LoadingShimmer-BPYPtFE1.mjs.map → LoadingShimmer-DC2vqicd.mjs.map} +1 -1
  118. package/dist/LoadingShimmer.d.mts +1 -1
  119. package/dist/{LogicRow-BAREMenx.d.mts → LogicRow-CkbyvrUw.d.mts} +4 -4
  120. package/dist/LogicRow.d.mts +1 -1
  121. package/dist/MaskedInput.d.mts +1 -1
  122. package/dist/{Menu-DM9OoZ71.d.mts → Menu-CYRdEnfo.d.mts} +4 -4
  123. package/dist/{Menu-DpM8o234.mjs → Menu-Dir03WA9.mjs} +3 -3
  124. package/dist/{Menu-DpM8o234.mjs.map → Menu-Dir03WA9.mjs.map} +1 -1
  125. package/dist/Menu.d.mts +1 -1
  126. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs → MiddleTruncatedText-GXI-CPvs.mjs} +3 -3
  127. package/dist/{MiddleTruncatedText-Bzpg3zAU.mjs.map → MiddleTruncatedText-GXI-CPvs.mjs.map} +1 -1
  128. package/dist/Modal.d.mts +3 -3
  129. package/dist/{PageHeader-Dq-J3san.mjs → PageHeader-C2IUKhCg.mjs} +3 -3
  130. package/dist/{PageHeader-Dq-J3san.mjs.map → PageHeader-C2IUKhCg.mjs.map} +1 -1
  131. package/dist/PageHeader.d.mts +1 -1
  132. package/dist/PageLayout.d.mts +1 -1
  133. package/dist/{PageSelector-Ca4TcyxG.d.mts → PageSelector-vay4jpMp.d.mts} +3 -3
  134. package/dist/PageSelector.d.mts +1 -1
  135. package/dist/{Pagination-GALyid4q.mjs → Pagination-0VhVdXv0.mjs} +9 -9
  136. package/dist/{Pagination-GALyid4q.mjs.map → Pagination-0VhVdXv0.mjs.map} +1 -1
  137. package/dist/{Pagination-Dcmv7bVe.d.mts → Pagination-ygLutOst.d.mts} +2 -2
  138. package/dist/Pagination.d.mts +1 -1
  139. package/dist/{Pii-BalLvfze.mjs → Pii-C7pA72Bh.mjs} +2 -2
  140. package/dist/{Pii-BalLvfze.mjs.map → Pii-C7pA72Bh.mjs.map} +1 -1
  141. package/dist/Pii.d.mts +1 -1
  142. package/dist/PillShell.d.mts +1 -1
  143. package/dist/{Popover-BZ5Bs80y.mjs → Popover-BkDpDdaO.mjs} +5 -5
  144. package/dist/{Popover-BZ5Bs80y.mjs.map → Popover-BkDpDdaO.mjs.map} +1 -1
  145. package/dist/Popover.d.mts +1 -1
  146. package/dist/ProgressBar.d.mts +1 -1
  147. package/dist/ProgressIndicator.d.mts +1 -1
  148. package/dist/{Radio-CtPz3EzX.mjs → Radio-BaFutxgV.mjs} +3 -3
  149. package/dist/Radio-BaFutxgV.mjs.map +1 -0
  150. package/dist/{RadioGroup-Xn46ovrV.d.mts → RadioGroup-BuJaitgG.d.mts} +1 -1
  151. package/dist/{RadioGroup-sjBzFE_-.mjs → RadioGroup-ClMzOZl0.mjs} +3 -3
  152. package/dist/{RadioGroup-sjBzFE_-.mjs.map → RadioGroup-ClMzOZl0.mjs.map} +1 -1
  153. package/dist/RadioGroup.d.mts +1 -1
  154. package/dist/RangeCalendar.d.mts +1 -1
  155. package/dist/RangeCalendarPresets.d.mts +1 -1
  156. package/dist/RuleEditorFields.d.mts +3 -3
  157. package/dist/RulesPill.d.mts +1 -1
  158. package/dist/{SearchInput-Try11aJD.d.mts → SearchInput-Ca3_np5e.d.mts} +3 -3
  159. package/dist/SearchInput.d.mts +1 -1
  160. package/dist/Section.d.mts +1 -1
  161. package/dist/SectionHeading.d.mts +77 -2
  162. package/dist/{SegmentedControl-BugnH-h2.mjs → SegmentedControl-DgyJL4uN.mjs} +3 -3
  163. package/dist/{SegmentedControl-BugnH-h2.mjs.map → SegmentedControl-DgyJL4uN.mjs.map} +1 -1
  164. package/dist/{SegmentedControl-DckAdhcD.d.mts → SegmentedControl-_I4sWeD7.d.mts} +2 -2
  165. package/dist/SegmentedControl.d.mts +1 -1
  166. package/dist/{Select-DL-AjL0Q.mjs → Select-D6MqSYVa.mjs} +8 -8
  167. package/dist/{Select-DL-AjL0Q.mjs.map → Select-D6MqSYVa.mjs.map} +1 -1
  168. package/dist/{Select-BmJ1OjXA.d.mts → Select-vwXGlHuW.d.mts} +4 -4
  169. package/dist/Select.d.mts +1 -1
  170. package/dist/Slider.d.mts +1 -1
  171. package/dist/SliderRHF.d.mts +1 -1
  172. package/dist/SliderThumb.d.mts +1 -1
  173. package/dist/{Spacer-Ln3KChb5.mjs → Spacer-CJp0lwkL.mjs} +1 -1
  174. package/dist/{Spacer-Ln3KChb5.mjs.map → Spacer-CJp0lwkL.mjs.map} +1 -1
  175. package/dist/{Stack-ckRN7LrP.mjs → Stack-Bl54WmhY.mjs} +1 -1
  176. package/dist/{Stack-ckRN7LrP.mjs.map → Stack-Bl54WmhY.mjs.map} +1 -1
  177. package/dist/{Stack-CbcJykx9.d.mts → Stack-CkV7k7TE.d.mts} +2 -2
  178. package/dist/Stack.d.mts +1 -1
  179. package/dist/StatusIndicator.d.mts +1 -1
  180. package/dist/{Sticker-BIVuastf.d.mts → Sticker-Dhx2wqTL.d.mts} +4 -4
  181. package/dist/{Sticker-B0TbkV4o.mjs → Sticker-xtDMuOoN.mjs} +3 -3
  182. package/dist/{Sticker-B0TbkV4o.mjs.map → Sticker-xtDMuOoN.mjs.map} +1 -1
  183. package/dist/Sticker.d.mts +1 -1
  184. package/dist/StringValueControl.d.mts +1 -1
  185. package/dist/SwatchPicker.d.mts +1 -1
  186. package/dist/Tab.d.mts +2 -2
  187. package/dist/{TabBar-DLf4Hwa4.mjs → TabBar-D6UocZXi.mjs} +4 -4
  188. package/dist/{TabBar-DLf4Hwa4.mjs.map → TabBar-D6UocZXi.mjs.map} +1 -1
  189. package/dist/TabBarIconButton.d.mts +1 -1
  190. package/dist/{Table-C-mx8Uj0.mjs → Table-D1WyUQuv.mjs} +4 -4
  191. package/dist/{Table-C-mx8Uj0.mjs.map → Table-D1WyUQuv.mjs.map} +1 -1
  192. package/dist/{Table-8jXlKYLy.d.mts → Table-cO7ZwGPM.d.mts} +1 -1
  193. package/dist/Table.d.mts +1 -1
  194. package/dist/{TableBody-ByEcFueE.d.mts → TableBody-CirMgfAV.d.mts} +1 -1
  195. package/dist/TableBody.d.mts +1 -1
  196. package/dist/{TableBox-DGjKVQFO.mjs → TableBox-C5qWhr82.mjs} +12 -12
  197. package/dist/{TableBox-DGjKVQFO.mjs.map → TableBox-C5qWhr82.mjs.map} +1 -1
  198. package/dist/TableBox.d.mts +2 -2
  199. package/dist/{TableBoxCell-BmoPs1u1.d.mts → TableBoxCell-DmVX_tgn.d.mts} +7 -7
  200. package/dist/TableBoxCell.d.mts +1 -1
  201. package/dist/TableBoxField.d.mts +4 -4
  202. package/dist/{TableBoxRow-BAYvEDjT.d.mts → TableBoxRow-nwq41Bpi.d.mts} +4 -4
  203. package/dist/TableBoxRow.d.mts +1 -1
  204. package/dist/{TableBoxRowActions-DRs4MdK0.d.mts → TableBoxRowActions-B4_ojiQo.d.mts} +2 -2
  205. package/dist/TableBoxRowActions.d.mts +1 -1
  206. package/dist/TableCell.d.mts +1 -1
  207. package/dist/{TableControls-BK8DCsqi.mjs → TableControls-CZ9iu3ma.mjs} +181 -62
  208. package/dist/TableControls-CZ9iu3ma.mjs.map +1 -0
  209. package/dist/{TableControls-DscP6fyt.d.mts → TableControls-RwIPBxyU.d.mts} +4 -4
  210. package/dist/TableControls.d.mts +1 -1
  211. package/dist/{TableControlsContext-BeJ7GHPN.d.mts → TableControlsContext-D_SBFZN1.d.mts} +2 -2
  212. package/dist/TableControlsContext.d.mts +1 -1
  213. package/dist/{TableHead-g3afLl5B.d.mts → TableHead-DMq_q_W0.d.mts} +1 -1
  214. package/dist/TableHead.d.mts +1 -1
  215. package/dist/{TableHeaderCell-CWTMf2Fe.d.mts → TableHeaderCell-C2pqXBYO.d.mts} +1 -1
  216. package/dist/TableHeaderCell.d.mts +1 -1
  217. package/dist/{TableLayout-hPlVO3dD.d.mts → TableLayout-DQKu6Rcj.d.mts} +1 -1
  218. package/dist/TableLayout.d.mts +1 -1
  219. package/dist/{TableRow-lvjbVccA.d.mts → TableRow-CPqZ8DK3.d.mts} +1 -1
  220. package/dist/TableRow.d.mts +1 -1
  221. package/dist/TableTH.d.mts +1 -1
  222. package/dist/{TableViewConfigurationDropdown-Ccxtk5dA.d.mts → TableViewConfigurationDropdown-BYPh4dIP.d.mts} +2 -2
  223. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  224. package/dist/{TechnicalSticker-BrvR0zhC.mjs → TechnicalSticker-DTjg6d2F.mjs} +5 -5
  225. package/dist/{TechnicalSticker-BrvR0zhC.mjs.map → TechnicalSticker-DTjg6d2F.mjs.map} +1 -1
  226. package/dist/TechnicalSticker.d.mts +1 -1
  227. package/dist/{Text-hEoPeOc9.mjs → Text-RcEfNFLx.mjs} +1 -1
  228. package/dist/{Text-hEoPeOc9.mjs.map → Text-RcEfNFLx.mjs.map} +1 -1
  229. package/dist/{TextArea-DiKEhpfD.d.mts → TextArea-DhPBI_1-.d.mts} +2 -2
  230. package/dist/{TextArea-BFsXUkuj.mjs → TextArea-ZMgbE_Lh.mjs} +2 -2
  231. package/dist/{TextArea-BFsXUkuj.mjs.map → TextArea-ZMgbE_Lh.mjs.map} +1 -1
  232. package/dist/TextArea.d.mts +1 -1
  233. package/dist/{TextUnderlineTooltip-Bs6Jn5yr.d.mts → TextUnderlineTooltip-BzmmiJlC.d.mts} +3 -3
  234. package/dist/TextUnderlineTooltip.d.mts +1 -1
  235. package/dist/Tile.d.mts +2 -2
  236. package/dist/Toast.d.mts +1 -1
  237. package/dist/{Toggle-oukvAn6V.d.mts → Toggle-BGGQ4Ukl.d.mts} +1 -1
  238. package/dist/{Toggle-CC2FTAKS.mjs → Toggle-BPgfSjuu.mjs} +4 -4
  239. package/dist/{Toggle-CC2FTAKS.mjs.map → Toggle-BPgfSjuu.mjs.map} +1 -1
  240. package/dist/Toggle.d.mts +1 -1
  241. package/dist/{Tooltip-CDvOu1UN.mjs → Tooltip-BvDbmXak.mjs} +3 -3
  242. package/dist/{Tooltip-CDvOu1UN.mjs.map → Tooltip-BvDbmXak.mjs.map} +1 -1
  243. package/dist/{Tooltip-0iXDCV2O.d.mts → Tooltip-D_a-RwAN.d.mts} +3 -3
  244. package/dist/Tooltip.d.mts +1 -1
  245. package/dist/{TruncatedText-CdeU19Ev.d.mts → TruncatedText-BJnowVTx.d.mts} +1 -1
  246. package/dist/components/Attribute/index.mjs +9 -10
  247. package/dist/components/Attribute/index.mjs.map +1 -1
  248. package/dist/components/Badge/index.mjs +1 -1
  249. package/dist/components/Banner/index.mjs +1 -1
  250. package/dist/components/Breadcrumbs/index.mjs +1 -1
  251. package/dist/components/Button/index.d.mts +2 -2
  252. package/dist/components/Button/index.mjs +1 -1
  253. package/dist/components/ButtonGroup/index.mjs +2 -2
  254. package/dist/components/Card/index.d.mts +2 -2
  255. package/dist/components/Card/index.mjs +1 -1
  256. package/dist/components/CardV2/index.d.mts +3 -2
  257. package/dist/components/CardV2/index.mjs +2 -2
  258. package/dist/components/Checkbox/index.d.mts +1 -1
  259. package/dist/components/Checkbox/index.mjs +1 -1
  260. package/dist/components/Combobox/index.d.mts +2 -2
  261. package/dist/components/Combobox/index.mjs +1 -1
  262. package/dist/components/ConfigFormGroup/index.mjs +1 -1
  263. package/dist/components/DataTable/TableControls/index.d.mts +16 -16
  264. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  265. package/dist/components/DataTable/index.mjs +27 -29
  266. package/dist/components/DataTable/index.mjs.map +1 -1
  267. package/dist/components/DataTable/types.d.mts +2 -2
  268. package/dist/components/DatePicker/index.d.mts +4 -4
  269. package/dist/components/DatePicker/index.mjs +1 -1
  270. package/dist/components/DropdownButton/index.mjs +1 -1
  271. package/dist/components/DropdownMenu/index.d.mts +1 -1
  272. package/dist/components/DropdownMenu/index.mjs +1 -1
  273. package/dist/components/FloatingPanel/index.d.mts +5 -0
  274. package/dist/components/FloatingPanel/index.mjs +635 -0
  275. package/dist/components/FloatingPanel/index.mjs.map +1 -0
  276. package/dist/components/FormControl/index.d.mts +2 -2
  277. package/dist/components/FormControl/index.mjs +1 -1
  278. package/dist/components/FormField/index.d.mts +1 -1
  279. package/dist/components/FormField/index.mjs +1 -1
  280. package/dist/components/HoverCopyableField/index.mjs +1 -1
  281. package/dist/components/ImageTile/index.mjs +8 -8
  282. package/dist/components/Input/index.d.mts +1 -1
  283. package/dist/components/Input/index.mjs +1 -1
  284. package/dist/components/Link/index.mjs +1 -1
  285. package/dist/components/ListBox/index.d.mts +3 -3
  286. package/dist/components/ListBox/index.mjs +1 -1
  287. package/dist/components/LoadingShimmer/index.mjs +1 -1
  288. package/dist/components/MaskedInput/index.mjs +2 -2
  289. package/dist/components/Menu/index.d.mts +1 -1
  290. package/dist/components/Menu/index.mjs +1 -1
  291. package/dist/components/Modal/index.mjs +11 -12
  292. package/dist/components/Modal/index.mjs.map +1 -1
  293. package/dist/components/PageHeader/index.mjs +1 -1
  294. package/dist/components/Pagination/index.d.mts +3 -3
  295. package/dist/components/Pagination/index.mjs +1 -1
  296. package/dist/components/Pii/index.mjs +1 -1
  297. package/dist/components/Popover/index.mjs +1 -1
  298. package/dist/components/ProgressBar/index.mjs +3 -3
  299. package/dist/components/ProgressBar/index.mjs.map +1 -1
  300. package/dist/components/Radio/index.mjs +1 -1
  301. package/dist/components/RadioGroup/index.d.mts +1 -1
  302. package/dist/components/RadioGroup/index.mjs +1 -1
  303. package/dist/components/SegmentedControl/index.d.mts +1 -1
  304. package/dist/components/SegmentedControl/index.mjs +1 -1
  305. package/dist/components/Select/index.d.mts +1 -1
  306. package/dist/components/Select/index.mjs +1 -1
  307. package/dist/components/Slider/index.mjs +4 -4
  308. package/dist/components/Slider/index.mjs.map +1 -1
  309. package/dist/components/Spacer/index.mjs +1 -1
  310. package/dist/components/Stack/index.d.mts +1 -1
  311. package/dist/components/Stack/index.mjs +1 -1
  312. package/dist/components/Sticker/index.d.mts +1 -1
  313. package/dist/components/Sticker/index.mjs +1 -1
  314. package/dist/components/TabBar/index.mjs +1 -1
  315. package/dist/components/Table/index.d.mts +7 -7
  316. package/dist/components/Table/index.mjs +1 -1
  317. package/dist/components/TableBox/index.d.mts +2 -2
  318. package/dist/components/TableBox/index.mjs +1 -1
  319. package/dist/components/TechnicalSticker/index.mjs +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 +1 -1
  330. package/dist/{constants-bA9kCzRQ.d.mts → constants-BASogfT_.d.mts} +1 -1
  331. package/dist/constants.d.mts +1 -1
  332. package/dist/display.d.mts +1 -1
  333. package/dist/fieldPickerOptions.d.mts +2 -2
  334. package/dist/{filter-size-context-C1TvrE_O.d.mts → filter-size-context-Bw5F7082.d.mts} +2 -2
  335. package/dist/filter-size-context.d.mts +1 -1
  336. package/dist/helpers.d.mts +1 -1
  337. package/dist/{index-BC4edEsD.d.mts → index--5Mfhlkj.d.mts} +2 -2
  338. package/dist/{index-DJn4AeE4.d.mts → index-C1bz13uw.d.mts} +4 -4
  339. package/dist/{index-CdaoOvFH.d.mts → index-DiCnyORA.d.mts} +5 -5
  340. package/dist/index.d.mts +1 -1
  341. package/dist/index2.d.mts +1 -1
  342. package/dist/index3.d.mts +3 -3
  343. package/dist/index4.d.mts +11 -11
  344. package/dist/{input-D3Qd6dI8.d.mts → input-CzO-6_1V.d.mts} +2 -2
  345. package/dist/inputFields.d.mts +12 -26
  346. package/dist/lib/ConfigContext.d.mts +4 -1
  347. package/dist/lib/ConfigContext.mjs.map +1 -1
  348. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  349. package/dist/lib/TruncatedText.d.mts +1 -1
  350. package/dist/lib/TruncatedText.mjs +1 -1
  351. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  352. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  353. package/dist/lib/message.d.mts +1 -1
  354. package/dist/lib/pseudoClass.d.mts +7 -7
  355. package/dist/{message-CsK3sIq0.d.mts → message-Cu84fcqB.d.mts} +1 -1
  356. package/dist/mixins/input.d.mts +1 -1
  357. package/dist/{operators-C_xPzItk.d.mts → operators-CmSqHnTH.d.mts} +24 -3
  358. package/dist/operators.d.mts +2 -2
  359. package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
  360. package/dist/{types-mb3woqzE.d.mts → types-C-TkDdkG.d.mts} +6 -3
  361. package/dist/{types-CjHuZoVJ.d.mts → types-DEh_pXgS.d.mts} +1 -1
  362. package/dist/{types-BKEwt0uq.d.mts → types-NJtAxsU1.d.mts} +2 -2
  363. package/dist/{types-DVsBRqjZ.d.mts → types-TV9nVfSe.d.mts} +1 -1
  364. package/dist/types.d.mts +1 -1
  365. package/dist/types2.d.mts +1 -1
  366. package/dist/types3.d.mts +1 -1
  367. package/dist/types4.d.mts +1 -1
  368. package/dist/useComboboxFooterAction.d.mts +1 -1
  369. package/dist/{useFilterStateV2-CGzRyv0i.d.mts → useFilterStateV2-C4itmN4S.d.mts} +3 -3
  370. package/dist/useFilterStateV2.d.mts +1 -1
  371. package/dist/{useFormField-DhwEi45-.d.mts → useFormField-B2U4GOH4.d.mts} +2 -2
  372. package/dist/useFormField.d.mts +1 -1
  373. package/dist/{useTableBoxDragAndDrop-CsnN52lx.d.mts → useTableBoxDragAndDrop-CpemHLhL.d.mts} +1 -1
  374. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  375. package/dist/{useToggle-3k3EkV8V.mjs → useToggle-Bo3yd14Y.mjs} +1 -1
  376. package/dist/{useToggle-3k3EkV8V.mjs.map → useToggle-Bo3yd14Y.mjs.map} +1 -1
  377. package/dist/useTruncation.d.mts +1 -1
  378. package/dist/utils/storybook.mjs +1 -1
  379. package/dist/utils/testing.d.mts +1 -1
  380. package/dist/utils/testing.mjs +1 -1
  381. package/dist/utils.d.mts +1 -1
  382. package/dist/utils3.d.mts +7 -0
  383. package/dist/{validation-BdP2vajF.d.mts → validation-B5IXsdkE.d.mts} +3 -3
  384. package/dist/validation.d.mts +1 -1
  385. package/dist/{value-control-resolver-CiGEHQAc.d.mts → value-control-resolver-BPlTeIX7.d.mts} +2 -2
  386. package/dist/value-control-resolver.d.mts +1 -1
  387. package/llms.txt +1 -1
  388. package/package.json +5 -2
  389. package/skills/ui-authoring/SKILL.md +1 -1
  390. package/dist/CardV2-m9yOInMU.mjs.map +0 -1
  391. package/dist/Checkbox-CU27-Aa8.mjs.map +0 -1
  392. package/dist/Combobox-DhTUY8JT.mjs.map +0 -1
  393. package/dist/FormControl-BIXJ-FPI.mjs.map +0 -1
  394. package/dist/FormField-DcGQvgNW.mjs.map +0 -1
  395. package/dist/IconButton-DC4rh6ow.mjs.map +0 -1
  396. package/dist/ListBox-BwD-q7wF.mjs.map +0 -1
  397. package/dist/Radio-CtPz3EzX.mjs.map +0 -1
  398. package/dist/SectionHeading-DvP9NEgN.d.mts +0 -71
  399. package/dist/TableControls-BK8DCsqi.mjs.map +0 -1
  400. /package/dist/{index-0-W_aPej.d.mts → index-BMBcfD_R.d.mts} +0 -0
  401. /package/dist/{index-7in8TPrM.d.mts → index-BYd3Btr1.d.mts} +0 -0
  402. /package/dist/{index-B4woaFSm.d.mts → index-CNxS4Tlu.d.mts} +0 -0
  403. /package/dist/{index-BINnViIh.d.mts → index-CWB6exYm.d.mts} +0 -0
  404. /package/dist/{index-BNRXMhlr.d.mts → index-CtJuGxUp.d.mts} +0 -0
  405. /package/dist/{index-BO_854F2.d.mts → index-CzItj62a.d.mts} +0 -0
  406. /package/dist/{index-CCt0lwyI.d.mts → index-D4DUvwPf.d.mts} +0 -0
  407. /package/dist/{index-CREkvfw9.d.mts → index-D5tSVhTd.d.mts} +0 -0
  408. /package/dist/{index-Ci-uuV07.d.mts → index-DGsJdI5l.d.mts} +0 -0
  409. /package/dist/{index-CzUpNo0e.d.mts → index-DkrC-i1D.d.mts} +0 -0
  410. /package/dist/{index-DDdPqD_H.d.mts → index-DztUdPP_.d.mts} +0 -0
  411. /package/dist/{index-DeVKzGce.d.mts → index-IE5cwTAE2.d.mts} +0 -0
  412. /package/dist/{index-uMNhmxEh.d.mts → index-e6k85DKM.d.mts} +0 -0
@@ -1,4 +1,4 @@
1
- import { a as FilterField, c as FilterOperator, l as FilterRule, s as FilterFieldType, u as FilterRuleValue } from "./types-mb3woqzE.mjs";
1
+ import { a as FilterField, c as FilterOperator, l as FilterRule, r as DateRangeFilterValue, s as FilterFieldType, u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
2
2
 
3
3
  //#region components/DataTable/TableControls/FiltersV2/operators.d.ts
4
4
  declare function getOperatorsForType(type: FilterFieldType): ReadonlyArray<FilterOperator>;
@@ -16,6 +16,13 @@ declare function getOperatorsForType(type: FilterFieldType): ReadonlyArray<Filte
16
16
  declare function getOperatorsForField(field: Pick<FilterField, 'type' | 'allowedOperators'>): ReadonlyArray<FilterOperator>;
17
17
  declare function getDefaultOperatorForType(type: FilterFieldType): FilterOperator;
18
18
  declare function isValuelessOperator(operator: FilterOperator): boolean;
19
+ declare function isRangeOperator(operator: FilterOperator): boolean;
20
+ /**
21
+ * Whether `value` carries both endpoints of a range. Shared by the pill,
22
+ * the validators, and the serialize boundary so "complete enough to send"
23
+ * has one definition.
24
+ */
25
+ declare function isCompleteDateRange(value: FilterRuleValue): value is DateRangeFilterValue;
19
26
  /**
20
27
  * Whether a concrete field's operator selector should be shown. A field
21
28
  * pinned to one operator renders it as static text rather than a caret that
@@ -38,6 +45,20 @@ declare function withValue(rule: FilterRule, value: FilterRuleValue): FilterRule
38
45
  * reads as a removal and drops the pill mid-edit.
39
46
  */
40
47
  declare function emptyValueForFieldType(type: FilterFieldType): FilterRuleValue;
48
+ /**
49
+ * Empty-but-present value for a concrete `(field, operator)` pair. Prefer this
50
+ * over {@link emptyValueForFieldType} anywhere an operator is in hand: the same
51
+ * `date` field seeds an empty string for `before` and an empty range for
52
+ * `between`.
53
+ */
54
+ declare function emptyValueForRule(field: Pick<FilterField, 'type'>, operator: FilterOperator): FilterRuleValue;
55
+ /**
56
+ * Carry `value` across an operator change, replacing it with a fresh draft
57
+ * when the two operators disagree about value shape. Switching a date pill
58
+ * from `after` to `between` must not leave the old ISO day string behind —
59
+ * the range control can't read it and the wire format would reject it.
60
+ */
61
+ declare function reconcileValueForOperator(field: Pick<FilterField, 'type'>, nextOperator: FilterOperator, previousOperator: FilterOperator, value: FilterRuleValue): FilterRuleValue;
41
62
  //#endregion
42
- export { getOperatorsForField as a, withValue as c, getOperatorLabel as i, fieldHasMultipleOperators as n, getOperatorsForType as o, getDefaultOperatorForType as r, isValuelessOperator as s, emptyValueForFieldType as t };
43
- //# sourceMappingURL=operators-C_xPzItk.d.mts.map
63
+ export { getOperatorLabel as a, isCompleteDateRange as c, reconcileValueForOperator as d, withValue as f, getDefaultOperatorForType as i, isRangeOperator as l, emptyValueForRule as n, getOperatorsForField as o, fieldHasMultipleOperators as r, getOperatorsForType as s, emptyValueForFieldType as t, isValuelessOperator as u };
64
+ //# sourceMappingURL=operators-CmSqHnTH.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as getOperatorsForField, c as withValue, i as getOperatorLabel, n as fieldHasMultipleOperators, o as getOperatorsForType, r as getDefaultOperatorForType, s as isValuelessOperator, t as emptyValueForFieldType } from "./operators-C_xPzItk.mjs";
2
- export { emptyValueForFieldType, fieldHasMultipleOperators, getDefaultOperatorForType, getOperatorLabel, getOperatorsForField, getOperatorsForType, isValuelessOperator, withValue };
1
+ import { a as getOperatorLabel, c as isCompleteDateRange, d as reconcileValueForOperator, f as withValue, i as getDefaultOperatorForType, l as isRangeOperator, n as emptyValueForRule, o as getOperatorsForField, r as fieldHasMultipleOperators, s as getOperatorsForType, t as emptyValueForFieldType, u as isValuelessOperator } from "./operators-CmSqHnTH.mjs";
2
+ export { emptyValueForFieldType, emptyValueForRule, fieldHasMultipleOperators, getDefaultOperatorForType, getOperatorLabel, getOperatorsForField, getOperatorsForType, isCompleteDateRange, isRangeOperator, isValuelessOperator, reconcileValueForOperator, withValue };
@@ -1,8 +1,8 @@
1
- import { n as Stack, t as HStack } from "../../Stack-ckRN7LrP.mjs";
2
- import { t as LoadingShimmer } from "../../LoadingShimmer-BPYPtFE1.mjs";
3
- import { t as Card_default } from "../../CardV2-m9yOInMU.mjs";
4
- import { h as Table, m as TableHeaderCell, n as TableBody, p as TableRow, r as TableHead, s as TableCell } from "../../Table-C-mx8Uj0.mjs";
5
- import { n as PageHeaderContainer } from "../../PageHeader-Dq-J3san.mjs";
1
+ import { n as Stack, t as HStack } from "../../Stack-Bl54WmhY.mjs";
2
+ import { t as LoadingShimmer } from "../../LoadingShimmer-DC2vqicd.mjs";
3
+ import { t as Card_default } from "../../CardV2-B0ZweQYk.mjs";
4
+ import { h as Table, m as TableHeaderCell, n as TableBody, p as TableRow, r as TableHead, s as TableCell } from "../../Table-D1WyUQuv.mjs";
5
+ import { n as PageHeaderContainer } from "../../PageHeader-C2IUKhCg.mjs";
6
6
  import { Color, Spacing } from "@persona/design-tokens";
7
7
  import styled from "styled-components";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -27,7 +27,7 @@ type FilterFieldType = 'string' | 'email' | 'choices' | 'multi_choices' | 'boole
27
27
  * the per-type vocabulary in `operators.ts`, the label map, and the adapter's
28
28
  * `normalizeValue` switch.
29
29
  */
30
- type FilterOperator = 'is' | 'is_not' | 'contains' | 'does_not_contain' | 'is_empty' | 'is_not_empty' | 'is_true' | 'is_false' | 'before' | 'after';
30
+ type FilterOperator = 'is' | 'is_not' | 'contains' | 'does_not_contain' | 'is_empty' | 'is_not_empty' | 'is_true' | 'is_false' | 'before' | 'after' /** Inclusive range over a `date` field. Its value is a {@link DateRangeFilterValue}. */ | 'between';
31
31
  /** Whether a field is a system/built-in field or a custom field on a parent record type. */
32
32
  type FilterFieldSource = 'system' | 'custom';
33
33
  /**
@@ -90,7 +90,10 @@ interface FilterField {
90
90
  */
91
91
  allowedOperators?: ReadonlyArray<FilterOperator>;
92
92
  }
93
- /** ISO calendar-date range for legacy index date filters. */
93
+ /**
94
+ * ISO calendar-date range. Carried by `date_range` fields and by the
95
+ * `between` operator on a `date` field.
96
+ */
94
97
  interface DateRangeFilterValue {
95
98
  startDate?: string;
96
99
  endDate?: string;
@@ -154,4 +157,4 @@ type FilterSize = 'sm' | 'md';
154
157
  declare const EMPTY_FILTER_STATE: FilterStateV2;
155
158
  //#endregion
156
159
  export { FilterField as a, FilterOperator as c, FilterSize as d, FilterStateV2 as f, EMPTY_FILTER_STATE as i, FilterRule as l, CompoundExpression as n, FilterFieldSource as o, TopLevelFilterRule as p, DateRangeFilterValue as r, FilterFieldType as s, AndGroup as t, FilterRuleValue as u };
157
- //# sourceMappingURL=types-mb3woqzE.d.mts.map
160
+ //# sourceMappingURL=types-C-TkDdkG.d.mts.map
@@ -22,4 +22,4 @@ interface BaseActiveFilter<TFilter extends BaseFilterConfig = BaseFilterConfig>
22
22
  }
23
23
  //#endregion
24
24
  export { BaseActiveFilter as n, BaseFilterConfig as r, AttributeColumn as t };
25
- //# sourceMappingURL=types-CjHuZoVJ.d.mts.map
25
+ //# sourceMappingURL=types-DEh_pXgS.d.mts.map
@@ -1,4 +1,4 @@
1
- import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-mb3woqzE.mjs";
1
+ import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
2
2
  import { ReactElement } from "react";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/value-controls/types.d.ts
@@ -42,4 +42,4 @@ interface ValueControlProps {
42
42
  }
43
43
  //#endregion
44
44
  export { ValueControlProps as t };
45
- //# sourceMappingURL=types-BKEwt0uq.d.mts.map
45
+ //# sourceMappingURL=types-NJtAxsU1.d.mts.map
@@ -7,4 +7,4 @@ interface PaginationParams {
7
7
  }
8
8
  //#endregion
9
9
  export { PaginationParams as t };
10
- //# sourceMappingURL=types-DVsBRqjZ.d.mts.map
10
+ //# sourceMappingURL=types-TV9nVfSe.d.mts.map
package/dist/types.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { n as BaseActiveFilter, r as BaseFilterConfig, t as AttributeColumn } from "./types-CjHuZoVJ.mjs";
1
+ import { n as BaseActiveFilter, r as BaseFilterConfig, t as AttributeColumn } from "./types-DEh_pXgS.mjs";
2
2
  export { AttributeColumn, BaseActiveFilter, BaseFilterConfig };
package/dist/types2.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as FilterField, c as FilterOperator, d as FilterSize, f as FilterStateV2, i as EMPTY_FILTER_STATE, l as FilterRule, n as CompoundExpression, o as FilterFieldSource, p as TopLevelFilterRule, r as DateRangeFilterValue, s as FilterFieldType, t as AndGroup, u as FilterRuleValue } from "./types-mb3woqzE.mjs";
1
+ import { a as FilterField, c as FilterOperator, d as FilterSize, f as FilterStateV2, i as EMPTY_FILTER_STATE, l as FilterRule, n as CompoundExpression, o as FilterFieldSource, p as TopLevelFilterRule, r as DateRangeFilterValue, s as FilterFieldType, t as AndGroup, u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
2
2
  export { AndGroup, CompoundExpression, DateRangeFilterValue, EMPTY_FILTER_STATE, FilterField, FilterFieldSource, FilterFieldType, FilterOperator, FilterRule, FilterRuleValue, FilterSize, FilterStateV2, TopLevelFilterRule };
package/dist/types3.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { t as ValueControlProps } from "./types-BKEwt0uq.mjs";
1
+ import { t as ValueControlProps } from "./types-NJtAxsU1.mjs";
2
2
  export { ValueControlProps };
package/dist/types4.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { t as PaginationParams } from "./types-DVsBRqjZ.mjs";
1
+ import { t as PaginationParams } from "./types-TV9nVfSe.mjs";
2
2
  export { PaginationParams };
@@ -1,4 +1,4 @@
1
- import { p as FooterAction } from "./ComboboxBase-Dmzn8a53.mjs";
1
+ import { p as FooterAction } from "./ComboboxBase-DJGTMf1_.mjs";
2
2
  import { KeyboardEvent } from "react";
3
3
 
4
4
  //#region components/Combobox/useComboboxFooterAction.d.ts
@@ -1,5 +1,5 @@
1
- import { f as FilterStateV2, l as FilterRule, n as CompoundExpression } from "./types-mb3woqzE.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-COyIA4VU.mjs";
1
+ import { f as FilterStateV2, l as FilterRule, n as CompoundExpression } from "./types-C-TkDdkG.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-DdA63Vnh.mjs";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/useFilterStateV2.d.ts
5
5
  interface UseFilterStateV2Options {
@@ -90,4 +90,4 @@ interface UseFilterStateV2Result {
90
90
  declare function useFilterStateV2(options: UseFilterStateV2Options): UseFilterStateV2Result;
91
91
  //#endregion
92
92
  export { UseFilterStateV2Result as n, useFilterStateV2 as r, UseFilterStateV2Options as t };
93
- //# sourceMappingURL=useFilterStateV2-CGzRyv0i.d.mts.map
93
+ //# sourceMappingURL=useFilterStateV2-C4itmN4S.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as UseFilterStateV2Result, r as useFilterStateV2, t as UseFilterStateV2Options } from "./useFilterStateV2-CGzRyv0i.mjs";
1
+ import { n as UseFilterStateV2Result, r as useFilterStateV2, t as UseFilterStateV2Options } from "./useFilterStateV2-C4itmN4S.mjs";
2
2
  export { UseFilterStateV2Options, UseFilterStateV2Result, useFilterStateV2 };
@@ -1,4 +1,4 @@
1
- import { t as ErrorProps } from "./ErrorProps-DX50vo-U.mjs";
1
+ import { t as ErrorProps } from "./ErrorProps-CN2XjaOX.mjs";
2
2
  import * as _$react from "react";
3
3
 
4
4
  //#region components/FormControl/useFormField.d.ts
@@ -27,4 +27,4 @@ declare const useFormField: (props: Partial<FormControlContextProps>) => {
27
27
  };
28
28
  //#endregion
29
29
  export { FormControlContextProps as n, useFormField as r, FormControlContext as t };
30
- //# sourceMappingURL=useFormField-DhwEi45-.d.mts.map
30
+ //# sourceMappingURL=useFormField-B2U4GOH4.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as FormControlContextProps, r as useFormField, t as FormControlContext } from "./useFormField-DhwEi45-.mjs";
1
+ import { n as FormControlContextProps, r as useFormField, t as FormControlContext } from "./useFormField-B2U4GOH4.mjs";
2
2
  export { FormControlContext, FormControlContextProps, useFormField as default };
@@ -66,4 +66,4 @@ declare const useTableBoxDragAndDrop: <T extends object>({
66
66
  }: UseTableBoxDragAndDropArgs<T>) => UseTableBoxDragAndDropResult;
67
67
  //#endregion
68
68
  export { ReorderConfig as n, useTableBoxDragAndDrop as r, DragDirection as t };
69
- //# sourceMappingURL=useTableBoxDragAndDrop-CsnN52lx.d.mts.map
69
+ //# sourceMappingURL=useTableBoxDragAndDrop-CpemHLhL.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as ReorderConfig, r as useTableBoxDragAndDrop, t as DragDirection } from "./useTableBoxDragAndDrop-CsnN52lx.mjs";
1
+ import { n as ReorderConfig, r as useTableBoxDragAndDrop, t as DragDirection } from "./useTableBoxDragAndDrop-CpemHLhL.mjs";
2
2
  export { DragDirection, ReorderConfig, useTableBoxDragAndDrop };
@@ -18,4 +18,4 @@ function useToggle(initialValue = false) {
18
18
  //#endregion
19
19
  export { useToggle as t };
20
20
 
21
- //# sourceMappingURL=useToggle-3k3EkV8V.mjs.map
21
+ //# sourceMappingURL=useToggle-Bo3yd14Y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useToggle-3k3EkV8V.mjs","names":[],"sources":["../lib/useToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ninterface UseToggleCallbacks {\n set: (value: boolean) => void;\n toggle: () => void;\n enable: () => void;\n disable: () => void;\n}\n\n/**\n * useToggle\n *\n * Boolean state hook that provides callbacks for enabling, disabling, flipping\n * and setting state.\n */\nexport default function useToggle(initialValue = false): [boolean, UseToggleCallbacks] {\n const [value, setValue] = useState<boolean>(!!initialValue);\n const set = useCallback((newValue: boolean) => setValue(newValue), []);\n const toggle = useCallback(() => setValue(!value), [value]);\n const enable = useCallback(() => setValue(true), []);\n const disable = useCallback(() => setValue(false), []);\n return [value, { set, toggle, enable, disable }];\n}\n"],"mappings":";;;;;;;;AAeA,SAAwB,UAAU,eAAe,OAAsC;CACrF,MAAM,CAAC,OAAO,YAAY,SAAkB,CAAC,CAAC,aAAa;AAK3D,QAAO,CAAC,OAAO;EAAE,KAJL,aAAa,aAAsB,SAAS,SAAS,EAAE,EAAE,CAIjD;EAAE,QAHP,kBAAkB,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAG9B;EAAE,QAFf,kBAAkB,SAAS,KAAK,EAAE,EAAE,CAEf;EAAE,SADtB,kBAAkB,SAAS,MAAM,EAAE,EAAE,CACR;EAAE,CAAC"}
1
+ {"version":3,"file":"useToggle-Bo3yd14Y.mjs","names":[],"sources":["../lib/useToggle.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ninterface UseToggleCallbacks {\n set: (value: boolean) => void;\n toggle: () => void;\n enable: () => void;\n disable: () => void;\n}\n\n/**\n * useToggle\n *\n * Boolean state hook that provides callbacks for enabling, disabling, flipping\n * and setting state.\n */\nexport default function useToggle(initialValue = false): [boolean, UseToggleCallbacks] {\n const [value, setValue] = useState<boolean>(!!initialValue);\n const set = useCallback((newValue: boolean) => setValue(newValue), []);\n const toggle = useCallback(() => setValue(!value), [value]);\n const enable = useCallback(() => setValue(true), []);\n const disable = useCallback(() => setValue(false), []);\n return [value, { set, toggle, enable, disable }];\n}\n"],"mappings":";;;;;;;;AAeA,SAAwB,UAAU,eAAe,OAAsC;CACrF,MAAM,CAAC,OAAO,YAAY,SAAkB,CAAC,CAAC,aAAa;AAK3D,QAAO,CAAC,OAAO;EAAE,KAJL,aAAa,aAAsB,SAAS,SAAS,EAAE,EAAE,CAIjD;EAAE,QAHP,kBAAkB,SAAS,CAAC,MAAM,EAAE,CAAC,MAAM,CAG9B;EAAE,QAFf,kBAAkB,SAAS,KAAK,EAAE,EAAE,CAEf;EAAE,SADtB,kBAAkB,SAAS,MAAM,EAAE,EAAE,CACR;EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { i as ComboboxOption } from "./ComboboxBase-Dmzn8a53.mjs";
1
+ import { i as ComboboxOption } from "./ComboboxBase-DJGTMf1_.mjs";
2
2
  import { MutableRefObject, RefObject } from "react";
3
3
 
4
4
  //#region components/Combobox/useTruncation.d.ts
@@ -1,4 +1,4 @@
1
- import { n as Stack } from "../Stack-ckRN7LrP.mjs";
1
+ import { n as Stack } from "../Stack-Bl54WmhY.mjs";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region utils/storybook.tsx
4
4
  const withStack = (Story) => {
@@ -1,6 +1,6 @@
1
- import { ReactElement } from "react";
2
1
  import * as _$_testing_library_react0 from "@testing-library/react";
3
2
  import { RenderOptions, screen } from "@testing-library/react";
3
+ import { ReactElement } from "react";
4
4
  import * as _$_testing_library_dom_types_queries0 from "@testing-library/dom/types/queries";
5
5
 
6
6
  //#region utils/testing.d.ts
@@ -1,7 +1,7 @@
1
1
  import PDSProvider from "../lib/PDSProvider.mjs";
2
- import { RouterProvider } from "react-aria-components";
3
2
  import { Fragment, jsx } from "react/jsx-runtime";
4
3
  import { render, screen } from "@testing-library/react";
4
+ import { RouterProvider } from "react-aria-components";
5
5
  import { RouterProvider as RouterProvider$1, createMemoryRouter } from "react-router-dom";
6
6
  //#region utils/testing.tsx
7
7
  const AllTheProviders = ({ children, includeRouter = false }) => {
package/dist/utils.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { u as FilterRuleValue } from "./types-mb3woqzE.mjs";
1
+ import { u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
2
2
 
3
3
  //#region components/DataTable/TableControls/FiltersV2/value-controls/utils.d.ts
4
4
  /**
@@ -0,0 +1,7 @@
1
+ //#region components/FloatingPanel/utils.d.ts
2
+ declare const PADDING = 8;
3
+ declare const EDGE_PADDING: number;
4
+ declare function autoFitMaxHeight(viewportHeight: number, topOffset: number, minHeight: number): number;
5
+ //#endregion
6
+ export { EDGE_PADDING, PADDING, autoFitMaxHeight };
7
+ //# sourceMappingURL=utils3.d.mts.map
@@ -1,5 +1,5 @@
1
- import { f as FilterStateV2, l as FilterRule } from "./types-mb3woqzE.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-COyIA4VU.mjs";
1
+ import { f as FilterStateV2, l as FilterRule } from "./types-C-TkDdkG.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-DdA63Vnh.mjs";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/validation.d.ts
5
5
  /**
@@ -48,4 +48,4 @@ declare function pruneToRegistry(state: FilterStateV2, registry: FieldRegistry |
48
48
  declare function hasCompleteValue(rule: FilterRule, registry: FieldRegistry): boolean;
49
49
  //#endregion
50
50
  export { isFilterStateV2 as n, pruneToRegistry as r, hasCompleteValue as t };
51
- //# sourceMappingURL=validation-BdP2vajF.d.mts.map
51
+ //# sourceMappingURL=validation-B5IXsdkE.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-BdP2vajF.mjs";
1
+ import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-B5IXsdkE.mjs";
2
2
  export { hasCompleteValue, isFilterStateV2, pruneToRegistry };
@@ -1,4 +1,4 @@
1
- import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-mb3woqzE.mjs";
1
+ import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-C-TkDdkG.mjs";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/FilterBar/value-control-resolver.d.ts
@@ -43,4 +43,4 @@ type ValueControlResolver = (opts: ResolveValueControlOptions) => ReactNode | un
43
43
  declare function resolveValueControl(opts: ResolveValueControlOptions, hostResolver?: ValueControlResolver): ReactNode;
44
44
  //#endregion
45
45
  export { ValueControlResolver as n, resolveValueControl as r, ResolveValueControlOptions as t };
46
- //# sourceMappingURL=value-control-resolver-CiGEHQAc.d.mts.map
46
+ //# sourceMappingURL=value-control-resolver-BPlTeIX7.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-CiGEHQAc.mjs";
1
+ import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-BPlTeIX7.mjs";
2
2
  export { ResolveValueControlOptions, ValueControlResolver, resolveValueControl };
package/llms.txt CHANGED
@@ -33,7 +33,7 @@ their own subpaths.
33
33
  - Tables: `DataTable` (data views w/ pagination + sorting), `TableBox` (editable form tables), `TableLayout` + `Table`/`TableRow`/`TableCell`/`TableHeaderCell` primitives (components/Table) — `TableLayout` has built-in `isLoading`/`isEmpty`/`nullState`/`showHeader` handling
34
34
  - Page chrome: `PageHeader` (title or breadcrumbs variant), `Breadcrumbs`, `TabBar`
35
35
  - Feedback: `Spinner`, `Banner`, `Toast`, `LoadingShimmer`, `ProgressBar`
36
- - Overlays: `Modal`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`
36
+ - Overlays: `Modal`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
37
37
  - Forms: `ConfigFormGroup`, `FormField` (`TextField`, `TextAreaField`, `TableBoxField`), `Input`, `TextArea`, `Select`, `Combobox`, `Checkbox`, `Radio`, `Toggle`, `DatePicker`
38
38
  - Status: `Sticker` (status badges), `Badge` (counts), `StatusIndicator`
39
39
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@persona/design-system",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "React components for Persona UI",
5
5
  "keywords": [
6
6
  "tanstack-intent"
@@ -33,6 +33,7 @@
33
33
  "./components/DatePicker": "./dist/components/DatePicker/index.mjs",
34
34
  "./components/DropdownButton": "./dist/components/DropdownButton/index.mjs",
35
35
  "./components/DropdownMenu": "./dist/components/DropdownMenu/index.mjs",
36
+ "./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
36
37
  "./components/FormControl": "./dist/components/FormControl/index.mjs",
37
38
  "./components/FormField": "./dist/components/FormField/index.mjs",
38
39
  "./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
@@ -151,7 +152,7 @@
151
152
  "downshift": "^9.0.9",
152
153
  "framer-motion": "^6.5.1",
153
154
  "fuse.js": "^7.1.0",
154
- "lodash": "^4.18.1",
155
+ "lodash-es": "^4.18.1",
155
156
  "luxon": "^3.4.4",
156
157
  "react-aria": "^3.37.0",
157
158
  "react-aria-components": "^1.13.0",
@@ -170,6 +171,7 @@
170
171
  "@testing-library/dom": "^8.0.0",
171
172
  "@testing-library/react": "^12.1.5",
172
173
  "@testing-library/user-event": "^14.6.1",
174
+ "@types/lodash-es": "^4.17.12",
173
175
  "@typescript/native": "npm:typescript@^7.0.2",
174
176
  "csstype": "^3.1.2",
175
177
  "react": "^17.0.2",
@@ -215,6 +217,7 @@
215
217
  "./components/DatePicker": "./dist/components/DatePicker/index.mjs",
216
218
  "./components/DropdownButton": "./dist/components/DropdownButton/index.mjs",
217
219
  "./components/DropdownMenu": "./dist/components/DropdownMenu/index.mjs",
220
+ "./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
218
221
  "./components/FormControl": "./dist/components/FormControl/index.mjs",
219
222
  "./components/FormField": "./dist/components/FormField/index.mjs",
220
223
  "./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
@@ -3,7 +3,7 @@ name: ui-authoring
3
3
  description: Use when implementing UI, styling React components, working with design tokens, or making frontend changes, or when file paths include design-system/components/ or styled-components.
4
4
  metadata:
5
5
  library: '@persona/design-system'
6
- library_version: '0.2.1'
6
+ library_version: '0.3.0'
7
7
  ---
8
8
 
9
9
  # UI Authoring
@@ -1 +0,0 @@
1
- {"version":3,"file":"CardV2-m9yOInMU.mjs","names":["CardLoadingShimmer","Heading","Button","DropdownMenu"],"sources":["../components/CardV2/SectionHeading.tsx","../components/CardV2/Section.tsx","../components/CardV2/Card.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, FC, ReactElement, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { ChevronDownIcon, MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownButton from 'design-system/components/DropdownButton';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Heading } from 'design-system/components/Text';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { HeadlessAriaButton } from 'design-system/lib/HeadlessAriaButton';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport type { HeadingSize } from 'design-system/mixins/text';\nimport type { IconAction, MenuAction, TextAction } from 'design-system/types/Action';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\nconst StickerContainer = styled.div`\n display: flex;\n max-width: 180px;\n`;\n\ntype AccordionContainerProps = {\n $isTopSection: boolean;\n $expanded: boolean;\n};\nconst AccordionContainer = styled.div<AccordionContainerProps>`\n transition: opacity ${TransitionDuration.Faster};\n position: absolute;\n opacity: 0;\n\n height: 12px;\n width: 12px;\n display: flex;\n align-items: center;\n /* Because of padding in the top section heading we need to offset differently. */\n /* We want a 12px icon to be off-center in 24px padding, 4px on the right and 8px on the left */\n left: ${({ $isTopSection }) => ($isTopSection ? '8px' : '-16px')};\n /* center the icon vertically */\n top: calc(50% - 6px);\n\n border-radius: 1px;\n\n & svg {\n transition: transform ${TransitionDuration.Faster} ease-out;\n transform: rotate(${({ $expanded }) => ($expanded ? '0' : '-90deg')});\n }\n`;\n\nconst HeaderButton = styled(HeadlessAriaButton)`\n min-width: 0;\n flex: 1;\n\n &:hover ~ ${AccordionContainer} {\n opacity: 1;\n }\n\n &:focus-visible ~ ${AccordionContainer} {\n opacity: 1;\n ${focusStyle}\n }\n`;\n\ntype HeadingContainerProps = {\n $isTopSection: boolean;\n $divider: boolean;\n $hasFooter: boolean;\n $isExpanded: boolean;\n};\nconst HeadingContainer = styled(HStack)<HeadingContainerProps>`\n position: relative;\n\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[4]} ${Spacing[5]};\n `}\n ${({ $divider }) =>\n $divider &&\n css`\n border-bottom: 1px solid ${Color.BorderDivider};\n `}\n ${({ $isTopSection, $hasFooter, $isExpanded }) =>\n $isTopSection &&\n !$hasFooter &&\n !$isExpanded &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 16px padding.\n padding-bottom: ${Spacing[3]};\n `}\n`;\n\ntype StyledHeadingProps = {\n $isCollapsible: boolean;\n $isTopSection: boolean;\n size: HeadingSize;\n};\nconst StyledHeading = styled(Heading)<StyledHeadingProps>`\n flex: 1;\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n line-height: 24px; // We want an adjusted line-height to hit the target header size.\n overflow: hidden;\n\n ${({ $isCollapsible }) => $isCollapsible && 'cursor: pointer;'}\n ${({ $isTopSection }) =>\n !$isTopSection &&\n css`\n ${Typography.TextLargeBold};\n `}\n`;\n\nconst isIconAction = (action: IconAction | TextAction): action is IconAction => 'icon' in action;\n\nconst ButtonRow: FC<{\n actions: (IconAction | TextAction)[];\n menuActions: MenuAction[];\n}> = ({ actions, menuActions }) => {\n const buttons = actions\n .filter((action) => !action.hidden)\n .map((action, i) => {\n const key = isIconAction(action)\n ? (action.id ?? action.ariaLabel ?? `action-${i}`)\n : (action.id ?? action.label ?? `action-${i}`);\n\n const button = isIconAction(action) ? (\n <IconButton\n id={action.id}\n key={key}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n aria-label={action.ariaLabel}\n size='sm'\n >\n {action.icon}\n </IconButton>\n ) : (\n <Button\n id={action.id}\n key={key}\n aria-label={action.ariaLabel}\n to={action.to}\n onClick={(e) => {\n e.stopPropagation();\n return action.onClick?.(e);\n }}\n disabled={action.disabled}\n variant={action.variant ?? 'basic'}\n size='sm'\n width='auto'\n prefixIcon={action.prefixIcon}\n suffixIcon={action.suffixIcon}\n >\n {action.label}\n </Button>\n );\n\n return action.tooltip ? (\n <Tooltip key={key} {...action.tooltipProps} trigger={button}>\n {action.tooltip}\n </Tooltip>\n ) : (\n button\n );\n });\n\n return (\n <HStack>\n {buttons}\n {menuActions.length > 0 && (\n <DropdownButton\n variant='text'\n width='icon'\n size='sm'\n suffixIcon={undefined}\n style={{ justifySelf: 'flex-end' }}\n aria-label='More actions'\n menuProps={{\n portal: true,\n }}\n menuItems={menuActions\n .filter((action) => !action.hidden)\n .map((action) => (\n <DropdownMenu.Item\n id={action.id ?? action.label}\n key={action.id ?? action.label}\n onClick={action.onClick}\n disabled={action.disabled}\n >\n {action.label}\n </DropdownMenu.Item>\n ))}\n >\n <MoreIcon />\n </DropdownButton>\n )}\n </HStack>\n );\n};\n\n/**\n * Private component for rendering the heading of a section, both the primary card heading and\n * section headings.\n */\nexport const SectionHeading: FC<{\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Whether this heading's section has content.\n */\n sectionHasContent: boolean;\n\n /**\n * Whether this heading's section has a footer.\n */\n hasFooter: boolean;\n\n loading: boolean;\n\n /**\n * Title text to render in the heading.\n */\n title: string;\n\n /**\n * Optional sticker to render after the title.\n */\n sticker?: ReactElement;\n\n /**\n * Optional icon to render before the title text.\n *\n * Usage of this icon slot should be avoided if possible to maintain left-text alignement. If\n * using this icon slot for a section heading use it for all sections.\n */\n leftDecorativeIcon?: ReactElement;\n\n /**\n * Optional actions to render in the heading.\n * Only accepts IconButton or Button components with specific prop restrictions.\n */\n actions?: (IconAction | TextAction | undefined)[];\n\n /**\n * Optional actions to render in the heading in a menu.\n */\n menuActions?: (MenuAction | undefined)[];\n\n /**\n * Optional custom content to render in the heading in the button row. Prefer setting `actions` or\n * `menuActions` if possible.\n */\n headerActionsRowContent?: ReactNode;\n\n /**\n * Callback to toggle collapsed state of the section. Omit to disable collapsing.\n */\n toggle?: () => void;\n\n /**\n * Whether the section is currently expanded or collapsed.\n */\n isExpanded: boolean;\n\n /**\n * Optional props to pass to the heading element. Accepts an `as` key to override the\n * rendered heading level. Defaults to `h2` for the top-level card heading and `h3` for\n * section headings so that the document heading hierarchy reflects the visual hierarchy.\n */\n headingProps?: Omit<ComponentPropsWithoutRef<'span'>, 'color'> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n };\n}> = ({\n isTopSection,\n sectionHasContent,\n hasFooter,\n loading,\n title,\n actions = [],\n menuActions = [],\n headerActionsRowContent,\n sticker,\n leftDecorativeIcon,\n toggle,\n isExpanded,\n headingProps,\n}) => {\n const renderButtonRow = actions.length > 0 || menuActions.length > 0;\n const { as: headingAs, ...restHeadingProps } = headingProps ?? {};\n\n return (\n <HeadingContainer\n $isTopSection={isTopSection}\n $hasFooter={hasFooter}\n $isExpanded={isExpanded}\n $divider={isTopSection && isExpanded && sectionHasContent}\n align='center'\n justify='space-between'\n spacing={Spacing[2]}\n >\n {loading ? (\n <CardLoadingShimmer height='24px' width='200px' />\n ) : (\n <>\n {/* https://github.com/adobe/react-spectrum/issues/7444 */}\n <HeaderButton slot='trigger' isDisabled={!toggle}>\n <StyledHeading\n forwardedAs={headingAs ?? (isTopSection ? 'h2' : 'h3')}\n size='xsm'\n $isCollapsible={!!toggle}\n $isTopSection={isTopSection}\n aria-label={title}\n {...restHeadingProps}\n >\n {leftDecorativeIcon}\n <TruncatedText>{title}</TruncatedText>\n {sticker && <StickerContainer>{sticker}</StickerContainer>}\n </StyledHeading>\n </HeaderButton>\n {headerActionsRowContent}\n {renderButtonRow && (\n <ButtonRow\n actions={actions.filter((action) => action != null)}\n menuActions={menuActions.filter((action) => action != null)}\n />\n )}\n {toggle && (\n <AccordionContainer $isTopSection={isTopSection} $expanded={isExpanded}>\n <ChevronDownIcon />\n </AccordionContainer>\n )}\n </>\n )}\n </HeadingContainer>\n );\n};\n","import type { ComponentProps, FC, ReactNode } from 'react';\nimport { Disclosure, DisclosurePanel } from 'react-aria-components';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { SectionHeading } from 'design-system/components/CardV2/SectionHeading';\nimport { LoadingShimmer } from 'design-system/components/LoadingShimmer';\nimport { HStack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { intersperse } from 'design-system/lib/intersperse';\nimport { Z_INDICES } from 'design-system/lib/zindex';\n\nconst FooterParagraph = styled(Paragraph)`\n line-height: 16px;\n`;\n\ntype FooterContainerProps = {\n $divider: boolean;\n};\nconst FooterContainer = styled.div<FooterContainerProps>`\n ${({ $divider }) =>\n $divider &&\n css`\n border-top: 1px solid ${Color.BorderDivider};\n `}\n padding: ${Spacing[3]} ${Spacing[5]} ${Spacing[2]};\n`;\n\ntype MaybeStickyContainerProps = {\n $enabled: boolean;\n $bottom?: boolean;\n};\nconst MaybeStickyContainer = styled.div<MaybeStickyContainerProps>`\n ${({ $enabled }) =>\n $enabled &&\n css`\n // We are using sticky positioning here to have consistent scrollbar behavior between\n // different card configurations. Usage of sticky allows us to keep the scroll container at\n // the top of the card DOM structure regardless of whether the heading or footer is sticky.\n //\n // This also afaict helps eliminate the need to carry height values through the card DOM\n // structure to the content container (and possibly needing to adjust heights for heading and footer).\n position: sticky;\n top: 0;\n background-color: ${({ theme }) => theme.color.background.primary};\n z-index: ${Z_INDICES.sticky};\n `}\n\n ${({ $bottom = false }) =>\n $bottom &&\n css`\n top: unset;\n bottom: 0;\n `}\n`;\n\ntype StyledDisclosureProps = {\n $fullHeight: boolean;\n};\nconst StyledDisclosure = styled(Disclosure)<StyledDisclosureProps>`\n display: flex;\n flex-direction: column;\n gap: 0;\n ${({ $fullHeight }) =>\n $fullHeight &&\n css`\n height: 100%;\n `}\n`;\n\ntype StyledDisclosurePanelProps = {\n $isTopSection: boolean;\n};\nconst StyledDisclosurePanel = styled(DisclosurePanel)<StyledDisclosurePanelProps>`\n flex: 1;\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n // Safari does not support hidden='until-found' so react-aria uses display: none instead.\n // Since react-aria is using display to hide content we need to not set display ourselves.\n &:not([aria-hidden='true']) {\n display: flex;\n }\n `}\n`;\n\nconst CardLoadingShimmer = styled(LoadingShimmer)`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\ntype SectionContentContainerProps = {\n $isTopSection: boolean;\n $hasHeading: boolean;\n $hasFooter: boolean;\n};\nconst SectionContentContainer = styled.div<SectionContentContainerProps>`\n ${({ $isTopSection }) =>\n $isTopSection &&\n css`\n padding: ${Spacing[5]};\n display: flex;\n flex-direction: column;\n gap: ${Spacing[5]};\n flex: 1;\n /* Prevent grid blowout https://css-tricks.com/preventing-a-grid-blowout/ */\n min-width: 0;\n `}\n\n ${({ $isTopSection, $hasHeading }) =>\n !$isTopSection &&\n $hasHeading &&\n css`\n padding-top: ${Spacing[3]};\n `}\n\n ${({ $isTopSection, $hasFooter }) =>\n $isTopSection &&\n !$hasFooter &&\n css`\n // We apply 4px of whitespace to the bottom of the card container so that content has a buffer\n // when being scrolled and still appears inside the card. Here we adjust, subtracting\n // 4px from the 24px padding.\n padding-bottom: 20px;\n `}\n`;\n\n/**\n * Private component for rendering sections of the card, both the primary card section and\n * individual sections.\n */\nexport const Section: FC<{\n children?: ReactNode;\n\n /**\n * Whether this is the top-level section of the card which has different visual treatment.\n */\n isTopSection: boolean;\n\n /**\n * Available props for the section's heading.\n */\n heading?: Pick<\n ComponentProps<typeof SectionHeading>,\n | 'title'\n | 'actions'\n | 'menuActions'\n | 'headerActionsRowContent'\n | 'sticker'\n | 'leftDecorativeIcon'\n | 'headingProps'\n >;\n\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the section is collapsible.\n */\n collapsible?: boolean;\n\n /**\n * Whether the section heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Whether the section is initially collapsed.\n */\n defaultCollapsed?: boolean;\n\n /**\n * If true, the section will be rendered in a loading state.\n */\n loading?: boolean;\n\n /**\n * Set height of the loading state.\n */\n loadingProps?: {\n height?: string;\n };\n\n /**\n * Control display of the empty state.\n */\n empty?: boolean;\n\n /**\n * Props for the empty state.\n */\n emptyProps?: {\n /**\n * Empty state message.\n */\n message?: string;\n };\n\n fullHeight?: boolean;\n}> = ({\n children,\n isTopSection,\n heading,\n footer,\n footerContent,\n loading = false,\n loadingProps,\n empty = false,\n emptyProps,\n defaultCollapsed = false,\n collapsible = false,\n sticky = false,\n fullHeight = false,\n}) => {\n let content: ReactNode;\n if (loading) {\n content = <CardLoadingShimmer height={loadingProps?.height ?? '200px'} width='100%' />;\n } else if (empty) {\n content = <Paragraph>{emptyProps?.message ?? 'No data collected'}</Paragraph>;\n } else {\n content = children;\n }\n\n const hasFooter = !!(footer || footerContent);\n const hasContent = !!content;\n\n // Normally we would have `isDisabled` as well but there's a react-aria-components quirk\n // that sets `hidden` on the disclosure panel if both `defaultExpanded` and `isDisabled` are true.\n // https://github.com/adobe/react-spectrum/issues/7444\n return (\n <StyledDisclosure defaultExpanded={!defaultCollapsed} $fullHeight={fullHeight}>\n {({ isExpanded, state }) => (\n <>\n {heading && (\n <MaybeStickyContainer $enabled={sticky}>\n <SectionHeading\n isTopSection={isTopSection}\n hasFooter={hasFooter}\n sectionHasContent={hasContent}\n loading={loading}\n toggle={collapsible ? state.toggle : undefined}\n isExpanded={isExpanded}\n {...heading}\n />\n </MaybeStickyContainer>\n )}\n {hasContent && (\n <StyledDisclosurePanel $isTopSection={isTopSection}>\n <SectionContentContainer\n $isTopSection={isTopSection}\n $hasHeading={!!heading}\n $hasFooter={hasFooter}\n >\n {content}\n </SectionContentContainer>\n </StyledDisclosurePanel>\n )}\n {hasFooter && (\n <MaybeStickyContainer $enabled={sticky} $bottom>\n <FooterContainer $divider={hasContent}>\n {loading ? (\n <HStack>\n <CardLoadingShimmer height='16px' width='120px' />\n <CardLoadingShimmer height='16px' width='120px' />\n </HStack>\n ) : (\n <>\n {footer && (\n <FooterParagraph size='sm'>\n <HStack spacing={Spacing[1]}>\n {intersperse(\n footer\n .filter((item) => item != null)\n .map((item, i) => <span key={`footer-item-${i}`}>{item}</span>),\n (i) => (\n <span key={i}>•</span>\n ),\n )}\n </HStack>\n </FooterParagraph>\n )}\n {footerContent}\n </>\n )}\n </FooterContainer>\n </MaybeStickyContainer>\n )}\n </>\n )}\n </StyledDisclosure>\n );\n};\n","import { type ComponentProps, createContext, type FC, type ReactNode, useContext } from 'react';\nimport { ErrorBoundary } from 'react-error-boundary';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\nimport { Section } from 'design-system/components/CardV2/Section';\nimport { Paragraph } from 'design-system/components/Text';\nimport ConfigContext from 'design-system/lib/ConfigContext';\nimport { intersperse } from 'design-system/lib/intersperse';\n\nconst CardContainer = styled.div`\n border-radius: ${({ theme }) => theme.card.borderRadius};\n background-color: ${({ theme }) => theme.color.background.primary};\n // Height has been tricky here.\n // inherit seems to work well for both grid and flexbox layouts. In a grid we want this\n // container to receive the full cell height, In a flexbox we want this container to flex, maintaining\n // the minimum height for it's content.\n height: inherit;\n overflow-y: auto;\n\n box-sizing: border-box;\n // Small buffer so that content is not scrolling right on the edge of the card.\n border-bottom: 4px solid ${({ theme }) => theme.color.background.primary};\n`;\n\nconst CardContext = createContext<{ isStacked?: boolean }>({});\n\nconst Divider = styled.hr`\n margin: 0;\n border: none;\n border-top: 1px solid ${Color.BorderDivider};\n`;\n\n/**\n * Renders a card section.\n */\nconst PublicSection: FC<\n Pick<\n ComponentProps<typeof Section>,\n | 'children'\n | 'collapsible'\n | 'defaultCollapsed'\n | 'heading'\n | 'loading'\n | 'loadingProps'\n | 'empty'\n | 'emptyProps'\n >\n> = (props) => {\n return <Section isTopSection={false} {...props} />;\n};\n\n/**\n * Render the card in a \"stacked\" mode. Used for rendering multiple cards on top of each other\n * that appear visually as a single card.\n */\nconst Stacked: FC<{\n children: ReactNode[];\n}> = ({ children }) => {\n return (\n <CardContext.Provider value={{ isStacked: true }}>\n <CardContainer>\n {intersperse(children, (i) => (\n <Divider key={i} />\n ))}\n </CardContainer>\n </CardContext.Provider>\n );\n};\n\nconst DEFAULT_ERROR_MESSAGE = '🔍 Oops, something went wrong loading this card.';\n\n/**\n * Renders a PDS Card.\n *\n * To render sections of the card use `<Card.Section>...</Card.Section>`\n */\nconst Card: FC<\n {\n /**\n * Optional footer to render at the bottom of the card. Footer content is rendered as a\n * paragraph with the items separated by a dot.\n */\n footer?: ReactNode[];\n\n /**\n * Optional arbitrary footer content to render as-is.\n */\n footerContent?: ReactNode;\n\n /**\n * Whether the card heading and footer are sticky.\n */\n sticky?: boolean;\n\n /**\n * Force the card to render in an errored state. Errors bubbling up from children will also\n * render the errored state.\n */\n errored?: boolean;\n\n /**\n * Props for the errored state.\n */\n erroredProps?: {\n /**\n * Message to render in the errored state.\n */\n message?: string;\n /**\n * Callback to handle errors. Note this callback is only called when the error is bubbled up\n * from children, not when `errored` is set to true.\n */\n onError?: (error: Error) => void;\n };\n\n containerProps?: ComponentProps<typeof CardContainer>;\n\n /**\n * Whether the card should render its content with 100% height. This is a bit of a hack for cards\n * that want full control of their content and don't use sections.\n */\n fullHeight?: boolean;\n } & ComponentProps<typeof PublicSection>\n> = ({ children, errored, erroredProps, containerProps, sticky = true, ...sectionProps }) => {\n const { isStacked = false } = useContext(CardContext);\n const { captureException } = useContext(ConfigContext);\n\n const errorFallback = (\n <Section isTopSection {...sectionProps}>\n <Paragraph>{erroredProps?.message ?? DEFAULT_ERROR_MESSAGE}</Paragraph>\n </Section>\n );\n\n const section = (\n <Section isTopSection sticky={sticky} {...sectionProps}>\n {children}\n </Section>\n );\n\n return (\n <ErrorBoundary\n fallback={\n isStacked ? (\n errorFallback\n ) : (\n <CardContainer {...containerProps}>{errorFallback}</CardContainer>\n )\n }\n onError={erroredProps?.onError ?? ((error) => captureException(error))}\n >\n {isStacked ? (\n <>{errored ? <>{errorFallback}</> : <>{section}</>}</>\n ) : (\n <CardContainer {...containerProps}>\n {errored ? <>{errorFallback}</> : <>{section}</>}\n </CardContainer>\n )}\n </ErrorBoundary>\n );\n};\n\nexport default Object.assign(Card, {\n Section: PublicSection,\n Stacked: Stacked,\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Checkbox-CU27-Aa8.mjs","names":[],"sources":["../components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing, Typography } from '@persona/design-tokens';\nimport { InputCheckIcon, InputDashIcon } from '@persona/icons';\nimport useFormField from 'design-system/components/FormControl/useFormField';\nimport Stack from 'design-system/components/Stack/Stack';\nimport Tooltip from 'design-system/components/Tooltip';\nimport { TextWithDashedUnderline } from 'design-system/components/Tooltip/TextUnderlineTooltip';\nimport {\n isChecked,\n isDisabled,\n isFocusedVisible,\n isHovered,\n isIndeterminate,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport useControlled from 'design-system/lib/useControlled';\nimport { focusStyle } from 'design-system/mixins/focus';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nconst Container = styled(Stack)<{ size: 'md' | 'sm'; disabled?: boolean }>`\n position: relative;\n cursor: pointer;\n\n flex-wrap: nowrap;\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n height: 16px;\n `}\n\n &${isDisabled} {\n cursor: default;\n }\n`;\n\nconst CheckboxBox = styled.div<{ disabled?: boolean; checked?: boolean }>`\n cursor: pointer;\n display: flex;\n flex: 0 0 16px;\n justify-content: center;\n align-items: center;\n transition:\n box-shadow ${TransitionDuration.Fast},\n background-color ${TransitionDuration.Fast},\n border-color ${TransitionDuration.Fast};\n border-radius: 3px;\n height: ${Spacing[4]};\n width: ${Spacing[4]};\n box-sizing: border-box;\n border: 1px solid ${Color.BorderInputCheckbox};\n background: ${Color.BackgroundInputDefault};\n\n svg {\n color: ${Color.BorderIconInverse};\n }\n\n &${isDisabled} {\n cursor: default;\n background: ${Color.BackgroundInputDisabled};\n border-color: ${Color.BorderInputDisabled};\n }\n\n ${({ checked }) =>\n checked &&\n css`\n border-color: ${Color.BackgroundInputActive};\n background: ${Color.BackgroundInputActive};\n\n &${isDisabled} {\n border-color: ${Color.BackgroundInputActiveDisabled};\n background: ${Color.BackgroundInputActiveDisabled};\n }\n `}\n`;\n\nconst CheckboxInput = styled.input`\n cursor: inherit;\n height: 16px;\n width: 16px;\n margin: 0;\n border: 0;\n opacity: 0;\n overflow: hidden;\n position: absolute;\n\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n border-color: ${Color.BorderInputCheckboxHover};\n }\n\n &${isChecked}, &${isIndeterminate} {\n &${isHovered}${isNotDisabled} ~ ${CheckboxBox} {\n background: ${Color.BackgroundInputActiveHover};\n border-color: ${Color.BackgroundInputActiveHover};\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} ~ ${CheckboxBox} {\n ${focusStyle}\n }\n`;\n\nconst Label = styled.label<{ disabled: boolean; size: 'md' | 'sm' }>`\n cursor: inherit;\n color: ${Color.TextPrimary};\n\n ${({ size }) =>\n size === 'sm'\n ? css`\n ${Typography.TextSmall};\n line-height: 16px;\n `\n : css`\n ${Typography.TextMedium};\n\n /** Nudge text for visual alignment */\n position: relative;\n bottom: -1px;\n `}\n\n ${({ theme, disabled }) =>\n disabled &&\n css`\n cursor: default;\n color: ${theme.color.text.disabled};\n `}\n`;\n\nexport interface CheckboxProps extends Omit<ComponentPropsWithoutRef<'input'>, 'value' | 'size'> {\n /**\n * `id` for the underlying `<input>`. If not provided a unique ID is generated\n * automatically and linked to the label.\n */\n id?: string;\n /** Called whenever the checked state changes. */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void;\n /** Visible label rendered to the right of the checkbox box. */\n label?: ReactNode;\n /** Disables interaction and renders the checkbox in a muted style. */\n disabled?: boolean;\n /**\n * When true the checkbox displays a dash (−) instead of a tick, indicating a\n * mixed / partially-selected state. Sets `aria-checked=\"mixed\"` for screen readers.\n */\n indeterminate?: boolean;\n /**\n * Controlled checked state. Omit (or pass `undefined`) to let the component\n * manage state internally via `defaultChecked`.\n */\n checked?: boolean;\n /** Value submitted with a form. */\n value?: unknown;\n 'data-test'?: string;\n /** Additional props forwarded to the outer container `<div>`. */\n containerProps?: ComponentPropsWithoutRef<'div'>;\n /**\n * Size of the checkbox and its label text.\n * @defaultValue 'md'\n */\n size?: 'md' | 'sm';\n /**\n * Tooltip content to display when hovering over the label.\n * When provided, the label will be wrapped in a tooltip.\n */\n tooltip?: ReactNode;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(function Checkbox(\n {\n className,\n disabled,\n indeterminate,\n onChange,\n checked: checkedProp,\n defaultChecked,\n id,\n label,\n 'data-test': dataTest,\n containerProps,\n value,\n size = 'md',\n tooltip,\n ...elemProps\n },\n ref,\n) {\n const field = useFormField({ disabled });\n const [checked, setChecked] = useControlled({\n controlledValue: checkedProp,\n default: defaultChecked,\n });\n const generatedId = useMemo(() => uniqueId('pds_checkbox__'), []);\n const inputRef = useRef<HTMLInputElement>();\n\n // Use the inputId from FormControl context if available, otherwise use the provided id or generate one\n const inputId = field.inputId || id || generatedId;\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n useEffect(() => {\n if (inputRef.current) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n inputRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate, inputRef]);\n\n return (\n <Container\n direction='horizontal'\n className={className}\n data-test={dataTest}\n disabled={field.disabled}\n align='center'\n size={size}\n {...containerProps}\n >\n <CheckboxInput\n id={inputId}\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n ref={inputRef}\n data-test={dataTest && `${dataTest}-input`}\n disabled={field.disabled}\n type='checkbox'\n checked={checkedProp == null ? undefined : checked}\n defaultChecked={defaultChecked}\n onChange={(e) => {\n setChecked(e.target.checked);\n if (onChange) {\n onChange(e);\n }\n }}\n aria-checked={indeterminate ? 'mixed' : checked}\n value={value as unknown as string}\n {...elemProps}\n />\n <CheckboxBox\n aria-hidden='true'\n disabled={field.disabled}\n checked={(checked != null && checked) || indeterminate}\n >\n {indeterminate ? <InputDashIcon /> : checked ? <InputCheckIcon /> : null}\n </CheckboxBox>\n {label &&\n (tooltip ? (\n <Tooltip\n size={size}\n trigger={\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n <TextWithDashedUnderline>{label}</TextWithDashedUnderline>\n </Label>\n }\n >\n {tooltip}\n </Tooltip>\n ) : (\n <Label htmlFor={inputId} disabled={!!field.disabled} size={size}>\n {label}\n </Label>\n ))}\n </Container>\n );\n});\n\nexport default Checkbox;\n"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAM,YAAY,OAAO,MAAM;;;;;;KAM1B,EAAE,WACH,SAAS,QACT,GAAG;;MAED;;KAED,WAAW;;;;AAKhB,MAAM,cAAc,OAAO,GAA8C;;;;;;;yBAOhC;+BACM;2BACJ;;YAE/B,QAAQ,GAAG;WACZ,QAAQ,GAAG;;sBAEA,MAAM,oBAAoB;gBAChC,MAAM,uBAAuB;;;aAGhC,MAAM,kBAAkB;;;KAGhC,WAAW;;kBAEE,MAAM,wBAAwB;oBAC5B,MAAM,oBAAoB;;;KAGzC,EAAE,cACH,WACA,GAAG;sBACe,MAAM,sBAAsB;oBAC9B,MAAM,sBAAsB;;SAEvC,WAAW;wBACI,MAAM,8BAA8B;sBACtC,MAAM,8BAA8B;;MAEpD;;AAGN,MAAM,gBAAgB,OAAO,KAAK;;;;;;;;;;KAU7B,YAAY,cAAc,KAAK,YAAY;oBAC5B,MAAM,yBAAyB;;;KAG9C,UAAU,KAAK,gBAAgB;OAC7B,YAAY,cAAc,KAAK,YAAY;oBAC9B,MAAM,2BAA2B;sBAC/B,MAAM,2BAA2B;;;;KAIlD,mBAAmB,cAAc,KAAK,YAAY;MACjD,WAAW;;;AAIjB,MAAM,QAAQ,OAAO,KAA+C;;WAEzD,MAAM,YAAY;;KAExB,EAAE,WACH,SAAS,OACL,GAAG;YACC,WAAW,UAAU;;YAGzB,GAAG;YACC,WAAW,WAAW;;;;;UAKxB;;KAEL,EAAE,OAAO,eACV,YACA,GAAG;;eAEQ,MAAM,MAAM,KAAK,SAAS;MACnC;;AA0CN,MAAa,WAAW,WAA4C,SAAS,SAC3E,EACE,WACA,UACA,eACA,UACA,SAAS,aACT,gBACA,IACA,OACA,aAAa,UACb,gBACA,OACA,OAAO,MACP,SACA,GAAG,aAEL,KACA;CACA,MAAM,QAAQ,aAAa,EAAE,UAAU,CAAC;CACxC,MAAM,CAAC,SAAS,cAAc,cAAc;EAC1C,iBAAiB;EACjB,SAAS;EACV,CAAC;CACF,MAAM,cAAc,cAAc,SAAS,iBAAiB,EAAE,EAAE,CAAC;CACjE,MAAM,WAAW,QAA0B;CAG3C,MAAM,UAAU,MAAM,WAAW,MAAM;AAGvC,qBAAoB,WAAW,SAAS,SAAS,CAAC,SAAS,CAAC;AAE5D,iBAAgB;AACd,MAAI,SAAS,QAEX,UAAS,QAAQ,gBAAgB;IAElC,CAAC,eAAe,SAAS,CAAC;AAE7B,QACE,qBAAC,WAAD;EACE,WAAU;EACC;EACX,aAAW;EACX,UAAU,MAAM;EAChB,OAAM;EACA;EACN,GAAI;YAPN;GASE,oBAAC,eAAD;IACE,IAAI;IAEJ,KAAK;IACL,aAAW,YAAY,GAAG,SAAS;IACnC,UAAU,MAAM;IAChB,MAAK;IACL,SAAS,eAAe,OAAO,KAAA,IAAY;IAC3B;IAChB,WAAW,MAAM;AACf,gBAAW,EAAE,OAAO,QAAQ;AAC5B,SAAI,SACF,UAAS,EAAE;;IAGf,gBAAc,gBAAgB,UAAU;IACjC;IACP,GAAI;IACJ,CAAA;GACF,oBAAC,aAAD;IACE,eAAY;IACZ,UAAU,MAAM;IAChB,SAAU,WAAW,QAAQ,WAAY;cAExC,gBAAgB,oBAAC,eAAD,EAAiB,CAAA,GAAG,UAAU,oBAAC,gBAAD,EAAkB,CAAA,GAAG;IACxD,CAAA;GACb,UACE,UACC,oBAAC,SAAD;IACQ;IACN,SACE,oBAAC,OAAD;KAAO,SAAS;KAAS,UAAU,CAAC,CAAC,MAAM;KAAgB;eACzD,oBAAC,yBAAD,EAAA,UAA0B,OAAgC,CAAA;KACpD,CAAA;cAGT;IACO,CAAA,GAEV,oBAAC,OAAD;IAAO,SAAS;IAAS,UAAU,CAAC,CAAC,MAAM;IAAgB;cACxD;IACK,CAAA;GAEF;;EAEd"}