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,5 +1,3 @@
1
- import { useDevContext } from "../../dev/components/dev-context";
2
- import { useState } from "react";
3
1
  import { CheckIcon, HeartIcon, MoreVerticalIcon, UserIcon } from "lucide-react";
4
2
 
5
3
  import { Button } from "../../components/micro/button";
@@ -15,7 +13,7 @@ import {
15
13
  ItemSeparator,
16
14
  ItemTitle,
17
15
  } from "../../components/micro/item";
18
- import { type Size } from "../../lib/types";
16
+ import { useDevContext } from "../../dev/components/dev-context";
19
17
  import {
20
18
  DocsH3,
21
19
  DocsP,
@@ -24,6 +22,7 @@ import {
24
22
  Showcase,
25
23
  ShowcaseDocs,
26
24
  } from "../../dev/components/showcase";
25
+ import { type Size } from "../../lib/types";
27
26
 
28
27
  function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
29
28
  return (
@@ -33,14 +32,13 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
33
32
  label="Basic Content"
34
33
  description="Item cơ bản với tiêu đề và mô tả."
35
34
  codeString={`<Item className="w-full">
36
- <ItemContent>
37
- <ItemTitle>Basic Item Content</ItemTitle>
38
- <ItemDescription>
39
- This item shows structured text.
40
- </ItemDescription>
41
- </ItemContent>
42
- </Item>
43
- `}
35
+ <ItemContent>
36
+ <ItemTitle>Basic Item Content</ItemTitle>
37
+ <ItemDescription>
38
+ This item shows structured text.
39
+ </ItemDescription>
40
+ </ItemContent>
41
+ </Item>`}
44
42
  >
45
43
  <Item size={globalSize} className="w-full">
46
44
  <ItemContent>
@@ -56,15 +54,14 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
56
54
  label="With Media"
57
55
  description="Item kèm icon hoặc avatar."
58
56
  codeString={`<Item className="w-full">
59
- <ItemMedia className="bg-primary/10 text-primary rounded-md p-2">
60
- <UserIcon className="size-4" />
61
- </ItemMedia>
62
- <ItemContent>
63
- <ItemTitle>User Profile</ItemTitle>
64
- <ItemDescription>Manage your account</ItemDescription>
65
- </ItemContent>
66
- </Item>
67
- `}
57
+ <ItemMedia className="bg-primary/10 text-primary rounded-md p-2">
58
+ <UserIcon className="size-4" />
59
+ </ItemMedia>
60
+ <ItemContent>
61
+ <ItemTitle>User Profile</ItemTitle>
62
+ <ItemDescription>Manage your account</ItemDescription>
63
+ </ItemContent>
64
+ </Item>`}
68
65
  >
69
66
  <Item size={globalSize} className="w-full">
70
67
  <ItemMedia className="bg-primary/10 text-primary rounded-md p-2">
@@ -83,18 +80,17 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
83
80
  label="Variants"
84
81
  description="Các variant khác nhau: outline, muted."
85
82
  codeString={`<div className="flex flex-col gap-3 w-full">
86
- <Item variant="outline">
87
- <ItemContent>
88
- <ItemTitle>Outline Variant</ItemTitle>
89
- </ItemContent>
90
- </Item>
91
- <Item variant="muted">
92
- <ItemContent>
93
- <ItemTitle>Muted Variant</ItemTitle>
94
- </ItemContent>
95
- </Item>
96
- </div>
97
- `}
83
+ <Item variant="outline">
84
+ <ItemContent>
85
+ <ItemTitle>Outline Variant</ItemTitle>
86
+ </ItemContent>
87
+ </Item>
88
+ <Item variant="muted">
89
+ <ItemContent>
90
+ <ItemTitle>Muted Variant</ItemTitle>
91
+ </ItemContent>
92
+ </Item>
93
+ </div>`}
98
94
  >
99
95
  <div className="flex flex-col gap-3 w-full">
100
96
  <Item variant="outline" size={globalSize}>
@@ -114,24 +110,26 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
114
110
  label="Media Variants"
115
111
  description="ItemMedia hỗ trợ các variant riêng: icon và image."
116
112
  codeString={`<div className="flex flex-col gap-3 w-full">
117
- <Item>
118
- <ItemMedia variant="icon" className="bg-primary/10 text-primary">
119
- <CheckIcon className="size-4" />
120
- </ItemMedia>
121
- <ItemContent>
122
- <ItemTitle>Icon Variant</ItemTitle>
123
- </ItemContent>
124
- </Item>
125
- <Item>
126
- <ItemMedia variant="image" className="bg-muted">
127
- <UserIcon className="size-4 text-muted-foreground" />
128
- </ItemMedia>
129
- <ItemContent>
130
- <ItemTitle>Image Variant</ItemTitle>
131
- </ItemContent>
132
- </Item>
133
- </div>
134
- `}
113
+ <Item>
114
+ <ItemMedia
115
+ variant="icon"
116
+ className="bg-primary/10 text-primary"
117
+ >
118
+ <CheckIcon className="size-4" />
119
+ </ItemMedia>
120
+ <ItemContent>
121
+ <ItemTitle>Icon Variant</ItemTitle>
122
+ </ItemContent>
123
+ </Item>
124
+ <Item>
125
+ <ItemMedia variant="image" className="bg-muted">
126
+ <UserIcon className="size-4 text-muted-foreground" />
127
+ </ItemMedia>
128
+ <ItemContent>
129
+ <ItemTitle>Image Variant</ItemTitle>
130
+ </ItemContent>
131
+ </Item>
132
+ </div>`}
135
133
  >
136
134
  <div className="flex flex-col gap-3 w-full">
137
135
  <Item size={globalSize}>
@@ -157,19 +155,26 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
157
155
  label="With Actions"
158
156
  description="Item có các nút hành động ở cuối (ItemActions)."
159
157
  codeString={`<Item className="w-full">
160
- <ItemContent>
161
- <ItemTitle>Actionable Item</ItemTitle>
162
- </ItemContent>
163
- <ItemActions>
164
- <Button variant="ghost" size="sm" className="size-8 p-0">
165
- <HeartIcon className="size-4" />
166
- </Button>
167
- <Button variant="ghost" size="sm" className="size-8 p-0">
168
- <MoreVerticalIcon className="size-4" />
169
- </Button>
170
- </ItemActions>
171
- </Item>
172
- `}
158
+ <ItemContent>
159
+ <ItemTitle>Actionable Item</ItemTitle>
160
+ </ItemContent>
161
+ <ItemActions>
162
+ <Button
163
+ variant="ghost"
164
+ size="sm"
165
+ className="size-8 p-0"
166
+ >
167
+ <HeartIcon className="size-4" />
168
+ </Button>
169
+ <Button
170
+ variant="ghost"
171
+ size="sm"
172
+ className="size-8 p-0"
173
+ >
174
+ <MoreVerticalIcon className="size-4" />
175
+ </Button>
176
+ </ItemActions>
177
+ </Item>`}
173
178
  >
174
179
  <Item size={globalSize} className="w-full">
175
180
  <ItemContent>
@@ -191,25 +196,26 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
191
196
  label="Item Group"
192
197
  description="Nhóm các Item và phân cách bằng ItemSeparator."
193
198
  codeString={`<ItemGroup className="w-full max-w-sm mx-auto">
194
- <Item>
195
- <ItemContent>
196
- <ItemTitle>Account Settings</ItemTitle>
197
- </ItemContent>
198
- </Item>
199
- <ItemSeparator />
200
- <Item>
201
- <ItemContent>
202
- <ItemTitle>Notification Preferences</ItemTitle>
203
- </ItemContent>
204
- </Item>
205
- <ItemSeparator />
206
- <Item>
207
- <ItemContent>
208
- <ItemTitle className="text-destructive">Delete Account</ItemTitle>
209
- </ItemContent>
210
- </Item>
211
- </ItemGroup>
212
- `}
199
+ <Item>
200
+ <ItemContent>
201
+ <ItemTitle>Account Settings</ItemTitle>
202
+ </ItemContent>
203
+ </Item>
204
+ <ItemSeparator />
205
+ <Item>
206
+ <ItemContent>
207
+ <ItemTitle>Notification Preferences</ItemTitle>
208
+ </ItemContent>
209
+ </Item>
210
+ <ItemSeparator />
211
+ <Item>
212
+ <ItemContent>
213
+ <ItemTitle className="text-destructive">
214
+ Delete Account
215
+ </ItemTitle>
216
+ </ItemContent>
217
+ </Item>
218
+ </ItemGroup>`}
213
219
  >
214
220
  <ItemGroup className="w-full max-w-sm mx-auto">
215
221
  <Item size={globalSize}>
@@ -235,20 +241,17 @@ function ItemMicroShowcase({ globalSize }: { globalSize: Size }) {
235
241
  <ExampleSection
236
242
  label="With Header and Footer"
237
243
  description="Item phức tạp với ItemHeader và ItemFooter."
238
- codeString={`<Item
239
- className="w-full max-w-sm mx-auto flex-col items-start gap-2"
240
- >
241
- <ItemHeader className="text-xs text-muted-foreground">
242
- Order #12345
243
- </ItemHeader>
244
- <ItemContent>
245
- <ItemTitle>Mechanical Keyboard v2</ItemTitle>
246
- </ItemContent>
247
- <ItemFooter className="text-xs text-success flex items-center gap-1">
248
- <CheckIcon className="size-3" /> Delivered
249
- </ItemFooter>
250
- </Item>
251
- `}
244
+ codeString={`<Item className="w-full max-w-sm mx-auto flex-col items-start gap-2">
245
+ <ItemHeader className="text-xs text-muted-foreground">
246
+ Order #12345
247
+ </ItemHeader>
248
+ <ItemContent>
249
+ <ItemTitle>Mechanical Keyboard v2</ItemTitle>
250
+ </ItemContent>
251
+ <ItemFooter className="text-xs text-success flex items-center gap-1">
252
+ <CheckIcon className="size-3" /> Delivered
253
+ </ItemFooter>
254
+ </Item>`}
252
255
  >
253
256
  <Item
254
257
  size={globalSize}
@@ -279,8 +282,8 @@ export default function ItemShowcase() {
279
282
  <ShowcaseDocs>
280
283
  <DocsH3>Item</DocsH3>
281
284
  <DocsP>
282
- Sử dụng để tạo danh sách hoặc khối nội dung có icon, tiêu đề,
283
- mô tả và hành động.
285
+ Sử dụng để tạo danh sách hoặc khối nội dung có icon, tiêu đề, mô tả
286
+ và hành động.
284
287
  </DocsP>
285
288
  </ShowcaseDocs>
286
289
  }
@@ -1,11 +1,3 @@
1
- import {
2
- DocsCode,
3
- DocsP,
4
- ExampleGrid,
5
- ExampleSection,
6
- Showcase,
7
- ShowcaseDocs,
8
- } from "../../dev/components/showcase";
9
1
  import {
10
2
  CopyIcon,
11
3
  FileIcon,
@@ -19,16 +11,26 @@ import {
19
11
  DropdownMenu,
20
12
  DropdownMenuContent,
21
13
  DropdownMenuItem,
14
+ DropdownMenuPortal,
22
15
  DropdownMenuSeparator,
23
16
  DropdownMenuTrigger,
24
- DropdownMenuPortal,
25
17
  } from "../../components/micro/dropdown-menu";
26
18
  import { Kbd, KbdGroup } from "../../components/micro/kbd";
27
19
  import {
28
20
  Tooltip,
29
21
  TooltipContent,
22
+ TooltipPortal,
30
23
  TooltipProvider,
31
- TooltipTrigger, TooltipPortal } from "../../components/micro/tooltip";
24
+ TooltipTrigger,
25
+ } from "../../components/micro/tooltip";
26
+ import {
27
+ DocsCode,
28
+ DocsP,
29
+ ExampleGrid,
30
+ ExampleSection,
31
+ Showcase,
32
+ ShowcaseDocs,
33
+ } from "../../dev/components/showcase";
32
34
 
33
35
  // ──────────────────────────────────────────────────────────
34
36
  // SECTION 2: Micro Content (không export)
@@ -42,8 +44,8 @@ function KbdMicroShowcase() {
42
44
  label="Kbd — Phím đơn"
43
45
  description="Hiển thị một phím bàn phím riêng lẻ dùng thẻ <kbd> semantic."
44
46
  codeString={`<p className="text-sm text-muted-foreground">
45
- Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to open search.
46
- </p>`}
47
+ Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to open search.
48
+ </p>`}
47
49
  >
48
50
  <p className="text-sm text-muted-foreground">
49
51
  Press <Kbd>⌘</Kbd> <Kbd>K</Kbd> to open search.
@@ -54,13 +56,13 @@ function KbdMicroShowcase() {
54
56
  label="KbdGroup — Tổ hợp phím"
55
57
  description="Nhóm nhiều phím cạnh nhau với khoảng cách đều. Dùng khi biểu diễn tổ hợp phím như Ctrl+Shift+P."
56
58
  codeString={`<p className="text-sm text-muted-foreground flex items-center gap-2">
57
- Open Command Palette
58
- <KbdGroup>
59
- <Kbd>⌘</Kbd>
60
- <Kbd>⇧</Kbd>
61
- <Kbd>P</Kbd>
62
- </KbdGroup>
63
- </p>`}
59
+ Open Command Palette
60
+ <KbdGroup>
61
+ <Kbd>⌘</Kbd>
62
+ <Kbd>⇧</Kbd>
63
+ <Kbd>P</Kbd>
64
+ </KbdGroup>
65
+ </p>`}
64
66
  >
65
67
  <p className="text-sm text-muted-foreground flex items-center gap-2">
66
68
  Open Command Palette
@@ -78,17 +80,17 @@ function KbdMicroShowcase() {
78
80
  label="Ký tự & Symbols"
79
81
  description="Kbd có thể chứa ký tự Unicode, chữ cái, số hoặc tên phím dài."
80
82
  codeString={`<div className="flex flex-wrap items-center gap-2">
81
- <Kbd>Ctrl</Kbd>
82
- <Kbd>Alt</Kbd>
83
- <Kbd>⌘</Kbd>
84
- <Kbd>⇧</Kbd>
85
- <Kbd>⌫</Kbd>
86
- <Kbd>↵</Kbd>
87
- <Kbd>Tab</Kbd>
88
- <Kbd>Esc</Kbd>
89
- <Kbd>F1</Kbd>
90
- <Kbd>→</Kbd>
91
- </div>`}
83
+ <Kbd>Ctrl</Kbd>
84
+ <Kbd>Alt</Kbd>
85
+ <Kbd>⌘</Kbd>
86
+ <Kbd>⇧</Kbd>
87
+ <Kbd>⌫</Kbd>
88
+ <Kbd>↵</Kbd>
89
+ <Kbd>Tab</Kbd>
90
+ <Kbd>Esc</Kbd>
91
+ <Kbd>F1</Kbd>
92
+ <Kbd>→</Kbd>
93
+ </div>`}
92
94
  >
93
95
  <div className="flex flex-wrap items-center gap-2">
94
96
  <Kbd>Ctrl</Kbd>
@@ -109,13 +111,20 @@ function KbdMicroShowcase() {
109
111
  label="Kbd trong Tooltip"
110
112
  description="Kbd tự đổi màu khi nằm trong TooltipContent — màu nền sáng trên nền tối của tooltip, không cần thêm class."
111
113
  codeString={`<TooltipProvider>
112
- <Tooltip>
113
- <TooltipTrigger render={<Button variant="outline" iconOnly><SaveIcon /></Button>} />
114
- <TooltipContent>
115
- Lưu tài liệu <Kbd>⌘</Kbd><Kbd>S</Kbd>
116
- </TooltipContent>
117
- </Tooltip>
118
- </TooltipProvider>`}
114
+ <Tooltip>
115
+ <TooltipTrigger
116
+ render={
117
+ <Button variant="outline" iconOnly>
118
+ <SaveIcon />
119
+ </Button>
120
+ }
121
+ />
122
+ <TooltipContent>
123
+ Lưu tài liệu <Kbd>⌘</Kbd>
124
+ <Kbd>S</Kbd>
125
+ </TooltipContent>
126
+ </Tooltip>
127
+ </TooltipProvider>`}
119
128
  >
120
129
  <div className="flex items-center gap-3">
121
130
  <TooltipProvider>
@@ -128,11 +137,11 @@ function KbdMicroShowcase() {
128
137
  }
129
138
  />
130
139
  <TooltipPortal>
131
- <TooltipContent>
132
- Lưu tài liệu <Kbd>⌘</Kbd>
133
- <Kbd>S</Kbd>
134
- </TooltipContent>
135
- </TooltipPortal>
140
+ <TooltipContent>
141
+ Lưu tài liệu <Kbd>⌘</Kbd>
142
+ <Kbd>S</Kbd>
143
+ </TooltipContent>
144
+ </TooltipPortal>
136
145
  </Tooltip>
137
146
  </TooltipProvider>
138
147
 
@@ -146,11 +155,11 @@ function KbdMicroShowcase() {
146
155
  }
147
156
  />
148
157
  <TooltipPortal>
149
- <TooltipContent>
150
- Sao chép <Kbd>⌘</Kbd>
151
- <Kbd>C</Kbd>
152
- </TooltipContent>
153
- </TooltipPortal>
158
+ <TooltipContent>
159
+ Sao chép <Kbd>⌘</Kbd>
160
+ <Kbd>C</Kbd>
161
+ </TooltipContent>
162
+ </TooltipPortal>
154
163
  </Tooltip>
155
164
  </TooltipProvider>
156
165
  </div>
@@ -161,20 +170,22 @@ function KbdMicroShowcase() {
161
170
  label="Use case — Menu với Keyboard Shortcut"
162
171
  description="Kbd dùng trong DropdownMenuItem để hiển thị phím tắt bên cạnh label — pattern phổ biến trong text editor, IDE, Figma."
163
172
  codeString={`<DropdownMenuItem>
164
- <FileIcon />
165
- New File
166
- <KbdGroup className="ml-auto">
167
- <Kbd>⌘</Kbd><Kbd>N</Kbd>
168
- </KbdGroup>
169
- </DropdownMenuItem>
173
+ <FileIcon />
174
+ New File
175
+ <KbdGroup className="ml-auto">
176
+ <Kbd>⌘</Kbd>
177
+ <Kbd>N</Kbd>
178
+ </KbdGroup>
179
+ </DropdownMenuItem>
170
180
 
171
- <DropdownMenuItem>
172
- <SaveIcon />
173
- Save
174
- <KbdGroup className="ml-auto">
175
- <Kbd>⌘</Kbd><Kbd>S</Kbd>
176
- </KbdGroup>
177
- </DropdownMenuItem>`}
181
+ <DropdownMenuItem>
182
+ <SaveIcon />
183
+ Save
184
+ <KbdGroup className="ml-auto">
185
+ <Kbd>⌘</Kbd>
186
+ <Kbd>S</Kbd>
187
+ </KbdGroup>
188
+ </DropdownMenuItem>`}
178
189
  >
179
190
  <DropdownMenu>
180
191
  <DropdownMenuTrigger
@@ -226,8 +237,13 @@ function KbdMicroShowcase() {
226
237
  label="Gợi ý inline trong văn bản"
227
238
  description="Kbd dùng inline trong đoạn văn bản để gợi ý phím tắt — phổ biến trong help text, onboarding, documentation."
228
239
  codeString={`<p className="text-sm text-muted-foreground">
229
- Nhấn <Kbd>Enter</Kbd> để gửi, hoặc <KbdGroup><Kbd>⇧</Kbd><Kbd>Enter</Kbd></KbdGroup> để xuống dòng.
230
- </p>`}
240
+ Nhấn <Kbd>Enter</Kbd> để gửi, hoặc{" "}
241
+ <KbdGroup>
242
+ <Kbd>⇧</Kbd>
243
+ <Kbd>Enter</Kbd>
244
+ </KbdGroup>{" "}
245
+ để xuống dòng.
246
+ </p>`}
231
247
  >
232
248
  <div className="space-y-3">
233
249
  <p className="text-sm text-muted-foreground">
@@ -1,3 +1,4 @@
1
+ import { Label } from "../../components/micro/label";
1
2
  import { useDevContext } from "../../dev/components/dev-context";
2
3
  import {
3
4
  DocsCode,
@@ -6,9 +7,6 @@ import {
6
7
  Showcase,
7
8
  ShowcaseDocs,
8
9
  } from "../../dev/components/showcase";
9
- import { useState } from "react";
10
-
11
- import { Label } from "../../components/micro/label";
12
10
  import { type Size } from "../../lib/types";
13
11
 
14
12
  // ──────────────────────────────────────────────────────────
@@ -20,10 +18,7 @@ function LabelMicroShowcase({ globalSize }: { globalSize: Size }) {
20
18
  <ExampleSection
21
19
  label="Default"
22
20
  description="Cách sử dụng nhãn tiêu chuẩn."
23
- codeString={`<Label htmlFor="terms">
24
- Accept terms and conditions
25
- </Label>
26
- `}
21
+ codeString={`<Label htmlFor="terms">Accept terms and conditions</Label>`}
27
22
  >
28
23
  <Label htmlFor="terms" size={globalSize}>
29
24
  Accept terms and conditions
@@ -34,11 +29,8 @@ function LabelMicroShowcase({ globalSize }: { globalSize: Size }) {
34
29
  label="Disabled"
35
30
  description="Trạng thái bị vô hiệu hóa khi nằm trong group bị vô hiệu."
36
31
  codeString={`<div data-disabled="true" className="group">
37
- <Label htmlFor="disabled">
38
- This label is disabled
39
- </Label>
40
- </div>
41
- `}
32
+ <Label htmlFor="disabled">This label is disabled</Label>
33
+ </div>`}
42
34
  >
43
35
  <div data-disabled="true" className="group">
44
36
  <Label htmlFor="disabled" size={globalSize}>
@@ -51,11 +43,8 @@ function LabelMicroShowcase({ globalSize }: { globalSize: Size }) {
51
43
  label="Error State"
52
44
  description="Hiển thị màu đỏ khi nằm trong group bị lỗi (data-invalid)."
53
45
  codeString={`<div data-invalid="true" className="group">
54
- <Label htmlFor="error">
55
- Email is required
56
- </Label>
57
- </div>
58
- `}
46
+ <Label htmlFor="error">Email is required</Label>
47
+ </div>`}
59
48
  >
60
49
  <div data-invalid="true" className="group">
61
50
  <Label htmlFor="error" size={globalSize}>
@@ -68,12 +57,16 @@ function LabelMicroShowcase({ globalSize }: { globalSize: Size }) {
68
57
  label="With Peer Input"
69
58
  description="Phản hồi trạng thái disabled của input liền kề (dùng class peer)."
70
59
  codeString={`<div className="flex items-center gap-2">
71
- <input type="checkbox" disabled id="peer-disabled" className="peer w-4 h-4" />
72
- <Label htmlFor="peer-disabled">
73
- Disabled by peer checkbox
74
- </Label>
75
- </div>
76
- `}
60
+ <input
61
+ type="checkbox"
62
+ disabled
63
+ id="peer-disabled"
64
+ className="peer w-4 h-4"
65
+ />
66
+ <Label htmlFor="peer-disabled">
67
+ Disabled by peer checkbox
68
+ </Label>
69
+ </div>`}
77
70
  >
78
71
  <div className="flex items-center gap-2">
79
72
  <input