@konopskidev/ui 0.1.2 → 0.2.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 (339) hide show
  1. package/README.md +102 -13
  2. package/dist/chunks/rolldown-runtime-CmQyd0Gu.cjs +27 -0
  3. package/dist/components/ui/accordion.cjs +62 -0
  4. package/dist/components/ui/accordion.cjs.map +1 -0
  5. package/dist/components/ui/accordion.d.cts +7 -0
  6. package/dist/components/ui/accordion.d.ts.map +1 -1
  7. package/dist/components/ui/accordion.js +9 -8
  8. package/dist/components/ui/accordion.js.map +1 -1
  9. package/dist/components/ui/alert-dialog.cjs +116 -0
  10. package/dist/components/ui/alert-dialog.cjs.map +1 -0
  11. package/dist/components/ui/alert-dialog.d.cts +18 -0
  12. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  13. package/dist/components/ui/alert-dialog.js +13 -12
  14. package/dist/components/ui/alert-dialog.js.map +1 -1
  15. package/dist/components/ui/alert.cjs +49 -0
  16. package/dist/components/ui/alert.cjs.map +1 -0
  17. package/dist/components/ui/alert.d.cts +10 -0
  18. package/dist/components/ui/aspect-ratio.cjs +14 -0
  19. package/dist/components/ui/aspect-ratio.cjs.map +1 -0
  20. package/dist/components/ui/aspect-ratio.d.cts +3 -0
  21. package/dist/components/ui/aspect-ratio.js +4 -5
  22. package/dist/components/ui/aspect-ratio.js.map +1 -1
  23. package/dist/components/ui/attachment.cjs +113 -0
  24. package/dist/components/ui/attachment.cjs.map +1 -0
  25. package/dist/components/ui/attachment.d.cts +24 -0
  26. package/dist/components/ui/avatar.cjs +60 -0
  27. package/dist/components/ui/avatar.cjs.map +1 -0
  28. package/dist/components/ui/avatar.d.cts +11 -0
  29. package/dist/components/ui/avatar.d.ts.map +1 -1
  30. package/dist/components/ui/avatar.js +7 -6
  31. package/dist/components/ui/avatar.js.map +1 -1
  32. package/dist/components/ui/badge.cjs +33 -0
  33. package/dist/components/ui/badge.cjs.map +1 -0
  34. package/dist/components/ui/badge.d.cts +9 -0
  35. package/dist/components/ui/breadcrumb.cjs +81 -0
  36. package/dist/components/ui/breadcrumb.cjs.map +1 -0
  37. package/dist/components/ui/breadcrumb.d.cts +11 -0
  38. package/dist/components/ui/bubble.cjs +79 -0
  39. package/dist/components/ui/bubble.cjs.map +1 -0
  40. package/dist/components/ui/bubble.d.cts +17 -0
  41. package/dist/components/ui/button-group.cjs +43 -0
  42. package/dist/components/ui/button-group.cjs.map +1 -0
  43. package/dist/components/ui/button-group.d.cts +11 -0
  44. package/dist/components/ui/button.cjs +64 -0
  45. package/dist/components/ui/button.cjs.map +1 -0
  46. package/dist/components/ui/button.d.cts +21 -0
  47. package/dist/components/ui/calendar.cjs +114 -0
  48. package/dist/components/ui/calendar.cjs.map +1 -0
  49. package/dist/components/ui/calendar.d.cts +10 -0
  50. package/dist/components/ui/calendar.js +0 -1
  51. package/dist/components/ui/calendar.js.map +1 -1
  52. package/dist/components/ui/card.cjs +80 -0
  53. package/dist/components/ui/card.cjs.map +1 -0
  54. package/dist/components/ui/card.d.cts +33 -0
  55. package/dist/components/ui/card.d.ts +7 -2
  56. package/dist/components/ui/card.d.ts.map +1 -1
  57. package/dist/components/ui/card.js.map +1 -1
  58. package/dist/components/ui/carousel.cjs +142 -0
  59. package/dist/components/ui/carousel.cjs.map +1 -0
  60. package/dist/components/ui/carousel.d.cts +28 -0
  61. package/dist/components/ui/carousel.d.ts +1 -1
  62. package/dist/components/ui/carousel.d.ts.map +1 -1
  63. package/dist/components/ui/carousel.js +1 -0
  64. package/dist/components/ui/carousel.js.map +1 -1
  65. package/dist/components/ui/chart.cjs +159 -0
  66. package/dist/components/ui/chart.cjs.map +1 -0
  67. package/dist/components/ui/chart.d.cts +44 -0
  68. package/dist/components/ui/chart.js +0 -1
  69. package/dist/components/ui/chart.js.map +1 -1
  70. package/dist/components/ui/checkbox.cjs +25 -0
  71. package/dist/components/ui/checkbox.cjs.map +1 -0
  72. package/dist/components/ui/checkbox.d.cts +4 -0
  73. package/dist/components/ui/checkbox.d.ts.map +1 -1
  74. package/dist/components/ui/checkbox.js +6 -5
  75. package/dist/components/ui/checkbox.js.map +1 -1
  76. package/dist/components/ui/code-block.cjs +134 -0
  77. package/dist/components/ui/code-block.cjs.map +1 -0
  78. package/dist/components/ui/code-block.d.cts +26 -0
  79. package/dist/components/ui/code-block.d.ts.map +1 -1
  80. package/dist/components/ui/code-block.js +1 -0
  81. package/dist/components/ui/code-block.js.map +1 -1
  82. package/dist/components/ui/collapsible.cjs +28 -0
  83. package/dist/components/ui/collapsible.cjs.map +1 -0
  84. package/dist/components/ui/collapsible.d.cts +5 -0
  85. package/dist/components/ui/collapsible.js +6 -7
  86. package/dist/components/ui/collapsible.js.map +1 -1
  87. package/dist/components/ui/combobox.cjs +193 -0
  88. package/dist/components/ui/combobox.cjs.map +1 -0
  89. package/dist/components/ui/combobox.d.cts +24 -0
  90. package/dist/components/ui/combobox.d.ts.map +1 -1
  91. package/dist/components/ui/combobox.js +22 -21
  92. package/dist/components/ui/combobox.js.map +1 -1
  93. package/dist/components/ui/command.cjs +99 -0
  94. package/dist/components/ui/command.cjs.map +1 -0
  95. package/dist/components/ui/command.d.cts +18 -0
  96. package/dist/components/ui/command.d.ts.map +1 -1
  97. package/dist/components/ui/command.js +10 -12
  98. package/dist/components/ui/command.js.map +1 -1
  99. package/dist/components/ui/context-menu.cjs +143 -0
  100. package/dist/components/ui/context-menu.cjs.map +1 -0
  101. package/dist/components/ui/context-menu.d.cts +31 -0
  102. package/dist/components/ui/context-menu.d.ts.map +1 -1
  103. package/dist/components/ui/context-menu.js +20 -19
  104. package/dist/components/ui/context-menu.js.map +1 -1
  105. package/dist/components/ui/dialog.cjs +148 -0
  106. package/dist/components/ui/dialog.cjs.map +1 -0
  107. package/dist/components/ui/dialog.d.cts +55 -0
  108. package/dist/components/ui/dialog.d.ts +41 -3
  109. package/dist/components/ui/dialog.d.ts.map +1 -1
  110. package/dist/components/ui/dialog.js +65 -26
  111. package/dist/components/ui/dialog.js.map +1 -1
  112. package/dist/components/ui/direction.cjs +19 -0
  113. package/dist/components/ui/direction.cjs.map +1 -0
  114. package/dist/components/ui/direction.d.cts +11 -0
  115. package/dist/components/ui/direction.d.ts +1 -1
  116. package/dist/components/ui/direction.d.ts.map +1 -1
  117. package/dist/components/ui/direction.js +0 -1
  118. package/dist/components/ui/direction.js.map +1 -1
  119. package/dist/components/ui/drawer.cjs +90 -0
  120. package/dist/components/ui/drawer.cjs.map +1 -0
  121. package/dist/components/ui/drawer.d.cts +13 -0
  122. package/dist/components/ui/drawer.js +11 -11
  123. package/dist/components/ui/drawer.js.map +1 -1
  124. package/dist/components/ui/dropdown-menu.cjs +146 -0
  125. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  126. package/dist/components/ui/dropdown-menu.d.cts +29 -0
  127. package/dist/components/ui/dropdown-menu.js +19 -20
  128. package/dist/components/ui/dropdown-menu.js.map +1 -1
  129. package/dist/components/ui/empty.cjs +66 -0
  130. package/dist/components/ui/empty.cjs.map +1 -0
  131. package/dist/components/ui/empty.d.cts +11 -0
  132. package/dist/components/ui/field.cjs +121 -0
  133. package/dist/components/ui/field.cjs.map +1 -0
  134. package/dist/components/ui/field.d.cts +24 -0
  135. package/dist/components/ui/field.js +0 -1
  136. package/dist/components/ui/field.js.map +1 -1
  137. package/dist/components/ui/hover-card.cjs +38 -0
  138. package/dist/components/ui/hover-card.cjs.map +1 -0
  139. package/dist/components/ui/hover-card.d.cts +6 -0
  140. package/dist/components/ui/hover-card.d.ts.map +1 -1
  141. package/dist/components/ui/hover-card.js +8 -7
  142. package/dist/components/ui/hover-card.js.map +1 -1
  143. package/dist/components/ui/input-group.cjs +87 -0
  144. package/dist/components/ui/input-group.cjs.map +1 -0
  145. package/dist/components/ui/input-group.d.cts +16 -0
  146. package/dist/components/ui/input-otp.cjs +54 -0
  147. package/dist/components/ui/input-otp.cjs.map +1 -0
  148. package/dist/components/ui/input-otp.d.cts +11 -0
  149. package/dist/components/ui/input-otp.js +0 -1
  150. package/dist/components/ui/input-otp.js.map +1 -1
  151. package/dist/components/ui/input.cjs +28 -0
  152. package/dist/components/ui/input.cjs.map +1 -0
  153. package/dist/components/ui/input.d.cts +10 -0
  154. package/dist/components/ui/item.cjs +133 -0
  155. package/dist/components/ui/item.cjs.map +1 -0
  156. package/dist/components/ui/item.d.cts +23 -0
  157. package/dist/components/ui/kbd.cjs +22 -0
  158. package/dist/components/ui/kbd.cjs.map +1 -0
  159. package/dist/components/ui/kbd.d.cts +3 -0
  160. package/dist/components/ui/label.cjs +19 -0
  161. package/dist/components/ui/label.cjs.map +1 -0
  162. package/dist/components/ui/label.d.cts +4 -0
  163. package/dist/components/ui/label.d.ts.map +1 -1
  164. package/dist/components/ui/label.js +5 -4
  165. package/dist/components/ui/label.js.map +1 -1
  166. package/dist/components/ui/marker.cjs +46 -0
  167. package/dist/components/ui/marker.cjs.map +1 -0
  168. package/dist/components/ui/marker.d.cts +11 -0
  169. package/dist/components/ui/menubar.cjs +154 -0
  170. package/dist/components/ui/menubar.cjs.map +1 -0
  171. package/dist/components/ui/menubar.d.cts +30 -0
  172. package/dist/components/ui/menubar.js +20 -21
  173. package/dist/components/ui/menubar.js.map +1 -1
  174. package/dist/components/ui/message-scroller.cjs +87 -0
  175. package/dist/components/ui/message-scroller.cjs.map +1 -0
  176. package/dist/components/ui/message-scroller.d.cts +10 -0
  177. package/dist/components/ui/message-scroller.js +9 -9
  178. package/dist/components/ui/message-scroller.js.map +1 -1
  179. package/dist/components/ui/message.cjs +58 -0
  180. package/dist/components/ui/message.cjs.map +1 -0
  181. package/dist/components/ui/message.d.cts +10 -0
  182. package/dist/components/ui/native-select.cjs +44 -0
  183. package/dist/components/ui/native-select.cjs.map +1 -0
  184. package/dist/components/ui/native-select.d.cts +8 -0
  185. package/dist/components/ui/native-select.d.ts +1 -1
  186. package/dist/components/ui/native-select.d.ts.map +1 -1
  187. package/dist/components/ui/native-select.js.map +1 -1
  188. package/dist/components/ui/navigation-menu.cjs +93 -0
  189. package/dist/components/ui/navigation-menu.cjs.map +1 -0
  190. package/dist/components/ui/navigation-menu.d.cts +14 -0
  191. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  192. package/dist/components/ui/navigation-menu.js +12 -11
  193. package/dist/components/ui/navigation-menu.js.map +1 -1
  194. package/dist/components/ui/pagination.cjs +90 -0
  195. package/dist/components/ui/pagination.cjs.map +1 -0
  196. package/dist/components/ui/pagination.d.cts +17 -0
  197. package/dist/components/ui/pagination.d.ts +1 -1
  198. package/dist/components/ui/pagination.d.ts.map +1 -1
  199. package/dist/components/ui/pagination.js.map +1 -1
  200. package/dist/components/ui/popover.cjs +66 -0
  201. package/dist/components/ui/popover.cjs.map +1 -0
  202. package/dist/components/ui/popover.d.cts +10 -0
  203. package/dist/components/ui/popover.d.ts.map +1 -1
  204. package/dist/components/ui/popover.js +8 -7
  205. package/dist/components/ui/popover.js.map +1 -1
  206. package/dist/components/ui/progress.cjs +25 -0
  207. package/dist/components/ui/progress.cjs.map +1 -0
  208. package/dist/components/ui/progress.d.cts +4 -0
  209. package/dist/components/ui/progress.js +5 -6
  210. package/dist/components/ui/progress.js.map +1 -1
  211. package/dist/components/ui/questionnaire.cjs +187 -0
  212. package/dist/components/ui/questionnaire.cjs.map +1 -0
  213. package/dist/components/ui/questionnaire.d.cts +19 -0
  214. package/dist/components/ui/questionnaire.d.ts.map +1 -1
  215. package/dist/components/ui/questionnaire.js +19 -21
  216. package/dist/components/ui/questionnaire.js.map +1 -1
  217. package/dist/components/ui/radio-group.cjs +32 -0
  218. package/dist/components/ui/radio-group.cjs.map +1 -0
  219. package/dist/components/ui/radio-group.d.cts +5 -0
  220. package/dist/components/ui/radio-group.d.ts.map +1 -1
  221. package/dist/components/ui/radio-group.js +7 -6
  222. package/dist/components/ui/radio-group.js.map +1 -1
  223. package/dist/components/ui/resizable.cjs +33 -0
  224. package/dist/components/ui/resizable.cjs.map +1 -0
  225. package/dist/components/ui/resizable.d.cts +7 -0
  226. package/dist/components/ui/resizable.d.ts.map +1 -1
  227. package/dist/components/ui/resizable.js +0 -2
  228. package/dist/components/ui/resizable.js.map +1 -1
  229. package/dist/components/ui/scroll-area.cjs +43 -0
  230. package/dist/components/ui/scroll-area.cjs.map +1 -0
  231. package/dist/components/ui/scroll-area.d.cts +5 -0
  232. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  233. package/dist/components/ui/scroll-area.js +9 -8
  234. package/dist/components/ui/scroll-area.js.map +1 -1
  235. package/dist/components/ui/select.cjs +113 -0
  236. package/dist/components/ui/select.cjs.map +1 -0
  237. package/dist/components/ui/select.d.cts +15 -0
  238. package/dist/components/ui/select.js +17 -18
  239. package/dist/components/ui/select.js.map +1 -1
  240. package/dist/components/ui/separator.cjs +21 -0
  241. package/dist/components/ui/separator.cjs.map +1 -0
  242. package/dist/components/ui/separator.d.cts +4 -0
  243. package/dist/components/ui/separator.d.ts.map +1 -1
  244. package/dist/components/ui/separator.js +5 -4
  245. package/dist/components/ui/separator.js.map +1 -1
  246. package/dist/components/ui/sheet.cjs +101 -0
  247. package/dist/components/ui/sheet.cjs.map +1 -0
  248. package/dist/components/ui/sheet.d.cts +14 -0
  249. package/dist/components/ui/sheet.d.ts.map +1 -1
  250. package/dist/components/ui/sheet.js +1 -0
  251. package/dist/components/ui/sheet.js.map +1 -1
  252. package/dist/components/ui/sidebar.cjs +405 -0
  253. package/dist/components/ui/sidebar.cjs.map +1 -0
  254. package/dist/components/ui/sidebar.d.cts +69 -0
  255. package/dist/components/ui/sidebar.js +0 -1
  256. package/dist/components/ui/sidebar.js.map +1 -1
  257. package/dist/components/ui/skeleton.cjs +14 -0
  258. package/dist/components/ui/skeleton.cjs.map +1 -0
  259. package/dist/components/ui/skeleton.d.cts +2 -0
  260. package/dist/components/ui/slider.cjs +42 -0
  261. package/dist/components/ui/slider.cjs.map +1 -0
  262. package/dist/components/ui/slider.d.cts +7 -0
  263. package/dist/components/ui/slider.js +7 -8
  264. package/dist/components/ui/slider.js.map +1 -1
  265. package/dist/components/ui/sonner.cjs +36 -0
  266. package/dist/components/ui/sonner.cjs.map +1 -0
  267. package/dist/components/ui/sonner.d.cts +13 -0
  268. package/dist/components/ui/sonner.d.ts.map +1 -1
  269. package/dist/components/ui/sonner.js +4 -6
  270. package/dist/components/ui/sonner.js.map +1 -1
  271. package/dist/components/ui/spinner.cjs +17 -0
  272. package/dist/components/ui/spinner.cjs.map +1 -0
  273. package/dist/components/ui/spinner.d.cts +2 -0
  274. package/dist/components/ui/switch.cjs +24 -0
  275. package/dist/components/ui/switch.cjs.map +1 -0
  276. package/dist/components/ui/switch.d.cts +6 -0
  277. package/dist/components/ui/switch.js +5 -6
  278. package/dist/components/ui/switch.js.map +1 -1
  279. package/dist/components/ui/table.cjs +77 -0
  280. package/dist/components/ui/table.cjs.map +1 -0
  281. package/dist/components/ui/table.d.cts +10 -0
  282. package/dist/components/ui/tabs.cjs +54 -0
  283. package/dist/components/ui/tabs.cjs.map +1 -0
  284. package/dist/components/ui/tabs.d.cts +11 -0
  285. package/dist/components/ui/tabs.js +7 -8
  286. package/dist/components/ui/tabs.js.map +1 -1
  287. package/dist/components/ui/textarea.cjs +39 -0
  288. package/dist/components/ui/textarea.cjs.map +1 -0
  289. package/dist/components/ui/textarea.d.cts +9 -0
  290. package/dist/components/ui/textarea.js +0 -1
  291. package/dist/components/ui/textarea.js.map +1 -1
  292. package/dist/components/ui/toggle-group.cjs +56 -0
  293. package/dist/components/ui/toggle-group.cjs.map +1 -0
  294. package/dist/components/ui/toggle-group.d.cts +10 -0
  295. package/dist/components/ui/toggle-group.js +5 -6
  296. package/dist/components/ui/toggle-group.js.map +1 -1
  297. package/dist/components/ui/toggle.cjs +41 -0
  298. package/dist/components/ui/toggle.cjs.map +1 -0
  299. package/dist/components/ui/toggle.d.cts +9 -0
  300. package/dist/components/ui/toggle.d.ts.map +1 -1
  301. package/dist/components/ui/toggle.js +5 -4
  302. package/dist/components/ui/toggle.js.map +1 -1
  303. package/dist/components/ui/tooltip.cjs +43 -0
  304. package/dist/components/ui/tooltip.cjs.map +1 -0
  305. package/dist/components/ui/tooltip.d.cts +7 -0
  306. package/dist/components/ui/tooltip.js +8 -9
  307. package/dist/components/ui/tooltip.js.map +1 -1
  308. package/dist/components/ui/trace.cjs +86 -0
  309. package/dist/components/ui/trace.cjs.map +1 -0
  310. package/dist/components/ui/trace.d.cts +18 -0
  311. package/dist/hooks/use-highlighted-code.d.ts.map +1 -1
  312. package/dist/hooks/use-highlighted-code.js +56 -0
  313. package/dist/hooks/use-highlighted-code.js.map +1 -0
  314. package/dist/hooks/use-mobile.cjs +26 -0
  315. package/dist/hooks/use-mobile.cjs.map +1 -0
  316. package/dist/hooks/use-mobile.d.cts +1 -0
  317. package/dist/hooks/use-mobile.d.ts.map +1 -1
  318. package/dist/hooks/use-mobile.js +1 -0
  319. package/dist/hooks/use-mobile.js.map +1 -1
  320. package/dist/index.cjs +356 -0
  321. package/dist/index.d.cts +67 -0
  322. package/dist/index.d.ts +5 -11
  323. package/dist/index.d.ts.map +1 -1
  324. package/dist/index.js +3 -14
  325. package/dist/lib/get-placeholder.cjs +13 -0
  326. package/dist/lib/get-placeholder.cjs.map +1 -0
  327. package/dist/lib/get-placeholder.d.cts +5 -0
  328. package/dist/lib/highlighter.js +79 -0
  329. package/dist/lib/highlighter.js.map +1 -0
  330. package/dist/lib/utils.cjs +8 -0
  331. package/dist/lib/utils.d.cts +8 -0
  332. package/{src → dist}/styles/globals.css +11 -0
  333. package/package.json +111 -32
  334. /package/{src → dist}/styles/base.css +0 -0
  335. /package/{src → dist}/styles/prose.css +0 -0
  336. /package/{src → dist}/styles/theme.css +0 -0
  337. /package/{src → dist}/styles/tokens.css +0 -0
  338. /package/{src → dist}/styles/utilities.css +0 -0
  339. /package/{src → dist}/styles/variants.css +0 -0
package/README.md CHANGED
@@ -6,6 +6,10 @@ visual language of the [konopskidev](../konopskidev) site, on Tailwind CSS v4 an
6
6
  - **63 components** — the full `radix-nova` registry, plus the hand-written house primitives.
7
7
  - **One style source** — tokens, theme, base layers and prose live in [`src/styles`](src/styles), so
8
8
  every app imports the same stylesheet instead of re-deriving the palette.
9
+ - **ESM and CommonJS** — both formats ship, with declarations for each, so `import`, `require` and a
10
+ Jest suite all resolve the package without a transform.
11
+ - **Only what you install loads** — a component built on a heavy library (`recharts`, `shiki`,
12
+ `vaul`, …) asks for it as an optional peer, and is never re-exported from the root barrel.
9
13
  - **Documented in Storybook 10** with real controls for every prop, and every story runs as a test
10
14
  in a real browser (render + play function + axe accessibility checks).
11
15
  - **Tested with Vitest** — behaviour in jsdom, markup and a11y in Chromium.
@@ -16,7 +20,36 @@ visual language of the [konopskidev](../konopskidev) site, on Tailwind CSS v4 an
16
20
  pnpm add @konopskidev/ui
17
21
  ```
18
22
 
19
- Peer dependencies: `react@^19`, `react-dom@^19`, `tailwindcss@^4`.
23
+ Peer dependencies: `react@^19`, `react-dom@^19`, `tailwindcss@^4`, and `lucide-react` (optional).
24
+
25
+ Some components are built on a heavy library. Those are **optional peers**: they are not installed
26
+ with the package, and you add the one a component needs — the manual half of what `shadcn add` does
27
+ for a copied component.
28
+
29
+ | Component | Install alongside |
30
+ | ----------------------------------------------- | --------------------------------- |
31
+ | `chart` | `pnpm add recharts` |
32
+ | `carousel` | `pnpm add embla-carousel-react` |
33
+ | `drawer` | `pnpm add vaul` |
34
+ | `calendar` | `pnpm add react-day-picker` |
35
+ | `resizable` | `pnpm add react-resizable-panels` |
36
+ | `command` | `pnpm add cmdk` |
37
+ | `sonner` | `pnpm add sonner` |
38
+ | `input-otp` | `pnpm add input-otp` |
39
+ | `combobox` | `pnpm add @base-ui/react` |
40
+ | `message-scroller`, `questionnaire` | `pnpm add @shadcn/react` |
41
+ | `lib/highlighter`, `hooks/use-highlighted-code` | `pnpm add shiki` (ESM only) |
42
+
43
+ Those eleven components are **not** in the root barrel, because a barrel that re-exported them would
44
+ make every consumer resolve `recharts` on `import { Button } from '@konopskidev/ui'`. Import them
45
+ from their subpath:
46
+
47
+ ```tsx
48
+ import { ChartContainer } from '@konopskidev/ui/components/chart';
49
+ ```
50
+
51
+ > **Just released?** pnpm quarantines packages published in the last 24 hours. While you are the one
52
+ > publishing, add the package to `minimumReleaseAgeExclude` in `pnpm-workspace.yaml`.
20
53
 
21
54
  ## Wire up the styles
22
55
 
@@ -27,11 +60,13 @@ The package does **not** import `tailwindcss` itself — the app owns that, so i
27
60
  /* app.css */
28
61
  @import 'tailwindcss';
29
62
  @import '@konopskidev/ui/styles.css';
30
-
31
- /* Let Tailwind see the classes the components use. */
32
- @source '../node_modules/@konopskidev/ui/dist';
33
63
  ```
34
64
 
65
+ No `@source` line is needed. Tailwind does not scan `node_modules`, so the published stylesheet
66
+ registers the package's own modules with `@source` — the path is relative to that file, so it cannot
67
+ drift from your install. Before that existed, a wrong consumer-side path failed silently: every
68
+ component rendered unstyled with no error in the build or the console.
69
+
35
70
  Dark mode is the `.dark` class on any ancestor. The `--font-*` variables come from the app
36
71
  (konopskidev sets them with `next/font`); every style has a sensible fallback.
37
72
 
@@ -56,15 +91,32 @@ export function PublishCard() {
56
91
  }
57
92
  ```
58
93
 
59
- Deep imports keep a page from pulling in the whole library:
94
+ Deep imports keep a page from pulling in the whole library, and they are the only way in for the
95
+ components in the peer table above:
60
96
 
61
97
  ```tsx
62
98
  import { Button } from '@konopskidev/ui/components/button';
63
99
  import { cn } from '@konopskidev/ui/lib/utils';
64
100
  ```
65
101
 
66
- Components that use hooks or state carry `'use client'`, so they render inside a React Server
67
- Component tree.
102
+ Every module that calls a hook, or wraps a primitive with no client boundary of its own, carries
103
+ `'use client'`, so it renders inside a React Server Component tree. Two kinds of module stay
104
+ unmarked on purpose:
105
+
106
+ - **`Slot`-only presentational components** — `Button`, `Card`, `Badge`, `Item`, `Breadcrumb` and the
107
+ prose primitives. `Slot` is `asChild` plumbing with no behaviour, and Radix leaves it unmarked for
108
+ the same reason. Because the directive is file-level, marking `button.tsx` would also make
109
+ `buttonVariants` a client reference, and `buttonVariants()` from a server component would throw.
110
+ - **Thin wrappers over a dependency that declares the boundary itself** — `cmdk`, `sonner`,
111
+ `react-resizable-panels`, `@shadcn/react`. The client graph already starts inside the dependency,
112
+ so marking the wrapper only moves its own few lines into the client bundle.
113
+
114
+ A test enforces both directions and re-checks that every package in the second group still ships the
115
+ directive, so a new component cannot silently regress the rule:
116
+
117
+ ```bash
118
+ pnpm test src/client-directive.test.ts
119
+ ```
68
120
 
69
121
  ## The style contract
70
122
 
@@ -89,6 +141,13 @@ Conventions that are behaviour, not class strings:
89
141
  - **Slider names live on the thumbs**, where focus goes; pass `thumbLabels` for ranges.
90
142
  - **`Item` rows are list items** inside `ItemGroup`; with `asChild` the consumer's element keeps its
91
143
  own role.
144
+ - **`CardImage` requires content.** The aspect box exists to frame media, so `children` is required
145
+ rather than every call site guarding an empty frame.
146
+ - **`DialogContent` composes.** `variant="bare"` gives a full-viewport layer with no card chrome and
147
+ no entrance animation (image viewers, canvases); `overlayClassName` reaches the backdrop,
148
+ `showOverlay={false}` removes it, and `closeButton` takes `false` or your own element when the
149
+ default ghost button would be unreadable. `DialogContentPrimitive` is exported for layouts the
150
+ props cannot express.
92
151
 
93
152
  ## Storybook
94
153
 
@@ -106,25 +165,44 @@ get wrong.
106
165
  ```bash
107
166
  pnpm test # jsdom behaviour tests
108
167
  pnpm test:stories # every story rendered in Chromium, play functions + axe
168
+ pnpm test:package # packs the tarball and consumes it, both formats + Tailwind
109
169
  pnpm test:coverage
110
170
  ```
111
171
 
112
172
  `pnpm test:stories` needs a browser: `pnpm exec playwright install chromium`.
113
173
 
174
+ `pnpm test:package` is the check the metadata validators cannot make: it `npm pack`s the package,
175
+ installs it into a scratch consumer with only React and Tailwind, then `import`s and `require`s it,
176
+ asserts the barrel resolves without any optional peer, and runs a Tailwind build to prove the shipped
177
+ stylesheet styles the components with no consumer configuration.
178
+
179
+ **Jest.** Because the package ships CommonJS alongside ESM, `require` resolves it directly: no
180
+ `moduleNameMapper`, no transform for the package, no `transformIgnorePatterns` exception. One
181
+ `moduleNameMapper` per export family (`components/*`, `lib/*`, `hooks/*`) is enough if you need to
182
+ point at the files explicitly.
183
+
114
184
  Coverage thresholds are a ratchet — the floor sits where the suite is today (65 % overall, 90 % for
115
185
  hooks, 70 % for lib), so a new component without tests fails the run instead of sliding past.
116
186
 
117
187
  ## Quality gates
118
188
 
119
189
  ```bash
120
- pnpm verify # lint → tsc → tests → build → publint + attw
190
+ pnpm verify # lint → tsc → tests → build → package smoke test → publint + attw
121
191
  ```
122
192
 
123
- The build emits one ES module per source module (no barrel bundling), keeps `'use client'`, writes
124
- per-module declaration files, and rewrites relative declaration specifiers to `.js` so
125
- `moduleResolution: node16` consumers resolve them
126
- ([`scripts/fix-declarations.mjs`](scripts/fix-declarations.mjs)). `attw` runs with `--profile esm-only`
127
- and skips `./styles.css`, which publint validates as a plain asset.
193
+ The build is [`scripts/build.mjs`](scripts/build.mjs): every publishable source module is a Rollup
194
+ entry ([`scripts/entries.mjs`](scripts/entries.mjs)), so one file is emitted per module and nothing
195
+ that a wildcard export can reach is left out. Vite runs twice — ESM, then CommonJS — `tsc` writes the
196
+ declarations, and the post-steps copy `src/styles` into `dist/styles`, add the CommonJS `.d.cts`
197
+ declarations, and normalise relative specifiers so `moduleResolution: node16` consumers resolve them
198
+ ([`scripts/fix-declarations.mjs`](scripts/fix-declarations.mjs)).
199
+
200
+ [`scripts/check-build.mjs`](scripts/check-build.mjs) then fails the build on any of the ways this
201
+ package has broken before: a module with declarations but no JavaScript, a `'use client'` that is
202
+ missing or duplicated, an `exports` target that does not exist, or a stylesheet that is not in `dist`.
203
+ `attw` runs with `--profile node16`, so both the `import` and `require` branches are validated;
204
+ `./styles.css` and the two ESM-only modules are excluded, and publint validates the stylesheet as a
205
+ plain asset.
128
206
 
129
207
  ## Adding a component
130
208
 
@@ -137,6 +215,17 @@ pnpm format
137
215
  Then write `src/components/ui/<component>.stories.tsx` and `<component>.test.tsx`, export it from
138
216
  `src/components/ui/<component>.tsx` and regenerate the barrel with `pnpm barrel`.
139
217
 
218
+ Two rules are enforced by tests rather than convention:
219
+
220
+ - **Client or server?** A module that calls a hook, or wraps a primitive that does not declare its
221
+ own client boundary, needs `'use client'` as its first line; `pnpm test` fails both when it is
222
+ missing and when it is unnecessary, and the build fails if the directive is emitted twice or not at
223
+ all. `Slot`-only modules stay unmarked — see the client/server section above.
224
+ - **Heavy peer?** If the component needs a library the core does not already have, add it to
225
+ `peerDependencies` + `peerDependenciesMeta` (optional) + `devDependencies` and to
226
+ `OPTIONAL_PEER_COMPONENTS` in [`scripts/generate-barrel.mjs`](scripts/generate-barrel.mjs), so it
227
+ stays out of the root barrel. Add the row to the install table above.
228
+
140
229
  ## Releasing
141
230
 
142
231
  Releases run from **Actions → Release → Run workflow**. The only choice is the bump — `patch`,
@@ -0,0 +1,27 @@
1
+ // \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ Object.defineProperty(exports, "__toESM", {
23
+ enumerable: true,
24
+ get: function() {
25
+ return __toESM;
26
+ }
27
+ });
@@ -0,0 +1,62 @@
1
+ "use client";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_rolldown_runtime = require("../../chunks/rolldown-runtime-CmQyd0Gu.cjs");
4
+ let cn = require("cn");
5
+ let lucide_react = require("lucide-react");
6
+ let radix_ui = require("radix-ui");
7
+ let react = require("react");
8
+ react = require_rolldown_runtime.__toESM(react, 1);
9
+ let react_jsx_runtime = require("react/jsx-runtime");
10
+ // src/components/ui/accordion.tsx
11
+ function Accordion({ className, ...props }) {
12
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Accordion.Root, {
13
+ "data-slot": "accordion",
14
+ className: (0, cn.cn)("flex w-full flex-col", className),
15
+ ...props
16
+ });
17
+ }
18
+ function AccordionItem({ className, ...props }) {
19
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Accordion.Item, {
20
+ "data-slot": "accordion-item",
21
+ className: (0, cn.cn)("not-last:border-b", className),
22
+ ...props
23
+ });
24
+ }
25
+ function AccordionTrigger({ className, children, ...props }) {
26
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Accordion.Header, {
27
+ className: "flex",
28
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(radix_ui.Accordion.Trigger, {
29
+ "data-slot": "accordion-trigger",
30
+ className: (0, cn.cn)("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-sm border border-transparent py-2.5 text-left text-sm font-medium focus-ring transition-all outline-none hover:underline focus-visible:after:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className),
31
+ ...props,
32
+ children: [
33
+ children,
34
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDownIcon, {
35
+ "data-slot": "accordion-trigger-icon",
36
+ className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
37
+ }),
38
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronUpIcon, {
39
+ "data-slot": "accordion-trigger-icon",
40
+ className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
41
+ })
42
+ ]
43
+ })
44
+ });
45
+ }
46
+ function AccordionContent({ className, children, ...props }) {
47
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.Accordion.Content, {
48
+ "data-slot": "accordion-content",
49
+ className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
50
+ ...props,
51
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
52
+ className: (0, cn.cn)("h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
53
+ children
54
+ })
55
+ });
56
+ }
57
+ exports.Accordion = Accordion;
58
+ exports.AccordionContent = AccordionContent;
59
+ exports.AccordionItem = AccordionItem;
60
+ exports.AccordionTrigger = AccordionTrigger;
61
+
62
+ //# sourceMappingURL=accordion.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.cjs","names":["AccordionPrimitive","ChevronDownIcon","ChevronUpIcon"],"sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from 'cn';\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nfunction Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn('flex w-full flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('not-last:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-sm border border-transparent py-2.5 text-left text-sm font-medium focus-ring transition-all outline-none hover:underline focus-visible:after:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"],"mappings":";;;;;;;;;;AAOA,SAAS,UAAU,EAAE,WAAW,GAAG,SAA+D;CAChG,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,UAAmB,MAApB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CAAG,wBAAwB,SAAS;EAC/C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EACrB,WACA,GAAG,SACoD;CACvD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,UAAmB,MAApB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CAAG,qBAAqB,SAAS;EAC5C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,UAAmB,QAApB;EAA2B,WAAU;EACnC,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACA,SAAAA,UAAmB,SAApB;GACE,aAAU;GACV,YAAA,GAAW,GAAA,GAAA,CACT,idACA,SACF;GACA,GAAI;GANN,UAAA;IAQG;IACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,iBAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;IACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,eAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;GACyB;;CACH,CAAA;AAE/B;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACF,SAAAA,UAAmB,SAApB;EACE,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACE,YAAA,GAAW,GAAA,GAAA,CACT,qJACA,SACF;GAEC;EACE,CAAA;CACqB,CAAA;AAEhC"}
@@ -0,0 +1,7 @@
1
+ import { Accordion as AccordionPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ declare function Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
4
+ declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
5
+ declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
6
+ declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQ/F;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAuBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAiBzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQ/F;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAuBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAiBzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,27 +1,28 @@
1
+ "use client";
1
2
  import { cn } from "cn";
2
3
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
3
- import { Accordion } from "radix-ui";
4
+ import { Accordion as Accordion$1 } from "radix-ui";
4
5
  import "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  // src/components/ui/accordion.tsx
7
- function Accordion$1({ className, ...props }) {
8
- return /* @__PURE__ */ jsx(Accordion.Root, {
8
+ function Accordion({ className, ...props }) {
9
+ return /* @__PURE__ */ jsx(Accordion$1.Root, {
9
10
  "data-slot": "accordion",
10
11
  className: cn("flex w-full flex-col", className),
11
12
  ...props
12
13
  });
13
14
  }
14
15
  function AccordionItem({ className, ...props }) {
15
- return /* @__PURE__ */ jsx(Accordion.Item, {
16
+ return /* @__PURE__ */ jsx(Accordion$1.Item, {
16
17
  "data-slot": "accordion-item",
17
18
  className: cn("not-last:border-b", className),
18
19
  ...props
19
20
  });
20
21
  }
21
22
  function AccordionTrigger({ className, children, ...props }) {
22
- return /* @__PURE__ */ jsx(Accordion.Header, {
23
+ return /* @__PURE__ */ jsx(Accordion$1.Header, {
23
24
  className: "flex",
24
- children: /* @__PURE__ */ jsxs(Accordion.Trigger, {
25
+ children: /* @__PURE__ */ jsxs(Accordion$1.Trigger, {
25
26
  "data-slot": "accordion-trigger",
26
27
  className: cn("group/accordion-trigger relative flex flex-1 items-start justify-between rounded-sm border border-transparent py-2.5 text-left text-sm font-medium focus-ring transition-all outline-none hover:underline focus-visible:after:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className),
27
28
  ...props,
@@ -40,7 +41,7 @@ function AccordionTrigger({ className, children, ...props }) {
40
41
  });
41
42
  }
42
43
  function AccordionContent({ className, children, ...props }) {
43
- return /* @__PURE__ */ jsx(Accordion.Content, {
44
+ return /* @__PURE__ */ jsx(Accordion$1.Content, {
44
45
  "data-slot": "accordion-content",
45
46
  className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
46
47
  ...props,
@@ -50,6 +51,6 @@ function AccordionContent({ className, children, ...props }) {
50
51
  })
51
52
  });
52
53
  }
53
- export { Accordion$1 as Accordion, AccordionContent, AccordionItem, AccordionTrigger };
54
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
54
55
 
55
56
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","names":["Accordion","AccordionPrimitive"],"sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["import { cn } from 'cn';\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nfunction Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn('flex w-full flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('not-last:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-sm border border-transparent py-2.5 text-left text-sm font-medium focus-ring transition-all outline-none hover:underline focus-visible:after:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"],"mappings":";;;;;;AAKA,SAASA,YAAU,EAAE,WAAW,GAAG,SAA+D;CAChG,OACE,oBAACC,UAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAAG,wBAAwB,SAAS;EAC/C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EACrB,WACA,GAAG,SACoD;CACvD,OACE,oBAACA,UAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAAG,qBAAqB,SAAS;EAC5C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,UAAmB,QAApB;EAA2B,WAAU;EACnC,UAAA,qBAACA,UAAmB,SAApB;GACE,aAAU;GACV,WAAW,GACT,idACA,SACF;GACA,GAAI;GANN,UAAA;IAQG;IACD,oBAAC,iBAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;IACD,oBAAC,eAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;GACyB;;CACH,CAAA;AAE/B;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,UAAmB,SAApB;EACE,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,oBAAC,OAAD;GACE,WAAW,GACT,qJACA,SACF;GAEC;EACE,CAAA;CACqB,CAAA;AAEhC"}
1
+ {"version":3,"file":"accordion.js","names":["AccordionPrimitive"],"sources":["../../../src/components/ui/accordion.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from 'cn';\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nfunction Accordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {\n return (\n <AccordionPrimitive.Root\n data-slot=\"accordion\"\n className={cn('flex w-full flex-col', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionItem({\n className,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Item>) {\n return (\n <AccordionPrimitive.Item\n data-slot=\"accordion-item\"\n className={cn('not-last:border-b', className)}\n {...props}\n />\n );\n}\n\nfunction AccordionTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger relative flex flex-1 items-start justify-between rounded-sm border border-transparent py-2.5 text-left text-sm font-medium focus-ring transition-all outline-none hover:underline focus-visible:after:border-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronDownIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden\"\n />\n <ChevronUpIcon\n data-slot=\"accordion-trigger-icon\"\n className=\"pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline\"\n />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n );\n}\n\nfunction AccordionContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Content>) {\n return (\n <AccordionPrimitive.Content\n data-slot=\"accordion-content\"\n className=\"overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up\"\n {...props}\n >\n <div\n className={cn(\n 'h-(--radix-accordion-content-height) pt-0 pb-2.5 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Content>\n );\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent };\n"],"mappings":";;;;;;;AAOA,SAAS,UAAU,EAAE,WAAW,GAAG,SAA+D;CAChG,OACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAAG,wBAAwB,SAAS;EAC/C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,cAAc,EACrB,WACA,GAAG,SACoD;CACvD,OACE,oBAACA,YAAmB,MAApB;EACE,aAAU;EACV,WAAW,GAAG,qBAAqB,SAAS;EAC5C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,YAAmB,QAApB;EAA2B,WAAU;EACnC,UAAA,qBAACA,YAAmB,SAApB;GACE,aAAU;GACV,WAAW,GACT,idACA,SACF;GACA,GAAI;GANN,UAAA;IAQG;IACD,oBAAC,iBAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;IACD,oBAAC,eAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;GACyB;;CACH,CAAA;AAE/B;AAEA,SAAS,iBAAiB,EACxB,WACA,UACA,GAAG,SACuD;CAC1D,OACE,oBAACA,YAAmB,SAApB;EACE,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,oBAAC,OAAD;GACE,WAAW,GACT,qJACA,SACF;GAEC;EACE,CAAA;CACqB,CAAA;AAEhC"}
@@ -0,0 +1,116 @@
1
+ "use client";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_rolldown_runtime = require("../../chunks/rolldown-runtime-CmQyd0Gu.cjs");
4
+ const require_components_ui_button = require("./button.cjs");
5
+ let cn = require("cn");
6
+ let radix_ui = require("radix-ui");
7
+ let react = require("react");
8
+ react = require_rolldown_runtime.__toESM(react, 1);
9
+ let react_jsx_runtime = require("react/jsx-runtime");
10
+ // src/components/ui/alert-dialog.tsx
11
+ function AlertDialog({ ...props }) {
12
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Root, {
13
+ "data-slot": "alert-dialog",
14
+ ...props
15
+ });
16
+ }
17
+ function AlertDialogTrigger({ ...props }) {
18
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Trigger, {
19
+ "data-slot": "alert-dialog-trigger",
20
+ ...props
21
+ });
22
+ }
23
+ function AlertDialogPortal({ ...props }) {
24
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Portal, {
25
+ "data-slot": "alert-dialog-portal",
26
+ ...props
27
+ });
28
+ }
29
+ function AlertDialogOverlay({ className, ...props }) {
30
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Overlay, {
31
+ "data-slot": "alert-dialog-overlay",
32
+ className: (0, cn.cn)("fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
33
+ ...props
34
+ });
35
+ }
36
+ function AlertDialogContent({ className, size = "default", ...props }) {
37
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(AlertDialogPortal, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(AlertDialogOverlay, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Content, {
38
+ "data-slot": "alert-dialog-content",
39
+ "data-size": size,
40
+ className: (0, cn.cn)("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-sm border border-border bg-popover p-4 text-popover-foreground duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
41
+ ...props
42
+ })] });
43
+ }
44
+ function AlertDialogHeader({ className, ...props }) {
45
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
46
+ "data-slot": "alert-dialog-header",
47
+ className: (0, cn.cn)("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
48
+ ...props
49
+ });
50
+ }
51
+ function AlertDialogFooter({ className, ...props }) {
52
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
53
+ "data-slot": "alert-dialog-footer",
54
+ className: (0, cn.cn)("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-sm border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
55
+ ...props
56
+ });
57
+ }
58
+ function AlertDialogMedia({ className, ...props }) {
59
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
60
+ "data-slot": "alert-dialog-media",
61
+ className: (0, cn.cn)("mb-2 inline-flex size-10 items-center justify-center rounded-sm bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", className),
62
+ ...props
63
+ });
64
+ }
65
+ function AlertDialogTitle({ className, ...props }) {
66
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Title, {
67
+ "data-slot": "alert-dialog-title",
68
+ className: (0, cn.cn)("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
69
+ ...props
70
+ });
71
+ }
72
+ function AlertDialogDescription({ className, ...props }) {
73
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Description, {
74
+ "data-slot": "alert-dialog-description",
75
+ className: (0, cn.cn)("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
76
+ ...props
77
+ });
78
+ }
79
+ function AlertDialogAction({ className, variant = "default", size = "default", ...props }) {
80
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_ui_button.Button, {
81
+ variant,
82
+ size,
83
+ asChild: true,
84
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Action, {
85
+ "data-slot": "alert-dialog-action",
86
+ className: (0, cn.cn)(className),
87
+ ...props
88
+ })
89
+ });
90
+ }
91
+ function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
92
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_components_ui_button.Button, {
93
+ variant,
94
+ size,
95
+ asChild: true,
96
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(radix_ui.AlertDialog.Cancel, {
97
+ "data-slot": "alert-dialog-cancel",
98
+ className: (0, cn.cn)(className),
99
+ ...props
100
+ })
101
+ });
102
+ }
103
+ exports.AlertDialog = AlertDialog;
104
+ exports.AlertDialogAction = AlertDialogAction;
105
+ exports.AlertDialogCancel = AlertDialogCancel;
106
+ exports.AlertDialogContent = AlertDialogContent;
107
+ exports.AlertDialogDescription = AlertDialogDescription;
108
+ exports.AlertDialogFooter = AlertDialogFooter;
109
+ exports.AlertDialogHeader = AlertDialogHeader;
110
+ exports.AlertDialogMedia = AlertDialogMedia;
111
+ exports.AlertDialogOverlay = AlertDialogOverlay;
112
+ exports.AlertDialogPortal = AlertDialogPortal;
113
+ exports.AlertDialogTitle = AlertDialogTitle;
114
+ exports.AlertDialogTrigger = AlertDialogTrigger;
115
+
116
+ //# sourceMappingURL=alert-dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.cjs","names":["AlertDialogPrimitive","Button"],"sources":["../../../src/components/ui/alert-dialog.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from 'cn';\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Button } from './button';\n\nfunction AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />;\n}\n\nfunction AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />;\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-sm border border-border bg-popover p-4 text-popover-foreground duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',\n className,\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n 'grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n '-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-sm border-t bg-muted/50 p-4 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogMedia({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-2 inline-flex size-10 items-center justify-center rounded-sm bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n 'text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\n 'text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n {...props}\n />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n"],"mappings":";;;;;;;;;;AAQA,SAAS,YAAY,EAAE,GAAG,SAAiE;CACzF,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,MAAtB;EAA2B,aAAU;EAAe,GAAI;CAAQ,CAAA;AACzE;AAEA,SAAS,mBAAmB,EAC1B,GAAG,SACyD;CAC5D,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AACpF;AAEA,SAAS,kBAAkB,EAAE,GAAG,SAAmE;CACjG,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,QAAtB;EAA6B,aAAU;EAAsB,GAAI;CAAQ,CAAA;AAClF;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;CAC5D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,SAAtB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,iLACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,mBAAmB,EAC1B,WACA,OAAO,WACP,GAAG,SAGF;CACD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,mBAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,CAAqB,CAAA,GACrB,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,SAAtB;EACE,aAAU;EACV,aAAW;EACX,YAAA,GAAW,GAAA,GAAA,CACT,yaACA,SACF;EACA,GAAI;CACL,CAAA,CACgB,EAAA,CAAA;AAEvB;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAsC;CAC/E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,sZACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAsC;CAC/E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,iNACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAsC;CAC9E,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,8KACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,OAAtB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,qJACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,SAAAA,YAAqB,aAAtB;EACE,aAAU;EACV,YAAA,GAAW,GAAA,GAAA,CACT,kIACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAE4D;CAC/D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;EAAiB;EAAe;EAAM,SAAA;EACpC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACD,SAAAA,YAAqB,QAAtB;GACE,aAAU;GACV,YAAA,GAAW,GAAA,GAAA,CAAG,SAAS;GACvB,GAAI;EACL,CAAA;CACK,CAAA;AAEZ;AAEA,SAAS,kBAAkB,EACzB,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAE4D;CAC/D,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,6BAAAA,QAAD;EAAiB;EAAe;EAAM,SAAA;EACpC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACD,SAAAA,YAAqB,QAAtB;GACE,aAAU;GACV,YAAA,GAAW,GAAA,GAAA,CAAG,SAAS;GACvB,GAAI;EACL,CAAA;CACK,CAAA;AAEZ"}
@@ -0,0 +1,18 @@
1
+ import { AlertDialog as AlertDialogPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ import { Button } from './button.cjs';
4
+ declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): React.JSX.Element;
5
+ declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): React.JSX.Element;
6
+ declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): React.JSX.Element;
7
+ declare function AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>): React.JSX.Element;
8
+ declare function AlertDialogContent({ className, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {
9
+ size?: 'default' | 'sm';
10
+ }): React.JSX.Element;
11
+ declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
12
+ declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
13
+ declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
14
+ declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
15
+ declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
16
+ declare function AlertDialogAction({ className, variant, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action> & Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>): React.JSX.Element;
17
+ declare function AlertDialogCancel({ className, variant, size, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> & Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>): React.JSX.Element;
18
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert-dialog.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,qBAExF;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAE3D;AAED,iBAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAEhG;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG;IAC7D,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB,qBAeA;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,qBAWzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,qBAW/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC"}
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert-dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,qBAExF;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAE3D;AAED,iBAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,qBAEhG;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,qBAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,GAAG;IAC7D,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB,qBAeA;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,qBAWzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,qBAW/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,GACzD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAU9D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,CAAC"}
@@ -1,36 +1,37 @@
1
+ "use client";
1
2
  import { Button } from "./button.js";
2
3
  import { cn } from "cn";
3
- import { AlertDialog } from "radix-ui";
4
+ import { AlertDialog as AlertDialog$1 } from "radix-ui";
4
5
  import "react";
5
6
  import { jsx, jsxs } from "react/jsx-runtime";
6
7
  // src/components/ui/alert-dialog.tsx
7
- function AlertDialog$1({ ...props }) {
8
- return /* @__PURE__ */ jsx(AlertDialog.Root, {
8
+ function AlertDialog({ ...props }) {
9
+ return /* @__PURE__ */ jsx(AlertDialog$1.Root, {
9
10
  "data-slot": "alert-dialog",
10
11
  ...props
11
12
  });
12
13
  }
13
14
  function AlertDialogTrigger({ ...props }) {
14
- return /* @__PURE__ */ jsx(AlertDialog.Trigger, {
15
+ return /* @__PURE__ */ jsx(AlertDialog$1.Trigger, {
15
16
  "data-slot": "alert-dialog-trigger",
16
17
  ...props
17
18
  });
18
19
  }
19
20
  function AlertDialogPortal({ ...props }) {
20
- return /* @__PURE__ */ jsx(AlertDialog.Portal, {
21
+ return /* @__PURE__ */ jsx(AlertDialog$1.Portal, {
21
22
  "data-slot": "alert-dialog-portal",
22
23
  ...props
23
24
  });
24
25
  }
25
26
  function AlertDialogOverlay({ className, ...props }) {
26
- return /* @__PURE__ */ jsx(AlertDialog.Overlay, {
27
+ return /* @__PURE__ */ jsx(AlertDialog$1.Overlay, {
27
28
  "data-slot": "alert-dialog-overlay",
28
29
  className: cn("fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
29
30
  ...props
30
31
  });
31
32
  }
32
33
  function AlertDialogContent({ className, size = "default", ...props }) {
33
- return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialog.Content, {
34
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialog$1.Content, {
34
35
  "data-slot": "alert-dialog-content",
35
36
  "data-size": size,
36
37
  className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-sm border border-border bg-popover p-4 text-popover-foreground duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
@@ -59,14 +60,14 @@ function AlertDialogMedia({ className, ...props }) {
59
60
  });
60
61
  }
61
62
  function AlertDialogTitle({ className, ...props }) {
62
- return /* @__PURE__ */ jsx(AlertDialog.Title, {
63
+ return /* @__PURE__ */ jsx(AlertDialog$1.Title, {
63
64
  "data-slot": "alert-dialog-title",
64
65
  className: cn("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
65
66
  ...props
66
67
  });
67
68
  }
68
69
  function AlertDialogDescription({ className, ...props }) {
69
- return /* @__PURE__ */ jsx(AlertDialog.Description, {
70
+ return /* @__PURE__ */ jsx(AlertDialog$1.Description, {
70
71
  "data-slot": "alert-dialog-description",
71
72
  className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
72
73
  ...props
@@ -77,7 +78,7 @@ function AlertDialogAction({ className, variant = "default", size = "default", .
77
78
  variant,
78
79
  size,
79
80
  asChild: true,
80
- children: /* @__PURE__ */ jsx(AlertDialog.Action, {
81
+ children: /* @__PURE__ */ jsx(AlertDialog$1.Action, {
81
82
  "data-slot": "alert-dialog-action",
82
83
  className: cn(className),
83
84
  ...props
@@ -89,13 +90,13 @@ function AlertDialogCancel({ className, variant = "outline", size = "default", .
89
90
  variant,
90
91
  size,
91
92
  asChild: true,
92
- children: /* @__PURE__ */ jsx(AlertDialog.Cancel, {
93
+ children: /* @__PURE__ */ jsx(AlertDialog$1.Cancel, {
93
94
  "data-slot": "alert-dialog-cancel",
94
95
  className: cn(className),
95
96
  ...props
96
97
  })
97
98
  });
98
99
  }
99
- export { AlertDialog$1 as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
100
+ export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
100
101
 
101
102
  //# sourceMappingURL=alert-dialog.js.map