@povio/ui 5.0.0-rc.9 → 6.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/MIGRATION.md +673 -0
- package/README.md +206 -55
- package/dist/{Accordion-BzwO4_ml.js → Accordion-DycXjzGK.js} +10 -10
- package/dist/{Alert-DfiJbKH0.d.ts → Alert-BpPHCE5-.d.ts} +3 -3
- package/dist/{AlertDialog-OWTbR4km.d.ts → AlertDialog-CDCbfARJ.d.ts} +3 -3
- package/dist/Autocomplete-BUslodfn.d.ts +23 -0
- package/dist/Autocomplete-DSwAc7jF.js +142 -0
- package/dist/Autocomplete.bound-Db5C6Jph.d.ts +9 -0
- package/dist/Autocomplete.bound-e5WbxlBm.js +28 -0
- package/dist/{Badge-CBNpj823.d.ts → Badge-Dp091PcC.d.ts} +2 -2
- package/dist/{BadgeButton-Ccgt3oGO.d.ts → BadgeButton-DZm_aw29.d.ts} +2 -2
- package/dist/{BottomSheet-DbQuzfAB.d.ts → BottomSheet-C-jdDmO7.d.ts} +1 -1
- package/dist/{BottomSheet-BXLE3161.js → BottomSheet-DB0Cdlgx.js} +10 -84
- package/dist/{BottomSheet.lazy-D9LCEo7s.d.ts → BottomSheet.lazy-C0_6p_UQ.d.ts} +1 -1
- package/dist/{Breadcrumbs-CUV6CU8Q.d.ts → Breadcrumbs-CuupIZuv.d.ts} +1 -1
- package/dist/{Breadcrumbs-FF8hMfXd.js → Breadcrumbs-V-Bea_bs.js} +16 -13
- package/dist/Button-BL5ils-5.d.ts +13 -0
- package/dist/{Button-D6KlWSFL.js → Button-C1YB5dOw.js} +3 -3
- package/dist/Button-DU1Q8GDB.js +16 -0
- package/dist/ButtonBase-BhlpPPDi.js +87 -0
- package/dist/ButtonBase-C_ODj77A.d.ts +32 -0
- package/dist/{ButtonContent-c7lJayVQ.js → ButtonContent-BBup-vN6.js} +4 -13
- package/dist/{Calendar-BTjajO6i.js → Calendar-ChmIflXX.js} +31 -31
- package/dist/{CheckContent-D7sZPmzx.js → CheckContent-DHKG_FY6.js} +1 -1
- package/dist/{Checkbox-DVTWaMKa.d.ts → Checkbox-BjZVQ-6_.d.ts} +9 -8
- package/dist/{Checkbox-CV1ILXXO.js → Checkbox-Bo03jrPX.js} +20 -37
- package/dist/Checkbox.bound-DN4OVaMs.js +33 -0
- package/dist/Checkbox.bound-DTO008Tl.d.ts +9 -0
- package/dist/CheckboxCheckmark-C4yFclkZ.js +44 -0
- package/dist/CheckboxGroup-B_rzZgta.d.ts +30 -0
- package/dist/CheckboxGroup-D3LxgocB.js +139 -0
- package/dist/CheckboxGroup.bound-8hjoP-xP.js +32 -0
- package/dist/CheckboxGroup.bound-CiA60XsD.d.ts +9 -0
- package/dist/ComboBox-DFlz6HJ8.js +212 -0
- package/dist/{DatePicker-8xSs_jNd.d.ts → DatePicker-B_caFHFY.d.ts} +21 -10
- package/dist/{DatePicker-DOLL7mkc.js → DatePicker-Bc_E4UZ1.js} +40 -50
- package/dist/DatePicker.bound-C5-DL4SJ.d.ts +9 -0
- package/dist/DatePicker.bound-CtBL5w-8.js +36 -0
- package/dist/{DatePickerInput-D81ZJ3fT.d.ts → DatePickerInput-8gKhZdGY.d.ts} +3 -3
- package/dist/{DatePickerInput-BLBcySA2.js → DatePickerInput-TND0rEMc.js} +68 -48
- package/dist/{DateRangePicker-BF-1CztH.js → DateRangePicker-BNMTOQ2N.js} +81 -70
- package/dist/{DateRangePicker-Bfq-yDm7.d.ts → DateRangePicker-CzWwO5bA.d.ts} +30 -10
- package/dist/DateRangePicker.bound-C4mHtr-b.d.ts +9 -0
- package/dist/DateRangePicker.bound-GeRw9Iuj.js +35 -0
- package/dist/{DateTimePicker-Cj0qvJUz.js → DateTimePicker-B3YjV4uj.js} +40 -44
- package/dist/{DateTimePicker-D4lHyf6P.d.ts → DateTimePicker-CzGdmamp.d.ts} +21 -11
- package/dist/DateTimePicker.bound-ByjHsAnf.js +32 -0
- package/dist/DateTimePicker.bound-DwClL-pe.d.ts +9 -0
- package/dist/Dialog-2XpWsphI.d.ts +21 -0
- package/dist/{Dialog-9manOgMA.js → Dialog-COvYzwNU.js} +11 -8
- package/dist/{Dialog-CKLkS00H.js → Dialog-lFYX-7Ax.js} +22 -27
- package/dist/{DropdownMenu-5jmtgLXd.js → DropdownMenu-DtZdv5mo.js} +7 -7
- package/dist/DropdownMenu-gKIXzj63.d.ts +25 -0
- package/dist/{DropdownMenuDesktop-Cl9gZVq0.js → DropdownMenuDesktop-BMkiHEuY.js} +4 -4
- package/dist/{FileInput-C4CE5kuP.d.ts → FileInput-0o8-IJUh.d.ts} +26 -22
- package/dist/{FileInput-Br5DQaGQ.js → FileInput-Bpm2HJSB.js} +34 -47
- package/dist/FileInput.bound-B6oGPCP8.js +30 -0
- package/dist/FileInput.bound-BEeceBBO.d.ts +8 -0
- package/dist/{FileTrigger-Cthk5_Wp.js → FileTrigger-DBX1Io6E.js} +36 -7
- package/dist/FileUpload--AQJW3vz.d.ts +11 -0
- package/dist/{FileUpload--7ub3EZO.js → FileUpload-G7tdtNKN.js} +276 -165
- package/dist/FileUpload.bound-DqqPejvc.js +30 -0
- package/dist/FileUpload.bound-i5zfLhoY.d.ts +16 -0
- package/dist/{FileUploadContainer-042ztsaL.d.ts → FileUploadContainer-D1eYflb2.d.ts} +1 -1
- package/dist/{Form-DlQcyN1f.js → Form-CqF1SaVw.js} +2 -2
- package/dist/{FormField-Byiehm9y.d.ts → FormField-BsR2Cjxm.d.ts} +4 -2
- package/dist/FormField-DyqEbqx3.js +119 -0
- package/dist/{FormFieldError-DeOHHLo2.js → FormFieldError-BaVgIKrv.js} +2 -13
- package/dist/FormFieldHeaderTooltip-Bxc4f9i4.js +47 -0
- package/dist/{Heading-nI1_VOaE.js → Heading-D4XFYv__.js} +2 -2
- package/dist/IconButton-DdvODpP7.d.ts +25 -0
- package/dist/{IconSlot-DSK7qNxc.js → IconSlot-Cuvpj1gd.js} +2 -2
- package/dist/{InlineTooltipWrapper-BpApaGXV.js → InlineTooltipWrapper-HDHIaQtS.js} +1 -1
- package/dist/{Input-BsbLZDtC.js → Input-BG0Xjw5X.js} +2 -2
- package/dist/Input-BdCci6BF.js +229 -0
- package/dist/{Input-DOanwj3l.d.ts → Input-Bu4G9gcn.d.ts} +13 -9
- package/dist/Input.bound-CnqI-L-b.js +31 -0
- package/dist/Input.bound-CxfKRXzI.d.ts +9 -0
- package/dist/{InputContent-CXuP1ghQ.d.ts → InputContent-BGTEvv6a.d.ts} +4 -4
- package/dist/{useFieldAccessibility-ScC6Mtd5.js → InputContent-Ca4oVqIe.js} +24 -37
- package/dist/{Label-B2-B-uFY.js → Label-BGvF9vWx.js} +2 -2
- package/dist/{Link-FupWOW1f.js → Link-Chux-Clm.js} +2 -2
- package/dist/{Link-Ow9H7kNv.d.ts → Link-D0Kk3F5w.d.ts} +3 -3
- package/dist/{ListBox-CL8Ar4Q_.js → ListBox-CoUk0kkt.js} +10 -11
- package/dist/{MenuItem-DHyqOqln.d.ts → MenuItem-Bo5a7_Nw.d.ts} +1 -1
- package/dist/{Modal-w60dVQcb.js → Modal-B4p1zFqi.js} +58 -20
- package/dist/NumberField-BLAwsjns.js +225 -0
- package/dist/{NumberField-Cb9Gf6QJ.d.ts → NumberField-DCMQZPY9.d.ts} +13 -9
- package/dist/NumberField.bound-DiDYEZM4.js +32 -0
- package/dist/NumberField.bound-fZLE6Odv.d.ts +9 -0
- package/dist/{NumberFormatter-CLDS_LRZ.js → NumberFormatter-DYarfm5F.js} +2 -36
- package/dist/{NumberRangeInput-BfbJQqzn.d.ts → NumberRangeInput-CtSYPK2e.d.ts} +13 -8
- package/dist/{NumberRangeInput-B8-LHfg3.js → NumberRangeInput-al32ZeSy.js} +23 -51
- package/dist/NumberRangeInput.bound-B0e7yUDI.js +32 -0
- package/dist/NumberRangeInput.bound-CxAk_1_K.d.ts +9 -0
- package/dist/{OverlayArrow-D8z7cCsw.js → OverlayArrow-DF0jMwul.js} +2 -2
- package/dist/{Pagination-CwQu5Py8.d.ts → Pagination-DikJEIWD.d.ts} +1 -1
- package/dist/{PaginationList-DMRUGtf8.d.ts → PaginationList-D7PVQ5WX.d.ts} +1 -1
- package/dist/PaginationList-vfqgyTIP.js +258 -0
- package/dist/PasswordInput-Dy5hMeFP.d.ts +11 -0
- package/dist/{PasswordInput-CLwFUgl0.d.ts → PasswordInput.bound-B5sHHU26.d.ts} +5 -6
- package/dist/PasswordInput.bound-Bj3WO1zC.js +23 -0
- package/dist/{Popover-BTHPteIh.d.ts → Popover-DxTsc2y6.d.ts} +2 -2
- package/dist/{Progress-CjWOR38H.d.ts → Progress-CtxPBAgr.d.ts} +4 -4
- package/dist/{Progress-B3mY9rIP.js → Progress-ZsKwo9ne.js} +3 -28
- package/dist/RadioGroup-BYS8ha2C.d.ts +26 -0
- package/dist/{RadioGroup-DOw3PRoX.js → RadioGroup-D0X47mm7.js} +13 -117
- package/dist/RadioGroup.bound-CibzUsQL.d.ts +9 -0
- package/dist/RadioGroup.bound-aK3GC6i7.js +32 -0
- package/dist/RichTextEditor-k9LvNCjg.d.ts +28 -0
- package/dist/{RichTextEditor-D4yN7Wj7.js → RichTextEditor-qoxzWBFP.js} +154 -85
- package/dist/{staticSelect.utils-uHa8f_c6.js → Select-BAlYMh4h.js} +218 -252
- package/dist/{SelectBase-Omiq2D3M.d.ts → Select-NNohxr1t.d.ts} +32 -11
- package/dist/Select.bound-CQPG2sWV.js +34 -0
- package/dist/Select.bound-Dh5kywfV.d.ts +17 -0
- package/dist/{SelectionIndicator-JblvLKCu.js → SelectionIndicator-B7C5Y0JM.js} +1 -1
- package/dist/{SharedElementTransition-Da1c_cOO.js → SharedElementTransition-DJ9CCbEa.js} +1 -1
- package/dist/{Slider-CzEmKYBF.js → Slider-DMrnZn3I.js} +16 -40
- package/dist/{Slider-EYlGCLWe.d.ts → Slider-zbLmrW6J.d.ts} +9 -8
- package/dist/Slider.bound-BaJHbE6d.d.ts +9 -0
- package/dist/Slider.bound-BoIYW8I5.js +31 -0
- package/dist/{Spinner-BeVTUzzx.js → Spinner-CFj5Iu77.js} +28 -40
- package/dist/{Spinner-DbXeDOa2.d.ts → Spinner-b365xHHG.d.ts} +5 -5
- package/dist/{SplitButton-D9ngY1rJ.d.ts → SplitButton-CzvD7LIK.d.ts} +3 -3
- package/dist/{Stepper-TATlHZhQ.d.ts → Stepper-Bk1JUf6K.d.ts} +18 -18
- package/dist/{Stepper-Cp5vbL5g.js → Stepper-DlyScdAM.js} +11 -10
- package/dist/{Switch-CqnGEdeD.js → Switch-Ck_zSDuw.js} +9 -58
- package/dist/Switch-uqTGk-H6.d.ts +24 -0
- package/dist/Switch.bound-Brw5UUA6.js +33 -0
- package/dist/Switch.bound-DWuDmr2C.d.ts +9 -0
- package/dist/Tag--FasSNEh.d.ts +44 -0
- package/dist/{Text-D2MPZ3sY.js → Text-D72yc4S6.js} +1 -1
- package/dist/{TextArea-D8WkKsGn.js → TextArea-33uOXvnc.js} +30 -33
- package/dist/{TextArea-l_keyLK7.d.ts → TextArea-t5IYaVds.d.ts} +11 -9
- package/dist/TextArea.bound-DPALjcvO.js +28 -0
- package/dist/TextArea.bound-DcflHR7X.d.ts +9 -0
- package/dist/TextArea.cva-Bb73hriz.js +5 -0
- package/dist/TimePicker-BK4AnHQa.d.ts +45 -0
- package/dist/{TimePicker-C4taAOFQ.js → TimePicker-CmBGkxDC.js} +59 -51
- package/dist/TimePicker.bound-3i1DJgrU.js +32 -0
- package/dist/TimePicker.bound-BMZWRtpJ.d.ts +9 -0
- package/dist/{Toast-ruXqONDA.d.ts → Toast-6rYk8AAG.d.ts} +1 -1
- package/dist/{ToastContainer-qgpzMFD4.js → ToastContainer-D1Jl3PPk.js} +3 -3
- package/dist/{ToggleButton-BW1ensey.js → ToggleButton-DUQ8nwKY.js} +5 -5
- package/dist/ToggleButton-DZ340rQr.d.ts +17 -0
- package/dist/{toggleGroup.types-Bp43zbSQ.d.ts → ToggleGroup-BTqYh6FH.d.ts} +16 -15
- package/dist/{ToggleGroup-DOk27fgI.js → ToggleGroup-cvzIyIhi.js} +136 -162
- package/dist/ToggleGroup.bound-BEtnF-L-.d.ts +9 -0
- package/dist/ToggleGroup.bound-DjwakG--.js +67 -0
- package/dist/{Tooltip-CpG1nz7Y.js → Tooltip-CqbyoJhl.js} +45 -10
- package/dist/Tooltip-DP5RDkXs.d.ts +16 -0
- package/dist/{TooltipWrapper-3jyN0Wss.js → TooltipWrapper-BrftXInI.js} +7 -7
- package/dist/{Typography-XljT9s02.d.ts → Typography-BD-MSuTp.d.ts} +1 -1
- package/dist/{Typography-LU4z2pR1.js → Typography-Ba5l4rmj.js} +1 -1
- package/dist/{accordion.cva-CL1bVscW.js → accordion.cva-C-gUiXk5.js} +16 -24
- package/dist/badgeButton.cva-C1BuYx1N.js +138 -0
- package/dist/{badgeButton.cva-B2bgCQP6.d.ts → badgeButton.cva-Cj5AWgfv.d.ts} +8 -8
- package/dist/{breadcrumbs.cva-7zzdDhVR.js → breadcrumbs.cva-DCAdmxWR.js} +8 -8
- package/dist/{button.cva-C7kEhgoA.d.ts → button.cva-YpNNY6C-.d.ts} +21 -16
- package/dist/button.cva-fkUW5b2d.js +267 -0
- package/dist/{buttonContent.cva-DPIlROA9.d.ts → buttonContent.cva-CxgT-rxJ.d.ts} +2 -2
- package/dist/{checkbox.cva-t1Ox50hy.d.ts → checkbox.cva-CZnnBl8g.d.ts} +6 -6
- package/dist/checkbox.cva-DCVi4-4z.js +128 -0
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.d.ts +1 -1
- package/dist/components/alert-dialog.js +102 -100
- package/dist/components/alert.d.ts +1 -1
- package/dist/components/alert.js +116 -1
- package/dist/components/autocomplete.d.ts +2 -2
- package/dist/components/autocomplete.js +1 -134
- package/dist/components/badge-button.d.ts +1 -1
- package/dist/components/badge-button.js +4 -4
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +8 -8
- package/dist/components/bottom-sheet-header.d.ts +16 -0
- package/dist/components/bottom-sheet-header.js +80 -0
- package/dist/components/bottom-sheet.d.ts +2 -2
- package/dist/components/bottom-sheet.js +2 -2
- package/dist/components/breadcrumb/react-aria.js +1 -1
- package/dist/components/breadcrumbs.d.ts +1 -1
- package/dist/components/breadcrumbs.js +1 -1
- package/dist/components/button-group.d.ts +12 -0
- package/dist/components/button-group.js +46 -0
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js +1 -1
- package/dist/components/checkbox-group.d.ts +2 -2
- package/dist/components/checkbox-group.js +1 -163
- package/dist/components/checkbox.d.ts +2 -2
- package/dist/components/checkbox.js +2 -2
- package/dist/components/combo-box/react-aria.js +1 -1
- package/dist/components/date-picker/react-aria.js +1 -1
- package/dist/components/date-picker.d.ts +2 -2
- package/dist/components/date-picker.js +1 -1
- package/dist/components/date-range-picker/react-aria.js +1 -1
- package/dist/components/date-range-picker.d.ts +2 -2
- package/dist/components/date-range-picker.js +1 -1
- package/dist/components/date-time-picker.d.ts +2 -2
- package/dist/components/date-time-picker.js +1 -1
- package/dist/components/dialog-trigger/react-aria.js +1 -1
- package/dist/components/dialog.d.ts +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/drawer.js +4 -4
- package/dist/components/dropdown-menu.d.ts +2 -2
- package/dist/components/dropdown-menu.js +2 -2
- package/dist/components/file-input.d.ts +2 -2
- 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 +3 -3
- 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 +17 -15
- package/dist/components/icon-slot.d.ts +1 -1
- package/dist/components/icon-slot.js +1 -1
- package/dist/components/input-frame.d.ts +93 -0
- package/dist/{useStaticInputHandoff-NeZVnci-.js → components/input-frame.js} +50 -99
- package/dist/components/input.d.ts +2 -2
- package/dist/components/input.js +1 -241
- package/dist/components/link.d.ts +1 -1
- package/dist/components/link.js +2 -2
- package/dist/components/menu-trigger/react-aria.js +1 -1
- package/dist/components/modal/react-aria.js +1 -1
- package/dist/components/modal-overlay/react-aria.js +1 -1
- package/dist/components/number-field.d.ts +2 -2
- package/dist/components/number-field.js +1 -245
- package/dist/components/number-range-input.d.ts +2 -2
- 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 +14 -10
- package/dist/components/password-input.d.ts +2 -2
- package/dist/components/password-input.js +22 -1
- package/dist/components/popover/react-aria.js +1 -1
- package/dist/components/popover.d.ts +1 -1
- package/dist/components/popover.js +39 -31
- package/dist/components/progress.d.ts +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/radio-group.d.ts +2 -2
- package/dist/components/radio-group.js +1 -1
- package/dist/components/select/react-aria.js +1 -1
- package/dist/components/select.d.ts +2 -3
- package/dist/components/select.js +1 -1
- package/dist/components/slider.d.ts +2 -2
- 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/style-definitions.d.ts +3 -0
- package/dist/components/style-definitions.js +121 -0
- package/dist/components/submenu-trigger/react-aria.js +1 -1
- package/dist/components/switch.d.ts +2 -2
- package/dist/components/switch.js +1 -1
- package/dist/components/tag.d.ts +1 -1
- package/dist/components/tag.js +93 -1
- package/dist/components/text-area.d.ts +2 -2
- package/dist/components/text-area.js +1 -1
- package/dist/components/time-picker.d.ts +2 -2
- 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 +17 -30
- package/dist/components/toggle-group.d.ts +2 -3
- 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/component-configuration.d.ts +30 -0
- package/dist/config/component-configuration.js +69 -0
- package/dist/config/confirmation.d.ts +1 -1
- package/dist/config/confirmation.js +1 -1
- package/dist/config/link-context.d.ts +2 -2
- package/dist/config/resources.d.ts +1 -1
- package/dist/config/resources.js +1 -1
- package/dist/config/ui-config.d.ts +2 -2
- package/dist/config/ui-config.js +1 -1
- package/dist/config/ui-overrides.d.ts +1 -1
- package/dist/{confirmation.context-BuzgCfYl.js → confirmation.context-BSn1s-ip.js} +1 -1
- package/dist/{confirmation.context-BOeEVczb.d.ts → confirmation.context-DdxzxDWB.d.ts} +1 -1
- package/dist/{datePickerInput.cva-Cd7UUN61.js → datePickerInput.cva--gCeAsRx.js} +1 -1
- package/dist/{datePickerValue.utils-DCgoSrP3.js → datePickerValue.utils-BxHR_BQZ.js} +21 -13
- package/dist/{dialog.cva-COhDZaVl.js → dialog.cva-DzJlaK5a.js} +6 -6
- package/dist/{dist-CAdwxJbe.js → dist-D35rjADF.js} +54 -1
- package/dist/{dom.utils-D1AopHx9.js → dom.utils-BbfrA6RP.js} +1 -1
- package/dist/dropdownMenu.cva-CS5Q2b_3.js +31 -0
- package/dist/{PasswordInput-DYwUZ4-k.js → eye-BA4nRlMX.js} +1 -22
- package/dist/{fileUpload.cva-ujmStxB1.js → fileUpload.cva-DVJcCCYz.js} +10 -10
- package/dist/{fileUpload.types-n5FxK_F-.d.ts → fileUpload.types-DKICER1J.d.ts} +17 -17
- package/dist/form.binding-B-2id68q.js +49 -0
- package/dist/form.types-C8P4sznq.d.ts +22 -0
- package/dist/formFieldError.cva-Cc-dELdU.js +14 -0
- package/dist/formFieldHelper.cva-5YaiUEcL.js +97 -0
- package/dist/hooks/use-async-list.d.ts +2 -0
- package/dist/hooks/use-async-list.js +2 -0
- package/dist/hooks/use-filters.js +1 -1
- package/dist/{i18n-CX1vFM9r.d.ts → i18n-2z5on9No.d.ts} +18 -0
- package/dist/{i18n-CX2EjhJI.js → i18n-BjNKHh_D.js} +20 -2
- package/dist/{iconSlot.cva-CnpFzAOR.d.ts → iconSlot.cva-BrT0X2qq.d.ts} +4 -3
- package/dist/icons.d.ts +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.d.ts +95 -91
- package/dist/index.js +87 -85
- package/dist/input.cva-AHLI_M3K.js +185 -0
- package/dist/{input.cva-BsHgYa-L.d.ts → input.cva-CEFEpKml.d.ts} +10 -10
- package/dist/{intlStrings-chfsan9H.js → intlStrings-Cu1YN1tA.js} +35 -35
- package/dist/isEqual-LFw0W5rU.js +97 -0
- package/dist/{link.context-D5qyz9Rf.d.ts → link.context-pIX2TUSb.d.ts} +1 -1
- package/dist/link.cva-isgDrId6.js +12 -0
- package/dist/{numberStatic.utils-BX50PSee.js → numberStatic.utils-BIyZuILs.js} +5 -5
- package/dist/outline.clsx-DGGQQRkM.js +6 -0
- package/dist/{popover.cva-Bhud1wnp.js → popover.cva-Ciu9Ro5G.js} +1 -1
- package/dist/progress.cva-D0PKV_ET.js +28 -0
- package/dist/radio.cva-Dn2Auqxw.js +79 -0
- package/dist/{radio.cva-DN9VQ3Kb.d.ts → radio.cva-VUie6k1Y.d.ts} +4 -4
- package/dist/rich-text-editor.d.ts +2 -2
- package/dist/rich-text-editor.js +1 -1
- package/dist/{routing.utils-UTQonIhB.js → routing.utils-DfxEt0_Y.js} +5 -0
- package/dist/selectDesktop.cva-CGBkscBY.js +14 -0
- package/dist/selectItem.cva-Ch6oK4jP.js +27 -0
- package/dist/{staticDateTimeSegments-DtU63_dw.js → staticDateTimeSegments-CA_lwN-O.js} +60 -56
- package/dist/status.cva-CUpcOT4W.js +130 -0
- package/dist/{stepper.cva-CZ0Kj-s7.js → stepper.cva-CQGechUm.js} +22 -34
- package/dist/style-definitions-DzsmGccZ.d.ts +1028 -0
- package/dist/styles/editor.css +9 -9
- package/dist/styles/input.d.ts +1 -1
- package/dist/styles/outline.js +1 -1
- package/dist/switch.cva-C9bO_QI-.js +24 -0
- package/dist/switch.cva-x4SdjrQp.d.ts +16 -0
- package/dist/table.cva-BMIizuGy.js +111 -0
- package/dist/table.cva-HHTd92di.d.ts +84 -0
- package/dist/tag.cva-BVa0EWBU.js +24 -0
- package/dist/tanstack/autocomplete.d.ts +3 -2
- package/dist/tanstack/autocomplete.js +1 -1
- package/dist/tanstack/checkbox-group.d.ts +3 -2
- package/dist/tanstack/checkbox-group.js +1 -1
- package/dist/tanstack/checkbox.d.ts +3 -2
- package/dist/tanstack/checkbox.js +2 -2
- package/dist/tanstack/date-picker.d.ts +3 -2
- package/dist/tanstack/date-picker.js +1 -1
- package/dist/tanstack/date-range-picker.d.ts +3 -2
- package/dist/tanstack/date-range-picker.js +1 -1
- package/dist/tanstack/date-time-picker.d.ts +3 -2
- package/dist/tanstack/date-time-picker.js +1 -1
- package/dist/tanstack/file-input.d.ts +3 -2
- package/dist/tanstack/file-input.js +1 -1
- package/dist/tanstack/file-upload.d.ts +4 -3
- package/dist/tanstack/file-upload.js +1 -1
- package/dist/tanstack/form.d.ts +3 -3
- package/dist/tanstack/form.js +3 -3
- package/dist/tanstack/input.d.ts +3 -2
- package/dist/tanstack/input.js +1 -1
- package/dist/tanstack/number-field.d.ts +3 -2
- package/dist/tanstack/number-field.js +1 -1
- package/dist/tanstack/number-range-input.d.ts +3 -2
- package/dist/tanstack/number-range-input.js +1 -1
- package/dist/tanstack/password-input.d.ts +1 -1
- package/dist/tanstack/password-input.js +1 -1
- package/dist/tanstack/radio-group.d.ts +3 -2
- package/dist/tanstack/radio-group.js +1 -1
- package/dist/tanstack/rich-text-editor.d.ts +9 -2
- package/dist/tanstack/rich-text-editor.js +27 -1
- package/dist/tanstack/select.d.ts +3 -2
- package/dist/tanstack/select.js +1 -1
- package/dist/tanstack/slider.d.ts +3 -2
- package/dist/tanstack/slider.js +1 -1
- package/dist/tanstack/switch.d.ts +3 -2
- package/dist/tanstack/switch.js +1 -1
- package/dist/tanstack/table.d.ts +3 -2
- package/dist/tanstack/table.js +2 -3
- package/dist/tanstack/text-area.d.ts +3 -2
- package/dist/tanstack/text-area.js +1 -1
- package/dist/tanstack/time-picker.d.ts +3 -2
- package/dist/tanstack/time-picker.js +1 -1
- package/dist/tanstack/toggle-group.d.ts +3 -3
- package/dist/tanstack/toggle-group.js +1 -1
- package/dist/tanstack-CSiB125i.d.ts +469 -0
- package/dist/tanstack.d.ts +79 -78
- package/dist/tanstack.js +87 -83
- package/dist/{toast.cva-By5lvAfr.d.ts → toast.cva-B8i61tEN.d.ts} +10 -10
- package/dist/{toast.cva-C_L_RffH.js → toast.cva-BMOx7_9f.js} +21 -37
- package/dist/{toast.runtime-cxex9e4E.js → toast.runtime-D18gn2Ty.js} +1 -2
- package/dist/toggleGroup.cva-C9Y5-kpk.js +26 -0
- package/dist/{tooltip.cva-BIzlOXHH.js → tooltip.cva-Clfcn_r2.js} +10 -10
- package/dist/tw-ui-plugin.js +5 -1
- package/dist/typography.cva-CKCCpIMj.d.ts +36 -0
- package/dist/typography.cva-CXolEQdT.js +31 -0
- package/dist/{uiConfig.context-DeBX2beU.d.ts → uiConfig.context-B1SCCG5j.d.ts} +12 -20
- package/dist/{uiConfig.context-BS3r_kTS.js → uiConfig.context-dxsO9puE.js} +12 -118
- package/dist/{uiOverrides.context-DEp139He.d.ts → uiOverrides.context-Dmev7iRS.d.ts} +44 -6
- package/dist/useAsyncList-Cu-Y8If2.d.ts +9 -0
- package/dist/useAsyncList-yHz7twsj.js +445 -0
- package/dist/{useBreakpoint-DQoMN-BG.js → useBreakpoint-DOUmXVZ2.js} +5 -5
- package/dist/{useControlledState-CzXkZCX8.js → useControlledState-CuU1VIh1.js} +2 -2
- package/dist/useFieldAccessibility-eZIMECmG.js +19 -0
- package/dist/{useFilters-XNH27Md2.js → useFilters-HIngImwn.js} +1 -1
- package/dist/{form.binding-DVJ5F0JE.d.ts → useForm-I6z23FXf.d.ts} +15 -15
- package/dist/{form.binding-CG1RPv6o.js → useForm-eW4KpH1u.js} +79 -42
- package/dist/useFormAutosave-BBLm3Ujo.d.ts +34 -0
- package/dist/useFormAutosave-XEQqk1lK.js +216 -0
- package/dist/useStaticInputHandoff-DyYxfwv6.js +77 -0
- package/dist/useTableColumnConfig-DoTYVxqG.js +1349 -0
- package/dist/{useTableNav-Ckj5PBRk.d.ts → useTableNav-D2zCwy63.d.ts} +34 -96
- package/dist/{useToast-yreVCUer.d.ts → useToast-CA0BGCDK.d.ts} +1 -1
- package/dist/{utils-Czcqspm7.js → utils-BkLF-JA3.js} +1 -1
- package/package.json +66 -234
- package/.rulesync/rules/ui-buttons-and-content.md +0 -56
- package/.rulesync/rules/ui-inputs-and-forms.md +0 -62
- package/.rulesync/rules/ui-overlays-navigation-and-styling.md +0 -49
- package/.rulesync/rules/ui-overview.md +0 -33
- package/dist/Alert-CnvEb1D_.js +0 -244
- package/dist/AppCanvasPage--RG31Yyv.js +0 -2421
- package/dist/AppCanvasPage-BIFYeEeS.d.ts +0 -80
- package/dist/Autocomplete-BwNHp8fy.d.ts +0 -15
- package/dist/Button-C5rv4Cr2.js +0 -506
- package/dist/Button-D-4qb0IR.d.ts +0 -42
- package/dist/CheckboxCheckmark-CpC3wlMs.js +0 -178
- package/dist/CheckboxGroup-DGF12cmB.d.ts +0 -28
- package/dist/ComponentGallery-C6exitZN.js +0 -3513
- package/dist/Dialog-CW93T9X1.d.ts +0 -56
- package/dist/DropdownMenu-JNpYT4-3.d.ts +0 -62
- package/dist/FileUpload-CR7bZxV1.d.ts +0 -7
- package/dist/Form-DbEWnCKc.d.ts +0 -49
- package/dist/FormField-B99dLt8o.js +0 -212
- package/dist/FormFieldHeaderTooltip-BV2Ju4oB.js +0 -17
- package/dist/IconButton-D4thBurp.d.ts +0 -16
- package/dist/InlineIconButton-BeJCjl-q.d.ts +0 -15
- package/dist/InputItem-CIxbTxZu.js +0 -63
- package/dist/Inputs-DJSKiaWY.js +0 -17
- package/dist/Inputs-O84btFJL.d.ts +0 -13
- package/dist/PaginationList-DtvuP63b.js +0 -220
- package/dist/QuerySelect-BGxb6Y0K.d.ts +0 -24
- package/dist/RadioGroup-CZg2kIMk.d.ts +0 -24
- package/dist/RichTextEditor-YxuRUlI7.d.ts +0 -26
- package/dist/Select-UR0ec2Ux.js +0 -154
- package/dist/Select-pHbyJdZJ.d.ts +0 -15
- package/dist/Switch-s_EPn0Jz.d.ts +0 -22
- package/dist/Table-BN2_J_Ne.js +0 -636
- package/dist/Tag-AHfV_XSf.d.ts +0 -44
- package/dist/Tag-DPg5sL1Z.js +0 -146
- package/dist/TextButton-XUhV_1s0.d.ts +0 -15
- package/dist/TimePicker-B1POvGWs.d.ts +0 -33
- package/dist/Toast-DtG3pA61.js +0 -53
- package/dist/ToggleButton-7aP8Jb11.d.ts +0 -11
- package/dist/ToggleGroup-CRFDIPGZ.d.ts +0 -7
- package/dist/Tooltip-DHv6vAqW.d.ts +0 -57
- package/dist/UIConfigurator-BwLRfe-a.js +0 -6704
- package/dist/autocomplete-DeERHN8W.d.ts +0 -16
- package/dist/badgeButton.cva-CvN4CTx5.js +0 -300
- package/dist/checkbox-DxIPDTK5.d.ts +0 -9
- package/dist/checkbox-group-B3BOVshI.d.ts +0 -9
- package/dist/chevron-left-Dgo_b9wJ.js +0 -20
- package/dist/chevron-up-D_Gqpb5M.js +0 -20
- package/dist/components/inline-icon-button.d.ts +0 -2
- package/dist/components/inline-icon-button.js +0 -40
- package/dist/components/query-autocomplete.d.ts +0 -8
- package/dist/components/query-autocomplete.js +0 -134
- package/dist/components/query-select.d.ts +0 -2
- package/dist/components/query-select.js +0 -147
- package/dist/components/text-button.d.ts +0 -2
- package/dist/components/text-button.js +0 -35
- package/dist/config/app-canvas-tanstack.d.ts +0 -23
- package/dist/config/app-canvas-tanstack.js +0 -62
- package/dist/config/app-canvas.d.ts +0 -12
- package/dist/config/app-canvas.js +0 -2
- package/dist/config/ui-configurator-theme.d.ts +0 -2
- package/dist/config/ui-configurator-theme.js +0 -2
- package/dist/config/ui-configurator-vite.d.ts +0 -10
- package/dist/config/ui-configurator-vite.js +0 -174
- package/dist/config/ui-configurator.d.ts +0 -15
- package/dist/config/ui-configurator.js +0 -3
- package/dist/configuration.context-f_FSPWhQ.d.ts +0 -926
- package/dist/date-picker-DnxDmlOW.d.ts +0 -9
- package/dist/date-range-picker-DHDOSvHN.d.ts +0 -9
- package/dist/date-time-picker-UkTa0OJ8.d.ts +0 -9
- package/dist/date.transforms-DLg-eFcE.js +0 -15
- package/dist/dropdownMenu.cva-DvEmX0bs.js +0 -34
- package/dist/dynamicInputs-ByVMnx4Z.d.ts +0 -772
- package/dist/dynamicInputs-CRMWIpHA.js +0 -194
- package/dist/dynamicInputs-m_DQu5q0.js +0 -214
- package/dist/fieldAdapter-C4sDFC8f.d.ts +0 -9
- package/dist/fieldAdapter-DjYls12j.js +0 -63
- package/dist/file-input-DkbkdI7l.d.ts +0 -9
- package/dist/file-upload-CTsPhxJk.d.ts +0 -10
- package/dist/form.types-CecYaerF.d.ts +0 -13
- package/dist/form.types-ZNGbcqJS.d.ts +0 -13
- package/dist/info-iUmX3uDk.js +0 -32
- package/dist/input-CdQNCPgH.d.ts +0 -8
- package/dist/input.cva-DJA8ovm_.js +0 -208
- package/dist/link.cva-DMTHZiJG.js +0 -12
- package/dist/number-field-CUDbenNV.d.ts +0 -8
- package/dist/number-range-input-DZGrcvjL.d.ts +0 -8
- package/dist/outline.clsx-50W_vNDl.js +0 -6
- package/dist/password-input-fYN20cQO.d.ts +0 -8
- package/dist/query-autocomplete-CfuQeiYG.d.ts +0 -14
- package/dist/query-select-CuT_sE6a.d.ts +0 -15
- package/dist/queryAutocomplete.types-tl3r6iaY.d.ts +0 -27
- package/dist/radio-group-B3ccPf0p.d.ts +0 -9
- package/dist/rhf/autocomplete.d.ts +0 -3
- package/dist/rhf/autocomplete.js +0 -8
- package/dist/rhf/checkbox-group.d.ts +0 -3
- package/dist/rhf/checkbox-group.js +0 -8
- package/dist/rhf/checkbox.d.ts +0 -3
- package/dist/rhf/checkbox.js +0 -8
- package/dist/rhf/date-picker.d.ts +0 -3
- package/dist/rhf/date-picker.js +0 -9
- package/dist/rhf/date-range-picker.d.ts +0 -3
- package/dist/rhf/date-range-picker.js +0 -9
- package/dist/rhf/date-time-picker.d.ts +0 -3
- package/dist/rhf/date-time-picker.js +0 -9
- package/dist/rhf/file-input.d.ts +0 -3
- package/dist/rhf/file-input.js +0 -6
- package/dist/rhf/file-upload.d.ts +0 -3
- package/dist/rhf/file-upload.js +0 -6
- package/dist/rhf/input.d.ts +0 -3
- package/dist/rhf/input.js +0 -6
- package/dist/rhf/inputs.d.ts +0 -4
- package/dist/rhf/inputs.js +0 -2
- package/dist/rhf/number-field.d.ts +0 -3
- package/dist/rhf/number-field.js +0 -6
- package/dist/rhf/number-range-input.d.ts +0 -3
- package/dist/rhf/number-range-input.js +0 -6
- package/dist/rhf/password-input.d.ts +0 -3
- package/dist/rhf/password-input.js +0 -6
- package/dist/rhf/query-autocomplete.d.ts +0 -2
- package/dist/rhf/query-autocomplete.js +0 -8
- package/dist/rhf/query-select.d.ts +0 -2
- package/dist/rhf/query-select.js +0 -8
- package/dist/rhf/radio-group.d.ts +0 -3
- package/dist/rhf/radio-group.js +0 -8
- package/dist/rhf/rich-text-editor.d.ts +0 -3
- package/dist/rhf/rich-text-editor.js +0 -6
- package/dist/rhf/select.d.ts +0 -3
- package/dist/rhf/select.js +0 -8
- package/dist/rhf/slider.d.ts +0 -3
- package/dist/rhf/slider.js +0 -6
- package/dist/rhf/switch.d.ts +0 -3
- package/dist/rhf/switch.js +0 -8
- package/dist/rhf/text-area.d.ts +0 -3
- package/dist/rhf/text-area.js +0 -6
- package/dist/rhf/time-picker.d.ts +0 -3
- package/dist/rhf/time-picker.js +0 -9
- package/dist/rhf/toggle-group.d.ts +0 -3
- package/dist/rhf/toggle-group.js +0 -6
- package/dist/rhf-t348TCCL.js +0 -256
- package/dist/rhf.d.ts +0 -106
- package/dist/rhf.js +0 -112
- package/dist/rich-text-editor-B-Onl7T8.d.ts +0 -8
- package/dist/select-B4a52eWW.d.ts +0 -16
- package/dist/selectDesktop.cva-CHAMxhfO.js +0 -69
- package/dist/slider-dNj9jruO.d.ts +0 -8
- package/dist/style-merge.util-zLimKwt6.d.ts +0 -40
- package/dist/styles/app-canvas.css +0 -740
- package/dist/styles/color-utilities.css +0 -20
- package/dist/styles/configurator.css +0 -3280
- package/dist/switch-C--iWnY8.d.ts +0 -9
- package/dist/switch.cva-CWNzmdRc.d.ts +0 -16
- package/dist/table.cva-D5oQ-QvA.js +0 -101
- package/dist/tanstack/inputs.d.ts +0 -5
- package/dist/tanstack/inputs.js +0 -3
- package/dist/tanstack/query-autocomplete.d.ts +0 -2
- package/dist/tanstack/query-autocomplete.js +0 -2
- package/dist/tanstack/query-select.d.ts +0 -2
- package/dist/tanstack/query-select.js +0 -2
- package/dist/text-area-DQAtpOQp.d.ts +0 -8
- package/dist/theme-model-DtYPxNvH.js +0 -406
- package/dist/theme-model-T1zIdBg8.d.ts +0 -12
- package/dist/time-picker-DoGfbil6.d.ts +0 -9
- package/dist/toggle-group-C1nMDOwz.d.ts +0 -9
- package/dist/toggleGroup.cva-MbpaEBg1.js +0 -35
- package/dist/typography.cva-D1JOEYl-.d.ts +0 -36
- package/dist/typography.cva-iD15k56p.js +0 -51
- package/dist/underline-66hmELxa.js +0 -81
- package/dist/upload-CXU83BJ4.js +0 -30
- package/dist/useFormAutosave-DfuP7drj.js +0 -198
- package/dist/useQueryAutocomplete-CraXvRm_.js +0 -152
- package/dist/useTableColumnConfig-Di0_w80v.js +0 -892
- package/dist/zod.utils-DrrPDT9v.js +0 -24
- package/rulesync.jsonc +0 -11
- package/scripts/generate-rules.mjs +0 -34
- package/src/configurator/README.md +0 -77
- package/dist/{import-BE0r63d8.js → import-D_3dPATF.js} +2 -2
- /package/dist/{queries.utils-CmbhAoHU.js → tanstack-CmbhAoHU.js} +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# @povio/ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
React Aria components styled with shadcn/ui design tokens and Tailwind's default scales.
|
|
4
|
+
|
|
5
|
+
Upgrading an existing project? See the [migration guide](MIGRATION.md) for the web form, selection, upload, date/time, table, and page-builder changes.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
@@ -14,17 +16,52 @@ Use component and feature subpaths in application code. Each subpath resolves to
|
|
|
14
16
|
import { Button } from "@povio/ui/button";
|
|
15
17
|
import { BadgeButton } from "@povio/ui/badge-button";
|
|
16
18
|
import { Dialog } from "@povio/ui/dialog";
|
|
17
|
-
import { Select } from "@povio/ui/
|
|
19
|
+
import { Select } from "@povio/ui/select";
|
|
18
20
|
import { useForm } from "@povio/ui/tanstack/form";
|
|
19
21
|
import { Table } from "@povio/ui/tanstack/table";
|
|
20
22
|
import { RichTextEditor } from "@povio/ui/rich-text-editor";
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
Form
|
|
25
|
+
TanStack Form is the supported form integration. Import form inputs from `@povio/ui/tanstack/input` and other component subpaths, hooks from `@povio/ui/tanstack/form`.
|
|
26
|
+
|
|
27
|
+
Ordinary component subpaths expose standalone controls: `@povio/ui/input` accepts `value`/`onChange` or an uncontrolled `defaultValue`, and rejects `field`. The corresponding `@povio/ui/tanstack/input` requires `field={{ form, name }}` and rejects top-level values, change/blur handlers, and defaults; initialize values through `useForm({ defaultValues })`. Boolean controls use `isSelected`/`onChange` and `defaultSelected` when standalone. Date/time controls use string values and defaults; number controls use numbers or null. The broad root and TanStack barrels expose the bound versions.
|
|
28
|
+
|
|
29
|
+
Optional side effects belong inside the binding: `field={{ form, name: "name", onValueChange: value => ..., onBlur: () => ... }}`. Change callbacks receive the native control value after the raw form update; blur callbacks run after actual focus loss marks the field touched. Selection commits can validate/flush autosave without firing the blur callback. Form resets and programmatic setters do not call either callback.
|
|
30
|
+
|
|
31
|
+
`FileInput` binds native `File`/`File[]` values. `FileUpload` also binds files while managing upload progress, cancellation, and server IDs internally. Its standalone `value` accepts upload state records for existing uploads, while `onChange` emits selected native files; changes to supplied upload state are reflected in its display.
|
|
32
|
+
|
|
33
|
+
The broad `@povio/ui` and `@povio/ui/tanstack` entries remain for compatibility. They are not recommended for new application imports because they reconnect otherwise independent feature graphs.
|
|
34
|
+
|
|
35
|
+
Feature dependencies are optional peers. Install the matching packages when using date/calendar entries, `@povio/ui/tanstack/table`, TanStack Form inputs, or the rich text editor. Basic components such as Button, Typography, and Dialog do not require table, drag-and-drop, calendar, or TipTap packages.
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
import { useForm } from "@povio/ui/tanstack/form";
|
|
39
|
+
import { Input } from "@povio/ui/tanstack/input";
|
|
40
|
+
import { z } from "zod";
|
|
41
|
+
|
|
42
|
+
const schema = z.object({ name: z.string().min(1) });
|
|
43
|
+
|
|
44
|
+
function NameForm({ onSubmit }: { onSubmit: (values: z.output<typeof schema>) => void }) {
|
|
45
|
+
const form = useForm({ defaultValues: { name: "" }, zodSchema: schema });
|
|
46
|
+
return (
|
|
47
|
+
<form onSubmit={form.handleSubmit(onSubmit)}>
|
|
48
|
+
<Input
|
|
49
|
+
label="Name"
|
|
50
|
+
field={{ form, name: "name" }}
|
|
51
|
+
/>
|
|
52
|
+
<button type="submit">Save</button>
|
|
53
|
+
</form>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Migrating existing forms
|
|
24
59
|
|
|
25
|
-
The
|
|
60
|
+
The web UI package no longer maintains React Hook Form (RHF) integration. The root entry now exports the TanStack barrel. Replace imports from `@povio/ui/rhf` and its subpaths with the TanStack paths above, and replace `formControl={{ control: form.control, name }}` with `field={{ form, name }}`. Keep component names such as `Input`. Compose fields explicitly in JSX and declare TanStack table columns directly.
|
|
26
61
|
|
|
27
|
-
|
|
62
|
+
Use `zodSchema` for validation and `form.handleSubmit(onSubmit, onInvalid)` for submission; the valid callback receives transformed schema values. Replace `form.watch(...)` with `useFormValue(form, values => values.name)` and form-state subscriptions with `useFormState(form, state => state.isSubmitting)`, both from `@povio/ui/tanstack/form`. Replace values through `form.reset(values)`, which clears dirty and touched state. Autosave hooks remain available from the TanStack barrel.
|
|
63
|
+
|
|
64
|
+
Standalone controls keep their existing `value` / `onChange` or `isSelected` / `onChange` props. Consumers can build an external RHF adapter using those props. Mobile and `@povio/rn-ui` retain their own RHF integrations.
|
|
28
65
|
|
|
29
66
|
React Aria is an internal `@povio/ui` dependency and does not need to be installed separately. The build keeps `react-aria` and all its subpaths external so providers and Povio components share the installed module contexts. Component-scoped escape-hatch entries expose only the corresponding React Aria primitive and its types for custom implementations:
|
|
30
67
|
|
|
@@ -41,30 +78,114 @@ The React Aria hooks used by Povio are similarly isolated under `use-text-field`
|
|
|
41
78
|
|
|
42
79
|
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.
|
|
43
80
|
|
|
44
|
-
Use `Badge` for display content, `BadgeButton` for a compact, badge-styled action, and `ToggleButton` or `ToggleGroup` for selection. `BadgeButton` uses
|
|
81
|
+
Use `Badge` for display content, `BadgeButton` for a compact, badge-styled action, and `ToggleButton` or `ToggleGroup` for selection. `BadgeButton` uses compact shadcn badge styling; customize its recipe through `UIOverrides.badgeButton`.
|
|
82
|
+
|
|
83
|
+
## Selection and text suggestions
|
|
84
|
+
|
|
85
|
+
Use `Select` to store an item ID, or an array of IDs with `selectionMode="multiple"`. Set `isSearchable` to filter the choices. Typing a search query does not change the selected ID.
|
|
86
|
+
|
|
87
|
+
Use `Autocomplete` to store free text. Its `value` and `onChange` use strings, selecting a suggestion emits its label, and clearing emits `""`. Text need not match a suggestion. Suggestion IDs identify rows; they are never the submitted value.
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
import { Select } from "@povio/ui/select";
|
|
91
|
+
import { Autocomplete } from "@povio/ui/autocomplete";
|
|
92
|
+
|
|
93
|
+
const cities = [{ id: "city-1", label: "Ljubljana" }];
|
|
94
|
+
// Choosing Ljubljana stores "city-1".
|
|
95
|
+
<Select
|
|
96
|
+
label="City"
|
|
97
|
+
items={cities}
|
|
98
|
+
value={cityId}
|
|
99
|
+
onChange={setCityId}
|
|
100
|
+
isSearchable
|
|
101
|
+
/>;
|
|
102
|
+
// Choosing Ljubljana stores "Ljubljana"; arbitrary city names are also allowed.
|
|
103
|
+
<Autocomplete
|
|
104
|
+
label="City name"
|
|
105
|
+
items={cities}
|
|
106
|
+
value={cityName}
|
|
107
|
+
onChange={setCityName}
|
|
108
|
+
/>;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Migrate ID-valued autocomplete controls to `Select isSearchable`, including controls with multiple selections. Form bindings follow the same distinction: bind `Select` to an ID field and `Autocomplete` to a text field.
|
|
112
|
+
|
|
113
|
+
### Async choices
|
|
114
|
+
|
|
115
|
+
Supply an explicit loader through `useAsyncList` and pass its result to `Select` as `list`. The loader controls the request, response mapping, cancellation, and pagination; it returns `{ items, cursor }`, with an omitted cursor for the last page. Each control should have its own list so searches remain independent.
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
import { Select } from "@povio/ui/select";
|
|
119
|
+
import { useAsyncList } from "@povio/ui/use-async-list";
|
|
120
|
+
|
|
121
|
+
const list = useAsyncList({
|
|
122
|
+
initialSelectedKeys: cityId ? [cityId] : [],
|
|
123
|
+
load: async ({ signal, filterText, cursor, selectedKeys }) => {
|
|
124
|
+
const page = await loadCities({ signal, search: filterText, cursor, selectedKeys });
|
|
125
|
+
return { items: page.items, cursor: page.nextCursor ?? undefined };
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
<Select
|
|
130
|
+
label="City"
|
|
131
|
+
value={cityId}
|
|
132
|
+
onChange={setCityId}
|
|
133
|
+
list={list}
|
|
134
|
+
isSearchable
|
|
135
|
+
/>;
|
|
136
|
+
{
|
|
137
|
+
list.error && (
|
|
138
|
+
<div role="alert">
|
|
139
|
+
{list.error.message}
|
|
140
|
+
<button onClick={() => list.reload()}>Retry</button>
|
|
141
|
+
</div>
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The hook starts loading when mounted. The control forwards search changes and scroll pagination to the list and leaves server-ranked items unfiltered. Display `list.error` and a retry action beside the control; `list.reload()` retries the current filter. If a saved ID is outside the first page, supply its label through `initialSelection`, or resolve `selectedKeys` in your loader and merge the selected items with the page. Selecting still emits IDs, and selected labels remain visible when subsequent searches exclude those IDs. Use `field={{ form, name }}` with the bound `@povio/ui/tanstack/select` entry instead of value callbacks for a form field.
|
|
147
|
+
|
|
148
|
+
`QuerySelect`, `QueryAutocomplete`, and their query-hook adapters have been removed. Call regular API functions inside loaders; query hooks belong at component scope. Applications can retain their existing query cache, authorization checks, and response validation around those API calls, as the admin application's `useAsyncLabelList` does.
|
|
45
149
|
|
|
46
150
|
## Theme configurator
|
|
47
151
|
|
|
48
|
-
The live theme editor ships separately as `@povio/ui
|
|
152
|
+
Install it as a development dependency with `bun add -d @povio/ui-configurator`. The live theme editor ships separately as `@povio/ui-configurator`, with its stylesheet at `@povio/ui-configurator/styles`. It is independent of Storybook and is excluded from ordinary component imports. For only the `parseThemeCss` / `exportCss` helpers and token types, use the lightweight `@povio/ui-configurator/theme` entry.
|
|
49
153
|
|
|
50
154
|
To save its Tailwind CSS export directly to your app's theme during development, add the bundled Vite plugin:
|
|
51
155
|
|
|
52
156
|
```ts
|
|
53
|
-
import { uiConfigurator } from "@povio/ui
|
|
157
|
+
import { uiConfigurator } from "@povio/ui-configurator/vite";
|
|
54
158
|
|
|
55
159
|
// In your Vite plugins array:
|
|
56
160
|
uiConfigurator({ themeFile: "src/styles/theme.css" });
|
|
57
161
|
```
|
|
58
162
|
|
|
59
|
-
The path defaults to `src/styles/theme.css` relative to this app's Vite root. **Advanced → Export → Tailwind CSS → Save theme** updates that file's token declarations and lets Vite reload the CSS. Each app writes only its own configured theme. Apply remains session-only; Cancel does not undo a file save. The plugin and save action are absent from builds and preview servers. See [the configurator guide](
|
|
163
|
+
The path defaults to `src/styles/theme.css` relative to this app's Vite root. **Advanced → Export → Tailwind CSS → Save theme** updates that file's token declarations and lets Vite reload the CSS. Each app writes only its own configured theme. Apply remains session-only; Cancel does not undo a file save. The plugin and save action are absent from builds and preview servers. See [the configurator guide](../ui-configurator/README.md) for provider setup, preview behavior, and supported theme blocks.
|
|
164
|
+
|
|
165
|
+
## Choosing buttons
|
|
166
|
+
|
|
167
|
+
Choose a button by its interaction:
|
|
168
|
+
|
|
169
|
+
| Interaction | Component |
|
|
170
|
+
| -------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
171
|
+
| Action with a visible label, optionally with icons | `Button` from `@povio/ui/button` |
|
|
172
|
+
| Action displayed as an icon | `IconButton` from `@povio/ui/icon-button`, with an accessible name such as `label="Close"` |
|
|
173
|
+
| Persistent selected/unselected state | `ToggleButton` from `@povio/ui/toggle-button` |
|
|
174
|
+
| Primary action with a separate menu trigger | `SplitButton` from `@povio/ui/split-button` |
|
|
175
|
+
|
|
176
|
+
`BadgeButton` remains available for interactive badges, including its existing selection behavior. Use ordinary badge/status components for information without an action. An icon-only selected action uses `ToggleButton iconOnly` with an accessible name; `Button` itself does not accept `iconOnly`, `toggle`, or selection props.
|
|
177
|
+
|
|
178
|
+
Text appearance is `Button variant="text"`. For the former TextButton defaults, also specify `width="hug"`. The former InlineIconButton appearance is `IconButton variant="text" size="sm" width="hug" disableTooltip`; preserve any explicitly supplied size. `IconButton` provides a tooltip by default, so disable it when an enclosing tooltip already supplies one or when preserving the old inline appearance.
|
|
179
|
+
|
|
180
|
+
See the [button migration steps](./MIGRATION.md#13-choose-buttons-by-behavior) for removed exports and exact replacements.
|
|
60
181
|
|
|
61
182
|
## Button sizes
|
|
62
183
|
|
|
63
|
-
`Button` supports `sm` (with `s` as an equivalent alias), `default`, and `none` (zero padding). Omitting `size` uses `default`. The same sizes apply to `IconButton`, `
|
|
184
|
+
`Button` supports `sm` (with `s` as an equivalent alias), `default`, and `none` (zero padding). Omitting `size` uses `default`. The same sizes apply to `IconButton`, `ToggleButton`, and `SplitButton`.
|
|
64
185
|
|
|
65
|
-
When migrating, replace `xs` and `small` with `sm`; remove explicit `default`, `m`, `md`, `l`, and `lg` size props to use the default. `sm`
|
|
186
|
+
When migrating, replace `xs` and `small` with `sm`; remove explicit `default`, `m`, `md`, `l`, and `lg` size props to use the default. `sm` is 32px high; `default` is 36px high.
|
|
66
187
|
|
|
67
|
-
Use `<
|
|
188
|
+
Use `<Button variant="text" width="hug" size="none">Read more</Button>` for a text action without button padding. Variant names and `UIOverrides` keys remain available for customization.
|
|
68
189
|
|
|
69
190
|
## Input sizes
|
|
70
191
|
|
|
@@ -72,27 +193,62 @@ Inputs support `size="small"` and `default`. Omit `size` for the default. This a
|
|
|
72
193
|
|
|
73
194
|
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.
|
|
74
195
|
|
|
75
|
-
##
|
|
196
|
+
## Date and time values
|
|
76
197
|
|
|
77
|
-
|
|
198
|
+
The standalone date/time subpaths accept `value`/`onChange` or an initial `defaultValue`. Passing `null` clears a control; omitting `value` leaves it uncontrolled. TanStack versions take their values/defaults from the bound field, and `field.onValueChange` receives the same output after the form updates.
|
|
78
199
|
|
|
79
|
-
|
|
200
|
+
| Control | Input and output format | Empty output |
|
|
201
|
+
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
202
|
+
| `DatePicker` | `fullIso=true` (default): UTC-calendar date, emitted as `YYYY-MM-DDT00:00:00.000Z`. `fullIso=false`: `YYYY-MM-DD`. | `null` |
|
|
203
|
+
| `DateRangePicker` | `{ start, end }`; `fullIso=true` (default) emits start at UTC `00:00:00.000Z` and end at UTC `23:59:59.999Z`. `fullIso=false` emits `YYYY-MM-DD` endpoints. | `null`; a null endpoint is allowed with `allowPartialRange` |
|
|
204
|
+
| `DateTimePicker` | Input ISO timestamp with `Z` or an explicit offset; output UTC instant as `YYYY-MM-DDTHH:mm:ss.sssZ`. | `null` |
|
|
205
|
+
| `TimePicker` | Input ISO timestamp with `Z` or an explicit offset; output edited clock time on the date anchor as `YYYY-MM-DDTHH:mm:ss.sssZ`. | `null` |
|
|
80
206
|
|
|
81
|
-
|
|
207
|
+
`fullIso` is supported by `DatePicker` and `DateRangePicker`. Remove it from `DateTimePicker` and `TimePicker`: it previously had no effect, and their output always contains a full UTC timestamp.
|
|
82
208
|
|
|
83
|
-
|
|
209
|
+
Date-only controls use UTC calendar fields for parsing and output. In full ISO mode, the UTC date of an input timestamp determines the selected day. Month granularity normalizes to the first of the month, and year granularity to January 1. Range outputs represent inclusive whole UTC days. Partial ranges emit `null` unless `allowPartialRange` is enabled (default: false). With relative mode enabled, `onRelativeChange` emits the preset key and `onChange` emits its resolved range in the selected `fullIso` format; clearing or switching modes resets both to `null`.
|
|
84
210
|
|
|
85
|
-
|
|
211
|
+
`DateTimePicker` and `TimePicker` display and edit in `timeZone`, falling back to `UIConfig.dateInput.timeZone` (default: `"clientLocal"`, the browser's zone). Changing the zone changes displayed clock fields, while emitted timestamps remain UTC. For example, `2025-07-04T08:30:00.000Z` displays as 10:30 in `Europe/Ljubljana`; editing it to 11:30 emits `2025-07-04T09:30:00.000Z`. Display locale and `format` do not change the value format.
|
|
86
212
|
|
|
87
|
-
|
|
213
|
+
`TimePicker` uses `date` as its calendar anchor: it parses that string as a JavaScript `Date` instant, converts it into the effective zone, then replaces the clock fields. Use an explicit offset or `Z` to avoid ambiguous local timestamps. For example, `date="2025-03-04T00:00:00.000Z"` falls on March 3 in `America/Los_Angeles`; entering 10:30 emits `2025-03-03T18:30:00.000Z`. Without `date` (or with `null`), edits use today's date in the effective zone, even if the supplied `value` has another date. Once the editable input is mounted, changing `date` re-emits the current clock time on the new anchor. `isTimeOptional` on `DateTimePicker` completes a date with midnight in the effective zone when time is omitted.
|
|
88
214
|
|
|
89
|
-
```
|
|
90
|
-
|
|
215
|
+
```tsx
|
|
216
|
+
import { DatePicker } from "@povio/ui/date-picker";
|
|
217
|
+
import { DateTimePicker } from "@povio/ui/date-time-picker";
|
|
218
|
+
import { TimePicker } from "@povio/ui/time-picker";
|
|
219
|
+
|
|
220
|
+
<DatePicker
|
|
221
|
+
label="Birthday"
|
|
222
|
+
fullIso={false}
|
|
223
|
+
defaultValue="2025-03-04"
|
|
224
|
+
/>;
|
|
225
|
+
<DateTimePicker
|
|
226
|
+
label="Meeting"
|
|
227
|
+
timeZone="Europe/Ljubljana"
|
|
228
|
+
defaultValue="2025-07-04T08:30:00.000Z"
|
|
229
|
+
/>;
|
|
230
|
+
<TimePicker
|
|
231
|
+
label="Departure"
|
|
232
|
+
timeZone="America/Los_Angeles"
|
|
233
|
+
date="2025-03-04T12:00:00.000Z"
|
|
234
|
+
/>;
|
|
91
235
|
```
|
|
92
236
|
|
|
93
|
-
|
|
237
|
+
## Table selection
|
|
238
|
+
|
|
239
|
+
Table selection is internally managed by default. Supply `defaultSelectedRows` alone for an initial selection, or `onRowSelectionChange` alone to observe changes. Defaults are read only when mounted. When both props are supplied, selection is controlled: pass the current state through the legacy `defaultSelectedRows` prop and its React state setter through `onRowSelectionChange`. That callback receives TanStack selection values or updater functions. Use stable `getRowId` values for selection keys.
|
|
94
240
|
|
|
95
|
-
|
|
241
|
+
## Pagination
|
|
242
|
+
|
|
243
|
+
`usePagination` from `@povio/ui/tanstack/table` returns zero-based table state, defaulting to `{ pageIndex: 0, pageSize: 20 }`. URL page numbers remain one-based: `?page=2` becomes `pageIndex: 1`, and the first page omits the `page` parameter. Explicit default state overrides URL initialization; URL values are otherwise read when mounted. PaginatedTable accepts that state directly. Standalone Pagination uses one-based `page`, so convert with `pageIndex + 1` and `page - 1` at its boundary. See the [pagination migration steps](MIGRATION.md#11-check-pagination-boundaries) for row slicing, URL behavior, and page-size resets.
|
|
244
|
+
|
|
245
|
+
## Built-package tests
|
|
246
|
+
|
|
247
|
+
From `packages/ui`, run `bun run test:package` to build the publishable package and run its Chromium regressions. The tests resolve public imports through `dist/package.json`, covering both date pickers with empty and populated values in static and editable modes, including locale switches without remounting.
|
|
248
|
+
|
|
249
|
+
## Versioning
|
|
250
|
+
|
|
251
|
+
The current web theme uses shadcn/ui roles. Earlier releases used Atlas tokens; see [the migration guide](MIGRATION.md#15-adopt-shadcnui-tokens). Breaking changes follow semantic versioning.
|
|
96
252
|
|
|
97
253
|
## Publishing
|
|
98
254
|
|
|
@@ -146,32 +302,13 @@ We also use a custom tailwind plugin to shorten some selectors inside the @povio
|
|
|
146
302
|
@plugin "@povio/ui/tw-ui-plugin";
|
|
147
303
|
```
|
|
148
304
|
|
|
149
|
-
###
|
|
150
|
-
|
|
151
|
-
Import the color utilities in your application's Tailwind stylesheet. This import is required because `@povio/ui` components use these utilities:
|
|
305
|
+
### Theme
|
|
152
306
|
|
|
153
|
-
|
|
154
|
-
@import "tailwindcss";
|
|
155
|
-
@import "./theme.css";
|
|
156
|
-
@import "@povio/ui/color-utilities";
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
Use `bg-state-<color>/<state>`, `border-state-<color>/<state>`, `border-b-state-<color>/<state>`, or `text-state-<color>/<state>` to mix a theme color with a named state color in sRGB. The color resolves to `--color-<color>`. For each state, define `--states-<state>-color` and `--states-<state>-opacity` in the light and dark themes, then expose them as `--state-color-<state>` and `--state-opacity-<state>` in `@theme inline`. The theme export supplies these aliases, so additional state names require no change to the utilities.
|
|
160
|
-
|
|
161
|
-
```tsx
|
|
162
|
-
<button
|
|
163
|
-
type="button"
|
|
164
|
-
className="bg-interactive-primary-background border-interactive-primary-background text-interactive-primary-foreground hover:bg-state-interactive-primary-background/hover hover:border-state-interactive-primary-background/hover"
|
|
165
|
-
>
|
|
166
|
-
Hover to change state color
|
|
167
|
-
</button>
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
The utilities support standard Tailwind variants such as `hover:`, `focus-visible:`, and `dark:`. With an opaque starting color and state mix color, the result remains opaque. Using the same base color and state for background and border gives them exactly the same result. The state mix color can be white, black, or another color supplied by the theme.
|
|
307
|
+
Components use the shadcn/ui colour roles (`bg-primary`, `text-muted-foreground`, `border-input`, `ring-ring`, …) plus `success`, `warning`, `info` and `destructive-foreground`, and Tailwind's default spacing, radius, text and shadow scales. Provide them by pasting a shadcn theme (`:root` / `.dark` CSS variables and the `@theme inline` mapping) into your stylesheet — see `apps/storybook/src/styles/theme.css`. States use plain Tailwind (`hover:bg-primary/90`, `hover:bg-accent`, `disabled:opacity-50`), so no extra utilities are needed.
|
|
171
308
|
|
|
172
309
|
### Icon slots
|
|
173
310
|
|
|
174
|
-
`IconSlot` reserves
|
|
311
|
+
`IconSlot` reserves a `size-4` box (16px, as in shadcn/ui) and centers the SVG in it at full size (`--icons-scale`, default 1). Buttons and input icon props use it automatically, whether you pass a component reference or an element.
|
|
175
312
|
|
|
176
313
|
```tsx
|
|
177
314
|
import { Plus } from "lucide-react";
|
|
@@ -184,11 +321,11 @@ import { IconSlot } from "@povio/ui/icon-slot";
|
|
|
184
321
|
/>;
|
|
185
322
|
```
|
|
186
323
|
|
|
187
|
-
`IconSlot` is also exported from `@povio/ui`, `@povio/ui/
|
|
324
|
+
`IconSlot` is also exported from `@povio/ui`, `@povio/ui/tanstack`, and `@povio/ui/icons`. `className` styles the outer slot; `iconClassName` styles the SVG. The slot controls SVG dimensions, including supplied SVGs with their own size classes. Use the inherited CSS variable `--icons-scale` to change the default ratio throughout a theme, or `scale` to override one slot. The default 16px slot at `0.8` produces a 12.8px SVG. Stroke width continues to follow the icon's own configuration.
|
|
188
325
|
|
|
189
326
|
Override the shared recipe through `UIOverrides` at `iconSlot.cva`. Component-specific icon recipes, such as `button.iconSize`, now style the outer slot. An explicitly configured slot passed to a button or input keeps its configuration without nesting another slot.
|
|
190
327
|
|
|
191
|
-
Storybook's **UI / Components / Icons / IconSlot** page includes a playground, raw-versus-slotted comparisons, and button/input examples. Adjust
|
|
328
|
+
Storybook's **UI / Components / Icons / IconSlot** page includes a playground, raw-versus-slotted comparisons, and button/input examples. Adjust the slot size and `scale` in Controls and enable slot outlines to inspect the geometry.
|
|
192
329
|
|
|
193
330
|
### Z-Index
|
|
194
331
|
|
|
@@ -271,13 +408,13 @@ We're using a helper class for flex, so make sure to add this into your base css
|
|
|
271
408
|
|
|
272
409
|
## App canvas page (`/_canvas`)
|
|
273
410
|
|
|
274
|
-
|
|
411
|
+
The separate `@povio/ui-configurator` package includes a ready-made page for inspecting all your TanStack Router pages. Install it as a development dependency alongside a compatible `@povio/ui` release, and retain your application's existing `@tanstack/react-router` dependency (an optional peer for this integration).
|
|
275
412
|
|
|
276
413
|
For file-based routing, create `src/routes/[_]canvas.tsx` (or use your configured routes directory). The brackets escape TanStack's pathless-layout underscore convention:
|
|
277
414
|
|
|
278
415
|
```tsx
|
|
279
|
-
import "@povio/ui/app-canvas/styles";
|
|
280
|
-
import { appCanvasRouteOptions } from "@povio/ui/app-canvas/tanstack";
|
|
416
|
+
import "@povio/ui-configurator/app-canvas/styles";
|
|
417
|
+
import { appCanvasRouteOptions } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
281
418
|
import { createFileRoute } from "@tanstack/react-router";
|
|
282
419
|
|
|
283
420
|
export const Route = createFileRoute("/_canvas")(appCanvasRouteOptions({ enabled: import.meta.env.DEV }));
|
|
@@ -286,8 +423,8 @@ export const Route = createFileRoute("/_canvas")(appCanvasRouteOptions({ enabled
|
|
|
286
423
|
Mount `AppCanvasBridge` once beneath the existing router and `UIConfigurationProvider`, alongside the root `Outlet`. The provider must be shared by the canvas route and the normal application pages; keep its existing theme defaults and persistence. If the app does not yet have this provider, add one using `parseThemeCss` on its theme source.
|
|
287
424
|
|
|
288
425
|
```tsx
|
|
289
|
-
import { isAppCanvasFrame } from "@povio/ui/app-canvas";
|
|
290
|
-
import { AppCanvasBridge, useIsAppCanvasPage } from "@povio/ui/app-canvas/tanstack";
|
|
426
|
+
import { isAppCanvasFrame } from "@povio/ui-configurator/app-canvas";
|
|
427
|
+
import { AppCanvasBridge, useIsAppCanvasPage } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
291
428
|
|
|
292
429
|
// Inside the app's root component, under its UIConfigurationProvider:
|
|
293
430
|
const canvasPage = useIsAppCanvasPage();
|
|
@@ -305,8 +442,8 @@ return (
|
|
|
305
442
|
For code-based routing, add the package route to the existing root's children **before** creating the router:
|
|
306
443
|
|
|
307
444
|
```tsx
|
|
308
|
-
import "@povio/ui/app-canvas/styles";
|
|
309
|
-
import { createAppCanvasRoute } from "@povio/ui/app-canvas/tanstack";
|
|
445
|
+
import "@povio/ui-configurator/app-canvas/styles";
|
|
446
|
+
import { createAppCanvasRoute } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
310
447
|
const canvasRoute = createAppCanvasRoute({
|
|
311
448
|
getParentRoute: () => rootRoute,
|
|
312
449
|
enabled: import.meta.env.DEV,
|
|
@@ -315,4 +452,18 @@ const canvasRoute = createAppCanvasRoute({
|
|
|
315
452
|
const routeTree = rootRoute.addChildren([homeRoute, projectsRoute, canvasRoute]);
|
|
316
453
|
```
|
|
317
454
|
|
|
318
|
-
Then open `/_canvas` directly. `enabled` accepts a boolean or a synchronous predicate; false produces a not-found route. Apply your existing access policy if enabling it outside development. Normal page authentication and loaders still run inside the frames. The canvas excludes its own pathname, and dynamic pages without example parameters remain explicitly unresolved. The lower-level `AppCanvasPage` and `AppCanvas` components remain available from `@povio/ui/app-canvas` for custom integrations.
|
|
455
|
+
Then open `/_canvas` directly. `enabled` accepts a boolean or a synchronous predicate; false produces a not-found route. Apply your existing access policy if enabling it outside development. Normal page authentication and loaders still run inside the frames. The canvas excludes its own pathname, and dynamic pages without example parameters remain explicitly unresolved. The lower-level `AppCanvasPage` and `AppCanvas` components remain available from `@povio/ui-configurator/app-canvas` for custom integrations.
|
|
456
|
+
|
|
457
|
+
### Canvas workspaces
|
|
458
|
+
|
|
459
|
+
The canvas supports named workspaces, enabled pages per workspace, and independent positions per breakpoint. The selected page's HTML layers expand directly beneath its row in the sidebar.
|
|
460
|
+
|
|
461
|
+
The existing `uiConfigurator` Vite plugin also saves canvas settings to `povio.canvas.json` in the app root. Configure an alternate file with `uiConfigurator({ canvasFile: "povio.canvas.json" })`, or disable this with `canvasFile: false`. No Git commands run: review and commit this file through the normal repository workflow. Conflicting writes from different sessions are rejected instead of silently overwriting settings. Without this development-server connection, settings stay in browser storage; export/import remains available.
|
|
462
|
+
|
|
463
|
+
### Fontsource font families
|
|
464
|
+
|
|
465
|
+
In Configure UI, open Typography → Font families → Browse Fontsource. Search or filter the catalog, select a family to preview it, then choose Heading, Body, or Add to available fonts and click **Add font to app**. In development, this installs the verified Fontsource package with the application's existing package manager, updates its package.json and lockfile, and adds CSS imports. Variable families with a weight axis are preferred; static families load their supported weights and styles. Existing compatible packages and imports are reused.
|
|
466
|
+
|
|
467
|
+
The selected role changes the live preview. **Save changes** writes it to the app's theme CSS. Adding a font makes its assets available; role assignments are saved explicitly with the theme. Package installation scripts are disabled, and no Git commit or push is performed. Catalog browsing and temporary CDN previews also work without the development installer.
|
|
468
|
+
|
|
469
|
+
The Vite plugin uses `src/styles/globals.css` by default. For another CSS entrypoint, configure `uiConfigurator({ fontCssFile: "src/app.css" })`; it must exist inside the application's Vite root. Set `fontCssFile: false` to disable font installation. Restart Vite after adding or changing the plugin configuration.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as ChevronDown } from "./chevron-down-B4Pr8bD3.js";
|
|
2
2
|
import { t as clsx } from "./clsx-CnD0nOiA.js";
|
|
3
3
|
import { t as UIOverrides } from "./uiOverrides.context-BTCH9y5a.js";
|
|
4
|
-
import { t as IconSlot } from "./IconSlot-
|
|
5
|
-
import { n as $7230ffa83bc0c2cf$export$29f1550f4b0d4415, o as $7230ffa83bc0c2cf$export$c62b8e45d58ddad9, r as $7230ffa83bc0c2cf$export$4d86445c2cf5e3, s as $7230ffa83bc0c2cf$export$df3a06d6289f983e, t as $7230ffa83bc0c2cf$export$2881499e37b75b9a } from "./utils-
|
|
6
|
-
import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-
|
|
7
|
-
import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-
|
|
8
|
-
import { t as Typography } from "./Typography-
|
|
9
|
-
import { a as accordionHeadingTitleDefinition, c as accordionPanelContentDefinition, i as accordionHeadingSubtitleDefinition, l as accordionPanelDefinition, n as accordionDefinition, o as accordionIconDefinition, r as accordionHeadingDefinition, s as accordionItemDefinition, t as accordionChevronDefinition, u as accordionTriggerDefinition } from "./accordion.cva-
|
|
4
|
+
import { t as IconSlot } from "./IconSlot-Cuvpj1gd.js";
|
|
5
|
+
import { n as $7230ffa83bc0c2cf$export$29f1550f4b0d4415, o as $7230ffa83bc0c2cf$export$c62b8e45d58ddad9, r as $7230ffa83bc0c2cf$export$4d86445c2cf5e3, s as $7230ffa83bc0c2cf$export$df3a06d6289f983e, t as $7230ffa83bc0c2cf$export$2881499e37b75b9a } from "./utils-BkLF-JA3.js";
|
|
6
|
+
import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-C1YB5dOw.js";
|
|
7
|
+
import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-D4XFYv__.js";
|
|
8
|
+
import { t as Typography } from "./Typography-Ba5l4rmj.js";
|
|
9
|
+
import { a as accordionHeadingTitleDefinition, c as accordionPanelContentDefinition, i as accordionHeadingSubtitleDefinition, l as accordionPanelDefinition, n as accordionDefinition, o as accordionIconDefinition, r as accordionHeadingDefinition, s as accordionItemDefinition, t as accordionChevronDefinition, u as accordionTriggerDefinition } from "./accordion.cva-C-gUiXk5.js";
|
|
10
10
|
import $ahdqC$react, { createContext, forwardRef, useContext } from "react";
|
|
11
11
|
import { c } from "react/compiler-runtime";
|
|
12
12
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -18,7 +18,7 @@ import { useId as useId$1 } from "react-aria/useId";
|
|
|
18
18
|
import { useDisclosure } from "react-aria/useDisclosure";
|
|
19
19
|
import { useDisclosureGroupState } from "react-stately/useDisclosureGroupState";
|
|
20
20
|
import { useDisclosureState } from "react-stately/useDisclosureState";
|
|
21
|
-
//#region ../../node_modules/.bun/react-aria-components@1.
|
|
21
|
+
//#region ../../node_modules/.bun/react-aria-components@1.22.1+67f6792bdf102c28/node_modules/react-aria-components/dist/private/Disclosure.mjs
|
|
22
22
|
const $a3e16eab0ea4036c$export$1d40e3e0cc4d5de = /*#__PURE__*/ createContext(null);
|
|
23
23
|
const $a3e16eab0ea4036c$export$944aceb4f8c89f10 = /*#__PURE__*/ forwardRef(function DisclosureGroup(props, ref) {
|
|
24
24
|
let state = useDisclosureGroupState(props);
|
|
@@ -155,19 +155,19 @@ const AccordionItem = (t0) => {
|
|
|
155
155
|
children: [/* @__PURE__ */ jsx("div", {
|
|
156
156
|
className: headingCva({}),
|
|
157
157
|
children: /* @__PURE__ */ jsxs("div", {
|
|
158
|
-
className: "flex flex-1 items-center gap-
|
|
158
|
+
className: "flex flex-1 items-center gap-2",
|
|
159
159
|
children: [
|
|
160
160
|
Icon && /* @__PURE__ */ jsx(IconSlot, {
|
|
161
161
|
icon: Icon,
|
|
162
162
|
className: iconCva({})
|
|
163
163
|
}),
|
|
164
164
|
/* @__PURE__ */ jsx(Typography, {
|
|
165
|
-
size: "
|
|
165
|
+
size: "body",
|
|
166
166
|
className: headingTitleCva({}),
|
|
167
167
|
children: heading
|
|
168
168
|
}),
|
|
169
169
|
subheading && /* @__PURE__ */ jsx(Typography, {
|
|
170
|
-
size: "
|
|
170
|
+
size: "body",
|
|
171
171
|
className: headingSubtitleCva({}),
|
|
172
172
|
children: subheading
|
|
173
173
|
})
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { n as StyleMergeUtils, t as UIOverrides } from "./uiOverrides.context-Dmev7iRS.js";
|
|
2
|
+
import "./style-definitions-DzsmGccZ.js";
|
|
3
3
|
import { FC, ReactNode, SVGProps } from "react";
|
|
4
4
|
//#region src/components/status/Alert/alert.cva.d.ts
|
|
5
5
|
declare const alertDefinition: {
|
|
6
6
|
base: string[];
|
|
7
7
|
config: StyleMergeUtils.Config<{
|
|
8
8
|
readonly variant: {
|
|
9
|
-
readonly outlined: "
|
|
9
|
+
readonly outlined: "";
|
|
10
10
|
readonly contained: "";
|
|
11
11
|
};
|
|
12
12
|
readonly color: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { n as ButtonVariantProps } from "./button.cva-
|
|
2
|
-
import { n as DialogProps } from "./Dialog-
|
|
3
|
-
import { r as TypographyPropsCva } from "./Typography-
|
|
1
|
+
import { n as ButtonVariantProps } from "./button.cva-YpNNY6C-.js";
|
|
2
|
+
import { n as DialogProps } from "./Dialog-2XpWsphI.js";
|
|
3
|
+
import { r as TypographyPropsCva } from "./Typography-BD-MSuTp.js";
|
|
4
4
|
//#region src/components/overlays/AlertDialog/AlertDialog.d.ts
|
|
5
5
|
interface AlertDialogAction {
|
|
6
6
|
label: string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { i as InputProps$1 } from "./Input-Bu4G9gcn.js";
|
|
2
|
+
import { InputProps, Key } from "react-aria-components";
|
|
3
|
+
//#region src/components/inputs/Selection/Autocomplete/Autocomplete.d.ts
|
|
4
|
+
interface AutocompleteItem {
|
|
5
|
+
id: Key;
|
|
6
|
+
label: string;
|
|
7
|
+
isDisabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Text entry with optional suggestions. Values are text, never suggestion IDs. */
|
|
10
|
+
interface AutocompleteProps extends Omit<InputProps$1, "type" | "renderStaticInput" | "autoFocusOnMount" | "spellCheck" | "validationState"> {
|
|
11
|
+
field?: never;
|
|
12
|
+
items: AutocompleteItem[];
|
|
13
|
+
spellCheck?: InputProps["spellCheck"];
|
|
14
|
+
/** Disable local filtering when suggestions are already filtered by a server. */
|
|
15
|
+
isClientSearchDisabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
declare function AutocompleteInner({ items, ref, value, defaultValue, onChange, onBlur, isClientSearchDisabled, inputClassName, label, error: errorProp, errorMessage, helperText, className, tooltipText, isRequired: isRequiredProp, required, rightContent, headerClassName, errorClassName, isHeaderHidden, isDisabled: isDisabledProp, disabled, isReadOnly, isInvalid, validationBehavior, validate, isDirty, as: asProp, layout: layoutProp, hideLabel: hideLabelProp, variant: variantProp, size: sizeProp, isClearable: isClearableProp, isClearableIfDisabled, unit, isLoading, action, leadingIcon, trailingIcon, placeholder, ...rest }: AutocompleteProps): import("react").JSX.Element;
|
|
18
|
+
declare const AutocompleteComponent: (props: AutocompleteProps & {
|
|
19
|
+
field?: never;
|
|
20
|
+
}) => import("react").JSX.Element;
|
|
21
|
+
declare const Autocomplete: import("react").MemoExoticComponent<typeof AutocompleteComponent>;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { AutocompleteProps as a, AutocompleteItem as i, AutocompleteComponent as n, AutocompleteInner as r, Autocomplete as t };
|