gladvn 0.2.35 → 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.
Files changed (134) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -1
  3. package/scripts/strip-comments.ts +79 -0
  4. package/src/blocks/auth-form.tsx +34 -30
  5. package/src/blocks/auth-recovery.tsx +9 -13
  6. package/src/blocks/auth-split.tsx +46 -36
  7. package/src/blocks/settings.tsx +84 -117
  8. package/src/components/macro/alert-preset.tsx +3 -1
  9. package/src/components/macro/carousel-preset.tsx +0 -1
  10. package/src/components/macro/checkbox-preset.test.tsx +2 -2
  11. package/src/components/macro/checkbox-preset.tsx +1 -2
  12. package/src/components/macro/command-preset.tsx +1 -1
  13. package/src/components/macro/date-picker.tsx +5 -18
  14. package/src/components/macro/dialog-preset.tsx +5 -3
  15. package/src/components/macro/input-preset.tsx +0 -1
  16. package/src/components/macro/select-preset.tsx +1 -1
  17. package/src/components/macro/switch-preset.test.tsx +1 -1
  18. package/src/components/micro/accordion.test.tsx +6 -12
  19. package/src/components/micro/alert-dialog.tsx +0 -2
  20. package/src/components/micro/alert.test.tsx +5 -8
  21. package/src/components/micro/alert.tsx +0 -2
  22. package/src/components/micro/badge.test.tsx +5 -7
  23. package/src/components/micro/badge.tsx +1 -3
  24. package/src/components/micro/button.test.tsx +19 -26
  25. package/src/components/micro/button.tsx +3 -11
  26. package/src/components/micro/calendar.tsx +12 -13
  27. package/src/components/micro/card.test.tsx +3 -5
  28. package/src/components/micro/carousel.tsx +0 -1
  29. package/src/components/micro/chart.tsx +3 -2
  30. package/src/components/micro/checkbox.test.tsx +9 -18
  31. package/src/components/micro/combobox.tsx +1 -3
  32. package/src/components/micro/command.tsx +23 -11
  33. package/src/components/micro/context-menu.tsx +0 -2
  34. package/src/components/micro/dialog.test.tsx +6 -14
  35. package/src/components/micro/dialog.tsx +0 -2
  36. package/src/components/micro/drawer.tsx +0 -3
  37. package/src/components/micro/dropdown-menu.test.tsx +8 -14
  38. package/src/components/micro/dropdown-menu.tsx +0 -2
  39. package/src/components/micro/field.tsx +3 -3
  40. package/src/components/micro/hover-card.tsx +0 -2
  41. package/src/components/micro/input-group.tsx +9 -42
  42. package/src/components/micro/input.test.tsx +15 -24
  43. package/src/components/micro/navigation-menu.tsx +0 -2
  44. package/src/components/micro/popover.test.tsx +5 -9
  45. package/src/components/micro/progress.tsx +5 -1
  46. package/src/components/micro/select.test.tsx +5 -18
  47. package/src/components/micro/select.tsx +3 -5
  48. package/src/components/micro/separator.tsx +1 -1
  49. package/src/components/micro/sheet.test.tsx +6 -14
  50. package/src/components/micro/sheet.tsx +0 -2
  51. package/src/components/micro/sidebar.tsx +5 -6
  52. package/src/components/micro/sonner.tsx +0 -1
  53. package/src/components/micro/switch.test.tsx +9 -18
  54. package/src/components/micro/switch.tsx +1 -1
  55. package/src/components/micro/tabs.test.tsx +5 -11
  56. package/src/components/micro/theme-provider.tsx +0 -12
  57. package/src/components/micro/toggle-group.tsx +1 -12
  58. package/src/components/micro/tooltip.test.tsx +7 -12
  59. package/src/dev/App.tsx +6 -6
  60. package/src/dev/components/BlockViewer.tsx +15 -4
  61. package/src/dev/components/Container.tsx +20 -0
  62. package/src/dev/components/GladvnLogo.tsx +3 -9
  63. package/src/dev/components/code-highlighter.tsx +5 -3
  64. package/src/dev/components/showcase.tsx +116 -168
  65. package/src/dev/sections/buttons.tsx +4 -9
  66. package/src/dev/sections/display.tsx +68 -72
  67. package/src/dev/sections/feedback.tsx +304 -314
  68. package/src/dev/sections/forms.tsx +10 -14
  69. package/src/dev/sections/interactive.tsx +32 -32
  70. package/src/dev/sections/overview.tsx +2 -10
  71. package/src/dev/showcase/accordion.tsx +512 -554
  72. package/src/dev/showcase/alert-dialog.tsx +525 -565
  73. package/src/dev/showcase/alert.tsx +352 -402
  74. package/src/dev/showcase/aspect-ratio.tsx +167 -193
  75. package/src/dev/showcase/avatar.tsx +231 -269
  76. package/src/dev/showcase/badge.tsx +92 -140
  77. package/src/dev/showcase/breadcrumb.tsx +113 -135
  78. package/src/dev/showcase/button.tsx +140 -173
  79. package/src/dev/showcase/calendar.tsx +187 -237
  80. package/src/dev/showcase/card.tsx +229 -261
  81. package/src/dev/showcase/carousel.tsx +288 -315
  82. package/src/dev/showcase/chart.tsx +44 -50
  83. package/src/dev/showcase/checkbox.tsx +286 -330
  84. package/src/dev/showcase/collapsible.tsx +143 -160
  85. package/src/dev/showcase/combobox.tsx +327 -369
  86. package/src/dev/showcase/command.tsx +106 -120
  87. package/src/dev/showcase/context-menu.tsx +93 -107
  88. package/src/dev/showcase/dialog.tsx +585 -630
  89. package/src/dev/showcase/drawer.tsx +176 -196
  90. package/src/dev/showcase/dropdown-menu.tsx +183 -201
  91. package/src/dev/showcase/empty.tsx +232 -274
  92. package/src/dev/showcase/hover-card.tsx +153 -180
  93. package/src/dev/showcase/input-group.tsx +221 -253
  94. package/src/dev/showcase/input-otp.tsx +204 -250
  95. package/src/dev/showcase/input.tsx +246 -325
  96. package/src/dev/showcase/item.tsx +134 -152
  97. package/src/dev/showcase/kbd.tsx +149 -172
  98. package/src/dev/showcase/label.tsx +50 -68
  99. package/src/dev/showcase/menubar.tsx +194 -213
  100. package/src/dev/showcase/navigation-menu.tsx +119 -133
  101. package/src/dev/showcase/overview-components/ArchitectureSection.tsx +126 -0
  102. package/src/dev/showcase/overview-components/CodeBlock.tsx +50 -0
  103. package/src/dev/showcase/overview-components/ColorPaletteSection.tsx +44 -0
  104. package/src/dev/showcase/overview-components/DashboardPreview.tsx +159 -0
  105. package/src/dev/showcase/overview-components/FeatureGridSection.tsx +535 -0
  106. package/src/dev/showcase/overview-components/FooterCTA.tsx +137 -0
  107. package/src/dev/showcase/overview-components/HeroSection.tsx +65 -0
  108. package/src/dev/showcase/overview-components/PrinciplesSection.tsx +128 -0
  109. package/src/dev/showcase/overview.tsx +21 -1163
  110. package/src/dev/showcase/pagination.tsx +144 -190
  111. package/src/dev/showcase/popover.tsx +181 -196
  112. package/src/dev/showcase/progress.tsx +141 -189
  113. package/src/dev/showcase/radio-group.tsx +272 -332
  114. package/src/dev/showcase/resizable.tsx +119 -141
  115. package/src/dev/showcase/scroll-area.tsx +21 -36
  116. package/src/dev/showcase/select.tsx +262 -322
  117. package/src/dev/showcase/separator.tsx +75 -73
  118. package/src/dev/showcase/sheet.tsx +333 -361
  119. package/src/dev/showcase/sidebar.tsx +53 -59
  120. package/src/dev/showcase/skeleton.tsx +93 -112
  121. package/src/dev/showcase/slider.tsx +244 -296
  122. package/src/dev/showcase/sonner.tsx +251 -258
  123. package/src/dev/showcase/spinner.tsx +46 -67
  124. package/src/dev/showcase/switch.tsx +298 -362
  125. package/src/dev/showcase/table.tsx +76 -80
  126. package/src/dev/showcase/tabs.tsx +302 -355
  127. package/src/dev/showcase/textarea.tsx +240 -293
  128. package/src/dev/showcase/toast.tsx +48 -54
  129. package/src/dev/showcase/toggle-group.tsx +104 -129
  130. package/src/dev/showcase/toggle.tsx +82 -102
  131. package/src/dev/showcase/tooltip.tsx +173 -192
  132. package/src/dev/showcase/why.tsx +6 -12
  133. package/src/hooks/use-mobile.test.ts +3 -2
  134. package/src/lib/utils.test.ts +5 -4
@@ -5,7 +5,7 @@ import { useDevContext } from "../../dev/components/dev-context";
5
5
  import {
6
6
  DocsH3,
7
7
  DocsP,
8
- ExampleSection,
8
+ ShowcaseExample,
9
9
  Showcase,
10
10
  ShowcaseDocs
11
11
  } from "../../dev/components/showcase";
@@ -13,20 +13,17 @@ import { type Size } from "../../lib/types";
13
13
 
14
14
  function ToastMicroShowcase({ globalSize }: { globalSize: Size }) {
15
15
  return (
16
- <div className="space-y-10 mt-6">
17
- <ExampleSection
18
- label="Toast Notifications"
19
- description="Nhấp để kích hoạt các loại toast khác nhau."
20
- codeString={`<div className="flex flex-wrap gap-3">
16
+ <div className="space-y-10">
17
+ <ShowcaseExample title="Toast Notifications" description="Nhấp để kích hoạt các loại toast khác nhau." code={`<div className="flex flex-wrap gap-3">
21
18
  <Button
22
19
  variant="outline"
23
20
  onClick={() => {
24
- toast("Event has been created", {
21
+ toast("Sự kiện đã được tạo", {
25
22
  description:
26
- "Sunday, December 03, 2023 at 9:00 AM",
23
+ "Chủ nhật, ngày 03 tháng 12 năm 2023 lúc 9:00 sáng",
27
24
  action: {
28
- label: "Undo",
29
- onClick: () => console.log("Undo") } })
25
+ label: "Hoàn tác",
26
+ onClick: () => console.log("Hoàn tác") } })
30
27
  }}
31
28
  >
32
29
  Show Toast
@@ -49,44 +46,45 @@ function ToastMicroShowcase({ globalSize }: { globalSize: Size }) {
49
46
  >
50
47
  Error Toast
51
48
  </Button>
52
- </div>`}
53
- >
54
- <div className="flex flex-wrap gap-3">
55
- <Button
56
- variant="outline"
57
- size={globalSize}
58
- onClick={() => {
59
- toast("Event has been created", {
60
- description: "Sunday, December 03, 2023 at 9:00 AM",
61
- action: {
62
- label: "Undo",
63
- onClick: () => console.log("Undo") } });
64
- }}
65
- >
66
- Show Toast
67
- </Button>
68
- <Button
69
- variant="outline"
70
- color="success"
71
- size={globalSize}
72
- onClick={() => {
73
- toast.success("Profile updated successfully");
74
- }}
75
- >
76
- Success Toast
77
- </Button>
78
- <Button
79
- variant="outline"
80
- color="destructive"
81
- size={globalSize}
82
- onClick={() => {
83
- toast.error("Failed to update profile");
84
- }}
85
- >
86
- Error Toast
87
- </Button>
88
- </div>
89
- </ExampleSection>
49
+ </div>`} preview={
50
+ <>
51
+ <div className="flex flex-wrap gap-3">
52
+ <Button
53
+ variant="outline"
54
+ size={globalSize}
55
+ onClick={() => {
56
+ toast("Sự kiện đã được tạo", {
57
+ description: "Chủ nhật, ngày 03 tháng 12 năm 2023 lúc 9:00 sáng",
58
+ action: {
59
+ label: "Hoàn tác",
60
+ onClick: () => console.log("Hoàn tác") } });
61
+ }}
62
+ >
63
+ Show Toast
64
+ </Button>
65
+ <Button
66
+ variant="outline"
67
+ color="success"
68
+ size={globalSize}
69
+ onClick={() => {
70
+ toast.success("Profile updated successfully");
71
+ }}
72
+ >
73
+ Success Toast
74
+ </Button>
75
+ <Button
76
+ variant="outline"
77
+ color="destructive"
78
+ size={globalSize}
79
+ onClick={() => {
80
+ toast.error("Failed to update profile");
81
+ }}
82
+ >
83
+ Error Toast
84
+ </Button>
85
+ </div>
86
+ </>
87
+ } />
90
88
  </div>
91
89
  );
92
90
  }
@@ -97,17 +95,13 @@ export default function ToastShowcase() {
97
95
  <Showcase
98
96
  title="Toast"
99
97
  description="Một thông báo ngắn gọn được hiển thị tạm thời."
100
- generalConcept={
98
+ guideline={
101
99
  <ShowcaseDocs>
102
100
  <DocsH3>Toast (Sonner)</DocsH3>
103
101
  <DocsP>Sử dụng để hiển thị các thông báo nhanh cho người dùng.</DocsP>
104
102
  </ShowcaseDocs>
105
103
  }
106
- tabs={[
107
- {
108
- label: "Micro (Primitive)",
109
- content: <ToastMicroShowcase globalSize={globalSize} /> },
110
- ]}
104
+ micro={{ content: <ToastMicroShowcase globalSize={globalSize} /> }}
111
105
  />
112
106
  );
113
107
  }
@@ -17,24 +17,17 @@ import {
17
17
  DocsH3,
18
18
  DocsP,
19
19
  ExampleGrid,
20
- ExampleSection,
20
+ ShowcaseExample,
21
21
  Showcase,
22
22
  ShowcaseDocs
23
23
  } from "../../dev/components/showcase";
24
24
  import { type Size } from "../../lib/types";
25
25
 
26
- // ──────────────────────────────────────────────────────────
27
- // SECTION 1: Micro Content
28
- // ──────────────────────────────────────────────────────────
29
26
  function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
30
27
  return (
31
- <div className="space-y-10 mt-6">
32
- {/* Single vs Multiple */}
28
+ <div className="space-y-10">
33
29
  <ExampleGrid>
34
- <ExampleSection
35
- label="Single Selection"
36
- description="Chỉ có một mục có thể hoạt động tại một thời điểm."
37
- codeString={`<ToggleGroup defaultValue={["center"]}>
30
+ <ShowcaseExample title="Single Selection" description="Chỉ có một mục có thể hoạt động tại một thời điểm." code={`<ToggleGroup defaultValue={["center"]}>
38
31
  <ToggleGroupItem value="left" aria-label="Align left">
39
32
  <AlignLeftIcon />
40
33
  </ToggleGroupItem>
@@ -47,25 +40,23 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
47
40
  <ToggleGroupItem value="right" aria-label="Align right">
48
41
  <AlignRightIcon />
49
42
  </ToggleGroupItem>
50
- </ToggleGroup>`}
51
- >
52
- <ToggleGroup defaultValue={["center"]} size={globalSize}>
53
- <ToggleGroupItem value="left" aria-label="Align left">
54
- <AlignLeftIcon />
55
- </ToggleGroupItem>
56
- <ToggleGroupItem value="center" aria-label="Align center">
57
- <AlignCenterIcon />
58
- </ToggleGroupItem>
59
- <ToggleGroupItem value="right" aria-label="Align right">
60
- <AlignRightIcon />
61
- </ToggleGroupItem>
62
- </ToggleGroup>
63
- </ExampleSection>
43
+ </ToggleGroup>`} preview={
44
+ <>
45
+ <ToggleGroup defaultValue={["center"]} size={globalSize}>
46
+ <ToggleGroupItem value="left" aria-label="Align left">
47
+ <AlignLeftIcon />
48
+ </ToggleGroupItem>
49
+ <ToggleGroupItem value="center" aria-label="Align center">
50
+ <AlignCenterIcon />
51
+ </ToggleGroupItem>
52
+ <ToggleGroupItem value="right" aria-label="Align right">
53
+ <AlignRightIcon />
54
+ </ToggleGroupItem>
55
+ </ToggleGroup>
56
+ </>
57
+ } />
64
58
 
65
- <ExampleSection
66
- label="Multiple Selection"
67
- description="Nhiều mục có thể được kích hoạt đồng thời."
68
- codeString={`<ToggleGroup defaultValue={["bold", "italic"]}>
59
+ <ShowcaseExample title="Multiple Selection" description="Nhiều mục có thể được kích hoạt đồng thời." code={`<ToggleGroup defaultValue={["bold", "italic"]}>
69
60
  <ToggleGroupItem value="bold" aria-label="Toggle bold">
70
61
  <BoldIcon />
71
62
  </ToggleGroupItem>
@@ -81,28 +72,25 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
81
72
  >
82
73
  <UnderlineIcon />
83
74
  </ToggleGroupItem>
84
- </ToggleGroup>`}
85
- >
86
- <ToggleGroup defaultValue={["bold", "italic"]} size={globalSize}>
87
- <ToggleGroupItem value="bold" aria-label="Toggle bold">
88
- <BoldIcon />
89
- </ToggleGroupItem>
90
- <ToggleGroupItem value="italic" aria-label="Toggle italic">
91
- <ItalicIcon />
92
- </ToggleGroupItem>
93
- <ToggleGroupItem value="underline" aria-label="Toggle underline">
94
- <UnderlineIcon />
95
- </ToggleGroupItem>
96
- </ToggleGroup>
97
- </ExampleSection>
75
+ </ToggleGroup>`} preview={
76
+ <>
77
+ <ToggleGroup defaultValue={["bold", "italic"]} size={globalSize}>
78
+ <ToggleGroupItem value="bold" aria-label="Toggle bold">
79
+ <BoldIcon />
80
+ </ToggleGroupItem>
81
+ <ToggleGroupItem value="italic" aria-label="Toggle italic">
82
+ <ItalicIcon />
83
+ </ToggleGroupItem>
84
+ <ToggleGroupItem value="underline" aria-label="Toggle underline">
85
+ <UnderlineIcon />
86
+ </ToggleGroupItem>
87
+ </ToggleGroup>
88
+ </>
89
+ } />
98
90
  </ExampleGrid>
99
91
 
100
- {/* Variants */}
101
92
  <ExampleGrid>
102
- <ExampleSection
103
- label="Outline Variant"
104
- description='variant="outline" — viền bao quanh từng item.'
105
- codeString={`<ToggleGroup variant="outline">
93
+ <ShowcaseExample title="Outline Variant" description='variant="outline" — viền bao quanh từng item.' code={`<ToggleGroup variant="outline">
106
94
  <ToggleGroupItem value="bold" aria-label="Bold">
107
95
  <BoldIcon />
108
96
  </ToggleGroupItem>
@@ -115,25 +103,23 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
115
103
  >
116
104
  <UnderlineIcon />
117
105
  </ToggleGroupItem>
118
- </ToggleGroup>`}
119
- >
120
- <ToggleGroup variant="outline" size={globalSize}>
121
- <ToggleGroupItem value="bold" aria-label="Bold">
122
- <BoldIcon />
123
- </ToggleGroupItem>
124
- <ToggleGroupItem value="italic" aria-label="Italic">
125
- <ItalicIcon />
126
- </ToggleGroupItem>
127
- <ToggleGroupItem value="underline" aria-label="Underline">
128
- <UnderlineIcon />
129
- </ToggleGroupItem>
130
- </ToggleGroup>
131
- </ExampleSection>
106
+ </ToggleGroup>`} preview={
107
+ <>
108
+ <ToggleGroup variant="outline" size={globalSize}>
109
+ <ToggleGroupItem value="bold" aria-label="Bold">
110
+ <BoldIcon />
111
+ </ToggleGroupItem>
112
+ <ToggleGroupItem value="italic" aria-label="Italic">
113
+ <ItalicIcon />
114
+ </ToggleGroupItem>
115
+ <ToggleGroupItem value="underline" aria-label="Underline">
116
+ <UnderlineIcon />
117
+ </ToggleGroupItem>
118
+ </ToggleGroup>
119
+ </>
120
+ } />
132
121
 
133
- <ExampleSection
134
- label="Compact (spacing={0})"
135
- description="spacing={0} — các nút dính liền nhau, phù hợp với toolbar."
136
- codeString={`<ToggleGroup variant="outline" spacing={0}>
122
+ <ShowcaseExample title="Compact (spacing={0})" description="spacing={0} — các nút dính liền nhau, phù hợp với toolbar." code={`<ToggleGroup variant="outline" spacing={0}>
137
123
  <ToggleGroupItem value="left" aria-label="Align left">
138
124
  <AlignLeftIcon />
139
125
  </ToggleGroupItem>
@@ -146,28 +132,25 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
146
132
  <ToggleGroupItem value="right" aria-label="Align right">
147
133
  <AlignRightIcon />
148
134
  </ToggleGroupItem>
149
- </ToggleGroup>`}
150
- >
151
- <ToggleGroup variant="outline" spacing={0} size={globalSize}>
152
- <ToggleGroupItem value="left" aria-label="Align left">
153
- <AlignLeftIcon />
154
- </ToggleGroupItem>
155
- <ToggleGroupItem value="center" aria-label="Align center">
156
- <AlignCenterIcon />
157
- </ToggleGroupItem>
158
- <ToggleGroupItem value="right" aria-label="Align right">
159
- <AlignRightIcon />
160
- </ToggleGroupItem>
161
- </ToggleGroup>
162
- </ExampleSection>
135
+ </ToggleGroup>`} preview={
136
+ <>
137
+ <ToggleGroup variant="outline" spacing={0} size={globalSize}>
138
+ <ToggleGroupItem value="left" aria-label="Align left">
139
+ <AlignLeftIcon />
140
+ </ToggleGroupItem>
141
+ <ToggleGroupItem value="center" aria-label="Align center">
142
+ <AlignCenterIcon />
143
+ </ToggleGroupItem>
144
+ <ToggleGroupItem value="right" aria-label="Align right">
145
+ <AlignRightIcon />
146
+ </ToggleGroupItem>
147
+ </ToggleGroup>
148
+ </>
149
+ } />
163
150
  </ExampleGrid>
164
151
 
165
- {/* Vertical & Disabled */}
166
152
  <ExampleGrid>
167
- <ExampleSection
168
- label="Vertical"
169
- description='orientation="vertical" — sắp xếp các nút theo chiều dọc.'
170
- codeString={`<ToggleGroup orientation="vertical">
153
+ <ShowcaseExample title="Vertical" description='orientation="vertical" — sắp xếp các nút theo chiều dọc.' code={`<ToggleGroup orientation="vertical">
171
154
  <ToggleGroupItem value="bold" aria-label="Bold">
172
155
  <BoldIcon />
173
156
  </ToggleGroupItem>
@@ -180,25 +163,23 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
180
163
  >
181
164
  <UnderlineIcon />
182
165
  </ToggleGroupItem>
183
- </ToggleGroup>`}
184
- >
185
- <ToggleGroup orientation="vertical" size={globalSize}>
186
- <ToggleGroupItem value="bold" aria-label="Bold">
187
- <BoldIcon />
188
- </ToggleGroupItem>
189
- <ToggleGroupItem value="italic" aria-label="Italic">
190
- <ItalicIcon />
191
- </ToggleGroupItem>
192
- <ToggleGroupItem value="underline" aria-label="Underline">
193
- <UnderlineIcon />
194
- </ToggleGroupItem>
195
- </ToggleGroup>
196
- </ExampleSection>
166
+ </ToggleGroup>`} preview={
167
+ <>
168
+ <ToggleGroup orientation="vertical" size={globalSize}>
169
+ <ToggleGroupItem value="bold" aria-label="Bold">
170
+ <BoldIcon />
171
+ </ToggleGroupItem>
172
+ <ToggleGroupItem value="italic" aria-label="Italic">
173
+ <ItalicIcon />
174
+ </ToggleGroupItem>
175
+ <ToggleGroupItem value="underline" aria-label="Underline">
176
+ <UnderlineIcon />
177
+ </ToggleGroupItem>
178
+ </ToggleGroup>
179
+ </>
180
+ } />
197
181
 
198
- <ExampleSection
199
- label="Disabled Items"
200
- description="Từng ToggleGroupItem có thể bị vô hiệu hóa riêng lẻ."
201
- codeString={`<ToggleGroup>
182
+ <ShowcaseExample title="Disabled Items" description="Từng ToggleGroupItem có thể bị vô hiệu hóa riêng lẻ." code={`<ToggleGroup>
202
183
  <ToggleGroupItem value="bold" aria-label="Bold">
203
184
  <BoldIcon />
204
185
  </ToggleGroupItem>
@@ -215,39 +196,37 @@ function ToggleGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
215
196
  >
216
197
  <UnderlineIcon />
217
198
  </ToggleGroupItem>
218
- </ToggleGroup>`}
219
- >
220
- <ToggleGroup size={globalSize}>
221
- <ToggleGroupItem value="bold" aria-label="Bold">
222
- <BoldIcon />
223
- </ToggleGroupItem>
224
- <ToggleGroupItem
225
- value="italic"
226
- disabled
227
- aria-label="Italic (disabled)"
228
- >
229
- <ItalicIcon />
230
- </ToggleGroupItem>
231
- <ToggleGroupItem value="underline" aria-label="Underline">
232
- <UnderlineIcon />
233
- </ToggleGroupItem>
234
- </ToggleGroup>
235
- </ExampleSection>
199
+ </ToggleGroup>`} preview={
200
+ <>
201
+ <ToggleGroup size={globalSize}>
202
+ <ToggleGroupItem value="bold" aria-label="Bold">
203
+ <BoldIcon />
204
+ </ToggleGroupItem>
205
+ <ToggleGroupItem
206
+ value="italic"
207
+ disabled
208
+ aria-label="Italic (disabled)"
209
+ >
210
+ <ItalicIcon />
211
+ </ToggleGroupItem>
212
+ <ToggleGroupItem value="underline" aria-label="Underline">
213
+ <UnderlineIcon />
214
+ </ToggleGroupItem>
215
+ </ToggleGroup>
216
+ </>
217
+ } />
236
218
  </ExampleGrid>
237
219
  </div>
238
220
  );
239
221
  }
240
222
 
241
- // ──────────────────────────────────────────────────────────
242
- // SECTION 2: Entry point
243
- // ──────────────────────────────────────────────────────────
244
223
  export default function ToggleGroupShowcase() {
245
224
  const { size: globalSize } = useDevContext();
246
225
  return (
247
226
  <Showcase
248
227
  title="Toggle Group"
249
228
  description="Một tập hợp các nút hai trạng thái có thể bật hoặc tắt, hỗ trợ đơn và đa lựa chọn."
250
- generalConcept={
229
+ guideline={
251
230
  <ShowcaseDocs>
252
231
  <DocsH3>Toggle Group</DocsH3>
253
232
  <DocsP>
@@ -260,11 +239,7 @@ export default function ToggleGroupShowcase() {
260
239
  </DocsP>
261
240
  </ShowcaseDocs>
262
241
  }
263
- tabs={[
264
- {
265
- label: "Micro (Primitive)",
266
- content: <ToggleGroupMicroShowcase globalSize={globalSize} /> },
267
- ]}
242
+ micro={{ content: <ToggleGroupMicroShowcase globalSize={globalSize} /> }}
268
243
  />
269
244
  );
270
245
  }