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,15 +1,7 @@
1
- import { useDevContext } from "../../dev/components/dev-context";
2
- import {
3
- DocsCode,
4
- DocsP,
5
- ExampleGrid,
6
- ExampleSection,
7
- Showcase,
8
- ShowcaseDocs,
9
- } from "../../dev/components/showcase";
10
- import { FilterIcon, PanelRightIcon, SettingsIcon } from "lucide-react";
11
1
  import { useState } from "react";
12
2
 
3
+ import { FilterIcon, PanelRightIcon, SettingsIcon } from "lucide-react";
4
+
13
5
  import { Button } from "../../components/micro/button";
14
6
  import { Input } from "../../components/micro/input";
15
7
  import { Label } from "../../components/micro/label";
@@ -20,10 +12,19 @@ import {
20
12
  SheetDescription,
21
13
  SheetFooter,
22
14
  SheetHeader,
15
+ SheetPortal,
23
16
  SheetTitle,
24
17
  SheetTrigger,
25
- SheetPortal,
26
18
  } from "../../components/micro/sheet";
19
+ import { useDevContext } from "../../dev/components/dev-context";
20
+ import {
21
+ DocsCode,
22
+ DocsP,
23
+ ExampleGrid,
24
+ ExampleSection,
25
+ Showcase,
26
+ ShowcaseDocs,
27
+ } from "../../dev/components/showcase";
27
28
  import { type Size } from "../../lib/types";
28
29
 
29
30
  // ──────────────────────────────────────────────────────────
@@ -39,36 +40,59 @@ function SheetMicroShowcase({ globalSize }: { globalSize: Size }) {
39
40
  label="Hướng trượt (Side)"
40
41
  description="Sheet có thể trượt ra từ bốn cạnh: right (mặc định), left, top, bottom."
41
42
  codeString={`<Sheet>
42
- <SheetTrigger render={<Button variant="outline" className="capitalize">right</Button>} />
43
- <SheetPortal><SheetContent side="right">
44
- <SheetHeader>
45
- <SheetTitle>Edit Profile</SheetTitle>
46
- <SheetDescription>
47
- Thay đổi thông tin tài khoản của bạn và nhấn Lưu.
48
- </SheetDescription>
49
- </SheetHeader>
50
- <div className="grid gap-4 py-4 px-4">
51
- <div className="grid grid-cols-4 items-center gap-4">
52
- <Label htmlFor="name-right" className="text-right">
53
- Tên
54
- </Label>
55
- <Input id="name-right" defaultValue="Pedro Duarte" className="col-span-3" />
56
- </div>
57
- <div className="grid grid-cols-4 items-center gap-4">
58
- <Label htmlFor="username-right" className="text-right">
59
- Username
60
- </Label>
61
- <Input id="username-right" defaultValue="@peduarte" className="col-span-3" />
62
- </div>
63
- </div>
64
- <SheetFooter>
65
- <SheetClose render={<Button variant="outline" />}>
66
- Huỷ
67
- </SheetClose>
68
- <Button>Lưu thay đổi</Button>
69
- </SheetFooter>
70
- </SheetContent></SheetPortal>
71
- </Sheet>`}
43
+ <SheetTrigger
44
+ render={
45
+ <Button variant="outline" className="capitalize">
46
+ right
47
+ </Button>
48
+ }
49
+ />
50
+ <SheetPortal>
51
+ <SheetContent side="right">
52
+ <SheetHeader>
53
+ <SheetTitle>Edit Profile</SheetTitle>
54
+ <SheetDescription>
55
+ Thay đổi thông tin tài khoản của bạn và nhấn
56
+ Lưu.
57
+ </SheetDescription>
58
+ </SheetHeader>
59
+ <div className="grid gap-4 py-4 px-4">
60
+ <div className="grid grid-cols-4 items-center gap-4">
61
+ <Label
62
+ htmlFor="name-right"
63
+ className="text-right"
64
+ >
65
+ Tên
66
+ </Label>
67
+ <Input
68
+ id="name-right"
69
+ defaultValue="Pedro Duarte"
70
+ className="col-span-3"
71
+ />
72
+ </div>
73
+ <div className="grid grid-cols-4 items-center gap-4">
74
+ <Label
75
+ htmlFor="username-right"
76
+ className="text-right"
77
+ >
78
+ Username
79
+ </Label>
80
+ <Input
81
+ id="username-right"
82
+ defaultValue="@peduarte"
83
+ className="col-span-3"
84
+ />
85
+ </div>
86
+ </div>
87
+ <SheetFooter>
88
+ <SheetClose render={<Button variant="outline" />}>
89
+ Huỷ
90
+ </SheetClose>
91
+ <Button>Lưu thay đổi</Button>
92
+ </SheetFooter>
93
+ </SheetContent>
94
+ </SheetPortal>
95
+ </Sheet>`}
72
96
  >
73
97
  <div className="grid grid-cols-2 gap-2">
74
98
  {/* top */}
@@ -283,17 +307,21 @@ function SheetMicroShowcase({ globalSize }: { globalSize: Size }) {
283
307
  label="Có nút đóng (mặc định)"
284
308
  description="showCloseButton={true} — nút X tự động hiển thị ở góc trên phải."
285
309
  codeString={`<Sheet>
286
- <SheetTrigger render={<Button variant="outline" />}>
287
- <PanelRightIcon />
288
- Mở Sheet
289
- </SheetTrigger>
290
- <SheetPortal><SheetContent side="right">
291
- <SheetHeader>
292
- <SheetTitle>Có nút đóng</SheetTitle>
293
- <SheetDescription>Nút X xuất hiện tự động.</SheetDescription>
294
- </SheetHeader>
295
- </SheetContent></SheetPortal>
296
- </Sheet>`}
310
+ <SheetTrigger render={<Button variant="outline" />}>
311
+ <PanelRightIcon />
312
+ Mở Sheet
313
+ </SheetTrigger>
314
+ <SheetPortal>
315
+ <SheetContent side="right">
316
+ <SheetHeader>
317
+ <SheetTitle> nút đóng</SheetTitle>
318
+ <SheetDescription>
319
+ Nút X xuất hiện tự động.
320
+ </SheetDescription>
321
+ </SheetHeader>
322
+ </SheetContent>
323
+ </SheetPortal>
324
+ </Sheet>`}
297
325
  >
298
326
  <Sheet>
299
327
  <SheetTrigger
@@ -318,24 +346,33 @@ function SheetMicroShowcase({ globalSize }: { globalSize: Size }) {
318
346
  label="Ẩn nút đóng"
319
347
  description="showCloseButton={false} — dùng khi muốn tự control nút đóng bên trong nội dung."
320
348
  codeString={`<Sheet>
321
- <SheetTrigger render={<Button variant="outline" />}>
322
- <PanelRightIcon />
323
- Không có X
324
- </SheetTrigger>
325
- <SheetPortal><SheetContent side="right" showCloseButton={false}>
326
- <SheetHeader>
327
- <SheetTitle>Ẩn nút đóng</SheetTitle>
328
- <SheetDescription>
329
- Consumer tự render nút đóng trong footer.
330
- </SheetDescription>
331
- </SheetHeader>
332
- <SheetFooter>
333
- <SheetClose render={<Button variant="outline" className="w-full" />}>
334
- Đóng thủ công
335
- </SheetClose>
336
- </SheetFooter>
337
- </SheetContent></SheetPortal>
338
- </Sheet>`}
349
+ <SheetTrigger render={<Button variant="outline" />}>
350
+ <PanelRightIcon />
351
+ Không có X
352
+ </SheetTrigger>
353
+ <SheetPortal>
354
+ <SheetContent side="right" showCloseButton={false}>
355
+ <SheetHeader>
356
+ <SheetTitle>Ẩn nút đóng</SheetTitle>
357
+ <SheetDescription>
358
+ Consumer tự render nút đóng trong footer.
359
+ </SheetDescription>
360
+ </SheetHeader>
361
+ <SheetFooter>
362
+ <SheetClose
363
+ render={
364
+ <Button
365
+ variant="outline"
366
+ className="w-full"
367
+ />
368
+ }
369
+ >
370
+ Đóng thủ công
371
+ </SheetClose>
372
+ </SheetFooter>
373
+ </SheetContent>
374
+ </SheetPortal>
375
+ </Sheet>`}
339
376
  >
340
377
  <Sheet>
341
378
  <SheetTrigger
@@ -377,37 +414,39 @@ function SheetMicroShowcase({ globalSize }: { globalSize: Size }) {
377
414
  label="Controlled State"
378
415
  description="Quản lý trạng thái đóng/mở qua React state với open và onOpenChange."
379
416
  codeString={`const [open, setOpen] = useState(false);
380
-
381
- <div className="flex items-center gap-4">
382
- <Sheet open={open} onOpenChange={setOpen}>
383
- <SheetTrigger render={<Button variant="outline" />}>
384
- <SettingsIcon />
385
- Toggle Controlled
386
- </SheetTrigger>
387
- <SheetPortal><SheetContent side="right">
388
- <SheetHeader>
389
- <SheetTitle>Controlled Mode</SheetTitle>
390
- <SheetDescription>
391
- Sheet được điều khiển hoàn toàn bởi React state.
392
- </SheetDescription>
393
- </SheetHeader>
394
- <SheetFooter>
395
- <Button onClick={() => setOpen(false)}>
396
- Đóng bằng state
397
- </Button>
398
- </SheetFooter>
399
- </SheetContent></SheetPortal>
400
- </Sheet>
401
- <p className="text-sm text-muted-foreground">
402
- Trạng thái:{" "}
403
- <strong
404
- data-active={open ? "" : undefined}
405
- className="data-active:text-primary"
406
- >
407
- {open ? "Mở" : "Đóng"}
408
- </strong>
409
- </p>
410
- </div>`}
417
+ <div className="flex items-center gap-4">
418
+ <Sheet open={open} onOpenChange={setOpen}>
419
+ <SheetTrigger render={<Button variant="outline" />}>
420
+ <SettingsIcon />
421
+ Toggle Controlled
422
+ </SheetTrigger>
423
+ <SheetPortal>
424
+ <SheetContent side="right">
425
+ <SheetHeader>
426
+ <SheetTitle>Controlled Mode</SheetTitle>
427
+ <SheetDescription>
428
+ Sheet được điều khiển hoàn toàn bởi React
429
+ state.
430
+ </SheetDescription>
431
+ </SheetHeader>
432
+ <SheetFooter>
433
+ <Button onClick={() => setOpen(false)}>
434
+ Đóng bằng state
435
+ </Button>
436
+ </SheetFooter>
437
+ </SheetContent>
438
+ </SheetPortal>
439
+ </Sheet>
440
+ <p className="text-sm text-muted-foreground">
441
+ Trạng thái:{" "}
442
+ <strong
443
+ data-active={open ? "" : undefined}
444
+ className="data-active:text-primary"
445
+ >
446
+ {open ? "Mở" : "Đóng"}
447
+ </strong>
448
+ </p>
449
+ </div>`}
411
450
  >
412
451
  <div className="flex items-center gap-4">
413
452
  <Sheet open={open} onOpenChange={setOpen}>
@@ -451,39 +490,48 @@ function SheetMicroShowcase({ globalSize }: { globalSize: Size }) {
451
490
  label="Use case — Filter Panel"
452
491
  description="Sheet dùng làm bảng lọc dữ liệu bên phải — pattern phổ biến trong dashboard, table view."
453
492
  codeString={`<Sheet>
454
- <SheetTrigger render={<Button variant="outline" />}>
455
- <FilterIcon />
456
- Lọc dữ liệu
457
- </SheetTrigger>
458
- <SheetPortal><SheetContent side="right">
459
- <SheetHeader>
460
- <SheetTitle>Bộ lọc</SheetTitle>
461
- <SheetDescription>
462
- Tinh chỉnh kết quả hiển thị theo điều kiện.
463
- </SheetDescription>
464
- </SheetHeader>
465
- <div className="flex flex-col gap-4 p-4">
466
- <div className="flex flex-col gap-2">
467
- <Label htmlFor="filter-status">Trạng thái</Label>
468
- <Input id="filter-status" placeholder="Tất cả" />
469
- </div>
470
- <div className="flex flex-col gap-2">
471
- <Label htmlFor="filter-date-from">Từ ngày</Label>
472
- <Input id="filter-date-from" type="date" />
473
- </div>
474
- <div className="flex flex-col gap-2">
475
- <Label htmlFor="filter-date-to">Đến ngày</Label>
476
- <Input id="filter-date-to" type="date" />
477
- </div>
478
- </div>
479
- <SheetFooter>
480
- <SheetClose render={<Button variant="outline" />}>
481
- Xoá bộ lọc
482
- </SheetClose>
483
- <Button>Áp dụng</Button>
484
- </SheetFooter>
485
- </SheetContent></SheetPortal>
486
- </Sheet>`}
493
+ <SheetTrigger render={<Button variant="outline" />}>
494
+ <FilterIcon />
495
+ Lọc dữ liệu
496
+ </SheetTrigger>
497
+ <SheetPortal>
498
+ <SheetContent side="right">
499
+ <SheetHeader>
500
+ <SheetTitle>Bộ lọc</SheetTitle>
501
+ <SheetDescription>
502
+ Tinh chỉnh kết quả hiển thị theo điều kiện.
503
+ </SheetDescription>
504
+ </SheetHeader>
505
+ <div className="flex flex-col gap-4 p-4">
506
+ <div className="flex flex-col gap-2">
507
+ <Label htmlFor="filter-status">
508
+ Trạng thái
509
+ </Label>
510
+ <Input
511
+ id="filter-status"
512
+ placeholder="Tất cả"
513
+ />
514
+ </div>
515
+ <div className="flex flex-col gap-2">
516
+ <Label htmlFor="filter-date-from">
517
+ Từ ngày
518
+ </Label>
519
+ <Input id="filter-date-from" type="date" />
520
+ </div>
521
+ <div className="flex flex-col gap-2">
522
+ <Label htmlFor="filter-date-to">Đến ngày</Label>
523
+ <Input id="filter-date-to" type="date" />
524
+ </div>
525
+ </div>
526
+ <SheetFooter>
527
+ <SheetClose render={<Button variant="outline" />}>
528
+ Xoá bộ lọc
529
+ </SheetClose>
530
+ <Button>Áp dụng</Button>
531
+ </SheetFooter>
532
+ </SheetContent>
533
+ </SheetPortal>
534
+ </Sheet>`}
487
535
  >
488
536
  <Sheet>
489
537
  <SheetTrigger render={<Button variant="outline" size={globalSize} />}>
@@ -1,4 +1,3 @@
1
- import { DocsP, ExampleSection, Showcase, ShowcaseDocs } from "../../dev/components/showcase";
2
1
  import { FolderIcon, Package2Icon, SettingsIcon, UserIcon } from "lucide-react";
3
2
 
4
3
  import {
@@ -9,6 +8,12 @@ import {
9
8
  SidebarMenuItemList,
10
9
  useSidebarToggle,
11
10
  } from "../../components/micro/sidebar";
11
+ import {
12
+ DocsP,
13
+ ExampleSection,
14
+ Showcase,
15
+ ShowcaseDocs,
16
+ } from "../../dev/components/showcase";
12
17
 
13
18
  function SidebarMicroShowcase() {
14
19
  const { sidebarRef, toggleSidebar, defaultState } =
@@ -107,10 +112,9 @@ export default function SidebarShowcase() {
107
112
  generalConcept={
108
113
  <ShowcaseDocs>
109
114
  <DocsP>
110
- Sidebar tối giản chỉ dùng CSS và DOM attribute để chuyển
111
- trạng thái expanded/collapsed. Không có JS transition, không
112
- re-render. Sử dụng useSidebarToggle hook để toggle bằng
113
- direct DOM mutation.
115
+ Sidebar tối giản chỉ dùng CSS và DOM attribute để chuyển trạng thái
116
+ expanded/collapsed. Không có JS transition, không re-render. Sử dụng
117
+ useSidebarToggle hook để toggle bằng direct DOM mutation.
114
118
  </DocsP>
115
119
  </ShowcaseDocs>
116
120
  }
@@ -20,14 +20,13 @@ function SkeletonMicroShowcase() {
20
20
  description="Thay đổi hình dạng thông qua các class Tailwind: w-..., h-..., rounded-full, v.v."
21
21
  fullWidth
22
22
  codeString={`<div className="flex flex-wrap items-center gap-6 w-full p-4 border border-border rounded-lg bg-card">
23
- <Skeleton className="h-4 w-48" />
24
- <Skeleton className="h-4 w-32" />
25
- <Skeleton className="h-4 w-64" />
26
- <Skeleton className="size-12 rounded-full" />
27
- <Skeleton className="h-24 w-40 rounded-xl" />
28
- <Skeleton className="h-10 w-24 rounded-md" />
29
- </div>
30
- `}
23
+ <Skeleton className="h-4 w-48" />
24
+ <Skeleton className="h-4 w-32" />
25
+ <Skeleton className="h-4 w-64" />
26
+ <Skeleton className="size-12 rounded-full" />
27
+ <Skeleton className="h-24 w-40 rounded-xl" />
28
+ <Skeleton className="h-10 w-24 rounded-md" />
29
+ </div>`}
31
30
  >
32
31
  <div className="flex flex-wrap items-center gap-6 w-full p-4 border border-border rounded-lg bg-card">
33
32
  <Skeleton className="h-4 w-48" />
@@ -44,19 +43,18 @@ function SkeletonMicroShowcase() {
44
43
  label="Card Profile"
45
44
  description="Khung xương mô phỏng ảnh đại diện, tên người dùng và số liệu."
46
45
  codeString={`<div className="space-y-6 w-full max-w-sm rounded-lg border border-border bg-card p-4">
47
- <div className="flex items-center space-x-4">
48
- <Skeleton className="h-12 w-12 rounded-full" />
49
- <div className="space-y-2">
50
- <Skeleton className="h-4 w-[200px]" />
51
- <Skeleton className="h-4 w-[150px]" />
46
+ <div className="flex items-center space-x-4">
47
+ <Skeleton className="h-12 w-12 rounded-full" />
48
+ <div className="space-y-2">
49
+ <Skeleton className="h-4 w-[200px]" />
50
+ <Skeleton className="h-4 w-[150px]" />
51
+ </div>
52
52
  </div>
53
- </div>
54
- <div className="grid grid-cols-2 gap-4">
55
- <Skeleton className="h-24 rounded-xl" />
56
- <Skeleton className="h-24 rounded-xl" />
57
- </div>
58
- </div>
59
- `}
53
+ <div className="grid grid-cols-2 gap-4">
54
+ <Skeleton className="h-24 rounded-xl" />
55
+ <Skeleton className="h-24 rounded-xl" />
56
+ </div>
57
+ </div>`}
60
58
  >
61
59
  <div className="space-y-6 w-full max-w-sm rounded-lg border border-border bg-card p-4">
62
60
  <div className="flex items-center space-x-4">
@@ -77,16 +75,15 @@ function SkeletonMicroShowcase() {
77
75
  label="Article / Blog Post"
78
76
  description="Khung xương mô phỏng các đoạn văn bản (text blocks)."
79
77
  codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
80
- <Skeleton className="h-6 w-3/4" />
81
- <Skeleton className="h-4 w-full" />
82
- <Skeleton className="h-4 w-full" />
83
- <Skeleton className="h-4 w-5/6" />
84
- <div className="pt-2" />
85
- <Skeleton className="h-4 w-full" />
86
- <Skeleton className="h-4 w-4/5" />
87
- <Skeleton className="h-4 w-2/3" />
88
- </div>
89
- `}
78
+ <Skeleton className="h-6 w-3/4" />
79
+ <Skeleton className="h-4 w-full" />
80
+ <Skeleton className="h-4 w-full" />
81
+ <Skeleton className="h-4 w-5/6" />
82
+ <div className="pt-2" />
83
+ <Skeleton className="h-4 w-full" />
84
+ <Skeleton className="h-4 w-4/5" />
85
+ <Skeleton className="h-4 w-2/3" />
86
+ </div>`}
90
87
  >
91
88
  <div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
92
89
  <Skeleton className="h-6 w-3/4" />
@@ -106,29 +103,28 @@ function SkeletonMicroShowcase() {
106
103
  label="List Items / Table Rows"
107
104
  description="Sử dụng vòng lặp hoặc nhiều thẻ lặp lại để mô phỏng danh sách."
108
105
  codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
109
- <div className="flex items-center space-x-4">
110
- <Skeleton className="h-8 w-8 rounded-full" />
111
- <div className="space-y-2">
112
- <Skeleton className="h-3 w-[180px]" />
113
- <Skeleton className="h-3 w-[100px]" />
106
+ <div className="flex items-center space-x-4">
107
+ <Skeleton className="h-8 w-8 rounded-full" />
108
+ <div className="space-y-2">
109
+ <Skeleton className="h-3 w-[180px]" />
110
+ <Skeleton className="h-3 w-[100px]" />
111
+ </div>
114
112
  </div>
115
- </div>
116
- <div className="flex items-center space-x-4">
117
- <Skeleton className="h-8 w-8 rounded-full" />
118
- <div className="space-y-2">
119
- <Skeleton className="h-3 w-[150px]" />
120
- <Skeleton className="h-3 w-[120px]" />
113
+ <div className="flex items-center space-x-4">
114
+ <Skeleton className="h-8 w-8 rounded-full" />
115
+ <div className="space-y-2">
116
+ <Skeleton className="h-3 w-[150px]" />
117
+ <Skeleton className="h-3 w-[120px]" />
118
+ </div>
121
119
  </div>
122
- </div>
123
- <div className="flex items-center space-x-4">
124
- <Skeleton className="h-8 w-8 rounded-full" />
125
- <div className="space-y-2">
126
- <Skeleton className="h-3 w-[170px]" />
127
- <Skeleton className="h-3 w-[90px]" />
120
+ <div className="flex items-center space-x-4">
121
+ <Skeleton className="h-8 w-8 rounded-full" />
122
+ <div className="space-y-2">
123
+ <Skeleton className="h-3 w-[170px]" />
124
+ <Skeleton className="h-3 w-[90px]" />
125
+ </div>
128
126
  </div>
129
- </div>
130
- </div>
131
- `}
127
+ </div>`}
132
128
  >
133
129
  <div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
134
130
  <div className="flex items-center space-x-4">
@@ -159,16 +155,15 @@ function SkeletonMicroShowcase() {
159
155
  label="Media / Image Placeholder"
160
156
  description="Khung xương lớn mô phỏng hình ảnh hoặc video player."
161
157
  codeString={`<div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
162
- <Skeleton className="h-48 w-full rounded-md" />
163
- <div className="flex justify-between items-center pt-2">
164
- <div className="space-y-2">
165
- <Skeleton className="h-4 w-[150px]" />
166
- <Skeleton className="h-3 w-[100px]" />
158
+ <Skeleton className="h-48 w-full rounded-md" />
159
+ <div className="flex justify-between items-center pt-2">
160
+ <div className="space-y-2">
161
+ <Skeleton className="h-4 w-[150px]" />
162
+ <Skeleton className="h-3 w-[100px]" />
163
+ </div>
164
+ <Skeleton className="h-8 w-16 rounded-md" />
167
165
  </div>
168
- <Skeleton className="h-8 w-16 rounded-md" />
169
- </div>
170
- </div>
171
- `}
166
+ </div>`}
172
167
  >
173
168
  <div className="space-y-4 w-full max-w-sm rounded-lg border border-border bg-card p-4">
174
169
  <Skeleton className="h-48 w-full rounded-md" />