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,17 +1,5 @@
1
- import { useDevContext } from "../../dev/components/dev-context";
2
1
  import { useState } from "react";
3
2
 
4
- import {
5
- DocsCode,
6
- DocsH3,
7
- DocsLi,
8
- DocsP,
9
- DocsUl,
10
- ExampleGrid,
11
- ExampleSection,
12
- Showcase,
13
- ShowcaseDocs,
14
- } from "../../dev/components/showcase";
15
3
  import {
16
4
  DollarSignIcon,
17
5
  EyeIcon,
@@ -31,6 +19,18 @@ import {
31
19
  InputGroupText,
32
20
  InputGroupTextarea,
33
21
  } from "../../components/micro/input-group";
22
+ import { useDevContext } from "../../dev/components/dev-context";
23
+ import {
24
+ DocsCode,
25
+ DocsH3,
26
+ DocsLi,
27
+ DocsP,
28
+ DocsUl,
29
+ ExampleGrid,
30
+ ExampleSection,
31
+ Showcase,
32
+ ShowcaseDocs,
33
+ } from "../../dev/components/showcase";
34
34
  import { type Size } from "../../lib/types";
35
35
 
36
36
  function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
@@ -46,14 +46,17 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
46
46
  label="Text Prefix & Suffix"
47
47
  description="InputGroupAddon với văn bản — click addon để focus input."
48
48
  codeString={`<InputGroup size="md">
49
- <InputGroupAddon>
50
- <InputGroupText>https://</InputGroupText>
51
- </InputGroupAddon>
52
- <InputGroupInput id="url-input" placeholder="example.com" />
53
- <InputGroupAddon align="end">
54
- <InputGroupText>.vn</InputGroupText>
55
- </InputGroupAddon>
56
- </InputGroup>`}
49
+ <InputGroupAddon>
50
+ <InputGroupText>https://</InputGroupText>
51
+ </InputGroupAddon>
52
+ <InputGroupInput
53
+ id="url-input"
54
+ placeholder="example.com"
55
+ />
56
+ <InputGroupAddon align="end">
57
+ <InputGroupText>.vn</InputGroupText>
58
+ </InputGroupAddon>
59
+ </InputGroup>`}
57
60
  >
58
61
  <InputGroup size={globalSize} className="w-full">
59
62
  <InputGroupAddon>
@@ -70,16 +73,16 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
70
73
  label="Icon Prefix & Text Suffix"
71
74
  description="InputGroupAddon với icon — thường dùng cho tiền tệ, số lượng."
72
75
  codeString={`<InputGroup size="md">
73
- <InputGroupAddon>
74
- <InputGroupText>
75
- <DollarSignIcon aria-hidden="true" />
76
- </InputGroupText>
77
- </InputGroupAddon>
78
- <InputGroupInput id="price-input" placeholder="0.00" />
79
- <InputGroupAddon align="end">
80
- <InputGroupText>USD</InputGroupText>
81
- </InputGroupAddon>
82
- </InputGroup>`}
76
+ <InputGroupAddon>
77
+ <InputGroupText>
78
+ <DollarSignIcon aria-hidden="true" />
79
+ </InputGroupText>
80
+ </InputGroupAddon>
81
+ <InputGroupInput id="price-input" placeholder="0.00" />
82
+ <InputGroupAddon align="end">
83
+ <InputGroupText>USD</InputGroupText>
84
+ </InputGroupAddon>
85
+ </InputGroup>`}
83
86
  >
84
87
  <InputGroup size={globalSize} className="w-full">
85
88
  <InputGroupAddon>
@@ -101,21 +104,24 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
101
104
  label="Password Toggle"
102
105
  description="InputGroupButton icon đặt trực tiếp trong InputGroup — tự có border-l border-l-border phân tách."
103
106
  codeString={`const [show, setShow] = useState(false);
104
-
105
- <InputGroup size="md">
106
- <InputGroupInput
107
- id="password-input"
108
- type={show ? "text" : "password"}
109
- placeholder="••••••••"
110
- />
111
- <InputGroupButton
112
- icon
113
- aria-label={show ? "Hide password" : "Show password"}
114
- onClick={() => setShow((p) => !p)}
115
- >
116
- {show ? <EyeOffIcon aria-hidden="true" /> : <EyeIcon aria-hidden="true" />}
117
- </InputGroupButton>
118
- </InputGroup>`}
107
+ <InputGroup size="md">
108
+ <InputGroupInput
109
+ id="password-input"
110
+ type={show ? "text" : "password"}
111
+ placeholder="••••••••"
112
+ />
113
+ <InputGroupButton
114
+ icon
115
+ aria-label={show ? "Hide password" : "Show password"}
116
+ onClick={() => setShow((p) => !p)}
117
+ >
118
+ {show ? (
119
+ <EyeOffIcon aria-hidden="true" />
120
+ ) : (
121
+ <EyeIcon aria-hidden="true" />
122
+ )}
123
+ </InputGroupButton>
124
+ </InputGroup>`}
119
125
  >
120
126
  <InputGroup size={globalSize} className="w-full">
121
127
  <InputGroupInput
@@ -141,25 +147,28 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
141
147
  label="Clear Button"
142
148
  description="InputGroupButton icon để xoá nhanh nội dung — hiện có điều kiện."
143
149
  codeString={`const [value, setValue] = useState("");
144
-
145
- <InputGroup size="md">
146
- <InputGroupAddon>
147
- <InputGroupText>
148
- <SearchIcon aria-hidden="true" />
149
- </InputGroupText>
150
- </InputGroupAddon>
151
- <InputGroupInput
152
- id="search-input"
153
- value={value}
154
- onChange={(e) => setValue(e.target.value)}
155
- placeholder="Search..."
156
- />
157
- {value && (
158
- <InputGroupButton icon aria-label="Clear" onClick={() => setValue("")}>
159
- <XIcon aria-hidden="true" />
160
- </InputGroupButton>
161
- )}
162
- </InputGroup>`}
150
+ <InputGroup size="md">
151
+ <InputGroupAddon>
152
+ <InputGroupText>
153
+ <SearchIcon aria-hidden="true" />
154
+ </InputGroupText>
155
+ </InputGroupAddon>
156
+ <InputGroupInput
157
+ id="search-input"
158
+ value={value}
159
+ onChange={(e) => setValue(e.target.value)}
160
+ placeholder="Search..."
161
+ />
162
+ {value && (
163
+ <InputGroupButton
164
+ icon
165
+ aria-label="Clear"
166
+ onClick={() => setValue("")}
167
+ >
168
+ <XIcon aria-hidden="true" />
169
+ </InputGroupButton>
170
+ )}
171
+ </InputGroup>`}
163
172
  >
164
173
  <InputGroup size={globalSize} className="w-full">
165
174
  <InputGroupAddon>
@@ -192,11 +201,14 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
192
201
  label="Text Button (non-icon)"
193
202
  description="InputGroupButton không có prop icon — dùng horizontal padding và font-size từ group."
194
203
  codeString={`<InputGroup size="md">
195
- <InputGroupInput id="find-input" placeholder="Search..." />
196
- <InputGroupButton variant="solid">
197
- <SearchIcon aria-hidden="true" /> Find
198
- </InputGroupButton>
199
- </InputGroup>`}
204
+ <InputGroupInput
205
+ id="find-input"
206
+ placeholder="Search..."
207
+ />
208
+ <InputGroupButton variant="solid">
209
+ <SearchIcon aria-hidden="true" /> Find
210
+ </InputGroupButton>
211
+ </InputGroup>`}
200
212
  >
201
213
  <InputGroup size={globalSize} className="w-full">
202
214
  <InputGroupInput id="ig-find" placeholder="Search..." />
@@ -210,30 +222,29 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
210
222
  label="Both Ends — Counter"
211
223
  description="Button ở cả 2 đầu — border-r border-r-border (start) và border-l border-l-border (end) tự động theo vị trí DOM."
212
224
  codeString={`const [count, setCount] = useState(0);
213
-
214
- <InputGroup size="md">
215
- <InputGroupButton
216
- icon
217
- aria-label="Decrement"
218
- onClick={() => setCount((c) => c - 1)}
219
- >
220
- <MinusIcon aria-hidden="true" />
221
- </InputGroupButton>
222
- <InputGroupInput
223
- id="counter-input"
224
- type="number"
225
- value={count}
226
- onChange={(e) => setCount(Number(e.target.value))}
227
- className="text-center"
228
- />
229
- <InputGroupButton
230
- icon
231
- aria-label="Increment"
232
- onClick={() => setCount((c) => c + 1)}
233
- >
234
- <PlusIcon aria-hidden="true" />
235
- </InputGroupButton>
236
- </InputGroup>`}
225
+ <InputGroup size="md">
226
+ <InputGroupButton
227
+ icon
228
+ aria-label="Decrement"
229
+ onClick={() => setCount((c) => c - 1)}
230
+ >
231
+ <MinusIcon aria-hidden="true" />
232
+ </InputGroupButton>
233
+ <InputGroupInput
234
+ id="counter-input"
235
+ type="number"
236
+ value={count}
237
+ onChange={(e) => setCount(Number(e.target.value))}
238
+ className="text-center"
239
+ />
240
+ <InputGroupButton
241
+ icon
242
+ aria-label="Increment"
243
+ onClick={() => setCount((c) => c + 1)}
244
+ >
245
+ <PlusIcon aria-hidden="true" />
246
+ </InputGroupButton>
247
+ </InputGroup>`}
237
248
  >
238
249
  <InputGroup size={globalSize} className="w-full">
239
250
  <InputGroupButton
@@ -266,54 +277,72 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
266
277
  label="Button Variants"
267
278
  description="InputGroupButton hỗ trợ 4 variants: ghost (default), solid, soft, outline. Demo với icon và text mode."
268
279
  codeString={`{/* icon mode — 4 variants */}
269
- <InputGroup size="md">
270
- <InputGroupInput placeholder="ghost" />
271
- <InputGroupButton icon variant="ghost" aria-label="Search">
272
- <SearchIcon aria-hidden="true" />
273
- </InputGroupButton>
274
- </InputGroup>
280
+ <InputGroup size="md">
281
+ <InputGroupInput placeholder="ghost" />
282
+ <InputGroupButton
283
+ icon
284
+ variant="ghost"
285
+ aria-label="Search"
286
+ >
287
+ <SearchIcon aria-hidden="true" />
288
+ </InputGroupButton>
289
+ </InputGroup>
275
290
 
276
- <InputGroup size="md">
277
- <InputGroupInput placeholder="solid" />
278
- <InputGroupButton icon variant="solid" aria-label="Search">
279
- <SearchIcon aria-hidden="true" />
280
- </InputGroupButton>
281
- </InputGroup>
291
+ <InputGroup size="md">
292
+ <InputGroupInput placeholder="solid" />
293
+ <InputGroupButton
294
+ icon
295
+ variant="solid"
296
+ aria-label="Search"
297
+ >
298
+ <SearchIcon aria-hidden="true" />
299
+ </InputGroupButton>
300
+ </InputGroup>
282
301
 
283
- <InputGroup size="md">
284
- <InputGroupInput placeholder="soft" />
285
- <InputGroupButton icon variant="soft" aria-label="Search">
286
- <SearchIcon aria-hidden="true" />
287
- </InputGroupButton>
288
- </InputGroup>
302
+ <InputGroup size="md">
303
+ <InputGroupInput placeholder="soft" />
304
+ <InputGroupButton
305
+ icon
306
+ variant="soft"
307
+ aria-label="Search"
308
+ >
309
+ <SearchIcon aria-hidden="true" />
310
+ </InputGroupButton>
311
+ </InputGroup>
289
312
 
290
- <InputGroup size="md">
291
- <InputGroupInput placeholder="outline" />
292
- <InputGroupButton icon variant="outline" aria-label="Search">
293
- <SearchIcon aria-hidden="true" />
294
- </InputGroupButton>
295
- </InputGroup>
313
+ <InputGroup size="md">
314
+ <InputGroupInput placeholder="outline" />
315
+ <InputGroupButton
316
+ icon
317
+ variant="outline"
318
+ aria-label="Search"
319
+ >
320
+ <SearchIcon aria-hidden="true" />
321
+ </InputGroupButton>
322
+ </InputGroup>
296
323
 
297
- {/* text mode — 4 variants */}
298
- <InputGroup size="md">
299
- <InputGroupInput placeholder="ghost text" />
300
- <InputGroupButton variant="ghost">Go</InputGroupButton>
301
- </InputGroup>
324
+ {/* text mode — 4 variants */}
325
+ <InputGroup size="md">
326
+ <InputGroupInput placeholder="ghost text" />
327
+ <InputGroupButton variant="ghost">Go</InputGroupButton>
328
+ </InputGroup>
302
329
 
303
- <InputGroup size="md">
304
- <InputGroupInput placeholder="solid text" />
305
- <InputGroupButton variant="solid">Go</InputGroupButton>
306
- </InputGroup>
330
+ <InputGroup size="md">
331
+ <InputGroupInput placeholder="solid text" />
332
+ <InputGroupButton variant="solid">Go</InputGroupButton>
333
+ </InputGroup>
307
334
 
308
- <InputGroup size="md">
309
- <InputGroupInput placeholder="soft text" />
310
- <InputGroupButton variant="soft">Go</InputGroupButton>
311
- </InputGroup>
335
+ <InputGroup size="md">
336
+ <InputGroupInput placeholder="soft text" />
337
+ <InputGroupButton variant="soft">Go</InputGroupButton>
338
+ </InputGroup>
312
339
 
313
- <InputGroup size="md">
314
- <InputGroupInput placeholder="outline text" />
315
- <InputGroupButton variant="outline">Go</InputGroupButton>
316
- </InputGroup>`}
340
+ <InputGroup size="md">
341
+ <InputGroupInput placeholder="outline text" />
342
+ <InputGroupButton variant="outline">
343
+ Go
344
+ </InputGroupButton>
345
+ </InputGroup>`}
317
346
  fullWidth
318
347
  >
319
348
  <div className="grid grid-cols-2 gap-3 sm:grid-cols-4">
@@ -368,13 +397,17 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
368
397
  label="Disabled"
369
398
  description="Trạng thái disabled delegate lên wrapper qua has-disabled: — toàn bộ group mờ đi."
370
399
  codeString={`<InputGroup size="md">
371
- <InputGroupAddon>
372
- <InputGroupText>
373
- <GlobeIcon aria-hidden="true" />
374
- </InputGroupText>
375
- </InputGroupAddon>
376
- <InputGroupInput id="disabled-input" placeholder="Disabled" disabled />
377
- </InputGroup>`}
400
+ <InputGroupAddon>
401
+ <InputGroupText>
402
+ <GlobeIcon aria-hidden="true" />
403
+ </InputGroupText>
404
+ </InputGroupAddon>
405
+ <InputGroupInput
406
+ id="disabled-input"
407
+ placeholder="Disabled"
408
+ disabled
409
+ />
410
+ </InputGroup>`}
378
411
  >
379
412
  <InputGroup size={globalSize} className="w-full">
380
413
  <InputGroupAddon>
@@ -390,16 +423,16 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
390
423
  label="Invalid / Error"
391
424
  description="aria-invalid='true' trên input delegate border border-border đỏ lên toàn bộ wrapper qua has-[...aria-invalid]."
392
425
  codeString={`<InputGroup size="md">
393
- <InputGroupAddon>
394
- <InputGroupText>$</InputGroupText>
395
- </InputGroupAddon>
396
- <InputGroupInput
397
- id="error-input"
398
- aria-invalid="true"
399
- defaultValue="abc"
400
- placeholder="0.00"
401
- />
402
- </InputGroup>`}
426
+ <InputGroupAddon>
427
+ <InputGroupText>$</InputGroupText>
428
+ </InputGroupAddon>
429
+ <InputGroupInput
430
+ id="error-input"
431
+ aria-invalid="true"
432
+ defaultValue="abc"
433
+ placeholder="0.00"
434
+ />
435
+ </InputGroup>`}
403
436
  >
404
437
  <InputGroup size={globalSize} className="w-full">
405
438
  <InputGroupAddon>
@@ -420,15 +453,15 @@ function InputGroupMicroShowcase({ globalSize }: { globalSize: Size }) {
420
453
  label="With Textarea"
421
454
  description="InputGroupTextarea — InputGroup wrapper tự co giãn chiều cao với className='h-auto'."
422
455
  codeString={`<InputGroup size="md" className="h-auto">
423
- <InputGroupAddon className="self-start">
424
- <InputGroupText>@</InputGroupText>
425
- </InputGroupAddon>
426
- <InputGroupTextarea
427
- id="comment-input"
428
- placeholder="Write a comment..."
429
- rows={4}
430
- />
431
- </InputGroup>`}
456
+ <InputGroupAddon className="self-start">
457
+ <InputGroupText>@</InputGroupText>
458
+ </InputGroupAddon>
459
+ <InputGroupTextarea
460
+ id="comment-input"
461
+ placeholder="Write a comment..."
462
+ rows={4}
463
+ />
464
+ </InputGroup>`}
432
465
  >
433
466
  <InputGroup size={globalSize} className="h-auto w-full">
434
467
  <InputGroupAddon className="self-start">