@persona/design-system 0.9.0 → 0.10.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 (572) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +1 -1
  3. package/dist/Accordion.d.mts +1 -1
  4. package/dist/AccordionItem.d.mts +1 -1
  5. package/dist/{Action-DcK0fRrq.d.mts → Action-DT8WqfEg.d.mts} +3 -3
  6. package/dist/Action.d.mts +1 -1
  7. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  8. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  9. package/dist/ArrayValueControl.d.mts +1 -1
  10. package/dist/Attribute.d.mts +3 -3
  11. package/dist/{Badge-DLuyKRCQ.mjs → Badge-Bvn3afds.mjs} +2 -2
  12. package/dist/{Badge-DLuyKRCQ.mjs.map → Badge-Bvn3afds.mjs.map} +1 -1
  13. package/dist/BooleanValueControl.d.mts +1 -1
  14. package/dist/{Breadcrumb-CEHEUe8l.d.mts → Breadcrumb-BDbY1Ffu.d.mts} +1 -1
  15. package/dist/Breadcrumb.d.mts +1 -1
  16. package/dist/{Breadcrumbs-BQ-Gj6UV.d.mts → Breadcrumbs-C2ThOYJ-.d.mts} +2 -2
  17. package/dist/{Breadcrumbs-B8aXFPdV.mjs → Breadcrumbs-CQUe9VTM.mjs} +4 -4
  18. package/dist/{Breadcrumbs-B8aXFPdV.mjs.map → Breadcrumbs-CQUe9VTM.mjs.map} +1 -1
  19. package/dist/Breadcrumbs.d.mts +1 -1
  20. package/dist/{Button-DKUomFPj.d.mts → Button-CyjqQa5v.d.mts} +4 -4
  21. package/dist/Button.d.mts +1 -1
  22. package/dist/{Calendar-BvsTQ3e1.d.mts → Calendar-DAfQCLOJ.d.mts} +1 -1
  23. package/dist/Calendar.d.mts +1 -1
  24. package/dist/CalendarBase.d.mts +1 -1
  25. package/dist/{Card-DMXDx1W7.d.mts → Card-CzRHVUFo.d.mts} +3 -3
  26. package/dist/Card.d.mts +1 -1
  27. package/dist/CardGrouping.d.mts +2 -2
  28. package/dist/{CardV2-JPGFAqui.mjs → CardV2-Dp4eHSE-.mjs} +6 -6
  29. package/dist/{CardV2-JPGFAqui.mjs.map → CardV2-Dp4eHSE-.mjs.map} +1 -1
  30. package/dist/{Checkbox-CVa8WOf2.d.mts → Checkbox-B2MZShdu.d.mts} +1 -1
  31. package/dist/{Checkbox-iSBIpu0l.mjs → Checkbox-BaJ-dGdX.mjs} +7 -3
  32. package/dist/{Checkbox-iSBIpu0l.mjs.map → Checkbox-BaJ-dGdX.mjs.map} +1 -1
  33. package/dist/Checkbox.d.mts +1 -1
  34. package/dist/{CheckboxGroupField-BMJwuTpJ.d.mts → CheckboxGroupField-BYB4OBlW.d.mts} +3 -3
  35. package/dist/CheckboxGroupField.d.mts +1 -1
  36. package/dist/ChoicesValueControl.d.mts +1 -1
  37. package/dist/{Combobox-BkpRqaxB.mjs → Combobox-CcFJo68g.mjs} +16 -8
  38. package/dist/Combobox-CcFJo68g.mjs.map +1 -0
  39. package/dist/{Combobox-C2R9eTPr.d.mts → Combobox-DH5ycYlG.d.mts} +3 -3
  40. package/dist/Combobox.d.mts +2 -2
  41. package/dist/{ComboboxBase-BghIk4Vk.d.mts → ComboboxBase-BQQSKUBU.d.mts} +6 -6
  42. package/dist/ComboboxBase.d.mts +1 -1
  43. package/dist/{ComboboxMultiSelect-CIOHnhrv.d.mts → ComboboxMultiSelect-Da3Gv1k5.d.mts} +2 -2
  44. package/dist/ComboboxMultiSelect.d.mts +1 -1
  45. package/dist/{ComboboxSingleSelect-C1JZxli3.d.mts → ComboboxSingleSelect-BUDovONU.d.mts} +4 -4
  46. package/dist/ComboboxSingleSelect.d.mts +1 -1
  47. package/dist/{CompactBar-DPJAY1NB.d.mts → CompactBar-D12R7Nm2.d.mts} +3 -3
  48. package/dist/CompactBar.d.mts +1 -1
  49. package/dist/{ConfigFormGroup-BBIJsQgy.mjs → ConfigFormGroup-CidT_cE9.mjs} +2 -2
  50. package/dist/{ConfigFormGroup-BBIJsQgy.mjs.map → ConfigFormGroup-CidT_cE9.mjs.map} +1 -1
  51. package/dist/{ControlBar-Cg36sjz3.d.mts → ControlBar-D9KflqmH.d.mts} +22 -9
  52. package/dist/ControlBar.d.mts +1 -1
  53. package/dist/DataTable-95ZxiPlV.mjs +1547 -0
  54. package/dist/DataTable-95ZxiPlV.mjs.map +1 -0
  55. package/dist/DataTable-fZ7SNbIH.d.mts +439 -0
  56. package/dist/DataTable.d.mts +2 -396
  57. package/dist/{DateField-BXUuqbnb.d.mts → DateField-DLz13Ksl.d.mts} +2 -2
  58. package/dist/DateField.d.mts +1 -1
  59. package/dist/{DatePicker-CjuR6ORz.mjs → DatePicker-D0cvVbzq.mjs} +369 -369
  60. package/dist/DatePicker-D0cvVbzq.mjs.map +1 -0
  61. package/dist/{DatePicker-Cmn1vViU.d.mts → DatePicker-DYVWmbrb.d.mts} +2 -2
  62. package/dist/DatePicker.d.mts +1 -1
  63. package/dist/{DateRangePicker-CKhp9Obv.d.mts → DateRangePicker-Be8TYtjz.d.mts} +3 -3
  64. package/dist/DateRangePicker.d.mts +1 -1
  65. package/dist/DateRangeValueControl.d.mts +2 -2
  66. package/dist/DateValueControl.d.mts +1 -1
  67. package/dist/{DropdownButton-CRJDAGjJ.mjs → DropdownButton-5oNcpsOq.mjs} +3 -3
  68. package/dist/{DropdownButton-CRJDAGjJ.mjs.map → DropdownButton-5oNcpsOq.mjs.map} +1 -1
  69. package/dist/DropdownButton.d.mts +2 -2
  70. package/dist/{DropdownMenu-C2BHv8Lc.mjs → DropdownMenu-CedsmO5h.mjs} +2 -2
  71. package/dist/{DropdownMenu-C2BHv8Lc.mjs.map → DropdownMenu-CedsmO5h.mjs.map} +1 -1
  72. package/dist/{DropdownMenu-CNkQDiJr.d.mts → DropdownMenu-DAa2kNrt.d.mts} +2 -2
  73. package/dist/DropdownMenu.d.mts +1 -1
  74. package/dist/{ErrorProps-oCHtJzEB.d.mts → ErrorProps-DH0fzeGf.d.mts} +1 -1
  75. package/dist/ErrorProps.d.mts +1 -1
  76. package/dist/{FieldRegistry-B7P4wC7y.d.mts → FieldRegistry-d5tGpSch.d.mts} +2 -2
  77. package/dist/FieldRegistry.d.mts +1 -1
  78. package/dist/{FilterBar-clWmrKkT.d.mts → FilterBar-Bh18VyOK.d.mts} +4 -4
  79. package/dist/FilterBar.d.mts +1 -1
  80. package/dist/FilterPickerMenu.d.mts +2 -2
  81. package/dist/FilterPill.d.mts +1 -1
  82. package/dist/FilterPopover.d.mts +1 -1
  83. package/dist/FloatValueControl.d.mts +5 -4
  84. package/dist/FloatingActionBar-CpvLefPm.d.mts +41 -0
  85. package/dist/FloatingActionBar.d.mts +2 -41
  86. package/dist/{FormControl-jfjKwUfK.mjs → FormControl-C4CiA0H-.mjs} +3 -3
  87. package/dist/{FormControl-jfjKwUfK.mjs.map → FormControl-C4CiA0H-.mjs.map} +1 -1
  88. package/dist/{FormControl-C44o35FL.d.mts → FormControl-DEG_0oXt.d.mts} +2 -2
  89. package/dist/FormControl.d.mts +1 -1
  90. package/dist/FormControlLabel.d.mts +1 -1
  91. package/dist/{FormField-C3nUzhGT.mjs → FormField-cSG93kuo.mjs} +15 -15
  92. package/dist/{FormField-C3nUzhGT.mjs.map → FormField-cSG93kuo.mjs.map} +1 -1
  93. package/dist/{FormField-CXznMtuS.d.mts → FormField-mLbXDJ9B.d.mts} +2 -2
  94. package/dist/FormField.d.mts +1 -1
  95. package/dist/{Grid-D0mlxk8_.mjs → Grid-DXVkhyNQ.mjs} +1 -1
  96. package/dist/{Grid-D0mlxk8_.mjs.map → Grid-DXVkhyNQ.mjs.map} +1 -1
  97. package/dist/{Header-DvpIsOUN.d.mts → Header-ayDu4VWE.d.mts} +1 -1
  98. package/dist/Header.d.mts +1 -1
  99. package/dist/{HelperTooltip-C4tgbLYw.d.mts → HelperTooltip-BB9Vznnx.d.mts} +2 -2
  100. package/dist/HelperTooltip.d.mts +1 -1
  101. package/dist/HighlightedText.d.mts +2 -2
  102. package/dist/{HoverCopyableField-1_LHm80n.mjs → HoverCopyableField-D-BubaRd.mjs} +2 -2
  103. package/dist/{HoverCopyableField-1_LHm80n.mjs.map → HoverCopyableField-D-BubaRd.mjs.map} +1 -1
  104. package/dist/{I18nContext-DlvagRAO.d.mts → I18nContext-TXS9M8t5.d.mts} +2 -2
  105. package/dist/I18nContext.d.mts +1 -1
  106. package/dist/{IconButton-Bt3WyiGq.d.mts → IconButton-Bigvu1Q4.d.mts} +2 -2
  107. package/dist/{IconButton-Cqxfmrea.mjs → IconButton-HWx5Hlmi.mjs} +8 -5
  108. package/dist/{IconButton-Cqxfmrea.mjs.map → IconButton-HWx5Hlmi.mjs.map} +1 -1
  109. package/dist/IconButton.d.mts +1 -1
  110. package/dist/ImageTile.d.mts +4 -3
  111. package/dist/IndexTableLayout.d.mts +45 -0
  112. package/dist/InlineCombobox.d.mts +1 -1
  113. package/dist/InlineInput.d.mts +1 -1
  114. package/dist/{Input-CAsOWM0S.d.mts → Input-Bg4bi6VZ.d.mts} +3 -3
  115. package/dist/{Input-Cg2HxteL.mjs → Input-Dap055xf.mjs} +3 -3
  116. package/dist/{Input-Cg2HxteL.mjs.map → Input-Dap055xf.mjs.map} +1 -1
  117. package/dist/Input.d.mts +1 -1
  118. package/dist/{InputProps-BU9iiBBz.d.mts → InputProps-Bl-G826g.d.mts} +2 -2
  119. package/dist/InputProps.d.mts +1 -1
  120. package/dist/Inserter-BKVrJ4M5.d.mts +12 -0
  121. package/dist/Inserter.d.mts +2 -12
  122. package/dist/IntegerValueControl.d.mts +5 -4
  123. package/dist/Link.d.mts +1 -1
  124. package/dist/{ListBox--IH6uofo.d.mts → ListBox-Bj5c626-.d.mts} +3 -3
  125. package/dist/{ListBox-CjNokYs6.mjs → ListBox-C80J7DCG.mjs} +7 -7
  126. package/dist/{ListBox-CjNokYs6.mjs.map → ListBox-C80J7DCG.mjs.map} +1 -1
  127. package/dist/ListBox.d.mts +1 -1
  128. package/dist/{ListBoxField-BUKop1Ca.d.mts → ListBoxField-DsJRabgE.d.mts} +4 -4
  129. package/dist/ListBoxField.d.mts +1 -1
  130. package/dist/{LoadingShimmer-C73hJqaW.mjs → LoadingShimmer-Bqjdut7i.mjs} +1 -1
  131. package/dist/{LoadingShimmer-C73hJqaW.mjs.map → LoadingShimmer-Bqjdut7i.mjs.map} +1 -1
  132. package/dist/LoadingShimmer.d.mts +1 -1
  133. package/dist/{LogicRow-C8Hdl8xB.d.mts → LogicRow-CcpD-Kk3.d.mts} +3 -3
  134. package/dist/LogicRow.d.mts +1 -1
  135. package/dist/MaskedInput.d.mts +2 -2
  136. package/dist/{Menu-BSHJpKyL.d.mts → Menu-C0FU9WEF.d.mts} +2 -2
  137. package/dist/{Menu-CwKmfxKI.mjs → Menu-Dw6Rcpk6.mjs} +1 -1
  138. package/dist/{Menu-CwKmfxKI.mjs.map → Menu-Dw6Rcpk6.mjs.map} +1 -1
  139. package/dist/Menu.d.mts +1 -1
  140. package/dist/{Modal-CoUHxtgN.d.mts → Modal-BuxggahW.d.mts} +6 -2
  141. package/dist/{Modal-BBIJVhv2.mjs → Modal-kjUptzg1.mjs} +7 -5
  142. package/dist/Modal-kjUptzg1.mjs.map +1 -0
  143. package/dist/Modal.d.mts +1 -1
  144. package/dist/PageHeader-Czj42pyK.d.mts +40 -0
  145. package/dist/{PageHeader-5GyfuGLe.mjs → PageHeader-DJF7nxgN.mjs} +2 -2
  146. package/dist/{PageHeader-5GyfuGLe.mjs.map → PageHeader-DJF7nxgN.mjs.map} +1 -1
  147. package/dist/PageHeader.d.mts +2 -40
  148. package/dist/{PageLayout-C7hDmoy_.d.mts → PageLayout-TBemv7oL.d.mts} +1 -1
  149. package/dist/{PageLayout-C7ZC7GBA.mjs → PageLayout-fXJW7daI.mjs} +2 -2
  150. package/dist/{PageLayout-C7ZC7GBA.mjs.map → PageLayout-fXJW7daI.mjs.map} +1 -1
  151. package/dist/PageLayout.d.mts +1 -1
  152. package/dist/{PageLayoutFrame--HlvI4Pp.d.mts → PageLayoutFrame-DzwlkNZ1.d.mts} +1 -1
  153. package/dist/PageLayoutFrame.d.mts +1 -1
  154. package/dist/{PageSelector-CrUb586l.d.mts → PageSelector-DXCeBUoU.d.mts} +3 -3
  155. package/dist/PageSelector.d.mts +1 -1
  156. package/dist/{Pagination-C67fsrxl.d.mts → Pagination-COcFWlha.d.mts} +2 -2
  157. package/dist/{Pagination-c4YBCy5d.mjs → Pagination-DtK-jbEY.mjs} +5 -5
  158. package/dist/{Pagination-c4YBCy5d.mjs.map → Pagination-DtK-jbEY.mjs.map} +1 -1
  159. package/dist/Pagination.d.mts +1 -1
  160. package/dist/{Pii-oW_2TUUc.mjs → Pii-DueIK287.mjs} +2 -2
  161. package/dist/{Pii-oW_2TUUc.mjs.map → Pii-DueIK287.mjs.map} +1 -1
  162. package/dist/{PillShell-BkYHghx0.d.mts → PillShell-CXROf8gO.d.mts} +2 -2
  163. package/dist/PillShell.d.mts +1 -1
  164. package/dist/{ProgressIndicator-CdhC2LVI.d.mts → ProgressIndicator-C5sbFQcd.d.mts} +1 -1
  165. package/dist/{ProgressIndicator-STyTM0Hq.mjs → ProgressIndicator-CM37EU1B.mjs} +1 -1
  166. package/dist/{ProgressIndicator-STyTM0Hq.mjs.map → ProgressIndicator-CM37EU1B.mjs.map} +1 -1
  167. package/dist/ProgressIndicator.d.mts +1 -1
  168. package/dist/{PseudoClassProps-CverE9Ni.d.mts → PseudoClassProps-BFFh2-u8.d.mts} +1 -1
  169. package/dist/PseudoClassProps.d.mts +1 -1
  170. package/dist/{Radio-CHme6WTz.mjs → Radio-DDT_l8rd.mjs} +2 -2
  171. package/dist/{Radio-CHme6WTz.mjs.map → Radio-DDT_l8rd.mjs.map} +1 -1
  172. package/dist/{RadioGroup-CDEfCg-b.d.mts → RadioGroup-BxEmipHa.d.mts} +1 -1
  173. package/dist/{RadioGroup-DOLRqHIZ.mjs → RadioGroup-CmD8NFCL.mjs} +2 -2
  174. package/dist/{RadioGroup-DOLRqHIZ.mjs.map → RadioGroup-CmD8NFCL.mjs.map} +1 -1
  175. package/dist/RadioGroup.d.mts +1 -1
  176. package/dist/{RangeCalendar-BOt59kTG.d.mts → RangeCalendar-cZSYjuOZ.d.mts} +2 -2
  177. package/dist/RangeCalendar.d.mts +1 -1
  178. package/dist/RangeCalendarPresets.d.mts +1 -1
  179. package/dist/{RouterContext-D7HBESqO.d.mts → RouterContext-CoDbEb_X.d.mts} +2 -2
  180. package/dist/RouterContext.d.mts +1 -1
  181. package/dist/{RouterLink-dppNWLgP.d.mts → RouterLink-BnIEi8d4.d.mts} +2 -2
  182. package/dist/RouterLink.d.mts +1 -1
  183. package/dist/RuleEditorFields.d.mts +2 -2
  184. package/dist/RulesPill.d.mts +1 -1
  185. package/dist/{SearchInput-B7JYHJZI.d.mts → SearchInput-DLC7-A7K.d.mts} +2 -2
  186. package/dist/SearchInput.d.mts +1 -1
  187. package/dist/SectionHeading.d.mts +1 -1
  188. package/dist/{SegmentedControl-d9tHqWce.mjs → SegmentedControl-CcKPfxBR.mjs} +2 -2
  189. package/dist/{SegmentedControl-d9tHqWce.mjs.map → SegmentedControl-CcKPfxBR.mjs.map} +1 -1
  190. package/dist/{SegmentedControl-C_7mTcuL.d.mts → SegmentedControl-xjU-2IsJ.d.mts} +1 -1
  191. package/dist/SegmentedControl.d.mts +1 -1
  192. package/dist/{Select-Da6UZicF.mjs → Select-BJ9ACmRD.mjs} +5 -5
  193. package/dist/{Select-Da6UZicF.mjs.map → Select-BJ9ACmRD.mjs.map} +1 -1
  194. package/dist/{Select-Ek-A2Cpo.d.mts → Select-sBEBrNgo.d.mts} +3 -3
  195. package/dist/Select.d.mts +1 -1
  196. package/dist/{SingleColumnLayout-ByWxiD7d.d.mts → SingleColumnLayout-CBynMc76.d.mts} +2 -2
  197. package/dist/SingleColumnLayout.d.mts +1 -1
  198. package/dist/SmartTextInput.d.mts +6 -6
  199. package/dist/SmartTextInputField.d.mts +2 -2
  200. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  201. package/dist/SmartTextInputListbox.d.mts +2 -2
  202. package/dist/SmartTextInputPopover.d.mts +1 -1
  203. package/dist/{Spinner-C4UyK9If.mjs → Spinner-uVZyOh1T.mjs} +1 -1
  204. package/dist/{Spinner-C4UyK9If.mjs.map → Spinner-uVZyOh1T.mjs.map} +1 -1
  205. package/dist/{SplitColumnLayout-DYyJabQ3.d.mts → SplitColumnLayout-BVzGbEDC.d.mts} +2 -2
  206. package/dist/SplitColumnLayout.d.mts +1 -1
  207. package/dist/{Stack-D0Dt776K.d.mts → Stack-BZyboHQl.d.mts} +1 -1
  208. package/dist/Stack.d.mts +1 -1
  209. package/dist/{StatusIndicator-akDwBiBW.mjs → StatusIndicator-Bunn9YLV.mjs} +1 -1
  210. package/dist/{StatusIndicator-akDwBiBW.mjs.map → StatusIndicator-Bunn9YLV.mjs.map} +1 -1
  211. package/dist/{Sticker-Cit5EKiU.d.mts → Sticker-CsUSNIH-.d.mts} +4 -4
  212. package/dist/{Sticker-_vmpUMfk.mjs → Sticker-yhxtIYH8.mjs} +2 -2
  213. package/dist/{Sticker-_vmpUMfk.mjs.map → Sticker-yhxtIYH8.mjs.map} +1 -1
  214. package/dist/Sticker.d.mts +1 -1
  215. package/dist/StringValueControl.d.mts +1 -1
  216. package/dist/Tab.d.mts +1 -1
  217. package/dist/{TabBar-CmYqreN0.mjs → TabBar-SX8E9-Bk.mjs} +3 -3
  218. package/dist/{TabBar-CmYqreN0.mjs.map → TabBar-SX8E9-Bk.mjs.map} +1 -1
  219. package/dist/{Table-CV8nogHu.mjs → Table--o4ZLRbb.mjs} +2 -2
  220. package/dist/{Table-CV8nogHu.mjs.map → Table--o4ZLRbb.mjs.map} +1 -1
  221. package/dist/{Table-BtNYI6QX.d.mts → Table-CadXF71E.d.mts} +1 -1
  222. package/dist/Table.d.mts +1 -1
  223. package/dist/{TableBody-DQ7pivxP.d.mts → TableBody-BKSHNSTo.d.mts} +1 -1
  224. package/dist/TableBody.d.mts +1 -1
  225. package/dist/{TableBox-vCTkOPlC.mjs → TableBox-3qunC9Nl.mjs} +7 -7
  226. package/dist/{TableBox-vCTkOPlC.mjs.map → TableBox-3qunC9Nl.mjs.map} +1 -1
  227. package/dist/TableBox.d.mts +2 -2
  228. package/dist/{TableBoxCell-BkJ587Lf.d.mts → TableBoxCell-BRECnVTs.d.mts} +6 -6
  229. package/dist/TableBoxCell.d.mts +1 -1
  230. package/dist/{TableBoxField-Dj9Cx9NP.d.mts → TableBoxField-Lm_tn73M.d.mts} +5 -5
  231. package/dist/TableBoxField.d.mts +1 -1
  232. package/dist/{TableBoxRow-CpR9Cti1.d.mts → TableBoxRow-BS8Dc-zw.d.mts} +3 -3
  233. package/dist/TableBoxRow.d.mts +1 -1
  234. package/dist/{TableBoxRowActions-Bj-LZaI7.d.mts → TableBoxRowActions-oLMb8XcM.d.mts} +2 -2
  235. package/dist/TableBoxRowActions.d.mts +1 -1
  236. package/dist/{TableCell-DOjW6ADs.d.mts → TableCell-4u5_BgTC.d.mts} +2 -2
  237. package/dist/TableCell.d.mts +1 -1
  238. package/dist/{TableControls-BtKBTGYR.mjs → TableControls-DxSFqRwJ.mjs} +693 -133
  239. package/dist/TableControls-DxSFqRwJ.mjs.map +1 -0
  240. package/dist/{TableControls-Cw7LDHWj.d.mts → TableControls-UfObf-ZN.d.mts} +14 -7
  241. package/dist/TableControls.d.mts +1 -1
  242. package/dist/{TableControlsContext-DgoZhMpQ.d.mts → TableControlsContext-Bhtb0cMs.d.mts} +4 -4
  243. package/dist/TableControlsContext.d.mts +1 -1
  244. package/dist/{TableHead-BGUg_aXc.d.mts → TableHead-BuCQeDAq.d.mts} +1 -1
  245. package/dist/TableHead.d.mts +1 -1
  246. package/dist/{TableHeaderCell-DcZcMQyR.d.mts → TableHeaderCell-DIcQlZps.d.mts} +1 -1
  247. package/dist/TableHeaderCell.d.mts +1 -1
  248. package/dist/{TableLayout-CwYQaZlA.d.mts → TableLayout-ScEVdvvA.d.mts} +1 -1
  249. package/dist/TableLayout.d.mts +1 -1
  250. package/dist/{TableRow-Dad6_CoD.d.mts → TableRow-lCsvG0a-.d.mts} +2 -2
  251. package/dist/TableRow.d.mts +1 -1
  252. package/dist/TableTH.d.mts +1 -1
  253. package/dist/{TableViewConfigurationDropdown-BGuWAarQ.d.mts → TableViewConfigurationDropdown-BDXe2Q1Y.d.mts} +2 -2
  254. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  255. package/dist/{TechnicalSticker-BhUxOU-L.mjs → TechnicalSticker-CALVwnrT.mjs} +1 -1
  256. package/dist/{TechnicalSticker-BhUxOU-L.mjs.map → TechnicalSticker-CALVwnrT.mjs.map} +1 -1
  257. package/dist/{Text-CUhW_agW.d.mts → Text-RSzei6Se.d.mts} +3 -3
  258. package/dist/Text.d.mts +1 -1
  259. package/dist/{TextArea-J_EscGvm.mjs → TextArea-CFf0Lspu.mjs} +2 -2
  260. package/dist/{TextArea-J_EscGvm.mjs.map → TextArea-CFf0Lspu.mjs.map} +1 -1
  261. package/dist/{TextArea-Djd1uT3B.d.mts → TextArea-DFn4XuG-.d.mts} +2 -2
  262. package/dist/TextArea.d.mts +1 -1
  263. package/dist/{TextUnderlineTooltip-DCVONTD0.d.mts → TextUnderlineTooltip-B0iYaPM1.d.mts} +2 -2
  264. package/dist/TextUnderlineTooltip.d.mts +1 -1
  265. package/dist/Tile.d.mts +1 -1
  266. package/dist/Toast.d.mts +1 -1
  267. package/dist/{Toggle-BEOoATjS.mjs → Toggle-BLdemkh_.mjs} +2 -2
  268. package/dist/{Toggle-BEOoATjS.mjs.map → Toggle-BLdemkh_.mjs.map} +1 -1
  269. package/dist/{Toggle-EYpW34LO.d.mts → Toggle-xtPgGaGD.d.mts} +1 -1
  270. package/dist/Toggle.d.mts +1 -1
  271. package/dist/{Tooltip-DLK9Q2Rg.d.mts → Tooltip-Blfhi2gT.d.mts} +2 -2
  272. package/dist/Tooltip.d.mts +1 -1
  273. package/dist/{TruncatedText-B_u70y6w.d.mts → TruncatedText-BMQmveJG.d.mts} +1 -1
  274. package/dist/VersionHistory.d.mts +1 -1
  275. package/dist/{VersionHistoryItem-iUabmk_y.d.mts → VersionHistoryItem-BExp7oSr.d.mts} +1 -1
  276. package/dist/VersionHistoryItem.d.mts +1 -1
  277. package/dist/WizardModal.d.mts +2 -2
  278. package/dist/{accordionTitleTypography-C7VVJvlx.d.mts → accordionTitleTypography-PMKnfoy0.d.mts} +2 -2
  279. package/dist/accordionTitleTypography.d.mts +1 -1
  280. package/dist/{chainTypes-DT-9j_sG.d.mts → chainTypes-BbFZn8a9.d.mts} +4 -4
  281. package/dist/clientFilterUtils-c5xzvoBj.d.mts +20 -0
  282. package/dist/clientFilterUtils.d.mts +2 -0
  283. package/dist/{codec-CGj8cwcj.d.mts → codec-DIp7dhcN.d.mts} +2 -2
  284. package/dist/codec.d.mts +1 -1
  285. package/dist/{color-BOm5A1Si.d.mts → color-C5B1pN1D.d.mts} +2 -2
  286. package/dist/components/Accordion/index.d.mts +1 -1
  287. package/dist/components/Attribute/index.mjs +2 -2
  288. package/dist/components/Badge/index.mjs +1 -1
  289. package/dist/components/Banner/index.mjs +1 -1
  290. package/dist/components/BottomPanel/index.mjs +3 -3
  291. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  292. package/dist/components/Breadcrumbs/index.mjs +1 -1
  293. package/dist/components/Button/index.d.mts +2 -2
  294. package/dist/components/Button/index.mjs +1 -1
  295. package/dist/components/ButtonGroup/index.mjs +2 -2
  296. package/dist/components/Card/index.d.mts +2 -2
  297. package/dist/components/CardV2/index.d.mts +1 -1
  298. package/dist/components/CardV2/index.mjs +1 -1
  299. package/dist/components/Checkbox/index.d.mts +1 -1
  300. package/dist/components/Checkbox/index.mjs +1 -1
  301. package/dist/components/CodeHighlight/index.mjs +1 -1
  302. package/dist/components/Combobox/index.d.mts +2 -2
  303. package/dist/components/Combobox/index.mjs +1 -1
  304. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  305. package/dist/components/DataTable/TableControls/index.d.mts +22 -20
  306. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  307. package/dist/components/DataTable/index.d.mts +9 -8
  308. package/dist/components/DataTable/index.mjs +2 -1474
  309. package/dist/components/DataTable/types.d.mts +2 -166
  310. package/dist/components/DatePicker/index.d.mts +5 -5
  311. package/dist/components/DatePicker/index.mjs +1 -1
  312. package/dist/components/DropdownButton/index.mjs +1 -1
  313. package/dist/components/DropdownMenu/index.d.mts +1 -1
  314. package/dist/components/DropdownMenu/index.mjs +1 -1
  315. package/dist/components/FloatingPanel/index.mjs +1 -1
  316. package/dist/components/FormControl/index.d.mts +2 -2
  317. package/dist/components/FormControl/index.mjs +2 -2
  318. package/dist/components/FormField/index.d.mts +5 -5
  319. package/dist/components/FormField/index.mjs +1 -1
  320. package/dist/components/Grid/index.mjs +1 -1
  321. package/dist/components/HoverCopyableField/index.mjs +1 -1
  322. package/dist/components/ImageTile/index.mjs +28 -15
  323. package/dist/components/ImageTile/index.mjs.map +1 -1
  324. package/dist/components/Input/index.d.mts +1 -1
  325. package/dist/components/Input/index.mjs +1 -1
  326. package/dist/components/ListBox/index.d.mts +3 -3
  327. package/dist/components/ListBox/index.mjs +1 -1
  328. package/dist/components/LoadingShimmer/index.mjs +1 -1
  329. package/dist/components/MaskedInput/index.mjs +1 -1
  330. package/dist/components/Menu/index.d.mts +1 -1
  331. package/dist/components/Menu/index.mjs +1 -1
  332. package/dist/components/Modal/index.d.mts +1 -1
  333. package/dist/components/Modal/index.mjs +1 -1
  334. package/dist/components/PageHeader/index.d.mts +1 -1
  335. package/dist/components/PageHeader/index.mjs +1 -1
  336. package/dist/components/Pagination/index.d.mts +3 -3
  337. package/dist/components/Pagination/index.mjs +1 -1
  338. package/dist/components/Pii/index.mjs +1 -1
  339. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  340. package/dist/components/ProgressIndicator/index.mjs +1 -1
  341. package/dist/components/Radio/index.mjs +1 -1
  342. package/dist/components/RadioGroup/index.d.mts +1 -1
  343. package/dist/components/RadioGroup/index.mjs +1 -1
  344. package/dist/components/RightPanel/index.mjs +2 -2
  345. package/dist/components/SegmentedControl/index.d.mts +1 -1
  346. package/dist/components/SegmentedControl/index.mjs +1 -1
  347. package/dist/components/Select/index.d.mts +1 -1
  348. package/dist/components/Select/index.mjs +1 -1
  349. package/dist/components/SmartTextInput/index.d.mts +2 -2
  350. package/dist/components/SmartTextInput/index.mjs +7 -6
  351. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  352. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  353. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  354. package/dist/components/Spinner/index.mjs +1 -1
  355. package/dist/components/Stack/index.d.mts +1 -1
  356. package/dist/components/StatusIndicator/index.mjs +1 -1
  357. package/dist/components/Sticker/index.d.mts +1 -1
  358. package/dist/components/Sticker/index.mjs +1 -1
  359. package/dist/components/TabBar/index.mjs +1 -1
  360. package/dist/components/Table/index.d.mts +8 -8
  361. package/dist/components/Table/index.mjs +1 -1
  362. package/dist/components/TableBox/index.d.mts +2 -2
  363. package/dist/components/TableBox/index.mjs +1 -1
  364. package/dist/components/TechnicalSticker/index.mjs +1 -1
  365. package/dist/components/Text/index.d.mts +1 -1
  366. package/dist/components/TextArea/index.d.mts +1 -1
  367. package/dist/components/TextArea/index.mjs +1 -1
  368. package/dist/components/Tile/index.mjs +1 -1
  369. package/dist/components/Toast/index.mjs +1 -1
  370. package/dist/components/Toggle/index.d.mts +1 -1
  371. package/dist/components/Toggle/index.mjs +1 -1
  372. package/dist/components/Tooltip/index.d.mts +3 -3
  373. package/dist/components/VersionHistory/index.d.mts +1 -1
  374. package/dist/components/VersionHistory/index.mjs +6 -6
  375. package/dist/compound-expression.d.mts +1 -1
  376. package/dist/{constants-CwzbyAdc.d.mts → constants-4rSh8e5G.d.mts} +1 -1
  377. package/dist/constants-BaMvTUbS.d.mts +10 -0
  378. package/dist/constants.d.mts +1 -1
  379. package/dist/constants2.d.mts +2 -10
  380. package/dist/{createPath-C4jIHe68.d.mts → createPath-B_CLq82C.d.mts} +2 -2
  381. package/dist/createPath.d.mts +1 -1
  382. package/dist/{date-filter-B8PKh5vg.mjs → date-filter-D0ys8s0D.mjs} +1 -1
  383. package/dist/{date-filter-B8PKh5vg.mjs.map → date-filter-D0ys8s0D.mjs.map} +1 -1
  384. package/dist/{date-range-rule-value-BTlHwhVf.d.mts → date-range-rule-value-D01nn054.d.mts} +2 -2
  385. package/dist/date-range-rule-value.d.mts +1 -1
  386. package/dist/{date-rule-intent-zdKP-tW_.d.mts → date-rule-intent-B4hQ_APa.d.mts} +3 -3
  387. package/dist/date-rule-intent.d.mts +1 -1
  388. package/dist/display.d.mts +2 -2
  389. package/dist/fieldPickerOptions.d.mts +2 -2
  390. package/dist/{filter-size-context-D3ZSzFKe.d.mts → filter-size-context-Dj7Idc8j.d.mts} +2 -2
  391. package/dist/filter-size-context.d.mts +1 -1
  392. package/dist/filters-DDrsgRYy.d.mts +22 -0
  393. package/dist/filters.d.mts +2 -0
  394. package/dist/{formatDateTime-zyRMjfH8.d.mts → formatDateTime-Dd9inM5H.d.mts} +1 -1
  395. package/dist/formatDateTime.d.mts +1 -1
  396. package/dist/helpers-D8_2I4ZX.d.mts +90 -0
  397. package/dist/helpers.d.mts +2 -90
  398. package/dist/{i18n-DeJa-arS.mjs → i18n-BscB9FUy.mjs} +18 -3
  399. package/dist/i18n-BscB9FUy.mjs.map +1 -0
  400. package/dist/{index-B13LwAGD.d.mts → index-DkXly4xw.d.mts} +2 -2
  401. package/dist/{index-DHmZDtDG.d.mts → index-DsjvDLF8.d.mts} +3 -3
  402. package/dist/{index-B7KIL3U6.d.mts → index-EGvEhP1j.d.mts} +2 -2
  403. package/dist/index-K614ZhWK.d.mts +1 -0
  404. package/dist/index-NKYLt_R9.d.mts +1 -0
  405. package/dist/index-VWno75SQ.d.mts +1 -0
  406. package/dist/index.d.mts +1 -1
  407. package/dist/index2.d.mts +1 -1
  408. package/dist/index3.d.mts +3 -3
  409. package/dist/index4.d.mts +1 -1
  410. package/dist/index5.d.mts +15 -15
  411. package/dist/{input-DMPo8gRT.d.mts → input-CKhARTlS.d.mts} +3 -3
  412. package/dist/{inputFields-DHdFgzS2.d.mts → inputFields-DyOZHse2.d.mts} +11 -11
  413. package/dist/inputFields.d.mts +1 -1
  414. package/dist/{intersperse-DWUGtKug.mjs → intersperse-ObkRVOag.mjs} +1 -1
  415. package/dist/{intersperse-DWUGtKug.mjs.map → intersperse-ObkRVOag.mjs.map} +1 -1
  416. package/dist/{jsonSchema-6mcLrVG3.d.mts → jsonSchema-COo0XQLA.d.mts} +1 -1
  417. package/dist/lib/PDSProvider.d.mts +3 -3
  418. package/dist/lib/PDSProvider.mjs +1 -1
  419. package/dist/lib/TruncatedText.d.mts +1 -1
  420. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  421. package/dist/lib/chainTypes.d.mts +1 -1
  422. package/dist/lib/color.d.mts +1 -1
  423. package/dist/lib/customFunctionSchema.d.mts +1 -1
  424. package/dist/lib/date-filter/index.d.mts +2 -2
  425. package/dist/lib/date-filter/index.mjs +1 -1
  426. package/dist/lib/i18n/index.d.mts +3 -3
  427. package/dist/lib/i18n/index.mjs +1 -1
  428. package/dist/lib/jsonSchema.d.mts +1 -1
  429. package/dist/lib/jsonSchemaType.d.mts +1 -1
  430. package/dist/lib/message.d.mts +1 -1
  431. package/dist/lib/methodChain.d.mts +2 -2
  432. package/dist/lib/methodChainNormalize.d.mts +2 -2
  433. package/dist/lib/methodChainTypes.d.mts +1 -1
  434. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  435. package/dist/lib/platformObject.d.mts +1 -1
  436. package/dist/lib/pseudoClass.d.mts +1 -1
  437. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  438. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  439. package/dist/lib/router/index.d.mts +5 -5
  440. package/dist/lib/schemaOptions.d.mts +1 -1
  441. package/dist/lib/semanticColor.d.mts +1 -1
  442. package/dist/lib/useChain.d.mts +1 -1
  443. package/dist/{listbox-options-yLjqZp4H.d.mts → listbox-options-D-DyLUdi.d.mts} +3 -3
  444. package/dist/listbox-options.d.mts +1 -1
  445. package/dist/{message-C5n7wFiN.d.mts → message-Dti22dmx.d.mts} +1 -1
  446. package/dist/{methodChain-BNDytoaD.d.mts → methodChain-BAUFBbR9.d.mts} +4 -4
  447. package/dist/{methodChainTypes-BuwpPC73.d.mts → methodChainTypes-a7kHYhs7.d.mts} +2 -2
  448. package/dist/mixins/focus.d.mts +1 -1
  449. package/dist/mixins/hoverable.d.mts +2 -2
  450. package/dist/mixins/input.d.mts +1 -1
  451. package/dist/mixins/menuItem.d.mts +2 -2
  452. package/dist/mixins/scrollbar.d.mts +1 -1
  453. package/dist/mixins/text.d.mts +1 -1
  454. package/dist/{operators-B12UYEsV.d.mts → operators-DjQXVNVI.d.mts} +33 -5
  455. package/dist/operators.d.mts +2 -2
  456. package/dist/{palette-BCszfY7I.d.mts → palette-Bp5G-S_5.d.mts} +3 -3
  457. package/dist/palette.d.mts +1 -1
  458. package/dist/patterns/CardGrouping/index.mjs +4 -4
  459. package/dist/patterns/IndexTableLayout/index.d.mts +3 -0
  460. package/dist/patterns/IndexTableLayout/index.mjs +87 -0
  461. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -0
  462. package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
  463. package/dist/patterns/PageLayout/index.d.mts +4 -4
  464. package/dist/patterns/PageLayout/index.mjs +1 -1
  465. package/dist/patterns/WizardModal/index.mjs +3 -3
  466. package/dist/reactRouterFallback.d.mts +1 -1
  467. package/dist/relative-date-label.d.mts +1 -1
  468. package/dist/safe-parse.d.mts +1 -1
  469. package/dist/{schemaOptions-DBOUChxi.d.mts → schemaOptions-D536qhSd.d.mts} +3 -3
  470. package/dist/{semantic-Duoh2Pxp.d.mts → semantic-DjKvtUi8.d.mts} +1 -1
  471. package/dist/{semanticColor-BuG977_M.d.mts → semanticColor-CmGmGRj8.d.mts} +3 -3
  472. package/dist/{strings-DQ3vxBj8.d.mts → strings-FWNWdSn1.d.mts} +18 -2
  473. package/dist/strings.d.mts +1 -1
  474. package/dist/{text-B7hx6G99.d.mts → text-BNfECpa5.d.mts} +1 -1
  475. package/dist/{theme-BKg55Zk1.d.mts → theme-VNhXxAF3.d.mts} +3 -3
  476. package/dist/theme.d.mts +1 -1
  477. package/dist/tone.d.mts +3 -3
  478. package/dist/tree.d.mts +1 -1
  479. package/dist/{types-CM8L7-ij.d.mts → types-BMpEizJP.d.mts} +6 -2
  480. package/dist/{types-eemD0jxb.d.mts → types-BhHdS6QP.d.mts} +2 -2
  481. package/dist/{types-6QeQmbFm.d.mts → types-CFe4tA8Q.d.mts} +1 -1
  482. package/dist/types-CjQzH0MM.d.mts +180 -0
  483. package/dist/{types-CEQWndtF.d.mts → types-DFU6M0OL.d.mts} +4 -4
  484. package/dist/{types-BjMJFNYH.d.mts → types-DHTFd-5t.d.mts} +1 -1
  485. package/dist/{types-VgGkS4JB.d.mts → types-DfpVVjso.d.mts} +2 -2
  486. package/dist/types-Dx8PgO8a.d.mts +95 -0
  487. package/dist/{types-CgKSEQyB.d.mts → types-HxiGiwQN.d.mts} +1 -1
  488. package/dist/{types-4wnr5R9P.d.mts → types-Kmnood9Y.d.mts} +1 -1
  489. package/dist/types.d.mts +1 -1
  490. package/dist/types2.d.mts +2 -2
  491. package/dist/types3.d.mts +1 -1
  492. package/dist/types4.d.mts +2 -2
  493. package/dist/types5.d.mts +2 -2
  494. package/dist/types6.d.mts +2 -2
  495. package/dist/types7.d.mts +1 -1
  496. package/dist/{url-state-BW1mN6WQ.d.mts → url-state-D1muieS7.d.mts} +2 -2
  497. package/dist/url-state.d.mts +1 -1
  498. package/dist/{useChain-BreIP4fW.d.mts → useChain-D5LvupTW.d.mts} +6 -6
  499. package/dist/useChainAtCursor.d.mts +6 -6
  500. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  501. package/dist/useColumnConfiguration.d.mts +34 -0
  502. package/dist/useComboboxFooterAction.d.mts +1 -1
  503. package/dist/{useFilterStateV2-B8VebPBe.d.mts → useFilterStateV2-MH3zbQFr.d.mts} +3 -3
  504. package/dist/useFilterStateV2.d.mts +1 -1
  505. package/dist/{useFormField-DAwApAKK.d.mts → useFormField-Ba8rh1CH.d.mts} +2 -2
  506. package/dist/{useFormField-J0LiPcpm.mjs → useFormField-CbNYbDdp.mjs} +2 -2
  507. package/dist/{useFormField-J0LiPcpm.mjs.map → useFormField-CbNYbDdp.mjs.map} +1 -1
  508. package/dist/useFormField.d.mts +1 -1
  509. package/dist/{useFormGroup-CALbrUkl.mjs → useFormGroup-CsKC93Pt.mjs} +1 -1
  510. package/dist/{useFormGroup-CALbrUkl.mjs.map → useFormGroup-CsKC93Pt.mjs.map} +1 -1
  511. package/dist/{useLocationPathname-BHL0pgiu.d.mts → useLocationPathname-OsvI7mH5.d.mts} +1 -1
  512. package/dist/useLocationPathname.d.mts +1 -1
  513. package/dist/{useTableBoxDragAndDrop-Dq30b6yY.d.mts → useTableBoxDragAndDrop-CKPIY98e.d.mts} +1 -1
  514. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  515. package/dist/useTableColumns-rLskKJhd.d.mts +72 -0
  516. package/dist/useTableColumns.d.mts +2 -72
  517. package/dist/useTruncation.d.mts +1 -1
  518. package/dist/{utilities-B2ry7_20.d.mts → utilities-BrEUGFGq.d.mts} +1 -1
  519. package/dist/utilities.d.mts +1 -1
  520. package/dist/utils/testing.d.mts +1 -1
  521. package/dist/utils.d.mts +1 -1
  522. package/dist/utils4.d.mts +5 -5
  523. package/dist/{validation-ZHnFPRP6.d.mts → validation-Csi2SJxm.d.mts} +3 -3
  524. package/dist/validation.d.mts +1 -1
  525. package/dist/validation2.d.mts +4 -4
  526. package/dist/{value-control-resolver-D3qzy8Kk.d.mts → value-control-resolver-BoBFvQ_0.d.mts} +2 -2
  527. package/dist/value-control-resolver.d.mts +1 -1
  528. package/dist/variables/effect.d.mts +1 -1
  529. package/dist/variables/semantic.d.mts +1 -1
  530. package/llms.txt +6 -2
  531. package/package.json +5 -3
  532. package/skills/ui-authoring/COMPONENTS.md +1 -0
  533. package/skills/ui-authoring/PATTERNS.md +4 -2
  534. package/skills/ui-authoring/SKILL.md +9 -2
  535. package/skills/ui-authoring/TOKENS.md +457 -119
  536. package/dist/Combobox-BkpRqaxB.mjs.map +0 -1
  537. package/dist/DatePicker-CjuR6ORz.mjs.map +0 -1
  538. package/dist/Modal-BBIJVhv2.mjs.map +0 -1
  539. package/dist/TableControls-BtKBTGYR.mjs.map +0 -1
  540. package/dist/components/DataTable/index.mjs.map +0 -1
  541. package/dist/i18n-DeJa-arS.mjs.map +0 -1
  542. package/dist/types-CwzwClJx.d.mts +0 -27
  543. /package/dist/{index-7in8TPrM.d.mts → index-AnhM47-e2.d.mts} +0 -0
  544. /package/dist/{index-8SLBz2NH.d.mts → index-B33elXxm.d.mts} +0 -0
  545. /package/dist/{index-B24gUwOx.d.mts → index-B4woaFSm.d.mts} +0 -0
  546. /package/dist/{index-B8M0Grl_2.d.mts → index-B6T7ov8p.d.mts} +0 -0
  547. /package/dist/{index-BFnNtGdX.d.mts → index-BNRXMhlr.d.mts} +0 -0
  548. /package/dist/{index-BjgW3E7y.d.mts → index-BOaE2xDE.d.mts} +0 -0
  549. /package/dist/{index-BwFl_eS0.d.mts → index-BPiqSRRl.d.mts} +0 -0
  550. /package/dist/{index-C3kE54DD.d.mts → index-BYd3Btr1.d.mts} +0 -0
  551. /package/dist/{index-C3usUse7.d.mts → index-BcsXXrHq.d.mts} +0 -0
  552. /package/dist/{index-C6HcjJiY.d.mts → index-Bo9LXG4r.d.mts} +0 -0
  553. /package/dist/{index-CP2eJYlK.d.mts → index-BrGZHEgX.d.mts} +0 -0
  554. /package/dist/{index-CSf15oCd.d.mts → index-Bt4QNofW.d.mts} +0 -0
  555. /package/dist/{index-CX869wwk.d.mts → index-CFuHCx9T.d.mts} +0 -0
  556. /package/dist/{index-CXaDbCtw.d.mts → index-CLTQPxoD.d.mts} +0 -0
  557. /package/dist/{index-D4DUvwPf.d.mts → index-CaqYCRmZ.d.mts} +0 -0
  558. /package/dist/{index-DB7t8whN.d.mts → index-CjDodOH2.d.mts} +0 -0
  559. /package/dist/{index-Deol7ZWO.d.mts → index-CjmAoxrR2.d.mts} +0 -0
  560. /package/dist/{index-DhiymMxa.d.mts → index-Cx0vQ6ld.d.mts} +0 -0
  561. /package/dist/{index-DjOaHFU3.d.mts → index-CzItj62a.d.mts} +0 -0
  562. /package/dist/{index-DkrC-i1D.d.mts → index-CzUpNo0e.d.mts} +0 -0
  563. /package/dist/{index-DvwPIy8X.d.mts → index-DBGd4WeR.d.mts} +0 -0
  564. /package/dist/{index-Oio5ygqN.d.mts → index-DMRtRo7y.d.mts} +0 -0
  565. /package/dist/{index-Wc1llEvP.d.mts → index-DNjQe1D8.d.mts} +0 -0
  566. /package/dist/{index-bHnO4ZKt.d.mts → index-DW3xeuzq.d.mts} +0 -0
  567. /package/dist/{index-dzI_9J-Z.d.mts → index-DZlqSwCF.d.mts} +0 -0
  568. /package/dist/{index-gpCH5158.d.mts → index-De7MV8-j.d.mts} +0 -0
  569. /package/dist/{index-lIMqGGJz.d.mts → index-DjG1RCY5.d.mts} +0 -0
  570. /package/dist/{index-luywJTzJ.d.mts → index-Dlcv6Ku22.d.mts} +0 -0
  571. /package/dist/{index-sViox9YW.d.mts → index-DrK1_jKY.d.mts} +0 -0
  572. /package/dist/{index-xAZnxq0d2.d.mts → index-IJ_PXwxI2.d.mts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton-Cqxfmrea.mjs","names":["noop"],"sources":["../components/Button/palette.ts","../components/Button/Button.tsx","../components/Button/IconButton.tsx"],"sourcesContent":["import type { Color } from '@persona/design-tokens';\nimport { type PdsColor, transparent, withAlpha } from 'design-system/lib/color';\nimport { semanticTokens } from 'design-system/lib/semanticColor';\nimport type { PersonaTheme } from 'design-system/theme';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nexport type ButtonVariant = 'basic' | 'primary' | 'inverse' | 'danger' | 'text' | 'outline';\n\nexport interface ButtonPalette {\n default: PdsColor;\n hover: Color;\n active: Color;\n disabled: PdsColor;\n text: Color;\n textDisabled: PdsColor;\n /** Set only under semantic theming; legacy leaves disabled icon colour to the stroke rules. */\n iconDisabled?: PdsColor;\n highlightDark: Color;\n}\n\nconst buildSemanticPalettes = (tokens: SemanticTokens): Record<ButtonVariant, ButtonPalette> => {\n const neutral = {\n hover: tokens.ActionNeutralHover,\n active: tokens.ActionNeutralActive,\n text: tokens.FgPrimary,\n textDisabled: tokens.FgDisabled,\n iconDisabled: tokens.FgDisabled,\n highlightDark: tokens.FgDisabled,\n };\n return {\n basic: {\n ...neutral,\n default: tokens.ActionNeutral,\n disabled: withAlpha(tokens.ActionNeutral, tokens.Opacity65),\n },\n text: { ...neutral, default: transparent, disabled: transparent },\n outline: {\n ...neutral,\n default: transparent,\n hover: tokens.ActionOutlineHover,\n active: tokens.ActionOutlineActive,\n disabled: transparent,\n },\n primary: {\n default: tokens.ActionPrimary,\n hover: tokens.ActionPrimaryHover,\n active: tokens.ActionPrimaryActive,\n disabled: tokens.ActionPrimary,\n text: tokens.FgInverse,\n textDisabled: tokens.FgInverse,\n iconDisabled: tokens.FgInverse,\n highlightDark: tokens.FgInverse,\n },\n danger: {\n default: tokens.ActionDanger,\n hover: tokens.ActionDangerHover,\n active: tokens.ActionDangerActive,\n disabled: tokens.ActionDanger,\n text: tokens.FgInverse,\n textDisabled: tokens.FgInverse,\n iconDisabled: tokens.FgInverse,\n highlightDark: tokens.FgInverse,\n },\n inverse: {\n default: tokens.ActionInverse,\n hover: tokens.ActionInverseHover,\n active: tokens.ActionInverseActive,\n disabled: withAlpha(tokens.ActionInverse, tokens.Opacity65),\n text: tokens.FgPrimaryStatic,\n textDisabled: withAlpha(tokens.FgPrimaryStatic, tokens.Opacity65),\n iconDisabled: withAlpha(tokens.FgPrimaryStatic, tokens.Opacity65),\n highlightDark: tokens.ActionNeutralActive,\n },\n };\n};\n\nconst semanticPaletteCache = new WeakMap<SemanticTokens, Record<ButtonVariant, ButtonPalette>>();\n\nconst semanticPalettes = (tokens: SemanticTokens): Record<ButtonVariant, ButtonPalette> => {\n let palettes = semanticPaletteCache.get(tokens);\n if (!palettes) {\n palettes = buildSemanticPalettes(tokens);\n semanticPaletteCache.set(tokens, palettes);\n }\n return palettes;\n};\n\nexport const buttonPalette = (theme: PersonaTheme, variant: ButtonVariant): ButtonPalette => {\n const tokens = semanticTokens(theme);\n return tokens ? semanticPalettes(tokens)[variant] : theme.color.variants[variant];\n};\n","import { isEmpty, isFunction } from 'lodash-es';\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type HTMLAttributeAnchorTarget,\n type MouseEvent,\n type ReactNode,\n type Ref,\n useCallback,\n} from 'react';\nimport styled, {\n css,\n type DefaultTheme,\n type FlattenInterpolation,\n type ThemeProps,\n} from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { LoaderIcon } from '@persona/icons';\nimport { opacityOf, withAlpha } from 'design-system/lib/color';\nimport { isDisabled, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { RouterLink, type To } from 'design-system/lib/router';\nimport { semanticColor, semanticOnly, semanticTokens } from 'design-system/lib/semanticColor';\nimport useToggle from 'design-system/lib/useToggle';\nimport { focusOutlineControlled } from 'design-system/mixins/focus';\nimport { printMixins } from 'design-system/mixins/print';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\nimport { rotate } from 'design-system/variables/keyframes';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport { type ButtonVariant, buttonPalette } from './palette';\n\nconst noop = (): void => undefined;\n\n// TODO(joseph): Bring this fix back to pseudoClass\nconst isActive = ({ active }: PseudoClassProps) => (active ? '' : ':active:enabled');\n\n/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\nconst sizeStyles: Record<ButtonProps['size'], FlattenInterpolation<ThemeProps<DefaultTheme>>> = {\n md: css`\n ${paragraphMixins.md}\n height: ${({ theme }) => theme.button.height.md};\n padding: ${Spacing[2]};\n svg {\n height: 16px;\n width: 16px;\n }\n `,\n sm: css`\n ${paragraphMixins.sm}\n height: ${({ theme }) => theme.button.height.sm};\n padding: ${Spacing[1]} 6px;\n svg {\n height: 16px;\n width: 16px;\n }\n `,\n};\n\n/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\nconst widthStyles: Record<ButtonProps['width'], FlattenInterpolation<ThemeProps<DefaultTheme>>> = {\n full: css`\n width: 100%;\n `,\n auto: css`\n width: auto;\n `,\n // TODO: rename this prop to 'element' as a standard unresponsive element width\n button: css`\n width: ${({ theme }) => theme.element.width.md};\n `,\n icon: css<ButtonProps>`\n width: ${({ theme, size }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return theme.button.height[size];\n }};\n padding: 0;\n flex: none;\n `,\n};\n\ninterface ButtonPropsWithTransientProps extends Omit<ButtonProps, 'isPending'> {\n $isPending: boolean;\n $onSecondaryBackground?: boolean;\n}\n\nexport const StyledButton = styled.button.attrs<ButtonPropsWithTransientProps>(({ to, target }) => {\n if (isEmpty(to)) {\n return 'button';\n } else if (typeof to === 'string' && to.startsWith('https://')) {\n return {\n as: 'a',\n href: to,\n target: target ?? '_blank',\n rel: 'noreferrer',\n };\n } else {\n return {\n as: RouterLink,\n };\n }\n})<ButtonPropsWithTransientProps>`\n cursor: pointer;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n ${({ theme, variant = 'primary' }) => {\n const palette = buttonPalette(theme, variant);\n const tokens = semanticTokens(theme);\n return css`\n &:disabled {\n background-color: ${palette.disabled};\n color: ${palette.textDisabled};\n ${\n tokens &&\n (variant === 'primary' || variant === 'danger') &&\n css`\n opacity: ${opacityOf(tokens.Opacity65)};\n `\n }\n ${\n palette.iconDisabled &&\n css`\n svg {\n color: ${palette.iconDisabled};\n }\n `\n }\n svg path {\n stroke: ${palette.iconDisabled ?? palette.textDisabled};\n }\n\n /* For backwards compatibility with current coloring scheme (targeting stroke property) */\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n /* Support icons with stroke */\n path[stroke] {\n stroke: currentColor;\n }\n }\n\n user-select: none;\n }\n `;\n }}\n\n ${({ theme, variant }) =>\n variant === 'outline' &&\n css`\n border: 1px solid ${semanticColor(theme, 'BorderDefault', theme.color.border.input)};\n `}\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n /* To properly position loading spinner */\n position: relative;\n\n border-radius: ${({ theme }) => theme.button.borderRadius};\n\n transition-duration: ${TransitionDuration.Fast};\n transition-property: background-color, color, border-color, width, height;\n\n ${({ size }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return sizeStyles[size];\n }}\n ${({ width }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return widthStyles[width];\n }}\n\n /* Variant styling */\n ${({ theme, variant = 'primary', $isPending, $onSecondaryBackground }) => {\n let palette = buttonPalette(theme, variant);\n\n if (variant === 'basic' && $onSecondaryBackground) {\n const tokens = semanticTokens(theme);\n palette = tokens\n ? {\n ...palette,\n default: tokens.ActionNeutralHover,\n hover: tokens.ActionNeutralActive,\n active: tokens.ActionNeutralActive,\n disabled: withAlpha(tokens.ActionNeutralHover, tokens.Opacity65),\n }\n : {\n ...palette,\n default: Color.CoreSlate300,\n hover: Color.CoreSlate400,\n active: Color.CoreSlate400,\n disabled: Color.CoreSlate100,\n };\n }\n\n return css`\n background-color: ${palette.default};\n color: ${palette.text};\n svg path {\n stroke: ${palette.text};\n }\n\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n path[stroke] {\n stroke: currentColor;\n }\n }\n\n &${isHovered}${isNotDisabled} {\n background-color: ${palette.hover};\n }\n\n &${isDisabled} {\n cursor: not-allowed;\n }\n\n &${isActive} {\n background-color: ${palette.active};\n }\n\n ${focusOutlineControlled}\n\n ${\n $isPending &&\n css`\n cursor: default;\n background-color: ${palette.active};\n &:disabled {\n background-color: ${buttonPalette(theme, variant).active};\n user-select: none;\n ${semanticOnly(() => 'opacity: 1;')}\n }\n\n svg path {\n stroke: ${palette.highlightDark};\n }\n\n // For backwards compatibility with current coloring scheme (targeting stroke property)\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n path[stroke] {\n stroke: currentColor;\n }\n }\n `\n }\n `;\n }}\n\n\n ${printMixins.hide}\n`;\n\ntype WithPendingProps = Pick<ButtonProps, 'isPending'>;\n\nconst LoaderContainer = styled.div<WithPendingProps>`\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 2s;\n opacity: ${({ isPending }) => (isPending ? '1' : '0')};\n`;\n\nconst Loader = styled(LoaderIcon)`\n animation: ${rotate} linear 1s infinite;\n`;\n\nexport const ButtonChildren = styled('div').attrs(({ isPending }: WithPendingProps) => ({\n ['aria-hidden']: isPending,\n}))<WithPendingProps>`\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: center;\n transition: opacity ${TransitionDuration.Fast};\n opacity: ${({ isPending }) => (isPending ? '0' : '1')};\n gap: ${Spacing[1]};\n`;\n\nconst PrefixIconContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst InheritPrefixIconContainer = styled.div`\n display: flex;\n align-items: center;\n\n & svg {\n width: inherit;\n height: inherit;\n }\n`;\n\nexport const SuffixIconContainer = styled(PrefixIconContainer)`\n margin-right: 0;\n flex-grow: 1;\n justify-content: flex-end;\n`;\n\nconst ButtonText = styled.span<{ size: 'md' | 'sm'; width: 'full' | 'auto' | 'button' | 'icon' }>`\n position: relative;\n\n /* Needed to align for browsers that don't support text-box yet\n (which at this time, is firefox, and opera, and a few niche browsers)\n This checks firefox. Otherwise, it will default back to the original\n which is a slightly misaligned button\n */\n\n /* Was trying to use this with @supports not, but genuinely could not figure out why this wouldn't\n work */\n\n line-height: ${({ width }) => (width === 'icon' ? '0' : 'inherit')};\n @-moz-document url-prefix() {\n top: ${({ size }) => (size === 'md' ? '1px' : '0.5px')};\n }\n\n @supports (text-box: cap alphabetic) {\n text-box: ${({ width }) => (width === 'icon' ? 'normal' : 'cap alphabetic')};\n }\n`;\n\ntype MaybePromise =\n | ((e: MouseEvent<HTMLButtonElement>) => void)\n | ((e: MouseEvent<HTMLButtonElement>) => Promise<void>);\n\nexport interface ButtonProps\n extends ComponentPropsWithoutRef<'button'>, Omit<PseudoClassProps, 'checked'> {\n /**\n * Visual style of the button.\n *\n * - `primary` – filled brand colour, for the primary action on a surface.\n * - `basic` – subtle grey fill, for secondary actions.\n * - `outline` – transparent with a border, alternative secondary style.\n * - `text` – no background or border, for tertiary / inline actions.\n * - `inverse` – inverted fill for use on dark/coloured backgrounds.\n * - `danger` – red fill, for destructive actions.\n *\n * @defaultValue 'primary'\n */\n variant?: ButtonVariant;\n /**\n * Shows a loading spinner and disables the button. Also triggers automatically\n * when `onClick` returns a Promise, clearing once the promise settles.\n */\n isPending?: boolean;\n /**\n * Icon rendered to the left of the button label.\n * Import from `@persona/icons`.\n */\n prefixIcon?: ReactNode;\n /**\n * Controls how the prefix icon inherits sizing.\n *\n * - `basic` – icon is rendered inside a fixed-size container.\n * - `inherit` – icon stretches to fill the surrounding element's dimensions.\n *\n * @defaultValue 'basic'\n */\n prefixIconType?: 'basic' | 'inherit';\n\n /**\n * Icon rendered to the right of the button label.\n * Import from `@persona/icons`.\n */\n suffixIcon?: ReactNode;\n\n /**\n * Height and typography scale of the button.\n *\n * @defaultValue 'md'\n */\n size?: 'md' | 'sm';\n\n /**\n * Changes the button into a link.\n * A relative path renders a router-aware link (PDS `RouterProvider` adapter,\n * react-router when present, otherwise a plain `<a>`); an absolute `https://`\n * URL renders an `<a>` that opens in a new tab.\n */\n to?: To;\n\n /**\n * Overrides the target of the link if `to` is provided and is an external link.\n */\n target?: HTMLAttributeAnchorTarget;\n\n /**\n * History state attached to the navigation when `to` is an internal link.\n */\n state?: unknown;\n\n /**\n * Replaces the current history entry instead of pushing, when `to` is an internal link.\n */\n replace?: boolean;\n\n /**\n * Note: we may want to default this to 'button' in the future, but many instances of this Button component\n * in dashboard currently rely on the default 'submit' behavior that occurs when using this in redux-form\n * so we'll have to comb through and manually add the type='submit' prop.\n */\n type?: 'button' | 'reset' | 'submit';\n /**\n * Controls the width of the button.\n *\n * - `full` – stretches to fill its container (`width: 100%`).\n * - `auto` – shrinks to fit its content.\n * - `button` – a fixed medium element width (from design tokens).\n * - `icon` – square, sized to match the button height; use for icon-only buttons.\n *\n * @defaultValue 'full'\n */\n width?: 'full' | 'auto' | 'button' | 'icon';\n onClick?: MaybePromise;\n ref?: Ref<HTMLButtonElement>;\n\n /**\n * In some cases we render a button on a secondary background, which needs an adjustment\n * for certain variants.\n */\n onSecondaryBackground?: boolean;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n id,\n children,\n prefixIcon,\n suffixIcon,\n disabled,\n isPending,\n type = 'button',\n prefixIconType = 'basic',\n variant = 'primary',\n size = 'md',\n width = 'full',\n onClick,\n onSecondaryBackground,\n to,\n target,\n state,\n replace,\n ...props\n }: ButtonProps,\n ref,\n) {\n const [isResolving, { enable, disable }] = useToggle(false);\n const innerOnClick: MaybePromise = isFunction(onClick) ? onClick : noop;\n const loading = isPending || isResolving;\n const isInternalLink = !isEmpty(to) && !(typeof to === 'string' && to.startsWith('https://'));\n\n const handleClick = useCallback(\n async (e: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n return;\n }\n\n const maybePromise = innerOnClick(e);\n\n if (maybePromise instanceof Promise) {\n enable();\n await maybePromise;\n disable();\n }\n },\n [loading, innerOnClick],\n );\n\n return (\n <StyledButton\n id={id}\n type={type}\n data-test={'button__' + variant}\n variant={variant}\n size={size}\n width={width}\n disabled={disabled || loading}\n $isPending={loading}\n $onSecondaryBackground={onSecondaryBackground}\n to={to}\n target={target}\n {...(isInternalLink ? { state, replace } : {})}\n {...props}\n onClick={handleClick}\n ref={ref}\n >\n {loading && (\n <LoaderContainer isPending={loading}>\n <Loader aria-label={`Loading ${props['aria-label'] || ''}`} />\n </LoaderContainer>\n )}\n <ButtonChildren isPending={loading}>\n {prefixIcon != null && (\n <>\n {prefixIconType === 'basic' && <PrefixIconContainer>{prefixIcon}</PrefixIconContainer>}\n {prefixIconType === 'inherit' && (\n <InheritPrefixIconContainer>{prefixIcon}</InheritPrefixIconContainer>\n )}\n </>\n )}\n {children && (\n <ButtonText width={width} size={size}>\n {children}\n </ButtonText>\n )}\n {suffixIcon != null && <SuffixIconContainer>{suffixIcon}</SuffixIconContainer>}\n </ButtonChildren>\n </StyledButton>\n );\n});\n\nexport default Button;\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius } from '@persona/design-tokens';\nimport { semanticOnly } from 'design-system/lib/semanticColor';\n\nimport Button, { type ButtonProps } from './Button';\n\nconst BUTTON_SIZE_MAP = {\n xs: '16px',\n sm: '24px',\n md: '32px',\n};\n\nconst ICON_SIZE_MAP = {\n xs: '12px',\n sm: '16px',\n md: '16px',\n};\n\ntype IconBtnSize = keyof typeof BUTTON_SIZE_MAP;\n\nconst IconBtn = styled(Button).attrs({\n width: 'icon',\n variant: 'basic',\n})`\n background-color: transparent;\n padding: 0;\n border-radius: ${BorderRadius.Md};\n\n ${semanticOnly(\n () => css`\n &:disabled {\n background-color: transparent;\n }\n `,\n )}\n\n ${({ size }) => css`\n height: ${BUTTON_SIZE_MAP[size as IconBtnSize]};\n width: ${BUTTON_SIZE_MAP[size as IconBtnSize]};\n\n svg {\n width: ${ICON_SIZE_MAP[size as IconBtnSize]};\n height: ${ICON_SIZE_MAP[size as IconBtnSize]};\n }\n `}\n`;\n\nexport interface IconButtonProps extends Omit<\n ButtonProps,\n 'width' | 'prefixIcon' | 'prefixIconType' | 'suffixIcon' | 'variant' | 'size'\n> {\n /**\n * `xs` - 16px. `sm` - 24px. `md` - 32px.\n * Pair with a PDS icon in the prescribed size.\n */\n size?: IconBtnSize;\n}\n\n/**\n * Use to render icon-only buttons. Ensure buttons have proper aria properties.\n */\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { size = 'xs', ...props },\n ref,\n) {\n return <IconBtn size={size as ButtonProps['size']} ref={ref} {...props} />;\n});\n\nexport default IconButton;\n"],"mappings":"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"}
1
+ {"version":3,"file":"IconButton-HWx5Hlmi.mjs","names":["noop"],"sources":["../components/Button/palette.ts","../components/Button/Button.tsx","../components/Button/IconButton.tsx"],"sourcesContent":["import type { Color } from '@persona/design-tokens';\nimport { type PdsColor, transparent, withAlpha } from 'design-system/lib/color';\nimport { semanticTokens } from 'design-system/lib/semanticColor';\nimport type { PersonaTheme } from 'design-system/theme';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nexport type ButtonVariant = 'basic' | 'primary' | 'inverse' | 'danger' | 'text' | 'outline';\n\nexport interface ButtonPalette {\n default: PdsColor;\n hover: Color;\n active: Color;\n disabled: PdsColor;\n text: Color;\n textDisabled: PdsColor;\n /** Set only under semantic theming; legacy leaves disabled icon colour to the stroke rules. */\n iconDisabled?: PdsColor;\n highlightDark: Color;\n}\n\nconst buildSemanticPalettes = (tokens: SemanticTokens): Record<ButtonVariant, ButtonPalette> => {\n const neutral = {\n hover: tokens.ActionNeutralHover,\n active: tokens.ActionNeutralActive,\n text: tokens.FgPrimary,\n textDisabled: tokens.FgDisabled,\n iconDisabled: tokens.FgDisabled,\n highlightDark: tokens.FgDisabled,\n };\n return {\n basic: {\n ...neutral,\n default: tokens.ActionNeutral,\n disabled: withAlpha(tokens.ActionNeutral, tokens.Opacity65),\n },\n text: { ...neutral, default: transparent, disabled: transparent },\n outline: {\n ...neutral,\n default: transparent,\n hover: tokens.ActionOutlineHover,\n active: tokens.ActionOutlineActive,\n disabled: transparent,\n },\n primary: {\n default: tokens.ActionPrimary,\n hover: tokens.ActionPrimaryHover,\n active: tokens.ActionPrimaryActive,\n disabled: tokens.ActionPrimary,\n text: tokens.FgInverse,\n textDisabled: tokens.FgInverse,\n iconDisabled: tokens.FgInverse,\n highlightDark: tokens.FgInverse,\n },\n danger: {\n default: tokens.ActionDanger,\n hover: tokens.ActionDangerHover,\n active: tokens.ActionDangerActive,\n disabled: tokens.ActionDanger,\n text: tokens.FgInverse,\n textDisabled: tokens.FgInverse,\n iconDisabled: tokens.FgInverse,\n highlightDark: tokens.FgInverse,\n },\n inverse: {\n default: tokens.ActionInverse,\n hover: tokens.ActionInverseHover,\n active: tokens.ActionInverseActive,\n disabled: withAlpha(tokens.ActionInverse, tokens.Opacity65),\n text: tokens.FgPrimaryStatic,\n textDisabled: withAlpha(tokens.FgPrimaryStatic, tokens.Opacity65),\n iconDisabled: withAlpha(tokens.FgPrimaryStatic, tokens.Opacity65),\n highlightDark: tokens.ActionNeutralActive,\n },\n };\n};\n\nconst semanticPaletteCache = new WeakMap<SemanticTokens, Record<ButtonVariant, ButtonPalette>>();\n\nconst semanticPalettes = (tokens: SemanticTokens): Record<ButtonVariant, ButtonPalette> => {\n let palettes = semanticPaletteCache.get(tokens);\n if (!palettes) {\n palettes = buildSemanticPalettes(tokens);\n semanticPaletteCache.set(tokens, palettes);\n }\n return palettes;\n};\n\nexport const buttonPalette = (theme: PersonaTheme, variant: ButtonVariant): ButtonPalette => {\n const tokens = semanticTokens(theme);\n return tokens ? semanticPalettes(tokens)[variant] : theme.color.variants[variant];\n};\n","import { isEmpty, isFunction } from 'lodash-es';\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type HTMLAttributeAnchorTarget,\n type MouseEvent,\n type ReactNode,\n type Ref,\n useCallback,\n} from 'react';\nimport styled, {\n css,\n type DefaultTheme,\n type FlattenInterpolation,\n type ThemeProps,\n} from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { LoaderIcon } from '@persona/icons';\nimport { opacityOf, withAlpha } from 'design-system/lib/color';\nimport { isDisabled, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { RouterLink, type To } from 'design-system/lib/router';\nimport { semanticColor, semanticOnly, semanticTokens } from 'design-system/lib/semanticColor';\nimport useToggle from 'design-system/lib/useToggle';\nimport { focusOutlineControlled } from 'design-system/mixins/focus';\nimport { printMixins } from 'design-system/mixins/print';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\nimport { rotate } from 'design-system/variables/keyframes';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport { type ButtonVariant, buttonPalette } from './palette';\n\nconst noop = (): void => undefined;\n\n// TODO(joseph): Bring this fix back to pseudoClass\nconst isActive = ({ active }: PseudoClassProps) => (active ? '' : ':active:enabled');\n\n/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\nconst sizeStyles: Record<ButtonProps['size'], FlattenInterpolation<ThemeProps<DefaultTheme>>> = {\n md: css`\n ${paragraphMixins.md}\n height: ${({ theme }) => theme.button.height.md};\n padding: ${Spacing[2]};\n svg {\n height: 16px;\n width: 16px;\n }\n `,\n sm: css`\n ${paragraphMixins.sm}\n height: ${({ theme }) => theme.button.height.sm};\n padding: ${Spacing[1]} 6px;\n svg {\n height: 12px;\n width: 12px;\n }\n `,\n};\n\n/* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\nconst widthStyles: Record<ButtonProps['width'], FlattenInterpolation<ThemeProps<DefaultTheme>>> = {\n full: css`\n width: 100%;\n `,\n auto: css`\n width: auto;\n `,\n // TODO: rename this prop to 'element' as a standard unresponsive element width\n button: css`\n width: ${({ theme }) => theme.element.width.md};\n `,\n icon: css<ButtonProps>`\n width: ${({ theme, size }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return theme.button.height[size];\n }};\n padding: 0;\n flex: none;\n `,\n};\n\ninterface ButtonPropsWithTransientProps extends Omit<ButtonProps, 'isPending'> {\n $isPending: boolean;\n $onSecondaryBackground?: boolean;\n}\n\nexport const StyledButton = styled.button.attrs<ButtonPropsWithTransientProps>(({ to, target }) => {\n if (isEmpty(to)) {\n return 'button';\n } else if (typeof to === 'string' && to.startsWith('https://')) {\n return {\n as: 'a',\n href: to,\n target: target ?? '_blank',\n rel: 'noreferrer',\n };\n } else {\n return {\n as: RouterLink,\n };\n }\n})<ButtonPropsWithTransientProps>`\n cursor: pointer;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n ${({ theme, variant = 'primary' }) => {\n const palette = buttonPalette(theme, variant);\n const tokens = semanticTokens(theme);\n return css`\n &:disabled {\n background-color: ${palette.disabled};\n color: ${palette.textDisabled};\n ${\n tokens &&\n (variant === 'primary' || variant === 'danger') &&\n css`\n opacity: ${opacityOf(tokens.Opacity65)};\n `\n }\n ${\n palette.iconDisabled &&\n css`\n svg {\n color: ${palette.iconDisabled};\n }\n `\n }\n svg path {\n stroke: ${palette.iconDisabled ?? palette.textDisabled};\n }\n\n /* For backwards compatibility with current coloring scheme (targeting stroke property) */\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n /* Support icons with stroke */\n path[stroke] {\n stroke: currentColor;\n }\n }\n\n user-select: none;\n }\n `;\n }}\n\n ${({ theme, variant }) =>\n variant === 'outline' &&\n css`\n border: 1px solid ${semanticColor(theme, 'BorderDefault', theme.color.border.input)};\n `}\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n /* To properly position loading spinner */\n position: relative;\n\n border-radius: ${({ theme }) => theme.button.borderRadius};\n\n transition-duration: ${TransitionDuration.Fast};\n transition-property: background-color, color, border-color, width, height;\n\n ${({ size }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return sizeStyles[size];\n }}\n ${({ width }) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return widthStyles[width];\n }}\n\n /* Variant styling */\n ${({ theme, variant = 'primary', $isPending, $onSecondaryBackground }) => {\n let palette = buttonPalette(theme, variant);\n\n if (variant === 'basic' && $onSecondaryBackground) {\n const tokens = semanticTokens(theme);\n palette = tokens\n ? {\n ...palette,\n default: tokens.ActionNeutralHover,\n hover: tokens.ActionNeutralActive,\n active: tokens.ActionNeutralActive,\n disabled: withAlpha(tokens.ActionNeutralHover, tokens.Opacity65),\n }\n : {\n ...palette,\n default: Color.CoreSlate300,\n hover: Color.CoreSlate400,\n active: Color.CoreSlate400,\n disabled: Color.CoreSlate100,\n };\n }\n\n return css`\n background-color: ${palette.default};\n color: ${palette.text};\n svg path {\n stroke: ${palette.text};\n }\n\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n path[stroke] {\n stroke: currentColor;\n }\n }\n\n &${isHovered}${isNotDisabled} {\n background-color: ${palette.hover};\n }\n\n &${isDisabled} {\n cursor: not-allowed;\n }\n\n &${isActive} {\n background-color: ${palette.active};\n }\n\n ${focusOutlineControlled}\n\n ${\n $isPending &&\n css`\n cursor: default;\n background-color: ${palette.active};\n &:disabled {\n background-color: ${buttonPalette(theme, variant).active};\n user-select: none;\n ${semanticOnly(() => 'opacity: 1;')}\n }\n\n svg path {\n stroke: ${palette.highlightDark};\n }\n\n // For backwards compatibility with current coloring scheme (targeting stroke property)\n svg.pds-icon {\n path {\n stroke: unset;\n }\n\n path[stroke] {\n stroke: currentColor;\n }\n }\n `\n }\n `;\n }}\n\n\n ${printMixins.hide}\n`;\n\ntype WithPendingProps = Pick<ButtonProps, 'isPending'>;\n\nconst LoaderContainer = styled.div<WithPendingProps>`\n position: absolute;\n height: 100%;\n width: 100%;\n top: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: opacity 2s;\n opacity: ${({ isPending }) => (isPending ? '1' : '0')};\n`;\n\nconst Loader = styled(LoaderIcon)`\n animation: ${rotate} linear 1s infinite;\n`;\n\nexport const ButtonChildren = styled('div').attrs(({ isPending }: WithPendingProps) => ({\n ['aria-hidden']: isPending,\n}))<WithPendingProps>`\n width: 100%;\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n justify-content: center;\n transition: opacity ${TransitionDuration.Fast};\n opacity: ${({ isPending }) => (isPending ? '0' : '1')};\n gap: ${Spacing[1]};\n`;\n\nconst PrefixIconContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst InheritPrefixIconContainer = styled.div`\n display: flex;\n align-items: center;\n\n & svg {\n width: inherit;\n height: inherit;\n }\n`;\n\nexport const SuffixIconContainer = styled(PrefixIconContainer)`\n margin-right: 0;\n flex-grow: 1;\n justify-content: flex-end;\n`;\n\nconst ButtonText = styled.span<{ size: 'md' | 'sm'; width: 'full' | 'auto' | 'button' | 'icon' }>`\n position: relative;\n\n /* Needed to align for browsers that don't support text-box yet\n (which at this time, is firefox, and opera, and a few niche browsers)\n This checks firefox. Otherwise, it will default back to the original\n which is a slightly misaligned button\n */\n\n /* Was trying to use this with @supports not, but genuinely could not figure out why this wouldn't\n work */\n\n line-height: ${({ width }) => (width === 'icon' ? '0' : 'inherit')};\n @-moz-document url-prefix() {\n top: ${({ size }) => (size === 'md' ? '1px' : '0.5px')};\n }\n\n @supports (text-box: cap alphabetic) {\n text-box: ${({ width }) => (width === 'icon' ? 'normal' : 'cap alphabetic')};\n }\n`;\n\ntype MaybePromise =\n | ((e: MouseEvent<HTMLButtonElement>) => void)\n | ((e: MouseEvent<HTMLButtonElement>) => Promise<void>);\n\nexport interface ButtonProps\n extends ComponentPropsWithoutRef<'button'>, Omit<PseudoClassProps, 'checked'> {\n /**\n * Visual style of the button.\n *\n * - `primary` – filled brand colour, for the primary action on a surface.\n * - `basic` – subtle grey fill, for secondary actions.\n * - `outline` – transparent with a border, alternative secondary style.\n * - `text` – no background or border, for tertiary / inline actions.\n * - `inverse` – inverted fill for use on dark/coloured backgrounds.\n * - `danger` – red fill, for destructive actions.\n *\n * @defaultValue 'primary'\n */\n variant?: ButtonVariant;\n /**\n * Shows a loading spinner and disables the button. Also triggers automatically\n * when `onClick` returns a Promise, clearing once the promise settles.\n */\n isPending?: boolean;\n /**\n * Icon rendered to the left of the button label.\n * Import from `@persona/icons`.\n */\n prefixIcon?: ReactNode;\n /**\n * Controls how the prefix icon inherits sizing.\n *\n * - `basic` – icon is rendered inside a fixed-size container.\n * - `inherit` – icon stretches to fill the surrounding element's dimensions.\n *\n * @defaultValue 'basic'\n */\n prefixIconType?: 'basic' | 'inherit';\n\n /**\n * Icon rendered to the right of the button label.\n * Import from `@persona/icons`.\n */\n suffixIcon?: ReactNode;\n\n /**\n * Height and typography scale of the button.\n *\n * @defaultValue 'md'\n */\n size?: 'md' | 'sm';\n\n /**\n * Changes the button into a link.\n * A relative path renders a router-aware link (PDS `RouterProvider` adapter,\n * react-router when present, otherwise a plain `<a>`); an absolute `https://`\n * URL renders an `<a>` that opens in a new tab.\n */\n to?: To;\n\n /**\n * Overrides the target of the link if `to` is provided and is an external link.\n */\n target?: HTMLAttributeAnchorTarget;\n\n /**\n * History state attached to the navigation when `to` is an internal link.\n */\n state?: unknown;\n\n /**\n * Replaces the current history entry instead of pushing, when `to` is an internal link.\n */\n replace?: boolean;\n\n /**\n * Note: we may want to default this to 'button' in the future, but many instances of this Button component\n * in dashboard currently rely on the default 'submit' behavior that occurs when using this in redux-form\n * so we'll have to comb through and manually add the type='submit' prop.\n */\n type?: 'button' | 'reset' | 'submit';\n /**\n * Controls the width of the button.\n *\n * - `full` – stretches to fill its container (`width: 100%`).\n * - `auto` – shrinks to fit its content.\n * - `button` – a fixed medium element width (from design tokens).\n * - `icon` – square, sized to match the button height; use for icon-only buttons.\n *\n * @defaultValue 'full'\n */\n width?: 'full' | 'auto' | 'button' | 'icon';\n onClick?: MaybePromise;\n ref?: Ref<HTMLButtonElement>;\n\n /**\n * In some cases we render a button on a secondary background, which needs an adjustment\n * for certain variants.\n */\n onSecondaryBackground?: boolean;\n}\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n id,\n children,\n prefixIcon,\n suffixIcon,\n disabled,\n isPending,\n type = 'button',\n prefixIconType = 'basic',\n variant = 'primary',\n size = 'md',\n width = 'full',\n onClick,\n onSecondaryBackground,\n to,\n target,\n state,\n replace,\n ...props\n }: ButtonProps,\n ref,\n) {\n const [isResolving, { enable, disable }] = useToggle(false);\n const innerOnClick: MaybePromise = isFunction(onClick) ? onClick : noop;\n const loading = isPending || isResolving;\n const isInternalLink = !isEmpty(to) && !(typeof to === 'string' && to.startsWith('https://'));\n\n const handleClick = useCallback(\n async (e: MouseEvent<HTMLButtonElement>) => {\n if (loading) {\n return;\n }\n\n const maybePromise = innerOnClick(e);\n\n if (maybePromise instanceof Promise) {\n enable();\n try {\n await maybePromise;\n } catch {\n // A failed action should not leave the button pending.\n } finally {\n disable();\n }\n }\n },\n [loading, innerOnClick],\n );\n\n return (\n <StyledButton\n id={id}\n type={type}\n data-test={'button__' + variant}\n variant={variant}\n size={size}\n width={width}\n disabled={disabled || loading}\n $isPending={loading}\n $onSecondaryBackground={onSecondaryBackground}\n to={to}\n target={target}\n {...(isInternalLink ? { state, replace } : {})}\n {...props}\n onClick={handleClick}\n ref={ref}\n >\n {loading && (\n <LoaderContainer isPending={loading}>\n <Loader aria-label={`Loading ${props['aria-label'] || ''}`} />\n </LoaderContainer>\n )}\n <ButtonChildren isPending={loading}>\n {prefixIcon != null && (\n <>\n {prefixIconType === 'basic' && <PrefixIconContainer>{prefixIcon}</PrefixIconContainer>}\n {prefixIconType === 'inherit' && (\n <InheritPrefixIconContainer>{prefixIcon}</InheritPrefixIconContainer>\n )}\n </>\n )}\n {children && (\n <ButtonText width={width} size={size}>\n {children}\n </ButtonText>\n )}\n {suffixIcon != null && <SuffixIconContainer>{suffixIcon}</SuffixIconContainer>}\n </ButtonChildren>\n </StyledButton>\n );\n});\n\nexport default Button;\n","import { forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius } from '@persona/design-tokens';\nimport { semanticOnly } from 'design-system/lib/semanticColor';\n\nimport Button, { type ButtonProps } from './Button';\n\nconst BUTTON_SIZE_MAP = {\n xs: '16px',\n sm: '24px',\n md: '32px',\n};\n\nconst ICON_SIZE_MAP = {\n xs: '12px',\n sm: '16px',\n md: '16px',\n};\n\ntype IconBtnSize = keyof typeof BUTTON_SIZE_MAP;\n\nconst IconBtn = styled(Button).attrs({\n width: 'icon',\n variant: 'basic',\n})`\n background-color: transparent;\n padding: 0;\n border-radius: ${BorderRadius.Md};\n\n ${semanticOnly(\n () => css`\n &:disabled {\n background-color: transparent;\n }\n `,\n )}\n\n ${({ size }) => css`\n height: ${BUTTON_SIZE_MAP[size as IconBtnSize]};\n width: ${BUTTON_SIZE_MAP[size as IconBtnSize]};\n\n svg {\n width: ${ICON_SIZE_MAP[size as IconBtnSize]};\n height: ${ICON_SIZE_MAP[size as IconBtnSize]};\n }\n `}\n`;\n\nexport interface IconButtonProps extends Omit<\n ButtonProps,\n 'width' | 'prefixIcon' | 'prefixIconType' | 'suffixIcon' | 'variant' | 'size'\n> {\n /**\n * `xs` - 16px. `sm` - 24px. `md` - 32px.\n * Pair with a PDS icon in the prescribed size.\n */\n size?: IconBtnSize;\n}\n\n/**\n * Use to render icon-only buttons. Ensure buttons have proper aria properties.\n */\nconst IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n { size = 'xs', ...props },\n ref,\n) {\n return <IconBtn size={size as ButtonProps['size']} ref={ref} {...props} />;\n});\n\nexport default IconButton;\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,MAAM,yBAAyB,WAAiE;CAC9F,MAAM,UAAU;EACd,OAAO,OAAO;EACd,QAAQ,OAAO;EACf,MAAM,OAAO;EACb,cAAc,OAAO;EACrB,cAAc,OAAO;EACrB,eAAe,OAAO;EACvB;AACD,QAAO;EACL,OAAO;GACL,GAAG;GACH,SAAS,OAAO;GAChB,UAAU,UAAU,OAAO,eAAe,OAAO,UAAU;GAC5D;EACD,MAAM;GAAE,GAAG;GAAS,SAAS;GAAa,UAAU;GAAa;EACjE,SAAS;GACP,GAAG;GACH,SAAS;GACT,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,UAAU;GACX;EACD,SAAS;GACP,SAAS,OAAO;GAChB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,MAAM,OAAO;GACb,cAAc,OAAO;GACrB,cAAc,OAAO;GACrB,eAAe,OAAO;GACvB;EACD,QAAQ;GACN,SAAS,OAAO;GAChB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,MAAM,OAAO;GACb,cAAc,OAAO;GACrB,cAAc,OAAO;GACrB,eAAe,OAAO;GACvB;EACD,SAAS;GACP,SAAS,OAAO;GAChB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,UAAU,UAAU,OAAO,eAAe,OAAO,UAAU;GAC3D,MAAM,OAAO;GACb,cAAc,UAAU,OAAO,iBAAiB,OAAO,UAAU;GACjE,cAAc,UAAU,OAAO,iBAAiB,OAAO,UAAU;GACjE,eAAe,OAAO;GACvB;EACF;;AAGH,MAAM,uCAAuB,IAAI,SAA+D;AAEhG,MAAM,oBAAoB,WAAiE;CACzF,IAAI,WAAW,qBAAqB,IAAI,OAAO;AAC/C,KAAI,CAAC,UAAU;AACb,aAAW,sBAAsB,OAAO;AACxC,uBAAqB,IAAI,QAAQ,SAAS;;AAE5C,QAAO;;AAGT,MAAa,iBAAiB,OAAqB,YAA0C;CAC3F,MAAM,SAAS,eAAe,MAAM;AACpC,QAAO,SAAS,iBAAiB,OAAO,CAAC,WAAW,MAAM,MAAM,SAAS;;;;ACxD3E,MAAMA,eAAmB,KAAA;AAGzB,MAAM,YAAY,EAAE,aAAgC,SAAS,KAAK;AAGlE,MAAM,aAA0F;CAC9F,IAAI,GAAG;MACH,gBAAgB,GAAG;eACV,EAAE,YAAY,MAAM,OAAO,OAAO,GAAG;eACrC,QAAQ,GAAG;;;;;;CAMxB,IAAI,GAAG;MACH,gBAAgB,GAAG;eACV,EAAE,YAAY,MAAM,OAAO,OAAO,GAAG;eACrC,QAAQ,GAAG;;;;;;CAMzB;AAGD,MAAM,cAA4F;CAChG,MAAM,GAAG;;;CAGT,MAAM,GAAG;;;CAIT,QAAQ,GAAG;cACC,EAAE,YAAY,MAAM,QAAQ,MAAM,GAAG;;CAEjD,MAAM,GAAgB;cACV,EAAE,OAAO,WAAW;AAE5B,SAAO,MAAM,OAAO,OAAO;GAC3B;;;;CAIL;AAOD,MAAa,eAAe,OAAO,OAAO,OAAsC,EAAE,IAAI,aAAa;AACjG,KAAI,QAAQ,GAAG,CACb,QAAO;UACE,OAAO,OAAO,YAAY,GAAG,WAAW,WAAW,CAC5D,QAAO;EACL,IAAI;EACJ,MAAM;EACN,QAAQ,UAAU;EAClB,KAAK;EACN;KAED,QAAO,EACL,IAAI,YACL;EAEH;;;;;KAKG,EAAE,OAAO,UAAU,gBAAgB;CACpC,MAAM,UAAU,cAAc,OAAO,QAAQ;CAC7C,MAAM,SAAS,eAAe,MAAM;AACpC,QAAO,GAAG;;4BAEc,QAAQ,SAAS;iBAC5B,QAAQ,aAAa;UAE5B,WACC,YAAY,aAAa,YAAY,aACtC,GAAG;uBACU,UAAU,OAAO,UAAU,CAAC;YAE1C;UAEC,QAAQ,gBACR,GAAG;;uBAEU,QAAQ,aAAa;;YAGnC;;oBAEW,QAAQ,gBAAgB,QAAQ,aAAa;;;;;;;;;;;;;;;;;;EAkB7D;;KAEC,EAAE,OAAO,cACV,YAAY,aACZ,GAAG;0BACmB,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,MAAM,CAAC;MACpF;;;;;;;;;oBASc,EAAE,YAAY,MAAM,OAAO,aAAa;;iCAEX;;;KAG5C,EAAE,WAAW;AAEd,QAAO,WAAW;EAClB;KACC,EAAE,YAAY;AAEf,QAAO,YAAY;EACnB;;;KAGC,EAAE,OAAO,UAAU,WAAW,YAAY,6BAA6B;CACxE,IAAI,UAAU,cAAc,OAAO,QAAQ;AAE3C,KAAI,YAAY,WAAW,wBAAwB;EACjD,MAAM,SAAS,eAAe,MAAM;AACpC,YAAU,SACN;GACE,GAAG;GACH,SAAS,OAAO;GAChB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,UAAU,UAAU,OAAO,oBAAoB,OAAO,UAAU;GACjE,GACD;GACE,GAAG;GACH,SAAS,MAAM;GACf,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,UAAU,MAAM;GACjB;;AAGP,QAAO,GAAG;0BACY,QAAQ,QAAQ;eAC3B,QAAQ,KAAK;;kBAEV,QAAQ,KAAK;;;;;;;;;;;;;SAatB,YAAY,cAAc;4BACP,QAAQ,MAAM;;;SAGjC,WAAW;;;;SAIX,SAAS;4BACU,QAAQ,OAAO;;;QAGnC,uBAAuB;;QAGvB,cACA,GAAG;;4BAEiB,QAAQ,OAAO;;8BAEb,cAAc,OAAO,QAAQ,CAAC,OAAO;;YAEvD,mBAAmB,cAAc,CAAC;;;;oBAI1B,QAAQ,cAAc;;;;;;;;;;;;;QAcnC;;EAEH;;;IAGA,YAAY,KAAK;;AAKrB,MAAM,kBAAkB,OAAO,GAAqB;;;;;;;;;cAStC,EAAE,gBAAiB,YAAY,MAAM,IAAK;;AAGxD,MAAM,SAAS,OAAO,WAAW;eAClB,OAAO;;AAGtB,MAAa,iBAAiB,OAAO,MAAM,CAAC,OAAO,EAAE,iBAAmC,GACrF,gBAAgB,WAClB,EAAE;;;;;;gCAM6C;cAClC,EAAE,gBAAiB,YAAY,MAAM,IAAK;SAC/C,QAAQ,GAAG;;AAGpB,MAAM,sBAAsB,OAAO,GAAG;;;;AAKtC,MAAM,6BAA6B,OAAO,GAAG;;;;;;;;;AAU7C,MAAa,sBAAsB,OAAO,oBAAoB;;;;;AAM9D,MAAM,aAAa,OAAO,IAAuE;;;;;;;;;;;;kBAY/E,EAAE,YAAa,UAAU,SAAS,MAAM,UAAW;;YAEzD,EAAE,WAAY,SAAS,OAAO,QAAQ,QAAS;;;;iBAI1C,EAAE,YAAa,UAAU,SAAS,WAAW,iBAAkB;;;AA0GhF,MAAM,SAAS,WAA2C,SAAS,OACjE,EACE,IACA,UACA,YACA,YACA,UACA,WACA,OAAO,UACP,iBAAiB,SACjB,UAAU,WACV,OAAO,MACP,QAAQ,QACR,SACA,uBACA,IACA,QACA,OACA,SACA,GAAG,SAEL,KACA;CACA,MAAM,CAAC,aAAa,EAAE,QAAQ,aAAa,UAAU,MAAM;CAC3D,MAAM,eAA6B,WAAW,QAAQ,GAAG,UAAUA;CACnE,MAAM,UAAU,aAAa;CAC7B,MAAM,iBAAiB,CAAC,QAAQ,GAAG,IAAI,EAAE,OAAO,OAAO,YAAY,GAAG,WAAW,WAAW;CAE5F,MAAM,cAAc,YAClB,OAAO,MAAqC;AAC1C,MAAI,QACF;EAGF,MAAM,eAAe,aAAa,EAAE;AAEpC,MAAI,wBAAwB,SAAS;AACnC,WAAQ;AACR,OAAI;AACF,UAAM;WACA,WAEE;AACR,aAAS;;;IAIf,CAAC,SAAS,aAAa,CACxB;AAED,QACE,qBAAC,cAAD;EACM;EACE;EACN,aAAW,aAAa;EACf;EACH;EACC;EACP,UAAU,YAAY;EACtB,YAAY;EACZ,wBAAwB;EACpB;EACI;EACR,GAAK,iBAAiB;GAAE;GAAO;GAAS,GAAG,EAAE;EAC7C,GAAI;EACJ,SAAS;EACJ;YAfP,CAiBG,WACC,oBAAC,iBAAD;GAAiB,WAAW;aAC1B,oBAAC,QAAD,EAAQ,cAAY,WAAW,MAAM,iBAAiB,MAAQ,CAAA;GAC9C,CAAA,EAEpB,qBAAC,gBAAD;GAAgB,WAAW;aAA3B;IACG,cAAc,QACb,qBAAA,YAAA,EAAA,UAAA,CACG,mBAAmB,WAAW,oBAAC,qBAAD,EAAA,UAAsB,YAAiC,CAAA,EACrF,mBAAmB,aAClB,oBAAC,4BAAD,EAAA,UAA6B,YAAwC,CAAA,CAEtE,EAAA,CAAA;IAEJ,YACC,oBAAC,YAAD;KAAmB;KAAa;KAC7B;KACU,CAAA;IAEd,cAAc,QAAQ,oBAAC,qBAAD,EAAA,UAAsB,YAAiC,CAAA;IAC/D;KACJ;;EAEjB;;;AC5gBF,MAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAM,gBAAgB;CACpB,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAID,MAAM,UAAU,OAAO,OAAO,CAAC,MAAM;CACnC,OAAO;CACP,SAAS;CACV,CAAC;;;mBAGiB,aAAa,GAAG;;IAE/B,mBACM,GAAG;;;;MAKV,CAAC;;KAEC,EAAE,WAAW,GAAG;cACP,gBAAgB,MAAqB;aACtC,gBAAgB,MAAqB;;;eAGnC,cAAc,MAAqB;gBAClC,cAAc,MAAqB;;IAE/C;;;;;AAiBJ,MAAM,aAAa,WAA+C,SAAS,WACzE,EAAE,OAAO,MAAM,GAAG,SAClB,KACA;AACA,QAAO,oBAAC,SAAD;EAAe;EAAkC;EAAK,GAAI;EAAS,CAAA;EAC1E"}
@@ -1,2 +1,2 @@
1
- import { n as IconButtonProps, t as IconButton } from "./IconButton-Bt3WyiGq.mjs";
1
+ import { n as IconButtonProps, t as IconButton } from "./IconButton-Bigvu1Q4.mjs";
2
2
  export { IconButtonProps, IconButton as default };
@@ -1,4 +1,4 @@
1
- import { i as TextAction } from "./Action-DcK0fRrq.mjs";
1
+ import { i as TextAction } from "./Action-DT8WqfEg.mjs";
2
2
  import { ComponentPropsWithoutRef, MouseEvent, ReactNode } from "react";
3
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
@@ -33,8 +33,9 @@ interface ImageTileProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children
33
33
  /**
34
34
  * Metadata rows rendered beneath the thumbnail. Each entry becomes a
35
35
  * full-width, left-aligned row in a vertical Stack. Block content fills the
36
- * row; inline content (e.g. a Sticker) hugs the left. Region is omitted when
37
- * the array is empty or undefined.
36
+ * row; inline content (e.g. a Sticker) hugs the left. The region is omitted
37
+ * entirely — including while the image is loading — when the array is empty
38
+ * or undefined, so the tile is only the image.
38
39
  */
39
40
  metadata?: ReactNode[];
40
41
  /** Optional click handler for the whole tile. When provided, the tile is keyboard-activatable. */
@@ -0,0 +1,45 @@
1
+ import { r as BreadcrumbsProps } from "./Breadcrumbs-C2ThOYJ-.mjs";
2
+ import { i as BaseFilterConfig, s as FilterConfig } from "./types-Dx8PgO8a.mjs";
3
+ import { n as TableControlsProps } from "./TableControls-UfObf-ZN.mjs";
4
+ import { i as DataTableProps } from "./DataTable-fZ7SNbIH.mjs";
5
+ import { r as PageHeaderProps } from "./PageHeader-Czj42pyK.mjs";
6
+ import { UseColumnConfigurationOptions } from "./useColumnConfiguration.mjs";
7
+ import { ReactNode } from "react";
8
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
9
+ import { RowData } from "@tanstack/react-table";
10
+
11
+ //#region patterns/IndexTableLayout/IndexTableLayout.d.ts
12
+ type IndexTableLayoutHeaderProps = (Omit<Extract<PageHeaderProps, {
13
+ breadcrumbs?: never;
14
+ }>, 'title'> & {
15
+ title?: ReactNode;
16
+ }) | Extract<PageHeaderProps, {
17
+ breadcrumbs: BreadcrumbsProps;
18
+ }>;
19
+ interface IndexTableLayoutProps<TData extends RowData, TFilter extends BaseFilterConfig = FilterConfig> extends Omit<DataTableProps<TData, TFilter>, 'title' | 'showControls' | 'controls' | 'columns' | 'enableRowSelection' | 'showColumnProperties' | 'onUpdateColumnProperties'>, UseColumnConfigurationOptions<TData> {
20
+ title: string;
21
+ tableTitle?: string;
22
+ headerProps?: IndexTableLayoutHeaderProps;
23
+ banner?: ReactNode;
24
+ className?: string;
25
+ /** Host-built table controls: search, filters/filterResolver/filterPanel, saved-view ControlBar props, tableActions… */
26
+ controls?: Omit<TableControlsProps<TFilter>, 'columnConfigurationProps'>;
27
+ }
28
+ declare const IndexTableLayout: <TData extends RowData, TFilter extends BaseFilterConfig = FilterConfig>({
29
+ title,
30
+ tableTitle,
31
+ headerProps,
32
+ banner,
33
+ className,
34
+ controls,
35
+ columnDefinitions,
36
+ defaultColumns,
37
+ columnConfiguration,
38
+ onColumnConfigurationChange,
39
+ getColumnDisabled,
40
+ sortByRelevance,
41
+ ...dataTableProps
42
+ }: IndexTableLayoutProps<TData, TFilter>) => _$react_jsx_runtime0.JSX.Element;
43
+ //#endregion
44
+ export { IndexTableLayout, IndexTableLayout as default, IndexTableLayoutHeaderProps, IndexTableLayoutProps };
45
+ //# sourceMappingURL=IndexTableLayout.d.mts.map
@@ -1,4 +1,4 @@
1
- import { r as InlineEditConfig } from "./TableBoxCell-BkJ587Lf.mjs";
1
+ import { r as InlineEditConfig } from "./TableBoxCell-BRECnVTs.mjs";
2
2
  import { RefObject } from "react";
3
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- import { r as InlineEditConfig } from "./TableBoxCell-BkJ587Lf.mjs";
1
+ import { r as InlineEditConfig } from "./TableBoxCell-BRECnVTs.mjs";
2
2
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region components/TableBox/InlineInput.d.ts
@@ -1,5 +1,5 @@
1
- import { r as ButtonProps } from "./Button-DKUomFPj.mjs";
2
- import { n as InputSizes, t as InputMixinProps } from "./input-DMPo8gRT.mjs";
1
+ import { r as ButtonProps } from "./Button-CyjqQa5v.mjs";
2
+ import { n as InputSizes, t as InputMixinProps } from "./input-CKhARTlS.mjs";
3
3
  import * as _$react from "react";
4
4
  import { ComponentPropsWithoutRef, MouseEventHandler, ReactElement, ReactNode } from "react";
5
5
  import * as _$styled_components0 from "styled-components";
@@ -58,4 +58,4 @@ interface InputGroupProps extends ComponentPropsWithoutRef<'div'>, Omit<InputMix
58
58
  declare const InputGroup: _$react.ForwardRefExoticComponent<InputGroupProps & _$react.RefAttributes<HTMLDivElement>>;
59
59
  //#endregion
60
60
  export { InputProps as a, InputGroupProps as i, Input as n, InputGroup as r, ClearButton as t };
61
- //# sourceMappingURL=Input-CAsOWM0S.d.mts.map
61
+ //# sourceMappingURL=Input-Bg4bi6VZ.d.mts.map
@@ -3,8 +3,8 @@ import { semanticColor } from "./lib/semanticColor.mjs";
3
3
  import { i as Paragraph } from "./Text-CSwFifQF.mjs";
4
4
  import { isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
5
5
  import inputMixin from "./mixins/input.mjs";
6
- import { n as Button } from "./IconButton-Cqxfmrea.mjs";
7
- import { n as useFormField, t as FormControlContext } from "./useFormField-J0LiPcpm.mjs";
6
+ import { n as Button } from "./IconButton-HWx5Hlmi.mjs";
7
+ import { n as useFormField, t as FormControlContext } from "./useFormField-CbNYbDdp.mjs";
8
8
  import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
9
9
  import { cloneElement, forwardRef, useEffect, useRef, useState } from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -193,4 +193,4 @@ const InputGroup = forwardRef(function InputGroup({ size = "md", leftIcon, onCle
193
193
  //#endregion
194
194
  export { Input as n, InputGroup as r, ClearButton as t };
195
195
 
196
- //# sourceMappingURL=Input-Cg2HxteL.mjs.map
196
+ //# sourceMappingURL=Input-Dap055xf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input-Cg2HxteL.mjs","names":["SmallCircleXInverseIcon"],"sources":["../components/Input/Input.tsx"],"sourcesContent":["import {\n cloneElement,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n type MouseEventHandler,\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { CircleXInverseIcon } from '@persona/icons';\nimport { CircleXInverseIcon as SmallCircleXInverseIcon } from '@persona/icons/12px';\nimport Button, { type ButtonProps } from 'design-system/components/Button';\nimport useFormField, {\n FormControlContext,\n} from 'design-system/components/FormControl/useFormField';\nimport { Paragraph } from 'design-system/components/Text';\nimport { isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport inputMixin, { type InputMixinProps, type InputSizes } from 'design-system/mixins/input';\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n width: 100%;\n`;\n\nconst LeftIcon = styled.div<{ $size?: InputSizes; $disabled?: boolean }>`\n position: absolute;\n left: ${Spacing[2]};\n top: 50%;\n transform: translateY(-50%);\n margin: 0;\n font-size: 0px;\n color: ${({ theme, $disabled }) =>\n $disabled\n ? semanticColor(theme, 'FgDisabled', Color.BorderIconSecondary)\n : semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n height: ${({ $size }) => ($size === 'sm' ? '12px' : '16px')};\n width: ${({ $size }) => ($size === 'sm' ? '12px' : '16px')};\n pointer-events: none;\n\n svg {\n height: 100%;\n width: 100%;\n }\n`;\n\nconst InputButtonContainer = styled.div<{ $size?: InputSizes }>`\n position: absolute;\n display: flex;\n gap: ${Spacing[2]};\n right: ${({ $size }) => ($size === 'sm' ? '3px' : Spacing[1])};\n top: 50%;\n transform: translateY(-50%);\n margin: 0;\n font-size: 0px;\n`;\n\nexport const ClearButton = styled(Button).attrs({\n width: 'icon',\n variant: 'basic',\n})`\n background-color: transparent;\n padding: 0;\n height: ${({ size }) => (size === 'sm' ? '18px' : '24px')};\n width: ${({ size }) => (size === 'sm' ? '18px' : '24px')};\n border-radius: ${BorderRadius.Md};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n\n ${({ disabled, theme }) =>\n disabled &&\n css`\n color: ${semanticColor(theme, 'FgDisabled', Color.BorderIconDisabled)};\n `}\n\n &${isHovered}${isNotDisabled} {\n background-color: transparent;\n }\n\n svg {\n height: ${({ size }) => (size === 'sm' ? '12px' : '16px')};\n width: ${({ size }) => (size === 'sm' ? '12px' : '16px')};\n }\n`;\n\nconst SuffixTextContainer = styled.div<{ $size: InputSizes }>`\n position: absolute;\n right: ${Spacing[2]};\n top: ${({ $size }) => ($size === 'sm' ? '2px' : '6px')};\n`;\n\ninterface StyledInputProps extends InputMixinProps {\n $leftIcon?: ReactNode;\n $hasRightItem?: boolean;\n}\n\nexport interface InputProps\n extends Omit<ComponentPropsWithoutRef<'input'>, 'size'>, Omit<InputMixinProps, '$size'> {\n /**\n * Size of the input. If you need the HTML size attr, use inputSize.\n */\n size?: InputSizes;\n\n /**\n * `size` HTML attr on `<input>`\n */\n inputSize?: ComponentPropsWithoutRef<'input'>['size'];\n\n leftIcon?: StyledInputProps['$leftIcon'];\n hasRightItem?: boolean;\n}\n\nconst InputBase = styled.input<StyledInputProps>`\n ${inputMixin};\n line-height: 1;\n\n &::placeholder {\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n }\n\n &:disabled::placeholder {\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n }\n\n ${({ $size, $leftIcon, $hasRightItem }) => {\n let btnSpacing: string;\n switch ($size) {\n default:\n case 'md':\n btnSpacing = `calc(${Spacing[3]} + 16px + ${Spacing[1]})`;\n return css`\n padding-right: ${$hasRightItem ? btnSpacing : Spacing[3]};\n padding-left: ${$leftIcon ? btnSpacing : Spacing[3]};\n `;\n case 'sm':\n btnSpacing = `calc(${Spacing[2]} + 16px + ${Spacing[1]})`;\n return css`\n padding-right: ${$hasRightItem ? btnSpacing : Spacing[2]};\n padding-left: ${$leftIcon ? btnSpacing : Spacing[2]};\n `;\n }\n }}\n`;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { size, leftIcon, hasRightItem, id, hasWarning, hasError, disabled, maxLength, ...props },\n ref,\n) {\n const field = useFormField({ hasWarning, hasError, disabled, inputId: id, maxLength });\n\n return (\n <InputBase\n $size={size}\n $leftIcon={leftIcon}\n $hasRightItem={hasRightItem}\n ref={ref}\n id={field.inputId}\n aria-describedby={`${field.helperTextId}${field.hasWarning ? ` ${field.warningTextId}` : ''}`}\n aria-errormessage={field.hasError ? field.errorTextId : undefined}\n aria-invalid={field.hasError}\n hasWarning={field.hasWarning}\n hasError={field.hasError}\n disabled={field.disabled}\n maxLength={field.maxLength}\n {...props}\n size={props.inputSize}\n />\n );\n});\n\nexport interface InputGroupProps\n extends ComponentPropsWithoutRef<'div'>, Omit<InputMixinProps, '$size'> {\n /**\n * Input\n */\n children: ReactElement<InputProps>;\n\n /**\n * Size of the input. If you need the HTML size attr, use inputSize.\n */\n size?: InputSizes;\n\n /**\n * Icon to render to the left of the input field.\n *\n * Import icon from `@persona/icons`. Use 24px for `lg` input size.\n */\n leftIcon?: ReactNode;\n\n /**\n * Renders clear button to the right and calls function upon click.\n */\n onClear?: MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Button to be rendered to the right of the input\n */\n rightButton?: ReactElement<ButtonProps>;\n\n /**\n * Disabled prop will be passed down to `<Input>`\n */\n disabled?: boolean;\n\n /**\n * Suffix text to be shown to the right of the input (inside the input field)\n */\n suffix?: string;\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n size = 'md',\n leftIcon,\n onClear,\n rightButton,\n children,\n disabled,\n hasWarning,\n hasError,\n suffix,\n ...props\n },\n ref,\n) {\n const field = useFormField({ hasWarning, hasError, disabled });\n const inputButtonContainerRef = useRef<HTMLDivElement>();\n const [inputPaddingRight, setInputPaddingRight] = useState<string | null>(null);\n\n const suffixContainerRef = useRef<HTMLDivElement | null>(null);\n const [suffixPaddingRight, setSuffixPaddingRight] = useState<string | null>(null);\n\n useEffect(() => {\n // We only need to calculate padding in presence of the right button\n if (rightButton && inputButtonContainerRef.current) {\n setInputPaddingRight(`${12 + inputButtonContainerRef.current.offsetWidth + 4}px`);\n }\n }, [setInputPaddingRight]);\n\n useEffect(() => {\n if (suffix && suffixContainerRef.current) {\n // 12px is 8px padding to the right, plus the 4px gap between the suffix and the input.\n setSuffixPaddingRight(`${12 + suffixContainerRef.current.offsetWidth}px`);\n }\n }, [suffix, setSuffixPaddingRight]);\n\n const rightButtonStyles: CSSProperties =\n size === 'sm'\n ? {\n height: '18px',\n }\n : {};\n\n return (\n <FormControlContext.Provider value={field}>\n <Container ref={ref} {...props}>\n {leftIcon && (\n <LeftIcon $size={size} $disabled={field.disabled}>\n {leftIcon}\n </LeftIcon>\n )}\n {cloneElement(children, {\n size,\n leftIcon: leftIcon,\n ...(rightButton ? { rightButton } : {}),\n hasRightItem: onClear || suffix,\n style:\n inputPaddingRight || suffixPaddingRight\n ? {\n paddingRight: inputPaddingRight || suffixPaddingRight,\n }\n : {},\n })}\n\n {/* Renders only if there's a suffix and NO button */}\n {/* At some point, this should be moved so that it's not absolutely positioned, and\n these are both wrapped within an \"input\" container */}\n {suffix && !(onClear || rightButton) && (\n <SuffixTextContainer $size={size} ref={suffixContainerRef}>\n <Paragraph size={size}>{suffix}</Paragraph>\n </SuffixTextContainer>\n )}\n\n {(onClear || rightButton) && ( // TODO: Render only if value is present\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n <InputButtonContainer ref={inputButtonContainerRef} $size={size}>\n {onClear && (\n <ClearButton\n onClick={onClear}\n disabled={field.disabled}\n aria-label='Clear'\n size={size}\n >\n {size === 'sm' ? <SmallCircleXInverseIcon /> : <CircleXInverseIcon />}\n </ClearButton>\n )}\n {rightButton &&\n cloneElement(rightButton, {\n size: 'sm',\n width: rightButton.props.width || 'auto',\n style: rightButtonStyles,\n })}\n </InputButtonContainer>\n )}\n </Container>\n </FormControlContext.Provider>\n );\n});\n\nexport default Input;\n"],"mappings":";;;;;;;;;;;;;AA0BA,MAAM,YAAY,OAAO,GAAG;;;;;AAM5B,MAAM,WAAW,OAAO,GAAgD;;UAE9D,QAAQ,GAAG;;;;;YAKT,EAAE,OAAO,gBACjB,YACI,cAAc,OAAO,cAAc,MAAM,oBAAoB,GAC7D,cAAc,OAAO,eAAe,MAAM,oBAAoB,CAAC;aAC1D,EAAE,YAAa,UAAU,OAAO,SAAS,OAAQ;YAClD,EAAE,YAAa,UAAU,OAAO,SAAS,OAAQ;;;;;;;;AAS7D,MAAM,uBAAuB,OAAO,GAA2B;;;SAGtD,QAAQ,GAAG;YACR,EAAE,YAAa,UAAU,OAAO,QAAQ,QAAQ,GAAI;;;;;;AAOhE,MAAa,cAAc,OAAO,OAAO,CAAC,MAAM;CAC9C,OAAO;CACP,SAAS;CACV,CAAC;;;aAGW,EAAE,WAAY,SAAS,OAAO,SAAS,OAAQ;YAChD,EAAE,WAAY,SAAS,OAAO,SAAS,OAAQ;mBACxC,aAAa,GAAG;YACvB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,oBAAoB,CAAC;;KAEpF,EAAE,UAAU,YACb,YACA,GAAG;eACQ,cAAc,OAAO,cAAc,MAAM,mBAAmB,CAAC;MACtE;;KAED,YAAY,cAAc;;;;;eAKhB,EAAE,WAAY,SAAS,OAAO,SAAS,OAAQ;cAChD,EAAE,WAAY,SAAS,OAAO,SAAS,OAAQ;;;AAI7D,MAAM,sBAAsB,OAAO,GAA0B;;WAElD,QAAQ,GAAG;UACZ,EAAE,YAAa,UAAU,OAAO,QAAQ,MAAO;;AAwBzD,MAAM,YAAY,OAAO,KAAuB;IAC5C,WAAW;;;;cAID,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,MAAM,KAAK,UAAU,CAAC;;;;cAI9E,EAAE,YAAY,cAAc,OAAO,cAAc,MAAM,MAAM,KAAK,SAAS,CAAC;;;KAGrF,EAAE,OAAO,WAAW,oBAAoB;CACzC,IAAI;AACJ,SAAQ,OAAR;EACE;EACA,KAAK;AACH,gBAAa,QAAQ,QAAQ,GAAG,YAAY,QAAQ,GAAG;AACvD,UAAO,GAAG;2BACS,gBAAgB,aAAa,QAAQ,GAAG;0BACzC,YAAY,aAAa,QAAQ,GAAG;;EAExD,KAAK;AACH,gBAAa,QAAQ,QAAQ,GAAG,YAAY,QAAQ,GAAG;AACvD,UAAO,GAAG;2BACS,gBAAgB,aAAa,QAAQ,GAAG;0BACzC,YAAY,aAAa,QAAQ,GAAG;;;EAG1D;;AAGJ,MAAa,QAAQ,WAAyC,SAAS,MACrE,EAAE,MAAM,UAAU,cAAc,IAAI,YAAY,UAAU,UAAU,WAAW,GAAG,SAClF,KACA;CACA,MAAM,QAAQ,aAAa;EAAE;EAAY;EAAU;EAAU,SAAS;EAAI;EAAW,CAAC;AAEtF,QACE,oBAAC,WAAD;EACE,OAAO;EACP,WAAW;EACX,eAAe;EACV;EACL,IAAI,MAAM;EACV,oBAAkB,GAAG,MAAM,eAAe,MAAM,aAAa,IAAI,MAAM,kBAAkB;EACzF,qBAAmB,MAAM,WAAW,MAAM,cAAc,KAAA;EACxD,gBAAc,MAAM;EACpB,YAAY,MAAM;EAClB,UAAU,MAAM;EAChB,UAAU,MAAM;EAChB,WAAW,MAAM;EACjB,GAAI;EACJ,MAAM,MAAM;EACZ,CAAA;EAEJ;AA0CF,MAAa,aAAa,WAA4C,SAAS,WAC7E,EACE,OAAO,MACP,UACA,SACA,aACA,UACA,UACA,YACA,UACA,QACA,GAAG,SAEL,KACA;CACA,MAAM,QAAQ,aAAa;EAAE;EAAY;EAAU;EAAU,CAAC;CAC9D,MAAM,0BAA0B,QAAwB;CACxD,MAAM,CAAC,mBAAmB,wBAAwB,SAAwB,KAAK;CAE/E,MAAM,qBAAqB,OAA8B,KAAK;CAC9D,MAAM,CAAC,oBAAoB,yBAAyB,SAAwB,KAAK;AAEjF,iBAAgB;AAEd,MAAI,eAAe,wBAAwB,QACzC,sBAAqB,GAAG,KAAK,wBAAwB,QAAQ,cAAc,EAAE,IAAI;IAElF,CAAC,qBAAqB,CAAC;AAE1B,iBAAgB;AACd,MAAI,UAAU,mBAAmB,QAE/B,uBAAsB,GAAG,KAAK,mBAAmB,QAAQ,YAAY,IAAI;IAE1E,CAAC,QAAQ,sBAAsB,CAAC;CAEnC,MAAM,oBACJ,SAAS,OACL,EACE,QAAQ,QACT,GACD,EAAE;AAER,QACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;YAClC,qBAAC,WAAD;GAAgB;GAAK,GAAI;aAAzB;IACG,YACC,oBAAC,UAAD;KAAU,OAAO;KAAM,WAAW,MAAM;eACrC;KACQ,CAAA;IAEZ,aAAa,UAAU;KACtB;KACU;KACV,GAAI,cAAc,EAAE,aAAa,GAAG,EAAE;KACtC,cAAc,WAAW;KACzB,OACE,qBAAqB,qBACjB,EACE,cAAc,qBAAqB,oBACpC,GACD,EAAE;KACT,CAAC;IAKD,UAAU,EAAE,WAAW,gBACtB,oBAAC,qBAAD;KAAqB,OAAO;KAAM,KAAK;eACrC,oBAAC,WAAD;MAAiB;gBAAO;MAAmB,CAAA;KACvB,CAAA;KAGtB,WAAW,gBAEX,qBAAC,sBAAD;KAAsB,KAAK;KAAyB,OAAO;eAA3D,CACG,WACC,oBAAC,aAAD;MACE,SAAS;MACT,UAAU,MAAM;MAChB,cAAW;MACL;gBAEL,SAAS,OAAO,oBAACA,sBAAD,EAA2B,CAAA,GAAG,oBAAC,oBAAD,EAAsB,CAAA;MACzD,CAAA,EAEf,eACC,aAAa,aAAa;MACxB,MAAM;MACN,OAAO,YAAY,MAAM,SAAS;MAClC,OAAO;MACR,CAAC,CACiB;;IAEf;;EACgB,CAAA;EAEhC"}
1
+ {"version":3,"file":"Input-Dap055xf.mjs","names":["SmallCircleXInverseIcon"],"sources":["../components/Input/Input.tsx"],"sourcesContent":["import {\n cloneElement,\n type ComponentPropsWithoutRef,\n type CSSProperties,\n forwardRef,\n type MouseEventHandler,\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { CircleXInverseIcon } from '@persona/icons';\nimport { CircleXInverseIcon as SmallCircleXInverseIcon } from '@persona/icons/12px';\nimport Button, { type ButtonProps } from 'design-system/components/Button';\nimport useFormField, {\n FormControlContext,\n} from 'design-system/components/FormControl/useFormField';\nimport { Paragraph } from 'design-system/components/Text';\nimport { isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport inputMixin, { type InputMixinProps, type InputSizes } from 'design-system/mixins/input';\n\nconst Container = styled.div`\n display: flex;\n position: relative;\n width: 100%;\n`;\n\nconst LeftIcon = styled.div<{ $size?: InputSizes; $disabled?: boolean }>`\n position: absolute;\n left: ${Spacing[2]};\n top: 50%;\n transform: translateY(-50%);\n margin: 0;\n font-size: 0px;\n color: ${({ theme, $disabled }) =>\n $disabled\n ? semanticColor(theme, 'FgDisabled', Color.BorderIconSecondary)\n : semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n height: ${({ $size }) => ($size === 'sm' ? '12px' : '16px')};\n width: ${({ $size }) => ($size === 'sm' ? '12px' : '16px')};\n pointer-events: none;\n\n svg {\n height: 100%;\n width: 100%;\n }\n`;\n\nconst InputButtonContainer = styled.div<{ $size?: InputSizes }>`\n position: absolute;\n display: flex;\n gap: ${Spacing[2]};\n right: ${({ $size }) => ($size === 'sm' ? '3px' : Spacing[1])};\n top: 50%;\n transform: translateY(-50%);\n margin: 0;\n font-size: 0px;\n`;\n\nexport const ClearButton = styled(Button).attrs({\n width: 'icon',\n variant: 'basic',\n})`\n background-color: transparent;\n padding: 0;\n height: ${({ size }) => (size === 'sm' ? '18px' : '24px')};\n width: ${({ size }) => (size === 'sm' ? '18px' : '24px')};\n border-radius: ${BorderRadius.Md};\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n\n ${({ disabled, theme }) =>\n disabled &&\n css`\n color: ${semanticColor(theme, 'FgDisabled', Color.BorderIconDisabled)};\n `}\n\n &${isHovered}${isNotDisabled} {\n background-color: transparent;\n }\n\n svg {\n height: ${({ size }) => (size === 'sm' ? '12px' : '16px')};\n width: ${({ size }) => (size === 'sm' ? '12px' : '16px')};\n }\n`;\n\nconst SuffixTextContainer = styled.div<{ $size: InputSizes }>`\n position: absolute;\n right: ${Spacing[2]};\n top: ${({ $size }) => ($size === 'sm' ? '2px' : '6px')};\n`;\n\ninterface StyledInputProps extends InputMixinProps {\n $leftIcon?: ReactNode;\n $hasRightItem?: boolean;\n}\n\nexport interface InputProps\n extends Omit<ComponentPropsWithoutRef<'input'>, 'size'>, Omit<InputMixinProps, '$size'> {\n /**\n * Size of the input. If you need the HTML size attr, use inputSize.\n */\n size?: InputSizes;\n\n /**\n * `size` HTML attr on `<input>`\n */\n inputSize?: ComponentPropsWithoutRef<'input'>['size'];\n\n leftIcon?: StyledInputProps['$leftIcon'];\n hasRightItem?: boolean;\n}\n\nconst InputBase = styled.input<StyledInputProps>`\n ${inputMixin};\n line-height: 1;\n\n &::placeholder {\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', theme.color.text.secondary)};\n }\n\n &:disabled::placeholder {\n color: ${({ theme }) => semanticColor(theme, 'FgDisabled', theme.color.text.disabled)};\n }\n\n ${({ $size, $leftIcon, $hasRightItem }) => {\n let btnSpacing: string;\n switch ($size) {\n default:\n case 'md':\n btnSpacing = `calc(${Spacing[3]} + 16px + ${Spacing[1]})`;\n return css`\n padding-right: ${$hasRightItem ? btnSpacing : Spacing[3]};\n padding-left: ${$leftIcon ? btnSpacing : Spacing[3]};\n `;\n case 'sm':\n btnSpacing = `calc(${Spacing[2]} + 16px + ${Spacing[1]})`;\n return css`\n padding-right: ${$hasRightItem ? btnSpacing : Spacing[2]};\n padding-left: ${$leftIcon ? btnSpacing : Spacing[2]};\n `;\n }\n }}\n`;\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { size, leftIcon, hasRightItem, id, hasWarning, hasError, disabled, maxLength, ...props },\n ref,\n) {\n const field = useFormField({ hasWarning, hasError, disabled, inputId: id, maxLength });\n\n return (\n <InputBase\n $size={size}\n $leftIcon={leftIcon}\n $hasRightItem={hasRightItem}\n ref={ref}\n id={field.inputId}\n aria-describedby={`${field.helperTextId}${field.hasWarning ? ` ${field.warningTextId}` : ''}`}\n aria-errormessage={field.hasError ? field.errorTextId : undefined}\n aria-invalid={field.hasError}\n hasWarning={field.hasWarning}\n hasError={field.hasError}\n disabled={field.disabled}\n maxLength={field.maxLength}\n {...props}\n size={props.inputSize}\n />\n );\n});\n\nexport interface InputGroupProps\n extends ComponentPropsWithoutRef<'div'>, Omit<InputMixinProps, '$size'> {\n /**\n * Input\n */\n children: ReactElement<InputProps>;\n\n /**\n * Size of the input. If you need the HTML size attr, use inputSize.\n */\n size?: InputSizes;\n\n /**\n * Icon to render to the left of the input field.\n *\n * Import icon from `@persona/icons`. Use 24px for `lg` input size.\n */\n leftIcon?: ReactNode;\n\n /**\n * Renders clear button to the right and calls function upon click.\n */\n onClear?: MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Button to be rendered to the right of the input\n */\n rightButton?: ReactElement<ButtonProps>;\n\n /**\n * Disabled prop will be passed down to `<Input>`\n */\n disabled?: boolean;\n\n /**\n * Suffix text to be shown to the right of the input (inside the input field)\n */\n suffix?: string;\n}\n\nexport const InputGroup = forwardRef<HTMLDivElement, InputGroupProps>(function InputGroup(\n {\n size = 'md',\n leftIcon,\n onClear,\n rightButton,\n children,\n disabled,\n hasWarning,\n hasError,\n suffix,\n ...props\n },\n ref,\n) {\n const field = useFormField({ hasWarning, hasError, disabled });\n const inputButtonContainerRef = useRef<HTMLDivElement>();\n const [inputPaddingRight, setInputPaddingRight] = useState<string | null>(null);\n\n const suffixContainerRef = useRef<HTMLDivElement | null>(null);\n const [suffixPaddingRight, setSuffixPaddingRight] = useState<string | null>(null);\n\n useEffect(() => {\n // We only need to calculate padding in presence of the right button\n if (rightButton && inputButtonContainerRef.current) {\n setInputPaddingRight(`${12 + inputButtonContainerRef.current.offsetWidth + 4}px`);\n }\n }, [setInputPaddingRight]);\n\n useEffect(() => {\n if (suffix && suffixContainerRef.current) {\n // 12px is 8px padding to the right, plus the 4px gap between the suffix and the input.\n setSuffixPaddingRight(`${12 + suffixContainerRef.current.offsetWidth}px`);\n }\n }, [suffix, setSuffixPaddingRight]);\n\n const rightButtonStyles: CSSProperties =\n size === 'sm'\n ? {\n height: '18px',\n }\n : {};\n\n return (\n <FormControlContext.Provider value={field}>\n <Container ref={ref} {...props}>\n {leftIcon && (\n <LeftIcon $size={size} $disabled={field.disabled}>\n {leftIcon}\n </LeftIcon>\n )}\n {cloneElement(children, {\n size,\n leftIcon: leftIcon,\n ...(rightButton ? { rightButton } : {}),\n hasRightItem: onClear || suffix,\n style:\n inputPaddingRight || suffixPaddingRight\n ? {\n paddingRight: inputPaddingRight || suffixPaddingRight,\n }\n : {},\n })}\n\n {/* Renders only if there's a suffix and NO button */}\n {/* At some point, this should be moved so that it's not absolutely positioned, and\n these are both wrapped within an \"input\" container */}\n {suffix && !(onClear || rightButton) && (\n <SuffixTextContainer $size={size} ref={suffixContainerRef}>\n <Paragraph size={size}>{suffix}</Paragraph>\n </SuffixTextContainer>\n )}\n\n {(onClear || rightButton) && ( // TODO: Render only if value is present\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n <InputButtonContainer ref={inputButtonContainerRef} $size={size}>\n {onClear && (\n <ClearButton\n onClick={onClear}\n disabled={field.disabled}\n aria-label='Clear'\n size={size}\n >\n {size === 'sm' ? <SmallCircleXInverseIcon /> : <CircleXInverseIcon />}\n </ClearButton>\n )}\n {rightButton &&\n cloneElement(rightButton, {\n size: 'sm',\n width: rightButton.props.width || 'auto',\n style: rightButtonStyles,\n })}\n </InputButtonContainer>\n )}\n </Container>\n </FormControlContext.Provider>\n );\n});\n\nexport default Input;\n"],"mappings":"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"}
package/dist/Input.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { a as InputProps, i as InputGroupProps, n as Input, r as InputGroup, t as ClearButton } from "./Input-CAsOWM0S.mjs";
1
+ import { a as InputProps, i as InputGroupProps, n as Input, r as InputGroup, t as ClearButton } from "./Input-Bg4bi6VZ.mjs";
2
2
  export { ClearButton, Input, Input as default, InputGroup, InputGroupProps, InputProps };
@@ -1,4 +1,4 @@
1
- import { n as InputSizes, t as InputMixinProps } from "./input-DMPo8gRT.mjs";
1
+ import { n as InputSizes, t as InputMixinProps } from "./input-CKhARTlS.mjs";
2
2
 
3
3
  //#region types/InputProps.d.ts
4
4
  interface InputProps extends Omit<InputMixinProps, '$size'> {
@@ -13,4 +13,4 @@ interface InputProps extends Omit<InputMixinProps, '$size'> {
13
13
  }
14
14
  //#endregion
15
15
  export { InputProps as t };
16
- //# sourceMappingURL=InputProps-BU9iiBBz.d.mts.map
16
+ //# sourceMappingURL=InputProps-Bl-G826g.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as InputProps } from "./InputProps-BU9iiBBz.mjs";
1
+ import { t as InputProps } from "./InputProps-Bl-G826g.mjs";
2
2
  export { InputProps };
@@ -0,0 +1,12 @@
1
+ //#region components/DataTable/Inserter.d.ts
2
+ interface InserterProps {
3
+ priorRowLabel: string;
4
+ colSpan: number;
5
+ nestSpacing?: number;
6
+ label?: string;
7
+ onAddRow: () => void;
8
+ }
9
+ declare const Inserter: React.FC<InserterProps>;
10
+ //#endregion
11
+ export { Inserter as t };
12
+ //# sourceMappingURL=Inserter-BKVrJ4M5.d.mts.map
@@ -1,12 +1,2 @@
1
- //#region components/DataTable/Inserter.d.ts
2
- interface InserterProps {
3
- priorRowLabel: string;
4
- colSpan: number;
5
- nestSpacing?: number;
6
- label?: string;
7
- onAddRow: () => void;
8
- }
9
- declare const Inserter: React.FC<InserterProps>;
10
- //#endregion
11
- export { Inserter };
12
- //# sourceMappingURL=Inserter.d.mts.map
1
+ import { t as Inserter } from "./Inserter-BKVrJ4M5.mjs";
2
+ export { Inserter };
@@ -1,4 +1,4 @@
1
- import { t as ValueControlProps } from "./types-eemD0jxb.mjs";
1
+ import { t as ValueControlProps } from "./types-BhHdS6QP.mjs";
2
2
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
3
 
4
4
  //#region components/DataTable/TableControls/FiltersV2/value-controls/IntegerValueControl/IntegerValueControl.d.ts
@@ -6,10 +6,11 @@ type IntegerValueControlProps = ValueControlProps;
6
6
  /**
7
7
  * Integer-typed value control for the Filter UI v2 popover.
8
8
  *
9
- * Used for `integer` fields with operators `is` / `is_not`. The popover
9
+ * Used for `integer` fields with operators `is` / `is_not`, and with the
10
+ * opt-in comparisons `gt` / `lt` when the field's
11
+ * `allowedOperators` lists them — all carry a single number. The popover
10
12
  * renders nothing when the operator is valueless (`is_empty` /
11
- * `is_not_empty`). Range operators are not part of the current numeric
12
- * field vocabulary.
13
+ * `is_not_empty`). Range operators are not part of the numeric vocabulary.
13
14
  *
14
15
  * The control accepts any numeric input but always emits an integer via
15
16
  * `onChange`. We truncate (rather than round) so that typing `3` -> `3.` -> `3.7`
package/dist/Link.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { r as RouterLinkComponentProps } from "./types-CgKSEQyB.mjs";
1
+ import { r as RouterLinkComponentProps } from "./types-HxiGiwQN.mjs";
2
2
  import { AnchorHTMLAttributes, ReactNode } from "react";
3
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
 
@@ -1,5 +1,5 @@
1
- import { r as ButtonProps } from "./Button-DKUomFPj.mjs";
2
- import { l as MenuItemProps } from "./Menu-BSHJpKyL.mjs";
1
+ import { r as ButtonProps } from "./Button-CyjqQa5v.mjs";
2
+ import { l as MenuItemProps } from "./Menu-C0FU9WEF.mjs";
3
3
  import { ComponentPropsWithoutRef, PropsWithChildren, ReactNode } from "react";
4
4
  import * as _$react_aria_components0 from "react-aria-components";
5
5
  import { GridList, GridListItem, Header } from "react-aria-components";
@@ -140,4 +140,4 @@ interface ListBoxItemProps extends ComponentPropsWithoutRef<typeof GridListItem>
140
140
  }
141
141
  //#endregion
142
142
  export { useListBoxContext as i, ListBoxItemProps as n, ListBoxProps$1 as r, ListBox as t };
143
- //# sourceMappingURL=ListBox--IH6uofo.d.mts.map
143
+ //# sourceMappingURL=ListBox-Bj5c626-.d.mts.map
@@ -8,13 +8,13 @@ import { findIndexByKey, moveItemByIndex } from "./lib/reorderItems.mjs";
8
8
  import { Z_INDICES } from "./lib/zindex.mjs";
9
9
  import { semanticScrollbar } from "./mixins/scrollbar.mjs";
10
10
  import { n as Stack } from "./Stack-BkC7FCdF.mjs";
11
- import { n as Button$1, t as IconButton } from "./IconButton-Cqxfmrea.mjs";
12
- import { a as StyledTruncatedText, i as StickerContentContainer, n as Sticker, r as StickerContainer } from "./Sticker-_vmpUMfk.mjs";
13
- import { t as FormGroupContext } from "./useFormGroup-CALbrUkl.mjs";
14
- import { o as MenuHeading, r as ListItem } from "./Menu-CwKmfxKI.mjs";
15
- import { n as DropdownMenu_default } from "./DropdownMenu-C2BHv8Lc.mjs";
11
+ import { n as Button$1, t as IconButton } from "./IconButton-HWx5Hlmi.mjs";
12
+ import { a as StyledTruncatedText, i as StickerContentContainer, n as Sticker, r as StickerContainer } from "./Sticker-yhxtIYH8.mjs";
13
+ import { t as FormGroupContext } from "./useFormGroup-CsKC93Pt.mjs";
14
+ import { o as MenuHeading, r as ListItem } from "./Menu-Dw6Rcpk6.mjs";
15
+ import { n as DropdownMenu_default } from "./DropdownMenu-CedsmO5h.mjs";
16
16
  import { s as Popover_default } from "./Popover-BcII7usF.mjs";
17
- import { t as Container } from "./FormControl-jfjKwUfK.mjs";
17
+ import { t as Container } from "./FormControl-C4CiA0H-.mjs";
18
18
  import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
19
19
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
20
20
  import { DropIndicator, GridList, GridListItem, Header, ListBoxSection, useDragAndDrop } from "react-aria-components";
@@ -472,4 +472,4 @@ const ListBox = Object.assign(ListBox$1, { LogicRow });
472
472
  //#endregion
473
473
  export { useListBoxContext as n, ListBox as t };
474
474
 
475
- //# sourceMappingURL=ListBox-CjNokYs6.mjs.map
475
+ //# sourceMappingURL=ListBox-C80J7DCG.mjs.map