@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,408 @@
1
+ //#region src/configurator/theme-model.ts
2
+ const groups = [
3
+ "Colors",
4
+ "Typography",
5
+ "Spacing",
6
+ "Radius",
7
+ "Sizing",
8
+ "Effects"
9
+ ];
10
+ const declarations = (source) => Object.fromEntries([...source.matchAll(/(--[\w-]+)\s*:\s*([^;]+);/g)].map(([, name, value]) => [name, value.trim()]));
11
+ const selectorDeclarations = (source, selector) => Object.assign({}, ...[...source.matchAll(selector)].map((match) => declarations(match[1])));
12
+ const parseThemeCss = (themeSource) => ({
13
+ light: selectorDeclarations(themeSource, /:root\s*\{([^}]+)\}/g),
14
+ dark: selectorDeclarations(themeSource, /\.dark\s*\{([^}]+)\}/g),
15
+ theme: declarations([...themeSource.matchAll(/@theme(?:\s+static)?\s*\{([^}]+)\}/g)].map((match) => match[1]).join("\n"))
16
+ });
17
+ function groupFor(name) {
18
+ if (name.startsWith("--color-") || name.endsWith("-base")) return "Colors";
19
+ if (/^--(font|text|tracking)-/.test(name)) return "Typography";
20
+ if (name.startsWith("--spacing-")) return "Spacing";
21
+ if (name.startsWith("--radius-")) return "Radius";
22
+ if (name.startsWith("--container-")) return "Sizing";
23
+ return "Effects";
24
+ }
25
+ /** Whether the configurator lists this token, so an inspector can link to it. `--color-*` wrappers link via `-base`. */
26
+ const isEditableToken = (name, defaults) => (name in defaults.theme || name in defaults.light || name in defaults.dark) && !name.startsWith("--color-");
27
+ const labelFor = (name) => name.replace(/^--/, "").replace(/-base$/, "").replaceAll("-", " ");
28
+ const isRgb = (value) => /^\d+\s+\d+\s+\d+$/.test(value);
29
+ const toHex = (value) => `#${value.split(/\s+/).map((part) => Number(part).toString(16).padStart(2, "0")).join("")}`;
30
+ const toRgb = (hex) => [
31
+ 1,
32
+ 3,
33
+ 5
34
+ ].map((offset) => parseInt(hex.slice(offset, offset + 2), 16)).join(" ");
35
+ function validToken(name, value, original) {
36
+ if (!value.trim() || /[;{}<>]/.test(value)) return false;
37
+ if (isRgb(original)) return isRgb(value) && value.split(/\s+/).every((part) => Number(part) <= 255);
38
+ if (name.endsWith("-base") && /^var\(--[\w-]+\)$/.test(original)) return /^var\(--[\w-]+\)$/.test(value) || isRgb(value) && value.split(/\s+/).every((part) => Number(part) <= 255);
39
+ const property = name.startsWith("--color-") || /^#[0-9a-f]+$/i.test(original) ? "color" : name.startsWith("--font-weight-") ? "font-weight" : name.startsWith("--font-") ? "font-family" : name.endsWith("--line-height") ? "line-height" : name.endsWith("--letter-spacing") || name.startsWith("--tracking-") ? "letter-spacing" : name.startsWith("--shadow-") || name.startsWith("--drop-shadow-") ? "box-shadow" : "width";
40
+ return CSS.supports(property, value);
41
+ }
42
+ const emptyTheme = () => ({
43
+ light: {},
44
+ dark: {},
45
+ theme: {}
46
+ });
47
+ function previewTokens(defaults, edits, mode) {
48
+ return mode === "dark" ? {
49
+ ...defaults.theme,
50
+ ...edits.theme,
51
+ ...defaults.light,
52
+ ...edits.light,
53
+ ...defaults.dark,
54
+ ...edits.dark
55
+ } : {
56
+ ...defaults.theme,
57
+ ...edits.theme,
58
+ ...defaults.light,
59
+ ...edits.light
60
+ };
61
+ }
62
+ /** Numbered RGB shades in the root theme form the shared base palette. */
63
+ /**
64
+ * Tailwind-style shade weights around a 500 base: lighter steps mix toward white by the weight, darker steps scale
65
+ * the channels by it. Matches common Tailwind shade generators, extended with the 10, 950 and 1000 steps used here.
66
+ */
67
+ const lighten = {
68
+ 10: .98,
69
+ 50: .95,
70
+ 100: .9,
71
+ 200: .75,
72
+ 300: .6,
73
+ 400: .3,
74
+ 500: 0
75
+ };
76
+ const darken = {
77
+ 500: 1,
78
+ 600: .9,
79
+ 700: .6,
80
+ 800: .45,
81
+ 900: .3,
82
+ 950: .2,
83
+ 1e3: .15
84
+ };
85
+ /** Interpolates a weight for steps between the known ones, such as 150 or 850. */
86
+ function weightFor(table, step) {
87
+ const known = Object.keys(table).map(Number).sort((a, b) => a - b);
88
+ if (step <= known[0]) return table[known[0]];
89
+ if (step >= known.at(-1)) return table[known.at(-1)];
90
+ const upper = known.findIndex((value) => value >= step);
91
+ const [low, high] = [known[upper - 1], known[upper]];
92
+ return table[low] + (table[high] - table[low]) * (step - low) / (high - low);
93
+ }
94
+ /** Generates a palette's RGB channel values from its 500 color, keyed by step. */
95
+ function generateShades(baseRgb, steps) {
96
+ const channels = baseRgb.split(/\s+/).map(Number);
97
+ return Object.fromEntries(steps.map((step) => {
98
+ return [step, (step <= 500 ? channels.map((channel) => channel + (255 - channel) * weightFor(lighten, step)) : channels.map((channel) => channel * weightFor(darken, step))).map((channel) => Math.round(channel)).join(" ")];
99
+ }));
100
+ }
101
+ /** Global rounding steps, from square corners to pills; level 2 keeps the theme's own radii. */
102
+ const roundingLevels = [
103
+ {
104
+ label: "Square",
105
+ factor: 0
106
+ },
107
+ {
108
+ label: "×0.5",
109
+ factor: .5
110
+ },
111
+ {
112
+ label: "Default",
113
+ factor: 1
114
+ },
115
+ {
116
+ label: "×1.5",
117
+ factor: 1.5
118
+ },
119
+ {
120
+ label: "×2",
121
+ factor: 2
122
+ },
123
+ {
124
+ label: "×3",
125
+ factor: 3
126
+ },
127
+ {
128
+ label: "Pill",
129
+ factor: Infinity
130
+ }
131
+ ];
132
+ /**
133
+ * Focus rings sit outside their element, so they keep the theme's offset from the inner radius instead of scaling on
134
+ * their own; otherwise the ring drifts away from the corner it outlines.
135
+ */
136
+ const focusRadii = {
137
+ "--radius-button-focus-rounding-default": "--radius-button-rounding-default",
138
+ "--radius-button-focus-rounding-small": "--radius-button-rounding-small",
139
+ "--radius-accordion-rounding-focus": "--radius-accordion-rounding-filled",
140
+ "--radius-segmented-control-rounding-segmented-control": "--radius-segmented-control-rounding-segment"
141
+ };
142
+ /**
143
+ * Pill rounding only rounds controls fully; surfaces such as cards, modals, menus and alerts keep the theme radii,
144
+ * since a fully rounded container clips its content.
145
+ */
146
+ const pillControls = /^--radius-(button|input|floating-label-input|badge|segmented-control|slider|progress)-/;
147
+ const radiusLength = (value) => {
148
+ const match = value.trim().match(/^(-?\d*\.?\d+)(rem|px)$/);
149
+ return match ? {
150
+ amount: Number(match[1]),
151
+ unit: match[2]
152
+ } : void 0;
153
+ };
154
+ const formatLength = (amount, unit) => `${Number(amount.toFixed(4))}${unit}`;
155
+ /**
156
+ * Radius tokens for a global rounding level, always derived from the theme defaults so repeated steps never compound.
157
+ * Square corners and full radii (pills, avatars) are left alone, as are values that are not plain lengths.
158
+ */
159
+ function scaleRadii(defaults, level) {
160
+ const { factor } = roundingLevels[level];
161
+ const full = defaults.theme["--radius-full"];
162
+ const fullAmount = full ? radiusLength(full) : void 0;
163
+ const isFull = (value) => {
164
+ const length = radiusLength(value);
165
+ return value === full || !!length && length.amount >= (fullAmount?.amount ?? 100);
166
+ };
167
+ const scale = (name, value) => {
168
+ const length = radiusLength(value);
169
+ if (!length || length.amount === 0 || isFull(value)) return value;
170
+ if (factor === Infinity) return full && pillControls.test(name) ? full : value;
171
+ return formatLength(length.amount * factor, length.unit);
172
+ };
173
+ const radii = Object.entries(defaults.theme).filter(([name]) => groupFor(name) === "Radius");
174
+ const scaled = Object.fromEntries(radii.map(([name, value]) => [name, scale(name, value)]));
175
+ for (const [focus, inner] of Object.entries(focusRadii)) {
176
+ const [focusLength, innerLength] = [defaults.theme[focus], defaults.theme[inner]].map((v) => v && radiusLength(v));
177
+ const scaledInner = scaled[inner] && radiusLength(scaled[inner]);
178
+ if (!focusLength || !innerLength || !scaledInner || focusLength.unit !== innerLength.unit) continue;
179
+ scaled[focus] = scaledInner.amount === 0 || isFull(scaled[inner]) ? scaled[inner] : formatLength(scaledInner.amount + focusLength.amount - innerLength.amount, focusLength.unit);
180
+ }
181
+ return scaled;
182
+ }
183
+ /** Padding and gap steps; level 2 keeps the theme's own spacing. */
184
+ const spacingLevels = [
185
+ {
186
+ label: "×0.5",
187
+ factor: .5
188
+ },
189
+ {
190
+ label: "×0.75",
191
+ factor: .75
192
+ },
193
+ {
194
+ label: "Default",
195
+ factor: 1
196
+ },
197
+ {
198
+ label: "×1.25",
199
+ factor: 1.25
200
+ },
201
+ {
202
+ label: "×1.5",
203
+ factor: 1.5
204
+ },
205
+ {
206
+ label: "×2",
207
+ factor: 2
208
+ }
209
+ ];
210
+ /** Font size steps; line heights are ratios, so they follow. Level 3 keeps the theme's own sizes. */
211
+ const fontSizeLevels = [
212
+ {
213
+ label: "×0.75",
214
+ factor: .75
215
+ },
216
+ {
217
+ label: "×0.875",
218
+ factor: .875
219
+ },
220
+ {
221
+ label: "×0.9375",
222
+ factor: .9375
223
+ },
224
+ {
225
+ label: "Default",
226
+ factor: 1
227
+ },
228
+ {
229
+ label: "×1.0625",
230
+ factor: 1.0625
231
+ },
232
+ {
233
+ label: "×1.125",
234
+ factor: 1.125
235
+ },
236
+ {
237
+ label: "×1.25",
238
+ factor: 1.25
239
+ }
240
+ ];
241
+ /** Component size steps; level 2 keeps the theme's own sizes. */
242
+ const sizingLevels = [
243
+ {
244
+ label: "×0.75",
245
+ factor: .75
246
+ },
247
+ {
248
+ label: "×0.875",
249
+ factor: .875
250
+ },
251
+ {
252
+ label: "Default",
253
+ factor: 1
254
+ },
255
+ {
256
+ label: "×1.125",
257
+ factor: 1.125
258
+ },
259
+ {
260
+ label: "×1.25",
261
+ factor: 1.25
262
+ },
263
+ {
264
+ label: "×1.5",
265
+ factor: 1.5
266
+ }
267
+ ];
268
+ /**
269
+ * Component tokens are mirrored in `--spacing-*` (padding, gap and height utilities) and `--container-*` (width
270
+ * utilities), so both are scaled together. Sizes are avatar heights, button and input heights (the vertical padding
271
+ * that sets a control's height), minimum widths, the icon size and the container width scale; everything else is padding or a gap.
272
+ * The icon stroke weight is neither.
273
+ */
274
+ const layoutName = (name) => name.replace(/^--(spacing|container)-/, "");
275
+ const isSizeToken = (name) => /^(avatar-height-|(button|input)-height-(small|default)$|input-width-|button-min-width-|icons?-size$|\d+$|(\d(-5)?)?(xs|sm|md|lg|xl)$)/.test(layoutName(name));
276
+ const isLayoutToken = (name, sizes) => /^--(spacing|container)-/.test(name) && !name.endsWith("-icon-weight") && isSizeToken(name) === sizes;
277
+ /** Text style font sizes, without their `--line-height` and `--letter-spacing` companions. */
278
+ const isFontSizeToken = (name) => /^--text-[\w-]+$/.test(name) && !name.includes("--", 2);
279
+ function scaleLengths(defaults, include, factor, resize = (_name, length) => length.amount * factor, growsFromZero = (_name) => false) {
280
+ return Object.fromEntries(Object.entries(defaults.theme).filter(([name]) => include(name)).map(([name, value]) => {
281
+ const length = radiusLength(value);
282
+ if (!length || length.amount === 0 && !growsFromZero(name)) return [name, value];
283
+ const step = length.unit === "rem" ? 1 / 16 : 1;
284
+ return [name, formatLength(Math.max(0, Math.round(resize(name, length) / step) * step), length.unit)];
285
+ }));
286
+ }
287
+ /**
288
+ * A button's or input's height is its vertical padding around one line of content, roughly the icon size. Scaling only
289
+ * the few pixels of padding barely changes a small control (a small input has none), so the padding grows by enough to
290
+ * scale the whole control instead.
291
+ */
292
+ function scaleSizes(defaults, factor) {
293
+ const icon = defaults.theme["--spacing-icons-size"] ?? defaults.theme["--container-icons-size"];
294
+ const content = icon ? radiusLength(icon) : void 0;
295
+ const isControlHeight = (name) => /^--(spacing|container)-(button|input)-height-(small|default)$/.test(name);
296
+ return scaleLengths(defaults, (name) => isLayoutToken(name, true), factor, (name, length) => isControlHeight(name) && content?.unit === length.unit ? length.amount + (factor - 1) * (length.amount + content.amount / 2) : length.amount * factor, isControlHeight);
297
+ }
298
+ const layoutKinds = [
299
+ "Radius",
300
+ "Spacing",
301
+ "Sizing",
302
+ "Font size"
303
+ ];
304
+ /**
305
+ * The layout sub-tab a token belongs to, if any. Spacing and container tokens are split by meaning rather than by
306
+ * namespace: sizes (and the icon stroke weight) go to Sizing, padding and gaps to Spacing.
307
+ */
308
+ function layoutKindFor(name) {
309
+ if (isFontSizeToken(name)) return "Font size";
310
+ if (/^--(spacing|container)-/.test(name)) return isSizeToken(name) || name.endsWith("-icon-weight") ? "Sizing" : "Spacing";
311
+ return groupFor(name) === "Radius" ? "Radius" : void 0;
312
+ }
313
+ /** The other copy of a token defined as both `--spacing-*` and `--container-*`. */
314
+ function layoutMirror(name, defaults) {
315
+ const match = name.match(/^--(spacing|container)-(.+)$/);
316
+ const mirror = match && `--${match[1] === "spacing" ? "container" : "spacing"}-${match[2]}`;
317
+ return mirror && mirror in defaults.theme ? mirror : void 0;
318
+ }
319
+ /** The button height an input height of the same size matches, or the input height a button height matches. */
320
+ function controlHeightCounterpart(name) {
321
+ const match = name.match(/^(--(?:spacing|container)-)(button|input)(-height-(?:small|default))$/);
322
+ return match ? `${match[1]}${match[2] === "button" ? "input" : "button"}${match[3]}` : void 0;
323
+ }
324
+ /**
325
+ * Tokens that must hold the same value as this one: its spacing/container mirror and, because buttons and inputs of
326
+ * a size share one height, the matching control height and its mirror. A counterpart that already aliases this token
327
+ * in the theme follows on its own and is left alone.
328
+ */
329
+ function linkedLayoutTokens(name, defaults) {
330
+ const linked = [layoutMirror(name, defaults)];
331
+ const counterpart = controlHeightCounterpart(name);
332
+ if (counterpart && counterpart in defaults.theme && !defaults.theme[counterpart].startsWith("var(")) linked.push(counterpart, layoutMirror(counterpart, defaults));
333
+ return linked.filter((token) => !!token);
334
+ }
335
+ /** Of a mirrored pair, the copy the editor lists: `--container-*` for sizes, `--spacing-*` for padding and gaps. */
336
+ function listedLayoutToken(name, defaults) {
337
+ const mirror = layoutMirror(name, defaults);
338
+ if (!mirror) return name;
339
+ return name.startsWith(layoutKindFor(name) === "Sizing" ? "--container-" : "--spacing-") ? name : mirror;
340
+ }
341
+ const defaultLayoutLevel = 2;
342
+ /** Each layout tab's global control: its steps and the tokens a step sets, derived from the theme defaults. */
343
+ const layoutScales = {
344
+ Radius: {
345
+ levels: roundingLevels,
346
+ defaultLevel: 2,
347
+ scale: scaleRadii
348
+ },
349
+ Spacing: {
350
+ levels: spacingLevels,
351
+ defaultLevel: defaultLayoutLevel,
352
+ scale: (defaults, level) => scaleLengths(defaults, (name) => isLayoutToken(name, false), spacingLevels[level].factor)
353
+ },
354
+ Sizing: {
355
+ levels: sizingLevels,
356
+ defaultLevel: defaultLayoutLevel,
357
+ scale: (defaults, level) => scaleSizes(defaults, sizingLevels[level].factor)
358
+ },
359
+ "Font size": {
360
+ levels: fontSizeLevels,
361
+ defaultLevel: 3,
362
+ scale: (defaults, level) => scaleLengths(defaults, isFontSizeToken, fontSizeLevels[level].factor)
363
+ }
364
+ };
365
+ /** The global level the current tokens match, or undefined once individual tokens were edited. */
366
+ function layoutLevelFor(defaults, edits, kind) {
367
+ const { levels, scale } = layoutScales[kind];
368
+ const index = levels.findIndex((_, level) => Object.entries(scale(defaults, level)).every(([name, value]) => (edits[name] ?? defaults.theme[name]) === value));
369
+ return index === -1 ? void 0 : index;
370
+ }
371
+ function baseColorNames(defaults) {
372
+ return new Set(Object.entries(defaults.light).filter(([name, value]) => /^--[\w-]+-\d+-base$/.test(name) && isRgb(value) && !(name in defaults.dark)).map(([name]) => name));
373
+ }
374
+ function exportCss(edits, defaults) {
375
+ const block = (selector, values) => {
376
+ const entries = Object.entries(values).sort(([a], [b]) => a.localeCompare(b));
377
+ return entries.length ? `${selector} {\n${entries.map(([key, value]) => ` ${key}: ${value};`).join("\n")}\n}\n` : "";
378
+ };
379
+ return "/* Import after your Povio UI theme in your Tailwind CSS entrypoint. */\n\n" + (block(":root", edits.light) + block(".dark", {
380
+ ...darkFallback(defaults, edits),
381
+ ...edits.dark
382
+ }) + block("@theme", edits.theme) || "/* No token overrides. */\n");
383
+ }
384
+ /** Runtime rules must use ordinary selectors: Tailwind directives only work at build time. */
385
+ function runtimeCss(defaults, edits) {
386
+ const block = (selector, values) => `${selector} {${Object.entries(values).map(([key, value]) => `${key}: ${value};`).join(" ")}}`;
387
+ return block(":root", {
388
+ ...referencedThemeTokens(defaults, edits.theme),
389
+ ...edits.theme,
390
+ ...edits.light
391
+ }) + block(".dark", {
392
+ ...darkFallback(defaults, edits),
393
+ ...edits.dark
394
+ });
395
+ }
396
+ /**
397
+ * Tailwind only emits `@theme` variables that utilities use, so an edit aliasing another theme token (for example
398
+ * `var(--radius-global-rounding-m)`) redeclares that token's value to make sure it resolves at runtime.
399
+ */
400
+ function referencedThemeTokens(defaults, edits) {
401
+ const referenced = Object.values(edits).flatMap((value) => [...value.matchAll(/var\((--[\w-]+)/g)].map((match) => match[1]));
402
+ return Object.fromEntries(referenced.filter((name) => name in defaults.theme && !(name in edits)).map((name) => [name, defaults.theme[name]]));
403
+ }
404
+ function darkFallback(defaults, edits) {
405
+ return Object.fromEntries(Object.keys(edits.light).filter((key) => key in defaults.dark).map((key) => [key, defaults.dark[key]]));
406
+ }
407
+ //#endregion
408
+ export { toRgb as C, toHex as S, listedLayoutToken as _, generateShades as a, runtimeCss as b, isEditableToken as c, labelFor as d, layoutKindFor as f, linkedLayoutTokens as g, layoutScales as h, exportCss as i, isFontSizeToken as l, layoutLevelFor as m, controlHeightCounterpart as n, groupFor as o, layoutKinds as p, emptyTheme as r, groups as s, baseColorNames as t, isRgb as u, parseThemeCss as v, validToken as w, spacingLevels as x, previewTokens as y };
@@ -0,0 +1,12 @@
1
+ //#region src/configurator/theme-model.d.ts
2
+ type Mode = "light" | "dark";
3
+ type Tokens = Record<string, string>;
4
+ declare const parseThemeCss: (themeSource: string) => ThemeEdits;
5
+ interface ThemeEdits {
6
+ light: Tokens;
7
+ dark: Tokens;
8
+ theme: Tokens;
9
+ }
10
+ declare function exportCss(edits: ThemeEdits, defaults: ThemeEdits): string;
11
+ //#endregion
12
+ export { parseThemeCss as a, exportCss as i, ThemeEdits as n, Tokens as r, Mode as t };
@@ -1,6 +1,6 @@
1
1
  import { t as ControlProps } from "./form.types-ZNGbcqJS.js";
2
2
  import { t as FireBlurOnChangeProps } from "./fieldAdapter-C4sDFC8f.js";
3
- import { r as TimePickerProps } from "./TimePicker-CmT89X7v.js";
3
+ import { r as TimePickerProps } from "./TimePicker-Dex9aU7D.js";
4
4
  import { FieldValues } from "react-hook-form";
5
5
  //#region src/entries/rhf/time-picker.d.ts
6
6
  type ControlledTimePickerProps<T extends FieldValues> = ControlProps<TimePickerProps & FireBlurOnChangeProps, T>;
@@ -1,5 +1,6 @@
1
- import { n as StyleMergeUtils, t as UIOverrides } from "./uiOverrides.context-C3xb4Ttq.js";
2
- import "./button.cva-BvRI-3Gn.js";
1
+ import { t as StyleMergeUtils } from "./style-merge.util-zLimKwt6.js";
2
+ import { t as UIOverrides } from "./uiOverrides.context-DEp139He.js";
3
+ import "./button.cva-C7kEhgoA.js";
3
4
  //#region src/components/status/Toast/toast.cva.d.ts
4
5
  declare const toastDefinition: {
5
6
  base: string[];
@@ -0,0 +1,163 @@
1
+ import { t as clsx } from "./clsx-CnD0nOiA.js";
2
+ import { t as UIOverrides } from "./uiOverrides.context-BTCH9y5a.js";
3
+ import { t as compoundMapper } from "./compoundMapper-Di3SKZnS.js";
4
+ //#region src/components/status/Toast/toast.cva.ts
5
+ const toastContainerDefinition = UIOverrides.defineConfig({
6
+ base: ["m-toast-gap-margin-mobile w-auto gap-toast-gap-margin-mobile p-0 md:m-toast-gap-margin-desktop md:gap-toast-gap-margin-desktop"],
7
+ config: { variants: { position: {
8
+ "bottom-right": "right-0 bottom-0",
9
+ "bottom-left": "bottom-0 left-0",
10
+ "top-right": "top-0 right-0",
11
+ "top-left": "top-0 left-0",
12
+ "bottom-center": "bottom-0",
13
+ "top-center": "top-0"
14
+ } } }
15
+ });
16
+ const toastWrapper = clsx("m-0! min-h-0! w-auto! max-w-toast bg-transparent! p-0! shadow-none!");
17
+ const toastDefinition = UIOverrides.defineConfig({
18
+ base: ["m-0 inline-flex w-auto flex-col items-center overflow-hidden rounded-toast-rounding-default shadow-4 md:flex-row"],
19
+ config: {
20
+ variants: {
21
+ variant: {
22
+ outlined: "border bg-surface-default-card text-surface-default-card-foreground",
23
+ contained: ""
24
+ },
25
+ color: {
26
+ neutral: "",
27
+ success: "",
28
+ warning: "",
29
+ error: ""
30
+ },
31
+ position: {
32
+ "bottom-right": "",
33
+ "bottom-left": "",
34
+ "bottom-center": "",
35
+ "top-right": "",
36
+ "top-left": "",
37
+ "top-center": ""
38
+ }
39
+ },
40
+ compoundVariants: [
41
+ {
42
+ variant: "outlined",
43
+ color: "neutral",
44
+ className: "border-border-default-subtle"
45
+ },
46
+ {
47
+ variant: "outlined",
48
+ color: "success",
49
+ className: "border-surface-success-base"
50
+ },
51
+ {
52
+ variant: "outlined",
53
+ color: "warning",
54
+ className: "border-surface-warning-base"
55
+ },
56
+ {
57
+ variant: "outlined",
58
+ color: "error",
59
+ className: "border-border-destructive-base"
60
+ },
61
+ {
62
+ variant: "contained",
63
+ color: "neutral",
64
+ className: "bg-surface-inverted-card text-surface-inverted-card-foreground"
65
+ },
66
+ {
67
+ variant: "contained",
68
+ color: "success",
69
+ className: "bg-surface-success-base text-surface-success-inverted-base"
70
+ },
71
+ {
72
+ variant: "contained",
73
+ color: "warning",
74
+ className: "bg-surface-warning-base text-surface-warning-inverted-base"
75
+ },
76
+ {
77
+ variant: "contained",
78
+ color: "error",
79
+ className: "bg-surface-destructive-base text-surface-destructive-inverted-base"
80
+ }
81
+ ],
82
+ defaultVariants: {
83
+ variant: "outlined",
84
+ color: "neutral"
85
+ }
86
+ }
87
+ });
88
+ const buttonColorVariant = compoundMapper({
89
+ compoundVariants: [{
90
+ variant: "contained",
91
+ value: {
92
+ color: "primary",
93
+ inverted: true
94
+ }
95
+ }],
96
+ default: {
97
+ color: "primary",
98
+ inverted: false
99
+ }
100
+ });
101
+ const statusIconDefinition = UIOverrides.defineConfig({
102
+ base: ["size-icons-size shrink-0"],
103
+ config: {
104
+ variants: {
105
+ variant: {
106
+ outlined: "",
107
+ contained: "text-inherit"
108
+ },
109
+ color: {
110
+ neutral: "",
111
+ success: "",
112
+ warning: "",
113
+ error: ""
114
+ }
115
+ },
116
+ compoundVariants: [
117
+ {
118
+ variant: "outlined",
119
+ color: "neutral",
120
+ className: "text-surface-default-foreground"
121
+ },
122
+ {
123
+ variant: "outlined",
124
+ color: "success",
125
+ className: "text-surface-success-base"
126
+ },
127
+ {
128
+ variant: "outlined",
129
+ color: "warning",
130
+ className: "text-surface-warning-base"
131
+ },
132
+ {
133
+ variant: "outlined",
134
+ color: "error",
135
+ className: "text-surface-destructive-base"
136
+ }
137
+ ],
138
+ defaultVariants: {
139
+ variant: "outlined",
140
+ color: "neutral"
141
+ }
142
+ }
143
+ });
144
+ const statusSeparatorDefinition = UIOverrides.defineConfig({
145
+ base: ["h-px shrink-0 self-stretch md:h-auto md:w-px"],
146
+ config: {
147
+ variants: {
148
+ variant: {
149
+ outlined: "",
150
+ contained: "hidden"
151
+ },
152
+ color: {
153
+ neutral: "bg-border-default-subtle",
154
+ success: "bg-surface-success-base",
155
+ warning: "bg-surface-warning-base",
156
+ error: "bg-surface-destructive-base"
157
+ }
158
+ },
159
+ defaultVariants: { color: "neutral" }
160
+ }
161
+ });
162
+ //#endregion
163
+ export { toastDefinition as a, toastContainerDefinition as i, statusIconDefinition as n, toastWrapper as o, statusSeparatorDefinition as r, buttonColorVariant as t };
@@ -1,4 +1,5 @@
1
- import { n as y, r as Toast } from "./dist-B8h0VT0E.js";
1
+ import { t as Toast } from "./Toast-DtG3pA61.js";
2
+ import { n as y } from "./dist-CAdwxJbe.js";
2
3
  import { jsx } from "react/jsx-runtime";
3
4
  //#region src/components/status/Toast/toast.runtime.tsx
4
5
  const showToast = (id, color, params, options) => {
@@ -1,5 +1,5 @@
1
1
  import { t as ControlProps } from "./form.types-ZNGbcqJS.js";
2
- import { s as ToggleGroupProps } from "./toggleGroup.types-DD6uRI5G.js";
2
+ import { s as ToggleGroupProps } from "./toggleGroup.types-Bp43zbSQ.js";
3
3
  import { Key } from "react-aria-components";
4
4
  import { FieldValues } from "react-hook-form";
5
5
  //#region src/entries/rhf/toggle-group.d.ts
@@ -0,0 +1,35 @@
1
+ import { t as UIOverrides } from "./uiOverrides.context-BTCH9y5a.js";
2
+ import { n as uiOutlineClass } from "./outline.clsx-50W_vNDl.js";
3
+ //#region src/components/ToggleGroup/toggleGroup.cva.ts
4
+ const toggleGroupDefinition = UIOverrides.defineConfig({ base: [
5
+ "group/segment grid w-fit items-center gap-segmented-control-side-segmented-control p-segmented-control-side-segmented-control",
6
+ "bg-surface-default-popover",
7
+ "rounded-segmented-control-rounding-segmented-control"
8
+ ] });
9
+ const toggleGroupItemDefinition = UIOverrides.defineConfig({
10
+ base: [
11
+ "flex items-center justify-center gap-segmented-control-gap-content-icon-to-text transition-all duration-200",
12
+ "border border-support-transparent-outline",
13
+ "py-segmented-control-height-segment",
14
+ "rounded-segmented-control-rounding-segment",
15
+ uiOutlineClass,
16
+ "bg-support-transparent-outline text-interactive-subtle-secondary-foreground",
17
+ "not-selected:not-disabled:not-pressed:hover:border-state-interactive-subtle-secondary-background/hover not-selected:not-disabled:not-pressed:hover:bg-state-interactive-subtle-secondary-background/hover not-selected:not-disabled:not-pressed:hover:text-state-interactive-subtle-secondary-foreground/hover",
18
+ "not-selected:not-disabled:pressed:border-state-interactive-subtle-secondary-background/pressed not-selected:not-disabled:pressed:bg-state-interactive-subtle-secondary-background/pressed not-selected:not-disabled:pressed:text-state-interactive-subtle-secondary-foreground/pressed",
19
+ "not-selected:not-disabled:focus-visible:border-state-interactive-subtle-secondary-background/focus not-selected:not-disabled:focus-visible:bg-state-interactive-subtle-secondary-background/focus not-selected:not-disabled:focus-visible:text-state-interactive-subtle-secondary-foreground/focus",
20
+ "focus-visible:outline-interactive-ring",
21
+ "not-selected:disabled:text-state-interactive-subtle-secondary-foreground/disabled",
22
+ "selected:border-state-interactive-secondary-background/toggled selected:bg-state-interactive-secondary-background/toggled selected:text-interactive-secondary-foreground",
23
+ "selected:not-disabled:hover:border-state-interactive-secondary-background/toggled-hovered selected:not-disabled:hover:bg-state-interactive-secondary-background/toggled-hovered",
24
+ "selected:disabled:border-state-interactive-secondary-background/toggled-disabled selected:disabled:bg-state-interactive-secondary-background/toggled-disabled selected:disabled:text-interactive-secondary-foreground/40"
25
+ ],
26
+ config: {
27
+ variants: { iconOnly: {
28
+ true: "px-segmented-control-height-segment",
29
+ false: "px-segmented-control-side-segment"
30
+ } },
31
+ defaultVariants: { iconOnly: false }
32
+ }
33
+ });
34
+ //#endregion
35
+ export { toggleGroupItemDefinition as n, toggleGroupDefinition as t };
@@ -1,4 +1,5 @@
1
- import { n as StyleMergeUtils, t as UIOverrides } from "./uiOverrides.context-C3xb4Ttq.js";
1
+ import { t as StyleMergeUtils } from "./style-merge.util-zLimKwt6.js";
2
+ import { t as UIOverrides } from "./uiOverrides.context-DEp139He.js";
2
3
  import { n as FieldValues } from "./form.binding-DVJ5F0JE.js";
3
4
  import { t as ControlProps } from "./form.types-CecYaerF.js";
4
5
  import { FC, ReactElement, Ref, SVGProps } from "react";