@konopskidev/ui 0.0.0-stage → 0.1.1

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 (280) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -2
  3. package/dist/components/ui/accordion.d.ts +8 -0
  4. package/dist/components/ui/accordion.d.ts.map +1 -0
  5. package/dist/components/ui/accordion.js +55 -0
  6. package/dist/components/ui/accordion.js.map +1 -0
  7. package/dist/components/ui/alert-dialog.d.ts +19 -0
  8. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  9. package/dist/components/ui/alert-dialog.js +101 -0
  10. package/dist/components/ui/alert-dialog.js.map +1 -0
  11. package/dist/components/ui/alert.d.ts +11 -0
  12. package/dist/components/ui/alert.d.ts.map +1 -0
  13. package/dist/components/ui/alert.js +44 -0
  14. package/dist/components/ui/alert.js.map +1 -0
  15. package/dist/components/ui/aspect-ratio.d.ts +4 -0
  16. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  17. package/dist/components/ui/aspect-ratio.js +14 -0
  18. package/dist/components/ui/aspect-ratio.js.map +1 -0
  19. package/dist/components/ui/attachment.d.ts +25 -0
  20. package/dist/components/ui/attachment.d.ts.map +1 -0
  21. package/dist/components/ui/attachment.js +102 -0
  22. package/dist/components/ui/attachment.js.map +1 -0
  23. package/dist/components/ui/avatar.d.ts +12 -0
  24. package/dist/components/ui/avatar.d.ts.map +1 -0
  25. package/dist/components/ui/avatar.js +51 -0
  26. package/dist/components/ui/avatar.js.map +1 -0
  27. package/dist/components/ui/badge.d.ts +10 -0
  28. package/dist/components/ui/badge.d.ts.map +1 -0
  29. package/dist/components/ui/badge.js +29 -0
  30. package/dist/components/ui/badge.js.map +1 -0
  31. package/dist/components/ui/breadcrumb.d.ts +12 -0
  32. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  33. package/dist/components/ui/breadcrumb.js +72 -0
  34. package/dist/components/ui/breadcrumb.js.map +1 -0
  35. package/dist/components/ui/bubble.d.ts +18 -0
  36. package/dist/components/ui/bubble.d.ts.map +1 -0
  37. package/dist/components/ui/bubble.js +73 -0
  38. package/dist/components/ui/bubble.js.map +1 -0
  39. package/dist/components/ui/button-group.d.ts +12 -0
  40. package/dist/components/ui/button-group.d.ts.map +1 -0
  41. package/dist/components/ui/button-group.js +40 -0
  42. package/dist/components/ui/button-group.js.map +1 -0
  43. package/dist/components/ui/button.d.ts +22 -0
  44. package/dist/components/ui/button.d.ts.map +1 -0
  45. package/dist/components/ui/button.js +61 -0
  46. package/dist/components/ui/button.js.map +1 -0
  47. package/dist/components/ui/calendar.d.ts +11 -0
  48. package/dist/components/ui/calendar.d.ts.map +1 -0
  49. package/dist/components/ui/calendar.js +111 -0
  50. package/dist/components/ui/calendar.js.map +1 -0
  51. package/dist/components/ui/card.d.ts +26 -0
  52. package/dist/components/ui/card.d.ts.map +1 -0
  53. package/dist/components/ui/card.js +76 -0
  54. package/dist/components/ui/card.js.map +1 -0
  55. package/dist/components/ui/carousel.d.ts +29 -0
  56. package/dist/components/ui/carousel.d.ts.map +1 -0
  57. package/dist/components/ui/carousel.js +132 -0
  58. package/dist/components/ui/carousel.js.map +1 -0
  59. package/dist/components/ui/chart.d.ts +45 -0
  60. package/dist/components/ui/chart.d.ts.map +1 -0
  61. package/dist/components/ui/chart.js +151 -0
  62. package/dist/components/ui/chart.js.map +1 -0
  63. package/dist/components/ui/checkbox.d.ts +5 -0
  64. package/dist/components/ui/checkbox.d.ts.map +1 -0
  65. package/dist/components/ui/checkbox.js +21 -0
  66. package/dist/components/ui/checkbox.js.map +1 -0
  67. package/dist/components/ui/code-block.d.ts +27 -0
  68. package/dist/components/ui/code-block.d.ts.map +1 -0
  69. package/dist/components/ui/code-block.js +123 -0
  70. package/dist/components/ui/code-block.js.map +1 -0
  71. package/dist/components/ui/collapsible.d.ts +6 -0
  72. package/dist/components/ui/collapsible.d.ts.map +1 -0
  73. package/dist/components/ui/collapsible.js +26 -0
  74. package/dist/components/ui/collapsible.js.map +1 -0
  75. package/dist/components/ui/combobox.d.ts +25 -0
  76. package/dist/components/ui/combobox.d.ts.map +1 -0
  77. package/dist/components/ui/combobox.js +174 -0
  78. package/dist/components/ui/combobox.js.map +1 -0
  79. package/dist/components/ui/command.d.ts +19 -0
  80. package/dist/components/ui/command.d.ts.map +1 -0
  81. package/dist/components/ui/command.js +90 -0
  82. package/dist/components/ui/command.js.map +1 -0
  83. package/dist/components/ui/context-menu.d.ts +32 -0
  84. package/dist/components/ui/context-menu.d.ts.map +1 -0
  85. package/dist/components/ui/context-menu.js +125 -0
  86. package/dist/components/ui/context-menu.js.map +1 -0
  87. package/dist/components/ui/dialog.d.ts +18 -0
  88. package/dist/components/ui/dialog.d.ts.map +1 -0
  89. package/dist/components/ui/dialog.js +98 -0
  90. package/dist/components/ui/dialog.js.map +1 -0
  91. package/dist/components/ui/direction.d.ts +12 -0
  92. package/dist/components/ui/direction.d.ts.map +1 -0
  93. package/dist/components/ui/direction.js +16 -0
  94. package/dist/components/ui/direction.js.map +1 -0
  95. package/dist/components/ui/drawer.d.ts +14 -0
  96. package/dist/components/ui/drawer.d.ts.map +1 -0
  97. package/dist/components/ui/drawer.js +78 -0
  98. package/dist/components/ui/drawer.js.map +1 -0
  99. package/dist/components/ui/dropdown-menu.d.ts +30 -0
  100. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  101. package/dist/components/ui/dropdown-menu.js +130 -0
  102. package/dist/components/ui/dropdown-menu.js.map +1 -0
  103. package/dist/components/ui/empty.d.ts +12 -0
  104. package/dist/components/ui/empty.d.ts.map +1 -0
  105. package/dist/components/ui/empty.js +60 -0
  106. package/dist/components/ui/empty.js.map +1 -0
  107. package/dist/components/ui/field.d.ts +25 -0
  108. package/dist/components/ui/field.d.ts.map +1 -0
  109. package/dist/components/ui/field.js +112 -0
  110. package/dist/components/ui/field.js.map +1 -0
  111. package/dist/components/ui/hover-card.d.ts +7 -0
  112. package/dist/components/ui/hover-card.d.ts.map +1 -0
  113. package/dist/components/ui/hover-card.js +32 -0
  114. package/dist/components/ui/hover-card.js.map +1 -0
  115. package/dist/components/ui/input-group.d.ts +17 -0
  116. package/dist/components/ui/input-group.d.ts.map +1 -0
  117. package/dist/components/ui/input-group.js +79 -0
  118. package/dist/components/ui/input-group.js.map +1 -0
  119. package/dist/components/ui/input-otp.d.ts +12 -0
  120. package/dist/components/ui/input-otp.d.ts.map +1 -0
  121. package/dist/components/ui/input-otp.js +49 -0
  122. package/dist/components/ui/input-otp.js.map +1 -0
  123. package/dist/components/ui/input.d.ts +11 -0
  124. package/dist/components/ui/input.d.ts.map +1 -0
  125. package/dist/components/ui/input.js +25 -0
  126. package/dist/components/ui/input.js.map +1 -0
  127. package/dist/components/ui/item.d.ts +24 -0
  128. package/dist/components/ui/item.d.ts.map +1 -0
  129. package/dist/components/ui/item.js +121 -0
  130. package/dist/components/ui/item.js.map +1 -0
  131. package/dist/components/ui/kbd.d.ts +4 -0
  132. package/dist/components/ui/kbd.d.ts.map +1 -0
  133. package/dist/components/ui/kbd.js +20 -0
  134. package/dist/components/ui/kbd.js.map +1 -0
  135. package/dist/components/ui/label.d.ts +5 -0
  136. package/dist/components/ui/label.d.ts.map +1 -0
  137. package/dist/components/ui/label.js +15 -0
  138. package/dist/components/ui/label.js.map +1 -0
  139. package/dist/components/ui/marker.d.ts +12 -0
  140. package/dist/components/ui/marker.d.ts.map +1 -0
  141. package/dist/components/ui/marker.js +41 -0
  142. package/dist/components/ui/marker.js.map +1 -0
  143. package/dist/components/ui/menubar.d.ts +31 -0
  144. package/dist/components/ui/menubar.d.ts.map +1 -0
  145. package/dist/components/ui/menubar.js +137 -0
  146. package/dist/components/ui/menubar.js.map +1 -0
  147. package/dist/components/ui/message-scroller.d.ts +11 -0
  148. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  149. package/dist/components/ui/message-scroller.js +61 -0
  150. package/dist/components/ui/message-scroller.js.map +1 -0
  151. package/dist/components/ui/message.d.ts +11 -0
  152. package/dist/components/ui/message.d.ts.map +1 -0
  153. package/dist/components/ui/message.js +50 -0
  154. package/dist/components/ui/message.js.map +1 -0
  155. package/dist/components/ui/native-select.d.ts +9 -0
  156. package/dist/components/ui/native-select.d.ts.map +1 -0
  157. package/dist/components/ui/native-select.js +39 -0
  158. package/dist/components/ui/native-select.js.map +1 -0
  159. package/dist/components/ui/navigation-menu.d.ts +15 -0
  160. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  161. package/dist/components/ui/navigation-menu.js +81 -0
  162. package/dist/components/ui/navigation-menu.js.map +1 -0
  163. package/dist/components/ui/pagination.d.ts +18 -0
  164. package/dist/components/ui/pagination.d.ts.map +1 -0
  165. package/dist/components/ui/pagination.js +81 -0
  166. package/dist/components/ui/pagination.js.map +1 -0
  167. package/dist/components/ui/popover.d.ts +11 -0
  168. package/dist/components/ui/popover.d.ts.map +1 -0
  169. package/dist/components/ui/popover.js +56 -0
  170. package/dist/components/ui/popover.js.map +1 -0
  171. package/dist/components/ui/progress.d.ts +5 -0
  172. package/dist/components/ui/progress.d.ts.map +1 -0
  173. package/dist/components/ui/progress.js +23 -0
  174. package/dist/components/ui/progress.js.map +1 -0
  175. package/dist/components/ui/questionnaire.d.ts +20 -0
  176. package/dist/components/ui/questionnaire.d.ts.map +1 -0
  177. package/dist/components/ui/questionnaire.js +172 -0
  178. package/dist/components/ui/questionnaire.js.map +1 -0
  179. package/dist/components/ui/radio-group.d.ts +6 -0
  180. package/dist/components/ui/radio-group.d.ts.map +1 -0
  181. package/dist/components/ui/radio-group.js +27 -0
  182. package/dist/components/ui/radio-group.js.map +1 -0
  183. package/dist/components/ui/resizable.d.ts +8 -0
  184. package/dist/components/ui/resizable.d.ts.map +1 -0
  185. package/dist/components/ui/resizable.js +30 -0
  186. package/dist/components/ui/resizable.js.map +1 -0
  187. package/dist/components/ui/scroll-area.d.ts +6 -0
  188. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  189. package/dist/components/ui/scroll-area.js +38 -0
  190. package/dist/components/ui/scroll-area.js.map +1 -0
  191. package/dist/components/ui/select.d.ts +16 -0
  192. package/dist/components/ui/select.d.ts.map +1 -0
  193. package/dist/components/ui/select.js +102 -0
  194. package/dist/components/ui/select.js.map +1 -0
  195. package/dist/components/ui/separator.d.ts +5 -0
  196. package/dist/components/ui/separator.d.ts.map +1 -0
  197. package/dist/components/ui/separator.js +17 -0
  198. package/dist/components/ui/separator.js.map +1 -0
  199. package/dist/components/ui/sheet.d.ts +15 -0
  200. package/dist/components/ui/sheet.d.ts.map +1 -0
  201. package/dist/components/ui/sheet.js +90 -0
  202. package/dist/components/ui/sheet.js.map +1 -0
  203. package/dist/components/ui/sidebar.d.ts +70 -0
  204. package/dist/components/ui/sidebar.d.ts.map +1 -0
  205. package/dist/components/ui/sidebar.js +380 -0
  206. package/dist/components/ui/sidebar.js.map +1 -0
  207. package/dist/components/ui/skeleton.d.ts +3 -0
  208. package/dist/components/ui/skeleton.d.ts.map +1 -0
  209. package/dist/components/ui/skeleton.js +13 -0
  210. package/dist/components/ui/skeleton.js.map +1 -0
  211. package/dist/components/ui/slider.d.ts +8 -0
  212. package/dist/components/ui/slider.d.ts.map +1 -0
  213. package/dist/components/ui/slider.js +40 -0
  214. package/dist/components/ui/slider.js.map +1 -0
  215. package/dist/components/ui/sonner.d.ts +14 -0
  216. package/dist/components/ui/sonner.d.ts.map +1 -0
  217. package/dist/components/ui/sonner.js +35 -0
  218. package/dist/components/ui/sonner.js.map +1 -0
  219. package/dist/components/ui/spinner.d.ts +3 -0
  220. package/dist/components/ui/spinner.d.ts.map +1 -0
  221. package/dist/components/ui/spinner.js +16 -0
  222. package/dist/components/ui/spinner.js.map +1 -0
  223. package/dist/components/ui/switch.d.ts +7 -0
  224. package/dist/components/ui/switch.d.ts.map +1 -0
  225. package/dist/components/ui/switch.js +22 -0
  226. package/dist/components/ui/switch.js.map +1 -0
  227. package/dist/components/ui/table.d.ts +11 -0
  228. package/dist/components/ui/table.d.ts.map +1 -0
  229. package/dist/components/ui/table.js +67 -0
  230. package/dist/components/ui/table.js.map +1 -0
  231. package/dist/components/ui/tabs.d.ts +12 -0
  232. package/dist/components/ui/tabs.d.ts.map +1 -0
  233. package/dist/components/ui/tabs.js +48 -0
  234. package/dist/components/ui/tabs.js.map +1 -0
  235. package/dist/components/ui/textarea.d.ts +10 -0
  236. package/dist/components/ui/textarea.d.ts.map +1 -0
  237. package/dist/components/ui/textarea.js +37 -0
  238. package/dist/components/ui/textarea.js.map +1 -0
  239. package/dist/components/ui/toggle-group.d.ts +11 -0
  240. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  241. package/dist/components/ui/toggle-group.js +53 -0
  242. package/dist/components/ui/toggle-group.js.map +1 -0
  243. package/dist/components/ui/toggle.d.ts +10 -0
  244. package/dist/components/ui/toggle.d.ts.map +1 -0
  245. package/dist/components/ui/toggle.js +37 -0
  246. package/dist/components/ui/toggle.js.map +1 -0
  247. package/dist/components/ui/tooltip.d.ts +8 -0
  248. package/dist/components/ui/tooltip.d.ts.map +1 -0
  249. package/dist/components/ui/tooltip.js +38 -0
  250. package/dist/components/ui/tooltip.js.map +1 -0
  251. package/dist/components/ui/trace.d.ts +19 -0
  252. package/dist/components/ui/trace.d.ts.map +1 -0
  253. package/dist/components/ui/trace.js +76 -0
  254. package/dist/components/ui/trace.js.map +1 -0
  255. package/dist/hooks/use-highlighted-code.d.ts +3 -0
  256. package/dist/hooks/use-highlighted-code.d.ts.map +1 -0
  257. package/dist/hooks/use-mobile.d.ts +2 -0
  258. package/dist/hooks/use-mobile.d.ts.map +1 -0
  259. package/dist/hooks/use-mobile.js +22 -0
  260. package/dist/hooks/use-mobile.js.map +1 -0
  261. package/dist/index.d.ts +74 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +67 -0
  264. package/dist/lib/get-placeholder.d.ts +6 -0
  265. package/dist/lib/get-placeholder.d.ts.map +1 -0
  266. package/dist/lib/get-placeholder.js +12 -0
  267. package/dist/lib/get-placeholder.js.map +1 -0
  268. package/dist/lib/highlighter.d.ts +10 -0
  269. package/dist/lib/highlighter.d.ts.map +1 -0
  270. package/dist/lib/utils.d.ts +9 -0
  271. package/dist/lib/utils.d.ts.map +1 -0
  272. package/dist/lib/utils.js +1 -0
  273. package/package.json +148 -3
  274. package/src/styles/base.css +70 -0
  275. package/src/styles/globals.css +33 -0
  276. package/src/styles/prose.css +105 -0
  277. package/src/styles/theme.css +108 -0
  278. package/src/styles/tokens.css +129 -0
  279. package/src/styles/utilities.css +57 -0
  280. package/src/styles/variants.css +649 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 konopskidev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,183 @@
1
- # Temporary Holding Version
1
+ # @konopskidev/ui
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ The konopskidev design system: every component the shadcn registry ships, rendered in the exact
4
+ visual language of the [konopskidev](../konopskidev) site, on Tailwind CSS v4 and React 19.
5
+
6
+ - **63 components** — the full `radix-nova` registry, plus the hand-written house primitives.
7
+ - **One style source** — tokens, theme, base layers and prose live in [`src/styles`](src/styles), so
8
+ every app imports the same stylesheet instead of re-deriving the palette.
9
+ - **Documented in Storybook 10** with real controls for every prop, and every story runs as a test
10
+ in a real browser (render + play function + axe accessibility checks).
11
+ - **Tested with Vitest** — behaviour in jsdom, markup and a11y in Chromium.
12
+
13
+ ## Install
14
+
15
+ ```bash
16
+ pnpm add @konopskidev/ui
17
+ ```
18
+
19
+ Peer dependencies: `react@^19`, `react-dom@^19`, `tailwindcss@^4`.
20
+
21
+ ## Wire up the styles
22
+
23
+ The package does **not** import `tailwindcss` itself — the app owns that, so its own `@theme`,
24
+ `@source` and `@utility` blocks keep working.
25
+
26
+ ```css
27
+ /* app.css */
28
+ @import 'tailwindcss';
29
+ @import '@konopskidev/ui/styles.css';
30
+
31
+ /* Let Tailwind see the classes the components use. */
32
+ @source '../node_modules/@konopskidev/ui/dist';
33
+ ```
34
+
35
+ Dark mode is the `.dark` class on any ancestor. The `--font-*` variables come from the app
36
+ (konopskidev sets them with `next/font`); every style has a sensible fallback.
37
+
38
+ ## Use it
39
+
40
+ ```tsx
41
+ import { Button, Card, CardContent, Dialog, DialogContent, DialogTitle } from '@konopskidev/ui';
42
+
43
+ export function PublishCard() {
44
+ return (
45
+ <Card>
46
+ <CardContent>
47
+ <Button variant="destructive">Publish</Button>
48
+ <Dialog>
49
+ <DialogContent>
50
+ <DialogTitle>Confirm</DialogTitle>
51
+ </DialogContent>
52
+ </Dialog>
53
+ </CardContent>
54
+ </Card>
55
+ );
56
+ }
57
+ ```
58
+
59
+ Deep imports keep a page from pulling in the whole library:
60
+
61
+ ```tsx
62
+ import { Button } from '@konopskidev/ui/components/button';
63
+ import { cn } from '@konopskidev/ui/lib/utils';
64
+ ```
65
+
66
+ Components that use hooks or state carry `'use client'`, so they render inside a React Server
67
+ Component tree.
68
+
69
+ ## The style contract
70
+
71
+ The registry ships its own look (rounded-xl surfaces, ring borders, h-8 controls). Everything in
72
+ this package is normalised onto the house scale, and [`scripts/apply-house-style.mjs`](scripts/apply-house-style.mjs)
73
+ is the single place that says how:
74
+
75
+ | Registry | konopskidev |
76
+ | ---------------------------------------- | --------------------------------- |
77
+ | `rounded-xl`, `rounded-lg`, `rounded-md` | `rounded-sm` |
78
+ | `rounded-t-xl`, `rounded-l-lg`, … | `rounded-t-sm`, `rounded-l-sm`, … |
79
+ | `ring-1 ring-foreground/10` borders | `border border-input` |
80
+ | `h-8` controls | `h-10` controls |
81
+ | `rounded-[2px]`, `rounded-[4px]` | `rounded-sm` |
82
+
83
+ It is idempotent — run `pnpm style` after pulling new registry components in, then `pnpm format`.
84
+
85
+ Conventions that are behaviour, not class strings:
86
+
87
+ - **Optional placeholders announce themselves.** `Input` and `Textarea` append ` (optional)` to a
88
+ placeholder unless the field is `required` — see [`get-placeholder.ts`](src/lib/get-placeholder.ts).
89
+ - **Slider names live on the thumbs**, where focus goes; pass `thumbLabels` for ranges.
90
+ - **`Item` rows are list items** inside `ItemGroup`; with `asChild` the consumer's element keeps its
91
+ own role.
92
+
93
+ ## Storybook
94
+
95
+ ```bash
96
+ pnpm dev # storybook on http://localhost:6006
97
+ pnpm build:storybook
98
+ ```
99
+
100
+ Every component has a `*.stories.tsx` with controls for each public prop, grouped by category
101
+ (Appearance / State / Behaviour / Accessibility / Styling), plus the compositions that are easy to
102
+ get wrong.
103
+
104
+ ## Tests
105
+
106
+ ```bash
107
+ pnpm test # jsdom behaviour tests
108
+ pnpm test:stories # every story rendered in Chromium, play functions + axe
109
+ pnpm test:coverage
110
+ ```
111
+
112
+ `pnpm test:stories` needs a browser: `pnpm exec playwright install chromium`.
113
+
114
+ Coverage thresholds are a ratchet — the floor sits where the suite is today (65 % overall, 90 % for
115
+ hooks, 70 % for lib), so a new component without tests fails the run instead of sliding past.
116
+
117
+ ## Quality gates
118
+
119
+ ```bash
120
+ pnpm verify # lint → tsc → tests → build → publint + attw
121
+ ```
122
+
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.
128
+
129
+ ## Adding a component
130
+
131
+ ```bash
132
+ pnpm dlx shadcn@latest add <component> # components.json is already configured
133
+ pnpm style # apply the house style
134
+ pnpm format
135
+ ```
136
+
137
+ Then write `src/components/ui/<component>.stories.tsx` and `<component>.test.tsx`, export it from
138
+ `src/components/ui/<component>.tsx` and regenerate the barrel with `pnpm barrel`.
139
+
140
+ ## Releasing
141
+
142
+ Releases run from **Actions → Release → Run workflow**. The only choice is the bump — `patch`,
143
+ `minor` or `major` — applied to the version in `package.json`. There is no free-text version field,
144
+ so a release is always the next version in sequence.
145
+
146
+ In order, the workflow:
147
+
148
+ 1. `pnpm version <bump> --no-git-tag-version` — rewrites `package.json` only, since the root version
149
+ is not recorded in `pnpm-lock.yaml`.
150
+ 2. `git-cliff --tag vX.Y.Z -o CHANGELOG.md` — regenerates the whole changelog from the tag history,
151
+ labelling everything merged since the previous tag with the new version. This runs before the
152
+ release commit exists, so a release never lists itself.
153
+ 3. Commits `package.json` and `CHANGELOG.md`, tags `vX.Y.Z`, and pushes both to `main`.
154
+ 4. `pnpm build` and `pnpm verify:package` — publint and attw gate the tarball before it can reach the
155
+ registry.
156
+ 5. `pnpm publish` with npm provenance, authenticated by trusted publishing (OIDC).
157
+ 6. Creates the GitHub release from the generated notes — last, so a failed publish never leaves a
158
+ release pointing at a version that is not on npm.
159
+
160
+ Ticking `dry_run` exercises steps 1–4 and prints the changelog plus the exact file list `npm pack`
161
+ would upload, without committing, tagging or publishing anything.
162
+
163
+ ### One-time setup
164
+
165
+ `@konopskidev/ui` needs an npm organisation named `konopskidev`, and npm only exposes the trusted
166
+ publisher settings for a package that already exists. So the first publish is one of:
167
+
168
+ - create the organisation, publish `0.1.0` by hand, then add a trusted publisher on npmjs.com
169
+ pointing at `misiekhardcore/konopskidevui` and the workflow file `release.yml`; or
170
+ - add a granular `NPM_TOKEN` repository secret and let the workflow do the first publish.
171
+
172
+ Every release after that needs no secrets. Provenance and trusted-publisher matching both key off
173
+ the `repository` field in `package.json`, which is why it is pinned to this repo.
174
+
175
+ ### When a publish fails
176
+
177
+ npm versions are immutable, but the run has already pushed the tag. To retry the same version,
178
+ delete the tag, revert the `chore: release vX.Y.Z` commit on `main`, and dispatch the same bump
179
+ again. Otherwise accept the gap and dispatch the next bump.
180
+
181
+ ## Licence
182
+
183
+ MIT.
@@ -0,0 +1,8 @@
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 };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,55 @@
1
+ import { cn } from "cn";
2
+ import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
3
+ import { Accordion } from "radix-ui";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/components/ui/accordion.tsx
7
+ function Accordion$1({ className, ...props }) {
8
+ return /* @__PURE__ */ jsx(Accordion.Root, {
9
+ "data-slot": "accordion",
10
+ className: cn("flex w-full flex-col", className),
11
+ ...props
12
+ });
13
+ }
14
+ function AccordionItem({ className, ...props }) {
15
+ return /* @__PURE__ */ jsx(Accordion.Item, {
16
+ "data-slot": "accordion-item",
17
+ className: cn("not-last:border-b", className),
18
+ ...props
19
+ });
20
+ }
21
+ function AccordionTrigger({ className, children, ...props }) {
22
+ return /* @__PURE__ */ jsx(Accordion.Header, {
23
+ className: "flex",
24
+ children: /* @__PURE__ */ jsxs(Accordion.Trigger, {
25
+ "data-slot": "accordion-trigger",
26
+ 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
+ ...props,
28
+ children: [
29
+ children,
30
+ /* @__PURE__ */ jsx(ChevronDownIcon, {
31
+ "data-slot": "accordion-trigger-icon",
32
+ className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
33
+ }),
34
+ /* @__PURE__ */ jsx(ChevronUpIcon, {
35
+ "data-slot": "accordion-trigger-icon",
36
+ className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
37
+ })
38
+ ]
39
+ })
40
+ });
41
+ }
42
+ function AccordionContent({ className, children, ...props }) {
43
+ return /* @__PURE__ */ jsx(Accordion.Content, {
44
+ "data-slot": "accordion-content",
45
+ className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up",
46
+ ...props,
47
+ children: /* @__PURE__ */ jsx("div", {
48
+ className: 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),
49
+ children
50
+ })
51
+ });
52
+ }
53
+ export { Accordion$1 as Accordion, AccordionContent, AccordionItem, AccordionTrigger };
54
+
55
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +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"}
@@ -0,0 +1,19 @@
1
+ import { AlertDialog as AlertDialogPrimitive } from 'radix-ui';
2
+ import * as React from 'react';
3
+ import { Button } from './button.js';
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, };
19
+ //# sourceMappingURL=alert-dialog.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,101 @@
1
+ import { Button } from "./button.js";
2
+ import { cn } from "cn";
3
+ import { AlertDialog } from "radix-ui";
4
+ import "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ // src/components/ui/alert-dialog.tsx
7
+ function AlertDialog$1({ ...props }) {
8
+ return /* @__PURE__ */ jsx(AlertDialog.Root, {
9
+ "data-slot": "alert-dialog",
10
+ ...props
11
+ });
12
+ }
13
+ function AlertDialogTrigger({ ...props }) {
14
+ return /* @__PURE__ */ jsx(AlertDialog.Trigger, {
15
+ "data-slot": "alert-dialog-trigger",
16
+ ...props
17
+ });
18
+ }
19
+ function AlertDialogPortal({ ...props }) {
20
+ return /* @__PURE__ */ jsx(AlertDialog.Portal, {
21
+ "data-slot": "alert-dialog-portal",
22
+ ...props
23
+ });
24
+ }
25
+ function AlertDialogOverlay({ className, ...props }) {
26
+ return /* @__PURE__ */ jsx(AlertDialog.Overlay, {
27
+ "data-slot": "alert-dialog-overlay",
28
+ 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
+ ...props
30
+ });
31
+ }
32
+ function AlertDialogContent({ className, size = "default", ...props }) {
33
+ return /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialog.Content, {
34
+ "data-slot": "alert-dialog-content",
35
+ "data-size": size,
36
+ 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),
37
+ ...props
38
+ })] });
39
+ }
40
+ function AlertDialogHeader({ className, ...props }) {
41
+ return /* @__PURE__ */ jsx("div", {
42
+ "data-slot": "alert-dialog-header",
43
+ className: 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),
44
+ ...props
45
+ });
46
+ }
47
+ function AlertDialogFooter({ className, ...props }) {
48
+ return /* @__PURE__ */ jsx("div", {
49
+ "data-slot": "alert-dialog-footer",
50
+ className: 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),
51
+ ...props
52
+ });
53
+ }
54
+ function AlertDialogMedia({ className, ...props }) {
55
+ return /* @__PURE__ */ jsx("div", {
56
+ "data-slot": "alert-dialog-media",
57
+ className: 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),
58
+ ...props
59
+ });
60
+ }
61
+ function AlertDialogTitle({ className, ...props }) {
62
+ return /* @__PURE__ */ jsx(AlertDialog.Title, {
63
+ "data-slot": "alert-dialog-title",
64
+ 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
+ ...props
66
+ });
67
+ }
68
+ function AlertDialogDescription({ className, ...props }) {
69
+ return /* @__PURE__ */ jsx(AlertDialog.Description, {
70
+ "data-slot": "alert-dialog-description",
71
+ className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
72
+ ...props
73
+ });
74
+ }
75
+ function AlertDialogAction({ className, variant = "default", size = "default", ...props }) {
76
+ return /* @__PURE__ */ jsx(Button, {
77
+ variant,
78
+ size,
79
+ asChild: true,
80
+ children: /* @__PURE__ */ jsx(AlertDialog.Action, {
81
+ "data-slot": "alert-dialog-action",
82
+ className: cn(className),
83
+ ...props
84
+ })
85
+ });
86
+ }
87
+ function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
88
+ return /* @__PURE__ */ jsx(Button, {
89
+ variant,
90
+ size,
91
+ asChild: true,
92
+ children: /* @__PURE__ */ jsx(AlertDialog.Cancel, {
93
+ "data-slot": "alert-dialog-cancel",
94
+ className: cn(className),
95
+ ...props
96
+ })
97
+ });
98
+ }
99
+ export { AlertDialog$1 as AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger };
100
+
101
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","names":["AlertDialog","AlertDialogPrimitive"],"sources":["../../../src/components/ui/alert-dialog.tsx"],"sourcesContent":["import { 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":";;;;;;AAMA,SAASA,cAAY,EAAE,GAAG,SAAiE;CACzF,OAAO,oBAACC,YAAqB,MAAtB;EAA2B,aAAU;EAAe,GAAI;CAAQ,CAAA;AACzE;AAEA,SAAS,mBAAmB,EAC1B,GAAG,SACyD;CAC5D,OAAO,oBAACA,YAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AACpF;AAEA,SAAS,kBAAkB,EAAE,GAAG,SAAmE;CACjG,OAAO,oBAACA,YAAqB,QAAtB;EAA6B,aAAU;EAAsB,GAAI;CAAQ,CAAA;AAClF;AAEA,SAAS,mBAAmB,EAC1B,WACA,GAAG,SACyD;CAC5D,OACE,oBAACA,YAAqB,SAAtB;EACE,aAAU;EACV,WAAW,GACT,iLACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,mBAAmB,EAC1B,WACA,OAAO,WACP,GAAG,SAGF;CACD,OACE,qBAAC,mBAAD,EAAA,UAAA,CACE,oBAAC,oBAAD,CAAqB,CAAA,GACrB,oBAACA,YAAqB,SAAtB;EACE,aAAU;EACV,aAAW;EACX,WAAW,GACT,yaACA,SACF;EACA,GAAI;CACL,CAAA,CACgB,EAAA,CAAA;AAEvB;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAsC;CAC/E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,sZACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EAAE,WAAW,GAAG,SAAsC;CAC/E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,iNACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAsC;CAC9E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,8KACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EACxB,WACA,GAAG,SACuD;CAC1D,OACE,oBAACA,YAAqB,OAAtB;EACE,aAAU;EACV,WAAW,GACT,qJACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,uBAAuB,EAC9B,WACA,GAAG,SAC6D;CAChE,OACE,oBAACA,YAAqB,aAAtB;EACE,aAAU;EACV,WAAW,GACT,kIACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,kBAAkB,EACzB,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAE4D;CAC/D,OACE,oBAAC,QAAD;EAAiB;EAAe;EAAM,SAAA;EACpC,UAAA,oBAACA,YAAqB,QAAtB;GACE,aAAU;GACV,WAAW,GAAG,SAAS;GACvB,GAAI;EACL,CAAA;CACK,CAAA;AAEZ;AAEA,SAAS,kBAAkB,EACzB,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAE4D;CAC/D,OACE,oBAAC,QAAD;EAAiB;EAAe;EAAM,SAAA;EACpC,UAAA,oBAACA,YAAqB,QAAtB;GACE,aAAU;GACV,WAAW,GAAG,SAAS;GACvB,GAAI;EACL,CAAA;CACK,CAAA;AAEZ"}
@@ -0,0 +1,11 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ declare const alertVariants: (props?: ({
4
+ variant?: "default" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Alert({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>): React.JSX.Element;
7
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
9
+ declare function AlertAction({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
10
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
11
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,QAAA,MAAM,aAAa;;8EAclB,CAAC;AAEF,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,qBASlE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWvE;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAIxE;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { cn } from "cn";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { cva } from "class-variance-authority";
5
+ // src/components/ui/alert.tsx
6
+ var alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-sm border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
7
+ variants: { variant: {
8
+ default: "bg-card text-card-foreground",
9
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
10
+ } },
11
+ defaultVariants: { variant: "default" }
12
+ });
13
+ function Alert({ className, variant, ...props }) {
14
+ return /* @__PURE__ */ jsx("div", {
15
+ "data-slot": "alert",
16
+ role: "alert",
17
+ className: cn(alertVariants({ variant }), className),
18
+ ...props
19
+ });
20
+ }
21
+ function AlertTitle({ className, ...props }) {
22
+ return /* @__PURE__ */ jsx("div", {
23
+ "data-slot": "alert-title",
24
+ className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
25
+ ...props
26
+ });
27
+ }
28
+ function AlertDescription({ className, ...props }) {
29
+ return /* @__PURE__ */ jsx("div", {
30
+ "data-slot": "alert-description",
31
+ className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
32
+ ...props
33
+ });
34
+ }
35
+ function AlertAction({ className, ...props }) {
36
+ return /* @__PURE__ */ jsx("div", {
37
+ "data-slot": "alert-action",
38
+ className: cn("absolute top-2 right-2", className),
39
+ ...props
40
+ });
41
+ }
42
+ export { Alert, AlertAction, AlertDescription, AlertTitle };
43
+
44
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../../src/components/ui/alert.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from 'cn';\nimport * as React from 'react';\n\nconst alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-sm border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: 'bg-card text-card-foreground',\n destructive:\n 'bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\n 'font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"alert-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 [&_p:not(:last-child)]:mb-4',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AlertAction({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div data-slot=\"alert-action\" className={cn('absolute top-2 right-2', className)} {...props} />\n );\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction };\n"],"mappings":";;;;;AAIA,IAAM,gBAAgB,IACpB,6TACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF;AAEA,SAAS,MAAM,EACb,WACA,SACA,GAAG,SACgE;CACnE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;CACxE,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,uHACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,iBAAiB,EAAE,WAAW,GAAG,SAAsC;CAC9E,OACE,oBAAC,OAAD;EACE,aAAU;EACV,WAAW,GACT,8JACA,SACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,SAAsC;CACzE,OACE,oBAAC,OAAD;EAAK,aAAU;EAAe,WAAW,GAAG,0BAA0B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAElG"}
@@ -0,0 +1,4 @@
1
+ import { AspectRatio as AspectRatioPrimitive } from 'radix-ui';
2
+ declare function AspectRatio({ ...props }: React.ComponentProps<typeof AspectRatioPrimitive.Root>): import("react").JSX.Element;
3
+ export { AspectRatio };
4
+ //# sourceMappingURL=aspect-ratio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.d.ts","sourceRoot":"","sources":["../../../src/components/ui/aspect-ratio.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE/D,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,+BAExF;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use client";
2
+ "use client";
3
+ import { AspectRatio } from "radix-ui";
4
+ import { jsx } from "react/jsx-runtime";
5
+ // src/components/ui/aspect-ratio.tsx
6
+ function AspectRatio$1({ ...props }) {
7
+ return /* @__PURE__ */ jsx(AspectRatio.Root, {
8
+ "data-slot": "aspect-ratio",
9
+ ...props
10
+ });
11
+ }
12
+ export { AspectRatio$1 as AspectRatio };
13
+
14
+ //# sourceMappingURL=aspect-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspect-ratio.js","names":["AspectRatio","AspectRatioPrimitive"],"sources":["../../../src/components/ui/aspect-ratio.tsx"],"sourcesContent":["'use client';\n\nimport { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\n\nfunction AspectRatio({ ...props }: React.ComponentProps<typeof AspectRatioPrimitive.Root>) {\n return <AspectRatioPrimitive.Root data-slot=\"aspect-ratio\" {...props} />;\n}\n\nexport { AspectRatio };\n"],"mappings":";;;;;AAKE,SAAO,cAAA,EAAA,GAACC,SAAAA;CAA0B,OAAU,oBAAA,YAAA,MAAA;EAAe,aAAI;EAAQ,GAAA;CACzE,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { type VariantProps } from 'class-variance-authority';
2
+ import * as React from 'react';
3
+ import { Button } from './button.js';
4
+ declare const attachmentVariants: (props?: ({
5
+ size?: "default" | "xs" | "sm" | null | undefined;
6
+ orientation?: "vertical" | "horizontal" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ declare function Attachment({ className, state, size, orientation, ...props }: React.ComponentProps<'div'> & VariantProps<typeof attachmentVariants> & {
9
+ state?: 'idle' | 'uploading' | 'processing' | 'error' | 'done';
10
+ }): React.JSX.Element;
11
+ declare const attachmentMediaVariants: (props?: ({
12
+ variant?: "image" | "icon" | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
+ declare function AttachmentMedia({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof attachmentMediaVariants>): React.JSX.Element;
15
+ declare function AttachmentContent({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
16
+ declare function AttachmentTitle({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
17
+ declare function AttachmentDescription({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
18
+ declare function AttachmentActions({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
19
+ declare function AttachmentAction({ className, variant, size, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
20
+ declare function AttachmentTrigger({ className, asChild, type, ...props }: React.ComponentProps<'button'> & {
21
+ asChild?: boolean;
22
+ }): React.JSX.Element;
23
+ declare function AttachmentGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
24
+ export { Attachment, AttachmentGroup, AttachmentMedia, AttachmentContent, AttachmentTitle, AttachmentDescription, AttachmentActions, AttachmentAction, AttachmentTrigger, };
25
+ //# sourceMappingURL=attachment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/components/ui/attachment.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,kBAAkB;;;8EAgBvB,CAAC;AAEF,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAc,EACd,IAAgB,EAChB,WAA0B,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAC5B,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;CAChE,qBAWF;AAED,QAAA,MAAM,uBAAuB;;8EAc5B,CAAC;AAEF,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,OAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAS5E;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAW7E;AAED,iBAAS,qBAAqB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAYnF;AAED,iBAAS,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW9E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,OAAO,EACP,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAUrC;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAe,EACf,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,qBAWA;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW5E;AAED,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,GAClB,CAAC"}