@povio/ui 4.0.2 → 5.0.0-rc.2

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