@object-ui/components 0.3.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +47 -0
- package/README.md +13 -0
- package/dist/index.css +1 -1
- package/dist/index.js +34610 -24854
- package/dist/index.umd.cjs +53 -32
- package/dist/src/SchemaRenderer.d.ts +3 -0
- package/dist/src/{ui → custom}/button-group.d.ts +1 -1
- package/dist/src/custom/field.d.ts +19 -0
- package/dist/src/custom/index.d.ts +12 -0
- package/dist/src/custom/input-group.d.ts +14 -0
- package/dist/src/{ui → custom}/item.d.ts +1 -1
- package/dist/src/custom/native-select.d.ts +12 -0
- package/dist/src/custom/sort-builder.d.ts +22 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/renderers/data-display/table.d.ts +1 -1
- package/dist/src/renderers/layout/page.d.ts +1 -1
- package/dist/src/renderers/placeholders.d.ts +1 -1
- package/dist/src/ui/accordion.d.ts +4 -4
- package/dist/src/ui/alert-dialog.d.ts +17 -11
- package/dist/src/ui/alert.d.ts +4 -5
- package/dist/src/ui/aspect-ratio.d.ts +1 -1
- package/dist/src/ui/avatar.d.ts +3 -3
- package/dist/src/ui/badge.d.ts +3 -3
- package/dist/src/ui/breadcrumb.d.ts +16 -8
- package/dist/src/ui/calendar.d.ts +7 -7
- package/dist/src/ui/card.d.ts +7 -8
- package/dist/src/ui/carousel.d.ts +5 -6
- package/dist/src/ui/chart.d.ts +62 -0
- package/dist/src/ui/checkbox.d.ts +1 -1
- package/dist/src/ui/collapsible.d.ts +3 -3
- package/dist/src/ui/command.d.ts +78 -16
- package/dist/src/ui/context-menu.d.ts +14 -12
- package/dist/src/ui/dialog.d.ts +17 -13
- package/dist/src/ui/drawer.d.ts +19 -10
- package/dist/src/ui/dropdown-menu.d.ts +20 -18
- package/dist/src/ui/form.d.ts +6 -7
- package/dist/src/ui/hover-card.d.ts +3 -3
- package/dist/src/ui/index.d.ts +2 -8
- package/dist/src/ui/input-otp.d.ts +30 -7
- package/dist/src/ui/label.d.ts +2 -1
- package/dist/src/ui/menubar.d.ts +19 -17
- package/dist/src/ui/navigation-menu.d.ts +9 -11
- package/dist/src/ui/pagination.d.ts +25 -10
- package/dist/src/ui/popover.d.ts +4 -5
- package/dist/src/ui/progress.d.ts +1 -1
- package/dist/src/ui/radio-group.d.ts +2 -2
- package/dist/src/ui/resizable.d.ts +5 -8
- package/dist/src/ui/scroll-area.d.ts +2 -2
- package/dist/src/ui/select.d.ts +11 -13
- package/dist/src/ui/sheet.d.ts +23 -11
- package/dist/src/ui/sidebar.d.ts +27 -29
- package/dist/src/ui/skeleton.d.ts +1 -1
- package/dist/src/ui/slider.d.ts +1 -1
- package/dist/src/ui/sonner.d.ts +2 -1
- package/dist/src/ui/switch.d.ts +2 -2
- package/dist/src/ui/tabs.d.ts +1 -1
- package/dist/src/ui/textarea.d.ts +1 -1
- package/dist/src/ui/toast.d.ts +22 -0
- package/dist/src/ui/toggle-group.d.ts +8 -3
- package/dist/src/ui/toggle.d.ts +4 -1
- package/dist/src/ui/tooltip.d.ts +4 -4
- package/dist/src/ui/typography.d.ts +21 -0
- package/package.json +17 -7
- package/shadcn-components.json +52 -47
- package/src/SchemaRenderer.tsx +28 -0
- package/src/__tests__/PageRendererRegions.test.tsx +59 -0
- package/src/__tests__/Registry.test.ts +21 -0
- package/src/__tests__/basic-renderers.test.tsx +1 -1
- package/src/__tests__/complex-disclosure-renderers.test.tsx +3 -2
- package/src/__tests__/feedback-overlay-renderers.test.tsx +1 -1
- package/src/__tests__/form-renderers.test.tsx +1 -1
- package/src/__tests__/layout-data-renderers.test.tsx +1 -1
- package/src/{ui → custom}/button-group.tsx +1 -1
- package/src/{ui → custom}/combobox.tsx +3 -3
- package/src/{ui → custom}/date-picker.tsx +3 -3
- package/src/custom/field.tsx +81 -0
- package/src/{ui → custom}/filter-builder.tsx +3 -3
- package/src/custom/index.ts +12 -0
- package/src/custom/input-group.tsx +53 -0
- package/src/{ui → custom}/item.tsx +1 -1
- package/src/custom/native-select.tsx +33 -0
- package/src/custom/sort-builder.tsx +129 -0
- package/src/index.css +20 -1
- package/src/index.ts +1 -0
- package/src/renderers/basic/button-group.tsx +1 -0
- package/src/renderers/basic/div.tsx +12 -1
- package/src/renderers/basic/html.tsx +1 -0
- package/src/renderers/basic/icon.tsx +1 -0
- package/src/renderers/basic/image.tsx +1 -0
- package/src/renderers/basic/navigation-menu.tsx +1 -0
- package/src/renderers/basic/pagination.tsx +31 -4
- package/src/renderers/basic/separator.tsx +1 -0
- package/src/renderers/basic/span.tsx +12 -1
- package/src/renderers/basic/text.tsx +4 -2
- package/src/renderers/complex/carousel.tsx +1 -0
- package/src/renderers/complex/data-table.tsx +134 -95
- package/src/renderers/complex/filter-builder.tsx +2 -1
- package/src/renderers/complex/resizable.tsx +2 -1
- package/src/renderers/complex/scroll-area.tsx +25 -7
- package/src/renderers/complex/table.tsx +1 -0
- package/src/renderers/data-display/alert.tsx +1 -0
- package/src/renderers/data-display/avatar.tsx +1 -0
- package/src/renderers/data-display/badge.tsx +1 -0
- package/src/renderers/data-display/breadcrumb.tsx +1 -0
- package/src/renderers/data-display/kbd.tsx +1 -0
- package/src/renderers/data-display/list.tsx +21 -49
- package/src/renderers/data-display/statistic.tsx +21 -5
- package/src/renderers/data-display/table.tsx +21 -11
- package/src/renderers/data-display/tree-view.tsx +7 -1
- package/src/renderers/disclosure/accordion.tsx +1 -0
- package/src/renderers/disclosure/collapsible.tsx +1 -0
- package/src/renderers/disclosure/toggle-group.tsx +2 -0
- package/src/renderers/feedback/empty.tsx +1 -0
- package/src/renderers/feedback/loading.tsx +2 -1
- package/src/renderers/feedback/progress.tsx +1 -0
- package/src/renderers/feedback/skeleton.tsx +1 -0
- package/src/renderers/feedback/sonner.tsx +1 -0
- package/src/renderers/feedback/spinner.tsx +1 -0
- package/src/renderers/feedback/toast.tsx +1 -0
- package/src/renderers/feedback/toaster.tsx +1 -0
- package/src/renderers/form/button.tsx +35 -1
- package/src/renderers/form/calendar.tsx +1 -0
- package/src/renderers/form/checkbox.tsx +38 -16
- package/src/renderers/form/combobox.tsx +2 -1
- package/src/renderers/form/command.tsx +1 -0
- package/src/renderers/form/date-picker.tsx +1 -0
- package/src/renderers/form/file-upload.tsx +1 -0
- package/src/renderers/form/form.tsx +92 -15
- package/src/renderers/form/input-otp.tsx +1 -0
- package/src/renderers/form/input.tsx +3 -0
- package/src/renderers/form/label.tsx +1 -0
- package/src/renderers/form/radio-group.tsx +1 -0
- package/src/renderers/form/select.tsx +35 -15
- package/src/renderers/form/slider.tsx +1 -0
- package/src/renderers/form/switch.tsx +1 -0
- package/src/renderers/form/textarea.tsx +50 -27
- package/src/renderers/form/toggle.tsx +3 -45
- package/src/renderers/layout/aspect-ratio.tsx +2 -1
- package/src/renderers/layout/card.tsx +10 -2
- package/src/renderers/layout/container.tsx +1 -0
- package/src/renderers/layout/flex.tsx +1 -0
- package/src/renderers/layout/grid.tsx +23 -8
- package/src/renderers/layout/page.tsx +35 -23
- package/src/renderers/layout/semantic.tsx +1 -0
- package/src/renderers/layout/stack.tsx +2 -1
- package/src/renderers/layout/tabs.tsx +43 -17
- package/src/renderers/navigation/header-bar.tsx +1 -0
- package/src/renderers/navigation/sidebar.tsx +5 -0
- package/src/renderers/overlay/alert-dialog.tsx +1 -0
- package/src/renderers/overlay/context-menu.tsx +1 -0
- package/src/renderers/overlay/dialog.tsx +1 -0
- package/src/renderers/overlay/drawer.tsx +1 -0
- package/src/renderers/overlay/dropdown-menu.tsx +1 -0
- package/src/renderers/overlay/hover-card.tsx +1 -0
- package/src/renderers/overlay/menubar.tsx +1 -0
- package/src/renderers/overlay/popover.tsx +1 -0
- package/src/renderers/overlay/sheet.tsx +1 -0
- package/src/renderers/overlay/tooltip.tsx +1 -0
- package/src/renderers/placeholders.tsx +2 -2
- package/src/stories/CRMApp.stories.tsx +706 -0
- package/src/stories/Guide.mdx +55 -0
- package/src/stories/Introduction.mdx +34 -0
- package/src/stories/MockedData.stories.tsx +71 -0
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +1 -0
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +1 -0
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +1 -0
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +1 -0
- package/src/stories/assets/youtube.svg +1 -0
- package/src/stories/button.css +30 -0
- package/src/stories/header.css +32 -0
- package/src/stories/page.css +68 -0
- package/src/stories-json/accordion.stories.tsx +43 -0
- package/src/stories-json/aggrid.stories.tsx +103 -0
- package/src/stories-json/alert.stories.tsx +39 -0
- package/src/stories-json/aspect-ratio.stories.tsx +34 -0
- package/src/stories-json/avatar.stories.tsx +38 -0
- package/src/stories-json/badge.stories.tsx +53 -0
- package/src/stories-json/breadcrumb.stories.tsx +30 -0
- package/src/stories-json/button-group.stories.tsx +43 -0
- package/src/stories-json/button.stories.tsx +73 -0
- package/src/stories-json/calendar.stories.tsx +85 -0
- package/src/stories-json/card.stories.tsx +48 -0
- package/src/stories-json/carousel.stories.tsx +33 -0
- package/src/stories-json/charts.stories.tsx +195 -0
- package/src/stories-json/chatbot.stories.tsx +248 -0
- package/src/stories-json/code-editor.stories.tsx +92 -0
- package/src/stories-json/collapsible.stories.tsx +40 -0
- package/src/stories-json/controls.stories.tsx +36 -0
- package/src/stories-json/dashboard.stories.tsx +318 -0
- package/src/stories-json/data-table.stories.tsx +60 -0
- package/src/stories-json/data_display_extras.stories.tsx +102 -0
- package/src/stories-json/date-picker.stories.tsx +28 -0
- package/src/stories-json/detail-view.stories.tsx +258 -0
- package/src/stories-json/dialog.stories.tsx +43 -0
- package/src/stories-json/feedback_extras.stories.tsx +40 -0
- package/src/stories-json/feedback_others.stories.tsx +46 -0
- package/src/stories-json/form_advanced.stories.tsx +117 -0
- package/src/stories-json/form_extras.stories.tsx +123 -0
- package/src/stories-json/grid.stories.tsx +56 -0
- package/src/stories-json/icon.stories.tsx +36 -0
- package/src/stories-json/input.stories.tsx +52 -0
- package/src/stories-json/kanban.stories.tsx +295 -0
- package/src/stories-json/layout_extended.stories.tsx +76 -0
- package/src/stories-json/layout_flex.stories.tsx +107 -0
- package/src/stories-json/list-view.stories.tsx +97 -0
- package/src/stories-json/markdown.stories.tsx +129 -0
- package/src/stories-json/menus.stories.tsx +63 -0
- package/src/stories-json/metric-card.stories.tsx +143 -0
- package/src/stories-json/navigation-menu.stories.tsx +37 -0
- package/src/stories-json/object-aggrid.stories.tsx +252 -0
- package/src/stories-json/object-form.stories.tsx +130 -0
- package/src/stories-json/object-gantt.stories.tsx +114 -0
- package/src/stories-json/object-grid.stories.tsx +157 -0
- package/src/stories-json/object-map.stories.tsx +116 -0
- package/src/stories-json/object-view.stories.tsx +118 -0
- package/src/stories-json/overlay_extras.stories.tsx +113 -0
- package/src/stories-json/overlay_others.stories.tsx +76 -0
- package/src/stories-json/page.stories.tsx +55 -0
- package/src/stories-json/reports.stories.tsx +163 -0
- package/src/stories-json/resizable.stories.tsx +44 -0
- package/src/stories-json/select.stories.tsx +34 -0
- package/src/stories-json/separator.stories.tsx +41 -0
- package/src/stories-json/sidebar.stories.tsx +147 -0
- package/src/stories-json/statistic.stories.tsx +44 -0
- package/src/stories-json/tabs.stories.tsx +51 -0
- package/src/stories-json/timeline.stories.tsx +188 -0
- package/src/stories-json/typography.stories.tsx +45 -0
- package/src/ui/accordion.tsx +47 -53
- package/src/ui/alert-dialog.tsx +103 -117
- package/src/ui/alert.tsx +35 -36
- package/src/ui/aspect-ratio.tsx +1 -5
- package/src/ui/avatar.tsx +41 -42
- package/src/ui/badge.tsx +6 -15
- package/src/ui/breadcrumb.tsx +81 -75
- package/src/ui/button.tsx +10 -11
- package/src/ui/calendar.tsx +178 -51
- package/src/ui/card.tsx +51 -110
- package/src/ui/carousel.tsx +136 -113
- package/src/ui/chart.tsx +367 -0
- package/src/ui/checkbox.tsx +20 -22
- package/src/ui/collapsible.tsx +5 -25
- package/src/ui/command.tsx +106 -135
- package/src/ui/context-menu.tsx +69 -116
- package/src/ui/dialog.tsx +94 -113
- package/src/ui/drawer.tsx +82 -99
- package/src/ui/dropdown-menu.tsx +134 -188
- package/src/ui/form.tsx +51 -40
- package/src/ui/hover-card.tsx +18 -33
- package/src/ui/index.ts +2 -8
- package/src/ui/input-otp.tsx +42 -52
- package/src/ui/input.tsx +13 -15
- package/src/ui/label.tsx +17 -15
- package/src/ui/menubar.tsx +188 -206
- package/src/ui/navigation-menu.tsx +96 -136
- package/src/ui/pagination.tsx +86 -96
- package/src/ui/popover.tsx +24 -41
- package/src/ui/progress.tsx +21 -22
- package/src/ui/radio-group.tsx +19 -20
- package/src/ui/resizable.tsx +32 -42
- package/src/ui/scroll-area.tsx +38 -48
- package/src/ui/select.tsx +129 -157
- package/src/ui/separator.tsx +2 -2
- package/src/ui/sheet.tsx +110 -107
- package/src/ui/sidebar.tsx +442 -408
- package/src/ui/skeleton.tsx +6 -11
- package/src/ui/slider.tsx +19 -54
- package/src/ui/sonner.tsx +19 -1
- package/src/ui/switch.tsx +19 -21
- package/src/ui/tabs.tsx +6 -37
- package/src/ui/textarea.tsx +8 -4
- package/src/ui/toast.tsx +137 -0
- package/src/ui/toggle-group.tsx +28 -37
- package/src/ui/toggle.tsx +19 -19
- package/src/ui/tooltip.tsx +21 -52
- package/src/ui/typography.tsx +85 -0
- package/tsconfig.json +1 -1
- package/vite.config.ts +9 -1
- package/vitest.config.ts +5 -0
- package/ISSUES_FOUND.md +0 -128
- /package/dist/src/{ui → custom}/combobox.d.ts +0 -0
- /package/dist/src/{ui → custom}/date-picker.d.ts +0 -0
- /package/dist/src/{ui → custom}/empty.d.ts +0 -0
- /package/dist/src/{ui → custom}/filter-builder.d.ts +0 -0
- /package/dist/src/{ui → custom}/kbd.d.ts +0 -0
- /package/dist/src/{ui → custom}/spinner.d.ts +0 -0
- /package/src/{ui → custom}/empty.tsx +0 -0
- /package/src/{ui → custom}/kbd.tsx +0 -0
- /package/src/{ui → custom}/spinner.tsx +0 -0
package/src/ui/input-otp.tsx
CHANGED
|
@@ -10,56 +10,47 @@
|
|
|
10
10
|
|
|
11
11
|
import * as React from "react"
|
|
12
12
|
import { OTPInput, OTPInputContext } from "input-otp"
|
|
13
|
-
import {
|
|
13
|
+
import { Dot } from "lucide-react"
|
|
14
14
|
|
|
15
15
|
import { cn } from "../lib/utils"
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{...props}
|
|
33
|
-
/>
|
|
34
|
-
)
|
|
35
|
-
}
|
|
17
|
+
const InputOTP = React.forwardRef<
|
|
18
|
+
React.ElementRef<typeof OTPInput>,
|
|
19
|
+
React.ComponentPropsWithoutRef<typeof OTPInput>
|
|
20
|
+
>(({ className, containerClassName, ...props }, ref) => (
|
|
21
|
+
<OTPInput
|
|
22
|
+
ref={ref}
|
|
23
|
+
containerClassName={cn(
|
|
24
|
+
"flex items-center gap-2 has-[:disabled]:opacity-50",
|
|
25
|
+
containerClassName
|
|
26
|
+
)}
|
|
27
|
+
className={cn("disabled:cursor-not-allowed", className)}
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
30
|
+
))
|
|
31
|
+
InputOTP.displayName = "InputOTP"
|
|
36
32
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
)
|
|
45
|
-
}
|
|
33
|
+
const InputOTPGroup = React.forwardRef<
|
|
34
|
+
React.ElementRef<"div">,
|
|
35
|
+
React.ComponentPropsWithoutRef<"div">
|
|
36
|
+
>(({ className, ...props }, ref) => (
|
|
37
|
+
<div ref={ref} className={cn("flex items-center", className)} {...props} />
|
|
38
|
+
))
|
|
39
|
+
InputOTPGroup.displayName = "InputOTPGroup"
|
|
46
40
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}: React.ComponentProps<"div"> & {
|
|
52
|
-
index: number
|
|
53
|
-
}) {
|
|
41
|
+
const InputOTPSlot = React.forwardRef<
|
|
42
|
+
React.ElementRef<"div">,
|
|
43
|
+
React.ComponentPropsWithoutRef<"div"> & { index: number }
|
|
44
|
+
>(({ index, className, ...props }, ref) => {
|
|
54
45
|
const inputOTPContext = React.useContext(OTPInputContext)
|
|
55
|
-
const { char, hasFakeCaret, isActive } = inputOTPContext
|
|
46
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]
|
|
56
47
|
|
|
57
48
|
return (
|
|
58
49
|
<div
|
|
59
|
-
|
|
60
|
-
data-active={isActive}
|
|
50
|
+
ref={ref}
|
|
61
51
|
className={cn(
|
|
62
|
-
"relative flex h-
|
|
52
|
+
"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
|
|
53
|
+
isActive && "z-10 ring-2 ring-ring ring-offset-background",
|
|
63
54
|
className
|
|
64
55
|
)}
|
|
65
56
|
{...props}
|
|
@@ -72,18 +63,17 @@ function InputOTPSlot({
|
|
|
72
63
|
)}
|
|
73
64
|
</div>
|
|
74
65
|
)
|
|
75
|
-
}
|
|
66
|
+
})
|
|
67
|
+
InputOTPSlot.displayName = "InputOTPSlot"
|
|
76
68
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
)
|
|
87
|
-
}
|
|
69
|
+
const InputOTPSeparator = React.forwardRef<
|
|
70
|
+
React.ElementRef<"div">,
|
|
71
|
+
React.ComponentPropsWithoutRef<"div">
|
|
72
|
+
>(({ ...props }, ref) => (
|
|
73
|
+
<div ref={ref} role="separator" {...props}>
|
|
74
|
+
<Dot />
|
|
75
|
+
</div>
|
|
76
|
+
))
|
|
77
|
+
InputOTPSeparator.displayName = "InputOTPSeparator"
|
|
88
78
|
|
|
89
79
|
export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
|
package/src/ui/input.tsx
CHANGED
|
@@ -12,21 +12,19 @@ import { cn } from "../lib/utils"
|
|
|
12
12
|
|
|
13
13
|
const Input = React.forwardRef<HTMLInputElement, React.ComponentProps<"input">>(
|
|
14
14
|
({ className, type, ...props }, ref) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
)
|
|
29
|
-
})
|
|
15
|
+
return (
|
|
16
|
+
<input
|
|
17
|
+
type={type}
|
|
18
|
+
className={cn(
|
|
19
|
+
"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
20
|
+
className
|
|
21
|
+
)}
|
|
22
|
+
ref={ref}
|
|
23
|
+
{...props}
|
|
24
|
+
/>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
)
|
|
30
28
|
Input.displayName = "Input"
|
|
31
29
|
|
|
32
30
|
export { Input }
|
package/src/ui/label.tsx
CHANGED
|
@@ -10,23 +10,25 @@
|
|
|
10
10
|
|
|
11
11
|
import * as React from "react"
|
|
12
12
|
import * as LabelPrimitive from "@radix-ui/react-label"
|
|
13
|
+
import { cva, type VariantProps } from "class-variance-authority"
|
|
13
14
|
|
|
14
15
|
import { cn } from "../lib/utils"
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
const labelVariants = cva(
|
|
18
|
+
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
const Label = React.forwardRef<
|
|
22
|
+
React.ElementRef<typeof LabelPrimitive.Root>,
|
|
23
|
+
React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &
|
|
24
|
+
VariantProps<typeof labelVariants>
|
|
25
|
+
>(({ className, ...props }, ref) => (
|
|
26
|
+
<LabelPrimitive.Root
|
|
27
|
+
ref={ref}
|
|
28
|
+
className={cn(labelVariants(), className)}
|
|
29
|
+
{...props}
|
|
30
|
+
/>
|
|
31
|
+
))
|
|
32
|
+
Label.displayName = LabelPrimitive.Root.displayName
|
|
31
33
|
|
|
32
34
|
export { Label }
|
package/src/ui/menubar.tsx
CHANGED
|
@@ -6,277 +6,259 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
"use client"
|
|
10
|
+
|
|
9
11
|
import * as React from "react"
|
|
10
12
|
import * as MenubarPrimitive from "@radix-ui/react-menubar"
|
|
11
|
-
import {
|
|
13
|
+
import { Check, ChevronRight, Circle } from "lucide-react"
|
|
12
14
|
|
|
13
15
|
import { cn } from "../lib/utils"
|
|
14
16
|
|
|
15
|
-
function Menubar({
|
|
16
|
-
className,
|
|
17
|
-
...props
|
|
18
|
-
}: React.ComponentProps<typeof MenubarPrimitive.Root>) {
|
|
19
|
-
return (
|
|
20
|
-
<MenubarPrimitive.Root
|
|
21
|
-
data-slot="menubar"
|
|
22
|
-
className={cn(
|
|
23
|
-
"bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
|
|
24
|
-
className
|
|
25
|
-
)}
|
|
26
|
-
{...props}
|
|
27
|
-
/>
|
|
28
|
-
)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
17
|
function MenubarMenu({
|
|
32
18
|
...props
|
|
33
19
|
}: React.ComponentProps<typeof MenubarPrimitive.Menu>) {
|
|
34
|
-
return <MenubarPrimitive.Menu
|
|
20
|
+
return <MenubarPrimitive.Menu {...props} />
|
|
35
21
|
}
|
|
36
22
|
|
|
37
23
|
function MenubarGroup({
|
|
38
24
|
...props
|
|
39
25
|
}: React.ComponentProps<typeof MenubarPrimitive.Group>) {
|
|
40
|
-
return <MenubarPrimitive.Group
|
|
26
|
+
return <MenubarPrimitive.Group {...props} />
|
|
41
27
|
}
|
|
42
28
|
|
|
43
29
|
function MenubarPortal({
|
|
44
30
|
...props
|
|
45
31
|
}: React.ComponentProps<typeof MenubarPrimitive.Portal>) {
|
|
46
|
-
return <MenubarPrimitive.Portal
|
|
32
|
+
return <MenubarPrimitive.Portal {...props} />
|
|
47
33
|
}
|
|
48
34
|
|
|
49
35
|
function MenubarRadioGroup({
|
|
50
36
|
...props
|
|
51
37
|
}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {
|
|
52
|
-
return
|
|
53
|
-
<MenubarPrimitive.RadioGroup data-slot="menubar-radio-group" {...props} />
|
|
54
|
-
)
|
|
38
|
+
return <MenubarPrimitive.RadioGroup {...props} />
|
|
55
39
|
}
|
|
56
40
|
|
|
57
|
-
function
|
|
58
|
-
className,
|
|
41
|
+
function MenubarSub({
|
|
59
42
|
...props
|
|
60
|
-
}: React.ComponentProps<typeof MenubarPrimitive.
|
|
61
|
-
return
|
|
62
|
-
<MenubarPrimitive.Trigger
|
|
63
|
-
data-slot="menubar-trigger"
|
|
64
|
-
className={cn(
|
|
65
|
-
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
|
|
66
|
-
className
|
|
67
|
-
)}
|
|
68
|
-
{...props}
|
|
69
|
-
/>
|
|
70
|
-
)
|
|
43
|
+
}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {
|
|
44
|
+
return <MenubarPrimitive.Sub data-slot="menubar-sub" {...props} />
|
|
71
45
|
}
|
|
72
46
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
47
|
+
const Menubar = React.forwardRef<
|
|
48
|
+
React.ElementRef<typeof MenubarPrimitive.Root>,
|
|
49
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>
|
|
50
|
+
>(({ className, ...props }, ref) => (
|
|
51
|
+
<MenubarPrimitive.Root
|
|
52
|
+
ref={ref}
|
|
53
|
+
className={cn(
|
|
54
|
+
"flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
|
|
55
|
+
className
|
|
56
|
+
)}
|
|
57
|
+
{...props}
|
|
58
|
+
/>
|
|
59
|
+
))
|
|
60
|
+
Menubar.displayName = MenubarPrimitive.Root.displayName
|
|
61
|
+
|
|
62
|
+
const MenubarTrigger = React.forwardRef<
|
|
63
|
+
React.ElementRef<typeof MenubarPrimitive.Trigger>,
|
|
64
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>
|
|
65
|
+
>(({ className, ...props }, ref) => (
|
|
66
|
+
<MenubarPrimitive.Trigger
|
|
67
|
+
ref={ref}
|
|
68
|
+
className={cn(
|
|
69
|
+
"flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
70
|
+
className
|
|
71
|
+
)}
|
|
72
|
+
{...props}
|
|
73
|
+
/>
|
|
74
|
+
))
|
|
75
|
+
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName
|
|
76
|
+
|
|
77
|
+
const MenubarSubTrigger = React.forwardRef<
|
|
78
|
+
React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
|
|
79
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {
|
|
80
|
+
inset?: boolean
|
|
81
|
+
}
|
|
82
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
83
|
+
<MenubarPrimitive.SubTrigger
|
|
84
|
+
ref={ref}
|
|
85
|
+
className={cn(
|
|
86
|
+
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
|
|
87
|
+
inset && "pl-8",
|
|
88
|
+
className
|
|
89
|
+
)}
|
|
90
|
+
{...props}
|
|
91
|
+
>
|
|
92
|
+
{children}
|
|
93
|
+
<ChevronRight className="ml-auto h-4 w-4" />
|
|
94
|
+
</MenubarPrimitive.SubTrigger>
|
|
95
|
+
))
|
|
96
|
+
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
|
|
97
|
+
|
|
98
|
+
const MenubarSubContent = React.forwardRef<
|
|
99
|
+
React.ElementRef<typeof MenubarPrimitive.SubContent>,
|
|
100
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>
|
|
101
|
+
>(({ className, ...props }, ref) => (
|
|
102
|
+
<MenubarPrimitive.SubContent
|
|
103
|
+
ref={ref}
|
|
104
|
+
className={cn(
|
|
105
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground 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 origin-[--radix-menubar-content-transform-origin]",
|
|
106
|
+
className
|
|
107
|
+
)}
|
|
108
|
+
{...props}
|
|
109
|
+
/>
|
|
110
|
+
))
|
|
111
|
+
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName
|
|
112
|
+
|
|
113
|
+
const MenubarContent = React.forwardRef<
|
|
114
|
+
React.ElementRef<typeof MenubarPrimitive.Content>,
|
|
115
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>
|
|
116
|
+
>(
|
|
117
|
+
(
|
|
118
|
+
{ className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
|
|
119
|
+
ref
|
|
120
|
+
) => (
|
|
121
|
+
<MenubarPrimitive.Portal>
|
|
82
122
|
<MenubarPrimitive.Content
|
|
83
|
-
|
|
123
|
+
ref={ref}
|
|
84
124
|
align={align}
|
|
85
125
|
alignOffset={alignOffset}
|
|
86
126
|
sideOffset={sideOffset}
|
|
87
127
|
className={cn(
|
|
88
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in 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
|
|
128
|
+
"z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in 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 origin-[--radix-menubar-content-transform-origin]",
|
|
89
129
|
className
|
|
90
130
|
)}
|
|
91
131
|
{...props}
|
|
92
132
|
/>
|
|
93
|
-
</
|
|
133
|
+
</MenubarPrimitive.Portal>
|
|
94
134
|
)
|
|
95
|
-
|
|
135
|
+
)
|
|
136
|
+
MenubarContent.displayName = MenubarPrimitive.Content.displayName
|
|
96
137
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
)}
|
|
115
|
-
{...props}
|
|
116
|
-
/>
|
|
117
|
-
)
|
|
118
|
-
}
|
|
138
|
+
const MenubarItem = React.forwardRef<
|
|
139
|
+
React.ElementRef<typeof MenubarPrimitive.Item>,
|
|
140
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {
|
|
141
|
+
inset?: boolean
|
|
142
|
+
}
|
|
143
|
+
>(({ className, inset, ...props }, ref) => (
|
|
144
|
+
<MenubarPrimitive.Item
|
|
145
|
+
ref={ref}
|
|
146
|
+
className={cn(
|
|
147
|
+
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
148
|
+
inset && "pl-8",
|
|
149
|
+
className
|
|
150
|
+
)}
|
|
151
|
+
{...props}
|
|
152
|
+
/>
|
|
153
|
+
))
|
|
154
|
+
MenubarItem.displayName = MenubarPrimitive.Item.displayName
|
|
119
155
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
</MenubarPrimitive.CheckboxItem>
|
|
143
|
-
)
|
|
144
|
-
}
|
|
156
|
+
const MenubarCheckboxItem = React.forwardRef<
|
|
157
|
+
React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
|
|
158
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>
|
|
159
|
+
>(({ className, children, checked, ...props }, ref) => (
|
|
160
|
+
<MenubarPrimitive.CheckboxItem
|
|
161
|
+
ref={ref}
|
|
162
|
+
className={cn(
|
|
163
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
164
|
+
className
|
|
165
|
+
)}
|
|
166
|
+
checked={checked}
|
|
167
|
+
{...props}
|
|
168
|
+
>
|
|
169
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
170
|
+
<MenubarPrimitive.ItemIndicator>
|
|
171
|
+
<Check className="h-4 w-4" />
|
|
172
|
+
</MenubarPrimitive.ItemIndicator>
|
|
173
|
+
</span>
|
|
174
|
+
{children}
|
|
175
|
+
</MenubarPrimitive.CheckboxItem>
|
|
176
|
+
))
|
|
177
|
+
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName
|
|
145
178
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
data-
|
|
154
|
-
className
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
)
|
|
168
|
-
}
|
|
179
|
+
const MenubarRadioItem = React.forwardRef<
|
|
180
|
+
React.ElementRef<typeof MenubarPrimitive.RadioItem>,
|
|
181
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>
|
|
182
|
+
>(({ className, children, ...props }, ref) => (
|
|
183
|
+
<MenubarPrimitive.RadioItem
|
|
184
|
+
ref={ref}
|
|
185
|
+
className={cn(
|
|
186
|
+
"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
|
187
|
+
className
|
|
188
|
+
)}
|
|
189
|
+
{...props}
|
|
190
|
+
>
|
|
191
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
192
|
+
<MenubarPrimitive.ItemIndicator>
|
|
193
|
+
<Circle className="h-2 w-2 fill-current" />
|
|
194
|
+
</MenubarPrimitive.ItemIndicator>
|
|
195
|
+
</span>
|
|
196
|
+
{children}
|
|
197
|
+
</MenubarPrimitive.RadioItem>
|
|
198
|
+
))
|
|
199
|
+
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName
|
|
169
200
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
className
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
)
|
|
188
|
-
}
|
|
201
|
+
const MenubarLabel = React.forwardRef<
|
|
202
|
+
React.ElementRef<typeof MenubarPrimitive.Label>,
|
|
203
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {
|
|
204
|
+
inset?: boolean
|
|
205
|
+
}
|
|
206
|
+
>(({ className, inset, ...props }, ref) => (
|
|
207
|
+
<MenubarPrimitive.Label
|
|
208
|
+
ref={ref}
|
|
209
|
+
className={cn(
|
|
210
|
+
"px-2 py-1.5 text-sm font-semibold",
|
|
211
|
+
inset && "pl-8",
|
|
212
|
+
className
|
|
213
|
+
)}
|
|
214
|
+
{...props}
|
|
215
|
+
/>
|
|
216
|
+
))
|
|
217
|
+
MenubarLabel.displayName = MenubarPrimitive.Label.displayName
|
|
189
218
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
219
|
+
const MenubarSeparator = React.forwardRef<
|
|
220
|
+
React.ElementRef<typeof MenubarPrimitive.Separator>,
|
|
221
|
+
React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>
|
|
222
|
+
>(({ className, ...props }, ref) => (
|
|
223
|
+
<MenubarPrimitive.Separator
|
|
224
|
+
ref={ref}
|
|
225
|
+
className={cn("-mx-1 my-1 h-px bg-muted", className)}
|
|
226
|
+
{...props}
|
|
227
|
+
/>
|
|
228
|
+
))
|
|
229
|
+
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName
|
|
202
230
|
|
|
203
|
-
|
|
231
|
+
const MenubarShortcut = ({
|
|
204
232
|
className,
|
|
205
233
|
...props
|
|
206
|
-
}: React.
|
|
234
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
207
235
|
return (
|
|
208
236
|
<span
|
|
209
|
-
data-slot="menubar-shortcut"
|
|
210
|
-
className={cn(
|
|
211
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
212
|
-
className
|
|
213
|
-
)}
|
|
214
|
-
{...props}
|
|
215
|
-
/>
|
|
216
|
-
)
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
function MenubarSub({
|
|
220
|
-
...props
|
|
221
|
-
}: React.ComponentProps<typeof MenubarPrimitive.Sub>) {
|
|
222
|
-
return <MenubarPrimitive.Sub data-slot="menubar-sub" {...props} />
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
function MenubarSubTrigger({
|
|
226
|
-
className,
|
|
227
|
-
inset,
|
|
228
|
-
children,
|
|
229
|
-
...props
|
|
230
|
-
}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
|
|
231
|
-
inset?: boolean
|
|
232
|
-
}) {
|
|
233
|
-
return (
|
|
234
|
-
<MenubarPrimitive.SubTrigger
|
|
235
|
-
data-slot="menubar-sub-trigger"
|
|
236
|
-
data-inset={inset}
|
|
237
237
|
className={cn(
|
|
238
|
-
"
|
|
239
|
-
className
|
|
240
|
-
)}
|
|
241
|
-
{...props}
|
|
242
|
-
>
|
|
243
|
-
{children}
|
|
244
|
-
<ChevronRightIcon className="ml-auto h-4 w-4" />
|
|
245
|
-
</MenubarPrimitive.SubTrigger>
|
|
246
|
-
)
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
function MenubarSubContent({
|
|
250
|
-
className,
|
|
251
|
-
...props
|
|
252
|
-
}: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {
|
|
253
|
-
return (
|
|
254
|
-
<MenubarPrimitive.SubContent
|
|
255
|
-
data-slot="menubar-sub-content"
|
|
256
|
-
className={cn(
|
|
257
|
-
"bg-popover text-popover-foreground 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-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
|
238
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
258
239
|
className
|
|
259
240
|
)}
|
|
260
241
|
{...props}
|
|
261
242
|
/>
|
|
262
243
|
)
|
|
263
244
|
}
|
|
245
|
+
MenubarShortcut.displayname = "MenubarShortcut"
|
|
264
246
|
|
|
265
247
|
export {
|
|
266
248
|
Menubar,
|
|
267
|
-
MenubarPortal,
|
|
268
249
|
MenubarMenu,
|
|
269
250
|
MenubarTrigger,
|
|
270
251
|
MenubarContent,
|
|
271
|
-
|
|
252
|
+
MenubarItem,
|
|
272
253
|
MenubarSeparator,
|
|
273
254
|
MenubarLabel,
|
|
274
|
-
MenubarItem,
|
|
275
|
-
MenubarShortcut,
|
|
276
255
|
MenubarCheckboxItem,
|
|
277
256
|
MenubarRadioGroup,
|
|
278
257
|
MenubarRadioItem,
|
|
279
|
-
|
|
280
|
-
MenubarSubTrigger,
|
|
258
|
+
MenubarPortal,
|
|
281
259
|
MenubarSubContent,
|
|
260
|
+
MenubarSubTrigger,
|
|
261
|
+
MenubarGroup,
|
|
262
|
+
MenubarSub,
|
|
263
|
+
MenubarShortcut,
|
|
282
264
|
}
|