@persona/design-system 0.1.8 → 0.1.9
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 +12 -0
- package/README.md +20 -1
- package/dist/Attribute.d.mts +1 -1
- package/dist/{Badge-DortWowZ.mjs → Badge-DEVbRlJX.mjs} +2 -2
- package/dist/{Badge-DortWowZ.mjs.map → Badge-DEVbRlJX.mjs.map} +1 -1
- package/dist/{Breadcrumbs-CDZ_Mrcg.mjs → Breadcrumbs-W8hIhdHD.mjs} +3 -3
- package/dist/{Breadcrumbs-CDZ_Mrcg.mjs.map → Breadcrumbs-W8hIhdHD.mjs.map} +1 -1
- package/dist/{Button-9p469xA1.d.mts → Button-Vd5O4DUp.d.mts} +3 -3
- package/dist/Button.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{CardV2-C9z0Hr-c.mjs → CardV2-C0fcOUdp.mjs} +5 -5
- package/dist/{CardV2-C9z0Hr-c.mjs.map → CardV2-C0fcOUdp.mjs.map} +1 -1
- package/dist/{Checkbox-B0bjZbji.mjs → Checkbox-BcuiFvK7.mjs} +2 -2
- package/dist/{Checkbox-B0bjZbji.mjs.map → Checkbox-BcuiFvK7.mjs.map} +1 -1
- package/dist/{Combobox-BdqU5WLG.mjs → Combobox-B6JyLog8.mjs} +13 -7
- package/dist/Combobox-B6JyLog8.mjs.map +1 -0
- package/dist/{Combobox-DBWMHwUt.d.cts → Combobox-BaD0f2Du.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-BsY7CYoB.d.mts → ComboboxBase-BsPf8BZh.d.mts} +8 -3
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-dNuETspL.d.mts → ComboboxMultiSelect-DhLzCWbz.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-C8KvIJ43.d.mts → ComboboxSingleSelect-P0r5rs_u.d.mts} +3 -3
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/DataTable.d.mts +9 -0
- package/dist/{DatePicker-DY1YA_Fu.mjs → DatePicker-Bw79p-Lx.mjs} +5 -5
- package/dist/{DatePicker-DY1YA_Fu.mjs.map → DatePicker-Bw79p-Lx.mjs.map} +1 -1
- package/dist/{DropdownButton-DKLjJylQ.mjs → DropdownButton-BI3IFJun.mjs} +3 -3
- package/dist/{DropdownButton-DKLjJylQ.mjs.map → DropdownButton-BI3IFJun.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-DGYexb7s.mjs → DropdownMenu-D25WBCah.mjs} +2 -2
- package/dist/{DropdownMenu-DGYexb7s.mjs.map → DropdownMenu-D25WBCah.mjs.map} +1 -1
- package/dist/{DropdownMenu-CVPanvKA.d.mts → DropdownMenu-D6nfAsi0.d.mts} +2 -2
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{FormControl-B28qa7aQ.mjs → FormControl-CFU9uKF7.mjs} +2 -2
- package/dist/{FormControl-B28qa7aQ.mjs.map → FormControl-CFU9uKF7.mjs.map} +1 -1
- package/dist/{FormField-PeYYRO4s.mjs → FormField-DdmgSWq4.mjs} +14 -11
- package/dist/{FormField-PeYYRO4s.mjs.map → FormField-DdmgSWq4.mjs.map} +1 -1
- package/dist/{HoverCopyableField-ClXBg_ld.mjs → HoverCopyableField-7TWP0Y1Z.mjs} +3 -3
- package/dist/{HoverCopyableField-ClXBg_ld.mjs.map → HoverCopyableField-7TWP0Y1Z.mjs.map} +1 -1
- package/dist/{IconButton-ZcyTFjPn.d.cts → IconButton-BHCmHIx5.d.mts} +2 -2
- package/dist/{IconButton-CIWiEsS-.mjs → IconButton-P8w0JDI5.mjs} +2 -2
- package/dist/{IconButton-CIWiEsS-.mjs.map → IconButton-P8w0JDI5.mjs.map} +1 -1
- package/dist/IconButton.d.mts +1 -1
- package/dist/InlineCombobox.d.mts +1 -1
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-BPClVzwD.d.mts → Input-DMgVyZyq.d.mts} +3 -3
- package/dist/{Input-BFI_e7aU.mjs → Input-QC6xla6I.mjs} +2 -2
- package/dist/Input-QC6xla6I.mjs.map +1 -0
- package/dist/Input.d.mts +1 -1
- package/dist/{ListBox-_fcSPynx.d.mts → ListBox-D09N1a5D.d.mts} +8 -3
- package/dist/{ListBox-BwID8jpk.mjs → ListBox-TrL3Tb7X.mjs} +13 -7
- package/dist/ListBox-TrL3Tb7X.mjs.map +1 -0
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField.d.mts +2 -2
- package/dist/{LogicRow-BtCKGX_j.d.mts → LogicRow-BcuiSTHN.d.mts} +2 -2
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +1 -1
- package/dist/{Menu-CUp_9HgC.d.mts → Menu-Bv8dsrz6.d.mts} +2 -2
- package/dist/{Menu-CPYXo61N.mjs → Menu-DmeMgN-i.mjs} +2 -2
- package/dist/{Menu-CPYXo61N.mjs.map → Menu-DmeMgN-i.mjs.map} +1 -1
- package/dist/Menu.d.mts +1 -1
- package/dist/Modal.d.mts +1 -1
- package/dist/{PageHeader-D-6W61E_.mjs → PageHeader-jSLud2JI.mjs} +5 -4
- package/dist/PageHeader-jSLud2JI.mjs.map +1 -0
- package/dist/PageHeader.d.mts +7 -2
- package/dist/{Pagination-ztqhywAP.mjs → Pagination-BeYukNCj.mjs} +4 -4
- package/dist/{Pagination-ztqhywAP.mjs.map → Pagination-BeYukNCj.mjs.map} +1 -1
- package/dist/{Pii-DrrtEz7U.mjs → Pii-QsTrz8wn.mjs} +2 -2
- package/dist/{Pii-DrrtEz7U.mjs.map → Pii-QsTrz8wn.mjs.map} +1 -1
- package/dist/{Select-2KbtKawr.d.mts → Select-Bk27TgN8.d.mts} +2 -2
- package/dist/{Select-cPEORy70.mjs → Select-C1ZoRk39.mjs} +4 -4
- package/dist/{Select-cPEORy70.mjs.map → Select-C1ZoRk39.mjs.map} +1 -1
- package/dist/Select.d.mts +1 -1
- package/dist/{Sticker-DbqKLe33.mjs → Sticker-CyGb9dEu.mjs} +2 -2
- package/dist/{Sticker-DbqKLe33.mjs.map → Sticker-CyGb9dEu.mjs.map} +1 -1
- package/dist/Tab.d.mts +13 -4
- package/dist/{TabBar-zSA8kyE6.mjs → TabBar-Bn8PHHBZ.mjs} +15 -9
- package/dist/TabBar-Bn8PHHBZ.mjs.map +1 -0
- package/dist/TabBarIconButton.d.mts +1 -1
- package/dist/{Table-D8IcpACv.mjs → Table-BfontAeY.mjs} +7 -5
- package/dist/{Table-D8IcpACv.mjs.map → Table-BfontAeY.mjs.map} +1 -1
- package/dist/{TableBox-luasMC73.mjs → TableBox-bmrKh_ax.mjs} +86 -35
- package/dist/TableBox-bmrKh_ax.mjs.map +1 -0
- package/dist/TableBox.d.mts +1 -1
- package/dist/{TableBoxCell-By1xE6_Q.d.mts → TableBoxCell-CvjLYhTV.d.mts} +21 -7
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +7 -4
- package/dist/{TableBoxRow-CsRPRPQ-.d.mts → TableBoxRow-BzXECgid.d.mts} +2 -2
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-DMYOI8Do.d.mts → TableBoxRowActions-BAiFXiCh.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/{TableControls-DHMs7o58.mjs → TableControls-DVTtNAPo.mjs} +11 -11
- package/dist/{TableControls-DHMs7o58.mjs.map → TableControls-DVTtNAPo.mjs.map} +1 -1
- package/dist/{TableLayout-Ct0kepcA.d.cts → TableLayout-BZeP8qfg.d.mts} +7 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{Tooltip-C6AR1xT-.mjs → Tooltip-BvDbmXak.mjs} +2 -2
- package/dist/{Tooltip-C6AR1xT-.mjs.map → Tooltip-BvDbmXak.mjs.map} +1 -1
- package/dist/components/Attribute/index.mjs +3 -3
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +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 +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/DataTable/TableControls/index.mjs +1 -1
- package/dist/components/DataTable/index.mjs +14 -12
- package/dist/components/DataTable/index.mjs.map +1 -1
- package/dist/components/DataTable/types.d.mts +1 -1
- 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/FormControl/index.mjs +1 -1
- package/dist/components/FormField/index.d.mts +2 -2
- package/dist/components/FormField/index.mjs +2 -2
- package/dist/components/HoverCopyableField/index.mjs +1 -1
- package/dist/components/ImageTile/index.mjs +4 -4
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/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.mjs +2 -2
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/ProgressBar/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/Sticker/index.mjs +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +1 -1
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +1 -1
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +2 -2
- package/dist/components/Toast/index.mjs +1 -1
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/fieldPickerOptions.d.mts +1 -1
- package/dist/{index-IlwGkCAe2.d.mts → index-BxXTpeUb2.d.mts} +4 -3
- package/dist/inputFields.d.mts +4 -4
- package/dist/layouts/LayoutLoadingShimmer/index.mjs +3 -3
- package/dist/lib/TruncatedTextWithTooltip.mjs +1 -1
- package/dist/lib/useScrollOverflow.d.mts +7 -0
- package/dist/lib/useScrollOverflow.mjs +22 -1
- package/dist/lib/useScrollOverflow.mjs.map +1 -1
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/package.json +202 -746
- package/skills/ui-authoring/COMPONENTS.md +331 -0
- package/skills/ui-authoring/EXAMPLES.md +370 -0
- package/skills/ui-authoring/REFERENCE.md +293 -0
- package/skills/ui-authoring/SKILL.md +237 -0
- package/dist/Action-E90Wvqmc.d.cts +0 -35
- package/dist/Action.d.cts +0 -2
- package/dist/Attribute.d.cts +0 -107
- package/dist/AttributeGrid.d.cts +0 -40
- package/dist/Badge-ADPloFsd.cjs +0 -38
- package/dist/Badge-ADPloFsd.cjs.map +0 -1
- package/dist/Badge.d.cts +0 -25
- package/dist/Banner.d.cts +0 -48
- package/dist/Breadcrumb-VH-Mwo-M.d.cts +0 -44
- package/dist/Breadcrumb.d.cts +0 -2
- package/dist/Breadcrumbs-BBREROrw.d.cts +0 -26
- package/dist/Breadcrumbs-tR49JqAS.cjs +0 -295
- package/dist/Breadcrumbs-tR49JqAS.cjs.map +0 -1
- package/dist/Breadcrumbs.d.cts +0 -2
- package/dist/Button-C_3p5Xfi.d.cts +0 -101
- package/dist/Button.d.cts +0 -2
- package/dist/ButtonGroup.d.cts +0 -20
- package/dist/Calendar.d.cts +0 -11
- package/dist/Card-CJPEmUvg.d.cts +0 -52
- package/dist/Card-Csz-PxX0.cjs +0 -248
- package/dist/Card-Csz-PxX0.cjs.map +0 -1
- package/dist/Card.d.cts +0 -2
- package/dist/Card2.d.cts +0 -95
- package/dist/CardV2-DJXgFomd.cjs +0 -419
- package/dist/CardV2-DJXgFomd.cjs.map +0 -1
- package/dist/Checkbox-CmCujC1W.cjs +0 -183
- package/dist/Checkbox-CmCujC1W.cjs.map +0 -1
- package/dist/Checkbox-Cr8ifm10.d.cts +0 -46
- package/dist/Checkbox.d.cts +0 -2
- package/dist/CheckboxGroupField.d.cts +0 -24
- package/dist/Combobox-BdqU5WLG.mjs.map +0 -1
- package/dist/Combobox-C99xluaM.d.mts +0 -11
- package/dist/Combobox-COXvmxlM.cjs +0 -1877
- package/dist/Combobox-COXvmxlM.cjs.map +0 -1
- package/dist/Combobox.d.cts +0 -3
- package/dist/ComboboxBase-zZ3tE-dH.d.cts +0 -361
- package/dist/ComboboxBase.d.cts +0 -2
- package/dist/ComboboxMultiSelect-ioB4Jx7_.d.cts +0 -47
- package/dist/ComboboxMultiSelect.d.cts +0 -2
- package/dist/ComboboxSingleSelect-Fn80tdhz.d.cts +0 -35
- package/dist/ComboboxSingleSelect.d.cts +0 -2
- package/dist/CompactBar-BEAK55kh.d.cts +0 -21
- package/dist/CompactBar.d.cts +0 -2
- package/dist/ConfigFormGroup-m5YdVa9n.cjs +0 -35
- package/dist/ConfigFormGroup-m5YdVa9n.cjs.map +0 -1
- package/dist/ConfigFormGroup.d.cts +0 -7
- package/dist/ControlBar-D8CirAyZ.d.cts +0 -151
- package/dist/ControlBar.d.cts +0 -2
- package/dist/DataTable.d.cts +0 -372
- package/dist/DateField.d.cts +0 -23
- package/dist/DatePicker-BlCgFb7g.cjs +0 -948
- package/dist/DatePicker-BlCgFb7g.cjs.map +0 -1
- package/dist/DatePicker.d.cts +0 -19
- package/dist/DateRangePicker.d.cts +0 -52
- package/dist/DropdownButton-Dl7IEzAc.cjs +0 -32
- package/dist/DropdownButton-Dl7IEzAc.cjs.map +0 -1
- package/dist/DropdownButton.d.cts +0 -26
- package/dist/DropdownMenu-DnlQqTjs.cjs +0 -74
- package/dist/DropdownMenu-DnlQqTjs.cjs.map +0 -1
- package/dist/DropdownMenu-FkiManPP.d.cts +0 -75
- package/dist/DropdownMenu.d.cts +0 -2
- package/dist/ErrorProps-Dxqb4gw_.d.cts +0 -8
- package/dist/ErrorProps.d.cts +0 -2
- package/dist/FieldRegistry-OX60T3hr.d.cts +0 -122
- package/dist/FieldRegistry.d.cts +0 -2
- package/dist/FilterBar-YzOh02f9.d.cts +0 -103
- package/dist/FilterBar.d.cts +0 -2
- package/dist/FloatingActionBar.d.cts +0 -40
- package/dist/FormControl-DFp_qcW1.d.cts +0 -60
- package/dist/FormControl-MkBXuUF6.cjs +0 -212
- package/dist/FormControl-MkBXuUF6.cjs.map +0 -1
- package/dist/FormControl.d.cts +0 -2
- package/dist/FormField-D3XhxTMg.cjs +0 -550
- package/dist/FormField-D3XhxTMg.cjs.map +0 -1
- package/dist/FormField-idNLw5PW.d.cts +0 -69
- package/dist/FormField.d.cts +0 -2
- package/dist/Header-C-WhPOin.d.cts +0 -35
- package/dist/Header.d.cts +0 -2
- package/dist/HelperTooltip-T-sTGGLD.d.cts +0 -20
- package/dist/HelperTooltip.d.cts +0 -2
- package/dist/HoverCopyableField-CRkM7o4B.cjs +0 -110
- package/dist/HoverCopyableField-CRkM7o4B.cjs.map +0 -1
- package/dist/HoverCopyableField.d.cts +0 -16
- package/dist/IconButton-BSES_-6g.d.mts +0 -24
- package/dist/IconButton-nlgjJQCS.cjs +0 -372
- package/dist/IconButton-nlgjJQCS.cjs.map +0 -1
- package/dist/IconButton.d.cts +0 -2
- package/dist/ImageTile.d.cts +0 -60
- package/dist/Input-BFI_e7aU.mjs.map +0 -1
- package/dist/Input-BM0DzWEf.d.cts +0 -65
- package/dist/Input-OJPQ07TW.cjs +0 -209
- package/dist/Input-OJPQ07TW.cjs.map +0 -1
- package/dist/Input.d.cts +0 -2
- package/dist/InputProps-CoVNpQSj.d.cts +0 -16
- package/dist/InputProps.d.cts +0 -2
- package/dist/Inserter.d.cts +0 -12
- package/dist/LayoutLoadingShimmer.d.cts +0 -20
- package/dist/Link.d.cts +0 -43
- package/dist/ListBox-BP1eaG7L.cjs +0 -448
- package/dist/ListBox-BP1eaG7L.cjs.map +0 -1
- package/dist/ListBox-BwID8jpk.mjs.map +0 -1
- package/dist/ListBox-QaeRQBSC.d.cts +0 -138
- package/dist/ListBox.d.cts +0 -2
- package/dist/ListBoxField.d.cts +0 -46
- package/dist/LoadingShimmer-Dx6ncVUV.cjs +0 -92
- package/dist/LoadingShimmer-Dx6ncVUV.cjs.map +0 -1
- package/dist/LoadingShimmer.d.cts +0 -38
- package/dist/LogicRow-C6lrFIq0.d.cts +0 -40
- package/dist/LogicRow.d.cts +0 -2
- package/dist/MaskedInput.d.cts +0 -10
- package/dist/MatchHighlight.d.cts +0 -11
- package/dist/Menu-fUnbIYr5.d.cts +0 -70
- package/dist/Menu-t2q8NrV0.cjs +0 -217
- package/dist/Menu-t2q8NrV0.cjs.map +0 -1
- package/dist/Menu.d.cts +0 -2
- package/dist/MiddleTruncatedText-CO76xIqP.cjs +0 -178
- package/dist/MiddleTruncatedText-CO76xIqP.cjs.map +0 -1
- package/dist/Modal.d.cts +0 -146
- package/dist/PageHeader-CUDnarkt.cjs +0 -77
- package/dist/PageHeader-CUDnarkt.cjs.map +0 -1
- package/dist/PageHeader-D-6W61E_.mjs.map +0 -1
- package/dist/PageHeader.d.cts +0 -35
- package/dist/PageSelector-CNnVp3Al.d.cts +0 -30
- package/dist/PageSelector.d.cts +0 -2
- package/dist/Pagination-2Yo1vRJZ.cjs +0 -236
- package/dist/Pagination-2Yo1vRJZ.cjs.map +0 -1
- package/dist/Pagination-D04tn-tf.d.cts +0 -39
- package/dist/Pagination.d.cts +0 -2
- package/dist/Pii-DHTb3ewO.cjs +0 -25
- package/dist/Pii-DHTb3ewO.cjs.map +0 -1
- package/dist/Pii.d.cts +0 -16
- package/dist/Popover-BzgMAhsX.cjs +0 -168
- package/dist/Popover-BzgMAhsX.cjs.map +0 -1
- package/dist/Popover.d.cts +0 -90
- package/dist/ProgressBar.d.cts +0 -83
- package/dist/ProgressIndicator.d.cts +0 -64
- package/dist/PseudoClassProps-C5jpj6Rp.d.cts +0 -12
- package/dist/PseudoClassProps.d.cts +0 -2
- package/dist/Radio-BrTzy7-C.cjs +0 -154
- package/dist/Radio-BrTzy7-C.cjs.map +0 -1
- package/dist/Radio.d.cts +0 -21
- package/dist/RadioGroup-CriF2InQ.cjs +0 -57
- package/dist/RadioGroup-CriF2InQ.cjs.map +0 -1
- package/dist/RadioGroup-XYWjprsv.d.cts +0 -21
- package/dist/RadioGroup.d.cts +0 -2
- package/dist/SearchInput-CTI59-NW.d.cts +0 -46
- package/dist/SearchInput.d.cts +0 -2
- package/dist/SectionHeading-C6hjGdK-.d.cts +0 -71
- package/dist/SectionHeading.d.cts +0 -2
- package/dist/SegmentedControl-C2XZF0ys.cjs +0 -125
- package/dist/SegmentedControl-C2XZF0ys.cjs.map +0 -1
- package/dist/SegmentedControl-nHIK1ZvR.d.cts +0 -59
- package/dist/SegmentedControl.d.cts +0 -2
- package/dist/Select-BH3hXMxp.d.cts +0 -83
- package/dist/Select-BurtT6bN.cjs +0 -265
- package/dist/Select-BurtT6bN.cjs.map +0 -1
- package/dist/Select.d.cts +0 -2
- package/dist/Slider.d.cts +0 -51
- package/dist/SliderRHF.d.cts +0 -18
- package/dist/Spacer-B2CerL6e.cjs +0 -20
- package/dist/Spacer-B2CerL6e.cjs.map +0 -1
- package/dist/Spacer.d.cts +0 -17
- package/dist/Spinner-B6bx70yR.cjs +0 -48
- package/dist/Spinner-B6bx70yR.cjs.map +0 -1
- package/dist/Spinner.d.cts +0 -26
- package/dist/Stack-BzVkf3cz.d.cts +0 -47
- package/dist/Stack-UeifHn3c.cjs +0 -53
- package/dist/Stack-UeifHn3c.cjs.map +0 -1
- package/dist/Stack.d.cts +0 -2
- package/dist/StatusIndicator.d.cts +0 -82
- package/dist/Sticker-CI-XxUmM.d.cts +0 -68
- package/dist/Sticker-CIoseh9f.cjs +0 -244
- package/dist/Sticker-CIoseh9f.cjs.map +0 -1
- package/dist/Sticker.d.cts +0 -2
- package/dist/SwatchPicker.d.cts +0 -18
- package/dist/Tab.d.cts +0 -26
- package/dist/TabBar-PFaDNRw0.cjs +0 -298
- package/dist/TabBar-PFaDNRw0.cjs.map +0 -1
- package/dist/TabBar-zSA8kyE6.mjs.map +0 -1
- package/dist/TabBar.d.cts +0 -33
- package/dist/TabBarIconButton.d.cts +0 -10
- package/dist/Table-DXqyNohc.d.cts +0 -13
- package/dist/Table-DxLvJYWK.cjs +0 -478
- package/dist/Table-DxLvJYWK.cjs.map +0 -1
- package/dist/Table.d.cts +0 -2
- package/dist/TableBody-CxwHmdNb.d.cts +0 -9
- package/dist/TableBody.d.cts +0 -2
- package/dist/TableBox-CiuXCXyv.cjs +0 -1370
- package/dist/TableBox-CiuXCXyv.cjs.map +0 -1
- package/dist/TableBox-luasMC73.mjs.map +0 -1
- package/dist/TableBox.d.cts +0 -3
- package/dist/TableBoxCell-DIMenSwX.d.cts +0 -259
- package/dist/TableBoxCell.d.cts +0 -2
- package/dist/TableBoxField.d.cts +0 -99
- package/dist/TableBoxRow-RNQ6wJLh.d.cts +0 -86
- package/dist/TableBoxRow.d.cts +0 -2
- package/dist/TableBoxRowActions-CYpoPhYZ.d.cts +0 -57
- package/dist/TableBoxRowActions.d.cts +0 -2
- package/dist/TableCell.d.cts +0 -2
- package/dist/TableControls-BtXK7Ils.cjs +0 -3995
- package/dist/TableControls-BtXK7Ils.cjs.map +0 -1
- package/dist/TableControls-CLNF0AJG.d.cts +0 -70
- package/dist/TableControls.d.cts +0 -2
- package/dist/TableControlsContext-DAZx6Rrj.d.cts +0 -21
- package/dist/TableControlsContext.d.cts +0 -2
- package/dist/TableHead-Ch4Ho3LW.d.cts +0 -12
- package/dist/TableHead.d.cts +0 -2
- package/dist/TableHeaderCell-Crsa2R2g.d.cts +0 -17
- package/dist/TableHeaderCell.d.cts +0 -2
- package/dist/TableLayout-nwy094C_.d.mts +0 -19
- package/dist/TableLayout.d.cts +0 -2
- package/dist/TableRow-DVTPqT4w.d.cts +0 -13
- package/dist/TableRow.d.cts +0 -2
- package/dist/TableTH.d.cts +0 -2
- package/dist/TableViewConfigurationDropdown-CaiOGyrU.d.cts +0 -32
- package/dist/TableViewConfigurationDropdown.d.cts +0 -2
- package/dist/TechnicalSticker.d.cts +0 -51
- package/dist/Text-CrGiWG2E.d.cts +0 -42
- package/dist/Text-G9QmYf0P.cjs +0 -95
- package/dist/Text-G9QmYf0P.cjs.map +0 -1
- package/dist/Text.d.cts +0 -2
- package/dist/TextArea-BNiipQDb.cjs +0 -40
- package/dist/TextArea-BNiipQDb.cjs.map +0 -1
- package/dist/TextArea-CHW9FKM4.d.cts +0 -10
- package/dist/TextArea.d.cts +0 -2
- package/dist/TextUnderlineTooltip-DMEyOu8C.d.cts +0 -18
- package/dist/TextUnderlineTooltip.d.cts +0 -2
- package/dist/Tile.d.cts +0 -63
- package/dist/Toast.d.cts +0 -23
- package/dist/Toggle-Ce-rF8Xp.cjs +0 -174
- package/dist/Toggle-Ce-rF8Xp.cjs.map +0 -1
- package/dist/Toggle-tbIebQWC.d.cts +0 -54
- package/dist/Toggle.d.cts +0 -2
- package/dist/Tooltip--eDrrk2r.d.cts +0 -100
- package/dist/Tooltip-olP3rdUO.cjs +0 -152
- package/dist/Tooltip-olP3rdUO.cjs.map +0 -1
- package/dist/Tooltip.d.cts +0 -2
- package/dist/TruncatedText-Dit2NJI6.d.cts +0 -18
- package/dist/chunk-CKQMccvm.cjs +0 -28
- package/dist/components/Attribute/index.cjs +0 -210
- package/dist/components/Attribute/index.cjs.map +0 -1
- package/dist/components/Attribute/index.d.cts +0 -3
- package/dist/components/Badge/index.cjs +0 -7
- package/dist/components/Badge/index.d.cts +0 -2
- package/dist/components/Banner/index.cjs +0 -99
- package/dist/components/Banner/index.cjs.map +0 -1
- package/dist/components/Banner/index.d.cts +0 -2
- package/dist/components/Breadcrumbs/index.cjs +0 -7
- package/dist/components/Breadcrumbs/index.d.cts +0 -2
- package/dist/components/Button/index.cjs +0 -11
- package/dist/components/Button/index.d.cts +0 -3
- package/dist/components/ButtonGroup/index.cjs +0 -112
- package/dist/components/ButtonGroup/index.cjs.map +0 -1
- package/dist/components/ButtonGroup/index.d.cts +0 -2
- package/dist/components/Card/index.cjs +0 -12
- package/dist/components/Card/index.d.cts +0 -3
- package/dist/components/CardV2/index.cjs +0 -7
- package/dist/components/CardV2/index.d.cts +0 -3
- package/dist/components/Checkbox/index.cjs +0 -7
- package/dist/components/Checkbox/index.d.cts +0 -2
- package/dist/components/Combobox/index.cjs +0 -9
- package/dist/components/Combobox/index.d.cts +0 -3
- package/dist/components/ConfigFormGroup/index.cjs +0 -10
- package/dist/components/ConfigFormGroup/index.d.cts +0 -3
- package/dist/components/DataTable/TableControls/index.cjs +0 -27
- package/dist/components/DataTable/TableControls/index.d.cts +0 -16
- package/dist/components/DataTable/index.cjs +0 -1434
- package/dist/components/DataTable/index.cjs.map +0 -1
- package/dist/components/DataTable/index.d.cts +0 -8
- package/dist/components/DataTable/types.cjs +0 -0
- package/dist/components/DataTable/types.d.cts +0 -159
- package/dist/components/DatePicker/index.cjs +0 -10
- package/dist/components/DatePicker/index.d.cts +0 -5
- package/dist/components/DropdownButton/index.cjs +0 -7
- package/dist/components/DropdownButton/index.d.cts +0 -2
- package/dist/components/DropdownMenu/index.cjs +0 -7
- package/dist/components/DropdownMenu/index.d.cts +0 -2
- package/dist/components/FormControl/index.cjs +0 -15
- package/dist/components/FormControl/index.d.cts +0 -3
- package/dist/components/FormField/index.cjs +0 -19
- package/dist/components/FormField/index.d.cts +0 -6
- package/dist/components/HoverCopyableField/index.cjs +0 -2
- package/dist/components/HoverCopyableField/index.d.cts +0 -2
- package/dist/components/ImageTile/index.cjs +0 -225
- package/dist/components/ImageTile/index.cjs.map +0 -1
- package/dist/components/ImageTile/index.d.cts +0 -2
- package/dist/components/Input/index.cjs +0 -14
- package/dist/components/Input/index.cjs.map +0 -1
- package/dist/components/Input/index.d.cts +0 -2
- package/dist/components/Link/index.cjs +0 -87
- package/dist/components/Link/index.cjs.map +0 -1
- package/dist/components/Link/index.d.cts +0 -2
- package/dist/components/ListBox/index.cjs +0 -8
- package/dist/components/ListBox/index.d.cts +0 -4
- package/dist/components/LoadingShimmer/index.cjs +0 -6
- package/dist/components/LoadingShimmer/index.d.cts +0 -2
- package/dist/components/MaskedInput/index.cjs +0 -29
- package/dist/components/MaskedInput/index.cjs.map +0 -1
- package/dist/components/MaskedInput/index.d.cts +0 -2
- package/dist/components/MatchHighlight/index.cjs +0 -31
- package/dist/components/MatchHighlight/index.cjs.map +0 -1
- package/dist/components/MatchHighlight/index.d.cts +0 -2
- package/dist/components/Menu/index.cjs +0 -14
- package/dist/components/Menu/index.d.cts +0 -2
- package/dist/components/Modal/index.cjs +0 -290
- package/dist/components/Modal/index.cjs.map +0 -1
- package/dist/components/Modal/index.d.cts +0 -2
- package/dist/components/PageHeader/index.cjs +0 -7
- package/dist/components/PageHeader/index.d.cts +0 -2
- package/dist/components/Pagination/index.cjs +0 -10
- package/dist/components/Pagination/index.d.cts +0 -4
- package/dist/components/Pii/index.cjs +0 -2
- package/dist/components/Pii/index.d.cts +0 -2
- package/dist/components/Popover/index.cjs +0 -12
- package/dist/components/Popover/index.d.cts +0 -2
- package/dist/components/ProgressBar/index.cjs +0 -177
- package/dist/components/ProgressBar/index.cjs.map +0 -1
- package/dist/components/ProgressBar/index.d.cts +0 -2
- package/dist/components/ProgressIndicator/index.cjs +0 -185
- package/dist/components/ProgressIndicator/index.cjs.map +0 -1
- package/dist/components/ProgressIndicator/index.d.cts +0 -2
- package/dist/components/Radio/index.cjs +0 -7
- package/dist/components/Radio/index.d.cts +0 -2
- package/dist/components/RadioGroup/index.cjs +0 -7
- package/dist/components/RadioGroup/index.d.cts +0 -2
- package/dist/components/SegmentedControl/index.cjs +0 -8
- package/dist/components/SegmentedControl/index.d.cts +0 -2
- package/dist/components/Select/index.cjs +0 -9
- package/dist/components/Select/index.d.cts +0 -2
- package/dist/components/Slider/index.cjs +0 -245
- package/dist/components/Slider/index.cjs.map +0 -1
- package/dist/components/Slider/index.d.cts +0 -3
- package/dist/components/Spacer/index.cjs +0 -2
- package/dist/components/Spacer/index.d.cts +0 -2
- package/dist/components/Spinner/index.cjs +0 -7
- package/dist/components/Spinner/index.d.cts +0 -2
- package/dist/components/Stack/index.cjs +0 -8
- package/dist/components/Stack/index.d.cts +0 -2
- package/dist/components/StatusIndicator/index.cjs +0 -224
- package/dist/components/StatusIndicator/index.cjs.map +0 -1
- package/dist/components/StatusIndicator/index.d.cts +0 -2
- package/dist/components/Sticker/index.cjs +0 -11
- package/dist/components/Sticker/index.d.cts +0 -2
- package/dist/components/SwatchPicker/index.cjs +0 -63
- package/dist/components/SwatchPicker/index.cjs.map +0 -1
- package/dist/components/SwatchPicker/index.d.cts +0 -2
- package/dist/components/TabBar/index.cjs +0 -11
- package/dist/components/TabBar/index.d.cts +0 -4
- package/dist/components/Table/index.cjs +0 -21
- package/dist/components/Table/index.d.cts +0 -8
- package/dist/components/TableBox/index.cjs +0 -7
- package/dist/components/TableBox/index.d.cts +0 -3
- package/dist/components/TechnicalSticker/index.cjs +0 -239
- package/dist/components/TechnicalSticker/index.cjs.map +0 -1
- package/dist/components/TechnicalSticker/index.d.cts +0 -2
- package/dist/components/Text/index.cjs +0 -8
- package/dist/components/Text/index.d.cts +0 -2
- package/dist/components/TextArea/index.cjs +0 -7
- package/dist/components/TextArea/index.d.cts +0 -2
- package/dist/components/Tile/index.cjs +0 -102
- package/dist/components/Tile/index.cjs.map +0 -1
- package/dist/components/Tile/index.d.cts +0 -2
- package/dist/components/Toast/index.cjs +0 -134
- package/dist/components/Toast/index.cjs.map +0 -1
- package/dist/components/Toast/index.d.cts +0 -2
- package/dist/components/Toggle/index.cjs +0 -7
- package/dist/components/Toggle/index.d.cts +0 -2
- package/dist/components/Tooltip/index.cjs +0 -11
- package/dist/components/Tooltip/index.d.cts +0 -4
- package/dist/constants-B6c8S033.d.cts +0 -6
- package/dist/constants.d.cts +0 -2
- package/dist/constants2.d.cts +0 -10
- package/dist/filter-size-context-CIw0Zi6r.d.cts +0 -52
- package/dist/filter-size-context.d.cts +0 -2
- package/dist/helpers.d.cts +0 -76
- package/dist/index-BIAn8oQh.d.cts +0 -1
- package/dist/index-BL32-cvv.d.cts +0 -1
- package/dist/index-BPSCxsMC.d.cts +0 -1
- package/dist/index-BR1oNnaF.d.cts +0 -1
- package/dist/index-BXpMZvwA.d.cts +0 -1
- package/dist/index-BhY1qu3m.d.cts +0 -1
- package/dist/index-BlwcRiXv.d.cts +0 -1
- package/dist/index-Bw8QVu_o.d.cts +0 -75
- package/dist/index-C0NRIDsj2.d.cts +0 -1
- package/dist/index-C1ihAKnV.d.cts +0 -1
- package/dist/index-C9EIpBh8.d.cts +0 -7
- package/dist/index-CDAfh8Ew.d.cts +0 -1
- package/dist/index-CFG0_wK4.d.cts +0 -1
- package/dist/index-CQ25UCod.d.cts +0 -1
- package/dist/index-Cv0jeUQf2.d.cts +0 -1
- package/dist/index-CwSIy_W-.d.cts +0 -1
- package/dist/index-D-BciAtf.d.cts +0 -1
- package/dist/index-D34XP8vp.d.cts +0 -54
- package/dist/index-D6CnpA_r.d.cts +0 -1
- package/dist/index-D9IqtUDs.d.cts +0 -1
- package/dist/index-DFKoAoY2.d.cts +0 -1
- package/dist/index-DpEKQcoR.d.cts +0 -1
- package/dist/index-_wQ5ClJU.d.cts +0 -1
- package/dist/index-dC-i2r_u.d.cts +0 -1
- package/dist/index-sQecLSpR.d.cts +0 -1
- package/dist/index.cjs +0 -0
- package/dist/index.d.cts +0 -2
- package/dist/index2.d.cts +0 -2
- package/dist/index3.d.cts +0 -4
- package/dist/index4.d.cts +0 -11
- package/dist/index5.d.cts +0 -1
- package/dist/input-DPB0cX2m.d.cts +0 -17
- package/dist/inputFields.d.cts +0 -83
- package/dist/intersperse-_0nQM5Rb.cjs +0 -26
- package/dist/intersperse-_0nQM5Rb.cjs.map +0 -1
- package/dist/layouts/LayoutLoadingShimmer/index.cjs +0 -139
- package/dist/layouts/LayoutLoadingShimmer/index.cjs.map +0 -1
- package/dist/layouts/LayoutLoadingShimmer/index.d.cts +0 -2
- package/dist/lib/ConfigContext.cjs +0 -15
- package/dist/lib/ConfigContext.cjs.map +0 -1
- package/dist/lib/ConfigContext.d.cts +0 -16
- package/dist/lib/GlobalStyles.cjs +0 -57
- package/dist/lib/GlobalStyles.cjs.map +0 -1
- package/dist/lib/GlobalStyles.d.cts +0 -8
- package/dist/lib/HeadlessAriaButton.cjs +0 -33
- package/dist/lib/HeadlessAriaButton.cjs.map +0 -1
- package/dist/lib/HeadlessAriaButton.d.cts +0 -12
- package/dist/lib/MiddleTruncatedText.cjs +0 -7
- package/dist/lib/MiddleTruncatedText.d.cts +0 -14
- package/dist/lib/PDSProvider.cjs +0 -13
- package/dist/lib/PDSProvider.cjs.map +0 -1
- package/dist/lib/PDSProvider.d.cts +0 -10
- package/dist/lib/TruncatedText.cjs +0 -39
- package/dist/lib/TruncatedText.cjs.map +0 -1
- package/dist/lib/TruncatedText.d.cts +0 -2
- package/dist/lib/TruncatedTextWithTooltip.cjs +0 -34
- package/dist/lib/TruncatedTextWithTooltip.cjs.map +0 -1
- package/dist/lib/TruncatedTextWithTooltip.d.cts +0 -15
- package/dist/lib/comboboxHelper.cjs +0 -46
- package/dist/lib/comboboxHelper.cjs.map +0 -1
- package/dist/lib/comboboxHelper.d.cts +0 -24
- package/dist/lib/copyTextToClipboard.cjs +0 -33
- package/dist/lib/copyTextToClipboard.cjs.map +0 -1
- package/dist/lib/copyTextToClipboard.d.cts +0 -4
- package/dist/lib/datePickerHelper.cjs +0 -36
- package/dist/lib/datePickerHelper.cjs.map +0 -1
- package/dist/lib/datePickerHelper.d.cts +0 -19
- package/dist/lib/message.cjs +0 -12
- package/dist/lib/message.cjs.map +0 -1
- package/dist/lib/message.d.cts +0 -2
- package/dist/lib/pseudoClass.cjs +0 -31
- package/dist/lib/pseudoClass.cjs.map +0 -1
- package/dist/lib/pseudoClass.d.cts +0 -45
- package/dist/lib/reorderItems.cjs +0 -38
- package/dist/lib/reorderItems.cjs.map +0 -1
- package/dist/lib/reorderItems.d.cts +0 -26
- package/dist/lib/selectHelper.cjs +0 -22
- package/dist/lib/selectHelper.cjs.map +0 -1
- package/dist/lib/selectHelper.d.cts +0 -14
- package/dist/lib/useControlled.cjs +0 -20
- package/dist/lib/useControlled.cjs.map +0 -1
- package/dist/lib/useControlled.d.cts +0 -16
- package/dist/lib/useIsOverflow.cjs +0 -58
- package/dist/lib/useIsOverflow.cjs.map +0 -1
- package/dist/lib/useIsOverflow.d.cts +0 -11
- package/dist/lib/useOutsideClick.cjs +0 -19
- package/dist/lib/useOutsideClick.cjs.map +0 -1
- package/dist/lib/useOutsideClick.d.cts +0 -13
- package/dist/lib/useScrollOverflow.cjs +0 -61
- package/dist/lib/useScrollOverflow.cjs.map +0 -1
- package/dist/lib/useScrollOverflow.d.cts +0 -36
- package/dist/lib/zindex.cjs +0 -26
- package/dist/lib/zindex.cjs.map +0 -1
- package/dist/lib/zindex.d.cts +0 -25
- package/dist/message-BEgtEjQC.d.cts +0 -9
- package/dist/mixins/focus.cjs +0 -39
- package/dist/mixins/focus.cjs.map +0 -1
- package/dist/mixins/focus.d.cts +0 -11
- package/dist/mixins/hoverable.cjs +0 -38
- package/dist/mixins/hoverable.cjs.map +0 -1
- package/dist/mixins/hoverable.d.cts +0 -16
- package/dist/mixins/input.cjs +0 -95
- package/dist/mixins/input.cjs.map +0 -1
- package/dist/mixins/input.d.cts +0 -2
- package/dist/mixins/menuItem.cjs +0 -110
- package/dist/mixins/menuItem.cjs.map +0 -1
- package/dist/mixins/menuItem.d.cts +0 -30
- package/dist/mixins/print/index.cjs +0 -25
- package/dist/mixins/print/index.cjs.map +0 -1
- package/dist/mixins/print/index.d.cts +0 -11
- package/dist/mixins/text.cjs +0 -93
- package/dist/mixins/text.cjs.map +0 -1
- package/dist/mixins/text.d.cts +0 -2
- package/dist/operators-1qE2GpC7.d.cts +0 -43
- package/dist/operators.d.cts +0 -2
- package/dist/text-PmH5oc61.d.cts +0 -14
- package/dist/theme-Cadb1xzQ.d.cts +0 -154
- package/dist/theme.cjs +0 -353
- package/dist/theme.cjs.map +0 -1
- package/dist/theme.d.cts +0 -2
- package/dist/types-B_HHNlia.d.cts +0 -158
- package/dist/types-CCvc590y.d.cts +0 -45
- package/dist/types-CkiXVJeR.d.cts +0 -10
- package/dist/types-SYSKcZKW.d.cts +0 -25
- package/dist/types.d.cts +0 -2
- package/dist/types2.d.cts +0 -2
- package/dist/types3.d.cts +0 -2
- package/dist/types4.d.cts +0 -2
- package/dist/useFilterStateV2-DbPwX5N1.d.cts +0 -93
- package/dist/useFilterStateV2.d.cts +0 -2
- package/dist/useFormField--Q8ZdpW5.d.cts +0 -30
- package/dist/useFormField-BZlArnsI.cjs +0 -37
- package/dist/useFormField-BZlArnsI.cjs.map +0 -1
- package/dist/useFormField.d.cts +0 -2
- package/dist/useFormGroup-Bmnzgq0S.cjs +0 -26
- package/dist/useFormGroup-Bmnzgq0S.cjs.map +0 -1
- package/dist/useFormGroup.d.cts +0 -18
- package/dist/useTableBoxDragAndDrop-DnbUToce.d.cts +0 -69
- package/dist/useTableBoxDragAndDrop.d.cts +0 -2
- package/dist/useTableColumns.d.cts +0 -72
- package/dist/useToggle-DARO917w.cjs +0 -27
- package/dist/useToggle-DARO917w.cjs.map +0 -1
- package/dist/utilities-mSlaTrjB.d.cts +0 -9
- package/dist/utilities.d.cts +0 -2
- package/dist/utils/storybook.cjs +0 -12
- package/dist/utils/storybook.cjs.map +0 -1
- package/dist/utils/testing.cjs +0 -50
- package/dist/utils/testing.cjs.map +0 -1
- package/dist/utils/testing.d.cts +0 -18
- package/dist/validation-CJymv6JE.d.cts +0 -51
- package/dist/validation.d.cts +0 -2
- package/dist/value-control-resolver-B9p25q3G.d.cts +0 -46
- package/dist/value-control-resolver.d.cts +0 -2
- package/dist/variables/color.cjs +0 -22
- package/dist/variables/color.cjs.map +0 -1
- package/dist/variables/color.d.cts +0 -19
- package/dist/variables/effect.cjs +0 -27
- package/dist/variables/effect.cjs.map +0 -1
- package/dist/variables/effect.d.cts +0 -21
- package/dist/variables/keyframes.cjs +0 -22
- package/dist/variables/keyframes.cjs.map +0 -1
- package/dist/variables/keyframes.d.cts +0 -8
- package/dist/variables/spacing.cjs +0 -10
- package/dist/variables/spacing.cjs.map +0 -1
- package/dist/variables/spacing.d.cts +0 -8
- package/dist/variables/text.cjs +0 -13
- package/dist/variables/text.cjs.map +0 -1
- package/dist/variables/text.d.cts +0 -10
- package/dist/variables/transitions.cjs +0 -24
- package/dist/variables/transitions.cjs.map +0 -1
- package/dist/variables/transitions.d.cts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sticker-DbqKLe33.mjs","names":[],"sources":["../components/Sticker/Sticker.tsx"],"sourcesContent":["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 {\n isDisabled,\n isFocusedVisible,\n isHovered,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { Variant } from 'design-system/theme';\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'>>`\n color: ${({ theme, variant }) => {\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`\n color: ${Color.TextDanger};\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: ${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 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: inherit !important;\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: ${({ variant }) => {\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 }) => {\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: ${({ variant, disabled, $onSecondaryBackground }) => {\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 // eslint-disable-next-line rulesdir/no-core-color-tokens\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 // eslint-disable-next-line rulesdir/no-core-color-tokens\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 && <StickerIcon variant={variant}>{icon}</StickerIcon>}\n {hasContent && <StyledTruncatedText>{children}</StyledTruncatedText>}\n </StickerContentContainer>\n {isRequired && <RequiredAsterisk>*</RequiredAsterisk>}\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
|
+
{"version":3,"file":"Sticker-CyGb9dEu.mjs","names":[],"sources":["../components/Sticker/Sticker.tsx"],"sourcesContent":["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 {\n isDisabled,\n isFocusedVisible,\n isHovered,\n isNotDisabled,\n} from 'design-system/lib/pseudoClass';\nimport { TruncatedText } from 'design-system/lib/TruncatedText';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport type { Variant } from 'design-system/theme';\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'>>`\n color: ${({ theme, variant }) => {\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`\n color: ${Color.TextDanger};\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: ${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 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: inherit !important;\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: ${({ variant }) => {\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 }) => {\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: ${({ variant, disabled, $onSecondaryBackground }) => {\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 // eslint-disable-next-line rulesdir/no-core-color-tokens\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 // eslint-disable-next-line rulesdir/no-core-color-tokens\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 && <StickerIcon variant={variant}>{icon}</StickerIcon>}\n {hasContent && <StyledTruncatedText>{children}</StyledTruncatedText>}\n </StickerContentContainer>\n {isRequired && <RequiredAsterisk>*</RequiredAsterisk>}\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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"}
|
package/dist/Tab.d.mts
CHANGED
|
@@ -1,22 +1,31 @@
|
|
|
1
|
-
import { r as ButtonProps, t as Button } from "./Button-
|
|
1
|
+
import { r as ButtonProps, t as Button } from "./Button-Vd5O4DUp.mjs";
|
|
2
2
|
import * as _$styled_components0 from "styled-components";
|
|
3
3
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
import * as _$react from "react";
|
|
5
5
|
import { ComponentPropsWithoutRef, ElementType, ReactElement } from "react";
|
|
6
6
|
|
|
7
7
|
//#region components/TabBar/Tab.d.ts
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/** A tab carries either a count or a label beside its text, never both. */
|
|
9
|
+
type TabAdornment = {
|
|
10
10
|
badge?: ReactElement;
|
|
11
|
+
sticker?: never;
|
|
12
|
+
} | {
|
|
13
|
+
badge?: never;
|
|
14
|
+
sticker?: ReactElement;
|
|
15
|
+
};
|
|
16
|
+
interface TabBaseProps<T extends ElementType = 'button'> extends ComponentPropsWithoutRef<typeof Button> {
|
|
17
|
+
selected?: boolean;
|
|
11
18
|
as?: T;
|
|
12
19
|
size?: 'md' | 'sm';
|
|
13
20
|
}
|
|
14
|
-
|
|
21
|
+
type TabProps<T extends ElementType = 'button'> = TabBaseProps<T> & TabAdornment;
|
|
22
|
+
declare const StyledTab: _$styled_components0.StyledComponent<_$react.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & _$react.RefAttributes<HTMLButtonElement>>, any, TabBaseProps<"button">, never>;
|
|
15
23
|
declare const Tab: <T extends ElementType = "button">({
|
|
16
24
|
selected,
|
|
17
25
|
disabled,
|
|
18
26
|
children,
|
|
19
27
|
badge,
|
|
28
|
+
sticker,
|
|
20
29
|
as,
|
|
21
30
|
size,
|
|
22
31
|
...elemProps
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { isActive, isFocused, isHovered, isNotDisabled } from "./lib/pseudoClass.mjs";
|
|
2
2
|
import "./variables/transitions.mjs";
|
|
3
3
|
import { paragraphMixins } from "./mixins/text.mjs";
|
|
4
|
-
import { n as Button, t as IconButton } from "./IconButton-
|
|
5
|
-
import { t as Badge } from "./Badge-
|
|
4
|
+
import { n as Button, t as IconButton } from "./IconButton-P8w0JDI5.mjs";
|
|
5
|
+
import { t as Badge } from "./Badge-DEVbRlJX.mjs";
|
|
6
6
|
import { BorderRadius, Color, Spacing } from "@persona/design-tokens";
|
|
7
7
|
import styled, { css } from "styled-components";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -106,9 +106,11 @@ const TabBar = forwardRef(function TabBar({ children, actions, title, "data-tour
|
|
|
106
106
|
});
|
|
107
107
|
//#endregion
|
|
108
108
|
//#region components/TabBar/Tab.tsx
|
|
109
|
-
const
|
|
109
|
+
const AdornmentContainer = styled.span`
|
|
110
110
|
display: inline-flex;
|
|
111
111
|
vertical-align: middle;
|
|
112
|
+
/* Align the atomic badge with the label's cap midpoint, not its x-height midpoint. */
|
|
113
|
+
transform: translateY(calc((1ex - 1cap) / 2));
|
|
112
114
|
padding: 0;
|
|
113
115
|
margin-left: ${Spacing[1]};
|
|
114
116
|
`;
|
|
@@ -203,7 +205,7 @@ const truncateText = (text, maxCharacters) => {
|
|
|
203
205
|
if (text.length <= maxCharacters) return text;
|
|
204
206
|
return `${text.substring(0, maxCharacters).trimEnd()}...`;
|
|
205
207
|
};
|
|
206
|
-
const Tab = ({ selected, disabled, children, badge, as, size, ...elemProps }) => {
|
|
208
|
+
const Tab = ({ selected, disabled, children, badge, sticker, as, size, ...elemProps }) => {
|
|
207
209
|
const { maxTabChars, size: contextSize } = useContext(TabBarContext_default);
|
|
208
210
|
const finalSize = size || contextSize || "md";
|
|
209
211
|
const hasTruncation = maxTabChars && typeof children === "string";
|
|
@@ -218,10 +220,14 @@ const Tab = ({ selected, disabled, children, badge, as, size, ...elemProps }) =>
|
|
|
218
220
|
size: finalSize,
|
|
219
221
|
title: hasTruncation ? children : void 0,
|
|
220
222
|
...elemProps,
|
|
221
|
-
children: [
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
children: [
|
|
224
|
+
displayChildren,
|
|
225
|
+
badge && /* @__PURE__ */ jsx(AdornmentContainer, { children: badge.type === Badge ? cloneElement(badge, {
|
|
226
|
+
variant: selected ? "active" : "basic",
|
|
227
|
+
onSecondaryBackground: true
|
|
228
|
+
}) : badge }),
|
|
229
|
+
sticker && /* @__PURE__ */ jsx(AdornmentContainer, { children: sticker })
|
|
230
|
+
]
|
|
225
231
|
});
|
|
226
232
|
};
|
|
227
233
|
//#endregion
|
|
@@ -264,4 +270,4 @@ var TabBarIconButton_default = styled(IconButton).attrs({ size: "sm" })`
|
|
|
264
270
|
//#endregion
|
|
265
271
|
export { TabContainer as a, TabBar as i, StyledTab as n, Tab as r, TabBarIconButton_default as t };
|
|
266
272
|
|
|
267
|
-
//# sourceMappingURL=TabBar-
|
|
273
|
+
//# sourceMappingURL=TabBar-Bn8PHHBZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabBar-Bn8PHHBZ.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 { 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 ${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 { 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 }) => theme.color.primary.brand};\n border-bottom-color: ${({ theme }) => theme.color.primary.brand};\n box-shadow: none;\n &:after {\n transition: border-bottom-color ${TransitionDuration.Fast};\n border-bottom-color: ${({ theme }) => 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 ? theme.color.variants.basic.textDisabled : 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 }) =>\n !selected &&\n css`\n color: ${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';\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 }) => theme.color.variants.basic.highlight};\n }\n\n svg {\n color: ${Color.CoreSlate800};\n }\n\n &:hover {\n svg {\n color: ${Color.CoreSlate900};\n }\n }\n`;\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { isFocusedVisible, isHovered } from "./lib/pseudoClass.mjs";
|
|
2
2
|
import "./variables/transitions.mjs";
|
|
3
3
|
import { paragraphMixins } from "./mixins/text.mjs";
|
|
4
|
-
import { fadeIn } from "./variables/keyframes.mjs";
|
|
5
4
|
import "./variables/spacing.mjs";
|
|
6
5
|
import { i as Paragraph } from "./Text-RcEfNFLx.mjs";
|
|
7
|
-
import {
|
|
6
|
+
import { fadeIn } from "./variables/keyframes.mjs";
|
|
7
|
+
import { r as HelperTooltip } from "./Tooltip-BvDbmXak.mjs";
|
|
8
8
|
import { Z_INDICES } from "./lib/zindex.mjs";
|
|
9
9
|
import { t as Spinner } from "./Spinner-BEPF42RW.mjs";
|
|
10
10
|
import { Color, Spacing } from "@persona/design-tokens";
|
|
@@ -294,7 +294,7 @@ const TableBody = styled.tbody.attrs({ role: "rowgroup" })`
|
|
|
294
294
|
const Container = styled.div`
|
|
295
295
|
position: relative;
|
|
296
296
|
z-index: 0;
|
|
297
|
-
overflow-x: auto;
|
|
297
|
+
overflow-x: ${({ $scrollsHorizontally }) => $scrollsHorizontally ? "auto" : "visible"};
|
|
298
298
|
${({ maxHeight }) => {
|
|
299
299
|
if (maxHeight != null) return `max-height: ${maxHeight}px;`;
|
|
300
300
|
}}
|
|
@@ -349,7 +349,7 @@ const TableSpinner = styled(Spinner)`
|
|
|
349
349
|
stroke-width: 0.46;
|
|
350
350
|
}
|
|
351
351
|
`;
|
|
352
|
-
const TableLayout = ({ children, className, containerMaxHeight, dataTest, headerTR, isEmpty, isLoading, nullState, showHeader, size = "md", stickyHeader = false }) => {
|
|
352
|
+
const TableLayout = ({ children, className, containerMaxHeight, containerScrollsHorizontally = true, dataTest, headerTR, isEmpty, isLoading, nullState, showHeader, size = "md", stickyHeader = false }) => {
|
|
353
353
|
if (isEmpty && !showHeader) if (isLoading) return /* @__PURE__ */ jsx(SpinnerWrapper, {
|
|
354
354
|
role: "status",
|
|
355
355
|
"aria-live": "polite",
|
|
@@ -360,12 +360,14 @@ const TableLayout = ({ children, className, containerMaxHeight, dataTest, header
|
|
|
360
360
|
});
|
|
361
361
|
else return /* @__PURE__ */ jsx(Container, {
|
|
362
362
|
"data-test": dataTest,
|
|
363
|
+
$scrollsHorizontally: containerScrollsHorizontally,
|
|
363
364
|
children: nullState
|
|
364
365
|
});
|
|
365
366
|
return /* @__PURE__ */ jsxs(Container, {
|
|
366
367
|
"data-test": dataTest,
|
|
367
368
|
maxHeight: containerMaxHeight,
|
|
368
369
|
className,
|
|
370
|
+
$scrollsHorizontally: containerScrollsHorizontally,
|
|
369
371
|
children: [
|
|
370
372
|
isLoading && /* @__PURE__ */ jsx(Loader, { "data-test": "table-layout__loader" }),
|
|
371
373
|
isLoading && /* @__PURE__ */ jsx(Overlay, {}),
|
|
@@ -384,4 +386,4 @@ const TableLayout = ({ children, className, containerMaxHeight, dataTest, header
|
|
|
384
386
|
//#endregion
|
|
385
387
|
export { StickyTH as a, TableCellTitle as c, TableTR as d, TableTH as f, Table as h, StickyTD as i, TableIconTD as l, TableHeaderCell as m, TableBody as n, TableActionTD as o, TableRow as p, TableHead as r, TableCell as s, TableLayout as t, TableTD as u };
|
|
386
388
|
|
|
387
|
-
//# sourceMappingURL=Table-
|
|
389
|
+
//# sourceMappingURL=Table-BfontAeY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table-D8IcpACv.mjs","names":["slideKeyframes"],"sources":["../components/Table/Table.tsx","../components/Table/TableHeaderCell.tsx","../components/Table/TableRow.tsx","../components/Table/TableTH.tsx","../components/Table/TableCell.tsx","../components/Table/TableHead.tsx","../components/Table/TableBody.tsx","../components/Table/TableLayout.tsx"],"sourcesContent":["import styled, { css, keyframes } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\ninterface TableProps {\n size?: 'sm' | 'md';\n isLoading?: boolean;\n}\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n`;\n\nexport const Table = styled.table.attrs({ role: 'table' })<TableProps>`\n display: table;\n width: 100%;\n border-spacing: 0;\n ${paragraphMixins.md};\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n td,\n th {\n padding: ${Spacing[2]};\n }\n `}\n\n ${({ isLoading }) =>\n isLoading &&\n css`\n thead {\n &:after {\n content: '';\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n border-bottom: 3px solid ${({ theme }) => theme.color.primary.brand};\n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n }\n }\n `}\n`;\n\nexport default Table;\n","import { type ComponentPropsWithoutRef, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { CaretDownIcon, CaretUpIcon } from '@persona/icons';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { BASE } from 'design-system/variables/spacing';\n\ninterface TableHeaderCellProps {\n size?: 'sm' | 'md';\n sortable?: boolean;\n width?: 'auto' | 'min' | 'max' | string;\n isSticky?: boolean;\n align?: 'left' | 'right';\n}\n\nconst StyledTableHeaderCell = styled.th<TableHeaderCellProps>`\n display: table-cell;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so header padding + border are included in the\n declared width/height. */\n box-sizing: border-box;\n\n background-color: ${({ theme }) => theme.color.background.secondary};\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n text-align: left;\n white-space: nowrap;\n ${({ size }) => (size === 'sm' ? paragraphMixins.sm : paragraphMixins.md)};\n line-height: 1;\n width: ${({ width }) => {\n switch (width) {\n case 'min':\n return '1px';\n case 'max':\n return '100%';\n default:\n if (width) {\n return width;\n } else {\n return 'auto';\n }\n }\n }};\n\n &:first-child {\n border-radius: ${({ theme }) =>\n `${theme.element.borderRadius} 0 0 ${theme.element.borderRadius}`};\n }\n\n &:last-child {\n border-radius: ${({ theme }) =>\n `0 ${theme.element.borderRadius} ${theme.element.borderRadius} 0`};\n }\n\n ${({ sortable }) =>\n sortable &&\n css`\n cursor: pointer;\n\n &:hover ${TableIconContainer} {\n display: inline;\n visibility: visible;\n }\n `};\n\n ${({ isSticky }) =>\n isSticky\n ? css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\n : css`\n position: relative;\n `}\n`;\n\nconst VerticalAlign = styled.div<{ $align?: TableHeaderCellProps['align'] }>`\n display: flex;\n align-items: center;\n gap: ${Spacing[1]};\n flex-direction: ${({ $align }) => ($align === 'right' ? 'row-reverse' : 'row')};\n`;\n\ninterface TableIconContainerProps {\n sortDirection?: 'asc' | 'desc' | false;\n}\n\nconst TableIconContainer = styled('div')<TableIconContainerProps>`\n display: inline-block;\n\n ${({ sortDirection }) => {\n if (sortDirection) {\n return css`\n display: inline;\n `;\n } else {\n return css`\n display: inline;\n visibility: hidden;\n color: ${({ theme }) => theme.color.text.disabled};\n `;\n }\n }};\n`;\n\nconst TableHeaderCell = forwardRef<\n HTMLTableCellElement,\n ComponentPropsWithoutRef<'th'> & TableHeaderCellProps & TableIconContainerProps\n>(function TableHeaderCell({ sortable, sortDirection, children, align, ...elemProps }, ref) {\n let ariaSort: 'none' | 'ascending' | 'descending' | 'other' = 'none';\n\n if (sortable && sortDirection) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n return (\n <StyledTableHeaderCell\n sortable={sortable}\n aria-sort={ariaSort}\n role='columnheader'\n {...elemProps}\n ref={ref}\n >\n <VerticalAlign $align={align}>\n {children}\n {sortable && (\n <TableIconContainer sortDirection={sortDirection}>\n {sortDirection === 'asc' ? <CaretUpIcon /> : <CaretDownIcon />}\n </TableIconContainer>\n )}\n </VerticalAlign>\n </StyledTableHeaderCell>\n );\n});\n\nexport default TableHeaderCell;\n","import styled, { css } from 'styled-components';\n\nimport { isFocusedVisible, isHovered } from 'design-system/lib/pseudoClass';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nexport interface TableRowProps extends PseudoClassProps {\n disableHoverBackground?: boolean;\n}\n\nconst TableRow = styled.tr.attrs({\n role: 'row',\n})<TableRowProps>`\n display: table-row;\n\n ${({ onClick }) =>\n onClick != null &&\n css`\n cursor: pointer;\n `}\n\n ${({ disableHoverBackground, theme }) =>\n !disableHoverBackground &&\n css`\n &${isHovered} {\n background-color: ${theme.color.background.highlight};\n transition-duration: ${TransitionDuration.Fast};\n }\n `}\n\n ${isFocusedVisible}\n`;\n\nexport default TableRow;\n","import { type ComponentPropsWithoutRef, forwardRef, type ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { TableHeaderCell } from '@persona/design-system/components/Table';\nimport { HelperTooltip } from '@persona/design-system/components/Tooltip';\nimport { Spacing } from '@persona/design-tokens';\n\nconst StyledHelperTooltip = styled(HelperTooltip)`\n height: 14px;\n margin-left: ${Spacing[1]};\n`;\n\nexport interface TableTHProps extends ComponentPropsWithoutRef<typeof TableHeaderCell> {\n canSort?: boolean;\n isSorted?: boolean;\n isDescending?: boolean;\n isSticky?: boolean;\n /**\n * Display help icon and tooltip for column header\n */\n helpText?: ReactNode;\n align?: 'left' | 'right';\n size?: 'sm' | 'md';\n}\n\nconst TableTH = forwardRef<HTMLTableCellElement, TableTHProps>(function TableTH(\n { children, canSort, isSorted, isSticky, isDescending, helpText, align, size, ...props },\n ref,\n) {\n return (\n <TableHeaderCell\n sortable={canSort}\n sortDirection={canSort && isSorted ? (isDescending ? 'desc' : 'asc') : false}\n ref={ref}\n isSticky={isSticky}\n align={align}\n size={size}\n {...props}\n >\n {/* We have to wrap the children to make it easier to use tooltips */}\n <span className='th__text'>{children}</span>\n {helpText && <StyledHelperTooltip size='sm'>{helpText}</StyledHelperTooltip>}\n </TableHeaderCell>\n );\n});\n\nexport default TableTH;\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { Paragraph } from 'design-system/components/Text';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { BASE } from 'design-system/variables/spacing';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport TableRow from './TableRow';\nimport TableTH from './TableTH';\n\nexport interface TableCellProps {\n breakWord?: boolean;\n size?: 'sm' | 'md';\n}\n\nconst TableCell = styled.td.attrs({ role: 'cell' })<TableCellProps>`\n display: table-cell;\n vertical-align: middle;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so a fixed cell height includes its padding + border\n and rows stay compact. */\n box-sizing: border-box;\n\n border-bottom: 1px solid ${({ theme }) => theme.color.border.primary};\n text-align: left;\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n color: ${({ theme }) => theme.color.text.primary};\n white-space: nowrap;\n ${paragraphMixins.md};\n line-height: 1;\n ${({ breakWord }) =>\n breakWord\n ? `white-space: normal;\n overflow-wrap: break-word;`\n : ''}\n`;\n\nexport default TableCell;\n\nconst CellTitleContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CellTitle = styled(Paragraph).attrs({ color: 'primary' })`\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n`;\n\ninterface TableCellTitleProps extends ComponentPropsWithoutRef<'div'> {\n subtitle?: ReactNode;\n}\n\nexport const TableCellTitle = ({ children, subtitle, ...elemProps }: TableCellTitleProps) => {\n return (\n <CellTitleContainer {...elemProps}>\n <CellTitle>{children}</CellTitle>\n {subtitle && <Paragraph>{subtitle}</Paragraph>}\n </CellTitleContainer>\n );\n};\n\nexport const TableTD = styled(TableCell)<{ unclickable?: boolean }>`\n white-space: normal;\n overflow-wrap: break-word;\n ${(props) =>\n props.unclickable &&\n css`\n cursor: default;\n `}\n`;\n\nexport const TableIconTD = styled(TableTD)`\n text-align: right;\n line-height: 0; /* To center icon; cannot use flex here */\n padding: 0;\n padding-left: ${Spacing[4]};\n width: 36px;\n`;\n\nexport const TableActionTD = styled(TableTD)`\n text-align: right;\n padding: 0;\n padding-right: ${Spacing[4]};\n width: 48px;\n`;\n\nexport const StickyTD = styled(TableTD)<{\n left?: number;\n hasRightBorder?: boolean;\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n background-color: ${({ theme }) => theme.color.background.primary};\n\n ${({ hasRightBorder, theme }) =>\n hasRightBorder && `border-right: 2px solid ${theme.color.border.primary};`}\n z-index: 2;\n`;\n\nexport const StickyTH = styled(TableTH)<{\n left?: number;\n hasRightBorder?: boolean;\n size?: 'sm' | 'md';\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n z-index: 2;\n max-width: 10%;\n background-color: ${({ theme }) => theme.color.background.secondary};\n ${({ hasRightBorder, theme }) =>\n hasRightBorder && `border-right: 2px solid ${theme.color.border.primary};`}\n`;\n\nexport const TableTR = styled(TableRow)<{ disableHoverBackground?: boolean; $isActive?: boolean }>`\n ${({ disableHoverBackground }) =>\n disableHoverBackground &&\n css`\n &:hover {\n background-color: transparent !important;\n }\n `}\n\n ${({ $isActive }) =>\n $isActive &&\n css`\n background-color: ${({ theme }) => theme.color.background.highlight};\n &:hover {\n background-color: ${({ theme }) => theme.color.background.highlight};\n }\n `}\n\n ${({ onClick, disableHoverBackground, $isActive }) =>\n onClick != null &&\n !disableHoverBackground &&\n !$isActive &&\n css`\n cursor: pointer;\n :hover {\n background-color: ${({ theme }) => theme.color.background.highlight};\n }\n transition-duration: ${TransitionDuration.Fast};\n `}\n`;\n","import styled, { css } from 'styled-components';\n\ninterface TableHeadProps {\n sticky?: boolean;\n}\n\nconst TableHead = styled.thead.attrs({ role: 'rowgroup' })<TableHeadProps>`\n display: table-header-group;\n ${({ sticky }) =>\n sticky &&\n css`\n position: sticky;\n top: 0;\n z-index: 1;\n `}\n`;\n\nexport default TableHead;\n","import styled from 'styled-components';\n\nconst TableBody = styled.tbody.attrs({ role: 'rowgroup' })`\n display: table-row-group;\n`;\n\nexport default TableBody;\n","import type { FC, PropsWithChildren, ReactNode } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { Spinner } from 'design-system/components/Spinner';\nimport Table, { TableHead, TableRow } from 'design-system/components/Table';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport { fadeIn } from 'design-system/variables/keyframes';\n\nconst Container = styled.div<{ maxHeight?: number }>`\n position: relative;\n z-index: 0;\n overflow-x: auto;\n ${({ maxHeight }) => {\n if (maxHeight != null) {\n return `max-height: ${maxHeight}px;`;\n }\n }}\n `;\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n `;\n\nconst Loader = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n border-bottom: 3px solid ${({ theme }) => theme.color.primary.brand};\n width: 100%;\n \n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n `;\n\nconst Overlay = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${({ theme }) => theme.color.primary.white};\n opacity: 50%;\n `;\n\nconst SpinnerWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${Spacing[5]} 0;\n animation: ${fadeIn} 1s;\n animation-delay: 0.5s;\n animation-fill-mode: backwards;\n `;\n\nconst TableSpinner = styled(Spinner)`\n svg {\n width: 120px;\n height: 120px;\n }\n \n path {\n stroke: ${Color.CorePurple500};\n stroke-width: 0.46;\n }\n `;\n\ninterface TableLayoutProps {\n className?: string;\n containerMaxHeight?: number;\n dataTest?: string;\n headerTR: JSX.Element;\n isEmpty?: boolean;\n isLoading?: boolean;\n nullState: ReactNode;\n showHeader?: boolean;\n size?: 'sm' | 'md';\n stickyHeader?: boolean;\n}\n\nconst TableLayout: FC<PropsWithChildren<TableLayoutProps>> = ({\n children,\n className,\n containerMaxHeight,\n dataTest,\n headerTR,\n isEmpty,\n isLoading,\n nullState,\n showHeader,\n size = 'md',\n stickyHeader = false,\n}) => {\n if (isEmpty && !showHeader) {\n if (isLoading) {\n return (\n <SpinnerWrapper\n role='status'\n aria-live='polite'\n aria-busy='true'\n aria-label='Loading...'\n data-loading-indicator='true'\n >\n <TableSpinner size='md' />\n </SpinnerWrapper>\n );\n } else {\n return <Container data-test={dataTest}>{nullState}</Container>;\n }\n }\n\n return (\n <Container data-test={dataTest} maxHeight={containerMaxHeight} className={className}>\n {isLoading && <Loader data-test='table-layout__loader' />}\n {isLoading && <Overlay />}\n\n <Table size={size} aria-busy={isLoading || undefined}>\n <TableHead sticky={stickyHeader}>\n <TableRow>{headerTR}</TableRow>\n </TableHead>\n {!isEmpty && children}\n </Table>\n\n {isEmpty && nullState}\n </Container>\n );\n};\n\nexport default TableLayout;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table-BfontAeY.mjs","names":["slideKeyframes"],"sources":["../components/Table/Table.tsx","../components/Table/TableHeaderCell.tsx","../components/Table/TableRow.tsx","../components/Table/TableTH.tsx","../components/Table/TableCell.tsx","../components/Table/TableHead.tsx","../components/Table/TableBody.tsx","../components/Table/TableLayout.tsx"],"sourcesContent":["import styled, { css, keyframes } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { paragraphMixins } from 'design-system/mixins/text';\n\ninterface TableProps {\n size?: 'sm' | 'md';\n isLoading?: boolean;\n}\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n`;\n\nexport const Table = styled.table.attrs({ role: 'table' })<TableProps>`\n display: table;\n width: 100%;\n border-spacing: 0;\n ${paragraphMixins.md};\n\n ${({ size }) =>\n size === 'sm' &&\n css`\n td,\n th {\n padding: ${Spacing[2]};\n }\n `}\n\n ${({ isLoading }) =>\n isLoading &&\n css`\n thead {\n &:after {\n content: '';\n display: block;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n border-bottom: 3px solid ${({ theme }) => theme.color.primary.brand};\n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n }\n }\n `}\n`;\n\nexport default Table;\n","import { type ComponentPropsWithoutRef, forwardRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { CaretDownIcon, CaretUpIcon } from '@persona/icons';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { BASE } from 'design-system/variables/spacing';\n\ninterface TableHeaderCellProps {\n size?: 'sm' | 'md';\n sortable?: boolean;\n width?: 'auto' | 'min' | 'max' | string;\n isSticky?: boolean;\n align?: 'left' | 'right';\n}\n\nconst StyledTableHeaderCell = styled.th<TableHeaderCellProps>`\n display: table-cell;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so header padding + border are included in the\n declared width/height. */\n box-sizing: border-box;\n\n background-color: ${({ theme }) => theme.color.background.secondary};\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n text-align: left;\n white-space: nowrap;\n ${({ size }) => (size === 'sm' ? paragraphMixins.sm : paragraphMixins.md)};\n line-height: 1;\n width: ${({ width }) => {\n switch (width) {\n case 'min':\n return '1px';\n case 'max':\n return '100%';\n default:\n if (width) {\n return width;\n } else {\n return 'auto';\n }\n }\n }};\n\n &:first-child {\n border-radius: ${({ theme }) =>\n `${theme.element.borderRadius} 0 0 ${theme.element.borderRadius}`};\n }\n\n &:last-child {\n border-radius: ${({ theme }) =>\n `0 ${theme.element.borderRadius} ${theme.element.borderRadius} 0`};\n }\n\n ${({ sortable }) =>\n sortable &&\n css`\n cursor: pointer;\n\n &:hover ${TableIconContainer} {\n display: inline;\n visibility: visible;\n }\n `};\n\n ${({ isSticky }) =>\n isSticky\n ? css`\n position: sticky;\n top: 0;\n z-index: 1;\n `\n : css`\n position: relative;\n `}\n`;\n\nconst VerticalAlign = styled.div<{ $align?: TableHeaderCellProps['align'] }>`\n display: flex;\n align-items: center;\n gap: ${Spacing[1]};\n flex-direction: ${({ $align }) => ($align === 'right' ? 'row-reverse' : 'row')};\n`;\n\ninterface TableIconContainerProps {\n sortDirection?: 'asc' | 'desc' | false;\n}\n\nconst TableIconContainer = styled('div')<TableIconContainerProps>`\n display: inline-block;\n\n ${({ sortDirection }) => {\n if (sortDirection) {\n return css`\n display: inline;\n `;\n } else {\n return css`\n display: inline;\n visibility: hidden;\n color: ${({ theme }) => theme.color.text.disabled};\n `;\n }\n }};\n`;\n\nconst TableHeaderCell = forwardRef<\n HTMLTableCellElement,\n ComponentPropsWithoutRef<'th'> & TableHeaderCellProps & TableIconContainerProps\n>(function TableHeaderCell({ sortable, sortDirection, children, align, ...elemProps }, ref) {\n let ariaSort: 'none' | 'ascending' | 'descending' | 'other' = 'none';\n\n if (sortable && sortDirection) {\n ariaSort = sortDirection === 'asc' ? 'ascending' : 'descending';\n }\n\n return (\n <StyledTableHeaderCell\n sortable={sortable}\n aria-sort={ariaSort}\n role='columnheader'\n {...elemProps}\n ref={ref}\n >\n <VerticalAlign $align={align}>\n {children}\n {sortable && (\n <TableIconContainer sortDirection={sortDirection}>\n {sortDirection === 'asc' ? <CaretUpIcon /> : <CaretDownIcon />}\n </TableIconContainer>\n )}\n </VerticalAlign>\n </StyledTableHeaderCell>\n );\n});\n\nexport default TableHeaderCell;\n","import styled, { css } from 'styled-components';\n\nimport { isFocusedVisible, isHovered } from 'design-system/lib/pseudoClass';\nimport type PseudoClassProps from 'design-system/types/PseudoClassProps';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nexport interface TableRowProps extends PseudoClassProps {\n disableHoverBackground?: boolean;\n}\n\nconst TableRow = styled.tr.attrs({\n role: 'row',\n})<TableRowProps>`\n display: table-row;\n\n ${({ onClick }) =>\n onClick != null &&\n css`\n cursor: pointer;\n `}\n\n ${({ disableHoverBackground, theme }) =>\n !disableHoverBackground &&\n css`\n &${isHovered} {\n background-color: ${theme.color.background.highlight};\n transition-duration: ${TransitionDuration.Fast};\n }\n `}\n\n ${isFocusedVisible}\n`;\n\nexport default TableRow;\n","import { type ComponentPropsWithoutRef, forwardRef, type ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { TableHeaderCell } from '@persona/design-system/components/Table';\nimport { HelperTooltip } from '@persona/design-system/components/Tooltip';\nimport { Spacing } from '@persona/design-tokens';\n\nconst StyledHelperTooltip = styled(HelperTooltip)`\n height: 14px;\n margin-left: ${Spacing[1]};\n`;\n\nexport interface TableTHProps extends ComponentPropsWithoutRef<typeof TableHeaderCell> {\n canSort?: boolean;\n isSorted?: boolean;\n isDescending?: boolean;\n isSticky?: boolean;\n /**\n * Display help icon and tooltip for column header\n */\n helpText?: ReactNode;\n align?: 'left' | 'right';\n size?: 'sm' | 'md';\n}\n\nconst TableTH = forwardRef<HTMLTableCellElement, TableTHProps>(function TableTH(\n { children, canSort, isSorted, isSticky, isDescending, helpText, align, size, ...props },\n ref,\n) {\n return (\n <TableHeaderCell\n sortable={canSort}\n sortDirection={canSort && isSorted ? (isDescending ? 'desc' : 'asc') : false}\n ref={ref}\n isSticky={isSticky}\n align={align}\n size={size}\n {...props}\n >\n {/* We have to wrap the children to make it easier to use tooltips */}\n <span className='th__text'>{children}</span>\n {helpText && <StyledHelperTooltip size='sm'>{helpText}</StyledHelperTooltip>}\n </TableHeaderCell>\n );\n});\n\nexport default TableTH;\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { Spacing } from '@persona/design-tokens';\nimport { Paragraph } from 'design-system/components/Text';\nimport { paragraphMixins } from 'design-system/mixins/text';\nimport { BASE } from 'design-system/variables/spacing';\nimport { TransitionDuration } from 'design-system/variables/transitions';\n\nimport TableRow from './TableRow';\nimport TableTH from './TableTH';\n\nexport interface TableCellProps {\n breakWord?: boolean;\n size?: 'sm' | 'md';\n}\n\nconst TableCell = styled.td.attrs({ role: 'cell' })<TableCellProps>`\n display: table-cell;\n vertical-align: middle;\n /* Self-contained box model: don't depend on a consumer's global\n border-box reset, so a fixed cell height includes its padding + border\n and rows stay compact. */\n box-sizing: border-box;\n\n border-bottom: 1px solid ${({ theme }) => theme.color.border.primary};\n text-align: left;\n padding: ${({ size }) => (size === 'sm' ? BASE : BASE * 1.5)}px;\n color: ${({ theme }) => theme.color.text.primary};\n white-space: nowrap;\n ${paragraphMixins.md};\n line-height: 1;\n ${({ breakWord }) =>\n breakWord\n ? `white-space: normal;\n overflow-wrap: break-word;`\n : ''}\n`;\n\nexport default TableCell;\n\nconst CellTitleContainer = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst CellTitle = styled(Paragraph).attrs({ color: 'primary' })`\n display: flex;\n align-items: center;\n gap: ${Spacing[2]};\n`;\n\ninterface TableCellTitleProps extends ComponentPropsWithoutRef<'div'> {\n subtitle?: ReactNode;\n}\n\nexport const TableCellTitle = ({ children, subtitle, ...elemProps }: TableCellTitleProps) => {\n return (\n <CellTitleContainer {...elemProps}>\n <CellTitle>{children}</CellTitle>\n {subtitle && <Paragraph>{subtitle}</Paragraph>}\n </CellTitleContainer>\n );\n};\n\nexport const TableTD = styled(TableCell)<{ unclickable?: boolean }>`\n white-space: normal;\n overflow-wrap: break-word;\n ${(props) =>\n props.unclickable &&\n css`\n cursor: default;\n `}\n`;\n\nexport const TableIconTD = styled(TableTD)`\n text-align: right;\n line-height: 0; /* To center icon; cannot use flex here */\n padding: 0;\n padding-left: ${Spacing[4]};\n width: 36px;\n`;\n\nexport const TableActionTD = styled(TableTD)`\n text-align: right;\n padding: 0;\n padding-right: ${Spacing[4]};\n width: 48px;\n`;\n\nexport const StickyTD = styled(TableTD)<{\n left?: number;\n hasRightBorder?: boolean;\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n background-color: ${({ theme }) => theme.color.background.primary};\n\n ${({ hasRightBorder, theme }) =>\n hasRightBorder && `border-right: 2px solid ${theme.color.border.primary};`}\n z-index: 2;\n`;\n\nexport const StickyTH = styled(TableTH)<{\n left?: number;\n hasRightBorder?: boolean;\n size?: 'sm' | 'md';\n}>`\n position: sticky;\n left: ${({ left = 0 }) => `${left}px`}; // Default to 0 if not specified\n z-index: 2;\n max-width: 10%;\n background-color: ${({ theme }) => theme.color.background.secondary};\n ${({ hasRightBorder, theme }) =>\n hasRightBorder && `border-right: 2px solid ${theme.color.border.primary};`}\n`;\n\nexport const TableTR = styled(TableRow)<{ disableHoverBackground?: boolean; $isActive?: boolean }>`\n ${({ disableHoverBackground }) =>\n disableHoverBackground &&\n css`\n &:hover {\n background-color: transparent !important;\n }\n `}\n\n ${({ $isActive }) =>\n $isActive &&\n css`\n background-color: ${({ theme }) => theme.color.background.highlight};\n &:hover {\n background-color: ${({ theme }) => theme.color.background.highlight};\n }\n `}\n\n ${({ onClick, disableHoverBackground, $isActive }) =>\n onClick != null &&\n !disableHoverBackground &&\n !$isActive &&\n css`\n cursor: pointer;\n :hover {\n background-color: ${({ theme }) => theme.color.background.highlight};\n }\n transition-duration: ${TransitionDuration.Fast};\n `}\n`;\n","import styled, { css } from 'styled-components';\n\ninterface TableHeadProps {\n sticky?: boolean;\n}\n\nconst TableHead = styled.thead.attrs({ role: 'rowgroup' })<TableHeadProps>`\n display: table-header-group;\n ${({ sticky }) =>\n sticky &&\n css`\n position: sticky;\n top: 0;\n z-index: 1;\n `}\n`;\n\nexport default TableHead;\n","import styled from 'styled-components';\n\nconst TableBody = styled.tbody.attrs({ role: 'rowgroup' })`\n display: table-row-group;\n`;\n\nexport default TableBody;\n","import type { FC, PropsWithChildren, ReactNode } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nimport { Color, Spacing } from '@persona/design-tokens';\nimport { Spinner } from 'design-system/components/Spinner';\nimport Table, { TableHead, TableRow } from 'design-system/components/Table';\nimport { Z_INDICES } from 'design-system/lib/zindex';\nimport { fadeIn } from 'design-system/variables/keyframes';\n\n// `visible` rather than a narrower opt-out because CSS blockifies the other axis: any\n// `overflow-x` other than `visible`/`clip` forces `overflow-y` to compute to `auto` too, which\n// makes this element the scrollport that descendant sticky offsets resolve against.\nconst Container = styled.div<{ maxHeight?: number; $scrollsHorizontally: boolean }>`\n position: relative;\n z-index: 0;\n overflow-x: ${({ $scrollsHorizontally }) => ($scrollsHorizontally ? 'auto' : 'visible')};\n ${({ maxHeight }) => {\n if (maxHeight != null) {\n return `max-height: ${maxHeight}px;`;\n }\n }}\n `;\n\nconst slideKeyframes = keyframes`\n 0% {\n transform: translateX(-50%) scaleX(0);\n }\n 50% {\n transform: translateX(0) scaleX(1);\n }\n 100% {\n transform: translateX(50%) scaleX(0);\n }\n `;\n\nconst Loader = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n border-bottom: 3px solid ${({ theme }) => theme.color.primary.brand};\n width: 100%;\n \n animation: ${slideKeyframes} 3s infinite cubic-bezier(0.5, 0, 0.5, 1);\n `;\n\nconst Overlay = styled.div`\n position: absolute;\n z-index: ${Z_INDICES.loadingOverlays};\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ${({ theme }) => theme.color.primary.white};\n opacity: 50%;\n `;\n\nconst SpinnerWrapper = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ${Spacing[5]} 0;\n animation: ${fadeIn} 1s;\n animation-delay: 0.5s;\n animation-fill-mode: backwards;\n `;\n\nconst TableSpinner = styled(Spinner)`\n svg {\n width: 120px;\n height: 120px;\n }\n \n path {\n stroke: ${Color.CorePurple500};\n stroke-width: 0.46;\n }\n `;\n\ninterface TableLayoutProps {\n className?: string;\n containerMaxHeight?: number;\n /**\n * When false, the container does not scroll horizontally and an ancestor is expected to.\n * Sticky offsets inside the table then resolve against that ancestor's scrollport rather\n * than against the container.\n */\n containerScrollsHorizontally?: boolean;\n dataTest?: string;\n headerTR: JSX.Element;\n isEmpty?: boolean;\n isLoading?: boolean;\n nullState: ReactNode;\n showHeader?: boolean;\n size?: 'sm' | 'md';\n stickyHeader?: boolean;\n}\n\nconst TableLayout: FC<PropsWithChildren<TableLayoutProps>> = ({\n children,\n className,\n containerMaxHeight,\n containerScrollsHorizontally = true,\n dataTest,\n headerTR,\n isEmpty,\n isLoading,\n nullState,\n showHeader,\n size = 'md',\n stickyHeader = false,\n}) => {\n if (isEmpty && !showHeader) {\n if (isLoading) {\n return (\n <SpinnerWrapper\n role='status'\n aria-live='polite'\n aria-busy='true'\n aria-label='Loading...'\n data-loading-indicator='true'\n >\n <TableSpinner size='md' />\n </SpinnerWrapper>\n );\n } else {\n return (\n <Container data-test={dataTest} $scrollsHorizontally={containerScrollsHorizontally}>\n {nullState}\n </Container>\n );\n }\n }\n\n return (\n <Container\n data-test={dataTest}\n maxHeight={containerMaxHeight}\n className={className}\n $scrollsHorizontally={containerScrollsHorizontally}\n >\n {isLoading && <Loader data-test='table-layout__loader' />}\n {isLoading && <Overlay />}\n\n <Table size={size} aria-busy={isLoading || undefined}>\n <TableHead sticky={stickyHeader}>\n <TableRow>{headerTR}</TableRow>\n </TableHead>\n {!isEmpty && children}\n </Table>\n\n {isEmpty && nullState}\n </Container>\n );\n};\n\nexport default TableLayout;\n"],"mappings":"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"}
|
|
@@ -3,20 +3,20 @@ import "./variables/effect.mjs";
|
|
|
3
3
|
import "./variables/transitions.mjs";
|
|
4
4
|
import { paragraphMixins } from "./mixins/text.mjs";
|
|
5
5
|
import { n as Stack, t as HStack } from "./Stack-Bl54WmhY.mjs";
|
|
6
|
-
import { a as Tooltip } from "./Tooltip-
|
|
6
|
+
import { a as Tooltip } from "./Tooltip-BvDbmXak.mjs";
|
|
7
7
|
import { findIndexByKey, moveItemByIndex } from "./lib/reorderItems.mjs";
|
|
8
8
|
import { useScrollOverflow } from "./lib/useScrollOverflow.mjs";
|
|
9
9
|
import { Z_INDICES } from "./lib/zindex.mjs";
|
|
10
|
-
import { t as IconButton } from "./IconButton-
|
|
11
|
-
import { n as DropdownMenu_default } from "./DropdownMenu-
|
|
10
|
+
import { t as IconButton } from "./IconButton-P8w0JDI5.mjs";
|
|
11
|
+
import { n as DropdownMenu_default } from "./DropdownMenu-D25WBCah.mjs";
|
|
12
12
|
import { t as FormGroupContext } from "./useFormGroup-DWVW7A9f.mjs";
|
|
13
|
-
import { h as Table, m as TableHeaderCell, n as TableBody, p as TableRow, r as TableHead, s as TableCell } from "./Table-
|
|
14
|
-
import { n as CaretButton, t as Combobox } from "./Combobox-
|
|
13
|
+
import { h as Table, m as TableHeaderCell, n as TableBody, p as TableRow, r as TableHead, s as TableCell } from "./Table-BfontAeY.mjs";
|
|
14
|
+
import { n as CaretButton, t as Combobox } from "./Combobox-B6JyLog8.mjs";
|
|
15
15
|
import { s as Popover_default } from "./Popover-BkDpDdaO.mjs";
|
|
16
|
-
import { t as Container } from "./FormControl-
|
|
16
|
+
import { t as Container } from "./FormControl-CFU9uKF7.mjs";
|
|
17
17
|
import { BorderRadius, Color, Spacing, Typography } from "@persona/design-tokens";
|
|
18
18
|
import styled, { css } from "styled-components";
|
|
19
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
19
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
20
20
|
import { Children, cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
21
21
|
import { DragIcon } from "@persona/icons";
|
|
22
22
|
import { CircleAlertIcon as CircleAlertIcon$1, MoreIcon as MoreIcon$1, XIcon as XIcon$1 } from "@persona/icons/12px";
|
|
@@ -518,7 +518,7 @@ const TableBoxCell = ({ children, itemId = "", value = "", columnKey, errorText,
|
|
|
518
518
|
...columnConfig,
|
|
519
519
|
...inlineEditConfigOverride
|
|
520
520
|
} : columnConfig;
|
|
521
|
-
if (inlineEditConfig?.type === "combobox" && (context.
|
|
521
|
+
if (inlineEditConfig?.type === "combobox" && (context.clipsOverflow || inlineEditConfig?.fullWidthComboboxDropdown)) inlineEditConfig = {
|
|
522
522
|
...inlineEditConfig,
|
|
523
523
|
useComboboxPortal: true
|
|
524
524
|
};
|
|
@@ -1087,42 +1087,58 @@ const useTableBoxDragAndDrop = ({ tableRef, reorderConfig }) => {
|
|
|
1087
1087
|
const TableBoxContext = createContext(null);
|
|
1088
1088
|
const DRAG_HANDLE_CELL_WIDTH = 24;
|
|
1089
1089
|
const RIGHT_FADE_WIDTH = 48;
|
|
1090
|
+
const CONTAINER_BORDER_WIDTH_PX = 1;
|
|
1091
|
+
const STICKY_COLUMN_Z_INDEX = Z_INDICES.sticky;
|
|
1092
|
+
const BODY_FADE_Z_INDEX = Z_INDICES.sticky + 1;
|
|
1093
|
+
const PINNED_ACTIONS_Z_INDEX = Z_INDICES.sticky + 2;
|
|
1094
|
+
const STICKY_HEADER_Z_INDEX = Z_INDICES.sticky + 3;
|
|
1095
|
+
const STICKY_CORNER_Z_INDEX = Z_INDICES.sticky + 4;
|
|
1096
|
+
const HEADER_FADE_Z_INDEX = Z_INDICES.sticky + 5;
|
|
1090
1097
|
const HEADER_HEIGHT_PX = parseInt(Spacing[1], 10) * 2 + parseInt(Typography.TextSmall.lineHeight, 10) + 1;
|
|
1091
1098
|
const TableScrollContainer = styled.div`
|
|
1092
|
-
border:
|
|
1099
|
+
border: ${CONTAINER_BORDER_WIDTH_PX}px solid ${Color.BorderDivider};
|
|
1093
1100
|
border-radius: ${BorderRadius.Md};
|
|
1094
1101
|
overflow-x: ${({ $fixedLayout, $hasHorizontalOverflow }) => $fixedLayout ? "visible" : $hasHorizontalOverflow ? "auto" : "visible"};
|
|
1102
|
+
overflow-y: ${({ $maxHeight }) => $maxHeight != null ? "auto" : "visible"};
|
|
1095
1103
|
overscroll-behavior-x: none;
|
|
1104
|
+
${({ $maxHeight }) => $maxHeight != null && css`
|
|
1105
|
+
max-height: ${typeof $maxHeight === "number" ? `${$maxHeight}px` : $maxHeight};
|
|
1106
|
+
`}
|
|
1096
1107
|
`;
|
|
1097
1108
|
const ScrollAffordanceWrapper = styled.div`
|
|
1098
1109
|
position: relative;
|
|
1099
1110
|
`;
|
|
1100
1111
|
const RightFadeOverlay = styled.div`
|
|
1101
1112
|
position: absolute;
|
|
1102
|
-
|
|
1103
|
-
right: 1px;
|
|
1104
|
-
bottom: 1px;
|
|
1113
|
+
right: ${({ $scrollbarWidth }) => CONTAINER_BORDER_WIDTH_PX + $scrollbarWidth}px;
|
|
1105
1114
|
width: ${RIGHT_FADE_WIDTH}px;
|
|
1106
|
-
/* Sits above the sticky first column (z-index 2) but below the pinned
|
|
1107
|
-
row actions (z-index 4) so action buttons stay legible. */
|
|
1108
|
-
z-index: 3;
|
|
1109
1115
|
pointer-events: none;
|
|
1110
|
-
background:
|
|
1111
|
-
linear-gradient(to right, transparent, ${Color.BackgroundSecondary}) top left / 100%
|
|
1112
|
-
${Math.max(0, HEADER_HEIGHT_PX - 1)}px no-repeat,
|
|
1113
|
-
linear-gradient(to right, transparent, ${Color.BackgroundPrimary}) bottom left / 100%
|
|
1114
|
-
calc(100% - ${HEADER_HEIGHT_PX}px) no-repeat;
|
|
1115
|
-
border-top-right-radius: ${BorderRadius.Md};
|
|
1116
|
-
border-bottom-right-radius: ${BorderRadius.Md};
|
|
1117
1116
|
opacity: ${({ $visible }) => $visible ? 1 : 0};
|
|
1118
1117
|
transition: opacity ${"200ms"} ease-out;
|
|
1119
1118
|
`;
|
|
1120
|
-
const
|
|
1119
|
+
const HeaderFadeOverlay = styled(RightFadeOverlay).attrs({ "data-scroll-affordance": "header-fade" })`
|
|
1120
|
+
top: ${CONTAINER_BORDER_WIDTH_PX}px;
|
|
1121
|
+
height: ${Math.max(0, HEADER_HEIGHT_PX - CONTAINER_BORDER_WIDTH_PX)}px;
|
|
1122
|
+
z-index: ${HEADER_FADE_Z_INDEX};
|
|
1123
|
+
background: linear-gradient(to right, transparent, ${Color.BackgroundSecondary});
|
|
1124
|
+
border-top-right-radius: ${BorderRadius.Md};
|
|
1125
|
+
`;
|
|
1126
|
+
const BodyFadeOverlay = styled(RightFadeOverlay).attrs({ "data-scroll-affordance": "body-fade" })`
|
|
1127
|
+
top: ${({ $hideHeader }) => $hideHeader ? `${CONTAINER_BORDER_WIDTH_PX}px` : `${CONTAINER_BORDER_WIDTH_PX + HEADER_HEIGHT_PX}px`};
|
|
1128
|
+
bottom: ${({ $scrollbarHeight }) => CONTAINER_BORDER_WIDTH_PX + $scrollbarHeight}px;
|
|
1129
|
+
z-index: ${BODY_FADE_Z_INDEX};
|
|
1130
|
+
background: linear-gradient(to right, transparent, ${Color.BackgroundPrimary});
|
|
1131
|
+
border-bottom-right-radius: ${BorderRadius.Md};
|
|
1132
|
+
${({ $hideHeader }) => $hideHeader && css`
|
|
1133
|
+
border-top-right-radius: ${BorderRadius.Md};
|
|
1134
|
+
`}
|
|
1135
|
+
`;
|
|
1136
|
+
const stickyContentColumn = (isReorderable, stickyHeader) => css`
|
|
1121
1137
|
&& thead th:first-child,
|
|
1122
1138
|
&& tbody td:first-child {
|
|
1123
1139
|
position: sticky;
|
|
1124
1140
|
left: 0;
|
|
1125
|
-
z-index:
|
|
1141
|
+
z-index: ${STICKY_COLUMN_Z_INDEX};
|
|
1126
1142
|
}
|
|
1127
1143
|
|
|
1128
1144
|
&& tbody td:first-child {
|
|
@@ -1134,13 +1150,26 @@ const stickyContentColumn = (isReorderable) => css`
|
|
|
1134
1150
|
&& tbody td:nth-child(2) {
|
|
1135
1151
|
position: sticky;
|
|
1136
1152
|
left: ${DRAG_HANDLE_CELL_WIDTH}px;
|
|
1137
|
-
z-index:
|
|
1153
|
+
z-index: ${STICKY_COLUMN_Z_INDEX};
|
|
1138
1154
|
}
|
|
1139
1155
|
|
|
1140
1156
|
&& tbody td:nth-child(2) {
|
|
1141
1157
|
background-color: inherit;
|
|
1142
1158
|
}
|
|
1143
1159
|
`}
|
|
1160
|
+
|
|
1161
|
+
${stickyHeader && css`
|
|
1162
|
+
&& thead th {
|
|
1163
|
+
position: sticky;
|
|
1164
|
+
top: 0;
|
|
1165
|
+
z-index: ${STICKY_HEADER_Z_INDEX};
|
|
1166
|
+
background-color: ${Color.BackgroundSecondary};
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
${isReorderable ? `&& thead th:nth-child(-n+2)` : `&& thead th:first-child`} {
|
|
1170
|
+
z-index: ${STICKY_CORNER_Z_INDEX};
|
|
1171
|
+
}
|
|
1172
|
+
`}
|
|
1144
1173
|
`;
|
|
1145
1174
|
const StyledTable = styled(Table)`
|
|
1146
1175
|
caret-color: ${Color.BorderFocus};
|
|
@@ -1149,10 +1178,19 @@ const StyledTable = styled(Table)`
|
|
|
1149
1178
|
background: ${Color.BackgroundLabelPurple};
|
|
1150
1179
|
}
|
|
1151
1180
|
|
|
1152
|
-
${({ $fixedLayout, $isReorderable }) => $fixedLayout ? css`
|
|
1181
|
+
${({ $fixedLayout, $isReorderable, $stickyHeader }) => $fixedLayout ? css`
|
|
1153
1182
|
/* Legacy: truncate long cell content to container width. */
|
|
1154
1183
|
table-layout: fixed;
|
|
1155
|
-
|
|
1184
|
+
|
|
1185
|
+
${$stickyHeader && css`
|
|
1186
|
+
&& thead th {
|
|
1187
|
+
position: sticky;
|
|
1188
|
+
top: 0;
|
|
1189
|
+
z-index: ${STICKY_HEADER_Z_INDEX};
|
|
1190
|
+
background-color: ${Color.BackgroundSecondary};
|
|
1191
|
+
}
|
|
1192
|
+
`}
|
|
1193
|
+
` : stickyContentColumn($isReorderable, $stickyHeader)}
|
|
1156
1194
|
|
|
1157
1195
|
/* Lock column widths while inline editing to prevent layout reflow. */
|
|
1158
1196
|
${({ $fixedLayout, $lockedWidth }) => !$fixedLayout && $lockedWidth != null && css`
|
|
@@ -1200,7 +1238,7 @@ const DragHandleHeaderCell = styled(StyledTableHeaderCell)`
|
|
|
1200
1238
|
const PinnedActionsCell = styled(TableCell)`
|
|
1201
1239
|
position: sticky;
|
|
1202
1240
|
right: 0;
|
|
1203
|
-
z-index:
|
|
1241
|
+
z-index: ${PINNED_ACTIONS_Z_INDEX};
|
|
1204
1242
|
background: transparent;
|
|
1205
1243
|
border-bottom: 1px solid ${Color.BorderHairline};
|
|
1206
1244
|
padding: 0;
|
|
@@ -1209,7 +1247,9 @@ const PinnedActionsCell = styled(TableCell)`
|
|
|
1209
1247
|
`;
|
|
1210
1248
|
const EmptyStateCell = styled(TableCell)`
|
|
1211
1249
|
${paragraphMixins.sm};
|
|
1212
|
-
padding
|
|
1250
|
+
/* Same vertical padding as TableBoxCell so empty and populated tables share a
|
|
1251
|
+
stable row height. */
|
|
1252
|
+
padding: ${Spacing[1]} ${Spacing[2]};
|
|
1213
1253
|
color: ${Color.TextSecondary};
|
|
1214
1254
|
border-bottom: none;
|
|
1215
1255
|
`;
|
|
@@ -1222,14 +1262,14 @@ const EmptyStateButton = styled.button`
|
|
|
1222
1262
|
cursor: pointer;
|
|
1223
1263
|
${focusOutline}
|
|
1224
1264
|
`;
|
|
1225
|
-
const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, columns, onSelectionChange, selectionMode = "none", newRowId, onCreateNewRow: onCreateNewRowProp, disabled = false, reorderConfig, disableHorizontalScroll: disableHorizontalScrollProp = false, hideHeader = false, "aria-label": ariaLabel, ...props }) => {
|
|
1265
|
+
const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, columns, onSelectionChange, selectionMode = "none", newRowId, onCreateNewRow: onCreateNewRowProp, disabled = false, reorderConfig, disableHorizontalScroll: disableHorizontalScrollProp = false, hideHeader = false, maxHeight, "aria-label": ariaLabel, ...props }) => {
|
|
1226
1266
|
const tableRef = useRef(null);
|
|
1227
1267
|
const scrollContainerRef = useRef(null);
|
|
1228
1268
|
const tableBoxId = useMemo(() => uniqueId("tablebox-"), []);
|
|
1229
1269
|
const rowDropdownId = `${tableBoxId}-row-dropdown`;
|
|
1230
1270
|
const hasInlineEditableColumn = columns.some((c) => c.inlineEditConfig != null);
|
|
1231
1271
|
const disableHorizontalScroll = disableHorizontalScrollProp || hasInlineEditableColumn;
|
|
1232
|
-
const { hasHorizontalOverflow, hasMoreScrollRight } = useScrollOverflow(scrollContainerRef, { enabled: !disableHorizontalScroll });
|
|
1272
|
+
const { hasHorizontalOverflow, hasMoreScrollRight, scrollbarSize } = useScrollOverflow(scrollContainerRef, { enabled: !disableHorizontalScroll });
|
|
1233
1273
|
const { lockedColWidths, setColumnWidthsLocked } = useColumnWidthLock(tableRef, { enabled: !disableHorizontalScroll });
|
|
1234
1274
|
const [internalSelectedKey, setInternalSelectedKey] = useState(defaultSelectedKey ?? null);
|
|
1235
1275
|
const [shouldCreateNewRowAfterCommit, setShouldCreateNewRowAfterCommit] = useState(false);
|
|
@@ -1271,6 +1311,7 @@ const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, column
|
|
|
1271
1311
|
});
|
|
1272
1312
|
const isReorderable = !disabled && reorderConfig != null;
|
|
1273
1313
|
const hasActionsColumn = !disableHorizontalScroll;
|
|
1314
|
+
const stickyHeader = maxHeight != null && !hideHeader;
|
|
1274
1315
|
const contextValue = {
|
|
1275
1316
|
disabled,
|
|
1276
1317
|
newRowId,
|
|
@@ -1285,6 +1326,7 @@ const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, column
|
|
|
1285
1326
|
draggedDirection,
|
|
1286
1327
|
hasActionsColumn,
|
|
1287
1328
|
hasHorizontalOverflow,
|
|
1329
|
+
clipsOverflow: hasHorizontalOverflow || maxHeight != null,
|
|
1288
1330
|
setColumnWidthsLocked,
|
|
1289
1331
|
scheduleCreateNewRowAfterCommit: onCreateNewRowProp ? scheduleCreateNewRowAfterCommit : void 0
|
|
1290
1332
|
};
|
|
@@ -1295,6 +1337,7 @@ const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, column
|
|
|
1295
1337
|
ref: scrollContainerRef,
|
|
1296
1338
|
$fixedLayout: disableHorizontalScroll,
|
|
1297
1339
|
$hasHorizontalOverflow: hasHorizontalOverflow,
|
|
1340
|
+
$maxHeight: maxHeight,
|
|
1298
1341
|
children: /* @__PURE__ */ jsxs(StyledTable, {
|
|
1299
1342
|
ref: tableRef,
|
|
1300
1343
|
size: "md",
|
|
@@ -1304,6 +1347,7 @@ const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, column
|
|
|
1304
1347
|
$hasHorizontalOverflow: hasHorizontalOverflow,
|
|
1305
1348
|
$fixedLayout: disableHorizontalScroll,
|
|
1306
1349
|
$hideHeader: hideHeader,
|
|
1350
|
+
$stickyHeader: stickyHeader,
|
|
1307
1351
|
$lockedWidth: lockedColWidths != null ? lockedColWidths.reduce((sum, w) => sum + w, 0) : void 0,
|
|
1308
1352
|
...props,
|
|
1309
1353
|
children: [
|
|
@@ -1329,10 +1373,17 @@ const TableBox = ({ children, emptyText, selectedKey, defaultSelectedKey, column
|
|
|
1329
1373
|
}) : children })
|
|
1330
1374
|
]
|
|
1331
1375
|
})
|
|
1332
|
-
}), !disableHorizontalScroll && /* @__PURE__ */ jsx(
|
|
1376
|
+
}), !disableHorizontalScroll && /* @__PURE__ */ jsxs(Fragment, { children: [!hideHeader && /* @__PURE__ */ jsx(HeaderFadeOverlay, {
|
|
1377
|
+
"aria-hidden": "true",
|
|
1378
|
+
$visible: hasMoreScrollRight,
|
|
1379
|
+
$scrollbarWidth: scrollbarSize.vertical
|
|
1380
|
+
}), /* @__PURE__ */ jsx(BodyFadeOverlay, {
|
|
1333
1381
|
"aria-hidden": "true",
|
|
1334
|
-
$visible: hasMoreScrollRight
|
|
1335
|
-
|
|
1382
|
+
$visible: hasMoreScrollRight,
|
|
1383
|
+
$hideHeader: hideHeader,
|
|
1384
|
+
$scrollbarWidth: scrollbarSize.vertical,
|
|
1385
|
+
$scrollbarHeight: scrollbarSize.horizontal
|
|
1386
|
+
})] })] });
|
|
1336
1387
|
return /* @__PURE__ */ jsx(TableBoxContext.Provider, {
|
|
1337
1388
|
value: contextValue,
|
|
1338
1389
|
children: isReorderable ? /* @__PURE__ */ jsxs(DndContext, {
|
|
@@ -1353,4 +1404,4 @@ TableBox.Cell = TableBoxCell;
|
|
|
1353
1404
|
//#endregion
|
|
1354
1405
|
export { TableBoxContext as n, TableBox as t };
|
|
1355
1406
|
|
|
1356
|
-
//# sourceMappingURL=TableBox-
|
|
1407
|
+
//# sourceMappingURL=TableBox-bmrKh_ax.mjs.map
|