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
@@ -26,14 +26,13 @@ function AspectRatioMicroShowcase() {
26
26
  label="16:9"
27
27
  description="Widescreen — dùng cho video, hero banner"
28
28
  codeString={`<AspectRatio
29
- ratio={16 / 9}
30
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
31
- >
32
- <span className="text-foreground font-mono text-lg font-semibold">
33
- 16:9
34
- </span>
35
- </AspectRatio>
36
- `}
29
+ ratio={16 / 9}
30
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
31
+ >
32
+ <span className="text-foreground font-mono text-lg font-semibold">
33
+ 16:9
34
+ </span>
35
+ </AspectRatio>`}
37
36
  >
38
37
  <AspectRatio
39
38
  ratio={16 / 9}
@@ -49,14 +48,13 @@ function AspectRatioMicroShowcase() {
49
48
  label="4:3"
50
49
  description="Classic — bài thuyết trình, TV cũ"
51
50
  codeString={`<AspectRatio
52
- ratio={4 / 3}
53
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
54
- >
55
- <span className="text-foreground font-mono text-lg font-semibold">
56
- 4:3
57
- </span>
58
- </AspectRatio>
59
- `}
51
+ ratio={4 / 3}
52
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
53
+ >
54
+ <span className="text-foreground font-mono text-lg font-semibold">
55
+ 4:3
56
+ </span>
57
+ </AspectRatio>`}
60
58
  >
61
59
  <AspectRatio
62
60
  ratio={4 / 3}
@@ -72,14 +70,13 @@ function AspectRatioMicroShowcase() {
72
70
  label="1:1"
73
71
  description="Vuông — avatar, social media"
74
72
  codeString={`<AspectRatio
75
- ratio={1}
76
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
77
- >
78
- <span className="text-foreground font-mono text-lg font-semibold">
79
- 1:1
80
- </span>
81
- </AspectRatio>
82
- `}
73
+ ratio={1}
74
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-border w-full"
75
+ >
76
+ <span className="text-foreground font-mono text-lg font-semibold">
77
+ 1:1
78
+ </span>
79
+ </AspectRatio>`}
83
80
  >
84
81
  <AspectRatio
85
82
  ratio={1}
@@ -98,16 +95,15 @@ function AspectRatioMicroShowcase() {
98
95
  label="16:9 Image"
99
96
  description="Tỷ lệ khung hình hạn chế hình ảnh 16:9."
100
97
  codeString={`<AspectRatio
101
- ratio={16 / 9}
102
- className="rounded-xl overflow-hidden w-full"
103
- >
104
- <img
105
- src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
106
- alt="Landscape photo"
107
- className="w-full h-full object-cover"
108
- />
109
- </AspectRatio>
110
- `}
98
+ ratio={16 / 9}
99
+ className="rounded-xl overflow-hidden w-full"
100
+ >
101
+ <img
102
+ src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
103
+ alt="Landscape photo"
104
+ className="w-full h-full object-cover"
105
+ />
106
+ </AspectRatio>`}
111
107
  >
112
108
  <AspectRatio
113
109
  ratio={16 / 9}
@@ -124,14 +120,16 @@ function AspectRatioMicroShowcase() {
124
120
  <ExampleSection
125
121
  label="1:1 Image"
126
122
  description="Tỷ lệ khung hình vuông cho avatar hoặc social post."
127
- codeString={`<AspectRatio ratio={1} className="rounded-xl overflow-hidden w-full">
128
- <img
129
- src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
130
- alt="Square cropped photo"
131
- className="w-full h-full object-cover"
132
- />
133
- </AspectRatio>
134
- `}
123
+ codeString={`<AspectRatio
124
+ ratio={1}
125
+ className="rounded-xl overflow-hidden w-full"
126
+ >
127
+ <img
128
+ src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
129
+ alt="Square cropped photo"
130
+ className="w-full h-full object-cover"
131
+ />
132
+ </AspectRatio>`}
135
133
  >
136
134
  <AspectRatio ratio={1} className="rounded-xl overflow-hidden w-full">
137
135
  <img
@@ -149,26 +147,27 @@ function AspectRatioMicroShowcase() {
149
147
  label="Video Embed"
150
148
  description="Duy trì tỷ lệ 16:9 cho video nhúng."
151
149
  codeString={`<AspectRatio
152
- ratio={16 / 9}
153
- className="rounded-xl overflow-hidden bg-muted border border-border w-full"
154
- >
155
- <div className="w-full h-full flex flex-col items-center justify-center gap-2 text-muted-foreground">
156
- <svg
157
- width="48"
158
- height="48"
159
- viewBox="0 0 24 24"
160
- fill="none"
161
- stroke="currentColor"
162
- strokeWidth="1.5"
163
- strokeLinecap="round"
164
- strokeLinejoin="round"
165
- >
166
- <polygon points="5 3 19 12 5 21 5 3" />
167
- </svg>
168
- <span className="text-xs font-mono">iframe / video</span>
169
- </div>
170
- </AspectRatio>
171
- `}
150
+ ratio={16 / 9}
151
+ className="rounded-xl overflow-hidden bg-muted border border-border w-full"
152
+ >
153
+ <div className="w-full h-full flex flex-col items-center justify-center gap-2 text-muted-foreground">
154
+ <svg
155
+ width="48"
156
+ height="48"
157
+ viewBox="0 0 24 24"
158
+ fill="none"
159
+ stroke="currentColor"
160
+ strokeWidth="1.5"
161
+ strokeLinecap="round"
162
+ strokeLinejoin="round"
163
+ >
164
+ <polygon points="5 3 19 12 5 21 5 3" />
165
+ </svg>
166
+ <span className="text-xs font-mono">
167
+ iframe / video
168
+ </span>
169
+ </div>
170
+ </AspectRatio>`}
172
171
  >
173
172
  <AspectRatio
174
173
  ratio={16 / 9}
@@ -196,28 +195,29 @@ function AspectRatioMicroShowcase() {
196
195
  label="Map Embed"
197
196
  description="Duy trì tỷ lệ 4:3 cho bản đồ nhúng."
198
197
  codeString={`<AspectRatio
199
- ratio={4 / 3}
200
- className="rounded-xl overflow-hidden bg-muted border border-border w-full"
201
- >
202
- <div className="w-full h-full flex flex-col items-center justify-center gap-2 text-muted-foreground">
203
- <svg
204
- width="48"
205
- height="48"
206
- viewBox="0 0 24 24"
207
- fill="none"
208
- stroke="currentColor"
209
- strokeWidth="1.5"
210
- strokeLinecap="round"
211
- strokeLinejoin="round"
212
- >
213
- <polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6" />
214
- <line x1="8" y1="2" x2="8" y2="18" />
215
- <line x1="16" y1="6" x2="16" y2="22" />
216
- </svg>
217
- <span className="text-xs font-mono">map / iframe</span>
218
- </div>
219
- </AspectRatio>
220
- `}
198
+ ratio={4 / 3}
199
+ className="rounded-xl overflow-hidden bg-muted border border-border w-full"
200
+ >
201
+ <div className="w-full h-full flex flex-col items-center justify-center gap-2 text-muted-foreground">
202
+ <svg
203
+ width="48"
204
+ height="48"
205
+ viewBox="0 0 24 24"
206
+ fill="none"
207
+ stroke="currentColor"
208
+ strokeWidth="1.5"
209
+ strokeLinecap="round"
210
+ strokeLinejoin="round"
211
+ >
212
+ <polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6" />
213
+ <line x1="8" y1="2" x2="8" y2="18" />
214
+ <line x1="16" y1="6" x2="16" y2="22" />
215
+ </svg>
216
+ <span className="text-xs font-mono">
217
+ map / iframe
218
+ </span>
219
+ </div>
220
+ </AspectRatio>`}
221
221
  >
222
222
  <AspectRatio
223
223
  ratio={4 / 3}
@@ -250,14 +250,13 @@ function AspectRatioMicroShowcase() {
250
250
  label="Ratio 2.35"
251
251
  description="Custom ratio 2.35"
252
252
  codeString={`<AspectRatio
253
- ratio={2.35}
254
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
255
- >
256
- <span className="text-muted-foreground font-mono text-sm">
257
253
  ratio={2.35}
258
- </span>
259
- </AspectRatio>
260
- `}
254
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
255
+ >
256
+ <span className="text-muted-foreground font-mono text-sm">
257
+ ratio={2.35}
258
+ </span>
259
+ </AspectRatio>`}
261
260
  >
262
261
  <AspectRatio
263
262
  ratio={2.35}
@@ -272,14 +271,13 @@ function AspectRatioMicroShowcase() {
272
271
  label="Ratio 1.85"
273
272
  description="Custom ratio 1.85"
274
273
  codeString={`<AspectRatio
275
- ratio={1.85}
276
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
277
- >
278
- <span className="text-muted-foreground font-mono text-sm">
279
274
  ratio={1.85}
280
- </span>
281
- </AspectRatio>
282
- `}
275
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
276
+ >
277
+ <span className="text-muted-foreground font-mono text-sm">
278
+ ratio={1.85}
279
+ </span>
280
+ </AspectRatio>`}
283
281
  >
284
282
  <AspectRatio
285
283
  ratio={1.85}
@@ -294,14 +292,13 @@ function AspectRatioMicroShowcase() {
294
292
  label="Ratio 0.8"
295
293
  description="Custom ratio 0.8"
296
294
  codeString={`<AspectRatio
297
- ratio={0.8}
298
- className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
299
- >
300
- <span className="text-muted-foreground font-mono text-sm">
301
295
  ratio={0.8}
302
- </span>
303
- </AspectRatio>
304
- `}
296
+ className="bg-muted rounded-xl overflow-hidden flex items-center justify-center border border-dashed border-border w-full"
297
+ >
298
+ <span className="text-muted-foreground font-mono text-sm">
299
+ ratio={0.8}
300
+ </span>
301
+ </AspectRatio>`}
305
302
  >
306
303
  <AspectRatio
307
304
  ratio={0.8}