@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/command.tsx
CHANGED
|
@@ -6,59 +6,36 @@
|
|
|
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"
|
|
12
|
+
import { type DialogProps } from "@radix-ui/react-dialog"
|
|
10
13
|
import { Command as CommandPrimitive } from "cmdk"
|
|
11
|
-
import {
|
|
14
|
+
import { Search } from "lucide-react"
|
|
12
15
|
|
|
13
16
|
import { cn } from "../lib/utils"
|
|
14
|
-
import {
|
|
15
|
-
Dialog,
|
|
16
|
-
DialogContent,
|
|
17
|
-
DialogDescription,
|
|
18
|
-
DialogHeader,
|
|
19
|
-
DialogTitle,
|
|
20
|
-
} from "./dialog"
|
|
21
|
-
|
|
22
|
-
function Command({
|
|
23
|
-
className,
|
|
24
|
-
...props
|
|
25
|
-
}: React.ComponentProps<typeof CommandPrimitive>) {
|
|
26
|
-
return (
|
|
27
|
-
<CommandPrimitive
|
|
28
|
-
data-slot="command"
|
|
29
|
-
className={cn(
|
|
30
|
-
"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
|
|
31
|
-
className
|
|
32
|
-
)}
|
|
33
|
-
{...props}
|
|
34
|
-
/>
|
|
35
|
-
)
|
|
36
|
-
}
|
|
17
|
+
import { Dialog, DialogContent } from "./dialog"
|
|
37
18
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
19
|
+
const Command = React.forwardRef<
|
|
20
|
+
React.ElementRef<typeof CommandPrimitive>,
|
|
21
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive>
|
|
22
|
+
>(({ className, ...props }, ref) => (
|
|
23
|
+
<CommandPrimitive
|
|
24
|
+
ref={ref}
|
|
25
|
+
className={cn(
|
|
26
|
+
"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
|
|
27
|
+
className
|
|
28
|
+
)}
|
|
29
|
+
{...props}
|
|
30
|
+
/>
|
|
31
|
+
))
|
|
32
|
+
Command.displayName = CommandPrimitive.displayName
|
|
33
|
+
|
|
34
|
+
const CommandDialog = ({ children, ...props }: DialogProps) => {
|
|
51
35
|
return (
|
|
52
36
|
<Dialog {...props}>
|
|
53
|
-
<
|
|
54
|
-
<
|
|
55
|
-
<DialogDescription>{description}</DialogDescription>
|
|
56
|
-
</DialogHeader>
|
|
57
|
-
<DialogContent
|
|
58
|
-
className={cn("overflow-hidden p-0", className)}
|
|
59
|
-
showCloseButton={showCloseButton}
|
|
60
|
-
>
|
|
61
|
-
<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">
|
|
37
|
+
<DialogContent className="overflow-hidden p-0 shadow-lg">
|
|
38
|
+
<Command className="[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[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">
|
|
62
39
|
{children}
|
|
63
40
|
</Command>
|
|
64
41
|
</DialogContent>
|
|
@@ -66,116 +43,110 @@ function CommandDialog({
|
|
|
66
43
|
)
|
|
67
44
|
}
|
|
68
45
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
>
|
|
78
|
-
<SearchIcon className="size-4 shrink-0 opacity-50" />
|
|
79
|
-
<CommandPrimitive.Input
|
|
80
|
-
data-slot="command-input"
|
|
81
|
-
className={cn(
|
|
82
|
-
"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",
|
|
83
|
-
className
|
|
84
|
-
)}
|
|
85
|
-
{...props}
|
|
86
|
-
/>
|
|
87
|
-
</div>
|
|
88
|
-
)
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
function CommandList({
|
|
92
|
-
className,
|
|
93
|
-
...props
|
|
94
|
-
}: React.ComponentProps<typeof CommandPrimitive.List>) {
|
|
95
|
-
return (
|
|
96
|
-
<CommandPrimitive.List
|
|
97
|
-
data-slot="command-list"
|
|
46
|
+
const CommandInput = React.forwardRef<
|
|
47
|
+
React.ElementRef<typeof CommandPrimitive.Input>,
|
|
48
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>
|
|
49
|
+
>(({ className, ...props }, ref) => (
|
|
50
|
+
<div className="flex items-center border-b px-3" cmdk-input-wrapper="">
|
|
51
|
+
<Search className="mr-2 h-4 w-4 shrink-0 opacity-50" />
|
|
52
|
+
<CommandPrimitive.Input
|
|
53
|
+
ref={ref}
|
|
98
54
|
className={cn(
|
|
99
|
-
"
|
|
55
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
100
56
|
className
|
|
101
57
|
)}
|
|
102
58
|
{...props}
|
|
103
59
|
/>
|
|
104
|
-
|
|
105
|
-
|
|
60
|
+
</div>
|
|
61
|
+
))
|
|
106
62
|
|
|
107
|
-
|
|
108
|
-
...props
|
|
109
|
-
}: React.ComponentProps<typeof CommandPrimitive.Empty>) {
|
|
110
|
-
return (
|
|
111
|
-
<CommandPrimitive.Empty
|
|
112
|
-
data-slot="command-empty"
|
|
113
|
-
className="py-6 text-center text-sm"
|
|
114
|
-
{...props}
|
|
115
|
-
/>
|
|
116
|
-
)
|
|
117
|
-
}
|
|
63
|
+
CommandInput.displayName = CommandPrimitive.Input.displayName
|
|
118
64
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
)}
|
|
130
|
-
{...props}
|
|
131
|
-
/>
|
|
132
|
-
)
|
|
133
|
-
}
|
|
65
|
+
const CommandList = React.forwardRef<
|
|
66
|
+
React.ElementRef<typeof CommandPrimitive.List>,
|
|
67
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>
|
|
68
|
+
>(({ className, ...props }, ref) => (
|
|
69
|
+
<CommandPrimitive.List
|
|
70
|
+
ref={ref}
|
|
71
|
+
className={cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)}
|
|
72
|
+
{...props}
|
|
73
|
+
/>
|
|
74
|
+
))
|
|
134
75
|
|
|
135
|
-
|
|
136
|
-
className,
|
|
137
|
-
...props
|
|
138
|
-
}: React.ComponentProps<typeof CommandPrimitive.Separator>) {
|
|
139
|
-
return (
|
|
140
|
-
<CommandPrimitive.Separator
|
|
141
|
-
data-slot="command-separator"
|
|
142
|
-
className={cn("bg-border -mx-1 h-px", className)}
|
|
143
|
-
{...props}
|
|
144
|
-
/>
|
|
145
|
-
)
|
|
146
|
-
}
|
|
76
|
+
CommandList.displayName = CommandPrimitive.List.displayName
|
|
147
77
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
78
|
+
const CommandEmpty = React.forwardRef<
|
|
79
|
+
React.ElementRef<typeof CommandPrimitive.Empty>,
|
|
80
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>
|
|
81
|
+
>((props, ref) => (
|
|
82
|
+
<CommandPrimitive.Empty
|
|
83
|
+
ref={ref}
|
|
84
|
+
className="py-6 text-center text-sm"
|
|
85
|
+
{...props}
|
|
86
|
+
/>
|
|
87
|
+
))
|
|
88
|
+
|
|
89
|
+
CommandEmpty.displayName = CommandPrimitive.Empty.displayName
|
|
90
|
+
|
|
91
|
+
const CommandGroup = React.forwardRef<
|
|
92
|
+
React.ElementRef<typeof CommandPrimitive.Group>,
|
|
93
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>
|
|
94
|
+
>(({ className, ...props }, ref) => (
|
|
95
|
+
<CommandPrimitive.Group
|
|
96
|
+
ref={ref}
|
|
97
|
+
className={cn(
|
|
98
|
+
"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",
|
|
99
|
+
className
|
|
100
|
+
)}
|
|
101
|
+
{...props}
|
|
102
|
+
/>
|
|
103
|
+
))
|
|
104
|
+
|
|
105
|
+
CommandGroup.displayName = CommandPrimitive.Group.displayName
|
|
106
|
+
|
|
107
|
+
const CommandSeparator = React.forwardRef<
|
|
108
|
+
React.ElementRef<typeof CommandPrimitive.Separator>,
|
|
109
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>
|
|
110
|
+
>(({ className, ...props }, ref) => (
|
|
111
|
+
<CommandPrimitive.Separator
|
|
112
|
+
ref={ref}
|
|
113
|
+
className={cn("-mx-1 h-px bg-border", className)}
|
|
114
|
+
{...props}
|
|
115
|
+
/>
|
|
116
|
+
))
|
|
117
|
+
CommandSeparator.displayName = CommandPrimitive.Separator.displayName
|
|
118
|
+
|
|
119
|
+
const CommandItem = React.forwardRef<
|
|
120
|
+
React.ElementRef<typeof CommandPrimitive.Item>,
|
|
121
|
+
React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>
|
|
122
|
+
>(({ className, ...props }, ref) => (
|
|
123
|
+
<CommandPrimitive.Item
|
|
124
|
+
ref={ref}
|
|
125
|
+
className={cn(
|
|
126
|
+
"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
127
|
+
className
|
|
128
|
+
)}
|
|
129
|
+
{...props}
|
|
130
|
+
/>
|
|
131
|
+
))
|
|
132
|
+
|
|
133
|
+
CommandItem.displayName = CommandPrimitive.Item.displayName
|
|
163
134
|
|
|
164
|
-
|
|
135
|
+
const CommandShortcut = ({
|
|
165
136
|
className,
|
|
166
137
|
...props
|
|
167
|
-
}: React.
|
|
138
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
168
139
|
return (
|
|
169
140
|
<span
|
|
170
|
-
data-slot="command-shortcut"
|
|
171
141
|
className={cn(
|
|
172
|
-
"
|
|
142
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
173
143
|
className
|
|
174
144
|
)}
|
|
175
145
|
{...props}
|
|
176
146
|
/>
|
|
177
147
|
)
|
|
178
148
|
}
|
|
149
|
+
CommandShortcut.displayName = "CommandShortcut"
|
|
179
150
|
|
|
180
151
|
export {
|
|
181
152
|
Command,
|
package/src/ui/context-menu.tsx
CHANGED
|
@@ -10,129 +10,86 @@
|
|
|
10
10
|
|
|
11
11
|
import * as React from "react"
|
|
12
12
|
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"
|
|
13
|
-
import {
|
|
13
|
+
import { Check, ChevronRight, Circle } from "lucide-react"
|
|
14
14
|
|
|
15
15
|
import { cn } from "../lib/utils"
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
...props
|
|
19
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {
|
|
20
|
-
return <ContextMenuPrimitive.Root data-slot="context-menu" {...props} />
|
|
21
|
-
}
|
|
17
|
+
const ContextMenu = ContextMenuPrimitive.Root
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
...props
|
|
25
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {
|
|
26
|
-
return (
|
|
27
|
-
<ContextMenuPrimitive.Trigger data-slot="context-menu-trigger" {...props} />
|
|
28
|
-
)
|
|
29
|
-
}
|
|
19
|
+
const ContextMenuTrigger = ContextMenuPrimitive.Trigger
|
|
30
20
|
|
|
31
|
-
|
|
32
|
-
...props
|
|
33
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {
|
|
34
|
-
return (
|
|
35
|
-
<ContextMenuPrimitive.Group data-slot="context-menu-group" {...props} />
|
|
36
|
-
)
|
|
37
|
-
}
|
|
21
|
+
const ContextMenuGroup = ContextMenuPrimitive.Group
|
|
38
22
|
|
|
39
|
-
|
|
40
|
-
...props
|
|
41
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {
|
|
42
|
-
return (
|
|
43
|
-
<ContextMenuPrimitive.Portal data-slot="context-menu-portal" {...props} />
|
|
44
|
-
)
|
|
45
|
-
}
|
|
23
|
+
const ContextMenuPortal = ContextMenuPrimitive.Portal
|
|
46
24
|
|
|
47
|
-
|
|
48
|
-
...props
|
|
49
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {
|
|
50
|
-
return <ContextMenuPrimitive.Sub data-slot="context-menu-sub" {...props} />
|
|
51
|
-
}
|
|
25
|
+
const ContextMenuSub = ContextMenuPrimitive.Sub
|
|
52
26
|
|
|
53
|
-
|
|
54
|
-
...props
|
|
55
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {
|
|
56
|
-
return (
|
|
57
|
-
<ContextMenuPrimitive.RadioGroup
|
|
58
|
-
data-slot="context-menu-radio-group"
|
|
59
|
-
{...props}
|
|
60
|
-
/>
|
|
61
|
-
)
|
|
62
|
-
}
|
|
27
|
+
const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup
|
|
63
28
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
</ContextMenuPrimitive.SubTrigger>
|
|
85
|
-
)
|
|
86
|
-
}
|
|
29
|
+
const ContextMenuSubTrigger = React.forwardRef<
|
|
30
|
+
React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>,
|
|
31
|
+
React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubTrigger> & {
|
|
32
|
+
inset?: boolean
|
|
33
|
+
}
|
|
34
|
+
>(({ className, inset, children, ...props }, ref) => (
|
|
35
|
+
<ContextMenuPrimitive.SubTrigger
|
|
36
|
+
ref={ref}
|
|
37
|
+
className={cn(
|
|
38
|
+
"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",
|
|
39
|
+
inset && "pl-8",
|
|
40
|
+
className
|
|
41
|
+
)}
|
|
42
|
+
{...props}
|
|
43
|
+
>
|
|
44
|
+
{children}
|
|
45
|
+
<ChevronRight className="ml-auto h-4 w-4" />
|
|
46
|
+
</ContextMenuPrimitive.SubTrigger>
|
|
47
|
+
))
|
|
48
|
+
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName
|
|
87
49
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
50
|
+
const ContextMenuSubContent = React.forwardRef<
|
|
51
|
+
React.ElementRef<typeof ContextMenuPrimitive.SubContent>,
|
|
52
|
+
React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.SubContent>
|
|
53
|
+
>(({ className, ...props }, ref) => (
|
|
54
|
+
<ContextMenuPrimitive.SubContent
|
|
55
|
+
ref={ref}
|
|
56
|
+
className={cn(
|
|
57
|
+
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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-context-menu-content-transform-origin]",
|
|
58
|
+
className
|
|
59
|
+
)}
|
|
60
|
+
{...props}
|
|
61
|
+
/>
|
|
62
|
+
))
|
|
63
|
+
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName
|
|
64
|
+
|
|
65
|
+
const ContextMenuContent = React.forwardRef<
|
|
66
|
+
React.ElementRef<typeof ContextMenuPrimitive.Content>,
|
|
67
|
+
React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Content>
|
|
68
|
+
>(({ className, ...props }, ref) => (
|
|
69
|
+
<ContextMenuPrimitive.Portal>
|
|
70
|
+
<ContextMenuPrimitive.Content
|
|
71
|
+
ref={ref}
|
|
95
72
|
className={cn(
|
|
96
|
-
"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
|
|
73
|
+
"z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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-context-menu-content-transform-origin]",
|
|
97
74
|
className
|
|
98
75
|
)}
|
|
99
76
|
{...props}
|
|
100
77
|
/>
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
function ContextMenuContent({
|
|
105
|
-
className,
|
|
106
|
-
...props
|
|
107
|
-
}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {
|
|
108
|
-
return (
|
|
109
|
-
<ContextMenuPrimitive.Portal>
|
|
110
|
-
<ContextMenuPrimitive.Content
|
|
111
|
-
data-slot="context-menu-content"
|
|
112
|
-
className={cn(
|
|
113
|
-
"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 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
|
|
114
|
-
className
|
|
115
|
-
)}
|
|
116
|
-
{...props}
|
|
117
|
-
/>
|
|
118
|
-
</ContextMenuPrimitive.Portal>
|
|
119
|
-
)
|
|
120
|
-
}
|
|
78
|
+
</ContextMenuPrimitive.Portal>
|
|
79
|
+
))
|
|
80
|
+
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName
|
|
121
81
|
|
|
122
82
|
const ContextMenuItem = React.forwardRef<
|
|
123
83
|
React.ElementRef<typeof ContextMenuPrimitive.Item>,
|
|
124
84
|
React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Item> & {
|
|
125
85
|
inset?: boolean
|
|
126
|
-
variant?: "default" | "destructive"
|
|
127
86
|
}
|
|
128
|
-
>(({ className, inset,
|
|
87
|
+
>(({ className, inset, ...props }, ref) => (
|
|
129
88
|
<ContextMenuPrimitive.Item
|
|
130
89
|
ref={ref}
|
|
131
|
-
data-slot="context-menu-item"
|
|
132
|
-
data-inset={inset}
|
|
133
|
-
data-variant={variant}
|
|
134
90
|
className={cn(
|
|
135
|
-
"
|
|
91
|
+
"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",
|
|
92
|
+
inset && "pl-8",
|
|
136
93
|
className
|
|
137
94
|
)}
|
|
138
95
|
{...props}
|
|
@@ -146,17 +103,16 @@ const ContextMenuCheckboxItem = React.forwardRef<
|
|
|
146
103
|
>(({ className, children, checked, ...props }, ref) => (
|
|
147
104
|
<ContextMenuPrimitive.CheckboxItem
|
|
148
105
|
ref={ref}
|
|
149
|
-
data-slot="context-menu-checkbox-item"
|
|
150
106
|
className={cn(
|
|
151
|
-
"
|
|
107
|
+
"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",
|
|
152
108
|
className
|
|
153
109
|
)}
|
|
154
110
|
checked={checked}
|
|
155
111
|
{...props}
|
|
156
112
|
>
|
|
157
|
-
<span className="
|
|
113
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
158
114
|
<ContextMenuPrimitive.ItemIndicator>
|
|
159
|
-
<
|
|
115
|
+
<Check className="h-4 w-4" />
|
|
160
116
|
</ContextMenuPrimitive.ItemIndicator>
|
|
161
117
|
</span>
|
|
162
118
|
{children}
|
|
@@ -171,16 +127,15 @@ const ContextMenuRadioItem = React.forwardRef<
|
|
|
171
127
|
>(({ className, children, ...props }, ref) => (
|
|
172
128
|
<ContextMenuPrimitive.RadioItem
|
|
173
129
|
ref={ref}
|
|
174
|
-
data-slot="context-menu-radio-item"
|
|
175
130
|
className={cn(
|
|
176
|
-
"
|
|
131
|
+
"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",
|
|
177
132
|
className
|
|
178
133
|
)}
|
|
179
134
|
{...props}
|
|
180
135
|
>
|
|
181
|
-
<span className="
|
|
136
|
+
<span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
182
137
|
<ContextMenuPrimitive.ItemIndicator>
|
|
183
|
-
<
|
|
138
|
+
<Circle className="h-2 w-2 fill-current" />
|
|
184
139
|
</ContextMenuPrimitive.ItemIndicator>
|
|
185
140
|
</span>
|
|
186
141
|
{children}
|
|
@@ -196,10 +151,9 @@ const ContextMenuLabel = React.forwardRef<
|
|
|
196
151
|
>(({ className, inset, ...props }, ref) => (
|
|
197
152
|
<ContextMenuPrimitive.Label
|
|
198
153
|
ref={ref}
|
|
199
|
-
data-slot="context-menu-label"
|
|
200
|
-
data-inset={inset}
|
|
201
154
|
className={cn(
|
|
202
|
-
"
|
|
155
|
+
"px-2 py-1.5 text-sm font-semibold text-foreground",
|
|
156
|
+
inset && "pl-8",
|
|
203
157
|
className
|
|
204
158
|
)}
|
|
205
159
|
{...props}
|
|
@@ -213,28 +167,27 @@ const ContextMenuSeparator = React.forwardRef<
|
|
|
213
167
|
>(({ className, ...props }, ref) => (
|
|
214
168
|
<ContextMenuPrimitive.Separator
|
|
215
169
|
ref={ref}
|
|
216
|
-
|
|
217
|
-
className={cn("bg-border -mx-1 my-1 h-px", className)}
|
|
170
|
+
className={cn("-mx-1 my-1 h-px bg-border", className)}
|
|
218
171
|
{...props}
|
|
219
172
|
/>
|
|
220
173
|
))
|
|
221
174
|
ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName
|
|
222
175
|
|
|
223
|
-
|
|
176
|
+
const ContextMenuShortcut = ({
|
|
224
177
|
className,
|
|
225
178
|
...props
|
|
226
|
-
}: React.
|
|
179
|
+
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
227
180
|
return (
|
|
228
181
|
<span
|
|
229
|
-
data-slot="context-menu-shortcut"
|
|
230
182
|
className={cn(
|
|
231
|
-
"
|
|
183
|
+
"ml-auto text-xs tracking-widest text-muted-foreground",
|
|
232
184
|
className
|
|
233
185
|
)}
|
|
234
186
|
{...props}
|
|
235
187
|
/>
|
|
236
188
|
)
|
|
237
189
|
}
|
|
190
|
+
ContextMenuShortcut.displayName = "ContextMenuShortcut"
|
|
238
191
|
|
|
239
192
|
export {
|
|
240
193
|
ContextMenu,
|