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,17 +1,5 @@
|
|
|
1
|
-
import { useDevContext } from "../../dev/components/dev-context";
|
|
2
1
|
import { useState } from "react";
|
|
3
2
|
|
|
4
|
-
import {
|
|
5
|
-
DocsCode,
|
|
6
|
-
DocsH3,
|
|
7
|
-
DocsLi,
|
|
8
|
-
DocsP,
|
|
9
|
-
DocsUl,
|
|
10
|
-
ExampleGrid,
|
|
11
|
-
ExampleSection,
|
|
12
|
-
Showcase,
|
|
13
|
-
ShowcaseDocs,
|
|
14
|
-
} from "../../dev/components/showcase";
|
|
15
3
|
import {
|
|
16
4
|
DollarSignIcon,
|
|
17
5
|
EyeIcon,
|
|
@@ -31,6 +19,18 @@ import {
|
|
|
31
19
|
InputGroupText,
|
|
32
20
|
InputGroupTextarea,
|
|
33
21
|
} from "../../components/micro/input-group";
|
|
22
|
+
import { useDevContext } from "../../dev/components/dev-context";
|
|
23
|
+
import {
|
|
24
|
+
DocsCode,
|
|
25
|
+
DocsH3,
|
|
26
|
+
DocsLi,
|
|
27
|
+
DocsP,
|
|
28
|
+
DocsUl,
|
|
29
|
+
ExampleGrid,
|
|
30
|
+
ExampleSection,
|
|
31
|
+
Showcase,
|
|
32
|
+
ShowcaseDocs,
|
|
33
|
+
} from "../../dev/components/showcase";
|
|
34
34
|
import { type Size } from "../../lib/types";
|
|
35
35
|
|
|
36
36
|
function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
@@ -46,14 +46,17 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
46
46
|
label="Text Prefix & Suffix"
|
|
47
47
|
description="InputGroupAddon với văn bản — click addon để focus input."
|
|
48
48
|
codeString={`<InputGroup size="md">
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
<InputGroupAddon>
|
|
50
|
+
<InputGroupText>https://</InputGroupText>
|
|
51
|
+
</InputGroupAddon>
|
|
52
|
+
<InputGroupInput
|
|
53
|
+
id="url-input"
|
|
54
|
+
placeholder="example.com"
|
|
55
|
+
/>
|
|
56
|
+
<InputGroupAddon align="end">
|
|
57
|
+
<InputGroupText>.vn</InputGroupText>
|
|
58
|
+
</InputGroupAddon>
|
|
59
|
+
</InputGroup>`}
|
|
57
60
|
>
|
|
58
61
|
<InputGroup size={globalSize} className="w-full">
|
|
59
62
|
<InputGroupAddon>
|
|
@@ -70,16 +73,16 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
70
73
|
label="Icon Prefix & Text Suffix"
|
|
71
74
|
description="InputGroupAddon với icon — thường dùng cho tiền tệ, số lượng."
|
|
72
75
|
codeString={`<InputGroup size="md">
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
</InputGroup>`}
|
|
76
|
+
<InputGroupAddon>
|
|
77
|
+
<InputGroupText>
|
|
78
|
+
<DollarSignIcon aria-hidden="true" />
|
|
79
|
+
</InputGroupText>
|
|
80
|
+
</InputGroupAddon>
|
|
81
|
+
<InputGroupInput id="price-input" placeholder="0.00" />
|
|
82
|
+
<InputGroupAddon align="end">
|
|
83
|
+
<InputGroupText>USD</InputGroupText>
|
|
84
|
+
</InputGroupAddon>
|
|
85
|
+
</InputGroup>`}
|
|
83
86
|
>
|
|
84
87
|
<InputGroup size={globalSize} className="w-full">
|
|
85
88
|
<InputGroupAddon>
|
|
@@ -101,21 +104,24 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
101
104
|
label="Password Toggle"
|
|
102
105
|
description="InputGroupButton icon đặt trực tiếp trong InputGroup — tự có border-l border-l-border phân tách."
|
|
103
106
|
codeString={`const [show, setShow] = useState(false);
|
|
104
|
-
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
107
|
+
<InputGroup size="md">
|
|
108
|
+
<InputGroupInput
|
|
109
|
+
id="password-input"
|
|
110
|
+
type={show ? "text" : "password"}
|
|
111
|
+
placeholder="••••••••"
|
|
112
|
+
/>
|
|
113
|
+
<InputGroupButton
|
|
114
|
+
icon
|
|
115
|
+
aria-label={show ? "Hide password" : "Show password"}
|
|
116
|
+
onClick={() => setShow((p) => !p)}
|
|
117
|
+
>
|
|
118
|
+
{show ? (
|
|
119
|
+
<EyeOffIcon aria-hidden="true" />
|
|
120
|
+
) : (
|
|
121
|
+
<EyeIcon aria-hidden="true" />
|
|
122
|
+
)}
|
|
123
|
+
</InputGroupButton>
|
|
124
|
+
</InputGroup>`}
|
|
119
125
|
>
|
|
120
126
|
<InputGroup size={globalSize} className="w-full">
|
|
121
127
|
<InputGroupInput
|
|
@@ -141,25 +147,28 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
141
147
|
label="Clear Button"
|
|
142
148
|
description="InputGroupButton icon để xoá nhanh nội dung — hiện có điều kiện."
|
|
143
149
|
codeString={`const [value, setValue] = useState("");
|
|
144
|
-
|
|
145
|
-
<
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
</
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
150
|
+
<InputGroup size="md">
|
|
151
|
+
<InputGroupAddon>
|
|
152
|
+
<InputGroupText>
|
|
153
|
+
<SearchIcon aria-hidden="true" />
|
|
154
|
+
</InputGroupText>
|
|
155
|
+
</InputGroupAddon>
|
|
156
|
+
<InputGroupInput
|
|
157
|
+
id="search-input"
|
|
158
|
+
value={value}
|
|
159
|
+
onChange={(e) => setValue(e.target.value)}
|
|
160
|
+
placeholder="Search..."
|
|
161
|
+
/>
|
|
162
|
+
{value && (
|
|
163
|
+
<InputGroupButton
|
|
164
|
+
icon
|
|
165
|
+
aria-label="Clear"
|
|
166
|
+
onClick={() => setValue("")}
|
|
167
|
+
>
|
|
168
|
+
<XIcon aria-hidden="true" />
|
|
169
|
+
</InputGroupButton>
|
|
170
|
+
)}
|
|
171
|
+
</InputGroup>`}
|
|
163
172
|
>
|
|
164
173
|
<InputGroup size={globalSize} className="w-full">
|
|
165
174
|
<InputGroupAddon>
|
|
@@ -192,11 +201,14 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
192
201
|
label="Text Button (non-icon)"
|
|
193
202
|
description="InputGroupButton không có prop icon — dùng horizontal padding và font-size từ group."
|
|
194
203
|
codeString={`<InputGroup size="md">
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
204
|
+
<InputGroupInput
|
|
205
|
+
id="find-input"
|
|
206
|
+
placeholder="Search..."
|
|
207
|
+
/>
|
|
208
|
+
<InputGroupButton variant="solid">
|
|
209
|
+
<SearchIcon aria-hidden="true" /> Find
|
|
210
|
+
</InputGroupButton>
|
|
211
|
+
</InputGroup>`}
|
|
200
212
|
>
|
|
201
213
|
<InputGroup size={globalSize} className="w-full">
|
|
202
214
|
<InputGroupInput id="ig-find" placeholder="Search..." />
|
|
@@ -210,30 +222,29 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
210
222
|
label="Both Ends — Counter"
|
|
211
223
|
description="Button ở cả 2 đầu — border-r border-r-border (start) và border-l border-l-border (end) tự động theo vị trí DOM."
|
|
212
224
|
codeString={`const [count, setCount] = useState(0);
|
|
213
|
-
|
|
214
|
-
<
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
</
|
|
236
|
-
</InputGroup>`}
|
|
225
|
+
<InputGroup size="md">
|
|
226
|
+
<InputGroupButton
|
|
227
|
+
icon
|
|
228
|
+
aria-label="Decrement"
|
|
229
|
+
onClick={() => setCount((c) => c - 1)}
|
|
230
|
+
>
|
|
231
|
+
<MinusIcon aria-hidden="true" />
|
|
232
|
+
</InputGroupButton>
|
|
233
|
+
<InputGroupInput
|
|
234
|
+
id="counter-input"
|
|
235
|
+
type="number"
|
|
236
|
+
value={count}
|
|
237
|
+
onChange={(e) => setCount(Number(e.target.value))}
|
|
238
|
+
className="text-center"
|
|
239
|
+
/>
|
|
240
|
+
<InputGroupButton
|
|
241
|
+
icon
|
|
242
|
+
aria-label="Increment"
|
|
243
|
+
onClick={() => setCount((c) => c + 1)}
|
|
244
|
+
>
|
|
245
|
+
<PlusIcon aria-hidden="true" />
|
|
246
|
+
</InputGroupButton>
|
|
247
|
+
</InputGroup>`}
|
|
237
248
|
>
|
|
238
249
|
<InputGroup size={globalSize} className="w-full">
|
|
239
250
|
<InputGroupButton
|
|
@@ -266,54 +277,72 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
266
277
|
label="Button Variants"
|
|
267
278
|
description="InputGroupButton hỗ trợ 4 variants: ghost (default), solid, soft, outline. Demo với icon và text mode."
|
|
268
279
|
codeString={`{/* icon mode — 4 variants */}
|
|
269
|
-
<InputGroup size="md">
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
280
|
+
<InputGroup size="md">
|
|
281
|
+
<InputGroupInput placeholder="ghost" />
|
|
282
|
+
<InputGroupButton
|
|
283
|
+
icon
|
|
284
|
+
variant="ghost"
|
|
285
|
+
aria-label="Search"
|
|
286
|
+
>
|
|
287
|
+
<SearchIcon aria-hidden="true" />
|
|
288
|
+
</InputGroupButton>
|
|
289
|
+
</InputGroup>
|
|
275
290
|
|
|
276
|
-
<InputGroup size="md">
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
291
|
+
<InputGroup size="md">
|
|
292
|
+
<InputGroupInput placeholder="solid" />
|
|
293
|
+
<InputGroupButton
|
|
294
|
+
icon
|
|
295
|
+
variant="solid"
|
|
296
|
+
aria-label="Search"
|
|
297
|
+
>
|
|
298
|
+
<SearchIcon aria-hidden="true" />
|
|
299
|
+
</InputGroupButton>
|
|
300
|
+
</InputGroup>
|
|
282
301
|
|
|
283
|
-
<InputGroup size="md">
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
302
|
+
<InputGroup size="md">
|
|
303
|
+
<InputGroupInput placeholder="soft" />
|
|
304
|
+
<InputGroupButton
|
|
305
|
+
icon
|
|
306
|
+
variant="soft"
|
|
307
|
+
aria-label="Search"
|
|
308
|
+
>
|
|
309
|
+
<SearchIcon aria-hidden="true" />
|
|
310
|
+
</InputGroupButton>
|
|
311
|
+
</InputGroup>
|
|
289
312
|
|
|
290
|
-
<InputGroup size="md">
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
313
|
+
<InputGroup size="md">
|
|
314
|
+
<InputGroupInput placeholder="outline" />
|
|
315
|
+
<InputGroupButton
|
|
316
|
+
icon
|
|
317
|
+
variant="outline"
|
|
318
|
+
aria-label="Search"
|
|
319
|
+
>
|
|
320
|
+
<SearchIcon aria-hidden="true" />
|
|
321
|
+
</InputGroupButton>
|
|
322
|
+
</InputGroup>
|
|
296
323
|
|
|
297
|
-
{/* text mode — 4 variants */}
|
|
298
|
-
<InputGroup size="md">
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
</InputGroup>
|
|
324
|
+
{/* text mode — 4 variants */}
|
|
325
|
+
<InputGroup size="md">
|
|
326
|
+
<InputGroupInput placeholder="ghost text" />
|
|
327
|
+
<InputGroupButton variant="ghost">Go</InputGroupButton>
|
|
328
|
+
</InputGroup>
|
|
302
329
|
|
|
303
|
-
<InputGroup size="md">
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
</InputGroup>
|
|
330
|
+
<InputGroup size="md">
|
|
331
|
+
<InputGroupInput placeholder="solid text" />
|
|
332
|
+
<InputGroupButton variant="solid">Go</InputGroupButton>
|
|
333
|
+
</InputGroup>
|
|
307
334
|
|
|
308
|
-
<InputGroup size="md">
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
</InputGroup>
|
|
335
|
+
<InputGroup size="md">
|
|
336
|
+
<InputGroupInput placeholder="soft text" />
|
|
337
|
+
<InputGroupButton variant="soft">Go</InputGroupButton>
|
|
338
|
+
</InputGroup>
|
|
312
339
|
|
|
313
|
-
<InputGroup size="md">
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
340
|
+
<InputGroup size="md">
|
|
341
|
+
<InputGroupInput placeholder="outline text" />
|
|
342
|
+
<InputGroupButton variant="outline">
|
|
343
|
+
Go
|
|
344
|
+
</InputGroupButton>
|
|
345
|
+
</InputGroup>`}
|
|
317
346
|
fullWidth
|
|
318
347
|
>
|
|
319
348
|
<div className="grid grid-cols-2 gap-3 sm:grid-cols-4">
|
|
@@ -368,13 +397,17 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
368
397
|
label="Disabled"
|
|
369
398
|
description="Trạng thái disabled delegate lên wrapper qua has-disabled: — toàn bộ group mờ đi."
|
|
370
399
|
codeString={`<InputGroup size="md">
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
400
|
+
<InputGroupAddon>
|
|
401
|
+
<InputGroupText>
|
|
402
|
+
<GlobeIcon aria-hidden="true" />
|
|
403
|
+
</InputGroupText>
|
|
404
|
+
</InputGroupAddon>
|
|
405
|
+
<InputGroupInput
|
|
406
|
+
id="disabled-input"
|
|
407
|
+
placeholder="Disabled"
|
|
408
|
+
disabled
|
|
409
|
+
/>
|
|
410
|
+
</InputGroup>`}
|
|
378
411
|
>
|
|
379
412
|
<InputGroup size={globalSize} className="w-full">
|
|
380
413
|
<InputGroupAddon>
|
|
@@ -390,16 +423,16 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
390
423
|
label="Invalid / Error"
|
|
391
424
|
description="aria-invalid='true' trên input delegate border border-border đỏ lên toàn bộ wrapper qua has-[...aria-invalid]."
|
|
392
425
|
codeString={`<InputGroup size="md">
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
</InputGroup>`}
|
|
426
|
+
<InputGroupAddon>
|
|
427
|
+
<InputGroupText>$</InputGroupText>
|
|
428
|
+
</InputGroupAddon>
|
|
429
|
+
<InputGroupInput
|
|
430
|
+
id="error-input"
|
|
431
|
+
aria-invalid="true"
|
|
432
|
+
defaultValue="abc"
|
|
433
|
+
placeholder="0.00"
|
|
434
|
+
/>
|
|
435
|
+
</InputGroup>`}
|
|
403
436
|
>
|
|
404
437
|
<InputGroup size={globalSize} className="w-full">
|
|
405
438
|
<InputGroupAddon>
|
|
@@ -420,15 +453,15 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
|
|
|
420
453
|
label="With Textarea"
|
|
421
454
|
description="InputGroupTextarea — InputGroup wrapper tự co giãn chiều cao với className='h-auto'."
|
|
422
455
|
codeString={`<InputGroup size="md" className="h-auto">
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
</InputGroup>`}
|
|
456
|
+
<InputGroupAddon className="self-start">
|
|
457
|
+
<InputGroupText>@</InputGroupText>
|
|
458
|
+
</InputGroupAddon>
|
|
459
|
+
<InputGroupTextarea
|
|
460
|
+
id="comment-input"
|
|
461
|
+
placeholder="Write a comment..."
|
|
462
|
+
rows={4}
|
|
463
|
+
/>
|
|
464
|
+
</InputGroup>`}
|
|
432
465
|
>
|
|
433
466
|
<InputGroup size={globalSize} className="h-auto w-full">
|
|
434
467
|
<InputGroupAddon className="self-start">
|