@povio/ui 5.0.0-rc.1 → 5.0.0-rc.11

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 (452) hide show
  1. package/.rulesync/rules/ui-buttons-and-content.md +56 -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 +102 -17
  6. package/dist/{Accordion-CzFKi8Bp.js → Accordion-BzwO4_ml.js} +20 -136
  7. package/dist/{Alert-T25LY8ZL.js → Alert-CnvEb1D_.js} +16 -12
  8. package/dist/{Alert-f1dG-4Uy.d.ts → Alert-DfiJbKH0.d.ts} +2 -1
  9. package/dist/{AlertDialog-B6R2MbNg.d.ts → AlertDialog-OWTbR4km.d.ts} +3 -3
  10. package/dist/AppCanvasPage-BTmt8poT.d.ts +82 -0
  11. package/dist/AppCanvasPage-BsQrZ8q7.js +2497 -0
  12. package/dist/{Autocomplete-CQ63Cynd.d.ts → Autocomplete-C6RRxImn.d.ts} +1 -1
  13. package/dist/{Badge-YKlKz-Jy.d.ts → Badge-CBNpj823.d.ts} +8 -5
  14. package/dist/BadgeButton-Ccgt3oGO.d.ts +15 -0
  15. package/dist/{BottomSheet-DvqBvth_.js → BottomSheet-BXLE3161.js} +7 -6
  16. package/dist/{BottomSheet-xaymO7aQ.d.ts → BottomSheet-DbQuzfAB.d.ts} +1 -1
  17. package/dist/{BottomSheet.lazy-CGBRPve_.d.ts → BottomSheet.lazy-D9LCEo7s.d.ts} +1 -1
  18. package/dist/{Breadcrumbs-DyriI-Bi.d.ts → Breadcrumbs-CUV6CU8Q.d.ts} +1 -1
  19. package/dist/{Breadcrumbs-DiIYJAWf.js → Breadcrumbs-FF8hMfXd.js} +24 -38
  20. package/dist/Button-C5rv4Cr2.js +506 -0
  21. package/dist/{Button-BZ3is6IU.d.ts → Button-D-4qb0IR.d.ts} +3 -3
  22. package/dist/{ButtonContent-B2_dZ6vA.js → ButtonContent-c7lJayVQ.js} +10 -8
  23. package/dist/{Calendar-DzQApBCy.js → Calendar-DRHruqr_.js} +26 -148
  24. package/dist/CanvasComponentsFrame-C0Sf9RcC.js +21 -0
  25. package/dist/{CheckContent-DZ7Gk8GS.js → CheckContent-D7sZPmzx.js} +2 -2
  26. package/dist/{Checkbox-BepzfVfK.js → Checkbox-D3f2Plbc.js} +6 -6
  27. package/dist/{Checkbox-CHpgW3fI.d.ts → Checkbox-x2MuL477.d.ts} +1 -1
  28. package/dist/{CheckboxCheckmark-B3lnOjsU.js → CheckboxCheckmark-FwKjPVbV.js} +19 -16
  29. package/dist/{CheckboxGroup-CXrR3A-c.d.ts → CheckboxGroup-Dio2rvF5.d.ts} +3 -3
  30. package/dist/ComponentGallery-DDSqnm9f.js +3574 -0
  31. package/dist/{DatePicker-B3l9TEjW.d.ts → DatePicker-1LJ2LqST.d.ts} +3 -3
  32. package/dist/{DatePicker-CI87jC4_.js → DatePicker-xDEqzNJv.js} +17 -16
  33. package/dist/{DatePickerInput-UBZcTmdv.js → DatePickerInput-B0fEeCOf.js} +17 -27
  34. package/dist/{DatePickerInput-CZTEsrS0.d.ts → DatePickerInput-ai4apf8B.d.ts} +3 -3
  35. package/dist/{DateRangePicker-DKkc2B3n.d.ts → DateRangePicker-Dfptit_Z.d.ts} +3 -3
  36. package/dist/{DateRangePicker-BX2O5zA8.js → DateRangePicker-DxuVhRaf.js} +26 -195
  37. package/dist/{DateTimePicker-CVfkp45w.js → DateTimePicker-4N1Pka07.js} +16 -15
  38. package/dist/{DateTimePicker-IHr-wPq8.d.ts → DateTimePicker-DpsfukpQ.d.ts} +3 -3
  39. package/dist/{Dialog-DdRP4YFC.js → Dialog-9manOgMA.js} +4 -4
  40. package/dist/{Dialog-CXoVeIkU.js → Dialog-CKLkS00H.js} +10 -2
  41. package/dist/{Dialog-DEbI_9S-.d.ts → Dialog-CW93T9X1.d.ts} +3 -2
  42. package/dist/{DropdownMenu-zrodtd44.js → DropdownMenu-5jmtgLXd.js} +8 -6
  43. package/dist/{DropdownMenu-CWDhk3XA.d.ts → DropdownMenu-JNpYT4-3.d.ts} +3 -2
  44. package/dist/{DropdownMenuDesktop-CGYxsavQ.js → DropdownMenuDesktop-Cl9gZVq0.js} +9 -38
  45. package/dist/{FileInput-Dz1eESr_.js → FileInput-DUyc_sVu.js} +11 -9
  46. package/dist/{FileInput-BQbn77bE.d.ts → FileInput-Dt3UDg2s.d.ts} +5 -4
  47. package/dist/{FileTrigger-CDXcQthK.js → FileTrigger-Cthk5_Wp.js} +1 -30
  48. package/dist/{FileUpload-qySCMcLn.d.ts → FileUpload-BXlKtQ4L.d.ts} +1 -1
  49. package/dist/{FileUpload-D3Io7Is5.js → FileUpload-Cx98L1jz.js} +53 -140
  50. package/dist/{FileUploadContainer-qOyGvb5J.d.ts → FileUploadContainer-BURZAS2M.d.ts} +1 -1
  51. package/dist/{Form-u_N_6mwo.d.ts → Form-DmcByQts.d.ts} +1 -1
  52. package/dist/{FormField-CHD4OJOt.js → FormField-9h3JAhaY.js} +11 -10
  53. package/dist/{FormField-B0miX3gu.d.ts → FormField-C8_T6by9.d.ts} +1 -1
  54. package/dist/{FormFieldError-QRAFHUTt.js → FormFieldError-DeOHHLo2.js} +1 -1
  55. package/dist/FormFieldHeaderTooltip-BV2Ju4oB.js +17 -0
  56. package/dist/{IconButton-KXecZgYX.d.ts → IconButton-D4thBurp.d.ts} +2 -2
  57. package/dist/IconSlot-DSK7qNxc.js +79 -0
  58. package/dist/{InlineIconButton-CbKZ2U_a.d.ts → InlineIconButton-BeJCjl-q.d.ts} +2 -2
  59. package/dist/{InlineTooltipWrapper-g5yoeH1B.js → InlineTooltipWrapper-BpApaGXV.js} +3 -3
  60. package/dist/{Input-efmPwk8f.d.ts → Input-CHD67H4o.d.ts} +3 -3
  61. package/dist/{InputContent-DuBa9FuI.d.ts → InputContent-B6CIQNnE.d.ts} +3 -3
  62. package/dist/{InputItem-2zf6QI5L.js → InputItem-Cv19Hwnx.js} +11 -11
  63. package/dist/{Inputs-C-w03Q_F.d.ts → Inputs-C0sUmuPv.d.ts} +1 -1
  64. package/dist/{Inputs-BceDTmdT.js → Inputs-D1aE_J9f.js} +1 -1
  65. package/dist/{Link-QYpprkN1.d.ts → Link-Ow9H7kNv.d.ts} +3 -2
  66. package/dist/{ListBox-B7DW1S7n.js → ListBox-CL8Ar4Q_.js} +5 -4
  67. package/dist/{MenuItem--Mjd_yK8.d.ts → MenuItem-DHyqOqln.d.ts} +1 -1
  68. package/dist/{Modal-CoFt5PGP.js → Modal-w60dVQcb.js} +1 -1
  69. package/dist/{NumberField-z2JatYK0.d.ts → NumberField-4SX3R6IR.d.ts} +3 -3
  70. package/dist/NumberFormatter-CLDS_LRZ.js +265 -0
  71. package/dist/{NumberRangeInput-BxVrHq8R.js → NumberRangeInput-Bzfe-RlV.js} +9 -8
  72. package/dist/{NumberRangeInput-Chai3iEi.d.ts → NumberRangeInput-CKmLfgVD.d.ts} +2 -2
  73. package/dist/{Pagination-CXtIDclf.d.ts → Pagination-CwQu5Py8.d.ts} +1 -1
  74. package/dist/{PaginationList-CXG4jWFD.d.ts → PaginationList-DMRUGtf8.d.ts} +1 -1
  75. package/dist/{PaginationList-0bAmvXC0.js → PaginationList-DtvuP63b.js} +2 -2
  76. package/dist/{PasswordInput-ub2TQxef.d.ts → PasswordInput-tLGcHS6H.d.ts} +1 -1
  77. package/dist/{Popover-DUKH0q9u.d.ts → Popover-BTHPteIh.d.ts} +2 -2
  78. package/dist/{Progress-DQWiFP0L.js → Progress-B3mY9rIP.js} +2 -2
  79. package/dist/{Progress-Dho39FDs.d.ts → Progress-CjWOR38H.d.ts} +2 -1
  80. package/dist/{QuerySelect-Bo1K6gi_.d.ts → QuerySelect-CgfnA3d-.d.ts} +2 -2
  81. package/dist/{RadioGroup-B_zJdn4y.d.ts → RadioGroup-CvmI9i_U.d.ts} +3 -3
  82. package/dist/{RadioGroup-SSZYch-J.js → RadioGroup-efBKgTYA.js} +13 -13
  83. package/dist/{RichTextEditor-D6RewmRj.js → RichTextEditor-Bd7F5D8f.js} +52 -133
  84. package/dist/{RichTextEditor-B_JX3nor.d.ts → RichTextEditor-CsDZcgyf.d.ts} +1 -1
  85. package/dist/{Select-CuZDkeQs.js → Select-CgIhoWgk.js} +5 -4
  86. package/dist/{Select-DeapZMYx.d.ts → Select-DKBPfNUe.d.ts} +1 -1
  87. package/dist/{SelectBase-7SE9Za2r.d.ts → SelectBase-BkIhS9Dg.d.ts} +3 -3
  88. package/dist/{Slider-BFViQmM3.d.ts → Slider-BtUXzztJ.d.ts} +1 -1
  89. package/dist/{Slider-DJ9K_a-x.js → Slider-CMg0BXJO.js} +11 -11
  90. package/dist/{Spinner-BEYBu85B.js → Spinner-BeVTUzzx.js} +1 -1
  91. package/dist/{Spinner-BbcI6IOb.d.ts → Spinner-DbXeDOa2.d.ts} +2 -1
  92. package/dist/{SplitButton-lL87EcBL.d.ts → SplitButton-D9ngY1rJ.d.ts} +3 -3
  93. package/dist/{Stepper-C1YPgTBG.js → Stepper-Cp5vbL5g.js} +4 -117
  94. package/dist/{Stepper-hlhViuaK.d.ts → Stepper-TATlHZhQ.d.ts} +9 -8
  95. package/dist/{Switch-JxRmH1dX.js → Switch-CqnGEdeD.js} +11 -11
  96. package/dist/{Switch-DPftmB1b.d.ts → Switch-s_EPn0Jz.d.ts} +1 -1
  97. package/dist/Table-BN2_J_Ne.js +636 -0
  98. package/dist/Tag-AHfV_XSf.d.ts +44 -0
  99. package/dist/{Tag-HiDH438e.js → Tag-DPg5sL1Z.js} +22 -21
  100. package/dist/{TextArea-BhrCBGbq.d.ts → TextArea-D6kcAwGn.d.ts} +2 -2
  101. package/dist/{TextArea-gikUKKDl.js → TextArea-uPffb457.js} +7 -7
  102. package/dist/{TextButton-DnXRykhF.d.ts → TextButton-XUhV_1s0.d.ts} +4 -4
  103. package/dist/{TimePicker-DtNTOOGr.js → TimePicker-DN-i98z5.js} +15 -14
  104. package/dist/{TimePicker-CmT89X7v.d.ts → TimePicker-Dex9aU7D.d.ts} +2 -2
  105. package/dist/Toast-DtG3pA61.js +53 -0
  106. package/dist/{Toast-B4cXs2rj.d.ts → Toast-ruXqONDA.d.ts} +1 -1
  107. package/dist/{ToastContainer-BbsMIwtC.js → ToastContainer-qgpzMFD4.js} +4 -3
  108. package/dist/{ToggleButton-BGuzPJDO.d.ts → ToggleButton-7aP8Jb11.d.ts} +2 -2
  109. package/dist/{ToggleGroup-D9CFdM5-.d.ts → ToggleGroup-CRFDIPGZ.d.ts} +1 -1
  110. package/dist/{ToggleGroup-Cl0NS3fe.js → ToggleGroup-DmVPNWok.js} +29 -123
  111. package/dist/{Tooltip-aE1Vswxz.js → Tooltip-CpG1nz7Y.js} +8 -49
  112. package/dist/{Tooltip-D7dNwGy9.d.ts → Tooltip-DHv6vAqW.d.ts} +6 -5
  113. package/dist/{TooltipWrapper-CRf-JFeo.js → TooltipWrapper-CDHFaUKZ.js} +4 -4
  114. package/dist/{Typography-B0Gp1lpc.js → Typography-LU4z2pR1.js} +2 -2
  115. package/dist/{Typography-BiuidzDC.d.ts → Typography-XljT9s02.d.ts} +1 -1
  116. package/dist/UIConfigurator-C_2kgJtm.js +6880 -0
  117. package/dist/accordion.cva-CL1bVscW.js +129 -0
  118. package/dist/{autocomplete-BJ7rqWa4.d.ts → autocomplete-B-JuxTYN.d.ts} +2 -2
  119. package/dist/badgeButton.cva-B2bgCQP6.d.ts +41 -0
  120. package/dist/badgeButton.cva-CvN4CTx5.js +300 -0
  121. package/dist/breadcrumbs.cva-7zzdDhVR.js +27 -0
  122. package/dist/{button.cva-BvRI-3Gn.d.ts → button.cva-C7kEhgoA.d.ts} +7 -6
  123. package/dist/{buttonContent.cva-BDT_CReI.d.ts → buttonContent.cva-DPIlROA9.d.ts} +2 -2
  124. package/dist/{checkbox-BfcE8J5P.d.ts → checkbox-CRP4QRfP.d.ts} +1 -1
  125. package/dist/{checkbox-group-CHs2wFHS.d.ts → checkbox-group-BI_RwIJ4.d.ts} +1 -1
  126. package/dist/{checkbox.cva-gv87kr1W.d.ts → checkbox.cva-DBqfmYHY.d.ts} +5 -4
  127. package/dist/components/accordion.js +1 -1
  128. package/dist/components/alert-dialog.d.ts +1 -1
  129. package/dist/components/alert-dialog.js +4 -4
  130. package/dist/components/alert.d.ts +1 -1
  131. package/dist/components/alert.js +1 -1
  132. package/dist/components/autocomplete.d.ts +1 -1
  133. package/dist/components/autocomplete.js +5 -4
  134. package/dist/components/badge-button.d.ts +2 -0
  135. package/dist/components/{pill-button.js → badge-button.js} +13 -12
  136. package/dist/components/badge.d.ts +1 -1
  137. package/dist/components/badge.js +56 -37
  138. package/dist/components/bottom-sheet.d.ts +2 -2
  139. package/dist/components/bottom-sheet.js +2 -2
  140. package/dist/components/breadcrumbs.d.ts +1 -1
  141. package/dist/components/breadcrumbs.js +1 -1
  142. package/dist/components/button.d.ts +2 -2
  143. package/dist/components/button.js +1 -1
  144. package/dist/components/checkbox-group.d.ts +1 -1
  145. package/dist/components/checkbox-group.js +6 -6
  146. package/dist/components/checkbox.d.ts +1 -1
  147. package/dist/components/checkbox.js +1 -1
  148. package/dist/components/date-picker.d.ts +1 -1
  149. package/dist/components/date-picker.js +1 -1
  150. package/dist/components/date-range-picker.d.ts +1 -1
  151. package/dist/components/date-range-picker.js +1 -1
  152. package/dist/components/date-time-picker.d.ts +1 -1
  153. package/dist/components/date-time-picker.js +1 -1
  154. package/dist/components/dialog.d.ts +1 -1
  155. package/dist/components/dialog.js +1 -1
  156. package/dist/components/drawer.js +3 -3
  157. package/dist/components/dropdown-menu.d.ts +2 -2
  158. package/dist/components/dropdown-menu.js +2 -2
  159. package/dist/components/file-input.d.ts +1 -1
  160. package/dist/components/file-input.js +1 -1
  161. package/dist/components/file-upload-container.d.ts +2 -2
  162. package/dist/components/file-upload-container.js +1 -1
  163. package/dist/components/file-upload.d.ts +2 -2
  164. package/dist/components/file-upload.js +1 -1
  165. package/dist/components/form-field.d.ts +1 -1
  166. package/dist/components/form-field.js +1 -1
  167. package/dist/components/icon-button.d.ts +1 -1
  168. package/dist/components/icon-button.js +2 -2
  169. package/dist/components/icon-slot.d.ts +2 -0
  170. package/dist/components/icon-slot.js +2 -0
  171. package/dist/components/inline-icon-button.d.ts +1 -1
  172. package/dist/components/inline-icon-button.js +1 -1
  173. package/dist/components/input.d.ts +1 -1
  174. package/dist/components/input.js +7 -7
  175. package/dist/components/link.d.ts +1 -1
  176. package/dist/components/link.js +32 -1
  177. package/dist/components/number-field.d.ts +1 -1
  178. package/dist/components/number-field.js +10 -9
  179. package/dist/components/number-range-input.d.ts +1 -1
  180. package/dist/components/number-range-input.js +1 -1
  181. package/dist/components/pagination-list.d.ts +1 -1
  182. package/dist/components/pagination-list.js +1 -1
  183. package/dist/components/pagination.d.ts +1 -1
  184. package/dist/components/pagination.js +34 -30
  185. package/dist/components/password-input.d.ts +1 -1
  186. package/dist/components/popover.d.ts +1 -1
  187. package/dist/components/popover.js +6 -5
  188. package/dist/components/progress.d.ts +1 -1
  189. package/dist/components/progress.js +1 -1
  190. package/dist/components/query-autocomplete.d.ts +2 -2
  191. package/dist/components/query-autocomplete.js +10 -5
  192. package/dist/components/query-select.d.ts +1 -1
  193. package/dist/components/query-select.js +3 -3
  194. package/dist/components/radio-group.d.ts +1 -1
  195. package/dist/components/radio-group.js +1 -1
  196. package/dist/components/select.d.ts +2 -2
  197. package/dist/components/select.js +1 -1
  198. package/dist/components/slider.d.ts +1 -1
  199. package/dist/components/slider.js +1 -1
  200. package/dist/components/spinner.d.ts +1 -1
  201. package/dist/components/spinner.js +1 -1
  202. package/dist/components/split-button.d.ts +1 -1
  203. package/dist/components/split-button.js +3 -3
  204. package/dist/components/stepper.d.ts +1 -1
  205. package/dist/components/stepper.js +1 -1
  206. package/dist/components/switch.d.ts +1 -1
  207. package/dist/components/switch.js +1 -1
  208. package/dist/components/tag.d.ts +1 -1
  209. package/dist/components/tag.js +1 -1
  210. package/dist/components/text-area.d.ts +1 -1
  211. package/dist/components/text-area.js +1 -1
  212. package/dist/components/text-button.d.ts +1 -1
  213. package/dist/components/text-button.js +1 -1
  214. package/dist/components/time-picker.d.ts +1 -1
  215. package/dist/components/time-picker.js +1 -1
  216. package/dist/components/toast.d.ts +2 -2
  217. package/dist/components/toast.js +2 -2
  218. package/dist/components/toggle-button.d.ts +1 -1
  219. package/dist/components/toggle-button.js +1 -1
  220. package/dist/components/toggle-group.d.ts +2 -2
  221. package/dist/components/toggle-group.js +1 -1
  222. package/dist/components/tooltip-ellipsis.js +1 -1
  223. package/dist/components/tooltip.d.ts +1 -1
  224. package/dist/components/tooltip.js +1 -1
  225. package/dist/components/typography.d.ts +2 -2
  226. package/dist/components/typography.js +1 -1
  227. package/dist/components/use-toast.d.ts +1 -1
  228. package/dist/components/use-toast.js +2 -2
  229. package/dist/config/app-canvas-tanstack.d.ts +23 -0
  230. package/dist/config/app-canvas-tanstack.js +62 -0
  231. package/dist/config/app-canvas.d.ts +12 -0
  232. package/dist/config/app-canvas.js +2 -0
  233. package/dist/config/confirmation.d.ts +1 -1
  234. package/dist/config/link-context.d.ts +2 -2
  235. package/dist/config/ui-config.d.ts +2 -2
  236. package/dist/config/ui-config.js +1 -1
  237. package/dist/config/ui-configurator-theme.d.ts +2 -0
  238. package/dist/config/ui-configurator-theme.js +2 -0
  239. package/dist/config/ui-configurator-vite.d.ts +10 -0
  240. package/dist/config/ui-configurator-vite.js +174 -0
  241. package/dist/config/ui-configurator.d.ts +15 -0
  242. package/dist/config/ui-configurator.js +3 -0
  243. package/dist/config/ui-overrides.d.ts +1 -1
  244. package/dist/config/ui-overrides.js +1 -1
  245. package/dist/config/ui-router.js +1 -1
  246. package/dist/configuration.context-qdjDwQJj.d.ts +938 -0
  247. package/dist/{confirmation.context-DPAKsLYl.d.ts → confirmation.context-BOeEVczb.d.ts} +1 -1
  248. package/dist/{date-picker-BYFWSbN8.d.ts → date-picker-BhIA01qs.d.ts} +1 -1
  249. package/dist/{date-range-picker-BaaXOObm.d.ts → date-range-picker-BsuZ2h_3.d.ts} +1 -1
  250. package/dist/{date-time-picker-D42cTCgx.d.ts → date-time-picker-Bi-qW6vO.d.ts} +1 -1
  251. package/dist/datePickerInput.cva-Cd7UUN61.js +14 -0
  252. package/dist/{datePickerValue.utils-CFCY-fRJ.js → datePickerValue.utils-QWR2q5Vv.js} +9 -9
  253. package/dist/{dialog.cva---xiOXMQ.js → dialog.cva-COhDZaVl.js} +4 -4
  254. package/dist/{dist-B8h0VT0E.js → dist-CAdwxJbe.js} +1 -208
  255. package/dist/{dom.utils-DjuRTR6U.js → dom.utils-D1AopHx9.js} +1 -1
  256. package/dist/dropdownMenu.cva-DvEmX0bs.js +34 -0
  257. package/dist/{dynamicInputs-wEEikYeg.d.ts → dynamicInputs-DdcsSoYu.d.ts} +102 -100
  258. package/dist/{fieldAdapter-C0lCFmf0.js → fieldAdapter-DjYls12j.js} +1 -1
  259. package/dist/{file-input-C56GXRwz.d.ts → file-input-BTYsGgr7.d.ts} +1 -1
  260. package/dist/{file-upload-Bx0X534g.d.ts → file-upload-CqGdt1Ue.d.ts} +2 -2
  261. package/dist/fileUpload.cva-ujmStxB1.js +42 -0
  262. package/dist/{fileUpload.types-DWuQKA2l.d.ts → fileUpload.types-rIGu4MgY.d.ts} +2 -2
  263. package/dist/groups-oQmSeqXn.js +18 -0
  264. package/dist/hooks/use-filters.js +1 -1
  265. package/dist/iconSlot.cva-CnpFzAOR.d.ts +21 -0
  266. package/dist/icons.d.ts +2 -1
  267. package/dist/icons.js +2 -1
  268. package/dist/index.d.ts +87 -86
  269. package/dist/index.js +57 -46
  270. package/dist/info-iUmX3uDk.js +32 -0
  271. package/dist/{input-D2kGX0hW.d.ts → input-CqNMORk8.d.ts} +1 -1
  272. package/dist/{input.cva-BhDJxc7r.d.ts → input.cva-CQPV5gW7.d.ts} +3 -2
  273. package/dist/{input.cva-BcXyC1vZ.js → input.cva-CbMTwuQU.js} +58 -39
  274. package/dist/{link.context-CDZn6oL2.d.ts → link.context-D5qyz9Rf.d.ts} +1 -1
  275. package/dist/link.cva-DMTHZiJG.js +12 -0
  276. package/dist/{number-field-Bw2GKr0s.d.ts → number-field-BcMnahI8.d.ts} +1 -1
  277. package/dist/{number-range-input-Dqe6x2dR.d.ts → number-range-input-CLfuacKv.d.ts} +1 -1
  278. package/dist/numberStatic.utils-BX50PSee.js +421 -0
  279. package/dist/{password-input-DepKyhh3.d.ts → password-input-BV1Amdc8.d.ts} +1 -1
  280. package/dist/{popover.cva-BJSkLndY.js → popover.cva-Bhud1wnp.js} +1 -1
  281. package/dist/popoverAnimation-DEZSvKP8.js +4 -0
  282. package/dist/{query-autocomplete-BSpHin_R.d.ts → query-autocomplete-CJSJeSXW.d.ts} +2 -2
  283. package/dist/{query-select-m1DCp4UF.d.ts → query-select-B-VLz1PW.d.ts} +2 -2
  284. package/dist/{queryAutocomplete.types-CrbVUmvl.d.ts → queryAutocomplete.types-D2w1_hau.d.ts} +2 -2
  285. package/dist/{radio-group-Civ3Fb70.d.ts → radio-group-DZZdQMub.d.ts} +1 -1
  286. package/dist/{radio.cva-BlOrmxzf.d.ts → radio.cva-DN9VQ3Kb.d.ts} +4 -3
  287. package/dist/rhf/autocomplete.d.ts +2 -2
  288. package/dist/rhf/autocomplete.js +1 -1
  289. package/dist/rhf/checkbox-group.d.ts +2 -2
  290. package/dist/rhf/checkbox-group.js +1 -1
  291. package/dist/rhf/checkbox.d.ts +2 -2
  292. package/dist/rhf/checkbox.js +2 -2
  293. package/dist/rhf/date-picker.d.ts +2 -2
  294. package/dist/rhf/date-picker.js +2 -2
  295. package/dist/rhf/date-range-picker.d.ts +2 -2
  296. package/dist/rhf/date-range-picker.js +2 -2
  297. package/dist/rhf/date-time-picker.d.ts +2 -2
  298. package/dist/rhf/date-time-picker.js +2 -2
  299. package/dist/rhf/file-input.d.ts +2 -2
  300. package/dist/rhf/file-input.js +2 -2
  301. package/dist/rhf/file-upload.d.ts +2 -2
  302. package/dist/rhf/file-upload.js +2 -2
  303. package/dist/rhf/input.d.ts +2 -2
  304. package/dist/rhf/input.js +1 -1
  305. package/dist/rhf/inputs.d.ts +2 -2
  306. package/dist/rhf/number-field.d.ts +2 -2
  307. package/dist/rhf/number-field.js +1 -1
  308. package/dist/rhf/number-range-input.d.ts +2 -2
  309. package/dist/rhf/number-range-input.js +2 -2
  310. package/dist/rhf/password-input.d.ts +2 -2
  311. package/dist/rhf/password-input.js +1 -1
  312. package/dist/rhf/query-autocomplete.d.ts +1 -1
  313. package/dist/rhf/query-autocomplete.js +1 -1
  314. package/dist/rhf/query-select.d.ts +1 -1
  315. package/dist/rhf/query-select.js +1 -1
  316. package/dist/rhf/radio-group.d.ts +2 -2
  317. package/dist/rhf/radio-group.js +2 -2
  318. package/dist/rhf/rich-text-editor.d.ts +2 -2
  319. package/dist/rhf/rich-text-editor.js +2 -2
  320. package/dist/rhf/select.d.ts +2 -2
  321. package/dist/rhf/select.js +2 -2
  322. package/dist/rhf/slider.d.ts +2 -2
  323. package/dist/rhf/slider.js +2 -2
  324. package/dist/rhf/switch.d.ts +2 -2
  325. package/dist/rhf/switch.js +2 -2
  326. package/dist/rhf/text-area.d.ts +2 -2
  327. package/dist/rhf/text-area.js +2 -2
  328. package/dist/rhf/time-picker.d.ts +2 -2
  329. package/dist/rhf/time-picker.js +2 -2
  330. package/dist/rhf/toggle-group.d.ts +2 -2
  331. package/dist/rhf/toggle-group.js +2 -2
  332. package/dist/{rhf-D8B7mLO1.js → rhf-t348TCCL.js} +1 -1
  333. package/dist/rhf.d.ts +87 -86
  334. package/dist/rhf.js +57 -46
  335. package/dist/{rich-text-editor-DvNEOIux.d.ts → rich-text-editor-Cp5dYHQI.d.ts} +1 -1
  336. package/dist/rich-text-editor.d.ts +1 -1
  337. package/dist/rich-text-editor.js +1 -1
  338. package/dist/{router.context-B0jTMtE0.js → router.context-B4FvsTim.js} +2 -2
  339. package/dist/{select-DY5QtwqI.d.ts → select-FjDx5oe4.d.ts} +2 -2
  340. package/dist/selectDesktop.cva-CHAMxhfO.js +69 -0
  341. package/dist/{slider-CrB-Gkcv.d.ts → slider-BVJiBswZ.d.ts} +1 -1
  342. package/dist/staticDateTimeSegments-BWea3HAt.js +1764 -0
  343. package/dist/{staticSelect.utils-Cm7MoDVG.js → staticSelect.utils-BfTCi26B.js} +34 -232
  344. package/dist/stepper.cva-CZ0Kj-s7.js +116 -0
  345. package/dist/style-merge.util-zLimKwt6.d.ts +40 -0
  346. package/dist/styles/app-canvas.css +832 -0
  347. package/dist/styles/color-utilities.css +13 -25
  348. package/dist/styles/configurator.css +3535 -0
  349. package/dist/styles/input.d.ts +1 -1
  350. package/dist/{switch-8WzXfTS8.d.ts → switch-C--iWnY8.d.ts} +1 -1
  351. package/dist/switch.cva-CWNzmdRc.d.ts +16 -0
  352. package/dist/table.cva-D5oQ-QvA.js +101 -0
  353. package/dist/tanstack/autocomplete.d.ts +1 -1
  354. package/dist/tanstack/checkbox-group.d.ts +1 -1
  355. package/dist/tanstack/checkbox.d.ts +1 -1
  356. package/dist/tanstack/checkbox.js +1 -1
  357. package/dist/tanstack/date-picker.d.ts +1 -1
  358. package/dist/tanstack/date-picker.js +1 -1
  359. package/dist/tanstack/date-range-picker.d.ts +1 -1
  360. package/dist/tanstack/date-range-picker.js +1 -1
  361. package/dist/tanstack/date-time-picker.d.ts +1 -1
  362. package/dist/tanstack/date-time-picker.js +1 -1
  363. package/dist/tanstack/file-input.d.ts +1 -1
  364. package/dist/tanstack/file-input.js +1 -1
  365. package/dist/tanstack/file-upload.d.ts +2 -2
  366. package/dist/tanstack/file-upload.js +1 -1
  367. package/dist/tanstack/form.d.ts +1 -1
  368. package/dist/tanstack/form.js +1 -1
  369. package/dist/tanstack/input.d.ts +1 -1
  370. package/dist/tanstack/inputs.d.ts +3 -3
  371. package/dist/tanstack/inputs.js +1 -1
  372. package/dist/tanstack/number-field.d.ts +1 -1
  373. package/dist/tanstack/number-range-input.d.ts +1 -1
  374. package/dist/tanstack/number-range-input.js +1 -1
  375. package/dist/tanstack/password-input.d.ts +1 -1
  376. package/dist/tanstack/query-select.d.ts +1 -1
  377. package/dist/tanstack/radio-group.d.ts +1 -1
  378. package/dist/tanstack/radio-group.js +1 -1
  379. package/dist/tanstack/rich-text-editor.d.ts +1 -1
  380. package/dist/tanstack/rich-text-editor.js +1 -1
  381. package/dist/tanstack/select.d.ts +1 -1
  382. package/dist/tanstack/select.js +1 -1
  383. package/dist/tanstack/slider.d.ts +1 -1
  384. package/dist/tanstack/slider.js +1 -1
  385. package/dist/tanstack/switch.d.ts +1 -1
  386. package/dist/tanstack/switch.js +1 -1
  387. package/dist/tanstack/table.d.ts +1 -1
  388. package/dist/tanstack/table.js +2 -1
  389. package/dist/tanstack/text-area.d.ts +1 -1
  390. package/dist/tanstack/text-area.js +1 -1
  391. package/dist/tanstack/time-picker.d.ts +1 -1
  392. package/dist/tanstack/time-picker.js +1 -1
  393. package/dist/tanstack/toggle-group.d.ts +2 -2
  394. package/dist/tanstack/toggle-group.js +1 -1
  395. package/dist/tanstack.d.ts +71 -70
  396. package/dist/tanstack.js +68 -55
  397. package/dist/{text-area-CqnKRWKq.d.ts → text-area-DhSVRB6X.d.ts} +1 -1
  398. package/dist/theme-model-DtTsIxou.js +408 -0
  399. package/dist/theme-model-T1zIdBg8.d.ts +12 -0
  400. package/dist/{time-picker-Cz1GIzpF.d.ts → time-picker-DhnDKh97.d.ts} +1 -1
  401. package/dist/{toast.cva-Cj6o2Rmu.d.ts → toast.cva-By5lvAfr.d.ts} +3 -2
  402. package/dist/toast.cva-C_L_RffH.js +163 -0
  403. package/dist/{toast.runtime-CIKvmkjo.js → toast.runtime-cxex9e4E.js} +2 -1
  404. package/dist/{toggle-group-CPkKHm1t.d.ts → toggle-group-C1nMDOwz.d.ts} +1 -1
  405. package/dist/toggleGroup.cva-MbpaEBg1.js +35 -0
  406. package/dist/{toggleGroup.types-DD6uRI5G.d.ts → toggleGroup.types-Bp43zbSQ.d.ts} +2 -1
  407. package/dist/tooltip.cva-BIzlOXHH.js +48 -0
  408. package/dist/{tooltipWrapper.cva-CUu8pI-a.js → tooltipWrapper.cva-BBQ4ic3D.js} +1 -1
  409. package/dist/{typography.cva-jtp6WWUH.d.ts → typography.cva-D1JOEYl-.d.ts} +2 -1
  410. package/dist/{typography.cva-CJZZSGXW.js → typography.cva-iD15k56p.js} +1 -1
  411. package/dist/{uiConfig.context-D2eUIPHn.js → uiConfig.context-BS3r_kTS.js} +1 -1
  412. package/dist/{uiConfig.context-aoarCLYX.d.ts → uiConfig.context-BqKWd_MO.d.ts} +8 -8
  413. package/dist/{uiOverrides.context-Bfm2n-n8.js → uiOverrides.context-BTCH9y5a.js} +2 -2
  414. package/dist/{uiOverrides.context-C3xb4Ttq.d.ts → uiOverrides.context-DEp139He.d.ts} +11 -44
  415. package/dist/underline-66hmELxa.js +81 -0
  416. package/dist/upload-CXU83BJ4.js +30 -0
  417. package/dist/{useBreakpoint-BOA-MyoT.js → useBreakpoint-DQoMN-BG.js} +1 -1
  418. package/dist/useControlledState-CzXkZCX8.js +30 -0
  419. package/dist/{useFieldAccessibility-D2_Qm26-.js → useFieldAccessibility-B-bjtrNw.js} +15 -8
  420. package/dist/{useFilters-kkEUFKmQ.js → useFilters-XNH27Md2.js} +1 -1
  421. package/dist/{useFormAutosave-BYFn3LH8.js → useFormAutosave-pmh35PXp.js} +2 -2
  422. package/dist/{useStaticInputHandoff-DB9PgioW.js → useStaticInputHandoff-B7DEm75m.js} +14 -11
  423. package/dist/useTableColumnConfig-6zn3zKl3.js +892 -0
  424. package/dist/{useTableNav-D9mICzNW.d.ts → useTableNav-Ckj5PBRk.d.ts} +3 -2
  425. package/dist/{useToast-DMSm59Y6.d.ts → useToast-yreVCUer.d.ts} +1 -1
  426. package/package.json +53 -6
  427. package/rulesync.jsonc +11 -0
  428. package/scripts/generate-rules.mjs +34 -0
  429. package/src/configurator/README.md +77 -0
  430. package/dist/Button-sn52l1Yv.js +0 -506
  431. package/dist/FocusScope-CO9oJ1sc.js +0 -343
  432. package/dist/FormFieldHeaderTooltip-Dl24v4_j.js +0 -45
  433. package/dist/Link-Btxj2gzg.js +0 -42
  434. package/dist/PillButton-DASBXLFB.d.ts +0 -15
  435. package/dist/Tag-Cch_68QO.d.ts +0 -43
  436. package/dist/chain-DIXr2VAT.js +0 -10
  437. package/dist/components/pill-button.d.ts +0 -2
  438. package/dist/focusSafely-DCGrr2bb.js +0 -447
  439. package/dist/getScrollParent-kSR7EtoT.js +0 -47
  440. package/dist/numberStatic.utils-BMgRzyd3.js +0 -902
  441. package/dist/openLink-CQhMhfzO.js +0 -121
  442. package/dist/pillButton.cva-BEWuu0qm.d.ts +0 -34
  443. package/dist/pillButton.cva-DlP5tOT5.js +0 -197
  444. package/dist/platform-BXNIIAfU.js +0 -42
  445. package/dist/staticDateTimeSegments-DR8bJw-F.js +0 -3605
  446. package/dist/switch.cva-8T0fw31t.d.ts +0 -15
  447. package/dist/useControlledState-DQxX6LMN.js +0 -189
  448. package/dist/useFocusable-Bd0UsrQ7.js +0 -63
  449. package/dist/useFormValidationState-D3z-gafz.js +0 -1341
  450. package/dist/useLayoutEffect-B2-1tbPJ.js +0 -83
  451. package/dist/useSyncRef-RGMv0rXK.js +0 -338
  452. package/dist/useTableColumnConfig-CcJxu14U.js +0 -1625
@@ -0,0 +1,56 @@
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
+ - Use `BadgeButton` from `@povio/ui/badge-button` for a compact, badge-styled action. It has its own CVA but follows the same variant contract: `solid` and `outline` are default aliases and are passed unchanged to `badgeButton.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
+ - `Badge` and `BadgeButton` support primary, secondary, success, warning, and error colors with contained, outlined, and subtle variants. Their padding is 2px vertically and 8px horizontally, or 6px horizontally when an icon/dismiss control is present. `Badge isSelected` displays the toggled state; use `BadgeButton toggle` for an interactive toggle. Toggled colors use the same state modifiers as buttons.
35
+ - Pass remove-button behavior through `dismissButtonProps`; arbitrary button props do not belong on the display container.
36
+ - Use `Link` for navigation and `Button` for actions.
37
+ - Use `Typography` with semantic `as` elements (`h1`, `h2`, `p`, `span`) and library typography variants/sizes. Token changes belong in UI overrides, not consumers.
38
+
39
+ ## Feedback
40
+
41
+ - Use `Alert` for persistent inline status, `Toast`/`useToast` for transient notifications, `Spinner` for indeterminate progress, and `Progress` for numeric progress.
42
+ - For alerts and toasts, keep `variant` (`contained`/`outlined`) separate from semantic `color` (`neutral`, `success`, `warning`, `error`).
43
+ - Alert and Toast message text uses `large` typography. Outlined messages use `surface-default-card-foreground` text and primary text-button actions. Contained messages use `surface-inverted-card-foreground` for neutral, `surface-success-inverted-base` for success, `surface-warning-inverted-base` for warning, and `surface-destructive-inverted-base` for error; actions use inverted primary text buttons. Actions use `size="none"`, with `toast-gap-action` spacing between them. Alert's `rightContent` is caller supplied, so configure its actions with `TextButton size="none" color="primary" inverted={variant === "contained"}`.
44
+ - Toast actions are `{ text, onPress }`; keep them short and non-destructive.
45
+
46
+ ## Reference
47
+
48
+ - `packages/ui/src/components/buttons/Button/Button.tsx` — Button behavior and compatibility.
49
+ - `packages/ui/src/components/text/Tag/Tag.tsx` — dismissible tag contract.
50
+ - `packages/ui/src/components/status/Toast/Toast.tsx` — toast content and actions.
51
+
52
+ ## When refactoring
53
+
54
+ - `Button` uses `icon` only for a conventional start/end icon → use `startIcon` or `endIcon`.
55
+ - An icon-only action has no accessible name → use `IconButton` with `ariaLabel` or `label`.
56
+ - 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
@@ -12,6 +12,7 @@ Use component and feature subpaths in application code. Each subpath resolves to
12
12
 
13
13
  ```tsx
14
14
  import { Button } from "@povio/ui/button";
15
+ import { BadgeButton } from "@povio/ui/badge-button";
15
16
  import { Dialog } from "@povio/ui/dialog";
16
17
  import { Select } from "@povio/ui/tanstack/select";
17
18
  import { useForm } from "@povio/ui/tanstack/form";
@@ -25,7 +26,7 @@ The broad `@povio/ui`, `@povio/ui/rhf`, and `@povio/ui/tanstack` entries remain
25
26
 
26
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.
27
28
 
28
- React Aria is an internal `@povio/ui` dependency and does not need to be installed separately. Povio component entries include the React Aria implementation they use. Component-scoped escape-hatch entries expose only the corresponding React Aria primitive and its types for custom implementations:
29
+ 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:
29
30
 
30
31
  ```tsx
31
32
  import { Link, type LinkProps } from "@povio/ui/link/react-aria";
@@ -40,6 +41,23 @@ The React Aria hooks used by Povio are similarly isolated under `use-text-field`
40
41
 
41
42
  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
43
 
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`.
45
+
46
+ ## Theme configurator
47
+
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.
49
+
50
+ To save its Tailwind CSS export directly to your app's theme during development, add the bundled Vite plugin:
51
+
52
+ ```ts
53
+ import { uiConfigurator } from "@povio/ui/ui-configurator/vite";
54
+
55
+ // In your Vite plugins array:
56
+ uiConfigurator({ themeFile: "src/styles/theme.css" });
57
+ ```
58
+
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.
60
+
43
61
  ## Button sizes
44
62
 
45
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`.
@@ -54,6 +72,10 @@ Inputs support `size="small"` and `default`. Omit `size` for the default. This a
54
72
 
55
73
  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
74
 
75
+ ## Built-package tests
76
+
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.
78
+
57
79
  ## Versioning
58
80
 
59
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.
@@ -62,21 +84,15 @@ Replace `size="extra-small"` with `size="small"`, and remove `size="large"` or `
62
84
 
63
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.
64
86
 
65
- To generate the UI rules into a consuming project's repository root, run the executable bundled with `@povio/ui`:
66
-
67
- ```bash
68
- pnpm exec povio-ui-rules
69
- ```
70
-
71
- With npm, use:
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`:
72
88
 
73
89
  ```bash
74
- npx povio-ui-rules
90
+ bunx --package @povio/ui povio-ui-rules
75
91
  ```
76
92
 
77
- 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`).
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`).
78
94
 
79
- Within this monorepo, the equivalent package-local commands are `pnpm --filter @povio/ui rules:gen` and `pnpm --filter @povio/ui rules:check`.
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`.
80
96
 
81
97
  ## Publishing
82
98
 
@@ -130,9 +146,9 @@ We also use a custom tailwind plugin to shorten some selectors inside the @povio
130
146
  @plugin "@povio/ui/tw-ui-plugin";
131
147
  ```
132
148
 
133
- ### Background tint utility
149
+ ### State color utilities
134
150
 
135
- Import the color utilities in your application's Tailwind stylesheet. This import is required because `@povio/ui` button styles use these utilities:
151
+ Import the color utilities in your application's Tailwind stylesheet. This import is required because `@povio/ui` components use these utilities:
136
152
 
137
153
  ```css
138
154
  @import "tailwindcss";
@@ -140,18 +156,39 @@ Import the color utilities in your application's Tailwind stylesheet. This impor
140
156
  @import "@povio/ui/color-utilities";
141
157
  ```
142
158
 
143
- 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.
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.
144
160
 
145
161
  ```tsx
146
162
  <button
147
163
  type="button"
148
- className="bg-interactive-primary-background text-interactive-primary-foreground hover:bg-tint-interactive-primary-background/80"
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"
149
165
  >
150
- Hover to lighten
166
+ Hover to change state color
151
167
  </button>
152
168
  ```
153
169
 
154
- 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.
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.
171
+
172
+ ### Icon slots
173
+
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.
175
+
176
+ ```tsx
177
+ import { Plus } from "lucide-react";
178
+ import { IconSlot } from "@povio/ui/icon-slot";
179
+
180
+ <IconSlot icon={Plus} />;
181
+ <IconSlot
182
+ icon={<Plus strokeWidth={1.5} />}
183
+ scale={0.8}
184
+ />;
185
+ ```
186
+
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.
188
+
189
+ 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
+
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.
155
192
 
156
193
  ### Z-Index
157
194
 
@@ -231,3 +268,51 @@ We're using a helper class for flex, so make sure to add this into your base css
231
268
  flex: 1 0 0;
232
269
  }
233
270
  ```
271
+
272
+ ## App canvas page (`/_canvas`)
273
+
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).
275
+
276
+ 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
+
278
+ ```tsx
279
+ import "@povio/ui/app-canvas/styles";
280
+ import { appCanvasRouteOptions } from "@povio/ui/app-canvas/tanstack";
281
+ import { createFileRoute } from "@tanstack/react-router";
282
+
283
+ export const Route = createFileRoute("/_canvas")(appCanvasRouteOptions({ enabled: import.meta.env.DEV }));
284
+ ```
285
+
286
+ 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
+
288
+ ```tsx
289
+ import { isAppCanvasFrame } from "@povio/ui/app-canvas";
290
+ import { AppCanvasBridge, useIsAppCanvasPage } from "@povio/ui/app-canvas/tanstack";
291
+
292
+ // Inside the app's root component, under its UIConfigurationProvider:
293
+ const canvasPage = useIsAppCanvasPage();
294
+ return (
295
+ <>
296
+ <AppCanvasBridge />
297
+ <Outlet />
298
+ {!canvasPage && !isAppCanvasFrame() && <ExistingConfigurationLauncher />}
299
+ </>
300
+ );
301
+ ```
302
+
303
+ `ExistingConfigurationLauncher` represents your existing launcher/editor, if any. Do not render a second `UIConfigurationModal` on `/_canvas`: the supplied page includes its own draggable editor. Keep app-specific debug overlays out of canvas frames too.
304
+
305
+ For code-based routing, add the package route to the existing root's children **before** creating the router:
306
+
307
+ ```tsx
308
+ import "@povio/ui/app-canvas/styles";
309
+ import { createAppCanvasRoute } from "@povio/ui/app-canvas/tanstack";
310
+ const canvasRoute = createAppCanvasRoute({
311
+ getParentRoute: () => rootRoute,
312
+ enabled: import.meta.env.DEV,
313
+ canvas: { examples: { "/projects/$projectId": { params: { projectId: "example-id" } } } },
314
+ });
315
+ const routeTree = rootRoute.addChildren([homeRoute, projectsRoute, canvasRoute]);
316
+ ```
317
+
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.
@@ -1,12 +1,15 @@
1
1
  import { t as ChevronDown } from "./chevron-down-B4Pr8bD3.js";
2
2
  import { t as clsx } from "./clsx-CnD0nOiA.js";
3
+ import { t as UIOverrides } from "./uiOverrides.context-BTCH9y5a.js";
4
+ import { t as IconSlot } from "./IconSlot-DSK7qNxc.js";
3
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";
4
6
  import { n as $7705c033048f6da7$export$353f5b6fc5456de1, t as $7705c033048f6da7$export$24d547caef80ccd1 } from "./Button-D6KlWSFL.js";
5
7
  import { t as $2ec61d1d4f780267$export$a8a3e93435678ff9 } from "./Heading-nI1_VOaE.js";
6
- import { t as UIOverrides } from "./uiOverrides.context-Bfm2n-n8.js";
7
- import { t as Typography } from "./Typography-B0Gp1lpc.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";
8
10
  import $ahdqC$react, { createContext, forwardRef, useContext } from "react";
9
11
  import { c } from "react/compiler-runtime";
12
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
13
  import { mergeProps } from "react-aria/mergeProps";
11
14
  import { mergeRefs } from "react-aria/mergeRefs";
12
15
  import { filterDOMProps } from "react-aria/filterDOMProps";
@@ -15,7 +18,6 @@ import { useId as useId$1 } from "react-aria/useId";
15
18
  import { useDisclosure } from "react-aria/useDisclosure";
16
19
  import { useDisclosureGroupState } from "react-stately/useDisclosureGroupState";
17
20
  import { useDisclosureState } from "react-stately/useDisclosureState";
18
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
19
21
  //#region ../../node_modules/.bun/react-aria-components@1.21.1+67f6792bdf102c28/node_modules/react-aria-components/dist/private/Disclosure.mjs
20
22
  const $a3e16eab0ea4036c$export$1d40e3e0cc4d5de = /*#__PURE__*/ createContext(null);
21
23
  const $a3e16eab0ea4036c$export$944aceb4f8c89f10 = /*#__PURE__*/ forwardRef(function DisclosureGroup(props, ref) {
@@ -113,133 +115,6 @@ const $a3e16eab0ea4036c$export$feabaa331e1d464c = /*#__PURE__*/ forwardRef(funct
113
115
  }, /*#__PURE__*/ $ahdqC$react.createElement($7230ffa83bc0c2cf$export$2881499e37b75b9a, { values: [[$7705c033048f6da7$export$24d547caef80ccd1, null]] }, props.children));
114
116
  });
115
117
  //#endregion
116
- //#region src/components/navigation/Accordion/accordion.cva.ts
117
- const accordionDefinition = UIOverrides.defineConfig({
118
- base: ["flex w-full flex-col"],
119
- config: {
120
- variants: {
121
- variant: {
122
- filled: "gap-1",
123
- outlined: ""
124
- },
125
- singleItem: {
126
- true: "",
127
- false: ""
128
- }
129
- },
130
- defaultVariants: {
131
- variant: "filled",
132
- singleItem: false
133
- },
134
- compoundVariants: [{
135
- variant: "outlined",
136
- singleItem: false,
137
- className: "rounded-global-rounding-s border border-border-default-subtle"
138
- }]
139
- }
140
- });
141
- const accordionItemDefinition = UIOverrides.defineConfig({
142
- base: ["flex w-full flex-col"],
143
- config: {
144
- variants: {
145
- variant: {
146
- filled: "rounded-accordion-rounding-filled bg-surface-default-background",
147
- outlined: ""
148
- },
149
- singleItem: {
150
- true: "",
151
- false: ""
152
- }
153
- },
154
- defaultVariants: {
155
- variant: "filled",
156
- singleItem: false
157
- },
158
- compoundVariants: [{
159
- singleItem: true,
160
- variant: "outlined",
161
- className: "border-border-default-subtle border-b"
162
- }, {
163
- singleItem: false,
164
- variant: "outlined",
165
- className: "not-last:border-border-default-subtle not-last:border-b"
166
- }]
167
- }
168
- });
169
- const accordionTriggerDefinition = UIOverrides.defineConfig({
170
- base: [
171
- "group flex w-full items-center gap-accordion-gap-content-to-arrow",
172
- "px-accordion-side-accordion py-accordion-height-accordion",
173
- "outline-none focus-visible:ring-2 focus-visible:ring-interactive-ring"
174
- ],
175
- config: {
176
- variants: {
177
- variant: {
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
- },
181
- actionPosition: {
182
- left: "flex-row-reverse",
183
- right: "flex-row"
184
- },
185
- disabled: { true: "opacity-50" }
186
- },
187
- defaultVariants: {
188
- variant: "filled",
189
- actionPosition: "right"
190
- }
191
- }
192
- });
193
- const accordionHeadingDefinition = UIOverrides.defineConfig({
194
- base: ["flex flex-1 items-center justify-between gap-accordion-gap-content-to-arrow"],
195
- config: {
196
- variants: {},
197
- defaultVariants: {}
198
- }
199
- });
200
- const accordionHeadingTitleDefinition = UIOverrides.defineConfig({
201
- base: ["flex-1 text-left text-surface-default-card-foreground"],
202
- config: {
203
- variants: {},
204
- defaultVariants: {}
205
- }
206
- });
207
- const accordionHeadingSubtitleDefinition = UIOverrides.defineConfig({
208
- base: ["flex-1 text-left text-surface-default-foreground"],
209
- config: {
210
- variants: {},
211
- defaultVariants: {}
212
- }
213
- });
214
- const accordionChevronDefinition = UIOverrides.defineConfig({
215
- base: ["size-6 shrink-0 text-surface-default-popover-foreground transition-transform duration-200"],
216
- config: {
217
- variants: { isExpanded: {
218
- true: "rotate-180",
219
- false: "rotate-0"
220
- } },
221
- defaultVariants: { isExpanded: false }
222
- }
223
- });
224
- const accordionIconDefinition = UIOverrides.defineConfig({
225
- base: ["size-6 shrink-0 text-surface-default-popover-foreground"],
226
- config: {
227
- variants: {},
228
- defaultVariants: {}
229
- }
230
- });
231
- const accordionPanelDefinition = UIOverrides.defineConfig({
232
- base: [""],
233
- config: { variants: { isExpanded: { true: "px-accordion-side-accordion pt-0 pb-accordion-height-accordion" } } }
234
- });
235
- const accordionPanelContentDefinition = UIOverrides.defineConfig({
236
- base: ["py-accordion-height-content"],
237
- config: {
238
- variants: {},
239
- defaultVariants: {}
240
- }
241
- });
242
- //#endregion
243
118
  //#region src/components/navigation/Accordion/AccordionItem.tsx
244
119
  const AccordionItem = (t0) => {
245
120
  const $ = c(25);
@@ -282,7 +157,10 @@ const AccordionItem = (t0) => {
282
157
  children: /* @__PURE__ */ jsxs("div", {
283
158
  className: "flex flex-1 items-center gap-accordion-gap-icon-to-text",
284
159
  children: [
285
- Icon && /* @__PURE__ */ jsx(Icon, { className: iconCva({}) }),
160
+ Icon && /* @__PURE__ */ jsx(IconSlot, {
161
+ icon: Icon,
162
+ className: iconCva({})
163
+ }),
286
164
  /* @__PURE__ */ jsx(Typography, {
287
165
  size: "small",
288
166
  className: headingTitleCva({}),
@@ -295,12 +173,18 @@ const AccordionItem = (t0) => {
295
173
  })
296
174
  ]
297
175
  })
298
- }), /* @__PURE__ */ jsx(ChevronDown, { className: chevronCva({ isExpanded }) })]
176
+ }), /* @__PURE__ */ jsx(IconSlot, {
177
+ icon: ChevronDown,
178
+ className: chevronCva({ isExpanded })
179
+ })]
299
180
  }) }), /* @__PURE__ */ jsx($a3e16eab0ea4036c$export$feabaa331e1d464c, {
300
- className: panelCva({ isExpanded }),
181
+ className: clsx("h-(--disclosure-panel-height) overflow-clip transition-[height,opacity] duration-200 ease-out motion-reduce:transition-none", isExpanded ? "opacity-100" : "opacity-0"),
301
182
  children: /* @__PURE__ */ jsx("div", {
302
- className: panelContentCva({}),
303
- children
183
+ className: panelCva({ isExpanded }),
184
+ children: /* @__PURE__ */ jsx("div", {
185
+ className: panelContentCva({}),
186
+ children
187
+ })
304
188
  })
305
189
  })] });
306
190
  };
@@ -411,4 +295,4 @@ const Accordion = (t0) => {
411
295
  return t7;
412
296
  };
413
297
  //#endregion
414
- export { accordionHeadingSubtitleDefinition as a, accordionItemDefinition as c, accordionTriggerDefinition as d, accordionHeadingDefinition as i, accordionPanelContentDefinition as l, accordionChevronDefinition as n, accordionHeadingTitleDefinition as o, accordionDefinition as r, accordionIconDefinition as s, Accordion as t, accordionPanelDefinition as u };
298
+ export { Accordion as t };