@persona/design-system 0.7.2 → 0.8.1
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 +273 -0
- package/dist/Accordion.d.mts +1 -1
- package/dist/AccordionItem.d.mts +1 -1
- package/dist/{Action-Cyo6KCsS.d.mts → Action-BwYS9qaG.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +4 -2
- package/dist/AdvancedFilterRulesPopover.d.mts +5 -3
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +3 -3
- package/dist/{Badge-BD0Ut46g.mjs → Badge-D-5tbZDw.mjs} +2 -2
- package/dist/{Badge-BD0Ut46g.mjs.map → Badge-D-5tbZDw.mjs.map} +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/{Breadcrumb-CYXkrKXl.d.mts → Breadcrumb-BADja8tn.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-CrXfUK1V.mjs → Breadcrumbs-CNpM0aXm.mjs} +5 -5
- package/dist/{Breadcrumbs-CrXfUK1V.mjs.map → Breadcrumbs-CNpM0aXm.mjs.map} +1 -1
- package/dist/{Breadcrumbs-CP7eUYUy.d.mts → Breadcrumbs-CxP7ktfM.d.mts} +2 -2
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-Dhiund3f.d.mts → Button-CnswHEJ2.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/{Calendar-CMeIZ0BO.d.mts → Calendar-Cke5IlMI.d.mts} +1 -1
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-DCYB_mtR.d.mts → Card-Bp6L08H4.d.mts} +3 -3
- package/dist/Card.d.mts +1 -1
- package/dist/{CardV2-M3o4BELp.mjs → CardV2-DEW6mw_o.mjs} +9 -7
- package/dist/{CardV2-M3o4BELp.mjs.map → CardV2-DEW6mw_o.mjs.map} +1 -1
- package/dist/{Checkbox-fWj7GkBl.d.mts → Checkbox-DUXws1Os.d.mts} +1 -1
- package/dist/{Checkbox-AjL7ucoR.mjs → Checkbox-GibG2pg5.mjs} +3 -3
- package/dist/{Checkbox-AjL7ucoR.mjs.map → Checkbox-GibG2pg5.mjs.map} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField-DzdOYIjo.d.mts +25 -0
- package/dist/CheckboxGroupField.d.mts +2 -25
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-C2b9u955.mjs → Combobox-CCDoNF9Y.mjs} +23 -10
- package/dist/Combobox-CCDoNF9Y.mjs.map +1 -0
- package/dist/{Combobox-CC-Osr57.d.mts → Combobox-CnxmKUQf.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-Evo0FRxP.d.mts → ComboboxBase-CtNrsPO9.d.mts} +8 -5
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-CvAc0FT3.d.mts → ComboboxMultiSelect-CMH6iVu4.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-CBm7x0oh.d.mts → ComboboxSingleSelect-BLPbLmMY.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-D_2qMK4y.d.mts → CompactBar-BwKIIlWz.d.mts} +4 -4
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs → ConfigFormGroup-BQXN2Pgj.mjs} +2 -2
- package/dist/{ConfigFormGroup-Cz7GeTYd.mjs.map → ConfigFormGroup-BQXN2Pgj.mjs.map} +1 -1
- package/dist/{ControlBar-B7j9sOr9.d.mts → ControlBar-BJUY6GOX.d.mts} +7 -2
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable.d.mts +4 -3
- package/dist/{DateField-BamAk9_w.d.mts → DateField-BojOHfrv.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-C3xNSkPG.d.mts → DatePicker-BHVx_i_F.d.mts} +2 -2
- package/dist/{DatePicker-IgiUI3Wj.mjs → DatePicker-LPIJrc0n.mjs} +77 -42
- package/dist/DatePicker-LPIJrc0n.mjs.map +1 -0
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-C4QKMo2a.d.mts → DateRangePicker-CelDK_44.d.mts} +3 -3
- package/dist/DateRangePicker.d.mts +1 -1
- package/dist/DateRangeValueControl.d.mts +5 -3
- package/dist/DateValueControl.d.mts +8 -5
- package/dist/{DropdownButton-BWiXLMfD.mjs → DropdownButton-i5Dmxiq1.mjs} +3 -3
- package/dist/{DropdownButton-BWiXLMfD.mjs.map → DropdownButton-i5Dmxiq1.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-DL5ye-0m.d.mts → DropdownMenu-YtLxcNWt.d.mts} +2 -2
- package/dist/{DropdownMenu-CuKSNxc9.mjs → DropdownMenu-j8NWbAvM.mjs} +7 -2
- package/dist/DropdownMenu-j8NWbAvM.mjs.map +1 -0
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-BA0-m_Wp.d.mts → ErrorProps-6dRdJ4QQ.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-bKxrF1gC.d.mts → FieldRegistry-DqO8HiYb.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-DhlBLWxw.d.mts → FilterBar-CpAA2Ozk.d.mts} +11 -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 +8 -2
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/{FormControl-D5xyPkST.d.mts → FormControl-B-s6G9mp.d.mts} +2 -2
- package/dist/{FormControl-DnfZTli_.mjs → FormControl-bDxFF0hl.mjs} +3 -3
- package/dist/{FormControl-DnfZTli_.mjs.map → FormControl-bDxFF0hl.mjs.map} +1 -1
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +1 -1
- package/dist/{FormField-BJZUj6jg.d.mts → FormField-D3k-f3-f.d.mts} +2 -2
- package/dist/{FormField-74TPV8-8.mjs → FormField-DbcqNcx2.mjs} +16 -16
- package/dist/{FormField-74TPV8-8.mjs.map → FormField-DbcqNcx2.mjs.map} +1 -1
- package/dist/FormField.d.mts +1 -1
- package/dist/{Grid-DOyYYsvk.mjs → Grid-CeH9E5Ai.mjs} +1 -1
- package/dist/{Grid-DOyYYsvk.mjs.map → Grid-CeH9E5Ai.mjs.map} +1 -1
- package/dist/{Header-BqEKkEp5.d.mts → Header-2K49LYkR.d.mts} +1 -1
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-mOVSuEB8.d.mts → HelperTooltip-CTHUM2nC.d.mts} +2 -2
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/HighlightedText.d.mts +61 -0
- package/dist/{HoverCopyableField-CN3gl0ny.mjs → HoverCopyableField-BARZLhfO.mjs} +3 -3
- package/dist/{HoverCopyableField-CN3gl0ny.mjs.map → HoverCopyableField-BARZLhfO.mjs.map} +1 -1
- package/dist/{IconButton-CqTPMhjV.mjs → IconButton-BHFCjvzs.mjs} +1 -1
- package/dist/{IconButton-CqTPMhjV.mjs.map → IconButton-BHFCjvzs.mjs.map} +1 -1
- package/dist/{IconButton-CjPFhpVG.d.mts → IconButton-D5hx405r.d.mts} +2 -2
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +1 -1
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-C_3QwAAt.mjs → Input-BQN97Hzm.mjs} +7 -3
- package/dist/Input-BQN97Hzm.mjs.map +1 -0
- package/dist/{Input-CZ_6KWDN.d.mts → Input-BQbcIiVj.d.mts} +3 -3
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-lag6BM5h.d.mts → InputProps-DT1ZReZS.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/Link-Bzm4AL5J.mjs +79 -0
- package/dist/Link-Bzm4AL5J.mjs.map +1 -0
- package/dist/Link.d.mts +1 -1
- package/dist/{ListBox-nYAdYVQx.d.mts → ListBox-CdqRwBvA.d.mts} +7 -7
- package/dist/{ListBox-D4j4LCT3.mjs → ListBox-DOqN9DNl.mjs} +33 -16
- package/dist/ListBox-DOqN9DNl.mjs.map +1 -0
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField-Bl2WLplO.d.mts +51 -0
- package/dist/ListBoxField.d.mts +2 -51
- package/dist/{LoadingShimmer-Dizk2sZu.mjs → LoadingShimmer-Ds7rvIUN.mjs} +13 -8
- package/dist/LoadingShimmer-Ds7rvIUN.mjs.map +1 -0
- package/dist/LoadingShimmer.d.mts +1 -1
- package/dist/{LogicRow-k4ZPtjN0.d.mts → LogicRow-CwMAn1sh.d.mts} +3 -3
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +1 -1
- package/dist/{Menu-Bu7-KBhp.d.mts → Menu-CUN9bmc1.d.mts} +3 -3
- package/dist/{Menu-Cd6oxjAe.mjs → Menu-DjW2b3Wk.mjs} +1 -1
- package/dist/{Menu-Cd6oxjAe.mjs.map → Menu-DjW2b3Wk.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-CO58jrNF.mjs → MiddleTruncatedText-DoTyfMem.mjs} +2 -2
- package/dist/{MiddleTruncatedText-CO58jrNF.mjs.map → MiddleTruncatedText-DoTyfMem.mjs.map} +1 -1
- package/dist/{Modal-Dwq-QBw_.d.mts → Modal-CGXJGrKg.d.mts} +2 -2
- package/dist/{Modal-BN0K8QXi.mjs → Modal-DHLPK65-.mjs} +6 -4
- package/dist/Modal-DHLPK65-.mjs.map +1 -0
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-BTtm3hRQ.mjs → PageHeader-eI4RM_uL.mjs} +2 -2
- package/dist/{PageHeader-BTtm3hRQ.mjs.map → PageHeader-eI4RM_uL.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +1 -1
- package/dist/{PageSelector-CeGC84N1.d.mts → PageSelector-kAfYxEky.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-CPd4mSnw.mjs → Pagination-6BDOn9bX.mjs} +6 -6
- package/dist/Pagination-6BDOn9bX.mjs.map +1 -0
- package/dist/{Pagination-H-CcXrCD.d.mts → Pagination-Bhr7xyd2.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-Dz4woKd8.mjs → Pii-DhL1gblz.mjs} +2 -2
- package/dist/{Pii-Dz4woKd8.mjs.map → Pii-DhL1gblz.mjs.map} +1 -1
- package/dist/{PillShell-BQC-k7Rl.d.mts → PillShell-CVJL1k5I.d.mts} +2 -2
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-opVa9Xhc.mjs → Popover-CbYaWrAy.mjs} +15 -2
- package/dist/Popover-CbYaWrAy.mjs.map +1 -0
- package/dist/{ProgressIndicator-3A4Aqci6.mjs → ProgressIndicator-BpF3XLn3.mjs} +3 -3
- package/dist/ProgressIndicator-BpF3XLn3.mjs.map +1 -0
- package/dist/{ProgressIndicator-DbOLOaxJ.d.mts → ProgressIndicator-CYyM6OSx.d.mts} +1 -1
- package/dist/ProgressIndicator.d.mts +1 -1
- package/dist/{PseudoClassProps-CHtBNv8B.d.mts → PseudoClassProps-BOVN6Etr.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-Cxt89w8s.mjs → Radio-DPaX-9LH.mjs} +2 -2
- package/dist/{Radio-Cxt89w8s.mjs.map → Radio-DPaX-9LH.mjs.map} +1 -1
- package/dist/{RadioGroup-BjrfVPZQ.d.mts → RadioGroup-C0l0pdEt.d.mts} +1 -1
- package/dist/{RadioGroup-B6Cg1kdm.mjs → RadioGroup-D7f4m2Uc.mjs} +2 -2
- package/dist/{RadioGroup-B6Cg1kdm.mjs.map → RadioGroup-D7f4m2Uc.mjs.map} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/{RangeCalendar-CPnLaM-J.d.mts → RangeCalendar-BJn9V3iN.d.mts} +2 -2
- package/dist/RangeCalendar.d.mts +1 -1
- package/dist/RangeCalendarPresets.d.mts +1 -1
- package/dist/{RouterContext-CbvHIl4K.d.mts → RouterContext-BLrzYlJ_.d.mts} +2 -2
- package/dist/RouterContext.d.mts +1 -1
- package/dist/{RouterLink-v9AG9fYa.d.mts → RouterLink-BHXjhqps.d.mts} +2 -2
- package/dist/RouterLink.d.mts +1 -1
- package/dist/RuleEditorFields.d.mts +4 -2
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-CIjwmT8R.d.mts → SearchInput-Buh8LdIL.d.mts} +2 -2
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-Crr_aHAs.d.mts → SegmentedControl-B9qLyIIW.d.mts} +1 -1
- package/dist/{SegmentedControl-BcwfLuHA.mjs → SegmentedControl-zEvBtVj0.mjs} +3 -3
- package/dist/SegmentedControl-zEvBtVj0.mjs.map +1 -0
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-BstCz8P1.mjs → Select-BoZuM_e9.mjs} +10 -8
- package/dist/Select-BoZuM_e9.mjs.map +1 -0
- package/dist/{Select-CJQeuCiF.d.mts → Select-Cv_9PLOt.d.mts} +3 -3
- package/dist/Select.d.mts +1 -1
- package/dist/SmartTextInput.d.mts +107 -0
- package/dist/SmartTextInputCodeDialog.d.mts +18 -0
- package/dist/SmartTextInputField.d.mts +25 -0
- package/dist/SmartTextInputFunctionDialog.d.mts +37 -0
- package/dist/SmartTextInputListbox.d.mts +26 -0
- package/dist/SmartTextInputPopover.d.mts +45 -0
- package/dist/{Spinner-DplDSBqf.mjs → Spinner-CarSRiBF.mjs} +1 -1
- package/dist/{Spinner-DplDSBqf.mjs.map → Spinner-CarSRiBF.mjs.map} +1 -1
- package/dist/{Stack-ChsImaEY.mjs → Stack-CEPzs4Pb.mjs} +1 -1
- package/dist/{Stack-ChsImaEY.mjs.map → Stack-CEPzs4Pb.mjs.map} +1 -1
- package/dist/{Stack-RVptVTVi.d.mts → Stack-XzBzPvSV.d.mts} +1 -1
- package/dist/Stack.d.mts +1 -1
- package/dist/StatusIndicator-bEnMWV_S.mjs +315 -0
- package/dist/StatusIndicator-bEnMWV_S.mjs.map +1 -0
- package/dist/{Sticker-C3Eb13OQ.mjs → Sticker-B-fU8lgu.mjs} +5 -8
- package/dist/Sticker-B-fU8lgu.mjs.map +1 -0
- package/dist/{Sticker-BVX38LKi.d.mts → Sticker-DGfNuxUK.d.mts} +4 -4
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/Tab.d.mts +1 -1
- package/dist/{TabBar-BepWbJHz.mjs → TabBar-BSl5v5aa.mjs} +4 -7
- package/dist/{TabBar-BepWbJHz.mjs.map → TabBar-BSl5v5aa.mjs.map} +1 -1
- package/dist/{Table-DFiSWroB.d.mts → Table-B2V5tlfA.d.mts} +1 -1
- package/dist/{Table-B1gRr2XT.mjs → Table-msXj0glu.mjs} +22 -3
- package/dist/Table-msXj0glu.mjs.map +1 -0
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-Di9JYHDN.d.mts → TableBody-SlQe4Jyp.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-DAQ3Plqx.mjs → TableBox-CF1_Fk0j.mjs} +22 -17
- package/dist/TableBox-CF1_Fk0j.mjs.map +1 -0
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-D6h1X5ph.d.mts → TableBoxCell-BRhGeUnO.d.mts} +6 -6
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField-Cq9M1upV.d.mts +103 -0
- package/dist/TableBoxField.d.mts +2 -103
- package/dist/{TableBoxRow-C6l6J4mq.d.mts → TableBoxRow-DZzRYoID.d.mts} +3 -3
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-CsLN1b1J.d.mts → TableBoxRowActions-4-j3flJq.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableCell-WSDXw79Q.d.mts → TableCell-D5Sqb6iO.d.mts} +2 -2
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-cswMgBAr.d.mts → TableControls-B-LakH-8.d.mts} +4 -3
- package/dist/{TableControls-BxuPCUQS.mjs → TableControls-CqW_nyBY.mjs} +286 -78
- package/dist/TableControls-CqW_nyBY.mjs.map +1 -0
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-Cbh8wear.d.mts → TableControlsContext-Dh1YVmBM.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-CkL1fEg2.d.mts → TableHead-BCrVa0BY.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-K9Ry6YqO.d.mts → TableHeaderCell-CcEkDozs.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-CYRGIFEl.d.mts → TableLayout-Bhj1QBBz.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-DMHlo1eg.d.mts → TableRow-Cy1y7b9S.d.mts} +2 -2
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-BRbOcVNc.d.mts → TableViewConfigurationDropdown-BzygLtGm.d.mts} +2 -2
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-_LtE-PRY.mjs → TechnicalSticker-B6T7cHHc.mjs} +2 -2
- package/dist/{TechnicalSticker-_LtE-PRY.mjs.map → TechnicalSticker-B6T7cHHc.mjs.map} +1 -1
- package/dist/{Text-B69gp3X_.d.mts → Text-BVGJ-Nlw.d.mts} +3 -3
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-Cjsdl07-.d.mts → TextArea-Bzj593VO.d.mts} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs → TextArea-C1CmFRiz.mjs} +2 -2
- package/dist/{TextArea-CcxltuBh.mjs.map → TextArea-C1CmFRiz.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-DDzKLCeX.d.mts → TextUnderlineTooltip-CgFmtqF_.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-DWbJOwf3.mjs → Toggle-CntyMUPJ.mjs} +9 -4
- package/dist/Toggle-CntyMUPJ.mjs.map +1 -0
- package/dist/{Toggle-B5sSdb_q.d.mts → Toggle-bSu1xAaq.d.mts} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-x1pFf-Mj.d.mts → Tooltip-Duw4Fz1t.d.mts} +2 -2
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-BE8FuEQm.d.mts → TruncatedText-CbTpX_R1.d.mts} +1 -1
- package/dist/VersionHistory.d.mts +23 -0
- package/dist/VersionHistoryItem-D05QYej7.d.mts +54 -0
- package/dist/VersionHistoryItem.d.mts +2 -0
- package/dist/WizardModal.d.mts +3 -3
- package/dist/{accordionTitleTypography-BYhjSN9t.d.mts → accordionTitleTypography-Leehcmb3.d.mts} +2 -2
- package/dist/accordionTitleTypography.d.mts +1 -1
- package/dist/assertNever.d.mts +5 -0
- package/dist/chainTypes-D8SGRGba.d.mts +17 -0
- package/dist/{codec-BcgsGCHE.d.mts → codec-Vsztf4fe.d.mts} +2 -2
- package/dist/codec.d.mts +1 -1
- package/dist/{color-LH7zKfKo.d.mts → color-CrlF3pba.d.mts} +9 -4
- package/dist/components/Accordion/index.d.mts +1 -1
- package/dist/components/Accordion/index.mjs +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 +5 -3
- package/dist/components/BottomPanel/index.mjs.map +1 -1
- 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 +3 -1
- package/dist/components/CodeHighlight/index.mjs.map +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 +19 -19
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.mjs +27 -16
- package/dist/components/DataTable/index.mjs.map +1 -1
- package/dist/components/DataTable/types.d.mts +2 -2
- 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 +10 -7
- package/dist/components/FloatingPanel/index.mjs.map +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 +6 -6
- 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 +13 -9
- 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/Link/index.mjs +1 -78
- 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.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/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +1 -2
- package/dist/components/ProgressBar/index.mjs.map +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 +10 -7
- package/dist/components/RightPanel/index.mjs.map +1 -1
- 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/Slider/index.mjs +1 -1
- package/dist/components/Slider/index.mjs.map +1 -1
- package/dist/components/SmartTextInput/index.d.mts +5 -0
- package/dist/components/SmartTextInput/index.mjs +2035 -0
- package/dist/components/SmartTextInput/index.mjs.map +1 -0
- package/dist/components/SmartTextInput/parser/method-chain/parser.mjs +1 -1
- package/dist/components/SmartTextInput/parser/method-chain/types.d.mts +2 -105
- package/dist/components/SmartTextInput/parser/smart-text/parser.mjs +1 -1
- package/dist/components/SmartTextInput/parser/smart-text/types.d.mts +3 -72
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/Stack/index.mjs +1 -1
- package/dist/components/StatusIndicator/index.mjs +1 -314
- 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 +2 -2
- package/dist/components/Toast/index.mjs +2 -2
- package/dist/components/Toast/index.mjs.map +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 +3 -0
- package/dist/components/VersionHistory/index.mjs +389 -0
- package/dist/components/VersionHistory/index.mjs.map +1 -0
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-BpwnTzcv.d.mts → constants-CQUCM6__.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/{createPath-Bst12Uxr.d.mts → createPath-Bq7wYGt_.d.mts} +2 -2
- package/dist/createPath.d.mts +1 -1
- package/dist/{date-filter-CZeChs9T.mjs → date-filter-D6IfCkwp.mjs} +1 -1
- package/dist/{date-filter-CZeChs9T.mjs.map → date-filter-D6IfCkwp.mjs.map} +1 -1
- package/dist/{date-range-rule-value-C4ir2Y8W.d.mts → date-range-rule-value-DVhMQP4-.d.mts} +2 -2
- package/dist/date-range-rule-value.d.mts +1 -1
- package/dist/{date-rule-intent-gKmuxMVA.d.mts → date-rule-intent-BwQ6OTVD.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-BOpH6pBm.d.mts → filter-size-context-BjTzcZwZ.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/format-date-value.d.mts +5 -0
- package/dist/helpers.d.mts +1 -1
- package/dist/{index-C2-PBfN3.d.mts → index-BFIFjR7Q.d.mts} +2 -2
- package/dist/{index-BXdrzR0c.d.mts → index-BhDvrF4l.d.mts} +4 -4
- package/dist/{index-c0aXmZV9.d.mts → index-C-xpEL8b.d.mts} +2 -2
- package/dist/index-irNqT1qQ2.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 +14 -14
- package/dist/{input-DVJhMlxU.d.mts → input-DpHBIUpP.d.mts} +3 -3
- package/dist/inputFields-BVDurw3L.d.mts +71 -0
- package/dist/inputFields.d.mts +2 -71
- package/dist/{intersperse-Bxcrxj2Q.mjs → intersperse-bvY2gibK.mjs} +1 -1
- package/dist/{intersperse-Bxcrxj2Q.mjs.map → intersperse-bvY2gibK.mjs.map} +1 -1
- package/dist/{jsonSchema-DmdZYC4a.d.mts → jsonSchema-Bl-qzgrr.d.mts} +34 -2
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/PDSProvider.d.mts +2 -2
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedText.mjs +1 -1
- package/dist/lib/TruncatedText.mjs.map +1 -1
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs.map +1 -1
- package/dist/lib/chainTypes.d.mts +2 -0
- package/dist/lib/chainTypes.mjs +0 -0
- package/dist/lib/color.d.mts +2 -2
- package/dist/lib/color.mjs +18 -11
- package/dist/lib/color.mjs.map +1 -1
- package/dist/lib/customFunctionSchema.d.mts +49 -0
- package/dist/lib/customFunctionSchema.mjs +299 -0
- package/dist/lib/customFunctionSchema.mjs.map +1 -0
- package/dist/lib/date-filter/index.d.mts +2 -2
- package/dist/lib/date-filter/index.mjs +1 -1
- package/dist/lib/jsonSchema.d.mts +2 -2
- package/dist/lib/jsonSchema.mjs +26 -1
- package/dist/lib/jsonSchema.mjs.map +1 -1
- package/dist/lib/jsonSchemaType.d.mts +7 -0
- package/dist/lib/jsonSchemaType.mjs +31 -0
- package/dist/lib/jsonSchemaType.mjs.map +1 -0
- package/dist/lib/letPointerDownReachDocument.d.mts +22 -0
- package/dist/lib/letPointerDownReachDocument.mjs +25 -0
- package/dist/lib/letPointerDownReachDocument.mjs.map +1 -0
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/methodChain.d.mts +3 -66
- package/dist/lib/methodChain.mjs +1 -238
- package/dist/lib/methodChainNormalize.d.mts +2 -2
- package/dist/lib/methodChainTypes.d.mts +2 -23
- package/dist/lib/objectSchemaTypes.d.mts +1 -1
- package/dist/lib/platformObject.d.mts +38 -0
- package/dist/lib/platformObject.mjs +79 -0
- package/dist/lib/platformObject.mjs.map +1 -0
- 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 +2 -0
- package/dist/lib/schemaOptions.mjs +481 -0
- package/dist/lib/schemaOptions.mjs.map +1 -0
- package/dist/lib/semanticColor.d.mts +1 -1
- package/dist/lib/snakifyPath.d.mts +5 -0
- package/dist/lib/snakifyPath.mjs +11 -0
- package/dist/lib/snakifyPath.mjs.map +1 -0
- package/dist/lib/useChain.d.mts +2 -0
- package/dist/lib/useChain.mjs +2 -0
- package/dist/listbox-options-BjOkovND.d.mts +38 -0
- package/dist/listbox-options.d.mts +2 -0
- package/dist/{message-CKSLIKF0.d.mts → message-w_1-kTDE.d.mts} +1 -1
- package/dist/methodChain-B5vZEOff.d.mts +66 -0
- package/dist/methodChain-L_h8Z8Bx.mjs +241 -0
- package/dist/methodChain-L_h8Z8Bx.mjs.map +1 -0
- package/dist/methodChainTypes-BVkTI8MX.d.mts +23 -0
- 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/input.mjs +6 -14
- package/dist/mixins/input.mjs.map +1 -1
- package/dist/mixins/menuItem.d.mts +2 -2
- package/dist/mixins/scrollbar.d.mts +10 -0
- package/dist/mixins/scrollbar.mjs +31 -0
- package/dist/mixins/scrollbar.mjs.map +1 -0
- package/dist/mixins/text.d.mts +1 -1
- package/dist/{operators-1_jTgYRX.d.mts → operators-BG82-g3M.d.mts} +9 -3
- package/dist/operators.d.mts +2 -2
- package/dist/{palette-CMOEyNPH.d.mts → palette-C8tyI81D.d.mts} +3 -3
- package/dist/palette.d.mts +1 -1
- package/dist/{parser-Kxos6siN.mjs → parser-BeTiVjRs.mjs} +3 -2
- package/dist/{parser-Kxos6siN.mjs.map → parser-BeTiVjRs.mjs.map} +1 -1
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +5 -5
- package/dist/patterns/PageLayout/index.mjs +2 -2
- package/dist/{components → patterns}/WizardModal/index.mjs +5 -5
- package/dist/patterns/WizardModal/index.mjs.map +1 -0
- package/dist/reactRouterFallback.d.mts +1 -1
- package/dist/relative-date-label.d.mts +1 -1
- package/dist/safe-parse.d.mts +23 -0
- package/dist/schemaOptions-DGca6x7E.d.mts +173 -0
- package/dist/{semantic-BXwNUd4a.d.mts → semantic-D1661f_6.d.mts} +2 -2
- package/dist/{semanticColor-Cru2gSys.d.mts → semanticColor-Bg0H3RUL.d.mts} +3 -3
- package/dist/{text-CxIup7HJ.d.mts → text-Iw9DKpbZ.d.mts} +1 -1
- package/dist/{theme-CW6qlONZ.d.mts → theme-BB1B6Wkz.d.mts} +3 -3
- package/dist/theme.d.mts +1 -1
- package/dist/time-range.d.mts +7 -0
- package/dist/tone.d.mts +3 -3
- package/dist/tree.d.mts +9 -0
- package/dist/{types-3iEDsymE.d.mts → types-B0ilOIfE.d.mts} +2 -2
- package/dist/types-BYRTxB0a.d.mts +72 -0
- package/dist/{types-ChkiGhjQ.d.mts → types-CI2bPi02.d.mts} +1 -1
- package/dist/types-Cs6CdZCO.d.mts +83 -0
- package/dist/{types-B-stjYNc.d.mts → types-D1DijcJv.d.mts} +1 -1
- package/dist/{types-YojUycQK.d.mts → types-DZTbvdpO.d.mts} +1 -1
- package/dist/{types-g-aqbnek.d.mts → types-DdTu747j.d.mts} +1 -1
- package/dist/{types-BEjWTkZV.d.mts → types-Dy3lZv9z.d.mts} +7 -2
- package/dist/types-M-rsm1Km.d.mts +105 -0
- package/dist/types.d.mts +1 -1
- package/dist/types2.d.mts +1 -1
- package/dist/types3.d.mts +1 -1
- package/dist/types4.d.mts +1 -1
- package/dist/types5.d.mts +1 -1
- package/dist/types6.d.mts +1 -1
- package/dist/types7.d.mts +2 -0
- package/dist/{url-state-CHK2N2fA.d.mts → url-state-DWA7UFxS.d.mts} +2 -2
- package/dist/url-state.d.mts +1 -1
- package/dist/useChain-CEsXE2Bx.d.mts +77 -0
- package/dist/useChain-CKqYGdx4.mjs +4589 -0
- package/dist/useChain-CKqYGdx4.mjs.map +1 -0
- package/dist/useChainAtCursor.d.mts +87 -0
- package/dist/useCodeChainFunctionPanel.d.mts +26 -0
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-B26e5iUx.d.mts → useFilterStateV2-DoJ9lyJx.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-BzhMbl5P.mjs → useFormField-BAmkdxtA.mjs} +2 -2
- package/dist/{useFormField-BzhMbl5P.mjs.map → useFormField-BAmkdxtA.mjs.map} +1 -1
- package/dist/{useFormField-DPFClB5h.d.mts → useFormField-BtnAYcHV.d.mts} +2 -2
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs → useFormGroup-BZayb9fZ.mjs} +1 -1
- package/dist/{useFormGroup-CH3kiXoa.mjs.map → useFormGroup-BZayb9fZ.mjs.map} +1 -1
- package/dist/{useLocationPathname-CnRd_Rzn.d.mts → useLocationPathname-pLyLOrAi.d.mts} +1 -1
- package/dist/useLocationPathname.d.mts +1 -1
- package/dist/{useTableBoxDragAndDrop-DWlG5vhl.d.mts → useTableBoxDragAndDrop-wjc_LCpC.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/{utilities-BcGuP8Fd.d.mts → utilities-DL18UdPs.d.mts} +1 -1
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/storybook.mjs +1 -1
- package/dist/utils/testing.d.mts +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils4.d.mts +111 -0
- package/dist/{validation-B-Om4ANo.d.mts → validation-PeVTwtd-.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/validation2.d.mts +64 -0
- package/dist/{value-control-resolver-BiyhB8zt.d.mts → value-control-resolver-Cx_wXQFv.d.mts} +3 -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/dist/variables/semantic.mjs +15 -18
- package/dist/variables/semantic.mjs.map +1 -1
- package/llms.txt +1 -1
- package/package.json +32 -6
- package/skills/ui-authoring/COMPONENTS.md +1 -1
- package/skills/ui-authoring/PATTERNS.md +1 -0
- package/dist/Combobox-C2b9u955.mjs.map +0 -1
- package/dist/DatePicker-IgiUI3Wj.mjs.map +0 -1
- package/dist/DropdownMenu-CuKSNxc9.mjs.map +0 -1
- package/dist/Input-C_3QwAAt.mjs.map +0 -1
- package/dist/ListBox-D4j4LCT3.mjs.map +0 -1
- package/dist/LoadingShimmer-Dizk2sZu.mjs.map +0 -1
- package/dist/Modal-BN0K8QXi.mjs.map +0 -1
- package/dist/Pagination-CPd4mSnw.mjs.map +0 -1
- package/dist/Popover-opVa9Xhc.mjs.map +0 -1
- package/dist/ProgressIndicator-3A4Aqci6.mjs.map +0 -1
- package/dist/SegmentedControl-BcwfLuHA.mjs.map +0 -1
- package/dist/Select-BstCz8P1.mjs.map +0 -1
- package/dist/Sticker-C3Eb13OQ.mjs.map +0 -1
- package/dist/Table-B1gRr2XT.mjs.map +0 -1
- package/dist/TableBox-DAQ3Plqx.mjs.map +0 -1
- package/dist/TableControls-BxuPCUQS.mjs.map +0 -1
- package/dist/Toggle-DWbJOwf3.mjs.map +0 -1
- package/dist/components/Link/index.mjs.map +0 -1
- package/dist/components/StatusIndicator/index.mjs.map +0 -1
- package/dist/components/WizardModal/index.mjs.map +0 -1
- package/dist/lib/methodChain.mjs.map +0 -1
- /package/dist/{index--p6oQT9I.d.mts → index-7in8TPrM.d.mts} +0 -0
- /package/dist/{index-BCh-G39Y2.d.mts → index-BCq_fh4A2.d.mts} +0 -0
- /package/dist/{index-BO_854F2.d.mts → index-BINnViIh.d.mts} +0 -0
- /package/dist/{index-BwFl_eS0.d.mts → index-BjgW3E7y.d.mts} +0 -0
- /package/dist/{index-C-lwXyQ6.d.mts → index-BwXb5CoQ.d.mts} +0 -0
- /package/dist/{index-C1o2TFfS.d.mts → index-C3usUse7.d.mts} +0 -0
- /package/dist/{index-C3kE54DD.d.mts → index-C9achTF6.d.mts} +0 -0
- /package/dist/{index-CREkvfw9.d.mts → index-CCKHlTA4.d.mts} +0 -0
- /package/dist/{index-CRo77wc3.d.mts → index-CFuHCx9T.d.mts} +0 -0
- /package/dist/{index-CfCYi7PF.d.mts → index-CP2eJYlK.d.mts} +0 -0
- /package/dist/{index-CoUVmp_Q.d.mts → index-CWB6exYm.d.mts} +0 -0
- /package/dist/{index-DCTy4zg0.d.mts → index-CryTAIZM.d.mts} +0 -0
- /package/dist/{index-DWIh4oP5.d.mts → index-CuheJfs-.d.mts} +0 -0
- /package/dist/{index-De7MV8-j.d.mts → index-D-9tW2r5.d.mts} +0 -0
- /package/dist/{index-DgJfEygr.d.mts → index-D9XihFV1.d.mts} +0 -0
- /package/dist/{index-Es5nKSSL.d.mts → index-Deol7ZWO.d.mts} +0 -0
- /package/dist/{index-Qwqzz3XM.d.mts → index-DjOaHFU3.d.mts} +0 -0
- /package/dist/{index-Wc1llEvP.d.mts → index-Iujpc9_6.d.mts} +0 -0
- /package/dist/{index-bHnO4ZKt.d.mts → index-e6k85DKM.d.mts} +0 -0
- /package/dist/{index-dhjtMp5F.d.mts → index-gpCH5158.d.mts} +0 -0
- /package/dist/{components → patterns}/WizardModal/index.d.mts +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
import { a as styled, r as css } from "./styledComponentsInterop-NxwFjeA4.mjs";
|
|
2
|
+
import { TruncatedText } from "./lib/TruncatedText.mjs";
|
|
3
|
+
import { semanticTokens } from "./lib/semanticColor.mjs";
|
|
4
|
+
import { paragraphMixins } from "./mixins/text.mjs";
|
|
5
|
+
import { withAlpha } from "./lib/color.mjs";
|
|
6
|
+
import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { CircleCheckFillIcon, CircleFillIcon, CircleHalfIcon, CircleMinusFillIcon, CircleNullIcon, CircleSlashIcon, WarningFillIcon } from "@persona/icons/12px";
|
|
9
|
+
//#region components/StatusIndicator/StatusIndicator.tsx
|
|
10
|
+
const STATUS_CONFIG = {
|
|
11
|
+
open: {
|
|
12
|
+
type: "neutral",
|
|
13
|
+
icon: /* @__PURE__ */ jsx(CircleNullIcon, {})
|
|
14
|
+
},
|
|
15
|
+
pending: {
|
|
16
|
+
type: "neutral",
|
|
17
|
+
icon: /* @__PURE__ */ jsx(CircleHalfIcon, {})
|
|
18
|
+
},
|
|
19
|
+
completed: {
|
|
20
|
+
type: "success",
|
|
21
|
+
icon: /* @__PURE__ */ jsx(CircleCheckFillIcon, {})
|
|
22
|
+
},
|
|
23
|
+
active: {
|
|
24
|
+
type: "success",
|
|
25
|
+
icon: /* @__PURE__ */ jsx(CircleFillIcon, {})
|
|
26
|
+
},
|
|
27
|
+
failed: {
|
|
28
|
+
type: "critical",
|
|
29
|
+
icon: /* @__PURE__ */ jsx(CircleSlashIcon, {})
|
|
30
|
+
},
|
|
31
|
+
needs_review: {
|
|
32
|
+
type: "warning",
|
|
33
|
+
icon: /* @__PURE__ */ jsx(WarningFillIcon, {})
|
|
34
|
+
},
|
|
35
|
+
canceled: {
|
|
36
|
+
type: "attention",
|
|
37
|
+
icon: /* @__PURE__ */ jsx(CircleSlashIcon, {})
|
|
38
|
+
},
|
|
39
|
+
archived: {
|
|
40
|
+
type: "neutral",
|
|
41
|
+
icon: /* @__PURE__ */ jsx(CircleMinusFillIcon, {})
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
/** All supported `status` preset keys, derived from the config map. */
|
|
45
|
+
const STATUSES = Object.keys(STATUS_CONFIG);
|
|
46
|
+
const FILLED_STATUS_COLORS = {
|
|
47
|
+
neutral: {
|
|
48
|
+
background: Color.BackgroundStatusIndicatorDefault,
|
|
49
|
+
text: Color.TextStatusIndicatorDefault,
|
|
50
|
+
icon: Color.BorderIconLabelGrey
|
|
51
|
+
},
|
|
52
|
+
attention: {
|
|
53
|
+
background: Color.BackgroundStatusIndicatorAttention,
|
|
54
|
+
text: Color.TextStatusIndicatorAttention,
|
|
55
|
+
icon: Color.BorderIconLabelYellow
|
|
56
|
+
},
|
|
57
|
+
warning: {
|
|
58
|
+
background: Color.BackgroundStatusIndicatorWarning,
|
|
59
|
+
text: Color.TextStatusIndicatorWarning,
|
|
60
|
+
icon: Color.BorderIconLabelOrange
|
|
61
|
+
},
|
|
62
|
+
critical: {
|
|
63
|
+
background: Color.BackgroundStatusIndicatorCritical,
|
|
64
|
+
text: Color.TextStatusIndicatorCritical,
|
|
65
|
+
icon: Color.BorderIconLabelRed
|
|
66
|
+
},
|
|
67
|
+
success: {
|
|
68
|
+
background: Color.BackgroundStatusIndicatorSuccess,
|
|
69
|
+
text: Color.TextStatusIndicatorSuccess,
|
|
70
|
+
icon: Color.BorderIconLabelGreen
|
|
71
|
+
},
|
|
72
|
+
feature: {
|
|
73
|
+
background: Color.BackgroundStatusIndicatorFeature,
|
|
74
|
+
text: Color.TextStatusIndicatorFeature,
|
|
75
|
+
icon: Color.BorderIconLabelPurple
|
|
76
|
+
},
|
|
77
|
+
informational: {
|
|
78
|
+
background: Color.BackgroundStatusIndicatorInformational,
|
|
79
|
+
text: Color.TextStatusIndicatorInformational,
|
|
80
|
+
icon: Color.BorderIconLabelBlue
|
|
81
|
+
},
|
|
82
|
+
miscellaneous: {
|
|
83
|
+
background: Color.BackgroundStatusIndicatorMiscellaneous,
|
|
84
|
+
text: Color.TextStatusIndicatorMiscellaneous,
|
|
85
|
+
icon: Color.BorderIconLabelTeal
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const TRANSPARENT_STATUS_COLORS = {
|
|
89
|
+
neutral: {
|
|
90
|
+
background: "transparent",
|
|
91
|
+
text: Color.TextPrimary,
|
|
92
|
+
icon: Color.BorderIconSecondary
|
|
93
|
+
},
|
|
94
|
+
attention: {
|
|
95
|
+
background: "transparent",
|
|
96
|
+
text: Color.TextPrimary,
|
|
97
|
+
icon: Color.BorderIconWarning
|
|
98
|
+
},
|
|
99
|
+
warning: {
|
|
100
|
+
background: "transparent",
|
|
101
|
+
text: Color.TextPrimary,
|
|
102
|
+
icon: Color.BorderIconWarning
|
|
103
|
+
},
|
|
104
|
+
critical: {
|
|
105
|
+
background: "transparent",
|
|
106
|
+
text: Color.TextPrimary,
|
|
107
|
+
icon: Color.BorderIconDanger
|
|
108
|
+
},
|
|
109
|
+
success: {
|
|
110
|
+
background: "transparent",
|
|
111
|
+
text: Color.TextPrimary,
|
|
112
|
+
icon: Color.BorderIconSuccess
|
|
113
|
+
},
|
|
114
|
+
feature: {
|
|
115
|
+
background: "transparent",
|
|
116
|
+
text: Color.TextPrimary,
|
|
117
|
+
icon: Color.BorderIconActive
|
|
118
|
+
},
|
|
119
|
+
informational: {
|
|
120
|
+
background: "transparent",
|
|
121
|
+
text: Color.TextPrimary,
|
|
122
|
+
icon: Color.BorderIconLabelBlue
|
|
123
|
+
},
|
|
124
|
+
miscellaneous: {
|
|
125
|
+
background: "transparent",
|
|
126
|
+
text: Color.TextPrimary,
|
|
127
|
+
icon: Color.BorderIconLabelTeal
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const semanticFilledStatusColors = (t) => ({
|
|
131
|
+
neutral: {
|
|
132
|
+
background: t.StatusNeutral,
|
|
133
|
+
text: t.FgPrimary,
|
|
134
|
+
icon: t.FgPrimary
|
|
135
|
+
},
|
|
136
|
+
attention: {
|
|
137
|
+
background: withAlpha(t.StatusHighlight, t.Opacity15),
|
|
138
|
+
text: t.FgHighlight,
|
|
139
|
+
icon: t.FgHighlight
|
|
140
|
+
},
|
|
141
|
+
warning: {
|
|
142
|
+
background: withAlpha(t.StatusWarning, t.Opacity15),
|
|
143
|
+
text: t.FgWarning2,
|
|
144
|
+
icon: t.FgWarning2
|
|
145
|
+
},
|
|
146
|
+
critical: {
|
|
147
|
+
background: withAlpha(t.StatusDanger3, t.Opacity15),
|
|
148
|
+
text: t.FgDanger2,
|
|
149
|
+
icon: t.FgDanger2
|
|
150
|
+
},
|
|
151
|
+
success: {
|
|
152
|
+
background: withAlpha(t.StatusSuccess2, t.Opacity15),
|
|
153
|
+
text: t.FgSuccess,
|
|
154
|
+
icon: t.FgSuccess
|
|
155
|
+
},
|
|
156
|
+
feature: {
|
|
157
|
+
background: withAlpha(t.StatusFeature, t.Opacity25),
|
|
158
|
+
text: t.FgFeature,
|
|
159
|
+
icon: t.FgFeature
|
|
160
|
+
},
|
|
161
|
+
informational: {
|
|
162
|
+
background: withAlpha(t.StatusInfo2, t.Opacity25),
|
|
163
|
+
text: t.FgInfo,
|
|
164
|
+
icon: t.FgInfo
|
|
165
|
+
},
|
|
166
|
+
miscellaneous: {
|
|
167
|
+
background: withAlpha(t.StatusMisc, t.Opacity15),
|
|
168
|
+
text: t.FgMisc,
|
|
169
|
+
icon: t.FgMisc
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
const semanticTransparentStatusColors = (t) => ({
|
|
173
|
+
neutral: {
|
|
174
|
+
background: "transparent",
|
|
175
|
+
text: t.FgPrimary,
|
|
176
|
+
icon: t.FgSecondary
|
|
177
|
+
},
|
|
178
|
+
attention: {
|
|
179
|
+
background: "transparent",
|
|
180
|
+
text: t.FgPrimary,
|
|
181
|
+
icon: t.FeedbackHighlight1
|
|
182
|
+
},
|
|
183
|
+
warning: {
|
|
184
|
+
background: "transparent",
|
|
185
|
+
text: t.FgPrimary,
|
|
186
|
+
icon: t.FgWarning1
|
|
187
|
+
},
|
|
188
|
+
critical: {
|
|
189
|
+
background: "transparent",
|
|
190
|
+
text: t.FgPrimary,
|
|
191
|
+
icon: t.FgDanger1
|
|
192
|
+
},
|
|
193
|
+
success: {
|
|
194
|
+
background: "transparent",
|
|
195
|
+
text: t.FgPrimary,
|
|
196
|
+
icon: t.FgSuccess
|
|
197
|
+
},
|
|
198
|
+
feature: {
|
|
199
|
+
background: "transparent",
|
|
200
|
+
text: t.FgPrimary,
|
|
201
|
+
icon: t.FgAccent
|
|
202
|
+
},
|
|
203
|
+
informational: {
|
|
204
|
+
background: "transparent",
|
|
205
|
+
text: t.FgPrimary,
|
|
206
|
+
icon: t.FgInfo
|
|
207
|
+
},
|
|
208
|
+
miscellaneous: {
|
|
209
|
+
background: "transparent",
|
|
210
|
+
text: t.FgPrimary,
|
|
211
|
+
icon: t.FgMisc
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
const semanticStatusColorCache = /* @__PURE__ */ new WeakMap();
|
|
215
|
+
const semanticStatusColors = (tokens) => {
|
|
216
|
+
let colors = semanticStatusColorCache.get(tokens);
|
|
217
|
+
if (!colors) {
|
|
218
|
+
colors = {
|
|
219
|
+
filled: semanticFilledStatusColors(tokens),
|
|
220
|
+
none: semanticTransparentStatusColors(tokens)
|
|
221
|
+
};
|
|
222
|
+
semanticStatusColorCache.set(tokens, colors);
|
|
223
|
+
}
|
|
224
|
+
return colors;
|
|
225
|
+
};
|
|
226
|
+
const statusColors = (theme, background) => {
|
|
227
|
+
const tokens = semanticTokens(theme);
|
|
228
|
+
if (tokens) return semanticStatusColors(tokens)[background];
|
|
229
|
+
return background === "filled" ? FILLED_STATUS_COLORS : TRANSPARENT_STATUS_COLORS;
|
|
230
|
+
};
|
|
231
|
+
const Label = styled.div`
|
|
232
|
+
${paragraphMixins.sm}
|
|
233
|
+
display: flex;
|
|
234
|
+
flex-direction: column;
|
|
235
|
+
justify-content: center;
|
|
236
|
+
flex-shrink: ${({ $truncate }) => $truncate ? 1 : 0};
|
|
237
|
+
min-width: ${({ $truncate }) => $truncate ? "0" : "auto"};
|
|
238
|
+
/* Line box hugs the font so pill height is driven by padding alone, and clipping an overflowing
|
|
239
|
+
label can't cut into descenders. Matches Sticker. */
|
|
240
|
+
line-height: 1;
|
|
241
|
+
white-space: nowrap;
|
|
242
|
+
text-transform: ${({ $preserveCase }) => $preserveCase ? "none" : "capitalize"};
|
|
243
|
+
/* Slight optical centering adjustment */
|
|
244
|
+
transform: translateY(0.5px);
|
|
245
|
+
color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].text};
|
|
246
|
+
`;
|
|
247
|
+
const IconContainer = styled.span`
|
|
248
|
+
line-height: 0;
|
|
249
|
+
color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].icon};
|
|
250
|
+
`;
|
|
251
|
+
const LabelContainer = styled.div`
|
|
252
|
+
display: flex;
|
|
253
|
+
align-items: center;
|
|
254
|
+
gap: ${Spacing[1]};
|
|
255
|
+
padding: ${({ $hasIcon }) => `${Spacing[1]} ${Spacing[2]} ${Spacing[1]} ${$hasIcon ? Spacing[1] : Spacing[2]}`};
|
|
256
|
+
position: relative;
|
|
257
|
+
flex-shrink: ${({ $truncate }) => $truncate ? 1 : 0};
|
|
258
|
+
min-width: ${({ $truncate }) => $truncate ? "0" : "auto"};
|
|
259
|
+
`;
|
|
260
|
+
const StyledStatusIndicator = styled.div`
|
|
261
|
+
display: inline-flex;
|
|
262
|
+
align-items: center;
|
|
263
|
+
border-radius: ${BorderRadius.Xl};
|
|
264
|
+
width: fit-content;
|
|
265
|
+
max-width: ${({ $truncate }) => $truncate ? "100%" : "none"};
|
|
266
|
+
|
|
267
|
+
${({ theme, $type, $background }) => css`
|
|
268
|
+
background-color: ${statusColors(theme, $background)[$type].background};
|
|
269
|
+
`}
|
|
270
|
+
`;
|
|
271
|
+
/**
|
|
272
|
+
* StatusIndicator displays semantic status information with a colored icon and label.
|
|
273
|
+
* Supports both filled backgrounds and transparent styles.
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```tsx
|
|
277
|
+
* <StatusIndicator status="active">Active</StatusIndicator>
|
|
278
|
+
* <StatusIndicator type="success" background="filled">Approved</StatusIndicator>
|
|
279
|
+
* <StatusIndicator type="critical" background="none">Failed</StatusIndicator>
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
const StatusIndicator = ({ status, type, background = "filled", showIcon = true, leadingIcon, truncate = false, preserveCase = false, children, ...props }) => {
|
|
283
|
+
const resolvedType = type ?? (status != null ? STATUS_CONFIG[status].type : "neutral");
|
|
284
|
+
let iconToRender;
|
|
285
|
+
if (!showIcon && background === "filled") iconToRender = null;
|
|
286
|
+
else if (typeof leadingIcon !== "undefined") iconToRender = leadingIcon;
|
|
287
|
+
else if (status != null) iconToRender = STATUS_CONFIG[status].icon;
|
|
288
|
+
else iconToRender = /* @__PURE__ */ jsx(CircleNullIcon, {});
|
|
289
|
+
const hasIcon = iconToRender != null;
|
|
290
|
+
return /* @__PURE__ */ jsx(StyledStatusIndicator, {
|
|
291
|
+
$type: resolvedType,
|
|
292
|
+
$background: background,
|
|
293
|
+
$truncate: truncate,
|
|
294
|
+
...props,
|
|
295
|
+
children: /* @__PURE__ */ jsxs(LabelContainer, {
|
|
296
|
+
$hasIcon: hasIcon,
|
|
297
|
+
$truncate: truncate,
|
|
298
|
+
children: [hasIcon && /* @__PURE__ */ jsx(IconContainer, {
|
|
299
|
+
$type: resolvedType,
|
|
300
|
+
$background: background,
|
|
301
|
+
children: iconToRender
|
|
302
|
+
}), /* @__PURE__ */ jsx(Label, {
|
|
303
|
+
$type: resolvedType,
|
|
304
|
+
$background: background,
|
|
305
|
+
$truncate: truncate,
|
|
306
|
+
$preserveCase: preserveCase,
|
|
307
|
+
children: truncate ? /* @__PURE__ */ jsx(TruncatedText, { children }) : children
|
|
308
|
+
})]
|
|
309
|
+
})
|
|
310
|
+
});
|
|
311
|
+
};
|
|
312
|
+
//#endregion
|
|
313
|
+
export { StatusIndicator as n, STATUSES as t };
|
|
314
|
+
|
|
315
|
+
//# sourceMappingURL=StatusIndicator-bEnMWV_S.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusIndicator-bEnMWV_S.mjs","names":[],"sources":["../components/StatusIndicator/StatusIndicator.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport {\n CircleCheckFillIcon,\n CircleFillIcon,\n CircleHalfIcon,\n CircleMinusFillIcon,\n CircleNullIcon,\n CircleSlashIcon,\n WarningFillIcon,\n} from '@persona/icons/12px';\nimport { withAlpha } from 'design-system/lib/color';\nimport { type MaybeSemanticTheme, semanticTokens } from 'design-system/lib/semanticColor';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nexport type StatusType =\n | 'neutral'\n | 'attention'\n | 'warning'\n | 'critical'\n | 'success'\n | 'feature'\n | 'informational'\n | 'miscellaneous';\nexport type BackgroundType = 'filled' | 'none';\n\n/**\n * Narrow set of status presets — one value per type+icon combination.\n * Override color with `type` or icon with `leadingIcon` when needed.\n */\nexport type Status =\n | 'open'\n | 'pending'\n | 'completed'\n | 'active'\n | 'failed'\n | 'needs_review'\n | 'canceled'\n | 'archived';\n\nconst STATUS_CONFIG: Record<Status, { type: StatusType; icon: ReactNode }> = {\n open: { type: 'neutral', icon: <CircleNullIcon /> },\n pending: { type: 'neutral', icon: <CircleHalfIcon /> },\n completed: { type: 'success', icon: <CircleCheckFillIcon /> },\n active: { type: 'success', icon: <CircleFillIcon /> },\n failed: { type: 'critical', icon: <CircleSlashIcon /> },\n needs_review: { type: 'warning', icon: <WarningFillIcon /> },\n canceled: { type: 'attention', icon: <CircleSlashIcon /> },\n archived: { type: 'neutral', icon: <CircleMinusFillIcon /> },\n};\n\n/** All supported `status` preset keys, derived from the config map. */\nexport const STATUSES = Object.keys(STATUS_CONFIG) as Status[];\n\nexport interface StatusIndicatorProps extends ComponentPropsWithoutRef<'div'> {\n /**\n * Preset that sets a default semantic type and icon.\n * Explicit `type` and `leadingIcon` override the preset.\n */\n status?: Status;\n\n /**\n * The semantic status type to display. Overrides `status` when both are set.\n */\n type?: StatusType;\n\n /**\n * Whether to show filled background or transparent\n */\n background?: BackgroundType;\n\n /**\n * Whether to show the icon. When false, displays label-only variant\n * @default true\n */\n showIcon?: boolean;\n\n /**\n * Optional custom icon to replace the default icon indicator (12px recommended)\n * - undefined (default): Uses `status` icon when set, otherwise CircleNullIcon\n * - null: Hides the icon completely\n * - ReactNode: Shows the provided custom icon\n * Note: showIcon must be true for this to take effect\n */\n leadingIcon?: ReactNode | null;\n\n /**\n * Truncate the label with an ellipsis instead of letting it overflow its container. Adds a\n * title tooltip with the full text when it doesn't fit.\n * @default false\n */\n truncate?: boolean;\n\n /**\n * Render the label exactly as given instead of capitalizing each word. Use for labels that are\n * authored outside the product, where the casing is not ours to change.\n * @default false\n */\n preserveCase?: boolean;\n\n /**\n * The text label to display\n */\n children?: ReactNode;\n}\n\ninterface StatusColors {\n background: string;\n text: string;\n icon: string;\n}\n\nconst FILLED_STATUS_COLORS: Record<StatusType, StatusColors> = {\n neutral: {\n background: Color.BackgroundStatusIndicatorDefault,\n text: Color.TextStatusIndicatorDefault,\n icon: Color.BorderIconLabelGrey,\n },\n attention: {\n background: Color.BackgroundStatusIndicatorAttention,\n text: Color.TextStatusIndicatorAttention,\n icon: Color.BorderIconLabelYellow,\n },\n warning: {\n background: Color.BackgroundStatusIndicatorWarning,\n text: Color.TextStatusIndicatorWarning,\n icon: Color.BorderIconLabelOrange,\n },\n critical: {\n background: Color.BackgroundStatusIndicatorCritical,\n text: Color.TextStatusIndicatorCritical,\n icon: Color.BorderIconLabelRed,\n },\n success: {\n background: Color.BackgroundStatusIndicatorSuccess,\n text: Color.TextStatusIndicatorSuccess,\n icon: Color.BorderIconLabelGreen,\n },\n feature: {\n background: Color.BackgroundStatusIndicatorFeature,\n text: Color.TextStatusIndicatorFeature,\n icon: Color.BorderIconLabelPurple,\n },\n informational: {\n background: Color.BackgroundStatusIndicatorInformational,\n text: Color.TextStatusIndicatorInformational,\n icon: Color.BorderIconLabelBlue,\n },\n miscellaneous: {\n background: Color.BackgroundStatusIndicatorMiscellaneous,\n text: Color.TextStatusIndicatorMiscellaneous,\n icon: Color.BorderIconLabelTeal,\n },\n};\n\nconst TRANSPARENT_STATUS_COLORS: Record<StatusType, StatusColors> = {\n neutral: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconSecondary,\n },\n attention: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconWarning,\n },\n warning: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconWarning,\n },\n critical: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconDanger,\n },\n success: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconSuccess,\n },\n feature: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconActive,\n },\n informational: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconLabelBlue,\n },\n miscellaneous: {\n background: 'transparent',\n text: Color.TextPrimary,\n icon: Color.BorderIconLabelTeal,\n },\n};\n\nconst semanticFilledStatusColors = (t: SemanticTokens): Record<StatusType, StatusColors> => ({\n neutral: { background: t.StatusNeutral, text: t.FgPrimary, icon: t.FgPrimary },\n attention: {\n background: withAlpha(t.StatusHighlight, t.Opacity15),\n text: t.FgHighlight,\n icon: t.FgHighlight,\n },\n warning: {\n background: withAlpha(t.StatusWarning, t.Opacity15),\n text: t.FgWarning2,\n icon: t.FgWarning2,\n },\n critical: {\n background: withAlpha(t.StatusDanger3, t.Opacity15),\n text: t.FgDanger2,\n icon: t.FgDanger2,\n },\n success: {\n background: withAlpha(t.StatusSuccess2, t.Opacity15),\n text: t.FgSuccess,\n icon: t.FgSuccess,\n },\n feature: {\n background: withAlpha(t.StatusFeature, t.Opacity25),\n text: t.FgFeature,\n icon: t.FgFeature,\n },\n informational: {\n background: withAlpha(t.StatusInfo2, t.Opacity25),\n text: t.FgInfo,\n icon: t.FgInfo,\n },\n miscellaneous: {\n background: withAlpha(t.StatusMisc, t.Opacity15),\n text: t.FgMisc,\n icon: t.FgMisc,\n },\n});\n\nconst semanticTransparentStatusColors = (t: SemanticTokens): Record<StatusType, StatusColors> => ({\n neutral: { background: 'transparent', text: t.FgPrimary, icon: t.FgSecondary },\n attention: { background: 'transparent', text: t.FgPrimary, icon: t.FeedbackHighlight1 },\n warning: { background: 'transparent', text: t.FgPrimary, icon: t.FgWarning1 },\n critical: { background: 'transparent', text: t.FgPrimary, icon: t.FgDanger1 },\n success: { background: 'transparent', text: t.FgPrimary, icon: t.FgSuccess },\n feature: { background: 'transparent', text: t.FgPrimary, icon: t.FgAccent },\n informational: { background: 'transparent', text: t.FgPrimary, icon: t.FgInfo },\n miscellaneous: { background: 'transparent', text: t.FgPrimary, icon: t.FgMisc },\n});\n\nconst semanticStatusColorCache = new WeakMap<\n SemanticTokens,\n Record<BackgroundType, Record<StatusType, StatusColors>>\n>();\n\nconst semanticStatusColors = (tokens: SemanticTokens) => {\n let colors = semanticStatusColorCache.get(tokens);\n if (!colors) {\n colors = {\n filled: semanticFilledStatusColors(tokens),\n none: semanticTransparentStatusColors(tokens),\n };\n semanticStatusColorCache.set(tokens, colors);\n }\n return colors;\n};\n\nconst statusColors = (theme: MaybeSemanticTheme, background: BackgroundType) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n return semanticStatusColors(tokens)[background];\n }\n return background === 'filled' ? FILLED_STATUS_COLORS : TRANSPARENT_STATUS_COLORS;\n};\n\nconst Label = styled.div<{\n $type: StatusType;\n $background: BackgroundType;\n $truncate: boolean;\n $preserveCase: boolean;\n}>`\n ${paragraphMixins.sm}\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-shrink: ${({ $truncate }) => ($truncate ? 1 : 0)};\n min-width: ${({ $truncate }) => ($truncate ? '0' : 'auto')};\n /* Line box hugs the font so pill height is driven by padding alone, and clipping an overflowing\n label can't cut into descenders. Matches Sticker. */\n line-height: 1;\n white-space: nowrap;\n text-transform: ${({ $preserveCase }) => ($preserveCase ? 'none' : 'capitalize')};\n /* Slight optical centering adjustment */\n transform: translateY(0.5px);\n color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].text};\n`;\n\nconst IconContainer = styled.span<{ $type: StatusType; $background: BackgroundType }>`\n line-height: 0;\n color: ${({ theme, $type, $background }) => statusColors(theme, $background)[$type].icon};\n`;\n\nconst LabelContainer = styled.div<{ $hasIcon: boolean; $truncate: boolean }>`\n display: flex;\n align-items: center;\n gap: ${Spacing[1]};\n padding: ${({ $hasIcon }) =>\n `${Spacing[1]} ${Spacing[2]} ${Spacing[1]} ${$hasIcon ? Spacing[1] : Spacing[2]}`};\n position: relative;\n flex-shrink: ${({ $truncate }) => ($truncate ? 1 : 0)};\n min-width: ${({ $truncate }) => ($truncate ? '0' : 'auto')};\n`;\n\nconst StyledStatusIndicator = styled.div<{\n $type: StatusType;\n $background: BackgroundType;\n $truncate: boolean;\n}>`\n display: inline-flex;\n align-items: center;\n border-radius: ${BorderRadius.Xl};\n width: fit-content;\n max-width: ${({ $truncate }) => ($truncate ? '100%' : 'none')};\n\n ${({ theme, $type, $background }) => css`\n background-color: ${statusColors(theme, $background)[$type].background};\n `}\n`;\n\n/**\n * StatusIndicator displays semantic status information with a colored icon and label.\n * Supports both filled backgrounds and transparent styles.\n *\n * @example\n * ```tsx\n * <StatusIndicator status=\"active\">Active</StatusIndicator>\n * <StatusIndicator type=\"success\" background=\"filled\">Approved</StatusIndicator>\n * <StatusIndicator type=\"critical\" background=\"none\">Failed</StatusIndicator>\n * ```\n */\nexport const StatusIndicator = ({\n status,\n type,\n background = 'filled',\n showIcon = true,\n leadingIcon,\n truncate = false,\n preserveCase = false,\n children,\n ...props\n}: StatusIndicatorProps) => {\n const resolvedType = type ?? (status != null ? STATUS_CONFIG[status].type : 'neutral');\n\n // Determine which icon to show:\n // - showIcon=false with background='filled': label-only variant (no icon)\n // - leadingIcon set (including null): explicit override\n // - status set: use preset icon\n // - otherwise: default CircleNullIcon\n // - background='none' always shows icon (showIcon is ignored for none background)\n let iconToRender;\n if (!showIcon && background === 'filled') {\n iconToRender = null;\n } else if (typeof leadingIcon !== 'undefined') {\n iconToRender = leadingIcon;\n } else if (status != null) {\n iconToRender = STATUS_CONFIG[status].icon;\n } else {\n iconToRender = <CircleNullIcon />;\n }\n const hasIcon = iconToRender != null;\n\n return (\n <StyledStatusIndicator\n $type={resolvedType}\n $background={background}\n $truncate={truncate}\n {...props}\n >\n <LabelContainer $hasIcon={hasIcon} $truncate={truncate}>\n {hasIcon && (\n <IconContainer $type={resolvedType} $background={background}>\n {iconToRender}\n </IconContainer>\n )}\n <Label\n $type={resolvedType}\n $background={background}\n $truncate={truncate}\n $preserveCase={preserveCase}\n >\n {truncate ? <TruncatedText>{children}</TruncatedText> : children}\n </Label>\n </LabelContainer>\n </StyledStatusIndicator>\n );\n};\n\nexport default StatusIndicator;\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as styled
|
|
1
|
+
import { a as styled } from "./styledComponentsInterop-NxwFjeA4.mjs";
|
|
2
2
|
import { TruncatedText } from "./lib/TruncatedText.mjs";
|
|
3
|
-
import { semanticColor,
|
|
3
|
+
import { semanticColor, semanticTokens } from "./lib/semanticColor.mjs";
|
|
4
4
|
import { paragraphMixins } from "./mixins/text.mjs";
|
|
5
5
|
import { withAlpha } from "./lib/color.mjs";
|
|
6
6
|
import { isDisabled, isFocusedVisible, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
|
|
7
|
-
import { n as Stack } from "./Stack-
|
|
8
|
-
import { t as IconButton } from "./IconButton-
|
|
7
|
+
import { n as Stack } from "./Stack-CEPzs4Pb.mjs";
|
|
8
|
+
import { t as IconButton } from "./IconButton-BHFCjvzs.mjs";
|
|
9
9
|
import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { XIcon } from "@persona/icons/12px";
|
|
@@ -218,9 +218,6 @@ const DismissButton = styled(IconButton)`
|
|
|
218
218
|
&${isHovered}${isNotDisabled} {
|
|
219
219
|
cursor: pointer;
|
|
220
220
|
|
|
221
|
-
${({ theme, variant }) => semanticOnly((tokens) => css`
|
|
222
|
-
color: ${semanticStickerTone(tokens, variant).colorHover};
|
|
223
|
-
`)({ theme })}
|
|
224
221
|
background: ${({ theme, variant }) => {
|
|
225
222
|
const tokens = semanticTokens(theme);
|
|
226
223
|
if (tokens) return semanticStickerTone(tokens, variant).backgroundHover;
|
|
@@ -355,4 +352,4 @@ const Sticker = ({ variant, icon, children, onDismiss, disabled, dismissButtonPr
|
|
|
355
352
|
//#endregion
|
|
356
353
|
export { StyledTruncatedText as a, StickerContentContainer as i, Sticker as n, StickerContainer as r, STICKER_COLOR_CONFIG as t };
|
|
357
354
|
|
|
358
|
-
//# sourceMappingURL=Sticker-
|
|
355
|
+
//# sourceMappingURL=Sticker-B-fU8lgu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sticker-B-fU8lgu.mjs","names":[],"sources":["../components/Sticker/tone.ts","../components/Sticker/Sticker.tsx"],"sourcesContent":["import type { Color } from '@persona/design-tokens';\nimport { type PdsColor, withAlpha } from 'design-system/lib/color';\nimport type { SemanticTokens } from 'design-system/variables/semantic';\n\nimport type { StickerProps } from './Sticker';\n\nexport interface StickerTone {\n background: Color;\n backgroundHover: Color;\n color: Color;\n colorHover: Color;\n colorDisabled: PdsColor;\n}\n\nconst buildSemanticStickerTone = (\n t: SemanticTokens,\n variant: StickerProps['variant'],\n onSecondaryBackground: boolean,\n): StickerTone => {\n switch (variant) {\n case 'white':\n return {\n background: t.FeedbackNeutralInverse,\n backgroundHover: t.FeedbackNeutral1,\n color: t.FgPrimary,\n colorHover: t.FgPrimary,\n colorDisabled: t.FgDisabled,\n };\n case 'blue':\n return {\n background: t.FeedbackInfo2,\n backgroundHover: t.FeedbackInfo3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'teal':\n return {\n background: t.FeedbackMisc1,\n backgroundHover: t.FeedbackMisc2,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'green':\n case 'success':\n return {\n background: t.FeedbackSuccess2,\n backgroundHover: t.FeedbackSuccess3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'yellow':\n case 'caution':\n return {\n background: t.FeedbackHighlight1,\n backgroundHover: t.FeedbackHighlight2,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'orange':\n return {\n background: t.FeedbackWarning2,\n backgroundHover: t.FeedbackWarning3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'pink':\n case 'danger':\n return {\n background: t.FeedbackDanger2,\n backgroundHover: t.FeedbackDanger3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgPrimaryStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'red':\n return {\n background: t.FeedbackDanger3,\n backgroundHover: t.FeedbackDanger4,\n color: t.FgInverse,\n colorHover: t.FgInverseStatic,\n colorDisabled: withAlpha(t.FgInverseStatic, t.Opacity65),\n };\n case 'purple':\n case 'primary':\n return {\n background: t.FeedbackAccent2,\n backgroundHover: t.FeedbackAccent3,\n color: t.FgPrimaryStatic,\n colorHover: t.FgInverseStatic,\n colorDisabled: t.FgDisabled,\n };\n case 'darkGrey':\n return {\n background: t.FeedbackNeutral4,\n backgroundHover: t.FeedbackNeutral5,\n color: t.FgInverseStatic,\n colorHover: t.FgInverseStatic,\n colorDisabled: withAlpha(t.FgInverseStatic, t.Opacity65),\n };\n default:\n return {\n background: onSecondaryBackground ? t.FeedbackNeutral2Static : t.FeedbackNeutral1,\n backgroundHover: t.FeedbackNeutral3,\n color: t.FgPrimary,\n colorHover: t.FgPrimary,\n colorDisabled: t.FgDisabled,\n };\n }\n};\n\nconst semanticStickerToneCache = new WeakMap<SemanticTokens, Map<string, StickerTone>>();\n\nexport const semanticStickerTone = (\n t: SemanticTokens,\n variant: StickerProps['variant'],\n onSecondaryBackground = false,\n): StickerTone => {\n let tones = semanticStickerToneCache.get(t);\n if (!tones) {\n tones = new Map();\n semanticStickerToneCache.set(t, tones);\n }\n\n const key = `${variant ?? ''}:${onSecondaryBackground ? 'secondary' : 'default'}`;\n let tone = tones.get(key);\n if (!tone) {\n tone = buildSemanticStickerTone(t, variant, onSecondaryBackground);\n tones.set(key, tone);\n }\n return tone;\n};\n","import type { ComponentPropsWithoutRef, MouseEventHandler, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { XIcon } from '@persona/icons/12px';\nimport { IconButton } from 'design-system/components/Button';\nimport Stack from 'design-system/components/Stack';\nimport { withAlpha } from 'design-system/lib/color';\nimport {\n isDisabled,\n isFocusedVisible,\n isHovered,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport { semanticColor, semanticTokens } from 'design-system/lib/semanticColor';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { Variant } from 'design-system/theme';\n\nimport { semanticStickerTone } from './tone';\n// Define the options with labels\nexport const STICKER_COLOR_CONFIG = {\n white: 'White',\n blue: 'Blue',\n teal: 'Teal',\n green: 'Green',\n yellow: 'Yellow',\n orange: 'Orange',\n pink: 'Pink',\n red: 'Red',\n purple: 'Purple',\n darkGrey: 'Dark Grey',\n grey: 'Grey',\n} as const;\n\n// Derive the type from the object keys\nexport type LabelBackgrounds = keyof typeof STICKER_COLOR_CONFIG;\n\nexport interface StickerProps extends ComponentPropsWithoutRef<'div'> {\n variant?: LabelBackgrounds | Exclude<Variant, 'inverse'>;\n\n /**\n * Icon to render to the left of the Sticker. 12px icons recommended.\n */\n icon?: ReactNode;\n\n /**\n * Callback to call upon clicking \"x\" button. Non-null will render the button.\n */\n onDismiss?: MouseEventHandler;\n\n /**\n * Additional props to pass to the dismiss \"x\" button.\n */\n dismissButtonProps?: ComponentPropsWithoutRef<'button'>;\n\n /**\n * Renders disabled style for the entire Sticker and disables \"x\" button.\n */\n disabled?: boolean;\n\n /**\n * Shows a required asterisk (*) that won't be cut off when text is truncated.\n */\n isRequired?: boolean;\n\n /**\n * In some cases we render a sticker/badge on a secondary background, which needs an adjustment\n * for certain variants.\n */\n onSecondaryBackground?: boolean;\n}\n\nconst StickerIcon = styled('div')<Pick<StickerProps, 'variant' | 'disabled'>>`\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant);\n return disabled ? tone.colorDisabled : tone.color;\n }\n switch (variant) {\n case 'darkGrey':\n case 'red':\n return theme.color.text.inverse;\n default:\n return 'inherit';\n }\n }};\n line-height: 0;\n svg {\n width: 12px;\n height: 12px;\n }\n`;\n\nconst RequiredAsterisk = styled.span<Pick<StickerProps, 'variant' | 'disabled'>>`\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n return disabled && tokens\n ? semanticStickerTone(tokens, variant).colorDisabled\n : semanticColor(theme, 'FgDanger1', Color.TextDanger);\n }};\n /* Ensure asterisk never gets hidden and takes minimal space */\n flex-shrink: 0;\n`;\n\nexport const StickerContainer = styled(Stack)`\n padding: 2px ${Spacing[1]};\n /* Ensure container can shrink for text truncation */\n min-width: 0;\n flex: 1;\n`;\n\nexport const StickerContentContainer = styled(StickerContainer)`\n ${paragraphMixins.sm}\n padding: 0;\n`;\n\nexport const StyledTruncatedText = styled(TruncatedText)`\n ${paragraphMixins.sm}\n flex: 1;\n min-width: 0;\n line-height: 1;\n transform: translateY(0.5px);\n`;\n\nconst DismissButton = styled(IconButton)<Pick<StickerProps, 'variant' | 'disabled'>>`\n /* Note this will break if the element is not on a white background. Variable is provided to be able to override. */\n --background-color-behind-sticker: ${({ theme }) => semanticColor(theme, 'SurfacePrimary', Color.PrimaryWhite)};\n\n border: none;\n\n padding: 0 ${Spacing[1]};\n border-radius: ${BorderRadius.Sm};\n width: 1rem;\n\n height: 100%;\n\n display: inline-flex;\n align-items: center;\n\n svg {\n width: 12px;\n height: 12px;\n }\n color: ${({ theme, variant, disabled }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant);\n return disabled ? tone.colorDisabled : tone.color;\n }\n if (variant === 'red' || variant === 'darkGrey') {\n return theme.color.text.inverse;\n }\n return disabled ? 'inherit' : Color.BorderIconPrimary;\n }};\n\n &${isDisabled} {\n background-color: inherit !important;\n color: ${({ theme, variant }) => {\n const tokens = semanticTokens(theme);\n return tokens ? semanticStickerTone(tokens, variant).colorDisabled : 'inherit';\n }} !important;\n\n svg,\n svg path {\n color: inherit !important;\n }\n }\n\n &${isFocusedVisible}${isNotDisabled} {\n box-shadow: 0 0 0 1px var(--background-color-behind-sticker);\n }\n\n &${isHovered}${isNotDisabled} {\n cursor: pointer;\n\n background: ${({ theme, variant }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n return semanticStickerTone(tokens, variant).backgroundHover;\n }\n if (variant === 'grey' || variant === 'basic') {\n return Color.BackgroundLabelGreyHover;\n } else if (variant === 'darkGrey') {\n return Color.BackgroundLabelDarkGreyHover;\n } else if (variant === 'purple') {\n return Color.BackgroundLabelPurpleHover;\n } else if (variant === 'red' || variant === 'danger') {\n return Color.BackgroundLabelDarkRedHover;\n } else if (variant === 'orange') {\n return Color.BackgroundLabelOrangeHover;\n } else if (variant === 'yellow' || variant === 'caution') {\n return Color.BackgroundLabelYellowHover;\n } else if (variant === 'green' || variant === 'success') {\n return Color.BackgroundLabelGreenHover;\n } else if (variant === 'teal') {\n return Color.BackgroundLabelTealHover;\n } else if (variant === 'blue') {\n return Color.BackgroundLabelBlueHover;\n } else if (variant === 'pink') {\n return Color.BackgroundLabelRedHover;\n } else if (variant === 'white') {\n return Color.BackgroundLabelWhiteHover;\n } else {\n return 'inherit';\n }\n }};\n }\n`;\n\nconst StyledSticker = styled('div')<\n StickerProps & { sizeIcon?: boolean; $onSecondaryBackground?: boolean }\n>`\n display: inline-flex;\n white-space: nowrap;\n\n border-radius: ${BorderRadius.Sm};\n height: 1rem;\n max-width: 100%;\n\n color: ${({ theme, variant, disabled, $onSecondaryBackground }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const tone = semanticStickerTone(tokens, variant, $onSecondaryBackground);\n return disabled ? tone.colorDisabled : tone.color;\n }\n if (disabled) {\n return variant === 'red' || variant === 'darkGrey'\n ? theme.color.text.inverse\n : theme.color.text.disabled;\n }\n switch (variant) {\n case 'darkGrey':\n case 'red':\n return theme.color.text.inverse;\n default:\n return theme.color.text.primary;\n }\n }};\n background: ${({ theme, variant, disabled, $onSecondaryBackground }) => {\n const tokens = semanticTokens(theme);\n if (tokens) {\n const background = semanticStickerTone(tokens, variant, $onSecondaryBackground).background;\n return disabled ? withAlpha(background, tokens.Opacity65) : background;\n }\n if (disabled) {\n switch (variant) {\n case 'white':\n return Color.BackgroundLabelWhite;\n case 'blue':\n return Color.BackgroundLabelBlueDisabled;\n case 'teal':\n return Color.BackgroundLabelTealDisabled;\n case 'green':\n case 'success':\n return Color.BackgroundLabelGreenDisabled;\n case 'yellow':\n case 'caution':\n return Color.BackgroundLabelYellowDisabled;\n case 'orange':\n return Color.BackgroundLabelOrangeDisabled;\n case 'pink':\n case 'danger':\n return Color.BackgroundLabelRedDisabled;\n case 'red':\n return Color.BackgroundLabelDarkRedDisabled;\n case 'purple':\n case 'primary':\n return Color.BackgroundLabelPurpleDisabled;\n case 'darkGrey':\n return Color.BackgroundLabelDarkGreyDisabled;\n case 'basic':\n case 'grey':\n default:\n if ($onSecondaryBackground) {\n return Color.CoreSlate100;\n }\n return Color.BackgroundLabelGreyDisabled;\n }\n }\n switch (variant) {\n case 'white':\n return Color.BackgroundLabelWhiteDisabled;\n case 'blue':\n return Color.BackgroundLabelBlue;\n case 'teal':\n return Color.BackgroundLabelTeal;\n case 'green':\n case 'success':\n return Color.BackgroundLabelGreen;\n case 'yellow':\n case 'caution':\n return Color.BackgroundLabelYellow;\n case 'orange':\n return Color.BackgroundLabelOrange;\n case 'pink':\n case 'danger':\n return Color.BackgroundLabelRed;\n case 'red':\n return Color.BackgroundLabelDarkRed;\n case 'purple':\n case 'primary':\n return Color.BackgroundLabelPurple;\n case 'darkGrey':\n return Color.BackgroundLabelDarkGrey;\n case 'basic':\n default:\n if ($onSecondaryBackground) {\n return Color.CoreSlate200;\n }\n return Color.BackgroundLabelGrey;\n }\n }};\n`;\n\nexport const Sticker = ({\n variant,\n icon,\n children,\n onDismiss,\n disabled,\n dismissButtonProps,\n isRequired,\n onSecondaryBackground,\n ...props\n}: StickerProps) => {\n const hasContent = children != null;\n\n if (!hasContent) {\n const hasIcon = icon != null;\n if (!hasIcon) {\n console.warn('Sticker component requires content and/or an icon to render');\n return null;\n }\n\n if (hasIcon && !props['aria-label']) {\n console.warn('Sticker component requires an aria-label when only rendering an icon');\n }\n }\n\n return (\n <StyledSticker\n $onSecondaryBackground={onSecondaryBackground}\n variant={variant}\n disabled={disabled}\n sizeIcon={!!icon && !hasContent}\n {...props}\n >\n <StickerContainer direction='horizontal' align='center' spacing={Spacing[0]}>\n <StickerContentContainer direction='horizontal' align='center' spacing={Spacing[1]}>\n {icon && (\n <StickerIcon variant={variant} disabled={disabled}>\n {icon}\n </StickerIcon>\n )}\n {hasContent && <StyledTruncatedText>{children}</StyledTruncatedText>}\n </StickerContentContainer>\n {isRequired && (\n <RequiredAsterisk variant={variant} disabled={disabled}>\n *\n </RequiredAsterisk>\n )}\n </StickerContainer>\n\n {onDismiss && (\n <DismissButton\n variant={variant}\n disabled={disabled}\n id='sticker__dismiss-button'\n size='sm'\n onClick={onDismiss}\n aria-label='Remove'\n {...dismissButtonProps}\n >\n <XIcon />\n </DismissButton>\n )}\n </StyledSticker>\n );\n};\n\nexport default Sticker;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { o as Variant } from "./theme-
|
|
2
|
-
import { i as StackProps } from "./Stack-
|
|
3
|
-
import { r as TruncatedTextProps } from "./TruncatedText-
|
|
1
|
+
import { o as Variant } from "./theme-BB1B6Wkz.mjs";
|
|
2
|
+
import { i as StackProps } from "./Stack-XzBzPvSV.mjs";
|
|
3
|
+
import { r as TruncatedTextProps } from "./TruncatedText-CbTpX_R1.mjs";
|
|
4
4
|
import * as _$react from "react";
|
|
5
5
|
import { ComponentPropsWithoutRef, MouseEventHandler, ReactNode } from "react";
|
|
6
6
|
import * as _$styled_components0 from "styled-components";
|
|
@@ -65,4 +65,4 @@ declare const Sticker: ({
|
|
|
65
65
|
}: StickerProps) => _$react_jsx_runtime0.JSX.Element | null;
|
|
66
66
|
//#endregion
|
|
67
67
|
export { StickerContentContainer as a, StickerContainer as i, STICKER_COLOR_CONFIG as n, StickerProps as o, Sticker as r, StyledTruncatedText as s, LabelBackgrounds as t };
|
|
68
|
-
//# sourceMappingURL=Sticker-
|
|
68
|
+
//# sourceMappingURL=Sticker-DGfNuxUK.d.mts.map
|
package/dist/Sticker.d.mts
CHANGED
|
@@ -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-
|
|
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-DGfNuxUK.mjs";
|
|
2
2
|
export { LabelBackgrounds, STICKER_COLOR_CONFIG, Sticker, Sticker as default, StickerContainer, StickerContentContainer, StickerProps, StyledTruncatedText };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as ValueControlProps } from "./types-
|
|
1
|
+
import { t as ValueControlProps } from "./types-B0ilOIfE.mjs";
|
|
2
2
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/FiltersV2/value-controls/StringValueControl/StringValueControl.d.ts
|
package/dist/Tab.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Button } from "./Button-
|
|
1
|
+
import { t as Button } from "./Button-CnswHEJ2.mjs";
|
|
2
2
|
import { ComponentPropsWithoutRef, ElementType, ReactElement } from "react";
|
|
3
3
|
import * as _$styled_components0 from "styled-components";
|
|
4
4
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
@@ -3,8 +3,8 @@ import { semanticColor } from "./lib/semanticColor.mjs";
|
|
|
3
3
|
import { paragraphMixins } from "./mixins/text.mjs";
|
|
4
4
|
import "./variables/transitions.mjs";
|
|
5
5
|
import { isActive, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
|
|
6
|
-
import { n as Button, t as IconButton } from "./IconButton-
|
|
7
|
-
import { t as Badge } from "./Badge-
|
|
6
|
+
import { n as Button, t as IconButton } from "./IconButton-BHFCjvzs.mjs";
|
|
7
|
+
import { t as Badge } from "./Badge-D-5tbZDw.mjs";
|
|
8
8
|
import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
|
|
9
9
|
import { cloneElement, createContext, forwardRef, useContext, useRef } from "react";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -223,10 +223,7 @@ const Tab = ({ selected, disabled, children, badge, sticker, as, size, ...elemPr
|
|
|
223
223
|
...elemProps,
|
|
224
224
|
children: [
|
|
225
225
|
displayChildren,
|
|
226
|
-
badge && /* @__PURE__ */ jsx(AdornmentContainer, { children: badge.type === Badge ? cloneElement(badge, {
|
|
227
|
-
variant: selected ? "active" : "basic",
|
|
228
|
-
onSecondaryBackground: true
|
|
229
|
-
}) : badge }),
|
|
226
|
+
badge && /* @__PURE__ */ jsx(AdornmentContainer, { children: badge.type === Badge ? cloneElement(badge, { variant: selected ? "active" : "basic" }) : badge }),
|
|
230
227
|
sticker && /* @__PURE__ */ jsx(AdornmentContainer, { children: sticker })
|
|
231
228
|
]
|
|
232
229
|
});
|
|
@@ -271,4 +268,4 @@ var TabBarIconButton_default = styled(IconButton).attrs({ size: "sm" })`
|
|
|
271
268
|
//#endregion
|
|
272
269
|
export { TabContainer as a, TabBar as i, StyledTab as n, Tab as r, TabBarIconButton_default as t };
|
|
273
270
|
|
|
274
|
-
//# sourceMappingURL=TabBar-
|
|
271
|
+
//# sourceMappingURL=TabBar-BSl5v5aa.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabBar-BepWbJHz.mjs","names":["TabBarContext","TabBarContext"],"sources":["../components/TabBar/TabBarContext.ts","../components/TabBar/TabBar.tsx","../components/TabBar/Tab.tsx","../components/TabBar/TabBarIconButton.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport default createContext<{ maxTabChars?: number; size?: 'md' | 'sm' }>({});\n","import { mergeRefs } from '@react-aria/utils';\nimport {\n type ComponentPropsWithoutRef,\n type ForwardedRef,\n forwardRef,\n type KeyboardEventHandler,\n type ReactNode,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nconst TabBarContainer = styled.div`\n display: flex;\n height: ${Spacing[6]};\n position: relative;\n box-sizing: border-box;\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n justify-content: space-between;\n gap: ${Spacing[4]};\n`;\n\nconst RightActions = styled.div`\n align-self: center;\n`;\n\nconst TitleTab = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n ${paragraphMixins.mdBold};\n`;\n\nconst StyledTabContainer = styled.div<{ $size?: 'md' | 'sm' }>`\n display: flex;\n gap: ${({ $size = 'md' }) => ($size === 'sm' ? Spacing[3] : Spacing[4])};\n // These two lines prevent the overflow hidden from hiding the bottom border of the selected tab\n margin-bottom: -2px;\n padding-bottom: 2px;\n overflow: hidden;\n flex-wrap: wrap;\n`;\n\ninterface TabContainerProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabContainer = forwardRef<HTMLDivElement, TabContainerProps>(function TabContainer(\n { children, maxTabChars, size, ...props },\n forwardedRef,\n) {\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const getIndexOfCurrentTab = (list: Element[]) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return getIndex(list, document.activeElement);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (e) => {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/tab_role\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const list = getTabList(tabListRef.current.children);\n\n if (document.activeElement && !list.includes(document.activeElement)) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft': {\n // Go to previous tab\n const curIndex = getIndexOfCurrentTab(list);\n const nextIndex = curIndex === 0 ? list.length - 1 : curIndex - 1;\n (list[nextIndex] as HTMLElement).focus();\n break;\n }\n case 'ArrowRight': {\n // Go to next tab\n const curIndex = getIndexOfCurrentTab(list);\n (list[(curIndex + 1) % list.length] as HTMLElement).focus();\n break;\n }\n case 'Home': {\n // Go to first tab\n (list[0] as HTMLElement).focus();\n break;\n }\n case 'End': {\n // Go to last tab\n (list[list.length - 1] as HTMLElement).focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <TabBarContext.Provider value={{ maxTabChars, size }}>\n <StyledTabContainer\n role='tablist'\n ref={mergeRefs<HTMLDivElement>(tabListRef, forwardedRef)}\n onKeyDown={handleKeyDown}\n $size={size}\n {...props}\n >\n {children}\n </StyledTabContainer>\n </TabBarContext.Provider>\n );\n});\n\nconst getIndex = (children: Element[], element: Element) => {\n return children.indexOf(element);\n};\n\nconst getTabList = (list: HTMLCollection) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return Array.from(list).filter((e: HTMLElement) => {\n return !(e.getAttribute('aria-disabled') || e.getAttribute('disabled'));\n });\n};\n\nexport interface TabBarProps extends ComponentPropsWithoutRef<'div'> {\n actions?: ReactNode;\n title?: string;\n 'data-tour-target'?: string;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabBar = forwardRef<HTMLDivElement, TabBarProps>(function TabBar(\n {\n children,\n actions,\n title,\n 'data-tour-target': dataTourTarget,\n maxTabChars,\n size,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...elemProps\n },\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <TabBarContainer {...elemProps}>\n <TabContainer\n ref={forwardedRef}\n maxTabChars={maxTabChars}\n size={size}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {title && <TitleTab data-tour-target={dataTourTarget}>{title}</TitleTab>}\n {children}\n </TabContainer>\n {actions && <RightActions>{actions}</RightActions>}\n </TabBarContainer>\n );\n});\n\nexport default TabBar;\n","import {\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactElement,\n useContext,\n} from 'react';\nimport styled, {\n css,\n type DefaultTheme,\n type FlattenInterpolation,\n type ThemeProps,\n} from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport Badge from 'design-system/components/Badge';\nimport Button from 'design-system/components/Button';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\n/** A tab carries either a count or a label beside its text, never both. */\ntype TabAdornment =\n | { badge?: ReactElement; sticker?: never }\n | { badge?: never; sticker?: ReactElement };\n\ninterface TabBaseProps<T extends ElementType = 'button'> extends ComponentPropsWithoutRef<\n typeof Button\n> {\n selected?: boolean;\n as?: T;\n size?: 'md' | 'sm';\n}\n\ntype TabProps<T extends ElementType = 'button'> = TabBaseProps<T> & TabAdornment;\n\nconst AdornmentContainer = styled.span`\n display: inline-flex;\n vertical-align: middle;\n /* Align the atomic badge with the label's cap midpoint, not its x-height midpoint. */\n transform: translateY(calc((1ex - 1cap) / 2));\n padding: 0;\n margin-left: ${Spacing[1]};\n`;\n\nconst sizeStyles: Record<\n NonNullable<TabBaseProps['size']>,\n FlattenInterpolation<ThemeProps<DefaultTheme>>\n> = {\n md: css`\n ${paragraphMixins.md}\n `,\n sm: css`\n ${paragraphMixins.sm}\n `,\n};\n\nconst tabSelectedStyle = css`\n color: ${({ theme }) => semanticColor(theme, 'FgAccent', theme.color.primary.brand)};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n box-shadow: none;\n &:after {\n transition: border-bottom-color ${TransitionDuration.Fast};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n }\n`;\n\nexport const StyledTab = styled(Button).attrs<TabBaseProps>({\n width: 'auto',\n variant: 'basic',\n})<TabBaseProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n white-space: nowrap;\n background-color: transparent;\n color: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'FgDisabled', theme.color.variants.basic.textDisabled)\n : semanticColor(theme, 'FgSecondary', theme.color.text.tertiary)};\n transition: color ${TransitionDuration.Fast} ease-out;\n height: 32px;\n margin: 0;\n padding: 0;\n ${({ size }) => sizeStyles[size || 'md']};\n outline: none;\n border-radius: ${({ theme }) => theme.button.borderRadius};\n\n a {\n color: currentColor;\n }\n\n /* remove default button focused/hovered box shadow */\n &${isActive}${isNotDisabled} {\n background-color: unset;\n }\n &${isHovered}${isNotDisabled} {\n background-color: unset;\n ${({ selected, theme }) =>\n !selected &&\n css`\n color: ${semanticColor(theme, 'FgPrimary', Color.TextPrimary)};\n `}\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n background-color: unset;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n background-color: unset;\n }\n &:disabled {\n background-color: unset;\n }\n\n &:after {\n position: absolute;\n bottom: 0px;\n width: 100%;\n border-bottom: 1px solid transparent;\n content: '';\n }\n\n &.selected,\n &.active {\n ${tabSelectedStyle}\n }\n\n ${({ selected }) => selected && tabSelectedStyle}\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: default;\n `}\n\n a& {\n text-decoration: none;\n }\n`;\n\n/**\n * Helper function to truncate text if it exceeds maxCharacters\n */\nconst truncateText = (text: string, maxCharacters: number): string => {\n if (text.length <= maxCharacters) {\n return text;\n }\n return `${text.substring(0, maxCharacters).trimEnd()}...`;\n};\n\nconst Tab = <T extends ElementType = 'button'>({\n selected,\n disabled,\n children,\n badge,\n sticker,\n as,\n size,\n ...elemProps\n}: TabProps<T> & ComponentPropsWithoutRef<T>) => {\n const { maxTabChars, size: contextSize } = useContext(TabBarContext);\n const finalSize = size || contextSize || 'md';\n\n // Truncate text if maxTabChars is provided and children is a string\n const hasTruncation = maxTabChars && typeof children === 'string';\n const displayChildren = hasTruncation ? truncateText(children, maxTabChars) : children;\n\n return (\n <StyledTab\n role='tab'\n selected={selected}\n aria-selected={selected}\n aria-disabled={disabled}\n disabled={disabled}\n as={as as ElementType}\n size={finalSize}\n title={hasTruncation ? children : undefined}\n {...elemProps}\n >\n {displayChildren}\n {badge && (\n <AdornmentContainer>\n {badge.type === Badge\n ? cloneElement(badge, {\n variant: selected ? 'active' : 'basic',\n onSecondaryBackground: true,\n })\n : badge}\n </AdornmentContainer>\n )}\n {sticker && <AdornmentContainer>{sticker}</AdornmentContainer>}\n </StyledTab>\n );\n};\n\nexport default Tab;\n","import styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { IconButton } from 'design-system/components/Button';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nexport default styled(IconButton).attrs({\n size: 'sm',\n})`\n padding-left: ${Spacing[2]};\n padding-right: ${Spacing[2]};\n border-radius: ${BorderRadius.Sm};\n\n // remove default button focused/hovered box shadow\n &${isActive}${isNotDisabled} {\n background-color: transparent;\n }\n &${isHovered}${isNotDisabled} {\n box-shadow: none;\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &:disabled {\n background-color: transparent;\n }\n &:focus-visible${isNotDisabled}, &${isHovered}${isNotDisabled}:focus-visible {\n box-shadow: 0 0 0 3px ${({ theme }) => semanticColor(theme, 'ActionNeutralActive', theme.color.variants.basic.highlight)};\n }\n\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.CoreSlate800)};\n }\n\n &:hover {\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.CoreSlate900)};\n }\n }\n`;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TabBar-BSl5v5aa.mjs","names":["TabBarContext","TabBarContext"],"sources":["../components/TabBar/TabBarContext.ts","../components/TabBar/TabBar.tsx","../components/TabBar/Tab.tsx","../components/TabBar/TabBarIconButton.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport default createContext<{ maxTabChars?: number; size?: 'md' | 'sm' }>({});\n","import { mergeRefs } from '@react-aria/utils';\nimport {\n type ComponentPropsWithoutRef,\n type ForwardedRef,\n forwardRef,\n type KeyboardEventHandler,\n type ReactNode,\n useRef,\n} from 'react';\nimport styled from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\nconst TabBarContainer = styled.div`\n display: flex;\n height: ${Spacing[6]};\n position: relative;\n box-sizing: border-box;\n border-bottom: 1px solid ${({ theme }) => semanticColor(theme, 'BorderSubtle', Color.BorderDivider)};\n justify-content: space-between;\n gap: ${Spacing[4]};\n`;\n\nconst RightActions = styled.div`\n align-self: center;\n`;\n\nconst TitleTab = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n ${paragraphMixins.mdBold};\n`;\n\nconst StyledTabContainer = styled.div<{ $size?: 'md' | 'sm' }>`\n display: flex;\n gap: ${({ $size = 'md' }) => ($size === 'sm' ? Spacing[3] : Spacing[4])};\n // These two lines prevent the overflow hidden from hiding the bottom border of the selected tab\n margin-bottom: -2px;\n padding-bottom: 2px;\n overflow: hidden;\n flex-wrap: wrap;\n`;\n\ninterface TabContainerProps extends ComponentPropsWithoutRef<'div'> {\n children: ReactNode;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabContainer = forwardRef<HTMLDivElement, TabContainerProps>(function TabContainer(\n { children, maxTabChars, size, ...props },\n forwardedRef,\n) {\n const tabListRef = useRef<HTMLDivElement>(null);\n\n const getIndexOfCurrentTab = (list: Element[]) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return getIndex(list, document.activeElement);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLDivElement> = (e) => {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/tab_role\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n const list = getTabList(tabListRef.current.children);\n\n if (document.activeElement && !list.includes(document.activeElement)) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowLeft': {\n // Go to previous tab\n const curIndex = getIndexOfCurrentTab(list);\n const nextIndex = curIndex === 0 ? list.length - 1 : curIndex - 1;\n (list[nextIndex] as HTMLElement).focus();\n break;\n }\n case 'ArrowRight': {\n // Go to next tab\n const curIndex = getIndexOfCurrentTab(list);\n (list[(curIndex + 1) % list.length] as HTMLElement).focus();\n break;\n }\n case 'Home': {\n // Go to first tab\n (list[0] as HTMLElement).focus();\n break;\n }\n case 'End': {\n // Go to last tab\n (list[list.length - 1] as HTMLElement).focus();\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <TabBarContext.Provider value={{ maxTabChars, size }}>\n <StyledTabContainer\n role='tablist'\n ref={mergeRefs<HTMLDivElement>(tabListRef, forwardedRef)}\n onKeyDown={handleKeyDown}\n $size={size}\n {...props}\n >\n {children}\n </StyledTabContainer>\n </TabBarContext.Provider>\n );\n});\n\nconst getIndex = (children: Element[], element: Element) => {\n return children.indexOf(element);\n};\n\nconst getTabList = (list: HTMLCollection) => {\n /* @ts-expect-error [strict-migration] The following line is not strict; please fix! */\n return Array.from(list).filter((e: HTMLElement) => {\n return !(e.getAttribute('aria-disabled') || e.getAttribute('disabled'));\n });\n};\n\nexport interface TabBarProps extends ComponentPropsWithoutRef<'div'> {\n actions?: ReactNode;\n title?: string;\n 'data-tour-target'?: string;\n /**\n * Truncate tab text to the specified number of characters.\n */\n maxTabChars?: number;\n /**\n * Size of the tabs. Affects font size.\n */\n size?: 'md' | 'sm';\n}\n\nexport const TabBar = forwardRef<HTMLDivElement, TabBarProps>(function TabBar(\n {\n children,\n actions,\n title,\n 'data-tour-target': dataTourTarget,\n maxTabChars,\n size,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...elemProps\n },\n forwardedRef: ForwardedRef<HTMLDivElement>,\n) {\n return (\n <TabBarContainer {...elemProps}>\n <TabContainer\n ref={forwardedRef}\n maxTabChars={maxTabChars}\n size={size}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {title && <TitleTab data-tour-target={dataTourTarget}>{title}</TitleTab>}\n {children}\n </TabContainer>\n {actions && <RightActions>{actions}</RightActions>}\n </TabBarContainer>\n );\n});\n\nexport default TabBar;\n","import {\n cloneElement,\n type ComponentPropsWithoutRef,\n type ElementType,\n type ReactElement,\n useContext,\n} from 'react';\nimport styled, {\n css,\n type DefaultTheme,\n type FlattenInterpolation,\n type ThemeProps,\n} from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport Badge from 'design-system/components/Badge';\nimport Button from 'design-system/components/Button';\nimport TabBarContext from 'design-system/components/TabBar/TabBarContext';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\n/** A tab carries either a count or a label beside its text, never both. */\ntype TabAdornment =\n | { badge?: ReactElement; sticker?: never }\n | { badge?: never; sticker?: ReactElement };\n\ninterface TabBaseProps<T extends ElementType = 'button'> extends ComponentPropsWithoutRef<\n typeof Button\n> {\n selected?: boolean;\n as?: T;\n size?: 'md' | 'sm';\n}\n\ntype TabProps<T extends ElementType = 'button'> = TabBaseProps<T> & TabAdornment;\n\nconst AdornmentContainer = styled.span`\n display: inline-flex;\n vertical-align: middle;\n /* Align the atomic badge with the label's cap midpoint, not its x-height midpoint. */\n transform: translateY(calc((1ex - 1cap) / 2));\n padding: 0;\n margin-left: ${Spacing[1]};\n`;\n\nconst sizeStyles: Record<\n NonNullable<TabBaseProps['size']>,\n FlattenInterpolation<ThemeProps<DefaultTheme>>\n> = {\n md: css`\n ${paragraphMixins.md}\n `,\n sm: css`\n ${paragraphMixins.sm}\n `,\n};\n\nconst tabSelectedStyle = css`\n color: ${({ theme }) => semanticColor(theme, 'FgAccent', theme.color.primary.brand)};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n box-shadow: none;\n &:after {\n transition: border-bottom-color ${TransitionDuration.Fast};\n border-bottom-color: ${({ theme }) => semanticColor(theme, 'BorderAccent', theme.color.primary.brand)};\n }\n`;\n\nexport const StyledTab = styled(Button).attrs<TabBaseProps>({\n width: 'auto',\n variant: 'basic',\n})<TabBaseProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n white-space: nowrap;\n background-color: transparent;\n color: ${({ theme, disabled }) =>\n disabled\n ? semanticColor(theme, 'FgDisabled', theme.color.variants.basic.textDisabled)\n : semanticColor(theme, 'FgSecondary', theme.color.text.tertiary)};\n transition: color ${TransitionDuration.Fast} ease-out;\n height: 32px;\n margin: 0;\n padding: 0;\n ${({ size }) => sizeStyles[size || 'md']};\n outline: none;\n border-radius: ${({ theme }) => theme.button.borderRadius};\n\n a {\n color: currentColor;\n }\n\n /* remove default button focused/hovered box shadow */\n &${isActive}${isNotDisabled} {\n background-color: unset;\n }\n &${isHovered}${isNotDisabled} {\n background-color: unset;\n ${({ selected, theme }) =>\n !selected &&\n css`\n color: ${semanticColor(theme, 'FgPrimary', Color.TextPrimary)};\n `}\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n background-color: unset;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n background-color: unset;\n }\n &:disabled {\n background-color: unset;\n }\n\n &:after {\n position: absolute;\n bottom: 0px;\n width: 100%;\n border-bottom: 1px solid transparent;\n content: '';\n }\n\n &.selected,\n &.active {\n ${tabSelectedStyle}\n }\n\n ${({ selected }) => selected && tabSelectedStyle}\n\n ${({ disabled }) =>\n disabled &&\n css`\n cursor: default;\n `}\n\n a& {\n text-decoration: none;\n }\n`;\n\n/**\n * Helper function to truncate text if it exceeds maxCharacters\n */\nconst truncateText = (text: string, maxCharacters: number): string => {\n if (text.length <= maxCharacters) {\n return text;\n }\n return `${text.substring(0, maxCharacters).trimEnd()}...`;\n};\n\nconst Tab = <T extends ElementType = 'button'>({\n selected,\n disabled,\n children,\n badge,\n sticker,\n as,\n size,\n ...elemProps\n}: TabProps<T> & ComponentPropsWithoutRef<T>) => {\n const { maxTabChars, size: contextSize } = useContext(TabBarContext);\n const finalSize = size || contextSize || 'md';\n\n // Truncate text if maxTabChars is provided and children is a string\n const hasTruncation = maxTabChars && typeof children === 'string';\n const displayChildren = hasTruncation ? truncateText(children, maxTabChars) : children;\n\n return (\n <StyledTab\n role='tab'\n selected={selected}\n aria-selected={selected}\n aria-disabled={disabled}\n disabled={disabled}\n as={as as ElementType}\n size={finalSize}\n title={hasTruncation ? children : undefined}\n {...elemProps}\n >\n {displayChildren}\n {badge && (\n <AdornmentContainer>\n {badge.type === Badge\n ? cloneElement(badge, {\n variant: selected ? 'active' : 'basic',\n })\n : badge}\n </AdornmentContainer>\n )}\n {sticker && <AdornmentContainer>{sticker}</AdornmentContainer>}\n </StyledTab>\n );\n};\n\nexport default Tab;\n","import styled from 'styled-components';\n\nimport { BorderRadius, Color, Spacing } from '@persona/design-tokens';\nimport { IconButton } from 'design-system/components/Button';\nimport { isActive, isFocused, isHovered, isNotDisabled } from 'design-system/lib/pseudoClass';\nimport { semanticColor } from 'design-system/lib/semanticColor';\n\nexport default styled(IconButton).attrs({\n size: 'sm',\n})`\n padding-left: ${Spacing[2]};\n padding-right: ${Spacing[2]};\n border-radius: ${BorderRadius.Sm};\n\n // remove default button focused/hovered box shadow\n &${isActive}${isNotDisabled} {\n background-color: transparent;\n }\n &${isHovered}${isNotDisabled} {\n box-shadow: none;\n }\n &${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &${isHovered}${isFocused}${isNotDisabled} {\n box-shadow: none;\n }\n &:disabled {\n background-color: transparent;\n }\n &:focus-visible${isNotDisabled}, &${isHovered}${isNotDisabled}:focus-visible {\n box-shadow: 0 0 0 3px ${({ theme }) => semanticColor(theme, 'ActionNeutralActive', theme.color.variants.basic.highlight)};\n }\n\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgSecondary', Color.CoreSlate800)};\n }\n\n &:hover {\n svg {\n color: ${({ theme }) => semanticColor(theme, 'FgPrimary', Color.CoreSlate900)};\n }\n }\n`;\n"],"mappings":"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"}
|