@cosmicdrift/kumiko-renderer-web 0.64.0 → 0.66.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/package.json +6 -4
- package/src/__tests__/date-input.test.tsx +2 -1
- package/src/__tests__/form-action-bar.test.tsx +50 -15
- package/src/__tests__/nav-tree.test.tsx +250 -16
- package/src/__tests__/primitives.test.tsx +9 -6
- package/src/__tests__/render-edit.test.tsx +6 -6
- package/src/__tests__/test-utils.tsx +21 -0
- package/src/__tests__/toast.test.tsx +4 -3
- package/src/__tests__/workspace-shell.test.tsx +21 -66
- package/src/app/__tests__/qualify-nav-provider-key.test.ts +27 -0
- package/src/app/client-plugin.tsx +12 -27
- package/src/app/create-app.tsx +31 -19
- package/src/app/nav-providers-context.tsx +56 -0
- package/src/index.ts +8 -0
- package/src/layout/app-layout.tsx +9 -2
- package/src/layout/default-app-shell.tsx +116 -33
- package/src/layout/nav-tree.tsx +491 -125
- package/src/layout/sidebar-brand.tsx +40 -0
- package/src/layout/sidebar-user.tsx +46 -0
- package/src/layout/sidebar.tsx +1 -1
- package/src/layout/target-resolver-stub.tsx +3 -5
- package/src/layout/workspace-shell.tsx +32 -34
- package/src/primitives/date-field.tsx +3 -1
- package/src/primitives/file-upload.tsx +118 -0
- package/src/primitives/index.tsx +314 -175
- package/src/primitives/timestamp-input.tsx +3 -1
- package/src/primitives/toast.tsx +8 -4
- package/src/styles.css +76 -50
- package/src/ui/avatar.tsx +110 -0
- package/src/ui/badge.tsx +49 -0
- package/src/ui/breadcrumb.tsx +110 -0
- package/src/ui/button.tsx +65 -0
- package/src/ui/card.tsx +93 -0
- package/src/ui/checkbox.tsx +33 -0
- package/src/ui/collapsible.tsx +34 -0
- package/src/ui/dropdown-menu.tsx +258 -0
- package/src/ui/input.tsx +22 -0
- package/src/ui/label.tsx +25 -0
- package/src/ui/select.tsx +191 -0
- package/src/ui/separator.tsx +29 -0
- package/src/ui/sheet.tsx +144 -0
- package/src/ui/sidebar.tsx +727 -0
- package/src/ui/skeleton.tsx +14 -0
- package/src/ui/table.tsx +117 -0
- package/src/ui/textarea.tsx +19 -0
- package/src/ui/tooltip.tsx +58 -0
- package/src/ui/use-mobile.ts +20 -0
- package/src/__tests__/visual-tree-integration.test.tsx +0 -314
- package/src/app/tree-providers-context.tsx +0 -68
- package/src/layout/__tests__/visual-tree.test.tsx +0 -303
- package/src/layout/tree-node-renderer.tsx +0 -386
- package/src/layout/visual-tree.tsx +0 -398
package/src/ui/sheet.tsx
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
// @ts-nocheck — vendored shadcn, regenerate via scripts/sync-shadcn.ts
|
|
2
|
+
"use client"
|
|
3
|
+
|
|
4
|
+
import * as React from "react"
|
|
5
|
+
import { XIcon } from "lucide-react"
|
|
6
|
+
import { Dialog as SheetPrimitive } from "radix-ui"
|
|
7
|
+
|
|
8
|
+
import { cn } from "../lib/cn"
|
|
9
|
+
|
|
10
|
+
function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {
|
|
11
|
+
return <SheetPrimitive.Root data-slot="sheet" {...props} />
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function SheetTrigger({
|
|
15
|
+
...props
|
|
16
|
+
}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {
|
|
17
|
+
return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function SheetClose({
|
|
21
|
+
...props
|
|
22
|
+
}: React.ComponentProps<typeof SheetPrimitive.Close>) {
|
|
23
|
+
return <SheetPrimitive.Close data-slot="sheet-close" {...props} />
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function SheetPortal({
|
|
27
|
+
...props
|
|
28
|
+
}: React.ComponentProps<typeof SheetPrimitive.Portal>) {
|
|
29
|
+
return <SheetPrimitive.Portal data-slot="sheet-portal" {...props} />
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function SheetOverlay({
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {
|
|
36
|
+
return (
|
|
37
|
+
<SheetPrimitive.Overlay
|
|
38
|
+
data-slot="sheet-overlay"
|
|
39
|
+
className={cn(
|
|
40
|
+
"fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
|
|
41
|
+
className
|
|
42
|
+
)}
|
|
43
|
+
{...props}
|
|
44
|
+
/>
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function SheetContent({
|
|
49
|
+
className,
|
|
50
|
+
children,
|
|
51
|
+
side = "right",
|
|
52
|
+
showCloseButton = true,
|
|
53
|
+
...props
|
|
54
|
+
}: React.ComponentProps<typeof SheetPrimitive.Content> & {
|
|
55
|
+
side?: "top" | "right" | "bottom" | "left"
|
|
56
|
+
showCloseButton?: boolean
|
|
57
|
+
}) {
|
|
58
|
+
return (
|
|
59
|
+
<SheetPortal>
|
|
60
|
+
<SheetOverlay />
|
|
61
|
+
<SheetPrimitive.Content
|
|
62
|
+
data-slot="sheet-content"
|
|
63
|
+
className={cn(
|
|
64
|
+
"fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:animate-in data-[state=open]:duration-500",
|
|
65
|
+
side === "right" &&
|
|
66
|
+
"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm",
|
|
67
|
+
side === "left" &&
|
|
68
|
+
"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
|
|
69
|
+
side === "top" &&
|
|
70
|
+
"inset-x-0 top-0 h-auto border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
|
|
71
|
+
side === "bottom" &&
|
|
72
|
+
"inset-x-0 bottom-0 h-auto border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
|
|
73
|
+
className
|
|
74
|
+
)}
|
|
75
|
+
{...props}
|
|
76
|
+
>
|
|
77
|
+
{children}
|
|
78
|
+
{showCloseButton && (
|
|
79
|
+
<SheetPrimitive.Close className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary">
|
|
80
|
+
<XIcon className="size-4" />
|
|
81
|
+
<span className="sr-only">Close</span>
|
|
82
|
+
</SheetPrimitive.Close>
|
|
83
|
+
)}
|
|
84
|
+
</SheetPrimitive.Content>
|
|
85
|
+
</SheetPortal>
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function SheetHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
90
|
+
return (
|
|
91
|
+
<div
|
|
92
|
+
data-slot="sheet-header"
|
|
93
|
+
className={cn("flex flex-col gap-1.5 p-4", className)}
|
|
94
|
+
{...props}
|
|
95
|
+
/>
|
|
96
|
+
)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function SheetFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
100
|
+
return (
|
|
101
|
+
<div
|
|
102
|
+
data-slot="sheet-footer"
|
|
103
|
+
className={cn("mt-auto flex flex-col gap-2 p-4", className)}
|
|
104
|
+
{...props}
|
|
105
|
+
/>
|
|
106
|
+
)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function SheetTitle({
|
|
110
|
+
className,
|
|
111
|
+
...props
|
|
112
|
+
}: React.ComponentProps<typeof SheetPrimitive.Title>) {
|
|
113
|
+
return (
|
|
114
|
+
<SheetPrimitive.Title
|
|
115
|
+
data-slot="sheet-title"
|
|
116
|
+
className={cn("font-semibold text-foreground", className)}
|
|
117
|
+
{...props}
|
|
118
|
+
/>
|
|
119
|
+
)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function SheetDescription({
|
|
123
|
+
className,
|
|
124
|
+
...props
|
|
125
|
+
}: React.ComponentProps<typeof SheetPrimitive.Description>) {
|
|
126
|
+
return (
|
|
127
|
+
<SheetPrimitive.Description
|
|
128
|
+
data-slot="sheet-description"
|
|
129
|
+
className={cn("text-sm text-muted-foreground", className)}
|
|
130
|
+
{...props}
|
|
131
|
+
/>
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export {
|
|
136
|
+
Sheet,
|
|
137
|
+
SheetTrigger,
|
|
138
|
+
SheetClose,
|
|
139
|
+
SheetContent,
|
|
140
|
+
SheetHeader,
|
|
141
|
+
SheetFooter,
|
|
142
|
+
SheetTitle,
|
|
143
|
+
SheetDescription,
|
|
144
|
+
}
|