gladvn 0.2.17 → 0.2.19

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 +0 -1
@@ -1,3 +1,12 @@
1
+ import { BellIcon, CreditCardIcon, UserIcon } from "lucide-react";
2
+
3
+ import { TabsPreset } from "../../components/macro/tabs-preset";
4
+ import {
5
+ Tabs,
6
+ TabsContent,
7
+ TabsList,
8
+ TabsTrigger,
9
+ } from "../../components/micro/tabs";
1
10
  import {
2
11
  DocsCode,
3
12
  DocsH3,
@@ -8,15 +17,6 @@ import {
8
17
  ShowcaseDocs,
9
18
  } from "../../dev/components/showcase";
10
19
 
11
- import { TabsPreset } from "../../components/macro/tabs-preset";
12
- import {
13
- Tabs,
14
- TabsContent,
15
- TabsList,
16
- TabsTrigger,
17
- } from "../../components/micro/tabs";
18
- import { BellIcon, CreditCardIcon, UserIcon } from "lucide-react";
19
-
20
20
  // ──────────────────────────────────────────────────────────
21
21
  // SECTION 1: Macro Content
22
22
  // ──────────────────────────────────────────────────────────
@@ -28,31 +28,35 @@ function TabsMacroShowcase() {
28
28
  label="Tiêu chuẩn (Standard)"
29
29
  description="Tabs cơ bản truyền qua mảng items."
30
30
  codeString={`<TabsPreset
31
- defaultValue="account"
32
- className="w-full"
33
- items={[
34
- {
35
- value: "account",
36
- title: "Account",
37
- content: (
38
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
39
- <h4 className="font-medium">Account</h4>
40
- <p className="text-sm text-muted-foreground">Account settings here.</p>
41
- </div>
42
- ),
43
- },
44
- {
45
- value: "password",
46
- title: "Password",
47
- content: (
48
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
49
- <h4 className="font-medium">Password</h4>
50
- <p className="text-sm text-muted-foreground">Change your password here.</p>
51
- </div>
52
- ),
53
- },
54
- ]}
55
- />`}
31
+ defaultValue="account"
32
+ className="w-full"
33
+ items={[
34
+ {
35
+ value: "account",
36
+ title: "Account",
37
+ content: (
38
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
39
+ <h4 className="font-medium">Account</h4>
40
+ <p className="text-sm text-muted-foreground">
41
+ Account settings here.
42
+ </p>
43
+ </div>
44
+ ),
45
+ },
46
+ {
47
+ value: "password",
48
+ title: "Password",
49
+ content: (
50
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
51
+ <h4 className="font-medium">Password</h4>
52
+ <p className="text-sm text-muted-foreground">
53
+ Change your password here.
54
+ </p>
55
+ </div>
56
+ ),
57
+ },
58
+ ]}
59
+ />`}
56
60
  >
57
61
  <TabsPreset
58
62
  defaultValue="account"
@@ -90,27 +94,29 @@ function TabsMacroShowcase() {
90
94
  label="Tab bị vô hiệu hóa (Disabled Tab)"
91
95
  description="Tab không thể tương tác do thuộc tính disabled."
92
96
  codeString={`<TabsPreset
93
- defaultValue="general"
94
- className="w-full"
95
- items={[
96
- {
97
- value: "general",
98
- title: "General",
99
- content: (
100
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
101
- <h4 className="font-medium">General</h4>
102
- <p className="text-sm text-muted-foreground">General settings.</p>
103
- </div>
104
- ),
105
- },
106
- {
107
- value: "advanced",
108
- title: "Advanced (Pro)",
109
- content: <></>,
110
- disabled: true,
111
- },
112
- ]}
113
- />`}
97
+ defaultValue="general"
98
+ className="w-full"
99
+ items={[
100
+ {
101
+ value: "general",
102
+ title: "General",
103
+ content: (
104
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
105
+ <h4 className="font-medium">General</h4>
106
+ <p className="text-sm text-muted-foreground">
107
+ General settings.
108
+ </p>
109
+ </div>
110
+ ),
111
+ },
112
+ {
113
+ value: "advanced",
114
+ title: "Advanced (Pro)",
115
+ content: <></>,
116
+ disabled: true,
117
+ },
118
+ ]}
119
+ />`}
114
120
  >
115
121
  <TabsPreset
116
122
  defaultValue="general"
@@ -144,52 +150,52 @@ function TabsMacroShowcase() {
144
150
  description="Sử dụng prop variant='line' để hiển thị tabs kiểu gạch chân (phong cách thanh điều hướng)."
145
151
  fullWidth
146
152
  codeString={`<div className="max-w-lg">
147
- <TabsPreset
148
- defaultValue="overview"
149
- variant="line"
150
- listClassName="w-full justify-start border-b border-b-border rounded-none px-0"
151
- className="w-full"
152
- items={[
153
- {
154
- value: "overview",
155
- title: "Overview",
156
- content: (
157
- <div className="pt-4">
158
- <h4 className="font-medium">Overview</h4>
159
- <p className="text-sm text-muted-foreground">
160
- High-level project statistics and activity feed.
161
- </p>
162
- </div>
163
- ),
164
- },
165
- {
166
- value: "analytics",
167
- title: "Analytics",
168
- content: (
169
- <div className="pt-4">
170
- <h4 className="font-medium">Analytics</h4>
171
- <p className="text-sm text-muted-foreground">
172
- Charts and data visualizations.
173
- </p>
174
- </div>
175
- ),
176
- },
177
- {
178
- value: "reports",
179
- title: "Reports",
180
- content: (
181
- <div className="pt-4">
182
- <h4 className="font-medium">Reports</h4>
183
- <p className="text-sm text-muted-foreground">
184
- Generated reports and exports.
185
- </p>
186
- </div>
187
- ),
188
- },
189
- ]}
190
- />
191
- </div>
192
- `}
153
+ <TabsPreset
154
+ defaultValue="overview"
155
+ variant="line"
156
+ listClassName="w-full justify-start border-b border-b-border rounded-none px-0"
157
+ className="w-full"
158
+ items={[
159
+ {
160
+ value: "overview",
161
+ title: "Overview",
162
+ content: (
163
+ <div className="pt-4">
164
+ <h4 className="font-medium">Overview</h4>
165
+ <p className="text-sm text-muted-foreground">
166
+ High-level project statistics and activity
167
+ feed.
168
+ </p>
169
+ </div>
170
+ ),
171
+ },
172
+ {
173
+ value: "analytics",
174
+ title: "Analytics",
175
+ content: (
176
+ <div className="pt-4">
177
+ <h4 className="font-medium">Analytics</h4>
178
+ <p className="text-sm text-muted-foreground">
179
+ Charts and data visualizations.
180
+ </p>
181
+ </div>
182
+ ),
183
+ },
184
+ {
185
+ value: "reports",
186
+ title: "Reports",
187
+ content: (
188
+ <div className="pt-4">
189
+ <h4 className="font-medium">Reports</h4>
190
+ <p className="text-sm text-muted-foreground">
191
+ Generated reports and exports.
192
+ </p>
193
+ </div>
194
+ ),
195
+ },
196
+ ]}
197
+ />
198
+ </div>`}
193
199
  >
194
200
  <div className="max-w-lg">
195
201
  <TabsPreset
@@ -244,43 +250,46 @@ function TabsMacroShowcase() {
244
250
  description="Hiển thị các component phức tạp như form bên trong nội dung tab."
245
251
  fullWidth
246
252
  codeString={`<div className="max-w-lg">
247
- <TabsPreset
248
- defaultValue="login"
249
- className="w-full"
250
- items={[
251
- {
252
- value: "login",
253
- title: "Login",
254
- content: (
255
- <div className="rounded-xl border border-border bg-card p-6 mt-2 flex flex-col gap-4">
256
- <div className="text-lg font-semibold">Welcome Back</div>
257
- <div className="h-10 w-full bg-muted rounded-md" />
258
- <div className="h-10 w-full bg-muted rounded-md" />
259
- <button className="bg-primary text-primary-foreground h-10 rounded-md text-sm font-medium">
260
- Sign In
261
- </button>
262
- </div>
263
- ),
264
- },
265
- {
266
- value: "register",
267
- title: "Register",
268
- content: (
269
- <div className="rounded-xl border border-border bg-card p-6 mt-2 flex flex-col gap-4">
270
- <div className="text-lg font-semibold">Create Account</div>
271
- <div className="h-10 w-full bg-muted rounded-md" />
272
- <div className="h-10 w-full bg-muted rounded-md" />
273
- <div className="h-10 w-full bg-muted rounded-md" />
274
- <button className="bg-primary text-primary-foreground h-10 rounded-md text-sm font-medium">
275
- Sign Up
276
- </button>
277
- </div>
278
- ),
279
- },
280
- ]}
281
- />
282
- </div>
283
- `}
253
+ <TabsPreset
254
+ defaultValue="login"
255
+ className="w-full"
256
+ items={[
257
+ {
258
+ value: "login",
259
+ title: "Login",
260
+ content: (
261
+ <div className="rounded-xl border border-border bg-card p-6 mt-2 flex flex-col gap-4">
262
+ <div className="text-lg font-semibold">
263
+ Welcome Back
264
+ </div>
265
+ <div className="h-10 w-full bg-muted rounded-md" />
266
+ <div className="h-10 w-full bg-muted rounded-md" />
267
+ <button className="bg-primary text-primary-foreground h-10 rounded-md text-sm font-medium">
268
+ Sign In
269
+ </button>
270
+ </div>
271
+ ),
272
+ },
273
+ {
274
+ value: "register",
275
+ title: "Register",
276
+ content: (
277
+ <div className="rounded-xl border border-border bg-card p-6 mt-2 flex flex-col gap-4">
278
+ <div className="text-lg font-semibold">
279
+ Create Account
280
+ </div>
281
+ <div className="h-10 w-full bg-muted rounded-md" />
282
+ <div className="h-10 w-full bg-muted rounded-md" />
283
+ <div className="h-10 w-full bg-muted rounded-md" />
284
+ <button className="bg-primary text-primary-foreground h-10 rounded-md text-sm font-medium">
285
+ Sign Up
286
+ </button>
287
+ </div>
288
+ ),
289
+ },
290
+ ]}
291
+ />
292
+ </div>`}
284
293
  >
285
294
  <div className="max-w-lg">
286
295
  <TabsPreset
@@ -335,28 +344,27 @@ function TabsMicroShowcase() {
335
344
  label="Cơ bản (Default)"
336
345
  description="Tabs nguyên thuỷ lắp ráp thủ công."
337
346
  codeString={`<Tabs defaultValue="account" className="w-full">
338
- <TabsList className="w-full">
339
- <TabsTrigger value="account">Account</TabsTrigger>
340
- <TabsTrigger value="password">Password</TabsTrigger>
341
- </TabsList>
342
- <TabsContent value="account">
343
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
344
- <h4 className="font-medium">Account</h4>
345
- <p className="text-sm text-muted-foreground">
346
- Make changes to your account here.
347
- </p>
348
- </div>
349
- </TabsContent>
350
- <TabsContent value="password">
351
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
352
- <h4 className="font-medium">Password</h4>
353
- <p className="text-sm text-muted-foreground">
354
- Change your password here.
355
- </p>
356
- </div>
357
- </TabsContent>
358
- </Tabs>
359
- `}
347
+ <TabsList className="w-full">
348
+ <TabsTrigger value="account">Account</TabsTrigger>
349
+ <TabsTrigger value="password">Password</TabsTrigger>
350
+ </TabsList>
351
+ <TabsContent value="account">
352
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
353
+ <h4 className="font-medium">Account</h4>
354
+ <p className="text-sm text-muted-foreground">
355
+ Make changes to your account here.
356
+ </p>
357
+ </div>
358
+ </TabsContent>
359
+ <TabsContent value="password">
360
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
361
+ <h4 className="font-medium">Password</h4>
362
+ <p className="text-sm text-muted-foreground">
363
+ Change your password here.
364
+ </p>
365
+ </div>
366
+ </TabsContent>
367
+ </Tabs>`}
360
368
  >
361
369
  <Tabs defaultValue="account" className="w-full">
362
370
  <TabsList className="w-full">
@@ -386,34 +394,33 @@ function TabsMicroShowcase() {
386
394
  label="Kèm Icon (With Icons)"
387
395
  description="Thêm icon tuỳ chỉnh vào bên trong Tab Trigger."
388
396
  codeString={`<Tabs defaultValue="profile" className="w-full">
389
- <TabsList className="w-full">
390
- <TabsTrigger value="profile">
391
- <UserIcon data-icon="inline-start" />
392
- Profile
393
- </TabsTrigger>
394
- <TabsTrigger value="notifications">
395
- <BellIcon data-icon="inline-start" />
396
- Notifications
397
- </TabsTrigger>
398
- </TabsList>
399
- <TabsContent value="profile">
400
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
401
- <h4 className="font-medium">Profile</h4>
402
- <p className="text-sm text-muted-foreground">
403
- Update your name, avatar and bio.
404
- </p>
405
- </div>
406
- </TabsContent>
407
- <TabsContent value="notifications">
408
- <div className="rounded-xl border border-border bg-card p-4 mt-2">
409
- <h4 className="font-medium">Notifications</h4>
410
- <p className="text-sm text-muted-foreground">
411
- Choose what notifications you receive.
412
- </p>
413
- </div>
414
- </TabsContent>
415
- </Tabs>
416
- `}
397
+ <TabsList className="w-full">
398
+ <TabsTrigger value="profile">
399
+ <UserIcon data-icon="inline-start" />
400
+ Profile
401
+ </TabsTrigger>
402
+ <TabsTrigger value="notifications">
403
+ <BellIcon data-icon="inline-start" />
404
+ Notifications
405
+ </TabsTrigger>
406
+ </TabsList>
407
+ <TabsContent value="profile">
408
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
409
+ <h4 className="font-medium">Profile</h4>
410
+ <p className="text-sm text-muted-foreground">
411
+ Update your name, avatar and bio.
412
+ </p>
413
+ </div>
414
+ </TabsContent>
415
+ <TabsContent value="notifications">
416
+ <div className="rounded-xl border border-border bg-card p-4 mt-2">
417
+ <h4 className="font-medium">Notifications</h4>
418
+ <p className="text-sm text-muted-foreground">
419
+ Choose what notifications you receive.
420
+ </p>
421
+ </div>
422
+ </TabsContent>
423
+ </Tabs>`}
417
424
  >
418
425
  <Tabs defaultValue="profile" className="w-full">
419
426
  <TabsList className="w-full">
@@ -451,40 +458,39 @@ function TabsMicroShowcase() {
451
458
  description="Tabs có kiểu gạch chân (không nền)."
452
459
  fullWidth
453
460
  codeString={`<Tabs defaultValue="music" className="w-full max-w-lg">
454
- <TabsList
455
- variant="line"
456
- className="w-full justify-start border-b border-b-border rounded-none px-0"
457
- >
458
- <TabsTrigger value="music">Music</TabsTrigger>
459
- <TabsTrigger value="podcasts">Podcasts</TabsTrigger>
460
- <TabsTrigger value="live">Live</TabsTrigger>
461
- </TabsList>
462
- <TabsContent value="music">
463
- <div className="pt-4">
464
- <h4 className="font-medium">Music Library</h4>
465
- <p className="text-sm text-muted-foreground">
466
- Your top played songs and albums.
467
- </p>
468
- </div>
469
- </TabsContent>
470
- <TabsContent value="podcasts">
471
- <div className="pt-4">
472
- <h4 className="font-medium">Podcasts</h4>
473
- <p className="text-sm text-muted-foreground">
474
- Episodes from your subscriptions.
475
- </p>
476
- </div>
477
- </TabsContent>
478
- <TabsContent value="live">
479
- <div className="pt-4">
480
- <h4 className="font-medium">Live Radio</h4>
481
- <p className="text-sm text-muted-foreground">
482
- Tune in to live broadcasts.
483
- </p>
484
- </div>
485
- </TabsContent>
486
- </Tabs>
487
- `}
461
+ <TabsList
462
+ variant="line"
463
+ className="w-full justify-start border-b border-b-border rounded-none px-0"
464
+ >
465
+ <TabsTrigger value="music">Music</TabsTrigger>
466
+ <TabsTrigger value="podcasts">Podcasts</TabsTrigger>
467
+ <TabsTrigger value="live">Live</TabsTrigger>
468
+ </TabsList>
469
+ <TabsContent value="music">
470
+ <div className="pt-4">
471
+ <h4 className="font-medium">Music Library</h4>
472
+ <p className="text-sm text-muted-foreground">
473
+ Your top played songs and albums.
474
+ </p>
475
+ </div>
476
+ </TabsContent>
477
+ <TabsContent value="podcasts">
478
+ <div className="pt-4">
479
+ <h4 className="font-medium">Podcasts</h4>
480
+ <p className="text-sm text-muted-foreground">
481
+ Episodes from your subscriptions.
482
+ </p>
483
+ </div>
484
+ </TabsContent>
485
+ <TabsContent value="live">
486
+ <div className="pt-4">
487
+ <h4 className="font-medium">Live Radio</h4>
488
+ <p className="text-sm text-muted-foreground">
489
+ Tune in to live broadcasts.
490
+ </p>
491
+ </div>
492
+ </TabsContent>
493
+ </Tabs>`}
488
494
  >
489
495
  <Tabs defaultValue="music" className="w-full max-w-lg">
490
496
  <TabsList
@@ -527,51 +533,50 @@ function TabsMicroShowcase() {
527
533
  description="Sắp xếp danh sách tab theo chiều dọc bên trái và nội dung bên phải."
528
534
  fullWidth
529
535
  codeString={`<Tabs
530
- defaultValue="profile"
531
- orientation="vertical"
532
- className="w-full max-w-xl"
533
- >
534
- <TabsList className="w-40 shrink-0">
535
- <TabsTrigger value="profile">
536
- <UserIcon data-icon="inline-start" />
537
- Profile
538
- </TabsTrigger>
539
- <TabsTrigger value="notifications">
540
- <BellIcon data-icon="inline-start" />
541
- Notifications
542
- </TabsTrigger>
543
- <TabsTrigger value="billing">
544
- <CreditCardIcon data-icon="inline-start" />
545
- Billing
546
- </TabsTrigger>
547
- </TabsList>
548
- <TabsContent value="profile">
549
- <div className="rounded-xl border border-border bg-card p-4">
550
- <h4 className="font-medium">Profile</h4>
551
- <p className="text-sm text-muted-foreground">
552
- Update your personal information and manage your public
553
- profile.
554
- </p>
555
- </div>
556
- </TabsContent>
557
- <TabsContent value="notifications">
558
- <div className="rounded-xl border border-border bg-card p-4">
559
- <h4 className="font-medium">Notifications</h4>
560
- <p className="text-sm text-muted-foreground">
561
- Choose what notifications you receive and how.
562
- </p>
563
- </div>
564
- </TabsContent>
565
- <TabsContent value="billing">
566
- <div className="rounded-xl border border-border bg-card p-4">
567
- <h4 className="font-medium">Billing</h4>
568
- <p className="text-sm text-muted-foreground">
569
- Manage your subscription and payment methods.
570
- </p>
571
- </div>
572
- </TabsContent>
573
- </Tabs>
574
- `}
536
+ defaultValue="profile"
537
+ orientation="vertical"
538
+ className="w-full max-w-xl"
539
+ >
540
+ <TabsList className="w-40 shrink-0">
541
+ <TabsTrigger value="profile">
542
+ <UserIcon data-icon="inline-start" />
543
+ Profile
544
+ </TabsTrigger>
545
+ <TabsTrigger value="notifications">
546
+ <BellIcon data-icon="inline-start" />
547
+ Notifications
548
+ </TabsTrigger>
549
+ <TabsTrigger value="billing">
550
+ <CreditCardIcon data-icon="inline-start" />
551
+ Billing
552
+ </TabsTrigger>
553
+ </TabsList>
554
+ <TabsContent value="profile">
555
+ <div className="rounded-xl border border-border bg-card p-4">
556
+ <h4 className="font-medium">Profile</h4>
557
+ <p className="text-sm text-muted-foreground">
558
+ Update your personal information and manage your
559
+ public profile.
560
+ </p>
561
+ </div>
562
+ </TabsContent>
563
+ <TabsContent value="notifications">
564
+ <div className="rounded-xl border border-border bg-card p-4">
565
+ <h4 className="font-medium">Notifications</h4>
566
+ <p className="text-sm text-muted-foreground">
567
+ Choose what notifications you receive and how.
568
+ </p>
569
+ </div>
570
+ </TabsContent>
571
+ <TabsContent value="billing">
572
+ <div className="rounded-xl border border-border bg-card p-4">
573
+ <h4 className="font-medium">Billing</h4>
574
+ <p className="text-sm text-muted-foreground">
575
+ Manage your subscription and payment methods.
576
+ </p>
577
+ </div>
578
+ </TabsContent>
579
+ </Tabs>`}
575
580
  >
576
581
  <Tabs
577
582
  defaultValue="profile"