@povio/ui 4.0.3 → 5.0.0-rc.10

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 (436) 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 +128 -10
  6. package/dist/{Accordion-CB1F5YAY.js → Accordion-BzwO4_ml.js} +22 -140
  7. package/dist/{Alert-BALBsBrP.js → Alert-CnvEb1D_.js} +34 -30
  8. package/dist/{Alert-CbEhRaU5.d.ts → Alert-DfiJbKH0.d.ts} +4 -3
  9. package/dist/{AlertDialog-PjYM6lDo.d.ts → AlertDialog-OWTbR4km.d.ts} +3 -3
  10. package/dist/AppCanvasPage-BEER5hHp.js +2421 -0
  11. package/dist/AppCanvasPage-BIFYeEeS.d.ts +80 -0
  12. package/dist/{Autocomplete-DE2lQi5o.d.ts → Autocomplete-C6RRxImn.d.ts} +1 -1
  13. package/dist/{Badge-CjPpYa50.d.ts → Badge-CBNpj823.d.ts} +8 -6
  14. package/dist/BadgeButton-Ccgt3oGO.d.ts +15 -0
  15. package/dist/{BottomSheet-CVTF1wQe.js → BottomSheet-BXLE3161.js} +15 -14
  16. package/dist/{BottomSheet-CT0zuola.d.ts → BottomSheet-DbQuzfAB.d.ts} +1 -1
  17. package/dist/{BottomSheet.lazy-7AwnB4vS.d.ts → BottomSheet.lazy-D9LCEo7s.d.ts} +1 -1
  18. package/dist/{Breadcrumbs-D-3YEuem.d.ts → Breadcrumbs-CUV6CU8Q.d.ts} +1 -1
  19. package/dist/{Breadcrumbs-C-mZtdCc.js → Breadcrumbs-FF8hMfXd.js} +26 -42
  20. package/dist/Button-C5rv4Cr2.js +506 -0
  21. package/dist/{Button-DTNjsGx5.d.ts → Button-D-4qb0IR.d.ts} +3 -3
  22. package/dist/{ButtonContent-CohuJJzG.js → ButtonContent-c7lJayVQ.js} +12 -10
  23. package/dist/{Calendar-BYcN64W5.js → Calendar-DRHruqr_.js} +28 -20
  24. package/dist/{CheckContent-DzWpxKGq.js → CheckContent-D7sZPmzx.js} +4 -5
  25. package/dist/{Checkbox-DBV_Nxtq.js → Checkbox-D3f2Plbc.js} +6 -6
  26. package/dist/{Checkbox-CBybJbLm.d.ts → Checkbox-x2MuL477.d.ts} +1 -1
  27. package/dist/{CheckboxCheckmark-DJue5Aej.js → CheckboxCheckmark-FwKjPVbV.js} +34 -55
  28. package/dist/{CheckboxGroup-4xoWgmxr.d.ts → CheckboxGroup-Dio2rvF5.d.ts} +3 -3
  29. package/dist/ComponentGallery-CMFrbwEN.js +3513 -0
  30. package/dist/{DatePicker-CjmXaZ9T.d.ts → DatePicker-1LJ2LqST.d.ts} +3 -3
  31. package/dist/{DatePicker-DGlMtlvy.js → DatePicker-xDEqzNJv.js} +12 -11
  32. package/dist/{DatePickerInput-Nj_rVUyU.js → DatePickerInput-B0fEeCOf.js} +27 -40
  33. package/dist/{DatePickerInput-CdCtVE9z.d.ts → DatePickerInput-ai4apf8B.d.ts} +3 -3
  34. package/dist/{DateRangePicker-D1kjkFfS.d.ts → DateRangePicker-Dfptit_Z.d.ts} +3 -3
  35. package/dist/{DateRangePicker-CE9XvAy9.js → DateRangePicker-DxuVhRaf.js} +25 -22
  36. package/dist/{DateTimePicker-CtUPjVp1.js → DateTimePicker-4N1Pka07.js} +11 -10
  37. package/dist/{DateTimePicker-CT_Pm3KB.d.ts → DateTimePicker-DpsfukpQ.d.ts} +3 -3
  38. package/dist/{Dialog-BE9BSDDl.js → Dialog-9manOgMA.js} +4 -4
  39. package/dist/{Dialog-CXoVeIkU.js → Dialog-CKLkS00H.js} +10 -2
  40. package/dist/{Dialog-DEbI_9S-.d.ts → Dialog-CW93T9X1.d.ts} +3 -2
  41. package/dist/{DropdownMenu-tuf1W-IL.js → DropdownMenu-5jmtgLXd.js} +8 -6
  42. package/dist/{DropdownMenu-CZQRzOBb.d.ts → DropdownMenu-JNpYT4-3.d.ts} +4 -3
  43. package/dist/{DropdownMenuDesktop-C9ttysuk.js → DropdownMenuDesktop-Cl9gZVq0.js} +9 -38
  44. package/dist/{FileInput-BUs7wL0_.js → FileInput-DUyc_sVu.js} +20 -22
  45. package/dist/{FileInput-CI8D_wf_.d.ts → FileInput-Dt3UDg2s.d.ts} +7 -6
  46. package/dist/{FileTrigger-CDXcQthK.js → FileTrigger-Cthk5_Wp.js} +1 -30
  47. package/dist/{FileUpload-BrnJdN3M.d.ts → FileUpload-BXlKtQ4L.d.ts} +1 -1
  48. package/dist/{FileUpload-C3HzeFeb.js → FileUpload-Cx98L1jz.js} +76 -173
  49. package/dist/{FileUploadContainer-CkBENy6n.d.ts → FileUploadContainer-BURZAS2M.d.ts} +1 -1
  50. package/dist/{Form-mzpVGNjX.d.ts → Form-DmcByQts.d.ts} +1 -1
  51. package/dist/{FormField-DTO2cbXC.js → FormField-9h3JAhaY.js} +40 -38
  52. package/dist/{FormField-DTDj3F0A.d.ts → FormField-C8_T6by9.d.ts} +1 -1
  53. package/dist/{FormFieldError-CFg0Wn3i.js → FormFieldError-DeOHHLo2.js} +3 -3
  54. package/dist/FormFieldHeaderTooltip-BV2Ju4oB.js +17 -0
  55. package/dist/{IconButton-CYazzM7I.d.ts → IconButton-D4thBurp.d.ts} +2 -2
  56. package/dist/IconSlot-DSK7qNxc.js +79 -0
  57. package/dist/{InlineIconButton-Rp5bXWcQ.d.ts → InlineIconButton-BeJCjl-q.d.ts} +2 -2
  58. package/dist/{InlineTooltipWrapper-Ct6zi24f.js → InlineTooltipWrapper-BpApaGXV.js} +3 -3
  59. package/dist/{Input-DSHFNEVl.d.ts → Input-CHD67H4o.d.ts} +3 -3
  60. package/dist/{InputContent-CvWm6GAv.d.ts → InputContent-B6CIQNnE.d.ts} +3 -3
  61. package/dist/{InputItem-DAunP0iy.js → InputItem-Cv19Hwnx.js} +11 -11
  62. package/dist/{Inputs-CHEDcuP0.d.ts → Inputs-C0sUmuPv.d.ts} +1 -1
  63. package/dist/{Inputs-_IqA6JRE.js → Inputs-D1aE_J9f.js} +1 -1
  64. package/dist/{Link-DS9-0Ijl.d.ts → Link-Ow9H7kNv.d.ts} +3 -2
  65. package/dist/{ListBox-B7DW1S7n.js → ListBox-CL8Ar4Q_.js} +5 -4
  66. package/dist/{MenuItem-CROWrE2A.d.ts → MenuItem-DHyqOqln.d.ts} +1 -1
  67. package/dist/{Modal-CoFt5PGP.js → Modal-w60dVQcb.js} +1 -1
  68. package/dist/{NumberField-BICDQ2gN.d.ts → NumberField-4SX3R6IR.d.ts} +3 -3
  69. package/dist/{NumberRangeInput-Bu-3Y0zf.js → NumberRangeInput-Bzfe-RlV.js} +8 -8
  70. package/dist/{NumberRangeInput-BlGXChNR.d.ts → NumberRangeInput-CKmLfgVD.d.ts} +2 -2
  71. package/dist/{Pagination-CumQED8X.d.ts → Pagination-CwQu5Py8.d.ts} +1 -1
  72. package/dist/{PaginationList-D79ApWLm.d.ts → PaginationList-DMRUGtf8.d.ts} +2 -2
  73. package/dist/{PaginationList-CmOJo2r2.js → PaginationList-DtvuP63b.js} +13 -21
  74. package/dist/{PasswordInput-BdrYD1D3.d.ts → PasswordInput-tLGcHS6H.d.ts} +1 -1
  75. package/dist/{Popover-C0_-TLl_.d.ts → Popover-BTHPteIh.d.ts} +2 -2
  76. package/dist/{Progress-_jkt2pQw.js → Progress-B3mY9rIP.js} +6 -7
  77. package/dist/{Progress-CYfDXJKs.d.ts → Progress-CjWOR38H.d.ts} +3 -2
  78. package/dist/{QuerySelect-Bpz-qI9h.d.ts → QuerySelect-CgfnA3d-.d.ts} +2 -2
  79. package/dist/{RadioGroup-WHWosz7K.d.ts → RadioGroup-CvmI9i_U.d.ts} +3 -3
  80. package/dist/{RadioGroup-DiF7ILto.js → RadioGroup-efBKgTYA.js} +21 -24
  81. package/dist/{RichTextEditor-eM9d2umr.js → RichTextEditor-Bd7F5D8f.js} +68 -141
  82. package/dist/{RichTextEditor-CbgjRfiU.d.ts → RichTextEditor-CsDZcgyf.d.ts} +1 -1
  83. package/dist/{Select-CyBtGHk9.js → Select-CgIhoWgk.js} +10 -15
  84. package/dist/{Select-wzB2aQ_X.d.ts → Select-DKBPfNUe.d.ts} +1 -1
  85. package/dist/{SelectBase-DefgAEzh.d.ts → SelectBase-BkIhS9Dg.d.ts} +3 -3
  86. package/dist/{Slider-CZMNmk6P.d.ts → Slider-BtUXzztJ.d.ts} +1 -1
  87. package/dist/{Slider-KkWtEm09.js → Slider-CMg0BXJO.js} +12 -12
  88. package/dist/{Spinner-owSXOEzg.js → Spinner-BeVTUzzx.js} +2 -2
  89. package/dist/{Spinner-BOgO9bS6.d.ts → Spinner-DbXeDOa2.d.ts} +3 -2
  90. package/dist/{SplitButton-BPZbQeYC.d.ts → SplitButton-D9ngY1rJ.d.ts} +3 -3
  91. package/dist/{Stepper-BbO9TlOM.js → Stepper-Cp5vbL5g.js} +9 -125
  92. package/dist/{Stepper-PcHlxDD5.d.ts → Stepper-TATlHZhQ.d.ts} +13 -12
  93. package/dist/{Switch-Cylpjatb.js → Switch-CqnGEdeD.js} +17 -25
  94. package/dist/{Switch-C0S5Juhf.d.ts → Switch-s_EPn0Jz.d.ts} +1 -1
  95. package/dist/Table-BN2_J_Ne.js +636 -0
  96. package/dist/Tag-AHfV_XSf.d.ts +44 -0
  97. package/dist/Tag-DPg5sL1Z.js +146 -0
  98. package/dist/{TextArea-CBWJ7w-p.d.ts → TextArea-D6kcAwGn.d.ts} +2 -2
  99. package/dist/{TextArea-DvqDGp4M.js → TextArea-uPffb457.js} +9 -9
  100. package/dist/{TextButton-D7e_YBLe.d.ts → TextButton-XUhV_1s0.d.ts} +4 -4
  101. package/dist/{TimePicker-WirUMDrH.js → TimePicker-DN-i98z5.js} +12 -12
  102. package/dist/{TimePicker-BZ4WrI5Z.d.ts → TimePicker-Dex9aU7D.d.ts} +2 -2
  103. package/dist/Toast-DtG3pA61.js +53 -0
  104. package/dist/{Toast-DIlYlUQk.d.ts → Toast-ruXqONDA.d.ts} +1 -1
  105. package/dist/{ToastContainer-8X5jGBe7.js → ToastContainer-qgpzMFD4.js} +4 -3
  106. package/dist/{ToggleButton-D4y2fLmN.d.ts → ToggleButton-7aP8Jb11.d.ts} +2 -2
  107. package/dist/{ToggleGroup-D9CFdM5-.d.ts → ToggleGroup-CRFDIPGZ.d.ts} +1 -1
  108. package/dist/{ToggleGroup-BK6Ka7WA.js → ToggleGroup-DmVPNWok.js} +27 -55
  109. package/dist/{Tooltip--PSxkQA3.js → Tooltip-CpG1nz7Y.js} +7 -49
  110. package/dist/{Tooltip-B-2AxyjP.d.ts → Tooltip-DHv6vAqW.d.ts} +10 -9
  111. package/dist/{TooltipWrapper-BVc_Aln-.js → TooltipWrapper-CDHFaUKZ.js} +5 -5
  112. package/dist/{Typography-AcUd9df8.js → Typography-LU4z2pR1.js} +2 -2
  113. package/dist/{Typography-BWmZd20e.d.ts → Typography-XljT9s02.d.ts} +1 -1
  114. package/dist/UIConfigurator-CTlq-hrG.js +6704 -0
  115. package/dist/accordion.cva-CL1bVscW.js +129 -0
  116. package/dist/{autocomplete-CaQSVRrw.d.ts → autocomplete-B-JuxTYN.d.ts} +2 -2
  117. package/dist/badgeButton.cva-B2bgCQP6.d.ts +41 -0
  118. package/dist/badgeButton.cva-CvN4CTx5.js +300 -0
  119. package/dist/breadcrumbs.cva-7zzdDhVR.js +27 -0
  120. package/dist/{button.cva-ChabF4Am.d.ts → button.cva-C7kEhgoA.d.ts} +15 -32
  121. package/dist/{buttonContent.cva-CP857foM.d.ts → buttonContent.cva-DPIlROA9.d.ts} +2 -2
  122. package/dist/{checkbox-D8CPWRlM.d.ts → checkbox-CRP4QRfP.d.ts} +1 -1
  123. package/dist/{checkbox-group-BuPUA_Qj.d.ts → checkbox-group-BI_RwIJ4.d.ts} +1 -1
  124. package/dist/{checkbox.cva-DwnPS5df.d.ts → checkbox.cva-DBqfmYHY.d.ts} +6 -7
  125. package/dist/components/accordion.js +1 -1
  126. package/dist/components/alert-dialog.d.ts +1 -1
  127. package/dist/components/alert-dialog.js +7 -7
  128. package/dist/components/alert.d.ts +1 -1
  129. package/dist/components/alert.js +1 -1
  130. package/dist/components/autocomplete.d.ts +1 -1
  131. package/dist/components/autocomplete.js +6 -5
  132. package/dist/components/badge-button.d.ts +2 -0
  133. package/dist/components/{pill-button.js → badge-button.js} +13 -12
  134. package/dist/components/badge.d.ts +1 -1
  135. package/dist/components/badge.js +56 -40
  136. package/dist/components/bottom-sheet.d.ts +2 -2
  137. package/dist/components/bottom-sheet.js +2 -2
  138. package/dist/components/breadcrumbs.d.ts +1 -1
  139. package/dist/components/breadcrumbs.js +1 -1
  140. package/dist/components/button.d.ts +2 -2
  141. package/dist/components/button.js +1 -1
  142. package/dist/components/checkbox-group.d.ts +1 -1
  143. package/dist/components/checkbox-group.js +6 -6
  144. package/dist/components/checkbox.d.ts +1 -1
  145. package/dist/components/checkbox.js +1 -1
  146. package/dist/components/date-picker.d.ts +1 -1
  147. package/dist/components/date-picker.js +1 -1
  148. package/dist/components/date-range-picker.d.ts +1 -1
  149. package/dist/components/date-range-picker.js +1 -1
  150. package/dist/components/date-time-picker.d.ts +1 -1
  151. package/dist/components/date-time-picker.js +1 -1
  152. package/dist/components/dialog.d.ts +1 -1
  153. package/dist/components/dialog.js +1 -1
  154. package/dist/components/drawer.js +4 -4
  155. package/dist/components/dropdown-menu.d.ts +2 -2
  156. package/dist/components/dropdown-menu.js +2 -2
  157. package/dist/components/file-input.d.ts +1 -1
  158. package/dist/components/file-input.js +1 -1
  159. package/dist/components/file-upload-container.d.ts +2 -2
  160. package/dist/components/file-upload-container.js +1 -1
  161. package/dist/components/file-upload.d.ts +2 -2
  162. package/dist/components/file-upload.js +1 -1
  163. package/dist/components/form-field.d.ts +1 -1
  164. package/dist/components/form-field.js +1 -1
  165. package/dist/components/icon-button.d.ts +1 -1
  166. package/dist/components/icon-button.js +2 -2
  167. package/dist/components/icon-slot.d.ts +2 -0
  168. package/dist/components/icon-slot.js +2 -0
  169. package/dist/components/inline-icon-button.d.ts +1 -1
  170. package/dist/components/inline-icon-button.js +2 -2
  171. package/dist/components/input.d.ts +1 -1
  172. package/dist/components/input.js +7 -7
  173. package/dist/components/link.d.ts +1 -1
  174. package/dist/components/link.js +32 -1
  175. package/dist/components/number-field.d.ts +1 -1
  176. package/dist/components/number-field.js +7 -7
  177. package/dist/components/number-range-input.d.ts +1 -1
  178. package/dist/components/number-range-input.js +1 -1
  179. package/dist/components/pagination-list.d.ts +1 -1
  180. package/dist/components/pagination-list.js +1 -1
  181. package/dist/components/pagination.d.ts +1 -1
  182. package/dist/components/pagination.js +36 -33
  183. package/dist/components/password-input.d.ts +1 -1
  184. package/dist/components/popover.d.ts +1 -1
  185. package/dist/components/popover.js +6 -5
  186. package/dist/components/progress.d.ts +1 -1
  187. package/dist/components/progress.js +1 -1
  188. package/dist/components/query-autocomplete.d.ts +2 -2
  189. package/dist/components/query-autocomplete.js +10 -5
  190. package/dist/components/query-select.d.ts +1 -1
  191. package/dist/components/query-select.js +3 -3
  192. package/dist/components/radio-group.d.ts +1 -1
  193. package/dist/components/radio-group.js +1 -1
  194. package/dist/components/select.d.ts +2 -2
  195. package/dist/components/select.js +1 -1
  196. package/dist/components/slider.d.ts +1 -1
  197. package/dist/components/slider.js +1 -1
  198. package/dist/components/spinner.d.ts +1 -1
  199. package/dist/components/spinner.js +1 -1
  200. package/dist/components/split-button.d.ts +1 -1
  201. package/dist/components/split-button.js +3 -3
  202. package/dist/components/stepper.d.ts +1 -1
  203. package/dist/components/stepper.js +1 -1
  204. package/dist/components/switch.d.ts +1 -1
  205. package/dist/components/switch.js +1 -1
  206. package/dist/components/tag.d.ts +1 -1
  207. package/dist/components/tag.js +1 -1
  208. package/dist/components/text-area.d.ts +1 -1
  209. package/dist/components/text-area.js +1 -1
  210. package/dist/components/text-button.d.ts +1 -1
  211. package/dist/components/text-button.js +1 -2
  212. package/dist/components/time-picker.d.ts +1 -1
  213. package/dist/components/time-picker.js +1 -1
  214. package/dist/components/toast.d.ts +2 -2
  215. package/dist/components/toast.js +2 -2
  216. package/dist/components/toggle-button.d.ts +1 -1
  217. package/dist/components/toggle-button.js +1 -1
  218. package/dist/components/toggle-group.d.ts +2 -2
  219. package/dist/components/toggle-group.js +1 -1
  220. package/dist/components/tooltip-ellipsis.js +1 -1
  221. package/dist/components/tooltip.d.ts +1 -1
  222. package/dist/components/tooltip.js +1 -1
  223. package/dist/components/typography.d.ts +2 -2
  224. package/dist/components/typography.js +1 -1
  225. package/dist/components/use-toast.d.ts +1 -1
  226. package/dist/components/use-toast.js +2 -2
  227. package/dist/config/app-canvas-tanstack.d.ts +23 -0
  228. package/dist/config/app-canvas-tanstack.js +62 -0
  229. package/dist/config/app-canvas.d.ts +12 -0
  230. package/dist/config/app-canvas.js +2 -0
  231. package/dist/config/confirmation.d.ts +1 -1
  232. package/dist/config/link-context.d.ts +2 -2
  233. package/dist/config/ui-config.d.ts +2 -2
  234. package/dist/config/ui-config.js +1 -1
  235. package/dist/config/ui-configurator-theme.d.ts +2 -0
  236. package/dist/config/ui-configurator-theme.js +2 -0
  237. package/dist/config/ui-configurator-vite.d.ts +10 -0
  238. package/dist/config/ui-configurator-vite.js +174 -0
  239. package/dist/config/ui-configurator.d.ts +15 -0
  240. package/dist/config/ui-configurator.js +3 -0
  241. package/dist/config/ui-overrides.d.ts +1 -1
  242. package/dist/config/ui-overrides.js +1 -1
  243. package/dist/configuration.context-DP4p1cIe.d.ts +926 -0
  244. package/dist/{confirmation.context-fKfUTsLF.d.ts → confirmation.context-BOeEVczb.d.ts} +1 -1
  245. package/dist/{date-picker-MXt02b7Z.d.ts → date-picker-BhIA01qs.d.ts} +1 -1
  246. package/dist/{date-range-picker-BjT0t21q.d.ts → date-range-picker-BsuZ2h_3.d.ts} +1 -1
  247. package/dist/{date-time-picker-CMmIuZtT.d.ts → date-time-picker-Bi-qW6vO.d.ts} +1 -1
  248. package/dist/datePickerInput.cva-Cd7UUN61.js +14 -0
  249. package/dist/{datePickerValue.utils-1z4mwZZs.js → datePickerValue.utils-QWR2q5Vv.js} +9 -11
  250. package/dist/{dialog.cva-5qNq9YfM.js → dialog.cva-COhDZaVl.js} +4 -4
  251. package/dist/{dist-C6GfeeEC.js → dist-CAdwxJbe.js} +1 -256
  252. package/dist/{dom.utils-D3mELNBA.js → dom.utils-D1AopHx9.js} +1 -1
  253. package/dist/dropdownMenu.cva-DvEmX0bs.js +34 -0
  254. package/dist/{dynamicInputs-CQMTixlW.d.ts → dynamicInputs-DdcsSoYu.d.ts} +112 -111
  255. package/dist/{fieldAdapter-BYVPxvYi.js → fieldAdapter-DjYls12j.js} +1 -1
  256. package/dist/{file-input-D-46wS5j.d.ts → file-input-BTYsGgr7.d.ts} +1 -1
  257. package/dist/{file-upload-BG20Bhrn.d.ts → file-upload-CqGdt1Ue.d.ts} +2 -2
  258. package/dist/fileUpload.cva-ujmStxB1.js +42 -0
  259. package/dist/{fileUpload.types-xFzuCT_m.d.ts → fileUpload.types-rIGu4MgY.d.ts} +2 -2
  260. package/dist/iconSlot.cva-CnpFzAOR.d.ts +21 -0
  261. package/dist/icons.d.ts +2 -1
  262. package/dist/icons.js +2 -1
  263. package/dist/index.d.ts +87 -86
  264. package/dist/index.js +55 -44
  265. package/dist/info-iUmX3uDk.js +32 -0
  266. package/dist/{input-CKGPYwfB.d.ts → input-CqNMORk8.d.ts} +1 -1
  267. package/dist/{input.cva-ByFuAEIS.d.ts → input.cva-CQPV5gW7.d.ts} +6 -9
  268. package/dist/input.cva-CbMTwuQU.js +227 -0
  269. package/dist/{link.context-C5ZgwVM5.d.ts → link.context-D5qyz9Rf.d.ts} +1 -1
  270. package/dist/link.cva-DMTHZiJG.js +12 -0
  271. package/dist/{number-field-CyP6XgJh.d.ts → number-field-BcMnahI8.d.ts} +1 -1
  272. package/dist/{number-range-input-DMmlk7Bl.d.ts → number-range-input-CLfuacKv.d.ts} +1 -1
  273. package/dist/{password-input-BWpfQe0G.d.ts → password-input-BV1Amdc8.d.ts} +1 -1
  274. package/dist/popover.cva-Bhud1wnp.js +5 -0
  275. package/dist/popoverAnimation-DEZSvKP8.js +4 -0
  276. package/dist/{query-autocomplete-DV8fEkK2.d.ts → query-autocomplete-CJSJeSXW.d.ts} +2 -2
  277. package/dist/{query-select-BZ3-5WTu.d.ts → query-select-B-VLz1PW.d.ts} +2 -2
  278. package/dist/{queryAutocomplete.types-Dm8Ttx4v.d.ts → queryAutocomplete.types-D2w1_hau.d.ts} +2 -2
  279. package/dist/{radio-group-CmUtsjqP.d.ts → radio-group-DZZdQMub.d.ts} +1 -1
  280. package/dist/{radio.cva-DAq2M13H.d.ts → radio.cva-DN9VQ3Kb.d.ts} +4 -3
  281. package/dist/rhf/autocomplete.d.ts +2 -2
  282. package/dist/rhf/autocomplete.js +1 -1
  283. package/dist/rhf/checkbox-group.d.ts +2 -2
  284. package/dist/rhf/checkbox-group.js +1 -1
  285. package/dist/rhf/checkbox.d.ts +2 -2
  286. package/dist/rhf/checkbox.js +2 -2
  287. package/dist/rhf/date-picker.d.ts +2 -2
  288. package/dist/rhf/date-picker.js +2 -2
  289. package/dist/rhf/date-range-picker.d.ts +2 -2
  290. package/dist/rhf/date-range-picker.js +2 -2
  291. package/dist/rhf/date-time-picker.d.ts +2 -2
  292. package/dist/rhf/date-time-picker.js +2 -2
  293. package/dist/rhf/file-input.d.ts +2 -2
  294. package/dist/rhf/file-input.js +2 -2
  295. package/dist/rhf/file-upload.d.ts +2 -2
  296. package/dist/rhf/file-upload.js +2 -2
  297. package/dist/rhf/input.d.ts +2 -2
  298. package/dist/rhf/input.js +1 -1
  299. package/dist/rhf/inputs.d.ts +2 -2
  300. package/dist/rhf/number-field.d.ts +2 -2
  301. package/dist/rhf/number-field.js +1 -1
  302. package/dist/rhf/number-range-input.d.ts +2 -2
  303. package/dist/rhf/number-range-input.js +2 -2
  304. package/dist/rhf/password-input.d.ts +2 -2
  305. package/dist/rhf/password-input.js +1 -1
  306. package/dist/rhf/query-autocomplete.d.ts +1 -1
  307. package/dist/rhf/query-autocomplete.js +1 -1
  308. package/dist/rhf/query-select.d.ts +1 -1
  309. package/dist/rhf/query-select.js +1 -1
  310. package/dist/rhf/radio-group.d.ts +2 -2
  311. package/dist/rhf/radio-group.js +2 -2
  312. package/dist/rhf/rich-text-editor.d.ts +2 -2
  313. package/dist/rhf/rich-text-editor.js +2 -2
  314. package/dist/rhf/select.d.ts +2 -2
  315. package/dist/rhf/select.js +2 -2
  316. package/dist/rhf/slider.d.ts +2 -2
  317. package/dist/rhf/slider.js +2 -2
  318. package/dist/rhf/switch.d.ts +2 -2
  319. package/dist/rhf/switch.js +2 -2
  320. package/dist/rhf/text-area.d.ts +2 -2
  321. package/dist/rhf/text-area.js +2 -2
  322. package/dist/rhf/time-picker.d.ts +2 -2
  323. package/dist/rhf/time-picker.js +2 -2
  324. package/dist/rhf/toggle-group.d.ts +2 -2
  325. package/dist/rhf/toggle-group.js +2 -2
  326. package/dist/{rhf-1_ZO8GhU.js → rhf-t348TCCL.js} +1 -1
  327. package/dist/rhf.d.ts +87 -86
  328. package/dist/rhf.js +55 -44
  329. package/dist/{rich-text-editor-Db3XWWFo.d.ts → rich-text-editor-Cp5dYHQI.d.ts} +1 -1
  330. package/dist/rich-text-editor.d.ts +1 -1
  331. package/dist/rich-text-editor.js +1 -1
  332. package/dist/{select-DXGbGkZM.d.ts → select-FjDx5oe4.d.ts} +2 -2
  333. package/dist/selectDesktop.cva-CHAMxhfO.js +69 -0
  334. package/dist/{slider-JQh0ypfU.d.ts → slider-BVJiBswZ.d.ts} +1 -1
  335. package/dist/{staticDateTimeSegments-vP2f1woD.js → staticDateTimeSegments-BWea3HAt.js} +34 -33
  336. package/dist/{staticSelect.utils-DOt6f-ck.js → staticSelect.utils-BfTCi26B.js} +41 -92
  337. package/dist/stepper.cva-CZ0Kj-s7.js +116 -0
  338. package/dist/style-merge.util-zLimKwt6.d.ts +40 -0
  339. package/dist/styles/app-canvas.css +740 -0
  340. package/dist/styles/color-utilities.css +20 -0
  341. package/dist/styles/configurator.css +3280 -0
  342. package/dist/styles/editor.css +9 -9
  343. package/dist/styles/input.d.ts +1 -1
  344. package/dist/{switch-Lm3xl1rQ.d.ts → switch-C--iWnY8.d.ts} +1 -1
  345. package/dist/switch.cva-CWNzmdRc.d.ts +16 -0
  346. package/dist/table.cva-D5oQ-QvA.js +101 -0
  347. package/dist/tanstack/autocomplete.d.ts +1 -1
  348. package/dist/tanstack/checkbox-group.d.ts +1 -1
  349. package/dist/tanstack/checkbox.d.ts +1 -1
  350. package/dist/tanstack/checkbox.js +1 -1
  351. package/dist/tanstack/date-picker.d.ts +1 -1
  352. package/dist/tanstack/date-picker.js +1 -1
  353. package/dist/tanstack/date-range-picker.d.ts +1 -1
  354. package/dist/tanstack/date-range-picker.js +1 -1
  355. package/dist/tanstack/date-time-picker.d.ts +1 -1
  356. package/dist/tanstack/date-time-picker.js +1 -1
  357. package/dist/tanstack/file-input.d.ts +1 -1
  358. package/dist/tanstack/file-input.js +1 -1
  359. package/dist/tanstack/file-upload.d.ts +2 -2
  360. package/dist/tanstack/file-upload.js +1 -1
  361. package/dist/tanstack/form.d.ts +1 -1
  362. package/dist/tanstack/form.js +1 -1
  363. package/dist/tanstack/input.d.ts +1 -1
  364. package/dist/tanstack/inputs.d.ts +3 -3
  365. package/dist/tanstack/inputs.js +1 -1
  366. package/dist/tanstack/number-field.d.ts +1 -1
  367. package/dist/tanstack/number-range-input.d.ts +1 -1
  368. package/dist/tanstack/number-range-input.js +1 -1
  369. package/dist/tanstack/password-input.d.ts +1 -1
  370. package/dist/tanstack/query-select.d.ts +1 -1
  371. package/dist/tanstack/radio-group.d.ts +1 -1
  372. package/dist/tanstack/radio-group.js +1 -1
  373. package/dist/tanstack/rich-text-editor.d.ts +1 -1
  374. package/dist/tanstack/rich-text-editor.js +1 -1
  375. package/dist/tanstack/select.d.ts +1 -1
  376. package/dist/tanstack/select.js +1 -1
  377. package/dist/tanstack/slider.d.ts +1 -1
  378. package/dist/tanstack/slider.js +1 -1
  379. package/dist/tanstack/switch.d.ts +1 -1
  380. package/dist/tanstack/switch.js +1 -1
  381. package/dist/tanstack/table.d.ts +1 -1
  382. package/dist/tanstack/table.js +2 -1
  383. package/dist/tanstack/text-area.d.ts +1 -1
  384. package/dist/tanstack/text-area.js +1 -1
  385. package/dist/tanstack/time-picker.d.ts +1 -1
  386. package/dist/tanstack/time-picker.js +1 -1
  387. package/dist/tanstack/toggle-group.d.ts +2 -2
  388. package/dist/tanstack/toggle-group.js +1 -1
  389. package/dist/tanstack.d.ts +71 -70
  390. package/dist/tanstack.js +66 -53
  391. package/dist/{text-area-I5MNcGp_.d.ts → text-area-DhSVRB6X.d.ts} +1 -1
  392. package/dist/theme-model-DtYPxNvH.js +406 -0
  393. package/dist/theme-model-T1zIdBg8.d.ts +12 -0
  394. package/dist/{time-picker-DdhW8GmD.d.ts → time-picker-DhnDKh97.d.ts} +1 -1
  395. package/dist/{toast.cva-LU7TGprV.d.ts → toast.cva-By5lvAfr.d.ts} +10 -9
  396. package/dist/toast.cva-C_L_RffH.js +163 -0
  397. package/dist/{toast.runtime-QMYrNvoQ.js → toast.runtime-cxex9e4E.js} +2 -1
  398. package/dist/{toggle-group-CPkKHm1t.d.ts → toggle-group-C1nMDOwz.d.ts} +1 -1
  399. package/dist/toggleGroup.cva-MbpaEBg1.js +35 -0
  400. package/dist/{toggleGroup.types-DD6uRI5G.d.ts → toggleGroup.types-Bp43zbSQ.d.ts} +2 -1
  401. package/dist/tooltip.cva-BIzlOXHH.js +48 -0
  402. package/dist/{tooltipWrapper.cva-CUu8pI-a.js → tooltipWrapper.cva-BBQ4ic3D.js} +1 -1
  403. package/dist/typography.cva-D1JOEYl-.d.ts +36 -0
  404. package/dist/typography.cva-iD15k56p.js +51 -0
  405. package/dist/{uiConfig.context-RFvaQYzD.js → uiConfig.context-BS3r_kTS.js} +12 -21
  406. package/dist/{uiConfig.context-CIoMqe1_.d.ts → uiConfig.context-BqKWd_MO.d.ts} +11 -12
  407. package/dist/{uiOverrides.context-Bfm2n-n8.js → uiOverrides.context-BTCH9y5a.js} +2 -2
  408. package/dist/{uiOverrides.context-C3xb4Ttq.d.ts → uiOverrides.context-DEp139He.d.ts} +11 -44
  409. package/dist/underline-66hmELxa.js +81 -0
  410. package/dist/upload-CXU83BJ4.js +30 -0
  411. package/dist/{useBreakpoint-3kpqzjoC.js → useBreakpoint-DQoMN-BG.js} +1 -1
  412. package/dist/{useFieldAccessibility-BTs_WC_5.js → useFieldAccessibility-B-bjtrNw.js} +18 -12
  413. package/dist/{useFormAutosave-BRlM0nmq.js → useFormAutosave-pmh35PXp.js} +2 -2
  414. package/dist/{useStaticInputHandoff-_stbpoX4.js → useStaticInputHandoff-B7DEm75m.js} +18 -16
  415. package/dist/useTableColumnConfig-6zn3zKl3.js +892 -0
  416. package/dist/{useTableNav-Tu8UZxHA.d.ts → useTableNav-Ckj5PBRk.d.ts} +9 -8
  417. package/dist/{useToast-NBGlVeFP.d.ts → useToast-yreVCUer.d.ts} +1 -1
  418. package/package.json +54 -6
  419. package/rulesync.jsonc +11 -0
  420. package/scripts/generate-rules.mjs +34 -0
  421. package/src/configurator/README.md +77 -0
  422. package/dist/Button-CcZBqoQp.js +0 -761
  423. package/dist/FormFieldHeaderTooltip-h6e5hq9V.js +0 -45
  424. package/dist/Link-C5YsZ4pr.js +0 -42
  425. package/dist/PillButton-CihEPQye.d.ts +0 -15
  426. package/dist/Tag-CgPeLVXM.d.ts +0 -44
  427. package/dist/Tag-DNuHvt6J.js +0 -148
  428. package/dist/components/pill-button.d.ts +0 -2
  429. package/dist/input.cva-KYGD4Bdz.js +0 -324
  430. package/dist/pillButton.cva-6tjADUQ6.js +0 -265
  431. package/dist/pillButton.cva-BVsxGnqF.d.ts +0 -36
  432. package/dist/popover.cva-CXha_UMQ.js +0 -5
  433. package/dist/switch.cva-BIioyegR.d.ts +0 -15
  434. package/dist/typography.cva-BI0FyIqm.js +0 -129
  435. package/dist/typography.cva-YaO6JLqU.d.ts +0 -51
  436. package/dist/useTableColumnConfig-CiAr7Dbi.js +0 -1627
@@ -0,0 +1,62 @@
1
+ import { n as AppCanvasPage, r as AppCanvasFrameBridge, t as APP_CANVAS_PATH } from "../AppCanvasPage-BEER5hHp.js";
2
+ import { c } from "react/compiler-runtime";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { createRoute, notFound, useRouter, useRouterState } from "@tanstack/react-router";
5
+ //#region src/app-canvas/tanstack.tsx
6
+ /** Use with createFileRoute('/_canvas') for file-based TanStack Router apps. */
7
+ function appCanvasRouteOptions({ enabled, canvas }) {
8
+ return {
9
+ beforeLoad: () => {
10
+ if (!(typeof enabled === "function" ? enabled() : enabled)) throw notFound();
11
+ },
12
+ component: function CanvasRoutePage() {
13
+ return /* @__PURE__ */ jsx(AppCanvasPage, {
14
+ ...canvas,
15
+ router: useRouter()
16
+ });
17
+ }
18
+ };
19
+ }
20
+ /** Add this child to the existing root route before creating a code-based router. */
21
+ function createAppCanvasRoute({ getParentRoute, ...options }) {
22
+ return createRoute({
23
+ getParentRoute,
24
+ path: APP_CANVAS_PATH,
25
+ ...appCanvasRouteOptions(options)
26
+ });
27
+ }
28
+ /** Mount once under the existing router and UIConfigurationProvider, beside Outlet. */
29
+ function AppCanvasBridge() {
30
+ const $ = c(3);
31
+ let t0;
32
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
33
+ t0 = { select: _temp };
34
+ $[0] = t0;
35
+ } else t0 = $[0];
36
+ const href = useRouterState(t0);
37
+ let t1;
38
+ if ($[1] !== href) {
39
+ t1 = /* @__PURE__ */ jsx(AppCanvasFrameBridge, { href });
40
+ $[1] = href;
41
+ $[2] = t1;
42
+ } else t1 = $[2];
43
+ return t1;
44
+ }
45
+ /** Hide existing configurator launchers on the canvas page; its editor is already included. */
46
+ function _temp(state) {
47
+ return state.location.href;
48
+ }
49
+ function useIsAppCanvasPage() {
50
+ const $ = c(1);
51
+ let t0;
52
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
53
+ t0 = { select: _temp2 };
54
+ $[0] = t0;
55
+ } else t0 = $[0];
56
+ return useRouterState(t0);
57
+ }
58
+ function _temp2(state) {
59
+ return state.location.pathname.replace(/\/$/, "") === APP_CANVAS_PATH;
60
+ }
61
+ //#endregion
62
+ export { APP_CANVAS_PATH, AppCanvasBridge, AppCanvasPage, appCanvasRouteOptions, createAppCanvasRoute, useIsAppCanvasPage };
@@ -0,0 +1,12 @@
1
+ import { a as AppCanvasProps, c as CanvasPage, d as CanvasRouter, f as discoverCanvasPages, i as AppCanvas, l as CanvasPosition, n as AppCanvasPage, o as CanvasBreakpoint, p as layoutCanvasPages, r as AppCanvasPageProps, s as defaultCanvasBreakpoints, t as APP_CANVAS_PATH, u as CanvasRouteExample } from "../AppCanvasPage-BIFYeEeS.js";
2
+ import "../configuration.context-DP4p1cIe.js";
3
+ //#region src/app-canvas/AppCanvasFrameBridge.d.ts
4
+ /** Mount once inside the application's existing UIConfigurationProvider. No separate app copy or theme fork. */
5
+ declare function AppCanvasFrameBridge({ href }: {
6
+ href?: string;
7
+ }): null;
8
+ //#endregion
9
+ //#region src/app-canvas/protocol.d.ts
10
+ declare const isAppCanvasFrame: () => boolean;
11
+ //#endregion
12
+ export { APP_CANVAS_PATH, AppCanvas, AppCanvasFrameBridge, AppCanvasPage, type AppCanvasPageProps, type AppCanvasProps, type CanvasBreakpoint, type CanvasPage, type CanvasPosition, type CanvasRouteExample, type CanvasRouter, defaultCanvasBreakpoints, discoverCanvasPages, isAppCanvasFrame, layoutCanvasPages };
@@ -0,0 +1,2 @@
1
+ import { a as defaultCanvasBreakpoints, c as layoutCanvasPages, i as AppCanvas, n as AppCanvasPage, o as isAppCanvasFrame, r as AppCanvasFrameBridge, s as discoverCanvasPages, t as APP_CANVAS_PATH } from "../AppCanvasPage-BEER5hHp.js";
2
+ export { APP_CANVAS_PATH, AppCanvas, AppCanvasFrameBridge, AppCanvasPage, defaultCanvasBreakpoints, discoverCanvasPages, isAppCanvasFrame, layoutCanvasPages };
@@ -1,2 +1,2 @@
1
- import { t as Confirmation } from "../confirmation.context-fKfUTsLF.js";
1
+ import { t as Confirmation } from "../confirmation.context-BOeEVczb.js";
2
2
  export { Confirmation };
@@ -1,3 +1,3 @@
1
- import { n as LinkNavigationProps } from "../Link-DS9-0Ijl.js";
2
- import { t as LinkContext } from "../link.context-C5ZgwVM5.js";
1
+ import { n as LinkNavigationProps } from "../Link-Ow9H7kNv.js";
2
+ import { t as LinkContext } from "../link.context-D5qyz9Rf.js";
3
3
  export { LinkContext, type LinkNavigationProps };
@@ -1,3 +1,3 @@
1
- import { a as DateRangeResolvedValue, i as DateRangeRelativeOption } from "../DateRangePicker-D1kjkFfS.js";
2
- import { t as UIConfig } from "../uiConfig.context-CIoMqe1_.js";
1
+ import { t as UIConfig } from "../uiConfig.context-BqKWd_MO.js";
2
+ import { a as DateRangeResolvedValue, i as DateRangeRelativeOption } from "../DateRangePicker-Dfptit_Z.js";
3
3
  export { type DateRangeRelativeOption, type DateRangeResolvedValue, UIConfig };
@@ -1,2 +1,2 @@
1
- import { t as UIConfig } from "../uiConfig.context-RFvaQYzD.js";
1
+ import { t as UIConfig } from "../uiConfig.context-BS3r_kTS.js";
2
2
  export { UIConfig };
@@ -0,0 +1,2 @@
1
+ import { a as parseThemeCss, i as exportCss, n as ThemeEdits, r as Tokens } from "../theme-model-T1zIdBg8.js";
2
+ export { type ThemeEdits, type Tokens, exportCss, parseThemeCss };
@@ -0,0 +1,2 @@
1
+ import { _ as parseThemeCss, i as exportCss } from "../theme-model-DtYPxNvH.js";
2
+ export { exportCss, parseThemeCss };
@@ -0,0 +1,10 @@
1
+ import { Plugin } from "vite";
2
+ //#region src/configurator/vite.d.ts
3
+ interface UIConfiguratorPluginOptions {
4
+ /** CSS file relative to this app's Vite root. Must exist inside that root. */
5
+ themeFile?: string;
6
+ }
7
+ /** Adds the configurator's Save theme action to this app's development server. */
8
+ declare function uiConfigurator(options?: UIConfiguratorPluginOptions): Plugin;
9
+ //#endregion
10
+ export { type UIConfiguratorPluginOptions, uiConfigurator };
@@ -0,0 +1,174 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { readFile, realpath, writeFile } from "node:fs/promises";
3
+ import { isAbsolute, relative, resolve, sep } from "node:path";
4
+ //#region src/configurator/theme-model.ts
5
+ const declarations = (source) => Object.fromEntries([...source.matchAll(/(--[\w-]+)\s*:\s*([^;]+);/g)].map(([, name, value]) => [name, value.trim()]));
6
+ const selectorDeclarations = (source, selector) => Object.assign({}, ...[...source.matchAll(selector)].map((match) => declarations(match[1])));
7
+ const parseThemeCss = (themeSource) => ({
8
+ light: selectorDeclarations(themeSource, /:root\s*\{([^}]+)\}/g),
9
+ dark: selectorDeclarations(themeSource, /\.dark\s*\{([^}]+)\}/g),
10
+ theme: declarations([...themeSource.matchAll(/@theme(?:\s+static)?\s*\{([^}]+)\}/g)].map((match) => match[1]).join("\n"))
11
+ });
12
+ const emptyTheme = () => ({
13
+ light: {},
14
+ dark: {},
15
+ theme: {}
16
+ });
17
+ //#endregion
18
+ //#region src/configurator/theme-source.ts
19
+ const maskComments = (css) => css.replace(/\/\*[\s\S]*?\*\//g, (comment) => " ".repeat(comment.length));
20
+ const blocks = () => /(:root|\.dark|@theme(?:\s+static)?)\s*\{([^{}]*)\}/g;
21
+ const bucketFor = (selector) => selector === ":root" ? "light" : selector === ".dark" ? "dark" : "theme";
22
+ /** Accept only the flat token blocks produced by the configurator's CSS export. */
23
+ function readExport(css) {
24
+ const clean = maskComments(css);
25
+ const edits = emptyTheme();
26
+ let end = 0;
27
+ for (const match of clean.matchAll(blocks())) {
28
+ if (clean.slice(end, match.index).trim()) throw new Error("Expected a configurator CSS export.");
29
+ const tokens = edits[bucketFor(match[1])];
30
+ let declarationEnd = 0;
31
+ for (const declaration of match[2].matchAll(/(--[\w-]+)\s*:\s*([^;{}]+);/g)) {
32
+ if (match[2].slice(declarationEnd, declaration.index).trim()) throw new Error("Invalid theme declaration.");
33
+ const value = declaration[2].trim();
34
+ if (!value || /[<>]/.test(value)) throw new Error("Invalid theme value.");
35
+ tokens[declaration[1]] = value;
36
+ declarationEnd = declaration.index + declaration[0].length;
37
+ }
38
+ if (match[2].slice(declarationEnd).trim()) throw new Error("Invalid theme declaration.");
39
+ end = match.index + match[0].length;
40
+ }
41
+ if (clean.slice(end).trim()) throw new Error("Expected a configurator CSS export.");
42
+ return edits;
43
+ }
44
+ /** Update declarations without replacing imports, layers, selectors, or inline theme blocks. */
45
+ function updateThemeSource(source, exportedCss) {
46
+ const edits = readExport(exportedCss);
47
+ const masked = maskComments(source);
48
+ const defaults = parseThemeCss(masked);
49
+ for (const bucket of [
50
+ "light",
51
+ "dark",
52
+ "theme"
53
+ ]) for (const name of Object.keys(edits[bucket])) if (!Object.hasOwn(defaults[bucket], name)) throw new Error(`Unknown ${bucket} theme token: ${name}`);
54
+ const replacements = [];
55
+ for (const match of masked.matchAll(blocks())) {
56
+ const editsForBlock = edits[bucketFor(match[1])];
57
+ const bodyStart = match.index + match[0].indexOf("{") + 1;
58
+ for (const declaration of match[2].matchAll(/(--[\w-]+\s*:\s*)([^;]+);/g)) {
59
+ const name = declaration[1].split(":")[0].trim();
60
+ if (!Object.hasOwn(editsForBlock, name)) continue;
61
+ const start = bodyStart + declaration.index + declaration[1].length;
62
+ replacements.push({
63
+ start,
64
+ end: start + declaration[2].trimEnd().length,
65
+ value: editsForBlock[name]
66
+ });
67
+ }
68
+ }
69
+ for (const { start, end, value } of replacements.reverse()) source = source.slice(0, start) + value + source.slice(end);
70
+ return source;
71
+ }
72
+ //#endregion
73
+ //#region src/configurator/theme-writer-protocol.ts
74
+ /** Shared by the browser configurator and the isolated Node Vite entry. */
75
+ const themeWriterMetaName = "povio-ui-theme-writer";
76
+ //#endregion
77
+ //#region src/configurator/vite.ts
78
+ var ThemeWriteError = class extends Error {
79
+ constructor(message, status) {
80
+ super(message);
81
+ this.status = status;
82
+ }
83
+ };
84
+ const respond = (response, status, result) => {
85
+ response.writeHead(status, {
86
+ "Content-Type": "application/json",
87
+ "Cache-Control": "no-store"
88
+ });
89
+ response.end(JSON.stringify(result));
90
+ };
91
+ async function readCss(request) {
92
+ const chunks = [];
93
+ let size = 0;
94
+ for await (const chunk of request) {
95
+ size += Buffer.byteLength(chunk);
96
+ if (size > 262144) throw new ThemeWriteError("Theme export is too large.", 413);
97
+ chunks.push(Buffer.from(chunk));
98
+ }
99
+ try {
100
+ const body = JSON.parse(Buffer.concat(chunks).toString("utf8"));
101
+ if (typeof body?.css === "string") return body.css;
102
+ } catch {}
103
+ throw new ThemeWriteError("Expected JSON containing a CSS export.", 400);
104
+ }
105
+ /** Adds the configurator's Save theme action to this app's development server. */
106
+ function uiConfigurator(options = {}) {
107
+ let connection;
108
+ let pendingWrite = Promise.resolve();
109
+ return {
110
+ name: "vite-plugin-povio-ui-configurator",
111
+ apply: (_config, environment) => environment.command === "serve" && !environment.isPreview,
112
+ async configureServer(server) {
113
+ const root = await realpath(server.config.root);
114
+ const configuredFile = resolve(server.config.root, options.themeFile ?? "src/styles/theme.css");
115
+ const themeFile = await realpath(configuredFile);
116
+ const file = relative(root, themeFile);
117
+ if (!file || isAbsolute(file) || file === ".." || file.startsWith(`..${sep}`)) throw new Error("Povio UI themeFile must be inside this app's Vite root.");
118
+ if (!themeFile.endsWith(".css")) throw new Error("Povio UI themeFile must be a CSS file.");
119
+ const endpoint = `${new URL(server.config.base, "http://localhost").pathname.replace(/\/?$/, "/")}__povio_ui/theme`;
120
+ connection = {
121
+ endpoint,
122
+ token: randomUUID(),
123
+ file: file.split(sep).join("/")
124
+ };
125
+ const token = connection.token;
126
+ const save = async (request, response) => {
127
+ if (request.method !== "POST") {
128
+ response.setHeader("Allow", "POST");
129
+ throw new ThemeWriteError("Use POST to save a theme.", 405);
130
+ }
131
+ if (request.headers["x-povio-ui-theme-token"] !== token) throw new ThemeWriteError("Invalid theme token.", 403);
132
+ const origin = request.headers.origin;
133
+ if (origin && new URL(origin).host !== request.headers.host) throw new ThemeWriteError("Theme saves must come from this app's origin.", 403);
134
+ if (!request.headers["content-type"]?.startsWith("application/json")) throw new ThemeWriteError("Expected application/json.", 415);
135
+ const css = await readCss(request);
136
+ const write = pendingWrite.then(async () => {
137
+ if (await realpath(configuredFile) !== themeFile) throw new ThemeWriteError("The theme file moved. Restart the dev server before saving.", 409);
138
+ const source = await readFile(themeFile, "utf8");
139
+ let updated;
140
+ try {
141
+ updated = updateThemeSource(source, css);
142
+ } catch (error) {
143
+ throw new ThemeWriteError(error instanceof Error ? error.message : "Invalid theme export.", 400);
144
+ }
145
+ if (updated !== source) await writeFile(themeFile, updated, "utf8");
146
+ });
147
+ pendingWrite = write.catch(() => {});
148
+ await write;
149
+ respond(response, 200, { file: connection.file });
150
+ };
151
+ server.middlewares.use((request, response, next) => {
152
+ if (request.url?.split("?")[0] !== endpoint) return next();
153
+ save(request, response).catch((error) => {
154
+ const status = error instanceof ThemeWriteError ? error.status : 500;
155
+ const message = error instanceof Error ? error.message : "Could not save theme.";
156
+ respond(response, status, { error: message });
157
+ });
158
+ });
159
+ },
160
+ transformIndexHtml() {
161
+ if (!connection) return;
162
+ return [{
163
+ tag: "meta",
164
+ attrs: {
165
+ name: themeWriterMetaName,
166
+ content: JSON.stringify(connection)
167
+ },
168
+ injectTo: "head"
169
+ }];
170
+ }
171
+ };
172
+ }
173
+ //#endregion
174
+ export { uiConfigurator };
@@ -0,0 +1,15 @@
1
+ import { a as CvaDefinition, i as useUIConfiguration, n as UIConfigurationProvider, o as CvaEdits, r as UIConfigurationProviderProps, t as UIConfiguration } from "../configuration.context-DP4p1cIe.js";
2
+ import { a as parseThemeCss, i as exportCss, n as ThemeEdits, r as Tokens, t as Mode } from "../theme-model-T1zIdBg8.js";
3
+ //#region src/configurator/UIConfigurator.d.ts
4
+ declare function UIConfigurationModal(): import("react").JSX.Element | null;
5
+ //#endregion
6
+ //#region src/configurator/ColorModeSwitch.d.ts
7
+ interface ColorModeSwitchProps {
8
+ value: Mode;
9
+ onChange: (mode: Mode) => void;
10
+ label?: string;
11
+ }
12
+ /** Controlled color-mode switch, shared by configurators and application settings. */
13
+ declare function ColorModeSwitch({ value, onChange, label }: ColorModeSwitchProps): import("react").JSX.Element;
14
+ //#endregion
15
+ export { ColorModeSwitch, type ColorModeSwitchProps, type CvaDefinition, type CvaEdits, type ThemeEdits, type Tokens, type UIConfiguration, UIConfigurationModal, UIConfigurationProvider, type UIConfigurationProviderProps, exportCss, parseThemeCss, useUIConfiguration };
@@ -0,0 +1,3 @@
1
+ import { c as UIConfigurationProvider, l as useUIConfiguration, n as ColorModeSwitch, t as UIConfigurationModal } from "../UIConfigurator-CTlq-hrG.js";
2
+ import { _ as parseThemeCss, i as exportCss } from "../theme-model-DtYPxNvH.js";
3
+ export { ColorModeSwitch, UIConfigurationModal, UIConfigurationProvider, exportCss, parseThemeCss, useUIConfiguration };
@@ -1,2 +1,2 @@
1
- import { t as UIOverrides } from "../uiOverrides.context-C3xb4Ttq.js";
1
+ import { t as UIOverrides } from "../uiOverrides.context-DEp139He.js";
2
2
  export { UIOverrides };
@@ -1,2 +1,2 @@
1
- import { t as UIOverrides } from "../uiOverrides.context-Bfm2n-n8.js";
1
+ import { t as UIOverrides } from "../uiOverrides.context-BTCH9y5a.js";
2
2
  export { UIOverrides };