@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.
Files changed (592) hide show
  1. package/MIGRATION.md +673 -0
  2. package/README.md +206 -55
  3. package/dist/{Accordion-BzwO4_ml.js → Accordion-DycXjzGK.js} +10 -10
  4. package/dist/{Alert-DfiJbKH0.d.ts → Alert-BpPHCE5-.d.ts} +3 -3
  5. package/dist/{AlertDialog-OWTbR4km.d.ts → AlertDialog-CDCbfARJ.d.ts} +3 -3
  6. package/dist/Autocomplete-BUslodfn.d.ts +23 -0
  7. package/dist/Autocomplete-DSwAc7jF.js +142 -0
  8. package/dist/Autocomplete.bound-Db5C6Jph.d.ts +9 -0
  9. package/dist/Autocomplete.bound-e5WbxlBm.js +28 -0
  10. package/dist/{Badge-CBNpj823.d.ts → Badge-Dp091PcC.d.ts} +2 -2
  11. package/dist/{BadgeButton-Ccgt3oGO.d.ts → BadgeButton-DZm_aw29.d.ts} +2 -2
  12. package/dist/{BottomSheet-DbQuzfAB.d.ts → BottomSheet-C-jdDmO7.d.ts} +1 -1
  13. package/dist/{BottomSheet-BXLE3161.js → BottomSheet-DB0Cdlgx.js} +10 -84
  14. package/dist/{BottomSheet.lazy-D9LCEo7s.d.ts → BottomSheet.lazy-C0_6p_UQ.d.ts} +1 -1
  15. package/dist/{Breadcrumbs-CUV6CU8Q.d.ts → Breadcrumbs-CuupIZuv.d.ts} +1 -1
  16. package/dist/{Breadcrumbs-FF8hMfXd.js → Breadcrumbs-V-Bea_bs.js} +16 -13
  17. package/dist/Button-BL5ils-5.d.ts +13 -0
  18. package/dist/{Button-D6KlWSFL.js → Button-C1YB5dOw.js} +3 -3
  19. package/dist/Button-DU1Q8GDB.js +16 -0
  20. package/dist/ButtonBase-BhlpPPDi.js +87 -0
  21. package/dist/ButtonBase-C_ODj77A.d.ts +32 -0
  22. package/dist/{ButtonContent-c7lJayVQ.js → ButtonContent-BBup-vN6.js} +4 -13
  23. package/dist/{Calendar-BTjajO6i.js → Calendar-ChmIflXX.js} +31 -31
  24. package/dist/{CheckContent-D7sZPmzx.js → CheckContent-DHKG_FY6.js} +1 -1
  25. package/dist/{Checkbox-DVTWaMKa.d.ts → Checkbox-BjZVQ-6_.d.ts} +9 -8
  26. package/dist/{Checkbox-CV1ILXXO.js → Checkbox-Bo03jrPX.js} +20 -37
  27. package/dist/Checkbox.bound-DN4OVaMs.js +33 -0
  28. package/dist/Checkbox.bound-DTO008Tl.d.ts +9 -0
  29. package/dist/CheckboxCheckmark-C4yFclkZ.js +44 -0
  30. package/dist/CheckboxGroup-B_rzZgta.d.ts +30 -0
  31. package/dist/CheckboxGroup-D3LxgocB.js +139 -0
  32. package/dist/CheckboxGroup.bound-8hjoP-xP.js +32 -0
  33. package/dist/CheckboxGroup.bound-CiA60XsD.d.ts +9 -0
  34. package/dist/ComboBox-DFlz6HJ8.js +212 -0
  35. package/dist/{DatePicker-8xSs_jNd.d.ts → DatePicker-B_caFHFY.d.ts} +21 -10
  36. package/dist/{DatePicker-DOLL7mkc.js → DatePicker-Bc_E4UZ1.js} +40 -50
  37. package/dist/DatePicker.bound-C5-DL4SJ.d.ts +9 -0
  38. package/dist/DatePicker.bound-CtBL5w-8.js +36 -0
  39. package/dist/{DatePickerInput-D81ZJ3fT.d.ts → DatePickerInput-8gKhZdGY.d.ts} +3 -3
  40. package/dist/{DatePickerInput-BLBcySA2.js → DatePickerInput-TND0rEMc.js} +68 -48
  41. package/dist/{DateRangePicker-BF-1CztH.js → DateRangePicker-BNMTOQ2N.js} +81 -70
  42. package/dist/{DateRangePicker-Bfq-yDm7.d.ts → DateRangePicker-CzWwO5bA.d.ts} +30 -10
  43. package/dist/DateRangePicker.bound-C4mHtr-b.d.ts +9 -0
  44. package/dist/DateRangePicker.bound-GeRw9Iuj.js +35 -0
  45. package/dist/{DateTimePicker-Cj0qvJUz.js → DateTimePicker-B3YjV4uj.js} +40 -44
  46. package/dist/{DateTimePicker-D4lHyf6P.d.ts → DateTimePicker-CzGdmamp.d.ts} +21 -11
  47. package/dist/DateTimePicker.bound-ByjHsAnf.js +32 -0
  48. package/dist/DateTimePicker.bound-DwClL-pe.d.ts +9 -0
  49. package/dist/Dialog-2XpWsphI.d.ts +21 -0
  50. package/dist/{Dialog-9manOgMA.js → Dialog-COvYzwNU.js} +11 -8
  51. package/dist/{Dialog-CKLkS00H.js → Dialog-lFYX-7Ax.js} +22 -27
  52. package/dist/{DropdownMenu-5jmtgLXd.js → DropdownMenu-DtZdv5mo.js} +7 -7
  53. package/dist/DropdownMenu-gKIXzj63.d.ts +25 -0
  54. package/dist/{DropdownMenuDesktop-Cl9gZVq0.js → DropdownMenuDesktop-BMkiHEuY.js} +4 -4
  55. package/dist/{FileInput-C4CE5kuP.d.ts → FileInput-0o8-IJUh.d.ts} +26 -22
  56. package/dist/{FileInput-Br5DQaGQ.js → FileInput-Bpm2HJSB.js} +34 -47
  57. package/dist/FileInput.bound-B6oGPCP8.js +30 -0
  58. package/dist/FileInput.bound-BEeceBBO.d.ts +8 -0
  59. package/dist/{FileTrigger-Cthk5_Wp.js → FileTrigger-DBX1Io6E.js} +36 -7
  60. package/dist/FileUpload--AQJW3vz.d.ts +11 -0
  61. package/dist/{FileUpload--7ub3EZO.js → FileUpload-G7tdtNKN.js} +276 -165
  62. package/dist/FileUpload.bound-DqqPejvc.js +30 -0
  63. package/dist/FileUpload.bound-i5zfLhoY.d.ts +16 -0
  64. package/dist/{FileUploadContainer-042ztsaL.d.ts → FileUploadContainer-D1eYflb2.d.ts} +1 -1
  65. package/dist/{Form-DlQcyN1f.js → Form-CqF1SaVw.js} +2 -2
  66. package/dist/{FormField-Byiehm9y.d.ts → FormField-BsR2Cjxm.d.ts} +4 -2
  67. package/dist/FormField-DyqEbqx3.js +119 -0
  68. package/dist/{FormFieldError-DeOHHLo2.js → FormFieldError-BaVgIKrv.js} +2 -13
  69. package/dist/FormFieldHeaderTooltip-Bxc4f9i4.js +47 -0
  70. package/dist/{Heading-nI1_VOaE.js → Heading-D4XFYv__.js} +2 -2
  71. package/dist/IconButton-DdvODpP7.d.ts +25 -0
  72. package/dist/{IconSlot-DSK7qNxc.js → IconSlot-Cuvpj1gd.js} +2 -2
  73. package/dist/{InlineTooltipWrapper-BpApaGXV.js → InlineTooltipWrapper-HDHIaQtS.js} +1 -1
  74. package/dist/{Input-BsbLZDtC.js → Input-BG0Xjw5X.js} +2 -2
  75. package/dist/Input-BdCci6BF.js +229 -0
  76. package/dist/{Input-DOanwj3l.d.ts → Input-Bu4G9gcn.d.ts} +13 -9
  77. package/dist/Input.bound-CnqI-L-b.js +31 -0
  78. package/dist/Input.bound-CxfKRXzI.d.ts +9 -0
  79. package/dist/{InputContent-CXuP1ghQ.d.ts → InputContent-BGTEvv6a.d.ts} +4 -4
  80. package/dist/{useFieldAccessibility-ScC6Mtd5.js → InputContent-Ca4oVqIe.js} +24 -37
  81. package/dist/{Label-B2-B-uFY.js → Label-BGvF9vWx.js} +2 -2
  82. package/dist/{Link-FupWOW1f.js → Link-Chux-Clm.js} +2 -2
  83. package/dist/{Link-Ow9H7kNv.d.ts → Link-D0Kk3F5w.d.ts} +3 -3
  84. package/dist/{ListBox-CL8Ar4Q_.js → ListBox-CoUk0kkt.js} +10 -11
  85. package/dist/{MenuItem-DHyqOqln.d.ts → MenuItem-Bo5a7_Nw.d.ts} +1 -1
  86. package/dist/{Modal-w60dVQcb.js → Modal-B4p1zFqi.js} +58 -20
  87. package/dist/NumberField-BLAwsjns.js +225 -0
  88. package/dist/{NumberField-Cb9Gf6QJ.d.ts → NumberField-DCMQZPY9.d.ts} +13 -9
  89. package/dist/NumberField.bound-DiDYEZM4.js +32 -0
  90. package/dist/NumberField.bound-fZLE6Odv.d.ts +9 -0
  91. package/dist/{NumberFormatter-CLDS_LRZ.js → NumberFormatter-DYarfm5F.js} +2 -36
  92. package/dist/{NumberRangeInput-BfbJQqzn.d.ts → NumberRangeInput-CtSYPK2e.d.ts} +13 -8
  93. package/dist/{NumberRangeInput-B8-LHfg3.js → NumberRangeInput-al32ZeSy.js} +23 -51
  94. package/dist/NumberRangeInput.bound-B0e7yUDI.js +32 -0
  95. package/dist/NumberRangeInput.bound-CxAk_1_K.d.ts +9 -0
  96. package/dist/{OverlayArrow-D8z7cCsw.js → OverlayArrow-DF0jMwul.js} +2 -2
  97. package/dist/{Pagination-CwQu5Py8.d.ts → Pagination-DikJEIWD.d.ts} +1 -1
  98. package/dist/{PaginationList-DMRUGtf8.d.ts → PaginationList-D7PVQ5WX.d.ts} +1 -1
  99. package/dist/PaginationList-vfqgyTIP.js +258 -0
  100. package/dist/PasswordInput-Dy5hMeFP.d.ts +11 -0
  101. package/dist/{PasswordInput-CLwFUgl0.d.ts → PasswordInput.bound-B5sHHU26.d.ts} +5 -6
  102. package/dist/PasswordInput.bound-Bj3WO1zC.js +23 -0
  103. package/dist/{Popover-BTHPteIh.d.ts → Popover-DxTsc2y6.d.ts} +2 -2
  104. package/dist/{Progress-CjWOR38H.d.ts → Progress-CtxPBAgr.d.ts} +4 -4
  105. package/dist/{Progress-B3mY9rIP.js → Progress-ZsKwo9ne.js} +3 -28
  106. package/dist/RadioGroup-BYS8ha2C.d.ts +26 -0
  107. package/dist/{RadioGroup-DOw3PRoX.js → RadioGroup-D0X47mm7.js} +13 -117
  108. package/dist/RadioGroup.bound-CibzUsQL.d.ts +9 -0
  109. package/dist/RadioGroup.bound-aK3GC6i7.js +32 -0
  110. package/dist/RichTextEditor-k9LvNCjg.d.ts +28 -0
  111. package/dist/{RichTextEditor-D4yN7Wj7.js → RichTextEditor-qoxzWBFP.js} +154 -85
  112. package/dist/{staticSelect.utils-uHa8f_c6.js → Select-BAlYMh4h.js} +218 -252
  113. package/dist/{SelectBase-Omiq2D3M.d.ts → Select-NNohxr1t.d.ts} +32 -11
  114. package/dist/Select.bound-CQPG2sWV.js +34 -0
  115. package/dist/Select.bound-Dh5kywfV.d.ts +17 -0
  116. package/dist/{SelectionIndicator-JblvLKCu.js → SelectionIndicator-B7C5Y0JM.js} +1 -1
  117. package/dist/{SharedElementTransition-Da1c_cOO.js → SharedElementTransition-DJ9CCbEa.js} +1 -1
  118. package/dist/{Slider-CzEmKYBF.js → Slider-DMrnZn3I.js} +16 -40
  119. package/dist/{Slider-EYlGCLWe.d.ts → Slider-zbLmrW6J.d.ts} +9 -8
  120. package/dist/Slider.bound-BaJHbE6d.d.ts +9 -0
  121. package/dist/Slider.bound-BoIYW8I5.js +31 -0
  122. package/dist/{Spinner-BeVTUzzx.js → Spinner-CFj5Iu77.js} +28 -40
  123. package/dist/{Spinner-DbXeDOa2.d.ts → Spinner-b365xHHG.d.ts} +5 -5
  124. package/dist/{SplitButton-D9ngY1rJ.d.ts → SplitButton-CzvD7LIK.d.ts} +3 -3
  125. package/dist/{Stepper-TATlHZhQ.d.ts → Stepper-Bk1JUf6K.d.ts} +18 -18
  126. package/dist/{Stepper-Cp5vbL5g.js → Stepper-DlyScdAM.js} +11 -10
  127. package/dist/{Switch-CqnGEdeD.js → Switch-Ck_zSDuw.js} +9 -58
  128. package/dist/Switch-uqTGk-H6.d.ts +24 -0
  129. package/dist/Switch.bound-Brw5UUA6.js +33 -0
  130. package/dist/Switch.bound-DWuDmr2C.d.ts +9 -0
  131. package/dist/Tag--FasSNEh.d.ts +44 -0
  132. package/dist/{Text-D2MPZ3sY.js → Text-D72yc4S6.js} +1 -1
  133. package/dist/{TextArea-D8WkKsGn.js → TextArea-33uOXvnc.js} +30 -33
  134. package/dist/{TextArea-l_keyLK7.d.ts → TextArea-t5IYaVds.d.ts} +11 -9
  135. package/dist/TextArea.bound-DPALjcvO.js +28 -0
  136. package/dist/TextArea.bound-DcflHR7X.d.ts +9 -0
  137. package/dist/TextArea.cva-Bb73hriz.js +5 -0
  138. package/dist/TimePicker-BK4AnHQa.d.ts +45 -0
  139. package/dist/{TimePicker-C4taAOFQ.js → TimePicker-CmBGkxDC.js} +59 -51
  140. package/dist/TimePicker.bound-3i1DJgrU.js +32 -0
  141. package/dist/TimePicker.bound-BMZWRtpJ.d.ts +9 -0
  142. package/dist/{Toast-ruXqONDA.d.ts → Toast-6rYk8AAG.d.ts} +1 -1
  143. package/dist/{ToastContainer-qgpzMFD4.js → ToastContainer-D1Jl3PPk.js} +3 -3
  144. package/dist/{ToggleButton-BW1ensey.js → ToggleButton-DUQ8nwKY.js} +5 -5
  145. package/dist/ToggleButton-DZ340rQr.d.ts +17 -0
  146. package/dist/{toggleGroup.types-Bp43zbSQ.d.ts → ToggleGroup-BTqYh6FH.d.ts} +16 -15
  147. package/dist/{ToggleGroup-DOk27fgI.js → ToggleGroup-cvzIyIhi.js} +136 -162
  148. package/dist/ToggleGroup.bound-BEtnF-L-.d.ts +9 -0
  149. package/dist/ToggleGroup.bound-DjwakG--.js +67 -0
  150. package/dist/{Tooltip-CpG1nz7Y.js → Tooltip-CqbyoJhl.js} +45 -10
  151. package/dist/Tooltip-DP5RDkXs.d.ts +16 -0
  152. package/dist/{TooltipWrapper-3jyN0Wss.js → TooltipWrapper-BrftXInI.js} +7 -7
  153. package/dist/{Typography-XljT9s02.d.ts → Typography-BD-MSuTp.d.ts} +1 -1
  154. package/dist/{Typography-LU4z2pR1.js → Typography-Ba5l4rmj.js} +1 -1
  155. package/dist/{accordion.cva-CL1bVscW.js → accordion.cva-C-gUiXk5.js} +16 -24
  156. package/dist/badgeButton.cva-C1BuYx1N.js +138 -0
  157. package/dist/{badgeButton.cva-B2bgCQP6.d.ts → badgeButton.cva-Cj5AWgfv.d.ts} +8 -8
  158. package/dist/{breadcrumbs.cva-7zzdDhVR.js → breadcrumbs.cva-DCAdmxWR.js} +8 -8
  159. package/dist/{button.cva-C7kEhgoA.d.ts → button.cva-YpNNY6C-.d.ts} +21 -16
  160. package/dist/button.cva-fkUW5b2d.js +267 -0
  161. package/dist/{buttonContent.cva-DPIlROA9.d.ts → buttonContent.cva-CxgT-rxJ.d.ts} +2 -2
  162. package/dist/{checkbox.cva-t1Ox50hy.d.ts → checkbox.cva-CZnnBl8g.d.ts} +6 -6
  163. package/dist/checkbox.cva-DCVi4-4z.js +128 -0
  164. package/dist/components/accordion.js +1 -1
  165. package/dist/components/alert-dialog.d.ts +1 -1
  166. package/dist/components/alert-dialog.js +102 -100
  167. package/dist/components/alert.d.ts +1 -1
  168. package/dist/components/alert.js +116 -1
  169. package/dist/components/autocomplete.d.ts +2 -2
  170. package/dist/components/autocomplete.js +1 -134
  171. package/dist/components/badge-button.d.ts +1 -1
  172. package/dist/components/badge-button.js +4 -4
  173. package/dist/components/badge.d.ts +1 -1
  174. package/dist/components/badge.js +8 -8
  175. package/dist/components/bottom-sheet-header.d.ts +16 -0
  176. package/dist/components/bottom-sheet-header.js +80 -0
  177. package/dist/components/bottom-sheet.d.ts +2 -2
  178. package/dist/components/bottom-sheet.js +2 -2
  179. package/dist/components/breadcrumb/react-aria.js +1 -1
  180. package/dist/components/breadcrumbs.d.ts +1 -1
  181. package/dist/components/breadcrumbs.js +1 -1
  182. package/dist/components/button-group.d.ts +12 -0
  183. package/dist/components/button-group.js +46 -0
  184. package/dist/components/button.d.ts +2 -2
  185. package/dist/components/button.js +1 -1
  186. package/dist/components/checkbox-group.d.ts +2 -2
  187. package/dist/components/checkbox-group.js +1 -163
  188. package/dist/components/checkbox.d.ts +2 -2
  189. package/dist/components/checkbox.js +2 -2
  190. package/dist/components/combo-box/react-aria.js +1 -1
  191. package/dist/components/date-picker/react-aria.js +1 -1
  192. package/dist/components/date-picker.d.ts +2 -2
  193. package/dist/components/date-picker.js +1 -1
  194. package/dist/components/date-range-picker/react-aria.js +1 -1
  195. package/dist/components/date-range-picker.d.ts +2 -2
  196. package/dist/components/date-range-picker.js +1 -1
  197. package/dist/components/date-time-picker.d.ts +2 -2
  198. package/dist/components/date-time-picker.js +1 -1
  199. package/dist/components/dialog-trigger/react-aria.js +1 -1
  200. package/dist/components/dialog.d.ts +1 -1
  201. package/dist/components/dialog.js +1 -1
  202. package/dist/components/drawer.js +4 -4
  203. package/dist/components/dropdown-menu.d.ts +2 -2
  204. package/dist/components/dropdown-menu.js +2 -2
  205. package/dist/components/file-input.d.ts +2 -2
  206. package/dist/components/file-input.js +1 -1
  207. package/dist/components/file-upload-container.d.ts +2 -2
  208. package/dist/components/file-upload-container.js +1 -1
  209. package/dist/components/file-upload.d.ts +3 -3
  210. package/dist/components/file-upload.js +1 -1
  211. package/dist/components/form-field.d.ts +1 -1
  212. package/dist/components/form-field.js +1 -1
  213. package/dist/components/icon-button.d.ts +1 -1
  214. package/dist/components/icon-button.js +17 -15
  215. package/dist/components/icon-slot.d.ts +1 -1
  216. package/dist/components/icon-slot.js +1 -1
  217. package/dist/components/input-frame.d.ts +93 -0
  218. package/dist/{useStaticInputHandoff-NeZVnci-.js → components/input-frame.js} +50 -99
  219. package/dist/components/input.d.ts +2 -2
  220. package/dist/components/input.js +1 -241
  221. package/dist/components/link.d.ts +1 -1
  222. package/dist/components/link.js +2 -2
  223. package/dist/components/menu-trigger/react-aria.js +1 -1
  224. package/dist/components/modal/react-aria.js +1 -1
  225. package/dist/components/modal-overlay/react-aria.js +1 -1
  226. package/dist/components/number-field.d.ts +2 -2
  227. package/dist/components/number-field.js +1 -245
  228. package/dist/components/number-range-input.d.ts +2 -2
  229. package/dist/components/number-range-input.js +1 -1
  230. package/dist/components/pagination-list.d.ts +1 -1
  231. package/dist/components/pagination-list.js +1 -1
  232. package/dist/components/pagination.d.ts +1 -1
  233. package/dist/components/pagination.js +14 -10
  234. package/dist/components/password-input.d.ts +2 -2
  235. package/dist/components/password-input.js +22 -1
  236. package/dist/components/popover/react-aria.js +1 -1
  237. package/dist/components/popover.d.ts +1 -1
  238. package/dist/components/popover.js +39 -31
  239. package/dist/components/progress.d.ts +1 -1
  240. package/dist/components/progress.js +1 -1
  241. package/dist/components/radio-group.d.ts +2 -2
  242. package/dist/components/radio-group.js +1 -1
  243. package/dist/components/select/react-aria.js +1 -1
  244. package/dist/components/select.d.ts +2 -3
  245. package/dist/components/select.js +1 -1
  246. package/dist/components/slider.d.ts +2 -2
  247. package/dist/components/slider.js +1 -1
  248. package/dist/components/spinner.d.ts +1 -1
  249. package/dist/components/spinner.js +1 -1
  250. package/dist/components/split-button.d.ts +1 -1
  251. package/dist/components/split-button.js +2 -2
  252. package/dist/components/stepper.d.ts +1 -1
  253. package/dist/components/stepper.js +1 -1
  254. package/dist/components/style-definitions.d.ts +3 -0
  255. package/dist/components/style-definitions.js +121 -0
  256. package/dist/components/submenu-trigger/react-aria.js +1 -1
  257. package/dist/components/switch.d.ts +2 -2
  258. package/dist/components/switch.js +1 -1
  259. package/dist/components/tag.d.ts +1 -1
  260. package/dist/components/tag.js +93 -1
  261. package/dist/components/text-area.d.ts +2 -2
  262. package/dist/components/text-area.js +1 -1
  263. package/dist/components/time-picker.d.ts +2 -2
  264. package/dist/components/time-picker.js +1 -1
  265. package/dist/components/toast.d.ts +2 -2
  266. package/dist/components/toast.js +2 -2
  267. package/dist/components/toggle-button.d.ts +1 -1
  268. package/dist/components/toggle-button.js +17 -30
  269. package/dist/components/toggle-group.d.ts +2 -3
  270. package/dist/components/toggle-group.js +1 -1
  271. package/dist/components/tooltip-ellipsis.js +1 -1
  272. package/dist/components/tooltip.d.ts +1 -1
  273. package/dist/components/tooltip.js +1 -1
  274. package/dist/components/typography.d.ts +2 -2
  275. package/dist/components/typography.js +1 -1
  276. package/dist/components/use-toast.d.ts +1 -1
  277. package/dist/components/use-toast.js +2 -2
  278. package/dist/config/component-configuration.d.ts +30 -0
  279. package/dist/config/component-configuration.js +69 -0
  280. package/dist/config/confirmation.d.ts +1 -1
  281. package/dist/config/confirmation.js +1 -1
  282. package/dist/config/link-context.d.ts +2 -2
  283. package/dist/config/resources.d.ts +1 -1
  284. package/dist/config/resources.js +1 -1
  285. package/dist/config/ui-config.d.ts +2 -2
  286. package/dist/config/ui-config.js +1 -1
  287. package/dist/config/ui-overrides.d.ts +1 -1
  288. package/dist/{confirmation.context-BuzgCfYl.js → confirmation.context-BSn1s-ip.js} +1 -1
  289. package/dist/{confirmation.context-BOeEVczb.d.ts → confirmation.context-DdxzxDWB.d.ts} +1 -1
  290. package/dist/{datePickerInput.cva-Cd7UUN61.js → datePickerInput.cva--gCeAsRx.js} +1 -1
  291. package/dist/{datePickerValue.utils-DCgoSrP3.js → datePickerValue.utils-BxHR_BQZ.js} +21 -13
  292. package/dist/{dialog.cva-COhDZaVl.js → dialog.cva-DzJlaK5a.js} +6 -6
  293. package/dist/{dist-CAdwxJbe.js → dist-D35rjADF.js} +54 -1
  294. package/dist/{dom.utils-D1AopHx9.js → dom.utils-BbfrA6RP.js} +1 -1
  295. package/dist/dropdownMenu.cva-CS5Q2b_3.js +31 -0
  296. package/dist/{PasswordInput-DYwUZ4-k.js → eye-BA4nRlMX.js} +1 -22
  297. package/dist/{fileUpload.cva-ujmStxB1.js → fileUpload.cva-DVJcCCYz.js} +10 -10
  298. package/dist/{fileUpload.types-n5FxK_F-.d.ts → fileUpload.types-DKICER1J.d.ts} +17 -17
  299. package/dist/form.binding-B-2id68q.js +49 -0
  300. package/dist/form.types-C8P4sznq.d.ts +22 -0
  301. package/dist/formFieldError.cva-Cc-dELdU.js +14 -0
  302. package/dist/formFieldHelper.cva-5YaiUEcL.js +97 -0
  303. package/dist/hooks/use-async-list.d.ts +2 -0
  304. package/dist/hooks/use-async-list.js +2 -0
  305. package/dist/hooks/use-filters.js +1 -1
  306. package/dist/{i18n-CX1vFM9r.d.ts → i18n-2z5on9No.d.ts} +18 -0
  307. package/dist/{i18n-CX2EjhJI.js → i18n-BjNKHh_D.js} +20 -2
  308. package/dist/{iconSlot.cva-CnpFzAOR.d.ts → iconSlot.cva-BrT0X2qq.d.ts} +4 -3
  309. package/dist/icons.d.ts +1 -1
  310. package/dist/icons.js +1 -1
  311. package/dist/index.d.ts +95 -91
  312. package/dist/index.js +87 -85
  313. package/dist/input.cva-AHLI_M3K.js +185 -0
  314. package/dist/{input.cva-BsHgYa-L.d.ts → input.cva-CEFEpKml.d.ts} +10 -10
  315. package/dist/{intlStrings-chfsan9H.js → intlStrings-Cu1YN1tA.js} +35 -35
  316. package/dist/isEqual-LFw0W5rU.js +97 -0
  317. package/dist/{link.context-D5qyz9Rf.d.ts → link.context-pIX2TUSb.d.ts} +1 -1
  318. package/dist/link.cva-isgDrId6.js +12 -0
  319. package/dist/{numberStatic.utils-BX50PSee.js → numberStatic.utils-BIyZuILs.js} +5 -5
  320. package/dist/outline.clsx-DGGQQRkM.js +6 -0
  321. package/dist/{popover.cva-Bhud1wnp.js → popover.cva-Ciu9Ro5G.js} +1 -1
  322. package/dist/progress.cva-D0PKV_ET.js +28 -0
  323. package/dist/radio.cva-Dn2Auqxw.js +79 -0
  324. package/dist/{radio.cva-DN9VQ3Kb.d.ts → radio.cva-VUie6k1Y.d.ts} +4 -4
  325. package/dist/rich-text-editor.d.ts +2 -2
  326. package/dist/rich-text-editor.js +1 -1
  327. package/dist/{routing.utils-UTQonIhB.js → routing.utils-DfxEt0_Y.js} +5 -0
  328. package/dist/selectDesktop.cva-CGBkscBY.js +14 -0
  329. package/dist/selectItem.cva-Ch6oK4jP.js +27 -0
  330. package/dist/{staticDateTimeSegments-DtU63_dw.js → staticDateTimeSegments-CA_lwN-O.js} +60 -56
  331. package/dist/status.cva-CUpcOT4W.js +130 -0
  332. package/dist/{stepper.cva-CZ0Kj-s7.js → stepper.cva-CQGechUm.js} +22 -34
  333. package/dist/style-definitions-DzsmGccZ.d.ts +1028 -0
  334. package/dist/styles/editor.css +9 -9
  335. package/dist/styles/input.d.ts +1 -1
  336. package/dist/styles/outline.js +1 -1
  337. package/dist/switch.cva-C9bO_QI-.js +24 -0
  338. package/dist/switch.cva-x4SdjrQp.d.ts +16 -0
  339. package/dist/table.cva-BMIizuGy.js +111 -0
  340. package/dist/table.cva-HHTd92di.d.ts +84 -0
  341. package/dist/tag.cva-BVa0EWBU.js +24 -0
  342. package/dist/tanstack/autocomplete.d.ts +3 -2
  343. package/dist/tanstack/autocomplete.js +1 -1
  344. package/dist/tanstack/checkbox-group.d.ts +3 -2
  345. package/dist/tanstack/checkbox-group.js +1 -1
  346. package/dist/tanstack/checkbox.d.ts +3 -2
  347. package/dist/tanstack/checkbox.js +2 -2
  348. package/dist/tanstack/date-picker.d.ts +3 -2
  349. package/dist/tanstack/date-picker.js +1 -1
  350. package/dist/tanstack/date-range-picker.d.ts +3 -2
  351. package/dist/tanstack/date-range-picker.js +1 -1
  352. package/dist/tanstack/date-time-picker.d.ts +3 -2
  353. package/dist/tanstack/date-time-picker.js +1 -1
  354. package/dist/tanstack/file-input.d.ts +3 -2
  355. package/dist/tanstack/file-input.js +1 -1
  356. package/dist/tanstack/file-upload.d.ts +4 -3
  357. package/dist/tanstack/file-upload.js +1 -1
  358. package/dist/tanstack/form.d.ts +3 -3
  359. package/dist/tanstack/form.js +3 -3
  360. package/dist/tanstack/input.d.ts +3 -2
  361. package/dist/tanstack/input.js +1 -1
  362. package/dist/tanstack/number-field.d.ts +3 -2
  363. package/dist/tanstack/number-field.js +1 -1
  364. package/dist/tanstack/number-range-input.d.ts +3 -2
  365. package/dist/tanstack/number-range-input.js +1 -1
  366. package/dist/tanstack/password-input.d.ts +1 -1
  367. package/dist/tanstack/password-input.js +1 -1
  368. package/dist/tanstack/radio-group.d.ts +3 -2
  369. package/dist/tanstack/radio-group.js +1 -1
  370. package/dist/tanstack/rich-text-editor.d.ts +9 -2
  371. package/dist/tanstack/rich-text-editor.js +27 -1
  372. package/dist/tanstack/select.d.ts +3 -2
  373. package/dist/tanstack/select.js +1 -1
  374. package/dist/tanstack/slider.d.ts +3 -2
  375. package/dist/tanstack/slider.js +1 -1
  376. package/dist/tanstack/switch.d.ts +3 -2
  377. package/dist/tanstack/switch.js +1 -1
  378. package/dist/tanstack/table.d.ts +3 -2
  379. package/dist/tanstack/table.js +2 -3
  380. package/dist/tanstack/text-area.d.ts +3 -2
  381. package/dist/tanstack/text-area.js +1 -1
  382. package/dist/tanstack/time-picker.d.ts +3 -2
  383. package/dist/tanstack/time-picker.js +1 -1
  384. package/dist/tanstack/toggle-group.d.ts +3 -3
  385. package/dist/tanstack/toggle-group.js +1 -1
  386. package/dist/tanstack-CSiB125i.d.ts +469 -0
  387. package/dist/tanstack.d.ts +79 -78
  388. package/dist/tanstack.js +87 -83
  389. package/dist/{toast.cva-By5lvAfr.d.ts → toast.cva-B8i61tEN.d.ts} +10 -10
  390. package/dist/{toast.cva-C_L_RffH.js → toast.cva-BMOx7_9f.js} +21 -37
  391. package/dist/{toast.runtime-cxex9e4E.js → toast.runtime-D18gn2Ty.js} +1 -2
  392. package/dist/toggleGroup.cva-C9Y5-kpk.js +26 -0
  393. package/dist/{tooltip.cva-BIzlOXHH.js → tooltip.cva-Clfcn_r2.js} +10 -10
  394. package/dist/tw-ui-plugin.js +5 -1
  395. package/dist/typography.cva-CKCCpIMj.d.ts +36 -0
  396. package/dist/typography.cva-CXolEQdT.js +31 -0
  397. package/dist/{uiConfig.context-DeBX2beU.d.ts → uiConfig.context-B1SCCG5j.d.ts} +12 -20
  398. package/dist/{uiConfig.context-BS3r_kTS.js → uiConfig.context-dxsO9puE.js} +12 -118
  399. package/dist/{uiOverrides.context-DEp139He.d.ts → uiOverrides.context-Dmev7iRS.d.ts} +44 -6
  400. package/dist/useAsyncList-Cu-Y8If2.d.ts +9 -0
  401. package/dist/useAsyncList-yHz7twsj.js +445 -0
  402. package/dist/{useBreakpoint-DQoMN-BG.js → useBreakpoint-DOUmXVZ2.js} +5 -5
  403. package/dist/{useControlledState-CzXkZCX8.js → useControlledState-CuU1VIh1.js} +2 -2
  404. package/dist/useFieldAccessibility-eZIMECmG.js +19 -0
  405. package/dist/{useFilters-XNH27Md2.js → useFilters-HIngImwn.js} +1 -1
  406. package/dist/{form.binding-DVJ5F0JE.d.ts → useForm-I6z23FXf.d.ts} +15 -15
  407. package/dist/{form.binding-CG1RPv6o.js → useForm-eW4KpH1u.js} +79 -42
  408. package/dist/useFormAutosave-BBLm3Ujo.d.ts +34 -0
  409. package/dist/useFormAutosave-XEQqk1lK.js +216 -0
  410. package/dist/useStaticInputHandoff-DyYxfwv6.js +77 -0
  411. package/dist/useTableColumnConfig-DoTYVxqG.js +1349 -0
  412. package/dist/{useTableNav-Ckj5PBRk.d.ts → useTableNav-D2zCwy63.d.ts} +34 -96
  413. package/dist/{useToast-yreVCUer.d.ts → useToast-CA0BGCDK.d.ts} +1 -1
  414. package/dist/{utils-Czcqspm7.js → utils-BkLF-JA3.js} +1 -1
  415. package/package.json +66 -234
  416. package/.rulesync/rules/ui-buttons-and-content.md +0 -56
  417. package/.rulesync/rules/ui-inputs-and-forms.md +0 -62
  418. package/.rulesync/rules/ui-overlays-navigation-and-styling.md +0 -49
  419. package/.rulesync/rules/ui-overview.md +0 -33
  420. package/dist/Alert-CnvEb1D_.js +0 -244
  421. package/dist/AppCanvasPage--RG31Yyv.js +0 -2421
  422. package/dist/AppCanvasPage-BIFYeEeS.d.ts +0 -80
  423. package/dist/Autocomplete-BwNHp8fy.d.ts +0 -15
  424. package/dist/Button-C5rv4Cr2.js +0 -506
  425. package/dist/Button-D-4qb0IR.d.ts +0 -42
  426. package/dist/CheckboxCheckmark-CpC3wlMs.js +0 -178
  427. package/dist/CheckboxGroup-DGF12cmB.d.ts +0 -28
  428. package/dist/ComponentGallery-C6exitZN.js +0 -3513
  429. package/dist/Dialog-CW93T9X1.d.ts +0 -56
  430. package/dist/DropdownMenu-JNpYT4-3.d.ts +0 -62
  431. package/dist/FileUpload-CR7bZxV1.d.ts +0 -7
  432. package/dist/Form-DbEWnCKc.d.ts +0 -49
  433. package/dist/FormField-B99dLt8o.js +0 -212
  434. package/dist/FormFieldHeaderTooltip-BV2Ju4oB.js +0 -17
  435. package/dist/IconButton-D4thBurp.d.ts +0 -16
  436. package/dist/InlineIconButton-BeJCjl-q.d.ts +0 -15
  437. package/dist/InputItem-CIxbTxZu.js +0 -63
  438. package/dist/Inputs-DJSKiaWY.js +0 -17
  439. package/dist/Inputs-O84btFJL.d.ts +0 -13
  440. package/dist/PaginationList-DtvuP63b.js +0 -220
  441. package/dist/QuerySelect-BGxb6Y0K.d.ts +0 -24
  442. package/dist/RadioGroup-CZg2kIMk.d.ts +0 -24
  443. package/dist/RichTextEditor-YxuRUlI7.d.ts +0 -26
  444. package/dist/Select-UR0ec2Ux.js +0 -154
  445. package/dist/Select-pHbyJdZJ.d.ts +0 -15
  446. package/dist/Switch-s_EPn0Jz.d.ts +0 -22
  447. package/dist/Table-BN2_J_Ne.js +0 -636
  448. package/dist/Tag-AHfV_XSf.d.ts +0 -44
  449. package/dist/Tag-DPg5sL1Z.js +0 -146
  450. package/dist/TextButton-XUhV_1s0.d.ts +0 -15
  451. package/dist/TimePicker-B1POvGWs.d.ts +0 -33
  452. package/dist/Toast-DtG3pA61.js +0 -53
  453. package/dist/ToggleButton-7aP8Jb11.d.ts +0 -11
  454. package/dist/ToggleGroup-CRFDIPGZ.d.ts +0 -7
  455. package/dist/Tooltip-DHv6vAqW.d.ts +0 -57
  456. package/dist/UIConfigurator-BwLRfe-a.js +0 -6704
  457. package/dist/autocomplete-DeERHN8W.d.ts +0 -16
  458. package/dist/badgeButton.cva-CvN4CTx5.js +0 -300
  459. package/dist/checkbox-DxIPDTK5.d.ts +0 -9
  460. package/dist/checkbox-group-B3BOVshI.d.ts +0 -9
  461. package/dist/chevron-left-Dgo_b9wJ.js +0 -20
  462. package/dist/chevron-up-D_Gqpb5M.js +0 -20
  463. package/dist/components/inline-icon-button.d.ts +0 -2
  464. package/dist/components/inline-icon-button.js +0 -40
  465. package/dist/components/query-autocomplete.d.ts +0 -8
  466. package/dist/components/query-autocomplete.js +0 -134
  467. package/dist/components/query-select.d.ts +0 -2
  468. package/dist/components/query-select.js +0 -147
  469. package/dist/components/text-button.d.ts +0 -2
  470. package/dist/components/text-button.js +0 -35
  471. package/dist/config/app-canvas-tanstack.d.ts +0 -23
  472. package/dist/config/app-canvas-tanstack.js +0 -62
  473. package/dist/config/app-canvas.d.ts +0 -12
  474. package/dist/config/app-canvas.js +0 -2
  475. package/dist/config/ui-configurator-theme.d.ts +0 -2
  476. package/dist/config/ui-configurator-theme.js +0 -2
  477. package/dist/config/ui-configurator-vite.d.ts +0 -10
  478. package/dist/config/ui-configurator-vite.js +0 -174
  479. package/dist/config/ui-configurator.d.ts +0 -15
  480. package/dist/config/ui-configurator.js +0 -3
  481. package/dist/configuration.context-f_FSPWhQ.d.ts +0 -926
  482. package/dist/date-picker-DnxDmlOW.d.ts +0 -9
  483. package/dist/date-range-picker-DHDOSvHN.d.ts +0 -9
  484. package/dist/date-time-picker-UkTa0OJ8.d.ts +0 -9
  485. package/dist/date.transforms-DLg-eFcE.js +0 -15
  486. package/dist/dropdownMenu.cva-DvEmX0bs.js +0 -34
  487. package/dist/dynamicInputs-ByVMnx4Z.d.ts +0 -772
  488. package/dist/dynamicInputs-CRMWIpHA.js +0 -194
  489. package/dist/dynamicInputs-m_DQu5q0.js +0 -214
  490. package/dist/fieldAdapter-C4sDFC8f.d.ts +0 -9
  491. package/dist/fieldAdapter-DjYls12j.js +0 -63
  492. package/dist/file-input-DkbkdI7l.d.ts +0 -9
  493. package/dist/file-upload-CTsPhxJk.d.ts +0 -10
  494. package/dist/form.types-CecYaerF.d.ts +0 -13
  495. package/dist/form.types-ZNGbcqJS.d.ts +0 -13
  496. package/dist/info-iUmX3uDk.js +0 -32
  497. package/dist/input-CdQNCPgH.d.ts +0 -8
  498. package/dist/input.cva-DJA8ovm_.js +0 -208
  499. package/dist/link.cva-DMTHZiJG.js +0 -12
  500. package/dist/number-field-CUDbenNV.d.ts +0 -8
  501. package/dist/number-range-input-DZGrcvjL.d.ts +0 -8
  502. package/dist/outline.clsx-50W_vNDl.js +0 -6
  503. package/dist/password-input-fYN20cQO.d.ts +0 -8
  504. package/dist/query-autocomplete-CfuQeiYG.d.ts +0 -14
  505. package/dist/query-select-CuT_sE6a.d.ts +0 -15
  506. package/dist/queryAutocomplete.types-tl3r6iaY.d.ts +0 -27
  507. package/dist/radio-group-B3ccPf0p.d.ts +0 -9
  508. package/dist/rhf/autocomplete.d.ts +0 -3
  509. package/dist/rhf/autocomplete.js +0 -8
  510. package/dist/rhf/checkbox-group.d.ts +0 -3
  511. package/dist/rhf/checkbox-group.js +0 -8
  512. package/dist/rhf/checkbox.d.ts +0 -3
  513. package/dist/rhf/checkbox.js +0 -8
  514. package/dist/rhf/date-picker.d.ts +0 -3
  515. package/dist/rhf/date-picker.js +0 -9
  516. package/dist/rhf/date-range-picker.d.ts +0 -3
  517. package/dist/rhf/date-range-picker.js +0 -9
  518. package/dist/rhf/date-time-picker.d.ts +0 -3
  519. package/dist/rhf/date-time-picker.js +0 -9
  520. package/dist/rhf/file-input.d.ts +0 -3
  521. package/dist/rhf/file-input.js +0 -6
  522. package/dist/rhf/file-upload.d.ts +0 -3
  523. package/dist/rhf/file-upload.js +0 -6
  524. package/dist/rhf/input.d.ts +0 -3
  525. package/dist/rhf/input.js +0 -6
  526. package/dist/rhf/inputs.d.ts +0 -4
  527. package/dist/rhf/inputs.js +0 -2
  528. package/dist/rhf/number-field.d.ts +0 -3
  529. package/dist/rhf/number-field.js +0 -6
  530. package/dist/rhf/number-range-input.d.ts +0 -3
  531. package/dist/rhf/number-range-input.js +0 -6
  532. package/dist/rhf/password-input.d.ts +0 -3
  533. package/dist/rhf/password-input.js +0 -6
  534. package/dist/rhf/query-autocomplete.d.ts +0 -2
  535. package/dist/rhf/query-autocomplete.js +0 -8
  536. package/dist/rhf/query-select.d.ts +0 -2
  537. package/dist/rhf/query-select.js +0 -8
  538. package/dist/rhf/radio-group.d.ts +0 -3
  539. package/dist/rhf/radio-group.js +0 -8
  540. package/dist/rhf/rich-text-editor.d.ts +0 -3
  541. package/dist/rhf/rich-text-editor.js +0 -6
  542. package/dist/rhf/select.d.ts +0 -3
  543. package/dist/rhf/select.js +0 -8
  544. package/dist/rhf/slider.d.ts +0 -3
  545. package/dist/rhf/slider.js +0 -6
  546. package/dist/rhf/switch.d.ts +0 -3
  547. package/dist/rhf/switch.js +0 -8
  548. package/dist/rhf/text-area.d.ts +0 -3
  549. package/dist/rhf/text-area.js +0 -6
  550. package/dist/rhf/time-picker.d.ts +0 -3
  551. package/dist/rhf/time-picker.js +0 -9
  552. package/dist/rhf/toggle-group.d.ts +0 -3
  553. package/dist/rhf/toggle-group.js +0 -6
  554. package/dist/rhf-t348TCCL.js +0 -256
  555. package/dist/rhf.d.ts +0 -106
  556. package/dist/rhf.js +0 -112
  557. package/dist/rich-text-editor-B-Onl7T8.d.ts +0 -8
  558. package/dist/select-B4a52eWW.d.ts +0 -16
  559. package/dist/selectDesktop.cva-CHAMxhfO.js +0 -69
  560. package/dist/slider-dNj9jruO.d.ts +0 -8
  561. package/dist/style-merge.util-zLimKwt6.d.ts +0 -40
  562. package/dist/styles/app-canvas.css +0 -740
  563. package/dist/styles/color-utilities.css +0 -20
  564. package/dist/styles/configurator.css +0 -3280
  565. package/dist/switch-C--iWnY8.d.ts +0 -9
  566. package/dist/switch.cva-CWNzmdRc.d.ts +0 -16
  567. package/dist/table.cva-D5oQ-QvA.js +0 -101
  568. package/dist/tanstack/inputs.d.ts +0 -5
  569. package/dist/tanstack/inputs.js +0 -3
  570. package/dist/tanstack/query-autocomplete.d.ts +0 -2
  571. package/dist/tanstack/query-autocomplete.js +0 -2
  572. package/dist/tanstack/query-select.d.ts +0 -2
  573. package/dist/tanstack/query-select.js +0 -2
  574. package/dist/text-area-DQAtpOQp.d.ts +0 -8
  575. package/dist/theme-model-DtYPxNvH.js +0 -406
  576. package/dist/theme-model-T1zIdBg8.d.ts +0 -12
  577. package/dist/time-picker-DoGfbil6.d.ts +0 -9
  578. package/dist/toggle-group-C1nMDOwz.d.ts +0 -9
  579. package/dist/toggleGroup.cva-MbpaEBg1.js +0 -35
  580. package/dist/typography.cva-D1JOEYl-.d.ts +0 -36
  581. package/dist/typography.cva-iD15k56p.js +0 -51
  582. package/dist/underline-66hmELxa.js +0 -81
  583. package/dist/upload-CXU83BJ4.js +0 -30
  584. package/dist/useFormAutosave-DfuP7drj.js +0 -198
  585. package/dist/useQueryAutocomplete-CraXvRm_.js +0 -152
  586. package/dist/useTableColumnConfig-Di0_w80v.js +0 -892
  587. package/dist/zod.utils-DrrPDT9v.js +0 -24
  588. package/rulesync.jsonc +0 -11
  589. package/scripts/generate-rules.mjs +0 -34
  590. package/src/configurator/README.md +0 -77
  591. package/dist/{import-BE0r63d8.js → import-D_3dPATF.js} +2 -2
  592. /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
- UI Components that match Povio's Atlas Design System.
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/tanstack/select";
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 inputs are available from matching integration paths, such as `@povio/ui/rhf/input` and `@povio/ui/tanstack/input`. Dynamic input builders are exposed from `@povio/ui/rhf/inputs` and `@povio/ui/tanstack/inputs`.
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 broad `@povio/ui`, `@povio/ui/rhf`, and `@povio/ui/tanstack` entries remain for compatibility. They are not recommended for new application imports because they reconnect otherwise independent feature graphs.
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
- Feature dependencies are optional peers. Install the matching packages when using date/calendar entries, `@povio/ui/tanstack/table`, RHF/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.
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 the theme's `badge-*` spacing and radius tokens; customize its recipe through `UIOverrides.badgeButton`.
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/ui-configurator`, with its stylesheet at `@povio/ui/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/ui-configurator/theme` entry.
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/ui-configurator/vite";
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](./src/configurator/README.md) for provider setup, preview behavior, and supported theme blocks.
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`, `InlineIconButton`, `TextButton`, `ToggleButton`, and `SplitButton`.
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` uses the existing small spacing tokens, and `default` uses the medium spacing tokens.
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 `<TextButton size="none">Read more</TextButton>` for a text action without button padding.
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
- ## Built-package tests
196
+ ## Date and time values
76
197
 
77
- 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.
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
- ## Versioning
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
- `^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.
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
- ## AI component rules
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
- The package ships RuleSync source rules in `.rulesync/` and `rulesync.jsonc`. They document the public component API, standard aliases, form contracts, accessibility expectations, and styling conventions for AI coding tools. Generated tool files are deliberately excluded from the published npm package.
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
- To generate the UI rules into a consuming project's repository root, install [`rulesync`](https://github.com/dyoshikawa/rulesync) (`^8.15.0`) in that project, then run the executable bundled with `@povio/ui`:
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
- ```bash
90
- bunx --package @povio/ui povio-ui-rules
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
- This generates the relevant Cursor, Claude Code, and Codex CLI files in the consuming repository. Add generated files to that repository's `.gitignore` unless they are intentionally versioned. Re-run the command after upgrading `@povio/ui`; verify without writing files by adding `--check` (for example, `bunx --package @povio/ui povio-ui-rules --check`).
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
- Within this monorepo, the equivalent package-local commands are `bun run --filter @povio/ui rules:gen` and `bun run --filter @povio/ui rules:check`.
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
- ### State color utilities
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
- ```css
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 the Figma `icons-size` spacing token (`--spacing-icons-size`, exposed as `size-icons-size`) and centers an SVG at 80% of that size. Buttons and input icon props use it automatically, whether you pass a component reference or an element. Export this token in your Tailwind theme alongside the other Figma spacing tokens.
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/rhf`, `@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.
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 `tokenSize` and `scale` in Controls and enable slot outlines to compare against the Figma frame at 100% browser zoom.
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
- From RC.9, Povio UI includes a ready-made page for inspecting all your TanStack Router pages. Install `@povio/ui@5.0.0-rc.9` and retain your application's existing `@tanstack/react-router` dependency (an optional peer for this integration).
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-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-Czcqspm7.js";
6
- import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-D6KlWSFL.js";
7
- import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-nI1_VOaE.js";
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-CL1bVscW.js";
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.1+67f6792bdf102c28/node_modules/react-aria-components/dist/private/Disclosure.mjs
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-accordion-gap-icon-to-text",
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: "small",
165
+ size: "body",
166
166
  className: headingTitleCva({}),
167
167
  children: heading
168
168
  }),
169
169
  subheading && /* @__PURE__ */ jsx(Typography, {
170
- size: "small",
170
+ size: "body",
171
171
  className: headingSubtitleCva({}),
172
172
  children: subheading
173
173
  })
@@ -1,12 +1,12 @@
1
- import { t as StyleMergeUtils } from "./style-merge.util-zLimKwt6.js";
2
- import { t as UIOverrides } from "./uiOverrides.context-DEp139He.js";
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: "border bg-surface-default-card text-surface-default-card-foreground";
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-C7kEhgoA.js";
2
- import { n as DialogProps } from "./Dialog-CW93T9X1.js";
3
- import { r as TypographyPropsCva } from "./Typography-XljT9s02.js";
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 };