@px-ui/ui 1.0.10 → 1.1.0

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 (286) hide show
  1. package/dist/{avatar-CbuG-kqF.d.ts → avatar-DTxH_yTY.d.ts} +6 -6
  2. package/dist/{avatar-CbuG-kqF.d.ts.map → avatar-DTxH_yTY.d.ts.map} +1 -1
  3. package/dist/{avatar-Bb0tx0Hn.js → avatar-DnDnGmSj.js} +3 -3
  4. package/dist/{avatar-Bb0tx0Hn.js.map → avatar-DnDnGmSj.js.map} +1 -1
  5. package/dist/{button-BkzvdmIX.d.ts → button-Cfd9X6pX.d.ts} +7 -7
  6. package/dist/{button-BkzvdmIX.d.ts.map → button-Cfd9X6pX.d.ts.map} +1 -1
  7. package/dist/{button-hBUFMmsZ.js → button-DnHwqwy0.js} +2 -2
  8. package/dist/{button-hBUFMmsZ.js.map → button-DnHwqwy0.js.map} +1 -1
  9. package/dist/checkbox-CwkX29tL.js +22 -0
  10. package/dist/checkbox-CwkX29tL.js.map +1 -0
  11. package/dist/collapsible-DsrYXIW5.js +28 -0
  12. package/dist/collapsible-DsrYXIW5.js.map +1 -0
  13. package/dist/{combobox-CHkmVNZ2.js → combobox-5IAivvXw.js} +8 -8
  14. package/dist/{combobox-CHkmVNZ2.js.map → combobox-5IAivvXw.js.map} +1 -1
  15. package/dist/{combobox-C5txQ2La.d.ts → combobox-BBMYGrI2.d.ts} +19 -19
  16. package/dist/{combobox-C5txQ2La.d.ts.map → combobox-BBMYGrI2.d.ts.map} +1 -1
  17. package/dist/components/accordion.d.ts +5 -5
  18. package/dist/components/accordion.d.ts.map +1 -1
  19. package/dist/components/accordion.js +1 -1
  20. package/dist/components/alert-dialog.d.ts +14 -14
  21. package/dist/components/alert-dialog.js +2 -2
  22. package/dist/components/alert.d.ts +7 -7
  23. package/dist/components/alert.js +1 -1
  24. package/dist/components/aspect-ratio.d.ts +2 -2
  25. package/dist/components/aspect-ratio.d.ts.map +1 -1
  26. package/dist/components/aspect-ratio.js +1 -1
  27. package/dist/components/attachment.d.ts +64 -0
  28. package/dist/components/attachment.d.ts.map +1 -0
  29. package/dist/components/attachment.js +107 -0
  30. package/dist/components/attachment.js.map +1 -0
  31. package/dist/components/avatar-group.d.ts +4 -4
  32. package/dist/components/avatar-group.d.ts.map +1 -1
  33. package/dist/components/avatar-group.js +4 -4
  34. package/dist/components/avatar.d.ts +1 -1
  35. package/dist/components/avatar.js +3 -3
  36. package/dist/components/badge.d.ts +1 -1
  37. package/dist/components/badge.js +1 -1
  38. package/dist/components/breadcrumb.d.ts +7 -7
  39. package/dist/components/breadcrumb.js +1 -1
  40. package/dist/components/bubble.d.ts +39 -0
  41. package/dist/components/bubble.d.ts.map +1 -0
  42. package/dist/components/bubble.js +76 -0
  43. package/dist/components/bubble.js.map +1 -0
  44. package/dist/components/button-group.d.ts +6 -6
  45. package/dist/components/button-group.js +2 -2
  46. package/dist/components/button.d.ts +1 -1
  47. package/dist/components/button.js +2 -2
  48. package/dist/components/calendar.d.ts +4 -4
  49. package/dist/components/calendar.js +2 -2
  50. package/dist/components/card.d.ts +8 -8
  51. package/dist/components/card.js +1 -1
  52. package/dist/components/carousel.d.ts +7 -7
  53. package/dist/components/carousel.js +2 -2
  54. package/dist/components/chart.d.ts +5 -5
  55. package/dist/components/chart.js +1 -1
  56. package/dist/components/checkbox.d.ts +2 -2
  57. package/dist/components/checkbox.d.ts.map +1 -1
  58. package/dist/components/checkbox.js +3 -21
  59. package/dist/components/collapsible.d.ts +4 -4
  60. package/dist/components/collapsible.js +3 -27
  61. package/dist/components/combobox.d.ts +2 -2
  62. package/dist/components/combobox.js +11 -11
  63. package/dist/components/command.d.ts +11 -11
  64. package/dist/components/command.js +6 -6
  65. package/dist/components/context-menu.d.ts +16 -16
  66. package/dist/components/context-menu.d.ts.map +1 -1
  67. package/dist/components/context-menu.js +1 -1
  68. package/dist/components/currency-select-field.d.ts +4 -4
  69. package/dist/components/currency-select-field.js +11 -11
  70. package/dist/components/dialog.d.ts +11 -11
  71. package/dist/components/dialog.js +3 -3
  72. package/dist/components/direction.js +1 -1
  73. package/dist/components/drawer.d.ts +11 -11
  74. package/dist/components/drawer.js +1 -1
  75. package/dist/components/dropdown-menu.d.ts +1 -1
  76. package/dist/components/dropdown-menu.js +2 -2
  77. package/dist/components/editor-output.d.ts +87 -0
  78. package/dist/components/editor-output.d.ts.map +1 -0
  79. package/dist/components/editor-output.js +158 -0
  80. package/dist/components/editor-output.js.map +1 -0
  81. package/dist/components/empty.d.ts +9 -9
  82. package/dist/components/empty.js +3 -61
  83. package/dist/components/field.d.ts +15 -15
  84. package/dist/components/field.js +3 -3
  85. package/dist/components/file-upload-field.d.ts +3 -3
  86. package/dist/components/file-upload-field.js +5 -5
  87. package/dist/components/file-upload.d.ts +3 -3
  88. package/dist/components/file-upload.js +4 -4
  89. package/dist/components/hover-card.d.ts +4 -4
  90. package/dist/components/hover-card.js +1 -1
  91. package/dist/components/icon.d.ts +83 -0
  92. package/dist/components/icon.d.ts.map +1 -0
  93. package/dist/components/icon.js +188 -0
  94. package/dist/components/icon.js.map +1 -0
  95. package/dist/components/input-group.d.ts +9 -9
  96. package/dist/components/input-group.js +5 -5
  97. package/dist/components/input-otp.d.ts +5 -5
  98. package/dist/components/input-otp.js +1 -1
  99. package/dist/components/input.d.ts +1 -1
  100. package/dist/components/input.js +2 -2
  101. package/dist/components/item.d.ts +14 -14
  102. package/dist/components/item.d.ts.map +1 -1
  103. package/dist/components/item.js +2 -2
  104. package/dist/components/kbd.d.ts +3 -3
  105. package/dist/components/kbd.js +1 -1
  106. package/dist/components/label.d.ts +1 -1
  107. package/dist/components/label.js +2 -2
  108. package/dist/components/marker.d.ts +27 -0
  109. package/dist/components/marker.d.ts.map +1 -0
  110. package/dist/components/marker.js +46 -0
  111. package/dist/components/marker.js.map +1 -0
  112. package/dist/components/menubar.d.ts +18 -18
  113. package/dist/components/menubar.d.ts.map +1 -1
  114. package/dist/components/menubar.js +7 -7
  115. package/dist/components/menubar.js.map +1 -1
  116. package/dist/components/message-scroller.d.ts +36 -0
  117. package/dist/components/message-scroller.d.ts.map +1 -0
  118. package/dist/components/message-scroller.js +63 -0
  119. package/dist/components/message-scroller.js.map +1 -0
  120. package/dist/components/message.d.ts +34 -0
  121. package/dist/components/message.d.ts.map +1 -0
  122. package/dist/components/message.js +52 -0
  123. package/dist/components/message.js.map +1 -0
  124. package/dist/components/native-select.d.ts +4 -4
  125. package/dist/components/native-select.js +1 -1
  126. package/dist/components/navigation-menu.d.ts +11 -11
  127. package/dist/components/navigation-menu.js +1 -1
  128. package/dist/components/pagination.d.ts +9 -9
  129. package/dist/components/pagination.d.ts.map +1 -1
  130. package/dist/components/pagination.js +2 -2
  131. package/dist/components/phone-input.d.ts +2 -2
  132. package/dist/components/phone-input.js +1 -1
  133. package/dist/components/popover.d.ts +7 -7
  134. package/dist/components/popover.d.ts.map +1 -1
  135. package/dist/components/popover.js +2 -2
  136. package/dist/components/progress.d.ts +6 -6
  137. package/dist/components/progress.js +1 -1
  138. package/dist/components/radio-group.d.ts +3 -3
  139. package/dist/components/radio-group.js +1 -1
  140. package/dist/components/resizable.d.ts +4 -4
  141. package/dist/components/resizable.js +1 -1
  142. package/dist/components/rich-text-editor.d.ts +204 -0
  143. package/dist/components/rich-text-editor.d.ts.map +1 -0
  144. package/dist/components/rich-text-editor.js +359 -0
  145. package/dist/components/rich-text-editor.js.map +1 -0
  146. package/dist/components/scroll-area.d.ts +13 -3
  147. package/dist/components/scroll-area.d.ts.map +1 -1
  148. package/dist/components/scroll-area.js +3 -38
  149. package/dist/components/select.d.ts +10 -10
  150. package/dist/components/select.js +1 -1
  151. package/dist/components/separator.d.ts +1 -1
  152. package/dist/components/separator.js +2 -2
  153. package/dist/components/sheet.d.ts +9 -9
  154. package/dist/components/sheet.js +3 -3
  155. package/dist/components/sidebar.d.ts +26 -26
  156. package/dist/components/sidebar.d.ts.map +1 -1
  157. package/dist/components/sidebar.js +8 -8
  158. package/dist/components/skeleton.d.ts +2 -2
  159. package/dist/components/skeleton.js +2 -2
  160. package/dist/components/slider.d.ts +2 -2
  161. package/dist/components/slider.js +1 -1
  162. package/dist/components/sortable-list.d.ts +153 -0
  163. package/dist/components/sortable-list.d.ts.map +1 -0
  164. package/dist/components/sortable-list.js +191 -0
  165. package/dist/components/sortable-list.js.map +1 -0
  166. package/dist/components/spinner.d.ts +2 -2
  167. package/dist/components/spinner.js +2 -2
  168. package/dist/components/stepper.d.ts +171 -0
  169. package/dist/components/stepper.d.ts.map +1 -0
  170. package/dist/components/stepper.js +281 -0
  171. package/dist/components/stepper.js.map +1 -0
  172. package/dist/components/switch.d.ts +2 -2
  173. package/dist/components/switch.js +1 -1
  174. package/dist/components/table.d.ts +9 -9
  175. package/dist/components/table.js +1 -1
  176. package/dist/components/tabs.d.ts +8 -8
  177. package/dist/components/tabs.d.ts.map +1 -1
  178. package/dist/components/tabs.js +1 -1
  179. package/dist/components/textarea.d.ts +2 -2
  180. package/dist/components/textarea.js +2 -2
  181. package/dist/components/toast.d.ts +1 -1
  182. package/dist/components/toast.js +2 -2
  183. package/dist/components/toggle-group.d.ts +4 -4
  184. package/dist/components/toggle-group.js +2 -2
  185. package/dist/components/toggle.d.ts +1 -1
  186. package/dist/components/toggle.js +2 -2
  187. package/dist/components/tooltip.d.ts +1 -1
  188. package/dist/components/tooltip.js +2 -2
  189. package/dist/components/tree-select.d.ts +192 -0
  190. package/dist/components/tree-select.d.ts.map +1 -0
  191. package/dist/components/tree-select.js +421 -0
  192. package/dist/components/tree-select.js.map +1 -0
  193. package/dist/{dialog-DrdXva1a.js → dialog-DuGJUPQl.js} +3 -3
  194. package/dist/{dialog-DrdXva1a.js.map → dialog-DuGJUPQl.js.map} +1 -1
  195. package/dist/{dropdown-menu-CcumvwhM.js → dropdown-menu-BWEfcvmP.js} +19 -19
  196. package/dist/{dropdown-menu-CcumvwhM.js.map → dropdown-menu-BWEfcvmP.js.map} +1 -1
  197. package/dist/{dropdown-menu-BC7zFA2L.d.ts → dropdown-menu-DGgfWYrK.d.ts} +17 -17
  198. package/dist/{dropdown-menu-BC7zFA2L.d.ts.map → dropdown-menu-DGgfWYrK.d.ts.map} +1 -1
  199. package/dist/empty-U4zrLmFU.js +62 -0
  200. package/dist/empty-U4zrLmFU.js.map +1 -0
  201. package/dist/{file-upload-DoGu67Bu.d.ts → file-upload-BvAtAxLc.d.ts} +10 -10
  202. package/dist/{file-upload-DoGu67Bu.d.ts.map → file-upload-BvAtAxLc.d.ts.map} +1 -1
  203. package/dist/{file-upload-DeCIv13t.js → file-upload-DU5FAkHm.js} +4 -4
  204. package/dist/{file-upload-DeCIv13t.js.map → file-upload-DU5FAkHm.js.map} +1 -1
  205. package/dist/hooks/use-async-options.d.ts +1 -1
  206. package/dist/hooks/use-async-options.js +1 -1
  207. package/dist/hooks/use-debounce.js +1 -1
  208. package/dist/hooks/use-file-upload.d.ts +1 -1
  209. package/dist/hooks/use-file-upload.js +1 -1
  210. package/dist/hooks/use-infinite-scroll.d.ts +1 -1
  211. package/dist/hooks/use-infinite-scroll.js +2 -2
  212. package/dist/hooks/use-intersection-observer.d.ts +1 -1
  213. package/dist/hooks/use-intersection-observer.js +1 -1
  214. package/dist/hooks/use-mobile.js +1 -1
  215. package/dist/{input-CoP6CeA5.d.ts → input-BExbcSu4.d.ts} +3 -3
  216. package/dist/input-BExbcSu4.d.ts.map +1 -0
  217. package/dist/{input-group-DqEkmpXW.js → input-group-B5PMRYld.js} +5 -5
  218. package/dist/{input-group-DqEkmpXW.js.map → input-group-B5PMRYld.js.map} +1 -1
  219. package/dist/{input-8jqdnUZl.js → input-jIoNIdLQ.js} +2 -2
  220. package/dist/{input-8jqdnUZl.js.map → input-jIoNIdLQ.js.map} +1 -1
  221. package/dist/label-BFg2hxuL.d.ts +11 -0
  222. package/dist/label-BFg2hxuL.d.ts.map +1 -0
  223. package/dist/{label-AaH9ZYCZ.js → label-DsRhOKY_.js} +2 -2
  224. package/dist/{label-AaH9ZYCZ.js.map → label-DsRhOKY_.js.map} +1 -1
  225. package/dist/lib/utils.js +1 -1
  226. package/dist/{popover-C9D43EuT.js → popover-BGkU46G7.js} +2 -2
  227. package/dist/{popover-C9D43EuT.js.map → popover-BGkU46G7.js.map} +1 -1
  228. package/dist/providers/px-ui-provider.d.ts +4 -4
  229. package/dist/providers/px-ui-provider.d.ts.map +1 -1
  230. package/dist/providers/px-ui-provider.js +4 -4
  231. package/dist/scroll-area-mNVMQ0Of.js +40 -0
  232. package/dist/scroll-area-mNVMQ0Of.js.map +1 -0
  233. package/dist/{separator-BS3ilczC.js → separator-D0bew2D_.js} +2 -2
  234. package/dist/{separator-BS3ilczC.js.map → separator-D0bew2D_.js.map} +1 -1
  235. package/dist/{separator-D0hWdzUT.d.ts → separator-Df76guaT.d.ts} +3 -3
  236. package/dist/{separator-D0hWdzUT.d.ts.map → separator-Df76guaT.d.ts.map} +1 -1
  237. package/dist/{sheet-CLjNDrfL.js → sheet-BB23q6wd.js} +3 -3
  238. package/dist/{sheet-CLjNDrfL.js.map → sheet-BB23q6wd.js.map} +1 -1
  239. package/dist/{skeleton-BcIxI5Wq.js → skeleton-knxLhbA5.js} +2 -2
  240. package/dist/{skeleton-BcIxI5Wq.js.map → skeleton-knxLhbA5.js.map} +1 -1
  241. package/dist/{spinner-Bo0sUZEg.js → spinner-9MdgLDTZ.js} +2 -2
  242. package/dist/{spinner-Bo0sUZEg.js.map → spinner-9MdgLDTZ.js.map} +1 -1
  243. package/dist/styles.css +665 -1
  244. package/dist/{textarea-Cq0o323P.js → textarea-hZg0gA8u.js} +2 -2
  245. package/dist/{textarea-Cq0o323P.js.map → textarea-hZg0gA8u.js.map} +1 -1
  246. package/dist/{toast-COWAQbIk.js → toast-BdxoP8vz.js} +2 -2
  247. package/dist/{toast-COWAQbIk.js.map → toast-BdxoP8vz.js.map} +1 -1
  248. package/dist/{toast-DkzzdXGU.d.ts → toast-C5FRpq1P.d.ts} +4 -4
  249. package/dist/{toast-DkzzdXGU.d.ts.map → toast-C5FRpq1P.d.ts.map} +1 -1
  250. package/dist/{toggle-lqIyJptS.js → toggle-BZXrLBLK.js} +2 -2
  251. package/dist/{toggle-lqIyJptS.js.map → toggle-BZXrLBLK.js.map} +1 -1
  252. package/dist/{toggle-Dq3ftPFj.d.ts → toggle-CyTngkhT.d.ts} +6 -6
  253. package/dist/{toggle-Dq3ftPFj.d.ts.map → toggle-CyTngkhT.d.ts.map} +1 -1
  254. package/dist/{tooltip-DBoqfN9z.d.ts → tooltip-CkX3CD71.d.ts} +6 -6
  255. package/dist/{tooltip-DBoqfN9z.d.ts.map → tooltip-CkX3CD71.d.ts.map} +1 -1
  256. package/dist/{tooltip-DkPxCJIL.js → tooltip-Dsfn_zZD.js} +2 -2
  257. package/dist/{tooltip-DkPxCJIL.js.map → tooltip-Dsfn_zZD.js.map} +1 -1
  258. package/dist/{use-async-options-Cu5T43vj.d.ts → use-async-options-DdyHJxHh.d.ts} +1 -1
  259. package/dist/{use-async-options-Cu5T43vj.d.ts.map → use-async-options-DdyHJxHh.d.ts.map} +1 -1
  260. package/dist/{use-async-options-CcsImGX4.js → use-async-options-tueAuVs_.js} +1 -1
  261. package/dist/{use-async-options-CcsImGX4.js.map → use-async-options-tueAuVs_.js.map} +1 -1
  262. package/dist/{use-debounce-_qaEZqtt.js → use-debounce-7gIeOwla.js} +1 -1
  263. package/dist/{use-debounce-_qaEZqtt.js.map → use-debounce-7gIeOwla.js.map} +1 -1
  264. package/dist/{use-file-upload-yy-xLBtn.d.ts → use-file-upload-Bc7CyQ7O.d.ts} +1 -1
  265. package/dist/{use-file-upload-yy-xLBtn.d.ts.map → use-file-upload-Bc7CyQ7O.d.ts.map} +1 -1
  266. package/dist/{use-file-upload-Dxrej28u.js → use-file-upload-DQD1vY_Z.js} +1 -1
  267. package/dist/{use-file-upload-Dxrej28u.js.map → use-file-upload-DQD1vY_Z.js.map} +1 -1
  268. package/dist/{use-infinite-scroll-CpbhGGT5.js → use-infinite-scroll-HpeMA2MK.js} +2 -2
  269. package/dist/{use-infinite-scroll-CpbhGGT5.js.map → use-infinite-scroll-HpeMA2MK.js.map} +1 -1
  270. package/dist/{use-intersection-observer-C2xDq2SW.d.ts → use-intersection-observer-DNPextJs.d.ts} +1 -1
  271. package/dist/{use-intersection-observer-C2xDq2SW.d.ts.map → use-intersection-observer-DNPextJs.d.ts.map} +1 -1
  272. package/dist/{use-intersection-observer-CZfnep4z.js → use-intersection-observer-rlKEjyL1.js} +1 -1
  273. package/dist/{use-intersection-observer-CZfnep4z.js.map → use-intersection-observer-rlKEjyL1.js.map} +1 -1
  274. package/dist/{use-mobile-l5ebOdQl.js → use-mobile-DUqQzj2D.js} +1 -1
  275. package/dist/{use-mobile-l5ebOdQl.js.map → use-mobile-DUqQzj2D.js.map} +1 -1
  276. package/dist/{utils-mWJR2N24.js → utils-DUlptRpf.js} +1 -1
  277. package/dist/{utils-mWJR2N24.js.map → utils-DUlptRpf.js.map} +1 -1
  278. package/package.json +81 -1
  279. package/dist/components/checkbox.js.map +0 -1
  280. package/dist/components/collapsible.js.map +0 -1
  281. package/dist/components/empty.js.map +0 -1
  282. package/dist/components/scroll-area.js.map +0 -1
  283. package/dist/input-CoP6CeA5.d.ts.map +0 -1
  284. package/dist/label-Dw4Hcz5k.d.ts +0 -11
  285. package/dist/label-Dw4Hcz5k.d.ts.map +0 -1
  286. /package/dist/{direction-BKSh6e6q.js → direction-DFPbwDSF.js} +0 -0
@@ -1,14 +1,14 @@
1
- import { t as cn } from "../utils-mWJR2N24.js";
2
- import "../button-hBUFMmsZ.js";
3
- import "../input-8jqdnUZl.js";
4
- import "../textarea-Cq0o323P.js";
5
- import { n as InputGroupAddon } from "../input-group-DqEkmpXW.js";
6
- import "../spinner-Bo0sUZEg.js";
7
- import "../use-async-options-CcsImGX4.js";
8
- import "../use-intersection-observer-CZfnep4z.js";
9
- import "../use-infinite-scroll-CpbhGGT5.js";
10
- import "../use-debounce-_qaEZqtt.js";
11
- import { f as ComboboxList, l as ComboboxInput, m as ComboboxStatus, s as ComboboxContent, t as Combobox, u as ComboboxItem } from "../combobox-CHkmVNZ2.js";
1
+ import { t as cn } from "../utils-DUlptRpf.js";
2
+ import "../button-DnHwqwy0.js";
3
+ import "../input-jIoNIdLQ.js";
4
+ import "../textarea-hZg0gA8u.js";
5
+ import { n as InputGroupAddon } from "../input-group-B5PMRYld.js";
6
+ import "../spinner-9MdgLDTZ.js";
7
+ import "../use-async-options-tueAuVs_.js";
8
+ import "../use-intersection-observer-rlKEjyL1.js";
9
+ import "../use-infinite-scroll-HpeMA2MK.js";
10
+ import "../use-debounce-7gIeOwla.js";
11
+ import { f as ComboboxList, l as ComboboxInput, m as ComboboxStatus, s as ComboboxContent, t as Combobox, u as ComboboxItem } from "../combobox-5IAivvXw.js";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  import "react";
14
14
  import ReactCountryFlag from "react-country-flag";
@@ -1,24 +1,24 @@
1
- import * as react_jsx_runtime109 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime137 from "react/jsx-runtime";
2
2
  import * as React$1 from "react";
3
3
  import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
4
4
 
5
5
  //#region src/components/dialog.d.ts
6
6
  declare function Dialog({
7
7
  ...props
8
- }: Dialog$1.Root.Props): react_jsx_runtime109.JSX.Element;
8
+ }: Dialog$1.Root.Props): react_jsx_runtime137.JSX.Element;
9
9
  declare function DialogTrigger({
10
10
  ...props
11
- }: Dialog$1.Trigger.Props): react_jsx_runtime109.JSX.Element;
11
+ }: Dialog$1.Trigger.Props): react_jsx_runtime137.JSX.Element;
12
12
  declare function DialogPortal({
13
13
  ...props
14
- }: Dialog$1.Portal.Props): react_jsx_runtime109.JSX.Element;
14
+ }: Dialog$1.Portal.Props): react_jsx_runtime137.JSX.Element;
15
15
  declare function DialogClose({
16
16
  ...props
17
- }: Dialog$1.Close.Props): react_jsx_runtime109.JSX.Element;
17
+ }: Dialog$1.Close.Props): react_jsx_runtime137.JSX.Element;
18
18
  declare function DialogOverlay({
19
19
  className,
20
20
  ...props
21
- }: Dialog$1.Backdrop.Props): react_jsx_runtime109.JSX.Element;
21
+ }: Dialog$1.Backdrop.Props): react_jsx_runtime137.JSX.Element;
22
22
  declare function DialogContent({
23
23
  className,
24
24
  children,
@@ -26,11 +26,11 @@ declare function DialogContent({
26
26
  ...props
27
27
  }: Dialog$1.Popup.Props & {
28
28
  showCloseButton?: boolean;
29
- }): react_jsx_runtime109.JSX.Element;
29
+ }): react_jsx_runtime137.JSX.Element;
30
30
  declare function DialogHeader({
31
31
  className,
32
32
  ...props
33
- }: React$1.ComponentProps<"div">): react_jsx_runtime109.JSX.Element;
33
+ }: React$1.ComponentProps<"div">): react_jsx_runtime137.JSX.Element;
34
34
  declare function DialogFooter({
35
35
  className,
36
36
  showCloseButton,
@@ -38,15 +38,15 @@ declare function DialogFooter({
38
38
  ...props
39
39
  }: React$1.ComponentProps<"div"> & {
40
40
  showCloseButton?: boolean;
41
- }): react_jsx_runtime109.JSX.Element;
41
+ }): react_jsx_runtime137.JSX.Element;
42
42
  declare function DialogTitle({
43
43
  className,
44
44
  ...props
45
- }: Dialog$1.Title.Props): react_jsx_runtime109.JSX.Element;
45
+ }: Dialog$1.Title.Props): react_jsx_runtime137.JSX.Element;
46
46
  declare function DialogDescription({
47
47
  className,
48
48
  ...props
49
- }: Dialog$1.Description.Props): react_jsx_runtime109.JSX.Element;
49
+ }: Dialog$1.Description.Props): react_jsx_runtime137.JSX.Element;
50
50
  /**
51
51
  * Creates a handle that links a `Dialog` to one or more `DialogTrigger`s via
52
52
  * their `handle` prop. Use it for detached triggers (a trigger rendered outside
@@ -1,5 +1,5 @@
1
- import "../utils-mWJR2N24.js";
2
- import "../button-hBUFMmsZ.js";
3
- import { a as DialogFooter, c as DialogPortal, d as createDialogHandle, i as DialogDescription, l as DialogTitle, n as DialogClose, o as DialogHeader, r as DialogContent, s as DialogOverlay, t as Dialog, u as DialogTrigger } from "../dialog-DrdXva1a.js";
1
+ import "../utils-DUlptRpf.js";
2
+ import "../button-DnHwqwy0.js";
3
+ import { a as DialogFooter, c as DialogPortal, d as createDialogHandle, i as DialogDescription, l as DialogTitle, n as DialogClose, o as DialogHeader, r as DialogContent, s as DialogOverlay, t as Dialog, u as DialogTrigger } from "../dialog-DuGJUPQl.js";
4
4
 
5
5
  export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, createDialogHandle };
@@ -1,3 +1,3 @@
1
- import { n as useDirection, t as DirectionProvider } from "../direction-BKSh6e6q.js";
1
+ import { n as useDirection, t as DirectionProvider } from "../direction-DFPbwDSF.js";
2
2
 
3
3
  export { DirectionProvider, useDirection };
@@ -1,45 +1,45 @@
1
- import * as react_jsx_runtime120 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime147 from "react/jsx-runtime";
2
2
  import * as React$1 from "react";
3
3
  import { Drawer as Drawer$1 } from "@base-ui/react/drawer";
4
4
 
5
5
  //#region src/components/drawer.d.ts
6
6
  declare function Drawer({
7
7
  ...props
8
- }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime120.JSX.Element;
8
+ }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime147.JSX.Element;
9
9
  declare function DrawerTrigger({
10
10
  ...props
11
- }: React$1.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime120.JSX.Element;
11
+ }: React$1.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime147.JSX.Element;
12
12
  declare function DrawerPortal({
13
13
  ...props
14
- }: React$1.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime120.JSX.Element;
14
+ }: React$1.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime147.JSX.Element;
15
15
  declare function DrawerClose({
16
16
  ...props
17
- }: React$1.ComponentProps<typeof Drawer$1.Close>): react_jsx_runtime120.JSX.Element;
17
+ }: React$1.ComponentProps<typeof Drawer$1.Close>): react_jsx_runtime147.JSX.Element;
18
18
  declare function DrawerOverlay({
19
19
  className,
20
20
  ...props
21
- }: React$1.ComponentProps<typeof Drawer$1.Backdrop>): react_jsx_runtime120.JSX.Element;
21
+ }: React$1.ComponentProps<typeof Drawer$1.Backdrop>): react_jsx_runtime147.JSX.Element;
22
22
  declare function DrawerContent({
23
23
  className,
24
24
  children,
25
25
  ...props
26
- }: React$1.ComponentProps<typeof Drawer$1.Popup>): react_jsx_runtime120.JSX.Element;
26
+ }: React$1.ComponentProps<typeof Drawer$1.Popup>): react_jsx_runtime147.JSX.Element;
27
27
  declare function DrawerHeader({
28
28
  className,
29
29
  ...props
30
- }: React$1.ComponentProps<"div">): react_jsx_runtime120.JSX.Element;
30
+ }: React$1.ComponentProps<"div">): react_jsx_runtime147.JSX.Element;
31
31
  declare function DrawerFooter({
32
32
  className,
33
33
  ...props
34
- }: React$1.ComponentProps<"div">): react_jsx_runtime120.JSX.Element;
34
+ }: React$1.ComponentProps<"div">): react_jsx_runtime147.JSX.Element;
35
35
  declare function DrawerTitle({
36
36
  className,
37
37
  ...props
38
- }: React$1.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime120.JSX.Element;
38
+ }: React$1.ComponentProps<typeof Drawer$1.Title>): react_jsx_runtime147.JSX.Element;
39
39
  declare function DrawerDescription({
40
40
  className,
41
41
  ...props
42
- }: React$1.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime120.JSX.Element;
42
+ }: React$1.ComponentProps<typeof Drawer$1.Description>): react_jsx_runtime147.JSX.Element;
43
43
  //#endregion
44
44
  export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
45
45
  //# sourceMappingURL=drawer.d.ts.map
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { t as cn } from "../utils-mWJR2N24.js";
3
+ import { t as cn } from "../utils-DUlptRpf.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import "react";
6
6
  import { Drawer as Drawer$1 } from "@base-ui/react/drawer";
@@ -1,2 +1,2 @@
1
- import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "../dropdown-menu-BC7zFA2L.js";
1
+ import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "../dropdown-menu-DGgfWYrK.js";
2
2
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -1,4 +1,4 @@
1
- import "../utils-mWJR2N24.js";
2
- import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "../dropdown-menu-CcumvwhM.js";
1
+ import "../utils-DUlptRpf.js";
2
+ import { a as DropdownMenuItem, c as DropdownMenuRadioGroup, d as DropdownMenuShortcut, f as DropdownMenuSub, h as DropdownMenuTrigger, i as DropdownMenuGroup, l as DropdownMenuRadioItem, m as DropdownMenuSubTrigger, n as DropdownMenuCheckboxItem, o as DropdownMenuLabel, p as DropdownMenuSubContent, r as DropdownMenuContent, s as DropdownMenuPortal, t as DropdownMenu, u as DropdownMenuSeparator } from "../dropdown-menu-BWEfcvmP.js";
3
3
 
4
4
  export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
@@ -0,0 +1,87 @@
1
+ import * as react_jsx_runtime172 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
+ import { Config } from "dompurify";
4
+
5
+ //#region src/components/editor-output.d.ts
6
+
7
+ /**
8
+ * Default DOMPurify allow-list used by {@link EditorOutput}.
9
+ *
10
+ * Covers the formatting that the paired `RichTextEditor` can produce —
11
+ * headings, emphasis, lists, links, blockquotes, code, tables, and images —
12
+ * while stripping anything that could execute (`<script>`, `<style>`,
13
+ * `<iframe>`, inline event handlers like `onclick`, and `javascript:` URIs).
14
+ * `RETURN_TRUSTED_TYPE` is intentionally off so the result is a plain string
15
+ * suitable for `dangerouslySetInnerHTML`.
16
+ */
17
+ declare const DEFAULT_SANITIZE_CONFIG: Config;
18
+ /**
19
+ * Token-driven prose styling for sanitized rich-text output.
20
+ *
21
+ * These are the descendant typography rules applied to whatever HTML
22
+ * {@link EditorOutput} renders (headings, lists, links, code, tables, …).
23
+ * Kept as a single exported constant so the component's `cn()` call merges
24
+ * this prose base with the consumer's layout-only `className` — and so other
25
+ * surfaces can reuse the exact same prose treatment if needed.
26
+ *
27
+ * All colors resolve to `globals.css` semantic tokens, so it adapts to
28
+ * light/dark themes automatically.
29
+ */
30
+ declare const EDITOR_OUTPUT_PROSE: string;
31
+ interface EditorOutputProps extends Omit<React$1.ComponentProps<"div">, "children" | "dangerouslySetInnerHTML"> {
32
+ /**
33
+ * The raw, untrusted rich-text HTML string to render. It is sanitized with
34
+ * DOMPurify before being injected into the DOM. Pass the value produced by
35
+ * the paired `RichTextEditor`.
36
+ */
37
+ html: string;
38
+ /**
39
+ * Additional DOMPurify configuration, shallow-merged over the built-in
40
+ * allow-list. The merge is per-key, so passing `ALLOWED_TAGS` or
41
+ * `ALLOWED_ATTR` *replaces* that list rather than extending it. Spread
42
+ * {@link DEFAULT_SANITIZE_CONFIG} to widen from the defaults. `FORBID_TAGS`
43
+ * keeps `<script>`, `<style>`, `<iframe>` and friends stripped regardless of
44
+ * what you pass.
45
+ */
46
+ sanitizeConfig?: Config;
47
+ /** Additional class names applied to the prose-styled wrapper. */
48
+ className?: string;
49
+ }
50
+ /**
51
+ * `EditorOutput` — the read-only renderer for sanitized rich-text HTML.
52
+ *
53
+ * Pairs with `RichTextEditor`: the editor produces an HTML string, and this
54
+ * component safely displays it. The input is **never** trusted: it is run
55
+ * through DOMPurify against a sensible allow-list (formatting, links, lists,
56
+ * tables, images) with all scripts, inline event handlers, and unsafe URI
57
+ * schemes stripped before being rendered via `dangerouslySetInnerHTML`.
58
+ *
59
+ * Client-rendered: DOMPurify needs a DOM (`window`), so sanitization runs in
60
+ * the browser and the markup is injected on the first paint. If imported into
61
+ * a server render (no `window`) it emits empty markup and fills in on the
62
+ * client.
63
+ *
64
+ * Styling resolves entirely to `globals.css` design tokens, so output adapts
65
+ * to light/dark themes automatically.
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * // Render the value coming out of a RichTextEditor
70
+ * <EditorOutput html={job.descriptionHtml} />
71
+ *
72
+ * // Tighten the allow-list for a comment surface (no images, no tables)
73
+ * <EditorOutput
74
+ * html={comment.body}
75
+ * sanitizeConfig={{ ALLOWED_TAGS: ["p", "br", "b", "i", "em", "strong", "a"] }}
76
+ * />
77
+ * ```
78
+ */
79
+ declare function EditorOutput({
80
+ html,
81
+ sanitizeConfig,
82
+ className,
83
+ ...props
84
+ }: EditorOutputProps): react_jsx_runtime172.JSX.Element;
85
+ //#endregion
86
+ export { DEFAULT_SANITIZE_CONFIG, EDITOR_OUTPUT_PROSE, EditorOutput, EditorOutputProps };
87
+ //# sourceMappingURL=editor-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-output.d.ts","names":[],"sources":["../../src/components/editor-output.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;AAGkD;AAkEjD;AAsCD;;;;;AAmBC,cA7GK,uBA4Ie,EA5IU,MA4IV;;;;;;;;;;;;;cA1Ef;UAwBW,iBAAA,SACP,KAAK,OAAA,CAAM;;;;;;;;;;;;;;;mBAeF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkCV,YAAA;;;;;GAKN,oBAAiB,oBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,158 @@
1
+ "use client";
2
+
3
+ import { t as cn } from "../utils-DUlptRpf.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import * as React$1 from "react";
6
+ import DOMPurify from "dompurify";
7
+
8
+ //#region src/components/editor-output.tsx
9
+ /**
10
+ * Default DOMPurify allow-list used by {@link EditorOutput}.
11
+ *
12
+ * Covers the formatting that the paired `RichTextEditor` can produce —
13
+ * headings, emphasis, lists, links, blockquotes, code, tables, and images —
14
+ * while stripping anything that could execute (`<script>`, `<style>`,
15
+ * `<iframe>`, inline event handlers like `onclick`, and `javascript:` URIs).
16
+ * `RETURN_TRUSTED_TYPE` is intentionally off so the result is a plain string
17
+ * suitable for `dangerouslySetInnerHTML`.
18
+ */
19
+ const DEFAULT_SANITIZE_CONFIG = {
20
+ ALLOWED_TAGS: [
21
+ "a",
22
+ "b",
23
+ "blockquote",
24
+ "br",
25
+ "code",
26
+ "div",
27
+ "em",
28
+ "h1",
29
+ "h2",
30
+ "h3",
31
+ "h4",
32
+ "h5",
33
+ "h6",
34
+ "hr",
35
+ "i",
36
+ "img",
37
+ "li",
38
+ "ol",
39
+ "p",
40
+ "pre",
41
+ "s",
42
+ "span",
43
+ "strong",
44
+ "sub",
45
+ "sup",
46
+ "table",
47
+ "tbody",
48
+ "td",
49
+ "th",
50
+ "thead",
51
+ "tr",
52
+ "u",
53
+ "ul"
54
+ ],
55
+ ALLOWED_ATTR: [
56
+ "href",
57
+ "target",
58
+ "rel",
59
+ "src",
60
+ "alt",
61
+ "title",
62
+ "colspan",
63
+ "rowspan"
64
+ ],
65
+ ALLOWED_URI_REGEXP: /^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.-]+(?:[^a-z+.\-:]|$))/i,
66
+ FORBID_TAGS: [
67
+ "script",
68
+ "style",
69
+ "iframe",
70
+ "object",
71
+ "embed",
72
+ "form"
73
+ ],
74
+ FORBID_ATTR: ["style", "srcset"]
75
+ };
76
+ /**
77
+ * Token-driven prose styling for sanitized rich-text output.
78
+ *
79
+ * These are the descendant typography rules applied to whatever HTML
80
+ * {@link EditorOutput} renders (headings, lists, links, code, tables, …).
81
+ * Kept as a single exported constant so the component's `cn()` call merges
82
+ * this prose base with the consumer's layout-only `className` — and so other
83
+ * surfaces can reuse the exact same prose treatment if needed.
84
+ *
85
+ * All colors resolve to `globals.css` semantic tokens, so it adapts to
86
+ * light/dark themes automatically.
87
+ */
88
+ const EDITOR_OUTPUT_PROSE = [
89
+ "text-foreground text-sm leading-relaxed break-words",
90
+ "[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-2xl [&_h1]:font-semibold",
91
+ "[&_h2]:mt-4 [&_h2]:mb-2 [&_h2]:text-xl [&_h2]:font-semibold",
92
+ "[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-lg [&_h3]:font-semibold",
93
+ "[&_h4]:mt-3 [&_h4]:mb-1.5 [&_h4]:text-base [&_h4]:font-semibold",
94
+ "[&_p]:my-2",
95
+ "[&_ul]:my-2 [&_ul]:list-disc [&_ul]:ps-6",
96
+ "[&_ol]:my-2 [&_ol]:list-decimal [&_ol]:ps-6",
97
+ "[&_li]:my-0.5",
98
+ "[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:no-underline",
99
+ "[&_strong]:font-semibold [&_b]:font-semibold",
100
+ "[&_em]:italic [&_i]:italic",
101
+ "[&_blockquote]:my-3 [&_blockquote]:border-s-2 [&_blockquote]:border-border [&_blockquote]:ps-4 [&_blockquote]:text-muted-foreground [&_blockquote]:italic",
102
+ "[&_code]:rounded [&_code]:bg-muted [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-xs",
103
+ "[&_pre]:my-3 [&_pre]:overflow-x-auto [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:text-xs",
104
+ "[&_pre_code]:bg-transparent [&_pre_code]:p-0",
105
+ "[&_hr]:my-4 [&_hr]:border-border",
106
+ "[&_img]:my-2 [&_img]:max-w-full [&_img]:rounded-md",
107
+ "[&_table]:my-3 [&_table]:w-full [&_table]:border-collapse [&_table]:text-left",
108
+ "[&_th]:border [&_th]:border-border [&_th]:bg-muted [&_th]:px-2.5 [&_th]:py-1.5 [&_th]:font-medium",
109
+ "[&_td]:border [&_td]:border-border [&_td]:px-2.5 [&_td]:py-1.5"
110
+ ].join(" ");
111
+ /**
112
+ * `EditorOutput` — the read-only renderer for sanitized rich-text HTML.
113
+ *
114
+ * Pairs with `RichTextEditor`: the editor produces an HTML string, and this
115
+ * component safely displays it. The input is **never** trusted: it is run
116
+ * through DOMPurify against a sensible allow-list (formatting, links, lists,
117
+ * tables, images) with all scripts, inline event handlers, and unsafe URI
118
+ * schemes stripped before being rendered via `dangerouslySetInnerHTML`.
119
+ *
120
+ * Client-rendered: DOMPurify needs a DOM (`window`), so sanitization runs in
121
+ * the browser and the markup is injected on the first paint. If imported into
122
+ * a server render (no `window`) it emits empty markup and fills in on the
123
+ * client.
124
+ *
125
+ * Styling resolves entirely to `globals.css` design tokens, so output adapts
126
+ * to light/dark themes automatically.
127
+ *
128
+ * @example
129
+ * ```tsx
130
+ * // Render the value coming out of a RichTextEditor
131
+ * <EditorOutput html={job.descriptionHtml} />
132
+ *
133
+ * // Tighten the allow-list for a comment surface (no images, no tables)
134
+ * <EditorOutput
135
+ * html={comment.body}
136
+ * sanitizeConfig={{ ALLOWED_TAGS: ["p", "br", "b", "i", "em", "strong", "a"] }}
137
+ * />
138
+ * ```
139
+ */
140
+ function EditorOutput({ html, sanitizeConfig, className, ...props }) {
141
+ const sanitized = React$1.useMemo(() => {
142
+ if (typeof window === "undefined") return "";
143
+ return DOMPurify.sanitize(html ?? "", {
144
+ ...DEFAULT_SANITIZE_CONFIG,
145
+ ...sanitizeConfig
146
+ });
147
+ }, [html, sanitizeConfig]);
148
+ return /* @__PURE__ */ jsx("div", {
149
+ "data-slot": "editor-output",
150
+ className: cn(EDITOR_OUTPUT_PROSE, className),
151
+ dangerouslySetInnerHTML: { __html: sanitized },
152
+ ...props
153
+ });
154
+ }
155
+
156
+ //#endregion
157
+ export { DEFAULT_SANITIZE_CONFIG, EDITOR_OUTPUT_PROSE, EditorOutput };
158
+ //# sourceMappingURL=editor-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-output.js","names":["DEFAULT_SANITIZE_CONFIG: Config","React"],"sources":["../../src/components/editor-output.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport DOMPurify, { type Config } from \"dompurify\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\n/**\n * Default DOMPurify allow-list used by {@link EditorOutput}.\n *\n * Covers the formatting that the paired `RichTextEditor` can produce —\n * headings, emphasis, lists, links, blockquotes, code, tables, and images —\n * while stripping anything that could execute (`<script>`, `<style>`,\n * `<iframe>`, inline event handlers like `onclick`, and `javascript:` URIs).\n * `RETURN_TRUSTED_TYPE` is intentionally off so the result is a plain string\n * suitable for `dangerouslySetInnerHTML`.\n */\nconst DEFAULT_SANITIZE_CONFIG: Config = {\n ALLOWED_TAGS: [\n \"a\",\n \"b\",\n \"blockquote\",\n \"br\",\n \"code\",\n \"div\",\n \"em\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"hr\",\n \"i\",\n \"img\",\n \"li\",\n \"ol\",\n \"p\",\n \"pre\",\n \"s\",\n \"span\",\n \"strong\",\n \"sub\",\n \"sup\",\n \"table\",\n \"tbody\",\n \"td\",\n \"th\",\n \"thead\",\n \"tr\",\n \"u\",\n \"ul\",\n ],\n ALLOWED_ATTR: [\n \"href\",\n \"target\",\n \"rel\",\n \"src\",\n \"alt\",\n \"title\",\n \"colspan\",\n \"rowspan\",\n ],\n // Only safe URI schemes; blocks javascript:, data: (except images), etc.\n ALLOWED_URI_REGEXP:\n /^(?:(?:https?|mailto|tel|ftp):|[^a-z]|[a-z+.-]+(?:[^a-z+.\\-:]|$))/i,\n // Force-strip anything that can execute or leak.\n FORBID_TAGS: [\"script\", \"style\", \"iframe\", \"object\", \"embed\", \"form\"],\n FORBID_ATTR: [\"style\", \"srcset\"],\n}\n\n/**\n * Token-driven prose styling for sanitized rich-text output.\n *\n * These are the descendant typography rules applied to whatever HTML\n * {@link EditorOutput} renders (headings, lists, links, code, tables, …).\n * Kept as a single exported constant so the component's `cn()` call merges\n * this prose base with the consumer's layout-only `className` — and so other\n * surfaces can reuse the exact same prose treatment if needed.\n *\n * All colors resolve to `globals.css` semantic tokens, so it adapts to\n * light/dark themes automatically.\n */\nconst EDITOR_OUTPUT_PROSE = [\n \"text-foreground text-sm leading-relaxed break-words\",\n \"[&_h1]:mt-4 [&_h1]:mb-2 [&_h1]:text-2xl [&_h1]:font-semibold\",\n \"[&_h2]:mt-4 [&_h2]:mb-2 [&_h2]:text-xl [&_h2]:font-semibold\",\n \"[&_h3]:mt-3 [&_h3]:mb-1.5 [&_h3]:text-lg [&_h3]:font-semibold\",\n \"[&_h4]:mt-3 [&_h4]:mb-1.5 [&_h4]:text-base [&_h4]:font-semibold\",\n \"[&_p]:my-2\",\n \"[&_ul]:my-2 [&_ul]:list-disc [&_ul]:ps-6\",\n \"[&_ol]:my-2 [&_ol]:list-decimal [&_ol]:ps-6\",\n \"[&_li]:my-0.5\",\n \"[&_a]:text-primary [&_a]:underline [&_a]:underline-offset-4 hover:[&_a]:no-underline\",\n \"[&_strong]:font-semibold [&_b]:font-semibold\",\n \"[&_em]:italic [&_i]:italic\",\n \"[&_blockquote]:my-3 [&_blockquote]:border-s-2 [&_blockquote]:border-border [&_blockquote]:ps-4 [&_blockquote]:text-muted-foreground [&_blockquote]:italic\",\n \"[&_code]:rounded [&_code]:bg-muted [&_code]:px-1.5 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-xs\",\n \"[&_pre]:my-3 [&_pre]:overflow-x-auto [&_pre]:rounded-md [&_pre]:bg-muted [&_pre]:p-3 [&_pre]:text-xs\",\n \"[&_pre_code]:bg-transparent [&_pre_code]:p-0\",\n \"[&_hr]:my-4 [&_hr]:border-border\",\n \"[&_img]:my-2 [&_img]:max-w-full [&_img]:rounded-md\",\n \"[&_table]:my-3 [&_table]:w-full [&_table]:border-collapse [&_table]:text-left\",\n \"[&_th]:border [&_th]:border-border [&_th]:bg-muted [&_th]:px-2.5 [&_th]:py-1.5 [&_th]:font-medium\",\n \"[&_td]:border [&_td]:border-border [&_td]:px-2.5 [&_td]:py-1.5\",\n].join(\" \")\n\nexport interface EditorOutputProps\n extends Omit<React.ComponentProps<\"div\">, \"children\" | \"dangerouslySetInnerHTML\"> {\n /**\n * The raw, untrusted rich-text HTML string to render. It is sanitized with\n * DOMPurify before being injected into the DOM. Pass the value produced by\n * the paired `RichTextEditor`.\n */\n html: string\n /**\n * Additional DOMPurify configuration, shallow-merged over the built-in\n * allow-list. The merge is per-key, so passing `ALLOWED_TAGS` or\n * `ALLOWED_ATTR` *replaces* that list rather than extending it. Spread\n * {@link DEFAULT_SANITIZE_CONFIG} to widen from the defaults. `FORBID_TAGS`\n * keeps `<script>`, `<style>`, `<iframe>` and friends stripped regardless of\n * what you pass.\n */\n sanitizeConfig?: Config\n /** Additional class names applied to the prose-styled wrapper. */\n className?: string\n}\n\n/**\n * `EditorOutput` — the read-only renderer for sanitized rich-text HTML.\n *\n * Pairs with `RichTextEditor`: the editor produces an HTML string, and this\n * component safely displays it. The input is **never** trusted: it is run\n * through DOMPurify against a sensible allow-list (formatting, links, lists,\n * tables, images) with all scripts, inline event handlers, and unsafe URI\n * schemes stripped before being rendered via `dangerouslySetInnerHTML`.\n *\n * Client-rendered: DOMPurify needs a DOM (`window`), so sanitization runs in\n * the browser and the markup is injected on the first paint. If imported into\n * a server render (no `window`) it emits empty markup and fills in on the\n * client.\n *\n * Styling resolves entirely to `globals.css` design tokens, so output adapts\n * to light/dark themes automatically.\n *\n * @example\n * ```tsx\n * // Render the value coming out of a RichTextEditor\n * <EditorOutput html={job.descriptionHtml} />\n *\n * // Tighten the allow-list for a comment surface (no images, no tables)\n * <EditorOutput\n * html={comment.body}\n * sanitizeConfig={{ ALLOWED_TAGS: [\"p\", \"br\", \"b\", \"i\", \"em\", \"strong\", \"a\"] }}\n * />\n * ```\n */\nfunction EditorOutput({\n html,\n sanitizeConfig,\n className,\n ...props\n}: EditorOutputProps) {\n // DOMPurify requires a DOM. Consumer apps render on the client, so `window`\n // is present at first paint and the sanitized markup shows immediately, with\n // no empty-then-fill flash. useMemo keeps re-sanitizing cheap. The\n // `typeof window` guard is purely defensive: if this is ever imported into a\n // server render, it emits empty markup instead of throwing, then fills in on\n // the client.\n const sanitized = React.useMemo(() => {\n if (typeof window === \"undefined\") return \"\"\n return DOMPurify.sanitize(html ?? \"\", {\n ...DEFAULT_SANITIZE_CONFIG,\n ...sanitizeConfig,\n }) as string\n }, [html, sanitizeConfig])\n\n return (\n <div\n data-slot=\"editor-output\"\n // Prose base (typography) + consumer className (layout only).\n className={cn(EDITOR_OUTPUT_PROSE, className)}\n dangerouslySetInnerHTML={{ __html: sanitized }}\n {...props}\n />\n )\n}\n\nexport { EditorOutput, DEFAULT_SANITIZE_CONFIG, EDITOR_OUTPUT_PROSE }\n"],"mappings":";;;;;;;;;;;;;;;;;;AAiBA,MAAMA,0BAAkC;CACtC,cAAc;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,cAAc;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CAED,oBACE;CAEF,aAAa;EAAC;EAAU;EAAS;EAAU;EAAU;EAAS;EAAO;CACrE,aAAa,CAAC,SAAS,SAAS;CACjC;;;;;;;;;;;;;AAcD,MAAM,sBAAsB;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,KAAK,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDX,SAAS,aAAa,EACpB,MACA,gBACA,WACA,GAAG,SACiB;CAOpB,MAAM,YAAYC,QAAM,cAAc;AACpC,MAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,SAAO,UAAU,SAAS,QAAQ,IAAI;GACpC,GAAG;GACH,GAAG;GACJ,CAAC;IACD,CAAC,MAAM,eAAe,CAAC;AAE1B,QACE,oBAAC;EACC,aAAU;EAEV,WAAW,GAAG,qBAAqB,UAAU;EAC7C,yBAAyB,EAAE,QAAQ,WAAW;EAC9C,GAAI;GACJ"}
@@ -1,36 +1,36 @@
1
- import * as react_jsx_runtime145 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime173 from "react/jsx-runtime";
2
2
  import { VariantProps } from "class-variance-authority";
3
- import * as class_variance_authority_types2 from "class-variance-authority/types";
3
+ import * as class_variance_authority_types7 from "class-variance-authority/types";
4
4
 
5
5
  //#region src/components/empty.d.ts
6
6
  declare function Empty({
7
7
  className,
8
8
  ...props
9
- }: React.ComponentProps<"div">): react_jsx_runtime145.JSX.Element;
9
+ }: React.ComponentProps<"div">): react_jsx_runtime173.JSX.Element;
10
10
  declare function EmptyHeader({
11
11
  className,
12
12
  ...props
13
- }: React.ComponentProps<"div">): react_jsx_runtime145.JSX.Element;
13
+ }: React.ComponentProps<"div">): react_jsx_runtime173.JSX.Element;
14
14
  declare const emptyMediaVariants: (props?: ({
15
15
  variant?: "default" | "icon" | null | undefined;
16
- } & class_variance_authority_types2.ClassProp) | undefined) => string;
16
+ } & class_variance_authority_types7.ClassProp) | undefined) => string;
17
17
  declare function EmptyMedia({
18
18
  className,
19
19
  variant,
20
20
  ...props
21
- }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): react_jsx_runtime145.JSX.Element;
21
+ }: React.ComponentProps<"div"> & VariantProps<typeof emptyMediaVariants>): react_jsx_runtime173.JSX.Element;
22
22
  declare function EmptyTitle({
23
23
  className,
24
24
  ...props
25
- }: React.ComponentProps<"div">): react_jsx_runtime145.JSX.Element;
25
+ }: React.ComponentProps<"div">): react_jsx_runtime173.JSX.Element;
26
26
  declare function EmptyDescription({
27
27
  className,
28
28
  ...props
29
- }: React.ComponentProps<"p">): react_jsx_runtime145.JSX.Element;
29
+ }: React.ComponentProps<"p">): react_jsx_runtime173.JSX.Element;
30
30
  declare function EmptyContent({
31
31
  className,
32
32
  ...props
33
- }: React.ComponentProps<"div">): react_jsx_runtime145.JSX.Element;
33
+ }: React.ComponentProps<"div">): react_jsx_runtime173.JSX.Element;
34
34
  //#endregion
35
35
  export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
36
36
  //# sourceMappingURL=empty.d.ts.map
@@ -1,62 +1,4 @@
1
- import { t as cn } from "../utils-mWJR2N24.js";
2
- import { jsx } from "react/jsx-runtime";
3
- import { cva } from "class-variance-authority";
1
+ import "../utils-DUlptRpf.js";
2
+ import { a as EmptyMedia, i as EmptyHeader, n as EmptyContent, o as EmptyTitle, r as EmptyDescription, t as Empty } from "../empty-U4zrLmFU.js";
4
3
 
5
- //#region src/components/empty.tsx
6
- function Empty({ className, ...props }) {
7
- return /* @__PURE__ */ jsx("div", {
8
- "data-slot": "empty",
9
- className: cn("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-lg border-dashed p-12 text-center text-balance", className),
10
- ...props
11
- });
12
- }
13
- function EmptyHeader({ className, ...props }) {
14
- return /* @__PURE__ */ jsx("div", {
15
- "data-slot": "empty-header",
16
- className: cn("flex max-w-sm flex-col items-center gap-2", className),
17
- ...props
18
- });
19
- }
20
- const emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
21
- variants: { variant: {
22
- default: "bg-transparent",
23
- icon: "flex size-10 shrink-0 items-center justify-center rounded-lg bg-muted text-foreground [&_svg:not([class*='size-'])]:size-6"
24
- } },
25
- defaultVariants: { variant: "default" }
26
- });
27
- function EmptyMedia({ className, variant = "default", ...props }) {
28
- return /* @__PURE__ */ jsx("div", {
29
- "data-slot": "empty-icon",
30
- "data-variant": variant,
31
- className: cn(emptyMediaVariants({
32
- variant,
33
- className
34
- })),
35
- ...props
36
- });
37
- }
38
- function EmptyTitle({ className, ...props }) {
39
- return /* @__PURE__ */ jsx("div", {
40
- "data-slot": "empty-title",
41
- className: cn("font-heading text-lg font-medium tracking-ppx-tight", className),
42
- ...props
43
- });
44
- }
45
- function EmptyDescription({ className, ...props }) {
46
- return /* @__PURE__ */ jsx("div", {
47
- "data-slot": "empty-description",
48
- className: cn("text-sm/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
49
- ...props
50
- });
51
- }
52
- function EmptyContent({ className, ...props }) {
53
- return /* @__PURE__ */ jsx("div", {
54
- "data-slot": "empty-content",
55
- className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", className),
56
- ...props
57
- });
58
- }
59
-
60
- //#endregion
61
- export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };
62
- //# sourceMappingURL=empty.js.map
4
+ export { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle };