@persona/design-system 0.10.5 → 0.10.7

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 (559) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/Accordion.d.mts +1 -1
  3. package/dist/AccordionItem.d.mts +1 -1
  4. package/dist/{Action-Bmo8B-Q3.d.mts → Action-BLMJwLBV.d.mts} +3 -3
  5. package/dist/Action.d.mts +1 -1
  6. package/dist/AdvancedFilterRuleRow.d.mts +2 -2
  7. package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
  8. package/dist/ArrayValueControl.d.mts +1 -1
  9. package/dist/Attribute.d.mts +3 -3
  10. package/dist/Badge-8YzapjWf.mjs.map +1 -1
  11. package/dist/BooleanValueControl.d.mts +1 -1
  12. package/dist/BottomPanel.d.mts +7 -0
  13. package/dist/{Breadcrumb-DnY8n3EL.d.mts → Breadcrumb-chGXhl3V.d.mts} +1 -1
  14. package/dist/Breadcrumb.d.mts +1 -1
  15. package/dist/{Breadcrumbs-DRu_JfdI.d.mts → Breadcrumbs-ChKWIuRq.d.mts} +2 -2
  16. package/dist/Breadcrumbs-Dft2TR4v.mjs.map +1 -1
  17. package/dist/Breadcrumbs.d.mts +1 -1
  18. package/dist/{Button-Cg8KyT5M.d.mts → Button-B79_aXfC.d.mts} +4 -4
  19. package/dist/Button.d.mts +1 -1
  20. package/dist/{Calendar-D-6WOLJ1.d.mts → Calendar-50D7poM_.d.mts} +1 -1
  21. package/dist/Calendar.d.mts +1 -1
  22. package/dist/CalendarBase.d.mts +1 -1
  23. package/dist/CalendarCell.d.mts +1 -1
  24. package/dist/CalendarGrid.d.mts +1 -1
  25. package/dist/{Card-CfECLwQ6.d.mts → Card-DOIqF954.d.mts} +3 -3
  26. package/dist/Card-DuQHyroh.mjs.map +1 -1
  27. package/dist/Card.d.mts +1 -1
  28. package/dist/CardGrouping.d.mts +2 -2
  29. package/dist/CardV2-BRJbRSts.mjs.map +1 -1
  30. package/dist/Checkbox-Dr4LMKHV.mjs.map +1 -1
  31. package/dist/{Checkbox-ZywrdT_h.d.mts → Checkbox-EgYclGfH.d.mts} +1 -1
  32. package/dist/Checkbox.d.mts +1 -1
  33. package/dist/{CheckboxGroupField-UHpA38U5.d.mts → CheckboxGroupField-Cw-1UxIW.d.mts} +3 -3
  34. package/dist/CheckboxGroupField.d.mts +1 -1
  35. package/dist/ChoicesValueControl.d.mts +1 -1
  36. package/dist/{Combobox-BXkcQ2aY.d.mts → Combobox-BkDYZlUh.d.mts} +3 -3
  37. package/dist/Combobox-DQxaOCLA.mjs.map +1 -1
  38. package/dist/Combobox.d.mts +2 -2
  39. package/dist/{ComboboxBase-D2rDQHYZ.d.mts → ComboboxBase-1Xy4pnRV.d.mts} +6 -6
  40. package/dist/ComboboxBase.d.mts +1 -1
  41. package/dist/{ComboboxMultiSelect-CrvB6ap5.d.mts → ComboboxMultiSelect-DHf7NK7Z.d.mts} +2 -2
  42. package/dist/ComboboxMultiSelect.d.mts +1 -1
  43. package/dist/{ComboboxSingleSelect-Dp0iTdDO.d.mts → ComboboxSingleSelect-Ble5PcXQ.d.mts} +4 -4
  44. package/dist/ComboboxSingleSelect.d.mts +1 -1
  45. package/dist/{CompactBar-zYfXjFmn.d.mts → CompactBar-DmoFq5i6.d.mts} +3 -3
  46. package/dist/CompactBar.d.mts +1 -1
  47. package/dist/{ControlBar-kJ_eWf8f.d.mts → ControlBar-dqzVo6e6.d.mts} +2 -2
  48. package/dist/ControlBar.d.mts +1 -1
  49. package/dist/{DataTable-DEJHWrsy.mjs → DataTable-B7QqP6YU.mjs} +8 -7
  50. package/dist/DataTable-B7QqP6YU.mjs.map +1 -0
  51. package/dist/{DataTable-C000E74h.d.mts → DataTable-Cblw6bLk.d.mts} +7 -6
  52. package/dist/DataTable.d.mts +1 -1
  53. package/dist/{DateField-g7malFm-.d.mts → DateField-CbTxDzYF.d.mts} +2 -2
  54. package/dist/DateField.d.mts +1 -1
  55. package/dist/{DatePicker-8kUpFFh8.d.mts → DatePicker-1BADH9Pi.d.mts} +2 -2
  56. package/dist/{DatePicker-D-_ibUd1.mjs → DatePicker-CHaNe2Es.mjs} +2 -2
  57. package/dist/DatePicker-CHaNe2Es.mjs.map +1 -0
  58. package/dist/DatePicker.d.mts +1 -1
  59. package/dist/{DateRangePicker-Nv4uNuIW.d.mts → DateRangePicker-fq-_pFpg.d.mts} +3 -3
  60. package/dist/DateRangePicker.d.mts +1 -1
  61. package/dist/DateRangeValueControl.d.mts +2 -2
  62. package/dist/DateValueControl.d.mts +1 -1
  63. package/dist/DropdownButton-BiFRlSVD.mjs.map +1 -1
  64. package/dist/DropdownButton.d.mts +2 -2
  65. package/dist/{DropdownMenu-CQbS7ML5.d.mts → DropdownMenu-DjdNBJqP.d.mts} +2 -2
  66. package/dist/DropdownMenu-Q8S-9rXm.mjs.map +1 -1
  67. package/dist/DropdownMenu.d.mts +1 -1
  68. package/dist/{ErrorProps-Cy-APmdC.d.mts → ErrorProps-D4G9EWX2.d.mts} +1 -1
  69. package/dist/ErrorProps.d.mts +1 -1
  70. package/dist/{FieldRegistry-a44G08fS.d.mts → FieldRegistry-CPr7YoG5.d.mts} +2 -2
  71. package/dist/FieldRegistry.d.mts +1 -1
  72. package/dist/{FilterBar-BpMguIXl.d.mts → FilterBar-DPCPfr4_.d.mts} +4 -4
  73. package/dist/FilterBar.d.mts +1 -1
  74. package/dist/FilterPickerMenu.d.mts +2 -2
  75. package/dist/FilterPill.d.mts +1 -1
  76. package/dist/FilterPopover.d.mts +1 -1
  77. package/dist/FloatValueControl.d.mts +1 -1
  78. package/dist/{FloatingActionBar-DPA9v_yH.d.mts → FloatingActionBar-u3TJcigs.d.mts} +1 -1
  79. package/dist/FloatingActionBar.d.mts +1 -1
  80. package/dist/FloatingToolbar-Df90f7Dm.mjs +493 -0
  81. package/dist/FloatingToolbar-Df90f7Dm.mjs.map +1 -0
  82. package/dist/FloatingToolbar.d.mts +1 -1
  83. package/dist/FormControl-BztNXLn6.mjs.map +1 -1
  84. package/dist/{FormControl-TkYMZeBd.d.mts → FormControl-D8vpeAPI.d.mts} +2 -2
  85. package/dist/FormControl.d.mts +1 -1
  86. package/dist/FormControlLabel.d.mts +1 -1
  87. package/dist/{FormField-g1zQFM9T.mjs → FormField-BStxmlZT.mjs} +2 -2
  88. package/dist/FormField-BStxmlZT.mjs.map +1 -0
  89. package/dist/{FormField-PBo1ctY8.d.mts → FormField-C6vp1Vfe.d.mts} +3 -3
  90. package/dist/FormField.d.mts +1 -1
  91. package/dist/{Grid-BtTuj5mR.mjs → Grid-CYpOqTUu.mjs} +1 -1
  92. package/dist/{Grid-BtTuj5mR.mjs.map → Grid-CYpOqTUu.mjs.map} +1 -1
  93. package/dist/{Header-fwlbzxYx.d.mts → Header-C9oYPBLv.d.mts} +1 -1
  94. package/dist/Header.d.mts +1 -1
  95. package/dist/{HelperTooltip-BLfPfJRN.d.mts → HelperTooltip-jHTdkLQq.d.mts} +2 -2
  96. package/dist/HelperTooltip.d.mts +1 -1
  97. package/dist/HighlightedText.d.mts +2 -2
  98. package/dist/HoverCopyableField-CW7Jxmni.mjs.map +1 -1
  99. package/dist/{I18nContext-EPmbUprm.d.mts → I18nContext-DzV-RDIh.d.mts} +2 -2
  100. package/dist/I18nContext.d.mts +1 -1
  101. package/dist/{IconButton-KhCwTwPx.d.mts → IconButton-CaEvsrOn.d.mts} +2 -2
  102. package/dist/IconButton-DftINsp7.mjs.map +1 -1
  103. package/dist/IconButton.d.mts +1 -1
  104. package/dist/ImageTile.d.mts +1 -1
  105. package/dist/IndexTableLayout.d.mts +5 -5
  106. package/dist/InlineCombobox.d.mts +1 -1
  107. package/dist/InlineInput.d.mts +1 -1
  108. package/dist/{Input-QNjbGo38.d.mts → Input-DQ2J9wlC.d.mts} +3 -3
  109. package/dist/Input-DtO3qMnE.mjs.map +1 -1
  110. package/dist/Input.d.mts +1 -1
  111. package/dist/{InputProps-BT7-RfnD.d.mts → InputProps-DrG94eFF.d.mts} +2 -2
  112. package/dist/InputProps.d.mts +1 -1
  113. package/dist/{Inserter-BnQVEqHV.d.mts → Inserter-CZeKlPqj.d.mts} +1 -1
  114. package/dist/Inserter.d.mts +1 -1
  115. package/dist/IntegerValueControl.d.mts +1 -1
  116. package/dist/Link-DKYmdL9t.mjs.map +1 -1
  117. package/dist/Link.d.mts +1 -1
  118. package/dist/ListBox-CDG0EAPg.mjs.map +1 -1
  119. package/dist/{ListBox-D9SYTzOd.d.mts → ListBox-DxbXE_EE.d.mts} +3 -3
  120. package/dist/ListBox.d.mts +1 -1
  121. package/dist/{ListBoxField-CtPDd_Aw.d.mts → ListBoxField-DVLggscv.d.mts} +4 -4
  122. package/dist/ListBoxField.d.mts +1 -1
  123. package/dist/LoadingShimmer-oPIv2ESr.mjs.map +1 -1
  124. package/dist/LoadingShimmer.d.mts +1 -1
  125. package/dist/{LogicRow-BWIZ7262.d.mts → LogicRow-DG06PsUe.d.mts} +3 -3
  126. package/dist/LogicRow.d.mts +1 -1
  127. package/dist/MaskedInput.d.mts +1 -1
  128. package/dist/{Menu-DizjcMbO.d.mts → Menu-Bq6Lij2L.d.mts} +3 -3
  129. package/dist/Menu-EIT_MwK6.mjs.map +1 -1
  130. package/dist/Menu.d.mts +1 -1
  131. package/dist/{Modal-92O_uW8H.mjs → Modal-BBlilB-B.mjs} +2 -2
  132. package/dist/Modal-BBlilB-B.mjs.map +1 -0
  133. package/dist/{Modal-Bhwq1bQJ.d.mts → Modal-kEgKwLg4.d.mts} +2 -2
  134. package/dist/Modal.d.mts +1 -1
  135. package/dist/{PageHeader-D2QLrS7-.d.mts → PageHeader-BGGhOS81.d.mts} +2 -2
  136. package/dist/{PageHeader-BzvA_NNt.mjs → PageHeader-DEKTopzU.mjs} +1 -1
  137. package/dist/PageHeader-DEKTopzU.mjs.map +1 -0
  138. package/dist/PageHeader.d.mts +1 -1
  139. package/dist/{PageLayout-DfAbeFIh.d.mts → PageLayout-B_LKPZD8.d.mts} +1 -1
  140. package/dist/{PageLayout-DCe3F76N.mjs → PageLayout-DjtGrvJa.mjs} +2 -2
  141. package/dist/PageLayout-DjtGrvJa.mjs.map +1 -0
  142. package/dist/PageLayout.d.mts +1 -1
  143. package/dist/{PageLayoutFrame-CQLREOBH.d.mts → PageLayoutFrame-uf17F41p.d.mts} +1 -1
  144. package/dist/PageLayoutFrame.d.mts +1 -1
  145. package/dist/{PageSelector-QaKYtk6y.d.mts → PageSelector-CLeG2gFh.d.mts} +10 -4
  146. package/dist/PageSelector.d.mts +1 -1
  147. package/dist/{Pagination-dTsHLVAk.mjs → Pagination-C8hPOu0l.mjs} +15 -11
  148. package/dist/Pagination-C8hPOu0l.mjs.map +1 -0
  149. package/dist/{Pagination-DeXorbSK.d.mts → Pagination-y3kn2X_A.d.mts} +11 -3
  150. package/dist/Pagination.d.mts +1 -1
  151. package/dist/{PillShell-B35z66jZ.d.mts → PillShell-Clv4b-2w.d.mts} +2 -2
  152. package/dist/PillShell.d.mts +1 -1
  153. package/dist/Popover-DordjYNM.mjs.map +1 -1
  154. package/dist/{ProgressIndicator-COCwRZfK.d.mts → ProgressIndicator-tVvf0cY5.d.mts} +1 -1
  155. package/dist/{ProgressIndicator-ISARECzW.mjs → ProgressIndicator-zt3ndT9U.mjs} +1 -1
  156. package/dist/ProgressIndicator-zt3ndT9U.mjs.map +1 -0
  157. package/dist/ProgressIndicator.d.mts +1 -1
  158. package/dist/{PseudoClassProps-D_f-JUT1.d.mts → PseudoClassProps-D-sdJdnG.d.mts} +1 -1
  159. package/dist/PseudoClassProps.d.mts +1 -1
  160. package/dist/Radio-BlEtetrr.mjs.map +1 -1
  161. package/dist/{RadioGroup-pyGpWhhj.d.mts → RadioGroup-9AnTQbh9.d.mts} +1 -1
  162. package/dist/RadioGroup-CMrXmmn4.mjs.map +1 -1
  163. package/dist/RadioGroup.d.mts +1 -1
  164. package/dist/{RangeCalendar-BiugsdSP.d.mts → RangeCalendar-D86xh2yV.d.mts} +2 -2
  165. package/dist/RangeCalendar.d.mts +1 -1
  166. package/dist/RangeCalendarPresets.d.mts +2 -2
  167. package/dist/{RouterContext-BUdfr1it.d.mts → RouterContext-Bgg29ZJo.d.mts} +2 -2
  168. package/dist/RouterContext.d.mts +1 -1
  169. package/dist/{RouterLink-BKbfvJcM.d.mts → RouterLink-CMCsV5H-.d.mts} +2 -2
  170. package/dist/RouterLink.d.mts +1 -1
  171. package/dist/RuleEditorFields.d.mts +2 -2
  172. package/dist/RulesPill.d.mts +1 -1
  173. package/dist/{SearchInput-BejaiGsS.d.mts → SearchInput-NlIspWun.d.mts} +2 -2
  174. package/dist/SearchInput.d.mts +1 -1
  175. package/dist/SectionHeading.d.mts +1 -1
  176. package/dist/{SegmentedControl-UV03Ujqn.d.mts → SegmentedControl-C4C5ge4p.d.mts} +1 -1
  177. package/dist/SegmentedControl-D_DA-MU1.mjs.map +1 -1
  178. package/dist/SegmentedControl.d.mts +1 -1
  179. package/dist/{Select-Chk5WB1F.d.mts → Select-By_LoM1n.d.mts} +3 -3
  180. package/dist/Select-DkUMz4LG.mjs.map +1 -1
  181. package/dist/Select.d.mts +1 -1
  182. package/dist/{SingleColumnLayout-DBo35psH.d.mts → SingleColumnLayout-C4qrVyMf.d.mts} +2 -2
  183. package/dist/SingleColumnLayout.d.mts +1 -1
  184. package/dist/SmartTextInput.d.mts +6 -6
  185. package/dist/SmartTextInputField.d.mts +2 -2
  186. package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
  187. package/dist/SmartTextInputListbox.d.mts +2 -2
  188. package/dist/SmartTextInputPopover.d.mts +1 -1
  189. package/dist/Spacer-C4d9Aho6.mjs.map +1 -1
  190. package/dist/Spinner-CXb-KUs1.mjs.map +1 -1
  191. package/dist/{SplitColumnLayout-C6m_mwdf.d.mts → SplitColumnLayout-BXT7AeNx.d.mts} +2 -2
  192. package/dist/SplitColumnLayout.d.mts +1 -1
  193. package/dist/{Stack-DrYxBkiF.d.mts → Stack-BqRcxDQM.d.mts} +1 -1
  194. package/dist/Stack.d.mts +1 -1
  195. package/dist/{StatusIndicator-pWl1-FLb.mjs → StatusIndicator-Zf75KK3O.mjs} +1 -1
  196. package/dist/StatusIndicator-Zf75KK3O.mjs.map +1 -0
  197. package/dist/Sticker-Bi_fezCO.mjs.map +1 -1
  198. package/dist/{Sticker-sIBnBbHD.d.mts → Sticker-C2zp47FB.d.mts} +4 -4
  199. package/dist/Sticker.d.mts +1 -1
  200. package/dist/StringValueControl.d.mts +1 -1
  201. package/dist/Tab.d.mts +1 -1
  202. package/dist/TabBar-DpXYsWgS.mjs.map +1 -1
  203. package/dist/{Table-BJfcRpMX.d.mts → Table-DGl3mDwc.d.mts} +1 -1
  204. package/dist/Table-DPi4Dt5H.mjs.map +1 -1
  205. package/dist/Table.d.mts +1 -1
  206. package/dist/{TableBody-CBz2PjA-.d.mts → TableBody-BbC-H2qj.d.mts} +1 -1
  207. package/dist/TableBody.d.mts +1 -1
  208. package/dist/TableBox-BfSF36Gy.mjs.map +1 -1
  209. package/dist/TableBox.d.mts +2 -2
  210. package/dist/{TableBoxCell-CwroLAWy.d.mts → TableBoxCell-DuvWTwOm.d.mts} +6 -6
  211. package/dist/TableBoxCell.d.mts +1 -1
  212. package/dist/{TableBoxField-B7bHv7uV.d.mts → TableBoxField-DRx24VAz.d.mts} +5 -5
  213. package/dist/TableBoxField.d.mts +1 -1
  214. package/dist/{TableBoxRow-Dke8B99J.d.mts → TableBoxRow-DFPTf-bZ.d.mts} +3 -3
  215. package/dist/TableBoxRow.d.mts +1 -1
  216. package/dist/{TableBoxRowActions-CkUDVERC.d.mts → TableBoxRowActions-CFCnGc7D.d.mts} +2 -2
  217. package/dist/TableBoxRowActions.d.mts +1 -1
  218. package/dist/{TableCell-KHx5JlqZ.d.mts → TableCell-Do9W49SJ.d.mts} +2 -2
  219. package/dist/TableCell.d.mts +1 -1
  220. package/dist/{TableControls-BDXOQMr7.mjs → TableControls-Dgle87OP.mjs} +8 -6
  221. package/dist/TableControls-Dgle87OP.mjs.map +1 -0
  222. package/dist/{TableControls-DAjx1TYG.d.mts → TableControls-r58fZb_C.d.mts} +6 -5
  223. package/dist/TableControls.d.mts +1 -1
  224. package/dist/{TableControlsContext-BEIvE9qN.d.mts → TableControlsContext-nz8GXmXc.d.mts} +2 -2
  225. package/dist/TableControlsContext.d.mts +1 -1
  226. package/dist/{TableHead-D5A3bOwt.d.mts → TableHead-CIXIrZGE.d.mts} +1 -1
  227. package/dist/TableHead.d.mts +1 -1
  228. package/dist/{TableHeaderCell-BXgnxPpX.d.mts → TableHeaderCell-wKcp8rZj.d.mts} +1 -1
  229. package/dist/TableHeaderCell.d.mts +1 -1
  230. package/dist/{TableLayout-Dy5ht8KO.d.mts → TableLayout-0-9FnNvt.d.mts} +1 -1
  231. package/dist/TableLayout.d.mts +1 -1
  232. package/dist/{TableRow-C1iGbNjZ.d.mts → TableRow-C011thJ3.d.mts} +2 -2
  233. package/dist/TableRow.d.mts +1 -1
  234. package/dist/TableTH.d.mts +1 -1
  235. package/dist/{TableViewConfigurationDropdown-vYnU0d4k.d.mts → TableViewConfigurationDropdown-D0VcRmd4.d.mts} +2 -2
  236. package/dist/TableViewConfigurationDropdown.d.mts +1 -1
  237. package/dist/TechnicalSticker-B_JlBkXZ.mjs.map +1 -1
  238. package/dist/{Text-SaoRBdB6.d.mts → Text-BgSW0yDb.d.mts} +3 -3
  239. package/dist/Text-D0vEReED.mjs.map +1 -1
  240. package/dist/Text.d.mts +1 -1
  241. package/dist/{TextArea-gtSlghjy.d.mts → TextArea-CyWv8jaV.d.mts} +2 -2
  242. package/dist/TextArea-Dro-HH8O.mjs.map +1 -1
  243. package/dist/TextArea.d.mts +1 -1
  244. package/dist/{TextUnderlineTooltip-DV61avLv.d.mts → TextUnderlineTooltip-CcyG4VkJ.d.mts} +2 -2
  245. package/dist/TextUnderlineTooltip.d.mts +1 -1
  246. package/dist/Tile.d.mts +1 -1
  247. package/dist/Toast.d.mts +1 -1
  248. package/dist/{Toggle-BlvrM-Cw.d.mts → Toggle-BIJoB1AA.d.mts} +1 -1
  249. package/dist/Toggle-D9MzTIZs.mjs.map +1 -1
  250. package/dist/Toggle.d.mts +1 -1
  251. package/dist/{Tooltip-CysnLwST.d.mts → Tooltip-CrpfAAfA.d.mts} +2 -2
  252. package/dist/Tooltip-YViXzMdm.mjs.map +1 -1
  253. package/dist/Tooltip.d.mts +1 -1
  254. package/dist/{TruncatedText-YcjNG-zP.d.mts → TruncatedText-DaGx3CX6.d.mts} +1 -1
  255. package/dist/VersionHistory.d.mts +1 -1
  256. package/dist/{VersionHistoryItem-Px3ylMMq.d.mts → VersionHistoryItem-Bo78T7y7.d.mts} +1 -1
  257. package/dist/VersionHistoryItem.d.mts +1 -1
  258. package/dist/WizardModal.d.mts +2 -2
  259. package/dist/{accordionTitleTypography-Dlo2YyWd.d.mts → accordionTitleTypography-D7tOgRzj.d.mts} +2 -2
  260. package/dist/accordionTitleTypography.d.mts +1 -1
  261. package/dist/{chainTypes-aF5rWav-.d.mts → chainTypes-CLKwXymd.d.mts} +4 -4
  262. package/dist/{clientFilterUtils-DYKgw2Yq.d.mts → clientFilterUtils-BnASP9Tt.d.mts} +2 -2
  263. package/dist/clientFilterUtils.d.mts +1 -1
  264. package/dist/{codec-D8ZKFLgs.d.mts → codec-C4WJftW6.d.mts} +2 -2
  265. package/dist/codec.d.mts +1 -1
  266. package/dist/{color-Cy_0z4IY.d.mts → color-Db57Wms_.d.mts} +2 -2
  267. package/dist/complete-typography.d.mts +1 -1
  268. package/dist/components/Accordion/index.d.mts +1 -1
  269. package/dist/components/Accordion/index.mjs.map +1 -1
  270. package/dist/components/Attribute/index.mjs.map +1 -1
  271. package/dist/components/Banner/index.mjs.map +1 -1
  272. package/dist/components/BottomPanel/index.mjs +67 -6
  273. package/dist/components/BottomPanel/index.mjs.map +1 -1
  274. package/dist/components/Breadcrumbs/index.d.mts +1 -1
  275. package/dist/components/Button/index.d.mts +2 -2
  276. package/dist/components/ButtonGroup/index.mjs.map +1 -1
  277. package/dist/components/Card/index.d.mts +2 -2
  278. package/dist/components/CardV2/index.d.mts +1 -1
  279. package/dist/components/Checkbox/index.d.mts +1 -1
  280. package/dist/components/CodeHighlight/index.mjs.map +1 -1
  281. package/dist/components/Combobox/index.d.mts +2 -2
  282. package/dist/components/DataTable/TableControls/index.d.mts +21 -21
  283. package/dist/components/DataTable/TableControls/index.mjs +1 -1
  284. package/dist/components/DataTable/index.d.mts +8 -8
  285. package/dist/components/DataTable/index.mjs +1 -1
  286. package/dist/components/DataTable/types.d.mts +1 -1
  287. package/dist/components/DatePicker/index.d.mts +5 -5
  288. package/dist/components/DatePicker/index.mjs +1 -1
  289. package/dist/components/DropdownMenu/index.d.mts +1 -1
  290. package/dist/components/FloatingPanel/index.mjs.map +1 -1
  291. package/dist/components/FloatingToolbar/index.d.mts +2 -0
  292. package/dist/components/FloatingToolbar/index.mjs +2 -0
  293. package/dist/components/FormControl/index.d.mts +2 -2
  294. package/dist/components/FormField/index.d.mts +5 -5
  295. package/dist/components/FormField/index.mjs +1 -1
  296. package/dist/components/Grid/index.mjs +1 -1
  297. package/dist/components/ImageTile/index.mjs.map +1 -1
  298. package/dist/components/Input/index.d.mts +1 -1
  299. package/dist/components/ListBox/index.d.mts +3 -3
  300. package/dist/components/MaskedInput/index.mjs.map +1 -1
  301. package/dist/components/MatchHighlight/index.mjs.map +1 -1
  302. package/dist/components/Menu/index.d.mts +1 -1
  303. package/dist/components/Modal/index.d.mts +1 -1
  304. package/dist/components/Modal/index.mjs +1 -1
  305. package/dist/components/PageHeader/index.d.mts +1 -1
  306. package/dist/components/PageHeader/index.mjs +1 -1
  307. package/dist/components/Pagination/index.d.mts +3 -3
  308. package/dist/components/Pagination/index.mjs +1 -1
  309. package/dist/components/ProgressBar/index.mjs.map +1 -1
  310. package/dist/components/ProgressIndicator/index.d.mts +1 -1
  311. package/dist/components/ProgressIndicator/index.mjs +1 -1
  312. package/dist/components/RadioGroup/index.d.mts +1 -1
  313. package/dist/components/RichTextEditor/index.d.mts +1 -2
  314. package/dist/components/RichTextEditor/index.mjs +22 -477
  315. package/dist/components/RichTextEditor/index.mjs.map +1 -1
  316. package/dist/components/RightPanel/index.mjs.map +1 -1
  317. package/dist/components/SegmentedControl/index.d.mts +1 -1
  318. package/dist/components/Select/index.d.mts +1 -1
  319. package/dist/components/SelectionCard/index.mjs.map +1 -1
  320. package/dist/components/Slider/index.mjs.map +1 -1
  321. package/dist/components/SmartTextInput/index.d.mts +2 -2
  322. package/dist/components/SmartTextInput/index.mjs +2 -2
  323. package/dist/components/SmartTextInput/index.mjs.map +1 -1
  324. package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
  325. package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
  326. package/dist/components/Stack/index.d.mts +1 -1
  327. package/dist/components/StatusIndicator/index.mjs +1 -1
  328. package/dist/components/Sticker/index.d.mts +1 -1
  329. package/dist/components/SwatchPicker/index.mjs.map +1 -1
  330. package/dist/components/Table/index.d.mts +8 -8
  331. package/dist/components/TableBox/index.d.mts +2 -2
  332. package/dist/components/Text/index.d.mts +1 -1
  333. package/dist/components/TextArea/index.d.mts +1 -1
  334. package/dist/components/Tile/index.mjs.map +1 -1
  335. package/dist/components/Toast/index.mjs.map +1 -1
  336. package/dist/components/Toggle/index.d.mts +1 -1
  337. package/dist/components/Tooltip/index.d.mts +3 -3
  338. package/dist/components/VersionHistory/index.d.mts +1 -1
  339. package/dist/components/VersionHistory/index.mjs +2 -2
  340. package/dist/components/VersionHistory/index.mjs.map +1 -1
  341. package/dist/compound-expression.d.mts +1 -1
  342. package/dist/{constants-CW1DRgwi.d.mts → constants-B2NIZBD6.d.mts} +1 -1
  343. package/dist/{constants-D1hoZ5LO.d.mts → constants-ChVceduh.d.mts} +1 -1
  344. package/dist/constants.d.mts +1 -1
  345. package/dist/constants2.d.mts +1 -1
  346. package/dist/{createPath-C4ZFkt93.d.mts → createPath-D_opTH9A.d.mts} +2 -2
  347. package/dist/createPath.d.mts +1 -1
  348. package/dist/{date-range-rule-value-CrVBpQcf.d.mts → date-range-rule-value-3izEoXmi.d.mts} +2 -2
  349. package/dist/date-range-rule-value.d.mts +1 -1
  350. package/dist/{date-rule-intent-C1aptAoX.d.mts → date-rule-intent-DjYIGcGO.d.mts} +3 -3
  351. package/dist/date-rule-intent.d.mts +1 -1
  352. package/dist/display.d.mts +2 -2
  353. package/dist/fieldPickerOptions.d.mts +2 -2
  354. package/dist/{filter-size-context-CbT4pi3S.d.mts → filter-size-context-BcpjykVw.d.mts} +2 -2
  355. package/dist/filter-size-context.d.mts +1 -1
  356. package/dist/{filters-DjXkx8GJ.d.mts → filters-DUI7TLSn.d.mts} +2 -2
  357. package/dist/filters.d.mts +1 -1
  358. package/dist/{formatDateTime-BikGGrvq.d.mts → formatDateTime-CgQvW3A5.d.mts} +1 -1
  359. package/dist/formatDateTime.d.mts +1 -1
  360. package/dist/{helpers-CdxEL7ri.d.mts → helpers-CDZ7Zk9G.d.mts} +4 -4
  361. package/dist/helpers.d.mts +1 -1
  362. package/dist/{i18n-BLyCaSdJ.mjs → i18n-DaOKaFc2.mjs} +4 -2
  363. package/dist/i18n-DaOKaFc2.mjs.map +1 -0
  364. package/dist/{index-BWAycP6L.d.mts → index-B9kfFACl.d.mts} +1 -1
  365. package/dist/{index-DX5Zu9JU.d.mts → index-CDFw-zKW.d.mts} +3 -3
  366. package/dist/{index-D2YFHdsf.d.mts → index-DntqThoS.d.mts} +2 -2
  367. package/dist/{index-FgIOTuJ4.d.mts → index-_D_TMpPU.d.mts} +2 -2
  368. package/dist/index2.d.mts +1 -1
  369. package/dist/index3.d.mts +1 -1
  370. package/dist/index4.d.mts +3 -3
  371. package/dist/index5.d.mts +1 -1
  372. package/dist/index6.d.mts +14 -14
  373. package/dist/{input-gtTnb9M8.d.mts → input-RTMLTvG1.d.mts} +3 -3
  374. package/dist/{inputFields-CYttsz5M.d.mts → inputFields-iRg_emVK.d.mts} +11 -11
  375. package/dist/inputFields.d.mts +1 -1
  376. package/dist/{jsonSchema-DUkfAip_.d.mts → jsonSchema-BJpNaFc4.d.mts} +1 -1
  377. package/dist/lib/PDSProvider.d.mts +3 -3
  378. package/dist/lib/PDSProvider.mjs +1 -1
  379. package/dist/lib/PDSProvider.mjs.map +1 -1
  380. package/dist/lib/TruncatedText.d.mts +1 -1
  381. package/dist/lib/TruncatedText.mjs.map +1 -1
  382. package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
  383. package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
  384. package/dist/lib/chainTypes.d.mts +1 -1
  385. package/dist/lib/color.d.mts +1 -1
  386. package/dist/lib/color.mjs.map +1 -1
  387. package/dist/lib/colorMode.d.mts +2 -2
  388. package/dist/lib/colorMode.mjs.map +1 -1
  389. package/dist/lib/customFunctionSchema.d.mts +1 -1
  390. package/dist/lib/date-filter/index.d.mts +2 -2
  391. package/dist/lib/i18n/index.d.mts +3 -3
  392. package/dist/lib/i18n/index.mjs +1 -1
  393. package/dist/lib/jsonSchema.d.mts +1 -1
  394. package/dist/lib/jsonSchemaType.d.mts +1 -1
  395. package/dist/lib/message.d.mts +1 -1
  396. package/dist/lib/methodChain.d.mts +2 -2
  397. package/dist/lib/methodChainNormalize.d.mts +2 -2
  398. package/dist/lib/methodChainTypes.d.mts +1 -1
  399. package/dist/lib/objectSchemaTypes.d.mts +1 -1
  400. package/dist/lib/platformObject.d.mts +1 -1
  401. package/dist/lib/pseudoClass.d.mts +1 -1
  402. package/dist/lib/pseudoClass.mjs.map +1 -1
  403. package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
  404. package/dist/lib/router/adapters/tanstack.d.mts +1 -1
  405. package/dist/lib/router/index.d.mts +5 -5
  406. package/dist/lib/schemaOptions.d.mts +1 -1
  407. package/dist/lib/semanticColor.d.mts +1 -1
  408. package/dist/lib/semanticColor.mjs.map +1 -1
  409. package/dist/lib/useChain.d.mts +1 -1
  410. package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
  411. package/dist/lint/index.d.mts +1 -1
  412. package/dist/{listbox-options-CkwENvff.d.mts → listbox-options-D0JmYWjB.d.mts} +3 -3
  413. package/dist/listbox-options.d.mts +1 -1
  414. package/dist/{message-klSuXfNN.d.mts → message-Bk5UTw75.d.mts} +1 -1
  415. package/dist/{methodChain-CRYRDa1k.d.mts → methodChain-C3u60_V8.d.mts} +4 -4
  416. package/dist/{methodChainTypes-BtbYWrdP.d.mts → methodChainTypes-Di4GCMX7.d.mts} +2 -2
  417. package/dist/min-copy-size.d.mts +1 -1
  418. package/dist/mixins/focus.d.mts +1 -1
  419. package/dist/mixins/focus.mjs.map +1 -1
  420. package/dist/mixins/hoverable.d.mts +2 -2
  421. package/dist/mixins/hoverable.mjs.map +1 -1
  422. package/dist/mixins/input.d.mts +1 -1
  423. package/dist/mixins/input.mjs.map +1 -1
  424. package/dist/mixins/menuItem.d.mts +2 -2
  425. package/dist/mixins/menuItem.mjs.map +1 -1
  426. package/dist/mixins/print/index.mjs.map +1 -1
  427. package/dist/mixins/scrollbar.d.mts +1 -1
  428. package/dist/mixins/scrollbar.mjs.map +1 -1
  429. package/dist/mixins/text.d.mts +1 -1
  430. package/dist/no-raw-table.d.mts +1 -1
  431. package/dist/{operators-gCG7uZ6y.d.mts → operators-BTCnQpeu.d.mts} +3 -3
  432. package/dist/operators.d.mts +1 -1
  433. package/dist/{palette-C1gBbxLO.d.mts → palette-D61sDyDI.d.mts} +3 -3
  434. package/dist/palette.d.mts +1 -1
  435. package/dist/patterns/CardGrouping/index.mjs +1 -1
  436. package/dist/patterns/CardGrouping/index.mjs.map +1 -1
  437. package/dist/patterns/IndexTableLayout/index.mjs +3 -3
  438. package/dist/patterns/IndexTableLayout/index.mjs.map +1 -1
  439. package/dist/patterns/LayoutLoadingShimmer/index.mjs +1 -1
  440. package/dist/patterns/LayoutLoadingShimmer/index.mjs.map +1 -1
  441. package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -1
  442. package/dist/patterns/PageLayout/index.d.mts +4 -4
  443. package/dist/patterns/PageLayout/index.mjs +1 -1
  444. package/dist/patterns/WizardModal/index.mjs +2 -2
  445. package/dist/patterns/WizardModal/index.mjs.map +1 -1
  446. package/dist/reactRouterFallback.d.mts +1 -1
  447. package/dist/reduced-motion.d.mts +1 -1
  448. package/dist/relative-date-label.d.mts +1 -1
  449. package/dist/safe-parse.d.mts +1 -1
  450. package/dist/{schemaOptions-C_JM2-sg.d.mts → schemaOptions-BKtrXvjR.d.mts} +3 -3
  451. package/dist/{semantic-BLaQSW1r.d.mts → semantic-BZbvb3LV.d.mts} +1 -1
  452. package/dist/semantic-color.d.mts +1 -1
  453. package/dist/{semanticColor-Bxufk3ZO.d.mts → semanticColor-y9byerSl.d.mts} +3 -3
  454. package/dist/shared.d.mts +1 -1
  455. package/dist/{strings-CK9n6b65.d.mts → strings-T-gsdqiJ.d.mts} +8 -1
  456. package/dist/strings.d.mts +1 -1
  457. package/dist/{text-Csytfclh.d.mts → text-CKLxMlG4.d.mts} +1 -1
  458. package/dist/{theme-mQ4WkH90.d.mts → theme-BFP-_PEh.d.mts} +3 -3
  459. package/dist/theme.d.mts +1 -1
  460. package/dist/theme.mjs.map +1 -1
  461. package/dist/tone.d.mts +3 -3
  462. package/dist/tree.d.mts +1 -1
  463. package/dist/{types-B4KbdEDc.d.mts → types-1p-ij0cd.d.mts} +2 -2
  464. package/dist/{types-Dhz6VMKx.d.mts → types-B5RbKp2V.d.mts} +1 -1
  465. package/dist/{types-dmItSshr.d.mts → types-Bg_sfqXE.d.mts} +2 -2
  466. package/dist/{types-CayYd8EX.d.mts → types-BiRayNak.d.mts} +3 -3
  467. package/dist/{types-XjJqUj-p.d.mts → types-BnXYfNrd.d.mts} +4 -4
  468. package/dist/{types-C2RhHxbE.d.mts → types-Bu5rhBdH.d.mts} +1 -1
  469. package/dist/{types-DJobO07d.d.mts → types-C31ecr0j.d.mts} +3 -3
  470. package/dist/{types-rDQg74j-.d.mts → types-FG-jOit9.d.mts} +1 -1
  471. package/dist/{types-DbOD5vE_.d.mts → types-K57NVM0M.d.mts} +2 -2
  472. package/dist/{types-6L0ptM6-.d.mts → types-QYT1VZgy.d.mts} +1 -1
  473. package/dist/types.d.mts +1 -1
  474. package/dist/types2.d.mts +1 -1
  475. package/dist/types3.d.mts +1 -1
  476. package/dist/types4.d.mts +1 -1
  477. package/dist/types5.d.mts +1 -1
  478. package/dist/types6.d.mts +1 -1
  479. package/dist/types8.d.mts +1 -1
  480. package/dist/{url-state-CmgyDnG7.d.mts → url-state-DmhG0Qg-.d.mts} +2 -2
  481. package/dist/url-state.d.mts +1 -1
  482. package/dist/{useChain-7ztbfujM.d.mts → useChain-CIwI4Xop.d.mts} +6 -6
  483. package/dist/useChain-D1aNsdvn.mjs.map +1 -1
  484. package/dist/useChainAtCursor.d.mts +6 -6
  485. package/dist/useCodeChainFunctionPanel.d.mts +1 -1
  486. package/dist/useColumnConfiguration.d.mts +2 -2
  487. package/dist/useComboboxFooterAction.d.mts +1 -1
  488. package/dist/{useFilterStateV2-CPBt0qwc.d.mts → useFilterStateV2-DPzkJpGT.d.mts} +3 -3
  489. package/dist/useFilterStateV2.d.mts +1 -1
  490. package/dist/{useFormField-CmEJCqse.d.mts → useFormField-ATKyX8CU.d.mts} +2 -2
  491. package/dist/useFormField-pOVkb5BK.mjs.map +1 -1
  492. package/dist/useFormField.d.mts +1 -1
  493. package/dist/{useLocationPathname-Cnqj8pf4.d.mts → useLocationPathname-DPMpqO1_.d.mts} +1 -1
  494. package/dist/useLocationPathname.d.mts +1 -1
  495. package/dist/{useTableBoxDragAndDrop-8NS4JBuI.d.mts → useTableBoxDragAndDrop-CCMADt-F.d.mts} +1 -1
  496. package/dist/useTableBoxDragAndDrop.d.mts +1 -1
  497. package/dist/{useTableColumns-BK-KYY0L.d.mts → useTableColumns-Bw0HvnP4.d.mts} +2 -2
  498. package/dist/useTableColumns.d.mts +1 -1
  499. package/dist/useTruncation.d.mts +1 -1
  500. package/dist/{utilities-CXoc5Cyr.d.mts → utilities-BfXjJZQt.d.mts} +1 -1
  501. package/dist/utilities.d.mts +1 -1
  502. package/dist/utils/storybook.mjs.map +1 -1
  503. package/dist/utils/testing.d.mts +1 -1
  504. package/dist/utils.d.mts +1 -1
  505. package/dist/utils4.d.mts +5 -5
  506. package/dist/{validation-BaqPVG1C.d.mts → validation-yhA0siru.d.mts} +3 -3
  507. package/dist/validation.d.mts +1 -1
  508. package/dist/validation2.d.mts +4 -4
  509. package/dist/{value-control-resolver-CMyFwEY7.d.mts → value-control-resolver-Df0AmGFe.d.mts} +2 -2
  510. package/dist/value-control-resolver.d.mts +1 -1
  511. package/dist/variables/effect.d.mts +1 -1
  512. package/dist/variables/effect.mjs.map +1 -1
  513. package/dist/variables/semantic.d.mts +1 -1
  514. package/llms.txt +1 -1
  515. package/package.json +25 -13
  516. package/skills/ui-authoring/COMPONENTS.md +1 -0
  517. package/dist/DataTable-DEJHWrsy.mjs.map +0 -1
  518. package/dist/DatePicker-D-_ibUd1.mjs.map +0 -1
  519. package/dist/FormField-g1zQFM9T.mjs.map +0 -1
  520. package/dist/Modal-92O_uW8H.mjs.map +0 -1
  521. package/dist/PageHeader-BzvA_NNt.mjs.map +0 -1
  522. package/dist/PageLayout-DCe3F76N.mjs.map +0 -1
  523. package/dist/Pagination-dTsHLVAk.mjs.map +0 -1
  524. package/dist/ProgressIndicator-ISARECzW.mjs.map +0 -1
  525. package/dist/StatusIndicator-pWl1-FLb.mjs.map +0 -1
  526. package/dist/TableControls-BDXOQMr7.mjs.map +0 -1
  527. package/dist/i18n-BLyCaSdJ.mjs.map +0 -1
  528. /package/dist/{index-AnhM47-e2.d.mts → index-BAJc0Rej.d.mts} +0 -0
  529. /package/dist/{index-B33elXxm.d.mts → index-BFHp82YL.d.mts} +0 -0
  530. /package/dist/{index-B4woaFSm.d.mts → index-BYd3Btr1.d.mts} +0 -0
  531. /package/dist/{index-B6T7ov8p.d.mts → index-C6HcjJiY.d.mts} +0 -0
  532. /package/dist/{index-BNRXMhlr.d.mts → index-CEUVsenl.d.mts} +0 -0
  533. /package/dist/{index-BPiqSRRl.d.mts → index-CEqOS-7M.d.mts} +0 -0
  534. /package/dist/{index-BTviwbFV.d.mts → index-CNxS4Tlu.d.mts} +0 -0
  535. /package/dist/{index-Bo9LXG4r.d.mts → index-CP2eJYlK.d.mts} +0 -0
  536. /package/dist/{index-Bq9Ub6MB.d.mts → index-CQQezDJQ2.d.mts} +0 -0
  537. /package/dist/{index-BrGZHEgX.d.mts → index-CWB6exYm.d.mts} +0 -0
  538. /package/dist/{index-Bt4QNofW.d.mts → index-CcSfkYLp2.d.mts} +0 -0
  539. /package/dist/{index-CFuHCx9T.d.mts → index-Cm-1i165.d.mts} +0 -0
  540. /package/dist/{index-CLTQPxoD.d.mts → index-D-giXKyu.d.mts} +0 -0
  541. /package/dist/{index-CaqYCRmZ.d.mts → index-D4DUvwPf.d.mts} +0 -0
  542. /package/dist/{index-CjmAoxrR2.d.mts → index-DCTy4zg0.d.mts} +0 -0
  543. /package/dist/{index-Cx0vQ6ld.d.mts → index-DWIh4oP5.d.mts} +0 -0
  544. /package/dist/{index-CzItj62a.d.mts → index-Dflz2i1X.d.mts} +0 -0
  545. /package/dist/{index-CzUpNo0e.d.mts → index-DhiymMxa.d.mts} +0 -0
  546. /package/dist/{index-DBGd4WeR.d.mts → index-DkrC-i1D.d.mts} +0 -0
  547. /package/dist/{index-DMRtRo7y.d.mts → index-Dp7lwkTl2.d.mts} +0 -0
  548. /package/dist/{index-DNjQe1D8.d.mts → index-DqCA6utX.d.mts} +0 -0
  549. /package/dist/{index-DW3xeuzq.d.mts → index-Iujpc9_6.d.mts} +0 -0
  550. /package/dist/{index-DZlqSwCF.d.mts → index-Jh0C5PIG.d.mts} +0 -0
  551. /package/dist/{index-De7MV8-j.d.mts → index-N-OgGgfF.d.mts} +0 -0
  552. /package/dist/{index-DjG1RCY5.d.mts → index-Oio5ygqN.d.mts} +0 -0
  553. /package/dist/{index-Dlcv6Ku22.d.mts → index-Rvd9MEUQ.d.mts} +0 -0
  554. /package/dist/{index-DrK1_jKY.d.mts → index-YB8V3VRW.d.mts} +0 -0
  555. /package/dist/{index-DztUdPP_.d.mts → index-aKlsLnwy.d.mts} +0 -0
  556. /package/dist/{index-K614ZhWK.d.mts → index-fxXoW-qc.d.mts} +0 -0
  557. /package/dist/{index-NKYLt_R9.d.mts → index-ikHBE458.d.mts} +0 -0
  558. /package/dist/{index-VWno75SQ.d.mts → index-luywJTzJ.d.mts} +0 -0
  559. /package/dist/{index-uMNhmxEh.d.mts → index-xmouCHX9.d.mts} +0 -0
@@ -1,2 +1,2 @@
1
- import { _ as isASTMethodChainNode, a as ASTErrorNode, c as ASTIdentifierNode, d as ASTNumberNode, f as ASTParenCloseNode, g as isASTCustomFunctionNode, h as ErrorKind, i as ASTDotNode, l as ASTMethodChainNode, m as ASTStringNode, n as ASTChain, o as ASTFunctionNode, p as ASTParenOpenNode, r as ASTCustomFunctionNode, s as ASTFunctionParamType, t as ASTArrayNode, u as ASTNodeType, v as isAnyASTFunctionNode, y as isRealASTFunctionParamType } from "../../../../types-C2RhHxbE.mjs";
1
+ import { _ as isASTMethodChainNode, a as ASTErrorNode, c as ASTIdentifierNode, d as ASTNumberNode, f as ASTParenCloseNode, g as isASTCustomFunctionNode, h as ErrorKind, i as ASTDotNode, l as ASTMethodChainNode, m as ASTStringNode, n as ASTChain, o as ASTFunctionNode, p as ASTParenOpenNode, r as ASTCustomFunctionNode, s as ASTFunctionParamType, t as ASTArrayNode, u as ASTNodeType, v as isAnyASTFunctionNode, y as isRealASTFunctionParamType } from "../../../../types-Bu5rhBdH.mjs";
2
2
  export { ASTArrayNode, ASTChain, ASTCustomFunctionNode, ASTDotNode, ASTErrorNode, ASTFunctionNode, ASTFunctionParamType, ASTIdentifierNode, ASTMethodChainNode, ASTNodeType, ASTNumberNode, ASTParenCloseNode, ASTParenOpenNode, ASTStringNode, ErrorKind, isASTCustomFunctionNode, isASTMethodChainNode, isAnyASTFunctionNode, isRealASTFunctionParamType };
@@ -1,3 +1,3 @@
1
- import { f as ASTParenCloseNode, p as ASTParenOpenNode } from "../../../../types-C2RhHxbE.mjs";
2
- import { a as NodeType, c as isMethodChainNode, i as ErrorNode, n as ErrorKind, o as isASTChainNode, r as ErrorMessageByKind, s as isASTContainerNode, t as ASTNode } from "../../../../types-dmItSshr.mjs";
1
+ import { f as ASTParenCloseNode, p as ASTParenOpenNode } from "../../../../types-Bu5rhBdH.mjs";
2
+ import { a as NodeType, c as isMethodChainNode, i as ErrorNode, n as ErrorKind, o as isASTChainNode, r as ErrorMessageByKind, s as isASTContainerNode, t as ASTNode } from "../../../../types-Bg_sfqXE.mjs";
3
3
  export { ASTNode, ASTParenCloseNode, ASTParenOpenNode, ErrorKind, ErrorMessageByKind, ErrorNode, NodeType, isASTChainNode, isASTContainerNode, isMethodChainNode };
@@ -1,2 +1,2 @@
1
- import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-DrYxBkiF.mjs";
1
+ import { i as StackProps, n as HStackProps, r as Stack, t as HStack } from "../../Stack-BqRcxDQM.mjs";
2
2
  export { HStack, HStackProps, Stack, Stack as default, StackProps };
@@ -1,2 +1,2 @@
1
- import { n as StatusIndicator, t as STATUSES } from "../../StatusIndicator-pWl1-FLb.mjs";
1
+ import { n as StatusIndicator, t as STATUSES } from "../../StatusIndicator-Zf75KK3O.mjs";
2
2
  export { STATUSES, StatusIndicator, StatusIndicator as default };
@@ -1,2 +1,2 @@
1
- import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-sIBnBbHD.mjs";
1
+ import { a as StickerContentContainer, i as StickerContainer, n as STICKER_COLOR_CONFIG, o as StickerProps, r as Sticker, s as StyledTruncatedText, t as LabelBackgrounds } from "../../Sticker-C2zp47FB.mjs";
2
2
  export { LabelBackgrounds, STICKER_COLOR_CONFIG, Sticker, Sticker as default, StickerContainer, StickerContentContainer, StickerProps, StyledTruncatedText };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/SwatchPicker/SwatchPicker.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { Elevation } from 'design-system/variables/effect';\n\nconst SwatchGrid = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: ${Spacing[1]};\n`;\n\nexport interface SwatchPickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {\n value: string;\n onChange: (color: string) => void;\n colors: string[];\n}\n\nexport const SwatchPicker = ({ value, onChange, colors, ...restProps }: SwatchPickerProps) => {\n return (\n <SwatchGrid {...restProps}>\n {colors.map((color) => (\n <Swatch key={color} color={color} selected={color === value} onSelect={onChange} />\n ))}\n </SwatchGrid>\n );\n};\n\nconst ColorSwatch = styled.button<{ selected: boolean; $color?: string }>`\n display: inline-block;\n width: 24px;\n height: 24px;\n padding: 0;\n background-color: ${({ $color }) => $color ?? 'transparent'};\n border-radius: ${BorderRadius.Circle};\n border: 2px solid ${({ theme }) => semanticColor(theme, 'InputSurfaceDefault', Color.PrimaryWhite)};\n transition: all 100ms ease-out;\n cursor: pointer;\n ${({ selected, theme }) =>\n selected\n ? `outline: 2px solid ${semanticColor(theme, 'BorderAccent', Color.BorderIconActive)}`\n : ''};\n\n &:hover {\n box-shadow: ${Elevation.Low};\n }\n`;\n\nconst WhiteSwatch = styled(ColorSwatch)`\n border-color: ${({ theme }) => semanticColor(theme, 'BorderDivider', Color.BorderHairline)};\n`;\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onSelect: (color: string) => void;\n}\n\nconst Swatch = ({ color, selected, onSelect }: SwatchProps) => {\n // NOTE: This is a hack to get the white color to show up. In theory we may want to do this\n // for all colors close to white, but this gets the job done for now.\n return color.toUpperCase() === '#FFFFFF' ? (\n <WhiteSwatch selected={selected} title='#FFFFFF' onClick={() => onSelect(color)} />\n ) : (\n <ColorSwatch $color={color} selected={selected} title={color} onClick={() => onSelect(color)} />\n );\n};\n\nexport default SwatchPicker;\n"],"mappings":";;;;;;AAOA,MAAM,aAAa,OAAO,GAAG;;;;SAIpB,QAAQ,GAAG;;AASpB,MAAa,gBAAgB,EAAE,OAAO,UAAU,QAAQ,GAAG,gBAAmC;AAC5F,QACE,oBAAC,YAAD;EAAY,GAAI;YACb,OAAO,KAAK,UACX,oBAAC,QAAD;GAA2B;GAAO,UAAU,UAAU;GAAO,UAAU;GAAY,EAAtE,MAAsE,CACnF;EACS,CAAA;;AAIjB,MAAM,cAAc,OAAO,MAA8C;;;;;uBAKlD,EAAE,aAAa,UAAU,cAAc;mBAC3C,aAAa,OAAO;uBAChB,EAAE,YAAY,cAAc,OAAO,uBAAuB,MAAM,aAAa,CAAC;;;KAGhG,EAAE,UAAU,YACb,WACI,sBAAsB,cAAc,OAAO,gBAAgB,MAAM,iBAAiB,KAClF,GAAG;;;oIAGqB;;;AAIhC,MAAM,cAAc,OAAO,YAAY;mBACpB,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,eAAe,CAAC;;AAS7F,MAAM,UAAU,EAAE,OAAO,UAAU,eAA4B;AAG7D,QAAO,MAAM,aAAa,KAAK,YAC7B,oBAAC,aAAD;EAAuB;EAAU,OAAM;EAAU,eAAe,SAAS,MAAM;EAAI,CAAA,GAEnF,oBAAC,aAAD;EAAa,QAAQ;EAAiB;EAAU,OAAO;EAAO,eAAe,SAAS,MAAM;EAAI,CAAA"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/components/SwatchPicker/SwatchPicker.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\n\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { Elevation } from '#src/variables/effect';\n\nconst SwatchGrid = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n gap: ${Spacing[1]};\n`;\n\nexport interface SwatchPickerProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange'> {\n value: string;\n onChange: (color: string) => void;\n colors: string[];\n}\n\nexport const SwatchPicker = ({ value, onChange, colors, ...restProps }: SwatchPickerProps) => {\n return (\n <SwatchGrid {...restProps}>\n {colors.map((color) => (\n <Swatch key={color} color={color} selected={color === value} onSelect={onChange} />\n ))}\n </SwatchGrid>\n );\n};\n\nconst ColorSwatch = styled.button<{ selected: boolean; $color?: string }>`\n display: inline-block;\n width: 24px;\n height: 24px;\n padding: 0;\n background-color: ${({ $color }) => $color ?? 'transparent'};\n border-radius: ${BorderRadius.Circle};\n border: 2px solid ${({ theme }) => semanticColor(theme, 'InputSurfaceDefault', Color.PrimaryWhite)};\n transition: all 100ms ease-out;\n cursor: pointer;\n ${({ selected, theme }) =>\n selected\n ? `outline: 2px solid ${semanticColor(theme, 'BorderAccent', Color.BorderIconActive)}`\n : ''};\n\n &:hover {\n box-shadow: ${Elevation.Low};\n }\n`;\n\nconst WhiteSwatch = styled(ColorSwatch)`\n border-color: ${({ theme }) => semanticColor(theme, 'BorderDivider', Color.BorderHairline)};\n`;\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onSelect: (color: string) => void;\n}\n\nconst Swatch = ({ color, selected, onSelect }: SwatchProps) => {\n // NOTE: This is a hack to get the white color to show up. In theory we may want to do this\n // for all colors close to white, but this gets the job done for now.\n return color.toUpperCase() === '#FFFFFF' ? (\n <WhiteSwatch selected={selected} title='#FFFFFF' onClick={() => onSelect(color)} />\n ) : (\n <ColorSwatch $color={color} selected={selected} title={color} onClick={() => onSelect(color)} />\n );\n};\n\nexport default SwatchPicker;\n"],"mappings":";;;;;;AAQA,MAAM,aAAa,OAAO,GAAG;;;;SAIpB,QAAQ,GAAG;;AASpB,MAAa,gBAAgB,EAAE,OAAO,UAAU,QAAQ,GAAG,gBAAmC;AAC5F,QACE,oBAAC,YAAD;EAAY,GAAI;YACb,OAAO,KAAK,UACX,oBAAC,QAAD;GAA2B;GAAO,UAAU,UAAU;GAAO,UAAU;GAAY,EAAtE,MAAsE,CACnF;EACS,CAAA;;AAIjB,MAAM,cAAc,OAAO,MAA8C;;;;;uBAKlD,EAAE,aAAa,UAAU,cAAc;mBAC3C,aAAa,OAAO;uBAChB,EAAE,YAAY,cAAc,OAAO,uBAAuB,MAAM,aAAa,CAAC;;;KAGhG,EAAE,UAAU,YACb,WACI,sBAAsB,cAAc,OAAO,gBAAgB,MAAM,iBAAiB,KAClF,GAAG;;;oIAGqB;;;AAIhC,MAAM,cAAc,OAAO,YAAY;mBACpB,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,eAAe,CAAC;;AAS7F,MAAM,UAAU,EAAE,OAAO,UAAU,eAA4B;AAG7D,QAAO,MAAM,aAAa,KAAK,YAC7B,oBAAC,aAAD;EAAuB;EAAU,OAAM;EAAU,eAAe,SAAS,MAAM;EAAI,CAAA,GAEnF,oBAAC,aAAD;EAAa,QAAQ;EAAiB;EAAU,OAAO;EAAO,eAAe,SAAS,MAAM;EAAI,CAAA"}
@@ -1,9 +1,9 @@
1
- import { t as Table } from "../../Table-BJfcRpMX.mjs";
2
- import { t as TableHeaderCell } from "../../TableHeaderCell-BXgnxPpX.mjs";
3
- import { t as TableRow } from "../../TableRow-C1iGbNjZ.mjs";
4
- import { a as TableCellProps, c as TableTD, i as TableCell, l as TableTR, n as StickyTH, o as TableCellTitle, r as TableActionTD, s as TableIconTD, t as StickyTD } from "../../TableCell-KHx5JlqZ.mjs";
5
- import { t as TableHead } from "../../TableHead-D5A3bOwt.mjs";
6
- import { t as TableBody } from "../../TableBody-CBz2PjA-.mjs";
7
- import { t as TableTH } from "../../index-D2YFHdsf.mjs";
8
- import { t as TableLayout } from "../../TableLayout-Dy5ht8KO.mjs";
1
+ import { t as Table } from "../../Table-DGl3mDwc.mjs";
2
+ import { t as TableHeaderCell } from "../../TableHeaderCell-wKcp8rZj.mjs";
3
+ import { t as TableRow } from "../../TableRow-C011thJ3.mjs";
4
+ import { a as TableCellProps, c as TableTD, i as TableCell, l as TableTR, n as StickyTH, o as TableCellTitle, r as TableActionTD, s as TableIconTD, t as StickyTD } from "../../TableCell-Do9W49SJ.mjs";
5
+ import { t as TableHead } from "../../TableHead-CIXIrZGE.mjs";
6
+ import { t as TableBody } from "../../TableBody-BbC-H2qj.mjs";
7
+ import { t as TableTH } from "../../index-DntqThoS.mjs";
8
+ import { t as TableLayout } from "../../TableLayout-0-9FnNvt.mjs";
9
9
  export { StickyTD, StickyTH, Table, Table as default, TableActionTD, TableBody, TableCell, TableCellProps, TableCellTitle, TableHead, TableHeaderCell, TableIconTD, TableLayout, TableRow, TableTD, TableTH, TableTR };
@@ -1,3 +1,3 @@
1
- import { t as DragDirection } from "../../useTableBoxDragAndDrop-8NS4JBuI.mjs";
2
- import { a as TableBox, o as TableBoxContext, r as InlineEditConfig, s as TableBoxProps } from "../../TableBoxCell-CwroLAWy.mjs";
1
+ import { t as DragDirection } from "../../useTableBoxDragAndDrop-CCMADt-F.mjs";
2
+ import { a as TableBox, o as TableBoxContext, r as InlineEditConfig, s as TableBoxProps } from "../../TableBoxCell-DuvWTwOm.mjs";
3
3
  export { DragDirection, InlineEditConfig, TableBoxContext, TableBoxProps, TableBox as default };
@@ -1,2 +1,2 @@
1
- import { a as Label, c as ParagraphProps, d as TabularNumber, i as HeadingProps, l as Span, n as DisplayProps, o as LabelProps, r as Heading, s as Paragraph, t as Display, u as SpanProps } from "../../Text-SaoRBdB6.mjs";
1
+ import { a as Label, c as ParagraphProps, d as TabularNumber, i as HeadingProps, l as Span, n as DisplayProps, o as LabelProps, r as Heading, s as Paragraph, t as Display, u as SpanProps } from "../../Text-BgSW0yDb.mjs";
2
2
  export { Display, DisplayProps, Heading, HeadingProps, Label, LabelProps, Paragraph, ParagraphProps, Span, SpanProps, TabularNumber };
@@ -1,2 +1,2 @@
1
- import { n as TextAreaWithStyle, t as TextAreaProps } from "../../TextArea-gtSlghjy.mjs";
1
+ import { n as TextAreaWithStyle, t as TextAreaProps } from "../../TextArea-CyWv8jaV.mjs";
2
2
  export { TextAreaWithStyle as TextArea, TextAreaWithStyle as default, TextAreaProps };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["ArrowRightIcon12","ArrowRightIcon16"],"sources":["../../../src/components/Tile/Tile.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport Stack, { HStack } from '@persona/design-system/components/Stack';\nimport Sticker, { type StickerProps } from '@persona/design-system/components/Sticker';\nimport { Heading, Paragraph } from '@persona/design-system/components/Text';\nimport { TextUnderlineTooltip } from '@persona/design-system/components/Tooltip';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { ArrowRightIcon as ArrowRightIcon12 } from '@persona/icons/12px';\nimport { ArrowRightIcon as ArrowRightIcon16 } from '@persona/icons/16px';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nexport type TileSize = 'sm' | 'md';\n\nexport interface TileStickerProps extends Omit<\n StickerProps,\n 'children' | 'onDismiss' | 'dismissButtonProps'\n> {\n /**\n * Text content of the sticker. The Tile owns rendering so callers cannot\n * inject arbitrary JSX.\n */\n text: string;\n}\n\nexport interface TileProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Size of the tile. Controls value typography and padding.\n *\n * @defaultValue 'md'\n */\n size?: TileSize;\n\n /**\n * Label rendered above the value.\n */\n label: string;\n\n /**\n * Tooltip content shown when hovering the label. When provided, the label\n * is rendered with a dashed-underline trigger.\n */\n labelTooltip?: ReactNode;\n\n /**\n * Main value displayed prominently. Pass a `[before, after]` tuple to render\n * a transition between two values with a right-pointing arrow between them.\n */\n value: string | [string, string];\n\n /**\n * Optional sticker rendered to the right of the value. The Tile renders the\n * `<Sticker>` itself; callers configure it via these props (text + any\n * non-children sticker props such as `variant` or `icon`).\n */\n sticker?: TileStickerProps;\n\n /**\n * Optional metadata text rendered beneath the value.\n */\n metadata?: string;\n\n /**\n * Tooltip content shown when hovering the metadata. When provided, the\n * metadata is rendered with a dashed-underline trigger.\n */\n metadataTooltip?: ReactNode;\n}\n\nconst PADDING_BY_SIZE: Record<TileSize, string> = {\n sm: Spacing[3],\n md: Spacing[4],\n};\n\nconst TILE_MAX_WIDTH_PX = '220px';\n\nconst TileContainer = styled(Stack)<{ $size: TileSize }>`\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n box-sizing: border-box;\n width: 100%;\n max-width: ${TILE_MAX_WIDTH_PX};\n padding: ${({ $size }) => PADDING_BY_SIZE[$size]};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\nconst TransitionArrow = styled.span`\n display: inline-flex;\n align-items: center;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n line-height: 0;\n`;\n\nexport const Tile = ({\n size = 'md',\n label,\n labelTooltip,\n value,\n sticker,\n metadata,\n metadataTooltip,\n ...props\n}: TileProps) => {\n const labelNode = labelTooltip ? (\n <TextUnderlineTooltip tooltip={labelTooltip} side='top'>\n {label}\n </TextUnderlineTooltip>\n ) : (\n label\n );\n\n const metadataNode =\n metadata != null && metadataTooltip ? (\n <TextUnderlineTooltip tooltip={metadataTooltip}>{metadata}</TextUnderlineTooltip>\n ) : (\n metadata\n );\n\n const { text: stickerText, ...stickerRest } = sticker ?? { text: '' };\n\n return (\n <TileContainer $size={size} spacing={Spacing[1]} {...props}>\n <Paragraph size={size} color='secondary' as='div'>\n {labelNode}\n </Paragraph>\n <HStack spacing={Spacing[2]} align='center'>\n {Array.isArray(value) ? (\n <>\n <Heading size={size} color='primary' as='p'>\n {value[0]}\n </Heading>\n <TransitionArrow data-test='tile-transition-arrow' aria-hidden='true'>\n {size === 'sm' ? <ArrowRightIcon12 /> : <ArrowRightIcon16 />}\n </TransitionArrow>\n <Heading size={size} color='primary' as='p'>\n {value[1]}\n </Heading>\n </>\n ) : (\n <Heading size={size} color='primary' as='p'>\n {value}\n </Heading>\n )}\n {sticker != null && <Sticker {...stickerRest}>{stickerText}</Sticker>}\n </HStack>\n {metadata != null && (\n <Paragraph size='sm' color='secondary' as='div'>\n {metadataNode}\n </Paragraph>\n )}\n </TileContainer>\n );\n};\n\nexport default Tile;\n"],"mappings":";;;;;;;;;;;AAqEA,MAAM,kBAA4C;CAChD,IAAI,QAAQ;CACZ,IAAI,QAAQ;CACb;AAID,MAAM,gBAAgB,OAAO,MAAM;uBACZ,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,MAAM,WAAW,QAAQ,CAAC;;;eAG7F,QAAkB;cACnB,EAAE,YAAY,gBAAgB,OAAO;uBAC5B,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,QAAQ,CAAC;oBACnF,EAAE,YAAY,MAAM,KAAK,aAAa;;AAG1D,MAAM,kBAAkB,OAAO,IAAI;;;YAGvB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,oBAAoB,CAAC;;;AAIzF,MAAa,QAAQ,EACnB,OAAO,MACP,OACA,cACA,OACA,SACA,UACA,iBACA,GAAG,YACY;CACf,MAAM,YAAY,eAChB,oBAAC,sBAAD;EAAsB,SAAS;EAAc,MAAK;YAC/C;EACoB,CAAA,GAEvB;CAGF,MAAM,eACJ,YAAY,QAAQ,kBAClB,oBAAC,sBAAD;EAAsB,SAAS;YAAkB;EAAgC,CAAA,GAEjF;CAGJ,MAAM,EAAE,MAAM,aAAa,GAAG,gBAAgB,WAAW,EAAE,MAAM,IAAI;AAErE,QACE,qBAAC,eAAD;EAAe,OAAO;EAAM,SAAS,QAAQ;EAAI,GAAI;YAArD;GACE,oBAAC,WAAD;IAAiB;IAAM,OAAM;IAAY,IAAG;cACzC;IACS,CAAA;GACZ,qBAAC,QAAD;IAAQ,SAAS,QAAQ;IAAI,OAAM;cAAnC,CACG,MAAM,QAAQ,MAAM,GACnB,qBAAA,UAAA,EAAA,UAAA;KACE,oBAAC,SAAD;MAAe;MAAM,OAAM;MAAU,IAAG;gBACrC,MAAM;MACC,CAAA;KACV,oBAAC,iBAAD;MAAiB,aAAU;MAAwB,eAAY;gBAC5D,SAAS,OAAO,oBAACA,gBAAD,EAAoB,CAAA,GAAG,oBAACC,kBAAD,EAAoB,CAAA;MAC5C,CAAA;KAClB,oBAAC,SAAD;MAAe;MAAM,OAAM;MAAU,IAAG;gBACrC,MAAM;MACC,CAAA;KACT,EAAA,CAAA,GAEH,oBAAC,SAAD;KAAe;KAAM,OAAM;KAAU,IAAG;eACrC;KACO,CAAA,EAEX,WAAW,QAAQ,oBAAC,SAAD;KAAS,GAAI;eAAc;KAAsB,CAAA,CAC9D;;GACR,YAAY,QACX,oBAAC,WAAD;IAAW,MAAK;IAAK,OAAM;IAAY,IAAG;cACvC;IACS,CAAA;GAEA"}
1
+ {"version":3,"file":"index.mjs","names":["ArrowRightIcon12","ArrowRightIcon16"],"sources":["../../../src/components/Tile/Tile.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport Stack, { HStack } from '@persona/design-system/components/Stack';\nimport Sticker, { type StickerProps } from '@persona/design-system/components/Sticker';\nimport { Heading, Paragraph } from '@persona/design-system/components/Text';\nimport { TextUnderlineTooltip } from '@persona/design-system/components/Tooltip';\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { ArrowRightIcon as ArrowRightIcon12 } from '@persona/icons/12px';\nimport { ArrowRightIcon as ArrowRightIcon16 } from '@persona/icons/16px';\n\nimport { semanticColor } from '#src/lib/semanticColor';\n\nexport type TileSize = 'sm' | 'md';\n\nexport interface TileStickerProps extends Omit<\n StickerProps,\n 'children' | 'onDismiss' | 'dismissButtonProps'\n> {\n /**\n * Text content of the sticker. The Tile owns rendering so callers cannot\n * inject arbitrary JSX.\n */\n text: string;\n}\n\nexport interface TileProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Size of the tile. Controls value typography and padding.\n *\n * @defaultValue 'md'\n */\n size?: TileSize;\n\n /**\n * Label rendered above the value.\n */\n label: string;\n\n /**\n * Tooltip content shown when hovering the label. When provided, the label\n * is rendered with a dashed-underline trigger.\n */\n labelTooltip?: ReactNode;\n\n /**\n * Main value displayed prominently. Pass a `[before, after]` tuple to render\n * a transition between two values with a right-pointing arrow between them.\n */\n value: string | [string, string];\n\n /**\n * Optional sticker rendered to the right of the value. The Tile renders the\n * `<Sticker>` itself; callers configure it via these props (text + any\n * non-children sticker props such as `variant` or `icon`).\n */\n sticker?: TileStickerProps;\n\n /**\n * Optional metadata text rendered beneath the value.\n */\n metadata?: string;\n\n /**\n * Tooltip content shown when hovering the metadata. When provided, the\n * metadata is rendered with a dashed-underline trigger.\n */\n metadataTooltip?: ReactNode;\n}\n\nconst PADDING_BY_SIZE: Record<TileSize, string> = {\n sm: Spacing[3],\n md: Spacing[4],\n};\n\nconst TILE_MAX_WIDTH_PX = '220px';\n\nconst TileContainer = styled(Stack)<{ $size: TileSize }>`\n background-color: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', theme.color.background.primary)};\n box-sizing: border-box;\n width: 100%;\n max-width: ${TILE_MAX_WIDTH_PX};\n padding: ${({ $size }) => PADDING_BY_SIZE[$size]};\n border: 1px solid ${({ theme }) => semanticColor(theme, 'BorderDivider', theme.color.border.primary)};\n border-radius: ${({ theme }) => theme.card.borderRadius};\n`;\n\nconst TransitionArrow = styled.span`\n display: inline-flex;\n align-items: center;\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.BorderIconSecondary)};\n line-height: 0;\n`;\n\nexport const Tile = ({\n size = 'md',\n label,\n labelTooltip,\n value,\n sticker,\n metadata,\n metadataTooltip,\n ...props\n}: TileProps) => {\n const labelNode = labelTooltip ? (\n <TextUnderlineTooltip tooltip={labelTooltip} side='top'>\n {label}\n </TextUnderlineTooltip>\n ) : (\n label\n );\n\n const metadataNode =\n metadata != null && metadataTooltip ? (\n <TextUnderlineTooltip tooltip={metadataTooltip}>{metadata}</TextUnderlineTooltip>\n ) : (\n metadata\n );\n\n const { text: stickerText, ...stickerRest } = sticker ?? { text: '' };\n\n return (\n <TileContainer $size={size} spacing={Spacing[1]} {...props}>\n <Paragraph size={size} color='secondary' as='div'>\n {labelNode}\n </Paragraph>\n <HStack spacing={Spacing[2]} align='center'>\n {Array.isArray(value) ? (\n <>\n <Heading size={size} color='primary' as='p'>\n {value[0]}\n </Heading>\n <TransitionArrow data-test='tile-transition-arrow' aria-hidden='true'>\n {size === 'sm' ? <ArrowRightIcon12 /> : <ArrowRightIcon16 />}\n </TransitionArrow>\n <Heading size={size} color='primary' as='p'>\n {value[1]}\n </Heading>\n </>\n ) : (\n <Heading size={size} color='primary' as='p'>\n {value}\n </Heading>\n )}\n {sticker != null && <Sticker {...stickerRest}>{stickerText}</Sticker>}\n </HStack>\n {metadata != null && (\n <Paragraph size='sm' color='secondary' as='div'>\n {metadataNode}\n </Paragraph>\n )}\n </TileContainer>\n );\n};\n\nexport default Tile;\n"],"mappings":";;;;;;;;;;;AAsEA,MAAM,kBAA4C;CAChD,IAAI,QAAQ;CACZ,IAAI,QAAQ;CACb;AAID,MAAM,gBAAgB,OAAO,MAAM;uBACZ,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,MAAM,WAAW,QAAQ,CAAC;;;eAG7F,QAAkB;cACnB,EAAE,YAAY,gBAAgB,OAAO;uBAC5B,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,MAAM,OAAO,QAAQ,CAAC;oBACnF,EAAE,YAAY,MAAM,KAAK,aAAa;;AAG1D,MAAM,kBAAkB,OAAO,IAAI;;;YAGvB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,oBAAoB,CAAC;;;AAIzF,MAAa,QAAQ,EACnB,OAAO,MACP,OACA,cACA,OACA,SACA,UACA,iBACA,GAAG,YACY;CACf,MAAM,YAAY,eAChB,oBAAC,sBAAD;EAAsB,SAAS;EAAc,MAAK;YAC/C;EACoB,CAAA,GAEvB;CAGF,MAAM,eACJ,YAAY,QAAQ,kBAClB,oBAAC,sBAAD;EAAsB,SAAS;YAAkB;EAAgC,CAAA,GAEjF;CAGJ,MAAM,EAAE,MAAM,aAAa,GAAG,gBAAgB,WAAW,EAAE,MAAM,IAAI;AAErE,QACE,qBAAC,eAAD;EAAe,OAAO;EAAM,SAAS,QAAQ;EAAI,GAAI;YAArD;GACE,oBAAC,WAAD;IAAiB;IAAM,OAAM;IAAY,IAAG;cACzC;IACS,CAAA;GACZ,qBAAC,QAAD;IAAQ,SAAS,QAAQ;IAAI,OAAM;cAAnC,CACG,MAAM,QAAQ,MAAM,GACnB,qBAAA,UAAA,EAAA,UAAA;KACE,oBAAC,SAAD;MAAe;MAAM,OAAM;MAAU,IAAG;gBACrC,MAAM;MACC,CAAA;KACV,oBAAC,iBAAD;MAAiB,aAAU;MAAwB,eAAY;gBAC5D,SAAS,OAAO,oBAACA,gBAAD,EAAoB,CAAA,GAAG,oBAACC,kBAAD,EAAoB,CAAA;MAC5C,CAAA;KAClB,oBAAC,SAAD;MAAe;MAAM,OAAM;MAAU,IAAG;gBACrC,MAAM;MACC,CAAA;KACT,EAAA,CAAA,GAEH,oBAAC,SAAD;KAAe;KAAM,OAAM;KAAU,IAAG;eACrC;KACO,CAAA,EAEX,WAAW,QAAQ,oBAAC,SAAD;KAAS,GAAI;eAAc;KAAsB,CAAA,CAC9D;;GACR,YAAY,QACX,oBAAC,WAAD;IAAW,MAAK;IAAK,OAAM;IAAY,IAAG;cACvC;IACS,CAAA;GAEA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["XIcon"],"sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { type HTMLMotionProps, motion } from 'framer-motion';\nimport type { ReactElement } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport {\n isActive,\n isFocused,\n isHovered,\n isNotDisabled,\n} from '@persona/design-system/lib/pseudoClass';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { Elevation } from '@persona/design-system/variables/effect';\nimport { TransitionDurationInSeconds } from '@persona/design-system/variables/transitions';\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { CircleAlertIcon, CircleCheckIcon, CircleInfoIcon } from '@persona/icons';\nimport { XIcon } from '@persona/icons/12px';\nimport { withAlpha } from 'design-system/lib/color';\nimport { MessageType } from 'design-system/lib/message';\nimport { semanticColor, semanticOnly, semanticTokens } from 'design-system/lib/semanticColor';\n\nexport interface ToastProps extends HTMLMotionProps<'div'> {\n id: string;\n message: React.ReactNode;\n messageType: MessageType;\n onDismiss?: () => void;\n shouldClipOverflow?: boolean;\n}\n\n// This is exported and used by whatever container is rendering the Toasts\nexport const TOAST_WIDTH = '324px';\n\nconst BaseToast = styled(motion.div)`\n border-radius: ${BorderRadius.Md};\n box-shadow: ${Elevation.Low};\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', theme.color.text.primary)};\n ${paragraphMixins.md};\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n box-sizing: border-box;\n padding: ${Spacing[2]} ${Spacing[3]};\n width: 100%;\n`;\n\nconst ToastIcon = styled.div`\n flex-shrink: 0;\n display: flex;\n line-height: 0;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', Color.BorderIconPrimary)};\n`;\n\nconst ToastContent = styled.div<{ $clip?: boolean }>`\n flex: 1;\n min-width: 0; /* needed for text to wrap/truncate inside flex container */\n ${({ $clip }) =>\n $clip &&\n css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n`;\n\nconst CloseButton = styled(IconButton)<{ isFocusVisible?: boolean }>`\n flex-shrink: 0;\n margin-left: auto;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', Color.BorderIconPrimary)};\n\n &${isActive}${isNotDisabled}, &${isHovered}${isNotDisabled} {\n background-color: ${({ theme }) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.ActionNeutralHover, tokens.Opacity25)\n : 'rgba(0, 0, 0, 0.05)';\n }};\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimaryStatic};`)}\n }\n\n ${({ isFocusVisible }) =>\n !isFocusVisible &&\n css`\n &${isHovered}${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n `}\n`;\n\nconst NoticeToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusInfo1', Color.CorePurple200)};\n`;\n\nconst SuccessToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusSuccess1', Color.CoreGreen200)};\n`;\n\nconst FailureToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusDanger2', Color.CoreRed200)};\n`;\n\nconst getStyledComponent = (variant: MessageType) => {\n switch (variant) {\n case MessageType.Success:\n return SuccessToast;\n case MessageType.Failure:\n return FailureToast;\n case MessageType.Notice:\n default:\n return NoticeToast;\n }\n};\n\nconst getIcon = (variant: MessageType): ReactElement => {\n switch (variant) {\n case MessageType.Success:\n return <CircleCheckIcon />;\n case MessageType.Failure:\n return <CircleAlertIcon />;\n case MessageType.Notice:\n default:\n return <CircleInfoIcon />;\n }\n};\n\nexport const Toast = ({\n message,\n messageType,\n onDismiss,\n shouldClipOverflow,\n ...elemProps\n}: ToastProps) => {\n const StyledToast = getStyledComponent(messageType);\n\n return (\n <StyledToast\n initial={{ y: 64, opacity: 0, scale: 0.96 }}\n animate={{ y: 0, opacity: 1, scale: 1 }}\n exit={{\n opacity: 0,\n scale: 0.9,\n transition: { duration: TransitionDurationInSeconds.MediumFast, ease: 'easeOut' },\n }}\n role='alert'\n aria-live='polite'\n transition={{ type: 'tween', duration: TransitionDurationInSeconds.Medium, ease: 'easeOut' }}\n {...elemProps}\n >\n <ToastIcon>{getIcon(messageType)}</ToastIcon>\n <ToastContent $clip={shouldClipOverflow}>{message}</ToastContent>\n {onDismiss && (\n <CloseButton size='sm' aria-label='Close' title='Close' onClick={onDismiss}>\n <XIcon />\n </CloseButton>\n )}\n </StyledToast>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AA8BA,MAAa,cAAc;AAE3B,MAAM,YAAY,OAAO,OAAO,IAAI;mBACjB,aAAa,GAAG;kIACL;YAClB,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,MAAM,KAAK,QAAQ,CAAC;IACxF,gBAAgB,GAAG;;;SAGd,QAAQ,GAAG;;aAEP,QAAQ,GAAG,GAAG,QAAQ,GAAG;;;AAItC,MAAM,YAAY,OAAO,GAAG;;;;YAIhB,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;;AAG3F,MAAM,eAAe,OAAO,GAAwB;;;KAG/C,EAAE,YACH,SACA,GAAG;;;;MAID;;AAGN,MAAM,cAAc,OAAO,WAAW;;;YAG1B,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;;KAEtF,WAAW,cAAc,KAAK,YAAY,cAAc;yBACpC,EAAE,YAAY;CACjC,MAAM,SAAS,eAAe,MAAM;AACpC,QAAO,SACH,UAAU,OAAO,oBAAoB,OAAO,UAAU,GACtD;EACJ;MACA,cAAc,WAAW,UAAU,OAAO,gBAAgB,GAAG,CAAC;;;KAG/D,EAAE,qBACH,CAAC,kBACD,GAAG;SACE,YAAY,YAAY,cAAc;;;SAGtC,YAAY,cAAc;;;MAG7B;;AAGN,MAAM,cAAc,OAAO,UAAU;iBACpB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,cAAc,CAAC;;AAGxF,MAAM,eAAe,OAAO,UAAU;iBACrB,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,aAAa,CAAC;;AAG1F,MAAM,eAAe,OAAO,UAAU;iBACrB,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,WAAW,CAAC;;AAGvF,MAAM,sBAAsB,YAAyB;AACnD,SAAQ,SAAR;EACE,KAAA,UACE,QAAO;EACT,KAAA,UACE,QAAO;EAET,QACE,QAAO;;;AAIb,MAAM,WAAW,YAAuC;AACtD,SAAQ,SAAR;EACE,KAAA,UACE,QAAO,oBAAC,iBAAD,EAAmB,CAAA;EAC5B,KAAA,UACE,QAAO,oBAAC,iBAAD,EAAmB,CAAA;EAE5B,QACE,QAAO,oBAAC,gBAAD,EAAkB,CAAA;;;AAI/B,MAAa,SAAS,EACpB,SACA,aACA,WACA,oBACA,GAAG,gBACa;AAGhB,QACE,qBAHkB,mBAAmB,YAGzB,EAAZ;EACE,SAAS;GAAE,GAAG;GAAI,SAAS;GAAG,OAAO;GAAM;EAC3C,SAAS;GAAE,GAAG;GAAG,SAAS;GAAG,OAAO;GAAG;EACvC,MAAM;GACJ,SAAS;GACT,OAAO;GACP,YAAY;IAAE,UAAA;IAAkD,MAAM;IAAW;GAClF;EACD,MAAK;EACL,aAAU;EACV,YAAY;GAAE,MAAM;GAAS,UAAA;GAA8C,MAAM;GAAW;EAC5F,GAAI;YAXN;GAaE,oBAAC,WAAD,EAAA,UAAY,QAAQ,YAAY,EAAa,CAAA;GAC7C,oBAAC,cAAD;IAAc,OAAO;cAAqB;IAAuB,CAAA;GAChE,aACC,oBAAC,aAAD;IAAa,MAAK;IAAK,cAAW;IAAQ,OAAM;IAAQ,SAAS;cAC/D,oBAACA,SAAD,EAAS,CAAA;IACG,CAAA;GAEJ"}
1
+ {"version":3,"file":"index.mjs","names":["XIcon"],"sources":["../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { type HTMLMotionProps, motion } from 'framer-motion';\nimport type { ReactElement } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { IconButton } from '@persona/design-system/components/Button';\nimport {\n isActive,\n isFocused,\n isHovered,\n isNotDisabled,\n} from '@persona/design-system/lib/pseudoClass';\nimport { paragraphMixins } from '@persona/design-system/mixins/text';\nimport { Elevation } from '@persona/design-system/variables/effect';\nimport { TransitionDurationInSeconds } from '@persona/design-system/variables/transitions';\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { CircleAlertIcon, CircleCheckIcon, CircleInfoIcon } from '@persona/icons';\nimport { XIcon } from '@persona/icons/12px';\n\nimport { withAlpha } from '#src/lib/color';\nimport { MessageType } from '#src/lib/message';\nimport { semanticColor, semanticOnly, semanticTokens } from '#src/lib/semanticColor';\n\nexport interface ToastProps extends HTMLMotionProps<'div'> {\n id: string;\n message: React.ReactNode;\n messageType: MessageType;\n onDismiss?: () => void;\n shouldClipOverflow?: boolean;\n}\n\n// This is exported and used by whatever container is rendering the Toasts\nexport const TOAST_WIDTH = '324px';\n\nconst BaseToast = styled(motion.div)`\n border-radius: ${BorderRadius.Md};\n box-shadow: ${Elevation.Low};\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', theme.color.text.primary)};\n ${paragraphMixins.md};\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n box-sizing: border-box;\n padding: ${Spacing[2]} ${Spacing[3]};\n width: 100%;\n`;\n\nconst ToastIcon = styled.div`\n flex-shrink: 0;\n display: flex;\n line-height: 0;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', Color.BorderIconPrimary)};\n`;\n\nconst ToastContent = styled.div<{ $clip?: boolean }>`\n flex: 1;\n min-width: 0; /* needed for text to wrap/truncate inside flex container */\n ${({ $clip }) =>\n $clip &&\n css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n `}\n`;\n\nconst CloseButton = styled(IconButton)<{ isFocusVisible?: boolean }>`\n flex-shrink: 0;\n margin-left: auto;\n color: ${({ theme }) => semanticColor(theme, 'FgPrimaryStatic', Color.BorderIconPrimary)};\n\n &${isActive}${isNotDisabled}, &${isHovered}${isNotDisabled} {\n background-color: ${({ theme }) => {\n const tokens = semanticTokens(theme);\n return tokens\n ? withAlpha(tokens.ActionNeutralHover, tokens.Opacity25)\n : 'rgba(0, 0, 0, 0.05)';\n }};\n ${semanticOnly((tokens) => `color: ${tokens.FgPrimaryStatic};`)}\n }\n\n ${({ isFocusVisible }) =>\n !isFocusVisible &&\n css`\n &${isHovered}${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n `}\n`;\n\nconst NoticeToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusInfo1', Color.CorePurple200)};\n`;\n\nconst SuccessToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusSuccess1', Color.CoreGreen200)};\n`;\n\nconst FailureToast = styled(BaseToast)`\n background: ${({ theme }) => semanticColor(theme, 'StatusDanger2', Color.CoreRed200)};\n`;\n\nconst getStyledComponent = (variant: MessageType) => {\n switch (variant) {\n case MessageType.Success:\n return SuccessToast;\n case MessageType.Failure:\n return FailureToast;\n case MessageType.Notice:\n default:\n return NoticeToast;\n }\n};\n\nconst getIcon = (variant: MessageType): ReactElement => {\n switch (variant) {\n case MessageType.Success:\n return <CircleCheckIcon />;\n case MessageType.Failure:\n return <CircleAlertIcon />;\n case MessageType.Notice:\n default:\n return <CircleInfoIcon />;\n }\n};\n\nexport const Toast = ({\n message,\n messageType,\n onDismiss,\n shouldClipOverflow,\n ...elemProps\n}: ToastProps) => {\n const StyledToast = getStyledComponent(messageType);\n\n return (\n <StyledToast\n initial={{ y: 64, opacity: 0, scale: 0.96 }}\n animate={{ y: 0, opacity: 1, scale: 1 }}\n exit={{\n opacity: 0,\n scale: 0.9,\n transition: { duration: TransitionDurationInSeconds.MediumFast, ease: 'easeOut' },\n }}\n role='alert'\n aria-live='polite'\n transition={{ type: 'tween', duration: TransitionDurationInSeconds.Medium, ease: 'easeOut' }}\n {...elemProps}\n >\n <ToastIcon>{getIcon(messageType)}</ToastIcon>\n <ToastContent $clip={shouldClipOverflow}>{message}</ToastContent>\n {onDismiss && (\n <CloseButton size='sm' aria-label='Close' title='Close' onClick={onDismiss}>\n <XIcon />\n </CloseButton>\n )}\n </StyledToast>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;AA+BA,MAAa,cAAc;AAE3B,MAAM,YAAY,OAAO,OAAO,IAAI;mBACjB,aAAa,GAAG;kIACL;YAClB,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,MAAM,KAAK,QAAQ,CAAC;IACxF,gBAAgB,GAAG;;;SAGd,QAAQ,GAAG;;aAEP,QAAQ,GAAG,GAAG,QAAQ,GAAG;;;AAItC,MAAM,YAAY,OAAO,GAAG;;;;YAIhB,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;;AAG3F,MAAM,eAAe,OAAO,GAAwB;;;KAG/C,EAAE,YACH,SACA,GAAG;;;;MAID;;AAGN,MAAM,cAAc,OAAO,WAAW;;;YAG1B,EAAE,YAAY,cAAc,OAAO,mBAAmB,MAAM,kBAAkB,CAAC;;KAEtF,WAAW,cAAc,KAAK,YAAY,cAAc;yBACpC,EAAE,YAAY;CACjC,MAAM,SAAS,eAAe,MAAM;AACpC,QAAO,SACH,UAAU,OAAO,oBAAoB,OAAO,UAAU,GACtD;EACJ;MACA,cAAc,WAAW,UAAU,OAAO,gBAAgB,GAAG,CAAC;;;KAG/D,EAAE,qBACH,CAAC,kBACD,GAAG;SACE,YAAY,YAAY,cAAc;;;SAGtC,YAAY,cAAc;;;MAG7B;;AAGN,MAAM,cAAc,OAAO,UAAU;iBACpB,EAAE,YAAY,cAAc,OAAO,eAAe,MAAM,cAAc,CAAC;;AAGxF,MAAM,eAAe,OAAO,UAAU;iBACrB,EAAE,YAAY,cAAc,OAAO,kBAAkB,MAAM,aAAa,CAAC;;AAG1F,MAAM,eAAe,OAAO,UAAU;iBACrB,EAAE,YAAY,cAAc,OAAO,iBAAiB,MAAM,WAAW,CAAC;;AAGvF,MAAM,sBAAsB,YAAyB;AACnD,SAAQ,SAAR;EACE,KAAA,UACE,QAAO;EACT,KAAA,UACE,QAAO;EAET,QACE,QAAO;;;AAIb,MAAM,WAAW,YAAuC;AACtD,SAAQ,SAAR;EACE,KAAA,UACE,QAAO,oBAAC,iBAAD,EAAmB,CAAA;EAC5B,KAAA,UACE,QAAO,oBAAC,iBAAD,EAAmB,CAAA;EAE5B,QACE,QAAO,oBAAC,gBAAD,EAAkB,CAAA;;;AAI/B,MAAa,SAAS,EACpB,SACA,aACA,WACA,oBACA,GAAG,gBACa;AAGhB,QACE,qBAHkB,mBAAmB,YAGzB,EAAZ;EACE,SAAS;GAAE,GAAG;GAAI,SAAS;GAAG,OAAO;GAAM;EAC3C,SAAS;GAAE,GAAG;GAAG,SAAS;GAAG,OAAO;GAAG;EACvC,MAAM;GACJ,SAAS;GACT,OAAO;GACP,YAAY;IAAE,UAAA;IAAkD,MAAM;IAAW;GAClF;EACD,MAAK;EACL,aAAU;EACV,YAAY;GAAE,MAAM;GAAS,UAAA;GAA8C,MAAM;GAAW;EAC5F,GAAI;YAXN;GAaE,oBAAC,WAAD,EAAA,UAAY,QAAQ,YAAY,EAAa,CAAA;GAC7C,oBAAC,cAAD;IAAc,OAAO;cAAqB;IAAuB,CAAA;GAChE,aACC,oBAAC,aAAD;IAAa,MAAK;IAAK,cAAW;IAAQ,OAAM;IAAQ,SAAS;cAC/D,oBAACA,SAAD,EAAS,CAAA;IACG,CAAA;GAEJ"}
@@ -1,2 +1,2 @@
1
- import { n as ToggleProps, t as Toggle } from "../../Toggle-BlvrM-Cw.mjs";
1
+ import { n as ToggleProps, t as Toggle } from "../../Toggle-BIJoB1AA.mjs";
2
2
  export { Toggle, Toggle as default, ToggleProps };
@@ -1,4 +1,4 @@
1
- import { i as TooltipWithIconProps, n as Tooltip, r as TooltipStandardProps, t as FloatingTooltip } from "../../Tooltip-CysnLwST.mjs";
2
- import { t as HelperTooltip } from "../../HelperTooltip-BLfPfJRN.mjs";
3
- import { n as TextWithDashedUnderline, t as TextUnderlineTooltip } from "../../TextUnderlineTooltip-DV61avLv.mjs";
1
+ import { i as TooltipWithIconProps, n as Tooltip, r as TooltipStandardProps, t as FloatingTooltip } from "../../Tooltip-CrpfAAfA.mjs";
2
+ import { t as HelperTooltip } from "../../HelperTooltip-jHTdkLQq.mjs";
3
+ import { n as TextWithDashedUnderline, t as TextUnderlineTooltip } from "../../TextUnderlineTooltip-CcyG4VkJ.mjs";
4
4
  export { FloatingTooltip, HelperTooltip, TextUnderlineTooltip, TextWithDashedUnderline, Tooltip, Tooltip as default, TooltipStandardProps, TooltipWithIconProps };
@@ -1,3 +1,3 @@
1
- import { n as VersionHistoryItemProps, r as VersionHistoryStatus } from "../../VersionHistoryItem-Px3ylMMq.mjs";
1
+ import { n as VersionHistoryItemProps, r as VersionHistoryStatus } from "../../VersionHistoryItem-Bo78T7y7.mjs";
2
2
  import { VersionHistory, VersionHistoryProps } from "../../VersionHistory.mjs";
3
3
  export { VersionHistory, VersionHistory as default, type VersionHistoryItemProps, type VersionHistoryProps, type VersionHistoryStatus };
@@ -7,9 +7,9 @@ import { n as Stack, t as HStack } from "../../Stack-Bzom2BTR.mjs";
7
7
  import { n as Button, t as IconButton } from "../../IconButton-DftINsp7.mjs";
8
8
  import { n as DropdownMenu_default } from "../../DropdownMenu-Q8S-9rXm.mjs";
9
9
  import { t as Spinner } from "../../Spinner-CXb-KUs1.mjs";
10
- import { i as Modal_default } from "../../Modal-92O_uW8H.mjs";
10
+ import { i as Modal_default } from "../../Modal-BBlilB-B.mjs";
11
11
  import { t as TextAreaWithStyle } from "../../TextArea-Dro-HH8O.mjs";
12
- import { n as StatusIndicator } from "../../StatusIndicator-pWl1-FLb.mjs";
12
+ import { n as StatusIndicator } from "../../StatusIndicator-Zf75KK3O.mjs";
13
13
  import { useCallback, useMemo, useState } from "react";
14
14
  import { Color, Spacing } from "@persona/design-tokens";
15
15
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["Modal","TextArea","DropdownMenu"],"sources":["../../../src/components/VersionHistory/VersionHistoryItem.tsx","../../../src/components/VersionHistory/VersionHistory.tsx"],"sourcesContent":["import { type MouseEvent, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { MoreIcon } from '@persona/icons';\nimport Button, { IconButton } from 'design-system/components/Button';\nimport DropdownMenu from 'design-system/components/DropdownMenu';\nimport Modal from 'design-system/components/Modal';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport StatusIndicator from 'design-system/components/StatusIndicator';\nimport { Paragraph } from 'design-system/components/Text';\nimport TextArea from 'design-system/components/TextArea';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { focusOutline } from 'design-system/mixins/focus';\n\nexport type VersionHistoryStatus = 'live' | 'saved' | 'unsaved' | 'published';\n\nexport type VersionHistoryItemProps = {\n id: string;\n title: string;\n status: VersionHistoryStatus;\n timestamp: string;\n lastUpdater?: string;\n description?: string;\n compareLabel?: string;\n restoreLabel?: string;\n discardLabel?: string;\n editDescriptionLabel?: string;\n onRestore?: () => void;\n onDiscard?: () => void | Promise<void>;\n onCompare?: () => void;\n onEditDescription?: (description: string) => void;\n};\n\nconst DEFAULT_COMPARE_LABEL = 'Compare to latest version';\nconst DEFAULT_RESTORE_LABEL = 'Restore';\nconst DEFAULT_DISCARD_LABEL = 'Discard';\nconst DEFAULT_EDIT_DESCRIPTION_LABEL = 'Edit description';\n\nexport const hasVersionHistoryItemActions = (item: VersionHistoryItemProps) =>\n item.onCompare != null ||\n item.onRestore != null ||\n item.onDiscard != null ||\n item.onEditDescription != null;\n\ntype VersionHistoryItemViewProps = VersionHistoryItemProps & {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n isLoadingVersion: boolean;\n onSelect: () => void;\n showActionSlot: boolean;\n};\n\n/** Timeline stroke; 3px is the rail weight from the source panel. */\nconst RAIL_THICKNESS = '3px';\n\nconst ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;\n\nconst Row = styled.div<{ $withActionSlot: boolean }>`\n display: grid;\n grid-template-columns: ${({ $withActionSlot }) =>\n $withActionSlot\n ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}`\n : `${Spacing[7]} minmax(0, 1fr)`};\n cursor: pointer;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n ${focusOutline}\n\n &:hover:not([aria-current='true']) {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceHover', Color.BackgroundSecondary)};\n }\n\n &[aria-current='true'] {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceAccent', theme.color.background.highlight)};\n }\n`;\n\nconst RailColumn = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst RailSegment = styled.div<{ $selected: boolean }>`\n width: 0;\n border-left: ${RAIL_THICKNESS} solid\n ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n flex: 1;\n`;\n\nconst RailStart = styled.div`\n height: ${Spacing[5]};\n flex-shrink: 0;\n`;\n\nconst TimelineDot = styled.span<{ $selected: boolean }>`\n width: ${Spacing[2]};\n height: ${Spacing[2]};\n border-radius: 50%;\n flex-shrink: 0;\n background-color: ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n`;\n\nconst BodyColumn = styled.div`\n min-width: 0;\n padding: ${Spacing[4]} 0;\n`;\n\nconst ActionsColumn = styled.div<{ $revealed: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: ${ACTION_SLOT_WIDTH};\n padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};\n box-sizing: border-box;\n\n > * {\n visibility: ${({ $revealed }) => ($revealed ? 'visible' : 'hidden')};\n }\n\n ${Row}:hover &,\n ${Row}:focus-within & {\n > * {\n visibility: visible;\n }\n }\n`;\n\nconst StatusChip = ({ status }: { status: VersionHistoryStatus }) => {\n const chip = useMemo(() => {\n switch (status) {\n case 'live':\n return { label: 'Deployed', type: 'success' as const };\n case 'unsaved':\n return { label: 'Unsaved', type: 'critical' as const };\n case 'saved':\n return { label: 'Saved', type: 'feature' as const };\n default:\n return null;\n }\n }, [status]);\n\n if (chip == null) {\n return null;\n }\n\n return (\n <StatusIndicator type={chip.type} showIcon={false}>\n {chip.label}\n </StatusIndicator>\n );\n};\n\nconst VersionHistoryItem = ({\n id,\n title,\n status,\n timestamp,\n lastUpdater,\n description,\n compareLabel = DEFAULT_COMPARE_LABEL,\n restoreLabel = DEFAULT_RESTORE_LABEL,\n discardLabel = DEFAULT_DISCARD_LABEL,\n editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL,\n onRestore,\n onDiscard,\n onCompare,\n onEditDescription,\n isFirst,\n isLast,\n isSelected,\n isLoadingVersion,\n onSelect,\n showActionSlot,\n}: VersionHistoryItemViewProps) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isDiscardOpen, setIsDiscardOpen] = useState(false);\n const [isDiscarding, setIsDiscarding] = useState(false);\n const [isEditOpen, setIsEditOpen] = useState(false);\n const [draftDescription, setDraftDescription] = useState(description ?? '');\n\n const menuItems = [\n onCompare != null && {\n id: `${id}__compare`,\n label: compareLabel,\n variant: 'basic' as const,\n onClick: onCompare,\n },\n onRestore != null && {\n id: `${id}__restore`,\n label: restoreLabel,\n variant: 'basic' as const,\n onClick: onRestore,\n },\n onDiscard != null && {\n id: `${id}__discard`,\n label: discardLabel,\n variant: 'basic' as const,\n onClick: () => setIsDiscardOpen(true),\n },\n onEditDescription != null && {\n id: `${id}__edit-description`,\n label: editDescriptionLabel,\n variant: 'basic' as const,\n onClick: () => {\n setDraftDescription(description ?? '');\n setIsEditOpen(true);\n },\n },\n ].filter((item): item is Exclude<typeof item, false> => Boolean(item));\n\n const stopRowClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const confirmDiscard = async () => {\n setIsDiscarding(true);\n try {\n await onDiscard?.();\n setIsDiscardOpen(false);\n } catch {\n // Keep the dialog open so the user can retry.\n } finally {\n setIsDiscarding(false);\n }\n };\n\n const confirmEdit = () => {\n onEditDescription?.(draftDescription);\n setIsEditOpen(false);\n };\n\n return (\n <>\n <Modal\n open={isDiscardOpen}\n onOpenChange={setIsDiscardOpen}\n isKeyboardDismissDisabled={isDiscarding}\n contentProps={isDiscarding ? { showCloseButton: false } : undefined}\n title='Discard draft?'\n footer={\n <>\n <Button\n variant='basic'\n width='auto'\n disabled={isDiscarding}\n onClick={() => setIsDiscardOpen(false)}\n >\n Cancel\n </Button>\n <Button variant='danger' width='auto' isPending={isDiscarding} onClick={confirmDiscard}>\n Discard\n </Button>\n </>\n }\n >\n <Paragraph color='primary'>\n All unpublished changes in this draft will be discarded. This action is permanent and\n cannot be undone.\n </Paragraph>\n </Modal>\n <Modal\n open={isEditOpen}\n onOpenChange={(open) => {\n setIsEditOpen(open);\n if (open) {\n setDraftDescription(description ?? '');\n }\n }}\n title='Edit description'\n footer={\n <>\n <Button variant='basic' width='auto' onClick={() => setIsEditOpen(false)}>\n Cancel\n </Button>\n <Button variant='primary' width='auto' onClick={confirmEdit}>\n Confirm\n </Button>\n </>\n }\n >\n <TextArea\n autoFocus\n value={draftDescription}\n onChange={(event) => setDraftDescription(event.target.value)}\n placeholder='No description'\n />\n </Modal>\n <Row\n role='listitem'\n $withActionSlot={showActionSlot}\n aria-current={isSelected || undefined}\n aria-busy={isLoadingVersion || undefined}\n tabIndex={0}\n onClick={() => {\n if (!isSelected) {\n onSelect();\n }\n }}\n onKeyDown={(event) => {\n if (isSelected) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect();\n }\n }}\n >\n <RailColumn>\n {isFirst ? <RailStart /> : <RailSegment $selected={isSelected} />}\n <TimelineDot $selected={isSelected} />\n {!isLast && <RailSegment $selected={isSelected} />}\n </RailColumn>\n <BodyColumn>\n <Stack spacing={Spacing[1]}>\n <HStack spacing={Spacing[2]} align='center'>\n <Paragraph color='primary' as='span'>\n {timestamp}\n </Paragraph>\n <StatusChip status={status} />\n {isLoadingVersion && !showActionSlot && <Spinner srText='Version loading' />}\n </HStack>\n <HStack spacing={Spacing[1]} align='center'>\n <Paragraph color='secondary' size='sm'>\n {title}\n </Paragraph>\n {lastUpdater && (\n <>\n <Paragraph color='secondary' size='sm'>\n &middot;\n </Paragraph>\n <Paragraph color='secondary' size='sm'>\n {lastUpdater}\n </Paragraph>\n </>\n )}\n </HStack>\n {description != null && description !== '' && (\n <Paragraph color='secondary' size='sm'>\n {description}\n </Paragraph>\n )}\n </Stack>\n </BodyColumn>\n {showActionSlot && (\n <ActionsColumn\n $revealed={isLoadingVersion || isMenuOpen}\n onClick={isLoadingVersion ? undefined : stopRowClick}\n >\n {isLoadingVersion ? (\n <Spinner srText='Version loading' />\n ) : (\n menuItems.length > 0 && (\n <DropdownMenu\n portal\n onOpenChange={setIsMenuOpen}\n trigger={\n <IconButton size='md' aria-label='More'>\n <MoreIcon />\n </IconButton>\n }\n >\n {menuItems.map((item) => (\n <DropdownMenu.Item\n key={item.id}\n variant={item.variant}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n item.onClick?.();\n }}\n >\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n )\n )}\n </ActionsColumn>\n )}\n </Row>\n </>\n );\n};\n\nexport default VersionHistoryItem;\n","import { useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\nimport { IconButton } from 'design-system/components/Button';\nimport Spinner from 'design-system/components/Spinner';\nimport { HStack, Stack } from 'design-system/components/Stack';\nimport { Paragraph } from 'design-system/components/Text';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { semanticScrollbar } from 'design-system/mixins/scrollbar';\n\nimport VersionHistoryItem, {\n hasVersionHistoryItemActions,\n type VersionHistoryItemProps,\n} from './VersionHistoryItem';\n\nexport type { VersionHistoryItemProps, VersionHistoryStatus } from './VersionHistoryItem';\n\n/** Matches the redesigned dashboard panel width. */\nconst PANEL_WIDTH = '600px';\n\nexport type VersionHistoryProps = {\n items: VersionHistoryItemProps[];\n selectedVersionId: string;\n onSelectVersion: (id: string) => void | Promise<void>;\n onClose?: () => void;\n loading?: boolean;\n emptyText?: string;\n};\n\nconst Panel = styled.nav`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: ${PANEL_WIDTH};\n height: 100%;\n overflow: hidden;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n border-left: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n padding: ${Spacing[3]} ${Spacing[5]};\n border-bottom: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst List = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n ${semanticScrollbar}\n`;\n\nconst LoadingBody = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n`;\n\nconst VersionHistory = ({\n items,\n selectedVersionId,\n onSelectVersion,\n onClose,\n loading = false,\n emptyText = 'No versions yet. Save or publish your changes to create one.',\n}: VersionHistoryProps) => {\n const [pendingVersionId, setPendingVersionId] = useState<string | null>(null);\n\n const selectVersion = useCallback(\n (versionId: string) => {\n if (pendingVersionId != null) {\n return;\n }\n const result = onSelectVersion(versionId);\n if (result instanceof Promise) {\n setPendingVersionId(versionId);\n const clearPending = () => setPendingVersionId(null);\n result.then(clearPending, clearPending);\n }\n },\n [onSelectVersion, pendingVersionId],\n );\n\n const showActionSlot = items.some(hasVersionHistoryItemActions);\n\n return (\n <Panel aria-label='Version History'>\n <Header>\n <HStack justify='space-between' align='center' spacing={Spacing[2]}>\n <Paragraph as='h3' size='lg' weight='bold' color='primary'>\n Version History\n </Paragraph>\n {onClose != null && (\n <IconButton size='md' aria-label='Close' onClick={onClose}>\n <XIcon />\n </IconButton>\n )}\n </HStack>\n </Header>\n {loading ? (\n <LoadingBody>\n <Spinner size='md' srText='Loading versions...' />\n </LoadingBody>\n ) : items.length === 0 ? (\n <Stack spacing={Spacing[3]} style={{ padding: Spacing[5] }}>\n <Paragraph color='secondary'>{emptyText}</Paragraph>\n </Stack>\n ) : (\n <List role='list' aria-label='Version history'>\n {items.map((item, index) => (\n <VersionHistoryItem\n key={item.id}\n {...item}\n isFirst={index === 0}\n isLast={index === items.length - 1}\n isSelected={item.id === (pendingVersionId ?? selectedVersionId)}\n isLoadingVersion={item.id === pendingVersionId}\n showActionSlot={showActionSlot}\n onSelect={() => selectVersion(item.id)}\n />\n ))}\n </List>\n )}\n </Panel>\n );\n};\n\nexport { VersionHistory };\nexport default VersionHistory;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["Modal","TextArea","DropdownMenu"],"sources":["../../../src/components/VersionHistory/VersionHistoryItem.tsx","../../../src/components/VersionHistory/VersionHistory.tsx"],"sourcesContent":["import { type MouseEvent, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { MoreIcon } from '@persona/icons';\n\nimport Button, { IconButton } from '#src/components/Button';\nimport DropdownMenu from '#src/components/DropdownMenu';\nimport Modal from '#src/components/Modal';\nimport Spinner from '#src/components/Spinner';\nimport { HStack, Stack } from '#src/components/Stack';\nimport StatusIndicator from '#src/components/StatusIndicator';\nimport { Paragraph } from '#src/components/Text';\nimport TextArea from '#src/components/TextArea';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { focusOutline } from '#src/mixins/focus';\n\nexport type VersionHistoryStatus = 'live' | 'saved' | 'unsaved' | 'published';\n\nexport type VersionHistoryItemProps = {\n id: string;\n title: string;\n status: VersionHistoryStatus;\n timestamp: string;\n lastUpdater?: string;\n description?: string;\n compareLabel?: string;\n restoreLabel?: string;\n discardLabel?: string;\n editDescriptionLabel?: string;\n onRestore?: () => void;\n onDiscard?: () => void | Promise<void>;\n onCompare?: () => void;\n onEditDescription?: (description: string) => void;\n};\n\nconst DEFAULT_COMPARE_LABEL = 'Compare to latest version';\nconst DEFAULT_RESTORE_LABEL = 'Restore';\nconst DEFAULT_DISCARD_LABEL = 'Discard';\nconst DEFAULT_EDIT_DESCRIPTION_LABEL = 'Edit description';\n\nexport const hasVersionHistoryItemActions = (item: VersionHistoryItemProps) =>\n item.onCompare != null ||\n item.onRestore != null ||\n item.onDiscard != null ||\n item.onEditDescription != null;\n\ntype VersionHistoryItemViewProps = VersionHistoryItemProps & {\n isFirst: boolean;\n isLast: boolean;\n isSelected: boolean;\n isLoadingVersion: boolean;\n onSelect: () => void;\n showActionSlot: boolean;\n};\n\n/** Timeline stroke; 3px is the rail weight from the source panel. */\nconst RAIL_THICKNESS = '3px';\n\nconst ACTION_SLOT_WIDTH = `calc(${Spacing[8]} + ${Spacing[4]})`;\n\nconst Row = styled.div<{ $withActionSlot: boolean }>`\n display: grid;\n grid-template-columns: ${({ $withActionSlot }) =>\n $withActionSlot\n ? `${Spacing[7]} minmax(0, 1fr) ${ACTION_SLOT_WIDTH}`\n : `${Spacing[7]} minmax(0, 1fr)`};\n cursor: pointer;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n ${focusOutline}\n\n &:hover:not([aria-current='true']) {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceHover', Color.BackgroundSecondary)};\n }\n\n &[aria-current='true'] {\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfaceAccent', theme.color.background.highlight)};\n }\n`;\n\nconst RailColumn = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst RailSegment = styled.div<{ $selected: boolean }>`\n width: 0;\n border-left: ${RAIL_THICKNESS} solid\n ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n flex: 1;\n`;\n\nconst RailStart = styled.div`\n height: ${Spacing[5]};\n flex-shrink: 0;\n`;\n\nconst TimelineDot = styled.span<{ $selected: boolean }>`\n width: ${Spacing[2]};\n height: ${Spacing[2]};\n border-radius: 50%;\n flex-shrink: 0;\n background-color: ${({ theme, $selected }) =>\n $selected\n ? semanticColor(theme, 'FgAccent', Color.TextActive)\n : semanticColor(theme, 'BorderDefault', Color.BorderDivider)};\n`;\n\nconst BodyColumn = styled.div`\n min-width: 0;\n padding: ${Spacing[4]} 0;\n`;\n\nconst ActionsColumn = styled.div<{ $revealed: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n width: ${ACTION_SLOT_WIDTH};\n padding: ${Spacing[4]} ${Spacing[4]} ${Spacing[4]} ${Spacing[2]};\n box-sizing: border-box;\n\n > * {\n visibility: ${({ $revealed }) => ($revealed ? 'visible' : 'hidden')};\n }\n\n ${Row}:hover &,\n ${Row}:focus-within & {\n > * {\n visibility: visible;\n }\n }\n`;\n\nconst StatusChip = ({ status }: { status: VersionHistoryStatus }) => {\n const chip = useMemo(() => {\n switch (status) {\n case 'live':\n return { label: 'Deployed', type: 'success' as const };\n case 'unsaved':\n return { label: 'Unsaved', type: 'critical' as const };\n case 'saved':\n return { label: 'Saved', type: 'feature' as const };\n default:\n return null;\n }\n }, [status]);\n\n if (chip == null) {\n return null;\n }\n\n return (\n <StatusIndicator type={chip.type} showIcon={false}>\n {chip.label}\n </StatusIndicator>\n );\n};\n\nconst VersionHistoryItem = ({\n id,\n title,\n status,\n timestamp,\n lastUpdater,\n description,\n compareLabel = DEFAULT_COMPARE_LABEL,\n restoreLabel = DEFAULT_RESTORE_LABEL,\n discardLabel = DEFAULT_DISCARD_LABEL,\n editDescriptionLabel = DEFAULT_EDIT_DESCRIPTION_LABEL,\n onRestore,\n onDiscard,\n onCompare,\n onEditDescription,\n isFirst,\n isLast,\n isSelected,\n isLoadingVersion,\n onSelect,\n showActionSlot,\n}: VersionHistoryItemViewProps) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const [isDiscardOpen, setIsDiscardOpen] = useState(false);\n const [isDiscarding, setIsDiscarding] = useState(false);\n const [isEditOpen, setIsEditOpen] = useState(false);\n const [draftDescription, setDraftDescription] = useState(description ?? '');\n\n const menuItems = [\n onCompare != null && {\n id: `${id}__compare`,\n label: compareLabel,\n variant: 'basic' as const,\n onClick: onCompare,\n },\n onRestore != null && {\n id: `${id}__restore`,\n label: restoreLabel,\n variant: 'basic' as const,\n onClick: onRestore,\n },\n onDiscard != null && {\n id: `${id}__discard`,\n label: discardLabel,\n variant: 'basic' as const,\n onClick: () => setIsDiscardOpen(true),\n },\n onEditDescription != null && {\n id: `${id}__edit-description`,\n label: editDescriptionLabel,\n variant: 'basic' as const,\n onClick: () => {\n setDraftDescription(description ?? '');\n setIsEditOpen(true);\n },\n },\n ].filter((item): item is Exclude<typeof item, false> => Boolean(item));\n\n const stopRowClick = (event: MouseEvent) => {\n event.stopPropagation();\n };\n\n const confirmDiscard = async () => {\n setIsDiscarding(true);\n try {\n await onDiscard?.();\n setIsDiscardOpen(false);\n } catch {\n // Keep the dialog open so the user can retry.\n } finally {\n setIsDiscarding(false);\n }\n };\n\n const confirmEdit = () => {\n onEditDescription?.(draftDescription);\n setIsEditOpen(false);\n };\n\n return (\n <>\n <Modal\n open={isDiscardOpen}\n onOpenChange={setIsDiscardOpen}\n isKeyboardDismissDisabled={isDiscarding}\n contentProps={isDiscarding ? { showCloseButton: false } : undefined}\n title='Discard draft?'\n footer={\n <>\n <Button\n variant='basic'\n width='auto'\n disabled={isDiscarding}\n onClick={() => setIsDiscardOpen(false)}\n >\n Cancel\n </Button>\n <Button variant='danger' width='auto' isPending={isDiscarding} onClick={confirmDiscard}>\n Discard\n </Button>\n </>\n }\n >\n <Paragraph color='primary'>\n All unpublished changes in this draft will be discarded. This action is permanent and\n cannot be undone.\n </Paragraph>\n </Modal>\n <Modal\n open={isEditOpen}\n onOpenChange={(open) => {\n setIsEditOpen(open);\n if (open) {\n setDraftDescription(description ?? '');\n }\n }}\n title='Edit description'\n footer={\n <>\n <Button variant='basic' width='auto' onClick={() => setIsEditOpen(false)}>\n Cancel\n </Button>\n <Button variant='primary' width='auto' onClick={confirmEdit}>\n Confirm\n </Button>\n </>\n }\n >\n <TextArea\n autoFocus\n value={draftDescription}\n onChange={(event) => setDraftDescription(event.target.value)}\n placeholder='No description'\n />\n </Modal>\n <Row\n role='listitem'\n $withActionSlot={showActionSlot}\n aria-current={isSelected || undefined}\n aria-busy={isLoadingVersion || undefined}\n tabIndex={0}\n onClick={() => {\n if (!isSelected) {\n onSelect();\n }\n }}\n onKeyDown={(event) => {\n if (isSelected) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n onSelect();\n }\n }}\n >\n <RailColumn>\n {isFirst ? <RailStart /> : <RailSegment $selected={isSelected} />}\n <TimelineDot $selected={isSelected} />\n {!isLast && <RailSegment $selected={isSelected} />}\n </RailColumn>\n <BodyColumn>\n <Stack spacing={Spacing[1]}>\n <HStack spacing={Spacing[2]} align='center'>\n <Paragraph color='primary' as='span'>\n {timestamp}\n </Paragraph>\n <StatusChip status={status} />\n {isLoadingVersion && !showActionSlot && <Spinner srText='Version loading' />}\n </HStack>\n <HStack spacing={Spacing[1]} align='center'>\n <Paragraph color='secondary' size='sm'>\n {title}\n </Paragraph>\n {lastUpdater && (\n <>\n <Paragraph color='secondary' size='sm'>\n &middot;\n </Paragraph>\n <Paragraph color='secondary' size='sm'>\n {lastUpdater}\n </Paragraph>\n </>\n )}\n </HStack>\n {description != null && description !== '' && (\n <Paragraph color='secondary' size='sm'>\n {description}\n </Paragraph>\n )}\n </Stack>\n </BodyColumn>\n {showActionSlot && (\n <ActionsColumn\n $revealed={isLoadingVersion || isMenuOpen}\n onClick={isLoadingVersion ? undefined : stopRowClick}\n >\n {isLoadingVersion ? (\n <Spinner srText='Version loading' />\n ) : (\n menuItems.length > 0 && (\n <DropdownMenu\n portal\n onOpenChange={setIsMenuOpen}\n trigger={\n <IconButton size='md' aria-label='More'>\n <MoreIcon />\n </IconButton>\n }\n >\n {menuItems.map((item) => (\n <DropdownMenu.Item\n key={item.id}\n variant={item.variant}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n item.onClick?.();\n }}\n >\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu>\n )\n )}\n </ActionsColumn>\n )}\n </Row>\n </>\n );\n};\n\nexport default VersionHistoryItem;\n","import { useCallback, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons';\n\nimport { IconButton } from '#src/components/Button';\nimport Spinner from '#src/components/Spinner';\nimport { HStack, Stack } from '#src/components/Stack';\nimport { Paragraph } from '#src/components/Text';\nimport { semanticColor } from '#src/lib/semanticColor';\nimport { semanticScrollbar } from '#src/mixins/scrollbar';\n\nimport VersionHistoryItem, {\n hasVersionHistoryItemActions,\n type VersionHistoryItemProps,\n} from './VersionHistoryItem';\n\nexport type { VersionHistoryItemProps, VersionHistoryStatus } from './VersionHistoryItem';\n\n/** Matches the redesigned dashboard panel width. */\nconst PANEL_WIDTH = '600px';\n\nexport type VersionHistoryProps = {\n items: VersionHistoryItemProps[];\n selectedVersionId: string;\n onSelectVersion: (id: string) => void | Promise<void>;\n onClose?: () => void;\n loading?: boolean;\n emptyText?: string;\n};\n\nconst Panel = styled.nav`\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n width: ${PANEL_WIDTH};\n height: 100%;\n overflow: hidden;\n background-color: ${({ theme }) =>\n semanticColor(theme, 'SurfacePrimary', Color.BackgroundPrimary)};\n border-left: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst Header = styled.div`\n flex-shrink: 0;\n padding: ${Spacing[3]} ${Spacing[5]};\n border-bottom: 1px solid\n ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n`;\n\nconst List = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n ${semanticScrollbar}\n`;\n\nconst LoadingBody = styled.div`\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n`;\n\nconst VersionHistory = ({\n items,\n selectedVersionId,\n onSelectVersion,\n onClose,\n loading = false,\n emptyText = 'No versions yet. Save or publish your changes to create one.',\n}: VersionHistoryProps) => {\n const [pendingVersionId, setPendingVersionId] = useState<string | null>(null);\n\n const selectVersion = useCallback(\n (versionId: string) => {\n if (pendingVersionId != null) {\n return;\n }\n const result = onSelectVersion(versionId);\n if (result instanceof Promise) {\n setPendingVersionId(versionId);\n const clearPending = () => setPendingVersionId(null);\n result.then(clearPending, clearPending);\n }\n },\n [onSelectVersion, pendingVersionId],\n );\n\n const showActionSlot = items.some(hasVersionHistoryItemActions);\n\n return (\n <Panel aria-label='Version History'>\n <Header>\n <HStack justify='space-between' align='center' spacing={Spacing[2]}>\n <Paragraph as='h3' size='lg' weight='bold' color='primary'>\n Version History\n </Paragraph>\n {onClose != null && (\n <IconButton size='md' aria-label='Close' onClick={onClose}>\n <XIcon />\n </IconButton>\n )}\n </HStack>\n </Header>\n {loading ? (\n <LoadingBody>\n <Spinner size='md' srText='Loading versions...' />\n </LoadingBody>\n ) : items.length === 0 ? (\n <Stack spacing={Spacing[3]} style={{ padding: Spacing[5] }}>\n <Paragraph color='secondary'>{emptyText}</Paragraph>\n </Stack>\n ) : (\n <List role='list' aria-label='Version history'>\n {items.map((item, index) => (\n <VersionHistoryItem\n key={item.id}\n {...item}\n isFirst={index === 0}\n isLast={index === items.length - 1}\n isSelected={item.id === (pendingVersionId ?? selectedVersionId)}\n isLoadingVersion={item.id === pendingVersionId}\n showActionSlot={showActionSlot}\n onSelect={() => selectVersion(item.id)}\n />\n ))}\n </List>\n )}\n </Panel>\n );\n};\n\nexport { VersionHistory };\nexport default VersionHistory;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { n as CompoundExpression, u as FilterRule } from "./types-DbOD5vE_.mjs";
1
+ import { n as CompoundExpression, u as FilterRule } from "./types-K57NVM0M.mjs";
2
2
 
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/compound-expression.d.ts
4
4
  declare function addRuleToGroup(compound: CompoundExpression, groupIndex: number, rule: FilterRule): CompoundExpression;
@@ -3,4 +3,4 @@ declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
3
3
  declare const MIN_PAGE_SIZE = 10;
4
4
  //#endregion
5
5
  export { MIN_PAGE_SIZE as n, DEFAULT_PAGE_SIZE_OPTIONS as t };
6
- //# sourceMappingURL=constants-CW1DRgwi.d.mts.map
6
+ //# sourceMappingURL=constants-B2NIZBD6.d.mts.map
@@ -7,4 +7,4 @@ declare function getColumnWidths(compact?: boolean): {
7
7
  };
8
8
  //#endregion
9
9
  export { getColumnWidths as t };
10
- //# sourceMappingURL=constants-D1hoZ5LO.d.mts.map
10
+ //# sourceMappingURL=constants-ChVceduh.d.mts.map
@@ -1,2 +1,2 @@
1
- import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-CW1DRgwi.mjs";
1
+ import { n as MIN_PAGE_SIZE, t as DEFAULT_PAGE_SIZE_OPTIONS } from "./constants-B2NIZBD6.mjs";
2
2
  export { DEFAULT_PAGE_SIZE_OPTIONS, MIN_PAGE_SIZE };
@@ -1,2 +1,2 @@
1
- import { t as getColumnWidths } from "./constants-D1hoZ5LO.mjs";
1
+ import { t as getColumnWidths } from "./constants-ChVceduh.mjs";
2
2
  export { getColumnWidths };
@@ -1,7 +1,7 @@
1
- import { i as To } from "./types-Dhz6VMKx.mjs";
1
+ import { i as To } from "./types-B5RbKp2V.mjs";
2
2
 
3
3
  //#region src/lib/router/createPath.d.ts
4
4
  declare function createPath(to: To): string;
5
5
  //#endregion
6
6
  export { createPath as t };
7
- //# sourceMappingURL=createPath-C4ZFkt93.d.mts.map
7
+ //# sourceMappingURL=createPath-D_opTH9A.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as createPath } from "./createPath-C4ZFkt93.mjs";
1
+ import { t as createPath } from "./createPath-D_opTH9A.mjs";
2
2
  export { createPath };
@@ -1,4 +1,4 @@
1
- import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from "./types-DbOD5vE_.mjs";
1
+ import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from "./types-K57NVM0M.mjs";
2
2
 
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/date-range-rule-value.d.ts
4
4
  /**
@@ -14,4 +14,4 @@ import { c as FilterFieldType, r as DateRangeFilterValue, u as FilterRule } from
14
14
  declare function resolveDateRangeRuleValue(rule: Pick<FilterRule, 'operator' | 'relativeDate' | 'value'>, fieldType?: FilterFieldType): DateRangeFilterValue | null;
15
15
  //#endregion
16
16
  export { resolveDateRangeRuleValue as t };
17
- //# sourceMappingURL=date-range-rule-value-CrVBpQcf.d.mts.map
17
+ //# sourceMappingURL=date-range-rule-value-3izEoXmi.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-CrVBpQcf.mjs";
1
+ import { t as resolveDateRangeRuleValue } from "./date-range-rule-value-3izEoXmi.mjs";
2
2
  export { resolveDateRangeRuleValue };
@@ -1,5 +1,5 @@
1
- import { a as DateFilterPreset } from "./types-rDQg74j-.mjs";
2
- import { t as DateFilterChange } from "./DateRangePicker-Nv4uNuIW.mjs";
1
+ import { a as DateFilterPreset } from "./types-FG-jOit9.mjs";
2
+ import { t as DateFilterChange } from "./DateRangePicker-fq-_pFpg.mjs";
3
3
  import { DateValue } from "@internationalized/date";
4
4
  import { RangeValue } from "@react-types/shared";
5
5
 
@@ -17,4 +17,4 @@ type DateRuleIntent = {
17
17
  declare function dateRuleIntent(change: DateFilterChange, writesEnabled: boolean): DateRuleIntent;
18
18
  //#endregion
19
19
  export { dateRuleIntent as t };
20
- //# sourceMappingURL=date-rule-intent-C1aptAoX.d.mts.map
20
+ //# sourceMappingURL=date-rule-intent-DjYIGcGO.d.mts.map
@@ -1,2 +1,2 @@
1
- import { t as dateRuleIntent } from "./date-rule-intent-C1aptAoX.mjs";
1
+ import { t as dateRuleIntent } from "./date-rule-intent-DjYIGcGO.mjs";
2
2
  export { dateRuleIntent };
@@ -1,5 +1,5 @@
1
- import { c as FilterFieldType, d as FilterRuleValue, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-DbOD5vE_.mjs";
2
- import { i as CommonStrings } from "./strings-CK9n6b65.mjs";
1
+ import { c as FilterFieldType, d as FilterRuleValue, l as FilterOperator, o as FilterField, u as FilterRule } from "./types-K57NVM0M.mjs";
2
+ import { i as CommonStrings } from "./strings-T-gsdqiJ.mjs";
3
3
  //#region src/components/DataTable/TableControls/FiltersV2/AdvancedFilterRulesPopover/display.d.ts
4
4
  interface ValueDisplayOptions {
5
5
  /** `PDSProvider` locale for date values; English format when omitted. */
@@ -1,5 +1,5 @@
1
- import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-D2rDQHYZ.mjs";
2
- import { t as FieldRegistry } from "./FieldRegistry-a44G08fS.mjs";
1
+ import { o as ComboboxOptionsOrGroups } from "./ComboboxBase-1Xy4pnRV.mjs";
2
+ import { t as FieldRegistry } from "./FieldRegistry-CPr7YoG5.mjs";
3
3
 
4
4
  //#region src/components/DataTable/TableControls/FiltersV2/fieldPickerOptions.d.ts
5
5
  declare const FIELDS_SUBMENU_LABEL = "Fields";
@@ -1,4 +1,4 @@
1
- import { p as FilterSize } from "./types-DbOD5vE_.mjs";
1
+ import { p as FilterSize } from "./types-K57NVM0M.mjs";
2
2
  import * as _$react from "react";
3
3
 
4
4
  //#region src/components/DataTable/TableControls/FiltersV2/filter-size-context.d.ts
@@ -49,4 +49,4 @@ declare const FILTER_SIZE_TOKENS: Record<FilterSize, FilterSizeTokens>;
49
49
  declare function useFilterSizeTokens(override?: FilterSize): FilterSizeTokens;
50
50
  //#endregion
51
51
  export { useFilterBarSize as a, FilterSizeTokens as i, FilterBarContext as n, useFilterSizeTokens as o, FilterBarContextValue as r, FILTER_SIZE_TOKENS as t };
52
- //# sourceMappingURL=filter-size-context-CbT4pi3S.d.mts.map
52
+ //# sourceMappingURL=filter-size-context-BcpjykVw.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-CbT4pi3S.mjs";
1
+ import { a as useFilterBarSize, i as FilterSizeTokens, n as FilterBarContext, o as useFilterSizeTokens, r as FilterBarContextValue, t as FILTER_SIZE_TOKENS } from "./filter-size-context-BcpjykVw.mjs";
2
2
  export { FILTER_SIZE_TOKENS, FilterBarContext, FilterBarContextValue, FilterSizeTokens, useFilterBarSize, useFilterSizeTokens };
@@ -1,4 +1,4 @@
1
- import { i as BaseFilterConfig, l as FilterTypeDefinition, t as ActiveFilter, u as FilterTypeResolver } from "./types-CayYd8EX.mjs";
1
+ import { i as BaseFilterConfig, l as FilterTypeDefinition, t as ActiveFilter, u as FilterTypeResolver } from "./types-BiRayNak.mjs";
2
2
  import { ComponentProps } from "react";
3
3
  import * as _$styled_components0 from "styled-components";
4
4
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
@@ -19,4 +19,4 @@ declare const Filters: <TFilter extends BaseFilterConfig>({
19
19
  }) => _$react_jsx_runtime0.JSX.Element;
20
20
  //#endregion
21
21
  export { resolveFilterTypeDefinition as a, isFilterActive as i, FiltersContainer as n, synchronizeActiveFilters as o, getActiveFilters as r, Filters as t };
22
- //# sourceMappingURL=filters-DjXkx8GJ.d.mts.map
22
+ //# sourceMappingURL=filters-DUI7TLSn.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, o as synchronizeActiveFilters, r as getActiveFilters, t as Filters } from "./filters-DjXkx8GJ.mjs";
1
+ import { a as resolveFilterTypeDefinition, i as isFilterActive, n as FiltersContainer, o as synchronizeActiveFilters, r as getActiveFilters, t as Filters } from "./filters-DUI7TLSn.mjs";
2
2
  export { Filters, FiltersContainer, getActiveFilters, isFilterActive, resolveFilterTypeDefinition, synchronizeActiveFilters };
@@ -27,4 +27,4 @@ declare function formatDateTime(dateTime: DateTime, options?: FormatDateTimeOpti
27
27
  declare function formatTimeZoneName(dateTime: DateTime, locale?: string): string;
28
28
  //#endregion
29
29
  export { formatDateTime as a, formatDate as i, LEGACY_DATETIME_FORMAT as n, formatTimeZoneName as o, LEGACY_DATE_FORMAT as r, usesLegacyDateFormat as s, FormatDateTimeOptions as t };
30
- //# sourceMappingURL=formatDateTime-BikGGrvq.d.mts.map
30
+ //# sourceMappingURL=formatDateTime-CgQvW3A5.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as formatDateTime, i as formatDate, n as LEGACY_DATETIME_FORMAT, o as formatTimeZoneName, r as LEGACY_DATE_FORMAT, s as usesLegacyDateFormat, t as FormatDateTimeOptions } from "./formatDateTime-BikGGrvq.mjs";
1
+ import { a as formatDateTime, i as formatDate, n as LEGACY_DATETIME_FORMAT, o as formatTimeZoneName, r as LEGACY_DATE_FORMAT, s as usesLegacyDateFormat, t as FormatDateTimeOptions } from "./formatDateTime-CgQvW3A5.mjs";
2
2
  export { FormatDateTimeOptions, LEGACY_DATETIME_FORMAT, LEGACY_DATE_FORMAT, formatDate, formatDateTime, formatTimeZoneName, usesLegacyDateFormat };
@@ -1,6 +1,6 @@
1
- import { n as CheckboxProps } from "./Checkbox-ZywrdT_h.mjs";
2
- import { i as CommonStrings } from "./strings-CK9n6b65.mjs";
3
- import { S as RenderValueStickerFormatConfig, b as DatetimeConfig, d as DataTableColumnImageFormat, h as DataTableColumnStringFormat, l as DataTableColumnFormat, p as DataTableColumnPiiFormat, y as DateConfig } from "./types-DJobO07d.mjs";
1
+ import { n as CheckboxProps } from "./Checkbox-EgYclGfH.mjs";
2
+ import { i as CommonStrings } from "./strings-T-gsdqiJ.mjs";
3
+ import { S as RenderValueStickerFormatConfig, b as DatetimeConfig, d as DataTableColumnImageFormat, h as DataTableColumnStringFormat, l as DataTableColumnFormat, p as DataTableColumnPiiFormat, y as DateConfig } from "./types-C31ecr0j.mjs";
4
4
  import { ReactNode } from "react";
5
5
 
6
6
  //#region src/components/DataTable/helpers.d.ts
@@ -87,4 +87,4 @@ declare const renderAsLightweightImage: (value: unknown, config?: DataTableColum
87
87
  declare const renderAsPDSFormat: <TData = unknown>(value: unknown, format?: DataTableColumnFormat<TData>, row?: TData, options?: PDSFormatOptions) => string | ReactNode;
88
88
  //#endregion
89
89
  export { renderAsDate as a, renderAsNumber as c, renderAsSticker as d, renderAsString as f, renderAsCopyableString as i, renderAsPDSFormat as l, renderAsCheckbox as n, renderAsDatetime as o, renderAsURL as p, renderAsCheckboxHeader as r, renderAsLightweightImage as s, PDSFormatOptions as t, renderAsPii as u };
90
- //# sourceMappingURL=helpers-CdxEL7ri.d.mts.map
90
+ //# sourceMappingURL=helpers-CDZ7Zk9G.d.mts.map
@@ -1,2 +1,2 @@
1
- import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "./helpers-CdxEL7ri.mjs";
1
+ import { a as renderAsDate, c as renderAsNumber, d as renderAsSticker, f as renderAsString, i as renderAsCopyableString, l as renderAsPDSFormat, n as renderAsCheckbox, o as renderAsDatetime, p as renderAsURL, r as renderAsCheckboxHeader, s as renderAsLightweightImage, t as PDSFormatOptions, u as renderAsPii } from "./helpers-CDZ7Zk9G.mjs";
2
2
  export { PDSFormatOptions, renderAsCheckbox, renderAsCheckboxHeader, renderAsCopyableString, renderAsDate, renderAsDatetime, renderAsLightweightImage, renderAsNumber, renderAsPDSFormat, renderAsPii, renderAsSticker, renderAsString, renderAsURL };
@@ -20,6 +20,7 @@ const DEFAULT_COMMON_STRINGS = {
20
20
  showingItems: (firstItem, lastItem, totalItems) => `Showing ${firstItem}-${lastItem} of ${totalItems} items`,
21
21
  pageCount: (_currentPage, totalPages) => `of ${totalPages} pages`,
22
22
  many: "many",
23
+ atLeast: (count) => `${count}+`,
23
24
  goToPageNumber: "Go to page number",
24
25
  previousPage: "Previous page",
25
26
  nextPage: "Next page",
@@ -126,7 +127,8 @@ const DEFAULT_COMMON_STRINGS = {
126
127
  operatorLessThanOrEqual: "≤",
127
128
  operatorIsEqualTo: "is equal to",
128
129
  operatorIsGreaterThan: "is greater than",
129
- operatorIsLessThan: "is less than"
130
+ operatorIsLessThan: "is less than",
131
+ errorCount: (count) => `${count} error${Number(count) === 1 ? "" : "s"}`
130
132
  };
131
133
  /**
132
134
  * Layer `overrides` on top of `base`. A value only replaces the base entry when it has the same
@@ -221,4 +223,4 @@ function formatTimeZoneName(dateTime, locale) {
221
223
  //#endregion
222
224
  export { formatTimeZoneName as a, usePDSLocale as c, resolveCommonStrings as d, formatDateTime as i, usePDSStrings as l, LEGACY_DATE_FORMAT as n, usesLegacyDateFormat as o, formatDate as r, PDSI18nProvider as s, LEGACY_DATETIME_FORMAT as t, DEFAULT_COMMON_STRINGS as u };
223
225
 
224
- //# sourceMappingURL=i18n-BLyCaSdJ.mjs.map
226
+ //# sourceMappingURL=i18n-DaOKaFc2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-DaOKaFc2.mjs","names":[],"sources":["../src/lib/i18n/strings.ts","../src/lib/i18n/I18nContext.tsx","../src/lib/i18n/formatDateTime.ts"],"sourcesContent":["/**\n * Built-in, user-visible copy rendered by PDS components.\n *\n * Every key has an English default in `DEFAULT_COMMON_STRINGS`. Hosts translate by passing\n * overrides to `PDSProvider`'s `strings` prop; any key they omit keeps its English default.\n * Function-valued keys take the interpolated values (counts, names, labels) as arguments.\n *\n * Key names line up with the `CommonStringOverrides` tables that\n * `@persona-id/persona-dashboard-app` ships (`useCommonStrings()`), so a dashboard can pass\n * those tables straight through.\n */\ntype Arg = string | number;\n\nexport interface CommonStrings {\n // --- Modal ------------------------------------------------------------------------------\n closeModal: string;\n\n // --- DataTable --------------------------------------------------------------------------\n noResults: string;\n noResultsTryFilters: string;\n noColumnsConfigured: string;\n selectAll: string;\n selectAllOf: (header: Arg) => string;\n selectRow: (rowId: Arg) => string;\n selectRowForColumn: (columnHeader: Arg, rowId: Arg) => string;\n clearSelection: string;\n selectedItems: (count: Arg) => string;\n noImage: string;\n viewRowActions: (rowNumber: Arg) => string;\n\n // --- Pagination -------------------------------------------------------------------------\n pagination: string;\n itemsPerPage: string;\n showingItems: (firstItem: Arg, lastItem: Arg, totalItems: Arg) => string;\n /**\n * Totals phrase rendered right after the current page (the go-to-page input, or the page number\n * as text), e.g. `of 3 pages` in `[1] of 3 pages`. Return only that phrase: the current page is\n * already on screen, so do not interpolate `currentPage` into the result. It is passed only for\n * languages whose wording depends on it. `totalPages` is `many` when the total is unknown.\n */\n pageCount: (currentPage: Arg, totalPages: Arg) => string;\n /** Stands in for an unknown total (\"of many pages\") when the server only knows a lower bound. */\n many: string;\n /**\n * A total known only as a minimum, e.g. `13+` in `of 13+ pages` or `650+` in `of 650+ items`.\n * Rendered in place of `totalPages` and `totalItems` when the pager's total is a lower bound.\n */\n atLeast: (count: Arg) => string;\n goToPageNumber: string;\n previousPage: string;\n nextPage: string;\n previousShort: string;\n next: string;\n\n // --- Column configuration (table properties gear) --------------------------------------\n tableProperties: string;\n configureViewPermissionDenied: string;\n configureColumns: string;\n searchColumns: string;\n shownColumns: string;\n hiddenColumns: string;\n noMatchingColumns: string;\n showColumn: (label: Arg) => string;\n hideColumn: (label: Arg) => string;\n\n // --- Saved views (control bar tabs) -----------------------------------------------------\n defaultView: string;\n saveView: string;\n saveCurrentView: string;\n addNewView: string;\n searchViews: string;\n moreViews: (count: Arg) => string;\n duplicateView: string;\n resetView: string;\n saveViewMenuItem: string;\n setAsDefaultView: string;\n unsetDefaultView: string;\n setDefaultViewTitle: string;\n setDefaultViewConfirmation: (viewName: Arg) => string;\n unsetDefaultViewTitle: string;\n unsetDefaultViewConfirmation: (viewName: Arg) => string;\n showView: string;\n hideView: string;\n hideViewTitle: string;\n hideViewNamed: (viewName: Arg) => string;\n delete: string;\n cancel: string;\n deleteViewTitle: string;\n deleteViewConfirmation: (viewName: Arg) => string;\n showFilters: string;\n hideFilters: string;\n showSearchBar: string;\n\n // --- Config-driven TableControls filters -----------------------------------------------\n filterType: string;\n filterActions: string;\n selectFilterOption: string;\n selectFilterType: string;\n deleteFilter: string;\n addFilter: string;\n filterGroupLabel: (filterName: Arg) => string;\n\n // --- Filters V2: bar, pills and field picker -------------------------------------------\n filterBar: string;\n filter: string;\n filterFieldPicker: string;\n fields: string;\n editFilter: (description: Arg) => string;\n removeFilter: (description: Arg) => string;\n editFilterFor: (fieldLabel: Arg) => string;\n additionalValues: string;\n operator: string;\n groupCount: (count: Arg) => string;\n booleanTrue: string;\n booleanFalse: string;\n booleanValue: string;\n fieldValue: (fieldLabel: Arg) => string;\n applyFilter: string;\n selectAnOptionPlaceholder: string;\n enterAValue: string;\n enterANumber: string;\n searchPlaceholder: string;\n noMatches: string;\n\n // --- Filters V2: advanced rules builder -------------------------------------------------\n rules: string;\n rulesWithCount: (count: Arg) => string;\n advancedFilterRules: string;\n conditionIf: string;\n conditionAnd: string;\n conditionOr: string;\n editStatement: (condition: Arg) => string;\n clearAll: string;\n deleteGroup: string;\n filterGroup: (groupNumber: Arg) => string;\n moreActionsForFilterGroup: (groupNumber: Arg) => string;\n addRuleToFilterGroup: (groupNumber: Arg) => string;\n noRulesYet: string;\n rulesInGroup: (groupNumber: Arg) => string;\n orGroup: string;\n field: string;\n value: string;\n selectField: string;\n fieldForRule: (ruleNumber: Arg, groupNumber: Arg) => string;\n operatorForRule: (ruleNumber: Arg, groupNumber: Arg) => string;\n\n // --- Filters V2: operator labels --------------------------------------------------------\n operatorIs: string;\n operatorIsNot: string;\n operatorContains: string;\n operatorDoesNotContain: string;\n operatorIsEmpty: string;\n operatorIsNotEmpty: string;\n operatorIsTrue: string;\n operatorIsFalse: string;\n operatorBefore: string;\n operatorAfter: string;\n operatorBetween: string;\n operatorIsAnyOf: string;\n operatorIsNoneOf: string;\n operatorGreaterThan: string;\n operatorGreaterThanOrEqual: string;\n operatorLessThan: string;\n operatorLessThanOrEqual: string;\n /** Numeric (`integer` / `float`) field operators, e.g. \"Members is equal to 5\". */\n operatorIsEqualTo: string;\n operatorIsGreaterThan: string;\n operatorIsLessThan: string;\n\n // --- BottomPanel -------------------------------------------------------------------------\n /** aria-label for the header error indicator, e.g. \"3 errors\" / \"1 error\". */\n errorCount: (count: Arg) => string;\n}\n\nexport type CommonStringKey = keyof CommonStrings;\n\n/** A single override value: plain copy, or a formatter for keys that interpolate. */\nexport type CommonStringValue = string | ((...args: Arg[]) => string);\n\n/**\n * What `PDSProvider` accepts. Deliberately loose (any string key, string or formatter value) so a\n * host's translation table can be passed through untyped; values whose kind does not match the\n * default (a string where a formatter is expected, or vice versa) are ignored.\n */\nexport type CommonStringOverrides = Readonly<Record<string, CommonStringValue | undefined>>;\n\nexport const DEFAULT_COMMON_STRINGS: Readonly<CommonStrings> = {\n closeModal: 'Close',\n\n noResults: 'No results found.',\n noResultsTryFilters: 'No results found. Try changing your filters.',\n noColumnsConfigured: 'No columns configured',\n selectAll: 'Select all',\n selectAllOf: (header) => `Select all ${header}`,\n selectRow: (rowId) => `Select row ${rowId}`,\n selectRowForColumn: (columnHeader, rowId) => `${columnHeader} for row ${rowId}`,\n clearSelection: 'Clear selection',\n selectedItems: (count) => `${count} selected`,\n noImage: 'No image',\n viewRowActions: (rowNumber) => `View actions for row ${rowNumber}`,\n\n pagination: 'pagination',\n itemsPerPage: 'Items per page:',\n showingItems: (firstItem, lastItem, totalItems) =>\n `Showing ${firstItem}-${lastItem} of ${totalItems} items`,\n pageCount: (_currentPage, totalPages) => `of ${totalPages} pages`,\n many: 'many',\n atLeast: (count) => `${count}+`,\n goToPageNumber: 'Go to page number',\n previousPage: 'Previous page',\n nextPage: 'Next page',\n previousShort: 'Prev',\n next: 'Next',\n\n tableProperties: 'Table Properties',\n configureViewPermissionDenied: 'Your role does not have permission to configure the view.',\n configureColumns: 'Configure columns',\n searchColumns: 'Search by item...',\n shownColumns: 'Shown attributes',\n hiddenColumns: 'Hidden attributes',\n noMatchingColumns: 'No matching attributes',\n showColumn: (label) => `Show ${label}`,\n hideColumn: (label) => `Hide ${label}`,\n\n defaultView: 'Default view',\n saveView: 'Save view',\n saveCurrentView: 'Save current view',\n addNewView: 'Add new view',\n searchViews: 'Search for a view...',\n moreViews: (count) => `${count} more\\u2026`,\n duplicateView: 'Duplicate',\n resetView: 'Reset',\n saveViewMenuItem: 'Save',\n setAsDefaultView: 'Set as default',\n unsetDefaultView: 'Unset default',\n setDefaultViewTitle: 'Set as default view?',\n setDefaultViewConfirmation: (viewName) =>\n `This will change the default view for your entire organization. Everyone will see \\u201c${viewName}\\u201d when they open this table without a view selected.`,\n unsetDefaultViewTitle: 'Unset default view?',\n unsetDefaultViewConfirmation: (viewName) =>\n `This will change the default view for your entire organization. Everyone will see the built-in default view instead of \\u201c${viewName}\\u201d.`,\n showView: 'Show',\n hideView: 'Hide',\n hideViewTitle: 'Hide view',\n hideViewNamed: (viewName) => `Hide ${viewName}`,\n delete: 'Delete',\n cancel: 'Cancel',\n deleteViewTitle: 'Delete view?',\n deleteViewConfirmation: (viewName) =>\n `This will permanently delete \\u201c${viewName}\\u201d. This action cannot be undone.`,\n showFilters: 'Show filters',\n hideFilters: 'Hide filters',\n showSearchBar: 'Show search bar',\n\n filterType: 'Filter type',\n filterActions: 'Filter actions',\n selectFilterOption: 'Select...',\n selectFilterType: 'Select filter type',\n deleteFilter: 'Delete filter',\n addFilter: 'Add filter',\n filterGroupLabel: (filterName) => `${filterName} filter`,\n\n filterBar: 'Filter bar',\n filter: 'Filter',\n filterFieldPicker: 'Filter field picker',\n fields: 'Fields',\n editFilter: (description) => `Edit filter: ${description}`,\n removeFilter: (description) => `Remove filter: ${description}`,\n editFilterFor: (fieldLabel) => `Edit filter for ${fieldLabel}`,\n additionalValues: 'Additional values',\n operator: 'Operator',\n groupCount: (count) => `${count} group${Number(count) === 1 ? '' : 's'}`,\n booleanTrue: 'True',\n booleanFalse: 'False',\n booleanValue: 'Boolean value',\n fieldValue: (fieldLabel) => `${fieldLabel} value`,\n applyFilter: 'Apply filter',\n selectAnOptionPlaceholder: 'Select an option',\n enterAValue: 'Enter a value',\n enterANumber: 'Enter a number',\n searchPlaceholder: 'Search',\n noMatches: 'No matches',\n\n rules: 'Rules',\n rulesWithCount: (count) => `Rules ${count}`,\n advancedFilterRules: 'Advanced filter rules',\n conditionIf: 'If',\n conditionAnd: 'And',\n conditionOr: 'Or',\n editStatement: (condition) => `Edit \\u2018${condition}\\u2019 statement`,\n clearAll: 'Clear all',\n deleteGroup: 'Delete group',\n filterGroup: (groupNumber) => `Filter group ${groupNumber}`,\n moreActionsForFilterGroup: (groupNumber) => `More actions for filter group ${groupNumber}`,\n addRuleToFilterGroup: (groupNumber) => `Add rule to filter group ${groupNumber}`,\n noRulesYet: 'No rules yet',\n rulesInGroup: (groupNumber) => `Rules in group ${groupNumber}`,\n orGroup: 'Or group',\n field: 'Field',\n value: 'Value',\n selectField: 'Select field',\n fieldForRule: (ruleNumber, groupNumber) => `Field for rule ${ruleNumber} in group ${groupNumber}`,\n operatorForRule: (ruleNumber, groupNumber) =>\n `Operator for rule ${ruleNumber} in group ${groupNumber}`,\n\n operatorIs: 'is',\n operatorIsNot: 'is not',\n operatorContains: 'contains',\n operatorDoesNotContain: 'does not contain',\n operatorIsEmpty: 'is empty',\n operatorIsNotEmpty: 'is not empty',\n operatorIsTrue: 'is true',\n operatorIsFalse: 'is false',\n operatorBefore: 'before',\n operatorAfter: 'after',\n operatorBetween: 'is between',\n operatorIsAnyOf: 'is any of',\n operatorIsNoneOf: 'is none of',\n operatorGreaterThan: '>',\n operatorGreaterThanOrEqual: '≥',\n operatorLessThan: '<',\n operatorLessThanOrEqual: '≤',\n operatorIsEqualTo: 'is equal to',\n operatorIsGreaterThan: 'is greater than',\n operatorIsLessThan: 'is less than',\n\n errorCount: (count) => `${count} error${Number(count) === 1 ? '' : 's'}`,\n};\n\n/**\n * Layer `overrides` on top of `base`. A value only replaces the base entry when it has the same\n * kind (string vs. formatter), so a mistyped override can never crash a render.\n */\nexport function resolveCommonStrings(\n overrides: CommonStringOverrides | undefined,\n base: Readonly<CommonStrings> = DEFAULT_COMMON_STRINGS,\n): CommonStrings {\n const resolved = { ...base } as Record<CommonStringKey, CommonStringValue>;\n if (!overrides) {\n return resolved as unknown as CommonStrings;\n }\n (Object.keys(base) as CommonStringKey[]).forEach((key) => {\n const override = Object.prototype.hasOwnProperty.call(overrides, key)\n ? overrides[key]\n : undefined;\n if (override != null && typeof override === typeof base[key]) {\n resolved[key] = override;\n }\n });\n return resolved as unknown as CommonStrings;\n}\n","import { createContext, useContext, useMemo, type FC, type PropsWithChildren } from 'react';\n\nimport {\n DEFAULT_COMMON_STRINGS,\n resolveCommonStrings,\n type CommonStringOverrides,\n type CommonStrings,\n} from './strings';\n\ninterface PDSI18nContextValue {\n strings: CommonStrings;\n locale: string | undefined;\n}\n\nconst PDSI18nContext = createContext<PDSI18nContextValue>({\n strings: DEFAULT_COMMON_STRINGS,\n locale: undefined,\n});\n\nexport interface PDSI18nProviderProps {\n /** Overrides for built-in copy; omitted keys inherit from an outer provider, then English. */\n strings?: CommonStringOverrides;\n /** BCP 47 locale for date/time formatting; inherits from an outer provider when omitted. */\n locale?: string;\n}\n\n/**\n * Supplies translated built-in copy and the active locale to PDS components. `PDSProvider`\n * always renders this; use it directly only to override a subtree.\n */\nexport const PDSI18nProvider: FC<PropsWithChildren<PDSI18nProviderProps>> = ({\n strings,\n locale,\n children,\n}) => {\n const parent = useContext(PDSI18nContext);\n const value = useMemo(\n () => ({\n strings: strings ? resolveCommonStrings(strings, parent.strings) : parent.strings,\n locale: locale ?? parent.locale,\n }),\n [parent, strings, locale],\n );\n return <PDSI18nContext.Provider value={value}>{children}</PDSI18nContext.Provider>;\n};\n\n/** Built-in copy for the current locale (English unless a provider supplied overrides). */\nexport function usePDSStrings(): CommonStrings {\n return useContext(PDSI18nContext).strings;\n}\n\n/** The locale supplied to `PDSProvider`, or `undefined` when the host has not set one. */\nexport function usePDSLocale(): string | undefined {\n return useContext(PDSI18nContext).locale;\n}\n","import { DateTime, type DateTimeFormatOptions } from 'luxon';\n\n/** Luxon medium date, e.g. \"Oct 5, 2011\". */\nexport const LEGACY_DATE_FORMAT = 'DD';\n/** e.g. \"Oct 5, 2011 2:48 PM\". */\nexport const LEGACY_DATETIME_FORMAT = 'MMM d, yyyy h:mm a';\n/** Short time zone name, e.g. \"EDT\" (en-US) or \"HAE\" (fr-CA). */\nconst TIME_ZONE_TOKEN = 'ZZZZ';\n\n/**\n * Whether `locale` keeps PDS's historical English token formats. No locale (a host that has not\n * opted in) and US English render exactly as before; every other locale gets `Intl` presets so\n * the day/month order, month names, 24-hour clock and separators follow the locale.\n */\nexport function usesLegacyDateFormat(locale: string | undefined): boolean {\n if (!locale) {\n return true;\n }\n const normalized = locale.toLowerCase().replace('_', '-');\n return normalized === 'en' || normalized === 'en-us';\n}\n\nexport interface FormatDateTimeOptions {\n /** BCP 47 locale, usually from `usePDSLocale()`. */\n locale?: string;\n /** Explicit Luxon `toFormat` tokens; month/day names still localize when a locale is set. */\n format?: string;\n /** Append the short time zone name, localized (\"EDT\" in en-US, \"HAE\" in fr-CA). */\n showTimeZone?: boolean;\n}\n\nfunction withLocale(dateTime: DateTime, locale: string | undefined): DateTime {\n return locale ? dateTime.setLocale(locale) : dateTime;\n}\n\nfunction format(\n dateTime: DateTime,\n legacyFormat: string,\n preset: DateTimeFormatOptions,\n { locale, format: explicitFormat, showTimeZone }: FormatDateTimeOptions,\n): string {\n const localized = withLocale(dateTime, locale);\n if (explicitFormat || usesLegacyDateFormat(locale)) {\n const formatted = localized.toFormat(explicitFormat ?? legacyFormat);\n return showTimeZone ? `${formatted} ${localized.toFormat(TIME_ZONE_TOKEN)}` : formatted;\n }\n return localized.toLocaleString(showTimeZone ? { ...preset, timeZoneName: 'short' } : preset);\n}\n\n/** Format a calendar date for display (\"Oct 5, 2011\" / \"5 oct. 2011\"). */\nexport function formatDate(dateTime: DateTime, options: FormatDateTimeOptions = {}): string {\n return format(dateTime, LEGACY_DATE_FORMAT, DateTime.DATE_MED, options);\n}\n\n/** Format a date and time for display (\"Oct 5, 2011 2:48 PM\" / \"5 oct. 2011, 14 h 48\"). */\nexport function formatDateTime(dateTime: DateTime, options: FormatDateTimeOptions = {}): string {\n return format(dateTime, LEGACY_DATETIME_FORMAT, DateTime.DATETIME_MED, options);\n}\n\n/** The short time zone name for `dateTime`'s zone in `locale` (\"EDT\" / \"HAE\"). */\nexport function formatTimeZoneName(dateTime: DateTime, locale?: string): string {\n return withLocale(dateTime, locale).toFormat(TIME_ZONE_TOKEN);\n}\n"],"mappings":"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"}