@persona/design-system 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +3 -3
- package/dist/{Action-CnNf5T-l.d.mts → Action-CcAyQpYN.d.mts} +3 -3
- package/dist/Action.d.mts +1 -1
- package/dist/AdvancedFilterRuleRow.d.mts +5 -5
- package/dist/AdvancedFilterRulesPopover.d.mts +4 -4
- package/dist/ArrayValueControl.d.mts +1 -1
- package/dist/Attribute.d.mts +5 -5
- package/dist/AttributeGrid.d.mts +1 -1
- package/dist/{Badge-BqS6Nk4J.mjs → Badge-BL0J5oMa.mjs} +3 -3
- package/dist/{Badge-BqS6Nk4J.mjs.map → Badge-BL0J5oMa.mjs.map} +1 -1
- package/dist/Banner.d.mts +1 -1
- package/dist/BooleanValueControl.d.mts +1 -1
- package/dist/BottomPanel.d.mts +32 -0
- package/dist/{Breadcrumb-DEwZFJHF.d.mts → Breadcrumb-Df06cTnA.d.mts} +1 -1
- package/dist/Breadcrumb.d.mts +1 -1
- package/dist/{Breadcrumbs-0e_3v9FF.d.mts → Breadcrumbs-D_Gzd4_J.d.mts} +2 -2
- package/dist/{Breadcrumbs-CqKtnZqu.mjs → Breadcrumbs-Zi5p0HDR.mjs} +12 -12
- package/dist/{Breadcrumbs-CqKtnZqu.mjs.map → Breadcrumbs-Zi5p0HDR.mjs.map} +1 -1
- package/dist/Breadcrumbs.d.mts +1 -1
- package/dist/{Button-C0F0F2IL.d.mts → Button-BrI1s2-r.d.mts} +4 -4
- package/dist/Button.d.mts +1 -1
- package/dist/ButtonGroup.d.mts +1 -1
- package/dist/{Calendar-BvLNcHQM.d.mts → Calendar-DjnoZVcT.d.mts} +2 -2
- package/dist/Calendar.d.mts +1 -1
- package/dist/CalendarBase.d.mts +1 -1
- package/dist/{Card-BMCB9eFC.mjs → Card-CKrJtn1f.mjs} +4 -4
- package/dist/{Card-BMCB9eFC.mjs.map → Card-CKrJtn1f.mjs.map} +1 -1
- package/dist/{Card-BxNoIQWw.d.mts → Card-mZDNFaJy.d.mts} +4 -4
- package/dist/Card.d.mts +1 -1
- package/dist/Card2.d.mts +3 -3
- package/dist/{CardV2-B0ZweQYk.mjs → CardV2-CXxzl1EZ.mjs} +20 -20
- package/dist/{CardV2-B0ZweQYk.mjs.map → CardV2-CXxzl1EZ.mjs.map} +1 -1
- package/dist/{Checkbox-Bm8exUfH.d.mts → Checkbox-CwPXPLCi.d.mts} +1 -1
- package/dist/{Checkbox-DAvbgZgO.mjs → Checkbox-DxNHp59y.mjs} +8 -8
- package/dist/{Checkbox-DAvbgZgO.mjs.map → Checkbox-DxNHp59y.mjs.map} +1 -1
- package/dist/Checkbox.d.mts +1 -1
- package/dist/CheckboxGroupField.d.mts +2 -2
- package/dist/ChoicesValueControl.d.mts +1 -1
- package/dist/{Combobox-xBrxiUAu.mjs → Combobox-BUtqtzKl.mjs} +22 -22
- package/dist/Combobox-BUtqtzKl.mjs.map +1 -0
- package/dist/{Combobox-C8ue0cBP.d.mts → Combobox-C9QBItsc.d.mts} +3 -3
- package/dist/Combobox.d.mts +2 -2
- package/dist/{ComboboxBase-DJGTMf1_.d.mts → ComboboxBase-BkSpdmsT.d.mts} +8 -8
- package/dist/ComboboxBase.d.mts +1 -1
- package/dist/{ComboboxMultiSelect-D7A2bbWU.d.mts → ComboboxMultiSelect-DkVfwSKH.d.mts} +2 -2
- package/dist/ComboboxMultiSelect.d.mts +1 -1
- package/dist/{ComboboxSingleSelect-D1uzEyKj.d.mts → ComboboxSingleSelect-CpumBcDn.d.mts} +4 -4
- package/dist/ComboboxSingleSelect.d.mts +1 -1
- package/dist/{CompactBar-DMuvqaV5.d.mts → CompactBar-COxu_FDd.d.mts} +3 -3
- package/dist/CompactBar.d.mts +1 -1
- package/dist/{ConfigFormGroup-D2_sajXe.mjs → ConfigFormGroup-aSdn2r6Z.mjs} +4 -4
- package/dist/{ConfigFormGroup-D2_sajXe.mjs.map → ConfigFormGroup-aSdn2r6Z.mjs.map} +1 -1
- package/dist/{ControlBar-Dg8JeU8f.d.mts → ControlBar-DwAhPcb5.d.mts} +12 -2
- package/dist/ControlBar.d.mts +1 -1
- package/dist/DataTable.d.mts +5 -4
- package/dist/{DateField-Com9f2-j.d.mts → DateField-tOyrGcx1.d.mts} +2 -2
- package/dist/DateField.d.mts +1 -1
- package/dist/{DatePicker-BGO6doLx.d.mts → DatePicker-Bs9JODNg.d.mts} +2 -2
- package/dist/{DatePicker-BlnE2MBD.mjs → DatePicker-CLP-ajza.mjs} +95 -23
- package/dist/DatePicker-CLP-ajza.mjs.map +1 -0
- package/dist/DatePicker.d.mts +1 -1
- package/dist/{DateRangePicker-DfRBm9z4.d.mts → DateRangePicker-BT6-j8V7.d.mts} +24 -4
- package/dist/DateRangePicker.d.mts +2 -2
- package/dist/DateRangeValueControl.d.mts +8 -4
- package/dist/DateValueControl.d.mts +1 -1
- package/dist/{DropdownButton-CpWNRUma.mjs → DropdownButton-CCAfNZ9h.mjs} +3 -3
- package/dist/{DropdownButton-CpWNRUma.mjs.map → DropdownButton-CCAfNZ9h.mjs.map} +1 -1
- package/dist/DropdownButton.d.mts +2 -2
- package/dist/{DropdownMenu-CnaK78rP.d.mts → DropdownMenu-BoatixlO.d.mts} +3 -3
- package/dist/{DropdownMenu-BCyV8nC0.mjs → DropdownMenu-CUnf420M.mjs} +4 -4
- package/dist/{DropdownMenu-BCyV8nC0.mjs.map → DropdownMenu-CUnf420M.mjs.map} +1 -1
- package/dist/DropdownMenu.d.mts +1 -1
- package/dist/{ErrorProps-CN2XjaOX.d.mts → ErrorProps-C9T857Wk.d.mts} +1 -1
- package/dist/ErrorProps.d.mts +1 -1
- package/dist/{FieldRegistry-DdA63Vnh.d.mts → FieldRegistry-D6niLExM.d.mts} +2 -2
- package/dist/FieldRegistry.d.mts +1 -1
- package/dist/{FilterBar-CxNsBVrn.d.mts → FilterBar-DfBV7yKM.d.mts} +10 -4
- package/dist/FilterBar.d.mts +1 -1
- package/dist/FilterPickerMenu.d.mts +3 -3
- package/dist/FilterPill.d.mts +1 -1
- package/dist/FilterPopover.d.mts +2 -2
- package/dist/FloatValueControl.d.mts +1 -1
- package/dist/FloatingPanel.d.mts +1 -1
- package/dist/FloatingPanelContext.d.mts +1 -1
- package/dist/{FormControl-Doj2gvF0.d.mts → FormControl-0H0Jeind.d.mts} +4 -4
- package/dist/{FormControl-HVzZEqJH.mjs → FormControl-1BmoYFCu.mjs} +6 -6
- package/dist/{FormControl-HVzZEqJH.mjs.map → FormControl-1BmoYFCu.mjs.map} +1 -1
- package/dist/FormControl.d.mts +1 -1
- package/dist/FormControlLabel.d.mts +2 -2
- package/dist/{FormField-D8dHbqZZ.d.mts → FormField-BcaFdmo5.d.mts} +2 -2
- package/dist/{FormField-B9P3BWvS.mjs → FormField-oBKH25qf.mjs} +22 -22
- package/dist/FormField-oBKH25qf.mjs.map +1 -0
- package/dist/FormField.d.mts +1 -1
- package/dist/Grid.d.mts +38 -0
- package/dist/GridItem.d.mts +17 -0
- package/dist/{Header-CBlB65NY.d.mts → Header-BjSoTEX_.d.mts} +2 -2
- package/dist/Header.d.mts +1 -1
- package/dist/{HelperTooltip-C28h1zFl.d.mts → HelperTooltip-S20wVFCS.d.mts} +3 -3
- package/dist/HelperTooltip.d.mts +1 -1
- package/dist/{HoverCopyableField-0Bzygbp9.mjs → HoverCopyableField-GMXeF-3J.mjs} +31 -20
- package/dist/HoverCopyableField-GMXeF-3J.mjs.map +1 -0
- package/dist/HoverCopyableField.d.mts +15 -4
- package/dist/{IconButton-BfDlic2K.mjs → IconButton-BgL3QUVO.mjs} +9 -9
- package/dist/{IconButton-BfDlic2K.mjs.map → IconButton-BgL3QUVO.mjs.map} +1 -1
- package/dist/{IconButton-CBcW7ZU8.d.mts → IconButton-BpyOr8Ev.d.mts} +2 -2
- package/dist/IconButton.d.mts +1 -1
- package/dist/ImageTile.d.mts +2 -2
- package/dist/InlineCombobox.d.mts +2 -2
- package/dist/InlineInput.d.mts +1 -1
- package/dist/{Input-Bimw8KFj.mjs → Input-BWlvBYB3.mjs} +6 -6
- package/dist/{Input-Bimw8KFj.mjs.map → Input-BWlvBYB3.mjs.map} +1 -1
- package/dist/{Input-CVdjkX88.d.mts → Input-qlQVD5h0.d.mts} +5 -5
- package/dist/Input.d.mts +1 -1
- package/dist/{InputProps-BwKkmImn.d.mts → InputProps-D_7MnQfE.d.mts} +2 -2
- package/dist/InputProps.d.mts +1 -1
- package/dist/IntegerValueControl.d.mts +1 -1
- package/dist/LayoutLoadingSpinner.d.mts +11 -0
- package/dist/Link.d.mts +3 -3
- package/dist/{ListBox-DKZpGYjo.mjs → ListBox-9jHHEaqW.mjs} +15 -15
- package/dist/{ListBox-DKZpGYjo.mjs.map → ListBox-9jHHEaqW.mjs.map} +1 -1
- package/dist/{ListBox-CDl5oZPX.d.mts → ListBox-ZE3MYMt6.d.mts} +5 -5
- package/dist/ListBox.d.mts +1 -1
- package/dist/ListBoxField.d.mts +3 -3
- package/dist/{LoadingShimmer-DC2vqicd.mjs → LoadingShimmer-a2Hv0kAq.mjs} +2 -2
- package/dist/{LoadingShimmer-DC2vqicd.mjs.map → LoadingShimmer-a2Hv0kAq.mjs.map} +1 -1
- package/dist/LoadingShimmer.d.mts +2 -2
- package/dist/{LogicRow-CkbyvrUw.d.mts → LogicRow-CbMmaWXU.d.mts} +4 -4
- package/dist/LogicRow.d.mts +1 -1
- package/dist/MaskedInput.d.mts +2 -2
- package/dist/MatchHighlight.d.mts +1 -1
- package/dist/{Menu-Dir03WA9.mjs → Menu-38UCGcte.mjs} +6 -6
- package/dist/{Menu-Dir03WA9.mjs.map → Menu-38UCGcte.mjs.map} +1 -1
- package/dist/{Menu-CYRdEnfo.d.mts → Menu-ZShdhNd7.d.mts} +4 -4
- package/dist/Menu.d.mts +1 -1
- package/dist/{MiddleTruncatedText-GXI-CPvs.mjs → MiddleTruncatedText-DnF7F_1D.mjs} +4 -4
- package/dist/{MiddleTruncatedText-GXI-CPvs.mjs.map → MiddleTruncatedText-DnF7F_1D.mjs.map} +1 -1
- package/dist/Modal.d.mts +4 -5
- package/dist/{PageHeader-C2IUKhCg.mjs → PageHeader-B2-Slzhl.mjs} +4 -4
- package/dist/{PageHeader-C2IUKhCg.mjs.map → PageHeader-B2-Slzhl.mjs.map} +1 -1
- package/dist/PageHeader.d.mts +2 -2
- package/dist/PageLayout.d.mts +1 -1
- package/dist/{PageSelector-vay4jpMp.d.mts → PageSelector-BcZx4nqe.d.mts} +3 -3
- package/dist/PageSelector.d.mts +1 -1
- package/dist/{Pagination-0VhVdXv0.mjs → Pagination-CtUz0gdA.mjs} +8 -8
- package/dist/{Pagination-0VhVdXv0.mjs.map → Pagination-CtUz0gdA.mjs.map} +1 -1
- package/dist/{Pagination-ygLutOst.d.mts → Pagination-j4hF7GOk.d.mts} +2 -2
- package/dist/Pagination.d.mts +1 -1
- package/dist/{Pii-C7pA72Bh.mjs → Pii-RwKn-K84.mjs} +2 -2
- package/dist/{Pii-C7pA72Bh.mjs.map → Pii-RwKn-K84.mjs.map} +1 -1
- package/dist/Pii.d.mts +1 -1
- package/dist/PillShell.d.mts +1 -1
- package/dist/{Popover-BkDpDdaO.mjs → Popover-DlXyKYL5.mjs} +6 -6
- package/dist/{Popover-BkDpDdaO.mjs.map → Popover-DlXyKYL5.mjs.map} +1 -1
- package/dist/Popover.d.mts +1 -1
- package/dist/ProgressBar.d.mts +1 -1
- package/dist/ProgressIndicator.d.mts +6 -4
- package/dist/{PseudoClassProps-CcSlKNev.d.mts → PseudoClassProps-BPdn-ofQ.d.mts} +1 -1
- package/dist/PseudoClassProps.d.mts +1 -1
- package/dist/{Radio-BaFutxgV.mjs → Radio-cLL9oatf.mjs} +5 -5
- package/dist/{Radio-BaFutxgV.mjs.map → Radio-cLL9oatf.mjs.map} +1 -1
- package/dist/{RadioGroup-ClMzOZl0.mjs → RadioGroup-BGo_kXKh.mjs} +4 -4
- package/dist/{RadioGroup-ClMzOZl0.mjs.map → RadioGroup-BGo_kXKh.mjs.map} +1 -1
- package/dist/{RadioGroup-BuJaitgG.d.mts → RadioGroup-BqULCH-D.d.mts} +1 -1
- package/dist/RadioGroup.d.mts +1 -1
- package/dist/RangeCalendar.d.mts +6 -1
- package/dist/RangeCalendarPresets.d.mts +13 -3
- package/dist/ResizableVerticalPanel.d.mts +22 -0
- package/dist/ResizeHandle.d.mts +19 -0
- package/dist/RightPanel.d.mts +41 -0
- package/dist/RightPanelLoadingContent.d.mts +7 -0
- package/dist/RightPanelResizeHandle.d.mts +14 -0
- package/dist/RuleEditorFields.d.mts +5 -5
- package/dist/RulesPill.d.mts +1 -1
- package/dist/{SearchInput-Ca3_np5e.d.mts → SearchInput-Dc90GLTF.d.mts} +3 -3
- package/dist/SearchInput.d.mts +1 -1
- package/dist/SectionHeading.d.mts +1 -1
- package/dist/{SegmentedControl-DgyJL4uN.mjs → SegmentedControl-CvWJGhwy.mjs} +5 -5
- package/dist/{SegmentedControl-DgyJL4uN.mjs.map → SegmentedControl-CvWJGhwy.mjs.map} +1 -1
- package/dist/{SegmentedControl-_I4sWeD7.d.mts → SegmentedControl-Db78Pzo_.d.mts} +2 -2
- package/dist/SegmentedControl.d.mts +1 -1
- package/dist/{Select-D6MqSYVa.mjs → Select-U_vQhK1A.mjs} +12 -13
- package/dist/Select-U_vQhK1A.mjs.map +1 -0
- package/dist/{Select-vwXGlHuW.d.mts → Select-bafAe2wd.d.mts} +4 -4
- package/dist/Select.d.mts +1 -1
- package/dist/Slider.d.mts +1 -1
- package/dist/SliderRHF.d.mts +1 -1
- package/dist/SliderThumb.d.mts +1 -1
- package/dist/{Spacer-CJp0lwkL.mjs → Spacer-BsK8tTwA.mjs} +2 -2
- package/dist/{Spacer-CJp0lwkL.mjs.map → Spacer-BsK8tTwA.mjs.map} +1 -1
- package/dist/{Spinner-BgBCCHGo.mjs → Spinner-BTyc6glU.mjs} +3 -3
- package/dist/{Spinner-BgBCCHGo.mjs.map → Spinner-BTyc6glU.mjs.map} +1 -1
- package/dist/{Stack-Bl54WmhY.mjs → Stack-Bre2oiov.mjs} +2 -2
- package/dist/{Stack-Bl54WmhY.mjs.map → Stack-Bre2oiov.mjs.map} +1 -1
- package/dist/{Stack-CkV7k7TE.d.mts → Stack-_JcvIE31.d.mts} +2 -2
- package/dist/Stack.d.mts +1 -1
- package/dist/StatusIndicator.d.mts +1 -1
- package/dist/{Sticker-xtDMuOoN.mjs → Sticker-CQ6sOKUj.mjs} +6 -6
- package/dist/{Sticker-xtDMuOoN.mjs.map → Sticker-CQ6sOKUj.mjs.map} +1 -1
- package/dist/{Sticker-Dhx2wqTL.d.mts → Sticker-OKVOQt_C.d.mts} +6 -6
- package/dist/Sticker.d.mts +1 -1
- package/dist/StringValueControl.d.mts +1 -1
- package/dist/SwatchPicker.d.mts +1 -1
- package/dist/Tab.d.mts +3 -3
- package/dist/{TabBar-D6UocZXi.mjs → TabBar-B5NtgtgC.mjs} +7 -7
- package/dist/{TabBar-D6UocZXi.mjs.map → TabBar-B5NtgtgC.mjs.map} +1 -1
- package/dist/TabBarIconButton.d.mts +2 -2
- package/dist/{Table-cO7ZwGPM.d.mts → Table-BcAgCIWq.d.mts} +1 -1
- package/dist/{Table-D1WyUQuv.mjs → Table-DfUD3I2s.mjs} +8 -8
- package/dist/{Table-D1WyUQuv.mjs.map → Table-DfUD3I2s.mjs.map} +1 -1
- package/dist/Table.d.mts +1 -1
- package/dist/{TableBody-CirMgfAV.d.mts → TableBody-D-RDBun9.d.mts} +1 -1
- package/dist/TableBody.d.mts +1 -1
- package/dist/{TableBox-C5qWhr82.mjs → TableBox-0GvWjRln.mjs} +27 -21
- package/dist/{TableBox-C5qWhr82.mjs.map → TableBox-0GvWjRln.mjs.map} +1 -1
- package/dist/TableBox.d.mts +2 -2
- package/dist/{TableBoxCell-DmVX_tgn.d.mts → TableBoxCell-WXc57DwN.d.mts} +12 -9
- package/dist/TableBoxCell.d.mts +1 -1
- package/dist/TableBoxField.d.mts +4 -4
- package/dist/{TableBoxRow-nwq41Bpi.d.mts → TableBoxRow-BQz0a9vr.d.mts} +4 -4
- package/dist/TableBoxRow.d.mts +1 -1
- package/dist/{TableBoxRowActions-B4_ojiQo.d.mts → TableBoxRowActions-DfewtLrn.d.mts} +2 -2
- package/dist/TableBoxRowActions.d.mts +1 -1
- package/dist/TableCell.d.mts +1 -1
- package/dist/{TableControls-RwIPBxyU.d.mts → TableControls-C26vGkWZ.d.mts} +6 -9
- package/dist/{TableControls-CZ9iu3ma.mjs → TableControls-WUNbzSNq.mjs} +331 -113
- package/dist/TableControls-WUNbzSNq.mjs.map +1 -0
- package/dist/TableControls.d.mts +1 -1
- package/dist/{TableControlsContext-D_SBFZN1.d.mts → TableControlsContext-ChFsFEjR.d.mts} +2 -2
- package/dist/TableControlsContext.d.mts +1 -1
- package/dist/{TableHead-DMq_q_W0.d.mts → TableHead-PPaqXC0K.d.mts} +1 -1
- package/dist/TableHead.d.mts +1 -1
- package/dist/{TableHeaderCell-C2pqXBYO.d.mts → TableHeaderCell-K_avn-rR.d.mts} +1 -1
- package/dist/TableHeaderCell.d.mts +1 -1
- package/dist/{TableLayout-DQKu6Rcj.d.mts → TableLayout-_Hd-Tvto.d.mts} +1 -1
- package/dist/TableLayout.d.mts +1 -1
- package/dist/{TableRow-CPqZ8DK3.d.mts → TableRow-BTWf9xVC.d.mts} +2 -2
- package/dist/TableRow.d.mts +1 -1
- package/dist/TableTH.d.mts +1 -1
- package/dist/{TableViewConfigurationDropdown-BYPh4dIP.d.mts → TableViewConfigurationDropdown-BqB7pOh8.d.mts} +5 -3
- package/dist/TableViewConfigurationDropdown.d.mts +1 -1
- package/dist/{TechnicalSticker-DTjg6d2F.mjs → TechnicalSticker-ClRR_6Ly.mjs} +6 -6
- package/dist/{TechnicalSticker-DTjg6d2F.mjs.map → TechnicalSticker-ClRR_6Ly.mjs.map} +1 -1
- package/dist/TechnicalSticker.d.mts +1 -1
- package/dist/{Text-RcEfNFLx.mjs → Text-B0orb-cZ.mjs} +2 -2
- package/dist/{Text-RcEfNFLx.mjs.map → Text-B0orb-cZ.mjs.map} +1 -1
- package/dist/{Text-CfIFUyHt.d.mts → Text-CAKHcXSd.d.mts} +4 -4
- package/dist/Text.d.mts +1 -1
- package/dist/{TextArea-DhPBI_1-.d.mts → TextArea-NjdArapc.d.mts} +2 -2
- package/dist/{TextArea-ZMgbE_Lh.mjs → TextArea-n4IKHJKo.mjs} +4 -4
- package/dist/{TextArea-ZMgbE_Lh.mjs.map → TextArea-n4IKHJKo.mjs.map} +1 -1
- package/dist/TextArea.d.mts +1 -1
- package/dist/{TextUnderlineTooltip-BzmmiJlC.d.mts → TextUnderlineTooltip-Duzxfc_r.d.mts} +3 -3
- package/dist/TextUnderlineTooltip.d.mts +1 -1
- package/dist/Tile.d.mts +2 -2
- package/dist/Toast.d.mts +1 -1
- package/dist/{Toggle-BPgfSjuu.mjs → Toggle-e8DCYa6i.mjs} +7 -7
- package/dist/{Toggle-BPgfSjuu.mjs.map → Toggle-e8DCYa6i.mjs.map} +1 -1
- package/dist/{Toggle-BGGQ4Ukl.d.mts → Toggle-fh80PA8P.d.mts} +1 -1
- package/dist/Toggle.d.mts +1 -1
- package/dist/{Tooltip-D_a-RwAN.d.mts → Tooltip-DabloV0o.d.mts} +3 -3
- package/dist/{Tooltip-BvDbmXak.mjs → Tooltip-iJcfJqxn.mjs} +5 -5
- package/dist/{Tooltip-BvDbmXak.mjs.map → Tooltip-iJcfJqxn.mjs.map} +1 -1
- package/dist/Tooltip.d.mts +1 -1
- package/dist/{TruncatedText-BJnowVTx.d.mts → TruncatedText-B1W4BivL.d.mts} +2 -2
- package/dist/codec-B0dZTwlG.d.mts +29 -0
- package/dist/codec.d.mts +2 -0
- package/dist/components/Attribute/index.mjs +7 -7
- package/dist/components/Attribute/index.mjs.map +1 -1
- package/dist/components/Badge/index.mjs +1 -1
- package/dist/components/Banner/index.mjs +3 -3
- package/dist/components/BottomPanel/index.d.mts +2 -0
- package/dist/components/BottomPanel/index.mjs +293 -0
- package/dist/components/BottomPanel/index.mjs.map +1 -0
- package/dist/components/Breadcrumbs/index.d.mts +1 -1
- package/dist/components/Breadcrumbs/index.mjs +1 -1
- package/dist/components/Button/index.d.mts +2 -2
- package/dist/components/Button/index.mjs +1 -1
- package/dist/components/ButtonGroup/index.mjs +4 -4
- package/dist/components/Card/index.d.mts +2 -2
- package/dist/components/Card/index.mjs +1 -1
- package/dist/components/CardV2/index.d.mts +1 -1
- package/dist/components/CardV2/index.mjs +1 -1
- package/dist/components/Checkbox/index.d.mts +1 -1
- package/dist/components/Checkbox/index.mjs +1 -1
- package/dist/components/Combobox/index.d.mts +2 -2
- package/dist/components/Combobox/index.mjs +1 -1
- package/dist/components/ConfigFormGroup/index.mjs +2 -2
- package/dist/components/DataTable/TableControls/index.d.mts +19 -16
- package/dist/components/DataTable/TableControls/index.mjs +2 -2
- package/dist/components/DataTable/index.mjs +25 -25
- package/dist/components/DataTable/index.mjs.map +1 -1
- package/dist/components/DataTable/types.d.mts +2 -2
- package/dist/components/DatePicker/index.d.mts +5 -5
- package/dist/components/DatePicker/index.mjs +1 -1
- package/dist/components/DropdownButton/index.mjs +1 -1
- package/dist/components/DropdownMenu/index.d.mts +1 -1
- package/dist/components/DropdownMenu/index.mjs +1 -1
- package/dist/components/FloatingPanel/index.mjs +8 -8
- package/dist/components/FloatingPanel/index.mjs.map +1 -1
- package/dist/components/FormControl/index.d.mts +2 -2
- package/dist/components/FormControl/index.mjs +2 -2
- package/dist/components/FormField/index.d.mts +1 -1
- package/dist/components/FormField/index.mjs +1 -1
- package/dist/components/Grid/index.d.mts +3 -0
- package/dist/components/Grid/index.mjs +85 -0
- package/dist/components/Grid/index.mjs.map +1 -0
- package/dist/components/HoverCopyableField/index.d.mts +2 -2
- package/dist/components/HoverCopyableField/index.mjs +2 -2
- package/dist/components/ImageTile/index.mjs +10 -10
- package/dist/components/Input/index.d.mts +1 -1
- package/dist/components/Input/index.mjs +1 -1
- package/dist/components/Link/index.mjs +4 -4
- package/dist/components/Link/index.mjs.map +1 -1
- package/dist/components/ListBox/index.d.mts +3 -3
- package/dist/components/ListBox/index.mjs +1 -1
- package/dist/components/LoadingShimmer/index.mjs +1 -1
- package/dist/components/MaskedInput/index.mjs +2 -2
- package/dist/components/MatchHighlight/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 +42 -12
- package/dist/components/Modal/index.mjs.map +1 -1
- package/dist/components/PageHeader/index.mjs +1 -1
- package/dist/components/Pagination/index.d.mts +3 -3
- package/dist/components/Pagination/index.mjs +1 -1
- package/dist/components/Pii/index.mjs +1 -1
- package/dist/components/Popover/index.mjs +1 -1
- package/dist/components/ProgressBar/index.mjs +2 -2
- package/dist/components/ProgressIndicator/index.mjs +14 -10
- package/dist/components/ProgressIndicator/index.mjs.map +1 -1
- package/dist/components/Radio/index.mjs +1 -1
- package/dist/components/RadioGroup/index.d.mts +1 -1
- package/dist/components/RadioGroup/index.mjs +1 -1
- package/dist/components/RightPanel/index.d.mts +2 -0
- package/dist/components/RightPanel/index.mjs +294 -0
- package/dist/components/RightPanel/index.mjs.map +1 -0
- package/dist/components/SegmentedControl/index.d.mts +1 -1
- package/dist/components/SegmentedControl/index.mjs +1 -1
- package/dist/components/Select/index.d.mts +1 -1
- package/dist/components/Select/index.mjs +1 -1
- package/dist/components/Slider/index.mjs +4 -4
- package/dist/components/Spacer/index.mjs +1 -1
- package/dist/components/Spinner/index.mjs +1 -1
- package/dist/components/Stack/index.d.mts +1 -1
- package/dist/components/Stack/index.mjs +1 -1
- package/dist/components/StatusIndicator/index.mjs +2 -2
- package/dist/components/Sticker/index.d.mts +1 -1
- package/dist/components/Sticker/index.mjs +1 -1
- package/dist/components/SwatchPicker/index.mjs +1 -1
- package/dist/components/TabBar/index.mjs +1 -1
- package/dist/components/Table/index.d.mts +7 -7
- package/dist/components/Table/index.mjs +1 -1
- package/dist/components/TableBox/index.d.mts +2 -2
- package/dist/components/TableBox/index.mjs +1 -1
- package/dist/components/TechnicalSticker/index.mjs +1 -1
- package/dist/components/Text/index.d.mts +1 -1
- package/dist/components/Text/index.mjs +1 -1
- package/dist/components/TextArea/index.d.mts +1 -1
- package/dist/components/TextArea/index.mjs +1 -1
- package/dist/components/Tile/index.mjs +5 -5
- package/dist/components/Toast/index.mjs +5 -5
- package/dist/components/Toggle/index.d.mts +1 -1
- package/dist/components/Toggle/index.mjs +1 -1
- package/dist/components/Tooltip/index.d.mts +3 -3
- package/dist/components/Tooltip/index.mjs +1 -1
- package/dist/compound-expression.d.mts +1 -1
- package/dist/{constants-BASogfT_.d.mts → constants-DcJ3tnwY.d.mts} +1 -1
- package/dist/constants.d.mts +1 -1
- package/dist/date-filter-BbWgAXy3.mjs +176 -0
- package/dist/date-filter-BbWgAXy3.mjs.map +1 -0
- package/dist/date-range-rule-value-DBEEWTQp.d.mts +17 -0
- package/dist/date-range-rule-value.d.mts +2 -0
- package/dist/date-rule-intent-BArNGT2E.d.mts +20 -0
- package/dist/date-rule-intent.d.mts +2 -0
- package/dist/display.d.mts +2 -2
- package/dist/fieldPickerOptions.d.mts +2 -2
- package/dist/{filter-size-context-Bw5F7082.d.mts → filter-size-context-D1UhTwOG.d.mts} +2 -2
- package/dist/filter-size-context.d.mts +1 -1
- package/dist/helpers.d.mts +1 -1
- package/dist/{index--5Mfhlkj.d.mts → index-DASkW991.d.mts} +2 -2
- package/dist/{index-C1bz13uw.d.mts → index-Dc_BgmPv.d.mts} +5 -5
- package/dist/{index-DiCnyORA.d.mts → index-Dpo-RP6S.d.mts} +5 -5
- package/dist/index-dhjtMp5F.d.mts +1 -0
- package/dist/index-uY8Qbwfx.d.mts +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index2.d.mts +1 -1
- package/dist/index3.d.mts +3 -3
- package/dist/index4.d.mts +14 -11
- package/dist/{input-CzO-6_1V.d.mts → input-M7BEIewR.d.mts} +3 -3
- package/dist/inputFields.d.mts +11 -11
- package/dist/{intersperse-yd3oMrQl.mjs → intersperse-DQAyfeEw.mjs} +1 -1
- package/dist/{intersperse-yd3oMrQl.mjs.map → intersperse-DQAyfeEw.mjs.map} +1 -1
- package/dist/lib/GlobalStyles.mjs +1 -1
- package/dist/lib/HeadlessAriaButton.mjs +1 -1
- package/dist/lib/MiddleTruncatedText.mjs +1 -1
- package/dist/lib/PDSProvider.d.mts +1 -1
- package/dist/lib/PDSProvider.mjs +1 -1
- package/dist/lib/TruncatedText.d.mts +1 -1
- package/dist/lib/TruncatedText.mjs +2 -2
- package/dist/lib/TruncatedTextWithTooltip.d.mts +1 -1
- package/dist/lib/TruncatedTextWithTooltip.mjs +2 -2
- package/dist/lib/date-filter/index.d.mts +3 -0
- package/dist/lib/date-filter/index.mjs +2 -0
- package/dist/lib/embeddedSurfaceProtocol.d.mts +13 -1
- package/dist/lib/embeddedSurfaceProtocol.mjs +32 -5
- package/dist/lib/embeddedSurfaceProtocol.mjs.map +1 -1
- package/dist/lib/message.d.mts +1 -1
- package/dist/lib/pseudoClass.d.mts +8 -8
- package/dist/lib/useEmbeddedSurface.d.mts +31 -3
- package/dist/lib/useEmbeddedSurface.mjs +118 -13
- package/dist/lib/useEmbeddedSurface.mjs.map +1 -1
- package/dist/lib/useResizablePanel.d.mts +49 -0
- package/dist/lib/useResizablePanel.mjs +75 -0
- package/dist/lib/useResizablePanel.mjs.map +1 -0
- package/dist/{message-Cu84fcqB.d.mts → message-DaiDXonE.d.mts} +1 -1
- package/dist/mixins/focus.d.mts +1 -1
- package/dist/mixins/focus.mjs +1 -1
- package/dist/mixins/hoverable.d.mts +2 -2
- package/dist/mixins/hoverable.mjs +2 -2
- package/dist/mixins/input.d.mts +1 -1
- package/dist/mixins/input.mjs +2 -2
- package/dist/mixins/menuItem.d.mts +2 -2
- package/dist/mixins/menuItem.mjs +1 -1
- package/dist/mixins/print/index.mjs +1 -1
- package/dist/mixins/text.d.mts +1 -1
- package/dist/mixins/text.mjs +1 -1
- package/dist/{operators-CmSqHnTH.d.mts → operators-BsSl7gPE.d.mts} +10 -3
- package/dist/operators.d.mts +2 -2
- package/dist/patterns/LayoutLoadingShimmer/index.mjs +6 -6
- package/dist/patterns/LayoutLoadingSpinner/index.d.mts +2 -0
- package/dist/patterns/LayoutLoadingSpinner/index.mjs +56 -0
- package/dist/patterns/LayoutLoadingSpinner/index.mjs.map +1 -0
- package/dist/patterns/PageLayout/index.mjs +1 -1
- package/dist/relative-date-label.d.mts +15 -0
- package/dist/styledComponentsInterop-8zScIQyC.mjs +33 -0
- package/dist/styledComponentsInterop-8zScIQyC.mjs.map +1 -0
- package/dist/{text-BaQdW8qa.d.mts → text-DjTGRUM1.d.mts} +1 -1
- package/dist/{theme-D9Y6NOzb.d.mts → theme-Biwx2eJZ.d.mts} +1 -1
- package/dist/theme.d.mts +1 -1
- package/dist/{types-NJtAxsU1.d.mts → types-B5VmRRMR.d.mts} +5 -3
- package/dist/types-Bsf1VsW6.d.mts +24 -0
- package/dist/{types-TV9nVfSe.d.mts → types-Cg3aXHUh2.d.mts} +1 -1
- package/dist/{types-DEh_pXgS.d.mts → types-Df0D37uh.d.mts} +3 -1
- package/dist/{types-C-TkDdkG.d.mts → types-V8UJX-rk.d.mts} +14 -2
- package/dist/types.d.mts +1 -1
- package/dist/types2.d.mts +2 -2
- package/dist/types3.d.mts +2 -2
- package/dist/types4.d.mts +2 -2
- package/dist/types5.d.mts +2 -0
- package/dist/url-state-ektb0HnB.d.mts +42 -0
- package/dist/url-state.d.mts +2 -0
- package/dist/useComboboxFooterAction.d.mts +1 -1
- package/dist/{useFilterStateV2-C4itmN4S.d.mts → useFilterStateV2-BB14vCC-.d.mts} +3 -3
- package/dist/useFilterStateV2.d.mts +1 -1
- package/dist/{useFormField-eftOPiXj.mjs → useFormField-Bz2iMPBO.mjs} +2 -2
- package/dist/{useFormField-eftOPiXj.mjs.map → useFormField-Bz2iMPBO.mjs.map} +1 -1
- package/dist/{useFormField-B2U4GOH4.d.mts → useFormField-CQo08dR4.d.mts} +2 -2
- package/dist/useFormField.d.mts +1 -1
- package/dist/{useFormGroup-BMukAMAd.mjs → useFormGroup-CaTiD_Yt.mjs} +1 -1
- package/dist/{useFormGroup-BMukAMAd.mjs.map → useFormGroup-CaTiD_Yt.mjs.map} +1 -1
- package/dist/{useTableBoxDragAndDrop-CpemHLhL.d.mts → useTableBoxDragAndDrop-B-Dev5D6.d.mts} +1 -1
- package/dist/useTableBoxDragAndDrop.d.mts +1 -1
- package/dist/useTruncation.d.mts +1 -1
- package/dist/{utilities-DnSIlR1i.d.mts → utilities-BHMNnJ8h.d.mts} +1 -1
- package/dist/utilities.d.mts +1 -1
- package/dist/utils/storybook.mjs +1 -1
- package/dist/utils/testing.d.mts +1 -1
- package/dist/utils/testing.mjs +1 -1
- package/dist/utils.d.mts +1 -1
- package/dist/utils2.d.mts +12 -1
- package/dist/{validation-B5IXsdkE.d.mts → validation-B22QjCrV.d.mts} +3 -3
- package/dist/validation.d.mts +1 -1
- package/dist/{value-control-resolver-BPlTeIX7.d.mts → value-control-resolver-qKTH1ErF.d.mts} +5 -3
- package/dist/value-control-resolver.d.mts +1 -1
- package/dist/variables/keyframes.mjs +1 -1
- package/llms.txt +6 -6
- package/package.json +14 -2
- package/skills/ui-authoring/COMPONENTS.md +71 -305
- package/skills/ui-authoring/PATTERNS.md +364 -0
- package/skills/ui-authoring/SKILL.md +15 -147
- package/skills/ui-authoring/TOKENS.md +400 -0
- package/dist/Combobox-xBrxiUAu.mjs.map +0 -1
- package/dist/DatePicker-BlnE2MBD.mjs.map +0 -1
- package/dist/FormField-B9P3BWvS.mjs.map +0 -1
- package/dist/HoverCopyableField-0Bzygbp9.mjs.map +0 -1
- package/dist/Select-D6MqSYVa.mjs.map +0 -1
- package/dist/TableControls-CZ9iu3ma.mjs.map +0 -1
- package/skills/ui-authoring/EXAMPLES.md +0 -370
- package/skills/ui-authoring/REFERENCE.md +0 -293
- /package/dist/{index-BMBcfD_R.d.mts → index-8SLBz2NH.d.mts} +0 -0
- /package/dist/{index-BOn0AAue.d.mts → index-BINnViIh.d.mts} +0 -0
- /package/dist/{index-BYd3Btr1.d.mts → index-B_BBnMou.d.mts} +0 -0
- /package/dist/{index-CKKoxA9V.d.mts → index-BcsXXrHq.d.mts} +0 -0
- /package/dist/{index-CNxS4Tlu.d.mts → index-Bt4QNofW.d.mts} +0 -0
- /package/dist/{index-CWB6exYm.d.mts → index-BwFl_eS0.d.mts} +0 -0
- /package/dist/{index-CsuikFeJ.d.mts → index-CDGG7lCB.d.mts} +0 -0
- /package/dist/{index-CtJuGxUp.d.mts → index-CMuRFTR3.d.mts} +0 -0
- /package/dist/{index-CzItj62a.d.mts → index-CX869wwk.d.mts} +0 -0
- /package/dist/{index-D5tSVhTd.d.mts → index-CliqZ9rj.d.mts} +0 -0
- /package/dist/{index-DGsJdI5l.d.mts → index-CuheJfs-.d.mts} +0 -0
- /package/dist/{index-DkrC-i1D.d.mts → index-DBGd4WeR.d.mts} +0 -0
- /package/dist/{index-Es5nKSSL.d.mts → index-DDdPqD_H.d.mts} +0 -0
- /package/dist/{index-FtE8MXJ_.d.mts → index-DMRtRo7y.d.mts} +0 -0
- /package/dist/{index-IE5cwTAE2.d.mts → index-Dflz2i1X.d.mts} +0 -0
- /package/dist/{index-Oio5ygqN.d.mts → index-DvmLVvRD.d.mts} +0 -0
- /package/dist/{index-ehD5GjMH.d.mts → index-Wc1llEvP.d.mts} +0 -0
package/dist/utils2.d.mts
CHANGED
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
* at startIndex with the one at endIndex
|
|
5
5
|
*/
|
|
6
6
|
declare function reorder<A>(list: A[], startIndex: number, endIndex: number): A[];
|
|
7
|
+
/**
|
|
8
|
+
* Translates a drag result into indices into the full list. dnd reports positions among the
|
|
9
|
+
* rendered rows, which diverge from the full list as soon as the view is filtered.
|
|
10
|
+
*
|
|
11
|
+
* Returns null when either end cannot be resolved, in which case the drag should be ignored
|
|
12
|
+
* rather than applied at the wrong position.
|
|
13
|
+
*/
|
|
14
|
+
declare function resolveDragIndices(listKeys: string[], renderedKeys: string[], draggableId: string, destinationIndex: number): {
|
|
15
|
+
from: number;
|
|
16
|
+
to: number;
|
|
17
|
+
} | null;
|
|
7
18
|
//#endregion
|
|
8
|
-
export { reorder };
|
|
19
|
+
export { reorder, resolveDragIndices };
|
|
9
20
|
//# sourceMappingURL=utils2.d.mts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as FieldRegistry } from "./FieldRegistry-
|
|
1
|
+
import { l as FilterRule, p as FilterStateV2 } from "./types-V8UJX-rk.mjs";
|
|
2
|
+
import { t as FieldRegistry } from "./FieldRegistry-D6niLExM.mjs";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/FiltersV2/validation.d.ts
|
|
5
5
|
/**
|
|
@@ -48,4 +48,4 @@ declare function pruneToRegistry(state: FilterStateV2, registry: FieldRegistry |
|
|
|
48
48
|
declare function hasCompleteValue(rule: FilterRule, registry: FieldRegistry): boolean;
|
|
49
49
|
//#endregion
|
|
50
50
|
export { isFilterStateV2 as n, pruneToRegistry as r, hasCompleteValue as t };
|
|
51
|
-
//# sourceMappingURL=validation-
|
|
51
|
+
//# sourceMappingURL=validation-B22QjCrV.d.mts.map
|
package/dist/validation.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-
|
|
1
|
+
import { n as isFilterStateV2, r as pruneToRegistry, t as hasCompleteValue } from "./validation-B22QjCrV.mjs";
|
|
2
2
|
export { hasCompleteValue, isFilterStateV2, pruneToRegistry };
|
package/dist/{value-control-resolver-BPlTeIX7.d.mts → value-control-resolver-qKTH1ErF.d.mts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as FilterField, c as FilterOperator, u as FilterRuleValue } from "./types-
|
|
1
|
+
import { a as FilterField, c as FilterOperator, d as FilterRuleValueChange, l as FilterRule, u as FilterRuleValue } from "./types-V8UJX-rk.mjs";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
|
|
4
4
|
//#region components/DataTable/TableControls/FiltersV2/FilterBar/value-control-resolver.d.ts
|
|
@@ -27,9 +27,11 @@ interface ResolveValueControlOptions {
|
|
|
27
27
|
field: FilterField;
|
|
28
28
|
operator: FilterOperator;
|
|
29
29
|
value: FilterRuleValue;
|
|
30
|
-
|
|
30
|
+
relativeDate?: FilterRule['relativeDate'];
|
|
31
|
+
onChange: FilterRuleValueChange;
|
|
31
32
|
onCommit?: () => void;
|
|
32
33
|
ariaLabel?: string;
|
|
34
|
+
relativeDatesEnabled?: boolean;
|
|
33
35
|
/**
|
|
34
36
|
* Where the control is being rendered. `popover` (default) is the
|
|
35
37
|
* simple-pill `FilterPopover` surface — dedicated to one rule with
|
|
@@ -43,4 +45,4 @@ type ValueControlResolver = (opts: ResolveValueControlOptions) => ReactNode | un
|
|
|
43
45
|
declare function resolveValueControl(opts: ResolveValueControlOptions, hostResolver?: ValueControlResolver): ReactNode;
|
|
44
46
|
//#endregion
|
|
45
47
|
export { ValueControlResolver as n, resolveValueControl as r, ResolveValueControlOptions as t };
|
|
46
|
-
//# sourceMappingURL=value-control-resolver-
|
|
48
|
+
//# sourceMappingURL=value-control-resolver-qKTH1ErF.d.mts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-
|
|
1
|
+
import { n as ValueControlResolver, r as resolveValueControl, t as ResolveValueControlOptions } from "./value-control-resolver-qKTH1ErF.mjs";
|
|
2
2
|
export { ResolveValueControlOptions, ValueControlResolver, resolveValueControl };
|
package/llms.txt
CHANGED
|
@@ -13,10 +13,10 @@ For exact prop types, prefer the published type declarations (`dist/**/*.d.mts`,
|
|
|
13
13
|
|
|
14
14
|
## Skills
|
|
15
15
|
|
|
16
|
-
- [ui-authoring](skills/ui-authoring/SKILL.md):
|
|
17
|
-
- [
|
|
18
|
-
- [
|
|
19
|
-
- [
|
|
16
|
+
- [ui-authoring](skills/ui-authoring/SKILL.md): design tokens, PDS implementation guidelines, table guidelines (DataTable vs TableBox vs TableLayout), loading states, testing, Storybook
|
|
17
|
+
- [Tokens](skills/ui-authoring/TOKENS.md): Color / Spacing / Typography selection and catalog, radius, charts
|
|
18
|
+
- [Patterns](skills/ui-authoring/PATTERNS.md): forms, layout, indicators, feedback, empty states, charts, panels
|
|
19
|
+
- [Components](skills/ui-authoring/COMPONENTS.md): which PDS component to use (and its import path); APIs live in that component's `.mdx` when one exists, otherwise in `dist/components/<Name>/index.d.mts`
|
|
20
20
|
|
|
21
21
|
## Imports
|
|
22
22
|
|
|
@@ -31,9 +31,9 @@ their own subpaths.
|
|
|
31
31
|
- Layout: `Stack` / `HStack` (components/Stack), `Spacer`
|
|
32
32
|
- Text: `Heading`, `Paragraph`, `Label` (components/Text)
|
|
33
33
|
- Tables: `DataTable` (data views w/ pagination + sorting), `TableBox` (editable form tables), `TableLayout` + `Table`/`TableRow`/`TableCell`/`TableHeaderCell` primitives (components/Table) — `TableLayout` has built-in `isLoading`/`isEmpty`/`nullState`/`showHeader` handling
|
|
34
|
-
- Page chrome: `PageHeader` (title or breadcrumbs variant), `Breadcrumbs`, `TabBar`
|
|
34
|
+
- Page chrome: `PageHeader` (title or breadcrumbs variant), `Breadcrumbs`, `TabBar`, `BottomPanel` (resizable bottom drawer)
|
|
35
35
|
- Feedback: `Spinner`, `Banner`, `Toast`, `LoadingShimmer`, `ProgressBar`
|
|
36
|
-
- Overlays: `Modal`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
|
|
36
|
+
- Overlays: `Modal`, `RightPanel`, `Popover`, `Tooltip` / `TextUnderlineTooltip`, `DropdownMenu`, `FloatingPanel`
|
|
37
37
|
- Forms: `ConfigFormGroup`, `FormField` (`TextField`, `TextAreaField`, `TableBoxField`), `Input`, `TextArea`, `Select`, `Combobox`, `Checkbox`, `Radio`, `Toggle`, `DatePicker`
|
|
38
38
|
- Status: `Sticker` (status badges), `Badge` (counts), `StatusIndicator`
|
|
39
39
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@persona/design-system",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "React components for Persona UI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tanstack-intent"
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"./components/Attribute": "./dist/components/Attribute/index.mjs",
|
|
20
20
|
"./components/Badge": "./dist/components/Badge/index.mjs",
|
|
21
21
|
"./components/Banner": "./dist/components/Banner/index.mjs",
|
|
22
|
+
"./components/BottomPanel": "./dist/components/BottomPanel/index.mjs",
|
|
22
23
|
"./components/Breadcrumbs": "./dist/components/Breadcrumbs/index.mjs",
|
|
23
24
|
"./components/Button": "./dist/components/Button/index.mjs",
|
|
24
25
|
"./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
|
|
@@ -36,6 +37,7 @@
|
|
|
36
37
|
"./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
|
|
37
38
|
"./components/FormControl": "./dist/components/FormControl/index.mjs",
|
|
38
39
|
"./components/FormField": "./dist/components/FormField/index.mjs",
|
|
40
|
+
"./components/Grid": "./dist/components/Grid/index.mjs",
|
|
39
41
|
"./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
|
|
40
42
|
"./components/ImageTile": "./dist/components/ImageTile/index.mjs",
|
|
41
43
|
"./components/Input": "./dist/components/Input/index.mjs",
|
|
@@ -54,6 +56,7 @@
|
|
|
54
56
|
"./components/ProgressIndicator": "./dist/components/ProgressIndicator/index.mjs",
|
|
55
57
|
"./components/Radio": "./dist/components/Radio/index.mjs",
|
|
56
58
|
"./components/RadioGroup": "./dist/components/RadioGroup/index.mjs",
|
|
59
|
+
"./components/RightPanel": "./dist/components/RightPanel/index.mjs",
|
|
57
60
|
"./components/SegmentedControl": "./dist/components/SegmentedControl/index.mjs",
|
|
58
61
|
"./components/Select": "./dist/components/Select/index.mjs",
|
|
59
62
|
"./components/Slider": "./dist/components/Slider/index.mjs",
|
|
@@ -76,6 +79,7 @@
|
|
|
76
79
|
"./lib/comboboxHelper": "./dist/lib/comboboxHelper.mjs",
|
|
77
80
|
"./lib/ConfigContext": "./dist/lib/ConfigContext.mjs",
|
|
78
81
|
"./lib/copyTextToClipboard": "./dist/lib/copyTextToClipboard.mjs",
|
|
82
|
+
"./lib/date-filter": "./dist/lib/date-filter/index.mjs",
|
|
79
83
|
"./lib/datePickerHelper": "./dist/lib/datePickerHelper.mjs",
|
|
80
84
|
"./lib/embeddedSurfaceProtocol": "./dist/lib/embeddedSurfaceProtocol.mjs",
|
|
81
85
|
"./lib/embeddedSurfaceRegistry": "./dist/lib/embeddedSurfaceRegistry.mjs",
|
|
@@ -93,6 +97,7 @@
|
|
|
93
97
|
"./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
|
|
94
98
|
"./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
|
|
95
99
|
"./lib/useOutsideClick": "./dist/lib/useOutsideClick.mjs",
|
|
100
|
+
"./lib/useResizablePanel": "./dist/lib/useResizablePanel.mjs",
|
|
96
101
|
"./lib/useScrollOverflow": "./dist/lib/useScrollOverflow.mjs",
|
|
97
102
|
"./lib/zindex": "./dist/lib/zindex.mjs",
|
|
98
103
|
"./mixins/focus": "./dist/mixins/focus.mjs",
|
|
@@ -102,6 +107,7 @@
|
|
|
102
107
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
103
108
|
"./mixins/text": "./dist/mixins/text.mjs",
|
|
104
109
|
"./patterns/LayoutLoadingShimmer": "./dist/patterns/LayoutLoadingShimmer/index.mjs",
|
|
110
|
+
"./patterns/LayoutLoadingSpinner": "./dist/patterns/LayoutLoadingSpinner/index.mjs",
|
|
105
111
|
"./patterns/PageLayout": "./dist/patterns/PageLayout/index.mjs",
|
|
106
112
|
"./theme": "./dist/theme.mjs",
|
|
107
113
|
"./utils/storybook": "./dist/utils/storybook.mjs",
|
|
@@ -115,7 +121,7 @@
|
|
|
115
121
|
"./package.json": "./package.json"
|
|
116
122
|
},
|
|
117
123
|
"scripts": {
|
|
118
|
-
"build": "tsdown && node scripts/assert-no-node-imports.mjs",
|
|
124
|
+
"build": "tsdown && node scripts/assert-no-node-imports.mjs && node scripts/assert-styled-components-interop.mjs",
|
|
119
125
|
"release": "scripts/release.sh --dry-run",
|
|
120
126
|
"release:tag": "scripts/tag.sh",
|
|
121
127
|
"skills:validate": "intent validate skills",
|
|
@@ -203,6 +209,7 @@
|
|
|
203
209
|
"./components/Attribute": "./dist/components/Attribute/index.mjs",
|
|
204
210
|
"./components/Badge": "./dist/components/Badge/index.mjs",
|
|
205
211
|
"./components/Banner": "./dist/components/Banner/index.mjs",
|
|
212
|
+
"./components/BottomPanel": "./dist/components/BottomPanel/index.mjs",
|
|
206
213
|
"./components/Breadcrumbs": "./dist/components/Breadcrumbs/index.mjs",
|
|
207
214
|
"./components/Button": "./dist/components/Button/index.mjs",
|
|
208
215
|
"./components/ButtonGroup": "./dist/components/ButtonGroup/index.mjs",
|
|
@@ -220,6 +227,7 @@
|
|
|
220
227
|
"./components/FloatingPanel": "./dist/components/FloatingPanel/index.mjs",
|
|
221
228
|
"./components/FormControl": "./dist/components/FormControl/index.mjs",
|
|
222
229
|
"./components/FormField": "./dist/components/FormField/index.mjs",
|
|
230
|
+
"./components/Grid": "./dist/components/Grid/index.mjs",
|
|
223
231
|
"./components/HoverCopyableField": "./dist/components/HoverCopyableField/index.mjs",
|
|
224
232
|
"./components/ImageTile": "./dist/components/ImageTile/index.mjs",
|
|
225
233
|
"./components/Input": "./dist/components/Input/index.mjs",
|
|
@@ -238,6 +246,7 @@
|
|
|
238
246
|
"./components/ProgressIndicator": "./dist/components/ProgressIndicator/index.mjs",
|
|
239
247
|
"./components/Radio": "./dist/components/Radio/index.mjs",
|
|
240
248
|
"./components/RadioGroup": "./dist/components/RadioGroup/index.mjs",
|
|
249
|
+
"./components/RightPanel": "./dist/components/RightPanel/index.mjs",
|
|
241
250
|
"./components/SegmentedControl": "./dist/components/SegmentedControl/index.mjs",
|
|
242
251
|
"./components/Select": "./dist/components/Select/index.mjs",
|
|
243
252
|
"./components/Slider": "./dist/components/Slider/index.mjs",
|
|
@@ -260,6 +269,7 @@
|
|
|
260
269
|
"./lib/comboboxHelper": "./dist/lib/comboboxHelper.mjs",
|
|
261
270
|
"./lib/ConfigContext": "./dist/lib/ConfigContext.mjs",
|
|
262
271
|
"./lib/copyTextToClipboard": "./dist/lib/copyTextToClipboard.mjs",
|
|
272
|
+
"./lib/date-filter": "./dist/lib/date-filter/index.mjs",
|
|
263
273
|
"./lib/datePickerHelper": "./dist/lib/datePickerHelper.mjs",
|
|
264
274
|
"./lib/embeddedSurfaceProtocol": "./dist/lib/embeddedSurfaceProtocol.mjs",
|
|
265
275
|
"./lib/embeddedSurfaceRegistry": "./dist/lib/embeddedSurfaceRegistry.mjs",
|
|
@@ -277,6 +287,7 @@
|
|
|
277
287
|
"./lib/useEmbeddedSurface": "./dist/lib/useEmbeddedSurface.mjs",
|
|
278
288
|
"./lib/useIsOverflow": "./dist/lib/useIsOverflow.mjs",
|
|
279
289
|
"./lib/useOutsideClick": "./dist/lib/useOutsideClick.mjs",
|
|
290
|
+
"./lib/useResizablePanel": "./dist/lib/useResizablePanel.mjs",
|
|
280
291
|
"./lib/useScrollOverflow": "./dist/lib/useScrollOverflow.mjs",
|
|
281
292
|
"./lib/zindex": "./dist/lib/zindex.mjs",
|
|
282
293
|
"./mixins/focus": "./dist/mixins/focus.mjs",
|
|
@@ -286,6 +297,7 @@
|
|
|
286
297
|
"./mixins/print": "./dist/mixins/print/index.mjs",
|
|
287
298
|
"./mixins/text": "./dist/mixins/text.mjs",
|
|
288
299
|
"./patterns/LayoutLoadingShimmer": "./dist/patterns/LayoutLoadingShimmer/index.mjs",
|
|
300
|
+
"./patterns/LayoutLoadingSpinner": "./dist/patterns/LayoutLoadingSpinner/index.mjs",
|
|
289
301
|
"./patterns/PageLayout": "./dist/patterns/PageLayout/index.mjs",
|
|
290
302
|
"./theme": "./dist/theme.mjs",
|
|
291
303
|
"./utils/storybook": "./dist/utils/storybook.mjs",
|
|
@@ -1,212 +1,75 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Components
|
|
2
|
+
|
|
3
|
+
Which PDS component to use, and for what. For usage guidance and additional code examples, see
|
|
4
|
+
that component's `.mdx` beside its source under `front-end/design-system/components/` when one
|
|
5
|
+
exists. If there is no `.mdx`, use the published type declarations
|
|
6
|
+
(`dist/components/<Name>/index.d.mts`).
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
| Component | Use for | Import |
|
|
10
|
+
| --------- | ------- | ------ |
|
|
11
|
+
| `Attribute` | Labeling a data value (`<dl>`/`<dt>`/`<dd>`). Use `AttributeGrid` for a grid of them | `@persona/design-system/components/Attribute` |
|
|
12
|
+
| `Badge` | Count badge — a count or notification number | `@persona/design-system/components/Badge` |
|
|
13
|
+
| `Banner` | Alert / notification — important in-context info, success, warning, or danger. Optionally dismissable | `@persona/design-system/components/Banner` |
|
|
14
|
+
| `BottomPanel` | Resizable tabbed drawer anchored to the bottom of the page (e.g. logs, errors). Use `RightPanel` for a side panel | `@persona/design-system/components/BottomPanel` |
|
|
15
|
+
| `Breadcrumbs` | Showing where the user is in a hierarchy and navigating to ancestors | `@persona/design-system/components/Breadcrumbs` |
|
|
16
|
+
| `Button` | Triggering an action. Use `IconButton` when there is no label | `@persona/design-system/components/Button` |
|
|
17
|
+
| `ButtonGroup` | Choosing among related modes in a compact connected button set (often icons, e.g. alignment). Use `Toggle` for a single on/off setting; `RadioGroup` for a visible list of labeled choices | `@persona/design-system/components/ButtonGroup` |
|
|
18
|
+
| `Card` + `Card.Section` | Grouping related content and actions so they're easier to scan. Collapsible sections on long settings pages | `@persona/design-system/components/CardV2` |
|
|
19
|
+
| `Checkbox` | Selecting one or more options from a visible list | `@persona/design-system/components/Checkbox` |
|
|
20
|
+
| `Combobox` | Picking from a long list that needs search (single or multi). Use `RadioGroup` when every choice should stay visible (one); `Checkbox` when every choice should stay visible (several); `Select` for a short closed list with no search | `@persona/design-system/components/Combobox` |
|
|
21
|
+
| `ConfigFormGroup` | Form fields — spacing a group of config fields and setting `configField` via context. Pair with `TextField` / `TextAreaField` | `@persona/design-system/components/ConfigFormGroup` |
|
|
22
|
+
| `Container`, `Section`, `Backdrop` | Page shell | `@persona/design-system/patterns/PageLayout` |
|
|
23
|
+
| `DataTable` | Data table — browsing tabular data with filtering, bulk actions, search, pagination, and sorting | `@persona/design-system/components/DataTable` |
|
|
24
|
+
| `DatePicker` | Picking a date or date range from a calendar | `@persona/design-system/components/DatePicker` |
|
|
25
|
+
| `DropdownButton` | Opening a menu of related actions from a button | `@persona/design-system/components/DropdownButton` |
|
|
26
|
+
| `DropdownMenu` | Showing a temporary action list on a custom trigger | `@persona/design-system/components/DropdownMenu` |
|
|
27
|
+
| `FormControl` | Building a custom labeled field (label + helper/error/warning) when `FormField` is too rigid | `@persona/design-system/components/FormControl` |
|
|
28
|
+
| `FormField` | Giving an input a label, helper, and error/warning. Use this or a `*Field` wrapper (`TextField`, `TextAreaField`) for form fields — unlabeled controls (search, toolbars) can stay as `Input` | `@persona/design-system/components/FormField` |
|
|
29
|
+
| `HoverCopyableField` | Letting the user copy a value on hover. Optional `onCopySuccess` skips Copied so the host owns post-copy UX | `@persona/design-system/components/HoverCopyableField` |
|
|
30
|
+
| `HStack` | Flex row — laying out children horizontally with token spacing | `@persona/design-system/components/Stack` |
|
|
31
|
+
| `ImageTile` | Showing a thumbnail in a gallery or grid | `@persona/design-system/components/ImageTile` |
|
|
32
|
+
| `IconButton` | Icon-only button — triggering an icon-only action | `@persona/design-system/components/Button` |
|
|
33
|
+
| `Input` | Text input — a single line of text without a form label. In forms, use `TextField` | `@persona/design-system/components/Input` |
|
|
34
|
+
| `Link` | Navigating to another page or resource. External links need the external-link icon | `@persona/design-system/components/Link` |
|
|
35
|
+
| `ListBox` | Dynamic list — a visible, always-open list of items (select, add, delete, reorder). Unlike `Combobox`, it is not a collapsed search field — the list stays on the page | `@persona/design-system/components/ListBox` |
|
|
36
|
+
| `LoadingShimmer` | Filling space while content loads | `@persona/design-system/components/LoadingShimmer` |
|
|
37
|
+
| `MaskedInput` | Entering structured text (phone, SSN, etc.) | `@persona/design-system/components/MaskedInput` |
|
|
38
|
+
| `MatchHighlight` | Highlighting how strongly children match | `@persona/design-system/components/MatchHighlight` |
|
|
39
|
+
| `Menu` | Rendering a vertical list of actions (styled only). Use `DropdownMenu` when it needs a trigger | `@persona/design-system/components/Menu` |
|
|
40
|
+
| `Modal` | Focusing the user on a task or confirmation behind a page overlay (e.g. delete confirm, short form submit) | `@persona/design-system/components/Modal` |
|
|
41
|
+
| `PageHeader` | Page title bar — optional subtitle, breadcrumbs, and actions | `@persona/design-system/components/PageHeader` |
|
|
42
|
+
| `Pagination` | Moving between pages and changing page size | `@persona/design-system/components/Pagination` |
|
|
43
|
+
| `Pii` | Showing a value, or a “Redacted” sticker when PII is hidden | `@persona/design-system/components/Pii` |
|
|
44
|
+
| `Popover` | Floating panel — extra content or controls anchored to a trigger, without leaving the page | `@persona/design-system/components/Popover` |
|
|
45
|
+
| `ProgressBar` | Showing linear progress (determinate or indeterminate) | `@persona/design-system/components/ProgressBar` |
|
|
46
|
+
| `ProgressIndicator` | Showing progress through a sequence of steps | `@persona/design-system/components/ProgressIndicator` |
|
|
47
|
+
| `Radio` | Picking one visible option. Prefer `RadioGroup` to manage the set | `@persona/design-system/components/Radio` |
|
|
48
|
+
| `RadioGroup` | Grouping two or more mutually exclusive `Radio`s and owning the selected value | `@persona/design-system/components/RadioGroup` |
|
|
49
|
+
| `RightPanel` | Complementary side panel for contextual updates while the page stays interactive (no overlay). Use `Modal` when the task needs full attention. See [Panels](../../patterns/Panels/Panels.mdx) | `@persona/design-system/components/RightPanel` |
|
|
50
|
+
| `SegmentedControl` | Picking one option from a compact set of mutually exclusive choices | `@persona/design-system/components/SegmentedControl` |
|
|
51
|
+
| `Select` | Dropdown — picking one value from a short, known list with no search. Use `Combobox` when the list needs search | `@persona/design-system/components/Select` |
|
|
52
|
+
| `Slider` | Picking a numeric value or range along a scale | `@persona/design-system/components/Slider` |
|
|
53
|
+
| `Spacer` | Prefer `Stack` — leftover gap helper | `@persona/design-system/components/Spacer` |
|
|
54
|
+
| `Spinner` | Showing that something is loading | `@persona/design-system/components/Spinner` |
|
|
55
|
+
| `Stack` | Flex column — laying out children vertically with token spacing | `@persona/design-system/components/Stack` |
|
|
56
|
+
| `StatusIndicator` | Showing a named status (open, pending, completed, failed, …) | `@persona/design-system/components/StatusIndicator` |
|
|
57
|
+
| `Sticker` | Status badge — tagging nearby content with status or label metadata | `@persona/design-system/components/Sticker` |
|
|
58
|
+
| `SwatchPicker` | Picking a color from a swatch list. Wrap with `FormField` | `@persona/design-system/components/SwatchPicker` |
|
|
59
|
+
| `TabBar`, `Tab` | Tabs — switching between related views or content sections | `@persona/design-system/components/TabBar` |
|
|
60
|
+
| `Table` | Displaying rows and columns with sticky headers, sort, and checkbox selection. Use `DataTable` when you need filtering, bulk actions, or search | `@persona/design-system/components/Table` |
|
|
61
|
+
| `TableBox` | Editable / form table — a small form-adjacent table (inline edit, add/delete, reorder) | `@persona/design-system/components/TableBox` |
|
|
62
|
+
| `TableLayout` | Table with loading/empty states; compose rows from `Table` primitives (`TableRow`, `TableCell`, `TableHeaderCell`) | `@persona/design-system/components/Table` |
|
|
63
|
+
| `TechnicalSticker` | Displaying a monospace ID or field key (middle-truncated) | `@persona/design-system/components/TechnicalSticker` |
|
|
64
|
+
| `Heading`, `Paragraph`, `Label` | Heading text, body text, and form labels (`Display`, `Span`, `TabularNumber` too). There is no `<Text>` component | `@persona/design-system/components/Text` |
|
|
65
|
+
| `TextArea` | Text input — multiple lines without a form label. In forms, use `TextAreaField` | `@persona/design-system/components/TextArea` |
|
|
66
|
+
| `TextField` | Entering a labeled single line of text in a form. Prefer over bare `Input` | `@persona/design-system/components/FormField` |
|
|
67
|
+
| `TextUnderlineTooltip` | Tooltip on a label — dashed underline. Never put an info icon next to the label | `@persona/design-system/components/Tooltip` |
|
|
68
|
+
| `Tile` | Showing a labeled metric, with optional sticker and metadata | `@persona/design-system/components/Tile` |
|
|
69
|
+
| `Toast` | Confirming a system event or action result that can auto-dismiss | `@persona/design-system/components/Toast` |
|
|
70
|
+
| `Toggle` | Turning a setting on or off with no extra confirmation | `@persona/design-system/components/Toggle` |
|
|
71
|
+
| `Tooltip` | Standalone tooltip — explaining an icon or control on hover or focus | `@persona/design-system/components/Tooltip` |
|
|
2
72
|
|
|
3
|
-
## Form Configuration
|
|
4
|
-
|
|
5
|
-
```tsx
|
|
6
|
-
import ConfigFormGroup from '@persona/design-system/components/ConfigFormGroup';
|
|
7
|
-
import { TextField, TextAreaField } from '@persona/design-system/components/FormField';
|
|
8
|
-
|
|
9
|
-
const [config, setConfig] = useState({ name: '', description: '', prompt: '' });
|
|
10
|
-
|
|
11
|
-
<ConfigFormGroup>
|
|
12
|
-
<TextField
|
|
13
|
-
label="Name"
|
|
14
|
-
value={config.name}
|
|
15
|
-
onChange={(e) => setConfig({ ...config, name: e.target.value })}
|
|
16
|
-
configField={true} // helperText becomes a tooltip
|
|
17
|
-
helperText="Unique identifier"
|
|
18
|
-
errorText={errors.name}
|
|
19
|
-
rightActions={<Button size="sm" variant="basic">Generate</Button>}
|
|
20
|
-
/>
|
|
21
|
-
<TextAreaField
|
|
22
|
-
label="Prompt"
|
|
23
|
-
value={config.prompt}
|
|
24
|
-
onChange={(e) => setConfig({ ...config, prompt: e.target.value })}
|
|
25
|
-
configField={true}
|
|
26
|
-
warningText={warnings.prompt}
|
|
27
|
-
/>
|
|
28
|
-
</ConfigFormGroup>
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
- `configField={true}` → helper text becomes a tooltip instead of inline text
|
|
32
|
-
- `ConfigFormGroup` provides consistent 20px spacing between fields
|
|
33
|
-
- Use controlled inputs; clear `errorText` on change via `updateField` in form state hook
|
|
34
|
-
|
|
35
|
-
## Form State Hook
|
|
36
|
-
|
|
37
|
-
```tsx
|
|
38
|
-
const useFormState = (initialConfig) => {
|
|
39
|
-
const [config, setConfig] = useState(initialConfig);
|
|
40
|
-
const [errors, setErrors] = useState({});
|
|
41
|
-
|
|
42
|
-
const updateField = useCallback((field, value) => {
|
|
43
|
-
setConfig(prev => ({ ...prev, [field]: value }));
|
|
44
|
-
setErrors(prev => { const next = { ...prev }; delete next[field]; return next; });
|
|
45
|
-
}, []);
|
|
46
|
-
|
|
47
|
-
const validate = useCallback(() => {
|
|
48
|
-
const newErrors = {};
|
|
49
|
-
if (!config.name) newErrors.name = 'Required';
|
|
50
|
-
setErrors(newErrors);
|
|
51
|
-
return Object.keys(newErrors).length === 0;
|
|
52
|
-
}, [config]);
|
|
53
|
-
|
|
54
|
-
return { config, errors, updateField, validate };
|
|
55
|
-
};
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Dynamic List (ListBox)
|
|
59
|
-
|
|
60
|
-
```tsx
|
|
61
|
-
import { ListBox } from '@persona/design-system/components/ListBox';
|
|
62
|
-
|
|
63
|
-
<ListBox
|
|
64
|
-
items={items}
|
|
65
|
-
selectedKeys={selectedKeys}
|
|
66
|
-
onSelectionChange={setSelectedKeys}
|
|
67
|
-
onAdd={() => setItems([...items, { id: uuid(), name: 'New' }])}
|
|
68
|
-
onDelete={(keys) => setItems(items.filter(i => !keys.has(i.id)))}
|
|
69
|
-
selectionMode="multiple"
|
|
70
|
-
emptyText="No items"
|
|
71
|
-
>
|
|
72
|
-
{items.map(item => (
|
|
73
|
-
<ListBox.Item key={item.id}>{item.name}</ListBox.Item>
|
|
74
|
-
))}
|
|
75
|
-
</ListBox>
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
Drag-drop reordering: add `reorderConfig={{ onReorder: (items) => void, dragIcon: ReactNode }}`.
|
|
79
|
-
|
|
80
|
-
## Editable Table (TableBox)
|
|
81
|
-
|
|
82
|
-
Use `TableBox` for **small, form-adjacent tables** — config editors, field mappings, inline-editable row lists. Use `DataTable` for **data views** with pagination, sorting, and server-side data.
|
|
83
|
-
|
|
84
|
-
```tsx
|
|
85
|
-
import TableBox from '@persona/design-system/components/TableBox';
|
|
86
|
-
|
|
87
|
-
const columns = [
|
|
88
|
-
{ key: 'name', title: 'Name' },
|
|
89
|
-
{ key: 'type', title: 'Type' },
|
|
90
|
-
];
|
|
91
|
-
|
|
92
|
-
<TableBox columns={columns} aria-label='File list' selectionMode='none'>
|
|
93
|
-
{items.map((item) => (
|
|
94
|
-
<TableBox.Row key={item.id} id={item.id} onDelete={() => removeItem(item.id)}>
|
|
95
|
-
<TableBox.Cell>{item.name}</TableBox.Cell>
|
|
96
|
-
<TableBox.Cell>{item.type}</TableBox.Cell>
|
|
97
|
-
</TableBox.Row>
|
|
98
|
-
))}
|
|
99
|
-
</TableBox>
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
- `aria-label` is **required**
|
|
103
|
-
- Rows are composed via `TableBox.Row` + `TableBox.Cell` children (not an `items` prop)
|
|
104
|
-
- Row actions: pass `actions={[{ label, onClick }]}` or `onDelete` on `TableBox.Row`
|
|
105
|
-
- Drag-drop reordering: `reorderConfig={{ items, itemKeyPath: 'id', onReorder }}`
|
|
106
|
-
- Empty state: `emptyText`; pass `onCreateNewRow` to make the message a clickable "add row" button
|
|
107
|
-
- `onCreateNewRow` also fires after Enter on the **last cell of the last row** (single-line text inline edit only)
|
|
108
|
-
|
|
109
|
-
### Inline editing
|
|
110
|
-
|
|
111
|
-
Declare `inlineEditConfig` on column definitions; pass `columnKey`, `itemId`, and `value` on each cell:
|
|
112
|
-
|
|
113
|
-
```tsx
|
|
114
|
-
const columns = [
|
|
115
|
-
{
|
|
116
|
-
key: 'name',
|
|
117
|
-
title: 'Name',
|
|
118
|
-
inlineEditConfig: { type: 'text', onChange: (id, value) => updateField(id, 'name', value) },
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
key: 'role',
|
|
122
|
-
title: 'Role',
|
|
123
|
-
inlineEditConfig: {
|
|
124
|
-
type: 'combobox',
|
|
125
|
-
options: roleOptions,
|
|
126
|
-
onChange: (id, value) => updateField(id, 'role', value),
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
];
|
|
130
|
-
|
|
131
|
-
<TableBox columns={columns} aria-label='Editable users'>
|
|
132
|
-
{users.map((user) => (
|
|
133
|
-
<TableBox.Row key={user.id} id={user.id}>
|
|
134
|
-
<TableBox.Cell columnKey='name' itemId={user.id} value={user.name} errorText={errors[user.id]?.name}>
|
|
135
|
-
{user.name}
|
|
136
|
-
</TableBox.Cell>
|
|
137
|
-
<TableBox.Cell columnKey='role' itemId={user.id} value={user.role}>
|
|
138
|
-
{roleLabel(user.role)}
|
|
139
|
-
</TableBox.Cell>
|
|
140
|
-
</TableBox.Row>
|
|
141
|
-
))}
|
|
142
|
-
</TableBox>
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
- Inline editing forces fixed-width layout (no horizontal scroll) automatically
|
|
146
|
-
- Cell/row validation: pass `errorText` on `TableBox.Cell` or `TableBox.Row`
|
|
147
|
-
- For adding rows from a form field, prefer `TableBoxField` (below) over bare `onCreateNewRow`
|
|
148
|
-
|
|
149
|
-
### Form field wrapper (TableBoxField)
|
|
150
|
-
|
|
151
|
-
Use inside `ConfigFormGroup` when the table needs a label, add/delete toolbar, and row creation:
|
|
152
|
-
|
|
153
|
-
```tsx
|
|
154
|
-
import { TableBoxField } from '@persona/design-system/components/FormField';
|
|
155
|
-
|
|
156
|
-
<TableBoxField
|
|
157
|
-
label='Case actions'
|
|
158
|
-
labelProps={{ size: 'md' }} // defaults to 'sm'; match sibling ControlPanel labels
|
|
159
|
-
columns={columns}
|
|
160
|
-
createNewRow={() => addRow()}
|
|
161
|
-
onDelete={(selectedKey) => removeRow(selectedKey)}
|
|
162
|
-
selectionMode='single'
|
|
163
|
-
>
|
|
164
|
-
{rows.map((row) => (
|
|
165
|
-
<TableBoxField.Row key={row.id} id={row.id}>
|
|
166
|
-
<TableBoxField.Cell columnKey='key' itemId={row.id} value={row.key}>
|
|
167
|
-
{row.key}
|
|
168
|
-
</TableBoxField.Cell>
|
|
169
|
-
</TableBoxField.Row>
|
|
170
|
-
))}
|
|
171
|
-
</TableBoxField>
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
`TableBoxField.Row` and `TableBoxField.Cell` are aliases for `TableBox.Row` / `TableBox.Cell`.
|
|
175
|
-
|
|
176
|
-
## Collapsible Sections (Card)
|
|
177
|
-
|
|
178
|
-
```tsx
|
|
179
|
-
import { Card } from '@persona/design-system/components/CardV2';
|
|
180
|
-
|
|
181
|
-
<Card>
|
|
182
|
-
<Card.Section header="Basic Settings" collapsible={true} defaultCollapsed={false}>
|
|
183
|
-
{/* Content */}
|
|
184
|
-
</Card.Section>
|
|
185
|
-
<Card.Section header="Advanced" collapsible={true}>
|
|
186
|
-
{/* Content */}
|
|
187
|
-
</Card.Section>
|
|
188
|
-
</Card>
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
## Modal
|
|
192
|
-
|
|
193
|
-
```tsx
|
|
194
|
-
import { Modal } from '@persona/design-system/components/Modal';
|
|
195
|
-
|
|
196
|
-
<Modal
|
|
197
|
-
isOpen={isOpen}
|
|
198
|
-
onClose={() => setIsOpen(false)}
|
|
199
|
-
title="Add Tools"
|
|
200
|
-
footer={
|
|
201
|
-
<>
|
|
202
|
-
<Button variant="basic" onClick={() => setIsOpen(false)}>Cancel</Button>
|
|
203
|
-
<Button variant="primary" onClick={handleSave}>Save</Button>
|
|
204
|
-
</>
|
|
205
|
-
}
|
|
206
|
-
>
|
|
207
|
-
{/* Content */}
|
|
208
|
-
</Modal>
|
|
209
|
-
```
|
|
210
73
|
|
|
211
74
|
## Testing
|
|
212
75
|
|
|
@@ -232,100 +95,3 @@ it('shows validation errors', async () => {
|
|
|
232
95
|
- Prefer `userEvent.type()` over `fireEvent.change()`
|
|
233
96
|
- Use `waitFor()` for async state updates
|
|
234
97
|
- Prefer `getByRole`, `getByLabelText`, `getByText` over `getByTestId`
|
|
235
|
-
|
|
236
|
-
## Props Reference
|
|
237
|
-
|
|
238
|
-
### TextField / TextAreaField
|
|
239
|
-
- `label` — field label
|
|
240
|
-
- `value` / `onChange` — controlled input
|
|
241
|
-
- `helperText` — help text (tooltip if `configField={true}`)
|
|
242
|
-
- `errorText` — error message (red)
|
|
243
|
-
- `warningText` — warning message (yellow)
|
|
244
|
-
- `configField` — boolean, renders helper as tooltip
|
|
245
|
-
- `rightActions` — ReactNode for buttons/icons next to label
|
|
246
|
-
- `disabled` — boolean
|
|
247
|
-
|
|
248
|
-
### ListBox
|
|
249
|
-
- `items` — array of items
|
|
250
|
-
- `selectedKeys` / `onSelectionChange` — controlled selection (`Set<string>`)
|
|
251
|
-
- `selectionMode` — `"single"` | `"multiple"` | `"none"`
|
|
252
|
-
- `onAdd` — add button callback
|
|
253
|
-
- `onDelete` — delete callback (receives `Set<string>` of keys)
|
|
254
|
-
- `reorderConfig` — `{ onReorder: (items) => void, dragIcon: ReactNode }`
|
|
255
|
-
- `emptyText` — shown when no items
|
|
256
|
-
|
|
257
|
-
### TableBox
|
|
258
|
-
- `columns` — `{ key, title, inlineEditConfig? }[]` (required)
|
|
259
|
-
- `aria-label` — accessible table name (required)
|
|
260
|
-
- `emptyText` — shown when no rows
|
|
261
|
-
- `selectionMode` — `"single"` | `"none"` (default `"none"`)
|
|
262
|
-
- `selectedKey` / `onSelectionChange` / `defaultSelectedKey` — row selection
|
|
263
|
-
- `onCreateNewRow` — makes empty state clickable; fires after Enter on last cell of last row (single-line text)
|
|
264
|
-
- `newRowId` — auto-opens inline edit on the first column of the new row
|
|
265
|
-
- `disabled` — view-only; blocks edits, delete, and reorder
|
|
266
|
-
- `reorderConfig` — `{ items, itemKeyPath, onReorder }` for drag-drop row reorder
|
|
267
|
-
- `disableHorizontalScroll` — fixed-width/truncating layout (auto when any column has `inlineEditConfig`)
|
|
268
|
-
- `hideHeader` — hide column headers (e.g. single-column tables under a `FormField` label)
|
|
269
|
-
|
|
270
|
-
#### TableBox.Row
|
|
271
|
-
- `id` — row identifier (required)
|
|
272
|
-
- `actions` — `[{ label, onClick }]` dropdown menu items
|
|
273
|
-
- `onDelete` — renders row delete button
|
|
274
|
-
- `errorText` — row-wide validation error (shown in first cell)
|
|
275
|
-
- `dropdownFormFields` / `dropdownContent` / `dropdownHeadingText` / `dropdownFooter` — expandable row popover (requires `selectionMode='single'`; opens when row is selected)
|
|
276
|
-
|
|
277
|
-
#### TableBox.Cell
|
|
278
|
-
- `columnKey` / `itemId` / `value` — required for inline editing
|
|
279
|
-
- `errorText` — cell validation error
|
|
280
|
-
- `inlineEditConfigOverride` — per-cell override of column `inlineEditConfig`
|
|
281
|
-
|
|
282
|
-
#### TableBoxField (extends TableBox + FormField)
|
|
283
|
-
- `label`, `helperText`, `errorText`, `warningText`, `configField` — standard form field props
|
|
284
|
-
- `createNewRow` — returns new row id; wires add button and empty state
|
|
285
|
-
- `onAdd` — alternative add handler (when not using `createNewRow`)
|
|
286
|
-
- `onDelete` — deletes the currently selected row
|
|
287
|
-
- `actions` — toolbar dropdown actions (receives `selectedKey`)
|
|
288
|
-
- `addDropdownConfig` — `{ options, onSelection }` for add-menu instead of direct add
|
|
289
|
-
|
|
290
|
-
### Card / Card.Section
|
|
291
|
-
- `collapsible` — boolean
|
|
292
|
-
- `defaultCollapsed` — boolean
|
|
293
|
-
- `header` — section header text
|
|
294
|
-
- `loading` — boolean
|
|
295
|
-
- `empty` — boolean
|
|
296
|
-
|
|
297
|
-
### Stack / HStack
|
|
298
|
-
- `spacing` — spacing value (default: `Spacing[2]`)
|
|
299
|
-
- `align` — `"start"` | `"center"` | `"end"` | `"stretch"`
|
|
300
|
-
- `justify` — `"start"` | `"center"` | `"end"` | `"space-between"`
|
|
301
|
-
- `wrap` — boolean
|
|
302
|
-
- `fullWidth` — boolean
|
|
303
|
-
|
|
304
|
-
### Modal
|
|
305
|
-
- `isOpen` / `onClose` — controlled open state
|
|
306
|
-
- `title` — modal title
|
|
307
|
-
- `footer` — footer content (ReactNode)
|
|
308
|
-
|
|
309
|
-
### Sticker
|
|
310
|
-
- `variant` — `"blue"` | `"teal"` | `"green"` | `"yellow"` | `"orange"` | `"red"` | `"purple"` | `"darkGrey"` | `"white"` | `"success"` | `"danger"` | `"caution"` | `"basic"` | `"grey"`
|
|
311
|
-
- `icon` — optional icon component (use 12px icons)
|
|
312
|
-
- `onDismiss` — dismiss button callback
|
|
313
|
-
- `required` — boolean, shows asterisk
|
|
314
|
-
|
|
315
|
-
## Key File Paths
|
|
316
|
-
|
|
317
|
-
- `@persona/design-system/components/ConfigFormGroup/ConfigFormGroup.tsx`
|
|
318
|
-
- `@persona/design-system/components/FormField/FormField.tsx`
|
|
319
|
-
- `@persona/design-system/components/Input/Input.tsx`
|
|
320
|
-
- `@persona/design-system/components/TextArea/TextArea.tsx`
|
|
321
|
-
- `@persona/design-system/components/ListBox/ListBox.tsx`
|
|
322
|
-
- `@persona/design-system/components/TableBox/TableBox.tsx`
|
|
323
|
-
- `@persona/design-system/components/FormField/TableBoxField.tsx`
|
|
324
|
-
- `@persona/design-system/components/CardV2/Card.tsx`
|
|
325
|
-
- `@persona/design-system/components/Stack/Stack.tsx`
|
|
326
|
-
- `@persona/design-system/components/Text/` (Heading, Paragraph, Label)
|
|
327
|
-
- `@persona/design-system/components/Sticker/Sticker.tsx`
|
|
328
|
-
- `@persona/design-system/components/Modal/Modal.tsx`
|
|
329
|
-
- `@persona/design-system/components/Popover/Popover.tsx`
|
|
330
|
-
- `@persona/design-system/utils/testing.tsx`
|
|
331
|
-
- `@persona/design-system/components/DataTable/`
|