@persona/design-system 0.10.3 → 0.10.5

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 (900) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/Accordion.d.mts +2 -2
  3. package/dist/AccordionItem.d.mts +2 -2
  4. package/dist/{Action-DT8WqfEg.d.mts → Action-Bmo8B-Q3.d.mts} +4 -4
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +3 -3
  7. package/dist/AdvancedFilterRulesPopover.d.mts +3 -3
  8. package/dist/ArrayValueControl.d.mts +2 -2
  9. package/dist/Attribute.d.mts +4 -4
  10. package/dist/AttributeGrid.d.mts +1 -1
  11. package/dist/{Badge-Bvn3afds.mjs → Badge-8YzapjWf.mjs} +4 -4
  12. package/dist/Badge-8YzapjWf.mjs.map +1 -0
  13. package/dist/Badge.d.mts +1 -1
  14. package/dist/Banner.d.mts +1 -1
  15. package/dist/BooleanValueControl.d.mts +2 -2
  16. package/dist/BottomPanel.d.mts +1 -1
  17. package/dist/{Breadcrumb-BDbY1Ffu.d.mts → Breadcrumb-DnY8n3EL.d.mts} +8 -3
  18. package/dist/Breadcrumb.d.mts +2 -2
  19. package/dist/{Breadcrumbs-C2ThOYJ-.d.mts → Breadcrumbs-DRu_JfdI.d.mts} +3 -3
  20. package/dist/{Breadcrumbs-CQUe9VTM.mjs → Breadcrumbs-Dft2TR4v.mjs} +61 -21
  21. package/dist/Breadcrumbs-Dft2TR4v.mjs.map +1 -0
  22. package/dist/Breadcrumbs.d.mts +1 -1
  23. package/dist/{Button-CyjqQa5v.d.mts → Button-Cg8KyT5M.d.mts} +5 -5
  24. package/dist/Button.d.mts +1 -1
  25. package/dist/ButtonGroup.d.mts +1 -1
  26. package/dist/{Calendar-CkjYG7Mj.d.mts → Calendar-D-6WOLJ1.d.mts} +2 -2
  27. package/dist/Calendar.d.mts +1 -1
  28. package/dist/CalendarBase.d.mts +2 -2
  29. package/dist/CalendarCell.d.mts +1 -1
  30. package/dist/CalendarGrid.d.mts +1 -1
  31. package/dist/{Card-CzRHVUFo.d.mts → Card-CfECLwQ6.d.mts} +5 -5
  32. package/dist/{Card-BXNxWX5C.mjs → Card-DuQHyroh.mjs} +7 -7
  33. package/dist/Card-DuQHyroh.mjs.map +1 -0
  34. package/dist/Card.d.mts +1 -1
  35. package/dist/Card2.d.mts +1 -1
  36. package/dist/CardGrouping.d.mts +3 -3
  37. package/dist/{CardV2-Dp4eHSE-.mjs → CardV2-BRJbRSts.mjs} +14 -14
  38. package/dist/CardV2-BRJbRSts.mjs.map +1 -0
  39. package/dist/{Checkbox-BaJ-dGdX.mjs → Checkbox-Dr4LMKHV.mjs} +7 -7
  40. package/dist/Checkbox-Dr4LMKHV.mjs.map +1 -0
  41. package/dist/{Checkbox-B2MZShdu.d.mts → Checkbox-ZywrdT_h.d.mts} +2 -2
  42. package/dist/Checkbox.d.mts +1 -1
  43. package/dist/{CheckboxGroupField-6E5o6bYi.d.mts → CheckboxGroupField-UHpA38U5.d.mts} +4 -4
  44. package/dist/CheckboxGroupField.d.mts +1 -1
  45. package/dist/ChoicesValueControl.d.mts +2 -2
  46. package/dist/CodeHighlight.d.mts +1 -1
  47. package/dist/{Combobox-DTeu9_RR.d.mts → Combobox-BXkcQ2aY.d.mts} +4 -4
  48. package/dist/{Combobox-CBM-oY-e.mjs → Combobox-DQxaOCLA.mjs} +18 -18
  49. package/dist/Combobox-DQxaOCLA.mjs.map +1 -0
  50. package/dist/Combobox.d.mts +2 -2
  51. package/dist/{ComboboxBase-BMBdtP2Z.d.mts → ComboboxBase-D2rDQHYZ.d.mts} +8 -8
  52. package/dist/ComboboxBase.d.mts +1 -1
  53. package/dist/{ComboboxMultiSelect-DY5bAep9.d.mts → ComboboxMultiSelect-CrvB6ap5.d.mts} +3 -3
  54. package/dist/ComboboxMultiSelect.d.mts +1 -1
  55. package/dist/{ComboboxSingleSelect-1NglA-u2.d.mts → ComboboxSingleSelect-Dp0iTdDO.d.mts} +5 -5
  56. package/dist/ComboboxSingleSelect.d.mts +1 -1
  57. package/dist/{CompactBar-D9egXqY_.d.mts → CompactBar-zYfXjFmn.d.mts} +4 -4
  58. package/dist/CompactBar.d.mts +1 -1
  59. package/dist/{ConfigFormGroup-CidT_cE9.mjs → ConfigFormGroup-BCTWCws5.mjs} +5 -5
  60. package/dist/ConfigFormGroup-BCTWCws5.mjs.map +1 -0
  61. package/dist/ConfigFormGroup.d.mts +1 -1
  62. package/dist/{ControlBar-RIz-xjxs.d.mts → ControlBar-kJ_eWf8f.d.mts} +3 -3
  63. package/dist/ControlBar.d.mts +1 -1
  64. package/dist/{DataTable-l1bFeLXL.d.mts → DataTable-C000E74h.d.mts} +7 -7
  65. package/dist/{DataTable-DQ8axNfo.mjs → DataTable-DEJHWrsy.mjs} +25 -25
  66. package/dist/DataTable-DEJHWrsy.mjs.map +1 -0
  67. package/dist/DataTable.d.mts +1 -1
  68. package/dist/{DateField-CwSq77Ri.d.mts → DateField-g7malFm-.d.mts} +3 -3
  69. package/dist/DateField.d.mts +1 -1
  70. package/dist/{DatePicker-DRhY_0st.d.mts → DatePicker-8kUpFFh8.d.mts} +3 -3
  71. package/dist/{DatePicker-D0cvVbzq.mjs → DatePicker-D-_ibUd1.mjs} +20 -20
  72. package/dist/DatePicker-D-_ibUd1.mjs.map +1 -0
  73. package/dist/DatePicker.d.mts +1 -1
  74. package/dist/{DateRangePicker-CLuBLF1q.d.mts → DateRangePicker-Nv4uNuIW.d.mts} +4 -4
  75. package/dist/DateRangePicker.d.mts +1 -1
  76. package/dist/DateRangeValueControl.d.mts +3 -3
  77. package/dist/DateValueControl.d.mts +2 -2
  78. package/dist/{DropdownButton-5oNcpsOq.mjs → DropdownButton-BiFRlSVD.mjs} +4 -4
  79. package/dist/DropdownButton-BiFRlSVD.mjs.map +1 -0
  80. package/dist/DropdownButton.d.mts +3 -3
  81. package/dist/{DropdownMenu-UIrnFxfG.d.mts → DropdownMenu-CQbS7ML5.d.mts} +3 -3
  82. package/dist/{DropdownMenu-CedsmO5h.mjs → DropdownMenu-Q8S-9rXm.mjs} +4 -4
  83. package/dist/DropdownMenu-Q8S-9rXm.mjs.map +1 -0
  84. package/dist/DropdownMenu.d.mts +1 -1
  85. package/dist/{ErrorProps-DH0fzeGf.d.mts → ErrorProps-Cy-APmdC.d.mts} +2 -2
  86. package/dist/ErrorProps.d.mts +1 -1
  87. package/dist/{FieldRegistry-B5E-GN91.d.mts → FieldRegistry-a44G08fS.d.mts} +3 -3
  88. package/dist/FieldRegistry.d.mts +1 -1
  89. package/dist/{FilterBar-BQWpTi2b.d.mts → FilterBar-BpMguIXl.d.mts} +5 -5
  90. package/dist/FilterBar.d.mts +1 -1
  91. package/dist/FilterPickerMenu.d.mts +3 -3
  92. package/dist/FilterPill.d.mts +2 -2
  93. package/dist/FilterPopover.d.mts +2 -2
  94. package/dist/FloatValueControl.d.mts +2 -2
  95. package/dist/{FloatingActionBar-CpvLefPm.d.mts → FloatingActionBar-DPA9v_yH.d.mts} +2 -2
  96. package/dist/FloatingActionBar.d.mts +1 -1
  97. package/dist/FloatingPanel.d.mts +1 -1
  98. package/dist/FloatingPanelContext.d.mts +1 -1
  99. package/dist/FloatingPanelRenderer.d.mts +1 -1
  100. package/dist/FloatingToolbar.d.mts +27 -0
  101. package/dist/{FormControl-C4CiA0H-.mjs → FormControl-BztNXLn6.mjs} +7 -7
  102. package/dist/FormControl-BztNXLn6.mjs.map +1 -0
  103. package/dist/{FormControl-DEG_0oXt.d.mts → FormControl-TkYMZeBd.d.mts} +3 -3
  104. package/dist/FormControl.d.mts +1 -1
  105. package/dist/FormControlLabel.d.mts +2 -2
  106. package/dist/{FormField-mLbXDJ9B.d.mts → FormField-PBo1ctY8.d.mts} +3 -3
  107. package/dist/{FormField-C0cd1zVd.mjs → FormField-g1zQFM9T.mjs} +22 -22
  108. package/dist/FormField-g1zQFM9T.mjs.map +1 -0
  109. package/dist/FormField.d.mts +1 -1
  110. package/dist/{Grid-DXVkhyNQ.mjs → Grid-BtTuj5mR.mjs} +5 -5
  111. package/dist/Grid-BtTuj5mR.mjs.map +1 -0
  112. package/dist/Grid.d.mts +1 -1
  113. package/dist/GridItem.d.mts +1 -1
  114. package/dist/{Header-ayDu4VWE.d.mts → Header-fwlbzxYx.d.mts} +2 -2
  115. package/dist/Header.d.mts +1 -1
  116. package/dist/{HelperTooltip-BB9Vznnx.d.mts → HelperTooltip-BLfPfJRN.d.mts} +3 -3
  117. package/dist/HelperTooltip.d.mts +1 -1
  118. package/dist/HighlightedText.d.mts +3 -3
  119. package/dist/{HoverCopyableField-D-BubaRd.mjs → HoverCopyableField-CW7Jxmni.mjs} +8 -8
  120. package/dist/HoverCopyableField-CW7Jxmni.mjs.map +1 -0
  121. package/dist/HoverCopyableField.d.mts +1 -1
  122. package/dist/{I18nContext-TXS9M8t5.d.mts → I18nContext-EPmbUprm.d.mts} +3 -3
  123. package/dist/I18nContext.d.mts +1 -1
  124. package/dist/{IconButton-HWx5Hlmi.mjs → IconButton-DftINsp7.mjs} +8 -8
  125. package/dist/IconButton-DftINsp7.mjs.map +1 -0
  126. package/dist/{IconButton-Bigvu1Q4.d.mts → IconButton-KhCwTwPx.d.mts} +3 -3
  127. package/dist/IconButton.d.mts +1 -1
  128. package/dist/ImageThumbnail.d.mts +1 -1
  129. package/dist/ImageTile.d.mts +2 -2
  130. package/dist/IndexTableLayout.d.mts +6 -6
  131. package/dist/InlineCombobox.d.mts +2 -2
  132. package/dist/InlineInput.d.mts +2 -2
  133. package/dist/{Input-Dap055xf.mjs → Input-DtO3qMnE.mjs} +7 -7
  134. package/dist/Input-DtO3qMnE.mjs.map +1 -0
  135. package/dist/{Input-Bg4bi6VZ.d.mts → Input-QNjbGo38.d.mts} +4 -4
  136. package/dist/Input.d.mts +1 -1
  137. package/dist/{InputProps-Bl-G826g.d.mts → InputProps-BT7-RfnD.d.mts} +3 -3
  138. package/dist/InputProps.d.mts +1 -1
  139. package/dist/{Inserter-BKVrJ4M5.d.mts → Inserter-BnQVEqHV.d.mts} +2 -2
  140. package/dist/Inserter.d.mts +1 -1
  141. package/dist/IntegerValueControl.d.mts +2 -2
  142. package/dist/LayoutLoadingShimmer.d.mts +1 -1
  143. package/dist/LayoutLoadingSpinner.d.mts +1 -1
  144. package/dist/{Link-Cf__H8gD.mjs → Link-DKYmdL9t.mjs} +4 -4
  145. package/dist/Link-DKYmdL9t.mjs.map +1 -0
  146. package/dist/Link.d.mts +2 -2
  147. package/dist/{ListBox-eoyBHtnJ.mjs → ListBox-CDG0EAPg.mjs} +14 -14
  148. package/dist/ListBox-CDG0EAPg.mjs.map +1 -0
  149. package/dist/{ListBox-cH0dfeLN.d.mts → ListBox-D9SYTzOd.d.mts} +4 -4
  150. package/dist/ListBox.d.mts +1 -1
  151. package/dist/{ListBoxField-DOpaE0q4.d.mts → ListBoxField-CtPDd_Aw.d.mts} +5 -5
  152. package/dist/ListBoxField.d.mts +1 -1
  153. package/dist/{LoadingShimmer-Bqjdut7i.mjs → LoadingShimmer-oPIv2ESr.mjs} +3 -3
  154. package/dist/LoadingShimmer-oPIv2ESr.mjs.map +1 -0
  155. package/dist/LoadingShimmer.d.mts +2 -2
  156. package/dist/{LogicRow-CaxsteGU.d.mts → LogicRow-BWIZ7262.d.mts} +4 -4
  157. package/dist/LogicRow.d.mts +1 -1
  158. package/dist/MaskedInput.d.mts +2 -2
  159. package/dist/MatchHighlight.d.mts +1 -1
  160. package/dist/{Menu-5VknNr1T.d.mts → Menu-DizjcMbO.d.mts} +5 -5
  161. package/dist/{Menu-Dw6Rcpk6.mjs → Menu-EIT_MwK6.mjs} +7 -9
  162. package/dist/Menu-EIT_MwK6.mjs.map +1 -0
  163. package/dist/Menu.d.mts +1 -1
  164. package/dist/{MiddleTruncatedText-DoTyfMem.mjs → MiddleTruncatedText-DicQsLDG.mjs} +5 -5
  165. package/dist/MiddleTruncatedText-DicQsLDG.mjs.map +1 -0
  166. package/dist/{Modal-kjUptzg1.mjs → Modal-92O_uW8H.mjs} +10 -10
  167. package/dist/Modal-92O_uW8H.mjs.map +1 -0
  168. package/dist/{Modal-BuxggahW.d.mts → Modal-Bhwq1bQJ.d.mts} +3 -3
  169. package/dist/Modal.d.mts +1 -1
  170. package/dist/{PageHeader-DJF7nxgN.mjs → PageHeader-BzvA_NNt.mjs} +13 -6
  171. package/dist/PageHeader-BzvA_NNt.mjs.map +1 -0
  172. package/dist/{PageHeader-Czj42pyK.d.mts → PageHeader-D2QLrS7-.d.mts} +3 -3
  173. package/dist/PageHeader.d.mts +1 -1
  174. package/dist/{PageLayout-fXJW7daI.mjs → PageLayout-DCe3F76N.mjs} +9 -9
  175. package/dist/PageLayout-DCe3F76N.mjs.map +1 -0
  176. package/dist/{PageLayout-TBemv7oL.d.mts → PageLayout-DfAbeFIh.d.mts} +2 -2
  177. package/dist/PageLayout.d.mts +1 -1
  178. package/dist/{PageLayoutFrame-DzwlkNZ1.d.mts → PageLayoutFrame-CQLREOBH.d.mts} +2 -2
  179. package/dist/PageLayoutFrame.d.mts +1 -1
  180. package/dist/{PageSelector-DXCeBUoU.d.mts → PageSelector-QaKYtk6y.d.mts} +4 -4
  181. package/dist/PageSelector.d.mts +1 -1
  182. package/dist/PageSizeSelector.d.mts +1 -1
  183. package/dist/{Pagination-COcFWlha.d.mts → Pagination-DeXorbSK.d.mts} +3 -3
  184. package/dist/{Pagination-DtK-jbEY.mjs → Pagination-dTsHLVAk.mjs} +13 -13
  185. package/dist/Pagination-dTsHLVAk.mjs.map +1 -0
  186. package/dist/Pagination.d.mts +1 -1
  187. package/dist/{Pii-DueIK287.mjs → Pii-Bvh_kfGN.mjs} +4 -4
  188. package/dist/Pii-Bvh_kfGN.mjs.map +1 -0
  189. package/dist/Pii.d.mts +1 -1
  190. package/dist/{PillShell-DqglbFHe.d.mts → PillShell-B35z66jZ.d.mts} +3 -3
  191. package/dist/PillShell.d.mts +1 -1
  192. package/dist/{Popover-BcII7usF.mjs → Popover-DordjYNM.mjs} +5 -5
  193. package/dist/Popover-DordjYNM.mjs.map +1 -0
  194. package/dist/Popover.d.mts +2 -2
  195. package/dist/ProgressBar.d.mts +2 -2
  196. package/dist/{ProgressIndicator-C5sbFQcd.d.mts → ProgressIndicator-COCwRZfK.d.mts} +2 -2
  197. package/dist/{ProgressIndicator-CM37EU1B.mjs → ProgressIndicator-ISARECzW.mjs} +3 -3
  198. package/dist/ProgressIndicator-ISARECzW.mjs.map +1 -0
  199. package/dist/ProgressIndicator.d.mts +1 -1
  200. package/dist/{PseudoClassProps-BFFh2-u8.d.mts → PseudoClassProps-D_f-JUT1.d.mts} +2 -2
  201. package/dist/PseudoClassProps.d.mts +1 -1
  202. package/dist/{Radio-BstZg3DI.mjs → Radio-BlEtetrr.mjs} +5 -5
  203. package/dist/Radio-BlEtetrr.mjs.map +1 -0
  204. package/dist/Radio.d.mts +1 -1
  205. package/dist/{RadioGroup-erKerwSt.mjs → RadioGroup-CMrXmmn4.mjs} +5 -5
  206. package/dist/RadioGroup-CMrXmmn4.mjs.map +1 -0
  207. package/dist/{RadioGroup-BxEmipHa.d.mts → RadioGroup-pyGpWhhj.d.mts} +2 -2
  208. package/dist/RadioGroup.d.mts +1 -1
  209. package/dist/{RangeCalendar-CK5ArbIQ.d.mts → RangeCalendar-BiugsdSP.d.mts} +3 -3
  210. package/dist/RangeCalendar.d.mts +1 -1
  211. package/dist/RangeCalendarPresets.d.mts +2 -2
  212. package/dist/ResizableVerticalPanel.d.mts +1 -1
  213. package/dist/ResizeHandle.d.mts +1 -1
  214. package/dist/RichTextEditor.d.mts +36 -0
  215. package/dist/RightPanel.d.mts +1 -1
  216. package/dist/RightPanelLoadingContent.d.mts +1 -1
  217. package/dist/RightPanelResizeHandle.d.mts +1 -1
  218. package/dist/{RouterContext-CoDbEb_X.d.mts → RouterContext-BUdfr1it.d.mts} +3 -3
  219. package/dist/{RouterContext-nPSb55p9.mjs → RouterContext-DAQHKOv6.mjs} +2 -2
  220. package/dist/RouterContext-DAQHKOv6.mjs.map +1 -0
  221. package/dist/RouterContext.d.mts +1 -1
  222. package/dist/{RouterLink-BnIEi8d4.d.mts → RouterLink-BKbfvJcM.d.mts} +3 -3
  223. package/dist/RouterLink.d.mts +1 -1
  224. package/dist/RuleEditorFields.d.mts +3 -3
  225. package/dist/RulesPill.d.mts +2 -2
  226. package/dist/{SearchInput-DLC7-A7K.d.mts → SearchInput-BejaiGsS.d.mts} +3 -3
  227. package/dist/SearchInput.d.mts +1 -1
  228. package/dist/Section.d.mts +1 -1
  229. package/dist/SectionHeading.d.mts +2 -2
  230. package/dist/{SegmentedControl-DQjIO6iX.mjs → SegmentedControl-D_DA-MU1.mjs} +5 -5
  231. package/dist/SegmentedControl-D_DA-MU1.mjs.map +1 -0
  232. package/dist/{SegmentedControl-xjU-2IsJ.d.mts → SegmentedControl-UV03Ujqn.d.mts} +2 -2
  233. package/dist/SegmentedControl.d.mts +1 -1
  234. package/dist/{Select-CG_Xkx0m.d.mts → Select-Chk5WB1F.d.mts} +4 -4
  235. package/dist/{Select-BJ9ACmRD.mjs → Select-DkUMz4LG.mjs} +10 -10
  236. package/dist/Select-DkUMz4LG.mjs.map +1 -0
  237. package/dist/Select.d.mts +1 -1
  238. package/dist/SelectionCard.d.mts +1 -1
  239. package/dist/SelectionCardGroup.d.mts +1 -1
  240. package/dist/{SingleColumnLayout-CBynMc76.d.mts → SingleColumnLayout-DBo35psH.d.mts} +3 -3
  241. package/dist/SingleColumnLayout.d.mts +1 -1
  242. package/dist/Slider.d.mts +1 -1
  243. package/dist/SliderRHF.d.mts +1 -1
  244. package/dist/SliderThumb.d.mts +1 -1
  245. package/dist/SmartTextInput.d.mts +7 -7
  246. package/dist/SmartTextInputCodeDialog.d.mts +1 -1
  247. package/dist/SmartTextInputField.d.mts +3 -3
  248. package/dist/SmartTextInputFunctionDialog.d.mts +5 -5
  249. package/dist/SmartTextInputListbox.d.mts +3 -3
  250. package/dist/SmartTextInputPopover.d.mts +2 -2
  251. package/dist/{Spacer-J_HuhxX2.mjs → Spacer-C4d9Aho6.mjs} +3 -3
  252. package/dist/Spacer-C4d9Aho6.mjs.map +1 -0
  253. package/dist/Spacer.d.mts +1 -1
  254. package/dist/{Spinner-7Camx1vs.mjs → Spinner-CXb-KUs1.mjs} +3 -3
  255. package/dist/Spinner-CXb-KUs1.mjs.map +1 -0
  256. package/dist/Spinner.d.mts +1 -1
  257. package/dist/{SplitColumnLayout-BVzGbEDC.d.mts → SplitColumnLayout-C6m_mwdf.d.mts} +3 -3
  258. package/dist/SplitColumnLayout.d.mts +1 -1
  259. package/dist/{Stack-BkC7FCdF.mjs → Stack-Bzom2BTR.mjs} +3 -3
  260. package/dist/Stack-Bzom2BTR.mjs.map +1 -0
  261. package/dist/{Stack-BZyboHQl.d.mts → Stack-DrYxBkiF.d.mts} +3 -3
  262. package/dist/Stack.d.mts +1 -1
  263. package/dist/{StatusIndicator-Bunn9YLV.mjs → StatusIndicator-pWl1-FLb.mjs} +3 -3
  264. package/dist/StatusIndicator-pWl1-FLb.mjs.map +1 -0
  265. package/dist/StatusIndicator.d.mts +1 -1
  266. package/dist/{Sticker-yhxtIYH8.mjs → Sticker-Bi_fezCO.mjs} +6 -6
  267. package/dist/Sticker-Bi_fezCO.mjs.map +1 -0
  268. package/dist/{Sticker-CsUSNIH-.d.mts → Sticker-sIBnBbHD.d.mts} +5 -5
  269. package/dist/Sticker.d.mts +1 -1
  270. package/dist/StringValueControl.d.mts +2 -2
  271. package/dist/StyledIconDrag.d.mts +1 -1
  272. package/dist/SwatchPicker.d.mts +1 -1
  273. package/dist/Tab.d.mts +2 -2
  274. package/dist/{TabBar-SX8E9-Bk.mjs → TabBar-DpXYsWgS.mjs} +9 -9
  275. package/dist/TabBar-DpXYsWgS.mjs.map +1 -0
  276. package/dist/TabBar.d.mts +1 -1
  277. package/dist/TabBarContext.d.mts +1 -1
  278. package/dist/TabBarIconButton.d.mts +1 -1
  279. package/dist/{Table-CadXF71E.d.mts → Table-BJfcRpMX.d.mts} +2 -2
  280. package/dist/{Table-BIDaC0uS.mjs → Table-DPi4Dt5H.mjs} +14 -14
  281. package/dist/Table-DPi4Dt5H.mjs.map +1 -0
  282. package/dist/Table.d.mts +1 -1
  283. package/dist/{TableBody-BKSHNSTo.d.mts → TableBody-CBz2PjA-.d.mts} +2 -2
  284. package/dist/TableBody.d.mts +1 -1
  285. package/dist/{TableBox-Bn_XZEYd.mjs → TableBox-BfSF36Gy.mjs} +23 -23
  286. package/dist/TableBox-BfSF36Gy.mjs.map +1 -0
  287. package/dist/TableBox.d.mts +2 -2
  288. package/dist/{TableBoxCell-v_ag22E0.d.mts → TableBoxCell-CwroLAWy.d.mts} +8 -8
  289. package/dist/TableBoxCell.d.mts +1 -1
  290. package/dist/{TableBoxField-BTpSGmgW.d.mts → TableBoxField-B7bHv7uV.d.mts} +6 -6
  291. package/dist/TableBoxField.d.mts +1 -1
  292. package/dist/{TableBoxRow-BBTztgTT.d.mts → TableBoxRow-Dke8B99J.d.mts} +4 -4
  293. package/dist/TableBoxRow.d.mts +1 -1
  294. package/dist/{TableBoxRowActions-B9QSVySz.d.mts → TableBoxRowActions-CkUDVERC.d.mts} +3 -3
  295. package/dist/TableBoxRowActions.d.mts +1 -1
  296. package/dist/TableBoxRowContext.d.mts +1 -1
  297. package/dist/{TableCell-4u5_BgTC.d.mts → TableCell-KHx5JlqZ.d.mts} +3 -3
  298. package/dist/TableCell.d.mts +1 -1
  299. package/dist/{TableControls-qxoq5abn.mjs → TableControls-BDXOQMr7.mjs} +69 -69
  300. package/dist/TableControls-BDXOQMr7.mjs.map +1 -0
  301. package/dist/{TableControls-wM35j3g4.d.mts → TableControls-DAjx1TYG.d.mts} +6 -6
  302. package/dist/TableControls.d.mts +1 -1
  303. package/dist/{TableControlsContext-rTYwRi5S.d.mts → TableControlsContext-BEIvE9qN.d.mts} +3 -3
  304. package/dist/TableControlsContext.d.mts +1 -1
  305. package/dist/{TableHead-BuCQeDAq.d.mts → TableHead-D5A3bOwt.d.mts} +2 -2
  306. package/dist/TableHead.d.mts +1 -1
  307. package/dist/{TableHeaderCell-DIcQlZps.d.mts → TableHeaderCell-BXgnxPpX.d.mts} +2 -2
  308. package/dist/TableHeaderCell.d.mts +1 -1
  309. package/dist/{TableLayout-ScEVdvvA.d.mts → TableLayout-Dy5ht8KO.d.mts} +2 -2
  310. package/dist/TableLayout.d.mts +1 -1
  311. package/dist/{TableRow-lCsvG0a-.d.mts → TableRow-C1iGbNjZ.d.mts} +3 -3
  312. package/dist/TableRow.d.mts +1 -1
  313. package/dist/TableTH.d.mts +1 -1
  314. package/dist/{TableViewConfigurationDropdown-Gut16-vY.d.mts → TableViewConfigurationDropdown-vYnU0d4k.d.mts} +3 -3
  315. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  316. package/dist/{TechnicalSticker-CALVwnrT.mjs → TechnicalSticker-B_JlBkXZ.mjs} +7 -7
  317. package/dist/TechnicalSticker-B_JlBkXZ.mjs.map +1 -0
  318. package/dist/TechnicalSticker.d.mts +1 -1
  319. package/dist/{Text-CSwFifQF.mjs → Text-D0vEReED.mjs} +3 -3
  320. package/dist/Text-D0vEReED.mjs.map +1 -0
  321. package/dist/{Text-RSzei6Se.d.mts → Text-SaoRBdB6.d.mts} +4 -4
  322. package/dist/Text.d.mts +1 -1
  323. package/dist/{TextArea-CaIEBz8d.mjs → TextArea-Dro-HH8O.mjs} +4 -4
  324. package/dist/TextArea-Dro-HH8O.mjs.map +1 -0
  325. package/dist/{TextArea-DFn4XuG-.d.mts → TextArea-gtSlghjy.d.mts} +3 -3
  326. package/dist/TextArea.d.mts +1 -1
  327. package/dist/{TextUnderlineTooltip-B0iYaPM1.d.mts → TextUnderlineTooltip-DV61avLv.d.mts} +3 -3
  328. package/dist/TextUnderlineTooltip.d.mts +1 -1
  329. package/dist/Tile.d.mts +2 -2
  330. package/dist/Toast.d.mts +2 -2
  331. package/dist/{Toggle-xtPgGaGD.d.mts → Toggle-BlvrM-Cw.d.mts} +2 -2
  332. package/dist/{Toggle-BsqSNYok.mjs → Toggle-D9MzTIZs.mjs} +7 -7
  333. package/dist/Toggle-D9MzTIZs.mjs.map +1 -0
  334. package/dist/Toggle.d.mts +1 -1
  335. package/dist/{Tooltip-Blfhi2gT.d.mts → Tooltip-CysnLwST.d.mts} +3 -3
  336. package/dist/{Tooltip-B-0VRuKT.mjs → Tooltip-YViXzMdm.mjs} +7 -7
  337. package/dist/Tooltip-YViXzMdm.mjs.map +1 -0
  338. package/dist/Tooltip.d.mts +1 -1
  339. package/dist/{TruncatedText-BMQmveJG.d.mts → TruncatedText-YcjNG-zP.d.mts} +2 -2
  340. package/dist/VersionHistory.d.mts +2 -2
  341. package/dist/{VersionHistoryItem-BExp7oSr.d.mts → VersionHistoryItem-Px3ylMMq.d.mts} +2 -2
  342. package/dist/VersionHistoryItem.d.mts +1 -1
  343. package/dist/WizardModal.d.mts +3 -3
  344. package/dist/{accordionTitleTypography-PMKnfoy0.d.mts → accordionTitleTypography-Dlo2YyWd.d.mts} +3 -3
  345. package/dist/accordionTitleTypography.d.mts +1 -1
  346. package/dist/assertNever.d.mts +1 -1
  347. package/dist/chainTypes-aF5rWav-.d.mts +17 -0
  348. package/dist/{clientFilterUtils-D0Bwapen.d.mts → clientFilterUtils-DYKgw2Yq.d.mts} +3 -3
  349. package/dist/clientFilterUtils.d.mts +1 -1
  350. package/dist/{codec-KAvQRjTW.d.mts → codec-D8ZKFLgs.d.mts} +3 -3
  351. package/dist/codec.d.mts +1 -1
  352. package/dist/{color-C5B1pN1D.d.mts → color-Cy_0z4IY.d.mts} +3 -3
  353. package/dist/common.d.mts +1 -1
  354. package/dist/complete-typography.d.mts +7 -0
  355. package/dist/components/Accordion/index.d.mts +1 -1
  356. package/dist/components/Accordion/index.mjs +8 -8
  357. package/dist/components/Accordion/index.mjs.map +1 -1
  358. package/dist/components/Attribute/index.mjs +8 -8
  359. package/dist/components/Attribute/index.mjs.map +1 -1
  360. package/dist/components/Badge/index.mjs +1 -1
  361. package/dist/components/Banner/index.mjs +3 -3
  362. package/dist/components/Banner/index.mjs.map +1 -1
  363. package/dist/components/BottomPanel/index.mjs +8 -8
  364. package/dist/components/BottomPanel/index.mjs.map +1 -1
  365. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  366. package/dist/components/Breadcrumbs/index.mjs +1 -1
  367. package/dist/components/Button/index.d.mts +2 -2
  368. package/dist/components/Button/index.mjs +1 -1
  369. package/dist/components/ButtonGroup/index.mjs +5 -5
  370. package/dist/components/ButtonGroup/index.mjs.map +1 -1
  371. package/dist/components/Card/index.d.mts +2 -2
  372. package/dist/components/Card/index.mjs +1 -1
  373. package/dist/components/CardV2/index.d.mts +1 -1
  374. package/dist/components/CardV2/index.mjs +1 -1
  375. package/dist/components/Checkbox/index.d.mts +1 -1
  376. package/dist/components/Checkbox/index.mjs +1 -1
  377. package/dist/components/CodeHighlight/PrismWithLanguages.mjs +1 -1
  378. package/dist/components/CodeHighlight/PrismWithLanguages.mjs.map +1 -1
  379. package/dist/components/CodeHighlight/index.mjs +6 -6
  380. package/dist/components/CodeHighlight/index.mjs.map +1 -1
  381. package/dist/components/Combobox/index.d.mts +2 -2
  382. package/dist/components/Combobox/index.mjs +1 -1
  383. package/dist/components/ConfigFormGroup/index.mjs +2 -2
  384. package/dist/components/DataTable/TableControls/index.d.mts +21 -21
  385. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  386. package/dist/components/DataTable/index.d.mts +8 -8
  387. package/dist/components/DataTable/index.mjs +1 -1
  388. package/dist/components/DataTable/types.d.mts +1 -1
  389. package/dist/components/DatePicker/index.d.mts +5 -5
  390. package/dist/components/DatePicker/index.mjs +1 -1
  391. package/dist/components/DropdownButton/index.mjs +1 -1
  392. package/dist/components/DropdownMenu/index.d.mts +1 -1
  393. package/dist/components/DropdownMenu/index.mjs +1 -1
  394. package/dist/components/FloatingPanel/index.mjs +9 -9
  395. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  396. package/dist/components/FormControl/index.d.mts +2 -2
  397. package/dist/components/FormControl/index.mjs +2 -2
  398. package/dist/components/FormField/index.d.mts +5 -5
  399. package/dist/components/FormField/index.mjs +1 -1
  400. package/dist/components/Grid/index.mjs +1 -1
  401. package/dist/components/HoverCopyableField/index.mjs +1 -1
  402. package/dist/components/ImageTile/index.mjs +11 -11
  403. package/dist/components/ImageTile/index.mjs.map +1 -1
  404. package/dist/components/Input/index.d.mts +1 -1
  405. package/dist/components/Input/index.mjs +2 -2
  406. package/dist/components/Input/index.mjs.map +1 -1
  407. package/dist/components/Link/index.mjs +1 -1
  408. package/dist/components/ListBox/index.d.mts +3 -3
  409. package/dist/components/ListBox/index.mjs +1 -1
  410. package/dist/components/LoadingShimmer/index.mjs +1 -1
  411. package/dist/components/MaskedInput/index.mjs +3 -3
  412. package/dist/components/MaskedInput/index.mjs.map +1 -1
  413. package/dist/components/MatchHighlight/index.mjs +2 -2
  414. package/dist/components/MatchHighlight/index.mjs.map +1 -1
  415. package/dist/components/Menu/index.d.mts +1 -1
  416. package/dist/components/Menu/index.mjs +1 -1
  417. package/dist/components/Modal/index.d.mts +1 -1
  418. package/dist/components/Modal/index.mjs +1 -1
  419. package/dist/components/PageHeader/index.d.mts +1 -1
  420. package/dist/components/PageHeader/index.mjs +1 -1
  421. package/dist/components/Pagination/index.d.mts +3 -3
  422. package/dist/components/Pagination/index.mjs +1 -1
  423. package/dist/components/Pii/index.mjs +1 -1
  424. package/dist/components/Popover/index.mjs +1 -1
  425. package/dist/components/ProgressBar/index.mjs +4 -4
  426. package/dist/components/ProgressBar/index.mjs.map +1 -1
  427. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  428. package/dist/components/ProgressIndicator/index.mjs +1 -1
  429. package/dist/components/Radio/index.mjs +1 -1
  430. package/dist/components/RadioGroup/index.d.mts +1 -1
  431. package/dist/components/RadioGroup/index.mjs +1 -1
  432. package/dist/components/RichTextEditor/index.d.mts +5 -0
  433. package/dist/components/RichTextEditor/index.mjs +1050 -0
  434. package/dist/components/RichTextEditor/index.mjs.map +1 -0
  435. package/dist/components/RightPanel/index.mjs +9 -9
  436. package/dist/components/RightPanel/index.mjs.map +1 -1
  437. package/dist/components/SegmentedControl/index.d.mts +1 -1
  438. package/dist/components/SegmentedControl/index.mjs +1 -1
  439. package/dist/components/Select/index.d.mts +1 -1
  440. package/dist/components/Select/index.mjs +1 -1
  441. package/dist/components/SelectionCard/index.mjs +9 -9
  442. package/dist/components/SelectionCard/index.mjs.map +1 -1
  443. package/dist/components/Slider/index.mjs +6 -6
  444. package/dist/components/Slider/index.mjs.map +1 -1
  445. package/dist/components/SmartTextInput/PillType.d.mts +1 -1
  446. package/dist/components/SmartTextInput/PillType.mjs +2 -2
  447. package/dist/components/SmartTextInput/PillType.mjs.map +1 -1
  448. package/dist/components/SmartTextInput/index.d.mts +2 -2
  449. package/dist/components/SmartTextInput/index.mjs +25 -25
  450. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  451. package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
  452. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  453. package/dist/components/SmartTextInput/parser/method-chain/types.mjs +1 -1
  454. package/dist/components/SmartTextInput/parser/method-chain/types.mjs.map +1 -1
  455. package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +2 -2
  456. package/dist/components/SmartTextInput/parser/smart-text/parser.mjs.map +1 -1
  457. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  458. package/dist/components/SmartTextInput/parser/smart-text/types.mjs +1 -1
  459. package/dist/components/SmartTextInput/parser/smart-text/types.mjs.map +1 -1
  460. package/dist/components/Spacer/index.mjs +1 -1
  461. package/dist/components/Spinner/index.mjs +1 -1
  462. package/dist/components/Stack/index.d.mts +1 -1
  463. package/dist/components/Stack/index.mjs +1 -1
  464. package/dist/components/StatusIndicator/index.mjs +1 -1
  465. package/dist/components/Sticker/index.d.mts +1 -1
  466. package/dist/components/Sticker/index.mjs +1 -1
  467. package/dist/components/SwatchPicker/index.mjs +2 -2
  468. package/dist/components/SwatchPicker/index.mjs.map +1 -1
  469. package/dist/components/TabBar/index.mjs +1 -1
  470. package/dist/components/Table/index.d.mts +8 -8
  471. package/dist/components/Table/index.mjs +1 -1
  472. package/dist/components/TableBox/index.d.mts +2 -2
  473. package/dist/components/TableBox/index.mjs +1 -1
  474. package/dist/components/TechnicalSticker/index.mjs +1 -1
  475. package/dist/components/Text/index.d.mts +1 -1
  476. package/dist/components/Text/index.mjs +1 -1
  477. package/dist/components/TextArea/index.d.mts +1 -1
  478. package/dist/components/TextArea/index.mjs +1 -1
  479. package/dist/components/Tile/index.mjs +6 -6
  480. package/dist/components/Tile/index.mjs.map +1 -1
  481. package/dist/components/Toast/index.mjs +3 -3
  482. package/dist/components/Toast/index.mjs.map +1 -1
  483. package/dist/components/Toggle/index.d.mts +1 -1
  484. package/dist/components/Toggle/index.mjs +1 -1
  485. package/dist/components/Tooltip/index.d.mts +3 -3
  486. package/dist/components/Tooltip/index.mjs +1 -1
  487. package/dist/components/VersionHistory/index.d.mts +1 -1
  488. package/dist/components/VersionHistory/index.mjs +12 -12
  489. package/dist/components/VersionHistory/index.mjs.map +1 -1
  490. package/dist/compound-expression.d.mts +2 -2
  491. package/dist/{constants-4rSh8e5G.d.mts → constants-CW1DRgwi.d.mts} +2 -2
  492. package/dist/{constants-BaMvTUbS.d.mts → constants-D1hoZ5LO.d.mts} +2 -2
  493. package/dist/constants.d.mts +1 -1
  494. package/dist/constants2.d.mts +1 -1
  495. package/dist/containers.d.mts +1 -1
  496. package/dist/createPath-C4ZFkt93.d.mts +7 -0
  497. package/dist/createPath.d.mts +1 -1
  498. package/dist/{date-filter-D0ys8s0D.mjs → date-filter-Bj4XkwkT.mjs} +3 -3
  499. package/dist/date-filter-Bj4XkwkT.mjs.map +1 -0
  500. package/dist/{date-range-rule-value-Dk6pZHnD.d.mts → date-range-rule-value-CrVBpQcf.d.mts} +3 -3
  501. package/dist/date-range-rule-value.d.mts +1 -1
  502. package/dist/{date-rule-intent-C5C8HB1v.d.mts → date-rule-intent-C1aptAoX.d.mts} +4 -4
  503. package/dist/date-rule-intent.d.mts +1 -1
  504. package/dist/display.d.mts +3 -3
  505. package/dist/fieldPickerOptions.d.mts +3 -3
  506. package/dist/{filter-size-context-5xQ3ycnC.d.mts → filter-size-context-CbT4pi3S.d.mts} +3 -3
  507. package/dist/filter-size-context.d.mts +1 -1
  508. package/dist/{filters-C8YLLbH3.d.mts → filters-DjXkx8GJ.d.mts} +3 -3
  509. package/dist/filters.d.mts +1 -1
  510. package/dist/format-date-value.d.mts +1 -1
  511. package/dist/{formatDateTime-Dd9inM5H.d.mts → formatDateTime-BikGGrvq.d.mts} +2 -2
  512. package/dist/formatDateTime.d.mts +1 -1
  513. package/dist/{helpers-DvqDI2e5.d.mts → helpers-CdxEL7ri.d.mts} +5 -5
  514. package/dist/helpers.d.mts +1 -1
  515. package/dist/{i18n-BscB9FUy.mjs → i18n-BLyCaSdJ.mjs} +4 -4
  516. package/dist/i18n-BLyCaSdJ.mjs.map +1 -0
  517. package/dist/index-BWAycP6L.d.mts +4025 -0
  518. package/dist/{index-EGvEhP1j.d.mts → index-D2YFHdsf.d.mts} +3 -3
  519. package/dist/{index-CNDe1Lij.d.mts → index-DX5Zu9JU.d.mts} +4 -4
  520. package/dist/index-FgIOTuJ4.d.mts +7 -0
  521. package/dist/index.d.mts +1 -2
  522. package/dist/index2.d.mts +2 -2
  523. package/dist/index3.d.mts +2 -4
  524. package/dist/index4.d.mts +4 -2
  525. package/dist/index5.d.mts +2 -15
  526. package/dist/index6.d.mts +15 -1
  527. package/dist/{input-CKhARTlS.d.mts → input-gtTnb9M8.d.mts} +4 -4
  528. package/dist/{inputFields-BZcm1UV5.d.mts → inputFields-CYttsz5M.d.mts} +12 -12
  529. package/dist/inputFields.d.mts +1 -1
  530. package/dist/{intersperse-ObkRVOag.mjs → intersperse-DvJsBw5D.mjs} +2 -2
  531. package/dist/intersperse-DvJsBw5D.mjs.map +1 -0
  532. package/dist/intersperse.d.mts +1 -1
  533. package/dist/{jsonSchema-DmOA0Lnu.d.mts → jsonSchema-DUkfAip_.d.mts} +3 -3
  534. package/dist/lib/ConfigContext.d.mts +1 -1
  535. package/dist/lib/ConfigContext.mjs +1 -1
  536. package/dist/lib/ConfigContext.mjs.map +1 -1
  537. package/dist/lib/GlobalStyles.d.mts +1 -1
  538. package/dist/lib/GlobalStyles.mjs +2 -2
  539. package/dist/lib/GlobalStyles.mjs.map +1 -1
  540. package/dist/lib/HeadlessAriaButton.d.mts +1 -1
  541. package/dist/lib/HeadlessAriaButton.mjs +2 -2
  542. package/dist/lib/HeadlessAriaButton.mjs.map +1 -1
  543. package/dist/lib/MiddleTruncatedText.d.mts +1 -1
  544. package/dist/lib/MiddleTruncatedText.mjs +1 -1
  545. package/dist/lib/PDSProvider.d.mts +4 -4
  546. package/dist/lib/PDSProvider.mjs +4 -4
  547. package/dist/lib/PDSProvider.mjs.map +1 -1
  548. package/dist/lib/TruncatedText.d.mts +1 -1
  549. package/dist/lib/TruncatedText.mjs +2 -2
  550. package/dist/lib/TruncatedText.mjs.map +1 -1
  551. package/dist/lib/TruncatedTextWithTooltip.d.mts +2 -2
  552. package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
  553. package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
  554. package/dist/lib/chainTypes.d.mts +1 -1
  555. package/dist/lib/color.d.mts +1 -1
  556. package/dist/lib/color.mjs +1 -1
  557. package/dist/lib/color.mjs.map +1 -1
  558. package/dist/lib/colorMode.d.mts +3 -3
  559. package/dist/lib/colorMode.mjs +2 -2
  560. package/dist/lib/colorMode.mjs.map +1 -1
  561. package/dist/lib/comboboxHelper.d.mts +1 -1
  562. package/dist/lib/comboboxHelper.mjs +1 -1
  563. package/dist/lib/comboboxHelper.mjs.map +1 -1
  564. package/dist/lib/copyTextToClipboard.d.mts +1 -1
  565. package/dist/lib/copyTextToClipboard.mjs +1 -1
  566. package/dist/lib/copyTextToClipboard.mjs.map +1 -1
  567. package/dist/lib/customFunctionSchema.d.mts +2 -2
  568. package/dist/lib/customFunctionSchema.mjs +1 -1
  569. package/dist/lib/customFunctionSchema.mjs.map +1 -1
  570. package/dist/lib/date-filter/index.d.mts +2 -2
  571. package/dist/lib/date-filter/index.mjs +1 -1
  572. package/dist/lib/datePickerHelper.d.mts +1 -1
  573. package/dist/lib/datePickerHelper.mjs +1 -1
  574. package/dist/lib/datePickerHelper.mjs.map +1 -1
  575. package/dist/lib/embeddedSurfaceProtocol.d.mts +1 -1
  576. package/dist/lib/embeddedSurfaceProtocol.mjs +1 -1
  577. package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
  578. package/dist/lib/embeddedSurfaceRegistry.d.mts +1 -1
  579. package/dist/lib/embeddedSurfaceRegistry.mjs +1 -1
  580. package/dist/lib/embeddedSurfaceRegistry.mjs.map +1 -1
  581. package/dist/lib/errorReporter.d.mts +1 -1
  582. package/dist/lib/errorReporter.mjs +1 -1
  583. package/dist/lib/errorReporter.mjs.map +1 -1
  584. package/dist/lib/i18n/index.d.mts +3 -3
  585. package/dist/lib/i18n/index.mjs +1 -1
  586. package/dist/lib/jsonSchema.d.mts +1 -1
  587. package/dist/lib/jsonSchema.mjs +1 -1
  588. package/dist/lib/jsonSchema.mjs.map +1 -1
  589. package/dist/lib/jsonSchemaType.d.mts +2 -2
  590. package/dist/lib/jsonSchemaType.mjs +1 -1
  591. package/dist/lib/jsonSchemaType.mjs.map +1 -1
  592. package/dist/lib/letPointerDownReachDocument.d.mts +1 -1
  593. package/dist/lib/letPointerDownReachDocument.mjs +1 -1
  594. package/dist/lib/letPointerDownReachDocument.mjs.map +1 -1
  595. package/dist/lib/message.d.mts +1 -1
  596. package/dist/lib/message.mjs +1 -1
  597. package/dist/lib/message.mjs.map +1 -1
  598. package/dist/lib/methodChain.d.mts +2 -2
  599. package/dist/lib/methodChain.mjs +1 -1
  600. package/dist/lib/methodChainNormalize.d.mts +3 -3
  601. package/dist/lib/methodChainNormalize.mjs +1 -1
  602. package/dist/lib/methodChainNormalize.mjs.map +1 -1
  603. package/dist/lib/methodChainTypes.d.mts +1 -1
  604. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  605. package/dist/lib/platformObject.d.mts +2 -2
  606. package/dist/lib/platformObject.mjs +1 -1
  607. package/dist/lib/platformObject.mjs.map +1 -1
  608. package/dist/lib/pseudoClass.d.mts +2 -2
  609. package/dist/lib/pseudoClass.mjs +1 -1
  610. package/dist/lib/pseudoClass.mjs.map +1 -1
  611. package/dist/lib/reorderItems.d.mts +1 -1
  612. package/dist/lib/reorderItems.mjs +1 -1
  613. package/dist/lib/reorderItems.mjs.map +1 -1
  614. package/dist/lib/router/adapters/reactRouter.d.mts +2 -2
  615. package/dist/lib/router/adapters/reactRouter.mjs +2 -2
  616. package/dist/lib/router/adapters/reactRouter.mjs.map +1 -1
  617. package/dist/lib/router/adapters/tanstack.d.mts +2 -2
  618. package/dist/lib/router/adapters/tanstack.mjs +2 -2
  619. package/dist/lib/router/adapters/tanstack.mjs.map +1 -1
  620. package/dist/lib/router/index.d.mts +5 -5
  621. package/dist/lib/router/index.mjs +2 -2
  622. package/dist/lib/schemaOptions.d.mts +1 -1
  623. package/dist/lib/schemaOptions.mjs +2 -2
  624. package/dist/lib/schemaOptions.mjs.map +1 -1
  625. package/dist/lib/selectHelper.d.mts +1 -1
  626. package/dist/lib/selectHelper.mjs +1 -1
  627. package/dist/lib/selectHelper.mjs.map +1 -1
  628. package/dist/lib/semanticColor.d.mts +1 -1
  629. package/dist/lib/semanticColor.mjs +1 -1
  630. package/dist/lib/semanticColor.mjs.map +1 -1
  631. package/dist/lib/snakifyPath.d.mts +1 -1
  632. package/dist/lib/snakifyPath.mjs +1 -1
  633. package/dist/lib/snakifyPath.mjs.map +1 -1
  634. package/dist/lib/useChain.d.mts +1 -1
  635. package/dist/lib/useChain.mjs +1 -1
  636. package/dist/lib/useControlled.d.mts +1 -1
  637. package/dist/lib/useControlled.mjs +1 -1
  638. package/dist/lib/useControlled.mjs.map +1 -1
  639. package/dist/lib/useEmbeddedSurface.d.mts +1 -1
  640. package/dist/lib/useEmbeddedSurface.mjs +1 -1
  641. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  642. package/dist/lib/useIsOverflow.d.mts +1 -1
  643. package/dist/lib/useIsOverflow.mjs +1 -1
  644. package/dist/lib/useIsOverflow.mjs.map +1 -1
  645. package/dist/lib/useModalInsetRight.d.mts +1 -1
  646. package/dist/lib/useModalInsetRight.mjs +1 -1
  647. package/dist/lib/useModalInsetRight.mjs.map +1 -1
  648. package/dist/lib/useOutsideClick.d.mts +1 -1
  649. package/dist/lib/useOutsideClick.mjs +1 -1
  650. package/dist/lib/useOutsideClick.mjs.map +1 -1
  651. package/dist/lib/useResizablePanel.d.mts +1 -1
  652. package/dist/lib/useResizablePanel.mjs +1 -1
  653. package/dist/lib/useResizablePanel.mjs.map +1 -1
  654. package/dist/lib/useScrollOverflow.d.mts +1 -1
  655. package/dist/lib/useScrollOverflow.mjs +1 -1
  656. package/dist/lib/useScrollOverflow.mjs.map +1 -1
  657. package/dist/lib/zindex.d.mts +1 -1
  658. package/dist/lib/zindex.mjs +1 -1
  659. package/dist/lib/zindex.mjs.map +1 -1
  660. package/dist/lint/index.d.mts +11 -0
  661. package/dist/lint/index.mjs +399 -0
  662. package/dist/lint/index.mjs.map +1 -0
  663. package/dist/lint/recommended.json +10 -0
  664. package/dist/{listbox-options-DCmqWWgy.d.mts → listbox-options-CkwENvff.d.mts} +4 -4
  665. package/dist/listbox-options.d.mts +1 -1
  666. package/dist/markdownUtils.d.mts +23 -0
  667. package/dist/{message-Dti22dmx.d.mts → message-klSuXfNN.d.mts} +2 -2
  668. package/dist/{methodChain-DaDvXsHF.d.mts → methodChain-CRYRDa1k.d.mts} +6 -6
  669. package/dist/{methodChain-xZ1_vhbz.mjs → methodChain-LVNHiGPB.mjs} +4 -4
  670. package/dist/methodChain-LVNHiGPB.mjs.map +1 -0
  671. package/dist/{methodChainTypes-a7kHYhs7.d.mts → methodChainTypes-BtbYWrdP.d.mts} +3 -3
  672. package/dist/middleTruncateText.d.mts +1 -1
  673. package/dist/min-copy-size.d.mts +7 -0
  674. package/dist/mixins/focus.d.mts +2 -2
  675. package/dist/mixins/focus.mjs +2 -2
  676. package/dist/mixins/focus.mjs.map +1 -1
  677. package/dist/mixins/hoverable.d.mts +3 -3
  678. package/dist/mixins/hoverable.mjs +2 -2
  679. package/dist/mixins/hoverable.mjs.map +1 -1
  680. package/dist/mixins/input.d.mts +1 -1
  681. package/dist/mixins/input.mjs +2 -2
  682. package/dist/mixins/input.mjs.map +1 -1
  683. package/dist/mixins/menuItem.d.mts +3 -3
  684. package/dist/mixins/menuItem.mjs +2 -2
  685. package/dist/mixins/menuItem.mjs.map +1 -1
  686. package/dist/mixins/print/index.d.mts +1 -1
  687. package/dist/mixins/print/index.mjs +2 -2
  688. package/dist/mixins/print/index.mjs.map +1 -1
  689. package/dist/mixins/scrollbar.d.mts +2 -2
  690. package/dist/mixins/scrollbar.mjs +2 -2
  691. package/dist/mixins/scrollbar.mjs.map +1 -1
  692. package/dist/mixins/text.d.mts +1 -1
  693. package/dist/mixins/text.mjs +6 -2
  694. package/dist/mixins/text.mjs.map +1 -1
  695. package/dist/navigationEvents.d.mts +1 -1
  696. package/dist/no-raw-table.d.mts +7 -0
  697. package/dist/{operators-Seez5p9U.d.mts → operators-gCG7uZ6y.d.mts} +4 -4
  698. package/dist/operators.d.mts +1 -1
  699. package/dist/{palette-Bp5G-S_5.d.mts → palette-C1gBbxLO.d.mts} +4 -4
  700. package/dist/palette.d.mts +1 -1
  701. package/dist/{parser-BeTiVjRs.mjs → parser-BQ2aDi7S.mjs} +2 -2
  702. package/dist/parser-BQ2aDi7S.mjs.map +1 -0
  703. package/dist/patterns/CardGrouping/index.mjs +11 -11
  704. package/dist/patterns/CardGrouping/index.mjs.map +1 -1
  705. package/dist/patterns/IndexTableLayout/index.mjs +6 -6
  706. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
  707. package/dist/patterns/LayoutLoadingShimmer/index.mjs +8 -8
  708. package/dist/patterns/LayoutLoadingShimmer/index.mjs.map +1 -1
  709. package/dist/patterns/LayoutLoadingSpinner/index.mjs +2 -2
  710. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
  711. package/dist/patterns/PageLayout/index.d.mts +4 -4
  712. package/dist/patterns/PageLayout/index.mjs +1 -1
  713. package/dist/patterns/WizardModal/index.mjs +7 -7
  714. package/dist/patterns/WizardModal/index.mjs.map +1 -1
  715. package/dist/positioning.d.mts +1 -1
  716. package/dist/reactRouterFallback.d.mts +2 -2
  717. package/dist/reduced-motion.d.mts +7 -0
  718. package/dist/relative-date-label.d.mts +2 -2
  719. package/dist/{router-COrZcVkf.mjs → router-BxmA940v.mjs} +7 -7
  720. package/dist/router-BxmA940v.mjs.map +1 -0
  721. package/dist/safe-parse.d.mts +3 -3
  722. package/dist/{schemaOptions-BQgLOgtD.d.mts → schemaOptions-C_JM2-sg.d.mts} +4 -4
  723. package/dist/scrollExpandedItemIntoView.d.mts +1 -1
  724. package/dist/{semantic-DjKvtUi8.d.mts → semantic-BLaQSW1r.d.mts} +2 -2
  725. package/dist/semantic-color.d.mts +7 -0
  726. package/dist/{semanticColor-CmGmGRj8.d.mts → semanticColor-Bxufk3ZO.d.mts} +4 -4
  727. package/dist/shared.d.mts +30 -0
  728. package/dist/{strings-FWNWdSn1.d.mts → strings-CK9n6b65.d.mts} +2 -2
  729. package/dist/strings.d.mts +1 -1
  730. package/dist/{styledComponentsInterop-NxwFjeA4.mjs → styledComponentsInterop-Cs5CCPRy.mjs} +2 -2
  731. package/dist/styledComponentsInterop-Cs5CCPRy.mjs.map +1 -0
  732. package/dist/styles.d.mts +8 -0
  733. package/dist/tableBoxKeyboardNavigation.d.mts +1 -1
  734. package/dist/{text-BNfECpa5.d.mts → text-Csytfclh.d.mts} +3 -3
  735. package/dist/{theme-VNhXxAF3.d.mts → theme-mQ4WkH90.d.mts} +4 -4
  736. package/dist/theme.d.mts +1 -1
  737. package/dist/theme.mjs +1 -1
  738. package/dist/theme.mjs.map +1 -1
  739. package/dist/time-range.d.mts +1 -1
  740. package/dist/tone.d.mts +4 -4
  741. package/dist/tree.d.mts +2 -2
  742. package/dist/{types-CFe4tA8Q.d.mts → types-6L0ptM6-.d.mts} +2 -2
  743. package/dist/{types-SOkNtcBq.d.mts → types-B4KbdEDc.d.mts} +3 -3
  744. package/dist/{types-Kmnood9Y.d.mts → types-C2RhHxbE.d.mts} +2 -2
  745. package/dist/{types-Ci-KTHfu.d.mts → types-CayYd8EX.d.mts} +4 -4
  746. package/dist/{types-SYxBPX6o.d.mts → types-DJobO07d.d.mts} +4 -4
  747. package/dist/{types-EodOhsjw.d.mts → types-DbOD5vE_.d.mts} +3 -3
  748. package/dist/{types-HxiGiwQN.d.mts → types-Dhz6VMKx.d.mts} +2 -2
  749. package/dist/{types-DWU0Dmy9.d.mts → types-XjJqUj-p.d.mts} +5 -5
  750. package/dist/{types-DfpVVjso.d.mts → types-dmItSshr.d.mts} +3 -3
  751. package/dist/{types-39QvBZuZ.d.mts → types-rDQg74j-.d.mts} +2 -2
  752. package/dist/types.d.mts +1 -1
  753. package/dist/types2.d.mts +1 -1
  754. package/dist/types3.d.mts +1 -1
  755. package/dist/types4.d.mts +1 -1
  756. package/dist/types5.d.mts +1 -1
  757. package/dist/types6.d.mts +1 -1
  758. package/dist/types7.d.mts +14 -2
  759. package/dist/types8.d.mts +2 -0
  760. package/dist/{url-state-CwaRVyXR.d.mts → url-state-CmgyDnG7.d.mts} +3 -3
  761. package/dist/url-state.d.mts +1 -1
  762. package/dist/use-rules-popover-selection.d.mts +1 -1
  763. package/dist/{useChain-DXkKKe-J.d.mts → useChain-7ztbfujM.d.mts} +7 -7
  764. package/dist/{useChain-Cu4KDfFk.mjs → useChain-D1aNsdvn.mjs} +4 -4
  765. package/dist/useChain-D1aNsdvn.mjs.map +1 -0
  766. package/dist/useChainAtCursor.d.mts +7 -7
  767. package/dist/useCodeChainFunctionPanel.d.mts +2 -2
  768. package/dist/useColumnConfiguration.d.mts +3 -3
  769. package/dist/useColumnWidthLock.d.mts +1 -1
  770. package/dist/useComboboxFooterAction.d.mts +2 -2
  771. package/dist/useDelayedInlineEditError.d.mts +1 -1
  772. package/dist/{useFilterStateV2-Bzo27PR-.d.mts → useFilterStateV2-CPBt0qwc.d.mts} +4 -4
  773. package/dist/useFilterStateV2.d.mts +1 -1
  774. package/dist/{useFormField-Ba8rh1CH.d.mts → useFormField-CmEJCqse.d.mts} +3 -3
  775. package/dist/{useFormField-CbNYbDdp.mjs → useFormField-pOVkb5BK.mjs} +3 -3
  776. package/dist/useFormField-pOVkb5BK.mjs.map +1 -0
  777. package/dist/useFormField.d.mts +1 -1
  778. package/dist/{useFormGroup-CsKC93Pt.mjs → useFormGroup-DSQkoWLh.mjs} +2 -2
  779. package/dist/useFormGroup-DSQkoWLh.mjs.map +1 -0
  780. package/dist/useFormGroup.d.mts +1 -1
  781. package/dist/useLocationPathname-Cnqj8pf4.d.mts +5 -0
  782. package/dist/useLocationPathname.d.mts +1 -1
  783. package/dist/{useTableBoxDragAndDrop-CKPIY98e.d.mts → useTableBoxDragAndDrop-8NS4JBuI.d.mts} +2 -2
  784. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  785. package/dist/{useTableColumns-PyxNyTD6.d.mts → useTableColumns-BK-KYY0L.d.mts} +3 -3
  786. package/dist/useTableColumns.d.mts +1 -1
  787. package/dist/{useToggle-DRzCDqrc.mjs → useToggle-1z8JE7Ym.mjs} +2 -2
  788. package/dist/useToggle-1z8JE7Ym.mjs.map +1 -0
  789. package/dist/useToggle.d.mts +1 -1
  790. package/dist/useTruncation.d.mts +2 -2
  791. package/dist/{utilities-BrEUGFGq.d.mts → utilities-CXoc5Cyr.d.mts} +2 -2
  792. package/dist/utilities.d.mts +1 -1
  793. package/dist/utils/storybook.mjs +2 -2
  794. package/dist/utils/storybook.mjs.map +1 -1
  795. package/dist/utils/testing.d.mts +2 -2
  796. package/dist/utils/testing.mjs +1 -1
  797. package/dist/utils/testing.mjs.map +1 -1
  798. package/dist/utils.d.mts +2 -2
  799. package/dist/utils2.d.mts +1 -1
  800. package/dist/utils3.d.mts +1 -1
  801. package/dist/utils4.d.mts +6 -6
  802. package/dist/{validation-D6NPueNk.d.mts → validation-BaqPVG1C.d.mts} +4 -4
  803. package/dist/validation.d.mts +1 -1
  804. package/dist/validation2.d.mts +5 -5
  805. package/dist/{value-control-resolver-C-UrXVlB.d.mts → value-control-resolver-CMyFwEY7.d.mts} +3 -3
  806. package/dist/value-control-resolver.d.mts +1 -1
  807. package/dist/variables/color.d.mts +1 -1
  808. package/dist/variables/color.mjs +1 -1
  809. package/dist/variables/color.mjs.map +1 -1
  810. package/dist/variables/effect.d.mts +2 -2
  811. package/dist/variables/effect.mjs +1 -1
  812. package/dist/variables/effect.mjs.map +1 -1
  813. package/dist/variables/keyframes.d.mts +1 -1
  814. package/dist/variables/keyframes.mjs +2 -2
  815. package/dist/variables/keyframes.mjs.map +1 -1
  816. package/dist/variables/semantic.d.mts +1 -1
  817. package/dist/variables/semantic.mjs +1 -1
  818. package/dist/variables/semantic.mjs.map +1 -1
  819. package/dist/variables/spacing.d.mts +1 -1
  820. package/dist/variables/spacing.mjs +1 -1
  821. package/dist/variables/spacing.mjs.map +1 -1
  822. package/dist/variables/text.d.mts +1 -1
  823. package/dist/variables/text.mjs +1 -1
  824. package/dist/variables/text.mjs.map +1 -1
  825. package/dist/variables/transitions.d.mts +1 -1
  826. package/dist/variables/transitions.mjs +1 -1
  827. package/dist/variables/transitions.mjs.map +1 -1
  828. package/llms.txt +2 -2
  829. package/package.json +32 -8
  830. package/skills/design-system-component-authoring/SKILL.md +4 -4
  831. package/skills/design-system-component-authoring/component-conventions.md +2 -2
  832. package/skills/new-screen/SKILL.md +56 -0
  833. package/skills/ui-authoring/COMPONENTS.md +2 -1
  834. package/skills/ui-authoring/SKILL.md +5 -3
  835. package/skills/ui-authoring/STANDARD.md +65 -50
  836. package/dist/Badge-Bvn3afds.mjs.map +0 -1
  837. package/dist/Breadcrumbs-CQUe9VTM.mjs.map +0 -1
  838. package/dist/Card-BXNxWX5C.mjs.map +0 -1
  839. package/dist/CardV2-Dp4eHSE-.mjs.map +0 -1
  840. package/dist/Checkbox-BaJ-dGdX.mjs.map +0 -1
  841. package/dist/Combobox-CBM-oY-e.mjs.map +0 -1
  842. package/dist/ConfigFormGroup-CidT_cE9.mjs.map +0 -1
  843. package/dist/DataTable-DQ8axNfo.mjs.map +0 -1
  844. package/dist/DatePicker-D0cvVbzq.mjs.map +0 -1
  845. package/dist/DropdownButton-5oNcpsOq.mjs.map +0 -1
  846. package/dist/DropdownMenu-CedsmO5h.mjs.map +0 -1
  847. package/dist/FormControl-C4CiA0H-.mjs.map +0 -1
  848. package/dist/FormField-C0cd1zVd.mjs.map +0 -1
  849. package/dist/Grid-DXVkhyNQ.mjs.map +0 -1
  850. package/dist/HoverCopyableField-D-BubaRd.mjs.map +0 -1
  851. package/dist/IconButton-HWx5Hlmi.mjs.map +0 -1
  852. package/dist/Input-Dap055xf.mjs.map +0 -1
  853. package/dist/Link-Cf__H8gD.mjs.map +0 -1
  854. package/dist/ListBox-eoyBHtnJ.mjs.map +0 -1
  855. package/dist/LoadingShimmer-Bqjdut7i.mjs.map +0 -1
  856. package/dist/Menu-Dw6Rcpk6.mjs.map +0 -1
  857. package/dist/MiddleTruncatedText-DoTyfMem.mjs.map +0 -1
  858. package/dist/Modal-kjUptzg1.mjs.map +0 -1
  859. package/dist/PageHeader-DJF7nxgN.mjs.map +0 -1
  860. package/dist/PageLayout-fXJW7daI.mjs.map +0 -1
  861. package/dist/Pagination-DtK-jbEY.mjs.map +0 -1
  862. package/dist/Pii-DueIK287.mjs.map +0 -1
  863. package/dist/Popover-BcII7usF.mjs.map +0 -1
  864. package/dist/ProgressIndicator-CM37EU1B.mjs.map +0 -1
  865. package/dist/Radio-BstZg3DI.mjs.map +0 -1
  866. package/dist/RadioGroup-erKerwSt.mjs.map +0 -1
  867. package/dist/RouterContext-nPSb55p9.mjs.map +0 -1
  868. package/dist/SegmentedControl-DQjIO6iX.mjs.map +0 -1
  869. package/dist/Select-BJ9ACmRD.mjs.map +0 -1
  870. package/dist/Spacer-J_HuhxX2.mjs.map +0 -1
  871. package/dist/Spinner-7Camx1vs.mjs.map +0 -1
  872. package/dist/Stack-BkC7FCdF.mjs.map +0 -1
  873. package/dist/StatusIndicator-Bunn9YLV.mjs.map +0 -1
  874. package/dist/Sticker-yhxtIYH8.mjs.map +0 -1
  875. package/dist/TabBar-SX8E9-Bk.mjs.map +0 -1
  876. package/dist/Table-BIDaC0uS.mjs.map +0 -1
  877. package/dist/TableBox-Bn_XZEYd.mjs.map +0 -1
  878. package/dist/TableControls-qxoq5abn.mjs.map +0 -1
  879. package/dist/TechnicalSticker-CALVwnrT.mjs.map +0 -1
  880. package/dist/Text-CSwFifQF.mjs.map +0 -1
  881. package/dist/TextArea-CaIEBz8d.mjs.map +0 -1
  882. package/dist/Toggle-BsqSNYok.mjs.map +0 -1
  883. package/dist/Tooltip-B-0VRuKT.mjs.map +0 -1
  884. package/dist/chainTypes-Cjp0zZ4E.d.mts +0 -17
  885. package/dist/createPath-B_CLq82C.d.mts +0 -7
  886. package/dist/date-filter-D0ys8s0D.mjs.map +0 -1
  887. package/dist/i18n-BscB9FUy.mjs.map +0 -1
  888. package/dist/index-DTAcGzW4.d.mts +0 -7
  889. package/dist/intersperse-ObkRVOag.mjs.map +0 -1
  890. package/dist/methodChain-xZ1_vhbz.mjs.map +0 -1
  891. package/dist/parser-BeTiVjRs.mjs.map +0 -1
  892. package/dist/router-COrZcVkf.mjs.map +0 -1
  893. package/dist/styledComponentsInterop-NxwFjeA4.mjs.map +0 -1
  894. package/dist/useChain-Cu4KDfFk.mjs.map +0 -1
  895. package/dist/useFormField-CbNYbDdp.mjs.map +0 -1
  896. package/dist/useFormGroup-CsKC93Pt.mjs.map +0 -1
  897. package/dist/useLocationPathname-OsvI7mH5.d.mts +0 -5
  898. package/dist/useToggle-DRzCDqrc.mjs.map +0 -1
  899. package/skills/ui-authoring/lanes.json +0 -22
  900. /package/dist/{index-BOaE2xDE.d.mts → index-Bq9Ub6MB.d.mts} +0 -0
@@ -0,0 +1,399 @@
1
+ //#region src/lint/shared.ts
2
+ const STANDARD_URL = "https://github.com/persona-id/persona-design-system/blob/master/packages/design-system/skills/ui-authoring/STANDARD.md#lint-rules";
3
+ const docs = (description) => ({
4
+ description,
5
+ url: STANDARD_URL
6
+ });
7
+ /** The tags that make a template literal CSS: styled-components' `styled`, `css`, `keyframes`, `createGlobalStyle`. */
8
+ const CSS_TAGS = new Set([
9
+ "styled",
10
+ "css",
11
+ "keyframes",
12
+ "createGlobalStyle"
13
+ ]);
14
+ /** The identifier a chain of member accesses and calls starts from: `styled` in `styled(Box).attrs({})`. */
15
+ function rootIdentifier(node) {
16
+ let current = node;
17
+ for (;;) switch (current.type) {
18
+ case "Identifier": return current.name;
19
+ case "MemberExpression":
20
+ current = current.object;
21
+ break;
22
+ case "CallExpression":
23
+ current = current.callee;
24
+ break;
25
+ default: return null;
26
+ }
27
+ }
28
+ const isCssTemplate = (node) => {
29
+ const root = rootIdentifier(node.tag);
30
+ return root !== null && CSS_TAGS.has(root);
31
+ };
32
+ /** The name of a non-computed identifier key or a string-literal key, else null. */
33
+ function propertyName(property) {
34
+ const { key } = property;
35
+ if (key.type === "Identifier" && !property.computed) return key.name;
36
+ if (key.type === "Literal" && typeof key.value === "string") return key.value;
37
+ return null;
38
+ }
39
+ /** The name of `node.<name>`, or null for a computed or private access. */
40
+ const staticMemberName = (node) => !node.computed && node.property.type === "Identifier" ? node.property.name : null;
41
+ /** The rightmost name of `a.b.c` or `c`: `c`. */
42
+ function lastName(node) {
43
+ if (node.type === "Identifier") return node.name;
44
+ return node.type === "MemberExpression" ? staticMemberName(node) : null;
45
+ }
46
+ const blank = (text) => text.replace(/[^\n]/g, " ");
47
+ /**
48
+ * Blank CSS comments (`/* *\/`, and `//` at the start of a line or after whitespace, so `https://` in a
49
+ * url is kept), leaving line breaks so that offsets and line numbers stay the same.
50
+ */
51
+ const blankCssComments = (text) => text.replace(/\/\*[\s\S]*?(?:\*\/|$)/g, blank).replace(/(^|[ \t])\/\/[^\n]*/gm, (match, lead) => lead + blank(match.slice(lead.length)));
52
+ function isCssTemplateElement(node) {
53
+ if (node.type !== "TemplateElement") return false;
54
+ const literal = node.parent;
55
+ if (literal.type !== "TemplateLiteral") return false;
56
+ const tagged = literal.parent;
57
+ return tagged.type === "TaggedTemplateExpression" && tagged.quasi === literal && isCssTemplate(tagged);
58
+ }
59
+ /** The source text of `node`; for the text of a CSS template, with its comments blanked. */
60
+ function sourceText(context, node) {
61
+ const [start, end] = node.range;
62
+ const text = context.sourceCode.text.slice(start, end);
63
+ return isCssTemplateElement(node) ? blankCssComments(text) : text;
64
+ }
65
+ /** Report each match of `pattern` in the source of `node`, at the match rather than the node. */
66
+ function reportMatches(context, node, pattern, message, accept = () => true) {
67
+ const { sourceCode } = context;
68
+ const [start] = node.range;
69
+ for (const match of sourceText(context, node).matchAll(pattern)) {
70
+ if (!accept(match)) continue;
71
+ const index = start + match.index;
72
+ context.report({
73
+ message: message(match),
74
+ loc: {
75
+ start: sourceCode.getLocFromIndex(index),
76
+ end: sourceCode.getLocFromIndex(index + match[0].length)
77
+ }
78
+ });
79
+ }
80
+ }
81
+ const toPx = (value, unit, rootFontPx) => unit === "rem" || unit === "em" ? value * rootFontPx : value;
82
+ /** A bare number under 1 is a unitless multiplier, not a size. */
83
+ const isSmallSize = (size, unit, minPx) => size < minPx && (unit !== void 0 || size >= 1);
84
+ /** A JSX attribute's value when it is a string, written either way: `"x"` or `{"x"}`. */
85
+ function jsxStringValue(attribute) {
86
+ const { value } = attribute;
87
+ if (value === null) return null;
88
+ const inner = value.type === "JSXExpressionContainer" ? value.expression : value;
89
+ return inner.type === "Literal" && typeof inner.value === "string" ? inner.value : null;
90
+ }
91
+ //#endregion
92
+ //#region src/lint/rules/complete-typography.ts
93
+ const FONT_PROPERTIES = new Set([
94
+ "fontSize",
95
+ "fontWeight",
96
+ "fontFamily",
97
+ "lineHeight",
98
+ "letterSpacing",
99
+ "font-size",
100
+ "font-weight",
101
+ "font-family",
102
+ "line-height",
103
+ "letter-spacing"
104
+ ]);
105
+ const FONT_DECLARATION = /(?<![\w-])(?:font-size|font-weight|font-family|line-height|letter-spacing)\s*:/g;
106
+ const message$1 = (name) => `Individual font property \`${name}\`: use a complete \`Typography\` style.`;
107
+ const completeTypography = {
108
+ meta: {
109
+ type: "problem",
110
+ docs: docs("Use a complete `Typography` style, not an individual font property.")
111
+ },
112
+ createOnce(context) {
113
+ return {
114
+ ObjectExpression(node) {
115
+ for (const property of node.properties) {
116
+ if (property.type !== "Property") continue;
117
+ const name = propertyName(property);
118
+ if (name !== null && FONT_PROPERTIES.has(name)) context.report({
119
+ node: property.key,
120
+ message: message$1(name)
121
+ });
122
+ }
123
+ },
124
+ TaggedTemplateExpression(node) {
125
+ if (!isCssTemplate(node)) return;
126
+ for (const quasi of node.quasi.quasis) reportMatches(context, quasi, FONT_DECLARATION, (match) => message$1(match[0].replace(/\s*:$/, "")));
127
+ }
128
+ };
129
+ }
130
+ };
131
+ //#endregion
132
+ //#region src/lint/rules/min-copy-size.ts
133
+ const DEFAULT_MIN_PX = 11;
134
+ const DEFAULT_ROOT_FONT_PX = 16;
135
+ const EXTRA_SMALL_STYLES = new Set(["TextExtraSmall", "TextExtraSmallMono"]);
136
+ const PARAGRAPH_SCALES = new Set(["paragraph", "paragraphMixins"]);
137
+ const SIZED_COMPONENTS = new Set(["Paragraph", "Label"]);
138
+ const FONT_SIZE_PROPERTIES = new Set(["fontSize", "font-size"]);
139
+ const RAW_FONT_SIZE = /font-size\s*:\s*(\d*\.?\d+)\s*(px|rem|em)?(?![\w.])/g;
140
+ const SIZE_VALUE = /^\s*(\d*\.?\d+)\s*(px|rem|em)?\s*$/;
141
+ /** The rule's options, which oxlint has already checked against the schema. */
142
+ function readSettings(options) {
143
+ const read = (key, fallback) => {
144
+ const value = typeof options === "object" && options !== null ? Reflect.get(options, key) : void 0;
145
+ return typeof value === "number" ? value : fallback;
146
+ };
147
+ return {
148
+ minPx: read("minPx", DEFAULT_MIN_PX),
149
+ rootFontPx: read("rootFontPx", DEFAULT_ROOT_FONT_PX)
150
+ };
151
+ }
152
+ const small = (what) => `${what}: text under the minimum size. Fine for a label inside a graphic (8 px); copy uses \`TextSmall\` (12 px).`;
153
+ /** The text of a font-size value written as a number, a string or a plain template. */
154
+ function sizeText(value) {
155
+ if (value.type === "Literal") return typeof value.value === "number" || typeof value.value === "string" ? String(value.value) : null;
156
+ if (value.type === "TemplateLiteral" && value.expressions.length === 0) return value.quasis[0]?.value.cooked ?? null;
157
+ return null;
158
+ }
159
+ const minCopySize = {
160
+ meta: {
161
+ type: "suggestion",
162
+ docs: docs("Copy is at least 11 CSS px. Fine for a label inside a graphic (8 px); copy uses `TextSmall` (12 px)."),
163
+ schema: [{
164
+ type: "object",
165
+ properties: {
166
+ minPx: { type: "number" },
167
+ rootFontPx: { type: "number" }
168
+ },
169
+ additionalProperties: false
170
+ }]
171
+ },
172
+ createOnce(context) {
173
+ const settings = () => readSettings(context.options[0]);
174
+ return {
175
+ MemberExpression(node) {
176
+ const name = staticMemberName(node);
177
+ if (name === null) return;
178
+ if (EXTRA_SMALL_STYLES.has(name)) context.report({
179
+ node,
180
+ message: small(`\`${name}\``)
181
+ });
182
+ else if (name === "xs") {
183
+ const scale = lastName(node.object);
184
+ if (scale !== null && PARAGRAPH_SCALES.has(scale)) context.report({
185
+ node,
186
+ message: small(`\`${scale}.xs\``)
187
+ });
188
+ }
189
+ },
190
+ JSXOpeningElement(node) {
191
+ if (node.name.type !== "JSXIdentifier" || !SIZED_COMPONENTS.has(node.name.name)) return;
192
+ for (const attribute of node.attributes) if (attribute.type === "JSXAttribute" && attribute.name.type === "JSXIdentifier" && attribute.name.name === "size" && jsxStringValue(attribute) === "xs") context.report({
193
+ node: attribute,
194
+ message: small(`\`<${node.name.name} size="xs">\``)
195
+ });
196
+ },
197
+ ObjectExpression(node) {
198
+ const { minPx, rootFontPx } = settings();
199
+ for (const property of node.properties) {
200
+ if (property.type !== "Property") continue;
201
+ const name = propertyName(property);
202
+ if (name === null || !FONT_SIZE_PROPERTIES.has(name)) continue;
203
+ const text = sizeText(property.value);
204
+ const match = text === null ? null : SIZE_VALUE.exec(text);
205
+ const size = match?.[1];
206
+ const unit = match?.[2];
207
+ if (size !== void 0 && isSmallSize(toPx(Number(size), unit, rootFontPx), unit, minPx)) context.report({
208
+ node: property,
209
+ message: small(`font-size ${size}${unit ?? "px"}`)
210
+ });
211
+ }
212
+ },
213
+ TaggedTemplateExpression(node) {
214
+ if (!isCssTemplate(node)) return;
215
+ const { minPx, rootFontPx } = settings();
216
+ for (const quasi of node.quasi.quasis) reportMatches(context, quasi, RAW_FONT_SIZE, (match) => small(`font-size ${match[1]}${match[2] ?? "px"}`), (match) => isSmallSize(toPx(Number(match[1]), match[2], rootFontPx), match[2], minPx));
217
+ }
218
+ };
219
+ }
220
+ };
221
+ //#endregion
222
+ //#region src/lint/rules/no-raw-table.ts
223
+ const TABLE_ELEMENTS = new Set([
224
+ "table",
225
+ "th",
226
+ "td"
227
+ ]);
228
+ const message = (what) => `Hand-rolled table markup (${what}). Use \`Table\`, \`DataTable\` or \`IndexTableLayout\`.`;
229
+ const noRawTable = {
230
+ meta: {
231
+ type: "problem",
232
+ docs: docs("Use `Table`, `DataTable` or `IndexTableLayout`, not hand-rolled table markup.")
233
+ },
234
+ createOnce(context) {
235
+ return {
236
+ JSXOpeningElement(node) {
237
+ if (node.name.type === "JSXIdentifier" && TABLE_ELEMENTS.has(node.name.name)) context.report({
238
+ node: node.name,
239
+ message: message(`<${node.name.name}>`)
240
+ });
241
+ },
242
+ MemberExpression(node) {
243
+ const name = staticMemberName(node);
244
+ if (name !== null && TABLE_ELEMENTS.has(name) && node.object.type === "Identifier" && node.object.name === "styled") context.report({
245
+ node,
246
+ message: message(`styled.${name}`)
247
+ });
248
+ },
249
+ CallExpression(node) {
250
+ const [argument] = node.arguments;
251
+ if (node.callee.type === "Identifier" && node.callee.name === "styled" && argument?.type === "Literal" && typeof argument.value === "string" && TABLE_ELEMENTS.has(argument.value)) context.report({
252
+ node,
253
+ message: message(`styled('${argument.value}')`)
254
+ });
255
+ }
256
+ };
257
+ }
258
+ };
259
+ //#endregion
260
+ //#region src/lint/rules/reduced-motion.ts
261
+ const MOTION_PROPERTIES = new Set([
262
+ "animation",
263
+ "animationName",
264
+ "transition",
265
+ "transitionProperty",
266
+ "animation-name",
267
+ "transition-property"
268
+ ]);
269
+ const MOTION_DECLARATION = /@keyframes\b|(?<![\w-])(?:animation|animation-name|transition|transition-property)\s*:/g;
270
+ const REDUCED_MOTION = "prefers-reduced-motion";
271
+ const MESSAGE = "Animation or transition in a file with no `prefers-reduced-motion` block. Add one that turns it off.";
272
+ const reducedMotion = {
273
+ meta: {
274
+ type: "suggestion",
275
+ docs: docs("Animation or transition only in a file with a `prefers-reduced-motion` block. Reported once per file, at the first one.")
276
+ },
277
+ createOnce(context) {
278
+ let first = null;
279
+ let hasReducedMotion = false;
280
+ const note = (location) => {
281
+ first ??= location;
282
+ };
283
+ const noteReducedMotion = (text) => {
284
+ if (text.includes(REDUCED_MOTION)) hasReducedMotion = true;
285
+ };
286
+ return {
287
+ before() {
288
+ first = null;
289
+ hasReducedMotion = false;
290
+ },
291
+ Literal(node) {
292
+ if (typeof node.value === "string") noteReducedMotion(node.value);
293
+ },
294
+ TemplateElement(node) {
295
+ noteReducedMotion(sourceText(context, node));
296
+ },
297
+ ObjectExpression(node) {
298
+ for (const property of node.properties) {
299
+ const name = property.type === "Property" ? propertyName(property) : null;
300
+ if (property.type === "Property" && name !== null && MOTION_PROPERTIES.has(name)) note(property.key.loc);
301
+ }
302
+ },
303
+ TaggedTemplateExpression(node) {
304
+ if (!isCssTemplate(node)) return;
305
+ if (rootIdentifier(node.tag) === "keyframes") note(node.loc);
306
+ const { sourceCode } = context;
307
+ for (const quasi of node.quasi.quasis) {
308
+ const [start] = quasi.range;
309
+ for (const match of sourceText(context, quasi).matchAll(MOTION_DECLARATION)) {
310
+ const index = start + match.index;
311
+ note({
312
+ start: sourceCode.getLocFromIndex(index),
313
+ end: sourceCode.getLocFromIndex(index + match[0].length)
314
+ });
315
+ }
316
+ }
317
+ },
318
+ after() {
319
+ if (first !== null && !hasReducedMotion) context.report({
320
+ message: MESSAGE,
321
+ loc: first
322
+ });
323
+ }
324
+ };
325
+ }
326
+ };
327
+ //#endregion
328
+ //#region src/lint/rules/semantic-color.ts
329
+ const HEX = /(?<![\w&/#])#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})\b/g;
330
+ const LINK_ATTRIBUTES = new Set(["href", "to"]);
331
+ const MODULE_PARENTS = new Set([
332
+ "ImportDeclaration",
333
+ "ExportNamedDeclaration",
334
+ "ExportAllDeclaration",
335
+ "ImportExpression"
336
+ ]);
337
+ const isSemanticColorCall = (node) => node.callee.type === "Identifier" && node.callee.name === "semanticColor";
338
+ const isLinkAttribute = (node) => node.name.type === "JSXIdentifier" && LINK_ATTRIBUTES.has(node.name.name);
339
+ //#endregion
340
+ //#region src/lint/index.ts
341
+ /**
342
+ * The product UI standard's automated checks as an oxlint JS plugin. Load it with
343
+ * `"jsPlugins": ["@persona/design-system/lint"]` and enable rules as `pds/<rule>`.
344
+ */
345
+ const plugin = {
346
+ meta: { name: "pds" },
347
+ rules: {
348
+ "semantic-color": {
349
+ meta: {
350
+ type: "problem",
351
+ docs: docs("Paint with a semantic token (`semanticColor`), not a hex value or a `Color.*` outside its fallback.")
352
+ },
353
+ createOnce(context) {
354
+ let insideSemanticColor = 0;
355
+ let insideLink = 0;
356
+ const checkText = (node) => {
357
+ if (insideLink === 0) reportMatches(context, node, HEX, (match) => `Hex colour ${match[0]}: paint with a semantic token (\`semanticColor\`).`);
358
+ };
359
+ return {
360
+ before() {
361
+ insideSemanticColor = 0;
362
+ insideLink = 0;
363
+ },
364
+ CallExpression(node) {
365
+ if (isSemanticColorCall(node)) insideSemanticColor++;
366
+ },
367
+ "CallExpression:exit"(node) {
368
+ if (isSemanticColorCall(node)) insideSemanticColor--;
369
+ },
370
+ JSXAttribute(node) {
371
+ if (isLinkAttribute(node)) insideLink++;
372
+ },
373
+ "JSXAttribute:exit"(node) {
374
+ if (isLinkAttribute(node)) insideLink--;
375
+ },
376
+ Literal(node) {
377
+ if (typeof node.value === "string" && !MODULE_PARENTS.has(node.parent.type)) checkText(node);
378
+ },
379
+ TemplateElement: checkText,
380
+ MemberExpression(node) {
381
+ const name = staticMemberName(node);
382
+ if (insideSemanticColor === 0 && name !== null && node.object.type === "Identifier" && node.object.name === "Color" && /^[A-Z]\w*$/.test(name)) context.report({
383
+ node,
384
+ message: `\`Color.${name}\` outside \`semanticColor\`: paint with a semantic token, with this as its fallback.`
385
+ });
386
+ }
387
+ };
388
+ }
389
+ },
390
+ "complete-typography": completeTypography,
391
+ "min-copy-size": minCopySize,
392
+ "reduced-motion": reducedMotion,
393
+ "no-raw-table": noRawTable
394
+ }
395
+ };
396
+ //#endregion
397
+ export { plugin as default };
398
+
399
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["message"],"sources":["../../src/lint/shared.ts","../../src/lint/rules/complete-typography.ts","../../src/lint/rules/min-copy-size.ts","../../src/lint/rules/no-raw-table.ts","../../src/lint/rules/reduced-motion.ts","../../src/lint/rules/semantic-color.ts","../../src/lint/index.ts"],"sourcesContent":["import type { Context, ESTree, RuleDocs } from '@oxlint/plugins';\n\nconst STANDARD_URL =\n 'https://github.com/persona-id/persona-design-system/blob/master/packages/design-system/skills/ui-authoring/STANDARD.md#lint-rules';\n\nexport const docs = (description: string): RuleDocs => ({ description, url: STANDARD_URL });\n\n/** The tags that make a template literal CSS: styled-components' `styled`, `css`, `keyframes`, `createGlobalStyle`. */\nconst CSS_TAGS = new Set(['styled', 'css', 'keyframes', 'createGlobalStyle']);\n\n/** The identifier a chain of member accesses and calls starts from: `styled` in `styled(Box).attrs({})`. */\nexport function rootIdentifier(node: ESTree.Expression): string | null {\n let current: ESTree.Expression = node;\n for (;;) {\n switch (current.type) {\n case 'Identifier':\n return current.name;\n case 'MemberExpression':\n current = current.object;\n break;\n case 'CallExpression':\n current = current.callee;\n break;\n default:\n return null;\n }\n }\n}\n\nexport const isCssTemplate = (node: ESTree.TaggedTemplateExpression): boolean => {\n const root = rootIdentifier(node.tag);\n return root !== null && CSS_TAGS.has(root);\n};\n\n/** The name of a non-computed identifier key or a string-literal key, else null. */\nexport function propertyName(property: ESTree.ObjectProperty): string | null {\n const { key } = property;\n if (key.type === 'Identifier' && !property.computed) {\n return key.name;\n }\n if (key.type === 'Literal' && typeof key.value === 'string') {\n return key.value;\n }\n return null;\n}\n\n/** The name of `node.<name>`, or null for a computed or private access. */\nexport const staticMemberName = (node: ESTree.MemberExpression): string | null =>\n !node.computed && node.property.type === 'Identifier' ? node.property.name : null;\n\n/** The rightmost name of `a.b.c` or `c`: `c`. */\nexport function lastName(node: ESTree.Expression): string | null {\n if (node.type === 'Identifier') {\n return node.name;\n }\n return node.type === 'MemberExpression' ? staticMemberName(node) : null;\n}\n\nconst blank = (text: string): string => text.replace(/[^\\n]/g, ' ');\n\n/**\n * Blank CSS comments (`/* *\\/`, and `//` at the start of a line or after whitespace, so `https://` in a\n * url is kept), leaving line breaks so that offsets and line numbers stay the same.\n */\nexport const blankCssComments = (text: string): string =>\n text\n .replace(/\\/\\*[\\s\\S]*?(?:\\*\\/|$)/g, blank)\n .replace(\n /(^|[ \\t])\\/\\/[^\\n]*/gm,\n (match, lead: string) => lead + blank(match.slice(lead.length)),\n );\n\nfunction isCssTemplateElement(node: ESTree.Node): boolean {\n if (node.type !== 'TemplateElement') {\n return false;\n }\n const literal = node.parent;\n if (literal.type !== 'TemplateLiteral') {\n return false;\n }\n const tagged = literal.parent;\n return (\n tagged.type === 'TaggedTemplateExpression' && tagged.quasi === literal && isCssTemplate(tagged)\n );\n}\n\n/** The source text of `node`; for the text of a CSS template, with its comments blanked. */\nexport function sourceText(context: Context, node: ESTree.Node): string {\n const [start, end] = node.range;\n const text = context.sourceCode.text.slice(start, end);\n return isCssTemplateElement(node) ? blankCssComments(text) : text;\n}\n\n/** Report each match of `pattern` in the source of `node`, at the match rather than the node. */\nexport function reportMatches(\n context: Context,\n node: ESTree.Node,\n pattern: RegExp,\n message: (match: RegExpExecArray) => string,\n accept: (match: RegExpExecArray) => boolean = () => true,\n): void {\n const { sourceCode } = context;\n const [start] = node.range;\n for (const match of sourceText(context, node).matchAll(pattern)) {\n if (!accept(match)) {\n continue;\n }\n const index = start + match.index;\n context.report({\n message: message(match),\n loc: {\n start: sourceCode.getLocFromIndex(index),\n end: sourceCode.getLocFromIndex(index + match[0].length),\n },\n });\n }\n}\n\nexport const toPx = (value: number, unit: string | undefined, rootFontPx: number): number =>\n unit === 'rem' || unit === 'em' ? value * rootFontPx : value;\n\n/** A bare number under 1 is a unitless multiplier, not a size. */\nexport const isSmallSize = (size: number, unit: string | undefined, minPx: number): boolean =>\n size < minPx && (unit !== undefined || size >= 1);\n\n/** A JSX attribute's value when it is a string, written either way: `\"x\"` or `{\"x\"}`. */\nexport function jsxStringValue(attribute: ESTree.JSXAttribute): string | null {\n const { value } = attribute;\n if (value === null) {\n return null;\n }\n const inner = value.type === 'JSXExpressionContainer' ? value.expression : value;\n return inner.type === 'Literal' && typeof inner.value === 'string' ? inner.value : null;\n}\n","import type { Context, ESTree, Rule } from '@oxlint/plugins';\n\nimport { docs, isCssTemplate, propertyName, reportMatches } from '../shared';\n\nconst FONT_PROPERTIES = new Set([\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'lineHeight',\n 'letterSpacing',\n 'font-size',\n 'font-weight',\n 'font-family',\n 'line-height',\n 'letter-spacing',\n]);\nconst FONT_DECLARATION =\n /(?<![\\w-])(?:font-size|font-weight|font-family|line-height|letter-spacing)\\s*:/g;\n\nconst message = (name: string) =>\n `Individual font property \\`${name}\\`: use a complete \\`Typography\\` style.`;\n\nexport const completeTypography: Rule = {\n meta: {\n type: 'problem',\n docs: docs('Use a complete `Typography` style, not an individual font property.'),\n },\n createOnce(context: Context) {\n return {\n ObjectExpression(node: ESTree.ObjectExpression) {\n for (const property of node.properties) {\n if (property.type !== 'Property') {\n continue;\n }\n const name = propertyName(property);\n if (name !== null && FONT_PROPERTIES.has(name)) {\n context.report({ node: property.key, message: message(name) });\n }\n }\n },\n TaggedTemplateExpression(node: ESTree.TaggedTemplateExpression) {\n if (!isCssTemplate(node)) {\n return;\n }\n for (const quasi of node.quasi.quasis) {\n reportMatches(context, quasi, FONT_DECLARATION, (match) =>\n message(match[0].replace(/\\s*:$/, '')),\n );\n }\n },\n };\n },\n};\n","import type { Context, ESTree, Rule } from '@oxlint/plugins';\n\nimport {\n docs,\n isCssTemplate,\n isSmallSize,\n jsxStringValue,\n lastName,\n propertyName,\n reportMatches,\n staticMemberName,\n toPx,\n} from '../shared';\n\nconst DEFAULT_MIN_PX = 11;\nconst DEFAULT_ROOT_FONT_PX = 16;\n\nconst EXTRA_SMALL_STYLES = new Set(['TextExtraSmall', 'TextExtraSmallMono']);\nconst PARAGRAPH_SCALES = new Set(['paragraph', 'paragraphMixins']);\nconst SIZED_COMPONENTS = new Set(['Paragraph', 'Label']);\nconst FONT_SIZE_PROPERTIES = new Set(['fontSize', 'font-size']);\nconst RAW_FONT_SIZE = /font-size\\s*:\\s*(\\d*\\.?\\d+)\\s*(px|rem|em)?(?![\\w.])/g;\nconst SIZE_VALUE = /^\\s*(\\d*\\.?\\d+)\\s*(px|rem|em)?\\s*$/;\n\n/** The rule's options, which oxlint has already checked against the schema. */\nfunction readSettings(options: unknown): { minPx: number; rootFontPx: number } {\n const read = (key: string, fallback: number): number => {\n const value: unknown =\n typeof options === 'object' && options !== null ? Reflect.get(options, key) : undefined;\n return typeof value === 'number' ? value : fallback;\n };\n return {\n minPx: read('minPx', DEFAULT_MIN_PX),\n rootFontPx: read('rootFontPx', DEFAULT_ROOT_FONT_PX),\n };\n}\n\nconst small = (what: string) =>\n `${what}: text under the minimum size. Fine for a label inside a graphic (8 px); copy uses \\`TextSmall\\` (12 px).`;\n\n/** The text of a font-size value written as a number, a string or a plain template. */\nfunction sizeText(value: ESTree.Expression): string | null {\n if (value.type === 'Literal') {\n return typeof value.value === 'number' || typeof value.value === 'string'\n ? String(value.value)\n : null;\n }\n if (value.type === 'TemplateLiteral' && value.expressions.length === 0) {\n return value.quasis[0]?.value.cooked ?? null;\n }\n return null;\n}\n\nexport const minCopySize: Rule = {\n meta: {\n type: 'suggestion',\n docs: docs(\n 'Copy is at least 11 CSS px. Fine for a label inside a graphic (8 px); copy uses `TextSmall` (12 px).',\n ),\n schema: [\n {\n type: 'object',\n properties: { minPx: { type: 'number' }, rootFontPx: { type: 'number' } },\n additionalProperties: false,\n },\n ],\n },\n createOnce(context: Context) {\n const settings = () => readSettings(context.options[0]);\n return {\n MemberExpression(node: ESTree.MemberExpression) {\n const name = staticMemberName(node);\n if (name === null) {\n return;\n }\n if (EXTRA_SMALL_STYLES.has(name)) {\n context.report({ node, message: small(`\\`${name}\\``) });\n } else if (name === 'xs') {\n const scale = lastName(node.object);\n if (scale !== null && PARAGRAPH_SCALES.has(scale)) {\n context.report({ node, message: small(`\\`${scale}.xs\\``) });\n }\n }\n },\n JSXOpeningElement(node: ESTree.JSXOpeningElement) {\n if (node.name.type !== 'JSXIdentifier' || !SIZED_COMPONENTS.has(node.name.name)) {\n return;\n }\n for (const attribute of node.attributes) {\n if (\n attribute.type === 'JSXAttribute' &&\n attribute.name.type === 'JSXIdentifier' &&\n attribute.name.name === 'size' &&\n jsxStringValue(attribute) === 'xs'\n ) {\n context.report({\n node: attribute,\n message: small(`\\`<${node.name.name} size=\"xs\">\\``),\n });\n }\n }\n },\n ObjectExpression(node: ESTree.ObjectExpression) {\n const { minPx, rootFontPx } = settings();\n for (const property of node.properties) {\n if (property.type !== 'Property') {\n continue;\n }\n const name = propertyName(property);\n if (name === null || !FONT_SIZE_PROPERTIES.has(name)) {\n continue;\n }\n const text = sizeText(property.value);\n const match = text === null ? null : SIZE_VALUE.exec(text);\n const size = match?.[1];\n const unit = match?.[2];\n if (\n size !== undefined &&\n isSmallSize(toPx(Number(size), unit, rootFontPx), unit, minPx)\n ) {\n context.report({ node: property, message: small(`font-size ${size}${unit ?? 'px'}`) });\n }\n }\n },\n TaggedTemplateExpression(node: ESTree.TaggedTemplateExpression) {\n if (!isCssTemplate(node)) {\n return;\n }\n const { minPx, rootFontPx } = settings();\n for (const quasi of node.quasi.quasis) {\n reportMatches(\n context,\n quasi,\n RAW_FONT_SIZE,\n (match) => small(`font-size ${match[1]}${match[2] ?? 'px'}`),\n (match) => isSmallSize(toPx(Number(match[1]), match[2], rootFontPx), match[2], minPx),\n );\n }\n },\n };\n },\n};\n","import type { Context, ESTree, Rule } from '@oxlint/plugins';\n\nimport { docs, staticMemberName } from '../shared';\n\nconst TABLE_ELEMENTS = new Set(['table', 'th', 'td']);\n\nconst message = (what: string) =>\n `Hand-rolled table markup (${what}). Use \\`Table\\`, \\`DataTable\\` or \\`IndexTableLayout\\`.`;\n\nexport const noRawTable: Rule = {\n meta: {\n type: 'problem',\n docs: docs('Use `Table`, `DataTable` or `IndexTableLayout`, not hand-rolled table markup.'),\n },\n createOnce(context: Context) {\n return {\n JSXOpeningElement(node: ESTree.JSXOpeningElement) {\n if (node.name.type === 'JSXIdentifier' && TABLE_ELEMENTS.has(node.name.name)) {\n context.report({ node: node.name, message: message(`<${node.name.name}>`) });\n }\n },\n MemberExpression(node: ESTree.MemberExpression) {\n const name = staticMemberName(node);\n if (\n name !== null &&\n TABLE_ELEMENTS.has(name) &&\n node.object.type === 'Identifier' &&\n node.object.name === 'styled'\n ) {\n context.report({ node, message: message(`styled.${name}`) });\n }\n },\n CallExpression(node: ESTree.CallExpression) {\n const [argument] = node.arguments;\n if (\n node.callee.type === 'Identifier' &&\n node.callee.name === 'styled' &&\n argument?.type === 'Literal' &&\n typeof argument.value === 'string' &&\n TABLE_ELEMENTS.has(argument.value)\n ) {\n context.report({ node, message: message(`styled('${argument.value}')`) });\n }\n },\n };\n },\n};\n","import type { Context, ESTree, Location, Rule } from '@oxlint/plugins';\n\nimport { docs, isCssTemplate, propertyName, rootIdentifier, sourceText } from '../shared';\n\nconst MOTION_PROPERTIES = new Set([\n 'animation',\n 'animationName',\n 'transition',\n 'transitionProperty',\n 'animation-name',\n 'transition-property',\n]);\nconst MOTION_DECLARATION =\n /@keyframes\\b|(?<![\\w-])(?:animation|animation-name|transition|transition-property)\\s*:/g;\nconst REDUCED_MOTION = 'prefers-reduced-motion';\n\nconst MESSAGE =\n 'Animation or transition in a file with no `prefers-reduced-motion` block. Add one that turns it off.';\n\nexport const reducedMotion: Rule = {\n meta: {\n type: 'suggestion',\n docs: docs(\n 'Animation or transition only in a file with a `prefers-reduced-motion` block. Reported once per file, at the first one.',\n ),\n },\n createOnce(context: Context) {\n let first: Location | null = null;\n let hasReducedMotion = false;\n const note = (location: Location) => {\n first ??= location;\n };\n const noteReducedMotion = (text: string) => {\n if (text.includes(REDUCED_MOTION)) {\n hasReducedMotion = true;\n }\n };\n return {\n before() {\n first = null;\n hasReducedMotion = false;\n },\n Literal(node) {\n if (typeof node.value === 'string') {\n noteReducedMotion(node.value);\n }\n },\n TemplateElement(node) {\n noteReducedMotion(sourceText(context, node));\n },\n ObjectExpression(node: ESTree.ObjectExpression) {\n for (const property of node.properties) {\n const name = property.type === 'Property' ? propertyName(property) : null;\n if (property.type === 'Property' && name !== null && MOTION_PROPERTIES.has(name)) {\n note(property.key.loc);\n }\n }\n },\n TaggedTemplateExpression(node: ESTree.TaggedTemplateExpression) {\n if (!isCssTemplate(node)) {\n return;\n }\n if (rootIdentifier(node.tag) === 'keyframes') {\n note(node.loc);\n }\n const { sourceCode } = context;\n for (const quasi of node.quasi.quasis) {\n const [start] = quasi.range;\n for (const match of sourceText(context, quasi).matchAll(MOTION_DECLARATION)) {\n const index = start + match.index;\n note({\n start: sourceCode.getLocFromIndex(index),\n end: sourceCode.getLocFromIndex(index + match[0].length),\n });\n }\n }\n },\n after() {\n if (first !== null && !hasReducedMotion) {\n context.report({ message: MESSAGE, loc: first });\n }\n },\n };\n },\n};\n","import type { Context, ESTree, Rule } from '@oxlint/plugins';\n\nimport { docs, reportMatches, staticMemberName } from '../shared';\n\nconst HEX = /(?<![\\w&/#])#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})\\b/g;\nconst LINK_ATTRIBUTES = new Set(['href', 'to']);\nconst MODULE_PARENTS = new Set([\n 'ImportDeclaration',\n 'ExportNamedDeclaration',\n 'ExportAllDeclaration',\n 'ImportExpression',\n]);\n\nconst isSemanticColorCall = (node: ESTree.CallExpression): boolean =>\n node.callee.type === 'Identifier' && node.callee.name === 'semanticColor';\n\nconst isLinkAttribute = (node: ESTree.JSXAttribute): boolean =>\n node.name.type === 'JSXIdentifier' && LINK_ATTRIBUTES.has(node.name.name);\n\nexport const semanticColor: Rule = {\n meta: {\n type: 'problem',\n docs: docs(\n 'Paint with a semantic token (`semanticColor`), not a hex value or a `Color.*` outside its fallback.',\n ),\n },\n createOnce(context: Context) {\n let insideSemanticColor = 0;\n let insideLink = 0;\n const checkText = (node: ESTree.Node) => {\n if (insideLink === 0) {\n reportMatches(\n context,\n node,\n HEX,\n (match) => `Hex colour ${match[0]}: paint with a semantic token (\\`semanticColor\\`).`,\n );\n }\n };\n return {\n before() {\n insideSemanticColor = 0;\n insideLink = 0;\n },\n CallExpression(node) {\n if (isSemanticColorCall(node)) {\n insideSemanticColor++;\n }\n },\n 'CallExpression:exit'(node) {\n if (isSemanticColorCall(node)) {\n insideSemanticColor--;\n }\n },\n JSXAttribute(node) {\n if (isLinkAttribute(node)) {\n insideLink++;\n }\n },\n 'JSXAttribute:exit'(node) {\n if (isLinkAttribute(node)) {\n insideLink--;\n }\n },\n Literal(node) {\n if (typeof node.value === 'string' && !MODULE_PARENTS.has(node.parent.type)) {\n checkText(node);\n }\n },\n TemplateElement: checkText,\n MemberExpression(node) {\n const name = staticMemberName(node);\n if (\n insideSemanticColor === 0 &&\n name !== null &&\n node.object.type === 'Identifier' &&\n node.object.name === 'Color' &&\n /^[A-Z]\\w*$/.test(name)\n ) {\n context.report({\n node,\n message: `\\`Color.${name}\\` outside \\`semanticColor\\`: paint with a semantic token, with this as its fallback.`,\n });\n }\n },\n };\n },\n};\n","import type { Plugin } from '@oxlint/plugins';\n\nimport { completeTypography } from './rules/complete-typography';\nimport { minCopySize } from './rules/min-copy-size';\nimport { noRawTable } from './rules/no-raw-table';\nimport { reducedMotion } from './rules/reduced-motion';\nimport { semanticColor } from './rules/semantic-color';\n\n/**\n * The product UI standard's automated checks as an oxlint JS plugin. Load it with\n * `\"jsPlugins\": [\"@persona/design-system/lint\"]` and enable rules as `pds/<rule>`.\n */\nconst plugin: Plugin = {\n meta: { name: 'pds' },\n rules: {\n 'semantic-color': semanticColor,\n 'complete-typography': completeTypography,\n 'min-copy-size': minCopySize,\n 'reduced-motion': reducedMotion,\n 'no-raw-table': noRawTable,\n },\n};\n\nexport default plugin;\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ {
2
+ "jsPlugins": ["./index.mjs"],
3
+ "rules": {
4
+ "pds/semantic-color": "error",
5
+ "pds/complete-typography": "error",
6
+ "pds/no-raw-table": "error",
7
+ "pds/min-copy-size": "warn",
8
+ "pds/reduced-motion": "warn"
9
+ }
10
+ }
@@ -1,7 +1,7 @@
1
- import { n as PossibleChainSchema } from "./chainTypes-Cjp0zZ4E.mjs";
2
- import { a as Mode, u as ValueType } from "./types-DWU0Dmy9.mjs";
1
+ import { n as PossibleChainSchema } from "./chainTypes-aF5rWav-.mjs";
2
+ import { a as Mode, u as ValueType } from "./types-XjJqUj-p.mjs";
3
3
 
4
- //#region components/SmartTextInput/listbox-options.d.ts
4
+ //#region src/components/SmartTextInput/listbox-options.d.ts
5
5
  type MethodChainOption = {
6
6
  id: string;
7
7
  type: 'method-chain-option';
@@ -35,4 +35,4 @@ declare const getContextMenuOptions: (valueIsEmpty: boolean, allowedValueType: V
35
35
  declare const getMethodChainOptions: (options: PossibleChainSchema[]) => MethodChainOption[];
36
36
  //#endregion
37
37
  export { SmartTextInputOption as a, isContextMenuOption as c, MethodChainOption as i, isMethodChainOption as l, ContextMenuOption as n, getContextMenuOptions as o, EXIT_METHOD_CHAIN_VALUE_TYPE_OPTION as r, getMethodChainOptions as s, ContextMenuExamples as t };
38
- //# sourceMappingURL=listbox-options-DCmqWWgy.d.mts.map
38
+ //# sourceMappingURL=listbox-options-CkwENvff.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as SmartTextInputOption, c as isContextMenuOption, i as MethodChainOption, l as isMethodChainOption, n as ContextMenuOption, o as getContextMenuOptions, r as EXIT_METHOD_CHAIN_VALUE_TYPE_OPTION, s as getMethodChainOptions, t as ContextMenuExamples } from "./listbox-options-DCmqWWgy.mjs";
1
+ import { a as SmartTextInputOption, c as isContextMenuOption, i as MethodChainOption, l as isMethodChainOption, n as ContextMenuOption, o as getContextMenuOptions, r as EXIT_METHOD_CHAIN_VALUE_TYPE_OPTION, s as getMethodChainOptions, t as ContextMenuExamples } from "./listbox-options-CkwENvff.mjs";
2
2
  export { ContextMenuExamples, ContextMenuOption, EXIT_METHOD_CHAIN_VALUE_TYPE_OPTION, MethodChainOption, SmartTextInputOption, getContextMenuOptions, getMethodChainOptions, isContextMenuOption, isMethodChainOption };
@@ -0,0 +1,23 @@
1
+ import { Node } from "@tiptap/pm/model";
2
+
3
+ //#region src/components/RichTextEditor/markdownUtils.d.ts
4
+ /**
5
+ * Collapses double newlines between pipe-delimited table rows into single
6
+ * newlines. TipTap creates paragraph nodes for every Enter, and tiptap-markdown
7
+ * serializes paragraphs as \n\n. GFM tables require single newlines between
8
+ * rows to be parsed as a contiguous table block.
9
+ *
10
+ * Only affects lines that start/end with pipe characters — normal paragraph
11
+ * breaks are preserved.
12
+ */
13
+ declare const normalizeTableNewlines: (text: string) => string;
14
+ /**
15
+ * Whether the doc holds no content at all, i.e. it matches the schema's default
16
+ * empty doc. `Editor#isEmpty` also reports true for docs made of structurally
17
+ * empty nodes (a table of blank cells), which still carry real structure worth
18
+ * serializing to markdown.
19
+ */
20
+ declare const isEditorDocEmpty: (doc: Node) => boolean;
21
+ //#endregion
22
+ export { isEditorDocEmpty, normalizeTableNewlines };
23
+ //# sourceMappingURL=markdownUtils.d.mts.map
@@ -1,4 +1,4 @@
1
- //#region lib/message.d.ts
1
+ //#region src/lib/message.d.ts
2
2
  declare enum MessageType {
3
3
  Success = "success",
4
4
  Failure = "failure",
@@ -6,4 +6,4 @@ declare enum MessageType {
6
6
  }
7
7
  //#endregion
8
8
  export { MessageType as t };
9
- //# sourceMappingURL=message-Dti22dmx.d.mts.map
9
+ //# sourceMappingURL=message-klSuXfNN.d.mts.map
@@ -1,8 +1,8 @@
1
- import { u as ASTNodeType } from "./types-Kmnood9Y.mjs";
2
- import { n as JsonSchema } from "./jsonSchema-DmOA0Lnu.mjs";
3
- import { a as FunctionParamType, c as NumberNode, i as FunctionNode, l as StringNode, n as Chain, o as IdentifierNode, r as CustomFunctionNode, s as MethodChainNode, t as ArrayNode } from "./methodChainTypes-a7kHYhs7.mjs";
1
+ import { u as ASTNodeType } from "./types-C2RhHxbE.mjs";
2
+ import { n as JsonSchema } from "./jsonSchema-DUkfAip_.mjs";
3
+ import { a as FunctionParamType, c as NumberNode, i as FunctionNode, l as StringNode, n as Chain, o as IdentifierNode, r as CustomFunctionNode, s as MethodChainNode, t as ArrayNode } from "./methodChainTypes-BtbYWrdP.mjs";
4
4
 
5
- //#region components/SmartTextInput/parser/method-chain/parser.d.ts
5
+ //#region src/components/SmartTextInput/parser/method-chain/parser.d.ts
6
6
  declare class SyntaxError extends Error {
7
7
  expected: string[];
8
8
  found: string;
@@ -12,7 +12,7 @@ declare class SyntaxError extends Error {
12
12
  };
13
13
  }
14
14
  //#endregion
15
- //#region lib/methodChain.d.ts
15
+ //#region src/lib/methodChain.d.ts
16
16
  declare const methodChainCache: {
17
17
  [key: string]: Chain;
18
18
  };
@@ -63,4 +63,4 @@ declare const getSyntaxError: () => typeof SyntaxError;
63
63
  declare const methodChainNodeToJsonSchema: (node: StringNode | NumberNode | ArrayNode) => JsonSchema | null;
64
64
  //#endregion
65
65
  export { tryParseMethodChain as C, removeFunctionNode as S, methodChainToString as _, getFunctionParams as a, pathContainsFunctionNode as b, isCustomFunctionNode as c, isIdentifierNode as d, isStringNode as f, methodChainRootName as g, methodChainNodeToJsonSchema as h, containsFunctionNode as i, isEmpty as l, methodChainCache as m, MethodChainNodeTypes as n, getSyntaxError as o, isValid as p, appendedMethodChain as r, isArrayNode as s, EMPTY_METHOD_CHAIN as t, isFunctionNode as u, parseMethodChain as v, pathIsNormative as x, parseWithPartialOption as y };
66
- //# sourceMappingURL=methodChain-DaDvXsHF.d.mts.map
66
+ //# sourceMappingURL=methodChain-CRYRDa1k.d.mts.map
@@ -1,16 +1,16 @@
1
- import { i as peg$parse, n as peg$SyntaxError } from "./parser-BeTiVjRs.mjs";
1
+ import { i as peg$parse, n as peg$SyntaxError } from "./parser-BQ2aDi7S.mjs";
2
2
  import "./lib/jsonSchema.mjs";
3
3
  import { reportError } from "./lib/errorReporter.mjs";
4
4
  import "./components/SmartTextInput/parser/method-chain/types.mjs";
5
5
  import { normalizeChain } from "./lib/methodChainNormalize.mjs";
6
6
  import { last } from "lodash-es";
7
- //#region lib/assertNever.ts
7
+ //#region src/lib/assertNever.ts
8
8
  function assertNever(value) {
9
9
  const dump = typeof value === "object" ? JSON.stringify(value) : value;
10
10
  reportError(/* @__PURE__ */ new TypeError(`assertNever non-exhaustive match: ${dump}`));
11
11
  }
12
12
  //#endregion
13
- //#region lib/methodChain.ts
13
+ //#region src/lib/methodChain.ts
14
14
  const methodChainCache = {};
15
15
  const MethodChainNodeTypes = {
16
16
  Chain: "chain",
@@ -238,4 +238,4 @@ const methodChainNodeToJsonSchema = (node) => {
238
238
  //#endregion
239
239
  export { tryParseMethodChain as C, removeFunctionNode as S, methodChainToString as _, getFunctionParams as a, pathContainsFunctionNode as b, isCustomFunctionNode as c, isIdentifierNode as d, isStringNode as f, methodChainRootName as g, methodChainNodeToJsonSchema as h, containsFunctionNode as i, isEmpty$1 as l, methodChainCache as m, MethodChainNodeTypes as n, getSyntaxError as o, isValid as p, appendedMethodChain as r, isArrayNode as s, EMPTY_METHOD_CHAIN as t, isFunctionNode as u, parseMethodChain as v, assertNever as w, pathIsNormative as x, parseWithPartialOption as y };
240
240
 
241
- //# sourceMappingURL=methodChain-xZ1_vhbz.mjs.map
241
+ //# sourceMappingURL=methodChain-LVNHiGPB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"methodChain-LVNHiGPB.mjs","names":["isEmpty","updatedParse","UpdatedSyntaxError"],"sources":["../src/lib/assertNever.ts","../src/lib/methodChain.ts"],"sourcesContent":["import { reportError } from './errorReporter';\n\n// @ts-expect-error Returns never so the compiler checks exhaustiveness, but doesn't throw so a malformed\n// value degrades instead of breaking render.\nexport function assertNever(value: never): never {\n const dump = typeof value === 'object' ? JSON.stringify(value) : value;\n reportError(new TypeError(`assertNever non-exhaustive match: ${dump}`));\n}\n","import { last } from 'lodash-es';\n\nimport {\n parse as updatedParse,\n SyntaxError as UpdatedSyntaxError,\n} from '@persona/design-system/components/SmartTextInput/parser/method-chain/parser';\nimport { ASTNodeType } from '@persona/design-system/components/SmartTextInput/parser/method-chain/types';\n\nimport { assertNever } from './assertNever';\nimport { type JsonSchema, JsonSchemaTypes } from './jsonSchema';\nimport { normalizeChain } from './methodChainNormalize';\nimport type {\n Chain,\n FunctionNode,\n CustomFunctionNode,\n IdentifierNode,\n StringNode,\n NumberNode,\n ArrayNode,\n FunctionParamType,\n MethodChainNode,\n} from './methodChainTypes';\n\n// Re-export types for backward compatibility\nexport {\n Chain,\n FunctionNode,\n CustomFunctionNode,\n IdentifierNode,\n StringNode,\n NumberNode,\n ArrayNode,\n FunctionParamType,\n MethodChainNode,\n};\n\nexport const methodChainCache: { [key: string]: Chain } = {};\n\nexport const MethodChainNodeTypes = {\n Chain: ASTNodeType.Chain,\n String: ASTNodeType.String,\n Number: ASTNodeType.Number,\n Identifier: ASTNodeType.Identifier,\n Function: ASTNodeType.Function,\n CustomFunction: ASTNodeType.CustomFunction,\n Array: ASTNodeType.Array,\n} as const;\n\nexport const EMPTY_METHOD_CHAIN: Chain = {\n type: MethodChainNodeTypes.Chain,\n links: [],\n};\n\ntype MethodChainLiteral = string | number | (string | number)[];\n\nexport const isFunctionNode = (node: MethodChainNode): node is FunctionNode =>\n node.type === MethodChainNodeTypes.Function;\n\nexport const isCustomFunctionNode = (node: MethodChainNode): node is CustomFunctionNode =>\n node.type === MethodChainNodeTypes.CustomFunction;\n\nexport const isIdentifierNode = (node: MethodChainNode): node is IdentifierNode =>\n node.type === MethodChainNodeTypes.Identifier;\n\nexport const isStringNode = (node: FunctionParamType): node is StringNode =>\n node.type === MethodChainNodeTypes.String;\n\nexport const isArrayNode = (node: FunctionParamType): node is ArrayNode =>\n node.type === MethodChainNodeTypes.Array;\n\nexport const containsFunctionNode = (methodChain: Chain, ...functionNames: string[]): boolean =>\n methodChain.links.some((link) => isFunctionNode(link) && functionNames.includes(link.name));\n\n/**\n * Returns true if the string contains any function node (e.g. `.at(...)`) when parsed\n * as a method chain. Use this to detect whether a field path must be treated as an\n * opaque key rather than split on `.` for Lodash set/get operations.\n */\nexport const pathContainsFunctionNode = (path: string): boolean => {\n try {\n const chain = parseMethodChain(path);\n return chain.links.some(\n (link) =>\n link.type === MethodChainNodeTypes.Function ||\n link.type === MethodChainNodeTypes.CustomFunction,\n );\n } catch {\n return false;\n }\n};\n\nexport const isEmpty = (methodChain: Chain): boolean => methodChain.links.length === 0;\n\nexport const getFunctionParams = (\n methodChain: Chain,\n ...functionNames: string[]\n): Record<string, MethodChainLiteral[]> => {\n return Object.fromEntries(\n methodChain.links\n .filter((link) => isFunctionNode(link))\n .filter((link) => functionNames.includes(link.name))\n .map((link) => [link.name, flattenParamsToString(link.params)]),\n );\n};\n\nexport const removeFunctionNode = (methodChain: Chain, functionName: string): Chain => {\n return {\n type: MethodChainNodeTypes.Chain,\n links: methodChain.links.filter(\n (link) => link.type !== MethodChainNodeTypes.Function || link.name !== functionName,\n ),\n };\n};\n\nconst flattenParamsToString = (params: FunctionParamType[]): MethodChainLiteral[] => {\n const result: MethodChainLiteral[] = [];\n\n for (const param of params) {\n switch (param.type) {\n case MethodChainNodeTypes.Chain:\n result.push(...flattenChainToString(param));\n break;\n case MethodChainNodeTypes.String:\n case MethodChainNodeTypes.Number:\n result.push(param.value);\n break;\n case MethodChainNodeTypes.Array:\n result.push(param.items.map((item) => item.value));\n break;\n }\n }\n\n return result;\n};\n\nconst flattenChainToString = (methodChain: Chain): MethodChainLiteral[] =>\n methodChain.links\n .map((link) => {\n switch (link.type) {\n case MethodChainNodeTypes.Function:\n case MethodChainNodeTypes.CustomFunction:\n return flattenParamsToString(link.params);\n case MethodChainNodeTypes.Identifier:\n return link.name;\n }\n })\n .flat();\n\nexport const isValid = (methodChain: string): boolean => {\n try {\n parseMethodChain(methodChain);\n return true;\n } catch {\n return false;\n }\n};\n\n/**\n * The parsed chain, or undefined when it will not parse. Callers that read a chain while it is being\n * authored hold half-typed input, where a throw is noise rather than an error.\n */\nexport const tryParseMethodChain = (methodChain: string): Chain | undefined => {\n try {\n return parseMethodChain(methodChain);\n } catch {\n return undefined;\n }\n};\n\n/** The object a chain is rooted at: `current_case.inquiries` -> `current_case`. */\nexport const methodChainRootName = (methodChain: string): string | undefined => {\n const [root] = tryParseMethodChain(methodChain)?.links ?? [];\n return root && isIdentifierNode(root) ? root.name : undefined;\n};\n\nexport const parseMethodChain = (methodChain: string): Chain => {\n if (!methodChain || methodChain === '') {\n return EMPTY_METHOD_CHAIN;\n }\n\n if (!methodChainCache[methodChain]) {\n methodChainCache[methodChain] = normalizeChain(updatedParse(methodChain, { strict: true }));\n }\n return methodChainCache[methodChain];\n};\n\nconst memberToString = (value: string): string => {\n return `'${value.replace(/'/g, \"\\\\'\")}'`;\n};\n\n// Number#toString gives the shortest decimal string that round-trips back to the same\n// float64, but for magnitudes below 1e-6 (or above 1e21) it switches to exponential\n// notation (e.g. `0.0000001` -> \"1e-7\"), which the method chain grammar's plain-decimal\n// literal can't parse. Expand that exponential form back into plain decimal by shifting\n// its digits, rather than capping fraction digits (e.g. via toLocaleString), which silently\n// rounds magnitudes below the cap to \"0\" instead of reproducing them.\nconst expandExponentialNotation = (str: string): string => {\n const match = /^(-?)(\\d)(?:\\.(\\d+))?e([+-]\\d+)$/.exec(str);\n if (!match) {\n return str;\n }\n const [, sign, leadingDigit, fractionDigits = '', exponentStr] = match;\n const digits = leadingDigit + fractionDigits;\n const exponent = Number(exponentStr);\n\n if (exponent < 0) {\n return `${sign}0.${'0'.repeat(-exponent - 1)}${digits}`;\n }\n // Positive exponential notation only appears at exponent >= 21 (Number#toString's own\n // threshold), while a double's mantissa never carries more than 17 significant digits,\n // so the exponent always reaches past the end of `digits` — there's no case where the\n // decimal point lands inside them.\n return `${sign}${digits}${'0'.repeat(exponent - fractionDigits.length)}`;\n};\n\nconst numberLiteralToString = (value: number): string => {\n // The grammar has no literal for Infinity/NaN; render/label call sites have no way to\n // recover from a throw, so fall back to JS's own string form instead of crashing them.\n if (!Number.isFinite(value)) {\n return `${value}`;\n }\n\n const str = value.toString();\n return /e/i.test(str) ? expandExponentialNotation(str) : str;\n};\n\nexport const methodChainToString = (\n methodChain: Chain | StringNode | NumberNode | ArrayNode,\n): string => {\n switch (methodChain.type) {\n case MethodChainNodeTypes.String:\n return methodChain.value;\n case MethodChainNodeTypes.Number:\n return numberLiteralToString(methodChain.value);\n case MethodChainNodeTypes.Array:\n return `[${methodChain.items\n .map((item) =>\n item.type === MethodChainNodeTypes.String\n ? memberToString(item.value)\n : `#${numberLiteralToString(item.value)}`,\n )\n .join(', ')}]`;\n default: {\n const regex = new RegExp('^@?[a-zA-Z0-9_-]+$');\n return methodChain.links\n .map((link, index) => {\n switch (link.type) {\n case MethodChainNodeTypes.Identifier: {\n const fullName = `${link.prefix ?? ''}${link.name}`;\n return index === 0\n ? fullName\n : regex.test(fullName)\n ? `.${fullName}`\n : `['${fullName.replace(/'/g, \"\\\\'\")}']`;\n }\n case MethodChainNodeTypes.Function: {\n return `.${link.name}(${link.params\n .map((param) => {\n switch (param.type) {\n case MethodChainNodeTypes.String:\n return memberToString(param.value);\n case MethodChainNodeTypes.Number:\n return `#${numberLiteralToString(param.value)}`;\n case MethodChainNodeTypes.Chain:\n case MethodChainNodeTypes.Array:\n return methodChainToString(param);\n }\n })\n .join(', ')})`;\n }\n case MethodChainNodeTypes.CustomFunction: {\n const paramStr = link.params\n .map((param) => {\n switch (param.type) {\n case MethodChainNodeTypes.String:\n return memberToString(param.value);\n case MethodChainNodeTypes.Number:\n return `#${numberLiteralToString(param.value)}`;\n case MethodChainNodeTypes.Chain:\n case MethodChainNodeTypes.Array:\n return methodChainToString(param);\n }\n })\n .join(', ');\n return [\n index === 0 ? '' : '.',\n `@${link.name}`,\n link.params.length === 0 ? '' : `(${paramStr})`,\n ].join('');\n }\n default:\n assertNever(link);\n }\n })\n .join('');\n }\n }\n};\n\nexport const appendedMethodChain = (\n parentChain: Chain,\n appended: string | MethodChainNode,\n): Chain => {\n const buildNode = (name: string): MethodChainNode => {\n if (name.startsWith('@')) {\n return { type: MethodChainNodeTypes.CustomFunction, name: name.slice(1), params: [] };\n }\n return { type: MethodChainNodeTypes.Identifier, name };\n };\n\n return {\n type: MethodChainNodeTypes.Chain,\n links: [...parentChain.links, typeof appended === 'string' ? buildNode(appended) : appended],\n };\n};\n\nexport const parseWithPartialOption = (\n path: string,\n): { methodChain: Chain; partial: string; valid: boolean } => {\n if (isValid(path)) {\n const methodChain = parseMethodChain(path);\n\n return {\n methodChain: {\n type: MethodChainNodeTypes.Chain,\n links: methodChain.links.slice(0, methodChain.links.length - 1),\n },\n partial: last(methodChain.links)?.name || '',\n valid: true,\n };\n }\n\n const rawParse = (input: string): Chain => {\n return normalizeChain(updatedParse(input, { strict: true }));\n };\n\n try {\n if (path.endsWith('.')) {\n return {\n methodChain: rawParse(path.slice(0, -1)),\n partial: '',\n valid: true,\n };\n }\n\n if (path.lastIndexOf('[') > path.lastIndexOf(']')) {\n const partialString = path.slice(path.lastIndexOf('[') + 2);\n const partialValue = partialString.endsWith(\"'\") ? partialString.slice(0, -1) : partialString;\n return {\n methodChain: rawParse(path.slice(0, path.lastIndexOf('['))),\n partial: partialValue,\n valid: true,\n };\n }\n } catch {\n /* empty */\n }\n\n return {\n methodChain: EMPTY_METHOD_CHAIN,\n partial: path,\n valid: false,\n };\n};\n\n// Check if the path can be parsed as legacy method chain format.\n// Normative means all the name parts are\n// 1. delimited by only dots and\n// 2. only contain alphanumeric characters, underscores, and hyphens.\nexport const pathIsNormative = (path: string): boolean => {\n return path.split('.').every((part) => /^[a-zA-Z0-9_-]+$/.test(part));\n};\nexport const getSyntaxError = (): typeof UpdatedSyntaxError => UpdatedSyntaxError;\n\nexport const methodChainNodeToJsonSchema = (\n node: StringNode | NumberNode | ArrayNode,\n): JsonSchema | null => {\n if (node.type === MethodChainNodeTypes.String) {\n return {\n type: JsonSchemaTypes.String,\n };\n } else if (node.type === MethodChainNodeTypes.Number) {\n return {\n type: JsonSchemaTypes.Number,\n };\n } else if (node.type === MethodChainNodeTypes.Array) {\n // Determine the items schema based on the first item type\n // For simplicity, assume all items are the same type\n if (node.items.length > 0) {\n const firstItem = node.items[0];\n const itemSchema: JsonSchema =\n firstItem.type === MethodChainNodeTypes.String\n ? { type: JsonSchemaTypes.String }\n : { type: JsonSchemaTypes.Number };\n\n return {\n type: JsonSchemaTypes.Array,\n items: itemSchema,\n };\n } else {\n return {\n type: JsonSchemaTypes.Array,\n items: { type: JsonSchemaTypes.String },\n };\n }\n }\n\n return null;\n};\n"],"mappings":"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"}