@enya-learning/nova 0.4.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 (275) hide show
  1. package/Readme.md +418 -0
  2. package/changelog.md +44 -0
  3. package/components.json +23 -0
  4. package/dist/chunks/button-npy7isi3nsvlhf86.js +81 -0
  5. package/dist/chunks/button-npy7isi3nsvlhf86.js.map +1 -0
  6. package/dist/chunks/rolldown-runtime-fifbipqm1abz4ydz.js +30 -0
  7. package/dist/chunks/utils-kyb5nny4y41y7hd8.js +10 -0
  8. package/dist/chunks/utils-kyb5nny4y41y7hd8.js.map +1 -0
  9. package/dist/chunks/vendor-base-ui-efqwzv4oinwg1f0d.js +16049 -0
  10. package/dist/chunks/vendor-base-ui-efqwzv4oinwg1f0d.js.map +1 -0
  11. package/dist/chunks/vendor-styling-eeiy57tyznmxsfky.js +1744 -0
  12. package/dist/chunks/vendor-styling-eeiy57tyznmxsfky.js.map +1 -0
  13. package/dist/components/button.js +6 -0
  14. package/dist/components/enya-logo.js +191 -0
  15. package/dist/components/enya-logo.js.map +1 -0
  16. package/dist/index.js +23499 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/src/components/accordion/accordion.d.ts +6 -0
  19. package/dist/src/components/accordion/index.d.ts +1 -0
  20. package/dist/src/components/alert/alert.d.ts +10 -0
  21. package/dist/src/components/alert/index.d.ts +1 -0
  22. package/dist/src/components/alert-dialog/alert-dialog.d.ts +18 -0
  23. package/dist/src/components/alert-dialog/index.d.ts +1 -0
  24. package/dist/src/components/aspect-ratio/aspect-ratio.d.ts +4 -0
  25. package/dist/src/components/aspect-ratio/index.d.ts +1 -0
  26. package/dist/src/components/avatar/avatar.d.ts +11 -0
  27. package/dist/src/components/avatar/index.d.ts +1 -0
  28. package/dist/src/components/badge/badge.d.ts +7 -0
  29. package/dist/src/components/badge/index.d.ts +1 -0
  30. package/dist/src/components/breadcrumb/breadcrumb.d.ts +10 -0
  31. package/dist/src/components/breadcrumb/index.d.ts +1 -0
  32. package/dist/src/components/button/button.d.ts +8 -0
  33. package/dist/src/components/button/index.d.ts +1 -0
  34. package/dist/src/components/button-group/button-group.d.ts +10 -0
  35. package/dist/src/components/button-group/index.d.ts +1 -0
  36. package/dist/src/components/calendar/calendar.d.ts +10 -0
  37. package/dist/src/components/calendar/index.d.ts +1 -0
  38. package/dist/src/components/card/card.d.ts +11 -0
  39. package/dist/src/components/card/index.d.ts +1 -0
  40. package/dist/src/components/carousel/carousel.d.ts +28 -0
  41. package/dist/src/components/carousel/index.d.ts +1 -0
  42. package/dist/src/components/chart/chart.d.ts +44 -0
  43. package/dist/src/components/chart/index.d.ts +1 -0
  44. package/dist/src/components/checkbox/checkbox.d.ts +3 -0
  45. package/dist/src/components/checkbox/index.d.ts +1 -0
  46. package/dist/src/components/collapsible/collapsible.d.ts +5 -0
  47. package/dist/src/components/collapsible/index.d.ts +1 -0
  48. package/dist/src/components/combobox/combobox.d.ts +24 -0
  49. package/dist/src/components/combobox/index.d.ts +1 -0
  50. package/dist/src/components/command/command.d.ts +19 -0
  51. package/dist/src/components/command/index.d.ts +1 -0
  52. package/dist/src/components/context-menu/context-menu.d.ts +29 -0
  53. package/dist/src/components/context-menu/index.d.ts +1 -0
  54. package/dist/src/components/dialog/dialog.d.ts +17 -0
  55. package/dist/src/components/dialog/index.d.ts +1 -0
  56. package/dist/src/components/direction/direction.d.ts +1 -0
  57. package/dist/src/components/direction/index.d.ts +1 -0
  58. package/dist/src/components/drawer/drawer.d.ts +13 -0
  59. package/dist/src/components/drawer/index.d.ts +1 -0
  60. package/dist/src/components/dropdown-menu/dropdown-menu.d.ts +29 -0
  61. package/dist/src/components/dropdown-menu/index.d.ts +1 -0
  62. package/dist/src/components/empty/empty.d.ts +11 -0
  63. package/dist/src/components/empty/index.d.ts +1 -0
  64. package/dist/src/components/enya-logo/enya-logo.d.ts +121 -0
  65. package/dist/src/components/enya-logo/index.d.ts +1 -0
  66. package/dist/src/components/field/field.d.ts +24 -0
  67. package/dist/src/components/field/index.d.ts +1 -0
  68. package/dist/src/components/hover-card/hover-card.d.ts +5 -0
  69. package/dist/src/components/hover-card/index.d.ts +1 -0
  70. package/dist/src/components/input/index.d.ts +1 -0
  71. package/dist/src/components/input/input.d.ts +3 -0
  72. package/dist/src/components/input-group/index.d.ts +1 -0
  73. package/dist/src/components/input-group/input-group.d.ts +18 -0
  74. package/dist/src/components/input-otp/index.d.ts +1 -0
  75. package/dist/src/components/input-otp/input-otp.d.ts +11 -0
  76. package/dist/src/components/item/index.d.ts +1 -0
  77. package/dist/src/components/item/item.d.ts +22 -0
  78. package/dist/src/components/kbd/index.d.ts +1 -0
  79. package/dist/src/components/kbd/kbd.d.ts +3 -0
  80. package/dist/src/components/label/index.d.ts +1 -0
  81. package/dist/src/components/label/label.d.ts +3 -0
  82. package/dist/src/components/menubar/index.d.ts +1 -0
  83. package/dist/src/components/menubar/menubar.d.ts +29 -0
  84. package/dist/src/components/native-select/index.d.ts +1 -0
  85. package/dist/src/components/native-select/native-select.d.ts +8 -0
  86. package/dist/src/components/navigation-menu/index.d.ts +1 -0
  87. package/dist/src/components/navigation-menu/navigation-menu.d.ts +11 -0
  88. package/dist/src/components/pagination/index.d.ts +1 -0
  89. package/dist/src/components/pagination/pagination.d.ts +17 -0
  90. package/dist/src/components/popover/index.d.ts +1 -0
  91. package/dist/src/components/popover/popover.d.ts +9 -0
  92. package/dist/src/components/progress/index.d.ts +1 -0
  93. package/dist/src/components/progress/progress.d.ts +7 -0
  94. package/dist/src/components/radio-group/index.d.ts +1 -0
  95. package/dist/src/components/radio-group/radio-group.d.ts +5 -0
  96. package/dist/src/components/resizable/index.d.ts +1 -0
  97. package/dist/src/components/resizable/resizable.d.ts +7 -0
  98. package/dist/src/components/scroll-area/index.d.ts +1 -0
  99. package/dist/src/components/scroll-area/scroll-area.d.ts +4 -0
  100. package/dist/src/components/select/index.d.ts +1 -0
  101. package/dist/src/components/select/select.d.ts +15 -0
  102. package/dist/src/components/separator/index.d.ts +1 -0
  103. package/dist/src/components/separator/separator.d.ts +3 -0
  104. package/dist/src/components/sheet/index.d.ts +1 -0
  105. package/dist/src/components/sheet/sheet.d.ts +14 -0
  106. package/dist/src/components/sidebar/index.d.ts +1 -0
  107. package/dist/src/components/sidebar/sidebar.d.ts +63 -0
  108. package/dist/src/components/skeleton/index.d.ts +1 -0
  109. package/dist/src/components/skeleton/skeleton.d.ts +2 -0
  110. package/dist/src/components/slider/index.d.ts +1 -0
  111. package/dist/src/components/slider/slider.d.ts +3 -0
  112. package/dist/src/components/sonner/index.d.ts +1 -0
  113. package/dist/src/components/sonner/sonner.d.ts +3 -0
  114. package/dist/src/components/spinner/index.d.ts +1 -0
  115. package/dist/src/components/spinner/spinner.d.ts +2 -0
  116. package/dist/src/components/switch/index.d.ts +1 -0
  117. package/dist/src/components/switch/switch.d.ts +5 -0
  118. package/dist/src/components/table/index.d.ts +1 -0
  119. package/dist/src/components/table/table.d.ts +10 -0
  120. package/dist/src/components/tabs/index.d.ts +1 -0
  121. package/dist/src/components/tabs/tabs.d.ts +10 -0
  122. package/dist/src/components/textarea/index.d.ts +1 -0
  123. package/dist/src/components/textarea/textarea.d.ts +3 -0
  124. package/dist/src/components/toggle/index.d.ts +1 -0
  125. package/dist/src/components/toggle/toggle.d.ts +8 -0
  126. package/dist/src/components/toggle-group/index.d.ts +1 -0
  127. package/dist/src/components/toggle-group/toggle-group.d.ts +10 -0
  128. package/dist/src/components/tooltip/index.d.ts +1 -0
  129. package/dist/src/components/tooltip/tooltip.d.ts +6 -0
  130. package/dist/src/hooks/use-mobile.d.ts +1 -0
  131. package/dist/src/index.d.ts +57 -0
  132. package/dist/src/lib/utils.d.ts +2 -0
  133. package/dist/src/utils/index.d.ts +1 -0
  134. package/dist/styles/nova-binding.css +290 -0
  135. package/dist/styles/nova.css +58 -0
  136. package/dist/styles/theme-nova.css +201 -0
  137. package/dist/styles/typography.css +215 -0
  138. package/dist/utils.js +5 -0
  139. package/eslint.config.js +30 -0
  140. package/package.json +94 -0
  141. package/plopfile.mjs +49 -0
  142. package/src/components/.gitkeep +0 -0
  143. package/src/components/accordion/accordion.mdx +83 -0
  144. package/src/components/accordion/accordion.tsx +81 -0
  145. package/src/components/accordion/index.ts +1 -0
  146. package/src/components/alert/alert.tsx +76 -0
  147. package/src/components/alert/index.ts +1 -0
  148. package/src/components/alert-dialog/alert-dialog.tsx +187 -0
  149. package/src/components/alert-dialog/index.ts +1 -0
  150. package/src/components/aspect-ratio/aspect-ratio.tsx +22 -0
  151. package/src/components/aspect-ratio/index.ts +1 -0
  152. package/src/components/avatar/avatar.tsx +107 -0
  153. package/src/components/avatar/index.ts +1 -0
  154. package/src/components/badge/badge.tsx +52 -0
  155. package/src/components/badge/index.ts +1 -0
  156. package/src/components/breadcrumb/breadcrumb.tsx +122 -0
  157. package/src/components/breadcrumb/index.ts +1 -0
  158. package/src/components/button/button.mdx +255 -0
  159. package/src/components/button/button.tsx +59 -0
  160. package/src/components/button/index.ts +1 -0
  161. package/src/components/button-group/button-group.tsx +87 -0
  162. package/src/components/button-group/index.ts +1 -0
  163. package/src/components/calendar/calendar.tsx +228 -0
  164. package/src/components/calendar/index.ts +1 -0
  165. package/src/components/card/card.tsx +100 -0
  166. package/src/components/card/index.ts +1 -0
  167. package/src/components/carousel/carousel.tsx +243 -0
  168. package/src/components/carousel/index.ts +1 -0
  169. package/src/components/chart/chart.tsx +371 -0
  170. package/src/components/chart/index.ts +1 -0
  171. package/src/components/checkbox/checkbox.tsx +28 -0
  172. package/src/components/checkbox/index.ts +1 -0
  173. package/src/components/collapsible/collapsible.tsx +19 -0
  174. package/src/components/collapsible/index.ts +1 -0
  175. package/src/components/combobox/combobox.tsx +298 -0
  176. package/src/components/combobox/index.ts +1 -0
  177. package/src/components/command/command.tsx +193 -0
  178. package/src/components/command/index.ts +1 -0
  179. package/src/components/context-menu/context-menu.tsx +272 -0
  180. package/src/components/context-menu/index.ts +1 -0
  181. package/src/components/dialog/dialog.tsx +157 -0
  182. package/src/components/dialog/index.ts +1 -0
  183. package/src/components/direction/direction.tsx +4 -0
  184. package/src/components/direction/index.ts +1 -0
  185. package/src/components/drawer/drawer.tsx +134 -0
  186. package/src/components/drawer/index.ts +1 -0
  187. package/src/components/dropdown-menu/dropdown-menu.tsx +270 -0
  188. package/src/components/dropdown-menu/index.ts +1 -0
  189. package/src/components/empty/empty.tsx +104 -0
  190. package/src/components/empty/index.ts +1 -0
  191. package/src/components/enya-logo/enya-logo.mdx +174 -0
  192. package/src/components/enya-logo/enya-logo.tsx +383 -0
  193. package/src/components/enya-logo/index.ts +1 -0
  194. package/src/components/field/field.tsx +236 -0
  195. package/src/components/field/index.ts +1 -0
  196. package/src/components/hover-card/hover-card.tsx +51 -0
  197. package/src/components/hover-card/index.ts +1 -0
  198. package/src/components/input/index.ts +1 -0
  199. package/src/components/input/input.tsx +20 -0
  200. package/src/components/input-group/index.ts +1 -0
  201. package/src/components/input-group/input-group.tsx +157 -0
  202. package/src/components/input-otp/index.ts +1 -0
  203. package/src/components/input-otp/input-otp.tsx +84 -0
  204. package/src/components/item/index.ts +1 -0
  205. package/src/components/item/item.tsx +201 -0
  206. package/src/components/kbd/index.ts +1 -0
  207. package/src/components/kbd/kbd.tsx +26 -0
  208. package/src/components/label/index.ts +1 -0
  209. package/src/components/label/label.tsx +20 -0
  210. package/src/components/menubar/index.ts +1 -0
  211. package/src/components/menubar/menubar.tsx +281 -0
  212. package/src/components/native-select/index.ts +1 -0
  213. package/src/components/native-select/native-select.tsx +65 -0
  214. package/src/components/navigation-menu/index.ts +1 -0
  215. package/src/components/navigation-menu/navigation-menu.tsx +171 -0
  216. package/src/components/pagination/index.ts +1 -0
  217. package/src/components/pagination/pagination.tsx +133 -0
  218. package/src/components/popover/index.ts +1 -0
  219. package/src/components/popover/popover.tsx +88 -0
  220. package/src/components/progress/index.ts +1 -0
  221. package/src/components/progress/progress.tsx +83 -0
  222. package/src/components/radio-group/index.ts +1 -0
  223. package/src/components/radio-group/radio-group.tsx +36 -0
  224. package/src/components/resizable/index.ts +1 -0
  225. package/src/components/resizable/resizable.tsx +50 -0
  226. package/src/components/scroll-area/index.ts +1 -0
  227. package/src/components/scroll-area/scroll-area.tsx +53 -0
  228. package/src/components/select/index.ts +1 -0
  229. package/src/components/select/select.tsx +205 -0
  230. package/src/components/separator/index.ts +1 -0
  231. package/src/components/separator/separator.tsx +23 -0
  232. package/src/components/sheet/index.ts +1 -0
  233. package/src/components/sheet/sheet.tsx +137 -0
  234. package/src/components/sidebar/index.ts +1 -0
  235. package/src/components/sidebar/sidebar.tsx +722 -0
  236. package/src/components/skeleton/index.ts +1 -0
  237. package/src/components/skeleton/skeleton.tsx +13 -0
  238. package/src/components/slider/index.ts +1 -0
  239. package/src/components/slider/slider.tsx +52 -0
  240. package/src/components/sonner/index.ts +1 -0
  241. package/src/components/sonner/sonner.tsx +45 -0
  242. package/src/components/spinner/index.ts +1 -0
  243. package/src/components/spinner/spinner.tsx +15 -0
  244. package/src/components/switch/index.ts +1 -0
  245. package/src/components/switch/switch.tsx +30 -0
  246. package/src/components/table/index.ts +1 -0
  247. package/src/components/table/table.tsx +116 -0
  248. package/src/components/tabs/index.ts +1 -0
  249. package/src/components/tabs/tabs.tsx +80 -0
  250. package/src/components/textarea/index.ts +1 -0
  251. package/src/components/textarea/textarea.tsx +18 -0
  252. package/src/components/toggle/index.ts +1 -0
  253. package/src/components/toggle/toggle.tsx +45 -0
  254. package/src/components/toggle-group/index.ts +1 -0
  255. package/src/components/toggle-group/toggle-group.tsx +87 -0
  256. package/src/components/tooltip/index.ts +1 -0
  257. package/src/components/tooltip/tooltip.tsx +64 -0
  258. package/src/eslint/index.js +13 -0
  259. package/src/eslint/no-primitive-colors.js +158 -0
  260. package/src/hooks/use-mobile.ts +21 -0
  261. package/src/index.ts +58 -0
  262. package/src/lib/.gitkeep +0 -0
  263. package/src/lib/utils.ts +6 -0
  264. package/src/styles/globals.css +77 -0
  265. package/src/styles/nova-binding.css +290 -0
  266. package/src/styles/nova.css +58 -0
  267. package/src/styles/theme-nova.css +201 -0
  268. package/src/styles/typography.css +215 -0
  269. package/src/utils/index.ts +1 -0
  270. package/templates/component/component.tsx.hbs +16 -0
  271. package/templates/component/index.ts.hbs +1 -0
  272. package/templates/component/stories.tsx.hbs +13 -0
  273. package/tsconfig.json +18 -0
  274. package/tsconfig.lint.json +14 -0
  275. package/vite.config.ts +101 -0
@@ -0,0 +1,187 @@
1
+ "use client"
2
+
3
+ import * as React from "react"
4
+ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog"
5
+
6
+ import { cn } from "../../lib/utils"
7
+ import { Button } from "../button"
8
+
9
+ function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
10
+ return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />
11
+ }
12
+
13
+ function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {
14
+ return (
15
+ <AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
16
+ )
17
+ }
18
+
19
+ function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {
20
+ return (
21
+ <AlertDialogPrimitive.Portal data-slot="alert-dialog-portal" {...props} />
22
+ )
23
+ }
24
+
25
+ function AlertDialogOverlay({
26
+ className,
27
+ ...props
28
+ }: AlertDialogPrimitive.Backdrop.Props) {
29
+ return (
30
+ <AlertDialogPrimitive.Backdrop
31
+ data-slot="alert-dialog-overlay"
32
+ className={cn(
33
+ "fixed inset-0 isolate z-50 bg-nova-black/80 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",
34
+ className
35
+ )}
36
+ {...props}
37
+ />
38
+ )
39
+ }
40
+
41
+ function AlertDialogContent({
42
+ className,
43
+ size = "default",
44
+ ...props
45
+ }: AlertDialogPrimitive.Popup.Props & {
46
+ size?: "default" | "sm"
47
+ }) {
48
+ return (
49
+ <AlertDialogPortal>
50
+ <AlertDialogOverlay />
51
+ <AlertDialogPrimitive.Popup
52
+ data-slot="alert-dialog-content"
53
+ data-size={size}
54
+ className={cn(
55
+ "group/alert-dialog-content fixed start-1/2 top-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-4xl bg-popover p-6 text-popover-foreground ring-1 ring-foreground/5 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md rtl:translate-x-1/2 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",
56
+ className
57
+ )}
58
+ {...props}
59
+ />
60
+ </AlertDialogPortal>
61
+ )
62
+ }
63
+
64
+ function AlertDialogHeader({
65
+ className,
66
+ ...props
67
+ }: React.ComponentProps<"div">) {
68
+ return (
69
+ <div
70
+ data-slot="alert-dialog-header"
71
+ className={cn(
72
+ "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-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]",
73
+ className
74
+ )}
75
+ {...props}
76
+ />
77
+ )
78
+ }
79
+
80
+ function AlertDialogFooter({
81
+ className,
82
+ ...props
83
+ }: React.ComponentProps<"div">) {
84
+ return (
85
+ <div
86
+ data-slot="alert-dialog-footer"
87
+ className={cn(
88
+ "flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end",
89
+ className
90
+ )}
91
+ {...props}
92
+ />
93
+ )
94
+ }
95
+
96
+ function AlertDialogMedia({
97
+ className,
98
+ ...props
99
+ }: React.ComponentProps<"div">) {
100
+ return (
101
+ <div
102
+ data-slot="alert-dialog-media"
103
+ className={cn(
104
+ "mb-2 inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8",
105
+ className
106
+ )}
107
+ {...props}
108
+ />
109
+ )
110
+ }
111
+
112
+ function AlertDialogTitle({
113
+ className,
114
+ ...props
115
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {
116
+ return (
117
+ <AlertDialogPrimitive.Title
118
+ data-slot="alert-dialog-title"
119
+ className={cn(
120
+ "font-heading text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2",
121
+ className
122
+ )}
123
+ {...props}
124
+ />
125
+ )
126
+ }
127
+
128
+ function AlertDialogDescription({
129
+ className,
130
+ ...props
131
+ }: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {
132
+ return (
133
+ <AlertDialogPrimitive.Description
134
+ data-slot="alert-dialog-description"
135
+ className={cn(
136
+ "text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",
137
+ className
138
+ )}
139
+ {...props}
140
+ />
141
+ )
142
+ }
143
+
144
+ function AlertDialogAction({
145
+ className,
146
+ ...props
147
+ }: React.ComponentProps<typeof Button>) {
148
+ return (
149
+ <Button
150
+ data-slot="alert-dialog-action"
151
+ className={cn(className)}
152
+ {...props}
153
+ />
154
+ )
155
+ }
156
+
157
+ function AlertDialogCancel({
158
+ className,
159
+ variant = "outline",
160
+ size = "default",
161
+ ...props
162
+ }: AlertDialogPrimitive.Close.Props &
163
+ Pick<React.ComponentProps<typeof Button>, "variant" | "size">) {
164
+ return (
165
+ <AlertDialogPrimitive.Close
166
+ data-slot="alert-dialog-cancel"
167
+ className={cn(className)}
168
+ render={<Button variant={variant} size={size} />}
169
+ {...props}
170
+ />
171
+ )
172
+ }
173
+
174
+ export {
175
+ AlertDialog,
176
+ AlertDialogAction,
177
+ AlertDialogCancel,
178
+ AlertDialogContent,
179
+ AlertDialogDescription,
180
+ AlertDialogFooter,
181
+ AlertDialogHeader,
182
+ AlertDialogMedia,
183
+ AlertDialogOverlay,
184
+ AlertDialogPortal,
185
+ AlertDialogTitle,
186
+ AlertDialogTrigger,
187
+ }
@@ -0,0 +1 @@
1
+ export * from "./alert-dialog"
@@ -0,0 +1,22 @@
1
+ import { cn } from "../../lib/utils"
2
+
3
+ function AspectRatio({
4
+ ratio,
5
+ className,
6
+ ...props
7
+ }: React.ComponentProps<"div"> & { ratio: number }) {
8
+ return (
9
+ <div
10
+ data-slot="aspect-ratio"
11
+ style={
12
+ {
13
+ "--ratio": ratio,
14
+ } as React.CSSProperties
15
+ }
16
+ className={cn("relative aspect-(--ratio)", className)}
17
+ {...props}
18
+ />
19
+ )
20
+ }
21
+
22
+ export { AspectRatio }
@@ -0,0 +1 @@
1
+ export * from "./aspect-ratio"
@@ -0,0 +1,107 @@
1
+ import * as React from "react"
2
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar"
3
+
4
+ import { cn } from "../../lib/utils"
5
+
6
+ function Avatar({
7
+ className,
8
+ size = "default",
9
+ ...props
10
+ }: AvatarPrimitive.Root.Props & {
11
+ size?: "default" | "sm" | "lg"
12
+ }) {
13
+ return (
14
+ <AvatarPrimitive.Root
15
+ data-slot="avatar"
16
+ data-size={size}
17
+ className={cn(
18
+ "group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten",
19
+ className
20
+ )}
21
+ {...props}
22
+ />
23
+ )
24
+ }
25
+
26
+ function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props) {
27
+ return (
28
+ <AvatarPrimitive.Image
29
+ data-slot="avatar-image"
30
+ className={cn(
31
+ "aspect-square size-full rounded-full object-cover",
32
+ className
33
+ )}
34
+ {...props}
35
+ />
36
+ )
37
+ }
38
+
39
+ function AvatarFallback({
40
+ className,
41
+ ...props
42
+ }: AvatarPrimitive.Fallback.Props) {
43
+ return (
44
+ <AvatarPrimitive.Fallback
45
+ data-slot="avatar-fallback"
46
+ className={cn(
47
+ "flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs",
48
+ className
49
+ )}
50
+ {...props}
51
+ />
52
+ )
53
+ }
54
+
55
+ function AvatarBadge({ className, ...props }: React.ComponentProps<"span">) {
56
+ return (
57
+ <span
58
+ data-slot="avatar-badge"
59
+ className={cn(
60
+ "absolute end-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none",
61
+ "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden",
62
+ "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2",
63
+ "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2",
64
+ className
65
+ )}
66
+ {...props}
67
+ />
68
+ )
69
+ }
70
+
71
+ function AvatarGroup({ className, ...props }: React.ComponentProps<"div">) {
72
+ return (
73
+ <div
74
+ data-slot="avatar-group"
75
+ className={cn(
76
+ "group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background",
77
+ className
78
+ )}
79
+ {...props}
80
+ />
81
+ )
82
+ }
83
+
84
+ function AvatarGroupCount({
85
+ className,
86
+ ...props
87
+ }: React.ComponentProps<"div">) {
88
+ return (
89
+ <div
90
+ data-slot="avatar-group-count"
91
+ className={cn(
92
+ "relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background 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",
93
+ className
94
+ )}
95
+ {...props}
96
+ />
97
+ )
98
+ }
99
+
100
+ export {
101
+ Avatar,
102
+ AvatarImage,
103
+ AvatarFallback,
104
+ AvatarGroup,
105
+ AvatarGroupCount,
106
+ AvatarBadge,
107
+ }
@@ -0,0 +1 @@
1
+ export * from "./avatar"
@@ -0,0 +1,52 @@
1
+ import { mergeProps } from "@base-ui/react/merge-props"
2
+ import { useRender } from "@base-ui/react/use-render"
3
+ import { cva, type VariantProps } from "class-variance-authority"
4
+
5
+ import { cn } from "../../lib/utils"
6
+
7
+ const badgeVariants = cva(
8
+ "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
13
+ secondary:
14
+ "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
15
+ destructive:
16
+ "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
17
+ outline:
18
+ "border-border bg-input/30 text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
19
+ ghost:
20
+ "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
21
+ link: "text-primary underline-offset-4 hover:underline",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ },
27
+ }
28
+ )
29
+
30
+ function Badge({
31
+ className,
32
+ variant = "default",
33
+ render,
34
+ ...props
35
+ }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>) {
36
+ return useRender({
37
+ defaultTagName: "span",
38
+ props: mergeProps<"span">(
39
+ {
40
+ className: cn(badgeVariants({ variant }), className),
41
+ },
42
+ props
43
+ ),
44
+ render,
45
+ state: {
46
+ slot: "badge",
47
+ variant,
48
+ },
49
+ })
50
+ }
51
+
52
+ export { Badge, badgeVariants }
@@ -0,0 +1 @@
1
+ export * from "./badge"
@@ -0,0 +1,122 @@
1
+ import * as React from "react"
2
+ import { mergeProps } from "@base-ui/react/merge-props"
3
+ import { useRender } from "@base-ui/react/use-render"
4
+
5
+ import { cn } from "../../lib/utils"
6
+ import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
7
+
8
+ function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) {
9
+ return (
10
+ <nav
11
+ aria-label="breadcrumb"
12
+ data-slot="breadcrumb"
13
+ className={cn(className)}
14
+ {...props}
15
+ />
16
+ )
17
+ }
18
+
19
+ function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">) {
20
+ return (
21
+ <ol
22
+ data-slot="breadcrumb-list"
23
+ className={cn(
24
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5",
25
+ className
26
+ )}
27
+ {...props}
28
+ />
29
+ )
30
+ }
31
+
32
+ function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">) {
33
+ return (
34
+ <li
35
+ data-slot="breadcrumb-item"
36
+ className={cn("inline-flex items-center gap-1.5", className)}
37
+ {...props}
38
+ />
39
+ )
40
+ }
41
+
42
+ function BreadcrumbLink({
43
+ className,
44
+ render,
45
+ ...props
46
+ }: useRender.ComponentProps<"a">) {
47
+ return useRender({
48
+ defaultTagName: "a",
49
+ props: mergeProps<"a">(
50
+ {
51
+ className: cn("transition-colors hover:text-foreground", className),
52
+ },
53
+ props
54
+ ),
55
+ render,
56
+ state: {
57
+ slot: "breadcrumb-link",
58
+ },
59
+ })
60
+ }
61
+
62
+ function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">) {
63
+ return (
64
+ <span
65
+ data-slot="breadcrumb-page"
66
+ role="link"
67
+ aria-disabled="true"
68
+ aria-current="page"
69
+ className={cn("font-normal text-foreground", className)}
70
+ {...props}
71
+ />
72
+ )
73
+ }
74
+
75
+ function BreadcrumbSeparator({
76
+ children,
77
+ className,
78
+ ...props
79
+ }: React.ComponentProps<"li">) {
80
+ return (
81
+ <li
82
+ data-slot="breadcrumb-separator"
83
+ role="presentation"
84
+ aria-hidden="true"
85
+ className={cn("[&>svg]:size-3.5", className)}
86
+ {...props}
87
+ >
88
+ {children ?? <ChevronRightIcon className="rtl:rotate-180" />}
89
+ </li>
90
+ )
91
+ }
92
+
93
+ function BreadcrumbEllipsis({
94
+ className,
95
+ ...props
96
+ }: React.ComponentProps<"span">) {
97
+ return (
98
+ <span
99
+ data-slot="breadcrumb-ellipsis"
100
+ role="presentation"
101
+ aria-hidden="true"
102
+ className={cn(
103
+ "flex size-5 items-center justify-center [&>svg]:size-4",
104
+ className
105
+ )}
106
+ {...props}
107
+ >
108
+ <MoreHorizontalIcon />
109
+ <span className="sr-only">More</span>
110
+ </span>
111
+ )
112
+ }
113
+
114
+ export {
115
+ Breadcrumb,
116
+ BreadcrumbList,
117
+ BreadcrumbItem,
118
+ BreadcrumbLink,
119
+ BreadcrumbPage,
120
+ BreadcrumbSeparator,
121
+ BreadcrumbEllipsis,
122
+ }
@@ -0,0 +1 @@
1
+ export * from "./breadcrumb"