@object-ui/components 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/ISSUES_FOUND.md +128 -0
- package/README.md +19 -1
- package/README_SHADCN_SYNC.md +281 -0
- package/TESTING.md +335 -0
- package/dist/index.css +1 -1
- package/dist/index.js +30981 -30027
- package/dist/index.umd.cjs +30 -39
- package/dist/src/hooks/use-mobile.d.ts +7 -0
- package/dist/src/index.d.ts +4 -1
- package/dist/src/renderers/basic/button-group.d.ts +8 -0
- package/dist/src/renderers/basic/div.d.ts +7 -0
- package/dist/src/renderers/basic/html.d.ts +7 -0
- package/dist/src/renderers/basic/icon.d.ts +7 -0
- package/dist/src/renderers/basic/image.d.ts +7 -0
- package/dist/src/renderers/basic/navigation-menu.d.ts +8 -0
- package/dist/src/renderers/basic/pagination.d.ts +8 -0
- package/dist/src/renderers/basic/separator.d.ts +7 -0
- package/dist/src/renderers/basic/span.d.ts +7 -0
- package/dist/src/renderers/basic/text.d.ts +7 -0
- package/dist/src/renderers/complex/carousel.d.ts +7 -0
- package/dist/src/renderers/complex/data-table.d.ts +7 -0
- package/dist/src/renderers/complex/filter-builder.d.ts +7 -0
- package/dist/src/renderers/complex/resizable.d.ts +7 -0
- package/dist/src/renderers/complex/scroll-area.d.ts +7 -0
- package/dist/src/renderers/complex/table.d.ts +7 -0
- package/dist/src/renderers/data-display/alert.d.ts +7 -0
- package/dist/src/renderers/data-display/avatar.d.ts +7 -0
- package/dist/src/renderers/data-display/badge.d.ts +7 -0
- package/dist/src/renderers/data-display/breadcrumb.d.ts +8 -0
- package/dist/src/renderers/data-display/kbd.d.ts +8 -0
- package/dist/src/renderers/data-display/list.d.ts +7 -0
- package/dist/src/renderers/data-display/statistic.d.ts +7 -0
- package/dist/src/renderers/data-display/table.d.ts +8 -0
- package/dist/src/renderers/data-display/tree-view.d.ts +7 -0
- package/dist/src/renderers/disclosure/accordion.d.ts +7 -0
- package/dist/src/renderers/disclosure/collapsible.d.ts +7 -0
- package/dist/src/renderers/disclosure/toggle-group.d.ts +8 -0
- package/dist/src/renderers/feedback/empty.d.ts +8 -0
- package/dist/src/renderers/feedback/loading.d.ts +7 -0
- package/dist/src/renderers/feedback/progress.d.ts +7 -0
- package/dist/src/renderers/feedback/skeleton.d.ts +7 -0
- package/dist/src/renderers/feedback/sonner.d.ts +8 -0
- package/dist/src/renderers/feedback/spinner.d.ts +8 -0
- package/dist/src/renderers/feedback/toast.d.ts +8 -0
- package/dist/src/renderers/feedback/toaster.d.ts +7 -0
- package/dist/src/renderers/form/button.d.ts +7 -0
- package/dist/src/renderers/form/calendar.d.ts +7 -0
- package/dist/src/renderers/form/checkbox.d.ts +7 -0
- package/dist/src/renderers/form/combobox.d.ts +8 -0
- package/dist/src/renderers/form/command.d.ts +8 -0
- package/dist/src/renderers/form/date-picker.d.ts +7 -0
- package/dist/src/renderers/form/file-upload.d.ts +7 -0
- package/dist/src/renderers/form/form.d.ts +7 -0
- package/dist/src/renderers/form/input-otp.d.ts +7 -0
- package/dist/src/renderers/form/input.d.ts +7 -0
- package/dist/src/renderers/form/label.d.ts +7 -0
- package/dist/src/renderers/form/radio-group.d.ts +7 -0
- package/dist/src/renderers/form/select.d.ts +7 -0
- package/dist/src/renderers/form/slider.d.ts +7 -0
- package/dist/src/renderers/form/switch.d.ts +7 -0
- package/dist/src/renderers/form/textarea.d.ts +7 -0
- package/dist/src/renderers/form/toggle.d.ts +7 -0
- package/dist/src/renderers/layout/aspect-ratio.d.ts +8 -0
- package/dist/src/renderers/layout/card.d.ts +7 -0
- package/dist/src/renderers/layout/container.d.ts +7 -0
- package/dist/src/renderers/layout/flex.d.ts +7 -0
- package/dist/src/renderers/layout/grid.d.ts +7 -0
- package/dist/src/renderers/layout/semantic.d.ts +7 -0
- package/dist/src/renderers/layout/stack.d.ts +7 -0
- package/dist/src/renderers/layout/tabs.d.ts +7 -0
- package/dist/src/renderers/navigation/header-bar.d.ts +7 -0
- package/dist/src/renderers/navigation/sidebar.d.ts +7 -0
- package/dist/src/renderers/overlay/alert-dialog.d.ts +7 -0
- package/dist/src/renderers/overlay/context-menu.d.ts +7 -0
- package/dist/src/renderers/overlay/dialog.d.ts +7 -0
- package/dist/src/renderers/overlay/drawer.d.ts +7 -0
- package/dist/src/renderers/overlay/dropdown-menu.d.ts +7 -0
- package/dist/src/renderers/overlay/hover-card.d.ts +7 -0
- package/dist/src/renderers/overlay/menubar.d.ts +8 -0
- package/dist/src/renderers/overlay/popover.d.ts +7 -0
- package/dist/src/renderers/overlay/sheet.d.ts +7 -0
- package/dist/src/renderers/overlay/tooltip.d.ts +7 -0
- package/dist/src/renderers/placeholders.d.ts +9 -0
- package/dist/src/ui/accordion.d.ts +7 -0
- package/dist/src/ui/alert-dialog.d.ts +7 -0
- package/dist/src/ui/alert.d.ts +7 -0
- package/dist/src/ui/aspect-ratio.d.ts +7 -0
- package/dist/src/ui/avatar.d.ts +7 -0
- package/dist/src/ui/badge.d.ts +7 -0
- package/dist/src/ui/breadcrumb.d.ts +7 -0
- package/dist/src/ui/button.d.ts +10 -5
- package/dist/src/ui/calendar.d.ts +14 -7
- package/dist/src/ui/card.d.ts +7 -0
- package/dist/src/ui/carousel.d.ts +7 -0
- package/dist/src/ui/checkbox.d.ts +7 -0
- package/dist/src/ui/collapsible.d.ts +7 -0
- package/dist/src/ui/combobox.d.ts +22 -0
- package/dist/src/ui/command.d.ts +7 -0
- package/dist/src/ui/context-menu.d.ts +7 -0
- package/dist/src/ui/date-picker.d.ts +15 -0
- package/dist/src/ui/dialog.d.ts +7 -0
- package/dist/src/ui/drawer.d.ts +7 -0
- package/dist/src/ui/dropdown-menu.d.ts +7 -0
- package/dist/src/ui/filter-builder.d.ts +7 -0
- package/dist/src/ui/form.d.ts +7 -0
- package/dist/src/ui/hover-card.d.ts +7 -0
- package/dist/src/ui/index.d.ts +10 -5
- package/dist/src/ui/input-otp.d.ts +7 -0
- package/dist/src/ui/input.d.ts +7 -0
- package/dist/src/ui/item.d.ts +7 -0
- package/dist/src/ui/kbd.d.ts +7 -0
- package/dist/src/ui/label.d.ts +7 -0
- package/dist/src/ui/menubar.d.ts +7 -0
- package/dist/src/ui/navigation-menu.d.ts +7 -0
- package/dist/src/ui/pagination.d.ts +7 -0
- package/dist/src/ui/popover.d.ts +7 -0
- package/dist/src/ui/progress.d.ts +7 -0
- package/dist/src/ui/radio-group.d.ts +7 -0
- package/dist/src/ui/resizable.d.ts +7 -0
- package/dist/src/ui/scroll-area.d.ts +7 -0
- package/dist/src/ui/select.d.ts +9 -2
- package/dist/src/ui/separator.d.ts +7 -0
- package/dist/src/ui/sheet.d.ts +7 -0
- package/dist/src/ui/sidebar.d.ts +14 -9
- package/dist/src/ui/skeleton.d.ts +7 -0
- package/dist/src/ui/slider.d.ts +7 -0
- package/dist/src/ui/spinner.d.ts +7 -0
- package/dist/src/ui/switch.d.ts +7 -0
- package/dist/src/ui/table.d.ts +15 -8
- package/dist/src/ui/tabs.d.ts +7 -0
- package/dist/src/ui/textarea.d.ts +7 -0
- package/dist/src/ui/toggle-group.d.ts +8 -3
- package/dist/src/ui/toggle.d.ts +7 -0
- package/dist/src/ui/tooltip.d.ts +7 -0
- package/metadata/ObjectGrid.component.yml +72 -0
- package/package.json +23 -11
- package/postcss.config.js +9 -1
- package/shadcn-components.json +310 -0
- package/src/__tests__/README.md +124 -0
- package/src/__tests__/basic-renderers.test.tsx +255 -0
- package/src/__tests__/complex-disclosure-renderers.test.tsx +301 -0
- package/src/__tests__/feedback-overlay-renderers.test.tsx +349 -0
- package/src/__tests__/form-renderers.test.tsx +364 -0
- package/src/__tests__/layout-data-renderers.test.tsx +340 -0
- package/src/__tests__/test-utils.tsx +190 -0
- package/src/hooks/use-mobile.tsx +8 -0
- package/src/index.css +86 -54
- package/src/index.test.ts +8 -0
- package/src/index.ts +21 -1
- package/src/lib/utils.tsx +8 -0
- package/src/new-components.test.ts +8 -9
- package/src/renderers/basic/button-group.tsx +78 -0
- package/src/renderers/basic/div.tsx +9 -1
- package/src/renderers/basic/html.tsx +8 -0
- package/src/renderers/basic/icon.tsx +66 -3
- package/src/renderers/basic/image.tsx +12 -1
- package/src/renderers/basic/index.ts +11 -0
- package/src/renderers/basic/navigation-menu.tsx +80 -0
- package/src/renderers/basic/pagination.tsx +82 -0
- package/src/renderers/basic/separator.tsx +9 -1
- package/src/renderers/basic/span.tsx +9 -1
- package/src/renderers/basic/text.tsx +8 -0
- package/src/renderers/complex/__tests__/data-table.test.ts +8 -0
- package/src/renderers/complex/carousel.tsx +11 -3
- package/src/renderers/complex/data-table.tsx +19 -4
- package/src/renderers/complex/filter-builder.tsx +8 -0
- package/src/renderers/complex/index.ts +9 -3
- package/src/renderers/complex/resizable.tsx +8 -0
- package/src/renderers/complex/scroll-area.tsx +8 -0
- package/src/renderers/complex/table.tsx +10 -2
- package/src/renderers/data-display/alert.tsx +8 -0
- package/src/renderers/data-display/avatar.tsx +8 -0
- package/src/renderers/data-display/badge.tsx +8 -0
- package/src/renderers/data-display/breadcrumb.tsx +59 -0
- package/src/renderers/data-display/index.ts +12 -0
- package/src/renderers/data-display/kbd.tsx +49 -0
- package/src/renderers/data-display/list.tsx +8 -0
- package/src/renderers/data-display/statistic.tsx +24 -43
- package/src/renderers/data-display/table.tsx +68 -0
- package/src/renderers/data-display/tree-view.tsx +26 -37
- package/src/renderers/disclosure/accordion.tsx +8 -0
- package/src/renderers/disclosure/collapsible.tsx +8 -0
- package/src/renderers/disclosure/index.ts +9 -0
- package/src/renderers/disclosure/toggle-group.tsx +77 -0
- package/src/renderers/feedback/empty.tsx +48 -0
- package/src/renderers/feedback/index.ts +12 -0
- package/src/renderers/feedback/loading.tsx +8 -0
- package/src/renderers/feedback/progress.tsx +8 -0
- package/src/renderers/feedback/skeleton.tsx +8 -0
- package/src/renderers/feedback/sonner.tsx +55 -0
- package/src/renderers/feedback/spinner.tsx +54 -0
- package/src/renderers/feedback/toast.tsx +58 -0
- package/src/renderers/feedback/toaster.tsx +13 -17
- package/src/renderers/form/button.tsx +8 -0
- package/src/renderers/form/calendar.tsx +8 -0
- package/src/renderers/form/checkbox.tsx +8 -0
- package/src/renderers/form/combobox.tsx +47 -0
- package/src/renderers/form/command.tsx +57 -0
- package/src/renderers/form/date-picker.tsx +10 -2
- package/src/renderers/form/file-upload.tsx +10 -2
- package/src/renderers/form/form.tsx +12 -3
- package/src/renderers/form/index.ts +10 -0
- package/src/renderers/form/input-otp.tsx +34 -15
- package/src/renderers/form/input.tsx +89 -50
- package/src/renderers/form/label.tsx +8 -0
- package/src/renderers/form/radio-group.tsx +8 -0
- package/src/renderers/form/select.tsx +8 -0
- package/src/renderers/form/slider.tsx +16 -1
- package/src/renderers/form/switch.tsx +8 -0
- package/src/renderers/form/textarea.tsx +8 -0
- package/src/renderers/form/toggle.tsx +8 -0
- package/src/renderers/index.ts +8 -0
- package/src/renderers/layout/aspect-ratio.tsx +50 -0
- package/src/renderers/layout/card.tsx +8 -0
- package/src/renderers/layout/container.tsx +20 -12
- package/src/renderers/layout/flex.tsx +16 -8
- package/src/renderers/layout/grid.tsx +8 -0
- package/src/renderers/layout/index.ts +9 -0
- package/src/renderers/layout/page.tsx +9 -1
- package/src/renderers/layout/semantic.tsx +8 -0
- package/src/renderers/layout/stack.tsx +16 -8
- package/src/renderers/layout/tabs.tsx +8 -0
- package/src/renderers/navigation/header-bar.tsx +9 -1
- package/src/renderers/navigation/index.ts +8 -0
- package/src/renderers/navigation/sidebar.tsx +8 -0
- package/src/renderers/overlay/alert-dialog.tsx +8 -0
- package/src/renderers/overlay/context-menu.tsx +9 -1
- package/src/renderers/overlay/dialog.tsx +8 -0
- package/src/renderers/overlay/drawer.tsx +8 -0
- package/src/renderers/overlay/dropdown-menu.tsx +8 -0
- package/src/renderers/overlay/hover-card.tsx +8 -0
- package/src/renderers/overlay/index.ts +9 -0
- package/src/renderers/overlay/menubar.tsx +75 -0
- package/src/renderers/overlay/popover.tsx +8 -0
- package/src/renderers/overlay/sheet.tsx +8 -0
- package/src/renderers/overlay/tooltip.tsx +8 -0
- package/src/renderers/placeholders.tsx +107 -0
- package/src/ui/accordion.tsx +8 -0
- package/src/ui/alert-dialog.tsx +8 -0
- package/src/ui/alert.tsx +14 -24
- package/src/ui/aspect-ratio.tsx +8 -0
- package/src/ui/avatar.tsx +8 -0
- package/src/ui/badge.tsx +13 -6
- package/src/ui/breadcrumb.tsx +8 -0
- package/src/ui/button-group.tsx +8 -0
- package/src/ui/button.tsx +38 -36
- package/src/ui/calendar.tsx +57 -200
- package/src/ui/card.tsx +8 -0
- package/src/ui/carousel.tsx +8 -0
- package/src/ui/checkbox.tsx +8 -0
- package/src/ui/collapsible.tsx +8 -0
- package/src/ui/combobox.tsx +104 -0
- package/src/ui/command.tsx +8 -0
- package/src/ui/context-menu.tsx +8 -0
- package/src/ui/date-picker.tsx +61 -0
- package/src/ui/dialog.tsx +8 -0
- package/src/ui/drawer.tsx +8 -0
- package/src/ui/dropdown-menu.tsx +8 -0
- package/src/ui/empty.tsx +8 -0
- package/src/ui/filter-builder.tsx +8 -0
- package/src/ui/form.tsx +8 -0
- package/src/ui/hover-card.tsx +8 -0
- package/src/ui/index.ts +11 -5
- package/src/ui/input-otp.tsx +20 -12
- package/src/ui/input.tsx +8 -0
- package/src/ui/item.tsx +8 -0
- package/src/ui/kbd.tsx +8 -0
- package/src/ui/label.tsx +8 -0
- package/src/ui/menubar.tsx +8 -0
- package/src/ui/navigation-menu.tsx +8 -0
- package/src/ui/pagination.tsx +8 -0
- package/src/ui/popover.tsx +9 -1
- package/src/ui/progress.tsx +11 -15
- package/src/ui/radio-group.tsx +8 -0
- package/src/ui/resizable.tsx +8 -0
- package/src/ui/scroll-area.tsx +9 -1
- package/src/ui/select.tsx +17 -9
- package/src/ui/separator.tsx +8 -0
- package/src/ui/sheet.tsx +8 -0
- package/src/ui/sidebar.tsx +34 -15
- package/src/ui/skeleton.tsx +8 -0
- package/src/ui/slider.tsx +8 -0
- package/src/ui/sonner.tsx +12 -20
- package/src/ui/spinner.tsx +11 -23
- package/src/ui/switch.tsx +8 -0
- package/src/ui/table.tsx +102 -97
- package/src/ui/tabs.tsx +8 -0
- package/src/ui/textarea.tsx +8 -0
- package/src/ui/toggle-group.tsx +12 -21
- package/src/ui/toggle.tsx +15 -12
- package/src/ui/tooltip.tsx +8 -0
- package/tsconfig.json +2 -1
- package/vite.config.ts +11 -1
- package/dist/src/index.test.d.ts +0 -1
- package/dist/src/new-components.test.d.ts +0 -1
- package/dist/src/renderers/complex/__tests__/data-table.test.d.ts +0 -0
- package/dist/src/renderers/complex/calendar-view.d.ts +0 -1
- package/dist/src/renderers/complex/chatbot.d.ts +0 -1
- package/dist/src/renderers/complex/chatbot.test.d.ts +0 -1
- package/dist/src/renderers/complex/timeline.d.ts +0 -1
- package/dist/src/ui/calendar-view.d.ts +0 -21
- package/dist/src/ui/chatbot.d.ts +0 -36
- package/dist/src/ui/field.d.ts +0 -24
- package/dist/src/ui/input-group.d.ts +0 -16
- package/dist/src/ui/timeline.d.ts +0 -25
- package/metadata/ObjectTable.component.yml +0 -41
- package/src/renderers/complex/calendar-view.tsx +0 -219
- package/src/renderers/complex/chatbot.test.ts +0 -44
- package/src/renderers/complex/chatbot.tsx +0 -185
- package/src/renderers/complex/timeline.tsx +0 -466
- package/src/ui/calendar-view.tsx +0 -503
- package/src/ui/chatbot.tsx +0 -240
- package/src/ui/field.tsx +0 -246
- package/src/ui/input-group.tsx +0 -170
- package/src/ui/timeline.tsx +0 -266
- package/tailwind.config.js +0 -75
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
"use client"
|
|
10
|
+
|
|
11
|
+
import * as React from "react"
|
|
12
|
+
import { Check, ChevronsUpDown } from "lucide-react"
|
|
13
|
+
|
|
14
|
+
import { cn } from "../lib/utils"
|
|
15
|
+
import { Button } from "./button"
|
|
16
|
+
import {
|
|
17
|
+
Command,
|
|
18
|
+
CommandEmpty,
|
|
19
|
+
CommandGroup,
|
|
20
|
+
CommandInput,
|
|
21
|
+
CommandItem,
|
|
22
|
+
CommandList,
|
|
23
|
+
} from "./command"
|
|
24
|
+
import {
|
|
25
|
+
Popover,
|
|
26
|
+
PopoverContent,
|
|
27
|
+
PopoverTrigger,
|
|
28
|
+
} from "./popover"
|
|
29
|
+
|
|
30
|
+
export interface ComboboxOption {
|
|
31
|
+
value: string
|
|
32
|
+
label: string
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface ComboboxProps {
|
|
36
|
+
options: ComboboxOption[]
|
|
37
|
+
value?: string
|
|
38
|
+
onValueChange?: (value: string) => void
|
|
39
|
+
placeholder?: string
|
|
40
|
+
searchPlaceholder?: string
|
|
41
|
+
emptyText?: string
|
|
42
|
+
className?: string
|
|
43
|
+
disabled?: boolean
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function Combobox({
|
|
47
|
+
options,
|
|
48
|
+
value,
|
|
49
|
+
onValueChange,
|
|
50
|
+
placeholder = "Select option...",
|
|
51
|
+
searchPlaceholder = "Search...",
|
|
52
|
+
emptyText = "No option found.",
|
|
53
|
+
className,
|
|
54
|
+
disabled,
|
|
55
|
+
}: ComboboxProps) {
|
|
56
|
+
const [open, setOpen] = React.useState(false)
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<Popover open={open} onOpenChange={setOpen}>
|
|
60
|
+
<PopoverTrigger asChild>
|
|
61
|
+
<Button
|
|
62
|
+
variant="outline"
|
|
63
|
+
role="combobox"
|
|
64
|
+
aria-expanded={open}
|
|
65
|
+
className={cn("w-[200px] justify-between", className)}
|
|
66
|
+
disabled={disabled}
|
|
67
|
+
>
|
|
68
|
+
{value
|
|
69
|
+
? options.find((option) => option.value === value)?.label
|
|
70
|
+
: placeholder}
|
|
71
|
+
<ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
|
|
72
|
+
</Button>
|
|
73
|
+
</PopoverTrigger>
|
|
74
|
+
<PopoverContent className="w-[200px] p-0">
|
|
75
|
+
<Command>
|
|
76
|
+
<CommandInput placeholder={searchPlaceholder} />
|
|
77
|
+
<CommandList>
|
|
78
|
+
<CommandEmpty>{emptyText}</CommandEmpty>
|
|
79
|
+
<CommandGroup>
|
|
80
|
+
{options.map((option) => (
|
|
81
|
+
<CommandItem
|
|
82
|
+
key={option.value}
|
|
83
|
+
value={option.value}
|
|
84
|
+
onSelect={(currentValue) => {
|
|
85
|
+
onValueChange?.(currentValue === value ? "" : currentValue)
|
|
86
|
+
setOpen(false)
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
<Check
|
|
90
|
+
className={cn(
|
|
91
|
+
"mr-2 h-4 w-4",
|
|
92
|
+
value === option.value ? "opacity-100" : "opacity-0"
|
|
93
|
+
)}
|
|
94
|
+
/>
|
|
95
|
+
{option.label}
|
|
96
|
+
</CommandItem>
|
|
97
|
+
))}
|
|
98
|
+
</CommandGroup>
|
|
99
|
+
</CommandList>
|
|
100
|
+
</Command>
|
|
101
|
+
</PopoverContent>
|
|
102
|
+
</Popover>
|
|
103
|
+
)
|
|
104
|
+
}
|
package/src/ui/command.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import { Command as CommandPrimitive } from "cmdk"
|
|
3
11
|
import { SearchIcon } from "lucide-react"
|
package/src/ui/context-menu.tsx
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
"use client"
|
|
10
|
+
|
|
11
|
+
import * as React from "react"
|
|
12
|
+
import { CalendarIcon } from "lucide-react"
|
|
13
|
+
import { format } from "date-fns"
|
|
14
|
+
|
|
15
|
+
import { cn } from "../lib/utils"
|
|
16
|
+
import { Button } from "./button"
|
|
17
|
+
import { Calendar } from "./calendar"
|
|
18
|
+
import { Popover, PopoverContent, PopoverTrigger } from "./popover"
|
|
19
|
+
|
|
20
|
+
export interface DatePickerProps {
|
|
21
|
+
date?: Date
|
|
22
|
+
onDateChange?: (date: Date | undefined) => void
|
|
23
|
+
placeholder?: string
|
|
24
|
+
className?: string
|
|
25
|
+
disabled?: boolean
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function DatePicker({
|
|
29
|
+
date,
|
|
30
|
+
onDateChange,
|
|
31
|
+
placeholder = "Pick a date",
|
|
32
|
+
className,
|
|
33
|
+
disabled,
|
|
34
|
+
}: DatePickerProps) {
|
|
35
|
+
return (
|
|
36
|
+
<Popover>
|
|
37
|
+
<PopoverTrigger asChild>
|
|
38
|
+
<Button
|
|
39
|
+
variant={"outline"}
|
|
40
|
+
className={cn(
|
|
41
|
+
"w-[280px] justify-start text-left font-normal",
|
|
42
|
+
!date && "text-muted-foreground",
|
|
43
|
+
className
|
|
44
|
+
)}
|
|
45
|
+
disabled={disabled}
|
|
46
|
+
>
|
|
47
|
+
<CalendarIcon className="mr-2 h-4 w-4" />
|
|
48
|
+
{date ? format(date, "PPP") : <span>{placeholder}</span>}
|
|
49
|
+
</Button>
|
|
50
|
+
</PopoverTrigger>
|
|
51
|
+
<PopoverContent className="w-auto p-0">
|
|
52
|
+
<Calendar
|
|
53
|
+
mode="single"
|
|
54
|
+
selected={date}
|
|
55
|
+
onSelect={onDateChange}
|
|
56
|
+
initialFocus
|
|
57
|
+
/>
|
|
58
|
+
</PopoverContent>
|
|
59
|
+
</Popover>
|
|
60
|
+
)
|
|
61
|
+
}
|
package/src/ui/dialog.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as DialogPrimitive from "@radix-ui/react-dialog"
|
|
3
11
|
import { XIcon } from "lucide-react"
|
package/src/ui/drawer.tsx
CHANGED
package/src/ui/dropdown-menu.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
|
|
3
11
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
|
package/src/ui/empty.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
2
10
|
|
|
3
11
|
import { cn } from "../lib/utils"
|
package/src/ui/form.tsx
CHANGED
package/src/ui/hover-card.tsx
CHANGED
package/src/ui/index.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
export * from './accordion';
|
|
2
10
|
export * from './alert-dialog';
|
|
3
11
|
export * from './alert';
|
|
@@ -8,23 +16,21 @@ export * from './breadcrumb';
|
|
|
8
16
|
export * from './button-group';
|
|
9
17
|
export * from './button';
|
|
10
18
|
export * from './calendar';
|
|
11
|
-
export * from './calendar-view';
|
|
12
19
|
export * from './card';
|
|
13
20
|
export * from './carousel';
|
|
14
|
-
export * from './chatbot';
|
|
15
21
|
export * from './checkbox';
|
|
16
22
|
export * from './collapsible';
|
|
23
|
+
export * from './combobox';
|
|
17
24
|
export * from './command';
|
|
18
25
|
export * from './context-menu';
|
|
26
|
+
export * from './date-picker';
|
|
19
27
|
export * from './dialog';
|
|
20
28
|
export * from './drawer';
|
|
21
29
|
export * from './dropdown-menu';
|
|
22
30
|
export * from './empty';
|
|
23
|
-
export * from './field';
|
|
24
31
|
export * from './filter-builder';
|
|
25
32
|
export * from './form';
|
|
26
33
|
export * from './hover-card';
|
|
27
|
-
export * from './input-group';
|
|
28
34
|
export * from './input-otp';
|
|
29
35
|
export * from './input';
|
|
30
36
|
export * from './item';
|
|
@@ -45,12 +51,12 @@ export * from './sidebar';
|
|
|
45
51
|
export * from './skeleton';
|
|
46
52
|
export * from './slider';
|
|
47
53
|
export * from './sonner';
|
|
54
|
+
export { Toaster } from './sonner';
|
|
48
55
|
export * from './spinner';
|
|
49
56
|
export * from './switch';
|
|
50
57
|
export * from './table';
|
|
51
58
|
export * from './tabs';
|
|
52
59
|
export * from './textarea';
|
|
53
|
-
export * from './timeline';
|
|
54
60
|
export * from './toggle-group';
|
|
55
61
|
export * from './toggle';
|
|
56
62
|
export * from './tooltip';
|
package/src/ui/input-otp.tsx
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
"use client"
|
|
10
|
+
|
|
1
11
|
import * as React from "react"
|
|
2
12
|
import { OTPInput, OTPInputContext } from "input-otp"
|
|
3
|
-
import {
|
|
13
|
+
import { Minus } from "lucide-react"
|
|
4
14
|
|
|
5
15
|
import { cn } from "../lib/utils"
|
|
6
16
|
|
|
@@ -28,7 +38,7 @@ function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
28
38
|
return (
|
|
29
39
|
<div
|
|
30
40
|
data-slot="input-otp-group"
|
|
31
|
-
className={cn("flex items-center
|
|
41
|
+
className={cn("flex items-center", className)}
|
|
32
42
|
{...props}
|
|
33
43
|
/>
|
|
34
44
|
)
|
|
@@ -49,13 +59,7 @@ function InputOTPSlot({
|
|
|
49
59
|
data-slot="input-otp-slot"
|
|
50
60
|
data-active={isActive}
|
|
51
61
|
className={cn(
|
|
52
|
-
"relative flex h-
|
|
53
|
-
"bg-slate-950/60 border-2 border-slate-800 text-slate-500", // Default state (Inactive)
|
|
54
|
-
"data-[active=true]:border-cyan-400 data-[active=true]:text-cyan-300 data-[active=true]:bg-cyan-950/20", // Active/Focused
|
|
55
|
-
"data-[active=true]:shadow-[0_0_20px_rgba(6,182,212,0.5),inset_0_0_10px_rgba(6,182,212,0.1)]", // Glow
|
|
56
|
-
"data-[active=true]:-translate-y-1 data-[active=true]:scale-105", // Lift effect
|
|
57
|
-
isActive && "animate-pulse-subtle", // Custom subtle pulse for active slot
|
|
58
|
-
char && "border-cyan-500/50 text-cyan-100 bg-cyan-950/10 shadow-[0_0_10px_rgba(6,182,212,0.2)]", // Filled state
|
|
62
|
+
"relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-xs transition-all first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px] data-[active=true]:ring-ring/50 data-[active=true]:border-ring outline-none",
|
|
59
63
|
className
|
|
60
64
|
)}
|
|
61
65
|
{...props}
|
|
@@ -63,7 +67,7 @@ function InputOTPSlot({
|
|
|
63
67
|
{char}
|
|
64
68
|
{hasFakeCaret && (
|
|
65
69
|
<div className="pointer-events-none absolute inset-0 flex items-center justify-center">
|
|
66
|
-
<div className="animate-caret-blink bg-
|
|
70
|
+
<div className="h-4 w-px animate-caret-blink bg-foreground duration-1000" />
|
|
67
71
|
</div>
|
|
68
72
|
)}
|
|
69
73
|
</div>
|
|
@@ -72,8 +76,12 @@ function InputOTPSlot({
|
|
|
72
76
|
|
|
73
77
|
function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) {
|
|
74
78
|
return (
|
|
75
|
-
<div
|
|
76
|
-
|
|
79
|
+
<div
|
|
80
|
+
data-slot="input-otp-separator"
|
|
81
|
+
role="separator"
|
|
82
|
+
{...props}
|
|
83
|
+
>
|
|
84
|
+
<Minus className="text-muted-foreground/50" />
|
|
77
85
|
</div>
|
|
78
86
|
)
|
|
79
87
|
}
|
package/src/ui/input.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
|
|
3
11
|
import { cn } from "../lib/utils"
|
package/src/ui/item.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import { Slot } from "@radix-ui/react-slot"
|
|
3
11
|
import { cva, type VariantProps } from "class-variance-authority"
|
package/src/ui/kbd.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import { cn } from "../lib/utils"
|
|
2
10
|
|
|
3
11
|
function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
|
package/src/ui/label.tsx
CHANGED
package/src/ui/menubar.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as MenubarPrimitive from "@radix-ui/react-menubar"
|
|
3
11
|
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
|
|
3
11
|
import { cva } from "class-variance-authority"
|
package/src/ui/pagination.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import {
|
|
3
11
|
ChevronLeftIcon,
|
package/src/ui/popover.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
"use client"
|
|
2
10
|
|
|
3
11
|
import * as React from "react"
|
|
@@ -30,7 +38,7 @@ function PopoverContent({
|
|
|
30
38
|
align={align}
|
|
31
39
|
sideOffset={sideOffset}
|
|
32
40
|
className={cn(
|
|
33
|
-
"
|
|
41
|
+
"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",
|
|
34
42
|
className
|
|
35
43
|
)}
|
|
36
44
|
{...props}
|
package/src/ui/progress.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as ProgressPrimitive from "@radix-ui/react-progress"
|
|
3
11
|
|
|
@@ -12,28 +20,16 @@ function Progress({
|
|
|
12
20
|
<ProgressPrimitive.Root
|
|
13
21
|
data-slot="progress"
|
|
14
22
|
className={cn(
|
|
15
|
-
"relative h-
|
|
23
|
+
"relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
|
|
16
24
|
className
|
|
17
25
|
)}
|
|
18
26
|
{...props}
|
|
19
27
|
>
|
|
20
|
-
{/* Background Grid Pattern for empty track */}
|
|
21
|
-
<div className="absolute inset-0 bg-[linear-gradient(90deg,transparent_2px,rgba(6,182,212,0.1)_2px),linear-gradient(0deg,transparent_2px,rgba(6,182,212,0.1)_2px)] bg-[size:10px_10px] opacity-20" />
|
|
22
|
-
|
|
23
28
|
<ProgressPrimitive.Indicator
|
|
24
29
|
data-slot="progress-indicator"
|
|
25
|
-
className="h-full w-full flex-1
|
|
30
|
+
className="h-full w-full flex-1 bg-primary transition-all"
|
|
26
31
|
style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
|
|
27
|
-
|
|
28
|
-
{/* Pulse / Flow Effect Overlay */}
|
|
29
|
-
<div className="absolute inset-0 bg-linear-to-r from-transparent via-white/30 to-transparent -translate-x-full animate-[shimmer_1.5s_infinite_linear]" />
|
|
30
|
-
|
|
31
|
-
{/* Leading Edge Hotspot */}
|
|
32
|
-
<div className="absolute right-0 top-0 bottom-0 w-0.5 bg-white shadow-[0_0_10px_2px_white] z-10" />
|
|
33
|
-
|
|
34
|
-
{/* Scanlines on the bar */}
|
|
35
|
-
<div className="absolute inset-0 bg-[linear-gradient(transparent_50%,rgba(0,0,0,0.2)_50%)] bg-[size:4px_4px]" />
|
|
36
|
-
</ProgressPrimitive.Indicator>
|
|
32
|
+
/>
|
|
37
33
|
</ProgressPrimitive.Root>
|
|
38
34
|
)
|
|
39
35
|
}
|
package/src/ui/radio-group.tsx
CHANGED
package/src/ui/resizable.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import { GripVerticalIcon } from "lucide-react"
|
|
3
11
|
import { Group as PanelGroup, Panel, Separator as PanelResizeHandle } from "react-resizable-panels"
|
package/src/ui/scroll-area.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
"use client"
|
|
2
10
|
|
|
3
11
|
import * as React from "react"
|
|
@@ -49,7 +57,7 @@ function ScrollBar({
|
|
|
49
57
|
>
|
|
50
58
|
<ScrollAreaPrimitive.ScrollAreaThumb
|
|
51
59
|
data-slot="scroll-area-thumb"
|
|
52
|
-
className="relative flex-1 rounded-full bg-
|
|
60
|
+
className="relative flex-1 rounded-full bg-border"
|
|
53
61
|
/>
|
|
54
62
|
</ScrollAreaPrimitive.ScrollAreaScrollbar>
|
|
55
63
|
)
|
package/src/ui/select.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as SelectPrimitive from "@radix-ui/react-select"
|
|
3
11
|
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
|
|
@@ -22,16 +30,15 @@ function SelectValue({
|
|
|
22
30
|
return <SelectPrimitive.Value data-slot="select-value" {...props} />
|
|
23
31
|
}
|
|
24
32
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
size?: "sm" | "default"
|
|
32
|
-
}) {
|
|
33
|
+
const SelectTrigger = React.forwardRef<
|
|
34
|
+
React.ElementRef<typeof SelectPrimitive.Trigger>,
|
|
35
|
+
React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger> & {
|
|
36
|
+
size?: "sm" | "default"
|
|
37
|
+
}
|
|
38
|
+
>(({ className, size = "default", children, ...props }, ref) => {
|
|
33
39
|
return (
|
|
34
40
|
<SelectPrimitive.Trigger
|
|
41
|
+
ref={ref}
|
|
35
42
|
data-slot="select-trigger"
|
|
36
43
|
data-size={size}
|
|
37
44
|
className={cn(
|
|
@@ -46,7 +53,8 @@ function SelectTrigger({
|
|
|
46
53
|
</SelectPrimitive.Icon>
|
|
47
54
|
</SelectPrimitive.Trigger>
|
|
48
55
|
)
|
|
49
|
-
}
|
|
56
|
+
})
|
|
57
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
|
|
50
58
|
|
|
51
59
|
function SelectContent({
|
|
52
60
|
className,
|
package/src/ui/separator.tsx
CHANGED
package/src/ui/sheet.tsx
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObjectUI
|
|
3
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the MIT license found in the
|
|
6
|
+
* LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
import * as React from "react"
|
|
2
10
|
import * as SheetPrimitive from "@radix-ui/react-dialog"
|
|
3
11
|
import { XIcon } from "lucide-react"
|