@vendure/dashboard 3.3.6-master-202507030835 → 3.3.6-master-202507031258
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/package.json +26 -39
- package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +7 -7
- package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +3 -8
- package/src/lib/components/data-table/data-table-bulk-actions.tsx +9 -3
- package/src/lib/components/data-table/data-table.tsx +3 -2
- package/src/lib/components/shared/translatable-form-field.tsx +2 -1
- package/src/lib/components/ui/accordion.tsx +45 -50
- package/src/lib/components/ui/alert-dialog.tsx +93 -122
- package/src/lib/components/ui/alert.tsx +48 -54
- package/src/lib/components/ui/badge.tsx +29 -37
- package/src/lib/components/ui/breadcrumb.tsx +82 -89
- package/src/lib/components/ui/button.tsx +51 -52
- package/src/lib/components/ui/calendar.tsx +435 -196
- package/src/lib/components/ui/card.tsx +33 -78
- package/src/lib/components/ui/checkbox.tsx +23 -28
- package/src/lib/components/ui/collapsible.tsx +2 -0
- package/src/lib/components/ui/command.tsx +114 -159
- package/src/lib/components/ui/dialog.tsx +90 -115
- package/src/lib/components/ui/dropdown-menu.tsx +170 -207
- package/src/lib/components/ui/form.tsx +114 -138
- package/src/lib/components/ui/hover-card.tsx +26 -32
- package/src/lib/components/ui/input.tsx +15 -17
- package/src/lib/components/ui/label.tsx +16 -19
- package/src/lib/components/ui/pagination.tsx +87 -108
- package/src/lib/components/ui/popover.tsx +28 -36
- package/src/lib/components/ui/scroll-area.tsx +40 -48
- package/src/lib/components/ui/separator.tsx +20 -22
- package/src/lib/components/ui/sheet.tsx +91 -110
- package/src/lib/components/ui/sidebar.tsx +622 -652
- package/src/lib/components/ui/skeleton.tsx +10 -10
- package/src/lib/components/ui/sonner.tsx +11 -7
- package/src/lib/components/ui/switch.tsx +22 -27
- package/src/lib/components/ui/table.tsx +64 -96
- package/src/lib/components/ui/tabs.tsx +38 -56
- package/src/lib/components/ui/textarea.tsx +14 -14
- package/src/lib/components/ui/tooltip.tsx +37 -45
- package/src/lib/framework/page/detail-page.tsx +26 -20
- package/src/lib/graphql/graphql-env.d.ts +1 -1
- package/src/lib/components/ui/aspect-ratio.tsx +0 -9
- package/src/lib/components/ui/avatar.tsx +0 -53
- package/src/lib/components/ui/carousel.tsx +0 -241
- package/src/lib/components/ui/chart.tsx +0 -351
- package/src/lib/components/ui/context-menu.tsx +0 -252
- package/src/lib/components/ui/drawer.tsx +0 -133
- package/src/lib/components/ui/input-otp.tsx +0 -77
- package/src/lib/components/ui/menubar.tsx +0 -274
- package/src/lib/components/ui/navigation-menu.tsx +0 -168
- package/src/lib/components/ui/progress.tsx +0 -29
- package/src/lib/components/ui/radio-group.tsx +0 -45
- package/src/lib/components/ui/resizable.tsx +0 -54
- package/src/lib/components/ui/slider.tsx +0 -63
- package/src/lib/components/ui/toggle-group.tsx +0 -73
- package/src/lib/components/ui/toggle.tsx +0 -45
|
@@ -1,92 +1,47 @@
|
|
|
1
|
-
import * as React from
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
|
|
3
|
-
import { cn } from
|
|
3
|
+
import { cn } from '@/vdb/lib/utils.js';
|
|
4
4
|
|
|
5
|
-
function Card({ className, ...props }: React.ComponentProps<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{...props}
|
|
14
|
-
/>
|
|
15
|
-
)
|
|
5
|
+
function Card({ className, ...props }: React.ComponentProps<'div'>) {
|
|
6
|
+
return (
|
|
7
|
+
<div
|
|
8
|
+
data-slot="card"
|
|
9
|
+
className={cn('bg-card text-card-foreground rounded-xl border shadow-sm', className)}
|
|
10
|
+
{...props}
|
|
11
|
+
/>
|
|
12
|
+
);
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
function CardHeader({ className, ...props }: React.ComponentProps<
|
|
19
|
-
|
|
20
|
-
<div
|
|
21
|
-
data-slot="card-header"
|
|
22
|
-
className={cn(
|
|
23
|
-
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
|
24
|
-
className
|
|
25
|
-
)}
|
|
26
|
-
{...props}
|
|
27
|
-
/>
|
|
28
|
-
)
|
|
15
|
+
function CardHeader({ className, ...props }: React.ComponentProps<'div'>) {
|
|
16
|
+
return <div data-slot="card-header" className={cn('flex flex-col gap-1.5 p-6', className)} {...props} />;
|
|
29
17
|
}
|
|
30
18
|
|
|
31
|
-
function CardTitle({ className, ...props }: React.ComponentProps<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
19
|
+
function CardTitle({ className, ...props }: React.ComponentProps<'div'>) {
|
|
20
|
+
return (
|
|
21
|
+
<div
|
|
22
|
+
data-slot="card-title"
|
|
23
|
+
className={cn('leading-none font-semibold tracking-tight', className)}
|
|
24
|
+
{...props}
|
|
25
|
+
/>
|
|
26
|
+
);
|
|
39
27
|
}
|
|
40
28
|
|
|
41
|
-
function CardDescription({ className, ...props }: React.ComponentProps<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
function CardDescription({ className, ...props }: React.ComponentProps<'div'>) {
|
|
30
|
+
return (
|
|
31
|
+
<div
|
|
32
|
+
data-slot="card-description"
|
|
33
|
+
className={cn('text-muted-foreground text-sm', className)}
|
|
34
|
+
{...props}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
49
37
|
}
|
|
50
38
|
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
<div
|
|
54
|
-
data-slot="card-action"
|
|
55
|
-
className={cn(
|
|
56
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
57
|
-
className
|
|
58
|
-
)}
|
|
59
|
-
{...props}
|
|
60
|
-
/>
|
|
61
|
-
)
|
|
39
|
+
function CardContent({ className, ...props }: React.ComponentProps<'div'>) {
|
|
40
|
+
return <div data-slot="card-content" className={cn('p-6 pt-0', className)} {...props} />;
|
|
62
41
|
}
|
|
63
42
|
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
<div
|
|
67
|
-
data-slot="card-content"
|
|
68
|
-
className={cn("px-6", className)}
|
|
69
|
-
{...props}
|
|
70
|
-
/>
|
|
71
|
-
)
|
|
43
|
+
function CardFooter({ className, ...props }: React.ComponentProps<'div'>) {
|
|
44
|
+
return <div data-slot="card-footer" className={cn('flex items-center p-6 pt-0', className)} {...props} />;
|
|
72
45
|
}
|
|
73
46
|
|
|
74
|
-
|
|
75
|
-
return (
|
|
76
|
-
<div
|
|
77
|
-
data-slot="card-footer"
|
|
78
|
-
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
|
79
|
-
{...props}
|
|
80
|
-
/>
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export {
|
|
85
|
-
Card,
|
|
86
|
-
CardHeader,
|
|
87
|
-
CardFooter,
|
|
88
|
-
CardTitle,
|
|
89
|
-
CardAction,
|
|
90
|
-
CardDescription,
|
|
91
|
-
CardContent,
|
|
92
|
-
}
|
|
47
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
@@ -1,32 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
2
|
+
import { CheckIcon } from 'lucide-react';
|
|
3
|
+
import * as React from 'react';
|
|
2
4
|
|
|
3
|
-
import
|
|
4
|
-
import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
|
|
5
|
-
import { CheckIcon } from "lucide-react"
|
|
5
|
+
import { cn } from '@/vdb/lib/utils.js';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
>
|
|
26
|
-
<CheckIcon className="size-3.5" />
|
|
27
|
-
</CheckboxPrimitive.Indicator>
|
|
28
|
-
</CheckboxPrimitive.Root>
|
|
29
|
-
)
|
|
7
|
+
function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {
|
|
8
|
+
return (
|
|
9
|
+
<CheckboxPrimitive.Root
|
|
10
|
+
data-slot="checkbox"
|
|
11
|
+
className={cn(
|
|
12
|
+
'peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
|
|
13
|
+
className,
|
|
14
|
+
)}
|
|
15
|
+
{...props}
|
|
16
|
+
>
|
|
17
|
+
<CheckboxPrimitive.Indicator
|
|
18
|
+
data-slot="checkbox-indicator"
|
|
19
|
+
className="flex items-center justify-center text-current transition-none"
|
|
20
|
+
>
|
|
21
|
+
<CheckIcon className="size-3.5" />
|
|
22
|
+
</CheckboxPrimitive.Indicator>
|
|
23
|
+
</CheckboxPrimitive.Root>
|
|
24
|
+
);
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
export { Checkbox }
|
|
27
|
+
export { Checkbox };
|
|
@@ -1,184 +1,139 @@
|
|
|
1
|
-
|
|
1
|
+
import { Command as CommandPrimitive } from 'cmdk';
|
|
2
|
+
import { SearchIcon } from 'lucide-react';
|
|
3
|
+
import * as React from 'react';
|
|
2
4
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import { Command as CommandPrimitive } from "cmdk"
|
|
5
|
-
import { SearchIcon } from "lucide-react"
|
|
6
|
-
|
|
7
|
-
import { cn } from "@/vdb/lib/utils"
|
|
8
5
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
} from
|
|
6
|
+
Dialog,
|
|
7
|
+
DialogContent,
|
|
8
|
+
DialogDescription,
|
|
9
|
+
DialogHeader,
|
|
10
|
+
DialogTitle,
|
|
11
|
+
} from '@/vdb/components/ui/dialog.js';
|
|
12
|
+
import { cn } from '@/vdb/lib/utils.js';
|
|
15
13
|
|
|
16
|
-
function Command({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{...props}
|
|
28
|
-
/>
|
|
29
|
-
)
|
|
14
|
+
function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {
|
|
15
|
+
return (
|
|
16
|
+
<CommandPrimitive
|
|
17
|
+
data-slot="command"
|
|
18
|
+
className={cn(
|
|
19
|
+
'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
{...props}
|
|
23
|
+
/>
|
|
24
|
+
);
|
|
30
25
|
}
|
|
31
26
|
|
|
32
27
|
function CommandDialog({
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
showCloseButton = true,
|
|
38
|
-
...props
|
|
28
|
+
title = 'Command Palette',
|
|
29
|
+
description = 'Search for a command to run...',
|
|
30
|
+
children,
|
|
31
|
+
...props
|
|
39
32
|
}: React.ComponentProps<typeof Dialog> & {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
className?: string
|
|
43
|
-
showCloseButton?: boolean
|
|
33
|
+
title?: string;
|
|
34
|
+
description?: string;
|
|
44
35
|
}) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</DialogContent>
|
|
59
|
-
</Dialog>
|
|
60
|
-
)
|
|
36
|
+
return (
|
|
37
|
+
<Dialog {...props}>
|
|
38
|
+
<DialogHeader className="sr-only">
|
|
39
|
+
<DialogTitle>{title}</DialogTitle>
|
|
40
|
+
<DialogDescription>{description}</DialogDescription>
|
|
41
|
+
</DialogHeader>
|
|
42
|
+
<DialogContent className="overflow-hidden p-0">
|
|
43
|
+
<Command className="[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[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">
|
|
44
|
+
{children}
|
|
45
|
+
</Command>
|
|
46
|
+
</DialogContent>
|
|
47
|
+
</Dialog>
|
|
48
|
+
);
|
|
61
49
|
}
|
|
62
50
|
|
|
63
|
-
function CommandInput({
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
className
|
|
78
|
-
)}
|
|
79
|
-
{...props}
|
|
80
|
-
/>
|
|
81
|
-
</div>
|
|
82
|
-
)
|
|
51
|
+
function CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>) {
|
|
52
|
+
return (
|
|
53
|
+
<div data-slot="command-input-wrapper" className="flex h-9 items-center gap-2 border-b px-3">
|
|
54
|
+
<SearchIcon className="size-4 shrink-0 opacity-50" />
|
|
55
|
+
<CommandPrimitive.Input
|
|
56
|
+
data-slot="command-input"
|
|
57
|
+
className={cn(
|
|
58
|
+
'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
|
|
59
|
+
className,
|
|
60
|
+
)}
|
|
61
|
+
{...props}
|
|
62
|
+
/>
|
|
63
|
+
</div>
|
|
64
|
+
);
|
|
83
65
|
}
|
|
84
66
|
|
|
85
|
-
function CommandList({
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
|
|
94
|
-
className
|
|
95
|
-
)}
|
|
96
|
-
{...props}
|
|
97
|
-
/>
|
|
98
|
-
)
|
|
67
|
+
function CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {
|
|
68
|
+
return (
|
|
69
|
+
<CommandPrimitive.List
|
|
70
|
+
data-slot="command-list"
|
|
71
|
+
className={cn('max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto', className)}
|
|
72
|
+
{...props}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
99
75
|
}
|
|
100
76
|
|
|
101
|
-
function CommandEmpty({
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
<CommandPrimitive.Empty
|
|
106
|
-
data-slot="command-empty"
|
|
107
|
-
className="py-6 text-center text-sm"
|
|
108
|
-
{...props}
|
|
109
|
-
/>
|
|
110
|
-
)
|
|
77
|
+
function CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {
|
|
78
|
+
return (
|
|
79
|
+
<CommandPrimitive.Empty data-slot="command-empty" className="py-6 text-center text-sm" {...props} />
|
|
80
|
+
);
|
|
111
81
|
}
|
|
112
82
|
|
|
113
|
-
function CommandGroup({
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
{...props}
|
|
125
|
-
/>
|
|
126
|
-
)
|
|
83
|
+
function CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>) {
|
|
84
|
+
return (
|
|
85
|
+
<CommandPrimitive.Group
|
|
86
|
+
data-slot="command-group"
|
|
87
|
+
className={cn(
|
|
88
|
+
'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',
|
|
89
|
+
className,
|
|
90
|
+
)}
|
|
91
|
+
{...props}
|
|
92
|
+
/>
|
|
93
|
+
);
|
|
127
94
|
}
|
|
128
95
|
|
|
129
|
-
function CommandSeparator({
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
{...props}
|
|
138
|
-
/>
|
|
139
|
-
)
|
|
96
|
+
function CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>) {
|
|
97
|
+
return (
|
|
98
|
+
<CommandPrimitive.Separator
|
|
99
|
+
data-slot="command-separator"
|
|
100
|
+
className={cn('bg-border -mx-1 h-px', className)}
|
|
101
|
+
{...props}
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
140
104
|
}
|
|
141
105
|
|
|
142
|
-
function CommandItem({
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
{...props}
|
|
154
|
-
/>
|
|
155
|
-
)
|
|
106
|
+
function CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {
|
|
107
|
+
return (
|
|
108
|
+
<CommandPrimitive.Item
|
|
109
|
+
data-slot="command-item"
|
|
110
|
+
className={cn(
|
|
111
|
+
"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground 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 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
112
|
+
className,
|
|
113
|
+
)}
|
|
114
|
+
{...props}
|
|
115
|
+
/>
|
|
116
|
+
);
|
|
156
117
|
}
|
|
157
118
|
|
|
158
|
-
function CommandShortcut({
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
167
|
-
className
|
|
168
|
-
)}
|
|
169
|
-
{...props}
|
|
170
|
-
/>
|
|
171
|
-
)
|
|
119
|
+
function CommandShortcut({ className, ...props }: React.ComponentProps<'span'>) {
|
|
120
|
+
return (
|
|
121
|
+
<span
|
|
122
|
+
data-slot="command-shortcut"
|
|
123
|
+
className={cn('text-muted-foreground ml-auto text-xs tracking-widest', className)}
|
|
124
|
+
{...props}
|
|
125
|
+
/>
|
|
126
|
+
);
|
|
172
127
|
}
|
|
173
128
|
|
|
174
129
|
export {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
130
|
+
Command,
|
|
131
|
+
CommandDialog,
|
|
132
|
+
CommandEmpty,
|
|
133
|
+
CommandGroup,
|
|
134
|
+
CommandInput,
|
|
135
|
+
CommandItem,
|
|
136
|
+
CommandList,
|
|
137
|
+
CommandSeparator,
|
|
138
|
+
CommandShortcut,
|
|
139
|
+
};
|