@codefast/ui 0.3.16-canary.3 → 0.4.0-canary.4
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.
- package/CHANGELOG.md +60 -0
- package/README.md +27 -16
- package/dist/components/accordion.d.mts +7 -22
- package/dist/components/accordion.mjs +26 -29
- package/dist/components/alert-dialog.d.mts +27 -26
- package/dist/components/alert-dialog.mjs +53 -45
- package/dist/components/alert.d.mts +12 -2
- package/dist/components/alert.mjs +15 -6
- package/dist/components/aspect-ratio.d.mts +2 -2
- package/dist/components/aspect-ratio.mjs +2 -3
- package/dist/components/avatar.d.mts +41 -5
- package/dist/components/avatar.mjs +40 -10
- package/dist/components/badge.mjs +4 -4
- package/dist/components/breadcrumb.d.mts +1 -0
- package/dist/components/breadcrumb.mjs +11 -10
- package/dist/components/button-group.d.mts +1 -1
- package/dist/components/button-group.mjs +6 -7
- package/dist/components/button.d.mts +0 -1
- package/dist/components/button.mjs +7 -7
- package/dist/components/calendar.d.mts +6 -2
- package/dist/components/calendar.mjs +39 -43
- package/dist/components/card.d.mts +4 -2
- package/dist/components/card.mjs +9 -9
- package/dist/components/carousel.d.mts +16 -4
- package/dist/components/carousel.mjs +24 -11
- package/dist/components/chart.d.mts +8 -3
- package/dist/components/chart.mjs +21 -15
- package/dist/components/checkbox-cards.mjs +4 -4
- package/dist/components/checkbox-group.mjs +3 -4
- package/dist/components/checkbox.d.mts +2 -2
- package/dist/components/checkbox.mjs +6 -7
- package/dist/components/collapsible.d.mts +4 -4
- package/dist/components/collapsible.mjs +4 -5
- package/dist/components/command.d.mts +11 -1
- package/dist/components/command.mjs +35 -32
- package/dist/components/context-menu.d.mts +22 -15
- package/dist/components/context-menu.mjs +44 -39
- package/dist/components/dialog.d.mts +19 -23
- package/dist/components/dialog.mjs +48 -47
- package/dist/components/direction.d.mts +24 -0
- package/dist/components/direction.mjs +18 -0
- package/dist/components/drawer.d.mts +2 -20
- package/dist/components/drawer.mjs +17 -25
- package/dist/components/dropdown-menu.d.mts +22 -15
- package/dist/components/dropdown-menu.mjs +41 -37
- package/dist/components/empty.mjs +5 -5
- package/dist/components/field.d.mts +1 -1
- package/dist/components/field.mjs +11 -12
- package/dist/components/form.d.mts +6 -7
- package/dist/components/form.mjs +6 -7
- package/dist/components/hover-card.d.mts +5 -5
- package/dist/components/hover-card.mjs +14 -12
- package/dist/components/input-group.d.mts +1 -1
- package/dist/components/input-group.mjs +12 -7
- package/dist/components/input-number.d.mts +3 -1
- package/dist/components/input-number.mjs +49 -27
- package/dist/components/input-otp.mjs +9 -7
- package/dist/components/input-password.mjs +1 -4
- package/dist/components/input-search.mjs +3 -5
- package/dist/components/input.mjs +1 -2
- package/dist/components/item.mjs +9 -9
- package/dist/components/kbd.mjs +1 -1
- package/dist/components/label.d.mts +2 -2
- package/dist/components/label.mjs +3 -4
- package/dist/components/menubar.d.mts +22 -16
- package/dist/components/menubar.mjs +54 -47
- package/dist/components/native-select.d.mts +5 -1
- package/dist/components/native-select.mjs +9 -6
- package/dist/components/navigation-menu.d.mts +30 -8
- package/dist/components/navigation-menu.mjs +33 -23
- package/dist/components/pagination.d.mts +6 -0
- package/dist/components/pagination.mjs +26 -11
- package/dist/components/popover.d.mts +40 -7
- package/dist/components/popover.mjs +46 -14
- package/dist/components/progress-circle.d.mts +1 -1
- package/dist/components/progress-circle.mjs +1 -2
- package/dist/components/progress.d.mts +2 -2
- package/dist/components/progress.mjs +5 -6
- package/dist/components/radio-cards.d.mts +3 -3
- package/dist/components/radio-cards.mjs +11 -11
- package/dist/components/radio-group.d.mts +3 -3
- package/dist/components/radio-group.mjs +9 -9
- package/dist/components/radio.mjs +2 -3
- package/dist/components/resizable.mjs +3 -8
- package/dist/components/scroll-area.d.mts +5 -5
- package/dist/components/scroll-area.mjs +13 -10
- package/dist/components/select.d.mts +14 -14
- package/dist/components/select.mjs +47 -47
- package/dist/components/separator.d.mts +2 -2
- package/dist/components/separator.mjs +3 -4
- package/dist/components/sheet.d.mts +13 -14
- package/dist/components/sheet.mjs +41 -39
- package/dist/components/sidebar.d.mts +2 -3
- package/dist/components/sidebar.mjs +46 -46
- package/dist/components/skeleton.mjs +1 -1
- package/dist/components/slider.d.mts +2 -2
- package/dist/components/slider.mjs +9 -11
- package/dist/components/sonner.mjs +11 -3
- package/dist/components/spinner.mjs +6 -7
- package/dist/components/switch.d.mts +5 -2
- package/dist/components/switch.mjs +7 -7
- package/dist/components/table.mjs +10 -10
- package/dist/components/tabs.d.mts +8 -5
- package/dist/components/tabs.mjs +18 -12
- package/dist/components/textarea.mjs +1 -1
- package/dist/components/toggle-group.d.mts +9 -6
- package/dist/components/toggle-group.mjs +19 -20
- package/dist/components/toggle.d.mts +2 -3
- package/dist/components/toggle.mjs +4 -6
- package/dist/components/tooltip.d.mts +7 -6
- package/dist/components/tooltip.mjs +19 -17
- package/dist/hooks/use-animated-value.mjs +0 -1
- package/dist/hooks/use-copy-to-clipboard.mjs +0 -1
- package/dist/hooks/use-is-mobile.mjs +0 -1
- package/dist/hooks/use-media-query.mjs +0 -1
- package/dist/hooks/use-mutation-observer.mjs +0 -1
- package/dist/hooks/use-pagination.mjs +0 -1
- package/dist/index.d.mts +15 -13
- package/dist/index.mjs +18 -16
- package/dist/primitives/checkbox-group.d.mts +9 -10
- package/dist/primitives/checkbox-group.mjs +14 -19
- package/dist/primitives/input-number.d.mts +3 -3
- package/dist/primitives/input-number.mjs +3 -5
- package/dist/primitives/input.d.mts +4 -4
- package/dist/primitives/input.mjs +2 -3
- package/dist/primitives/progress-circle.d.mts +3 -3
- package/dist/primitives/progress-circle.mjs +2 -3
- package/dist/variants/alert.d.mts +1 -1
- package/dist/variants/alert.mjs +3 -13
- package/dist/variants/badge.d.mts +6 -4
- package/dist/variants/badge.mjs +7 -34
- package/dist/variants/button-group.d.mts +2 -2
- package/dist/variants/button-group.mjs +3 -14
- package/dist/variants/button.d.mts +12 -10
- package/dist/variants/button.mjs +15 -57
- package/dist/variants/empty.d.mts +1 -1
- package/dist/variants/empty.mjs +2 -7
- package/dist/variants/field.d.mts +3 -3
- package/dist/variants/field.mjs +4 -22
- package/dist/variants/input-group.d.mts +9 -9
- package/dist/variants/input-group.mjs +11 -70
- package/dist/variants/input-number.d.mts +45 -0
- package/dist/variants/input-number.mjs +40 -0
- package/dist/variants/item.d.mts +5 -4
- package/dist/variants/item.mjs +9 -31
- package/dist/variants/navigation-menu.d.mts +1 -1
- package/dist/variants/navigation-menu.mjs +1 -5
- package/dist/variants/progress-circle.d.mts +1 -1
- package/dist/variants/progress-circle.mjs +1 -5
- package/dist/variants/scroll-area.d.mts +2 -2
- package/dist/variants/scroll-area.mjs +3 -8
- package/dist/variants/separator.mjs +6 -6
- package/dist/variants/sheet.d.mts +4 -4
- package/dist/variants/sheet.mjs +5 -38
- package/dist/variants/sidebar.d.mts +4 -4
- package/dist/variants/sidebar.mjs +6 -23
- package/dist/variants/tabs.d.mts +18 -0
- package/dist/variants/tabs.mjs +15 -0
- package/dist/variants/toggle.d.mts +4 -4
- package/dist/variants/toggle.mjs +9 -27
- package/package.json +27 -44
- package/src/components/accordion.tsx +26 -68
- package/src/components/alert-dialog.tsx +70 -86
- package/src/components/alert.tsx +27 -19
- package/src/components/aspect-ratio.tsx +1 -4
- package/src/components/avatar.tsx +99 -12
- package/src/components/badge.tsx +5 -8
- package/src/components/breadcrumb.tsx +18 -24
- package/src/components/button-group.tsx +10 -20
- package/src/components/button.tsx +8 -19
- package/src/components/calendar.tsx +77 -132
- package/src/components/card.tsx +16 -22
- package/src/components/carousel.tsx +38 -56
- package/src/components/chart.tsx +41 -92
- package/src/components/checkbox-cards.tsx +10 -30
- package/src/components/checkbox-group.tsx +5 -28
- package/src/components/checkbox.tsx +5 -26
- package/src/components/collapsible.tsx +1 -4
- package/src/components/command.tsx +52 -65
- package/src/components/context-menu.tsx +46 -125
- package/src/components/dialog.tsx +49 -101
- package/src/components/direction.tsx +32 -0
- package/src/components/drawer.tsx +17 -79
- package/src/components/dropdown-menu.tsx +39 -118
- package/src/components/empty.tsx +6 -20
- package/src/components/field.tsx +19 -52
- package/src/components/form.tsx +19 -61
- package/src/components/hover-card.tsx +4 -27
- package/src/components/input-group.tsx +13 -52
- package/src/components/input-number.tsx +55 -75
- package/src/components/input-otp.tsx +19 -38
- package/src/components/input-password.tsx +5 -29
- package/src/components/input-search.tsx +6 -23
- package/src/components/input.tsx +1 -17
- package/src/components/item.tsx +17 -31
- package/src/components/kbd.tsx +2 -14
- package/src/components/label.tsx +2 -10
- package/src/components/menubar.tsx +34 -125
- package/src/components/native-select.tsx +21 -30
- package/src/components/navigation-menu.tsx +34 -94
- package/src/components/pagination.tsx +28 -34
- package/src/components/popover.tsx +66 -35
- package/src/components/progress-circle.tsx +7 -25
- package/src/components/progress.tsx +3 -16
- package/src/components/radio-cards.tsx +8 -27
- package/src/components/radio-group.tsx +7 -27
- package/src/components/radio.tsx +3 -24
- package/src/components/resizable.tsx +5 -26
- package/src/components/scroll-area.tsx +12 -32
- package/src/components/select.tsx +36 -59
- package/src/components/separator.tsx +4 -18
- package/src/components/sheet.tsx +37 -74
- package/src/components/sidebar.tsx +47 -177
- package/src/components/skeleton.tsx +1 -3
- package/src/components/slider.tsx +7 -36
- package/src/components/sonner.tsx +16 -6
- package/src/components/spinner.tsx +6 -15
- package/src/components/switch.tsx +8 -30
- package/src/components/table.tsx +18 -35
- package/src/components/tabs.tsx +16 -34
- package/src/components/textarea.tsx +1 -15
- package/src/components/toggle-group.tsx +34 -38
- package/src/components/toggle.tsx +4 -13
- package/src/components/tooltip.tsx +11 -37
- package/src/css/foundation/base.css +50 -0
- package/src/css/foundation/motion.css +36 -0
- package/src/css/foundation/source.css +3 -0
- package/src/css/foundation/tokens.css +71 -0
- package/src/css/foundation/variants.css +113 -0
- package/src/css/preset.css +5 -214
- package/src/css/style.css +1 -1
- package/src/hooks/use-animated-value.ts +1 -7
- package/src/hooks/use-copy-to-clipboard.ts +1 -6
- package/src/hooks/use-is-mobile.ts +0 -2
- package/src/hooks/use-media-query.ts +0 -2
- package/src/hooks/use-mutation-observer.ts +0 -3
- package/src/hooks/use-pagination.ts +0 -2
- package/src/index.ts +39 -80
- package/src/primitives/checkbox-group.tsx +25 -39
- package/src/primitives/input-number.tsx +17 -63
- package/src/primitives/input.tsx +8 -24
- package/src/primitives/progress-circle.tsx +13 -43
- package/src/variants/alert.ts +3 -14
- package/src/variants/badge.ts +8 -35
- package/src/variants/button-group.ts +5 -18
- package/src/variants/button.ts +21 -58
- package/src/variants/empty.ts +2 -11
- package/src/variants/field.ts +6 -19
- package/src/variants/input-group.ts +12 -64
- package/src/variants/input-number.ts +65 -0
- package/src/variants/item.ts +10 -32
- package/src/variants/navigation-menu.ts +1 -8
- package/src/variants/progress-circle.ts +1 -2
- package/src/variants/scroll-area.ts +3 -9
- package/src/variants/separator.ts +6 -7
- package/src/variants/sheet.ts +6 -39
- package/src/variants/sidebar.ts +7 -27
- package/src/variants/tabs.ts +34 -0
- package/src/variants/toggle.ts +9 -28
- /package/src/css/{amber.css → themes/amber.css} +0 -0
- /package/src/css/{blue.css → themes/blue.css} +0 -0
- /package/src/css/{cyan.css → themes/cyan.css} +0 -0
- /package/src/css/{emerald.css → themes/emerald.css} +0 -0
- /package/src/css/{fuchsia.css → themes/fuchsia.css} +0 -0
- /package/src/css/{gray.css → themes/gray.css} +0 -0
- /package/src/css/{green.css → themes/green.css} +0 -0
- /package/src/css/{indigo.css → themes/indigo.css} +0 -0
- /package/src/css/{lime.css → themes/lime.css} +0 -0
- /package/src/css/{neutral.css → themes/neutral.css} +0 -0
- /package/src/css/{orange.css → themes/orange.css} +0 -0
- /package/src/css/{pink.css → themes/pink.css} +0 -0
- /package/src/css/{purple.css → themes/purple.css} +0 -0
- /package/src/css/{red.css → themes/red.css} +0 -0
- /package/src/css/{rose.css → themes/rose.css} +0 -0
- /package/src/css/{sky.css → themes/sky.css} +0 -0
- /package/src/css/{slate.css → themes/slate.css} +0 -0
- /package/src/css/{stone.css → themes/stone.css} +0 -0
- /package/src/css/{teal.css → themes/teal.css} +0 -0
- /package/src/css/{violet.css → themes/violet.css} +0 -0
- /package/src/css/{yellow.css → themes/yellow.css} +0 -0
- /package/src/css/{zinc.css → themes/zinc.css} +0 -0
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CheckIcon } from "lucide-react";
|
|
2
|
+
import { Checkbox as CheckboxPrimitive } from "radix-ui";
|
|
3
3
|
import type { ComponentProps, JSX } from "react";
|
|
4
4
|
|
|
5
5
|
import { cn } from "#/lib/utils";
|
|
6
|
-
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
7
|
-
import { CheckIcon } from "lucide-react";
|
|
8
6
|
|
|
9
7
|
/* -----------------------------------------------------------------------------
|
|
10
8
|
* Component: Checkbox
|
|
@@ -22,36 +20,17 @@ function Checkbox({ className, ...props }: CheckboxProps): JSX.Element {
|
|
|
22
20
|
return (
|
|
23
21
|
<CheckboxPrimitive.Root
|
|
24
22
|
className={cn(
|
|
25
|
-
"peer flex size-4 shrink-0 items-center justify-center",
|
|
26
|
-
"rounded-sm border border-input shadow-xs outline-hidden",
|
|
27
|
-
"text-primary-foreground",
|
|
28
|
-
"transition-[border-color,background-color,box-shadow] duration-150 ease-spring",
|
|
29
|
-
"motion-reduce:transition-none motion-reduce:duration-0",
|
|
30
|
-
"hover:not-disabled:not-aria-checked:border-ring/60",
|
|
31
|
-
"focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
32
|
-
"disabled:opacity-50",
|
|
33
|
-
"aria-checked:border-primary aria-checked:bg-primary",
|
|
34
|
-
"aria-checked:focus-visible:ring-primary/20",
|
|
35
|
-
"aria-invalid:border-destructive aria-invalid:ring-destructive/20",
|
|
36
|
-
"hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60",
|
|
37
|
-
"aria-checked:aria-invalid:bg-destructive",
|
|
38
|
-
"dark:bg-input/30",
|
|
39
|
-
"dark:aria-checked:focus-visible:ring-primary/40",
|
|
40
|
-
"dark:aria-invalid:ring-destructive/40",
|
|
23
|
+
"peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input shadow-xs transition-shadow outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary",
|
|
41
24
|
className,
|
|
42
25
|
)}
|
|
43
26
|
data-slot="checkbox"
|
|
44
27
|
{...props}
|
|
45
28
|
>
|
|
46
29
|
<CheckboxPrimitive.Indicator
|
|
47
|
-
className=
|
|
48
|
-
"flex items-center justify-center text-current",
|
|
49
|
-
"animate-in duration-150 ease-spring zoom-in-50",
|
|
50
|
-
"motion-reduce:animate-none motion-reduce:transition-none motion-reduce:duration-0",
|
|
51
|
-
)}
|
|
30
|
+
className="grid place-content-center text-current transition-none [&>svg]:size-3.5"
|
|
52
31
|
data-slot="checkbox-indicator"
|
|
53
32
|
>
|
|
54
|
-
<CheckIcon
|
|
33
|
+
<CheckIcon />
|
|
55
34
|
</CheckboxPrimitive.Indicator>
|
|
56
35
|
</CheckboxPrimitive.Root>
|
|
57
36
|
);
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Collapsible as CollapsiblePrimitive } from "radix-ui";
|
|
3
2
|
import type { ComponentProps, JSX } from "react";
|
|
4
3
|
|
|
5
|
-
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
6
|
-
|
|
7
4
|
/* -----------------------------------------------------------------------------
|
|
8
5
|
* Component: Collapsible
|
|
9
6
|
* -------------------------------------------------------------------------- */
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
2
|
+
import { CheckIcon, SearchIcon } from "lucide-react";
|
|
3
3
|
import type { ComponentProps, JSX } from "react";
|
|
4
4
|
|
|
5
|
+
import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "#/components/dialog";
|
|
6
|
+
import { InputGroup, InputGroupAddon } from "#/components/input-group";
|
|
5
7
|
import { cn } from "#/lib/utils";
|
|
6
|
-
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
7
|
-
import { Command as CommandPrimitive } from "cmdk";
|
|
8
|
-
import { SearchIcon } from "lucide-react";
|
|
9
|
-
|
|
10
|
-
import { Dialog, DialogContent, DialogDescription, DialogTitle } from "#/components/dialog";
|
|
11
8
|
|
|
12
9
|
/* -----------------------------------------------------------------------------
|
|
13
10
|
* Component: Command
|
|
@@ -25,9 +22,7 @@ function Command({ className, ...props }: CommandProps): JSX.Element {
|
|
|
25
22
|
return (
|
|
26
23
|
<CommandPrimitive
|
|
27
24
|
className={cn(
|
|
28
|
-
"flex flex-col overflow-hidden",
|
|
29
|
-
"rounded-[inherit]",
|
|
30
|
-
"bg-popover text-popover-foreground outline-hidden",
|
|
25
|
+
"flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground",
|
|
31
26
|
className,
|
|
32
27
|
)}
|
|
33
28
|
data-slot="command"
|
|
@@ -43,33 +38,36 @@ function Command({ className, ...props }: CommandProps): JSX.Element {
|
|
|
43
38
|
/**
|
|
44
39
|
* @since 0.3.16-canary.0
|
|
45
40
|
*/
|
|
46
|
-
|
|
41
|
+
interface CommandDialogProps extends ComponentProps<typeof Dialog> {
|
|
42
|
+
className?: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
showCloseButton?: boolean;
|
|
45
|
+
title?: string;
|
|
46
|
+
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
49
|
* @since 0.3.16-canary.0
|
|
50
50
|
*/
|
|
51
|
-
function CommandDialog({
|
|
51
|
+
function CommandDialog({
|
|
52
|
+
children,
|
|
53
|
+
className,
|
|
54
|
+
description = "Search for a command to run...",
|
|
55
|
+
showCloseButton = false,
|
|
56
|
+
title = "Command Palette",
|
|
57
|
+
...props
|
|
58
|
+
}: CommandDialogProps): JSX.Element {
|
|
52
59
|
return (
|
|
53
60
|
<Dialog data-slot="command-dialog" {...props}>
|
|
61
|
+
<DialogHeader className="sr-only">
|
|
62
|
+
<DialogTitle>{title}</DialogTitle>
|
|
63
|
+
<DialogDescription>{description}</DialogDescription>
|
|
64
|
+
</DialogHeader>
|
|
54
65
|
<DialogContent
|
|
55
|
-
className={cn("rounded-
|
|
66
|
+
className={cn("top-1/3 translate-y-0 overflow-hidden rounded-xl p-0", className)}
|
|
56
67
|
data-slot="command-dialog-content"
|
|
68
|
+
showCloseButton={showCloseButton}
|
|
57
69
|
>
|
|
58
|
-
|
|
59
|
-
<DialogTitle>Search command</DialogTitle>
|
|
60
|
-
<DialogDescription>
|
|
61
|
-
Use the search bar to find and select the desired command.
|
|
62
|
-
</DialogDescription>
|
|
63
|
-
</VisuallyHidden>
|
|
64
|
-
<Command
|
|
65
|
-
className={cn(
|
|
66
|
-
"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
|
|
67
|
-
"[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0",
|
|
68
|
-
"[&_[cmdk-input]]:h-12",
|
|
69
|
-
)}
|
|
70
|
-
>
|
|
71
|
-
{children}
|
|
72
|
-
</Command>
|
|
70
|
+
{children}
|
|
73
71
|
</DialogContent>
|
|
74
72
|
</Dialog>
|
|
75
73
|
);
|
|
@@ -89,25 +87,17 @@ type CommandInputProps = ComponentProps<typeof CommandPrimitive.Input>;
|
|
|
89
87
|
*/
|
|
90
88
|
function CommandInput({ className, ...props }: CommandInputProps): JSX.Element {
|
|
91
89
|
return (
|
|
92
|
-
<div
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
"
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"placeholder:text-muted-foreground",
|
|
104
|
-
"disabled:opacity-50",
|
|
105
|
-
"md:text-sm",
|
|
106
|
-
className,
|
|
107
|
-
)}
|
|
108
|
-
data-slot="command-input"
|
|
109
|
-
{...props}
|
|
110
|
-
/>
|
|
90
|
+
<div className="p-1 pb-0" data-slot="command-input-wrapper">
|
|
91
|
+
<InputGroup className="h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!">
|
|
92
|
+
<CommandPrimitive.Input
|
|
93
|
+
className={cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className)}
|
|
94
|
+
data-slot="command-input"
|
|
95
|
+
{...props}
|
|
96
|
+
/>
|
|
97
|
+
<InputGroupAddon>
|
|
98
|
+
<SearchIcon className="size-4 shrink-0 opacity-50" />
|
|
99
|
+
</InputGroupAddon>
|
|
100
|
+
</InputGroup>
|
|
111
101
|
</div>
|
|
112
102
|
);
|
|
113
103
|
}
|
|
@@ -127,7 +117,7 @@ type CommandListProps = ComponentProps<typeof CommandPrimitive.List>;
|
|
|
127
117
|
function CommandList({ className, ...props }: CommandListProps): JSX.Element {
|
|
128
118
|
return (
|
|
129
119
|
<CommandPrimitive.List
|
|
130
|
-
className={cn("max-h-
|
|
120
|
+
className={cn("max-h-72 scroll-py-1 scrollbar-none overflow-x-hidden overflow-y-auto outline-none", className)}
|
|
131
121
|
data-slot="command-list"
|
|
132
122
|
{...props}
|
|
133
123
|
/>
|
|
@@ -149,7 +139,7 @@ type CommandEmptyProps = ComponentProps<typeof CommandPrimitive.Empty>;
|
|
|
149
139
|
function CommandEmpty({ className, ...props }: CommandEmptyProps): JSX.Element {
|
|
150
140
|
return (
|
|
151
141
|
<CommandPrimitive.Empty
|
|
152
|
-
className={cn("py-6
|
|
142
|
+
className={cn("py-6 text-center text-sm", className)}
|
|
153
143
|
data-slot="command-empty"
|
|
154
144
|
{...props}
|
|
155
145
|
/>
|
|
@@ -172,8 +162,7 @@ function CommandGroup({ className, ...props }: CommandGroupProps): JSX.Element {
|
|
|
172
162
|
return (
|
|
173
163
|
<CommandPrimitive.Group
|
|
174
164
|
className={cn(
|
|
175
|
-
"overflow-hidden p-1 text-foreground",
|
|
176
|
-
"[&_[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-muted-foreground",
|
|
165
|
+
"overflow-hidden p-1 text-foreground **:[[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-muted-foreground",
|
|
177
166
|
className,
|
|
178
167
|
)}
|
|
179
168
|
data-slot="command-group"
|
|
@@ -197,7 +186,7 @@ type CommandSeparatorProps = ComponentProps<typeof CommandPrimitive.Separator>;
|
|
|
197
186
|
function CommandSeparator({ className, ...props }: CommandSeparatorProps): JSX.Element {
|
|
198
187
|
return (
|
|
199
188
|
<CommandPrimitive.Separator
|
|
200
|
-
className={cn("-mx-1 h-px
|
|
189
|
+
className={cn("-mx-1 h-px w-auto bg-border", className)}
|
|
201
190
|
data-slot="command-separator"
|
|
202
191
|
{...props}
|
|
203
192
|
/>
|
|
@@ -216,24 +205,19 @@ type CommandItemProps = ComponentProps<typeof CommandPrimitive.Item>;
|
|
|
216
205
|
/**
|
|
217
206
|
* @since 0.3.16-canary.0
|
|
218
207
|
*/
|
|
219
|
-
function CommandItem({ className, ...props }: CommandItemProps): JSX.Element {
|
|
208
|
+
function CommandItem({ children, className, ...props }: CommandItemProps): JSX.Element {
|
|
220
209
|
return (
|
|
221
210
|
<CommandPrimitive.Item
|
|
222
211
|
className={cn(
|
|
223
|
-
"group/command-item relative flex items-center gap-
|
|
224
|
-
"px-2 py-1.5",
|
|
225
|
-
"rounded-sm outline-hidden",
|
|
226
|
-
"text-sm",
|
|
227
|
-
"cursor-default select-none",
|
|
228
|
-
"aria-disabled:opacity-50",
|
|
229
|
-
"aria-selected:bg-accent aria-selected:text-accent-foreground",
|
|
230
|
-
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
231
|
-
"[&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
212
|
+
"group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-selected:bg-muted data-selected:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:**:[svg]:text-foreground",
|
|
232
213
|
className,
|
|
233
214
|
)}
|
|
234
215
|
data-slot="command-item"
|
|
235
216
|
{...props}
|
|
236
|
-
|
|
217
|
+
>
|
|
218
|
+
{children}
|
|
219
|
+
<CheckIcon className="ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-checked/command-item:opacity-100" />
|
|
220
|
+
</CommandPrimitive.Item>
|
|
237
221
|
);
|
|
238
222
|
}
|
|
239
223
|
|
|
@@ -252,7 +236,7 @@ type CommandLoadingProps = ComponentProps<typeof CommandPrimitive.Loading>;
|
|
|
252
236
|
function CommandLoading({ className, ...props }: CommandLoadingProps): JSX.Element {
|
|
253
237
|
return (
|
|
254
238
|
<CommandPrimitive.Loading
|
|
255
|
-
className={cn("flex justify-center
|
|
239
|
+
className={cn("flex justify-center p-2", className)}
|
|
256
240
|
data-slot="command-loading"
|
|
257
241
|
{...props}
|
|
258
242
|
/>
|
|
@@ -274,7 +258,10 @@ type CommandShortcutProps = ComponentProps<"span">;
|
|
|
274
258
|
function CommandShortcut({ className, ...props }: CommandShortcutProps): JSX.Element {
|
|
275
259
|
return (
|
|
276
260
|
<span
|
|
277
|
-
className={cn(
|
|
261
|
+
className={cn(
|
|
262
|
+
"ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground",
|
|
263
|
+
className,
|
|
264
|
+
)}
|
|
278
265
|
data-slot="command-shortcut"
|
|
279
266
|
{...props}
|
|
280
267
|
/>
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CheckIcon, ChevronRightIcon } from "lucide-react";
|
|
2
|
+
import { ContextMenu as ContextMenuPrimitive } from "radix-ui";
|
|
3
3
|
import type { ComponentProps, JSX } from "react";
|
|
4
4
|
|
|
5
5
|
import { cn } from "#/lib/utils";
|
|
6
|
-
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
7
|
-
import { CheckIcon, ChevronRightIcon, DotIcon } from "lucide-react";
|
|
8
6
|
|
|
9
7
|
/* -----------------------------------------------------------------------------
|
|
10
8
|
* Component: ContextMenu
|
|
@@ -34,8 +32,14 @@ type ContextMenuTriggerProps = ComponentProps<typeof ContextMenuPrimitive.Trigge
|
|
|
34
32
|
/**
|
|
35
33
|
* @since 0.3.16-canary.0
|
|
36
34
|
*/
|
|
37
|
-
function ContextMenuTrigger({ ...props }: ContextMenuTriggerProps): JSX.Element {
|
|
38
|
-
return
|
|
35
|
+
function ContextMenuTrigger({ className, ...props }: ContextMenuTriggerProps): JSX.Element {
|
|
36
|
+
return (
|
|
37
|
+
<ContextMenuPrimitive.Trigger
|
|
38
|
+
className={cn("select-none", className)}
|
|
39
|
+
data-slot="context-menu-trigger"
|
|
40
|
+
{...props}
|
|
41
|
+
/>
|
|
42
|
+
);
|
|
39
43
|
}
|
|
40
44
|
|
|
41
45
|
/* -----------------------------------------------------------------------------
|
|
@@ -93,33 +97,18 @@ function ContextMenuRadioGroup({ ...props }: ContextMenuRadioGroupProps): JSX.El
|
|
|
93
97
|
/**
|
|
94
98
|
* @since 0.3.16-canary.0
|
|
95
99
|
*/
|
|
96
|
-
interface ContextMenuSubTriggerProps extends ComponentProps<
|
|
97
|
-
typeof ContextMenuPrimitive.SubTrigger
|
|
98
|
-
> {
|
|
100
|
+
interface ContextMenuSubTriggerProps extends ComponentProps<typeof ContextMenuPrimitive.SubTrigger> {
|
|
99
101
|
inset?: boolean;
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
/**
|
|
103
105
|
* @since 0.3.16-canary.0
|
|
104
106
|
*/
|
|
105
|
-
function ContextMenuSubTrigger({
|
|
106
|
-
children,
|
|
107
|
-
className,
|
|
108
|
-
inset,
|
|
109
|
-
...props
|
|
110
|
-
}: ContextMenuSubTriggerProps): JSX.Element {
|
|
107
|
+
function ContextMenuSubTrigger({ children, className, inset, ...props }: ContextMenuSubTriggerProps): JSX.Element {
|
|
111
108
|
return (
|
|
112
109
|
<ContextMenuPrimitive.SubTrigger
|
|
113
110
|
className={cn(
|
|
114
|
-
"flex items-center gap-
|
|
115
|
-
"px-2 py-1.5",
|
|
116
|
-
"rounded-sm outline-hidden",
|
|
117
|
-
"text-sm",
|
|
118
|
-
"cursor-default select-none",
|
|
119
|
-
"focus:bg-accent focus:text-accent-foreground",
|
|
120
|
-
"data-inset:pl-8",
|
|
121
|
-
"data-open:bg-accent data-open:text-accent-foreground",
|
|
122
|
-
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
111
|
+
"flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
123
112
|
className,
|
|
124
113
|
)}
|
|
125
114
|
data-inset={inset}
|
|
@@ -127,7 +116,7 @@ function ContextMenuSubTrigger({
|
|
|
127
116
|
{...props}
|
|
128
117
|
>
|
|
129
118
|
{children}
|
|
130
|
-
<ChevronRightIcon className=
|
|
119
|
+
<ChevronRightIcon className="ml-auto rtl:rotate-180" />
|
|
131
120
|
</ContextMenuPrimitive.SubTrigger>
|
|
132
121
|
);
|
|
133
122
|
}
|
|
@@ -146,31 +135,14 @@ type ContextMenuSubContentProps = ComponentProps<typeof ContextMenuPrimitive.Sub
|
|
|
146
135
|
*/
|
|
147
136
|
function ContextMenuSubContent({ className, ...props }: ContextMenuSubContentProps): JSX.Element {
|
|
148
137
|
return (
|
|
149
|
-
<ContextMenuPrimitive.
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
"data-open:data-side-top:slide-in-from-bottom-2",
|
|
158
|
-
"data-open:data-side-right:slide-in-from-left-2",
|
|
159
|
-
"data-open:data-side-bottom:slide-in-from-top-2",
|
|
160
|
-
"data-open:data-side-left:slide-in-from-right-2",
|
|
161
|
-
"data-closed:animate-out data-closed:duration-150 data-closed:fade-out-0 data-closed:zoom-out-95",
|
|
162
|
-
"data-closed:data-side-top:slide-out-to-bottom-2",
|
|
163
|
-
"data-closed:data-side-right:slide-out-to-left-2",
|
|
164
|
-
"data-closed:data-side-bottom:slide-out-to-top-2",
|
|
165
|
-
"data-closed:data-side-left:slide-out-to-right-2",
|
|
166
|
-
"motion-reduce:animate-none motion-reduce:transition-none motion-reduce:duration-0",
|
|
167
|
-
"origin-(--radix-context-menu-content-transform-origin)",
|
|
168
|
-
className,
|
|
169
|
-
)}
|
|
170
|
-
data-slot="context-menu-sub-content"
|
|
171
|
-
{...props}
|
|
172
|
-
/>
|
|
173
|
-
</ContextMenuPrimitive.Portal>
|
|
138
|
+
<ContextMenuPrimitive.SubContent
|
|
139
|
+
className={cn(
|
|
140
|
+
"z-50 min-w-32 origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg ease-snappy data-open:animate-in data-open:animation-duration-menu-in data-open:fade-in-0 data-open:zoom-in-95 data-open:data-side-top:slide-in-from-bottom-2 data-open:data-side-right:slide-in-from-left-2 data-open:data-side-bottom:slide-in-from-top-2 data-open:data-side-left:slide-in-from-right-2 data-closed:animate-out data-closed:ease-exit data-closed:animation-duration-menu-out data-closed:fade-out-0 data-closed:zoom-out-95 data-closed:data-side-top:slide-out-to-bottom-2 data-closed:data-side-right:slide-out-to-left-2 data-closed:data-side-bottom:slide-out-to-top-2 data-closed:data-side-left:slide-out-to-right-2",
|
|
141
|
+
className,
|
|
142
|
+
)}
|
|
143
|
+
data-slot="context-menu-sub-content"
|
|
144
|
+
{...props}
|
|
145
|
+
/>
|
|
174
146
|
);
|
|
175
147
|
}
|
|
176
148
|
|
|
@@ -188,20 +160,10 @@ type ContextMenuContentProps = ComponentProps<typeof ContextMenuPrimitive.Conten
|
|
|
188
160
|
*/
|
|
189
161
|
function ContextMenuContent({ className, ...props }: ContextMenuContentProps): JSX.Element {
|
|
190
162
|
return (
|
|
191
|
-
<ContextMenuPrimitive.Portal>
|
|
163
|
+
<ContextMenuPrimitive.Portal data-slot="context-menu-portal">
|
|
192
164
|
<ContextMenuPrimitive.Content
|
|
193
165
|
className={cn(
|
|
194
|
-
"z-50",
|
|
195
|
-
"max-h-(--radix-context-menu-content-available-height) min-w-32 overflow-x-hidden overflow-y-auto p-1",
|
|
196
|
-
"rounded-lg border",
|
|
197
|
-
"bg-popover text-popover-foreground shadow-lg",
|
|
198
|
-
"ease-snappy data-open:animate-in data-open:duration-200 data-open:fade-in-0 data-open:zoom-in-95",
|
|
199
|
-
"data-open:data-side-top:slide-in-from-bottom-2",
|
|
200
|
-
"data-open:data-side-right:slide-in-from-left-2",
|
|
201
|
-
"data-open:data-side-bottom:slide-in-from-top-2",
|
|
202
|
-
"data-open:data-side-left:slide-in-from-right-2",
|
|
203
|
-
"motion-reduce:animate-none motion-reduce:transition-none motion-reduce:duration-0",
|
|
204
|
-
"origin-(--radix-context-menu-content-transform-origin)",
|
|
166
|
+
"z-50 max-h-(--radix-context-menu-content-available-height) min-w-36 origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 ease-snappy data-open:animate-in data-open:animation-duration-menu-in data-open:fade-in-0 data-open:zoom-in-95 data-open:data-side-top:slide-in-from-bottom-2 data-open:data-side-right:slide-in-from-left-2 data-open:data-side-bottom:slide-in-from-top-2 data-open:data-side-left:slide-in-from-right-2 data-closed:ease-exit",
|
|
205
167
|
className,
|
|
206
168
|
)}
|
|
207
169
|
data-slot="context-menu-content"
|
|
@@ -226,29 +188,11 @@ interface ContextMenuItemProps extends ComponentProps<typeof ContextMenuPrimitiv
|
|
|
226
188
|
/**
|
|
227
189
|
* @since 0.3.16-canary.0
|
|
228
190
|
*/
|
|
229
|
-
function ContextMenuItem({
|
|
230
|
-
className,
|
|
231
|
-
inset,
|
|
232
|
-
variant,
|
|
233
|
-
...props
|
|
234
|
-
}: ContextMenuItemProps): JSX.Element {
|
|
191
|
+
function ContextMenuItem({ className, inset, variant = "default", ...props }: ContextMenuItemProps): JSX.Element {
|
|
235
192
|
return (
|
|
236
193
|
<ContextMenuPrimitive.Item
|
|
237
194
|
className={cn(
|
|
238
|
-
"group/context-menu-item relative flex items-center gap-
|
|
239
|
-
"px-2 py-1.5",
|
|
240
|
-
"rounded-sm outline-hidden",
|
|
241
|
-
"text-sm",
|
|
242
|
-
"cursor-default select-none",
|
|
243
|
-
"focus:bg-accent focus:text-accent-foreground",
|
|
244
|
-
"aria-disabled:opacity-50",
|
|
245
|
-
"data-inset:pl-8",
|
|
246
|
-
"data-[variant=destructive]:text-destructive",
|
|
247
|
-
"data-[variant=destructive]:focus:bg-destructive/10",
|
|
248
|
-
"dark:data-[variant=destructive]:focus:bg-destructive/20",
|
|
249
|
-
"data-[variant=destructive]:[&_svg:not([class*='text-'])]:text-destructive/80",
|
|
250
|
-
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
251
|
-
"[&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
195
|
+
"group/context-menu-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive",
|
|
252
196
|
className,
|
|
253
197
|
)}
|
|
254
198
|
data-inset={inset}
|
|
@@ -266,7 +210,9 @@ function ContextMenuItem({
|
|
|
266
210
|
/**
|
|
267
211
|
* @since 0.3.16-canary.0
|
|
268
212
|
*/
|
|
269
|
-
|
|
213
|
+
interface ContextMenuCheckboxItemProps extends ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> {
|
|
214
|
+
inset?: boolean;
|
|
215
|
+
}
|
|
270
216
|
|
|
271
217
|
/**
|
|
272
218
|
* @since 0.3.16-canary.0
|
|
@@ -275,28 +221,23 @@ function ContextMenuCheckboxItem({
|
|
|
275
221
|
checked,
|
|
276
222
|
children,
|
|
277
223
|
className,
|
|
224
|
+
inset,
|
|
278
225
|
...props
|
|
279
226
|
}: ContextMenuCheckboxItemProps): JSX.Element {
|
|
280
227
|
return (
|
|
281
228
|
<ContextMenuPrimitive.CheckboxItem
|
|
282
229
|
checked={checked}
|
|
283
230
|
className={cn(
|
|
284
|
-
"
|
|
285
|
-
"py-1.5 pr-2 pl-8",
|
|
286
|
-
"rounded-sm outline-hidden",
|
|
287
|
-
"text-sm",
|
|
288
|
-
"cursor-default select-none",
|
|
289
|
-
"focus:bg-accent focus:text-accent-foreground",
|
|
290
|
-
"aria-disabled:opacity-50",
|
|
291
|
-
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
231
|
+
"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
292
232
|
className,
|
|
293
233
|
)}
|
|
234
|
+
data-inset={inset}
|
|
294
235
|
data-slot="context-menu-checkbox-item"
|
|
295
236
|
{...props}
|
|
296
237
|
>
|
|
297
|
-
<span className=
|
|
238
|
+
<span className="pointer-events-none absolute right-2">
|
|
298
239
|
<ContextMenuPrimitive.ItemIndicator>
|
|
299
|
-
<CheckIcon
|
|
240
|
+
<CheckIcon />
|
|
300
241
|
</ContextMenuPrimitive.ItemIndicator>
|
|
301
242
|
</span>
|
|
302
243
|
{children}
|
|
@@ -311,35 +252,27 @@ function ContextMenuCheckboxItem({
|
|
|
311
252
|
/**
|
|
312
253
|
* @since 0.3.16-canary.0
|
|
313
254
|
*/
|
|
314
|
-
|
|
255
|
+
interface ContextMenuRadioItemProps extends ComponentProps<typeof ContextMenuPrimitive.RadioItem> {
|
|
256
|
+
inset?: boolean;
|
|
257
|
+
}
|
|
315
258
|
|
|
316
259
|
/**
|
|
317
260
|
* @since 0.3.16-canary.0
|
|
318
261
|
*/
|
|
319
|
-
function ContextMenuRadioItem({
|
|
320
|
-
children,
|
|
321
|
-
className,
|
|
322
|
-
...props
|
|
323
|
-
}: ContextMenuRadioItemProps): JSX.Element {
|
|
262
|
+
function ContextMenuRadioItem({ children, className, inset, ...props }: ContextMenuRadioItemProps): JSX.Element {
|
|
324
263
|
return (
|
|
325
264
|
<ContextMenuPrimitive.RadioItem
|
|
326
265
|
className={cn(
|
|
327
|
-
"
|
|
328
|
-
"py-1.5 pr-2 pl-8",
|
|
329
|
-
"rounded-sm outline-hidden",
|
|
330
|
-
"text-sm",
|
|
331
|
-
"cursor-default select-none",
|
|
332
|
-
"focus:bg-accent focus:text-accent-foreground",
|
|
333
|
-
"aria-disabled:opacity-50",
|
|
334
|
-
"[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
266
|
+
"relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:pl-8 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
335
267
|
className,
|
|
336
268
|
)}
|
|
269
|
+
data-inset={inset}
|
|
337
270
|
data-slot="context-menu-radio-item"
|
|
338
271
|
{...props}
|
|
339
272
|
>
|
|
340
|
-
<span className=
|
|
273
|
+
<span className="pointer-events-none absolute right-2">
|
|
341
274
|
<ContextMenuPrimitive.ItemIndicator>
|
|
342
|
-
<
|
|
275
|
+
<CheckIcon />
|
|
343
276
|
</ContextMenuPrimitive.ItemIndicator>
|
|
344
277
|
</span>
|
|
345
278
|
{children}
|
|
@@ -364,13 +297,7 @@ interface ContextMenuLabelProps extends ComponentProps<typeof ContextMenuPrimiti
|
|
|
364
297
|
function ContextMenuLabel({ className, inset, ...props }: ContextMenuLabelProps): JSX.Element {
|
|
365
298
|
return (
|
|
366
299
|
<ContextMenuPrimitive.Label
|
|
367
|
-
className={cn(
|
|
368
|
-
"flex items-center gap-x-2",
|
|
369
|
-
"px-2 py-1.5",
|
|
370
|
-
"text-sm font-semibold",
|
|
371
|
-
"data-inset:pl-8",
|
|
372
|
-
className,
|
|
373
|
-
)}
|
|
300
|
+
className={cn("px-2 py-1.5 text-xs font-medium text-muted-foreground data-inset:pl-8", className)}
|
|
374
301
|
data-inset={inset}
|
|
375
302
|
data-slot="context-menu-label"
|
|
376
303
|
{...props}
|
|
@@ -393,7 +320,7 @@ type ContextMenuSeparatorProps = ComponentProps<typeof ContextMenuPrimitive.Sepa
|
|
|
393
320
|
function ContextMenuSeparator({ className, ...props }: ContextMenuSeparatorProps): JSX.Element {
|
|
394
321
|
return (
|
|
395
322
|
<ContextMenuPrimitive.Separator
|
|
396
|
-
className={cn("mx-
|
|
323
|
+
className={cn("-mx-1 my-1 h-px bg-border", className)}
|
|
397
324
|
data-slot="context-menu-separator"
|
|
398
325
|
{...props}
|
|
399
326
|
/>
|
|
@@ -416,9 +343,7 @@ function ContextMenuShortcut({ className, ...props }: ContextMenuShortcutProps):
|
|
|
416
343
|
return (
|
|
417
344
|
<span
|
|
418
345
|
className={cn(
|
|
419
|
-
"ml-auto",
|
|
420
|
-
"text-xs tracking-widest text-muted-foreground",
|
|
421
|
-
"group-data-[variant=destructive]/context-menu-item:text-destructive/80",
|
|
346
|
+
"ml-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground",
|
|
422
347
|
className,
|
|
423
348
|
)}
|
|
424
349
|
data-slot="context-menu-shortcut"
|
|
@@ -441,11 +366,7 @@ type ContextMenuArrowProps = ComponentProps<typeof ContextMenuPrimitive.Arrow>;
|
|
|
441
366
|
*/
|
|
442
367
|
function ContextMenuArrow({ className, ...props }: ContextMenuArrowProps): JSX.Element {
|
|
443
368
|
return (
|
|
444
|
-
<ContextMenuPrimitive.Arrow
|
|
445
|
-
className={cn("fill-popover", className)}
|
|
446
|
-
data-slot="context-menu-arrow"
|
|
447
|
-
{...props}
|
|
448
|
-
/>
|
|
369
|
+
<ContextMenuPrimitive.Arrow className={cn("fill-popover", className)} data-slot="context-menu-arrow" {...props} />
|
|
449
370
|
);
|
|
450
371
|
}
|
|
451
372
|
|