@povio/ui 5.0.0-rc.8 → 6.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MIGRATION.md +645 -0
- package/README.md +247 -21
- package/dist/{Accordion-BzwO4_ml.js → Accordion-DQRdeDs1.js} +5 -5
- package/dist/{Alert-DfiJbKH0.d.ts → Alert-Cee_nKWj.d.ts} +3 -3
- package/dist/{AlertDialog-OWTbR4km.d.ts → AlertDialog-uNDUIyng.d.ts} +3 -3
- package/dist/Autocomplete-CWU9Ev3J.js +142 -0
- package/dist/Autocomplete-D_4gEL7D.d.ts +23 -0
- package/dist/Autocomplete.bound-CqhZtdd8.d.ts +9 -0
- package/dist/Autocomplete.bound-D0pgmsHB.js +28 -0
- package/dist/{Badge-CBNpj823.d.ts → Badge-C4HI9XX4.d.ts} +2 -2
- package/dist/{BadgeButton-Ccgt3oGO.d.ts → BadgeButton-h3MeQYcp.d.ts} +2 -2
- package/dist/{BottomSheet-DbQuzfAB.d.ts → BottomSheet-BQXSdxoX.d.ts} +1 -1
- package/dist/{BottomSheet-BXLE3161.js → BottomSheet-z5brMtDt.js} +6 -80
- package/dist/{BottomSheet.lazy-D9LCEo7s.d.ts → BottomSheet.lazy-BzvLg8Ea.d.ts} +1 -1
- package/dist/{Breadcrumbs-FF8hMfXd.js → Breadcrumbs-AbUBqBTq.js} +9 -9
- package/dist/{Breadcrumbs-CUV6CU8Q.d.ts → Breadcrumbs-B9O0_VSN.d.ts} +1 -1
- package/dist/{Button-D6KlWSFL.js → Button-C1YB5dOw.js} +3 -3
- package/dist/Button-DER_6cxv.js +16 -0
- package/dist/Button-f7FPTaiN.d.ts +13 -0
- package/dist/ButtonBase-CYTFS-xK.d.ts +32 -0
- package/dist/{Button-BPTvffuk.js → ButtonBase-CeFSNcVs.js} +9 -9
- package/dist/{Calendar-BxtOuqIM.js → Calendar-DRQ536wk.js} +20 -16
- package/dist/{Checkbox-DYxXYfKL.js → Checkbox-BI3DQPLa.js} +19 -37
- package/dist/{Checkbox-DVTWaMKa.d.ts → Checkbox-CCvC7OVT.d.ts} +9 -8
- package/dist/Checkbox.bound-CMZnF2_d.js +33 -0
- package/dist/Checkbox.bound-DBt33Inx.d.ts +9 -0
- package/dist/{CheckboxCheckmark-D_uc9pon.js → CheckboxCheckmark-BzT6MwH5.js} +9 -6
- package/dist/CheckboxGroup-DQw4hsFa.js +139 -0
- package/dist/CheckboxGroup-MJ6crCZk.d.ts +30 -0
- package/dist/CheckboxGroup.bound-CTCdezUN.js +32 -0
- package/dist/CheckboxGroup.bound-j2Sc8QtU.d.ts +9 -0
- package/dist/ComboBox-DFlz6HJ8.js +212 -0
- package/dist/{DatePicker-wulRNGyL.js → DatePicker-CSm9c37c.js} +38 -48
- package/dist/{DatePicker-8xSs_jNd.d.ts → DatePicker-umTISfvn.d.ts} +21 -10
- package/dist/DatePicker.bound-KLyoWNcX.d.ts +9 -0
- package/dist/DatePicker.bound-Yqckg7Mk.js +36 -0
- package/dist/{DatePickerInput-BB_vPlKu.js → DatePickerInput-Cs9RwZfy.js} +41 -29
- package/dist/{DatePickerInput-D81ZJ3fT.d.ts → DatePickerInput-DwHQvLzi.d.ts} +3 -3
- package/dist/{DateRangePicker-Bfq-yDm7.d.ts → DateRangePicker-hV_U1IK0.d.ts} +30 -10
- package/dist/{DateRangePicker-B0tMVREG.js → DateRangePicker-s_4n-F_P.js} +75 -64
- package/dist/DateRangePicker.bound-C1klxYW0.js +35 -0
- package/dist/DateRangePicker.bound-D-GPENNe.d.ts +9 -0
- package/dist/{DateTimePicker-WGMr0bEH.js → DateTimePicker-411pU7VF.js} +38 -42
- package/dist/{DateTimePicker-D4lHyf6P.d.ts → DateTimePicker-wgV0SUeZ.d.ts} +21 -11
- package/dist/DateTimePicker.bound-BDyUzidV.js +32 -0
- package/dist/DateTimePicker.bound-cF2X_ncj.d.ts +9 -0
- package/dist/{Dialog-9manOgMA.js → Dialog-DSl1Fkqi.js} +10 -7
- package/dist/Dialog-V-2cgGk1.d.ts +21 -0
- package/dist/{Dialog-CKLkS00H.js → Dialog-lFYX-7Ax.js} +22 -27
- package/dist/DropdownMenu-Bl_C5W_E.d.ts +25 -0
- package/dist/{DropdownMenu-5jmtgLXd.js → DropdownMenu-DH7E2aXb.js} +6 -6
- package/dist/{DropdownMenuDesktop-Cl9gZVq0.js → DropdownMenuDesktop-nMoCa6N5.js} +3 -3
- package/dist/{FileInput-DP105Iy9.js → FileInput-CqRrQRM-.js} +25 -39
- package/dist/{FileInput-C4CE5kuP.d.ts → FileInput-Q72yXorH.d.ts} +24 -20
- package/dist/FileInput.bound-BZ7-g-dq.js +30 -0
- package/dist/FileInput.bound-CG2G5E2K.d.ts +8 -0
- package/dist/{FileTrigger-Cthk5_Wp.js → FileTrigger-DBX1Io6E.js} +36 -7
- package/dist/FileUpload-B4ibHWQn.d.ts +11 -0
- package/dist/{FileUpload-CgNDIvzg.js → FileUpload-CG60c6wM.js} +251 -140
- package/dist/FileUpload.bound-C-Zy1n5Y.d.ts +16 -0
- package/dist/FileUpload.bound-DQ6uuH2W.js +30 -0
- package/dist/{FileUploadContainer-042ztsaL.d.ts → FileUploadContainer-CtUhDntB.d.ts} +1 -1
- package/dist/{Form-DlQcyN1f.js → Form-CqF1SaVw.js} +2 -2
- package/dist/{FormField-Byiehm9y.d.ts → FormField-BIRMlgu4.d.ts} +4 -2
- package/dist/{FormField-AY25LzbW.js → FormField-D7KKJ6kG.js} +12 -10
- package/dist/{FormFieldError-BVAO5p7H.js → FormFieldError-Bqjg9cMb.js} +1 -1
- package/dist/FormFieldHeaderTooltip-k8Snf_oM.js +47 -0
- package/dist/{Heading-nI1_VOaE.js → Heading-D4XFYv__.js} +2 -2
- package/dist/IconButton-BM2DUNtN.d.ts +25 -0
- package/dist/{InlineTooltipWrapper-BpApaGXV.js → InlineTooltipWrapper-DBuQX2yo.js} +1 -1
- package/dist/{Input-BsbLZDtC.js → Input-BG0Xjw5X.js} +2 -2
- package/dist/{Input-DOanwj3l.d.ts → Input-BX3sZBEp.d.ts} +13 -9
- package/dist/Input-CG4Irgae.js +229 -0
- package/dist/Input.bound-BE-espm0.d.ts +9 -0
- package/dist/Input.bound-jZx8gJro.js +31 -0
- package/dist/{InputContent-CXuP1ghQ.d.ts → InputContent-DDFr0kml.d.ts} +4 -4
- package/dist/{useFieldAccessibility-CcBTgGfm.js → InputContent-KhD4_YvO.js} +12 -25
- package/dist/{Label-B2-B-uFY.js → Label-BGvF9vWx.js} +2 -2
- package/dist/{Link-Ow9H7kNv.d.ts → Link-Bw2m9W4B.d.ts} +3 -3
- package/dist/{Link-FupWOW1f.js → Link-Chux-Clm.js} +2 -2
- package/dist/{ListBox-CL8Ar4Q_.js → ListBox-CoUk0kkt.js} +10 -11
- package/dist/{MenuItem-DHyqOqln.d.ts → MenuItem-DPZzOqp2.d.ts} +1 -1
- package/dist/{Modal-w60dVQcb.js → Modal-B4p1zFqi.js} +58 -20
- package/dist/NumberField-CxwTlqud.js +225 -0
- package/dist/{NumberField-Cb9Gf6QJ.d.ts → NumberField-qjvHhCfN.d.ts} +13 -9
- package/dist/NumberField.bound-DXPGF5YK.d.ts +9 -0
- package/dist/NumberField.bound-zySl-v_q.js +32 -0
- package/dist/{NumberFormatter-CLDS_LRZ.js → NumberFormatter-DYarfm5F.js} +2 -36
- package/dist/{NumberRangeInput-B_sMIpP1.js → NumberRangeInput-BrW03wC6.js} +15 -43
- package/dist/{NumberRangeInput-BfbJQqzn.d.ts → NumberRangeInput-CS4Kn427.d.ts} +13 -8
- package/dist/NumberRangeInput.bound-C8I7m1cW.d.ts +9 -0
- package/dist/NumberRangeInput.bound-CKywKEKI.js +32 -0
- package/dist/{OverlayArrow-D8z7cCsw.js → OverlayArrow-DF0jMwul.js} +2 -2
- package/dist/{Pagination-CwQu5Py8.d.ts → Pagination-DkpAg2x6.d.ts} +1 -1
- package/dist/{PaginationList-DMRUGtf8.d.ts → PaginationList-DNmZRcS6.d.ts} +1 -1
- package/dist/{PaginationList-DptMNpNs.js → PaginationList-PjOxNQwB.js} +93 -94
- package/dist/PasswordInput-BHPFkVbM.d.ts +11 -0
- package/dist/PasswordInput.bound-CrXKvfil.js +23 -0
- package/dist/{PasswordInput-CLwFUgl0.d.ts → PasswordInput.bound-DC57m4NT.d.ts} +5 -6
- package/dist/{Popover-BTHPteIh.d.ts → Popover-pjd0Hu61.d.ts} +2 -2
- package/dist/{Progress-CjWOR38H.d.ts → Progress-1WGRZE8l.d.ts} +3 -3
- package/dist/{Progress-Du30L4_s.js → Progress-De76pCfX.js} +1 -1
- package/dist/{RadioGroup-CUGNSJql.js → RadioGroup-BPSvcre6.js} +12 -37
- package/dist/RadioGroup-DEwQ6B1F.d.ts +26 -0
- package/dist/RadioGroup.bound-CN4K9dV2.js +32 -0
- package/dist/RadioGroup.bound-Dj6CEG6M.d.ts +9 -0
- package/dist/{RichTextEditor-VDOpj7sk.js → RichTextEditor-BYIQW8QA.js} +147 -78
- package/dist/RichTextEditor-hJtuB7Y6.d.ts +28 -0
- package/dist/{staticSelect.utils-CzlnLPPd.js → Select-Br_3eecr.js} +194 -235
- package/dist/{SelectBase-Omiq2D3M.d.ts → Select-DHYddedn.d.ts} +32 -11
- package/dist/Select.bound-CJ-tCsmX.d.ts +17 -0
- package/dist/Select.bound-CgLKMzLn.js +34 -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-EYlGCLWe.d.ts → Slider-CcoNTFVN.d.ts} +9 -8
- package/dist/{Slider-Clc1szFY.js → Slider-CqB2TPTR.js} +12 -35
- package/dist/Slider.bound-8B5qzQ-8.d.ts +9 -0
- package/dist/Slider.bound-Bp7Zrs9_.js +31 -0
- package/dist/{Spinner-DbXeDOa2.d.ts → Spinner-B-crRcdG.d.ts} +2 -2
- package/dist/{SplitButton-D9ngY1rJ.d.ts → SplitButton-BzhbtpFA.d.ts} +3 -3
- package/dist/{Stepper-Cp5vbL5g.js → Stepper-CMw6QnCu.js} +2 -2
- package/dist/{Stepper-TATlHZhQ.d.ts → Stepper-LORgYAJr.d.ts} +8 -8
- package/dist/Switch-CSitpm4o.d.ts +24 -0
- package/dist/{Switch-CimmMqEk.js → Switch-R0kAicgM.js} +7 -32
- package/dist/Switch.bound-DVjqsum1.d.ts +9 -0
- package/dist/Switch.bound-Dk-BmxJd.js +33 -0
- package/dist/{Tag-AHfV_XSf.d.ts → Tag-CoqCTZRm.d.ts} +6 -6
- package/dist/{Text-D2MPZ3sY.js → Text-D72yc4S6.js} +1 -1
- package/dist/{TextArea-B3teIhsJ.js → TextArea-DCnqXuHC.js} +29 -30
- package/dist/{TextArea-l_keyLK7.d.ts → TextArea-e8sQm205.d.ts} +11 -9
- package/dist/TextArea.bound-BJZ9m_FE.js +28 -0
- package/dist/TextArea.bound-DEZuRYm_.d.ts +9 -0
- package/dist/{TimePicker-CU_yL2sY.js → TimePicker-BwF-Crbg.js} +54 -46
- package/dist/TimePicker-Zi7B6VTr.d.ts +45 -0
- package/dist/TimePicker.bound-B-BVLNbk.js +32 -0
- package/dist/TimePicker.bound-Bxtb6uJL.d.ts +9 -0
- package/dist/{Toast-ruXqONDA.d.ts → Toast-Dl6KMa58.d.ts} +1 -1
- package/dist/{ToastContainer-qgpzMFD4.js → ToastContainer-BDvta6st.js} +3 -3
- package/dist/ToggleButton-Cce9bnBw.d.ts +17 -0
- package/dist/{ToggleButton-BW1ensey.js → ToggleButton-DUQ8nwKY.js} +5 -5
- package/dist/{toggleGroup.types-Bp43zbSQ.d.ts → ToggleGroup-BJ8cqXaO.d.ts} +14 -13
- package/dist/{ToggleGroup-BULVwErp.js → ToggleGroup-s5sDSB6l.js} +132 -158
- package/dist/ToggleGroup.bound-Cv09n91n.d.ts +9 -0
- package/dist/ToggleGroup.bound-DEc7rdNF.js +67 -0
- package/dist/Tooltip-BiS7isYB.d.ts +16 -0
- package/dist/{Tooltip-CpG1nz7Y.js → Tooltip-CMigoyri.js} +42 -7
- package/dist/{TooltipWrapper-3jyN0Wss.js → TooltipWrapper-D7HUZLsP.js} +6 -6
- package/dist/{Typography-XljT9s02.d.ts → Typography-D2FfZr7a.d.ts} +1 -1
- package/dist/{accordion.cva-CL1bVscW.js → accordion.cva-CeBWV9EO.js} +6 -6
- package/dist/{badgeButton.cva-B2bgCQP6.d.ts → badgeButton.cva-B8EQLwPv.d.ts} +3 -3
- package/dist/{badgeButton.cva-CvN4CTx5.js → badgeButton.cva-BPyVejxO.js} +66 -66
- package/dist/{breadcrumbs.cva-7zzdDhVR.js → breadcrumbs.cva-DPwJJK_D.js} +4 -4
- package/dist/{button.cva-C7kEhgoA.d.ts → button.cva-CBckM91c.d.ts} +3 -3
- package/dist/{button.cva-rv5Uq4aW.js → button.cva-vO0fPUTn.js} +25 -25
- package/dist/{buttonContent.cva-DPIlROA9.d.ts → buttonContent.cva-DG-4lRz4.d.ts} +2 -2
- package/dist/{checkbox.cva-t1Ox50hy.d.ts → checkbox.cva-CJy87xUo.d.ts} +5 -5
- package/dist/{checkbox.cva-IfOByVLA.js → checkbox.cva-D-D9Qgaf.js} +3 -3
- package/dist/components/accordion.js +1 -1
- package/dist/components/alert-dialog.d.ts +1 -1
- package/dist/components/alert-dialog.js +93 -86
- package/dist/components/alert.d.ts +1 -1
- package/dist/components/alert.js +1 -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 +3 -3
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/badge.js +4 -4
- package/dist/components/bottom-sheet-header.d.ts +16 -0
- package/dist/components/bottom-sheet-header.js +79 -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 +3 -3
- 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/input-frame.d.ts +93 -0
- package/dist/{useStaticInputHandoff-kkQrc6DA.js → components/input-frame.js} +42 -91
- 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 +10 -6
- 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 +38 -30
- 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/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 +4 -4
- 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/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-BOeEVczb.d.ts → confirmation.context-B2z9A1v3.d.ts} +1 -1
- package/dist/{confirmation.context-BuzgCfYl.js → confirmation.context-BSn1s-ip.js} +1 -1
- package/dist/{datePickerValue.utils-CIFHjKwv.js → datePickerValue.utils-OAQBDk1R.js} +18 -10
- package/dist/{dialog.cva-COhDZaVl.js → dialog.cva-sioU_5R7.js} +1 -1
- package/dist/{dist-CAdwxJbe.js → dist-CAFUM34b.js} +53 -1
- package/dist/{dom.utils-D1AopHx9.js → dom.utils-BbfrA6RP.js} +1 -1
- package/dist/{dropdownMenu.cva-DvEmX0bs.js → dropdownMenu.cva-Bi3a21lO.js} +4 -4
- package/dist/{PasswordInput-DYwUZ4-k.js → eye-BA4nRlMX.js} +1 -22
- package/dist/{fileUpload.types-n5FxK_F-.d.ts → fileUpload.types-BT8P1o7a.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-CsXaQRHX.js → formFieldError.cva-CTl0VeyG.js} +1 -1
- package/dist/{formFieldHelper.cva-B8F9LmsE.js → formFieldHelper.cva-CxAmrG2H.js} +9 -8
- 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-BA9NahZH.d.ts} +2 -1
- package/dist/icons.d.ts +1 -1
- package/dist/index.d.ts +95 -91
- package/dist/index.js +79 -82
- package/dist/{input.cva-BsHgYa-L.d.ts → input.cva-L7jKDv6q.d.ts} +3 -3
- package/dist/{input.cva-DJA8ovm_.js → input.cva-w7ZEVQAM.js} +60 -41
- 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-C4fE_aMo.d.ts} +1 -1
- package/dist/{link.cva-DMTHZiJG.js → link.cva-D3XRgcAv.js} +1 -1
- package/dist/{numberStatic.utils-BX50PSee.js → numberStatic.utils-BIyZuILs.js} +5 -5
- package/dist/{progress.cva-WQB8BGbk.js → progress.cva-D7iiX6Lh.js} +2 -2
- package/dist/{radio.cva-DGbvTymp.js → radio.cva-Ctdop1xV.js} +1 -1
- package/dist/{radio.cva-DN9VQ3Kb.d.ts → radio.cva-DO3UEac-.d.ts} +3 -3
- 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-RzxvSBkd.js +14 -0
- package/dist/{selectDesktop.cva-CHAMxhfO.js → selectItem.cva-BWfEkNs_.js} +3 -36
- package/dist/{staticDateTimeSegments-sf_ND7zL.js → staticDateTimeSegments-Bt5wCZvg.js} +58 -54
- package/dist/{status.cva-6HxNR4EP.js → status.cva-BFGMKZO_.js} +14 -14
- package/dist/{stepper.cva-CZ0Kj-s7.js → stepper.cva-CpRi0fGb.js} +10 -10
- package/dist/{configuration.context-f_FSPWhQ.d.ts → style-definitions-_RXJdSk-.d.ts} +183 -86
- package/dist/styles/editor.css +1 -1
- package/dist/styles/input.d.ts +1 -1
- package/dist/{switch.cva-BX3HOxbL.js → switch.cva-BsJ4iAFl.js} +1 -1
- package/dist/{switch.cva-CWNzmdRc.d.ts → switch.cva-psw67dK9.d.ts} +3 -3
- package/dist/table.cva-CmfeWLyW.d.ts +84 -0
- package/dist/table.cva-DFQM8VbM.js +111 -0
- package/dist/{tag.cva-B3MudLeC.js → tag.cva-BCCH7ku3.js} +12 -12
- 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-DQu9PNjn.d.ts +469 -0
- package/dist/tanstack.d.ts +79 -78
- package/dist/tanstack.js +79 -83
- package/dist/{toast.cva-By5lvAfr.d.ts → toast.cva-L0k_TBiW.d.ts} +7 -7
- package/dist/{toast.cva-C_L_RffH.js → toast.cva-aC4NMpLb.js} +14 -14
- package/dist/{toast.runtime-Zf-XyAC3.js → toast.runtime-DKOeUnk6.js} +1 -2
- package/dist/{toggleGroup.cva-MbpaEBg1.js → toggleGroup.cva-CEhjMT4j.js} +1 -1
- package/dist/{tooltip.cva-BIzlOXHH.js → tooltip.cva-ClcaR72U.js} +4 -4
- package/dist/tw-ui-plugin.js +5 -1
- package/dist/{typography.cva-D1JOEYl-.d.ts → typography.cva-GpC6QQNx.d.ts} +2 -2
- package/dist/{uiConfig.context-DeBX2beU.d.ts → uiConfig.context-CQU9Tzq_.d.ts} +12 -20
- package/dist/{uiConfig.context-BS3r_kTS.js → uiConfig.context-CT9EVqC5.js} +3 -109
- 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-BzYqQEBO.js} +1 -1
- 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-CUINwVTR.js +1348 -0
- package/dist/{useTableNav-Ckj5PBRk.d.ts → useTableNav-rU9WmCj6.d.ts} +34 -96
- package/dist/{useToast-yreVCUer.d.ts → useToast-DfQif03I.d.ts} +1 -1
- package/dist/{utils-Czcqspm7.js → utils-BkLF-JA3.js} +1 -1
- package/package.json +69 -227
- 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/Autocomplete-BwNHp8fy.d.ts +0 -15
- package/dist/Button-D-4qb0IR.d.ts +0 -42
- package/dist/CheckboxGroup-DGF12cmB.d.ts +0 -28
- package/dist/ComponentGallery-Da70Y4_Q.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/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-ZeN-aIz8.js +0 -63
- package/dist/Inputs-BC5q5Cvj.js +0 -17
- package/dist/Inputs-O84btFJL.d.ts +0 -13
- 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-B2pAfwRk.js +0 -154
- package/dist/Select-pHbyJdZJ.d.ts +0 -15
- package/dist/Switch-s_EPn0Jz.d.ts +0 -22
- package/dist/Table-CqepqSfe.js +0 -637
- package/dist/TextButton-XUhV_1s0.d.ts +0 -15
- package/dist/TimePicker-B1POvGWs.d.ts +0 -33
- package/dist/Toast-DPbnLlBi.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/autocomplete-DeERHN8W.d.ts +0 -16
- 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.d.ts +0 -79
- package/dist/config/app-canvas.js +0 -2253
- 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 -5384
- 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/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/grip-vertical-BVxcjdfr.js +0 -54
- package/dist/info-iUmX3uDk.js +0 -32
- package/dist/input-CdQNCPgH.d.ts +0 -8
- package/dist/inspection-model-LuI36xTg.js +0 -1339
- package/dist/number-field-CUDbenNV.d.ts +0 -8
- package/dist/number-range-input-DZGrcvjL.d.ts +0 -8
- 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 -117
- package/dist/rich-text-editor-B-Onl7T8.d.ts +0 -8
- package/dist/select-B4a52eWW.d.ts +0 -16
- 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 -733
- package/dist/styles/configurator.css +0 -3280
- package/dist/switch-C--iWnY8.d.ts +0 -9
- package/dist/table.cva-DlMT-zLD.js +0 -48
- 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/underline-66hmELxa.js +0 -81
- package/dist/upload-CXU83BJ4.js +0 -30
- package/dist/useFormAutosave-BD_TFqDF.js +0 -198
- package/dist/useQueryAutocomplete-CraXvRm_.js +0 -152
- package/dist/useTableColumnConfig-aVUWC2Mp.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
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
UI Components that match Povio's Atlas Design System.
|
|
4
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.
|
|
6
|
+
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
7
9
|
`bun add @povio/ui`
|
|
@@ -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
|
+
```
|
|
24
57
|
|
|
25
|
-
|
|
58
|
+
### Migrating existing forms
|
|
26
59
|
|
|
27
|
-
|
|
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.
|
|
61
|
+
|
|
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
|
|
|
@@ -43,28 +80,112 @@ Each emitted entry is independently bundled and tree-shaken; it does not forward
|
|
|
43
80
|
|
|
44
81
|
Use `Badge` for display content, `BadgeButton` for a compact, badge-styled action, and `ToggleButton` or `ToggleGroup` for selection. `BadgeButton` uses the theme's `badge-*` spacing and radius tokens; customize its recipe through `UIOverrides.badgeButton`.
|
|
45
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.
|
|
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
186
|
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.
|
|
66
187
|
|
|
67
|
-
Use `<
|
|
188
|
+
Use `<Button variant="text" width="hug" size="none">Read more</Button>` for a text action without button padding. The focused button cleanup preserves these sizes, spacing tokens, variants, and colors.
|
|
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.
|
|
240
|
+
|
|
241
|
+
## Pagination
|
|
94
242
|
|
|
95
|
-
|
|
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
|
+
`^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.
|
|
96
252
|
|
|
97
253
|
## Publishing
|
|
98
254
|
|
|
@@ -146,6 +302,14 @@ 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
|
|
|
305
|
+
### Palette roles
|
|
306
|
+
|
|
307
|
+
Use the template's semantic palette for custom layouts. `surface-default-background` is the page surface, `surface-default-card` is the card/panel/popover surface, and `surface-default-sunken` is for recessed areas and filled inputs. Pair them with `text-content-primary`, `text-content-secondary`, or `text-content-muted` according to emphasis. The `content-inverted-*` roles are for inverted surfaces, while `fixed-black` and `fixed-white` retain the same literal color in both modes.
|
|
308
|
+
|
|
309
|
+
Use the theme's radius tokens for custom cards and layouts, such as `rounded-global-rounding-xs` (0.25rem), `rounded-global-rounding-s` (0.375rem), or `rounded-global-rounding-m` (0.5rem). The template resets Tailwind's default radii; bare `rounded`, `rounded-md`, and `rounded-lg` are not defined. Existing theme tokens such as `rounded-m` and component-specific rounding roles remain available.
|
|
310
|
+
|
|
311
|
+
Status treatments have explicit pairs: `bg-status-success-background text-status-success-foreground` for a contained treatment, or `bg-status-success-subtle-background text-status-success-subtle-foreground` for a subtle treatment. Equivalent roles exist for `warning` and `destructive`. Use `text-status-success-accent` or `border-status-success-accent` for standalone status content or boundaries. Destructive subtle colors preserve their existing distinct values; they are not a reversal of the contained pair. Action components continue using `interactive-*` colors. See the [palette migration mapping](MIGRATION.md#14-migrate-palette-roles) for exact replacements.
|
|
312
|
+
|
|
149
313
|
### State color utilities
|
|
150
314
|
|
|
151
315
|
Import the color utilities in your application's Tailwind stylesheet. This import is required because `@povio/ui` components use these utilities:
|
|
@@ -184,7 +348,7 @@ import { IconSlot } from "@povio/ui/icon-slot";
|
|
|
184
348
|
/>;
|
|
185
349
|
```
|
|
186
350
|
|
|
187
|
-
`IconSlot` is also exported from `@povio/ui`, `@povio/ui/
|
|
351
|
+
`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. A 20px token at `0.8` produces a 16px SVG; a 24px token produces a 19.2px SVG. Stroke width continues to follow the icon's own configuration.
|
|
188
352
|
|
|
189
353
|
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
354
|
|
|
@@ -268,3 +432,65 @@ We're using a helper class for flex, so make sure to add this into your base css
|
|
|
268
432
|
flex: 1 0 0;
|
|
269
433
|
}
|
|
270
434
|
```
|
|
435
|
+
|
|
436
|
+
## App canvas page (`/_canvas`)
|
|
437
|
+
|
|
438
|
+
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).
|
|
439
|
+
|
|
440
|
+
For file-based routing, create `src/routes/[_]canvas.tsx` (or use your configured routes directory). The brackets escape TanStack's pathless-layout underscore convention:
|
|
441
|
+
|
|
442
|
+
```tsx
|
|
443
|
+
import "@povio/ui-configurator/app-canvas/styles";
|
|
444
|
+
import { appCanvasRouteOptions } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
445
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
446
|
+
|
|
447
|
+
export const Route = createFileRoute("/_canvas")(appCanvasRouteOptions({ enabled: import.meta.env.DEV }));
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
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.
|
|
451
|
+
|
|
452
|
+
```tsx
|
|
453
|
+
import { isAppCanvasFrame } from "@povio/ui-configurator/app-canvas";
|
|
454
|
+
import { AppCanvasBridge, useIsAppCanvasPage } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
455
|
+
|
|
456
|
+
// Inside the app's root component, under its UIConfigurationProvider:
|
|
457
|
+
const canvasPage = useIsAppCanvasPage();
|
|
458
|
+
return (
|
|
459
|
+
<>
|
|
460
|
+
<AppCanvasBridge />
|
|
461
|
+
<Outlet />
|
|
462
|
+
{!canvasPage && !isAppCanvasFrame() && <ExistingConfigurationLauncher />}
|
|
463
|
+
</>
|
|
464
|
+
);
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
`ExistingConfigurationLauncher` represents your existing launcher/editor, if any. Do not render a second `UIConfigurationModal` on `/_canvas`: the supplied page includes its own draggable editor. Keep app-specific debug overlays out of canvas frames too.
|
|
468
|
+
|
|
469
|
+
For code-based routing, add the package route to the existing root's children **before** creating the router:
|
|
470
|
+
|
|
471
|
+
```tsx
|
|
472
|
+
import "@povio/ui-configurator/app-canvas/styles";
|
|
473
|
+
import { createAppCanvasRoute } from "@povio/ui-configurator/app-canvas/tanstack";
|
|
474
|
+
const canvasRoute = createAppCanvasRoute({
|
|
475
|
+
getParentRoute: () => rootRoute,
|
|
476
|
+
enabled: import.meta.env.DEV,
|
|
477
|
+
canvas: { examples: { "/projects/$projectId": { params: { projectId: "example-id" } } } },
|
|
478
|
+
});
|
|
479
|
+
const routeTree = rootRoute.addChildren([homeRoute, projectsRoute, canvasRoute]);
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
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.
|
|
483
|
+
|
|
484
|
+
### Canvas workspaces
|
|
485
|
+
|
|
486
|
+
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.
|
|
487
|
+
|
|
488
|
+
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.
|
|
489
|
+
|
|
490
|
+
### Fontsource font families
|
|
491
|
+
|
|
492
|
+
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.
|
|
493
|
+
|
|
494
|
+
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.
|
|
495
|
+
|
|
496
|
+
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.
|
|
@@ -2,11 +2,11 @@ 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
4
|
import { t as IconSlot } from "./IconSlot-DSK7qNxc.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-
|
|
6
|
-
import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-
|
|
7
|
-
import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-
|
|
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
8
|
import { t as Typography } from "./Typography-LU4z2pR1.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-
|
|
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-CeBWV9EO.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);
|
|
@@ -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-_RXJdSk-.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: "border bg-surface-default-card text-
|
|
9
|
+
readonly outlined: "border bg-surface-default-card text-content-primary";
|
|
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-CBckM91c.js";
|
|
2
|
+
import { n as DialogProps } from "./Dialog-V-2cgGk1.js";
|
|
3
|
+
import { r as TypographyPropsCva } from "./Typography-D2FfZr7a.js";
|
|
4
4
|
//#region src/components/overlays/AlertDialog/AlertDialog.d.ts
|
|
5
5
|
interface AlertDialogAction {
|
|
6
6
|
label: string;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { t as UIConfig } from "./uiConfig.context-CT9EVqC5.js";
|
|
2
|
+
import { t as clsx } from "./clsx-CnD0nOiA.js";
|
|
3
|
+
import { t as UIOverrides } from "./uiOverrides.context-BTCH9y5a.js";
|
|
4
|
+
import { l as $542a13ca2fa5b484$export$5b6b19405a83ff9d } from "./Dialog-lFYX-7Ax.js";
|
|
5
|
+
import { t as $dbdc5e6e7ce01b4b$export$72b9695b8216309a } from "./ComboBox-DFlz6HJ8.js";
|
|
6
|
+
import { n as $41fb335299a4a39e$export$f5b8910cec6cf069 } from "./Input-BG0Xjw5X.js";
|
|
7
|
+
import { i as $928221da08ecbc62$export$a11e76429ed99b4, t as $928221da08ecbc62$export$41f133550aa26f48 } from "./ListBox-CoUk0kkt.js";
|
|
8
|
+
import { r as $a8ea2faf2ebe4d2f$re_export$mergeRefs } from "./import-D_3dPATF.js";
|
|
9
|
+
import { t as useFieldAccessibility } from "./useFieldAccessibility-eZIMECmG.js";
|
|
10
|
+
import { t as FormField } from "./FormField-D7KKJ6kG.js";
|
|
11
|
+
import { t as inputBaseDefinition } from "./input.cva-w7ZEVQAM.js";
|
|
12
|
+
import { t as TooltipWrapper } from "./TooltipWrapper-D7HUZLsP.js";
|
|
13
|
+
import { t as popoverDefinition } from "./popover.cva-Bhud1wnp.js";
|
|
14
|
+
import { t as selectListBoxItemDefinition } from "./selectItem.cva-BWfEkNs_.js";
|
|
15
|
+
import { t as InputContent } from "./InputContent-KhD4_YvO.js";
|
|
16
|
+
import { memo, useId, useRef, useState } from "react";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
//#region src/components/inputs/Selection/Autocomplete/Autocomplete.tsx
|
|
19
|
+
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 }) {
|
|
20
|
+
const ui = UIConfig.useConfig();
|
|
21
|
+
const isDisabled = isDisabledProp ?? disabled;
|
|
22
|
+
const isRequired = isRequiredProp ?? required;
|
|
23
|
+
const error = errorMessage ?? errorProp;
|
|
24
|
+
const generatedId = useId();
|
|
25
|
+
const inputId = rest.id ?? generatedId;
|
|
26
|
+
const inputBaseCva = UIOverrides.useCva("input.baseCva", inputBaseDefinition);
|
|
27
|
+
const popoverCva = UIOverrides.useCva("popover.cva", popoverDefinition);
|
|
28
|
+
const itemCva = UIOverrides.useCva("select.listBoxItemCva", selectListBoxItemDefinition);
|
|
29
|
+
const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
|
|
30
|
+
const inputValue = value ?? uncontrolledValue;
|
|
31
|
+
const inputRef = useRef(null);
|
|
32
|
+
const as = layoutProp ?? asProp ?? ui.input.as;
|
|
33
|
+
const hideLabel = hideLabelProp ?? ui.input.hideLabel;
|
|
34
|
+
const variant = variantProp ?? ui.input.variant;
|
|
35
|
+
const size = sizeProp ?? ui.input.size;
|
|
36
|
+
const isClearable = isClearableProp ?? ui.input.isClearable;
|
|
37
|
+
const { describedBy, errorMessageId, helperTextId } = useFieldAccessibility({
|
|
38
|
+
describedBy: rest["aria-describedby"],
|
|
39
|
+
error,
|
|
40
|
+
helperText
|
|
41
|
+
});
|
|
42
|
+
const changeText = (text) => {
|
|
43
|
+
if (isReadOnly || isDisabled) return;
|
|
44
|
+
if (value === void 0) setUncontrolledValue(text);
|
|
45
|
+
onChange?.(text);
|
|
46
|
+
};
|
|
47
|
+
const fieldProps = {
|
|
48
|
+
label,
|
|
49
|
+
error,
|
|
50
|
+
helperText,
|
|
51
|
+
tooltipText,
|
|
52
|
+
isRequired,
|
|
53
|
+
rightContent,
|
|
54
|
+
headerClassName,
|
|
55
|
+
errorClassName,
|
|
56
|
+
isDisabled,
|
|
57
|
+
hideLabel,
|
|
58
|
+
errorMessageId,
|
|
59
|
+
helperTextId,
|
|
60
|
+
labelProps: { htmlFor: inputId },
|
|
61
|
+
isHeaderHidden: isHeaderHidden || as === "inline" || as === "filter" || as === "floating"
|
|
62
|
+
};
|
|
63
|
+
return /* @__PURE__ */ jsxs($dbdc5e6e7ce01b4b$export$72b9695b8216309a, {
|
|
64
|
+
allowsCustomValue: true,
|
|
65
|
+
defaultItems: items,
|
|
66
|
+
...isClientSearchDisabled ? { items } : {},
|
|
67
|
+
inputValue,
|
|
68
|
+
onInputChange: changeText,
|
|
69
|
+
isDisabled,
|
|
70
|
+
isReadOnly,
|
|
71
|
+
isRequired,
|
|
72
|
+
isInvalid: !!error || isInvalid,
|
|
73
|
+
validationBehavior,
|
|
74
|
+
validate: validate ? ({ inputValue }) => validate(inputValue) : void 0,
|
|
75
|
+
"aria-label": rest["aria-label"] ?? label,
|
|
76
|
+
className: clsx("group w-full", className),
|
|
77
|
+
children: [/* @__PURE__ */ jsx(TooltipWrapper, {
|
|
78
|
+
as,
|
|
79
|
+
error,
|
|
80
|
+
children: /* @__PURE__ */ jsx(FormField, {
|
|
81
|
+
...fieldProps,
|
|
82
|
+
as,
|
|
83
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
84
|
+
className: clsx("relative flex cursor-text has-disabled:cursor-default", inputBaseCva({
|
|
85
|
+
variant,
|
|
86
|
+
as
|
|
87
|
+
}), inputClassName),
|
|
88
|
+
"data-is-empty": !inputValue || void 0,
|
|
89
|
+
"data-is-disabled": isDisabled || void 0,
|
|
90
|
+
"data-is-required": isRequired || void 0,
|
|
91
|
+
children: /* @__PURE__ */ jsx(InputContent, {
|
|
92
|
+
unit,
|
|
93
|
+
isLoading,
|
|
94
|
+
isDisabled,
|
|
95
|
+
action,
|
|
96
|
+
leadingIcon,
|
|
97
|
+
trailingIcon,
|
|
98
|
+
isClearable: isClearable && !isReadOnly,
|
|
99
|
+
isClearableIfDisabled,
|
|
100
|
+
value: inputValue,
|
|
101
|
+
onChange: changeText,
|
|
102
|
+
headerProps: {
|
|
103
|
+
...fieldProps,
|
|
104
|
+
isHeaderHidden: hideLabel || isHeaderHidden
|
|
105
|
+
},
|
|
106
|
+
as,
|
|
107
|
+
size,
|
|
108
|
+
children: /* @__PURE__ */ jsx($41fb335299a4a39e$export$f5b8910cec6cf069, {
|
|
109
|
+
...rest,
|
|
110
|
+
id: inputId,
|
|
111
|
+
ref: $a8ea2faf2ebe4d2f$re_export$mergeRefs(ref, inputRef),
|
|
112
|
+
onBlur,
|
|
113
|
+
"aria-describedby": describedBy,
|
|
114
|
+
"aria-errormessage": errorMessageId,
|
|
115
|
+
placeholder: as === "floating" ? "\xA0" : placeholder,
|
|
116
|
+
"data-is-filled": !!inputValue || void 0,
|
|
117
|
+
"data-is-dirty": isDirty || void 0,
|
|
118
|
+
className: "min-w-0 w-full bg-transparent outline-none"
|
|
119
|
+
})
|
|
120
|
+
})
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
}), /* @__PURE__ */ jsx($542a13ca2fa5b484$export$5b6b19405a83ff9d, {
|
|
124
|
+
className: popoverCva({}),
|
|
125
|
+
style: { width: "var(--trigger-width)" },
|
|
126
|
+
children: /* @__PURE__ */ jsx($928221da08ecbc62$export$41f133550aa26f48, {
|
|
127
|
+
className: "max-h-72 overflow-auto outline-none",
|
|
128
|
+
children: (item) => /* @__PURE__ */ jsx($928221da08ecbc62$export$a11e76429ed99b4, {
|
|
129
|
+
id: item.id,
|
|
130
|
+
textValue: item.label,
|
|
131
|
+
isDisabled: item.isDisabled,
|
|
132
|
+
className: itemCva({ isSingle: true }),
|
|
133
|
+
children: item.label
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
})]
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
const AutocompleteComponent = (props) => /* @__PURE__ */ jsx(AutocompleteInner, { ...props });
|
|
140
|
+
const Autocomplete = memo(AutocompleteComponent);
|
|
141
|
+
//#endregion
|
|
142
|
+
export { AutocompleteInner as n, Autocomplete as t };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { i as InputProps$1 } from "./Input-BX3sZBEp.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 };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { a as AutocompleteProps$1 } from "./Autocomplete-D_4gEL7D.js";
|
|
2
|
+
import { n as FieldValues, t as FormControlProps } from "./form.types-C8P4sznq.js";
|
|
3
|
+
//#region src/components/inputs/Selection/Autocomplete/Autocomplete.bound.d.ts
|
|
4
|
+
type ControlledAutocompleteProps<TFieldValues extends FieldValues> = FormControlProps<AutocompleteProps$1, TFieldValues>;
|
|
5
|
+
type AutocompleteProps<TFieldValues extends FieldValues = FieldValues> = ControlledAutocompleteProps<TFieldValues>;
|
|
6
|
+
declare function AutocompleteComponent<TFieldValues extends FieldValues>(props: ControlledAutocompleteProps<TFieldValues>): import("react").JSX.Element;
|
|
7
|
+
declare const Autocomplete: typeof AutocompleteComponent;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { AutocompleteProps as n, ControlledAutocompleteProps as r, Autocomplete as t };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { r as $a8ea2faf2ebe4d2f$re_export$mergeRefs } from "./import-D_3dPATF.js";
|
|
2
|
+
import { t as FieldController } from "./form.binding-B-2id68q.js";
|
|
3
|
+
import { n as AutocompleteInner } from "./Autocomplete-CWU9Ev3J.js";
|
|
4
|
+
import { memo } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
//#region src/components/inputs/Selection/Autocomplete/Autocomplete.bound.tsx
|
|
7
|
+
function AutocompleteComponent(props) {
|
|
8
|
+
const { field, ref, ...innerProps } = props;
|
|
9
|
+
return /* @__PURE__ */ jsx(FieldController, {
|
|
10
|
+
control: field.form,
|
|
11
|
+
name: field.name,
|
|
12
|
+
onValueChange: field.onValueChange,
|
|
13
|
+
onBlur: field.onBlur,
|
|
14
|
+
render: ({ field, fieldState: { error, isDirty } }) => /* @__PURE__ */ jsx(AutocompleteInner, {
|
|
15
|
+
...innerProps,
|
|
16
|
+
ref: $a8ea2faf2ebe4d2f$re_export$mergeRefs(ref, field.ref),
|
|
17
|
+
value: field.value ?? "",
|
|
18
|
+
onChange: field.onChange,
|
|
19
|
+
onBlur: field.onBlur,
|
|
20
|
+
isDirty,
|
|
21
|
+
isDisabled: field.disabled || props.isDisabled,
|
|
22
|
+
error: props.error ?? error?.message
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const Autocomplete = memo(AutocompleteComponent);
|
|
27
|
+
//#endregion
|
|
28
|
+
export { Autocomplete as t };
|