gladvn 0.2.36 → 0.2.37
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/README.md +1 -1
- package/package.json +1 -1
- package/scripts/strip-comments.ts +79 -0
- package/src/blocks/auth-form.tsx +34 -30
- package/src/blocks/auth-recovery.tsx +9 -13
- package/src/blocks/auth-split.tsx +46 -36
- package/src/blocks/settings.tsx +84 -117
- package/src/components/macro/alert-preset.tsx +3 -1
- package/src/components/macro/carousel-preset.tsx +0 -1
- package/src/components/macro/checkbox-preset.test.tsx +2 -2
- package/src/components/macro/checkbox-preset.tsx +1 -2
- package/src/components/macro/command-preset.tsx +1 -1
- package/src/components/macro/date-picker.tsx +5 -18
- package/src/components/macro/dialog-preset.tsx +5 -3
- package/src/components/macro/input-preset.tsx +0 -1
- package/src/components/macro/select-preset.tsx +1 -1
- package/src/components/macro/switch-preset.test.tsx +1 -1
- package/src/components/micro/accordion.test.tsx +6 -12
- package/src/components/micro/alert-dialog.tsx +0 -2
- package/src/components/micro/alert.test.tsx +5 -8
- package/src/components/micro/alert.tsx +0 -2
- package/src/components/micro/badge.test.tsx +5 -7
- package/src/components/micro/badge.tsx +1 -3
- package/src/components/micro/button.test.tsx +19 -26
- package/src/components/micro/button.tsx +3 -11
- package/src/components/micro/calendar.tsx +12 -13
- package/src/components/micro/card.test.tsx +3 -5
- package/src/components/micro/carousel.tsx +0 -1
- package/src/components/micro/chart.tsx +3 -2
- package/src/components/micro/checkbox.test.tsx +9 -18
- package/src/components/micro/combobox.tsx +1 -3
- package/src/components/micro/command.tsx +23 -11
- package/src/components/micro/context-menu.tsx +0 -2
- package/src/components/micro/dialog.test.tsx +6 -14
- package/src/components/micro/dialog.tsx +0 -2
- package/src/components/micro/drawer.tsx +0 -3
- package/src/components/micro/dropdown-menu.test.tsx +8 -14
- package/src/components/micro/dropdown-menu.tsx +0 -2
- package/src/components/micro/field.tsx +3 -3
- package/src/components/micro/hover-card.tsx +0 -2
- package/src/components/micro/input-group.tsx +9 -42
- package/src/components/micro/input.test.tsx +15 -24
- package/src/components/micro/navigation-menu.tsx +0 -2
- package/src/components/micro/popover.test.tsx +5 -9
- package/src/components/micro/progress.tsx +5 -1
- package/src/components/micro/select.test.tsx +5 -18
- package/src/components/micro/select.tsx +3 -5
- package/src/components/micro/separator.tsx +1 -1
- package/src/components/micro/sheet.test.tsx +6 -14
- package/src/components/micro/sheet.tsx +0 -2
- package/src/components/micro/sidebar.tsx +5 -6
- package/src/components/micro/sonner.tsx +0 -1
- package/src/components/micro/switch.test.tsx +9 -18
- package/src/components/micro/switch.tsx +1 -1
- package/src/components/micro/tabs.test.tsx +5 -11
- package/src/components/micro/theme-provider.tsx +0 -12
- package/src/components/micro/toggle-group.tsx +1 -12
- package/src/components/micro/tooltip.test.tsx +7 -12
- package/src/dev/App.tsx +6 -6
- package/src/dev/components/BlockViewer.tsx +15 -4
- package/src/dev/components/Container.tsx +20 -0
- package/src/dev/components/GladvnLogo.tsx +3 -9
- package/src/dev/components/code-highlighter.tsx +5 -3
- package/src/dev/components/showcase.tsx +116 -168
- package/src/dev/sections/buttons.tsx +4 -9
- package/src/dev/sections/display.tsx +68 -72
- package/src/dev/sections/feedback.tsx +304 -314
- package/src/dev/sections/forms.tsx +10 -14
- package/src/dev/sections/interactive.tsx +32 -32
- package/src/dev/sections/overview.tsx +2 -10
- package/src/dev/showcase/accordion.tsx +512 -554
- package/src/dev/showcase/alert-dialog.tsx +525 -565
- package/src/dev/showcase/alert.tsx +352 -402
- package/src/dev/showcase/aspect-ratio.tsx +167 -193
- package/src/dev/showcase/avatar.tsx +231 -269
- package/src/dev/showcase/badge.tsx +92 -140
- package/src/dev/showcase/breadcrumb.tsx +113 -135
- package/src/dev/showcase/button.tsx +140 -173
- package/src/dev/showcase/calendar.tsx +187 -237
- package/src/dev/showcase/card.tsx +229 -261
- package/src/dev/showcase/carousel.tsx +288 -315
- package/src/dev/showcase/chart.tsx +44 -50
- package/src/dev/showcase/checkbox.tsx +286 -330
- package/src/dev/showcase/collapsible.tsx +143 -160
- package/src/dev/showcase/combobox.tsx +327 -369
- package/src/dev/showcase/command.tsx +106 -120
- package/src/dev/showcase/context-menu.tsx +93 -107
- package/src/dev/showcase/dialog.tsx +585 -630
- package/src/dev/showcase/drawer.tsx +176 -196
- package/src/dev/showcase/dropdown-menu.tsx +183 -201
- package/src/dev/showcase/empty.tsx +232 -274
- package/src/dev/showcase/hover-card.tsx +153 -180
- package/src/dev/showcase/input-group.tsx +221 -253
- package/src/dev/showcase/input-otp.tsx +204 -250
- package/src/dev/showcase/input.tsx +246 -325
- package/src/dev/showcase/item.tsx +134 -152
- package/src/dev/showcase/kbd.tsx +149 -172
- package/src/dev/showcase/label.tsx +50 -68
- package/src/dev/showcase/menubar.tsx +194 -213
- package/src/dev/showcase/navigation-menu.tsx +119 -133
- package/src/dev/showcase/overview-components/ArchitectureSection.tsx +126 -0
- package/src/dev/showcase/overview-components/CodeBlock.tsx +50 -0
- package/src/dev/showcase/overview-components/ColorPaletteSection.tsx +44 -0
- package/src/dev/showcase/overview-components/DashboardPreview.tsx +159 -0
- package/src/dev/showcase/overview-components/FeatureGridSection.tsx +535 -0
- package/src/dev/showcase/overview-components/FooterCTA.tsx +137 -0
- package/src/dev/showcase/overview-components/HeroSection.tsx +65 -0
- package/src/dev/showcase/overview-components/PrinciplesSection.tsx +128 -0
- package/src/dev/showcase/overview.tsx +21 -1163
- package/src/dev/showcase/pagination.tsx +144 -190
- package/src/dev/showcase/popover.tsx +181 -196
- package/src/dev/showcase/progress.tsx +141 -189
- package/src/dev/showcase/radio-group.tsx +272 -332
- package/src/dev/showcase/resizable.tsx +119 -141
- package/src/dev/showcase/scroll-area.tsx +21 -36
- package/src/dev/showcase/select.tsx +262 -322
- package/src/dev/showcase/separator.tsx +75 -73
- package/src/dev/showcase/sheet.tsx +333 -361
- package/src/dev/showcase/sidebar.tsx +53 -59
- package/src/dev/showcase/skeleton.tsx +93 -112
- package/src/dev/showcase/slider.tsx +244 -296
- package/src/dev/showcase/sonner.tsx +251 -258
- package/src/dev/showcase/spinner.tsx +46 -67
- package/src/dev/showcase/switch.tsx +298 -362
- package/src/dev/showcase/table.tsx +76 -80
- package/src/dev/showcase/tabs.tsx +302 -355
- package/src/dev/showcase/textarea.tsx +240 -293
- package/src/dev/showcase/toast.tsx +48 -54
- package/src/dev/showcase/toggle-group.tsx +104 -129
- package/src/dev/showcase/toggle.tsx +82 -102
- package/src/dev/showcase/tooltip.tsx +173 -192
- package/src/dev/showcase/why.tsx +6 -12
- package/src/hooks/use-mobile.test.ts +3 -2
- package/src/lib/utils.test.ts +5 -4
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import React, { useState, useEffect } from "react";
|
|
2
|
+
import { LayersIcon, DatabaseIcon, ShieldCheckIcon } from "lucide-react";
|
|
3
|
+
|
|
4
|
+
import { ProgressPreset as Progress } from "../../../components/macro/progress-preset";
|
|
5
|
+
import {
|
|
6
|
+
Card,
|
|
7
|
+
CardContent,
|
|
8
|
+
CardHeader,
|
|
9
|
+
CardTitle
|
|
10
|
+
} from "../../../components/micro/card";
|
|
11
|
+
import { Label } from "../../../components/micro/label";
|
|
12
|
+
import {
|
|
13
|
+
Select,
|
|
14
|
+
SelectContent,
|
|
15
|
+
SelectItem,
|
|
16
|
+
SelectTrigger,
|
|
17
|
+
SelectValue
|
|
18
|
+
} from "../../../components/micro/select";
|
|
19
|
+
import { Switch } from "../../../components/micro/switch";
|
|
20
|
+
import { cn } from "../../../lib/utils";
|
|
21
|
+
|
|
22
|
+
export function DashboardPreview({ className }: { className?: string }) {
|
|
23
|
+
const [mounted, setMounted] = useState(false);
|
|
24
|
+
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setMounted(true);
|
|
27
|
+
}, []);
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<div
|
|
31
|
+
className={cn("mt-20 relative max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 animate-fade-up", className)}
|
|
32
|
+
style={{ animationDelay: "500ms", animationFillMode: "both" }}
|
|
33
|
+
>
|
|
34
|
+
<div className="absolute inset-0 bg-gradient-to-t from-background via-transparent to-transparent z-20 pointer-events-none h-full w-full" />
|
|
35
|
+
|
|
36
|
+
<div className="relative rounded-2xl border border-border bg-card/40 backdrop-blur-2xl shadow-2xl overflow-hidden [transform:perspective(1200px)_rotateX(5deg)] [transform-origin:top_center] hover:[transform:perspective(1200px)_rotateX(0deg)] transition-transform duration-700 ease-out">
|
|
37
|
+
<div className="h-12 bg-muted/30 border-b border-b-border flex items-center px-4 gap-2">
|
|
38
|
+
<div className="flex gap-2">
|
|
39
|
+
<div className="size-3.5 rounded-full bg-destructive/80 shadow-sm" />
|
|
40
|
+
<div className="size-3.5 rounded-full bg-warning/80 shadow-sm" />
|
|
41
|
+
<div className="size-3.5 rounded-full bg-success/80 shadow-sm" />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
<div className="p-8 grid grid-cols-1 md:grid-cols-3 gap-8 relative">
|
|
46
|
+
<div className="space-y-6 md:col-span-1 z-10">
|
|
47
|
+
<Card className="bg-background/80 shadow-lg border-border/50 backdrop-blur-xl group hover:border-primary/50 transition-colors">
|
|
48
|
+
<CardHeader className="pb-3">
|
|
49
|
+
<CardTitle className="text-sm font-medium flex items-center gap-2">
|
|
50
|
+
<div className="size-2 rounded-full bg-success animate-pulse shadow-[0_0_8px_var(--success)]" />
|
|
51
|
+
Hệ thống Thời gian thực
|
|
52
|
+
</CardTitle>
|
|
53
|
+
</CardHeader>
|
|
54
|
+
<CardContent>
|
|
55
|
+
<div className="space-y-5">
|
|
56
|
+
<div className="space-y-2">
|
|
57
|
+
<div className="flex justify-between text-xs font-medium">
|
|
58
|
+
<span className="text-muted-foreground">Tải CPU</span>
|
|
59
|
+
<span className="text-primary font-mono">
|
|
60
|
+
{mounted ? "24%" : "0%"}
|
|
61
|
+
</span>
|
|
62
|
+
</div>
|
|
63
|
+
<Progress value={mounted ? 24 : 0} className="h-1.5" />
|
|
64
|
+
</div>
|
|
65
|
+
<div className="space-y-2">
|
|
66
|
+
<div className="flex justify-between text-xs font-medium">
|
|
67
|
+
<span className="text-muted-foreground">Bộ nhớ</span>
|
|
68
|
+
<span className="text-warning font-mono">
|
|
69
|
+
{mounted ? "82%" : "0%"}
|
|
70
|
+
</span>
|
|
71
|
+
</div>
|
|
72
|
+
<Progress
|
|
73
|
+
value={mounted ? 82 : 0}
|
|
74
|
+
color="warning"
|
|
75
|
+
className="h-1.5"
|
|
76
|
+
/>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
</CardContent>
|
|
80
|
+
</Card>
|
|
81
|
+
|
|
82
|
+
<div className="flex flex-col gap-4 p-5 rounded-xl border border-border/50 bg-background/60 backdrop-blur-xl shadow-lg">
|
|
83
|
+
<div className="flex items-center justify-between">
|
|
84
|
+
<Label className="text-sm font-medium cursor-pointer">
|
|
85
|
+
Auto-scaling
|
|
86
|
+
</Label>
|
|
87
|
+
<Switch defaultChecked />
|
|
88
|
+
</div>
|
|
89
|
+
<Select defaultValue="edge">
|
|
90
|
+
<SelectTrigger className="w-full bg-background/50">
|
|
91
|
+
<SelectValue placeholder="Chọn vùng" />
|
|
92
|
+
</SelectTrigger>
|
|
93
|
+
|
|
94
|
+
<SelectContent>
|
|
95
|
+
<SelectItem value="edge">
|
|
96
|
+
Edge Network (Toàn cầu)
|
|
97
|
+
</SelectItem>
|
|
98
|
+
<SelectItem value="us-east">
|
|
99
|
+
US East (Virginia)
|
|
100
|
+
</SelectItem>
|
|
101
|
+
<SelectItem value="ap-se">
|
|
102
|
+
AP South East (Sing)
|
|
103
|
+
</SelectItem>
|
|
104
|
+
</SelectContent>
|
|
105
|
+
|
|
106
|
+
</Select>
|
|
107
|
+
</div>
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<div className="md:col-span-2 rounded-xl border border-border/50 bg-muted/20 p-6 flex items-center justify-center relative overflow-hidden group/canvas">
|
|
111
|
+
<div className="absolute inset-0 bg-[radial-gradient(circle_at_center,rgba(var(--primary-rgb),0.1)_0,transparent_100%)] opacity-0 group-hover/canvas:opacity-100 transition-opacity duration-700" />
|
|
112
|
+
|
|
113
|
+
<div className="relative z-10 w-full max-w-md space-y-4 perspective-1000">
|
|
114
|
+
<div className="flex items-center gap-4 p-5 rounded-xl bg-background shadow-xl border border-border/50 transform group-hover/canvas:-translate-y-2 group-hover/canvas:rotate-1 transition-all duration-500 delay-75">
|
|
115
|
+
<div className="p-3 bg-primary/10 rounded-lg text-primary shadow-inner">
|
|
116
|
+
<LayersIcon className="size-6" />
|
|
117
|
+
</div>
|
|
118
|
+
<div>
|
|
119
|
+
<h4 className="font-bold text-sm">
|
|
120
|
+
Kiến trúc Micro/Macro
|
|
121
|
+
</h4>
|
|
122
|
+
<p className="text-xs text-muted-foreground font-medium mt-1">
|
|
123
|
+
Primitive nhỏ, lắp thành preset lớn
|
|
124
|
+
</p>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<div className="flex items-center gap-4 p-5 rounded-xl bg-background shadow-xl border border-border/50 transform group-hover/canvas:translate-x-2 group-hover/canvas:-rotate-1 transition-all duration-500 delay-150">
|
|
129
|
+
<div className="p-3 bg-info/10 rounded-lg text-info shadow-inner">
|
|
130
|
+
<DatabaseIcon className="size-6" />
|
|
131
|
+
</div>
|
|
132
|
+
<div>
|
|
133
|
+
<h4 className="font-bold text-sm">
|
|
134
|
+
Thiết kế theo Dữ liệu
|
|
135
|
+
</h4>
|
|
136
|
+
<p className="text-xs text-muted-foreground font-medium mt-1">
|
|
137
|
+
Truyền items vào root, không map() thủ công
|
|
138
|
+
</p>
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<div className="flex items-center gap-4 p-5 rounded-xl bg-background shadow-xl border border-border/50 transform group-hover/canvas:-translate-y-1 transition-all duration-500 delay-200">
|
|
143
|
+
<div className="p-3 bg-success/10 rounded-lg text-success shadow-inner">
|
|
144
|
+
<ShieldCheckIcon className="size-6" />
|
|
145
|
+
</div>
|
|
146
|
+
<div>
|
|
147
|
+
<h4 className="font-bold text-sm">Styling có Kỷ luật</h4>
|
|
148
|
+
<p className="text-xs text-muted-foreground font-medium mt-1">
|
|
149
|
+
Nói không với Magic CSS
|
|
150
|
+
</p>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
);
|
|
159
|
+
}
|