geoiq-frontend-ui-kit-v4 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/README.md +155 -0
  2. package/dist/components/ui/accordion/accordion.d.ts +7 -0
  3. package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
  4. package/dist/components/ui/accordion/accordion.js +55 -0
  5. package/dist/components/ui/accordion/accordion.js.map +1 -0
  6. package/dist/components/ui/accordion/index.d.ts +2 -0
  7. package/dist/components/ui/accordion/index.d.ts.map +1 -0
  8. package/dist/components/ui/alert/alert.d.ts +9 -0
  9. package/dist/components/ui/alert/alert.d.ts.map +1 -0
  10. package/dist/components/ui/alert/alert.js +39 -0
  11. package/dist/components/ui/alert/alert.js.map +1 -0
  12. package/dist/components/ui/alert/alert.styles.d.ts +4 -0
  13. package/dist/components/ui/alert/alert.styles.d.ts.map +1 -0
  14. package/dist/components/ui/alert/alert.styles.js +13 -0
  15. package/dist/components/ui/alert/alert.styles.js.map +1 -0
  16. package/dist/components/ui/alert/index.d.ts +2 -0
  17. package/dist/components/ui/alert/index.d.ts.map +1 -0
  18. package/dist/components/ui/alert-dialog/alert-dialog.d.ts +19 -0
  19. package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
  20. package/dist/components/ui/alert-dialog/alert-dialog.js +96 -0
  21. package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -0
  22. package/dist/components/ui/alert-dialog/index.d.ts +2 -0
  23. package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
  24. package/dist/components/ui/avatar/avatar.d.ts +12 -0
  25. package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
  26. package/dist/components/ui/avatar/avatar.js +52 -0
  27. package/dist/components/ui/avatar/avatar.js.map +1 -0
  28. package/dist/components/ui/avatar/index.d.ts +2 -0
  29. package/dist/components/ui/avatar/index.d.ts.map +1 -0
  30. package/dist/components/ui/badge/badge.d.ts +6 -0
  31. package/dist/components/ui/badge/badge.d.ts.map +1 -0
  32. package/dist/components/ui/badge/badge.js +21 -0
  33. package/dist/components/ui/badge/badge.js.map +1 -0
  34. package/dist/components/ui/badge/badge.styles.d.ts +4 -0
  35. package/dist/components/ui/badge/badge.styles.d.ts.map +1 -0
  36. package/dist/components/ui/badge/badge.styles.js +17 -0
  37. package/dist/components/ui/badge/badge.styles.js.map +1 -0
  38. package/dist/components/ui/badge/index.d.ts +2 -0
  39. package/dist/components/ui/badge/index.d.ts.map +1 -0
  40. package/dist/components/ui/breadcrumb/breadcrumb.d.ts +11 -0
  41. package/dist/components/ui/breadcrumb/breadcrumb.d.ts.map +1 -0
  42. package/dist/components/ui/breadcrumb/breadcrumb.js +74 -0
  43. package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
  44. package/dist/components/ui/breadcrumb/index.d.ts +2 -0
  45. package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
  46. package/dist/components/ui/button/button.d.ts +6 -0
  47. package/dist/components/ui/button/button.d.ts.map +1 -0
  48. package/dist/components/ui/button/button.js +21 -0
  49. package/dist/components/ui/button/button.js.map +1 -0
  50. package/dist/components/ui/button/button.styles.d.ts +5 -0
  51. package/dist/components/ui/button/button.styles.d.ts.map +1 -0
  52. package/dist/components/ui/button/button.styles.js +32 -0
  53. package/dist/components/ui/button/button.styles.js.map +1 -0
  54. package/dist/components/ui/button/index.d.ts +2 -0
  55. package/dist/components/ui/button/index.d.ts.map +1 -0
  56. package/dist/components/ui/calendar/calendar.d.ts +11 -0
  57. package/dist/components/ui/calendar/calendar.d.ts.map +1 -0
  58. package/dist/components/ui/calendar/calendar.js +96 -0
  59. package/dist/components/ui/calendar/calendar.js.map +1 -0
  60. package/dist/components/ui/calendar/index.d.ts +2 -0
  61. package/dist/components/ui/calendar/index.d.ts.map +1 -0
  62. package/dist/components/ui/carousel/carousel.d.ts +29 -0
  63. package/dist/components/ui/carousel/carousel.d.ts.map +1 -0
  64. package/dist/components/ui/carousel/carousel.js +112 -0
  65. package/dist/components/ui/carousel/carousel.js.map +1 -0
  66. package/dist/components/ui/carousel/index.d.ts +2 -0
  67. package/dist/components/ui/carousel/index.d.ts.map +1 -0
  68. package/dist/components/ui/checkbox/checkbox.d.ts +4 -0
  69. package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
  70. package/dist/components/ui/checkbox/checkbox.js +23 -0
  71. package/dist/components/ui/checkbox/checkbox.js.map +1 -0
  72. package/dist/components/ui/checkbox/index.d.ts +2 -0
  73. package/dist/components/ui/checkbox/index.d.ts.map +1 -0
  74. package/dist/components/ui/combobox/combobox.d.ts +25 -0
  75. package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
  76. package/dist/components/ui/combobox/combobox.js +165 -0
  77. package/dist/components/ui/combobox/combobox.js.map +1 -0
  78. package/dist/components/ui/combobox/index.d.ts +2 -0
  79. package/dist/components/ui/combobox/index.d.ts.map +1 -0
  80. package/dist/components/ui/command/command.d.ts +20 -0
  81. package/dist/components/ui/command/command.d.ts.map +1 -0
  82. package/dist/components/ui/command/command.js +91 -0
  83. package/dist/components/ui/command/command.js.map +1 -0
  84. package/dist/components/ui/command/index.d.ts +2 -0
  85. package/dist/components/ui/command/index.d.ts.map +1 -0
  86. package/dist/components/ui/dialog/dialog.d.ts +18 -0
  87. package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
  88. package/dist/components/ui/dialog/dialog.js +95 -0
  89. package/dist/components/ui/dialog/dialog.js.map +1 -0
  90. package/dist/components/ui/dialog/index.d.ts +2 -0
  91. package/dist/components/ui/dialog/index.d.ts.map +1 -0
  92. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +30 -0
  93. package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
  94. package/dist/components/ui/dropdown-menu/dropdown-menu.js +138 -0
  95. package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
  96. package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
  97. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
  98. package/dist/components/ui/hover-card/hover-card.d.ts +6 -0
  99. package/dist/components/ui/hover-card/hover-card.d.ts.map +1 -0
  100. package/dist/components/ui/hover-card/hover-card.js +37 -0
  101. package/dist/components/ui/hover-card/hover-card.js.map +1 -0
  102. package/dist/components/ui/hover-card/index.d.ts +2 -0
  103. package/dist/components/ui/hover-card/index.d.ts.map +1 -0
  104. package/dist/components/ui/input/index.d.ts +2 -0
  105. package/dist/components/ui/input/index.d.ts.map +1 -0
  106. package/dist/components/ui/input/input.d.ts +4 -0
  107. package/dist/components/ui/input/input.d.ts.map +1 -0
  108. package/dist/components/ui/input/input.js +17 -0
  109. package/dist/components/ui/input/input.js.map +1 -0
  110. package/dist/components/ui/input-group/index.d.ts +2 -0
  111. package/dist/components/ui/input-group/index.d.ts.map +1 -0
  112. package/dist/components/ui/input-group/input-group.d.ts +14 -0
  113. package/dist/components/ui/input-group/input-group.d.ts.map +1 -0
  114. package/dist/components/ui/input-group/input-group.js +62 -0
  115. package/dist/components/ui/input-group/input-group.js.map +1 -0
  116. package/dist/components/ui/input-group/input-group.styles.d.ts +7 -0
  117. package/dist/components/ui/input-group/input-group.styles.d.ts.map +1 -0
  118. package/dist/components/ui/input-group/input-group.styles.js +23 -0
  119. package/dist/components/ui/input-group/input-group.styles.js.map +1 -0
  120. package/dist/components/ui/input-otp/index.d.ts +2 -0
  121. package/dist/components/ui/input-otp/index.d.ts.map +1 -0
  122. package/dist/components/ui/input-otp/input-otp.d.ts +12 -0
  123. package/dist/components/ui/input-otp/input-otp.d.ts.map +1 -0
  124. package/dist/components/ui/input-otp/input-otp.js +50 -0
  125. package/dist/components/ui/input-otp/input-otp.js.map +1 -0
  126. package/dist/components/ui/pagination/index.d.ts +2 -0
  127. package/dist/components/ui/pagination/index.d.ts.map +1 -0
  128. package/dist/components/ui/pagination/pagination.d.ts +18 -0
  129. package/dist/components/ui/pagination/pagination.d.ts.map +1 -0
  130. package/dist/components/ui/pagination/pagination.js +82 -0
  131. package/dist/components/ui/pagination/pagination.js.map +1 -0
  132. package/dist/components/ui/popover/index.d.ts +2 -0
  133. package/dist/components/ui/popover/index.d.ts.map +1 -0
  134. package/dist/components/ui/popover/popover.d.ts +10 -0
  135. package/dist/components/ui/popover/popover.d.ts.map +1 -0
  136. package/dist/components/ui/popover/popover.js +56 -0
  137. package/dist/components/ui/popover/popover.js.map +1 -0
  138. package/dist/components/ui/progress/index.d.ts +2 -0
  139. package/dist/components/ui/progress/index.d.ts.map +1 -0
  140. package/dist/components/ui/progress/progress.d.ts +8 -0
  141. package/dist/components/ui/progress/progress.d.ts.map +1 -0
  142. package/dist/components/ui/progress/progress.js +45 -0
  143. package/dist/components/ui/progress/progress.js.map +1 -0
  144. package/dist/components/ui/radio-group/index.d.ts +2 -0
  145. package/dist/components/ui/radio-group/index.d.ts.map +1 -0
  146. package/dist/components/ui/radio-group/radio-group.d.ts +6 -0
  147. package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
  148. package/dist/components/ui/radio-group/radio-group.js +30 -0
  149. package/dist/components/ui/radio-group/radio-group.js.map +1 -0
  150. package/dist/components/ui/select/index.d.ts +2 -0
  151. package/dist/components/ui/select/index.d.ts.map +1 -0
  152. package/dist/components/ui/select/select.d.ts +16 -0
  153. package/dist/components/ui/select/select.d.ts.map +1 -0
  154. package/dist/components/ui/select/select.js +99 -0
  155. package/dist/components/ui/select/select.js.map +1 -0
  156. package/dist/components/ui/separator/index.d.ts +2 -0
  157. package/dist/components/ui/separator/index.d.ts.map +1 -0
  158. package/dist/components/ui/separator/separator.d.ts +4 -0
  159. package/dist/components/ui/separator/separator.d.ts.map +1 -0
  160. package/dist/components/ui/separator/separator.js +16 -0
  161. package/dist/components/ui/separator/separator.js.map +1 -0
  162. package/dist/components/ui/sheet/index.d.ts +2 -0
  163. package/dist/components/ui/sheet/index.d.ts.map +1 -0
  164. package/dist/components/ui/sheet/sheet.d.ts +15 -0
  165. package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
  166. package/dist/components/ui/sheet/sheet.js +90 -0
  167. package/dist/components/ui/sheet/sheet.js.map +1 -0
  168. package/dist/components/ui/sidebar/index.d.ts +2 -0
  169. package/dist/components/ui/sidebar/index.d.ts.map +1 -0
  170. package/dist/components/ui/sidebar/sidebar.d.ts +61 -0
  171. package/dist/components/ui/sidebar/sidebar.d.ts.map +1 -0
  172. package/dist/components/ui/sidebar/sidebar.js +343 -0
  173. package/dist/components/ui/sidebar/sidebar.js.map +1 -0
  174. package/dist/components/ui/sidebar/sidebar.styles.d.ts +5 -0
  175. package/dist/components/ui/sidebar/sidebar.styles.d.ts.map +1 -0
  176. package/dist/components/ui/sidebar/sidebar.styles.js +23 -0
  177. package/dist/components/ui/sidebar/sidebar.styles.js.map +1 -0
  178. package/dist/components/ui/skeleton/index.d.ts +2 -0
  179. package/dist/components/ui/skeleton/index.d.ts.map +1 -0
  180. package/dist/components/ui/skeleton/skeleton.d.ts +3 -0
  181. package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
  182. package/dist/components/ui/skeleton/skeleton.js +14 -0
  183. package/dist/components/ui/skeleton/skeleton.js.map +1 -0
  184. package/dist/components/ui/slider/index.d.ts +2 -0
  185. package/dist/components/ui/slider/index.d.ts.map +1 -0
  186. package/dist/components/ui/slider/slider.d.ts +4 -0
  187. package/dist/components/ui/slider/slider.d.ts.map +1 -0
  188. package/dist/components/ui/slider/slider.js +35 -0
  189. package/dist/components/ui/slider/slider.js.map +1 -0
  190. package/dist/components/ui/sonner/index.d.ts +2 -0
  191. package/dist/components/ui/sonner/index.d.ts.map +1 -0
  192. package/dist/components/ui/sonner/sonner.d.ts +4 -0
  193. package/dist/components/ui/sonner/sonner.d.ts.map +1 -0
  194. package/dist/components/ui/sonner/sonner.js +31 -0
  195. package/dist/components/ui/sonner/sonner.js.map +1 -0
  196. package/dist/components/ui/spinner/index.d.ts +2 -0
  197. package/dist/components/ui/spinner/index.d.ts.map +1 -0
  198. package/dist/components/ui/spinner/spinner.d.ts +3 -0
  199. package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
  200. package/dist/components/ui/spinner/spinner.js +17 -0
  201. package/dist/components/ui/spinner/spinner.js.map +1 -0
  202. package/dist/components/ui/switch/index.d.ts +2 -0
  203. package/dist/components/ui/switch/index.d.ts.map +1 -0
  204. package/dist/components/ui/switch/switch.d.ts +6 -0
  205. package/dist/components/ui/switch/switch.d.ts.map +1 -0
  206. package/dist/components/ui/switch/switch.js +20 -0
  207. package/dist/components/ui/switch/switch.js.map +1 -0
  208. package/dist/components/ui/table/index.d.ts +2 -0
  209. package/dist/components/ui/table/index.d.ts.map +1 -0
  210. package/dist/components/ui/table/table.d.ts +11 -0
  211. package/dist/components/ui/table/table.d.ts.map +1 -0
  212. package/dist/components/ui/table/table.js +70 -0
  213. package/dist/components/ui/table/table.js.map +1 -0
  214. package/dist/components/ui/tabs/index.d.ts +2 -0
  215. package/dist/components/ui/tabs/index.d.ts.map +1 -0
  216. package/dist/components/ui/tabs/tabs.d.ts +9 -0
  217. package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
  218. package/dist/components/ui/tabs/tabs.js +42 -0
  219. package/dist/components/ui/tabs/tabs.js.map +1 -0
  220. package/dist/components/ui/tabs/tabs.styles.d.ts +4 -0
  221. package/dist/components/ui/tabs/tabs.styles.d.ts.map +1 -0
  222. package/dist/components/ui/tabs/tabs.styles.js +13 -0
  223. package/dist/components/ui/tabs/tabs.styles.js.map +1 -0
  224. package/dist/components/ui/textarea/index.d.ts +2 -0
  225. package/dist/components/ui/textarea/index.d.ts.map +1 -0
  226. package/dist/components/ui/textarea/textarea.d.ts +4 -0
  227. package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
  228. package/dist/components/ui/textarea/textarea.js +15 -0
  229. package/dist/components/ui/textarea/textarea.js.map +1 -0
  230. package/dist/components/ui/tooltip/index.d.ts +2 -0
  231. package/dist/components/ui/tooltip/index.d.ts.map +1 -0
  232. package/dist/components/ui/tooltip/tooltip.d.ts +7 -0
  233. package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
  234. package/dist/components/ui/tooltip/tooltip.js +44 -0
  235. package/dist/components/ui/tooltip/tooltip.js.map +1 -0
  236. package/dist/hooks/use-mobile.d.ts +2 -0
  237. package/dist/hooks/use-mobile.d.ts.map +1 -0
  238. package/dist/hooks/use-mobile.js +16 -0
  239. package/dist/hooks/use-mobile.js.map +1 -0
  240. package/dist/index.d.ts +37 -0
  241. package/dist/index.d.ts.map +1 -0
  242. package/dist/index.js +41 -0
  243. package/dist/styles.css +2 -0
  244. package/package.json +92 -0
package/README.md ADDED
@@ -0,0 +1,155 @@
1
+ # geoiq-frontend-ui-kit-v4
2
+
3
+ A small, real npm package: shadcn's own registry components — pulled
4
+ verbatim via `npx shadcn add`, no adaptation, no renamed props, no altered
5
+ class strings — re-exported as-is, themed through one CSS file a consumer
6
+ can use as shipped or override completely with their own theme.
7
+
8
+ Built on `@base-ui/react` (not Radix), React 19, Tailwind v4.
9
+
10
+ ## Components
11
+
12
+ 33 so far, all real shadcn registry source (style `base-nova`):
13
+
14
+ Button, Input, Textarea, InputGroup, Select, Accordion, Avatar, Badge,
15
+ Checkbox, Progress, RadioGroup, Skeleton, Switch, Tooltip, Alert,
16
+ Breadcrumb, DropdownMenu, Pagination, Slider, Tabs, Toaster (sonner),
17
+ Combobox, AlertDialog, Dialog, Sheet, Sidebar, Calendar, Carousel, Command,
18
+ HoverCard, InputOTP, Popover, Spinner, Table — plus each one's real
19
+ sub-component exports (see `src/index.ts` for the full list).
20
+
21
+ ## Install
22
+
23
+ ```bash
24
+ npm install geoiq-frontend-ui-kit-v4
25
+ ```
26
+
27
+ Import the theme once, at your app's entry point:
28
+
29
+ ```tsx
30
+ import 'geoiq-frontend-ui-kit-v4/styles.css'
31
+ ```
32
+
33
+ Then use components anywhere:
34
+
35
+ ```tsx
36
+ import {
37
+ Button,
38
+ Select,
39
+ SelectTrigger,
40
+ SelectValue,
41
+ SelectContent,
42
+ SelectItem,
43
+ } from 'geoiq-frontend-ui-kit-v4'
44
+ ```
45
+
46
+ Skip the `styles.css` import and components render as plain unstyled HTML
47
+ (the classes reference CSS variables that simply won't exist) — there's no
48
+ separate "default" theme baked in beyond GeoIQ's own.
49
+
50
+ ## Layout
51
+
52
+ ```
53
+ src/
54
+ index.ts the package barrel — every public export
55
+ index.css Tailwind v4 entry point (imports styles/theme.css)
56
+ styles/theme.css the one theme: primitive ramps → the shadcn semantic contract → the @theme bridge
57
+ hooks/ shared hooks a component needs (currently just use-mobile, for Sidebar)
58
+ components/ui/<name>/ one folder per component:
59
+ <name>.tsx the component itself
60
+ <name>.styles.ts only if the component has a cva(...) variant definition — see below
61
+ index.ts re-exports the above; lets `@/components/ui/<name>` resolve unchanged
62
+ .storybook/, stories/ visual verification — npm run storybook, :6006
63
+ components.json shadcn CLI config — pulls the *next* component (see below)
64
+ scripts/sync-component.mjs checks one already-installed component against shadcn's current source
65
+ ```
66
+
67
+ **Why folders, and why only 6 have a `.styles.ts`**: shadcn ships each
68
+ component as one flat file. Splitting the `cva(...)` variant definitions
69
+ out into their own file (when a component has one — currently Button,
70
+ Badge, Alert, InputGroup, Sidebar, Tabs) keeps a large component's actual
71
+ JSX logic separate from its class-string table, which is most of what
72
+ makes a file like `sidebar.tsx` (700+ lines) hard to scan. A component
73
+ with no variants (Input, Skeleton, Separator, ...) just gets a plain
74
+ `<name>/<name>.tsx` — nothing to split. Every import path
75
+ (`@/components/ui/button`, `./components/ui/select`, ...) keeps working
76
+ exactly as before the restructure, because a directory import resolves to
77
+ its `index.ts` automatically — nothing outside these folders had to change.
78
+
79
+ ## Working on this repo
80
+
81
+ ```bash
82
+ npm install
83
+ npm run typecheck
84
+ npm run lint
85
+ npm run build # dist/ — what actually gets published
86
+ npm run storybook # :6006 — visual check
87
+ ```
88
+
89
+ ## Adding a new component
90
+
91
+ ```bash
92
+ npx shadcn add <name>
93
+ ```
94
+
95
+ That drops the real file at `src/components/ui/<name>.tsx` (flat — the CLI
96
+ always targets this path; it doesn't know about our folder convention).
97
+ From there:
98
+
99
+ 1. `mkdir src/components/ui/<name>` and move the file in.
100
+ 2. If it defines a `cva(...)` variant (check with
101
+ `grep -l "= cva(" src/components/ui/<name>/<name>.tsx`), extract that
102
+ block into `<name>.styles.ts`, export it, and import it back into
103
+ `<name>.tsx` — nothing else in the file changes.
104
+ 3. Add `export * from './<name>'` as that folder's `index.ts`.
105
+ 4. Re-export whatever the component exports from `src/index.ts`.
106
+ 5. Run `npm run typecheck && npm run lint && npm run build` — verify,
107
+ don't assume it's wired correctly.
108
+ 6. Add a story in `stories/` if it's worth a visual check.
109
+
110
+ No adaptation of props/variants/class strings — if shadcn's real API is
111
+ missing something an old design wanted, that's a known, accepted gap, not
112
+ something to quietly patch back in.
113
+
114
+ ## Updating a component when shadcn/Base UI changes it
115
+
116
+ There's no single command for this — the CLI's `add --overwrite` always
117
+ targets the flat path, so re-running it against an already-foldered
118
+ component lands a fresh copy _alongside_ the folder, not inside it. Use
119
+ the helper script, which does the mechanical parts and leaves the actual
120
+ merge to you:
121
+
122
+ ```bash
123
+ node scripts/sync-component.mjs <name>
124
+ ```
125
+
126
+ This pulls the current real source, formats it with our own Prettier
127
+ config (raw CLI output is unformatted — diffing it against our formatted
128
+ folder version otherwise shows a "change" on every single line purely from
129
+ quote-style, confirmed directly by re-pulling a component right after
130
+ installing it and seeing a ~90-line diff that was 100% formatting, zero
131
+ real content), then prints a real diff against your folder's `<name>.tsx`.
132
+
133
+ - **No diff** → already current; the script deletes the stray pulled file
134
+ for you.
135
+ - **Real diff** → review it, manually re-apply the actual change into
136
+ `<name>.tsx` / `<name>.styles.ts`, then delete the pulled flat file
137
+ (the script tells you the exact path) and re-run
138
+ `typecheck && lint && build`. For one of the 6 split components, expect
139
+ the diff to show the whole `cva(...)` block as changed even when it
140
+ isn't — that's the inline-vs-imported structural difference, not a real
141
+ edit; the script's output calls this out explicitly.
142
+
143
+ Deliberately no auto-merge — a UI component's logic isn't something to
144
+ blindly patch from a diff.
145
+
146
+ ## Publishing
147
+
148
+ ```bash
149
+ npm run build
150
+ npm publish
151
+ ```
152
+
153
+ `prepublishOnly` runs lint + build automatically first. `npm publish` needs
154
+ a one-time browser OTP approval (standard npm 2FA-on-publish) — run it in
155
+ an interactive terminal, not a background process.
@@ -0,0 +1,7 @@
1
+ import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';
2
+ declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react").JSX.Element;
3
+ declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react").JSX.Element;
4
+ declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react").JSX.Element;
5
+ declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react").JSX.Element;
6
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
7
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/accordion/accordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAI1E,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQxE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,+BAQ5E;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,OAAO,CAAC,KAAK,+BAuBlC;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,+BAiBhC;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { cn as e } from "cn";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import { ChevronDownIcon as r, ChevronUpIcon as i } from "lucide-react";
4
+ import { Accordion as a } from "@base-ui/react/accordion";
5
+ //#region src/components/ui/accordion/accordion.tsx
6
+ function o({ className: n, ...r }) {
7
+ return /* @__PURE__ */ t(a.Root, {
8
+ "data-slot": "accordion",
9
+ className: e("flex w-full flex-col", n),
10
+ ...r
11
+ });
12
+ }
13
+ function s({ className: n, ...r }) {
14
+ return /* @__PURE__ */ t(a.Item, {
15
+ "data-slot": "accordion-item",
16
+ className: e("not-last:border-b", n),
17
+ ...r
18
+ });
19
+ }
20
+ function c({ className: o, children: s, ...c }) {
21
+ return /* @__PURE__ */ t(a.Header, {
22
+ className: "flex",
23
+ children: /* @__PURE__ */ n(a.Trigger, {
24
+ "data-slot": "accordion-trigger",
25
+ className: e("group/accordion-trigger focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-3 aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4", o),
26
+ ...c,
27
+ children: [
28
+ s,
29
+ /* @__PURE__ */ t(r, {
30
+ "data-slot": "accordion-trigger-icon",
31
+ className: "pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden"
32
+ }),
33
+ /* @__PURE__ */ t(i, {
34
+ "data-slot": "accordion-trigger-icon",
35
+ className: "pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline"
36
+ })
37
+ ]
38
+ })
39
+ });
40
+ }
41
+ function l({ className: n, children: r, ...i }) {
42
+ return /* @__PURE__ */ t(a.Panel, {
43
+ "data-slot": "accordion-content",
44
+ className: "data-open:animate-accordion-down data-closed:animate-accordion-up overflow-hidden text-sm",
45
+ ...i,
46
+ children: /* @__PURE__ */ t("div", {
47
+ className: e("[&_a]:hover:text-foreground h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", n),
48
+ children: r
49
+ })
50
+ });
51
+ }
52
+ //#endregion
53
+ export { o as Accordion, l as AccordionContent, s as AccordionItem, c as AccordionTrigger };
54
+
55
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.js","names":[],"sources":["../../../../src/components/ui/accordion/accordion.tsx"],"sourcesContent":["import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion'\nimport { cn } from 'cn'\nimport { ChevronDownIcon, ChevronUpIcon } from 'lucide-react'\n\nfunction Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {\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({ className, ...props }: AccordionPrimitive.Item.Props) {\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}: AccordionPrimitive.Trigger.Props) {\n return (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n data-slot=\"accordion-trigger\"\n className={cn(\n 'group/accordion-trigger focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:after:border-ring **:data-[slot=accordion-trigger-icon]:text-muted-foreground relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-3 aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4',\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}: AccordionPrimitive.Panel.Props) {\n return (\n <AccordionPrimitive.Panel\n data-slot=\"accordion-content\"\n className=\"data-open:animate-accordion-down data-closed:animate-accordion-up overflow-hidden text-sm\"\n {...props}\n >\n <div\n className={cn(\n '[&_a]:hover:text-foreground h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4',\n className,\n )}\n >\n {children}\n </div>\n </AccordionPrimitive.Panel>\n )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"],"mappings":";;;;;AAIA,SAAS,EAAU,EAAE,cAAW,GAAG,KAAwC;CACzE,OACE,kBAAC,EAAmB,MAApB;EACE,aAAU;EACV,WAAW,EAAG,wBAAwB,CAAS;EAC/C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAc,EAAE,cAAW,GAAG,KAAwC;CAC7E,OACE,kBAAC,EAAmB,MAApB;EACE,aAAU;EACV,WAAW,EAAG,qBAAqB,CAAS;EAC5C,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,cACA,aACA,GAAG,KACgC;CACnC,OACE,kBAAC,EAAmB,QAApB;EAA2B,WAAU;EACnC,UAAA,kBAAC,EAAmB,SAApB;GACE,aAAU;GACV,WAAW,EACT,8fACA,CACF;GACA,GAAI;GANN,UAAA;IAQG;IACD,kBAAC,GAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;IACD,kBAAC,GAAD;KACE,aAAU;KACV,WAAU;IACX,CAAA;GACyB;;CACH,CAAA;AAE/B;AAEA,SAAS,EAAiB,EACxB,cACA,aACA,GAAG,KAC8B;CACjC,OACE,kBAAC,EAAmB,OAApB;EACE,aAAU;EACV,WAAU;EACV,GAAI;EAEJ,UAAA,kBAAC,OAAD;GACE,WAAW,EACT,2LACA,CACF;GAEC;EACE,CAAA;CACmB,CAAA;AAE9B"}
@@ -0,0 +1,2 @@
1
+ export * from './accordion';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/accordion/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -0,0 +1,9 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { alertVariants } from './alert.styles';
3
+ import * as React from 'react';
4
+ declare function Alert({ className, variant, ...props }: React.ComponentProps<'div'> & VariantProps<typeof alertVariants>): React.JSX.Element;
5
+ declare function AlertTitle({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
6
+ declare function AlertDescription({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
7
+ declare function AlertAction({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
8
+ export { Alert, AlertTitle, AlertDescription, AlertAction };
9
+ //# sourceMappingURL=alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert/alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,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,qBAQxE;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { alertVariants as e } from "./alert.styles.js";
2
+ import "class-variance-authority";
3
+ import { cn as t } from "cn";
4
+ import { jsx as n } from "react/jsx-runtime";
5
+ import "react";
6
+ //#region src/components/ui/alert/alert.tsx
7
+ function r({ className: r, variant: i, ...a }) {
8
+ return /* @__PURE__ */ n("div", {
9
+ "data-slot": "alert",
10
+ role: "alert",
11
+ className: t(e({ variant: i }), r),
12
+ ...a
13
+ });
14
+ }
15
+ function i({ className: e, ...r }) {
16
+ return /* @__PURE__ */ n("div", {
17
+ "data-slot": "alert-title",
18
+ className: t("[&_a]:hover:text-foreground font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3", e),
19
+ ...r
20
+ });
21
+ }
22
+ function a({ className: e, ...r }) {
23
+ return /* @__PURE__ */ n("div", {
24
+ "data-slot": "alert-description",
25
+ className: t("text-muted-foreground [&_a]:hover:text-foreground text-sm text-balance md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_p:not(:last-child)]:mb-4", e),
26
+ ...r
27
+ });
28
+ }
29
+ function o({ className: e, ...r }) {
30
+ return /* @__PURE__ */ n("div", {
31
+ "data-slot": "alert-action",
32
+ className: t("absolute top-2 right-2", e),
33
+ ...r
34
+ });
35
+ }
36
+ //#endregion
37
+ export { r as Alert, o as AlertAction, a as AlertDescription, i as AlertTitle };
38
+
39
+ //# sourceMappingURL=alert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.js","names":[],"sources":["../../../../src/components/ui/alert/alert.tsx"],"sourcesContent":["import * as React from 'react'\nimport { type VariantProps } from 'class-variance-authority'\nimport { cn } from 'cn'\nimport { alertVariants } from './alert.styles'\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 '[&_a]:hover:text-foreground font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3',\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-muted-foreground [&_a]:hover:text-foreground text-sm text-balance md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_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\n data-slot=\"alert-action\"\n className={cn('absolute top-2 right-2', className)}\n {...props}\n />\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, AlertAction }\n"],"mappings":";;;;;;AAKA,SAAS,EAAM,EACb,cACA,YACA,GAAG,KACgE;CACnE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,MAAK;EACL,WAAW,EAAG,EAAc,EAAE,WAAQ,CAAC,GAAG,CAAS;EACnD,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAW,EAAE,cAAW,GAAG,KAAsC;CACxE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,uHACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EAAE,cAAW,GAAG,KAAsC;CAC9E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,8JACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAsC;CACzE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,0BAA0B,CAAS;EACjD,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,4 @@
1
+ export declare const alertVariants: (props?: ({
2
+ variant?: "default" | "destructive" | null | undefined;
3
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
4
+ //# sourceMappingURL=alert.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert/alert.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa;;8EAczB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { cva as e } from "class-variance-authority";
2
+ //#region src/components/ui/alert/alert.styles.ts
3
+ var t = e("group/alert relative grid w-full gap-0.5 rounded-lg 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", {
4
+ variants: { variant: {
5
+ default: "bg-card text-card-foreground",
6
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
7
+ } },
8
+ defaultVariants: { variant: "default" }
9
+ });
10
+ //#endregion
11
+ export { t as alertVariants };
12
+
13
+ //# sourceMappingURL=alert.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert.styles.js","names":[],"sources":["../../../../src/components/ui/alert/alert.styles.ts"],"sourcesContent":["import { cva } from 'class-variance-authority'\n\nexport const alertVariants = cva(\n \"group/alert relative grid w-full gap-0.5 rounded-lg 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"],"mappings":";;AAEA,IAAa,IAAgB,EAC3B,6TACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,aACE;CACJ,EACF;CACA,iBAAiB,EACf,SAAS,UACX;AACF,CACF"}
@@ -0,0 +1,2 @@
1
+ export * from './alert';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog';
2
+ import { Button } from '../button';
3
+ import * as React from 'react';
4
+ declare function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props): React.JSX.Element;
5
+ declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): React.JSX.Element;
6
+ declare function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props): React.JSX.Element;
7
+ declare function AlertDialogOverlay({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): React.JSX.Element;
8
+ declare function AlertDialogContent({ className, size, ...props }: AlertDialogPrimitive.Popup.Props & {
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, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
17
+ declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialogPrimitive.Close.Props & 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/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAGjF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAE/C,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,IAAI,CAAC,KAAK,qBAEjE;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,OAAO,CAAC,KAAK,qBAE3E;AAED,iBAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,qBAEzE;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,qBAWrC;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,GAAG;IACpC,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CACxB,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,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,qBAEtF;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,GACjC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,qBAS9D;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,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { Button as e } from "../button/button.js";
2
+ import { cn as t } from "cn";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import "react";
5
+ import { AlertDialog as i } from "@base-ui/react/alert-dialog";
6
+ //#region src/components/ui/alert-dialog/alert-dialog.tsx
7
+ function a({ ...e }) {
8
+ return /* @__PURE__ */ n(i.Root, {
9
+ "data-slot": "alert-dialog",
10
+ ...e
11
+ });
12
+ }
13
+ function o({ ...e }) {
14
+ return /* @__PURE__ */ n(i.Trigger, {
15
+ "data-slot": "alert-dialog-trigger",
16
+ ...e
17
+ });
18
+ }
19
+ function s({ ...e }) {
20
+ return /* @__PURE__ */ n(i.Portal, {
21
+ "data-slot": "alert-dialog-portal",
22
+ ...e
23
+ });
24
+ }
25
+ function c({ className: e, ...r }) {
26
+ return /* @__PURE__ */ n(i.Backdrop, {
27
+ "data-slot": "alert-dialog-overlay",
28
+ className: t("data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs", e),
29
+ ...r
30
+ });
31
+ }
32
+ function l({ className: e, size: a = "default", ...o }) {
33
+ return /* @__PURE__ */ r(s, { children: [/* @__PURE__ */ n(c, {}), /* @__PURE__ */ n(i.Popup, {
34
+ "data-slot": "alert-dialog-content",
35
+ "data-size": a,
36
+ className: t("group/alert-dialog-content bg-popover text-popover-foreground ring-foreground/10 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 fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 ring-1 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm", e),
37
+ ...o
38
+ })] });
39
+ }
40
+ function u({ className: e, ...r }) {
41
+ return /* @__PURE__ */ n("div", {
42
+ "data-slot": "alert-dialog-header",
43
+ className: t("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]", e),
44
+ ...r
45
+ });
46
+ }
47
+ function d({ className: e, ...r }) {
48
+ return /* @__PURE__ */ n("div", {
49
+ "data-slot": "alert-dialog-footer",
50
+ className: t("bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t 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", e),
51
+ ...r
52
+ });
53
+ }
54
+ function f({ className: e, ...r }) {
55
+ return /* @__PURE__ */ n("div", {
56
+ "data-slot": "alert-dialog-media",
57
+ className: t("bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-6", e),
58
+ ...r
59
+ });
60
+ }
61
+ function p({ className: e, ...r }) {
62
+ return /* @__PURE__ */ n(i.Title, {
63
+ "data-slot": "alert-dialog-title",
64
+ className: t("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", e),
65
+ ...r
66
+ });
67
+ }
68
+ function m({ className: e, ...r }) {
69
+ return /* @__PURE__ */ n(i.Description, {
70
+ "data-slot": "alert-dialog-description",
71
+ className: t("text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3", e),
72
+ ...r
73
+ });
74
+ }
75
+ function h({ className: r, ...i }) {
76
+ return /* @__PURE__ */ n(e, {
77
+ "data-slot": "alert-dialog-action",
78
+ className: t(r),
79
+ ...i
80
+ });
81
+ }
82
+ function g({ className: r, variant: a = "outline", size: o = "default", ...s }) {
83
+ return /* @__PURE__ */ n(i.Close, {
84
+ "data-slot": "alert-dialog-cancel",
85
+ className: t(r),
86
+ render: /* @__PURE__ */ n(e, {
87
+ variant: a,
88
+ size: o
89
+ }),
90
+ ...s
91
+ });
92
+ }
93
+ //#endregion
94
+ export { a as AlertDialog, h as AlertDialogAction, g as AlertDialogCancel, l as AlertDialogContent, m as AlertDialogDescription, d as AlertDialogFooter, u as AlertDialogHeader, f as AlertDialogMedia, c as AlertDialogOverlay, s as AlertDialogPortal, p as AlertDialogTitle, o as AlertDialogTrigger };
95
+
96
+ //# sourceMappingURL=alert-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.js","names":[],"sources":["../../../../src/components/ui/alert-dialog/alert-dialog.tsx"],"sourcesContent":["import * as React from 'react'\nimport { AlertDialog as AlertDialogPrimitive } from '@base-ui/react/alert-dialog'\nimport { cn } from 'cn'\n\nimport { Button } from '@/components/ui/button'\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n 'data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: 'default' | 'sm'\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n 'group/alert-dialog-content bg-popover text-popover-foreground ring-foreground/10 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 fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl p-4 ring-1 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm',\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 'bg-muted/50 -mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t 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 \"bg-muted mb-2 inline-flex size-10 items-center justify-center rounded-md 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-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>) {\n return <Button data-slot=\"alert-dialog-action\" className={cn(className)} {...props} />\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'>) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\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,SAAS,EAAY,EAAE,GAAG,KAA0C;CAClE,OAAO,kBAAC,EAAqB,MAAtB;EAA2B,aAAU;EAAe,GAAI;CAAQ,CAAA;AACzE;AAEA,SAAS,EAAmB,EAAE,GAAG,KAA6C;CAC5E,OAAO,kBAAC,EAAqB,SAAtB;EAA8B,aAAU;EAAuB,GAAI;CAAQ,CAAA;AACpF;AAEA,SAAS,EAAkB,EAAE,GAAG,KAA4C;CAC1E,OAAO,kBAAC,EAAqB,QAAtB;EAA6B,aAAU;EAAsB,GAAI;CAAQ,CAAA;AAClF;AAEA,SAAS,EAAmB,EAC1B,cACA,GAAG,KACmC;CACtC,OACE,kBAAC,EAAqB,UAAtB;EACE,aAAU;EACV,WAAW,EACT,yLACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAmB,EAC1B,cACA,UAAO,WACP,GAAG,KAGF;CACD,OACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,CAAqB,CAAA,GACrB,kBAAC,EAAqB,OAAtB;EACE,aAAU;EACV,aAAW;EACX,WAAW,EACT,8aACA,CACF;EACA,GAAI;CACL,CAAA,CACgB,EAAA,CAAA;AAEvB;AAEA,SAAS,EAAkB,EAAE,cAAW,GAAG,KAAsC;CAC/E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,sZACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAkB,EAAE,cAAW,GAAG,KAAsC;CAC/E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,iNACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EAAE,cAAW,GAAG,KAAsC;CAC9E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,8KACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EACxB,cACA,GAAG,KACuD;CAC1D,OACE,kBAAC,EAAqB,OAAtB;EACE,aAAU;EACV,WAAW,EACT,qJACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAuB,EAC9B,cACA,GAAG,KAC6D;CAChE,OACE,kBAAC,EAAqB,aAAtB;EACE,aAAU;EACV,WAAW,EACT,kIACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAkB,EAAE,cAAW,GAAG,KAA8C;CACvF,OAAO,kBAAC,GAAD;EAAQ,aAAU;EAAsB,WAAW,EAAG,CAAS;EAAG,GAAI;CAAQ,CAAA;AACvF;AAEA,SAAS,EAAkB,EACzB,cACA,aAAU,WACV,UAAO,WACP,GAAG,KAE4D;CAC/D,OACE,kBAAC,EAAqB,OAAtB;EACE,aAAU;EACV,WAAW,EAAG,CAAS;EACvB,QAAQ,kBAAC,GAAD;GAAiB;GAAe;EAAO,CAAA;EAC/C,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ export * from './alert-dialog';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/alert-dialog/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { Avatar as AvatarPrimitive } from '@base-ui/react/avatar';
2
+ import * as React from 'react';
3
+ declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
4
+ size?: 'default' | 'sm' | 'lg';
5
+ }): React.JSX.Element;
6
+ declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): React.JSX.Element;
7
+ declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
8
+ declare function AvatarBadge({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
9
+ declare function AvatarGroup({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
10
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
11
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge };
12
+ //# sourceMappingURL=avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/avatar/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGjE,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,IAAgB,EAChB,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,GAAG;IAC9B,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/B,qBAYA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,qBAQxE;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,KAAK,qBAW9E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAczE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAWxE;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA"}
@@ -0,0 +1,52 @@
1
+ import { cn as e } from "cn";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ import "react";
4
+ import { Avatar as n } from "@base-ui/react/avatar";
5
+ //#region src/components/ui/avatar/avatar.tsx
6
+ function r({ className: r, size: i = "default", ...a }) {
7
+ return /* @__PURE__ */ t(n.Root, {
8
+ "data-slot": "avatar",
9
+ "data-size": i,
10
+ className: e("group/avatar after:border-border relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", r),
11
+ ...a
12
+ });
13
+ }
14
+ function i({ className: r, ...i }) {
15
+ return /* @__PURE__ */ t(n.Image, {
16
+ "data-slot": "avatar-image",
17
+ className: e("aspect-square size-full rounded-full object-cover", r),
18
+ ...i
19
+ });
20
+ }
21
+ function a({ className: r, ...i }) {
22
+ return /* @__PURE__ */ t(n.Fallback, {
23
+ "data-slot": "avatar-fallback",
24
+ className: e("bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs", r),
25
+ ...i
26
+ });
27
+ }
28
+ function o({ className: n, ...r }) {
29
+ return /* @__PURE__ */ t("span", {
30
+ "data-slot": "avatar-badge",
31
+ className: e("bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", n),
32
+ ...r
33
+ });
34
+ }
35
+ function s({ className: n, ...r }) {
36
+ return /* @__PURE__ */ t("div", {
37
+ "data-slot": "avatar-group",
38
+ className: e("group/avatar-group *:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2", n),
39
+ ...r
40
+ });
41
+ }
42
+ function c({ className: n, ...r }) {
43
+ return /* @__PURE__ */ t("div", {
44
+ "data-slot": "avatar-group-count",
45
+ className: e("bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", n),
46
+ ...r
47
+ });
48
+ }
49
+ //#endregion
50
+ export { r as Avatar, o as AvatarBadge, a as AvatarFallback, s as AvatarGroup, c as AvatarGroupCount, i as AvatarImage };
51
+
52
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","names":[],"sources":["../../../../src/components/ui/avatar/avatar.tsx"],"sourcesContent":["import * as React from 'react'\nimport { Avatar as AvatarPrimitive } from '@base-ui/react/avatar'\nimport { cn } from 'cn'\n\nfunction Avatar({\n className,\n size = 'default',\n ...props\n}: AvatarPrimitive.Root.Props & {\n size?: 'default' | 'sm' | 'lg'\n}) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n className={cn(\n 'group/avatar after:border-border relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn('aspect-square size-full rounded-full object-cover', className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n 'bg-muted text-muted-foreground flex size-full items-center justify-center rounded-full text-sm group-data-[size=sm]/avatar:text-xs',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarBadge({ className, ...props }: React.ComponentProps<'span'>) {\n return (\n <span\n data-slot=\"avatar-badge\"\n className={cn(\n 'bg-primary text-primary-foreground ring-background absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-blend-color ring-2 select-none',\n 'group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden',\n 'group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2',\n 'group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group\"\n className={cn(\n 'group/avatar-group *:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2',\n className,\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarGroupCount({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n 'bg-muted text-muted-foreground ring-background relative flex size-8 shrink-0 items-center justify-center rounded-full text-sm ring-2 group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3',\n className,\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge }\n"],"mappings":";;;;;AAIA,SAAS,EAAO,EACd,cACA,UAAO,WACP,GAAG,KAGF;CACD,OACE,kBAAC,EAAgB,MAAjB;EACE,aAAU;EACV,aAAW;EACX,WAAW,EACT,yPACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAsC;CACzE,OACE,kBAAC,EAAgB,OAAjB;EACE,aAAU;EACV,WAAW,EAAG,qDAAqD,CAAS;EAC5E,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAe,EAAE,cAAW,GAAG,KAAyC;CAC/E,OACE,kBAAC,EAAgB,UAAjB;EACE,aAAU;EACV,WAAW,EACT,sIACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAuC;CAC1E,OACE,kBAAC,QAAD;EACE,aAAU;EACV,WAAW,EACT,4KACA,iFACA,6FACA,iFACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAY,EAAE,cAAW,GAAG,KAAsC;CACzE,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,uGACA,CACF;EACA,GAAI;CACL,CAAA;AAEL;AAEA,SAAS,EAAiB,EAAE,cAAW,GAAG,KAAsC;CAC9E,OACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EACT,4VACA,CACF;EACA,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,2 @@
1
+ export * from './avatar';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/avatar/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { useRender } from '@base-ui/react/use-render';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { badgeVariants } from './badge.styles';
4
+ declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>): import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>>;
5
+ export { Badge, badgeVariants };
6
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/badge/badge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAmB,EACnB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,8FAevE;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { badgeVariants as e } from "./badge.styles.js";
2
+ import "class-variance-authority";
3
+ import { cn as t } from "cn";
4
+ import { mergeProps as n } from "@base-ui/react/merge-props";
5
+ import { useRender as r } from "@base-ui/react/use-render";
6
+ //#region src/components/ui/badge/badge.tsx
7
+ function i({ className: i, variant: a = "default", render: o, ...s }) {
8
+ return r({
9
+ defaultTagName: "span",
10
+ props: n({ className: t(e({ variant: a }), i) }, s),
11
+ render: o,
12
+ state: {
13
+ slot: "badge",
14
+ variant: a
15
+ }
16
+ });
17
+ }
18
+ //#endregion
19
+ export { i as Badge, e as badgeVariants };
20
+
21
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","names":[],"sources":["../../../../src/components/ui/badge/badge.tsx"],"sourcesContent":["import { mergeProps } from '@base-ui/react/merge-props'\nimport { useRender } from '@base-ui/react/use-render'\nimport { type VariantProps } from 'class-variance-authority'\nimport { cn } from 'cn'\nimport { badgeVariants } from './badge.styles'\n\nfunction Badge({\n className,\n variant = 'default',\n render,\n ...props\n}: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: 'span',\n props: mergeProps<'span'>(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props,\n ),\n render,\n state: {\n slot: 'badge',\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n"],"mappings":";;;;;;AAMA,SAAS,EAAM,EACb,cACA,aAAU,WACV,WACA,GAAG,KACqE;CACxE,OAAO,EAAU;EACf,gBAAgB;EAChB,OAAO,EACL,EACE,WAAW,EAAG,EAAc,EAAE,WAAQ,CAAC,GAAG,CAAS,EACrD,GACA,CACF;EACA;EACA,OAAO;GACL,MAAM;GACN;EACF;CACF,CAAC;AACH"}