@persona/design-system 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +1 -1
- package/dist/Accordion.d.mts +1 -1
- package/dist/AccordionItem.d.mts +1 -1
- package/dist/{Action-DcK0fRrq.d.mts → Action-DT8WqfEg.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +2 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +2 -2
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +3 -3
- package/dist/{Badge-DLuyKRCQ.mjs → Badge-Bvn3afds.mjs} +2 -2
- package/dist/{Badge-DLuyKRCQ.mjs.map → Badge-Bvn3afds.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumb-CEHEUe8l.d.mts → Breadcrumb-BDbY1Ffu.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-BQ-Gj6UV.d.mts → Breadcrumbs-C2ThOYJ-.d.mts} +2 -2
- package/dist/{Breadcrumbs-B8aXFPdV.mjs → Breadcrumbs-CQUe9VTM.mjs} +4 -4
- package/dist/{Breadcrumbs-B8aXFPdV.mjs.map → Breadcrumbs-CQUe9VTM.mjs.map} +1 -1
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-DKUomFPj.d.mts → Button-CyjqQa5v.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-BvsTQ3e1.d.mts → Calendar-DAfQCLOJ.d.mts} +1 -1
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-DMXDx1W7.d.mts → Card-CzRHVUFo.d.mts} +3 -3
- package/dist/Card.d.mts +1 -1
- package/dist/CardGrouping.d.mts +2 -2
- package/dist/{CardV2-JPGFAqui.mjs → CardV2-Dp4eHSE-.mjs} +6 -6
- package/dist/{CardV2-JPGFAqui.mjs.map → CardV2-Dp4eHSE-.mjs.map} +1 -1
- package/dist/{Checkbox-CVa8WOf2.d.mts → Checkbox-B2MZShdu.d.mts} +1 -1
- package/dist/{Checkbox-iSBIpu0l.mjs → Checkbox-BaJ-dGdX.mjs} +7 -3
- package/dist/{Checkbox-iSBIpu0l.mjs.map → Checkbox-BaJ-dGdX.mjs.map} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/{CheckboxGroupField-BMJwuTpJ.d.mts → CheckboxGroupField-BYB4OBlW.d.mts} +3 -3
- package/dist/CheckboxGroupField.d.mts +1 -1
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-BkpRqaxB.mjs → Combobox-CcFJo68g.mjs} +16 -8
- package/dist/Combobox-CcFJo68g.mjs.map +1 -0
- package/dist/{Combobox-C2R9eTPr.d.mts → Combobox-DH5ycYlG.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-BghIk4Vk.d.mts → ComboboxBase-BQQSKUBU.d.mts} +6 -6
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-CIOHnhrv.d.mts → ComboboxMultiSelect-Da3Gv1k5.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-C1JZxli3.d.mts → ComboboxSingleSelect-BUDovONU.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-DPJAY1NB.d.mts → CompactBar-D12R7Nm2.d.mts} +3 -3
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-BBIJsQgy.mjs → ConfigFormGroup-CidT_cE9.mjs} +2 -2
- package/dist/{ConfigFormGroup-BBIJsQgy.mjs.map → ConfigFormGroup-CidT_cE9.mjs.map} +1 -1
- package/dist/{ControlBar-Cg36sjz3.d.mts → ControlBar-D9KflqmH.d.mts} +22 -9
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable-95ZxiPlV.mjs +1547 -0
- package/dist/DataTable-95ZxiPlV.mjs.map +1 -0
- package/dist/DataTable-fZ7SNbIH.d.mts +439 -0
- package/dist/DataTable.d.mts +2 -396
- package/dist/{DateField-BXUuqbnb.d.mts → DateField-DLz13Ksl.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-CjuR6ORz.mjs → DatePicker-D0cvVbzq.mjs} +369 -369
- package/dist/DatePicker-D0cvVbzq.mjs.map +1 -0
- package/dist/{DatePicker-Cmn1vViU.d.mts → DatePicker-DYVWmbrb.d.mts} +2 -2
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-CKhp9Obv.d.mts → DateRangePicker-Be8TYtjz.d.mts} +3 -3
- package/dist/DateRangePicker.d.mts +1 -1
- package/dist/DateRangeValueControl.d.mts +2 -2
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-CRJDAGjJ.mjs → DropdownButton-5oNcpsOq.mjs} +3 -3
- package/dist/{DropdownButton-CRJDAGjJ.mjs.map → DropdownButton-5oNcpsOq.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-C2BHv8Lc.mjs → DropdownMenu-CedsmO5h.mjs} +2 -2
- package/dist/{DropdownMenu-C2BHv8Lc.mjs.map → DropdownMenu-CedsmO5h.mjs.map} +1 -1
- package/dist/{DropdownMenu-CNkQDiJr.d.mts → DropdownMenu-DAa2kNrt.d.mts} +2 -2
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-oCHtJzEB.d.mts → ErrorProps-DH0fzeGf.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-B7P4wC7y.d.mts → FieldRegistry-d5tGpSch.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-clWmrKkT.d.mts → FilterBar-Bh18VyOK.d.mts} +4 -4
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +2 -2
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +1 -1
- package/dist/FloatValueControl.d.mts +5 -4
- package/dist/FloatingActionBar-CpvLefPm.d.mts +41 -0
- package/dist/FloatingActionBar.d.mts +2 -41
- package/dist/{FormControl-jfjKwUfK.mjs → FormControl-C4CiA0H-.mjs} +3 -3
- package/dist/{FormControl-jfjKwUfK.mjs.map → FormControl-C4CiA0H-.mjs.map} +1 -1
- package/dist/{FormControl-C44o35FL.d.mts → FormControl-DEG_0oXt.d.mts} +2 -2
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-C3nUzhGT.mjs → FormField-cSG93kuo.mjs} +15 -15
- package/dist/{FormField-C3nUzhGT.mjs.map → FormField-cSG93kuo.mjs.map} +1 -1
- package/dist/{FormField-CXznMtuS.d.mts → FormField-mLbXDJ9B.d.mts} +2 -2
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-D0mlxk8_.mjs → Grid-DXVkhyNQ.mjs} +1 -1
- package/dist/{Grid-D0mlxk8_.mjs.map → Grid-DXVkhyNQ.mjs.map} +1 -1
- package/dist/{Header-DvpIsOUN.d.mts → Header-ayDu4VWE.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-C4tgbLYw.d.mts → HelperTooltip-BB9Vznnx.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/HighlightedText.d.mts +2 -2
- package/dist/{HoverCopyableField-1_LHm80n.mjs → HoverCopyableField-D-BubaRd.mjs} +2 -2
- package/dist/{HoverCopyableField-1_LHm80n.mjs.map → HoverCopyableField-D-BubaRd.mjs.map} +1 -1
- package/dist/{I18nContext-DlvagRAO.d.mts → I18nContext-TXS9M8t5.d.mts} +2 -2
- package/dist/I18nContext.d.mts +1 -1
- package/dist/{IconButton-Bt3WyiGq.d.mts → IconButton-Bigvu1Q4.d.mts} +2 -2
- package/dist/{IconButton-Cqxfmrea.mjs → IconButton-HWx5Hlmi.mjs} +8 -5
- package/dist/{IconButton-Cqxfmrea.mjs.map → IconButton-HWx5Hlmi.mjs.map} +1 -1
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +4 -3
- package/dist/IndexTableLayout.d.mts +45 -0
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-CAsOWM0S.d.mts → Input-Bg4bi6VZ.d.mts} +3 -3
- package/dist/{Input-Cg2HxteL.mjs → Input-Dap055xf.mjs} +3 -3
- package/dist/{Input-Cg2HxteL.mjs.map → Input-Dap055xf.mjs.map} +1 -1
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-BU9iiBBz.d.mts → InputProps-Bl-G826g.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/Inserter-BKVrJ4M5.d.mts +12 -0
- package/dist/Inserter.d.mts +2 -12
- package/dist/IntegerValueControl.d.mts +5 -4
- package/dist/Link.d.mts +1 -1
- package/dist/{ListBox--IH6uofo.d.mts → ListBox-Bj5c626-.d.mts} +3 -3
- package/dist/{ListBox-CjNokYs6.mjs → ListBox-C80J7DCG.mjs} +7 -7
- package/dist/{ListBox-CjNokYs6.mjs.map → ListBox-C80J7DCG.mjs.map} +1 -1
- package/dist/ListBox.d.mts +1 -1
- package/dist/{ListBoxField-BUKop1Ca.d.mts → ListBoxField-DsJRabgE.d.mts} +4 -4
- package/dist/ListBoxField.d.mts +1 -1
- package/dist/{LoadingShimmer-C73hJqaW.mjs → LoadingShimmer-Bqjdut7i.mjs} +1 -1
- package/dist/{LoadingShimmer-C73hJqaW.mjs.map → LoadingShimmer-Bqjdut7i.mjs.map} +1 -1
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-C8Hdl8xB.d.mts → LogicRow-CcpD-Kk3.d.mts} +3 -3
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/{Menu-BSHJpKyL.d.mts → Menu-C0FU9WEF.d.mts} +2 -2
- package/dist/{Menu-CwKmfxKI.mjs → Menu-Dw6Rcpk6.mjs} +1 -1
- package/dist/{Menu-CwKmfxKI.mjs.map → Menu-Dw6Rcpk6.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/{Modal-CoUHxtgN.d.mts → Modal-BuxggahW.d.mts} +6 -2
- package/dist/{Modal-BBIJVhv2.mjs → Modal-kjUptzg1.mjs} +7 -5
- package/dist/Modal-kjUptzg1.mjs.map +1 -0
- package/dist/Modal.d.mts +1 -1
- package/dist/PageHeader-Czj42pyK.d.mts +40 -0
- package/dist/{PageHeader-5GyfuGLe.mjs → PageHeader-DJF7nxgN.mjs} +2 -2
- package/dist/{PageHeader-5GyfuGLe.mjs.map → PageHeader-DJF7nxgN.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +2 -40
- package/dist/{PageLayout-C7hDmoy_.d.mts → PageLayout-TBemv7oL.d.mts} +1 -1
- package/dist/{PageLayout-C7ZC7GBA.mjs → PageLayout-fXJW7daI.mjs} +2 -2
- package/dist/{PageLayout-C7ZC7GBA.mjs.map → PageLayout-fXJW7daI.mjs.map} +1 -1
- package/dist/PageLayout.d.mts +1 -1
- package/dist/{PageLayoutFrame--HlvI4Pp.d.mts → PageLayoutFrame-DzwlkNZ1.d.mts} +1 -1
- package/dist/PageLayoutFrame.d.mts +1 -1
- package/dist/{PageSelector-CrUb586l.d.mts → PageSelector-DXCeBUoU.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-C67fsrxl.d.mts → Pagination-COcFWlha.d.mts} +2 -2
- package/dist/{Pagination-c4YBCy5d.mjs → Pagination-DtK-jbEY.mjs} +5 -5
- package/dist/{Pagination-c4YBCy5d.mjs.map → Pagination-DtK-jbEY.mjs.map} +1 -1
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-oW_2TUUc.mjs → Pii-DueIK287.mjs} +2 -2
- package/dist/{Pii-oW_2TUUc.mjs.map → Pii-DueIK287.mjs.map} +1 -1
- package/dist/{PillShell-BkYHghx0.d.mts → PillShell-CXROf8gO.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{ProgressIndicator-CdhC2LVI.d.mts → ProgressIndicator-C5sbFQcd.d.mts} +1 -1
- package/dist/{ProgressIndicator-STyTM0Hq.mjs → ProgressIndicator-CM37EU1B.mjs} +1 -1
- package/dist/{ProgressIndicator-STyTM0Hq.mjs.map → ProgressIndicator-CM37EU1B.mjs.map} +1 -1
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{PseudoClassProps-CverE9Ni.d.mts → PseudoClassProps-BFFh2-u8.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-CHme6WTz.mjs → Radio-DDT_l8rd.mjs} +2 -2
- package/dist/{Radio-CHme6WTz.mjs.map → Radio-DDT_l8rd.mjs.map} +1 -1
- package/dist/{RadioGroup-CDEfCg-b.d.mts → RadioGroup-BxEmipHa.d.mts} +1 -1
- package/dist/{RadioGroup-DOLRqHIZ.mjs → RadioGroup-CmD8NFCL.mjs} +2 -2
- package/dist/{RadioGroup-DOLRqHIZ.mjs.map → RadioGroup-CmD8NFCL.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-BOt59kTG.d.mts → RangeCalendar-cZSYjuOZ.d.mts} +2 -2
- package/dist/RangeCalendar.d.mts +1 -1
- package/dist/RangeCalendarPresets.d.mts +1 -1
- package/dist/{RouterContext-D7HBESqO.d.mts → RouterContext-CoDbEb_X.d.mts} +2 -2
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-dppNWLgP.d.mts → RouterLink-BnIEi8d4.d.mts} +2 -2
- package/dist/RouterLink.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +2 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-B7JYHJZI.d.mts → SearchInput-DLC7-A7K.d.mts} +2 -2
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-d9tHqWce.mjs → SegmentedControl-CcKPfxBR.mjs} +2 -2
- package/dist/{SegmentedControl-d9tHqWce.mjs.map → SegmentedControl-CcKPfxBR.mjs.map} +1 -1
- package/dist/{SegmentedControl-C_7mTcuL.d.mts → SegmentedControl-xjU-2IsJ.d.mts} +1 -1
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-Da6UZicF.mjs → Select-BJ9ACmRD.mjs} +5 -5
- package/dist/{Select-Da6UZicF.mjs.map → Select-BJ9ACmRD.mjs.map} +1 -1
- package/dist/{Select-Ek-A2Cpo.d.mts → Select-sBEBrNgo.d.mts} +3 -3
- package/dist/Select.d.mts +1 -1
- package/dist/{SingleColumnLayout-ByWxiD7d.d.mts → SingleColumnLayout-CBynMc76.d.mts} +2 -2
- package/dist/SingleColumnLayout.d.mts +1 -1
- package/dist/SmartTextInput.d.mts +6 -6
- package/dist/SmartTextInputField.d.mts +2 -2
- package/dist/SmartTextInputFunctionDialog.d.mts +4 -4
- package/dist/SmartTextInputListbox.d.mts +2 -2
- package/dist/SmartTextInputPopover.d.mts +1 -1
- package/dist/{Spinner-C4UyK9If.mjs → Spinner-uVZyOh1T.mjs} +1 -1
- package/dist/{Spinner-C4UyK9If.mjs.map → Spinner-uVZyOh1T.mjs.map} +1 -1
- package/dist/{SplitColumnLayout-DYyJabQ3.d.mts → SplitColumnLayout-BVzGbEDC.d.mts} +2 -2
- package/dist/SplitColumnLayout.d.mts +1 -1
- package/dist/{Stack-D0Dt776K.d.mts → Stack-BZyboHQl.d.mts} +1 -1
- package/dist/Stack.d.mts +1 -1
- package/dist/{StatusIndicator-akDwBiBW.mjs → StatusIndicator-Bunn9YLV.mjs} +1 -1
- package/dist/{StatusIndicator-akDwBiBW.mjs.map → StatusIndicator-Bunn9YLV.mjs.map} +1 -1
- package/dist/{Sticker-Cit5EKiU.d.mts → Sticker-CsUSNIH-.d.mts} +4 -4
- package/dist/{Sticker-_vmpUMfk.mjs → Sticker-yhxtIYH8.mjs} +2 -2
- package/dist/{Sticker-_vmpUMfk.mjs.map → Sticker-yhxtIYH8.mjs.map} +1 -1
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/Tab.d.mts +1 -1
- package/dist/{TabBar-CmYqreN0.mjs → TabBar-SX8E9-Bk.mjs} +3 -3
- package/dist/{TabBar-CmYqreN0.mjs.map → TabBar-SX8E9-Bk.mjs.map} +1 -1
- package/dist/{Table-CV8nogHu.mjs → Table--o4ZLRbb.mjs} +2 -2
- package/dist/{Table-CV8nogHu.mjs.map → Table--o4ZLRbb.mjs.map} +1 -1
- package/dist/{Table-BtNYI6QX.d.mts → Table-CadXF71E.d.mts} +1 -1
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-DQ7pivxP.d.mts → TableBody-BKSHNSTo.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-vCTkOPlC.mjs → TableBox-3qunC9Nl.mjs} +7 -7
- package/dist/{TableBox-vCTkOPlC.mjs.map → TableBox-3qunC9Nl.mjs.map} +1 -1
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-BkJ587Lf.d.mts → TableBoxCell-BRECnVTs.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/{TableBoxField-Dj9Cx9NP.d.mts → TableBoxField-Lm_tn73M.d.mts} +5 -5
- package/dist/TableBoxField.d.mts +1 -1
- package/dist/{TableBoxRow-CpR9Cti1.d.mts → TableBoxRow-BS8Dc-zw.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-Bj-LZaI7.d.mts → TableBoxRowActions-oLMb8XcM.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-DOjW6ADs.d.mts → TableCell-4u5_BgTC.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-BtKBTGYR.mjs → TableControls-DxSFqRwJ.mjs} +693 -133
- package/dist/TableControls-DxSFqRwJ.mjs.map +1 -0
- package/dist/{TableControls-Cw7LDHWj.d.mts → TableControls-UfObf-ZN.d.mts} +14 -7
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-DgoZhMpQ.d.mts → TableControlsContext-Bhtb0cMs.d.mts} +4 -4
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-BGUg_aXc.d.mts → TableHead-BuCQeDAq.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-DcZcMQyR.d.mts → TableHeaderCell-DIcQlZps.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-CwYQaZlA.d.mts → TableLayout-ScEVdvvA.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-Dad6_CoD.d.mts → TableRow-lCsvG0a-.d.mts} +2 -2
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-BGuWAarQ.d.mts → TableViewConfigurationDropdown-BDXe2Q1Y.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-BhUxOU-L.mjs → TechnicalSticker-CALVwnrT.mjs} +1 -1
- package/dist/{TechnicalSticker-BhUxOU-L.mjs.map → TechnicalSticker-CALVwnrT.mjs.map} +1 -1
- package/dist/{Text-CUhW_agW.d.mts → Text-RSzei6Se.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-J_EscGvm.mjs → TextArea-CFf0Lspu.mjs} +2 -2
- package/dist/{TextArea-J_EscGvm.mjs.map → TextArea-CFf0Lspu.mjs.map} +1 -1
- package/dist/{TextArea-Djd1uT3B.d.mts → TextArea-DFn4XuG-.d.mts} +2 -2
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-DCVONTD0.d.mts → TextUnderlineTooltip-B0iYaPM1.d.mts} +2 -2
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +1 -1
- package/dist/Toast.d.mts +1 -1
- package/dist/{Toggle-BEOoATjS.mjs → Toggle-BLdemkh_.mjs} +2 -2
- package/dist/{Toggle-BEOoATjS.mjs.map → Toggle-BLdemkh_.mjs.map} +1 -1
- package/dist/{Toggle-EYpW34LO.d.mts → Toggle-xtPgGaGD.d.mts} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-DLK9Q2Rg.d.mts → Tooltip-Blfhi2gT.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-B_u70y6w.d.mts → TruncatedText-BMQmveJG.d.mts} +1 -1
- package/dist/VersionHistory.d.mts +1 -1
- package/dist/{VersionHistoryItem-iUabmk_y.d.mts → VersionHistoryItem-BExp7oSr.d.mts} +1 -1
- package/dist/VersionHistoryItem.d.mts +1 -1
- package/dist/WizardModal.d.mts +2 -2
- package/dist/{accordionTitleTypography-C7VVJvlx.d.mts → accordionTitleTypography-PMKnfoy0.d.mts} +2 -2
- package/dist/accordionTitleTypography.d.mts +1 -1
- package/dist/{chainTypes-DT-9j_sG.d.mts → chainTypes-BbFZn8a9.d.mts} +4 -4
- package/dist/clientFilterUtils-c5xzvoBj.d.mts +20 -0
- package/dist/clientFilterUtils.d.mts +2 -0
- package/dist/{codec-CGj8cwcj.d.mts → codec-DIp7dhcN.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-BOm5A1Si.d.mts → color-C5B1pN1D.d.mts} +2 -2
- package/dist/components/Accordion/index.d.mts +1 -1
- package/dist/components/Attribute/index.mjs +2 -2
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +1 -1
- package/dist/components/BottomPanel/index.mjs +3 -3
- package/dist/components/Breadcrumbs/index.d.mts +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.d.mts +2 -2
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +2 -2
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/CardV2/index.d.mts +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/CodeHighlight/index.mjs +1 -1
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +2 -2
- package/dist/components/DataTable/TableControls/index.d.mts +22 -20
- package/dist/components/DataTable/TableControls/index.mjs +2 -2
- package/dist/components/DataTable/index.d.mts +9 -8
- package/dist/components/DataTable/index.mjs +2 -1474
- package/dist/components/DataTable/types.d.mts +2 -166
- package/dist/components/DatePicker/index.d.mts +5 -5
- package/dist/components/DatePicker/index.mjs +1 -1
- package/dist/components/DropdownButton/index.mjs +1 -1
- package/dist/components/DropdownMenu/index.d.mts +1 -1
- package/dist/components/DropdownMenu/index.mjs +1 -1
- package/dist/components/FloatingPanel/index.mjs +1 -1
- package/dist/components/FormControl/index.d.mts +2 -2
- package/dist/components/FormControl/index.mjs +2 -2
- package/dist/components/FormField/index.d.mts +5 -5
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/Grid/index.mjs +1 -1
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +28 -15
- package/dist/components/ImageTile/index.mjs.map +1 -1
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/LoadingShimmer/index.mjs +1 -1
- package/dist/components/MaskedInput/index.mjs +1 -1
- package/dist/components/Menu/index.d.mts +1 -1
- package/dist/components/Menu/index.mjs +1 -1
- package/dist/components/Modal/index.d.mts +1 -1
- package/dist/components/Modal/index.mjs +1 -1
- package/dist/components/PageHeader/index.d.mts +1 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/ProgressIndicator/index.d.mts +1 -1
- package/dist/components/ProgressIndicator/index.mjs +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.d.mts +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RightPanel/index.mjs +2 -2
- package/dist/components/SegmentedControl/index.d.mts +1 -1
- package/dist/components/SegmentedControl/index.mjs +1 -1
- package/dist/components/Select/index.d.mts +1 -1
- package/dist/components/Select/index.mjs +1 -1
- package/dist/components/SmartTextInput/index.d.mts +2 -2
- package/dist/components/SmartTextInput/index.mjs +7 -6
- package/dist/components/SmartTextInput/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +2 -2
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/StatusIndicator/index.mjs +1 -1
- package/dist/components/Sticker/index.d.mts +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +8 -8
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +2 -2
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Text/index.d.mts +1 -1
- package/dist/components/TextArea/index.d.mts +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +1 -1
- package/dist/components/Toast/index.mjs +1 -1
- package/dist/components/Toggle/index.d.mts +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/VersionHistory/index.d.mts +1 -1
- package/dist/components/VersionHistory/index.mjs +6 -6
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-CwzbyAdc.d.mts → constants-4rSh8e5G.d.mts} +1 -1
- package/dist/constants-BaMvTUbS.d.mts +10 -0
- package/dist/constants.d.mts +1 -1
- package/dist/constants2.d.mts +2 -10
- package/dist/{createPath-C4jIHe68.d.mts → createPath-B_CLq82C.d.mts} +2 -2
- package/dist/createPath.d.mts +1 -1
- package/dist/{date-filter-B8PKh5vg.mjs → date-filter-D0ys8s0D.mjs} +1 -1
- package/dist/{date-filter-B8PKh5vg.mjs.map → date-filter-D0ys8s0D.mjs.map} +1 -1
- package/dist/{date-range-rule-value-BTlHwhVf.d.mts → date-range-rule-value-D01nn054.d.mts} +2 -2
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/{date-rule-intent-zdKP-tW_.d.mts → date-rule-intent-B4hQ_APa.d.mts} +3 -3
- package/dist/date-rule-intent.d.mts +1 -1
- package/dist/display.d.mts +2 -2
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{filter-size-context-D3ZSzFKe.d.mts → filter-size-context-Dj7Idc8j.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/filters-DDrsgRYy.d.mts +22 -0
- package/dist/filters.d.mts +2 -0
- package/dist/{formatDateTime-zyRMjfH8.d.mts → formatDateTime-Dd9inM5H.d.mts} +1 -1
- package/dist/formatDateTime.d.mts +1 -1
- package/dist/helpers-D8_2I4ZX.d.mts +90 -0
- package/dist/helpers.d.mts +2 -90
- package/dist/{i18n-DeJa-arS.mjs → i18n-BscB9FUy.mjs} +18 -3
- package/dist/i18n-BscB9FUy.mjs.map +1 -0
- package/dist/{index-B13LwAGD.d.mts → index-DkXly4xw.d.mts} +2 -2
- package/dist/{index-DHmZDtDG.d.mts → index-DsjvDLF8.d.mts} +3 -3
- package/dist/{index-B7KIL3U6.d.mts → index-EGvEhP1j.d.mts} +2 -2
- package/dist/index-K614ZhWK.d.mts +1 -0
- package/dist/index-NKYLt_R9.d.mts +1 -0
- package/dist/index-VWno75SQ.d.mts +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index2.d.mts +1 -1
- package/dist/index3.d.mts +3 -3
- package/dist/index4.d.mts +1 -1
- package/dist/index5.d.mts +15 -15
- package/dist/{input-DMPo8gRT.d.mts → input-CKhARTlS.d.mts} +3 -3
- package/dist/{inputFields-DHdFgzS2.d.mts → inputFields-DyOZHse2.d.mts} +11 -11
- package/dist/inputFields.d.mts +1 -1
- package/dist/{intersperse-DWUGtKug.mjs → intersperse-ObkRVOag.mjs} +1 -1
- package/dist/{intersperse-DWUGtKug.mjs.map → intersperse-ObkRVOag.mjs.map} +1 -1
- package/dist/{jsonSchema-6mcLrVG3.d.mts → jsonSchema-COo0XQLA.d.mts} +1 -1
- package/dist/lib/PDSProvider.d.mts +3 -3
- package/dist/lib/PDSProvider.mjs +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/chainTypes.d.mts +1 -1
- package/dist/lib/color.d.mts +1 -1
- package/dist/lib/customFunctionSchema.d.mts +1 -1
- package/dist/lib/date-filter/index.d.mts +2 -2
- package/dist/lib/date-filter/index.mjs +1 -1
- package/dist/lib/i18n/index.d.mts +3 -3
- package/dist/lib/i18n/index.mjs +1 -1
- package/dist/lib/jsonSchema.d.mts +1 -1
- package/dist/lib/jsonSchemaType.d.mts +1 -1
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/methodChain.d.mts +2 -2
- package/dist/lib/methodChainNormalize.d.mts +2 -2
- package/dist/lib/methodChainTypes.d.mts +1 -1
- package/dist/lib/objectSchemaTypes.d.mts +1 -1
- package/dist/lib/platformObject.d.mts +1 -1
- package/dist/lib/pseudoClass.d.mts +1 -1
- package/dist/lib/router/adapters/reactRouter.d.mts +1 -1
- package/dist/lib/router/adapters/tanstack.d.mts +1 -1
- package/dist/lib/router/index.d.mts +5 -5
- package/dist/lib/schemaOptions.d.mts +1 -1
- package/dist/lib/semanticColor.d.mts +1 -1
- package/dist/lib/useChain.d.mts +1 -1
- package/dist/{listbox-options-yLjqZp4H.d.mts → listbox-options-D-DyLUdi.d.mts} +3 -3
- package/dist/listbox-options.d.mts +1 -1
- package/dist/{message-C5n7wFiN.d.mts → message-Dti22dmx.d.mts} +1 -1
- package/dist/{methodChain-BNDytoaD.d.mts → methodChain-BAUFBbR9.d.mts} +4 -4
- package/dist/{methodChainTypes-BuwpPC73.d.mts → methodChainTypes-a7kHYhs7.d.mts} +2 -2
- package/dist/mixins/focus.d.mts +1 -1
- package/dist/mixins/hoverable.d.mts +2 -2
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/menuItem.d.mts +2 -2
- package/dist/mixins/scrollbar.d.mts +1 -1
- package/dist/mixins/text.d.mts +1 -1
- package/dist/{operators-B12UYEsV.d.mts → operators-DjQXVNVI.d.mts} +33 -5
- package/dist/operators.d.mts +2 -2
- package/dist/{palette-BCszfY7I.d.mts → palette-Bp5G-S_5.d.mts} +3 -3
- package/dist/palette.d.mts +1 -1
- package/dist/patterns/CardGrouping/index.mjs +4 -4
- package/dist/patterns/IndexTableLayout/index.d.mts +3 -0
- package/dist/patterns/IndexTableLayout/index.mjs +87 -0
- package/dist/patterns/IndexTableLayout/index.mjs.map +1 -0
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +4 -4
- package/dist/patterns/PageLayout/index.d.mts +4 -4
- package/dist/patterns/PageLayout/index.mjs +1 -1
- package/dist/patterns/WizardModal/index.mjs +3 -3
- package/dist/reactRouterFallback.d.mts +1 -1
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/safe-parse.d.mts +1 -1
- package/dist/{schemaOptions-DBOUChxi.d.mts → schemaOptions-D536qhSd.d.mts} +3 -3
- package/dist/{semantic-Duoh2Pxp.d.mts → semantic-DjKvtUi8.d.mts} +1 -1
- package/dist/{semanticColor-BuG977_M.d.mts → semanticColor-CmGmGRj8.d.mts} +3 -3
- package/dist/{strings-DQ3vxBj8.d.mts → strings-FWNWdSn1.d.mts} +18 -2
- package/dist/strings.d.mts +1 -1
- package/dist/{text-B7hx6G99.d.mts → text-BNfECpa5.d.mts} +1 -1
- package/dist/{theme-BKg55Zk1.d.mts → theme-VNhXxAF3.d.mts} +3 -3
- package/dist/theme.d.mts +1 -1
- package/dist/tone.d.mts +3 -3
- package/dist/tree.d.mts +1 -1
- package/dist/{types-CM8L7-ij.d.mts → types-BMpEizJP.d.mts} +6 -2
- package/dist/{types-eemD0jxb.d.mts → types-BhHdS6QP.d.mts} +2 -2
- package/dist/{types-6QeQmbFm.d.mts → types-CFe4tA8Q.d.mts} +1 -1
- package/dist/types-CjQzH0MM.d.mts +180 -0
- package/dist/{types-CEQWndtF.d.mts → types-DFU6M0OL.d.mts} +4 -4
- package/dist/{types-BjMJFNYH.d.mts → types-DHTFd-5t.d.mts} +1 -1
- package/dist/{types-VgGkS4JB.d.mts → types-DfpVVjso.d.mts} +2 -2
- package/dist/types-Dx8PgO8a.d.mts +95 -0
- package/dist/{types-CgKSEQyB.d.mts → types-HxiGiwQN.d.mts} +1 -1
- package/dist/{types-4wnr5R9P.d.mts → types-Kmnood9Y.d.mts} +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types2.d.mts +2 -2
- package/dist/types3.d.mts +1 -1
- package/dist/types4.d.mts +2 -2
- package/dist/types5.d.mts +2 -2
- package/dist/types6.d.mts +2 -2
- package/dist/types7.d.mts +1 -1
- package/dist/{url-state-BW1mN6WQ.d.mts → url-state-D1muieS7.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/{useChain-BreIP4fW.d.mts → useChain-D5LvupTW.d.mts} +6 -6
- package/dist/useChainAtCursor.d.mts +6 -6
- package/dist/useCodeChainFunctionPanel.d.mts +1 -1
- package/dist/useColumnConfiguration.d.mts +34 -0
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-B8VebPBe.d.mts → useFilterStateV2-MH3zbQFr.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-DAwApAKK.d.mts → useFormField-Ba8rh1CH.d.mts} +2 -2
- package/dist/{useFormField-J0LiPcpm.mjs → useFormField-CbNYbDdp.mjs} +2 -2
- package/dist/{useFormField-J0LiPcpm.mjs.map → useFormField-CbNYbDdp.mjs.map} +1 -1
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-CALbrUkl.mjs → useFormGroup-CsKC93Pt.mjs} +1 -1
- package/dist/{useFormGroup-CALbrUkl.mjs.map → useFormGroup-CsKC93Pt.mjs.map} +1 -1
- package/dist/{useLocationPathname-BHL0pgiu.d.mts → useLocationPathname-OsvI7mH5.d.mts} +1 -1
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-Dq30b6yY.d.mts → useTableBoxDragAndDrop-CKPIY98e.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/useTableColumns-rLskKJhd.d.mts +72 -0
- package/dist/useTableColumns.d.mts +2 -72
- package/dist/useTruncation.d.mts +1 -1
- package/dist/{utilities-B2ry7_20.d.mts → utilities-BrEUGFGq.d.mts} +1 -1
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/testing.d.mts +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils4.d.mts +5 -5
- package/dist/{validation-ZHnFPRP6.d.mts → validation-Csi2SJxm.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/validation2.d.mts +4 -4
- package/dist/{value-control-resolver-D3qzy8Kk.d.mts → value-control-resolver-BoBFvQ_0.d.mts} +2 -2
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/variables/effect.d.mts +1 -1
- package/dist/variables/semantic.d.mts +1 -1
- package/llms.txt +6 -2
- package/package.json +5 -3
- package/skills/ui-authoring/COMPONENTS.md +1 -0
- package/skills/ui-authoring/PATTERNS.md +4 -2
- package/skills/ui-authoring/SKILL.md +9 -2
- package/skills/ui-authoring/TOKENS.md +457 -119
- package/dist/Combobox-BkpRqaxB.mjs.map +0 -1
- package/dist/DatePicker-CjuR6ORz.mjs.map +0 -1
- package/dist/Modal-BBIJVhv2.mjs.map +0 -1
- package/dist/TableControls-BtKBTGYR.mjs.map +0 -1
- package/dist/components/DataTable/index.mjs.map +0 -1
- package/dist/i18n-DeJa-arS.mjs.map +0 -1
- package/dist/types-CwzwClJx.d.mts +0 -27
- /package/dist/{index-7in8TPrM.d.mts → index-AnhM47-e2.d.mts} +0 -0
- /package/dist/{index-8SLBz2NH.d.mts → index-B33elXxm.d.mts} +0 -0
- /package/dist/{index-B24gUwOx.d.mts → index-B4woaFSm.d.mts} +0 -0
- /package/dist/{index-B8M0Grl_2.d.mts → index-B6T7ov8p.d.mts} +0 -0
- /package/dist/{index-BFnNtGdX.d.mts → index-BNRXMhlr.d.mts} +0 -0
- /package/dist/{index-BjgW3E7y.d.mts → index-BOaE2xDE.d.mts} +0 -0
- /package/dist/{index-BwFl_eS0.d.mts → index-BPiqSRRl.d.mts} +0 -0
- /package/dist/{index-C3kE54DD.d.mts → index-BYd3Btr1.d.mts} +0 -0
- /package/dist/{index-C3usUse7.d.mts → index-BcsXXrHq.d.mts} +0 -0
- /package/dist/{index-C6HcjJiY.d.mts → index-Bo9LXG4r.d.mts} +0 -0
- /package/dist/{index-CP2eJYlK.d.mts → index-BrGZHEgX.d.mts} +0 -0
- /package/dist/{index-CSf15oCd.d.mts → index-Bt4QNofW.d.mts} +0 -0
- /package/dist/{index-CX869wwk.d.mts → index-CFuHCx9T.d.mts} +0 -0
- /package/dist/{index-CXaDbCtw.d.mts → index-CLTQPxoD.d.mts} +0 -0
- /package/dist/{index-D4DUvwPf.d.mts → index-CaqYCRmZ.d.mts} +0 -0
- /package/dist/{index-DB7t8whN.d.mts → index-CjDodOH2.d.mts} +0 -0
- /package/dist/{index-Deol7ZWO.d.mts → index-CjmAoxrR2.d.mts} +0 -0
- /package/dist/{index-DhiymMxa.d.mts → index-Cx0vQ6ld.d.mts} +0 -0
- /package/dist/{index-DjOaHFU3.d.mts → index-CzItj62a.d.mts} +0 -0
- /package/dist/{index-DkrC-i1D.d.mts → index-CzUpNo0e.d.mts} +0 -0
- /package/dist/{index-DvwPIy8X.d.mts → index-DBGd4WeR.d.mts} +0 -0
- /package/dist/{index-Oio5ygqN.d.mts → index-DMRtRo7y.d.mts} +0 -0
- /package/dist/{index-Wc1llEvP.d.mts → index-DNjQe1D8.d.mts} +0 -0
- /package/dist/{index-bHnO4ZKt.d.mts → index-DW3xeuzq.d.mts} +0 -0
- /package/dist/{index-dzI_9J-Z.d.mts → index-DZlqSwCF.d.mts} +0 -0
- /package/dist/{index-gpCH5158.d.mts → index-De7MV8-j.d.mts} +0 -0
- /package/dist/{index-lIMqGGJz.d.mts → index-DjG1RCY5.d.mts} +0 -0
- /package/dist/{index-luywJTzJ.d.mts → index-Dlcv6Ku22.d.mts} +0 -0
- /package/dist/{index-sViox9YW.d.mts → index-DrK1_jKY.d.mts} +0 -0
- /package/dist/{index-xAZnxq0d2.d.mts → index-IJ_PXwxI2.d.mts} +0 -0
|
@@ -1,151 +1,489 @@
|
|
|
1
1
|
# Design Tokens
|
|
2
2
|
|
|
3
|
-
How to pick
|
|
3
|
+
How to pick colors (semantic tokens, so the same job looks right in light and dark mode), plus the
|
|
4
|
+
`Spacing` / `Typography` / radius / elevation / chart catalog from `@persona/design-tokens`.
|
|
4
5
|
|
|
5
6
|
```tsx
|
|
6
7
|
import { BorderRadius, ChartingColors, Color, Spacing, Typography } from '@persona/design-tokens';
|
|
8
|
+
import { semanticColor } from '@persona/design-system/lib/semanticColor';
|
|
7
9
|
```
|
|
8
10
|
|
|
9
11
|
## Color
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
Pick the semantic token whose name describes the color's job (`FgPrimary`, `SurfaceElevated`,
|
|
14
|
+
`FeedbackDanger1`, …). The full list is the `SemanticTokens` interface in
|
|
15
|
+
`@persona/design-system/variables/semantic`.
|
|
13
16
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
`Color.*` from `@persona/design-tokens` (`Core*`, `Primary*`, and the purpose-named `Text*` /
|
|
18
|
+
`Background*` / `Border*`) is the fixed palette the semantic tokens point to. It does not follow the
|
|
19
|
+
theme, so it is never the painted color — only the fallback argument, as are old theme values such as
|
|
20
|
+
`theme.color.background.primary`. Hardcode a hex only if absolutely necessary, with a comment
|
|
21
|
+
explaining the choice.
|
|
19
22
|
|
|
20
23
|
```tsx
|
|
21
|
-
// ❌ Color.
|
|
22
|
-
// ✅ Color.
|
|
24
|
+
// ❌ color: ${Color.TextPrimary}; / Color.CorePurple500 / #3F48FD / theme.color.text.primary
|
|
25
|
+
// ✅ color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.TextPrimary)};
|
|
23
26
|
```
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|------|-----|
|
|
27
|
-
| Text | `Color.TextPrimary` / `TextSecondary` / `TextInverse` / `TextActive` / `TextDanger` / `TextDisabled` |
|
|
28
|
-
| Page / card background | `Color.BackgroundPrimary` / `BackgroundSecondary` |
|
|
29
|
-
| Borders | `Color.BorderHairline` / `BorderDivider` / `BorderFocus` |
|
|
30
|
-
| Buttons | `Color.BackgroundButtonPrimary` (and Default / Danger + Hover variants) |
|
|
31
|
-
| Inputs | `Color.BackgroundInputDefault` / `BorderInputDefault` |
|
|
32
|
-
| Charts | `ChartingColors.Sequential` or `.Categorical` |
|
|
33
|
-
|
|
34
|
-
```tsx
|
|
35
|
-
const Panel = styled.div`
|
|
36
|
-
background-color: ${Color.BackgroundPrimary};
|
|
37
|
-
border: 1px solid ${Color.BorderDivider};
|
|
38
|
-
color: ${Color.TextPrimary};
|
|
28
|
+
### Use a PDS component before you pick any token
|
|
39
29
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
`;
|
|
44
|
-
```
|
|
30
|
+
PDS components are what we want people to use: they already carry the right tokens for light and
|
|
31
|
+
dark mode. The most common mistake is painting tokens over a custom component instead. A custom frame
|
|
32
|
+
sets its own background, so dark mode never reaches it.
|
|
45
33
|
|
|
46
|
-
|
|
34
|
+
**Is there a PDS component that does this job one-for-one?** If so, use it, and delete the
|
|
35
|
+
hand-written color overrides — PDS already carries the right tokens. Check [COMPONENTS.md](COMPONENTS.md)
|
|
36
|
+
first. For styling that has no component of its own, use the PDS mixins: `inputMixin`
|
|
37
|
+
(`@persona/design-system/mixins/input`) for field chrome such as filter triggers, and
|
|
38
|
+
`semanticScrollbar` (`@persona/design-system/mixins/scrollbar`) for scrollbars.
|
|
47
39
|
|
|
48
|
-
|
|
40
|
+
Same job, same token: a list of pressable rows hovers like a menu, a card looks like a `Tile`, a
|
|
41
|
+
filter trigger looks like an input, a pill looks like an outline `Button`.
|
|
49
42
|
|
|
50
|
-
|
|
51
|
-
// Purple
|
|
52
|
-
Color.CorePurple50 // #F4F5FF (lightest)
|
|
53
|
-
Color.CorePurple100
|
|
54
|
-
Color.CorePurple500 // Mid-range purple
|
|
55
|
-
Color.CorePurple700
|
|
56
|
-
Color.CorePurple1100 // #010334 (darkest)
|
|
57
|
-
|
|
58
|
-
// Other core colors follow same pattern:
|
|
59
|
-
// CoreRed, CoreOrange, CoreYellow, CoreGreen, CoreTeal, CoreBlue, CoreSlate
|
|
60
|
-
```
|
|
43
|
+
### If a custom component is needed, use the same semantic tokens as its PDS equivalent uses
|
|
61
44
|
|
|
62
|
-
|
|
45
|
+
**No exact match?** Keep the custom component and give it **the same tokens its PDS equivalent
|
|
46
|
+
uses**. Don't swap in a component that would lose behavior. Examples:
|
|
63
47
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
Color.PrimaryOrange // #F59602
|
|
70
|
-
Color.PrimaryYellow // #DFFD2F
|
|
71
|
-
Color.PrimaryGreen // #41D49D
|
|
72
|
-
Color.PrimaryTeal // #36EBFD
|
|
73
|
-
Color.PrimaryBlue // #2B7FFD
|
|
74
|
-
```
|
|
48
|
+
- A two-step wizard modal can't be rebuilt on PDS `Modal` without changing how it works, so it keeps
|
|
49
|
+
its frame and uses PDS Modal tokens: `SurfacePrimary` card, `BorderSubtle` header and footer
|
|
50
|
+
dividers, `FgPrimary` title.
|
|
51
|
+
- A select that has to show greyed-out (disabled) options keeps its component and uses PDS Select
|
|
52
|
+
tokens.
|
|
75
53
|
|
|
76
|
-
###
|
|
54
|
+
### Picking semantic tokens for custom components
|
|
77
55
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Color.BackgroundSecondary // #F5F5F6
|
|
81
|
-
|
|
82
|
-
// Button backgrounds
|
|
83
|
-
Color.BackgroundButtonDefault
|
|
84
|
-
Color.BackgroundButtonDefaultHover
|
|
85
|
-
Color.BackgroundButtonPrimary
|
|
86
|
-
Color.BackgroundButtonPrimaryHover
|
|
87
|
-
Color.BackgroundButtonDanger
|
|
88
|
-
Color.BackgroundButtonDangerHover
|
|
89
|
-
|
|
90
|
-
// Input backgrounds
|
|
91
|
-
Color.BackgroundInputDefault
|
|
92
|
-
Color.BackgroundInputActive
|
|
93
|
-
Color.BackgroundInputDisabled
|
|
94
|
-
|
|
95
|
-
// Label backgrounds
|
|
96
|
-
Color.BackgroundLabelGrey
|
|
97
|
-
Color.BackgroundLabelPurple
|
|
98
|
-
Color.BackgroundLabelRed
|
|
99
|
-
Color.BackgroundLabelGreen
|
|
100
|
-
// ... and more label variants
|
|
101
|
-
|
|
102
|
-
// Status indicator backgrounds
|
|
103
|
-
Color.BackgroundStatusIndicatorSuccess
|
|
104
|
-
Color.BackgroundStatusIndicatorWarning
|
|
105
|
-
Color.BackgroundStatusIndicatorCritical
|
|
106
|
-
Color.BackgroundStatusIndicatorFeature
|
|
107
|
-
```
|
|
56
|
+
For whatever is still custom, decide what the color is doing: text, surface, border, button, field,
|
|
57
|
+
tinted message, status or scrollbar. Pick that family from the tables below, then the role inside it.
|
|
108
58
|
|
|
109
|
-
|
|
59
|
+
For hover, pressed and disabled, use the token with that suffix (`ActionPrimaryHover`,
|
|
60
|
+
`InputSurfaceDisabled`). The state is part of the name. When a color must look the same in light and
|
|
61
|
+
dark, use the Static version.
|
|
110
62
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
// Status indicator text colors
|
|
120
|
-
Color.TextStatusIndicatorSuccess
|
|
121
|
-
Color.TextStatusIndicatorWarning
|
|
122
|
-
Color.TextStatusIndicatorCritical
|
|
123
|
-
```
|
|
63
|
+
Read tokens with `semanticColor(theme, 'Token', fallback)` from
|
|
64
|
+
`@persona/design-system/lib/semanticColor`. The fallback is what themes without semantic tokens show:
|
|
65
|
+
pass today's color so those themes look exactly as before. If the token's light value differs from
|
|
66
|
+
today's color, list the old and new color so a person can approve it (for example `FgDisabled` is
|
|
67
|
+
#BDBDBD where the old value was #CCCCCC). Don't read `theme.semantic` directly; the
|
|
68
|
+
`no-direct-theme-semantic` lint rule rejects it. For a declaration that should exist only under
|
|
69
|
+
semantic theming, use `semanticOnly((tokens) => …)` from the same module.
|
|
124
70
|
|
|
125
|
-
|
|
71
|
+
For a wash or a disabled fade, combine the color with an opacity token using `withAlpha` from
|
|
72
|
+
`@persona/design-system/lib/color` (see Opacity below for which token, and how each behaves in light
|
|
73
|
+
and dark). A wash reads two tokens, so get them with `semanticTokens(theme)`, branch on it, and
|
|
74
|
+
return today's color when the theme has no semantic tokens. For focus, use `BorderFocus` through
|
|
75
|
+
`@persona/design-system/mixins/focus`.
|
|
126
76
|
|
|
127
77
|
```tsx
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
Color.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
Color.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
Color.BorderIconSuccess
|
|
145
|
-
Color.BorderIconWarning
|
|
146
|
-
Color.BorderIconDanger
|
|
78
|
+
import { semanticColor, semanticTokens } from '@persona/design-system/lib/semanticColor';
|
|
79
|
+
import { withAlpha } from '@persona/design-system/lib/color';
|
|
80
|
+
|
|
81
|
+
const Row = styled.button<{ $selected: boolean }>`
|
|
82
|
+
color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.TextPrimary)};
|
|
83
|
+
background: ${({ theme, $selected }) => {
|
|
84
|
+
if (!$selected) return 'transparent';
|
|
85
|
+
const tokens = semanticTokens(theme);
|
|
86
|
+
// A wash combines two tokens, so branch and keep today's color for themes without them.
|
|
87
|
+
return tokens ? withAlpha(tokens.SurfaceAccent, tokens.Opacity25) : Color.CorePurple50;
|
|
88
|
+
}};
|
|
89
|
+
|
|
90
|
+
&:hover {
|
|
91
|
+
background: ${({ theme }) => semanticColor(theme, 'SurfaceHover', Color.BackgroundSecondary)};
|
|
92
|
+
}
|
|
93
|
+
`;
|
|
147
94
|
```
|
|
148
95
|
|
|
96
|
+
#### Text and icons — Fg*
|
|
97
|
+
|
|
98
|
+
Use Fg* for text, and for icons that sit with that text. An icon takes the same token as its label.
|
|
99
|
+
|
|
100
|
+
| When | Token |
|
|
101
|
+
|---|---|
|
|
102
|
+
| The main thing to read: body, names, values, form labels, neutral button labels | `FgPrimary` |
|
|
103
|
+
| Names and labels in navigation: nav items, environment names, the chevron beside them | `FgPrimary` |
|
|
104
|
+
| A standalone icon button or chevron | `FgPrimary` |
|
|
105
|
+
| Supporting text: descriptions, timestamps, placeholders, helper text, empty-state messages, counts on a pill | `FgSecondary` |
|
|
106
|
+
| The quietest text: small chrome labels that should recede further than secondary | `FgTertiary` |
|
|
107
|
+
| The control is unavailable | `FgDisabled` (fallback `Color.TextDisabled`) |
|
|
108
|
+
| A link, the current item, a selected pill's label, or any text that should read as the brand color | `FgAccent` |
|
|
109
|
+
| That brand text on hover | `FgAccentHover` |
|
|
110
|
+
| That brand text while pressed | `FgAccentActive` |
|
|
111
|
+
| Brand purple that must look the same in both themes | `FgAccentStatic` |
|
|
112
|
+
| A label on a primary or danger button, which flips with the button fill | `FgInverse` |
|
|
113
|
+
| A mark or label that must stay white in both themes (a check, text on a saturated fill) | `FgInverseStatic` |
|
|
114
|
+
| Text that must stay dark in both themes, because the fill behind it doesn't flip | `FgPrimaryStatic` |
|
|
115
|
+
| Secondary text that must stay the same slate in both themes | `FgSecondaryStatic` |
|
|
116
|
+
| An error, a required marker, or destructive text at rest | `FgDanger1` |
|
|
117
|
+
| Danger text on a danger fill, or danger text in its emphasized state | `FgDanger2` |
|
|
118
|
+
| Caution text | `FgWarning1` |
|
|
119
|
+
| Warning text on a warning fill | `FgWarning2` |
|
|
120
|
+
| Text or an icon on a success, info, attention, feature, or miscellaneous fill | `FgSuccess`, `FgInfo`, `FgHighlight`, `FgFeature`, `FgMisc` |
|
|
121
|
+
|
|
122
|
+
`FgDanger1` and `FgWarning1` are the tokens the PDS form error and warning messages use. Use them for
|
|
123
|
+
any error or warning text so it matches.
|
|
124
|
+
|
|
125
|
+
`FgPrimary` follows the theme: dark on a light surface, light on a dark one. Use a Static foreground
|
|
126
|
+
when the fill behind the text doesn't flip or stays mid-tone, so the text doesn't flip without it.
|
|
127
|
+
|
|
128
|
+
**Icons.**
|
|
129
|
+
- An icon inside a button takes the button's label color. Remove any hard-coded override so it
|
|
130
|
+
follows the button at rest, on hover and when disabled.
|
|
131
|
+
- An icon on its own (nav icon, chevron, toggle) gets an explicit token. "No color" means browser
|
|
132
|
+
black.
|
|
133
|
+
- Nav icons use the same token as their label: `FgPrimary` at rest, `FgAccent` on the current item.
|
|
134
|
+
- Dots and marks that carry meaning (availability, status) keep their own Status or Feedback token.
|
|
135
|
+
|
|
136
|
+
#### Surfaces — Surface*
|
|
137
|
+
|
|
138
|
+
Use Surface* for neutral layout fills. A colored message, tag or status uses Feedback* or Status*
|
|
139
|
+
instead.
|
|
140
|
+
|
|
141
|
+
| When | Token |
|
|
142
|
+
|---|---|
|
|
143
|
+
| The canvas behind the screen | `SurfacePage` |
|
|
144
|
+
| The main surface content sits on: a card, a modal (PDS `Modal` is an elevated `Card` painted `SurfacePrimary`), a panel, page header, list | `SurfacePrimary` |
|
|
145
|
+
| A region nested inside a primary surface: a header band, a well, a grouped area | `SurfaceSecondary` |
|
|
146
|
+
| An empty-state box inside a table, list or form, never a fixed white | `SurfaceSecondary` |
|
|
147
|
+
| A further step of nesting, stronger than secondary | `SurfaceTertiary` |
|
|
148
|
+
| A faint separation from the parent surface | `SurfaceSubtle` |
|
|
149
|
+
| A sunken well: a track, a recessed slot, an inset editor | `SurfaceInset` |
|
|
150
|
+
| A neutral row or item under the pointer: menu items, list options, any list of pressable rows in a panel | `SurfaceHover` |
|
|
151
|
+
| A layer that floats *over* other content and isn't a modal: a dropdown or combobox list, popover, filter popover, tooltip, floating panel, floating action bar | `SurfaceElevated` |
|
|
152
|
+
| A brand-tinted selection or emphasis on a neutral surface | `SurfaceAccent` |
|
|
153
|
+
| That tint, held to the same color in both themes | `SurfaceAccentStatic` |
|
|
154
|
+
|
|
155
|
+
`SurfaceHover` is a temporary state. A region that is always slightly different from the body is
|
|
156
|
+
`SurfaceSecondary` or `SurfaceSubtle`, even if it looks similar. On a row, copy only the menu's hover
|
|
157
|
+
color, not the whole menu style.
|
|
158
|
+
|
|
159
|
+
A selected row or menu item is `SurfaceAccent` with `Opacity25` (`withAlpha`): solid in light mode,
|
|
160
|
+
a 25% wash in dark (see Opacity below).
|
|
161
|
+
|
|
162
|
+
#### Borders — Border*
|
|
163
|
+
|
|
164
|
+
There are two kinds of divider, matching the PDS source:
|
|
165
|
+
|
|
166
|
+
| When | Token |
|
|
167
|
+
|---|---|
|
|
168
|
+
| A divider that's part of a component: modal header and footer dividers, a tab bar's baseline, a card section's top rule, a select footer, a slider track, a quiet internal hairline | `BorderSubtle` (fallback `Color.BorderDivider`) |
|
|
169
|
+
| A rule between content items: table rows, menu sections, list items in a panel, the foot of a page header, and the edge of a card (as Tile does) | `BorderDivider` |
|
|
170
|
+
| The resting outline of a control that isn't a text field (outline button, pill) | `BorderDefault` |
|
|
171
|
+
| That outline while hovered | `BorderHover` |
|
|
172
|
+
| Keyboard focus | `BorderFocus` |
|
|
173
|
+
| A brand-colored mark of selection: an active tab underline, a selected pill's border, a selected edge | `BorderAccent` |
|
|
174
|
+
| A field or region in an error state | `BorderDanger` |
|
|
175
|
+
| A field or region in a warning state | `BorderWarning` |
|
|
176
|
+
|
|
177
|
+
Field chrome uses `InputBorder*`. `BorderDanger` and `BorderWarning` are the error and warning
|
|
178
|
+
strokes on those fields; the message beside them is `FgDanger1` or `FgWarning1`.
|
|
179
|
+
|
|
180
|
+
**Floating layers have no added border.** Menus, flyouts, popovers, the side-nav flyout and modals
|
|
181
|
+
stand apart through their surface and shadow. Don't add an edge, and remove one a custom style had.
|
|
182
|
+
Keep a border only when the PDS component draws one itself or the design calls for it.
|
|
183
|
+
|
|
184
|
+
**Fixed divider colors.** The fixed `Color.BorderHairline` and `Color.BorderDivider` become the
|
|
185
|
+
`BorderDivider` token, or `BorderSubtle` for a divider inside a component. The old color with the
|
|
186
|
+
same name isn't the token; it doesn't flip.
|
|
187
|
+
|
|
188
|
+
#### Scrollbars
|
|
189
|
+
|
|
190
|
+
Every scroll container gets a themed scrollbar; the browser default stays light in dark mode. Use the
|
|
191
|
+
`semanticScrollbar` mixin (`@persona/design-system/mixins/scrollbar`) rather than writing it by hand.
|
|
192
|
+
It paints:
|
|
193
|
+
|
|
194
|
+
| Part | Token |
|
|
195
|
+
|---|---|
|
|
196
|
+
| Thumb at rest | `BorderDefault` |
|
|
197
|
+
| Thumb on hover | `BorderHover` |
|
|
198
|
+
| Track | transparent, so the surface shows through |
|
|
199
|
+
|
|
200
|
+
This applies to navs, panels, dropdown lists, modal bodies and footers alike.
|
|
201
|
+
|
|
202
|
+
#### Buttons and pressable chrome — Action*
|
|
203
|
+
|
|
204
|
+
Use Action* for the fill of a control that's meant to be pressed. The surface behind the button stays
|
|
205
|
+
a Surface* token. Prefer PDS `Button` with the matching `variant` to hand-painting these.
|
|
206
|
+
|
|
207
|
+
| When | Rest | Hover | Pressed | Label |
|
|
208
|
+
|---|---|---|---|---|
|
|
209
|
+
| The main action | `ActionPrimary` | `ActionPrimaryHover` | `ActionPrimaryActive` | `FgInverse` |
|
|
210
|
+
| A destructive action | `ActionDanger` | `ActionDangerHover` | `ActionDangerActive` | `FgInverse` |
|
|
211
|
+
| A low-emphasis action | `ActionNeutral` | `ActionNeutralHover` | `ActionNeutralActive` | `FgPrimary` |
|
|
212
|
+
| An action drawn as an outline | transparent, stroke `BorderDefault` | `ActionOutlineHover` | `ActionOutlineActive` | `FgPrimary` (count `FgSecondary`, disabled `FgDisabled`) |
|
|
213
|
+
| A button on a dark or brand-filled background | `ActionInverse` | `ActionInverseHover` | `ActionInverseActive` | `FgPrimaryStatic` |
|
|
214
|
+
| Small quick actions on a list item (mark read, archive) | `ActionInverse` | `ActionInverseHover` | `ActionInverseActive` | `FgPrimaryStatic` |
|
|
215
|
+
| A brand tint on a pressable row, short of a full primary button | `ActionAccent` | | | `FgPrimary` or `FgAccent` |
|
|
216
|
+
|
|
217
|
+
Panel-level text actions with icons (acting on every item in the panel) use default button styling;
|
|
218
|
+
the icon follows the label.
|
|
219
|
+
|
|
220
|
+
**Disabled:**
|
|
221
|
+
- A destructive button uses `ActionDangerDisabled` when that state needs its own color; otherwise
|
|
222
|
+
fade the danger fill with `Opacity65`.
|
|
223
|
+
- Disabled neutral and inverse fills fade with `Opacity65`.
|
|
224
|
+
- Disabled labels on neutral actions are `FgDisabled`.
|
|
225
|
+
- Disabled labels on primary and danger actions stay `FgInverse`, and the whole control fades with
|
|
226
|
+
`Opacity65`.
|
|
227
|
+
|
|
228
|
+
#### Fields and choice controls — Input*
|
|
229
|
+
|
|
230
|
+
Use Input* for the fill and stroke of anything a person types into or toggles. For a custom field or
|
|
231
|
+
filter trigger, apply `inputMixin` (`@persona/design-system/mixins/input`) rather than setting these
|
|
232
|
+
by hand.
|
|
233
|
+
|
|
234
|
+
| When | Fill | Border |
|
|
235
|
+
|---|---|---|
|
|
236
|
+
| A text field at rest | `InputSurfaceDefault` | `InputBorderDefault` |
|
|
237
|
+
| That field on hover | `InputSurfaceHover` | `InputBorderHover` |
|
|
238
|
+
| That field when disabled | `InputSurfaceDisabled` | `InputBorderDisabled` |
|
|
239
|
+
| A search box built into a modal or panel header, separated by a divider rather than a field outline | transparent in every state | none |
|
|
240
|
+
| A checkbox, radio, or switch that needs a heavier resting stroke than a text field | `InputSurfaceDefault` | `InputBorderStrong` |
|
|
241
|
+
| That choice control on hover | `InputSurfaceHover` | `InputBorderHoverStrong` |
|
|
242
|
+
| The on or checked state | `InputSurfaceAccent` | `InputBorderAccent` |
|
|
243
|
+
| The on state on hover | `InputSurfaceAccentHover` | `InputSurfaceAccentHover` (intentional; PDS Checkbox and Radio do the same) |
|
|
244
|
+
| The on state when disabled | `InputSurfaceAccentDisabled` | `InputBorderDisabled` |
|
|
245
|
+
| A knob or mark that must stay white | `InputSurfaceInverseStatic` | |
|
|
246
|
+
|
|
247
|
+
Field text:
|
|
248
|
+
- Text inside a field is `FgPrimary`.
|
|
249
|
+
- Placeholder text is `FgSecondary`.
|
|
250
|
+
- Disabled text is `FgDisabled`.
|
|
251
|
+
- The check on a selected control is `FgInverseStatic`.
|
|
252
|
+
|
|
253
|
+
Fade a disabled field or choice control with `Opacity65`.
|
|
254
|
+
|
|
255
|
+
#### Tinted messages, chips and stickers — Feedback*
|
|
256
|
+
|
|
257
|
+
Use Feedback* when the color categorizes or emphasizes content: a banner, a tag, a sticker, a
|
|
258
|
+
highlight. Pick the hue for the meaning and the number for the strength.
|
|
259
|
+
|
|
260
|
+
| Hue | When | Tokens that exist |
|
|
261
|
+
|---|---|---|
|
|
262
|
+
| Accent | Brand emphasis | `FeedbackAccent1`–`3`, `FeedbackAccent1Static` |
|
|
263
|
+
| Info | Neutral information | `FeedbackInfo1`–`3` |
|
|
264
|
+
| Success | A positive outcome | `FeedbackSuccess1`–`3` |
|
|
265
|
+
| Warning | Caution | `FeedbackWarning1`–`3` |
|
|
266
|
+
| Highlight | Attention, a spotlight | `FeedbackHighlight1`–`2` |
|
|
267
|
+
| Danger | An error or a destructive category | `FeedbackDanger1`–`4` |
|
|
268
|
+
| Misc | A category that needs its own hue, distinct from brand and from success or danger | `FeedbackMisc1`–`2` |
|
|
269
|
+
| Neutral | No extra meaning; a grey chip or wash | `FeedbackNeutral1`–`5`, `FeedbackNeutral2Static` |
|
|
270
|
+
| Neutral Inverse | A light chip that should read as the inverse of the surrounding neutral | `FeedbackNeutralInverse` |
|
|
271
|
+
|
|
272
|
+
| Step | When |
|
|
273
|
+
|---|---|
|
|
274
|
+
| 1 | A quiet wash behind content. Text on it is `FgPrimary`. |
|
|
275
|
+
| 2 | The default fill for a tag or sticker. |
|
|
276
|
+
| 3 | A stronger fill, or the hover of a step-2 chip. |
|
|
277
|
+
| 4 and 5 (Danger 4, Neutral 4–5 only) | The strongest fills. Text on these is `FgInverse` or `FgInverseStatic`. |
|
|
278
|
+
|
|
279
|
+
Hover on a chip moves one step stronger in the same hue. Text on a mid-tone chip (step 2 and most of
|
|
280
|
+
step 3) is `FgPrimaryStatic`, so it stays dark in both themes. Text on a neutral chip that follows the
|
|
281
|
+
theme is `FgPrimary`.
|
|
282
|
+
|
|
283
|
+
A Static feedback token is a step locked to one color. Use it when the chip sits on a surface that
|
|
284
|
+
also doesn't flip, or when the highlight must match in both themes.
|
|
285
|
+
|
|
286
|
+
When you fix an icon color in a component, check that the fix doesn't reach chips or stickers that
|
|
287
|
+
share the same icon style.
|
|
288
|
+
|
|
289
|
+
#### Status — Status*
|
|
290
|
+
|
|
291
|
+
Use Status* when the color reports state: a record's outcome, a toast about something that just
|
|
292
|
+
happened, the filled part of a progress indicator. Pair the fill with the foreground of the same
|
|
293
|
+
meaning.
|
|
294
|
+
|
|
295
|
+
| Meaning | Fill | Foreground |
|
|
296
|
+
|---|---|---|
|
|
297
|
+
| No particular outcome | `StatusNeutral` | `FgPrimary` |
|
|
298
|
+
| Success | `StatusSuccess1`–`3` | `FgSuccess` |
|
|
299
|
+
| Information, in progress, a notice | `StatusInfo1`–`3` | `FgInfo` |
|
|
300
|
+
| Caution | `StatusWarning` | `FgWarning1` on an icon or helper, `FgWarning2` on a filled status |
|
|
301
|
+
| Attention | `StatusHighlight` | `FgHighlight` |
|
|
302
|
+
| Failure or a blocking error | `StatusDanger1Static`, `StatusDanger2`–`4` | `FgDanger1` at rest, `FgDanger2` on the fill |
|
|
303
|
+
| A product or feature callout | `StatusFeature` | `FgFeature` |
|
|
304
|
+
| A status that needs the extra hue | `StatusMisc` | `FgMisc` |
|
|
305
|
+
|
|
306
|
+
**Pill backgrounds are always faded.** A filled status pill takes its Status fill through `withAlpha`
|
|
307
|
+
with an opacity token, exactly as PDS `StatusIndicator` does; only `StatusNeutral` is used solid.
|
|
308
|
+
Without the fade, a pale fill and its pale foreground lose contrast in dark mode. The pairs are in
|
|
309
|
+
the status-pill recipe under Common recipes.
|
|
310
|
+
|
|
311
|
+
Solid Status colors are for:
|
|
312
|
+
- **Toast fills:** a low step across the whole toast (`StatusSuccess1`, `StatusInfo1`,
|
|
313
|
+
`StatusDanger2`), with `FgPrimaryStatic` for the message.
|
|
314
|
+
- **Marks and progress:** the high end (`StatusSuccess3`, `StatusInfo3`, `StatusDanger4`) for a
|
|
315
|
+
progress fill, mark or icon that has to read as that hue on its own.
|
|
316
|
+
|
|
317
|
+
`StatusDanger1Static` is the light danger wash that stays light in both themes. The other danger
|
|
318
|
+
steps change with the theme.
|
|
319
|
+
|
|
320
|
+
A status with no fill keeps `FgPrimary` for the label and uses the meaning's foreground token for the
|
|
321
|
+
icon alone.
|
|
322
|
+
|
|
323
|
+
#### Opacity
|
|
324
|
+
|
|
325
|
+
Opacity tokens are percentages (`CssPercentage`), not colors. Use them to tint a semantic color or to
|
|
326
|
+
fade a disabled control. Don't use them in place of a hover or active token that already exists.
|
|
327
|
+
|
|
328
|
+
| Token | Light | Dark | When |
|
|
329
|
+
|---|---|---|---|
|
|
330
|
+
| `Opacity65` | 65% | 65% | A disabled control, or a disabled label on its own fill. Behaves the same in both modes |
|
|
331
|
+
| `Opacity25` | 100% | 25% | Menu and selection states: a selected menu item, list option, row or pill (`SurfaceAccent` + `Opacity25`), a danger menu item on hover (`FeedbackDanger1` + `Opacity25`); also info and mild emphasis, including the info and feature status pills |
|
|
332
|
+
| `Opacity15` | 100% | 15% | A light wash of success, warning, danger, or attention: banners, and the success, warning, danger, attention and misc status pills |
|
|
333
|
+
|
|
334
|
+
Only `Opacity65` is a real fade in both modes. `Opacity15` and `Opacity25` take effect only in dark
|
|
335
|
+
mode, where they turn a saturated fill into a wash so text on it keeps its contrast. In light mode
|
|
336
|
+
they resolve to `100%`, so the underlying token shows solid — the light tokens are already pale
|
|
337
|
+
(PX-1838 tracks whether that should change). Pick the base token for how it should look in light
|
|
338
|
+
mode, and the opacity for how it should calm down in dark.
|
|
339
|
+
|
|
340
|
+
Menus: a neutral row on hover is `SurfaceHover` with no opacity; the selected or active row is
|
|
341
|
+
`SurfaceAccent` at `Opacity25`. PDS `Menu`, `ListBox`, `Select` and the menu item mixin all do this.
|
|
342
|
+
|
|
343
|
+
Pass a percentage fallback (`semanticColor(theme, 'Opacity65', '65%')`). For the CSS `opacity`
|
|
344
|
+
property, convert with `opacityOf` from `@persona/design-system/lib/color`.
|
|
345
|
+
|
|
346
|
+
### Common recipes
|
|
347
|
+
|
|
348
|
+
**A section of a page.**
|
|
349
|
+
- Canvas `SurfacePage`; the section `SurfacePrimary`.
|
|
350
|
+
- Title and values `FgPrimary`; descriptions `FgSecondary`.
|
|
351
|
+
- Sections separated by `BorderDivider`.
|
|
352
|
+
- A nested header strip inside the section is `SurfaceSecondary`.
|
|
353
|
+
|
|
354
|
+
**A card or metric tile.** Use or match PDS `Tile`:
|
|
355
|
+
- fill `SurfacePrimary`, border `BorderDivider`
|
|
356
|
+
- title and value `FgPrimary`, small labels `FgSecondary`
|
|
357
|
+
- never the fixed `Color.BorderHairline`
|
|
358
|
+
|
|
359
|
+
**A modal.** Use PDS `Modal`. It is an elevated `Card` with:
|
|
360
|
+
- `SurfacePrimary` fill and a shadow, no outer border
|
|
361
|
+
- `BorderSubtle` header divider (none when it has tabs) and footer divider
|
|
362
|
+
- title `Heading size='sm'` in `FgPrimary`
|
|
363
|
+
- close button `Button variant='text'`
|
|
364
|
+
- footer buttons right-aligned in the footer slot
|
|
365
|
+
- body scrolling with `semanticScrollbar`
|
|
366
|
+
|
|
367
|
+
If the modal can't move to PDS `Modal` (a multi-step wizard, for example), keep its frame, apply
|
|
368
|
+
exactly those tokens to this one modal, and leave the shared frame alone. Menus inside it portal into
|
|
369
|
+
the modal's container.
|
|
370
|
+
|
|
371
|
+
**A menu, dropdown, popover or flyout.**
|
|
372
|
+
- `SurfaceElevated`, no added border.
|
|
373
|
+
- Rows hover with `SurfaceHover`; the selected row follows the selected-row recipe.
|
|
374
|
+
- Themed scrollbar.
|
|
375
|
+
|
|
376
|
+
**A command palette or search modal.**
|
|
377
|
+
- Like a modal, with no border.
|
|
378
|
+
- The search box is transparent with no border, separated from results by a `BorderDivider` rule.
|
|
379
|
+
- If pointing at a result already selects it, the selected style is enough; don't add a separate
|
|
380
|
+
hover color.
|
|
381
|
+
|
|
382
|
+
**A side panel.**
|
|
383
|
+
- `SurfaceElevated` panel with no outer border.
|
|
384
|
+
- `BorderDivider` under the header and between items; items hover with `SurfaceHover`.
|
|
385
|
+
- Per-item quick actions use the inverse button; panel-level actions use default button styling.
|
|
386
|
+
- Themed scrollbar.
|
|
387
|
+
|
|
388
|
+
**Navigation.**
|
|
389
|
+
- Labels, icons, environment names and chevrons `FgPrimary`.
|
|
390
|
+
- Current item: `FgAccent` on the label and icon, with `SurfaceAccent` at `Opacity25`.
|
|
391
|
+
- Hover `SurfaceHover`; flyouts follow the menu recipe.
|
|
392
|
+
- Themed scrollbar. Status dots keep their own color.
|
|
393
|
+
|
|
394
|
+
**A timeline.**
|
|
395
|
+
- Rail line `BorderDivider`.
|
|
396
|
+
- The event-type filter is a PDS `Combobox`.
|
|
397
|
+
|
|
398
|
+
**A primary action and a quiet one.**
|
|
399
|
+
- Primary: `ActionPrimary` and `FgInverse`.
|
|
400
|
+
- Quiet: `ActionNeutral` and `FgPrimary`, or an outline (`BorderDefault`, then `ActionOutlineHover` /
|
|
401
|
+
`ActionOutlineActive`).
|
|
402
|
+
|
|
403
|
+
**A form.**
|
|
404
|
+
- Use PDS inputs.
|
|
405
|
+
- Label `FgPrimary`, field `InputSurfaceDefault` and `InputBorderDefault`, placeholder `FgSecondary`.
|
|
406
|
+
- An error swaps the border to `BorderDanger` and the message to `FgDanger1`.
|
|
407
|
+
- A warning uses `BorderWarning` and `FgWarning1`.
|
|
408
|
+
|
|
409
|
+
**A banner.**
|
|
410
|
+
- Feedback at step 1, with the hue chosen from the meaning (info, success, warning, danger), with
|
|
411
|
+
`Opacity15` or `Opacity25` (the step shows solid in light, as a wash in dark).
|
|
412
|
+
- Text stays `FgPrimary`.
|
|
413
|
+
|
|
414
|
+
**A tag or sticker.**
|
|
415
|
+
- Feedback at step 2 in the category's hue.
|
|
416
|
+
- Text `FgPrimaryStatic` on a colored tag, `FgPrimary` on a neutral one.
|
|
417
|
+
|
|
418
|
+
**A status pill (a record's state).** Use or match PDS `StatusIndicator`: the Status fill faded with
|
|
419
|
+
`withAlpha`, and the meaning's foreground for the label and icon.
|
|
420
|
+
|
|
421
|
+
| Meaning | Background | Label and icon |
|
|
422
|
+
|---|---|---|
|
|
423
|
+
| Neutral | `StatusNeutral` (solid) | `FgPrimary` |
|
|
424
|
+
| Success | `StatusSuccess2` + `Opacity15` | `FgSuccess` |
|
|
425
|
+
| Danger | `StatusDanger3` + `Opacity15` | `FgDanger2` |
|
|
426
|
+
| Warning | `StatusWarning` + `Opacity15` | `FgWarning2` |
|
|
427
|
+
| Attention | `StatusHighlight` + `Opacity15` | `FgHighlight` |
|
|
428
|
+
| Misc | `StatusMisc` + `Opacity15` | `FgMisc` |
|
|
429
|
+
| Info | `StatusInfo2` + `Opacity25` | `FgInfo` |
|
|
430
|
+
| Feature | `StatusFeature` + `Opacity25` | `FgFeature` |
|
|
431
|
+
|
|
432
|
+
The fade shows only in dark mode; in light mode the opacity tokens are `100%`, so the fill is solid
|
|
433
|
+
(see Opacity).
|
|
434
|
+
|
|
435
|
+
**A selected row.**
|
|
436
|
+
- Hover is `SurfaceHover`.
|
|
437
|
+
- Selected is `SurfaceAccent` at `Opacity25`, with `FgAccent` on the label or `BorderAccent`
|
|
438
|
+
on the edge that marks the selection.
|
|
439
|
+
|
|
440
|
+
**An empty state.**
|
|
441
|
+
- Fill `SurfaceSecondary`, message `FgSecondary`.
|
|
442
|
+
- When the empty state comes from a shared component, set it at your call site; don't change the
|
|
443
|
+
shared component without listing every screen it reaches.
|
|
444
|
+
|
|
445
|
+
**Help text on a label.**
|
|
446
|
+
- Use PDS `TextUnderlineTooltip` (dashed underline) on the label instead of a separate help icon.
|
|
447
|
+
- Write plain, left-aligned text with no bullets, in a "Label: text" form.
|
|
448
|
+
- Near the side nav or a screen edge, use `align="start"` so it isn't clipped.
|
|
449
|
+
|
|
450
|
+
### Before you hand it over
|
|
451
|
+
|
|
452
|
+
- PDS components are used wherever a one-for-one match exists. Where none exists, the component uses
|
|
453
|
+
its PDS equivalent's tokens.
|
|
454
|
+
- Every changed color uses a semantic token, with today's color as the fallback. No raw palette
|
|
455
|
+
(`Color.Core*`, `Color.Primary*`, `Color.Text*` …) or old theme value is the painted color.
|
|
456
|
+
- No new borders or outlines, except the frame a newly adopted PDS component brings (listed as a
|
|
457
|
+
visible change).
|
|
458
|
+
- Nothing is left on a fixed palette color or the browser default: icons, chevrons, bare buttons,
|
|
459
|
+
inputs, scrollbars, dividers, empty states, hover.
|
|
460
|
+
- Icons inside buttons have no color overrides.
|
|
461
|
+
- Dark-mode contrast was checked for text, icons and disabled states.
|
|
462
|
+
- Any visible light-mode change is listed with its old and new color, so it can be approved.
|
|
463
|
+
- Shared components that changed are listed with every screen they reach. Mirrored code wasn't
|
|
464
|
+
edited.
|
|
465
|
+
- Tests cover light, dark, and a theme without semantic tokens; washes are checked with their opacity.
|
|
466
|
+
- If copy moved or changed, the translation files were regenerated, not hand-edited, and existing
|
|
467
|
+
translations carried over.
|
|
468
|
+
- One area per PR, with no unrelated changes.
|
|
469
|
+
|
|
470
|
+
### Palette (fallbacks only)
|
|
471
|
+
|
|
472
|
+
`Color` from `@persona/design-tokens` is the fixed palette. Its only place in feature code is the
|
|
473
|
+
`semanticColor` fallback (today's color, so themes without semantic tokens are unchanged), and
|
|
474
|
+
`withAlpha` / `opaqueOver` inputs.
|
|
475
|
+
|
|
476
|
+
| Group | Names |
|
|
477
|
+
|---|---|
|
|
478
|
+
| Core shades, 50 (lightest) to 1100 (darkest) | `CorePurple*`, `CoreRed*`, `CoreOrange*`, `CoreYellow*`, `CoreGreen*`, `CoreTeal*`, `CoreBlue*`, `CoreSlate*` (e.g. `CorePurple50` #F4F5FF … `CorePurple1100` #010334) |
|
|
479
|
+
| Brand primaries | `PrimaryBlack`, `PrimaryWhite`, `PrimaryPurple` (#3F48FD), `PrimaryRed`, `PrimaryOrange`, `PrimaryYellow`, `PrimaryGreen`, `PrimaryTeal`, `PrimaryBlue` |
|
|
480
|
+
| Text | `TextPrimary` (#313131), `TextSecondary` (#707070), `TextInverse`, `TextActive` (#3F48FD), `TextDanger` (#B81F0E), `TextDisabled` (#BDBDBD), `TextStatusIndicator*` |
|
|
481
|
+
| Backgrounds | `BackgroundPrimary` (#FFFFFF), `BackgroundSecondary` (#F5F5F6), `BackgroundButton*`, `BackgroundInput*`, `BackgroundLabel*`, `BackgroundStatusIndicator*` |
|
|
482
|
+
| Borders | `BorderHairline` (#F1F1F2), `BorderDivider` (#E2E2E3), `BorderFocus` (#2B7FFD), `BorderInput*`, `BorderIcon*` |
|
|
483
|
+
|
|
484
|
+
Several names share one hex (`CorePurple600`, `PrimaryPurple`, `BackgroundButtonPrimary` and
|
|
485
|
+
`TextActive` are all #3F48FD); use the one that matches what the code painted before.
|
|
486
|
+
|
|
149
487
|
## Spacing
|
|
150
488
|
|
|
151
489
|
`Spacing` is an enum of fixed gaps from `0` to `56px` (`Spacing[0]`–`Spacing[9]`).
|