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.
Files changed (313) hide show
  1. package/bin/cli.js +9 -6
  2. package/dist/components/macro/accordion-preset.d.ts.map +1 -1
  3. package/dist/components/macro/alert-dialog-preset.d.ts.map +1 -1
  4. package/dist/components/macro/alert-preset.d.ts.map +1 -1
  5. package/dist/components/macro/avatar-preset.d.ts.map +1 -1
  6. package/dist/components/macro/breadcrumb-preset.d.ts.map +1 -1
  7. package/dist/components/macro/card-preset.d.ts.map +1 -1
  8. package/dist/components/macro/carousel-preset.d.ts.map +1 -1
  9. package/dist/components/macro/checkbox-preset.d.ts.map +1 -1
  10. package/dist/components/macro/combobox-preset.d.ts.map +1 -1
  11. package/dist/components/macro/command-preset.d.ts +1 -1
  12. package/dist/components/macro/command-preset.d.ts.map +1 -1
  13. package/dist/components/macro/date-picker.d.ts.map +1 -1
  14. package/dist/components/macro/dialog-preset.d.ts.map +1 -1
  15. package/dist/components/macro/empty-preset.d.ts.map +1 -1
  16. package/dist/components/macro/field-preset.d.ts.map +1 -1
  17. package/dist/components/macro/input-otp-preset.d.ts +6 -0
  18. package/dist/components/macro/input-otp-preset.d.ts.map +1 -1
  19. package/dist/components/macro/input-preset.d.ts +1 -1
  20. package/dist/components/macro/input-preset.d.ts.map +1 -1
  21. package/dist/components/macro/pagination-preset.d.ts.map +1 -1
  22. package/dist/components/macro/progress-preset.d.ts.map +1 -1
  23. package/dist/components/macro/radio-group-preset.d.ts.map +1 -1
  24. package/dist/components/macro/select-preset.d.ts.map +1 -1
  25. package/dist/components/macro/slider-preset.d.ts.map +1 -1
  26. package/dist/components/macro/switch-preset.d.ts.map +1 -1
  27. package/dist/components/macro/tabs-preset.d.ts +1 -1
  28. package/dist/components/macro/tabs-preset.d.ts.map +1 -1
  29. package/dist/components/macro/textarea-preset.d.ts +1 -1
  30. package/dist/components/macro/textarea-preset.d.ts.map +1 -1
  31. package/dist/components/micro/accordion.d.ts +7 -0
  32. package/dist/components/micro/accordion.d.ts.map +1 -1
  33. package/dist/components/micro/alert-dialog.d.ts.map +1 -1
  34. package/dist/components/micro/alert.d.ts +7 -0
  35. package/dist/components/micro/alert.d.ts.map +1 -1
  36. package/dist/components/micro/aspect-ratio.d.ts +7 -0
  37. package/dist/components/micro/aspect-ratio.d.ts.map +1 -1
  38. package/dist/components/micro/avatar.d.ts.map +1 -1
  39. package/dist/components/micro/badge.d.ts +8 -1
  40. package/dist/components/micro/badge.d.ts.map +1 -1
  41. package/dist/components/micro/breadcrumb.d.ts +7 -0
  42. package/dist/components/micro/breadcrumb.d.ts.map +1 -1
  43. package/dist/components/micro/button.d.ts +8 -1
  44. package/dist/components/micro/button.d.ts.map +1 -1
  45. package/dist/components/micro/calendar.d.ts +2 -2
  46. package/dist/components/micro/calendar.d.ts.map +1 -1
  47. package/dist/components/micro/carousel.d.ts.map +1 -1
  48. package/dist/components/micro/chart.d.ts.map +1 -1
  49. package/dist/components/micro/checkbox.d.ts.map +1 -1
  50. package/dist/components/micro/collapsible.d.ts.map +1 -1
  51. package/dist/components/micro/combobox.d.ts.map +1 -1
  52. package/dist/components/micro/command.d.ts.map +1 -1
  53. package/dist/components/micro/context-menu.d.ts.map +1 -1
  54. package/dist/components/micro/dialog.d.ts.map +1 -1
  55. package/dist/components/micro/drawer.d.ts.map +1 -1
  56. package/dist/components/micro/dropdown-menu.d.ts.map +1 -1
  57. package/dist/components/micro/empty.d.ts +7 -0
  58. package/dist/components/micro/empty.d.ts.map +1 -1
  59. package/dist/components/micro/field.d.ts.map +1 -1
  60. package/dist/components/micro/hover-card.d.ts +1 -1
  61. package/dist/components/micro/hover-card.d.ts.map +1 -1
  62. package/dist/components/micro/input-group.d.ts.map +1 -1
  63. package/dist/components/micro/input-otp.d.ts.map +1 -1
  64. package/dist/components/micro/input.d.ts +7 -0
  65. package/dist/components/micro/input.d.ts.map +1 -1
  66. package/dist/components/micro/item.d.ts.map +1 -1
  67. package/dist/components/micro/label.d.ts.map +1 -1
  68. package/dist/components/micro/menubar.d.ts.map +1 -1
  69. package/dist/components/micro/navigation-menu.d.ts +8 -1
  70. package/dist/components/micro/navigation-menu.d.ts.map +1 -1
  71. package/dist/components/micro/pagination.d.ts.map +1 -1
  72. package/dist/components/micro/popover.d.ts.map +1 -1
  73. package/dist/components/micro/progress.d.ts.map +1 -1
  74. package/dist/components/micro/radio-group.d.ts.map +1 -1
  75. package/dist/components/micro/select.d.ts +1 -1
  76. package/dist/components/micro/select.d.ts.map +1 -1
  77. package/dist/components/micro/sheet.d.ts.map +1 -1
  78. package/dist/components/micro/sidebar.d.ts.map +1 -1
  79. package/dist/components/micro/skeleton.d.ts +7 -0
  80. package/dist/components/micro/skeleton.d.ts.map +1 -1
  81. package/dist/components/micro/slider.d.ts +7 -0
  82. package/dist/components/micro/slider.d.ts.map +1 -1
  83. package/dist/components/micro/sonner.d.ts.map +1 -1
  84. package/dist/components/micro/spinner.d.ts.map +1 -1
  85. package/dist/components/micro/switch.d.ts.map +1 -1
  86. package/dist/components/micro/table.d.ts.map +1 -1
  87. package/dist/components/micro/tabs.d.ts +1 -1
  88. package/dist/components/micro/tabs.d.ts.map +1 -1
  89. package/dist/components/micro/textarea.d.ts +7 -0
  90. package/dist/components/micro/textarea.d.ts.map +1 -1
  91. package/dist/components/micro/toggle-group.d.ts.map +1 -1
  92. package/dist/components/micro/toggle.d.ts.map +1 -1
  93. package/dist/components/micro/tooltip.d.ts +1 -1
  94. package/dist/components/micro/tooltip.d.ts.map +1 -1
  95. package/dist/dev/App.d.ts.map +1 -1
  96. package/dist/dev/components/code-highlighter.d.ts.map +1 -1
  97. package/dist/dev/components/dev-context.d.ts.map +1 -1
  98. package/dist/dev/components/showcase.d.ts +1 -1
  99. package/dist/dev/components/showcase.d.ts.map +1 -1
  100. package/dist/dev/data.d.ts.map +1 -1
  101. package/dist/dev/main.d.ts.map +1 -1
  102. package/dist/dev/sections/buttons.d.ts.map +1 -1
  103. package/dist/dev/sections/feedback.d.ts.map +1 -1
  104. package/dist/dev/sections/overview.d.ts.map +1 -1
  105. package/dist/dev/showcase/accordion.d.ts.map +1 -1
  106. package/dist/dev/showcase/alert-dialog.d.ts.map +1 -1
  107. package/dist/dev/showcase/alert.d.ts.map +1 -1
  108. package/dist/dev/showcase/aspect-ratio.d.ts.map +1 -1
  109. package/dist/dev/showcase/avatar.d.ts.map +1 -1
  110. package/dist/dev/showcase/breadcrumb.d.ts.map +1 -1
  111. package/dist/dev/showcase/button.d.ts.map +1 -1
  112. package/dist/dev/showcase/calendar.d.ts.map +1 -1
  113. package/dist/dev/showcase/card.d.ts.map +1 -1
  114. package/dist/dev/showcase/carousel.d.ts.map +1 -1
  115. package/dist/dev/showcase/chart.d.ts.map +1 -1
  116. package/dist/dev/showcase/checkbox.d.ts.map +1 -1
  117. package/dist/dev/showcase/collapsible.d.ts.map +1 -1
  118. package/dist/dev/showcase/combobox.d.ts.map +1 -1
  119. package/dist/dev/showcase/command.d.ts.map +1 -1
  120. package/dist/dev/showcase/context-menu.d.ts.map +1 -1
  121. package/dist/dev/showcase/dialog.d.ts.map +1 -1
  122. package/dist/dev/showcase/drawer.d.ts.map +1 -1
  123. package/dist/dev/showcase/dropdown-menu.d.ts.map +1 -1
  124. package/dist/dev/showcase/empty.d.ts.map +1 -1
  125. package/dist/dev/showcase/hover-card.d.ts.map +1 -1
  126. package/dist/dev/showcase/input-group.d.ts.map +1 -1
  127. package/dist/dev/showcase/input-otp.d.ts.map +1 -1
  128. package/dist/dev/showcase/input.d.ts.map +1 -1
  129. package/dist/dev/showcase/item.d.ts.map +1 -1
  130. package/dist/dev/showcase/kbd.d.ts.map +1 -1
  131. package/dist/dev/showcase/label.d.ts.map +1 -1
  132. package/dist/dev/showcase/menubar.d.ts.map +1 -1
  133. package/dist/dev/showcase/navigation-menu.d.ts.map +1 -1
  134. package/dist/dev/showcase/overview.d.ts.map +1 -1
  135. package/dist/dev/showcase/pagination.d.ts.map +1 -1
  136. package/dist/dev/showcase/popover.d.ts.map +1 -1
  137. package/dist/dev/showcase/progress.d.ts.map +1 -1
  138. package/dist/dev/showcase/radio-group.d.ts.map +1 -1
  139. package/dist/dev/showcase/resizable.d.ts.map +1 -1
  140. package/dist/dev/showcase/scroll-area.d.ts.map +1 -1
  141. package/dist/dev/showcase/select.d.ts.map +1 -1
  142. package/dist/dev/showcase/separator.d.ts.map +1 -1
  143. package/dist/dev/showcase/sheet.d.ts.map +1 -1
  144. package/dist/dev/showcase/sidebar.d.ts.map +1 -1
  145. package/dist/dev/showcase/skeleton.d.ts.map +1 -1
  146. package/dist/dev/showcase/slider.d.ts.map +1 -1
  147. package/dist/dev/showcase/sonner.d.ts.map +1 -1
  148. package/dist/dev/showcase/spinner.d.ts.map +1 -1
  149. package/dist/dev/showcase/switch.d.ts.map +1 -1
  150. package/dist/dev/showcase/table.d.ts.map +1 -1
  151. package/dist/dev/showcase/tabs.d.ts.map +1 -1
  152. package/dist/dev/showcase/textarea.d.ts.map +1 -1
  153. package/dist/dev/showcase/theme-provider.d.ts.map +1 -1
  154. package/dist/dev/showcase/toast.d.ts.map +1 -1
  155. package/dist/dev/showcase/toggle-group.d.ts.map +1 -1
  156. package/dist/dev/showcase/toggle.d.ts.map +1 -1
  157. package/dist/dev/showcase/tooltip.d.ts.map +1 -1
  158. package/dist/index.cjs.map +1 -1
  159. package/dist/index.js.map +1 -1
  160. package/dist/lib/utils.d.ts.map +1 -1
  161. package/package.json +3 -1
  162. package/scripts/format-codestrings.ts +87 -0
  163. package/scripts/organize-imports.ts +21 -0
  164. package/scripts/regex-format.cjs +67 -0
  165. package/scripts/tmp.tsx +25 -0
  166. package/src/components/macro/accordion-preset.test.tsx +1 -0
  167. package/src/components/macro/accordion-preset.tsx +2 -1
  168. package/src/components/macro/alert-dialog-preset.tsx +44 -43
  169. package/src/components/macro/alert-preset.tsx +7 -3
  170. package/src/components/macro/avatar-preset.tsx +2 -1
  171. package/src/components/macro/breadcrumb-preset.tsx +2 -1
  172. package/src/components/macro/card-preset.tsx +2 -1
  173. package/src/components/macro/carousel-preset.tsx +5 -2
  174. package/src/components/macro/checkbox-preset.test.tsx +1 -0
  175. package/src/components/macro/checkbox-preset.tsx +6 -2
  176. package/src/components/macro/combobox-preset.tsx +6 -3
  177. package/src/components/macro/command-preset.tsx +7 -3
  178. package/src/components/macro/date-picker.tsx +77 -59
  179. package/src/components/macro/dialog-preset.tsx +42 -38
  180. package/src/components/macro/empty-preset.tsx +2 -1
  181. package/src/components/macro/field-preset.test.tsx +1 -0
  182. package/src/components/macro/field-preset.tsx +2 -1
  183. package/src/components/macro/input-otp-preset.tsx +6 -2
  184. package/src/components/macro/input-preset.test.tsx +1 -0
  185. package/src/components/macro/input-preset.tsx +4 -2
  186. package/src/components/macro/pagination-preset.tsx +3 -1
  187. package/src/components/macro/progress-preset.test.tsx +1 -0
  188. package/src/components/macro/progress-preset.tsx +2 -1
  189. package/src/components/macro/radio-group-preset.tsx +4 -1
  190. package/src/components/macro/select-preset.tsx +35 -30
  191. package/src/components/macro/slider-preset.test.tsx +1 -0
  192. package/src/components/macro/slider-preset.tsx +4 -1
  193. package/src/components/macro/switch-preset.test.tsx +1 -0
  194. package/src/components/macro/switch-preset.tsx +4 -1
  195. package/src/components/macro/tabs-preset.test.tsx +1 -0
  196. package/src/components/macro/tabs-preset.tsx +4 -2
  197. package/src/components/macro/textarea-preset.test.tsx +1 -0
  198. package/src/components/macro/textarea-preset.tsx +4 -1
  199. package/src/components/micro/accordion.tsx +3 -2
  200. package/src/components/micro/alert-dialog.tsx +2 -1
  201. package/src/components/micro/alert.tsx +3 -2
  202. package/src/components/micro/aspect-ratio.tsx +2 -1
  203. package/src/components/micro/avatar.tsx +2 -1
  204. package/src/components/micro/badge.tsx +3 -3
  205. package/src/components/micro/breadcrumb.tsx +3 -2
  206. package/src/components/micro/button.test.tsx +1 -0
  207. package/src/components/micro/button.tsx +3 -3
  208. package/src/components/micro/calendar.tsx +10 -9
  209. package/src/components/micro/carousel.tsx +3 -2
  210. package/src/components/micro/chart.tsx +1 -0
  211. package/src/components/micro/checkbox.tsx +2 -2
  212. package/src/components/micro/collapsible.tsx +4 -2
  213. package/src/components/micro/combobox.tsx +41 -29
  214. package/src/components/micro/command.tsx +23 -16
  215. package/src/components/micro/context-menu.tsx +3 -2
  216. package/src/components/micro/dialog.tsx +2 -1
  217. package/src/components/micro/drawer.tsx +2 -1
  218. package/src/components/micro/dropdown-menu.tsx +3 -2
  219. package/src/components/micro/empty.tsx +2 -1
  220. package/src/components/micro/field.tsx +4 -3
  221. package/src/components/micro/hover-card.tsx +20 -19
  222. package/src/components/micro/input-group.tsx +2 -1
  223. package/src/components/micro/input-otp.tsx +3 -2
  224. package/src/components/micro/input.tsx +3 -2
  225. package/src/components/micro/item.tsx +1 -0
  226. package/src/components/micro/label.tsx +2 -1
  227. package/src/components/micro/menubar.tsx +2 -1
  228. package/src/components/micro/navigation-menu.tsx +18 -17
  229. package/src/components/micro/pagination.tsx +2 -1
  230. package/src/components/micro/popover.tsx +2 -1
  231. package/src/components/micro/progress.tsx +2 -1
  232. package/src/components/micro/radio-group.tsx +3 -3
  233. package/src/components/micro/select.tsx +5 -4
  234. package/src/components/micro/sheet.tsx +2 -1
  235. package/src/components/micro/sidebar.tsx +4 -1
  236. package/src/components/micro/skeleton.tsx +2 -1
  237. package/src/components/micro/slider.tsx +4 -1
  238. package/src/components/micro/sonner.tsx +2 -1
  239. package/src/components/micro/spinner.tsx +1 -2
  240. package/src/components/micro/switch.tsx +2 -2
  241. package/src/components/micro/table.tsx +2 -1
  242. package/src/components/micro/tabs.tsx +4 -3
  243. package/src/components/micro/textarea.tsx +2 -1
  244. package/src/components/micro/toggle-group.tsx +1 -0
  245. package/src/components/micro/toggle.tsx +1 -3
  246. package/src/components/micro/tooltip.tsx +9 -3
  247. package/src/dev/App.tsx +66 -41
  248. package/src/dev/components/code-highlighter.tsx +2 -1
  249. package/src/dev/components/dev-context.tsx +1 -0
  250. package/src/dev/components/showcase.tsx +13 -14
  251. package/src/dev/data.ts +206 -52
  252. package/src/dev/main.tsx +4 -4
  253. package/src/dev/sections/buttons.tsx +14 -12
  254. package/src/dev/sections/feedback.tsx +7 -2
  255. package/src/dev/sections/forms.tsx +11 -11
  256. package/src/dev/sections/overview.tsx +2 -1
  257. package/src/dev/showcase/accordion.tsx +399 -314
  258. package/src/dev/showcase/alert-dialog.tsx +387 -384
  259. package/src/dev/showcase/alert.tsx +271 -258
  260. package/src/dev/showcase/aspect-ratio.tsx +102 -105
  261. package/src/dev/showcase/avatar.tsx +216 -145
  262. package/src/dev/showcase/badge.tsx +78 -50
  263. package/src/dev/showcase/breadcrumb.tsx +88 -85
  264. package/src/dev/showcase/button.tsx +72 -96
  265. package/src/dev/showcase/calendar.tsx +41 -39
  266. package/src/dev/showcase/card.tsx +170 -148
  267. package/src/dev/showcase/carousel.tsx +239 -77
  268. package/src/dev/showcase/chart.tsx +5 -4
  269. package/src/dev/showcase/checkbox.tsx +206 -140
  270. package/src/dev/showcase/collapsible.tsx +108 -84
  271. package/src/dev/showcase/combobox.tsx +272 -199
  272. package/src/dev/showcase/command.tsx +31 -28
  273. package/src/dev/showcase/context-menu.tsx +94 -77
  274. package/src/dev/showcase/dialog.tsx +445 -424
  275. package/src/dev/showcase/drawer.tsx +142 -135
  276. package/src/dev/showcase/dropdown-menu.tsx +165 -161
  277. package/src/dev/showcase/empty.tsx +173 -158
  278. package/src/dev/showcase/hover-card.tsx +92 -52
  279. package/src/dev/showcase/input-group.tsx +193 -160
  280. package/src/dev/showcase/input-otp.tsx +109 -99
  281. package/src/dev/showcase/input.tsx +78 -42
  282. package/src/dev/showcase/item.tsx +101 -98
  283. package/src/dev/showcase/kbd.tsx +78 -62
  284. package/src/dev/showcase/label.tsx +16 -23
  285. package/src/dev/showcase/menubar.tsx +274 -251
  286. package/src/dev/showcase/navigation-menu.tsx +175 -170
  287. package/src/dev/showcase/overview.tsx +164 -148
  288. package/src/dev/showcase/pagination.tsx +101 -69
  289. package/src/dev/showcase/popover.tsx +113 -86
  290. package/src/dev/showcase/progress.tsx +99 -69
  291. package/src/dev/showcase/radio-group.tsx +217 -134
  292. package/src/dev/showcase/resizable.tsx +65 -55
  293. package/src/dev/showcase/scroll-area.tsx +32 -22
  294. package/src/dev/showcase/select.tsx +192 -136
  295. package/src/dev/showcase/separator.tsx +28 -24
  296. package/src/dev/showcase/sheet.tsx +182 -134
  297. package/src/dev/showcase/sidebar.tsx +9 -5
  298. package/src/dev/showcase/skeleton.tsx +54 -59
  299. package/src/dev/showcase/slider.tsx +158 -129
  300. package/src/dev/showcase/sonner.tsx +3 -5
  301. package/src/dev/showcase/spinner.tsx +22 -18
  302. package/src/dev/showcase/switch.tsx +207 -110
  303. package/src/dev/showcase/table.tsx +44 -32
  304. package/src/dev/showcase/tabs.tsx +272 -267
  305. package/src/dev/showcase/textarea.tsx +162 -116
  306. package/src/dev/showcase/theme-provider.tsx +596 -534
  307. package/src/dev/showcase/toast.tsx +37 -38
  308. package/src/dev/showcase/toggle-group.tsx +87 -39
  309. package/src/dev/showcase/toggle.tsx +36 -27
  310. package/src/dev/showcase/tooltip.tsx +154 -119
  311. package/src/lib/utils.test.ts +1 -0
  312. package/src/lib/utils.ts +1 -1
  313. package/src/styles/gladvn.css +1 -1
@@ -1,9 +1,13 @@
1
- import { useDevContext } from "../../dev/components/dev-context";
2
1
  import { zodResolver } from "@hookform/resolvers/zod";
3
- import { useState } from "react";
4
2
  import { Controller, useForm } from "react-hook-form";
5
3
  import * as z from "zod";
6
4
 
5
+ import { RadioGroupPreset } from "../../components/macro/radio-group-preset";
6
+ import { Button } from "../../components/micro/button";
7
+ import { Field, FieldError, FieldLabel } from "../../components/micro/field";
8
+ import { Label } from "../../components/micro/label";
9
+ import { RadioGroup, RadioGroupItem } from "../../components/micro/radio-group";
10
+ import { useDevContext } from "../../dev/components/dev-context";
7
11
  import {
8
12
  DocsCode,
9
13
  DocsH3,
@@ -15,12 +19,6 @@ import {
15
19
  } from "../../dev/components/showcase";
16
20
  import { type Size } from "../../lib/types";
17
21
 
18
- import { RadioGroupPreset } from "../../components/macro/radio-group-preset";
19
- import { Button } from "../../components/micro/button";
20
- import { Field, FieldError, FieldLabel } from "../../components/micro/field";
21
- import { Label } from "../../components/micro/label";
22
- import { RadioGroup, RadioGroupItem } from "../../components/micro/radio-group";
23
-
24
22
  // ──────────────────────────────────────────────────────────
25
23
  // RHF Form Demo (Macro)
26
24
  // ──────────────────────────────────────────────────────────
@@ -108,7 +106,8 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
108
106
  <ExampleSection
109
107
  label="Tiêu chuẩn"
110
108
  description="Nhóm radio cơ bản với mảng options."
111
- codeString={`<RadioGroupPreset className="w-full"
109
+ codeString={`<RadioGroupPreset
110
+ className="w-full"
112
111
  label="Sở thích"
113
112
  description="Chọn một ngôn ngữ lập trình bạn yêu thích nhất."
114
113
  options={[
@@ -117,8 +116,7 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
117
116
  { value: "rust", label: "Rust" },
118
117
  ]}
119
118
  defaultValue="ts"
120
- />
121
- `}
119
+ />`}
122
120
  >
123
121
  <RadioGroupPreset
124
122
  className="w-full"
@@ -138,16 +136,15 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
138
136
  label="Trạng thái Lỗi (Error)"
139
137
  description="Báo lỗi khi form submit mà user chưa chọn."
140
138
  codeString={`<div className="w-full flex flex-col gap-6">
141
- <RadioGroupPreset
142
- label="Gói dịch vụ (Lỗi)"
143
- options={[
144
- { value: "free", label: "Miễn phí" },
145
- { value: "pro", label: "Trả phí" }
146
- ]}
147
- errorMessage="Vui lòng chọn một gói dịch vụ để tiếp tục."
148
- />
149
- </div>
150
- `}
139
+ <RadioGroupPreset
140
+ label="Gói dịch vụ (Lỗi)"
141
+ options={[
142
+ { value: "free", label: "Miễn phí" },
143
+ { value: "pro", label: "Trả phí" },
144
+ ]}
145
+ errorMessage="Vui lòng chọn một gói dịch vụ để tiếp tục."
146
+ />
147
+ </div>`}
151
148
  >
152
149
  <div className="w-full flex flex-col gap-6">
153
150
  <RadioGroupPreset
@@ -167,17 +164,21 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
167
164
  <ExampleSection
168
165
  label="Mô tả cho từng Option"
169
166
  description="Truyền description vào mảng options để chú thích chi tiết."
170
- codeString={`<RadioGroupPreset className="w-full"
167
+ codeString={`<RadioGroupPreset
168
+ className="w-full"
171
169
  label="Giao diện (Theme)"
172
170
  description="Chế độ Mặc định hệ thống sẽ tự động đồng bộ theo OS."
173
171
  options={[
174
172
  { value: "light", label: "Sáng (Light)" },
175
173
  { value: "dark", label: "Tối (Dark)" },
176
- { value: "system", label: "Theo hệ thống", description: "Khuyên dùng để tiết kiệm pin" },
174
+ {
175
+ value: "system",
176
+ label: "Theo hệ thống",
177
+ description: "Khuyên dùng để tiết kiệm pin",
178
+ },
177
179
  ]}
178
180
  defaultValue="system"
179
- />
180
- `}
181
+ />`}
181
182
  >
182
183
  <RadioGroupPreset
183
184
  className="w-full"
@@ -200,7 +201,8 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
200
201
  <ExampleSection
201
202
  label="Khóa / Bất hoạt (Disabled)"
202
203
  description="Người dùng không thể tương tác với form."
203
- codeString={`<RadioGroupPreset className="w-full"
204
+ codeString={`<RadioGroupPreset
205
+ className="w-full"
204
206
  label="Phiên bản (Disabled)"
205
207
  description="Bạn không thể hạ cấp phiên bản tại thời điểm này."
206
208
  options={[
@@ -209,8 +211,7 @@ function RadioGroupMacroShowcase({ globalSize }: { globalSize: Size }) {
209
211
  ]}
210
212
  defaultValue="v2"
211
213
  disabled
212
- />
213
- `}
214
+ />`}
214
215
  >
215
216
  <RadioGroupPreset
216
217
  className="w-full"
@@ -250,17 +251,29 @@ function RadioGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
250
251
  <ExampleSection
251
252
  label="Cơ bản (Primitive)"
252
253
  description="Ghép nối thủ công RadioGroupItem và Label."
253
- codeString={`<RadioGroup defaultValue="comfortable" className="flex flex-col gap-2 w-full">
254
- <div className="flex items-center gap-3">
255
- <RadioGroupItem value="default" id="rg-m-1" />
256
- <Label htmlFor="rg-m-1" className="cursor-pointer font-normal">Mặc định</Label>
257
- </div>
258
- <div className="flex items-center gap-3">
259
- <RadioGroupItem value="comfortable" id="rg-m-2" />
260
- <Label htmlFor="rg-m-2" className="cursor-pointer font-normal">Thoải mái</Label>
261
- </div>
262
- </RadioGroup>
263
- `}
254
+ codeString={`<RadioGroup
255
+ defaultValue="comfortable"
256
+ className="flex flex-col gap-2 w-full"
257
+ >
258
+ <div className="flex items-center gap-3">
259
+ <RadioGroupItem value="default" id="rg-m-1" />
260
+ <Label
261
+ htmlFor="rg-m-1"
262
+ className="cursor-pointer font-normal"
263
+ >
264
+ Mặc định
265
+ </Label>
266
+ </div>
267
+ <div className="flex items-center gap-3">
268
+ <RadioGroupItem value="comfortable" id="rg-m-2" />
269
+ <Label
270
+ htmlFor="rg-m-2"
271
+ className="cursor-pointer font-normal"
272
+ >
273
+ Thoải mái
274
+ </Label>
275
+ </div>
276
+ </RadioGroup>`}
264
277
  >
265
278
  <RadioGroup
266
279
  defaultValue="comfortable"
@@ -289,23 +302,42 @@ function RadioGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
289
302
  label="Bố cục Ngang (Horizontal)"
290
303
  description="Hiển thị các tuỳ chọn trên một hàng ngang."
291
304
  codeString={`<div className="space-y-3 w-full">
292
- <Label className="block text-muted-foreground">Kích thước</Label>
293
- <RadioGroup defaultValue="m" className="flex items-center gap-6">
294
- <div className="flex items-center gap-2">
295
- <RadioGroupItem value="s" id="rg-s" />
296
- <Label htmlFor="rg-s" className="cursor-pointer font-normal">S</Label>
297
- </div>
298
- <div className="flex items-center gap-2">
299
- <RadioGroupItem value="m" id="rg-m" />
300
- <Label htmlFor="rg-m" className="cursor-pointer font-normal">M</Label>
301
- </div>
302
- <div className="flex items-center gap-2">
303
- <RadioGroupItem value="l" id="rg-l" />
304
- <Label htmlFor="rg-l" className="cursor-pointer font-normal">L</Label>
305
- </div>
306
- </RadioGroup>
307
- </div>
308
- `}
305
+ <Label className="block text-muted-foreground">
306
+ Kích thước
307
+ </Label>
308
+ <RadioGroup
309
+ defaultValue="m"
310
+ className="flex items-center gap-6"
311
+ >
312
+ <div className="flex items-center gap-2">
313
+ <RadioGroupItem value="s" id="rg-s" />
314
+ <Label
315
+ htmlFor="rg-s"
316
+ className="cursor-pointer font-normal"
317
+ >
318
+ S
319
+ </Label>
320
+ </div>
321
+ <div className="flex items-center gap-2">
322
+ <RadioGroupItem value="m" id="rg-m" />
323
+ <Label
324
+ htmlFor="rg-m"
325
+ className="cursor-pointer font-normal"
326
+ >
327
+ M
328
+ </Label>
329
+ </div>
330
+ <div className="flex items-center gap-2">
331
+ <RadioGroupItem value="l" id="rg-l" />
332
+ <Label
333
+ htmlFor="rg-l"
334
+ className="cursor-pointer font-normal"
335
+ >
336
+ L
337
+ </Label>
338
+ </div>
339
+ </RadioGroup>
340
+ </div>`}
309
341
  >
310
342
  <div className="space-y-3 w-full">
311
343
  <Label className="block text-muted-foreground">Kích thước</Label>
@@ -338,38 +370,40 @@ function RadioGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
338
370
  label="Ghép nối Field thủ công"
339
371
  description="Tạo layout RadioGroup phức tạp với Field."
340
372
  codeString={`<Field data-invalid={true} className="w-full gap-4">
341
- <FieldLabel>Gói cước của bạn</FieldLabel>
342
- <RadioGroup defaultValue="monthly" className="flex flex-col gap-2">
343
- <Field orientation="horizontal">
344
- <RadioGroupItem
345
- value="monthly"
346
- id="plan-1"
347
- aria-invalid={true}
348
- />
349
- <FieldLabel
350
- htmlFor="plan-1"
351
- className="font-normal cursor-pointer"
352
- >
353
- Thanh toán tháng (\$10/mo)
354
- </FieldLabel>
355
- </Field>
356
- <Field orientation="horizontal">
357
- <RadioGroupItem
358
- value="yearly"
359
- id="plan-2"
360
- aria-invalid={true}
361
- />
362
- <FieldLabel
363
- htmlFor="plan-2"
364
- className="font-normal cursor-pointer"
365
- >
366
- Thanh toán năm (\$100/yr)
367
- </FieldLabel>
368
- </Field>
369
- </RadioGroup>
370
- <FieldError>Thẻ của bạn đã bị từ chối.</FieldError>
371
- </Field>
372
- `}
373
+ <FieldLabel>Gói cước của bạn</FieldLabel>
374
+ <RadioGroup
375
+ defaultValue="monthly"
376
+ className="flex flex-col gap-2"
377
+ >
378
+ <Field orientation="horizontal">
379
+ <RadioGroupItem
380
+ value="monthly"
381
+ id="plan-1"
382
+ aria-invalid={true}
383
+ />
384
+ <FieldLabel
385
+ htmlFor="plan-1"
386
+ className="font-normal cursor-pointer"
387
+ >
388
+ Thanh toán tháng ($10/mo)
389
+ </FieldLabel>
390
+ </Field>
391
+ <Field orientation="horizontal">
392
+ <RadioGroupItem
393
+ value="yearly"
394
+ id="plan-2"
395
+ aria-invalid={true}
396
+ />
397
+ <FieldLabel
398
+ htmlFor="plan-2"
399
+ className="font-normal cursor-pointer"
400
+ >
401
+ Thanh toán năm ($100/yr)
402
+ </FieldLabel>
403
+ </Field>
404
+ </RadioGroup>
405
+ <FieldError>Thẻ của bạn đã bị từ chối.</FieldError>
406
+ </Field>`}
373
407
  >
374
408
  <Field data-invalid={true} className="w-full gap-4">
375
409
  <FieldLabel>Gói cước của bạn</FieldLabel>
@@ -410,25 +444,35 @@ function RadioGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
410
444
  <ExampleSection
411
445
  label="Card Layout (UI Nâng cao)"
412
446
  description="Radio nhưng thiết kế dưới dạng Card để bấm."
413
- codeString={`<RadioGroup defaultValue="card-2" className="grid grid-cols-2 gap-4 w-full">
414
- <Label
415
- htmlFor="card-1"
416
- className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground [&:has([data-state=checked])]:border-primary cursor-pointer gap-4"
447
+ codeString={`<RadioGroup
448
+ defaultValue="card-2"
449
+ className="grid grid-cols-2 gap-4 w-full"
417
450
  >
418
- <RadioGroupItem value="card-1" id="card-1" className="sr-only" />
419
- <div className="text-xl">☀️</div>
420
- <span>Sáng</span>
421
- </Label>
422
- <Label
423
- htmlFor="card-2"
424
- className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground [&:has([data-state=checked])]:border-primary cursor-pointer gap-4"
425
- >
426
- <RadioGroupItem value="card-2" id="card-2" className="sr-only" />
427
- <div className="text-xl">🌙</div>
428
- <span>Tối</span>
429
- </Label>
430
- </RadioGroup>
431
- `}
451
+ <Label
452
+ htmlFor="card-1"
453
+ className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground [&:has([data-state=checked])]:border-primary cursor-pointer gap-4"
454
+ >
455
+ <RadioGroupItem
456
+ value="card-1"
457
+ id="card-1"
458
+ className="sr-only"
459
+ />
460
+ <div className="text-xl">☀️</div>
461
+ <span>Sáng</span>
462
+ </Label>
463
+ <Label
464
+ htmlFor="card-2"
465
+ className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground [&:has([data-state=checked])]:border-primary cursor-pointer gap-4"
466
+ >
467
+ <RadioGroupItem
468
+ value="card-2"
469
+ id="card-2"
470
+ className="sr-only"
471
+ />
472
+ <div className="text-xl">🌙</div>
473
+ <span>Tối</span>
474
+ </Label>
475
+ </RadioGroup>`}
432
476
  >
433
477
  <RadioGroup
434
478
  defaultValue="card-2"
@@ -459,39 +503,78 @@ function RadioGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
459
503
  description="So sánh nhanh khi nào dùng Micro và Macro."
460
504
  fullWidth
461
505
  codeString={`<div className="grid grid-cols-1 gap-6 md:grid-cols-2">
462
- {/* Story 1: Macro wins */}
463
- <div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
464
- <div className="flex items-start gap-3">
465
- <span className="mt-0.5 shrink-0 rounded-full bg-green-500/10 p-1.5 text-green-600">
466
- <svg xmlns="http://www.w3.org/2000/svg" className="size-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
467
- </span>
468
- <div>
469
- <p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Story 1 · Dùng Macro</p>
470
- <h3 className="mt-0.5 text-sm font-semibold text-foreground">Câu hỏi khảo sát</h3>
506
+ {/* Story 1: Macro wins */}
507
+ <div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
508
+ <div className="flex items-start gap-3">
509
+ <span className="mt-0.5 shrink-0 rounded-full bg-green-500/10 p-1.5 text-green-600">
510
+ <svg
511
+ xmlns="http://www.w3.org/2000/svg"
512
+ className="size-4"
513
+ viewBox="0 0 24 24"
514
+ fill="none"
515
+ stroke="currentColor"
516
+ strokeWidth="2"
517
+ strokeLinecap="round"
518
+ strokeLinejoin="round"
519
+ aria-hidden="true"
520
+ >
521
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" />
522
+ </svg>
523
+ </span>
524
+ <div>
525
+ <p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
526
+ Story 1 · Dùng Macro
527
+ </p>
528
+ <h3 className="mt-0.5 text-sm font-semibold text-foreground">
529
+ Câu hỏi khảo sát
530
+ </h3>
531
+ </div>
471
532
  </div>
533
+ <p className="text-xs text-muted-foreground leading-relaxed">
534
+ Bạn cần làm một danh sách dài các tuỳ chọn dạng chữ
535
+ từ trên xuống dưới. Macro{" "}
536
+ <DocsCode>RadioGroupPreset</DocsCode> sinh ra để xử
537
+ lý việc này nhanh gọn qua thuộc tính{" "}
538
+ <DocsCode>options</DocsCode>.
539
+ </p>
472
540
  </div>
473
- <p className="text-xs text-muted-foreground leading-relaxed">
474
- Bạn cần làm một danh sách dài các tuỳ chọn dạng chữ từ trên xuống dưới. Macro <DocsCode>RadioGroupPreset</DocsCode> sinh ra để xử lý việc này nhanh gọn qua thuộc tính <DocsCode>options</DocsCode>.
475
- </p>
476
- </div>
477
541
 
478
- {/* Story 2: Micro wins */}
479
- <div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
480
- <div className="flex items-start gap-3">
481
- <span className="mt-0.5 shrink-0 rounded-full bg-blue-500/10 p-1.5 text-blue-600">
482
- <svg xmlns="http://www.w3.org/2000/svg" className="size-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/></svg>
483
- </span>
484
- <div>
485
- <p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">Story 2 · Dùng Micro</p>
486
- <h3 className="mt-0.5 text-sm font-semibold text-foreground">Radio Ẩn (Hidden Radio Card)</h3>
542
+ {/* Story 2: Micro wins */}
543
+ <div className="rounded-xl border border-border bg-card p-5 flex flex-col gap-4">
544
+ <div className="flex items-start gap-3">
545
+ <span className="mt-0.5 shrink-0 rounded-full bg-blue-500/10 p-1.5 text-blue-600">
546
+ <svg
547
+ xmlns="http://www.w3.org/2000/svg"
548
+ className="size-4"
549
+ viewBox="0 0 24 24"
550
+ fill="none"
551
+ stroke="currentColor"
552
+ strokeWidth="2"
553
+ strokeLinecap="round"
554
+ strokeLinejoin="round"
555
+ aria-hidden="true"
556
+ >
557
+ <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z" />
558
+ </svg>
559
+ </span>
560
+ <div>
561
+ <p className="text-xs font-semibold uppercase tracking-wider text-muted-foreground">
562
+ Story 2 · Dùng Micro
563
+ </p>
564
+ <h3 className="mt-0.5 text-sm font-semibold text-foreground">
565
+ Radio Ẩn (Hidden Radio Card)
566
+ </h3>
567
+ </div>
487
568
  </div>
569
+ <p className="text-xs text-muted-foreground leading-relaxed">
570
+ Bạn muốn người dùng click vào một khối Card lớn
571
+ (chứa ảnh sản phẩm, mô tả) thay vì click vào nút
572
+ tròn. Bạn sẽ dùng Micro để ẩn đi{" "}
573
+ <DocsCode>RadioGroupItem</DocsCode> và style{" "}
574
+ <DocsCode>Label</DocsCode> thành 1 cái thẻ Card.
575
+ </p>
488
576
  </div>
489
- <p className="text-xs text-muted-foreground leading-relaxed">
490
- Bạn muốn người dùng click vào một khối Card lớn (chứa ảnh sản phẩm, mô tả) thay vì click vào nút tròn. Bạn sẽ dùng Micro để ẩn đi <DocsCode>RadioGroupItem</DocsCode> và style <DocsCode>Label</DocsCode> thành 1 cái thẻ Card.
491
- </p>
492
- </div>
493
- </div>
494
- `}
577
+ </div>`}
495
578
  >
496
579
  <div className="grid grid-cols-1 gap-6 md:grid-cols-2">
497
580
  {/* Story 1: Macro wins */}
@@ -23,21 +23,25 @@ function ResizableMicroShowcase() {
23
23
  label="Horizontal Split"
24
24
  description="Kéo tay cầm để thay đổi kích thước bảng theo chiều ngang."
25
25
  codeString={`<ResizablePanelGroup
26
- orientation="horizontal"
27
- className="max-w-md rounded-xl border border-border bg-card"
28
- >
29
- <ResizablePanel defaultSize={50}>
30
- <div className="flex h-[200px] items-center justify-center p-6">
31
- <span className="font-semibold text-sm">Sidebar</span>
32
- </div>
33
- </ResizablePanel>
34
- <ResizableHandle withHandle />
35
- <ResizablePanel defaultSize={50}>
36
- <div className="flex h-full items-center justify-center p-6">
37
- <span className="font-semibold text-sm">Content</span>
38
- </div>
39
- </ResizablePanel>
40
- </ResizablePanelGroup>`}
26
+ orientation="horizontal"
27
+ className="max-w-md rounded-xl border border-border bg-card"
28
+ >
29
+ <ResizablePanel defaultSize={50}>
30
+ <div className="flex h-[200px] items-center justify-center p-6">
31
+ <span className="font-semibold text-sm">
32
+ Sidebar
33
+ </span>
34
+ </div>
35
+ </ResizablePanel>
36
+ <ResizableHandle withHandle />
37
+ <ResizablePanel defaultSize={50}>
38
+ <div className="flex h-full items-center justify-center p-6">
39
+ <span className="font-semibold text-sm">
40
+ Content
41
+ </span>
42
+ </div>
43
+ </ResizablePanel>
44
+ </ResizablePanelGroup>`}
41
45
  >
42
46
  <ResizablePanelGroup
43
47
  orientation="horizontal"
@@ -62,21 +66,23 @@ function ResizableMicroShowcase() {
62
66
  label="Vertical Split"
63
67
  description='orientation="vertical" chia bảng theo chiều dọc.'
64
68
  codeString={`<ResizablePanelGroup
65
- orientation="vertical"
66
- className="max-w-md rounded-xl border border-border bg-card"
67
- >
68
- <ResizablePanel defaultSize={50}>
69
- <div className="flex h-[120px] items-center justify-center p-6">
70
- <span className="font-semibold text-sm">Top</span>
71
- </div>
72
- </ResizablePanel>
73
- <ResizableHandle withHandle />
74
- <ResizablePanel defaultSize={50}>
75
- <div className="flex h-[120px] items-center justify-center p-6">
76
- <span className="font-semibold text-sm">Bottom</span>
77
- </div>
78
- </ResizablePanel>
79
- </ResizablePanelGroup>`}
69
+ orientation="vertical"
70
+ className="max-w-md rounded-xl border border-border bg-card"
71
+ >
72
+ <ResizablePanel defaultSize={50}>
73
+ <div className="flex h-[120px] items-center justify-center p-6">
74
+ <span className="font-semibold text-sm">Top</span>
75
+ </div>
76
+ </ResizablePanel>
77
+ <ResizableHandle withHandle />
78
+ <ResizablePanel defaultSize={50}>
79
+ <div className="flex h-[120px] items-center justify-center p-6">
80
+ <span className="font-semibold text-sm">
81
+ Bottom
82
+ </span>
83
+ </div>
84
+ </ResizablePanel>
85
+ </ResizablePanelGroup>`}
80
86
  >
81
87
  <ResizablePanelGroup
82
88
  orientation="vertical"
@@ -150,31 +156,35 @@ function ResizableMicroShowcase() {
150
156
  label="Nested Layout"
151
157
  description="Bố cục phức tạp với các nhóm có thể thay đổi kích thước lồng nhau."
152
158
  codeString={`<ResizablePanelGroup
153
- orientation="horizontal"
154
- className="max-w-md rounded-xl border border-border bg-card"
155
- >
156
- <ResizablePanel defaultSize={25} minSize={15}>
157
- <div className="flex h-[250px] items-center justify-center p-6">
158
- <span className="font-semibold text-sm">Nav</span>
159
- </div>
160
- </ResizablePanel>
161
- <ResizableHandle />
162
- <ResizablePanel defaultSize={75}>
163
- <ResizablePanelGroup orientation="vertical">
164
- <ResizablePanel defaultSize={25} minSize={20}>
165
- <div className="flex h-full items-center justify-center p-6">
166
- <span className="font-semibold text-sm">Top Bar</span>
167
- </div>
168
- </ResizablePanel>
169
- <ResizableHandle />
170
- <ResizablePanel defaultSize={75}>
171
- <div className="flex h-full items-center justify-center p-6">
172
- <span className="font-semibold text-sm">Main Content</span>
173
- </div>
174
- </ResizablePanel>
175
- </ResizablePanelGroup>
176
- </ResizablePanel>
177
- </ResizablePanelGroup>`}
159
+ orientation="horizontal"
160
+ className="max-w-md rounded-xl border border-border bg-card"
161
+ >
162
+ <ResizablePanel defaultSize={25} minSize={15}>
163
+ <div className="flex h-[250px] items-center justify-center p-6">
164
+ <span className="font-semibold text-sm">Nav</span>
165
+ </div>
166
+ </ResizablePanel>
167
+ <ResizableHandle />
168
+ <ResizablePanel defaultSize={75}>
169
+ <ResizablePanelGroup orientation="vertical">
170
+ <ResizablePanel defaultSize={25} minSize={20}>
171
+ <div className="flex h-full items-center justify-center p-6">
172
+ <span className="font-semibold text-sm">
173
+ Top Bar
174
+ </span>
175
+ </div>
176
+ </ResizablePanel>
177
+ <ResizableHandle />
178
+ <ResizablePanel defaultSize={75}>
179
+ <div className="flex h-full items-center justify-center p-6">
180
+ <span className="font-semibold text-sm">
181
+ Main Content
182
+ </span>
183
+ </div>
184
+ </ResizablePanel>
185
+ </ResizablePanelGroup>
186
+ </ResizablePanel>
187
+ </ResizablePanelGroup>`}
178
188
  >
179
189
  <ResizablePanelGroup
180
190
  orientation="horizontal"