@povio/ui 4.0.2 → 5.0.0-rc.2
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/.rulesync/rules/ui-buttons-and-content.md +54 -0
- package/.rulesync/rules/ui-inputs-and-forms.md +62 -0
- package/.rulesync/rules/ui-overlays-navigation-and-styling.md +49 -0
- package/.rulesync/rules/ui-overview.md +33 -0
- package/README.md +41 -10
- package/dist/{Accordion-CB1F5YAY.js → Accordion-CzFKi8Bp.js} +14 -16
- package/dist/{Alert-BALBsBrP.js → Alert-T25LY8ZL.js} +22 -22
- package/dist/{Alert-CbEhRaU5.d.ts → Alert-f1dG-4Uy.d.ts} +2 -2
- package/dist/{AlertDialog-PjYM6lDo.d.ts → AlertDialog-B6R2MbNg.d.ts} +2 -2
- package/dist/{Autocomplete-DE2lQi5o.d.ts → Autocomplete-CQ63Cynd.d.ts} +1 -1
- package/dist/{Badge-CjPpYa50.d.ts → Badge-YKlKz-Jy.d.ts} +3 -4
- package/dist/{BottomSheet-CVTF1wQe.js → BottomSheet-DvqBvth_.js} +11 -11
- package/dist/{BottomSheet-CT0zuola.d.ts → BottomSheet-xaymO7aQ.d.ts} +1 -1
- package/dist/{BottomSheet.lazy-7AwnB4vS.d.ts → BottomSheet.lazy-CGBRPve_.d.ts} +1 -1
- package/dist/{Breadcrumbs-BibAIBhY.js → Breadcrumbs-DiIYJAWf.js} +10 -12
- package/dist/{Breadcrumbs-D-3YEuem.d.ts → Breadcrumbs-DyriI-Bi.d.ts} +1 -1
- package/dist/{Button-DTNjsGx5.d.ts → Button-BZ3is6IU.d.ts} +3 -3
- package/dist/Button-sn52l1Yv.js +506 -0
- package/dist/{ButtonContent-CohuJJzG.js → ButtonContent-B2_dZ6vA.js} +4 -4
- package/dist/{Calendar-kSEji28A.js → Calendar-DzQApBCy.js} +14 -14
- package/dist/{CheckContent-DzWpxKGq.js → CheckContent-DZ7Gk8GS.js} +3 -4
- package/dist/{Checkbox-DBV_Nxtq.js → Checkbox-BepzfVfK.js} +4 -4
- package/dist/{Checkbox-CBybJbLm.d.ts → Checkbox-CHpgW3fI.d.ts} +1 -1
- package/dist/{CheckboxCheckmark-DJue5Aej.js → CheckboxCheckmark-B3lnOjsU.js} +24 -48
- package/dist/{CheckboxGroup-4xoWgmxr.d.ts → CheckboxGroup-CXrR3A-c.d.ts} +3 -3
- package/dist/{DatePicker-CjmXaZ9T.d.ts → DatePicker-B3l9TEjW.d.ts} +3 -3
- package/dist/{DatePicker-BbdtBAGN.js → DatePicker-CI87jC4_.js} +8 -8
- package/dist/{DatePickerInput-CdCtVE9z.d.ts → DatePickerInput-CZTEsrS0.d.ts} +3 -3
- package/dist/{DatePickerInput-eyHwzKPm.js → DatePickerInput-UBZcTmdv.js} +24 -26
- package/dist/{DateRangePicker-Ct182qur.js → DateRangePicker-BX2O5zA8.js} +17 -17
- package/dist/{DateRangePicker-D1kjkFfS.d.ts → DateRangePicker-DKkc2B3n.d.ts} +3 -3
- package/dist/{DateTimePicker-taYHMMYi.js → DateTimePicker-CVfkp45w.js} +8 -8
- package/dist/{DateTimePicker-CT_Pm3KB.d.ts → DateTimePicker-IHr-wPq8.d.ts} +3 -3
- package/dist/{Dialog-BE9BSDDl.js → Dialog-DdRP4YFC.js} +1 -1
- package/dist/{DropdownMenu-CZQRzOBb.d.ts → DropdownMenu-CWDhk3XA.d.ts} +2 -2
- package/dist/{DropdownMenu-tuf1W-IL.js → DropdownMenu-zrodtd44.js} +2 -2
- package/dist/{DropdownMenuDesktop-C9ttysuk.js → DropdownMenuDesktop-CGYxsavQ.js} +9 -9
- package/dist/{FileInput-CI8D_wf_.d.ts → FileInput-BQbn77bE.d.ts} +5 -5
- package/dist/{FileInput-B-ADr0B3.js → FileInput-Dz1eESr_.js} +16 -20
- package/dist/{FileUpload-3-4Vt4f1.js → FileUpload-D3Io7Is5.js} +48 -58
- package/dist/{FileUpload-BrnJdN3M.d.ts → FileUpload-qySCMcLn.d.ts} +1 -1
- package/dist/{FileUploadContainer-CkBENy6n.d.ts → FileUploadContainer-qOyGvb5J.d.ts} +1 -1
- package/dist/{Form-mzpVGNjX.d.ts → Form-u_N_6mwo.d.ts} +1 -1
- package/dist/{FormField-DTDj3F0A.d.ts → FormField-B0miX3gu.d.ts} +1 -1
- package/dist/{FormField-CAcDJ4HC.js → FormField-CHD4OJOt.js} +38 -37
- package/dist/{FormFieldError-CFg0Wn3i.js → FormFieldError-QRAFHUTt.js} +2 -2
- package/dist/{FormFieldHeaderTooltip-C2IDI4ac.js → FormFieldHeaderTooltip-Dl24v4_j.js} +2 -2
- package/dist/{IconButton-CYazzM7I.d.ts → IconButton-KXecZgYX.d.ts} +2 -2
- package/dist/{InlineIconButton-Rp5bXWcQ.d.ts → InlineIconButton-CbKZ2U_a.d.ts} +2 -2
- package/dist/{InlineTooltipWrapper-7HG-g2X3.js → InlineTooltipWrapper-g5yoeH1B.js} +1 -1
- package/dist/{Input-DSHFNEVl.d.ts → Input-efmPwk8f.d.ts} +3 -3
- package/dist/{InputContent-CvWm6GAv.d.ts → InputContent-DuBa9FuI.d.ts} +3 -3
- package/dist/{InputItem-B3PlrjuD.js → InputItem-2zf6QI5L.js} +11 -11
- package/dist/{Inputs-WZmrBWrL.js → Inputs-BceDTmdT.js} +1 -1
- package/dist/{Inputs-CHEDcuP0.d.ts → Inputs-C-w03Q_F.d.ts} +1 -1
- package/dist/{Link-C5YsZ4pr.js → Link-Btxj2gzg.js} +1 -1
- package/dist/{Link-DS9-0Ijl.d.ts → Link-QYpprkN1.d.ts} +1 -1
- package/dist/{MenuItem-CROWrE2A.d.ts → MenuItem--Mjd_yK8.d.ts} +1 -1
- package/dist/{NumberField-BICDQ2gN.d.ts → NumberField-z2JatYK0.d.ts} +3 -3
- package/dist/{NumberRangeInput-X8G1zfNM.js → NumberRangeInput-BxVrHq8R.js} +7 -7
- package/dist/{NumberRangeInput-BlGXChNR.d.ts → NumberRangeInput-Chai3iEi.d.ts} +2 -2
- package/dist/{Pagination-CumQED8X.d.ts → Pagination-CXtIDclf.d.ts} +1 -1
- package/dist/{PaginationList-CmOJo2r2.js → PaginationList-0bAmvXC0.js} +12 -20
- package/dist/{PaginationList-D79ApWLm.d.ts → PaginationList-CXG4jWFD.d.ts} +2 -2
- package/dist/{PasswordInput-BdrYD1D3.d.ts → PasswordInput-ub2TQxef.d.ts} +1 -1
- package/dist/{PillButton-CihEPQye.d.ts → PillButton-DASBXLFB.d.ts} +2 -2
- package/dist/{Popover-C0_-TLl_.d.ts → Popover-DUKH0q9u.d.ts} +2 -2
- package/dist/{Progress-_jkt2pQw.js → Progress-DQWiFP0L.js} +5 -6
- package/dist/{Progress-CYfDXJKs.d.ts → Progress-Dho39FDs.d.ts} +1 -1
- package/dist/{QuerySelect-Bpz-qI9h.d.ts → QuerySelect-Bo1K6gi_.d.ts} +2 -2
- package/dist/{RadioGroup-WHWosz7K.d.ts → RadioGroup-B_zJdn4y.d.ts} +3 -3
- package/dist/{RadioGroup-DW_OQQDu.js → RadioGroup-SSZYch-J.js} +19 -22
- package/dist/{RichTextEditor-CbgjRfiU.d.ts → RichTextEditor-B_JX3nor.d.ts} +1 -1
- package/dist/{RichTextEditor-BOTitK7E.js → RichTextEditor-D6RewmRj.js} +25 -17
- package/dist/{Select-DmLkOMr1.js → Select-CuZDkeQs.js} +8 -14
- package/dist/{Select-wzB2aQ_X.d.ts → Select-DeapZMYx.d.ts} +1 -1
- package/dist/{SelectBase-DefgAEzh.d.ts → SelectBase-7SE9Za2r.d.ts} +3 -3
- package/dist/{Slider-CZMNmk6P.d.ts → Slider-BFViQmM3.d.ts} +1 -1
- package/dist/{Slider-Q87Hg_V2.js → Slider-DJ9K_a-x.js} +10 -10
- package/dist/{Spinner-owSXOEzg.js → Spinner-BEYBu85B.js} +1 -1
- package/dist/{Spinner-BOgO9bS6.d.ts → Spinner-BbcI6IOb.d.ts} +1 -1
- package/dist/{SplitButton-BPZbQeYC.d.ts → SplitButton-lL87EcBL.d.ts} +3 -3
- package/dist/{Stepper-BbO9TlOM.js → Stepper-C1YPgTBG.js} +26 -29
- package/dist/{Stepper-PcHlxDD5.d.ts → Stepper-hlhViuaK.d.ts} +11 -11
- package/dist/{Switch-C0S5Juhf.d.ts → Switch-DPftmB1b.d.ts} +1 -1
- package/dist/{Switch-Cylpjatb.js → Switch-JxRmH1dX.js} +15 -23
- package/dist/Tag-Cch_68QO.d.ts +43 -0
- package/dist/Tag-HiDH438e.js +145 -0
- package/dist/{TextArea-CBWJ7w-p.d.ts → TextArea-BhrCBGbq.d.ts} +2 -2
- package/dist/{TextArea-DZv6XaT0.js → TextArea-gikUKKDl.js} +6 -6
- package/dist/{TextButton-D7e_YBLe.d.ts → TextButton-DnXRykhF.d.ts} +4 -4
- package/dist/{TimePicker-BZ4WrI5Z.d.ts → TimePicker-CmT89X7v.d.ts} +2 -2
- package/dist/{TimePicker-DAoHgk8U.js → TimePicker-DtNTOOGr.js} +10 -10
- package/dist/{Toast-DIlYlUQk.d.ts → Toast-B4cXs2rj.d.ts} +1 -1
- package/dist/{ToastContainer-8X5jGBe7.js → ToastContainer-BbsMIwtC.js} +2 -2
- package/dist/{ToggleButton-D4y2fLmN.d.ts → ToggleButton-BGuzPJDO.d.ts} +2 -2
- package/dist/{ToggleGroup-Cho_oRZh.js → ToggleGroup-Cl0NS3fe.js} +16 -11
- package/dist/{Tooltip-B-2AxyjP.d.ts → Tooltip-D7dNwGy9.d.ts} +8 -8
- package/dist/{Tooltip-D94a1IQl.js → Tooltip-aE1Vswxz.js} +11 -12
- package/dist/{TooltipWrapper-S2JC-w4e.js → TooltipWrapper-CRf-JFeo.js} +4 -4
- package/dist/{Typography-AcUd9df8.js → Typography-B0Gp1lpc.js} +1 -1
- package/dist/{Typography-BWmZd20e.d.ts → Typography-BiuidzDC.d.ts} +1 -1
- package/dist/{autocomplete-CaQSVRrw.d.ts → autocomplete-BJ7rqWa4.d.ts} +2 -2
- package/dist/{button.cva-ChabF4Am.d.ts → button.cva-BvRI-3Gn.d.ts} +11 -29
- package/dist/{buttonContent.cva-CP857foM.d.ts → buttonContent.cva-BDT_CReI.d.ts} +1 -1
- package/dist/{checkbox-D8CPWRlM.d.ts → checkbox-BfcE8J5P.d.ts} +1 -1
- package/dist/{checkbox-group-BuPUA_Qj.d.ts → checkbox-group-CHs2wFHS.d.ts} +1 -1
- package/dist/{checkbox.cva-DwnPS5df.d.ts → checkbox.cva-gv87kr1W.d.ts} +3 -5
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.d.ts +1 -1
- package/dist/components/alert-dialog.js +7 -7
- package/dist/components/alert.d.ts +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/autocomplete.d.ts +1 -1
- package/dist/components/autocomplete.js +4 -4
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +19 -22
- package/dist/components/bottom-sheet.d.ts +2 -2
- package/dist/components/bottom-sheet.js +1 -1
- package/dist/components/breadcrumbs.d.ts +1 -1
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/checkbox-group.d.ts +1 -1
- package/dist/components/checkbox-group.js +5 -5
- package/dist/components/checkbox.d.ts +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/date-picker.d.ts +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-range-picker.d.ts +1 -1
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/date-time-picker.d.ts +1 -1
- package/dist/components/date-time-picker.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.js +2 -2
- package/dist/components/dropdown-menu.d.ts +2 -2
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/file-input.d.ts +1 -1
- package/dist/components/file-input.js +1 -1
- package/dist/components/file-upload-container.d.ts +2 -2
- package/dist/components/file-upload-container.js +1 -1
- package/dist/components/file-upload.d.ts +2 -2
- package/dist/components/file-upload.js +1 -1
- package/dist/components/form-field.d.ts +1 -1
- package/dist/components/form-field.js +1 -1
- package/dist/components/icon-button.d.ts +1 -1
- package/dist/components/icon-button.js +2 -2
- package/dist/components/inline-icon-button.d.ts +1 -1
- package/dist/components/inline-icon-button.js +2 -2
- package/dist/components/input.d.ts +1 -1
- package/dist/components/input.js +6 -6
- package/dist/components/link.d.ts +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/number-field.d.ts +1 -1
- package/dist/components/number-field.js +6 -6
- package/dist/components/number-range-input.d.ts +1 -1
- package/dist/components/number-range-input.js +1 -1
- package/dist/components/pagination-list.d.ts +1 -1
- package/dist/components/pagination-list.js +1 -1
- package/dist/components/pagination.d.ts +1 -1
- package/dist/components/pagination.js +5 -6
- package/dist/components/password-input.d.ts +1 -1
- package/dist/components/pill-button.d.ts +1 -1
- package/dist/components/pill-button.js +2 -2
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.js +2 -2
- package/dist/components/progress.d.ts +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/query-autocomplete.d.ts +2 -2
- package/dist/components/query-autocomplete.js +2 -2
- package/dist/components/query-select.d.ts +1 -1
- package/dist/components/query-select.js +3 -3
- package/dist/components/radio-group.d.ts +1 -1
- package/dist/components/radio-group.js +1 -1
- package/dist/components/select.d.ts +2 -2
- package/dist/components/select.js +1 -1
- package/dist/components/slider.d.ts +1 -1
- package/dist/components/slider.js +1 -1
- package/dist/components/spinner.d.ts +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/split-button.d.ts +1 -1
- package/dist/components/split-button.js +2 -2
- package/dist/components/stepper.d.ts +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/switch.d.ts +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.d.ts +1 -1
- package/dist/components/tag.js +1 -1
- package/dist/components/text-area.d.ts +1 -1
- package/dist/components/text-area.js +1 -1
- package/dist/components/text-button.d.ts +1 -1
- package/dist/components/text-button.js +1 -2
- package/dist/components/time-picker.d.ts +1 -1
- package/dist/components/time-picker.js +1 -1
- package/dist/components/toast.d.ts +2 -2
- package/dist/components/toast.js +2 -2
- package/dist/components/toggle-button.d.ts +1 -1
- package/dist/components/toggle-button.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/tooltip-ellipsis.js +1 -1
- package/dist/components/tooltip.d.ts +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/components/typography.d.ts +2 -2
- package/dist/components/typography.js +1 -1
- package/dist/components/use-toast.d.ts +1 -1
- package/dist/components/use-toast.js +2 -2
- package/dist/config/confirmation.d.ts +1 -1
- package/dist/config/link-context.d.ts +2 -2
- package/dist/config/ui-config.d.ts +2 -2
- package/dist/config/ui-config.js +1 -1
- package/dist/{confirmation.context-fKfUTsLF.d.ts → confirmation.context-DPAKsLYl.d.ts} +1 -1
- package/dist/{date-picker-MXt02b7Z.d.ts → date-picker-BYFWSbN8.d.ts} +1 -1
- package/dist/{date-range-picker-BjT0t21q.d.ts → date-range-picker-BaaXOObm.d.ts} +1 -1
- package/dist/{date-time-picker-CMmIuZtT.d.ts → date-time-picker-D42cTCgx.d.ts} +1 -1
- package/dist/{datePickerValue.utils-GADbSu7a.js → datePickerValue.utils-CFCY-fRJ.js} +8 -10
- package/dist/{dialog.cva-5qNq9YfM.js → dialog.cva---xiOXMQ.js} +1 -1
- package/dist/{dist-C6GfeeEC.js → dist-B8h0VT0E.js} +35 -83
- package/dist/{dom.utils-D3mELNBA.js → dom.utils-DjuRTR6U.js} +1 -1
- package/dist/{dynamicInputs-CQMTixlW.d.ts → dynamicInputs-wEEikYeg.d.ts} +104 -105
- package/dist/{fieldAdapter-BYVPxvYi.js → fieldAdapter-C0lCFmf0.js} +1 -1
- package/dist/{file-input-D-46wS5j.d.ts → file-input-C56GXRwz.d.ts} +1 -1
- package/dist/{file-upload-BG20Bhrn.d.ts → file-upload-Bx0X534g.d.ts} +2 -2
- package/dist/{fileUpload.types-xFzuCT_m.d.ts → fileUpload.types-DWuQKA2l.d.ts} +2 -2
- package/dist/index.d.ts +81 -81
- package/dist/index.js +40 -40
- package/dist/{input-CKGPYwfB.d.ts → input-D2kGX0hW.d.ts} +1 -1
- package/dist/input.cva-BcXyC1vZ.js +208 -0
- package/dist/{input.cva-ByFuAEIS.d.ts → input.cva-BhDJxc7r.d.ts} +4 -8
- package/dist/{link.context-C5ZgwVM5.d.ts → link.context-CDZn6oL2.d.ts} +1 -1
- package/dist/{number-field-CyP6XgJh.d.ts → number-field-Bw2GKr0s.d.ts} +1 -1
- package/dist/{number-range-input-DMmlk7Bl.d.ts → number-range-input-Dqe6x2dR.d.ts} +1 -1
- package/dist/{password-input-BWpfQe0G.d.ts → password-input-DepKyhh3.d.ts} +1 -1
- package/dist/{pillButton.cva-BVsxGnqF.d.ts → pillButton.cva-BEWuu0qm.d.ts} +1 -3
- package/dist/pillButton.cva-DlP5tOT5.js +197 -0
- package/dist/{popover.cva-CXha_UMQ.js → popover.cva-BJSkLndY.js} +1 -1
- package/dist/{query-autocomplete-DV8fEkK2.d.ts → query-autocomplete-BSpHin_R.d.ts} +2 -2
- package/dist/{query-select-BZ3-5WTu.d.ts → query-select-m1DCp4UF.d.ts} +2 -2
- package/dist/{queryAutocomplete.types-Dm8Ttx4v.d.ts → queryAutocomplete.types-CrbVUmvl.d.ts} +2 -2
- package/dist/{radio-group-CmUtsjqP.d.ts → radio-group-Civ3Fb70.d.ts} +1 -1
- package/dist/{radio.cva-DAq2M13H.d.ts → radio.cva-BlOrmxzf.d.ts} +2 -2
- package/dist/rhf/autocomplete.d.ts +2 -2
- package/dist/rhf/autocomplete.js +1 -1
- package/dist/rhf/checkbox-group.d.ts +2 -2
- package/dist/rhf/checkbox-group.js +1 -1
- package/dist/rhf/checkbox.d.ts +2 -2
- package/dist/rhf/checkbox.js +2 -2
- package/dist/rhf/date-picker.d.ts +2 -2
- package/dist/rhf/date-picker.js +2 -2
- package/dist/rhf/date-range-picker.d.ts +2 -2
- package/dist/rhf/date-range-picker.js +2 -2
- package/dist/rhf/date-time-picker.d.ts +2 -2
- package/dist/rhf/date-time-picker.js +2 -2
- package/dist/rhf/file-input.d.ts +2 -2
- package/dist/rhf/file-input.js +2 -2
- package/dist/rhf/file-upload.d.ts +2 -2
- package/dist/rhf/file-upload.js +2 -2
- package/dist/rhf/input.d.ts +2 -2
- package/dist/rhf/input.js +1 -1
- package/dist/rhf/inputs.d.ts +2 -2
- package/dist/rhf/number-field.d.ts +2 -2
- package/dist/rhf/number-field.js +1 -1
- package/dist/rhf/number-range-input.d.ts +2 -2
- package/dist/rhf/number-range-input.js +2 -2
- package/dist/rhf/password-input.d.ts +2 -2
- package/dist/rhf/password-input.js +1 -1
- package/dist/rhf/query-autocomplete.d.ts +1 -1
- package/dist/rhf/query-autocomplete.js +1 -1
- package/dist/rhf/query-select.d.ts +1 -1
- package/dist/rhf/query-select.js +1 -1
- package/dist/rhf/radio-group.d.ts +2 -2
- package/dist/rhf/radio-group.js +2 -2
- package/dist/rhf/rich-text-editor.d.ts +2 -2
- package/dist/rhf/rich-text-editor.js +2 -2
- package/dist/rhf/select.d.ts +2 -2
- package/dist/rhf/select.js +2 -2
- package/dist/rhf/slider.d.ts +2 -2
- package/dist/rhf/slider.js +2 -2
- package/dist/rhf/switch.d.ts +2 -2
- package/dist/rhf/switch.js +2 -2
- package/dist/rhf/text-area.d.ts +2 -2
- package/dist/rhf/text-area.js +2 -2
- package/dist/rhf/time-picker.d.ts +2 -2
- package/dist/rhf/time-picker.js +2 -2
- package/dist/rhf/toggle-group.js +2 -2
- package/dist/{rhf-1_ZO8GhU.js → rhf-D8B7mLO1.js} +1 -1
- package/dist/rhf.d.ts +81 -81
- package/dist/rhf.js +40 -40
- package/dist/{rich-text-editor-Db3XWWFo.d.ts → rich-text-editor-DvNEOIux.d.ts} +1 -1
- package/dist/rich-text-editor.d.ts +1 -1
- package/dist/rich-text-editor.js +1 -1
- package/dist/{select-DXGbGkZM.d.ts → select-DY5QtwqI.d.ts} +2 -2
- package/dist/{slider-JQh0ypfU.d.ts → slider-CrB-Gkcv.d.ts} +1 -1
- package/dist/{staticDateTimeSegments-BQoA94W-.js → staticDateTimeSegments-DR8bJw-F.js} +12 -10
- package/dist/{staticSelect.utils-ad60elvT.js → staticSelect.utils-Cm7MoDVG.js} +45 -37
- package/dist/styles/color-utilities.css +32 -0
- package/dist/styles/editor.css +9 -9
- package/dist/styles/input.d.ts +1 -1
- package/dist/{switch-Lm3xl1rQ.d.ts → switch-8WzXfTS8.d.ts} +1 -1
- package/dist/switch.cva-8T0fw31t.d.ts +15 -0
- package/dist/tanstack/autocomplete.d.ts +1 -1
- package/dist/tanstack/checkbox-group.d.ts +1 -1
- package/dist/tanstack/checkbox.d.ts +1 -1
- package/dist/tanstack/checkbox.js +1 -1
- package/dist/tanstack/date-picker.d.ts +1 -1
- package/dist/tanstack/date-picker.js +1 -1
- package/dist/tanstack/date-range-picker.d.ts +1 -1
- package/dist/tanstack/date-range-picker.js +1 -1
- package/dist/tanstack/date-time-picker.d.ts +1 -1
- package/dist/tanstack/date-time-picker.js +1 -1
- package/dist/tanstack/file-input.d.ts +1 -1
- package/dist/tanstack/file-input.js +1 -1
- package/dist/tanstack/file-upload.d.ts +2 -2
- package/dist/tanstack/file-upload.js +1 -1
- package/dist/tanstack/form.d.ts +1 -1
- package/dist/tanstack/form.js +1 -1
- package/dist/tanstack/input.d.ts +1 -1
- package/dist/tanstack/inputs.d.ts +3 -3
- package/dist/tanstack/inputs.js +1 -1
- package/dist/tanstack/number-field.d.ts +1 -1
- package/dist/tanstack/number-range-input.d.ts +1 -1
- package/dist/tanstack/number-range-input.js +1 -1
- package/dist/tanstack/password-input.d.ts +1 -1
- package/dist/tanstack/query-select.d.ts +1 -1
- package/dist/tanstack/radio-group.d.ts +1 -1
- package/dist/tanstack/radio-group.js +1 -1
- package/dist/tanstack/rich-text-editor.d.ts +1 -1
- package/dist/tanstack/rich-text-editor.js +1 -1
- package/dist/tanstack/select.d.ts +1 -1
- package/dist/tanstack/select.js +1 -1
- package/dist/tanstack/slider.d.ts +1 -1
- package/dist/tanstack/slider.js +1 -1
- package/dist/tanstack/switch.d.ts +1 -1
- package/dist/tanstack/switch.js +1 -1
- package/dist/tanstack/table.d.ts +1 -1
- package/dist/tanstack/table.js +1 -1
- package/dist/tanstack/text-area.d.ts +1 -1
- package/dist/tanstack/text-area.js +1 -1
- package/dist/tanstack/time-picker.d.ts +1 -1
- package/dist/tanstack/time-picker.js +1 -1
- package/dist/tanstack/toggle-group.js +1 -1
- package/dist/tanstack.d.ts +65 -65
- package/dist/tanstack.js +49 -49
- package/dist/{text-area-I5MNcGp_.d.ts → text-area-CqnKRWKq.d.ts} +1 -1
- package/dist/{time-picker-DdhW8GmD.d.ts → time-picker-Cz1GIzpF.d.ts} +1 -1
- package/dist/{toast.cva-LU7TGprV.d.ts → toast.cva-Cj6o2Rmu.d.ts} +8 -8
- package/dist/{toast.runtime-QMYrNvoQ.js → toast.runtime-CIKvmkjo.js} +1 -1
- package/dist/typography.cva-CJZZSGXW.js +51 -0
- package/dist/typography.cva-jtp6WWUH.d.ts +35 -0
- package/dist/{uiConfig.context-RFvaQYzD.js → uiConfig.context-D2eUIPHn.js} +11 -20
- package/dist/{uiConfig.context-CIoMqe1_.d.ts → uiConfig.context-aoarCLYX.d.ts} +11 -12
- package/dist/{useBreakpoint-3kpqzjoC.js → useBreakpoint-BOA-MyoT.js} +1 -1
- package/dist/{useFieldAccessibility-CtTdRX2u.js → useFieldAccessibility-D2_Qm26-.js} +10 -11
- package/dist/{useFormAutosave-DqP6lB4l.js → useFormAutosave-BYFn3LH8.js} +2 -2
- package/dist/{useStaticInputHandoff-BAaDW_0z.js → useStaticInputHandoff-DB9PgioW.js} +11 -12
- package/dist/{useTableColumnConfig-DVI_jVHz.js → useTableColumnConfig-CcJxu14U.js} +26 -28
- package/dist/{useTableNav-Tu8UZxHA.d.ts → useTableNav-D9mICzNW.d.ts} +7 -7
- package/dist/{useToast-NBGlVeFP.d.ts → useToast-DMSm59Y6.d.ts} +1 -1
- package/package.json +9 -2
- package/rulesync.jsonc +11 -0
- package/scripts/generate-rules.mjs +34 -0
- package/dist/Button-CcZBqoQp.js +0 -761
- package/dist/Tag-CgPeLVXM.d.ts +0 -44
- package/dist/Tag-DNuHvt6J.js +0 -148
- package/dist/input.cva-KYGD4Bdz.js +0 -324
- package/dist/pillButton.cva-6tjADUQ6.js +0 -265
- package/dist/switch.cva-BIioyegR.d.ts +0 -15
- package/dist/typography.cva-BI0FyIqm.js +0 -129
- package/dist/typography.cva-YaO6JLqU.d.ts +0 -51
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
targets: ["*"]
|
|
3
|
+
description: "@povio/ui buttons, labels, status feedback, and text-content APIs"
|
|
4
|
+
globs:
|
|
5
|
+
- "packages/ui/src/components/buttons/**/*"
|
|
6
|
+
- "packages/ui/src/components/text/**/*"
|
|
7
|
+
- "packages/ui/src/components/status/**/*"
|
|
8
|
+
- "packages/ui/src/components/shared/pagination/**/*"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Buttons, text, and status components
|
|
12
|
+
|
|
13
|
+
## Button
|
|
14
|
+
|
|
15
|
+
Use `Button` for an action. Its content is `children`; use `link` only when it navigates through the configured `LinkContext`.
|
|
16
|
+
|
|
17
|
+
- Visual variants: `contained`, `solid`, `outlined`, `outline`, `subtle`, `text`, `ghost`. The default CVA styles `solid` like `contained` and `outline` like `outlined`, but passes every value through unchanged so UI overrides can redefine either value.
|
|
18
|
+
- Colors: `primary`, `secondary`, `error` (destructive theme tokens), and Atlas-specific `dual`. Text buttons with `dual` use primary text and secondary icons. Only primary text buttons support `inverted`, using the primary foreground token.
|
|
19
|
+
- Sizes: `sm` (alias `s`), `default`, and `none` (zero padding); omit the size prop for `default`. Legacy sizes (`xs`, `small`, `m`, `md`, `l`, `lg`) are not supported.
|
|
20
|
+
- Use `fullWidth`; `width="fill"` and `width="hug"` remain valid.
|
|
21
|
+
- Use `loading` or `isLoading`; loading disables the button by default. `disableWhileLoading={false}` opts out; `noDisableWhenLoading` is the legacy inverse.
|
|
22
|
+
- Use `startIcon` and `endIcon`. `icon` plus `iconPosition="left" | "right"` remains supported.
|
|
23
|
+
- Use `IconButton` for icon-only actions and supply `ariaLabel` or `label`. `InlineIconButton` is the text-style icon-only variant.
|
|
24
|
+
- Use `ToggleButton` for one independently toggled state (`isSelected`, `defaultSelected`, `onChange`). It defaults to outlined primary but honors supplied `variant` and `color`.
|
|
25
|
+
- Use `SplitButton` only for a primary action with menu alternatives; use `ButtonGroup` for peer actions.
|
|
26
|
+
- `variant`, `size`, and other CVA props belong to the active override. Never normalize their values inside a component; define default compatibility aliases as CVA entries instead.
|
|
27
|
+
- `PillButton` has its own CVA but follows the same variant contract: `solid` and `outline` are default aliases and are passed unchanged to `pillButton.cva` overrides.
|
|
28
|
+
|
|
29
|
+
## Tags, links, typography
|
|
30
|
+
|
|
31
|
+
Typography sizes are `headline-l`, `h1`–`h4`, `lead`, `body`, `large`, and `small`; There is no typography `variant`; use `className="font-bold"` or `className="italic"` for emphasis. `large` and `small` do not add font weight; use explicit emphasis when needed. Use the same size on mobile and desktop unless explicitly overridden.
|
|
32
|
+
|
|
33
|
+
- `Badge` and `Tag` are display components, not generic buttons. Use `dismissible` and `onRemove` for removal; `dismissable` and `onDismiss` are legacy forms.
|
|
34
|
+
- Pass remove-button behavior through `dismissButtonProps`; arbitrary button props do not belong on the display container.
|
|
35
|
+
- Use `Link` for navigation and `Button` for actions.
|
|
36
|
+
- Use `Typography` with semantic `as` elements (`h1`, `h2`, `p`, `span`) and library typography variants/sizes. Token changes belong in UI overrides, not consumers.
|
|
37
|
+
|
|
38
|
+
## Feedback
|
|
39
|
+
|
|
40
|
+
- Use `Alert` for persistent inline status, `Toast`/`useToast` for transient notifications, `Spinner` for indeterminate progress, and `Progress` for numeric progress.
|
|
41
|
+
- For alerts and toasts, keep `variant` (`contained`/`outlined`) separate from semantic `color` (`neutral`, `success`, `warning`, `error`).
|
|
42
|
+
- Toast actions are `{ text, onPress }`; keep them short and non-destructive.
|
|
43
|
+
|
|
44
|
+
## Reference
|
|
45
|
+
|
|
46
|
+
- `packages/ui/src/components/buttons/Button/Button.tsx` — Button behavior and compatibility.
|
|
47
|
+
- `packages/ui/src/components/text/Tag/Tag.tsx` — dismissible tag contract.
|
|
48
|
+
- `packages/ui/src/components/status/Toast/Toast.tsx` — toast content and actions.
|
|
49
|
+
|
|
50
|
+
## When refactoring
|
|
51
|
+
|
|
52
|
+
- `Button` uses `icon` only for a conventional start/end icon → use `startIcon` or `endIcon`.
|
|
53
|
+
- An icon-only action has no accessible name → use `IconButton` with `ariaLabel` or `label`.
|
|
54
|
+
- A tag/pill receives `onPress` to represent selection → use `ToggleButton` or `ToggleGroup`.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
targets: ["*"]
|
|
3
|
+
description: "@povio/ui form fields, selection controls, pickers, uploads, and React Hook Form integration"
|
|
4
|
+
globs:
|
|
5
|
+
- "packages/ui/src/components/inputs/**/*"
|
|
6
|
+
- "packages/ui/src/hooks/useForm*.ts"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Inputs and forms
|
|
10
|
+
|
|
11
|
+
## Shared field contract
|
|
12
|
+
|
|
13
|
+
- Sizes: `small` and `default` only. Omit `size` for the default; `extra-small` and `large` are not supported. This shared input API has no `sm` or `s` aliases.
|
|
14
|
+
- Use `label`, `helperText`, `error`, `isRequired`, and `isDisabled` as the base field contract.
|
|
15
|
+
- `Input`, `TextArea`, and `NumberField` also accept `errorMessage`, `required`, and `disabled`. Their visual layout is `layout="default" | "floating" | "filter" | "inline"`; `as` remains the legacy layout prop and is not polymorphic element selection.
|
|
16
|
+
- Use `variant="outlined" | "filled"` for text-like inputs. Keep layout separate from variant.
|
|
17
|
+
- Use `isClearable`, `leadingIcon`, `trailingIcon`, `action`, `unit`, `placeholder`, and `inputClassName` only where exposed; do not recreate input chrome in consumers.
|
|
18
|
+
- Controlled fields use `value` and `onChange`; uncontrolled fields use `defaultValue`. Preserve callback value types: strings for text, `number | null` for number fields, and component-specific date values for pickers.
|
|
19
|
+
|
|
20
|
+
## Selection controls
|
|
21
|
+
|
|
22
|
+
- `Checkbox` uses `isSelected`, `defaultSelected`, and `onChange(boolean)`; `children` may be any `ReactNode`.
|
|
23
|
+
- `Switch` uses the same boolean selection contract.
|
|
24
|
+
- `RadioGroup` takes `options: { label, value }[]` and scalar `value`/`defaultValue`/`onChange`.
|
|
25
|
+
- `CheckboxGroup` takes the same options shape and array values. `allValue` is an Atlas extension for all-selected representation.
|
|
26
|
+
- `ToggleGroup`, `Select`, and `Autocomplete` use `selectionMode="single" | "multiple"`. Single values are `Key | null`; multiple values are `Key[]`.
|
|
27
|
+
- `Select` is a closed selection field. `Autocomplete` is the searchable/combobox form of the same item API. Both take `items: { id, label, content?, isDisabled? }[]`.
|
|
28
|
+
- Preserve Select capabilities: `isSearchable`, `isClearable`, `showSelectAllOption`, `showSelectionBar`, `showNewItemOption`, `onNewItemOption`, async `isLoading`/`hasLoadMore`/`onLoadMore`, and `virtualizerOptions`.
|
|
29
|
+
- Use `QuerySelect` and `QueryAutocomplete` only with the package TanStack Query adapter; they are not generic async-select replacements.
|
|
30
|
+
|
|
31
|
+
## Dates, ranges, files, rich text
|
|
32
|
+
|
|
33
|
+
- Use `DatePicker`, `DateRangePicker`, `TimePicker`, and `DateTimePicker` for React Aria date values. Preserve `minValue`, `maxValue`, `granularity`, `isClearable`, and date-input options rather than replacing them with native inputs.
|
|
34
|
+
- Use `Slider` with numeric `value`/`defaultValue`; set `isRange` for two-thumb values.
|
|
35
|
+
- Use `FileInput` for controlled form file values and `FileUpload` for upload lifecycle, progress, cancellation, and uploaded-file display. Both accept `multiple` or `allowsMultiple`.
|
|
36
|
+
- Import `RichTextEditor` from `@povio/ui/rich-text-editor`, not the main package entry point.
|
|
37
|
+
|
|
38
|
+
## Forms
|
|
39
|
+
|
|
40
|
+
```tsx
|
|
41
|
+
// TanStack Form (native binding, e.g. import from "@povio/ui/tanstack/input")
|
|
42
|
+
<Input label="Name" field={{ form, name: "name" }} />
|
|
43
|
+
|
|
44
|
+
// React Hook Form (adapter, e.g. import from "@povio/ui/rhf/input")
|
|
45
|
+
<Input label="Name" formControl={{ control: form.control, name: "name" }} />
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
- `field` (TanStack) and `formControl` (React Hook Form) each own `value`, `onChange`, and `onBlur`; do not supply competing controlled props alongside either.
|
|
49
|
+
- `Form` and `Inputs` are Zod schema helpers, available in both the TanStack-native and React Hook Form flavors. Use a regular HTML `<form>` with individual fields when schema-generated rendering is not needed.
|
|
50
|
+
|
|
51
|
+
## Reference
|
|
52
|
+
|
|
53
|
+
- `packages/ui/src/components/inputs/Input/Input.tsx` — core text-field API.
|
|
54
|
+
- `packages/ui/src/components/inputs/Selection/shared/SelectBase.tsx` — selection and async capabilities.
|
|
55
|
+
- `packages/ui/src/components/inputs/shared/form.types.ts` — typed `field` (TanStack) contract.
|
|
56
|
+
- `packages/ui/src/rhf/form.types.ts` — typed `formControl` (React Hook Form) contract.
|
|
57
|
+
|
|
58
|
+
## When refactoring
|
|
59
|
+
|
|
60
|
+
- A consumer uses `as` to select a DOM element → use `layout`; `as` controls legacy input presentation.
|
|
61
|
+
- App code checks `allowsMultiple` → prefer `multiple` in new code.
|
|
62
|
+
- A select hand-rolls filtering or virtualized results → use the exposed Select/Autocomplete props before adding consumer-side overlay logic.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
targets: ["*"]
|
|
3
|
+
description: "@povio/ui overlays, navigation, tables, accessibility, and styling conventions"
|
|
4
|
+
globs:
|
|
5
|
+
- "packages/ui/src/components/overlays/**/*"
|
|
6
|
+
- "packages/ui/src/components/navigation/**/*"
|
|
7
|
+
- "packages/ui/src/components/DropdownMenu/**/*"
|
|
8
|
+
- "packages/ui/src/components/Breadcrumbs/**/*"
|
|
9
|
+
- "packages/ui/src/components/table/**/*"
|
|
10
|
+
- "packages/ui/src/components/**/*.cva.ts"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Overlays, navigation, tables, and styling
|
|
14
|
+
|
|
15
|
+
## Overlays and navigation
|
|
16
|
+
|
|
17
|
+
- Use `Dialog` with controlled `isOpen`; handle transitions with `onOpenChange`. `onClose` remains available for close-only behavior.
|
|
18
|
+
- Use `AlertDialog` for confirmations with a primary action and optional secondary action.
|
|
19
|
+
- Use `Drawer` for a side panel and `BottomSheet` for a mobile bottom sheet. Both own focus trapping and dismissal; do not mount parallel ad-hoc overlays.
|
|
20
|
+
- `Popover` renders a desktop popover and mobile bottom sheet. It requires a trigger, controlled state, and accessible `sheetLabel`.
|
|
21
|
+
- Use `Tooltip` for supplemental text only; it must not be the sole accessible label for an icon action.
|
|
22
|
+
- Use `DropdownMenu` with `trigger`, `items`, and `onAction`. Menu items are `{ id, label, content?, link?, children? }`; nested `children` create submenus.
|
|
23
|
+
- Use `Accordion` for expandable content, `Stepper` for step progress, `Breadcrumbs` for hierarchy, and `Pagination`/`PaginationList` for page navigation.
|
|
24
|
+
|
|
25
|
+
## Tables
|
|
26
|
+
|
|
27
|
+
- `Table` is the base TanStack wrapper. Use `PaginatedTable` or `InfiniteTable` only when their data-loading contracts match the view.
|
|
28
|
+
- Keep table columns in the consumer domain. Use `CellText` and `HeaderText` for consistent text treatment; use `ColumnConfigModal` for persisted visibility/configuration behavior.
|
|
29
|
+
|
|
30
|
+
## Styling and accessibility
|
|
31
|
+
|
|
32
|
+
- Components use class-variance-authority, `UIOverrides`, and tokenized Tailwind classes. Add visual variants through the relevant `*.cva.ts` definition and expose a typed variant prop; do not add hard-coded color values in consumers.
|
|
33
|
+
- Use `UIConfig` for package-wide defaults and `UIOverrides` for recipe overrides. Do not duplicate component markup to bypass them.
|
|
34
|
+
- Preserve React Aria state props/data attributes (`isDisabled`, `isSelected`, `isInvalid`, `data-selected`) when wrapping controls.
|
|
35
|
+
- Root styling uses `className`. Prefer existing slot props (`inputClassName`, `dialogClassName`, `overlayClassName`, `containerClassName`) over selectors reaching into library internals.
|
|
36
|
+
- Keep button-like controls keyboard accessible. Icon-only actions need an accessible name; labels remain associated with fields.
|
|
37
|
+
- Avoid nested runtime ternaries in rendering or prop normalization. Use a named helper, map, or explicit branch.
|
|
38
|
+
|
|
39
|
+
## Reference
|
|
40
|
+
|
|
41
|
+
- `packages/ui/src/components/overlays/Dialog/Dialog.tsx` — controlled dialog behavior.
|
|
42
|
+
- `packages/ui/src/components/DropdownMenu/DropdownMenu.tsx` — responsive menu boundary.
|
|
43
|
+
- `packages/ui/src/config/uiOverrides.context.tsx` — recipe override system.
|
|
44
|
+
|
|
45
|
+
## When refactoring
|
|
46
|
+
|
|
47
|
+
- A component hard-codes a visual token already represented by a CVA recipe → add or reuse a typed recipe variant.
|
|
48
|
+
- An icon-only trigger relies only on a tooltip → add an `aria-label`/`ariaLabel` or visible label.
|
|
49
|
+
- Overlay state is duplicated in an app wrapper and a UI component → make controlled `isOpen`/`onOpenChange` the source of truth.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
root: true
|
|
3
|
+
targets: ["*"]
|
|
4
|
+
description: "@povio/ui public API and component-selection guidance"
|
|
5
|
+
globs: ["packages/ui/**/*"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# @povio/ui component-library overview
|
|
9
|
+
|
|
10
|
+
`@povio/ui` is a React 19, TypeScript, Tailwind 4 component library built on React Aria Components. Import components and hooks from component-scoped subpaths (e.g. `@povio/ui/dialog`, `@povio/ui/rich-text-editor`), or from the broader `@povio/ui/rhf` (React Hook Form) or `@povio/ui/tanstack` (TanStack Form) entries; internal `src/components/**` paths are not consumer APIs.
|
|
11
|
+
|
|
12
|
+
## Public API and naming
|
|
13
|
+
|
|
14
|
+
- `src/rhf.ts` and `src/tanstack.ts` are the authoritative barrels for the two form-integration flavors; `src/entries/*.ts` (plus `src/entries/rhf/*.ts` and `src/entries/tanstack/*.ts` for form-capable components) back the individual `package.json#exports` subpaths. Add or change a public component in all three places together with its prop type.
|
|
15
|
+
- Component names are canonical and final: `Input`, `NumberField`, `FileInput`, `Switch`, `ToggleGroup`, `DropdownMenu`, `Dialog`, `AlertDialog`, `Popover`, `Spinner`, `Progress`, `Badge`, `RichTextEditor` (exported from `@povio/ui/rich-text-editor`).
|
|
16
|
+
- Use `ButtonGroup` for grouped independent actions. Use `ToggleGroup` only when the group represents selected value(s).
|
|
17
|
+
|
|
18
|
+
## Common conventions
|
|
19
|
+
|
|
20
|
+
- Components use React Aria event names (`onPress`, `onChange`, `isDisabled`, `isSelected`) as their base API.
|
|
21
|
+
- Form-capable components speak a native `field: { form, name }` TanStack Form binding. Consumers on `@povio/ui/rhf/*` get the same components wrapped with a `formControl: { control, name }` React Hook Form adapter instead. Do not pass `value`, `onChange`, or `onBlur` together with `field`/`formControl`.
|
|
22
|
+
- Keep public props semantic and domain-independent. Use `className` for root styling and component-specific `*ClassName` props only for independently styled internal slots.
|
|
23
|
+
- Prefer `ReactNode` for display content and preserve `aria-*` props through to the interactive element.
|
|
24
|
+
|
|
25
|
+
## Reference
|
|
26
|
+
|
|
27
|
+
- `packages/ui/src/rhf.ts` / `packages/ui/src/tanstack.ts` — public exports per form-integration flavor.
|
|
28
|
+
- `packages/ui/src/config/uiConfig.context.tsx` — runtime component defaults.
|
|
29
|
+
|
|
30
|
+
## When refactoring
|
|
31
|
+
|
|
32
|
+
- A consumer imports from `src/components/...` → switch it to a package subpath export.
|
|
33
|
+
- A stateful segmented control is used as an action toolbar → use `ButtonGroup` and `Button`s instead.
|
package/README.md
CHANGED
|
@@ -40,6 +40,20 @@ The React Aria hooks used by Povio are similarly isolated under `use-text-field`
|
|
|
40
40
|
|
|
41
41
|
Each emitted entry is independently bundled and tree-shaken; it does not forward React Aria's aggregate barrel or share a generated aggregate chunk with unrelated controls. Ordinary Povio component imports do not include the escape-hatch entries.
|
|
42
42
|
|
|
43
|
+
## Button sizes
|
|
44
|
+
|
|
45
|
+
`Button` supports `sm` (with `s` as an equivalent alias), `default`, and `none` (zero padding). Omitting `size` uses `default`. The same sizes apply to `IconButton`, `InlineIconButton`, `TextButton`, `ToggleButton`, and `SplitButton`.
|
|
46
|
+
|
|
47
|
+
When migrating, replace `xs` and `small` with `sm`; remove explicit `default`, `m`, `md`, `l`, and `lg` size props to use the default. `sm` uses the existing small spacing tokens, and `default` uses the medium spacing tokens.
|
|
48
|
+
|
|
49
|
+
Use `<TextButton size="none">Read more</TextButton>` for a text action without button padding.
|
|
50
|
+
|
|
51
|
+
## Input sizes
|
|
52
|
+
|
|
53
|
+
Inputs support `size="small"` and `default`. Omit `size` for the default. This applies to text and number inputs, selects, autocomplete, date/time pickers, file inputs, checkbox groups, and radio groups that share the input size API. There are no `sm` or `s` aliases for inputs.
|
|
54
|
+
|
|
55
|
+
Replace `size="extra-small"` with `size="small"`, and remove `size="large"` or `size="default"` to use the default. Small and default retain their existing spacing.
|
|
56
|
+
|
|
43
57
|
## Versioning
|
|
44
58
|
|
|
45
59
|
`^2.1` still corresponds to Atlas 2.1. All versions after that currently target Atlas 2.2 and follow semantic versioning — breaking changes bump the major version.
|
|
@@ -48,21 +62,15 @@ Each emitted entry is independently bundled and tree-shaken; it does not forward
|
|
|
48
62
|
|
|
49
63
|
The package ships RuleSync source rules in `.rulesync/` and `rulesync.jsonc`. They document the public component API, standard aliases, form contracts, accessibility expectations, and styling conventions for AI coding tools. Generated tool files are deliberately excluded from the published npm package.
|
|
50
64
|
|
|
51
|
-
To generate the UI rules into a consuming project's repository root, run the executable bundled with `@povio/ui`:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
pnpm exec povio-ui-rules
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
With npm, use:
|
|
65
|
+
To generate the UI rules into a consuming project's repository root, install [`rulesync`](https://github.com/dyoshikawa/rulesync) (`^8.15.0`) in that project, then run the executable bundled with `@povio/ui`:
|
|
58
66
|
|
|
59
67
|
```bash
|
|
60
|
-
|
|
68
|
+
bunx --package @povio/ui povio-ui-rules
|
|
61
69
|
```
|
|
62
70
|
|
|
63
|
-
This generates the relevant Cursor, Claude Code, and Codex CLI files in the consuming repository. Add generated files to that repository's `.gitignore` unless they are intentionally versioned. Re-run the command after upgrading `@povio/ui`; verify without writing files by adding `--check` (for example, `
|
|
71
|
+
This generates the relevant Cursor, Claude Code, and Codex CLI files in the consuming repository. Add generated files to that repository's `.gitignore` unless they are intentionally versioned. Re-run the command after upgrading `@povio/ui`; verify without writing files by adding `--check` (for example, `bunx --package @povio/ui povio-ui-rules --check`).
|
|
64
72
|
|
|
65
|
-
Within this monorepo, the equivalent package-local commands are `
|
|
73
|
+
Within this monorepo, the equivalent package-local commands are `bun run --filter @povio/ui rules:gen` and `bun run --filter @povio/ui rules:check`.
|
|
66
74
|
|
|
67
75
|
## Publishing
|
|
68
76
|
|
|
@@ -116,6 +124,29 @@ We also use a custom tailwind plugin to shorten some selectors inside the @povio
|
|
|
116
124
|
@plugin "@povio/ui/tw-ui-plugin";
|
|
117
125
|
```
|
|
118
126
|
|
|
127
|
+
### Background tint utility
|
|
128
|
+
|
|
129
|
+
Import the color utilities in your application's Tailwind stylesheet. This import is required because `@povio/ui` button styles use these utilities:
|
|
130
|
+
|
|
131
|
+
```css
|
|
132
|
+
@import "tailwindcss";
|
|
133
|
+
@import "./theme.css";
|
|
134
|
+
@import "@povio/ui/color-utilities";
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Use `bg-tint-<color>/<percentage>` to mix a theme color with white in sRGB. The color name resolves to your theme's `--color-<color>` token. The required modifier is an integer from `0` to `100`: `/80` keeps 80% of the original color and adds 20% white, `/100` keeps the original color, and `/0` produces white. Lower numbers produce lighter tints.
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
<button
|
|
141
|
+
type="button"
|
|
142
|
+
className="bg-interactive-primary-background text-interactive-primary-foreground hover:bg-tint-interactive-primary-background/80"
|
|
143
|
+
>
|
|
144
|
+
Hover to lighten
|
|
145
|
+
</button>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
The utility supports standard Tailwind variants such as `hover:`, `focus-visible:`, and `dark:`. With an opaque starting color, the result remains fully opaque and does not depend on the background behind the element. This differs from the standard `bg-<color>/80` opacity modifier. It mixes with white rather than adjusting OKLCH lightness, and only changes the background color; text and children are unaffected.
|
|
149
|
+
|
|
119
150
|
### Z-Index
|
|
120
151
|
|
|
121
152
|
`@povio/ui` uses named z-index theme tokens instead of hardcoded Tailwind values. These must be defined in your `base.css` inside the `@theme static` block so components stack correctly and can be overridden per app.
|
|
@@ -4,7 +4,7 @@ import { n as $7230ffa83bc0c2cf$export$29f1550f4b0d4415, o as $7230ffa83bc0c2cf$
|
|
|
4
4
|
import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-D6KlWSFL.js";
|
|
5
5
|
import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-nI1_VOaE.js";
|
|
6
6
|
import { t as UIOverrides } from "./uiOverrides.context-Bfm2n-n8.js";
|
|
7
|
-
import { t as Typography } from "./Typography-
|
|
7
|
+
import { t as Typography } from "./Typography-B0Gp1lpc.js";
|
|
8
8
|
import $ahdqC$react, { createContext, forwardRef, useContext } from "react";
|
|
9
9
|
import { c } from "react/compiler-runtime";
|
|
10
10
|
import { mergeProps } from "react-aria/mergeProps";
|
|
@@ -134,7 +134,7 @@ const accordionDefinition = UIOverrides.defineConfig({
|
|
|
134
134
|
compoundVariants: [{
|
|
135
135
|
variant: "outlined",
|
|
136
136
|
singleItem: false,
|
|
137
|
-
className: "rounded-global-rounding-s border border-
|
|
137
|
+
className: "rounded-global-rounding-s border border-border-default-subtle"
|
|
138
138
|
}]
|
|
139
139
|
}
|
|
140
140
|
});
|
|
@@ -143,7 +143,7 @@ const accordionItemDefinition = UIOverrides.defineConfig({
|
|
|
143
143
|
config: {
|
|
144
144
|
variants: {
|
|
145
145
|
variant: {
|
|
146
|
-
filled: "rounded-accordion-rounding-filled bg-
|
|
146
|
+
filled: "rounded-accordion-rounding-filled bg-surface-default-background",
|
|
147
147
|
outlined: ""
|
|
148
148
|
},
|
|
149
149
|
singleItem: {
|
|
@@ -158,11 +158,11 @@ const accordionItemDefinition = UIOverrides.defineConfig({
|
|
|
158
158
|
compoundVariants: [{
|
|
159
159
|
singleItem: true,
|
|
160
160
|
variant: "outlined",
|
|
161
|
-
className: "border-
|
|
161
|
+
className: "border-border-default-subtle border-b"
|
|
162
162
|
}, {
|
|
163
163
|
singleItem: false,
|
|
164
164
|
variant: "outlined",
|
|
165
|
-
className: "not-last:border-
|
|
165
|
+
className: "not-last:border-border-default-subtle not-last:border-b"
|
|
166
166
|
}]
|
|
167
167
|
}
|
|
168
168
|
});
|
|
@@ -170,13 +170,13 @@ const accordionTriggerDefinition = UIOverrides.defineConfig({
|
|
|
170
170
|
base: [
|
|
171
171
|
"group flex w-full items-center gap-accordion-gap-content-to-arrow",
|
|
172
172
|
"px-accordion-side-accordion py-accordion-height-accordion",
|
|
173
|
-
"outline-none focus-visible:ring-2 focus-visible:ring-interactive-
|
|
173
|
+
"outline-none focus-visible:ring-2 focus-visible:ring-interactive-ring"
|
|
174
174
|
],
|
|
175
175
|
config: {
|
|
176
176
|
variants: {
|
|
177
177
|
variant: {
|
|
178
|
-
outlined: "rounded-accordion-rounding-outlined hover:bg-
|
|
179
|
-
filled: "rounded-accordion-rounding-filled bg-
|
|
178
|
+
outlined: "rounded-accordion-rounding-outlined hover:bg-tint-surface-default-popover/80",
|
|
179
|
+
filled: "rounded-accordion-rounding-filled bg-surface-default-background hover:bg-tint-surface-default-popover/80"
|
|
180
180
|
},
|
|
181
181
|
actionPosition: {
|
|
182
182
|
left: "flex-row-reverse",
|
|
@@ -198,21 +198,21 @@ const accordionHeadingDefinition = UIOverrides.defineConfig({
|
|
|
198
198
|
}
|
|
199
199
|
});
|
|
200
200
|
const accordionHeadingTitleDefinition = UIOverrides.defineConfig({
|
|
201
|
-
base: ["flex-1 text-left text-
|
|
201
|
+
base: ["flex-1 text-left text-surface-default-card-foreground"],
|
|
202
202
|
config: {
|
|
203
203
|
variants: {},
|
|
204
204
|
defaultVariants: {}
|
|
205
205
|
}
|
|
206
206
|
});
|
|
207
207
|
const accordionHeadingSubtitleDefinition = UIOverrides.defineConfig({
|
|
208
|
-
base: ["flex-1 text-left text-
|
|
208
|
+
base: ["flex-1 text-left text-surface-default-foreground"],
|
|
209
209
|
config: {
|
|
210
210
|
variants: {},
|
|
211
211
|
defaultVariants: {}
|
|
212
212
|
}
|
|
213
213
|
});
|
|
214
214
|
const accordionChevronDefinition = UIOverrides.defineConfig({
|
|
215
|
-
base: ["size-6 shrink-0 text-
|
|
215
|
+
base: ["size-6 shrink-0 text-surface-default-popover-foreground transition-transform duration-200"],
|
|
216
216
|
config: {
|
|
217
217
|
variants: { isExpanded: {
|
|
218
218
|
true: "rotate-180",
|
|
@@ -222,7 +222,7 @@ const accordionChevronDefinition = UIOverrides.defineConfig({
|
|
|
222
222
|
}
|
|
223
223
|
});
|
|
224
224
|
const accordionIconDefinition = UIOverrides.defineConfig({
|
|
225
|
-
base: ["size-6 shrink-0 text-
|
|
225
|
+
base: ["size-6 shrink-0 text-surface-default-popover-foreground"],
|
|
226
226
|
config: {
|
|
227
227
|
variants: {},
|
|
228
228
|
defaultVariants: {}
|
|
@@ -284,14 +284,12 @@ const AccordionItem = (t0) => {
|
|
|
284
284
|
children: [
|
|
285
285
|
Icon && /* @__PURE__ */ jsx(Icon, { className: iconCva({}) }),
|
|
286
286
|
/* @__PURE__ */ jsx(Typography, {
|
|
287
|
-
size: "
|
|
288
|
-
variant: "default",
|
|
287
|
+
size: "small",
|
|
289
288
|
className: headingTitleCva({}),
|
|
290
289
|
children: heading
|
|
291
290
|
}),
|
|
292
291
|
subheading && /* @__PURE__ */ jsx(Typography, {
|
|
293
|
-
size: "
|
|
294
|
-
variant: "default",
|
|
292
|
+
size: "small",
|
|
295
293
|
className: headingSubtitleCva({}),
|
|
296
294
|
children: subheading
|
|
297
295
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as UIOverrides } from "./uiOverrides.context-Bfm2n-n8.js";
|
|
2
|
-
import { t as Typography } from "./Typography-
|
|
3
|
-
import { t as Spinner } from "./Spinner-
|
|
2
|
+
import { t as Typography } from "./Typography-B0Gp1lpc.js";
|
|
3
|
+
import { t as Spinner } from "./Spinner-BEYBu85B.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/status/Alert/alert.cva.ts
|
|
@@ -9,8 +9,8 @@ const alertDefinition = UIOverrides.defineConfig({
|
|
|
9
9
|
config: {
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
12
|
-
outlined: "border bg-
|
|
13
|
-
contained: "
|
|
12
|
+
outlined: "border bg-surface-default-card text-surface-default-card-foreground",
|
|
13
|
+
contained: ""
|
|
14
14
|
},
|
|
15
15
|
color: {
|
|
16
16
|
neutral: "",
|
|
@@ -23,42 +23,42 @@ const alertDefinition = UIOverrides.defineConfig({
|
|
|
23
23
|
{
|
|
24
24
|
variant: "outlined",
|
|
25
25
|
color: "neutral",
|
|
26
|
-
className: "border-
|
|
26
|
+
className: "border-border-default-subtle"
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
variant: "outlined",
|
|
30
30
|
color: "success",
|
|
31
|
-
className: "border-
|
|
31
|
+
className: "border-surface-success-base"
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
34
|
variant: "outlined",
|
|
35
35
|
color: "warning",
|
|
36
|
-
className: "border-
|
|
36
|
+
className: "border-surface-warning-base"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
variant: "outlined",
|
|
40
40
|
color: "error",
|
|
41
|
-
className: "border-
|
|
41
|
+
className: "border-surface-destructive-base"
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
variant: "contained",
|
|
45
45
|
color: "neutral",
|
|
46
|
-
className: "bg-
|
|
46
|
+
className: "bg-surface-inverted-card text-surface-inverted-card-foreground"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
variant: "contained",
|
|
50
50
|
color: "success",
|
|
51
|
-
className: "bg-
|
|
51
|
+
className: "bg-surface-success-base text-surface-success-inverted-base"
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
variant: "contained",
|
|
55
55
|
color: "warning",
|
|
56
|
-
className: "bg-
|
|
56
|
+
className: "bg-surface-warning-base text-surface-warning-inverted-base"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
variant: "contained",
|
|
60
60
|
color: "error",
|
|
61
|
-
className: "bg-
|
|
61
|
+
className: "bg-surface-destructive-base text-surface-destructive-inverted-base"
|
|
62
62
|
}
|
|
63
63
|
],
|
|
64
64
|
defaultVariants: {
|
|
@@ -75,7 +75,7 @@ const statusIconDefinition = UIOverrides.defineConfig({
|
|
|
75
75
|
variants: {
|
|
76
76
|
variant: {
|
|
77
77
|
outlined: "",
|
|
78
|
-
contained: "text-
|
|
78
|
+
contained: "text-inherit"
|
|
79
79
|
},
|
|
80
80
|
color: {
|
|
81
81
|
neutral: "",
|
|
@@ -88,22 +88,22 @@ const statusIconDefinition = UIOverrides.defineConfig({
|
|
|
88
88
|
{
|
|
89
89
|
variant: "outlined",
|
|
90
90
|
color: "neutral",
|
|
91
|
-
class: "text-
|
|
91
|
+
class: "text-surface-default-foreground"
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
variant: "outlined",
|
|
95
95
|
color: "success",
|
|
96
|
-
class: "text-
|
|
96
|
+
class: "text-surface-success-base"
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
variant: "outlined",
|
|
100
100
|
color: "warning",
|
|
101
|
-
class: "text-
|
|
101
|
+
class: "text-surface-warning-base"
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
variant: "outlined",
|
|
105
105
|
color: "error",
|
|
106
|
-
class: "text-
|
|
106
|
+
class: "text-surface-destructive-base"
|
|
107
107
|
}
|
|
108
108
|
],
|
|
109
109
|
defaultVariants: {
|
|
@@ -121,10 +121,10 @@ const statusSeparatorDefinition = UIOverrides.defineConfig({
|
|
|
121
121
|
contained: "hidden"
|
|
122
122
|
},
|
|
123
123
|
color: {
|
|
124
|
-
neutral: "bg-
|
|
125
|
-
success: "bg-
|
|
126
|
-
warning: "bg-
|
|
127
|
-
error: "bg-
|
|
124
|
+
neutral: "bg-border-default-subtle",
|
|
125
|
+
success: "bg-surface-success-base",
|
|
126
|
+
warning: "bg-surface-warning-base",
|
|
127
|
+
error: "bg-surface-destructive-base"
|
|
128
128
|
}
|
|
129
129
|
},
|
|
130
130
|
defaultVariants: { color: "neutral" }
|
|
@@ -177,7 +177,7 @@ const Alert = (t0) => {
|
|
|
177
177
|
let t5;
|
|
178
178
|
if ($[13] !== text) {
|
|
179
179
|
t5 = /* @__PURE__ */ jsx(Typography, {
|
|
180
|
-
size: "
|
|
180
|
+
size: "small",
|
|
181
181
|
children: text
|
|
182
182
|
});
|
|
183
183
|
$[13] = text;
|
|
@@ -5,8 +5,8 @@ declare const alertDefinition: {
|
|
|
5
5
|
base: string[];
|
|
6
6
|
config: StyleMergeUtils.Config<{
|
|
7
7
|
readonly variant: {
|
|
8
|
-
readonly outlined: "border bg-
|
|
9
|
-
readonly contained: "
|
|
8
|
+
readonly outlined: "border bg-surface-default-card text-surface-default-card-foreground";
|
|
9
|
+
readonly contained: "";
|
|
10
10
|
};
|
|
11
11
|
readonly color: {
|
|
12
12
|
readonly neutral: "";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as ButtonVariantProps } from "./button.cva-
|
|
1
|
+
import { n as ButtonVariantProps } from "./button.cva-BvRI-3Gn.js";
|
|
2
2
|
import { n as DialogProps } from "./Dialog-DEbI_9S-.js";
|
|
3
|
-
import { r as TypographyPropsCva } from "./Typography-
|
|
3
|
+
import { r as TypographyPropsCva } from "./Typography-BiuidzDC.js";
|
|
4
4
|
//#region src/components/overlays/AlertDialog/AlertDialog.d.ts
|
|
5
5
|
interface AlertDialogAction {
|
|
6
6
|
label: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as FieldValues } from "./form.binding-DVJ5F0JE.js";
|
|
2
|
-
import { n as GroupedSelectControlProps, o as SelectBaseProps, r as GroupedSelectProps, t as DefaultInitialSelectItem } from "./SelectBase-
|
|
2
|
+
import { n as GroupedSelectControlProps, o as SelectBaseProps, r as GroupedSelectProps, t as DefaultInitialSelectItem } from "./SelectBase-7SE9Za2r.js";
|
|
3
3
|
import { s as OmitDiscriminatedUnion } from "./common-UBFya8WY.js";
|
|
4
4
|
import { ReactElement } from "react";
|
|
5
5
|
import { Key } from "react-aria-components";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as PillButtonVariants } from "./pillButton.cva-
|
|
2
|
-
import { n as TypographyProps } from "./Typography-
|
|
1
|
+
import { t as PillButtonVariants } from "./pillButton.cva-BEWuu0qm.js";
|
|
2
|
+
import { n as TypographyProps } from "./Typography-BiuidzDC.js";
|
|
3
3
|
import { Ref } from "react";
|
|
4
4
|
import { ButtonProps } from "react-aria-components";
|
|
5
5
|
//#region src/components/text/Badge/Badge.d.ts
|
|
@@ -12,7 +12,6 @@ interface BadgeProps extends PillButtonVariants {
|
|
|
12
12
|
isDisabled?: boolean;
|
|
13
13
|
disabled?: boolean;
|
|
14
14
|
contentRef?: Ref<HTMLElement>;
|
|
15
|
-
textVariant?: TypographyProps["variant"];
|
|
16
15
|
textSize?: TypographyProps["size"];
|
|
17
16
|
/** Preferred callback name. */
|
|
18
17
|
onRemove?: () => void;
|
|
@@ -23,6 +22,6 @@ interface BadgeProps extends PillButtonVariants {
|
|
|
23
22
|
/** Compatibility callback for the historical button-like prop surface. */
|
|
24
23
|
onPress?: ButtonProps["onPress"];
|
|
25
24
|
}
|
|
26
|
-
declare const Badge: ({ className, children, dismissible, dismissable, isDisabled, disabled, onRemove, onDismiss, dismissButtonProps, excludeFromTabOrder, onPress, contentRef, variant,
|
|
25
|
+
declare const Badge: ({ className, children, dismissible, dismissable, isDisabled, disabled, onRemove, onDismiss, dismissButtonProps, excludeFromTabOrder, onPress, contentRef, variant, textSize: textSizeProp, ...appearanceProps }: BadgeProps) => import("react").JSX.Element;
|
|
27
26
|
//#endregion
|
|
28
27
|
export { BadgeProps as n, Badge as t };
|