gladvn 0.2.17 → 0.2.18
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/bin/cli.js +9 -6
- package/dist/components/macro/accordion-preset.d.ts.map +1 -1
- package/dist/components/macro/alert-dialog-preset.d.ts.map +1 -1
- package/dist/components/macro/alert-preset.d.ts.map +1 -1
- package/dist/components/macro/avatar-preset.d.ts.map +1 -1
- package/dist/components/macro/breadcrumb-preset.d.ts.map +1 -1
- package/dist/components/macro/card-preset.d.ts.map +1 -1
- package/dist/components/macro/carousel-preset.d.ts.map +1 -1
- package/dist/components/macro/checkbox-preset.d.ts.map +1 -1
- package/dist/components/macro/combobox-preset.d.ts.map +1 -1
- package/dist/components/macro/command-preset.d.ts +1 -1
- package/dist/components/macro/command-preset.d.ts.map +1 -1
- package/dist/components/macro/date-picker.d.ts.map +1 -1
- package/dist/components/macro/dialog-preset.d.ts.map +1 -1
- package/dist/components/macro/empty-preset.d.ts.map +1 -1
- package/dist/components/macro/field-preset.d.ts.map +1 -1
- package/dist/components/macro/input-otp-preset.d.ts +6 -0
- package/dist/components/macro/input-otp-preset.d.ts.map +1 -1
- package/dist/components/macro/input-preset.d.ts +1 -1
- package/dist/components/macro/input-preset.d.ts.map +1 -1
- package/dist/components/macro/pagination-preset.d.ts.map +1 -1
- package/dist/components/macro/progress-preset.d.ts.map +1 -1
- package/dist/components/macro/radio-group-preset.d.ts.map +1 -1
- package/dist/components/macro/select-preset.d.ts.map +1 -1
- package/dist/components/macro/slider-preset.d.ts.map +1 -1
- package/dist/components/macro/switch-preset.d.ts.map +1 -1
- package/dist/components/macro/tabs-preset.d.ts +1 -1
- package/dist/components/macro/tabs-preset.d.ts.map +1 -1
- package/dist/components/macro/textarea-preset.d.ts +1 -1
- package/dist/components/macro/textarea-preset.d.ts.map +1 -1
- package/dist/components/micro/accordion.d.ts +7 -0
- package/dist/components/micro/accordion.d.ts.map +1 -1
- package/dist/components/micro/alert-dialog.d.ts.map +1 -1
- package/dist/components/micro/alert.d.ts +7 -0
- package/dist/components/micro/alert.d.ts.map +1 -1
- package/dist/components/micro/aspect-ratio.d.ts +7 -0
- package/dist/components/micro/aspect-ratio.d.ts.map +1 -1
- package/dist/components/micro/avatar.d.ts.map +1 -1
- package/dist/components/micro/badge.d.ts +8 -1
- package/dist/components/micro/badge.d.ts.map +1 -1
- package/dist/components/micro/breadcrumb.d.ts +7 -0
- package/dist/components/micro/breadcrumb.d.ts.map +1 -1
- package/dist/components/micro/button.d.ts +8 -1
- package/dist/components/micro/button.d.ts.map +1 -1
- package/dist/components/micro/calendar.d.ts +2 -2
- package/dist/components/micro/calendar.d.ts.map +1 -1
- package/dist/components/micro/carousel.d.ts.map +1 -1
- package/dist/components/micro/chart.d.ts.map +1 -1
- package/dist/components/micro/checkbox.d.ts.map +1 -1
- package/dist/components/micro/collapsible.d.ts.map +1 -1
- package/dist/components/micro/combobox.d.ts.map +1 -1
- package/dist/components/micro/command.d.ts.map +1 -1
- package/dist/components/micro/context-menu.d.ts.map +1 -1
- package/dist/components/micro/dialog.d.ts.map +1 -1
- package/dist/components/micro/drawer.d.ts.map +1 -1
- package/dist/components/micro/dropdown-menu.d.ts.map +1 -1
- package/dist/components/micro/empty.d.ts +7 -0
- package/dist/components/micro/empty.d.ts.map +1 -1
- package/dist/components/micro/field.d.ts.map +1 -1
- package/dist/components/micro/hover-card.d.ts +1 -1
- package/dist/components/micro/hover-card.d.ts.map +1 -1
- package/dist/components/micro/input-group.d.ts.map +1 -1
- package/dist/components/micro/input-otp.d.ts.map +1 -1
- package/dist/components/micro/input.d.ts +7 -0
- package/dist/components/micro/input.d.ts.map +1 -1
- package/dist/components/micro/item.d.ts.map +1 -1
- package/dist/components/micro/label.d.ts.map +1 -1
- package/dist/components/micro/menubar.d.ts.map +1 -1
- package/dist/components/micro/navigation-menu.d.ts +8 -1
- package/dist/components/micro/navigation-menu.d.ts.map +1 -1
- package/dist/components/micro/pagination.d.ts.map +1 -1
- package/dist/components/micro/popover.d.ts.map +1 -1
- package/dist/components/micro/progress.d.ts.map +1 -1
- package/dist/components/micro/radio-group.d.ts.map +1 -1
- package/dist/components/micro/select.d.ts +1 -1
- package/dist/components/micro/select.d.ts.map +1 -1
- package/dist/components/micro/sheet.d.ts.map +1 -1
- package/dist/components/micro/sidebar.d.ts.map +1 -1
- package/dist/components/micro/skeleton.d.ts +7 -0
- package/dist/components/micro/skeleton.d.ts.map +1 -1
- package/dist/components/micro/slider.d.ts +7 -0
- package/dist/components/micro/slider.d.ts.map +1 -1
- package/dist/components/micro/sonner.d.ts.map +1 -1
- package/dist/components/micro/spinner.d.ts.map +1 -1
- package/dist/components/micro/switch.d.ts.map +1 -1
- package/dist/components/micro/table.d.ts.map +1 -1
- package/dist/components/micro/tabs.d.ts +1 -1
- package/dist/components/micro/tabs.d.ts.map +1 -1
- package/dist/components/micro/textarea.d.ts +7 -0
- package/dist/components/micro/textarea.d.ts.map +1 -1
- package/dist/components/micro/toggle-group.d.ts.map +1 -1
- package/dist/components/micro/toggle.d.ts.map +1 -1
- package/dist/components/micro/tooltip.d.ts +1 -1
- package/dist/components/micro/tooltip.d.ts.map +1 -1
- package/dist/dev/App.d.ts.map +1 -1
- package/dist/dev/components/code-highlighter.d.ts.map +1 -1
- package/dist/dev/components/dev-context.d.ts.map +1 -1
- package/dist/dev/components/showcase.d.ts +1 -1
- package/dist/dev/components/showcase.d.ts.map +1 -1
- package/dist/dev/data.d.ts.map +1 -1
- package/dist/dev/main.d.ts.map +1 -1
- package/dist/dev/sections/buttons.d.ts.map +1 -1
- package/dist/dev/sections/feedback.d.ts.map +1 -1
- package/dist/dev/sections/overview.d.ts.map +1 -1
- package/dist/dev/showcase/accordion.d.ts.map +1 -1
- package/dist/dev/showcase/alert-dialog.d.ts.map +1 -1
- package/dist/dev/showcase/alert.d.ts.map +1 -1
- package/dist/dev/showcase/aspect-ratio.d.ts.map +1 -1
- package/dist/dev/showcase/avatar.d.ts.map +1 -1
- package/dist/dev/showcase/breadcrumb.d.ts.map +1 -1
- package/dist/dev/showcase/button.d.ts.map +1 -1
- package/dist/dev/showcase/calendar.d.ts.map +1 -1
- package/dist/dev/showcase/card.d.ts.map +1 -1
- package/dist/dev/showcase/carousel.d.ts.map +1 -1
- package/dist/dev/showcase/chart.d.ts.map +1 -1
- package/dist/dev/showcase/checkbox.d.ts.map +1 -1
- package/dist/dev/showcase/collapsible.d.ts.map +1 -1
- package/dist/dev/showcase/combobox.d.ts.map +1 -1
- package/dist/dev/showcase/command.d.ts.map +1 -1
- package/dist/dev/showcase/context-menu.d.ts.map +1 -1
- package/dist/dev/showcase/dialog.d.ts.map +1 -1
- package/dist/dev/showcase/drawer.d.ts.map +1 -1
- package/dist/dev/showcase/dropdown-menu.d.ts.map +1 -1
- package/dist/dev/showcase/empty.d.ts.map +1 -1
- package/dist/dev/showcase/hover-card.d.ts.map +1 -1
- package/dist/dev/showcase/input-group.d.ts.map +1 -1
- package/dist/dev/showcase/input-otp.d.ts.map +1 -1
- package/dist/dev/showcase/input.d.ts.map +1 -1
- package/dist/dev/showcase/item.d.ts.map +1 -1
- package/dist/dev/showcase/kbd.d.ts.map +1 -1
- package/dist/dev/showcase/label.d.ts.map +1 -1
- package/dist/dev/showcase/menubar.d.ts.map +1 -1
- package/dist/dev/showcase/navigation-menu.d.ts.map +1 -1
- package/dist/dev/showcase/overview.d.ts.map +1 -1
- package/dist/dev/showcase/pagination.d.ts.map +1 -1
- package/dist/dev/showcase/popover.d.ts.map +1 -1
- package/dist/dev/showcase/progress.d.ts.map +1 -1
- package/dist/dev/showcase/radio-group.d.ts.map +1 -1
- package/dist/dev/showcase/resizable.d.ts.map +1 -1
- package/dist/dev/showcase/scroll-area.d.ts.map +1 -1
- package/dist/dev/showcase/select.d.ts.map +1 -1
- package/dist/dev/showcase/separator.d.ts.map +1 -1
- package/dist/dev/showcase/sheet.d.ts.map +1 -1
- package/dist/dev/showcase/sidebar.d.ts.map +1 -1
- package/dist/dev/showcase/skeleton.d.ts.map +1 -1
- package/dist/dev/showcase/slider.d.ts.map +1 -1
- package/dist/dev/showcase/sonner.d.ts.map +1 -1
- package/dist/dev/showcase/spinner.d.ts.map +1 -1
- package/dist/dev/showcase/switch.d.ts.map +1 -1
- package/dist/dev/showcase/table.d.ts.map +1 -1
- package/dist/dev/showcase/tabs.d.ts.map +1 -1
- package/dist/dev/showcase/textarea.d.ts.map +1 -1
- package/dist/dev/showcase/theme-provider.d.ts.map +1 -1
- package/dist/dev/showcase/toast.d.ts.map +1 -1
- package/dist/dev/showcase/toggle-group.d.ts.map +1 -1
- package/dist/dev/showcase/toggle.d.ts.map +1 -1
- package/dist/dev/showcase/tooltip.d.ts.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/package.json +3 -1
- package/scripts/format-codestrings.ts +87 -0
- package/scripts/organize-imports.ts +21 -0
- package/scripts/regex-format.cjs +67 -0
- package/scripts/tmp.tsx +25 -0
- package/src/components/macro/accordion-preset.test.tsx +1 -0
- package/src/components/macro/accordion-preset.tsx +2 -1
- package/src/components/macro/alert-dialog-preset.tsx +44 -43
- package/src/components/macro/alert-preset.tsx +7 -3
- package/src/components/macro/avatar-preset.tsx +2 -1
- package/src/components/macro/breadcrumb-preset.tsx +2 -1
- package/src/components/macro/card-preset.tsx +2 -1
- package/src/components/macro/carousel-preset.tsx +5 -2
- package/src/components/macro/checkbox-preset.test.tsx +1 -0
- package/src/components/macro/checkbox-preset.tsx +6 -2
- package/src/components/macro/combobox-preset.tsx +6 -3
- package/src/components/macro/command-preset.tsx +7 -3
- package/src/components/macro/date-picker.tsx +77 -59
- package/src/components/macro/dialog-preset.tsx +42 -38
- package/src/components/macro/empty-preset.tsx +2 -1
- package/src/components/macro/field-preset.test.tsx +1 -0
- package/src/components/macro/field-preset.tsx +2 -1
- package/src/components/macro/input-otp-preset.tsx +6 -2
- package/src/components/macro/input-preset.test.tsx +1 -0
- package/src/components/macro/input-preset.tsx +4 -2
- package/src/components/macro/pagination-preset.tsx +3 -1
- package/src/components/macro/progress-preset.test.tsx +1 -0
- package/src/components/macro/progress-preset.tsx +2 -1
- package/src/components/macro/radio-group-preset.tsx +4 -1
- package/src/components/macro/select-preset.tsx +35 -30
- package/src/components/macro/slider-preset.test.tsx +1 -0
- package/src/components/macro/slider-preset.tsx +4 -1
- package/src/components/macro/switch-preset.test.tsx +1 -0
- package/src/components/macro/switch-preset.tsx +4 -1
- package/src/components/macro/tabs-preset.test.tsx +1 -0
- package/src/components/macro/tabs-preset.tsx +4 -2
- package/src/components/macro/textarea-preset.test.tsx +1 -0
- package/src/components/macro/textarea-preset.tsx +4 -1
- package/src/components/micro/accordion.tsx +3 -2
- package/src/components/micro/alert-dialog.tsx +2 -1
- package/src/components/micro/alert.tsx +3 -2
- package/src/components/micro/aspect-ratio.tsx +2 -1
- package/src/components/micro/avatar.tsx +2 -1
- package/src/components/micro/badge.tsx +3 -3
- package/src/components/micro/breadcrumb.tsx +3 -2
- package/src/components/micro/button.test.tsx +1 -0
- package/src/components/micro/button.tsx +3 -3
- package/src/components/micro/calendar.tsx +10 -9
- package/src/components/micro/carousel.tsx +3 -2
- package/src/components/micro/chart.tsx +1 -0
- package/src/components/micro/checkbox.tsx +2 -2
- package/src/components/micro/collapsible.tsx +4 -2
- package/src/components/micro/combobox.tsx +41 -29
- package/src/components/micro/command.tsx +23 -16
- package/src/components/micro/context-menu.tsx +3 -2
- package/src/components/micro/dialog.tsx +2 -1
- package/src/components/micro/drawer.tsx +2 -1
- package/src/components/micro/dropdown-menu.tsx +3 -2
- package/src/components/micro/empty.tsx +2 -1
- package/src/components/micro/field.tsx +4 -3
- package/src/components/micro/hover-card.tsx +20 -19
- package/src/components/micro/input-group.tsx +2 -1
- package/src/components/micro/input-otp.tsx +3 -2
- package/src/components/micro/input.tsx +3 -2
- package/src/components/micro/item.tsx +1 -0
- package/src/components/micro/label.tsx +2 -1
- package/src/components/micro/menubar.tsx +2 -1
- package/src/components/micro/navigation-menu.tsx +18 -17
- package/src/components/micro/pagination.tsx +2 -1
- package/src/components/micro/popover.tsx +2 -1
- package/src/components/micro/progress.tsx +2 -1
- package/src/components/micro/radio-group.tsx +3 -3
- package/src/components/micro/select.tsx +5 -4
- package/src/components/micro/sheet.tsx +2 -1
- package/src/components/micro/sidebar.tsx +4 -1
- package/src/components/micro/skeleton.tsx +2 -1
- package/src/components/micro/slider.tsx +4 -1
- package/src/components/micro/sonner.tsx +2 -1
- package/src/components/micro/spinner.tsx +1 -2
- package/src/components/micro/switch.tsx +2 -2
- package/src/components/micro/table.tsx +2 -1
- package/src/components/micro/tabs.tsx +4 -3
- package/src/components/micro/textarea.tsx +2 -1
- package/src/components/micro/toggle-group.tsx +1 -0
- package/src/components/micro/toggle.tsx +1 -3
- package/src/components/micro/tooltip.tsx +9 -3
- package/src/dev/App.tsx +66 -41
- package/src/dev/components/code-highlighter.tsx +2 -1
- package/src/dev/components/dev-context.tsx +1 -0
- package/src/dev/components/showcase.tsx +13 -14
- package/src/dev/data.ts +206 -52
- package/src/dev/main.tsx +4 -4
- package/src/dev/sections/buttons.tsx +14 -12
- package/src/dev/sections/feedback.tsx +7 -2
- package/src/dev/sections/forms.tsx +11 -11
- package/src/dev/sections/overview.tsx +2 -1
- package/src/dev/showcase/accordion.tsx +399 -314
- package/src/dev/showcase/alert-dialog.tsx +387 -384
- package/src/dev/showcase/alert.tsx +271 -258
- package/src/dev/showcase/aspect-ratio.tsx +102 -105
- package/src/dev/showcase/avatar.tsx +216 -145
- package/src/dev/showcase/badge.tsx +78 -50
- package/src/dev/showcase/breadcrumb.tsx +88 -85
- package/src/dev/showcase/button.tsx +72 -96
- package/src/dev/showcase/calendar.tsx +41 -39
- package/src/dev/showcase/card.tsx +170 -148
- package/src/dev/showcase/carousel.tsx +239 -77
- package/src/dev/showcase/chart.tsx +5 -4
- package/src/dev/showcase/checkbox.tsx +206 -140
- package/src/dev/showcase/collapsible.tsx +108 -84
- package/src/dev/showcase/combobox.tsx +272 -199
- package/src/dev/showcase/command.tsx +31 -28
- package/src/dev/showcase/context-menu.tsx +94 -77
- package/src/dev/showcase/dialog.tsx +445 -424
- package/src/dev/showcase/drawer.tsx +142 -135
- package/src/dev/showcase/dropdown-menu.tsx +165 -161
- package/src/dev/showcase/empty.tsx +173 -158
- package/src/dev/showcase/hover-card.tsx +92 -52
- package/src/dev/showcase/input-group.tsx +193 -160
- package/src/dev/showcase/input-otp.tsx +109 -99
- package/src/dev/showcase/input.tsx +78 -42
- package/src/dev/showcase/item.tsx +101 -98
- package/src/dev/showcase/kbd.tsx +78 -62
- package/src/dev/showcase/label.tsx +16 -23
- package/src/dev/showcase/menubar.tsx +274 -251
- package/src/dev/showcase/navigation-menu.tsx +175 -170
- package/src/dev/showcase/overview.tsx +164 -148
- package/src/dev/showcase/pagination.tsx +101 -69
- package/src/dev/showcase/popover.tsx +113 -86
- package/src/dev/showcase/progress.tsx +99 -69
- package/src/dev/showcase/radio-group.tsx +217 -134
- package/src/dev/showcase/resizable.tsx +65 -55
- package/src/dev/showcase/scroll-area.tsx +32 -22
- package/src/dev/showcase/select.tsx +192 -136
- package/src/dev/showcase/separator.tsx +28 -24
- package/src/dev/showcase/sheet.tsx +182 -134
- package/src/dev/showcase/sidebar.tsx +9 -5
- package/src/dev/showcase/skeleton.tsx +54 -59
- package/src/dev/showcase/slider.tsx +158 -129
- package/src/dev/showcase/sonner.tsx +3 -5
- package/src/dev/showcase/spinner.tsx +22 -18
- package/src/dev/showcase/switch.tsx +207 -110
- package/src/dev/showcase/table.tsx +44 -32
- package/src/dev/showcase/tabs.tsx +272 -267
- package/src/dev/showcase/textarea.tsx +162 -116
- package/src/dev/showcase/theme-provider.tsx +596 -534
- package/src/dev/showcase/toast.tsx +37 -38
- package/src/dev/showcase/toggle-group.tsx +87 -39
- package/src/dev/showcase/toggle.tsx +36 -27
- package/src/dev/showcase/tooltip.tsx +154 -119
- package/src/lib/utils.test.ts +1 -0
- package/src/lib/utils.ts +1 -1
- package/src/styles/gladvn.css +1 -1
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import { useDevContext } from "../../dev/components/dev-context";
|
|
2
|
-
import {
|
|
3
|
-
DocsP,
|
|
4
|
-
ExampleGrid,
|
|
5
|
-
ExampleSection,
|
|
6
|
-
Showcase,
|
|
7
|
-
ShowcaseDocs,
|
|
8
|
-
} from "../../dev/components/showcase";
|
|
9
1
|
import {
|
|
10
2
|
CheckCircle2Icon,
|
|
11
3
|
CheckIcon,
|
|
12
4
|
LayersIcon,
|
|
13
5
|
UserIcon,
|
|
14
6
|
} from "lucide-react";
|
|
15
|
-
import { useState } from "react";
|
|
16
7
|
|
|
17
8
|
import { AvatarPreset } from "../../components/macro/avatar-preset";
|
|
18
9
|
import {
|
|
@@ -23,6 +14,14 @@ import {
|
|
|
23
14
|
AvatarGroupCount,
|
|
24
15
|
AvatarImage,
|
|
25
16
|
} from "../../components/micro/avatar";
|
|
17
|
+
import { useDevContext } from "../../dev/components/dev-context";
|
|
18
|
+
import {
|
|
19
|
+
DocsP,
|
|
20
|
+
ExampleGrid,
|
|
21
|
+
ExampleSection,
|
|
22
|
+
Showcase,
|
|
23
|
+
ShowcaseDocs,
|
|
24
|
+
} from "../../dev/components/showcase";
|
|
26
25
|
import { type Size } from "../../lib/types";
|
|
27
26
|
|
|
28
27
|
// ──────────────────────────────────────────────────────────
|
|
@@ -36,11 +35,13 @@ function AvatarMacroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
36
35
|
label="Tiêu chuẩn (Standard)"
|
|
37
36
|
description="Avatar tự động fallback dựa vào tên truyền vào alt."
|
|
38
37
|
codeString={`<div className="flex items-center gap-4">
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
<AvatarPreset
|
|
39
|
+
src="https://github.com/shadcn.png"
|
|
40
|
+
alt="Shadcn"
|
|
41
|
+
/>
|
|
42
|
+
<AvatarPreset alt="John Doe" />
|
|
43
|
+
<AvatarPreset />
|
|
44
|
+
</div>`}
|
|
44
45
|
>
|
|
45
46
|
<div className="flex items-center gap-4">
|
|
46
47
|
<AvatarPreset
|
|
@@ -57,11 +58,14 @@ function AvatarMacroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
57
58
|
label="Trạng thái (Status)"
|
|
58
59
|
description="Hỗ trợ sẵn các trạng thái: online, offline, away."
|
|
59
60
|
codeString={`<div className="flex items-center gap-4">
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
<AvatarPreset
|
|
62
|
+
src="https://github.com/shadcn.png"
|
|
63
|
+
alt="Shadcn"
|
|
64
|
+
status="online"
|
|
65
|
+
/>
|
|
66
|
+
<AvatarPreset alt="Alice" status="away" />
|
|
67
|
+
<AvatarPreset status="offline" />
|
|
68
|
+
</div>`}
|
|
65
69
|
>
|
|
66
70
|
<div className="flex items-center gap-4">
|
|
67
71
|
<AvatarPreset
|
|
@@ -81,11 +85,14 @@ function AvatarMacroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
81
85
|
description="Kết hợp Preset với AvatarGroup để tiết kiệm code."
|
|
82
86
|
fullWidth
|
|
83
87
|
codeString={`<AvatarGroup>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
<AvatarPreset
|
|
89
|
+
src="https://github.com/shadcn.png"
|
|
90
|
+
alt="Shadcn"
|
|
91
|
+
/>
|
|
92
|
+
<AvatarPreset alt="Alice Smith" />
|
|
93
|
+
<AvatarPreset alt="Bob Jones" />
|
|
94
|
+
<AvatarGroupCount>+3</AvatarGroupCount>
|
|
95
|
+
</AvatarGroup>`}
|
|
89
96
|
>
|
|
90
97
|
<div className="flex flex-col gap-4">
|
|
91
98
|
<AvatarGroup>
|
|
@@ -115,20 +122,28 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
115
122
|
label="Với Hình ảnh (With Image)"
|
|
116
123
|
description="Hiển thị ảnh và sẽ fallback về chữ nếu ảnh lỗi."
|
|
117
124
|
codeString={`<div className="flex items-center gap-4">
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
</
|
|
131
|
-
|
|
125
|
+
<Avatar>
|
|
126
|
+
<AvatarImage
|
|
127
|
+
src="https://github.com/shadcn.png"
|
|
128
|
+
alt="@shadcn"
|
|
129
|
+
/>
|
|
130
|
+
<AvatarFallback>CN</AvatarFallback>
|
|
131
|
+
</Avatar>
|
|
132
|
+
<Avatar>
|
|
133
|
+
<AvatarImage
|
|
134
|
+
src="https://github.com/vercel.png"
|
|
135
|
+
alt="@vercel"
|
|
136
|
+
/>
|
|
137
|
+
<AvatarFallback>VC</AvatarFallback>
|
|
138
|
+
</Avatar>
|
|
139
|
+
<Avatar>
|
|
140
|
+
<AvatarImage
|
|
141
|
+
src="https://github.com/leerob.png"
|
|
142
|
+
alt="@leerob"
|
|
143
|
+
/>
|
|
144
|
+
<AvatarFallback>LR</AvatarFallback>
|
|
145
|
+
</Avatar>
|
|
146
|
+
</div>`}
|
|
132
147
|
>
|
|
133
148
|
<div className="flex items-center gap-4">
|
|
134
149
|
<Avatar size={globalSize}>
|
|
@@ -150,20 +165,36 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
150
165
|
label="Lỗi Ảnh & Chỉ có Fallback"
|
|
151
166
|
description="Khi không có ảnh hoặc ảnh lỗi, fallback sẽ hiển thị."
|
|
152
167
|
codeString={`<div className="flex items-center gap-4">
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
168
|
+
<Avatar>
|
|
169
|
+
<AvatarImage
|
|
170
|
+
src="https://broken-url.invalid/avatar.png"
|
|
171
|
+
alt="broken"
|
|
172
|
+
/>
|
|
173
|
+
<AvatarFallback>BR</AvatarFallback>
|
|
174
|
+
</Avatar>
|
|
175
|
+
<Avatar>
|
|
176
|
+
<AvatarFallback>JD</AvatarFallback>
|
|
177
|
+
</Avatar>
|
|
178
|
+
<Avatar>
|
|
179
|
+
<AvatarFallback>
|
|
180
|
+
<svg
|
|
181
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
182
|
+
width="24"
|
|
183
|
+
height="24"
|
|
184
|
+
viewBox="0 0 24 24"
|
|
185
|
+
fill="none"
|
|
186
|
+
stroke="currentColor"
|
|
187
|
+
strokeWidth="2"
|
|
188
|
+
strokeLinecap="round"
|
|
189
|
+
strokeLinejoin="round"
|
|
190
|
+
className="size-4"
|
|
191
|
+
>
|
|
192
|
+
<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2" />
|
|
193
|
+
<circle cx="12" cy="7" r="4" />
|
|
194
|
+
</svg>
|
|
195
|
+
</AvatarFallback>
|
|
196
|
+
</Avatar>
|
|
197
|
+
</div>`}
|
|
167
198
|
>
|
|
168
199
|
<div className="flex items-center gap-4">
|
|
169
200
|
<Avatar size={globalSize}>
|
|
@@ -203,24 +234,33 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
203
234
|
label="Huy hiệu (With Badge)"
|
|
204
235
|
description="Bạn có thể tự định vị Badge ở bất cứ đâu trên Avatar."
|
|
205
236
|
codeString={`<div className="flex items-center gap-6">
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
237
|
+
<div className="flex flex-col items-center gap-2">
|
|
238
|
+
<Avatar>
|
|
239
|
+
<AvatarImage
|
|
240
|
+
src="https://github.com/shadcn.png"
|
|
241
|
+
alt="@shadcn"
|
|
242
|
+
/>
|
|
243
|
+
<AvatarFallback>CN</AvatarFallback>
|
|
244
|
+
<AvatarBadge className="absolute z-10 right-0 bottom-0 bg-green-500" />
|
|
245
|
+
</Avatar>
|
|
246
|
+
<span className="text-xs text-muted-foreground">
|
|
247
|
+
Online
|
|
248
|
+
</span>
|
|
249
|
+
</div>
|
|
250
|
+
<div className="flex flex-col items-center gap-2">
|
|
251
|
+
<Avatar>
|
|
252
|
+
<AvatarImage
|
|
253
|
+
src="https://github.com/vercel.png"
|
|
254
|
+
alt="@vercel"
|
|
255
|
+
/>
|
|
256
|
+
<AvatarFallback>VC</AvatarFallback>
|
|
257
|
+
<AvatarBadge className="absolute z-10 right-0 top-0 bg-red-500" />
|
|
258
|
+
</Avatar>
|
|
259
|
+
<span className="text-xs text-muted-foreground">
|
|
260
|
+
Notification
|
|
261
|
+
</span>
|
|
262
|
+
</div>
|
|
263
|
+
</div>`}
|
|
224
264
|
>
|
|
225
265
|
<div className="flex items-center gap-6">
|
|
226
266
|
<div className="flex flex-col items-center gap-2">
|
|
@@ -247,20 +287,28 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
247
287
|
label="Nhóm cơ bản (Basic Group)"
|
|
248
288
|
description="Xếp chồng nhiều avatar lên nhau."
|
|
249
289
|
codeString={`<AvatarGroup>
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
</
|
|
263
|
-
|
|
290
|
+
<Avatar>
|
|
291
|
+
<AvatarImage
|
|
292
|
+
src="https://github.com/shadcn.png"
|
|
293
|
+
alt="@shadcn"
|
|
294
|
+
/>
|
|
295
|
+
<AvatarFallback>CN</AvatarFallback>
|
|
296
|
+
</Avatar>
|
|
297
|
+
<Avatar>
|
|
298
|
+
<AvatarImage
|
|
299
|
+
src="https://github.com/vercel.png"
|
|
300
|
+
alt="@vercel"
|
|
301
|
+
/>
|
|
302
|
+
<AvatarFallback>VC</AvatarFallback>
|
|
303
|
+
</Avatar>
|
|
304
|
+
<Avatar>
|
|
305
|
+
<AvatarImage
|
|
306
|
+
src="https://github.com/leerob.png"
|
|
307
|
+
alt="@leerob"
|
|
308
|
+
/>
|
|
309
|
+
<AvatarFallback>LR</AvatarFallback>
|
|
310
|
+
</Avatar>
|
|
311
|
+
</AvatarGroup>`}
|
|
264
312
|
>
|
|
265
313
|
<AvatarGroup>
|
|
266
314
|
<Avatar size={globalSize}>
|
|
@@ -282,17 +330,22 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
282
330
|
label="Kèm bộ đếm (With Count)"
|
|
283
331
|
description="Hiển thị những avatar còn lại bị ẩn."
|
|
284
332
|
codeString={`<AvatarGroup>
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
333
|
+
<Avatar>
|
|
334
|
+
<AvatarImage
|
|
335
|
+
src="https://github.com/shadcn.png"
|
|
336
|
+
alt="@shadcn"
|
|
337
|
+
/>
|
|
338
|
+
<AvatarFallback>CN</AvatarFallback>
|
|
339
|
+
</Avatar>
|
|
340
|
+
<Avatar>
|
|
341
|
+
<AvatarImage
|
|
342
|
+
src="https://github.com/vercel.png"
|
|
343
|
+
alt="@vercel"
|
|
344
|
+
/>
|
|
345
|
+
<AvatarFallback>VC</AvatarFallback>
|
|
346
|
+
</Avatar>
|
|
347
|
+
<AvatarGroupCount>+12</AvatarGroupCount>
|
|
348
|
+
</AvatarGroup>`}
|
|
296
349
|
>
|
|
297
350
|
<AvatarGroup>
|
|
298
351
|
<Avatar size={globalSize}>
|
|
@@ -313,60 +366,77 @@ function AvatarMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
313
366
|
description="Các kịch bản thực tế giúp bạn quyết định nên dùng Micro hay Macro."
|
|
314
367
|
fullWidth
|
|
315
368
|
codeString={`<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
369
|
+
{/* ── Story 1: Macro wins ── */}
|
|
370
|
+
<div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
|
|
371
|
+
<div className="flex items-start gap-3">
|
|
372
|
+
<span className="mt-0.5 shrink-0 rounded-full bg-green-500/10 p-1.5 text-green-600">
|
|
373
|
+
<CheckCircle2Icon
|
|
374
|
+
className="size-4"
|
|
375
|
+
aria-hidden="true"
|
|
376
|
+
/>
|
|
377
|
+
</span>
|
|
378
|
+
<div>
|
|
379
|
+
<p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
|
|
380
|
+
Story 1 · Dùng Macro
|
|
381
|
+
</p>
|
|
382
|
+
<h3 className="mt-0.5 text-sm font-semibold text-foreground">
|
|
383
|
+
Hiển thị Avatar chuẩn với URL và Fallback
|
|
384
|
+
</h3>
|
|
385
|
+
</div>
|
|
386
|
+
</div>
|
|
387
|
+
<p className="text-xs text-muted-foreground leading-relaxed">
|
|
388
|
+
Hầu hết các trường hợp bạn chỉ có một URL hình ảnh
|
|
389
|
+
và một cái tên. Macro tự động hiển thị ảnh, nếu ảnh
|
|
390
|
+
lỗi thì tự sinh chữ viết tắt dựa trên tên cực kỳ
|
|
391
|
+
tiện lợi mà không cần viết nhiều code.
|
|
392
|
+
</p>
|
|
393
|
+
<div className="rounded-lg bg-muted/50 p-3 flex justify-center">
|
|
394
|
+
<AvatarPreset
|
|
395
|
+
src="https://github.com/shadcn.png"
|
|
396
|
+
alt="Shadcn"
|
|
397
|
+
size="lg"
|
|
398
|
+
/>
|
|
329
399
|
</div>
|
|
330
400
|
</div>
|
|
331
|
-
<p className="text-xs text-muted-foreground leading-relaxed">
|
|
332
|
-
Hầu hết các trường hợp bạn chỉ có một URL hình ảnh và một cái tên. Macro tự động hiển thị ảnh, nếu ảnh lỗi thì tự sinh chữ viết tắt dựa trên tên cực kỳ tiện lợi mà không cần viết nhiều code.
|
|
333
|
-
</p>
|
|
334
|
-
<div className="rounded-lg bg-muted/50 p-3 flex justify-center">
|
|
335
|
-
<AvatarPreset src="https://github.com/shadcn.png" alt="Shadcn" size="lg" />
|
|
336
|
-
</div>
|
|
337
|
-
</div>
|
|
338
401
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
402
|
+
{/* ── Story 2: Micro wins ── */}
|
|
403
|
+
<div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
|
|
404
|
+
<div className="flex items-start gap-3">
|
|
405
|
+
<span className="mt-0.5 shrink-0 rounded-full bg-blue-500/10 p-1.5 text-blue-600">
|
|
406
|
+
<LayersIcon
|
|
407
|
+
className="size-4"
|
|
408
|
+
aria-hidden="true"
|
|
409
|
+
/>
|
|
410
|
+
</span>
|
|
411
|
+
<div>
|
|
412
|
+
<p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
|
|
413
|
+
Story 2 · Dùng Micro
|
|
414
|
+
</p>
|
|
415
|
+
<h3 className="mt-0.5 text-sm font-semibold text-foreground">
|
|
416
|
+
Layout Fallback phức tạp hoặc tích hợp Badge đặc
|
|
417
|
+
thù
|
|
418
|
+
</h3>
|
|
419
|
+
</div>
|
|
420
|
+
</div>
|
|
421
|
+
<p className="text-xs text-muted-foreground leading-relaxed">
|
|
422
|
+
Khi bạn muốn Fallback là một Icon thay vì Text, hoặc
|
|
423
|
+
muốn đính kèm một Badge tùy chỉnh hoàn toàn tự do
|
|
424
|
+
(như icon viền, thông báo tin nhắn), bạn phải dùng
|
|
425
|
+
Primitive để lắp ghép.
|
|
426
|
+
</p>
|
|
427
|
+
<div className="rounded-lg bg-muted/50 p-3 flex justify-center">
|
|
428
|
+
<Avatar size="lg">
|
|
429
|
+
<AvatarImage src="/broken.png" alt="Avatar" />
|
|
430
|
+
<AvatarFallback>
|
|
431
|
+
<UserIcon className="size-1/2 text-muted-foreground" />
|
|
432
|
+
</AvatarFallback>
|
|
433
|
+
<AvatarBadge className="bg-blue-500">
|
|
434
|
+
<CheckIcon className="size-2 text-white" />
|
|
435
|
+
</AvatarBadge>
|
|
436
|
+
</Avatar>
|
|
352
437
|
</div>
|
|
353
438
|
</div>
|
|
354
|
-
|
|
355
|
-
Khi bạn muốn Fallback là một Icon thay vì Text, hoặc muốn đính kèm một Badge tùy chỉnh hoàn toàn tự do (như icon viền, thông báo tin nhắn), bạn phải dùng Primitive để lắp ghép.
|
|
356
|
-
</p>
|
|
357
|
-
<div className="rounded-lg bg-muted/50 p-3 flex justify-center">
|
|
358
|
-
<Avatar size="lg">
|
|
359
|
-
<AvatarImage src="/broken.png" alt="Avatar" />
|
|
360
|
-
<AvatarFallback>
|
|
361
|
-
<UserIcon className="size-1/2 text-muted-foreground" />
|
|
362
|
-
</AvatarFallback>
|
|
363
|
-
<AvatarBadge className="bg-blue-500">
|
|
364
|
-
<CheckIcon className="size-2 text-white" />
|
|
365
|
-
</AvatarBadge>
|
|
366
|
-
</Avatar>
|
|
367
|
-
</div>
|
|
368
|
-
</div>
|
|
369
|
-
</div>`}
|
|
439
|
+
</div>`}
|
|
370
440
|
>
|
|
371
441
|
<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
|
|
372
442
|
{/* ── Story 1: Macro wins ── */}
|
|
@@ -451,7 +521,8 @@ export default function AvatarShowcase() {
|
|
|
451
521
|
<ShowcaseDocs>
|
|
452
522
|
<DocsP>
|
|
453
523
|
Dùng để hiển thị hình ảnh đại diện cho người dùng, nhóm hoặc tổ
|
|
454
|
-
chức. Hỗ trợ tự động hiển thị chữ cái viết tắt hoặc icon mặc định
|
|
524
|
+
chức. Hỗ trợ tự động hiển thị chữ cái viết tắt hoặc icon mặc định
|
|
525
|
+
khi không tải được ảnh.
|
|
455
526
|
</DocsP>
|
|
456
527
|
</ShowcaseDocs>
|
|
457
528
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AlertTriangleIcon, CheckIcon, InfoIcon, XIcon } from "lucide-react";
|
|
2
|
+
|
|
2
3
|
import { Badge } from "../../components/micro/badge";
|
|
4
|
+
import { useDevContext } from "../../dev/components/dev-context";
|
|
3
5
|
import {
|
|
4
6
|
DocsCode,
|
|
5
7
|
DocsP,
|
|
@@ -9,8 +11,6 @@ import {
|
|
|
9
11
|
ShowcaseDocs,
|
|
10
12
|
} from "../../dev/components/showcase";
|
|
11
13
|
import { type Size } from "../../lib/types";
|
|
12
|
-
import { AlertTriangleIcon, CheckIcon, InfoIcon, XIcon } from "lucide-react";
|
|
13
|
-
import { useState } from "react";
|
|
14
14
|
|
|
15
15
|
export default function BadgeShowcase() {
|
|
16
16
|
const { size: globalSize } = useDevContext();
|
|
@@ -45,8 +45,8 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
45
45
|
label="Variants"
|
|
46
46
|
description="Tất cả các kiểu hiển thị hiện có."
|
|
47
47
|
codeString={`<Badge variant="solid">Solid</Badge>
|
|
48
|
-
<Badge variant="soft">Soft</Badge>
|
|
49
|
-
<Badge variant="outline">Outline</Badge>`}
|
|
48
|
+
<Badge variant="soft">Soft</Badge>
|
|
49
|
+
<Badge variant="outline">Outline</Badge>`}
|
|
50
50
|
>
|
|
51
51
|
<Badge variant="solid">Solid</Badge>
|
|
52
52
|
<Badge variant="soft">Soft</Badge>
|
|
@@ -59,12 +59,12 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
59
59
|
label="Solid Colors"
|
|
60
60
|
description="Các màu semantic áp dụng cho Badge dạng Solid."
|
|
61
61
|
codeString={`<Badge color="primary">Primary</Badge>
|
|
62
|
-
<Badge color="secondary">Secondary</Badge>
|
|
63
|
-
<Badge color="destructive">Destructive</Badge>
|
|
64
|
-
<Badge color="warning">Warning</Badge>
|
|
65
|
-
<Badge color="success">Success</Badge>
|
|
66
|
-
<Badge color="info">Info</Badge>
|
|
67
|
-
<Badge color="muted">Muted</Badge>`}
|
|
62
|
+
<Badge color="secondary">Secondary</Badge>
|
|
63
|
+
<Badge color="destructive">Destructive</Badge>
|
|
64
|
+
<Badge color="warning">Warning</Badge>
|
|
65
|
+
<Badge color="success">Success</Badge>
|
|
66
|
+
<Badge color="info">Info</Badge>
|
|
67
|
+
<Badge color="muted">Muted</Badge>`}
|
|
68
68
|
>
|
|
69
69
|
<Badge color="primary">Primary</Badge>
|
|
70
70
|
<Badge color="secondary">Secondary</Badge>
|
|
@@ -78,13 +78,27 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
78
78
|
<ExampleSection
|
|
79
79
|
label="Soft Colors"
|
|
80
80
|
description="Các màu semantic áp dụng cho Badge dạng Soft."
|
|
81
|
-
codeString={`<Badge variant="soft" color="primary">
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<Badge variant="soft" color="
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
<Badge variant="soft" color="
|
|
81
|
+
codeString={`<Badge variant="soft" color="primary">
|
|
82
|
+
Primary
|
|
83
|
+
</Badge>
|
|
84
|
+
<Badge variant="soft" color="secondary">
|
|
85
|
+
Secondary
|
|
86
|
+
</Badge>
|
|
87
|
+
<Badge variant="soft" color="destructive">
|
|
88
|
+
Destructive
|
|
89
|
+
</Badge>
|
|
90
|
+
<Badge variant="soft" color="warning">
|
|
91
|
+
Warning
|
|
92
|
+
</Badge>
|
|
93
|
+
<Badge variant="soft" color="success">
|
|
94
|
+
Success
|
|
95
|
+
</Badge>
|
|
96
|
+
<Badge variant="soft" color="info">
|
|
97
|
+
Info
|
|
98
|
+
</Badge>
|
|
99
|
+
<Badge variant="soft" color="muted">
|
|
100
|
+
Muted
|
|
101
|
+
</Badge>`}
|
|
88
102
|
>
|
|
89
103
|
<Badge variant="soft" color="primary">
|
|
90
104
|
Primary
|
|
@@ -115,24 +129,24 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
115
129
|
label="With Icons"
|
|
116
130
|
description="Badge kèm icon để bổ sung ngữ cảnh."
|
|
117
131
|
codeString={`<Badge color="success">
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
</Badge>
|
|
132
|
+
<CheckIcon className="size-3.5" />
|
|
133
|
+
Approved
|
|
134
|
+
</Badge>
|
|
121
135
|
|
|
122
|
-
<Badge color="destructive">
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
</Badge>
|
|
136
|
+
<Badge color="destructive">
|
|
137
|
+
<XIcon className="size-3.5" />
|
|
138
|
+
Rejected
|
|
139
|
+
</Badge>
|
|
126
140
|
|
|
127
|
-
<Badge color="warning" variant="soft">
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
</Badge>
|
|
141
|
+
<Badge color="warning" variant="soft">
|
|
142
|
+
<AlertTriangleIcon className="size-3.5" />
|
|
143
|
+
Pending
|
|
144
|
+
</Badge>
|
|
131
145
|
|
|
132
|
-
<Badge color="info" variant="outline">
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
</Badge>`}
|
|
146
|
+
<Badge color="info" variant="outline">
|
|
147
|
+
<InfoIcon className="size-3.5" />
|
|
148
|
+
Draft
|
|
149
|
+
</Badge>`}
|
|
136
150
|
>
|
|
137
151
|
<Badge color="success">
|
|
138
152
|
<CheckIcon className="size-3.5" />
|
|
@@ -157,10 +171,18 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
157
171
|
<ExampleSection
|
|
158
172
|
label="Status Indicators"
|
|
159
173
|
description="Dùng để hiển thị trạng thái."
|
|
160
|
-
codeString={`<Badge color="success" variant="soft">
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
<Badge color="
|
|
174
|
+
codeString={`<Badge color="success" variant="soft">
|
|
175
|
+
Active
|
|
176
|
+
</Badge>
|
|
177
|
+
<Badge color="secondary" variant="soft">
|
|
178
|
+
Inactive
|
|
179
|
+
</Badge>
|
|
180
|
+
<Badge color="destructive" variant="soft">
|
|
181
|
+
Expired
|
|
182
|
+
</Badge>
|
|
183
|
+
<Badge color="muted" variant="outline">
|
|
184
|
+
Archived
|
|
185
|
+
</Badge>`}
|
|
164
186
|
>
|
|
165
187
|
<Badge color="success" variant="soft">
|
|
166
188
|
Active
|
|
@@ -178,10 +200,18 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
178
200
|
<ExampleSection
|
|
179
201
|
label="Tags & Categories"
|
|
180
202
|
description="Dùng để hiển thị danh mục."
|
|
181
|
-
codeString={`<Badge variant="outline" color="primary">
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
<Badge variant="outline" color="
|
|
203
|
+
codeString={`<Badge variant="outline" color="primary">
|
|
204
|
+
React
|
|
205
|
+
</Badge>
|
|
206
|
+
<Badge variant="outline" color="secondary">
|
|
207
|
+
TypeScript
|
|
208
|
+
</Badge>
|
|
209
|
+
<Badge variant="outline" color="info">
|
|
210
|
+
Tailwind
|
|
211
|
+
</Badge>
|
|
212
|
+
<Badge variant="outline" color="warning">
|
|
213
|
+
Vite
|
|
214
|
+
</Badge>`}
|
|
185
215
|
>
|
|
186
216
|
<Badge variant="outline" color="primary">
|
|
187
217
|
React
|
|
@@ -202,17 +232,15 @@ function BadgeMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
202
232
|
<ExampleSection
|
|
203
233
|
label="As Link"
|
|
204
234
|
description="Badge render dưới dạng thẻ a nhờ prop render."
|
|
205
|
-
codeString={`<Badge render={<a href="#" />}>
|
|
206
|
-
Clickable Badge
|
|
207
|
-
</Badge>
|
|
235
|
+
codeString={`<Badge render={<a href="#" />}>Clickable Badge</Badge>
|
|
208
236
|
|
|
209
|
-
<Badge color="secondary" render={<a href="#" />}>
|
|
210
|
-
|
|
211
|
-
</Badge>
|
|
237
|
+
<Badge color="secondary" render={<a href="#" />}>
|
|
238
|
+
Secondary Link
|
|
239
|
+
</Badge>
|
|
212
240
|
|
|
213
|
-
<Badge variant="outline" render={<a href="#" />}>
|
|
214
|
-
|
|
215
|
-
</Badge>`}
|
|
241
|
+
<Badge variant="outline" render={<a href="#" />}>
|
|
242
|
+
Outline Link
|
|
243
|
+
</Badge>`}
|
|
216
244
|
>
|
|
217
245
|
<Badge render={<a href="#" />}>Clickable Badge</Badge>
|
|
218
246
|
<Badge color="secondary" render={<a href="#" />}>
|