@persona/design-system 0.10.10 → 0.10.12

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 (356) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/AdvancedFilterRuleRow.d.mts +5 -2
  3. package/dist/AdvancedFilterRulesPopover.d.mts +6 -2
  4. package/dist/ArrayValueControl.d.mts +1 -1
  5. package/dist/{Badge-BCdsVKuj.mjs → Badge-B2AJMf3d.mjs} +2 -2
  6. package/dist/{Badge-BCdsVKuj.mjs.map → Badge-B2AJMf3d.mjs.map} +1 -1
  7. package/dist/BooleanValueControl.d.mts +1 -1
  8. package/dist/{Breadcrumbs-CMf3Uvow.mjs → Breadcrumbs-DRs9eo1o.mjs} +5 -5
  9. package/dist/Breadcrumbs-DRs9eo1o.mjs.map +1 -0
  10. package/dist/{CardV2-CrV6eEQb.mjs → CardV2-DO-8COfu.mjs} +11 -8
  11. package/dist/CardV2-DO-8COfu.mjs.map +1 -0
  12. package/dist/ChartFrame.d.mts +61 -0
  13. package/dist/ChartLegend.d.mts +60 -0
  14. package/dist/ChartPopover.d.mts +155 -0
  15. package/dist/{Checkbox-Dr4LMKHV.mjs → Checkbox-BAh-wF_F.mjs} +5 -5
  16. package/dist/Checkbox-BAh-wF_F.mjs.map +1 -0
  17. package/dist/{CheckboxGroupField-Bpu2j6G2.d.mts → CheckboxGroupField-XSVAmESI.d.mts} +2 -2
  18. package/dist/CheckboxGroupField.d.mts +1 -1
  19. package/dist/ChoicesValueControl.d.mts +1 -1
  20. package/dist/{Combobox-Gb_j1dg6.mjs → Combobox-BNjYEAmv.mjs} +313 -138
  21. package/dist/Combobox-BNjYEAmv.mjs.map +1 -0
  22. package/dist/Combobox-DbcSss15.d.mts +12 -0
  23. package/dist/Combobox.d.mts +3 -3
  24. package/dist/{ComboboxBase-BPXqJHaQ.d.mts → ComboboxBase-CrFweFGi.d.mts} +61 -21
  25. package/dist/ComboboxBase.d.mts +2 -2
  26. package/dist/{ComboboxMultiSelect-BwkkSymj.d.mts → ComboboxMultiSelect-Cp5GBGQj.d.mts} +10 -6
  27. package/dist/ComboboxMultiSelect.d.mts +2 -2
  28. package/dist/{ComboboxSingleSelect-CdNNJNkp.d.mts → ComboboxSingleSelect-u7fK3Yvy.d.mts} +8 -6
  29. package/dist/ComboboxSingleSelect.d.mts +2 -2
  30. package/dist/{DataTable-BE9inUi-.d.mts → DataTable-C1mdfmQa.d.mts} +17 -7
  31. package/dist/{DataTable-CIZJ1vO8.mjs → DataTable-DdSY9mzT.mjs} +36 -23
  32. package/dist/DataTable-DdSY9mzT.mjs.map +1 -0
  33. package/dist/DataTable.d.mts +1 -1
  34. package/dist/{DatePicker-C9redLBr.mjs → DatePicker-DiilpYQg.mjs} +5 -5
  35. package/dist/{DatePicker-C9redLBr.mjs.map → DatePicker-DiilpYQg.mjs.map} +1 -1
  36. package/dist/DateRangeValueControl.d.mts +1 -1
  37. package/dist/DateValueControl.d.mts +1 -1
  38. package/dist/{DropdownButton-DpLG-cIj.mjs → DropdownButton-BxZ5hn0X.mjs} +3 -3
  39. package/dist/{DropdownButton-DpLG-cIj.mjs.map → DropdownButton-BxZ5hn0X.mjs.map} +1 -1
  40. package/dist/DropdownButton.d.mts +1 -1
  41. package/dist/{DropdownMenu-B6D4stkF.d.mts → DropdownMenu-CQR0U-zM.d.mts} +2 -2
  42. package/dist/{DropdownMenu-c8XK2Lr4.mjs → DropdownMenu-Ip75l4Th.mjs} +21 -2
  43. package/dist/DropdownMenu-Ip75l4Th.mjs.map +1 -0
  44. package/dist/DropdownMenu.d.mts +1 -1
  45. package/dist/{FieldRegistry-C2NVPhMO.d.mts → FieldRegistry-CJwGpUVK.d.mts} +2 -2
  46. package/dist/FieldRegistry.d.mts +1 -1
  47. package/dist/{FilterBar-BE_gBM0H.d.mts → FilterBar-CA4mDAXK.d.mts} +13 -5
  48. package/dist/FilterBar.d.mts +1 -1
  49. package/dist/FilterPickerMenu.d.mts +2 -2
  50. package/dist/FilterPill.d.mts +1 -1
  51. package/dist/FilterPopover.d.mts +1 -1
  52. package/dist/FloatValueControl.d.mts +3 -2
  53. package/dist/{FloatingToolbar-DLRaE0o7.mjs → FloatingToolbar-BA8Fqmrz.mjs} +35 -38
  54. package/dist/FloatingToolbar-BA8Fqmrz.mjs.map +1 -0
  55. package/dist/{FormControl-BztNXLn6.mjs → FormControl-BoKGiWdQ.mjs} +2 -2
  56. package/dist/{FormControl-BztNXLn6.mjs.map → FormControl-BoKGiWdQ.mjs.map} +1 -1
  57. package/dist/{FormField-Cf1VMvoa.mjs → FormField-yYJFkJ6R.mjs} +13 -13
  58. package/dist/{FormField-Cf1VMvoa.mjs.map → FormField-yYJFkJ6R.mjs.map} +1 -1
  59. package/dist/{HoverCopyableField-XHC_n9tp.mjs → HoverCopyableField-X2XfKTTh.mjs} +10 -5
  60. package/dist/HoverCopyableField-X2XfKTTh.mjs.map +1 -0
  61. package/dist/{IconButton-DxHB2g80.mjs → IconButton-Bj1fry_K.mjs} +4 -3
  62. package/dist/IconButton-Bj1fry_K.mjs.map +1 -0
  63. package/dist/IndexTableLayout.d.mts +11 -3
  64. package/dist/InlineCombobox.d.mts +1 -1
  65. package/dist/InlineInput.d.mts +1 -1
  66. package/dist/{Input-RHXujO9u.mjs → Input-DcbzPaax.mjs} +2 -2
  67. package/dist/{Input-RHXujO9u.mjs.map → Input-DcbzPaax.mjs.map} +1 -1
  68. package/dist/IntegerValueControl.d.mts +3 -2
  69. package/dist/{Link-D_kCyLYX.mjs → Link-B29ZMN6m.mjs} +3 -3
  70. package/dist/Link-B29ZMN6m.mjs.map +1 -0
  71. package/dist/{ListBox-BZp6exb8.mjs → ListBox-4rTgr3IJ.mjs} +6 -6
  72. package/dist/{ListBox-BZp6exb8.mjs.map → ListBox-4rTgr3IJ.mjs.map} +1 -1
  73. package/dist/{ListBox-DpFcM-dM.d.mts → ListBox-ZDaitaXR.d.mts} +2 -2
  74. package/dist/ListBox.d.mts +1 -1
  75. package/dist/{ListBoxField-DL6Zk8TU.d.mts → ListBoxField-CGvVWKyL.d.mts} +4 -4
  76. package/dist/ListBoxField.d.mts +1 -1
  77. package/dist/{LoadingShimmer-oPIv2ESr.mjs → LoadingShimmer-BVVdBeN-.mjs} +18 -20
  78. package/dist/LoadingShimmer-BVVdBeN-.mjs.map +1 -0
  79. package/dist/{LogicRow-BakOUtzx.d.mts → LogicRow-Bzp5o1sL.d.mts} +2 -2
  80. package/dist/LogicRow.d.mts +1 -1
  81. package/dist/{Menu-D6OrKCTC.d.mts → Menu-DviYNrFd.d.mts} +2 -2
  82. package/dist/Menu.d.mts +1 -1
  83. package/dist/{Modal-De5_bPJ_.mjs → Modal-CiPFqr0L.mjs} +52 -23
  84. package/dist/{Modal-De5_bPJ_.mjs.map → Modal-CiPFqr0L.mjs.map} +1 -1
  85. package/dist/{PageHeader-7_Hf6rHl.mjs → PageHeader-6KvtGED-.mjs} +2 -2
  86. package/dist/{PageHeader-7_Hf6rHl.mjs.map → PageHeader-6KvtGED-.mjs.map} +1 -1
  87. package/dist/{PageLayout-DjtGrvJa.mjs → PageLayout-CPiVnS_r.mjs} +3 -1
  88. package/dist/PageLayout-CPiVnS_r.mjs.map +1 -0
  89. package/dist/{Pagination-DMH2IaV0.mjs → Pagination-CqFvnlXc.mjs} +4 -4
  90. package/dist/{Pagination-DMH2IaV0.mjs.map → Pagination-CqFvnlXc.mjs.map} +1 -1
  91. package/dist/{Pii-24D_nSRQ.mjs → Pii-jSYND7Cn.mjs} +2 -2
  92. package/dist/{Pii-24D_nSRQ.mjs.map → Pii-jSYND7Cn.mjs.map} +1 -1
  93. package/dist/{PillShell-B7Bm-dsE.d.mts → PillShell-Bkyu5FXB.d.mts} +2 -2
  94. package/dist/PillShell.d.mts +1 -1
  95. package/dist/{Popover-DordjYNM.mjs → Popover-CVX-dfYb.mjs} +48 -18
  96. package/dist/Popover-CVX-dfYb.mjs.map +1 -0
  97. package/dist/{Radio-BlEtetrr.mjs → Radio-B1H_S-Qj.mjs} +2 -2
  98. package/dist/Radio-B1H_S-Qj.mjs.map +1 -0
  99. package/dist/{RadioGroup-CMrXmmn4.mjs → RadioGroup-7hdcVhsp.mjs} +2 -2
  100. package/dist/{RadioGroup-CMrXmmn4.mjs.map → RadioGroup-7hdcVhsp.mjs.map} +1 -1
  101. package/dist/RuleEditorFields.d.mts +2 -2
  102. package/dist/RulesPill.d.mts +1 -1
  103. package/dist/{SegmentedControl-D_DA-MU1.mjs → SegmentedControl-BNOJ1FYQ.mjs} +5 -2
  104. package/dist/SegmentedControl-BNOJ1FYQ.mjs.map +1 -0
  105. package/dist/{Select-DOlw_LPR.mjs → Select-DbWEgH5c.mjs} +5 -3
  106. package/dist/Select-DbWEgH5c.mjs.map +1 -0
  107. package/dist/{Select-CR9TjFfo.d.mts → Select-DsVeAyZy.d.mts} +2 -2
  108. package/dist/Select.d.mts +1 -1
  109. package/dist/SmartTextInputField.d.mts +2 -2
  110. package/dist/{Spinner-CXb-KUs1.mjs → Spinner-k9ZiOdTr.mjs} +1 -1
  111. package/dist/{Spinner-CXb-KUs1.mjs.map → Spinner-k9ZiOdTr.mjs.map} +1 -1
  112. package/dist/{Sticker-C1_6I08u.mjs → Sticker-4VdGEFAu.mjs} +2 -2
  113. package/dist/{Sticker-C1_6I08u.mjs.map → Sticker-4VdGEFAu.mjs.map} +1 -1
  114. package/dist/StringValueControl.d.mts +2 -1
  115. package/dist/{TabBar-BCFO38E0.mjs → TabBar-d4sdknti.mjs} +5 -5
  116. package/dist/TabBar-d4sdknti.mjs.map +1 -0
  117. package/dist/{Table-DPi4Dt5H.mjs → Table-9mNn8Q-d.mjs} +14 -6
  118. package/dist/Table-9mNn8Q-d.mjs.map +1 -0
  119. package/dist/{TableBox-DNQsgQ8x.mjs → TableBox-D9NA-s9l.mjs} +16 -12
  120. package/dist/TableBox-D9NA-s9l.mjs.map +1 -0
  121. package/dist/TableBox.d.mts +1 -1
  122. package/dist/{TableBoxCell-CsRt_5gP.d.mts → TableBoxCell-CQOL30et.d.mts} +4 -4
  123. package/dist/TableBoxCell.d.mts +1 -1
  124. package/dist/{TableBoxField-Db0Vjo6Z.d.mts → TableBoxField-z0GIFeQw.d.mts} +5 -5
  125. package/dist/TableBoxField.d.mts +1 -1
  126. package/dist/{TableBoxRow-exMlZyc4.d.mts → TableBoxRow-tb9-KMr9.d.mts} +2 -2
  127. package/dist/TableBoxRow.d.mts +1 -1
  128. package/dist/{TableBoxRowActions-UO9YN34k.d.mts → TableBoxRowActions-BZwulsFP.d.mts} +2 -2
  129. package/dist/TableBoxRowActions.d.mts +1 -1
  130. package/dist/{TableControls-BrP_BqnF.mjs → TableControls-BXykbUBf.mjs} +126 -40
  131. package/dist/TableControls-BXykbUBf.mjs.map +1 -0
  132. package/dist/{TableControls-Clo_0Mty.d.mts → TableControls-DE6eHq8h.d.mts} +4 -4
  133. package/dist/TableControls.d.mts +1 -1
  134. package/dist/{TableControlsContext-BNd6z9mD.d.mts → TableControlsContext-C2_2EuMh.d.mts} +2 -2
  135. package/dist/TableControlsContext.d.mts +1 -1
  136. package/dist/{TableViewConfigurationDropdown-Cp7ausV_.d.mts → TableViewConfigurationDropdown-DE9HFXYY.d.mts} +2 -2
  137. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  138. package/dist/{TechnicalSticker-Cq5jzYKQ.mjs → TechnicalSticker-DtV7Gawf.mjs} +5 -3
  139. package/dist/TechnicalSticker-DtV7Gawf.mjs.map +1 -0
  140. package/dist/{TextArea-Dro-HH8O.mjs → TextArea-CQ1YNi2b.mjs} +4 -5
  141. package/dist/TextArea-CQ1YNi2b.mjs.map +1 -0
  142. package/dist/{Toggle-D9MzTIZs.mjs → Toggle-CzHoIR-n.mjs} +8 -4
  143. package/dist/Toggle-CzHoIR-n.mjs.map +1 -0
  144. package/dist/{Tooltip-YViXzMdm.mjs → Tooltip-CVBxc1yf.mjs} +17 -4
  145. package/dist/Tooltip-CVBxc1yf.mjs.map +1 -0
  146. package/dist/chartColors.d.mts +92 -0
  147. package/dist/chartFrameLayout.d.mts +46 -0
  148. package/dist/{clientFilterUtils-CGHYF5NE.d.mts → clientFilterUtils-2TBUC31K.d.mts} +2 -2
  149. package/dist/clientFilterUtils.d.mts +1 -1
  150. package/dist/components/Accordion/index.mjs +22 -13
  151. package/dist/components/Accordion/index.mjs.map +1 -1
  152. package/dist/components/Attribute/index.mjs +6 -4
  153. package/dist/components/Attribute/index.mjs.map +1 -1
  154. package/dist/components/Badge/index.mjs +1 -1
  155. package/dist/components/Banner/index.mjs +1 -1
  156. package/dist/components/BottomPanel/index.mjs +7 -5
  157. package/dist/components/BottomPanel/index.mjs.map +1 -1
  158. package/dist/components/Breadcrumbs/index.mjs +1 -1
  159. package/dist/components/Button/index.mjs +1 -1
  160. package/dist/components/ButtonGroup/index.mjs +1 -1
  161. package/dist/components/CardV2/index.mjs +1 -1
  162. package/dist/components/Chart/index.d.mts +9 -0
  163. package/dist/components/Chart/index.mjs +680 -0
  164. package/dist/components/Chart/index.mjs.map +1 -0
  165. package/dist/components/Checkbox/index.mjs +1 -1
  166. package/dist/components/CodeHighlight/index.mjs +1 -1
  167. package/dist/components/Combobox/index.d.mts +5 -3
  168. package/dist/components/Combobox/index.mjs +1 -1
  169. package/dist/components/DataTable/TableControls/index.d.mts +19 -19
  170. package/dist/components/DataTable/TableControls/index.mjs +2 -2
  171. package/dist/components/DataTable/index.d.mts +5 -5
  172. package/dist/components/DataTable/index.mjs +1 -1
  173. package/dist/components/DataTable/types.d.mts +1 -1
  174. package/dist/components/DatePicker/index.mjs +1 -1
  175. package/dist/components/DropdownButton/index.mjs +1 -1
  176. package/dist/components/DropdownMenu/index.d.mts +1 -1
  177. package/dist/components/DropdownMenu/index.mjs +1 -1
  178. package/dist/components/FloatingPanel/index.mjs +16 -14
  179. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  180. package/dist/components/FloatingToolbar/index.mjs +1 -1
  181. package/dist/components/FormControl/index.mjs +1 -1
  182. package/dist/components/FormField/index.d.mts +4 -4
  183. package/dist/components/FormField/index.mjs +1 -1
  184. package/dist/components/HoverCopyableField/index.mjs +1 -1
  185. package/dist/components/ImageTile/index.mjs +7 -7
  186. package/dist/components/ImageTile/index.mjs.map +1 -1
  187. package/dist/components/Input/index.mjs +1 -1
  188. package/dist/components/Link/index.mjs +1 -1
  189. package/dist/components/ListBox/index.d.mts +3 -3
  190. package/dist/components/ListBox/index.mjs +1 -1
  191. package/dist/components/LoadingShimmer/index.mjs +1 -1
  192. package/dist/components/MaskedInput/index.mjs +1 -1
  193. package/dist/components/Menu/index.d.mts +1 -1
  194. package/dist/components/Modal/index.mjs +1 -1
  195. package/dist/components/PageHeader/index.mjs +1 -1
  196. package/dist/components/Pagination/index.mjs +1 -1
  197. package/dist/components/Pii/index.mjs +1 -1
  198. package/dist/components/Popover/index.mjs +1 -1
  199. package/dist/components/ProgressBar/index.mjs +20 -3
  200. package/dist/components/ProgressBar/index.mjs.map +1 -1
  201. package/dist/components/Radio/index.mjs +1 -1
  202. package/dist/components/RadioGroup/index.mjs +1 -1
  203. package/dist/components/RichTextEditor/index.mjs +5 -5
  204. package/dist/components/RightPanel/index.mjs +28 -13
  205. package/dist/components/RightPanel/index.mjs.map +1 -1
  206. package/dist/components/SegmentedControl/index.mjs +1 -1
  207. package/dist/components/Select/index.d.mts +1 -1
  208. package/dist/components/Select/index.mjs +1 -1
  209. package/dist/components/SelectionCard/index.mjs +2 -2
  210. package/dist/components/Slider/index.mjs +3 -2
  211. package/dist/components/Slider/index.mjs.map +1 -1
  212. package/dist/components/SmartTextInput/index.mjs +9 -78
  213. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  214. package/dist/{safe-parse.d.mts → components/SmartTextInput/parser/safe-parse.d.mts} +1 -1
  215. package/dist/components/SmartTextInput/parser/safe-parse.mjs +30 -0
  216. package/dist/components/SmartTextInput/parser/safe-parse.mjs.map +1 -0
  217. package/dist/{tree.d.mts → components/SmartTextInput/parser/tree.d.mts} +1 -1
  218. package/dist/components/SmartTextInput/parser/tree.mjs +42 -0
  219. package/dist/components/SmartTextInput/parser/tree.mjs.map +1 -0
  220. package/dist/components/Spinner/index.mjs +1 -1
  221. package/dist/components/Sticker/index.mjs +1 -1
  222. package/dist/components/SwatchPicker/index.mjs +2 -1
  223. package/dist/components/SwatchPicker/index.mjs.map +1 -1
  224. package/dist/components/TabBar/index.mjs +1 -1
  225. package/dist/components/Table/index.mjs +1 -1
  226. package/dist/components/TableBox/index.d.mts +1 -1
  227. package/dist/components/TableBox/index.mjs +1 -1
  228. package/dist/components/TechnicalSticker/index.mjs +1 -1
  229. package/dist/components/TextArea/index.mjs +1 -1
  230. package/dist/components/Tile/index.mjs +2 -2
  231. package/dist/components/Toast/index.mjs +16 -10
  232. package/dist/components/Toast/index.mjs.map +1 -1
  233. package/dist/components/Toggle/index.mjs +1 -1
  234. package/dist/components/Tooltip/index.mjs +1 -1
  235. package/dist/components/VersionHistory/index.mjs +5 -5
  236. package/dist/compound-expression.d.mts +1 -1
  237. package/dist/{date-range-rule-value-ASr06ClE.d.mts → date-range-rule-value-DyLlMtjr.d.mts} +2 -2
  238. package/dist/date-range-rule-value.d.mts +1 -1
  239. package/dist/display.d.mts +1 -1
  240. package/dist/duration-token.d.mts +11 -0
  241. package/dist/exit-motion.d.mts +7 -0
  242. package/dist/fieldPickerOptions.d.mts +2 -2
  243. package/dist/{filter-size-context-CmFyIPCm.d.mts → filter-size-context-DVnjmuhk.d.mts} +2 -2
  244. package/dist/filter-size-context.d.mts +1 -1
  245. package/dist/{filters-DTBc0mE7.d.mts → filters-DW7pqWv3.d.mts} +2 -2
  246. package/dist/filters.d.mts +1 -1
  247. package/dist/{helpers-CBJ2AqGZ.d.mts → helpers-BTD2kXLs.d.mts} +2 -2
  248. package/dist/helpers.d.mts +1 -1
  249. package/dist/{index-OkdnW-u5.d.mts → index-B4tE0RxY.d.mts} +3 -3
  250. package/dist/{index-kIon1vPp.d.mts → index-DTM_t7OG.d.mts} +2 -2
  251. package/dist/index4.d.mts +3 -3
  252. package/dist/index5.d.mts +1 -1
  253. package/dist/index6.d.mts +14 -14
  254. package/dist/{inputFields-DpHeZiFX.d.mts → inputFields-DnBb3NhK.d.mts} +4 -4
  255. package/dist/inputFields.d.mts +1 -1
  256. package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
  257. package/dist/lib/useCloseFocus.d.mts +45 -0
  258. package/dist/lib/useCloseFocus.mjs +123 -0
  259. package/dist/lib/useCloseFocus.mjs.map +1 -0
  260. package/dist/lib/useModalInsetRight.d.mts +4 -3
  261. package/dist/lib/useModalInsetRight.mjs +7 -5
  262. package/dist/lib/useModalInsetRight.mjs.map +1 -1
  263. package/dist/lint/THIRD_PARTY_NOTICES.md +30 -0
  264. package/dist/lint/index.mjs +696 -11
  265. package/dist/lint/index.mjs.map +1 -1
  266. package/dist/lint/recommended.json +7 -1
  267. package/dist/mixins/hoverable.mjs +1 -1
  268. package/dist/mixins/hoverable.mjs.map +1 -1
  269. package/dist/mixins/input.mjs +1 -0
  270. package/dist/mixins/input.mjs.map +1 -1
  271. package/dist/mixins/menuItem.mjs +2 -0
  272. package/dist/mixins/menuItem.mjs.map +1 -1
  273. package/dist/mixins/motion.d.mts +28 -0
  274. package/dist/mixins/motion.mjs +66 -0
  275. package/dist/mixins/motion.mjs.map +1 -0
  276. package/dist/motion-origin.d.mts +7 -0
  277. package/dist/motion.d.mts +63 -0
  278. package/dist/no-layout-motion.d.mts +7 -0
  279. package/dist/no-transition-all.d.mts +7 -0
  280. package/dist/{operators-BHxKZcpD.d.mts → operators-B8_k3r69.d.mts} +10 -3
  281. package/dist/operators.d.mts +2 -2
  282. package/dist/overlay-motion.d.mts +7 -0
  283. package/dist/patterns/CardGrouping/index.mjs +6 -6
  284. package/dist/patterns/CardGrouping/index.mjs.map +1 -1
  285. package/dist/patterns/IndexTableLayout/index.mjs +23 -16
  286. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
  287. package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
  288. package/dist/patterns/LayoutLoadingSpinner/index.mjs +3 -1
  289. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
  290. package/dist/patterns/PageLayout/index.mjs +1 -1
  291. package/dist/patterns/WizardModal/index.mjs +2 -2
  292. package/dist/relative-date-label.d.mts +1 -1
  293. package/dist/{types-DLnCkvTt.d.mts → types-BJqmRXFV.d.mts} +15 -1
  294. package/dist/{types-CqcbWyUY.d.mts → types-BOsCi-kZ.d.mts} +8 -2
  295. package/dist/{types-BiqzeNsa.d.mts → types-Dws2XDz2.d.mts} +2 -2
  296. package/dist/{types-BEdERA4v.d.mts → types-NO2GRlM-.d.mts} +2 -2
  297. package/dist/types4.d.mts +1 -1
  298. package/dist/types5.d.mts +1 -1
  299. package/dist/types6.d.mts +1 -1
  300. package/dist/{url-state-CXUuK3_r.d.mts → url-state-CXPmXzIZ.d.mts} +2 -2
  301. package/dist/url-state.d.mts +1 -1
  302. package/dist/useChartColors.d.mts +30 -0
  303. package/dist/useChartSeriesVisibility.d.mts +22 -0
  304. package/dist/useChartStyles.d.mts +108 -0
  305. package/dist/useColumnConfiguration.d.mts +2 -2
  306. package/dist/useComboboxFooterAction.d.mts +1 -1
  307. package/dist/{useFilterStateV2-DBpbxAEC.d.mts → useFilterStateV2-DiTS9DTg.d.mts} +3 -3
  308. package/dist/useFilterStateV2.d.mts +1 -1
  309. package/dist/{useTableColumns-Xd14vx_h.d.mts → useTableColumns-tITjHasE.d.mts} +2 -2
  310. package/dist/useTableColumns.d.mts +1 -1
  311. package/dist/useTruncation.d.mts +1 -1
  312. package/dist/useValueControlError.d.mts +26 -0
  313. package/dist/utils.d.mts +1 -1
  314. package/dist/{validation-Tgg3AhuP.d.mts → validation-BDQdQ1cY.d.mts} +3 -3
  315. package/dist/validation.d.mts +1 -1
  316. package/dist/{value-control-resolver-XQbGCdsP.d.mts → value-control-resolver-BFJZEWDn.d.mts} +9 -3
  317. package/dist/value-control-resolver.d.mts +1 -1
  318. package/dist/value-labels.d.mts +12 -0
  319. package/dist/variables/keyframes.d.mts +2 -1
  320. package/dist/variables/keyframes.mjs +9 -1
  321. package/dist/variables/keyframes.mjs.map +1 -1
  322. package/dist/variables/transitions.d.mts +31 -1
  323. package/dist/variables/transitions.mjs +50 -1
  324. package/dist/variables/transitions.mjs.map +1 -1
  325. package/llms.txt +2 -1
  326. package/package.json +20 -4
  327. package/skills/new-screen/SKILL.md +33 -0
  328. package/skills/ui-authoring/COMPONENTS.md +19 -1
  329. package/skills/ui-authoring/PATTERNS.md +57 -36
  330. package/skills/ui-authoring/STANDARD.md +78 -4
  331. package/skills/ui-authoring/TOKENS.md +27 -24
  332. package/dist/Breadcrumbs-CMf3Uvow.mjs.map +0 -1
  333. package/dist/CardV2-CrV6eEQb.mjs.map +0 -1
  334. package/dist/Checkbox-Dr4LMKHV.mjs.map +0 -1
  335. package/dist/Combobox-CIKqTYZt.d.mts +0 -11
  336. package/dist/Combobox-Gb_j1dg6.mjs.map +0 -1
  337. package/dist/DataTable-CIZJ1vO8.mjs.map +0 -1
  338. package/dist/DropdownMenu-c8XK2Lr4.mjs.map +0 -1
  339. package/dist/FloatingToolbar-DLRaE0o7.mjs.map +0 -1
  340. package/dist/HoverCopyableField-XHC_n9tp.mjs.map +0 -1
  341. package/dist/IconButton-DxHB2g80.mjs.map +0 -1
  342. package/dist/Link-D_kCyLYX.mjs.map +0 -1
  343. package/dist/LoadingShimmer-oPIv2ESr.mjs.map +0 -1
  344. package/dist/PageLayout-DjtGrvJa.mjs.map +0 -1
  345. package/dist/Popover-DordjYNM.mjs.map +0 -1
  346. package/dist/Radio-BlEtetrr.mjs.map +0 -1
  347. package/dist/SegmentedControl-D_DA-MU1.mjs.map +0 -1
  348. package/dist/Select-DOlw_LPR.mjs.map +0 -1
  349. package/dist/TabBar-BCFO38E0.mjs.map +0 -1
  350. package/dist/Table-DPi4Dt5H.mjs.map +0 -1
  351. package/dist/TableBox-DNQsgQ8x.mjs.map +0 -1
  352. package/dist/TableControls-BrP_BqnF.mjs.map +0 -1
  353. package/dist/TechnicalSticker-Cq5jzYKQ.mjs.map +0 -1
  354. package/dist/TextArea-Dro-HH8O.mjs.map +0 -1
  355. package/dist/Toggle-D9MzTIZs.mjs.map +0 -1
  356. package/dist/Tooltip-YViXzMdm.mjs.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import { a as styled, r as css } from "../../styledComponentsInterop-Cs5CCPRy.mjs";
2
2
  import { semanticColor, semanticOnly, semanticTokens } from "../../lib/semanticColor.mjs";
3
3
  import { i as Paragraph } from "../../Text-D0vEReED.mjs";
4
- import { a as Tooltip } from "../../Tooltip-YViXzMdm.mjs";
4
+ import { a as Tooltip } from "../../Tooltip-CVBxc1yf.mjs";
5
5
  import { opacityOf, withAlpha } from "../../lib/color.mjs";
6
6
  import useControlled from "../../lib/useControlled.mjs";
7
7
  import { focusStyle } from "../../mixins/focus.mjs";
8
8
  import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
9
9
  import { n as useFormField, t as FormControlContext } from "../../useFormField-pOVkb5BK.mjs";
10
- import { t as Checkbox } from "../../Checkbox-Dr4LMKHV.mjs";
10
+ import { t as Checkbox } from "../../Checkbox-BAh-wF_F.mjs";
11
11
  import { Children, cloneElement, isValidElement, useContext } from "react";
12
12
  import { Color, Spacing, Typography } from "@persona/design-tokens";
13
13
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,8 @@
1
1
  import { a as styled, r as css } from "../../styledComponentsInterop-Cs5CCPRy.mjs";
2
2
  import { semanticColor, semanticOnly } from "../../lib/semanticColor.mjs";
3
3
  import { paragraphMixins } from "../../mixins/text.mjs";
4
- import { i as FloatingTooltip } from "../../Tooltip-YViXzMdm.mjs";
4
+ import "../../variables/transitions.mjs";
5
+ import { i as FloatingTooltip } from "../../Tooltip-CVBxc1yf.mjs";
5
6
  import { focusStyle } from "../../mixins/focus.mjs";
6
7
  import { useEffect, useMemo, useRef, useState } from "react";
7
8
  import { Color, Spacing } from "@persona/design-tokens";
@@ -129,7 +130,7 @@ const SliderTrack = styled.div`
129
130
  height: 4px;
130
131
  border-radius: 4px;
131
132
  outline: none;
132
- transition: background 0.2s;
133
+ transition: background ${"200ms"} ${"cubic-bezier(0.4, 0, 0.2, 1)"};
133
134
 
134
135
  /* Disable clicks on slide bar */
135
136
  pointer-events: none;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/Slider/SliderThumb.tsx","../../../src/components/Slider/Slider.tsx","../../../src/components/Slider/SliderRHF.tsx"],"sourcesContent":["import {\n autoUpdate,\n type ElementProps,\n flip,\n type FloatingContext,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useSliderThumb } from '@react-aria/slider';\nimport { mergeProps } from '@react-aria/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport type { SliderState } from '@react-stately/slider';\nimport { debounce } from 'lodash-es';\nimport {\n type OutputHTMLAttributes,\n type RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\n\nimport { FloatingTooltip } from '#src/components/Tooltip';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { focusStyle } from '#src/mixins/focus';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst Tooltip = styled(FloatingTooltip)`\n ${paragraphMixins.sm};\n`;\n\nconst Thumb = styled('div')<{ disabled?: boolean }>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-thumb: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n background: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputSurfaceDisabled', Color.BackgroundInputDisabled)\n : semanticColor(theme, 'InputSurfaceInverseStatic', Color.BackgroundInputDefault)};\n cursor: ${(props) => (props.disabled ? 'inherit' : 'pointer')};\n border-radius: 50%;\n border: 1px solid\n ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'BorderDefault', Color.BorderInputDisabled)};\n /* Enable clicks on thumb */\n pointer-events: auto;\n\n &[data-focused] {\n ${focusStyle}\n /* Extra pixel of size to overlap into the outline, fixing a small visual bug */\n box-shadow: 0 0 0 2px var(--background-color-behind-thumb);\n }\n`;\n\ninterface SliderThumbProps {\n state: SliderState;\n trackRef: RefObject<HTMLElement>;\n index: number;\n outputProps: OutputHTMLAttributes<HTMLOutputElement>;\n hideTooltips?: boolean;\n}\n\ninterface UsePressedOptions {\n delay?: number;\n}\n\nconst usePressed = (context: FloatingContext, options?: UsePressedOptions): ElementProps => {\n const closeHandler = useMemo(\n () => debounce(() => context.onOpenChange(false), options?.delay ?? 500),\n [],\n );\n return {\n reference: {\n onPointerDown: () => {\n context.onOpenChange(true);\n },\n onPointerUp: () => {\n closeHandler();\n },\n },\n };\n};\n\nconst SliderThumb = ({ state, trackRef, index, outputProps, hideTooltips }: SliderThumbProps) => {\n const inputRef = useRef(null);\n const { thumbProps, inputProps } = useSliderThumb(\n {\n index,\n trackRef,\n inputRef,\n },\n state,\n );\n\n const { focusProps, isFocused } = useFocusRing();\n\n const [open, setOpen] = useState(false);\n\n const { x, y, refs, strategy, context } = useFloating({\n placement: 'top',\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n });\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: 'tooltip' }),\n useDismiss(context),\n usePressed(context),\n ]);\n\n useEffect(() => {\n setOpen(isFocused);\n }, [isFocused]);\n\n return (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n left: `${state.getThumbPercent(index) * 100}%`,\n }}\n >\n {open && !hideTooltips && (\n <Tooltip\n {...mergeProps(\n getFloatingProps({\n ref: refs.setFloating,\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n }),\n outputProps,\n )}\n >\n {state.getThumbValueLabel(index)}\n </Tooltip>\n )}\n <Thumb\n {...mergeProps(\n thumbProps,\n getReferenceProps({\n ref: refs.setReference,\n }),\n isFocused ? { 'data-focused': true } : undefined,\n )}\n >\n <VisuallyHidden>\n <input ref={inputRef} {...mergeProps(inputProps, focusProps)} />\n </VisuallyHidden>\n </Thumb>\n </div>\n );\n};\n\nexport default SliderThumb;\n","import type { NumberFormatOptions } from '@internationalized/number';\nimport { useNumberFormatter } from '@react-aria/i18n';\nimport { useSlider } from '@react-aria/slider';\nimport { useSliderState } from '@react-stately/slider';\nimport type { SliderProps as SliderPropsType } from '@react-types/slider';\nimport { type FocusEventHandler, type ReactNode, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\n\nimport SliderThumb from '#src/components/Slider/SliderThumb';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst SliderContainer = styled.div`\n display: flex;\n align-items: center;\n touch-action: none;\n position: relative;\n`;\n\nconst SliderLabel = styled.div<{ $disabled?: boolean }>`\n ${paragraphMixins.md};\n ${({ $disabled }) =>\n semanticOnly((tokens) => `color: ${$disabled ? tokens.FgDisabled : tokens.FgPrimary};`)}\n &:first-of-type {\n padding-right: ${Spacing[2]};\n }\n\n &:last-of-type {\n padding-left: ${Spacing[2]};\n }\n`;\n\ntype SliderTrackProps = {\n track?: boolean;\n percents: number[];\n disabled?: boolean;\n};\nconst SliderTrack = styled.div<SliderTrackProps>`\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 4px;\n outline: none;\n transition: background 0.2s;\n\n /* Disable clicks on slide bar */\n pointer-events: none;\n\n ${({ theme, percents, track, disabled }) => {\n const activeColor = disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'InputBorderAccent', Color.CoreBlue700);\n const trackColor = semanticColor(theme, 'BorderSubtle', Color.BorderDivider);\n\n if (track === false) {\n return css`\n background: ${trackColor};\n `;\n }\n\n if (percents.length === 2) {\n return css`\n background: linear-gradient(\n to right,\n ${trackColor} 0%,\n ${trackColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[1] * 100}%,\n ${trackColor} ${percents[1] * 100}%,\n ${trackColor} 100%\n );\n `;\n }\n\n const leftColor = activeColor;\n const rightColor = trackColor;\n\n return css`\n background: linear-gradient(\n to right,\n ${leftColor} 0%,\n ${leftColor} ${percents[0] * 100}%,\n ${rightColor} ${percents[0] * 100}%,\n ${rightColor} 100%\n );\n `;\n }}\n`;\n\nexport interface SliderProps<T = number | number[]> {\n min?: number;\n minLabel?: ReactNode;\n max?: number;\n maxLabel?: ReactNode;\n onChange?: (value: T) => void;\n value?: T;\n defaultValue?: T;\n step?: number;\n\n /**\n * Show labels on ends of track\n */\n showLabels?: boolean;\n\n /**\n * Track style\n */\n track?: boolean;\n\n /**\n * Hide tooltips on slider thumbs\n */\n hideTooltips?: boolean;\n width?: number | 'auto';\n disabled?: boolean;\n formatOptions?: NumberFormatOptions;\n\n id?: string;\n className?: string;\n name?: string;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport const Slider = ({\n minLabel,\n maxLabel,\n showLabels,\n track,\n width,\n hideTooltips,\n className,\n id,\n onBlur,\n ...elemProps\n}: SliderProps) => {\n const { min, max, value, defaultValue, disabled } = elemProps;\n const trackRef = useRef(null);\n const numberFormatter = useNumberFormatter(elemProps.formatOptions);\n\n const ariaElemProps: SliderPropsType = {\n ...elemProps,\n isDisabled: disabled,\n minValue: min,\n maxValue: max,\n value: typeof value === 'number' ? [value] : value,\n defaultValue: typeof defaultValue === 'number' ? [defaultValue] : defaultValue,\n onChange:\n typeof elemProps.onChange !== 'undefined'\n ? (v) => {\n if (Array.isArray(v) && v.length === 1) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v[0]);\n }\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v);\n }\n : undefined,\n };\n\n const state = useSliderState({ ...ariaElemProps, numberFormatter });\n const { groupProps, trackProps, outputProps } = useSlider(ariaElemProps, state, trackRef);\n\n return (\n <SliderContainer\n {...groupProps}\n style={{\n position: 'relative',\n alignItems: 'center',\n width: width ?? 300,\n touchAction: 'none',\n }}\n className={className}\n id={id}\n onBlur={onBlur}\n >\n {showLabels && <SliderLabel $disabled={disabled}>{minLabel ?? min}</SliderLabel>}\n <SliderTrack\n {...trackProps}\n track={track}\n ref={trackRef}\n percents={state.values.map((_v, i) => state.getThumbPercent(i))}\n disabled={disabled}\n >\n {state.values.map((_v, i) => (\n <SliderThumb\n key={`${trackProps.id}_thumb${i}`}\n index={i}\n state={state}\n trackRef={trackRef}\n hideTooltips={hideTooltips}\n outputProps={outputProps}\n />\n ))}\n </SliderTrack>\n {showLabels && <SliderLabel $disabled={disabled}>{maxLabel ?? max}</SliderLabel>}\n </SliderContainer>\n );\n};\n\nexport default Slider;\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { type Control, type FieldValues, useController } from 'react-hook-form';\n\nimport Slider from './Slider';\n\ninterface SliderRHFProps extends ComponentPropsWithoutRef<typeof Slider> {\n control: Control<FieldValues, object>;\n name: string;\n}\n\nconst SliderRHF = ({ control, name: nameProp, defaultValue, ...elemProps }: SliderRHFProps) => {\n const {\n field: { onChange, onBlur, name, value },\n } = useController({\n name: nameProp,\n control,\n rules: { required: true },\n defaultValue,\n });\n\n return <Slider {...elemProps} onBlur={onBlur} onChange={onChange} value={value} name={name} />;\n};\n\nexport default SliderRHF;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/Slider/SliderThumb.tsx","../../../src/components/Slider/Slider.tsx","../../../src/components/Slider/SliderRHF.tsx"],"sourcesContent":["import {\n autoUpdate,\n type ElementProps,\n flip,\n type FloatingContext,\n offset,\n shift,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useFocusRing } from '@react-aria/focus';\nimport { useSliderThumb } from '@react-aria/slider';\nimport { mergeProps } from '@react-aria/utils';\nimport { VisuallyHidden } from '@react-aria/visually-hidden';\nimport type { SliderState } from '@react-stately/slider';\nimport { debounce } from 'lodash-es';\nimport {\n type OutputHTMLAttributes,\n type RefObject,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color } from '@persona/design-tokens';\n\nimport { FloatingTooltip } from '#src/components/Tooltip';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { focusStyle } from '#src/mixins/focus';\nimport { paragraphMixins } from '#src/mixins/text';\n\nconst Tooltip = styled(FloatingTooltip)`\n ${paragraphMixins.sm};\n`;\n\nconst Thumb = styled('div')<{ disabled?: boolean }>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-thumb: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n box-sizing: border-box;\n width: 16px;\n height: 16px;\n background: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputSurfaceDisabled', Color.BackgroundInputDisabled)\n : semanticColor(theme, 'InputSurfaceInverseStatic', Color.BackgroundInputDefault)};\n cursor: ${(props) => (props.disabled ? 'inherit' : 'pointer')};\n border-radius: 50%;\n border: 1px solid\n ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'BorderDefault', Color.BorderInputDisabled)};\n /* Enable clicks on thumb */\n pointer-events: auto;\n\n &[data-focused] {\n ${focusStyle}\n /* Extra pixel of size to overlap into the outline, fixing a small visual bug */\n box-shadow: 0 0 0 2px var(--background-color-behind-thumb);\n }\n`;\n\ninterface SliderThumbProps {\n state: SliderState;\n trackRef: RefObject<HTMLElement>;\n index: number;\n outputProps: OutputHTMLAttributes<HTMLOutputElement>;\n hideTooltips?: boolean;\n}\n\ninterface UsePressedOptions {\n delay?: number;\n}\n\nconst usePressed = (context: FloatingContext, options?: UsePressedOptions): ElementProps => {\n const closeHandler = useMemo(\n () => debounce(() => context.onOpenChange(false), options?.delay ?? 500),\n [],\n );\n return {\n reference: {\n onPointerDown: () => {\n context.onOpenChange(true);\n },\n onPointerUp: () => {\n closeHandler();\n },\n },\n };\n};\n\nconst SliderThumb = ({ state, trackRef, index, outputProps, hideTooltips }: SliderThumbProps) => {\n const inputRef = useRef(null);\n const { thumbProps, inputProps } = useSliderThumb(\n {\n index,\n trackRef,\n inputRef,\n },\n state,\n );\n\n const { focusProps, isFocused } = useFocusRing();\n\n const [open, setOpen] = useState(false);\n\n const { x, y, refs, strategy, context } = useFloating({\n placement: 'top',\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [offset(4), flip(), shift({ padding: 4 })],\n });\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: 'tooltip' }),\n useDismiss(context),\n usePressed(context),\n ]);\n\n useEffect(() => {\n setOpen(isFocused);\n }, [isFocused]);\n\n return (\n <div\n style={{\n position: 'absolute',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n left: `${state.getThumbPercent(index) * 100}%`,\n }}\n >\n {open && !hideTooltips && (\n <Tooltip\n {...mergeProps(\n getFloatingProps({\n ref: refs.setFloating,\n style: {\n position: strategy,\n top: y ?? '',\n left: x ?? '',\n },\n }),\n outputProps,\n )}\n >\n {state.getThumbValueLabel(index)}\n </Tooltip>\n )}\n <Thumb\n {...mergeProps(\n thumbProps,\n getReferenceProps({\n ref: refs.setReference,\n }),\n isFocused ? { 'data-focused': true } : undefined,\n )}\n >\n <VisuallyHidden>\n <input ref={inputRef} {...mergeProps(inputProps, focusProps)} />\n </VisuallyHidden>\n </Thumb>\n </div>\n );\n};\n\nexport default SliderThumb;\n","import type { NumberFormatOptions } from '@internationalized/number';\nimport { useNumberFormatter } from '@react-aria/i18n';\nimport { useSlider } from '@react-aria/slider';\nimport { useSliderState } from '@react-stately/slider';\nimport type { SliderProps as SliderPropsType } from '@react-types/slider';\nimport { type FocusEventHandler, type ReactNode, useRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\n\nimport SliderThumb from '#src/components/Slider/SliderThumb';\nimport { semanticColor, semanticOnly } from '#src/lib/semanticColor';\nimport { paragraphMixins } from '#src/mixins/text';\nimport { TransitionDuration, TransitionEasing } from '#src/variables/transitions';\n\nconst SliderContainer = styled.div`\n display: flex;\n align-items: center;\n touch-action: none;\n position: relative;\n`;\n\nconst SliderLabel = styled.div<{ $disabled?: boolean }>`\n ${paragraphMixins.md};\n ${({ $disabled }) =>\n semanticOnly((tokens) => `color: ${$disabled ? tokens.FgDisabled : tokens.FgPrimary};`)}\n &:first-of-type {\n padding-right: ${Spacing[2]};\n }\n\n &:last-of-type {\n padding-left: ${Spacing[2]};\n }\n`;\n\ntype SliderTrackProps = {\n track?: boolean;\n percents: number[];\n disabled?: boolean;\n};\nconst SliderTrack = styled.div<SliderTrackProps>`\n position: relative;\n width: 100%;\n height: 4px;\n border-radius: 4px;\n outline: none;\n transition: background ${TransitionDuration.Fast} ${TransitionEasing.Move};\n\n /* Disable clicks on slide bar */\n pointer-events: none;\n\n ${({ theme, percents, track, disabled }) => {\n const activeColor = disabled\n ? semanticColor(theme, 'InputBorderDisabled', Color.BorderInputDisabled)\n : semanticColor(theme, 'InputBorderAccent', Color.CoreBlue700);\n const trackColor = semanticColor(theme, 'BorderSubtle', Color.BorderDivider);\n\n if (track === false) {\n return css`\n background: ${trackColor};\n `;\n }\n\n if (percents.length === 2) {\n return css`\n background: linear-gradient(\n to right,\n ${trackColor} 0%,\n ${trackColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[0] * 100}%,\n ${activeColor} ${percents[1] * 100}%,\n ${trackColor} ${percents[1] * 100}%,\n ${trackColor} 100%\n );\n `;\n }\n\n const leftColor = activeColor;\n const rightColor = trackColor;\n\n return css`\n background: linear-gradient(\n to right,\n ${leftColor} 0%,\n ${leftColor} ${percents[0] * 100}%,\n ${rightColor} ${percents[0] * 100}%,\n ${rightColor} 100%\n );\n `;\n }}\n`;\n\nexport interface SliderProps<T = number | number[]> {\n min?: number;\n minLabel?: ReactNode;\n max?: number;\n maxLabel?: ReactNode;\n onChange?: (value: T) => void;\n value?: T;\n defaultValue?: T;\n step?: number;\n\n /**\n * Show labels on ends of track\n */\n showLabels?: boolean;\n\n /**\n * Track style\n */\n track?: boolean;\n\n /**\n * Hide tooltips on slider thumbs\n */\n hideTooltips?: boolean;\n width?: number | 'auto';\n disabled?: boolean;\n formatOptions?: NumberFormatOptions;\n\n id?: string;\n className?: string;\n name?: string;\n onBlur?: FocusEventHandler<HTMLDivElement>;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n}\n\nexport const Slider = ({\n minLabel,\n maxLabel,\n showLabels,\n track,\n width,\n hideTooltips,\n className,\n id,\n onBlur,\n ...elemProps\n}: SliderProps) => {\n const { min, max, value, defaultValue, disabled } = elemProps;\n const trackRef = useRef(null);\n const numberFormatter = useNumberFormatter(elemProps.formatOptions);\n\n const ariaElemProps: SliderPropsType = {\n ...elemProps,\n isDisabled: disabled,\n minValue: min,\n maxValue: max,\n value: typeof value === 'number' ? [value] : value,\n defaultValue: typeof defaultValue === 'number' ? [defaultValue] : defaultValue,\n onChange:\n typeof elemProps.onChange !== 'undefined'\n ? (v) => {\n if (Array.isArray(v) && v.length === 1) {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v[0]);\n }\n\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return elemProps.onChange(v);\n }\n : undefined,\n };\n\n const state = useSliderState({ ...ariaElemProps, numberFormatter });\n const { groupProps, trackProps, outputProps } = useSlider(ariaElemProps, state, trackRef);\n\n return (\n <SliderContainer\n {...groupProps}\n style={{\n position: 'relative',\n alignItems: 'center',\n width: width ?? 300,\n touchAction: 'none',\n }}\n className={className}\n id={id}\n onBlur={onBlur}\n >\n {showLabels && <SliderLabel $disabled={disabled}>{minLabel ?? min}</SliderLabel>}\n <SliderTrack\n {...trackProps}\n track={track}\n ref={trackRef}\n percents={state.values.map((_v, i) => state.getThumbPercent(i))}\n disabled={disabled}\n >\n {state.values.map((_v, i) => (\n <SliderThumb\n key={`${trackProps.id}_thumb${i}`}\n index={i}\n state={state}\n trackRef={trackRef}\n hideTooltips={hideTooltips}\n outputProps={outputProps}\n />\n ))}\n </SliderTrack>\n {showLabels && <SliderLabel $disabled={disabled}>{maxLabel ?? max}</SliderLabel>}\n </SliderContainer>\n );\n};\n\nexport default Slider;\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { type Control, type FieldValues, useController } from 'react-hook-form';\n\nimport Slider from './Slider';\n\ninterface SliderRHFProps extends ComponentPropsWithoutRef<typeof Slider> {\n control: Control<FieldValues, object>;\n name: string;\n}\n\nconst SliderRHF = ({ control, name: nameProp, defaultValue, ...elemProps }: SliderRHFProps) => {\n const {\n field: { onChange, onBlur, name, value },\n } = useController({\n name: nameProp,\n control,\n rules: { required: true },\n defaultValue,\n });\n\n return <Slider {...elemProps} onBlur={onBlur} onChange={onChange} value={value} name={name} />;\n};\n\nexport default SliderRHF;\n"],"mappings":"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"}
@@ -12,14 +12,15 @@ import { Z_INDICES } from "../../lib/zindex.mjs";
12
12
  import { focusStyle } from "../../mixins/focus.mjs";
13
13
  import "../../variables/effect.mjs";
14
14
  import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
15
- import { n as Button } from "../../IconButton-DxHB2g80.mjs";
15
+ import { n as Button } from "../../IconButton-Bj1fry_K.mjs";
16
16
  import { n as useFormField } from "../../useFormField-pOVkb5BK.mjs";
17
17
  import Input_default from "../Input/index.mjs";
18
- import { n as ErrorText } from "../../FormControl-BztNXLn6.mjs";
19
- import { m as FormField, n as TableBoxField, p as splitOutFormFieldProps } from "../../FormField-Cf1VMvoa.mjs";
18
+ import { n as ErrorText } from "../../FormControl-BoKGiWdQ.mjs";
19
+ import { m as FormField, n as TableBoxField, p as splitOutFormFieldProps } from "../../FormField-yYJFkJ6R.mjs";
20
20
  import PillType from "./PillType.mjs";
21
21
  import { ErrorMessageByKind, NodeType, isASTChainNode, isASTContainerNode, isMethodChainNode } from "./parser/smart-text/types.mjs";
22
- import { parse as peg$parse } from "./parser/smart-text/parser.mjs";
22
+ import { enclosingExpr, findAll, resolve } from "./parser/tree.mjs";
23
+ import { safeParse } from "./parser/safe-parse.mjs";
23
24
  import { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from "react";
24
25
  import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
25
26
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -28,44 +29,6 @@ import { ArrowLeftIcon as ArrowLeftIcon$1 } from "@persona/icons/12px";
28
29
  import { FocusScope, mergeProps, useComboBox, useDialog, useFocusManager, useInteractOutside, useListBox, useOption, usePopover } from "react-aria";
29
30
  import { Item, useComboBoxState } from "react-stately";
30
31
  import { createPortal } from "react-dom";
31
- //#region src/components/SmartTextInput/parser/tree.ts
32
- function getChildren(node) {
33
- return node.children ?? [];
34
- }
35
- function findAll(node, type, acc = []) {
36
- if (node.type === type) acc.push(node);
37
- getChildren(node).forEach((c) => findAll(c, type, acc));
38
- return acc;
39
- }
40
- function resolve(node, charIdx) {
41
- if (charIdx < node.start || charIdx >= Math.max(node.end, node.start + 1)) return null;
42
- const children = getChildren(node);
43
- for (let i = 0; i < children.length; i++) {
44
- const hit = resolve(children[i], charIdx);
45
- if (hit) return hit;
46
- }
47
- return node;
48
- }
49
- function findAncestor(root, target, pred) {
50
- function walk(n, ancestors) {
51
- if (n === target) {
52
- for (let i = ancestors.length - 1; i >= 0; i--) if (pred(ancestors[i])) return [true, ancestors[i]];
53
- return [true, null];
54
- }
55
- const children = getChildren(n);
56
- for (let j = 0; j < children.length; j++) {
57
- const [found, result] = walk(children[j], ancestors.concat([n]));
58
- if (found) return [true, result];
59
- }
60
- return [false, null];
61
- }
62
- const [, result] = walk(root, []);
63
- return result;
64
- }
65
- function enclosingExpr(root, node) {
66
- return findAncestor(root, node, (a) => a.type === NodeType.Handlebars || a.type === NodeType.Code);
67
- }
68
- //#endregion
69
32
  //#region src/components/SmartTextInput/HighlightedText.tsx
70
33
  const LoadingIndicator = styled(LoaderIcon)`
71
34
  color: ${Color.BorderIconSecondary};
@@ -374,40 +337,7 @@ let ValueType = /* @__PURE__ */ function(ValueType) {
374
337
  return ValueType;
375
338
  }({});
376
339
  //#endregion
377
- //#region src/components/SmartTextInput/parser/safe-parse.ts
378
- /**
379
- * Parses the input string into an ASTNode tree.
380
- */
381
- function safeParse(input, options) {
382
- try {
383
- return peg$parse(input, {
384
- startRule: "Root",
385
- strict: false,
386
- ...options
387
- });
388
- } catch {
389
- return {
390
- type: NodeType.Root,
391
- start: 0,
392
- end: input.length,
393
- children: [{
394
- type: NodeType.Error,
395
- start: 0,
396
- end: input.length
397
- }]
398
- };
399
- }
400
- }
401
- //#endregion
402
340
  //#region src/components/SmartTextInput/utils.ts
403
- const createMeasureCanvas = () => {
404
- const canvas = document.createElement("canvas");
405
- return [canvas, () => {
406
- canvas.width = 0;
407
- canvas.height = 0;
408
- canvas.remove();
409
- }];
410
- };
411
341
  const safeCursorIdx = (cursorIdx, ast) => {
412
342
  const idx = cursorIdx ?? ast.end;
413
343
  return Math.max(Math.min(idx, ast.end), 0);
@@ -442,7 +372,7 @@ function canExitToInterpolation(value, allowedValueType) {
442
372
  const syncScroll = (from, to) => {
443
373
  if (from.current && to.current) to.current.scrollLeft = from.current.scrollLeft;
444
374
  };
445
- const [globalMeasureCanvas] = createMeasureCanvas();
375
+ let globalMeasureCanvas;
446
376
  /**
447
377
  * Scroll the input so the cursor at cursorIdx is visible, then sync the overlay.
448
378
  *
@@ -453,6 +383,7 @@ const [globalMeasureCanvas] = createMeasureCanvas();
453
383
  const scrollInputToCursor = (inputRef, cursorIdx) => {
454
384
  const input = inputRef.current;
455
385
  if (!input) return;
386
+ globalMeasureCanvas ??= document.createElement("canvas");
456
387
  const ctx = globalMeasureCanvas.getContext("2d");
457
388
  if (!ctx) return;
458
389
  const style = window.getComputedStyle(input);
@@ -1351,7 +1282,7 @@ function findSchemaErrors(tree, rootSchema, platformObjectJsonSchema, primitiveU
1351
1282
  }
1352
1283
  const hasIncomplete = findAll(chainNode, NodeType.Error).some((c) => c.wip);
1353
1284
  const enclosing = enclosingExpr(tree, chainNode);
1354
- const inClosedHandlebars = enclosing?.type === NodeType.Handlebars && !enclosing.children?.some((c) => c.type === NodeType.Error && c.kind === "unclosedHandlebars");
1285
+ const inClosedHandlebars = enclosing?.type === NodeType.Handlebars && enclosing.children?.includes(chainNode) && !enclosing.children?.some((c) => c.type === NodeType.Error && c.kind === "unclosedHandlebars");
1355
1286
  if (!hasIncomplete && identifierLinks.length > 0 && inClosedHandlebars) {
1356
1287
  if (!(prevSchema === UNTYPED_ADDITIONAL_PROPERTY_SCHEMA || isSchemaTypeAllowed(prevSchema, JsonSchemaStringifiableTypes))) {
1357
1288
  const lastLink = identifierLinks[identifierLinks.length - 1];
@@ -1417,7 +1348,7 @@ function getError(leftmostSyntaxError, leftmostIncompleteError, leftmostSchemaEr
1417
1348
  const useInternalValidation = ({ tree, valueIsEmpty, focused, schemaValidator, onValidationChange, value, valueType }) => {
1418
1349
  const errorNodes = findAll(tree, NodeType.Error);
1419
1350
  let leftmostSyntaxError = errorNodes.find((e) => e.start < e.end && !e.wip);
1420
- const leftmostIncompleteError = errorNodes.find((e) => e.start === e.end);
1351
+ const leftmostIncompleteError = errorNodes.find((e) => e.wip || e.start === e.end);
1421
1352
  const leftmostSchemaError = useMemo(() => schemaValidator(tree), [tree, schemaValidator]);
1422
1353
  if (leftmostSyntaxError != null && valueType === "method-chain" && (value.includes("{{") || value.includes("${"))) leftmostSyntaxError = {
1423
1354
  ...leftmostSyntaxError,