@arolariu/components 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/changelog.md +15 -0
  2. package/dist/components/ui/accordion.d.ts +4 -4
  3. package/dist/components/ui/accordion.d.ts.map +1 -1
  4. package/dist/components/ui/accordion.js +19 -27
  5. package/dist/components/ui/accordion.js.map +1 -1
  6. package/dist/components/ui/alert-dialog.d.ts +17 -11
  7. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  8. package/dist/components/ui/alert-dialog.js +38 -61
  9. package/dist/components/ui/alert-dialog.js.map +1 -1
  10. package/dist/components/ui/alert.d.ts +4 -5
  11. package/dist/components/ui/alert.d.ts.map +1 -1
  12. package/dist/components/ui/alert.js +17 -20
  13. package/dist/components/ui/alert.js.map +1 -1
  14. package/dist/components/ui/aspect-ratio.d.ts +1 -2
  15. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  16. package/dist/components/ui/aspect-ratio.js +1 -8
  17. package/dist/components/ui/aspect-ratio.js.map +1 -1
  18. package/dist/components/ui/avatar.d.ts +3 -3
  19. package/dist/components/ui/avatar.d.ts.map +1 -1
  20. package/dist/components/ui/avatar.js +16 -19
  21. package/dist/components/ui/avatar.js.map +1 -1
  22. package/dist/components/ui/badge.d.ts +3 -3
  23. package/dist/components/ui/badge.d.ts.map +1 -1
  24. package/dist/components/ui/badge.js +7 -10
  25. package/dist/components/ui/badge.js.map +1 -1
  26. package/dist/components/ui/breadcrumb.d.ts +16 -8
  27. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  28. package/dist/components/ui/breadcrumb.js +28 -35
  29. package/dist/components/ui/breadcrumb.js.map +1 -1
  30. package/dist/components/ui/button-group.d.ts +13 -0
  31. package/dist/components/ui/button-group.d.ts.map +1 -0
  32. package/dist/components/ui/button-group.js +47 -0
  33. package/dist/components/ui/button-group.js.map +1 -0
  34. package/dist/components/ui/button.d.ts +3 -2
  35. package/dist/components/ui/button.d.ts.map +1 -1
  36. package/dist/components/ui/button.js +15 -14
  37. package/dist/components/ui/button.js.map +1 -1
  38. package/dist/components/ui/calendar.js +20 -20
  39. package/dist/components/ui/calendar.js.map +1 -1
  40. package/dist/components/ui/card.d.ts +7 -8
  41. package/dist/components/ui/card.d.ts.map +1 -1
  42. package/dist/components/ui/card.js +31 -44
  43. package/dist/components/ui/card.js.map +1 -1
  44. package/dist/components/ui/carousel.d.ts +5 -6
  45. package/dist/components/ui/carousel.d.ts.map +1 -1
  46. package/dist/components/ui/carousel.js +29 -20
  47. package/dist/components/ui/carousel.js.map +1 -1
  48. package/dist/components/ui/chart.d.ts +35 -27
  49. package/dist/components/ui/chart.d.ts.map +1 -1
  50. package/dist/components/ui/chart.js +28 -26
  51. package/dist/components/ui/chart.js.map +1 -1
  52. package/dist/components/ui/checkbox.d.ts +1 -1
  53. package/dist/components/ui/checkbox.d.ts.map +1 -1
  54. package/dist/components/ui/checkbox.js +10 -12
  55. package/dist/components/ui/checkbox.js.map +1 -1
  56. package/dist/components/ui/collapsible.d.ts +2 -4
  57. package/dist/components/ui/collapsible.d.ts.map +1 -1
  58. package/dist/components/ui/collapsible.js +31 -20
  59. package/dist/components/ui/collapsible.js.map +1 -1
  60. package/dist/components/ui/command.d.ts +78 -16
  61. package/dist/components/ui/command.d.ts.map +1 -1
  62. package/dist/components/ui/command.js +47 -72
  63. package/dist/components/ui/command.js.map +1 -1
  64. package/dist/components/ui/context-menu.d.ts +21 -19
  65. package/dist/components/ui/context-menu.d.ts.map +1 -1
  66. package/dist/components/ui/context-menu.js +57 -101
  67. package/dist/components/ui/context-menu.js.map +1 -1
  68. package/dist/components/ui/dialog.d.ts +16 -12
  69. package/dist/components/ui/dialog.d.ts.map +1 -1
  70. package/dist/components/ui/dialog.js +36 -64
  71. package/dist/components/ui/dialog.js.map +1 -1
  72. package/dist/components/ui/drawer.d.ts +19 -10
  73. package/dist/components/ui/drawer.d.ts.map +1 -1
  74. package/dist/components/ui/drawer.js +32 -57
  75. package/dist/components/ui/drawer.js.map +1 -1
  76. package/dist/components/ui/dropdown-menu.d.ts +21 -19
  77. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  78. package/dist/components/ui/dropdown-menu.js +64 -108
  79. package/dist/components/ui/dropdown-menu.js.map +1 -1
  80. package/dist/components/ui/dropdrawer.d.ts +1 -1
  81. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  82. package/dist/components/ui/dropdrawer.js +2 -5
  83. package/dist/components/ui/dropdrawer.js.map +1 -1
  84. package/dist/components/ui/empty.d.ts +13 -0
  85. package/dist/components/ui/empty.d.ts.map +1 -0
  86. package/dist/components/ui/empty.js +65 -0
  87. package/dist/components/ui/empty.js.map +1 -0
  88. package/dist/components/ui/field.d.ts +26 -0
  89. package/dist/components/ui/field.d.ts.map +1 -0
  90. package/dist/components/ui/field.js +135 -0
  91. package/dist/components/ui/field.js.map +1 -0
  92. package/dist/components/ui/form.d.ts +5 -6
  93. package/dist/components/ui/form.d.ts.map +1 -1
  94. package/dist/components/ui/form.js +29 -28
  95. package/dist/components/ui/form.js.map +1 -1
  96. package/dist/components/ui/hover-card.d.ts +3 -3
  97. package/dist/components/ui/hover-card.d.ts.map +1 -1
  98. package/dist/components/ui/hover-card.js +11 -25
  99. package/dist/components/ui/hover-card.js.map +1 -1
  100. package/dist/components/ui/input-group.d.ts +17 -0
  101. package/dist/components/ui/input-group.d.ts.map +1 -0
  102. package/dist/components/ui/input-group.js +91 -0
  103. package/dist/components/ui/input-group.js.map +1 -0
  104. package/dist/components/ui/input-otp.d.ts +30 -7
  105. package/dist/components/ui/input-otp.d.ts.map +1 -1
  106. package/dist/components/ui/input-otp.js +22 -25
  107. package/dist/components/ui/input-otp.js.map +1 -1
  108. package/dist/components/ui/input.d.ts +1 -1
  109. package/dist/components/ui/input.d.ts.map +1 -1
  110. package/dist/components/ui/input.js +6 -7
  111. package/dist/components/ui/input.js.map +1 -1
  112. package/dist/components/ui/item.d.ts +24 -0
  113. package/dist/components/ui/item.d.ts.map +1 -0
  114. package/dist/components/ui/item.js +122 -0
  115. package/dist/components/ui/item.js.map +1 -0
  116. package/dist/components/ui/kbd.d.ts +5 -0
  117. package/dist/components/ui/kbd.d.ts.map +1 -0
  118. package/dist/components/ui/kbd.js +21 -0
  119. package/dist/components/ui/kbd.js.map +1 -0
  120. package/dist/components/ui/label.d.ts +2 -1
  121. package/dist/components/ui/label.d.ts.map +1 -1
  122. package/dist/components/ui/label.js +8 -7
  123. package/dist/components/ui/label.js.map +1 -1
  124. package/dist/components/ui/menubar.d.ts +18 -16
  125. package/dist/components/ui/menubar.d.ts.map +1 -1
  126. package/dist/components/ui/menubar.js +73 -93
  127. package/dist/components/ui/menubar.js.map +1 -1
  128. package/dist/components/ui/navigation-menu.d.ts +8 -10
  129. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  130. package/dist/components/ui/navigation-menu.js +36 -55
  131. package/dist/components/ui/navigation-menu.js.map +1 -1
  132. package/dist/components/ui/pagination.d.ts +24 -9
  133. package/dist/components/ui/pagination.d.ts.map +1 -1
  134. package/dist/components/ui/pagination.js +33 -45
  135. package/dist/components/ui/pagination.js.map +1 -1
  136. package/dist/components/ui/popover.d.ts +4 -4
  137. package/dist/components/ui/popover.d.ts.map +1 -1
  138. package/dist/components/ui/popover.js +9 -25
  139. package/dist/components/ui/popover.js.map +1 -1
  140. package/dist/components/ui/progress.d.ts +1 -1
  141. package/dist/components/ui/progress.d.ts.map +1 -1
  142. package/dist/components/ui/progress.js +5 -7
  143. package/dist/components/ui/progress.js.map +1 -1
  144. package/dist/components/ui/radio-group.d.ts +2 -2
  145. package/dist/components/ui/radio-group.d.ts.map +1 -1
  146. package/dist/components/ui/radio-group.js +16 -19
  147. package/dist/components/ui/radio-group.js.map +1 -1
  148. package/dist/components/ui/resizable.d.ts +20 -4
  149. package/dist/components/ui/resizable.d.ts.map +1 -1
  150. package/dist/components/ui/resizable.js +8 -19
  151. package/dist/components/ui/resizable.js.map +1 -1
  152. package/dist/components/ui/scroll-area.d.ts +2 -2
  153. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  154. package/dist/components/ui/scroll-area.js +12 -16
  155. package/dist/components/ui/scroll-area.js.map +1 -1
  156. package/dist/components/ui/select.d.ts +10 -12
  157. package/dist/components/ui/select.d.ts.map +1 -1
  158. package/dist/components/ui/select.js +54 -77
  159. package/dist/components/ui/select.js.map +1 -1
  160. package/dist/components/ui/separator.d.ts +1 -1
  161. package/dist/components/ui/separator.d.ts.map +1 -1
  162. package/dist/components/ui/separator.js +6 -7
  163. package/dist/components/ui/separator.js.map +1 -1
  164. package/dist/components/ui/sheet.d.ts +23 -11
  165. package/dist/components/ui/sheet.d.ts.map +1 -1
  166. package/dist/components/ui/sheet.js +54 -66
  167. package/dist/components/ui/sheet.js.map +1 -1
  168. package/dist/components/ui/sidebar.d.ts +34 -38
  169. package/dist/components/ui/sidebar.d.ts.map +1 -1
  170. package/dist/components/ui/sidebar.js +116 -124
  171. package/dist/components/ui/sidebar.js.map +1 -1
  172. package/dist/components/ui/skeleton.d.ts +1 -1
  173. package/dist/components/ui/skeleton.d.ts.map +1 -1
  174. package/dist/components/ui/skeleton.js +1 -2
  175. package/dist/components/ui/skeleton.js.map +1 -1
  176. package/dist/components/ui/slider.d.ts +1 -1
  177. package/dist/components/ui/slider.d.ts.map +1 -1
  178. package/dist/components/ui/slider.js +11 -30
  179. package/dist/components/ui/slider.js.map +1 -1
  180. package/dist/components/ui/sonner.d.ts +4 -2
  181. package/dist/components/ui/sonner.d.ts.map +1 -1
  182. package/dist/components/ui/sonner.js +7 -4
  183. package/dist/components/ui/sonner.js.map +1 -1
  184. package/dist/components/ui/spinner.d.ts +4 -0
  185. package/dist/components/ui/spinner.d.ts.map +1 -0
  186. package/dist/components/ui/spinner.js +16 -0
  187. package/dist/components/ui/spinner.js.map +1 -0
  188. package/dist/components/ui/switch.d.ts +2 -2
  189. package/dist/components/ui/switch.d.ts.map +1 -1
  190. package/dist/components/ui/switch.js +7 -9
  191. package/dist/components/ui/switch.js.map +1 -1
  192. package/dist/components/ui/table.d.ts +8 -8
  193. package/dist/components/ui/table.d.ts.map +1 -1
  194. package/dist/components/ui/table.js +36 -45
  195. package/dist/components/ui/table.js.map +1 -1
  196. package/dist/components/ui/tabs.d.ts +4 -4
  197. package/dist/components/ui/tabs.d.ts.map +1 -1
  198. package/dist/components/ui/tabs.js +17 -26
  199. package/dist/components/ui/tabs.js.map +1 -1
  200. package/dist/components/ui/textarea.d.ts +1 -1
  201. package/dist/components/ui/textarea.d.ts.map +1 -1
  202. package/dist/components/ui/textarea.js +6 -7
  203. package/dist/components/ui/textarea.js.map +1 -1
  204. package/dist/components/ui/toggle-group.d.ts +8 -3
  205. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  206. package/dist/components/ui/toggle-group.js +11 -15
  207. package/dist/components/ui/toggle-group.js.map +1 -1
  208. package/dist/components/ui/toggle.d.ts +4 -1
  209. package/dist/components/ui/toggle.d.ts.map +1 -1
  210. package/dist/components/ui/toggle.js +7 -8
  211. package/dist/components/ui/toggle.js.map +1 -1
  212. package/dist/components/ui/tooltip.d.ts +4 -4
  213. package/dist/components/ui/tooltip.d.ts.map +1 -1
  214. package/dist/components/ui/tooltip.js +13 -38
  215. package/dist/components/ui/tooltip.js.map +1 -1
  216. package/dist/components/ui/typewriter.d.ts.map +1 -1
  217. package/dist/components/ui/typewriter.js +2 -6
  218. package/dist/components/ui/typewriter.js.map +1 -1
  219. package/dist/index.css +839 -1126
  220. package/dist/index.css.map +1 -1
  221. package/dist/index.d.ts +9 -3
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +9 -3
  224. package/package.json +37 -2
  225. package/src/components/ui/accordion.tsx +43 -44
  226. package/src/components/ui/alert-dialog.tsx +88 -99
  227. package/src/components/ui/alert.tsx +24 -25
  228. package/src/components/ui/aspect-ratio.tsx +1 -9
  229. package/src/components/ui/avatar.tsx +33 -27
  230. package/src/components/ui/badge.tsx +8 -16
  231. package/src/components/ui/breadcrumb.tsx +70 -73
  232. package/src/components/ui/button-group.tsx +69 -0
  233. package/src/components/ui/button.tsx +18 -24
  234. package/src/components/ui/calendar.tsx +20 -20
  235. package/src/components/ui/card.tsx +52 -71
  236. package/src/components/ui/carousel.tsx +145 -133
  237. package/src/components/ui/chart.tsx +174 -182
  238. package/src/components/ui/checkbox.tsx +18 -18
  239. package/src/components/ui/collapsible.tsx +2 -26
  240. package/src/components/ui/command.tsx +101 -99
  241. package/src/components/ui/context-menu.tsx +150 -193
  242. package/src/components/ui/dialog.tsx +75 -110
  243. package/src/components/ui/drawer.tsx +74 -102
  244. package/src/components/ui/dropdown-menu.tsx +153 -200
  245. package/src/components/ui/dropdrawer.tsx +0 -5
  246. package/src/components/ui/empty.tsx +86 -0
  247. package/src/components/ui/field.tsx +199 -0
  248. package/src/components/ui/form.tsx +49 -50
  249. package/src/components/ui/hover-card.tsx +18 -37
  250. package/src/components/ui/input-group.tsx +145 -0
  251. package/src/components/ui/input-otp.tsx +49 -59
  252. package/src/components/ui/input.tsx +5 -6
  253. package/src/components/ui/item.tsx +163 -0
  254. package/src/components/ui/kbd.tsx +31 -0
  255. package/src/components/ui/label.tsx +14 -12
  256. package/src/components/ui/menubar.tsx +178 -201
  257. package/src/components/ui/navigation-menu.tsx +84 -100
  258. package/src/components/ui/pagination.tsx +75 -85
  259. package/src/components/ui/popover.tsx +19 -38
  260. package/src/components/ui/progress.tsx +15 -14
  261. package/src/components/ui/radio-group.tsx +19 -13
  262. package/src/components/ui/resizable.tsx +23 -36
  263. package/src/components/ui/scroll-area.tsx +32 -35
  264. package/src/components/ui/select.tsx +112 -127
  265. package/src/components/ui/separator.tsx +17 -19
  266. package/src/components/ui/sheet.tsx +87 -108
  267. package/src/components/ui/sidebar.tsx +276 -279
  268. package/src/components/ui/skeleton.tsx +2 -3
  269. package/src/components/ui/slider.tsx +15 -40
  270. package/src/components/ui/sonner.tsx +15 -9
  271. package/src/components/ui/spinner.tsx +18 -0
  272. package/src/components/ui/switch.tsx +18 -17
  273. package/src/components/ui/table.tsx +66 -71
  274. package/src/components/ui/tabs.tsx +36 -36
  275. package/src/components/ui/textarea.tsx +5 -4
  276. package/src/components/ui/toggle-group.tsx +21 -34
  277. package/src/components/ui/toggle.tsx +14 -16
  278. package/src/components/ui/tooltip.tsx +19 -43
  279. package/src/components/ui/typewriter.tsx +3 -4
  280. package/src/index.css +6 -6
  281. package/src/index.ts +43 -4
@@ -1,137 +1,139 @@
1
1
  "use client";
2
2
 
3
+ import type {DialogProps} from "@radix-ui/react-dialog";
3
4
  import {Command as CommandPrimitive} from "cmdk";
4
- import {SearchIcon} from "lucide-react";
5
+ import {Search} from "lucide-react";
5
6
  import * as React from "react";
6
7
 
7
- import {Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle} from "@/components/ui/dialog";
8
+ import {Dialog, DialogContent} from "@/components/ui/dialog";
8
9
  import {cn} from "@/lib/utilities";
9
10
 
10
- function Command({className, ...props}: React.ComponentProps<typeof CommandPrimitive>) {
11
- return (
11
+ const Command = React.forwardRef<React.ComponentRef<typeof CommandPrimitive>, React.ComponentPropsWithoutRef<typeof CommandPrimitive>>(
12
+ ({className, ...props}, ref) => (
12
13
  <CommandPrimitive
13
- data-slot='command'
14
+ ref={ref}
14
15
  className={cn(
15
16
  "flex h-full w-full flex-col overflow-hidden rounded-md bg-white text-neutral-950 dark:bg-neutral-950 dark:text-neutral-50",
16
17
  className,
17
18
  )}
18
19
  {...props}
19
20
  />
20
- );
21
- }
22
-
23
- function CommandDialog({
24
- title = "Command Palette",
25
- description = "Search for a command to run...",
26
- children,
27
- className,
28
- showCloseButton = true,
29
- ...props
30
- }: React.ComponentProps<typeof Dialog> & {
31
- title?: string;
32
- description?: string;
33
- className?: string;
34
- showCloseButton?: boolean;
35
- }) {
21
+ ),
22
+ );
23
+ Command.displayName = CommandPrimitive.displayName;
24
+
25
+ const CommandDialog = ({children, ...props}: DialogProps) => {
36
26
  return (
37
27
  <Dialog {...props}>
38
- <DialogHeader className='sr-only'>
39
- <DialogTitle>{title}</DialogTitle>
40
- <DialogDescription>{description}</DialogDescription>
41
- </DialogHeader>
42
- <DialogContent
43
- className={cn("overflow-hidden p-0", className)}
44
- showCloseButton={showCloseButton}>
45
- <Command className='**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 dark:[&_[cmdk-group-heading]]:text-neutral-400 [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5'>
28
+ <DialogContent className='overflow-hidden p-0'>
29
+ <Command className='[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 dark:[&_[cmdk-group-heading]]:text-neutral-400 [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5'>
46
30
  {children}
47
31
  </Command>
48
32
  </DialogContent>
49
33
  </Dialog>
50
34
  );
51
- }
52
-
53
- function CommandInput({className, ...props}: React.ComponentProps<typeof CommandPrimitive.Input>) {
54
- return (
55
- <div
56
- data-slot='command-input-wrapper'
57
- className='flex h-9 items-center gap-2 border-b px-3'>
58
- <SearchIcon className='size-4 shrink-0 opacity-50' />
59
- <CommandPrimitive.Input
60
- data-slot='command-input'
61
- className={cn(
62
- "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50 dark:placeholder:text-neutral-400",
63
- className,
64
- )}
65
- {...props}
66
- />
67
- </div>
68
- );
69
- }
35
+ };
70
36
 
71
- function CommandList({className, ...props}: React.ComponentProps<typeof CommandPrimitive.List>) {
72
- return (
73
- <CommandPrimitive.List
74
- data-slot='command-list'
75
- className={cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className)}
76
- {...props}
77
- />
78
- );
79
- }
80
-
81
- function CommandEmpty({...props}: React.ComponentProps<typeof CommandPrimitive.Empty>) {
82
- return (
83
- <CommandPrimitive.Empty
84
- data-slot='command-empty'
85
- className='py-6 text-center text-sm'
86
- {...props}
87
- />
88
- );
89
- }
90
-
91
- function CommandGroup({className, ...props}: React.ComponentProps<typeof CommandPrimitive.Group>) {
92
- return (
93
- <CommandPrimitive.Group
94
- data-slot='command-group'
37
+ const CommandInput = React.forwardRef<
38
+ React.ComponentRef<typeof CommandPrimitive.Input>,
39
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>
40
+ >(({className, ...props}, ref) => (
41
+ <div
42
+ className='flex items-center border-b px-3'
43
+ // eslint-disable-next-line react/no-unknown-property -- cmdk specific attribute
44
+ cmdk-input-wrapper=''>
45
+ <Search className='mr-2 h-4 w-4 shrink-0 opacity-50' />
46
+ <CommandPrimitive.Input
47
+ ref={ref}
95
48
  className={cn(
96
- "overflow-hidden p-1 text-neutral-950 dark:text-neutral-50 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 dark:[&_[cmdk-group-heading]]:text-neutral-400",
49
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-neutral-500 disabled:cursor-not-allowed disabled:opacity-50 dark:placeholder:text-neutral-400",
97
50
  className,
98
51
  )}
99
52
  {...props}
100
53
  />
101
- );
102
- }
54
+ </div>
55
+ ));
103
56
 
104
- function CommandSeparator({className, ...props}: React.ComponentProps<typeof CommandPrimitive.Separator>) {
105
- return (
106
- <CommandPrimitive.Separator
107
- data-slot='command-separator'
108
- className={cn("-mx-1 h-px bg-neutral-200 dark:bg-neutral-800", className)}
109
- {...props}
110
- />
111
- );
112
- }
57
+ CommandInput.displayName = CommandPrimitive.Input.displayName;
113
58
 
114
- function CommandItem({className, ...props}: React.ComponentProps<typeof CommandPrimitive.Item>) {
115
- return (
116
- <CommandPrimitive.Item
117
- data-slot='command-item'
118
- className={cn(
119
- "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-neutral-100 data-[selected=true]:text-neutral-900 dark:data-[selected=true]:bg-neutral-800 dark:data-[selected=true]:text-neutral-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-neutral-500 dark:[&_svg:not([class*='text-'])]:text-neutral-400",
120
- className,
121
- )}
122
- {...props}
123
- />
124
- );
125
- }
59
+ const CommandList = React.forwardRef<
60
+ React.ComponentRef<typeof CommandPrimitive.List>,
61
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>
62
+ >(({className, ...props}, ref) => (
63
+ <CommandPrimitive.List
64
+ ref={ref}
65
+ className={cn("max-h-[300px] overflow-x-hidden overflow-y-auto", className)}
66
+ {...props}
67
+ />
68
+ ));
69
+
70
+ CommandList.displayName = CommandPrimitive.List.displayName;
71
+
72
+ const CommandEmpty = React.forwardRef<
73
+ React.ComponentRef<typeof CommandPrimitive.Empty>,
74
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>
75
+ >((props, ref) => (
76
+ <CommandPrimitive.Empty
77
+ ref={ref}
78
+ className='py-6 text-center text-sm'
79
+ {...props}
80
+ />
81
+ ));
82
+
83
+ CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
84
+
85
+ const CommandGroup = React.forwardRef<
86
+ React.ComponentRef<typeof CommandPrimitive.Group>,
87
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>
88
+ >(({className, ...props}, ref) => (
89
+ <CommandPrimitive.Group
90
+ ref={ref}
91
+ className={cn(
92
+ "overflow-hidden p-1 text-neutral-950 dark:text-neutral-50 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-neutral-500 dark:[&_[cmdk-group-heading]]:text-neutral-400",
93
+ className,
94
+ )}
95
+ {...props}
96
+ />
97
+ ));
98
+
99
+ CommandGroup.displayName = CommandPrimitive.Group.displayName;
100
+
101
+ const CommandSeparator = React.forwardRef<
102
+ React.ComponentRef<typeof CommandPrimitive.Separator>,
103
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>
104
+ >(({className, ...props}, ref) => (
105
+ <CommandPrimitive.Separator
106
+ ref={ref}
107
+ className={cn("-mx-1 h-px bg-neutral-200 dark:bg-neutral-800", className)}
108
+ {...props}
109
+ />
110
+ ));
111
+ CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
112
+
113
+ const CommandItem = React.forwardRef<
114
+ React.ComponentRef<typeof CommandPrimitive.Item>,
115
+ React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>
116
+ >(({className, ...props}, ref) => (
117
+ <CommandPrimitive.Item
118
+ ref={ref}
119
+ className={cn(
120
+ "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-neutral-100 data-[selected=true]:text-neutral-900 dark:data-[selected=true]:bg-neutral-800 dark:data-[selected=true]:text-neutral-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
121
+ className,
122
+ )}
123
+ {...props}
124
+ />
125
+ ));
126
+
127
+ CommandItem.displayName = CommandPrimitive.Item.displayName;
126
128
 
127
- function CommandShortcut({className, ...props}: React.ComponentProps<"span">) {
129
+ const CommandShortcut = ({className, ...props}: React.HTMLAttributes<HTMLSpanElement>) => {
128
130
  return (
129
131
  <span
130
- data-slot='command-shortcut'
131
132
  className={cn("ml-auto text-xs tracking-widest text-neutral-500 dark:text-neutral-400", className)}
132
133
  {...props}
133
134
  />
134
135
  );
135
- }
136
+ };
137
+ CommandShortcut.displayName = "CommandShortcut";
136
138
 
137
139
  export {Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut};
@@ -1,214 +1,171 @@
1
1
  "use client";
2
2
 
3
3
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
4
- import {CheckIcon, ChevronRightIcon, CircleIcon} from "lucide-react";
4
+ import {Check, ChevronRight, Circle} from "lucide-react";
5
5
  import * as React from "react";
6
6
 
7
7
  import {cn} from "@/lib/utilities";
8
8
 
9
- function ContextMenu({...props}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
10
- return (
11
- <ContextMenuPrimitive.Root
12
- data-slot='context-menu'
13
- {...props}
14
- />
15
- );
16
- }
17
-
18
- function ContextMenuTrigger({...props}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {
19
- return (
20
- <ContextMenuPrimitive.Trigger
21
- data-slot='context-menu-trigger'
22
- {...props}
23
- />
24
- );
25
- }
26
-
27
- function ContextMenuGroup({...props}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {
28
- return (
29
- <ContextMenuPrimitive.Group
30
- data-slot='context-menu-group'
31
- {...props}
32
- />
33
- );
34
- }
35
-
36
- function ContextMenuPortal({...props}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {
37
- return (
38
- <ContextMenuPrimitive.Portal
39
- data-slot='context-menu-portal'
40
- {...props}
41
- />
42
- );
43
- }
44
-
45
- function ContextMenuSub({...props}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {
46
- return (
47
- <ContextMenuPrimitive.Sub
48
- data-slot='context-menu-sub'
49
- {...props}
50
- />
51
- );
52
- }
53
-
54
- function ContextMenuRadioGroup({...props}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {
55
- return (
56
- <ContextMenuPrimitive.RadioGroup
57
- data-slot='context-menu-radio-group'
58
- {...props}
59
- />
60
- );
61
- }
62
-
63
- function ContextMenuSubTrigger({
64
- className,
65
- inset,
66
- children,
67
- ...props
68
- }: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {
69
- inset?: boolean;
70
- }) {
71
- return (
72
- <ContextMenuPrimitive.SubTrigger
73
- data-slot='context-menu-sub-trigger'
74
- data-inset={inset}
75
- className={cn(
76
- "flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-neutral-100 focus:text-neutral-900 data-[inset]:pl-8 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
77
- className,
78
- )}
79
- {...props}>
80
- {children}
81
- <ChevronRightIcon className='ml-auto' />
82
- </ContextMenuPrimitive.SubTrigger>
83
- );
84
- }
85
-
86
- function ContextMenuSubContent({className, ...props}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {
87
- return (
88
- <ContextMenuPrimitive.SubContent
89
- data-slot='context-menu-sub-content'
90
- className={cn(
91
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border border-neutral-200 bg-white p-1 text-neutral-950 shadow-lg dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
92
- className,
93
- )}
94
- {...props}
95
- />
96
- );
97
- }
98
-
99
- function ContextMenuContent({className, ...props}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {
100
- return (
101
- <ContextMenuPrimitive.Portal>
102
- <ContextMenuPrimitive.Content
103
- data-slot='context-menu-content'
104
- className={cn(
105
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-neutral-200 bg-white p-1 text-neutral-950 shadow-md dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
106
- className,
107
- )}
108
- {...props}
109
- />
110
- </ContextMenuPrimitive.Portal>
111
- );
112
- }
113
-
114
- function ContextMenuItem({
115
- className,
116
- inset,
117
- variant = "default",
118
- ...props
119
- }: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {
120
- inset?: boolean;
121
- variant?: "default" | "destructive";
122
- }) {
123
- return (
124
- <ContextMenuPrimitive.Item
125
- data-slot='context-menu-item'
126
- data-inset={inset}
127
- data-variant={variant}
9
+ const ContextMenu = ContextMenuPrimitive.Root;
10
+
11
+ const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
12
+
13
+ const ContextMenuGroup = ContextMenuPrimitive.Group;
14
+
15
+ const ContextMenuPortal = ContextMenuPrimitive.Portal;
16
+
17
+ const ContextMenuSub = ContextMenuPrimitive.Sub;
18
+
19
+ const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
20
+
21
+ const ContextMenuSubTrigger = React.forwardRef<
22
+ React.ComponentRef<typeof ContextMenuPrimitive.SubTrigger>,
23
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {
24
+ inset?: boolean;
25
+ }
26
+ >(({className, inset, children, ...props}, ref) => (
27
+ <ContextMenuPrimitive.SubTrigger
28
+ ref={ref}
29
+ className={cn(
30
+ "flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-neutral-100 focus:text-neutral-900 data-[state=open]:bg-neutral-100 data-[state=open]:text-neutral-900 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[state=open]:bg-neutral-800 dark:data-[state=open]:text-neutral-50",
31
+ inset && "pl-8",
32
+ className,
33
+ )}
34
+ {...props}>
35
+ {children}
36
+ <ChevronRight className='ml-auto h-4 w-4' />
37
+ </ContextMenuPrimitive.SubTrigger>
38
+ ));
39
+ ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
40
+
41
+ const ContextMenuSubContent = React.forwardRef<
42
+ React.ComponentRef<typeof ContextMenuPrimitive.SubContent>,
43
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>
44
+ >(({className, ...props}, ref) => (
45
+ <ContextMenuPrimitive.SubContent
46
+ ref={ref}
47
+ className={cn(
48
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-[--radix-context-menu-content-transform-origin] overflow-hidden rounded-md border border-neutral-200 bg-white p-1 text-neutral-950 shadow-lg dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
49
+ className,
50
+ )}
51
+ {...props}
52
+ />
53
+ ));
54
+ ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
55
+
56
+ const ContextMenuContent = React.forwardRef<
57
+ React.ComponentRef<typeof ContextMenuPrimitive.Content>,
58
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>
59
+ >(({className, ...props}, ref) => (
60
+ <ContextMenuPrimitive.Portal>
61
+ <ContextMenuPrimitive.Content
62
+ ref={ref}
128
63
  className={cn(
129
- "data-[variant=destructive]:*:[svg]:!text-destructive relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 data-[variant=destructive]:text-red-500 data-[variant=destructive]:focus:bg-red-500/10 data-[variant=destructive]:focus:text-red-500 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 dark:data-[variant=destructive]:text-red-900 dark:dark:data-[variant=destructive]:focus:bg-red-900/20 dark:data-[variant=destructive]:focus:bg-red-500/20 dark:data-[variant=destructive]:focus:bg-red-900/10 dark:data-[variant=destructive]:focus:text-red-900 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-neutral-500 dark:[&_svg:not([class*='text-'])]:text-neutral-400",
64
+ "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] origin-[--radix-context-menu-content-transform-origin] overflow-x-hidden overflow-y-auto rounded-md border border-neutral-200 bg-white p-1 text-neutral-950 shadow-md dark:border-neutral-800 dark:bg-neutral-950 dark:text-neutral-50",
130
65
  className,
131
66
  )}
132
67
  {...props}
133
68
  />
134
- );
135
- }
136
-
137
- function ContextMenuCheckboxItem({className, children, checked, ...props}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {
138
- return (
139
- <ContextMenuPrimitive.CheckboxItem
140
- data-slot='context-menu-checkbox-item'
141
- className={cn(
142
- "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
143
- className,
144
- )}
145
- checked={checked}
146
- {...props}>
147
- <span className='pointer-events-none absolute left-2 flex size-3.5 items-center justify-center'>
148
- <ContextMenuPrimitive.ItemIndicator>
149
- <CheckIcon className='size-4' />
150
- </ContextMenuPrimitive.ItemIndicator>
151
- </span>
152
- {children}
153
- </ContextMenuPrimitive.CheckboxItem>
154
- );
155
- }
156
-
157
- function ContextMenuRadioItem({className, children, ...props}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {
158
- return (
159
- <ContextMenuPrimitive.RadioItem
160
- data-slot='context-menu-radio-item'
161
- className={cn(
162
- "relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-neutral-800 dark:focus:text-neutral-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
163
- className,
164
- )}
165
- {...props}>
166
- <span className='pointer-events-none absolute left-2 flex size-3.5 items-center justify-center'>
167
- <ContextMenuPrimitive.ItemIndicator>
168
- <CircleIcon className='size-2 fill-current' />
169
- </ContextMenuPrimitive.ItemIndicator>
170
- </span>
171
- {children}
172
- </ContextMenuPrimitive.RadioItem>
173
- );
174
- }
175
-
176
- function ContextMenuLabel({
177
- className,
178
- inset,
179
- ...props
180
- }: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {
181
- inset?: boolean;
182
- }) {
183
- return (
184
- <ContextMenuPrimitive.Label
185
- data-slot='context-menu-label'
186
- data-inset={inset}
187
- className={cn("px-2 py-1.5 text-sm font-medium text-neutral-950 data-[inset]:pl-8 dark:text-neutral-50", className)}
188
- {...props}
189
- />
190
- );
191
- }
192
-
193
- function ContextMenuSeparator({className, ...props}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {
194
- return (
195
- <ContextMenuPrimitive.Separator
196
- data-slot='context-menu-separator'
197
- className={cn("-mx-1 my-1 h-px bg-neutral-200 dark:bg-neutral-800", className)}
198
- {...props}
199
- />
200
- );
201
- }
202
-
203
- function ContextMenuShortcut({className, ...props}: React.ComponentProps<"span">) {
69
+ </ContextMenuPrimitive.Portal>
70
+ ));
71
+ ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
72
+
73
+ const ContextMenuItem = React.forwardRef<
74
+ React.ComponentRef<typeof ContextMenuPrimitive.Item>,
75
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {
76
+ inset?: boolean;
77
+ }
78
+ >(({className, inset, ...props}, ref) => (
79
+ <ContextMenuPrimitive.Item
80
+ ref={ref}
81
+ className={cn(
82
+ "relative flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-neutral-800 dark:focus:text-neutral-50",
83
+ inset && "pl-8",
84
+ className,
85
+ )}
86
+ {...props}
87
+ />
88
+ ));
89
+ ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
90
+
91
+ const ContextMenuCheckboxItem = React.forwardRef<
92
+ React.ComponentRef<typeof ContextMenuPrimitive.CheckboxItem>,
93
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.CheckboxItem>
94
+ >(({className, children, checked, ...props}, ref) => (
95
+ <ContextMenuPrimitive.CheckboxItem
96
+ ref={ref}
97
+ className={cn(
98
+ "relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-neutral-800 dark:focus:text-neutral-50",
99
+ className,
100
+ )}
101
+ checked={checked}
102
+ {...props}>
103
+ <span className='absolute left-2 flex h-3.5 w-3.5 items-center justify-center'>
104
+ <ContextMenuPrimitive.ItemIndicator>
105
+ <Check className='h-4 w-4' />
106
+ </ContextMenuPrimitive.ItemIndicator>
107
+ </span>
108
+ {children}
109
+ </ContextMenuPrimitive.CheckboxItem>
110
+ ));
111
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
112
+
113
+ const ContextMenuRadioItem = React.forwardRef<
114
+ React.ComponentRef<typeof ContextMenuPrimitive.RadioItem>,
115
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.RadioItem>
116
+ >(({className, children, ...props}, ref) => (
117
+ <ContextMenuPrimitive.RadioItem
118
+ ref={ref}
119
+ className={cn(
120
+ "relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none focus:bg-neutral-100 focus:text-neutral-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-neutral-800 dark:focus:text-neutral-50",
121
+ className,
122
+ )}
123
+ {...props}>
124
+ <span className='absolute left-2 flex h-3.5 w-3.5 items-center justify-center'>
125
+ <ContextMenuPrimitive.ItemIndicator>
126
+ <Circle className='h-4 w-4 fill-current' />
127
+ </ContextMenuPrimitive.ItemIndicator>
128
+ </span>
129
+ {children}
130
+ </ContextMenuPrimitive.RadioItem>
131
+ ));
132
+ ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
133
+
134
+ const ContextMenuLabel = React.forwardRef<
135
+ React.ComponentRef<typeof ContextMenuPrimitive.Label>,
136
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Label> & {
137
+ inset?: boolean;
138
+ }
139
+ >(({className, inset, ...props}, ref) => (
140
+ <ContextMenuPrimitive.Label
141
+ ref={ref}
142
+ className={cn("px-2 py-1.5 text-sm font-semibold text-neutral-950 dark:text-neutral-50", inset && "pl-8", className)}
143
+ {...props}
144
+ />
145
+ ));
146
+ ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
147
+
148
+ const ContextMenuSeparator = React.forwardRef<
149
+ React.ComponentRef<typeof ContextMenuPrimitive.Separator>,
150
+ React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Separator>
151
+ >(({className, ...props}, ref) => (
152
+ <ContextMenuPrimitive.Separator
153
+ ref={ref}
154
+ className={cn("-mx-1 my-1 h-px bg-neutral-200 dark:bg-neutral-800", className)}
155
+ {...props}
156
+ />
157
+ ));
158
+ ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
159
+
160
+ const ContextMenuShortcut = ({className, ...props}: React.HTMLAttributes<HTMLSpanElement>) => {
204
161
  return (
205
162
  <span
206
- data-slot='context-menu-shortcut'
207
163
  className={cn("ml-auto text-xs tracking-widest text-neutral-500 dark:text-neutral-400", className)}
208
164
  {...props}
209
165
  />
210
166
  );
211
- }
167
+ };
168
+ ContextMenuShortcut.displayName = "ContextMenuShortcut";
212
169
 
213
170
  export {
214
171
  ContextMenu,