gladvn 0.2.22 → 0.2.27

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 (463) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +70 -58
  3. package/bin/cli.js +352 -150
  4. package/llms.txt +7 -5
  5. package/package.json +14 -26
  6. package/src/blocks/auth-card.tsx +104 -0
  7. package/src/blocks/auth-dialog.tsx +116 -0
  8. package/src/blocks/auth-recovery.tsx +61 -0
  9. package/src/blocks/auth-split.tsx +132 -0
  10. package/src/blocks/dashboard.tsx +182 -0
  11. package/src/blocks/settings.tsx +104 -0
  12. package/src/components/macro/accordion-preset.tsx +2 -1
  13. package/src/components/macro/alert-dialog-preset.tsx +3 -2
  14. package/src/components/macro/alert-preset.tsx +2 -1
  15. package/src/components/macro/avatar-preset.tsx +2 -1
  16. package/src/components/macro/breadcrumb-preset.tsx +2 -1
  17. package/src/components/macro/card-preset.tsx +2 -1
  18. package/src/components/macro/carousel-preset.tsx +2 -1
  19. package/src/components/macro/checkbox-preset.tsx +2 -1
  20. package/src/components/macro/combobox-preset.tsx +5 -3
  21. package/src/components/macro/command-preset.tsx +7 -4
  22. package/src/components/macro/date-picker.tsx +3 -2
  23. package/src/components/macro/dialog-preset.tsx +3 -2
  24. package/src/components/macro/empty-preset.tsx +2 -1
  25. package/src/components/macro/field-preset.tsx +2 -1
  26. package/src/components/macro/input-otp-preset.tsx +2 -1
  27. package/src/components/macro/input-preset.tsx +2 -1
  28. package/src/components/macro/pagination-preset.tsx +2 -1
  29. package/src/components/macro/progress-preset.tsx +2 -1
  30. package/src/components/macro/select-preset.tsx +3 -2
  31. package/src/components/macro/slider-preset.tsx +2 -1
  32. package/src/components/macro/switch-preset.tsx +2 -1
  33. package/src/components/macro/tabs-preset.tsx +2 -1
  34. package/src/components/micro/accordion.test.tsx +96 -0
  35. package/src/components/micro/alert-dialog.tsx +1 -1
  36. package/src/components/micro/alert.test.tsx +77 -0
  37. package/src/components/micro/avatar.tsx +1 -1
  38. package/src/components/micro/badge.test.tsx +57 -0
  39. package/src/components/micro/breadcrumb.tsx +1 -1
  40. package/src/components/micro/button.test.tsx +101 -4
  41. package/src/components/micro/card.test.tsx +54 -0
  42. package/src/components/micro/card.tsx +1 -1
  43. package/src/components/micro/carousel.tsx +1 -1
  44. package/src/components/micro/chart.tsx +1 -1
  45. package/src/components/micro/checkbox.test.tsx +92 -0
  46. package/src/components/micro/combobox.tsx +1 -1
  47. package/src/components/micro/command.tsx +1 -1
  48. package/src/components/micro/context-menu.tsx +1 -1
  49. package/src/components/micro/dialog.test.tsx +127 -0
  50. package/src/components/micro/dialog.tsx +1 -1
  51. package/src/components/micro/direction.tsx +1 -1
  52. package/src/components/micro/drawer.tsx +2 -2
  53. package/src/components/micro/dropdown-menu.test.tsx +132 -0
  54. package/src/components/micro/dropdown-menu.tsx +1 -1
  55. package/src/components/micro/empty.tsx +1 -1
  56. package/src/components/micro/field.tsx +1 -1
  57. package/src/components/micro/input-group.tsx +1 -1
  58. package/src/components/micro/input.test.tsx +95 -0
  59. package/src/components/micro/item.tsx +1 -1
  60. package/src/components/micro/menubar.tsx +1 -1
  61. package/src/components/micro/navigation-menu.tsx +1 -1
  62. package/src/components/micro/pagination.tsx +1 -1
  63. package/src/components/micro/popover.test.tsx +83 -0
  64. package/src/components/micro/popover.tsx +1 -1
  65. package/src/components/micro/progress.tsx +1 -1
  66. package/src/components/micro/select.test.tsx +122 -0
  67. package/src/components/micro/select.tsx +1 -1
  68. package/src/components/micro/sheet.test.tsx +122 -0
  69. package/src/components/micro/sheet.tsx +1 -1
  70. package/src/components/micro/sidebar.tsx +1 -1
  71. package/src/components/micro/switch.test.tsx +108 -0
  72. package/src/components/micro/table.tsx +1 -1
  73. package/src/components/micro/tabs.test.tsx +90 -0
  74. package/src/components/micro/tooltip.test.tsx +107 -0
  75. package/src/components/micro/tooltip.tsx +1 -1
  76. package/src/dev/data.ts +8 -0
  77. package/src/dev/main.tsx +4 -0
  78. package/src/dev/showcase/accordion.tsx +4 -2
  79. package/src/dev/showcase/alert-dialog.tsx +7 -4
  80. package/src/dev/showcase/alert.tsx +6 -3
  81. package/src/dev/showcase/aspect-ratio.tsx +2 -1
  82. package/src/dev/showcase/avatar.tsx +6 -3
  83. package/src/dev/showcase/badge.tsx +2 -1
  84. package/src/dev/showcase/breadcrumb.tsx +7 -4
  85. package/src/dev/showcase/button.tsx +2 -1
  86. package/src/dev/showcase/calendar.tsx +2 -1
  87. package/src/dev/showcase/card.tsx +4 -2
  88. package/src/dev/showcase/carousel.tsx +4 -2
  89. package/src/dev/showcase/chart.tsx +4 -2
  90. package/src/dev/showcase/checkbox.tsx +4 -2
  91. package/src/dev/showcase/collapsible.tsx +4 -2
  92. package/src/dev/showcase/combobox.tsx +9 -5
  93. package/src/dev/showcase/command.tsx +6 -3
  94. package/src/dev/showcase/context-menu.tsx +5 -3
  95. package/src/dev/showcase/dialog.tsx +5 -3
  96. package/src/dev/showcase/drawer.tsx +5 -3
  97. package/src/dev/showcase/dropdown-menu.tsx +7 -4
  98. package/src/dev/showcase/empty.tsx +6 -3
  99. package/src/dev/showcase/hover-card.tsx +7 -4
  100. package/src/dev/showcase/input-group.tsx +6 -3
  101. package/src/dev/showcase/input-otp.tsx +6 -3
  102. package/src/dev/showcase/input.tsx +6 -3
  103. package/src/dev/showcase/item.tsx +4 -2
  104. package/src/dev/showcase/kbd.tsx +10 -6
  105. package/src/dev/showcase/label.tsx +2 -1
  106. package/src/dev/showcase/menubar.tsx +5 -3
  107. package/src/dev/showcase/navigation-menu.tsx +5 -3
  108. package/src/dev/showcase/overview.tsx +9 -5
  109. package/src/dev/showcase/pagination.tsx +4 -2
  110. package/src/dev/showcase/popover.tsx +5 -3
  111. package/src/dev/showcase/progress.tsx +4 -2
  112. package/src/dev/showcase/radio-group.tsx +2 -1
  113. package/src/dev/showcase/resizable.tsx +4 -2
  114. package/src/dev/showcase/scroll-area.tsx +2 -1
  115. package/src/dev/showcase/select.tsx +7 -4
  116. package/src/dev/showcase/separator.tsx +2 -1
  117. package/src/dev/showcase/sheet.tsx +5 -3
  118. package/src/dev/showcase/sidebar.tsx +4 -2
  119. package/src/dev/showcase/skeleton.tsx +2 -1
  120. package/src/dev/showcase/slider.tsx +6 -3
  121. package/src/dev/showcase/sonner.tsx +2 -1
  122. package/src/dev/showcase/spinner.tsx +2 -1
  123. package/src/dev/showcase/switch.tsx +2 -1
  124. package/src/dev/showcase/table.tsx +4 -2
  125. package/src/dev/showcase/tabs.tsx +4 -2
  126. package/src/dev/showcase/textarea.tsx +6 -3
  127. package/src/dev/showcase/toast.tsx +2 -1
  128. package/src/dev/showcase/toggle-group.tsx +6 -3
  129. package/src/dev/showcase/toggle.tsx +2 -1
  130. package/src/dev/showcase/tooltip.tsx +5 -3
  131. package/src/dev/showcase/why.tsx +271 -0
  132. package/src/hooks/use-mobile.test.ts +72 -0
  133. package/src/lib/utils.test.ts +26 -10
  134. package/src/styles/gladvn.css +0 -1
  135. package/src/styles/tokens.css +4 -0
  136. package/dist/components/macro/accordion-preset.d.ts +0 -14
  137. package/dist/components/macro/accordion-preset.d.ts.map +0 -1
  138. package/dist/components/macro/alert-dialog-preset.d.ts +0 -26
  139. package/dist/components/macro/alert-dialog-preset.d.ts.map +0 -1
  140. package/dist/components/macro/alert-preset.d.ts +0 -14
  141. package/dist/components/macro/alert-preset.d.ts.map +0 -1
  142. package/dist/components/macro/avatar-preset.d.ts +0 -11
  143. package/dist/components/macro/avatar-preset.d.ts.map +0 -1
  144. package/dist/components/macro/breadcrumb-preset.d.ts +0 -12
  145. package/dist/components/macro/breadcrumb-preset.d.ts.map +0 -1
  146. package/dist/components/macro/card-preset.d.ts +0 -10
  147. package/dist/components/macro/card-preset.d.ts.map +0 -1
  148. package/dist/components/macro/carousel-preset.d.ts +0 -18
  149. package/dist/components/macro/carousel-preset.d.ts.map +0 -1
  150. package/dist/components/macro/checkbox-preset.d.ts +0 -14
  151. package/dist/components/macro/checkbox-preset.d.ts.map +0 -1
  152. package/dist/components/macro/combobox-preset.d.ts +0 -27
  153. package/dist/components/macro/combobox-preset.d.ts.map +0 -1
  154. package/dist/components/macro/command-preset.d.ts +0 -16
  155. package/dist/components/macro/command-preset.d.ts.map +0 -1
  156. package/dist/components/macro/date-picker.d.ts +0 -62
  157. package/dist/components/macro/date-picker.d.ts.map +0 -1
  158. package/dist/components/macro/dialog-preset.d.ts +0 -24
  159. package/dist/components/macro/dialog-preset.d.ts.map +0 -1
  160. package/dist/components/macro/empty-preset.d.ts +0 -15
  161. package/dist/components/macro/empty-preset.d.ts.map +0 -1
  162. package/dist/components/macro/field-preset.d.ts +0 -15
  163. package/dist/components/macro/field-preset.d.ts.map +0 -1
  164. package/dist/components/macro/index.d.ts +0 -22
  165. package/dist/components/macro/index.d.ts.map +0 -1
  166. package/dist/components/macro/input-otp-preset.d.ts +0 -19
  167. package/dist/components/macro/input-otp-preset.d.ts.map +0 -1
  168. package/dist/components/macro/input-preset.d.ts +0 -21
  169. package/dist/components/macro/input-preset.d.ts.map +0 -1
  170. package/dist/components/macro/pagination-preset.d.ts +0 -13
  171. package/dist/components/macro/pagination-preset.d.ts.map +0 -1
  172. package/dist/components/macro/progress-preset.d.ts +0 -10
  173. package/dist/components/macro/progress-preset.d.ts.map +0 -1
  174. package/dist/components/macro/radio-group-preset.d.ts +0 -22
  175. package/dist/components/macro/radio-group-preset.d.ts.map +0 -1
  176. package/dist/components/macro/select-preset.d.ts +0 -42
  177. package/dist/components/macro/select-preset.d.ts.map +0 -1
  178. package/dist/components/macro/slider-preset.d.ts +0 -12
  179. package/dist/components/macro/slider-preset.d.ts.map +0 -1
  180. package/dist/components/macro/switch-preset.d.ts +0 -12
  181. package/dist/components/macro/switch-preset.d.ts.map +0 -1
  182. package/dist/components/macro/tabs-preset.d.ts +0 -17
  183. package/dist/components/macro/tabs-preset.d.ts.map +0 -1
  184. package/dist/components/macro/textarea-preset.d.ts +0 -17
  185. package/dist/components/macro/textarea-preset.d.ts.map +0 -1
  186. package/dist/components/micro/accordion.d.ts +0 -15
  187. package/dist/components/micro/accordion.d.ts.map +0 -1
  188. package/dist/components/micro/alert-dialog.d.ts +0 -33
  189. package/dist/components/micro/alert-dialog.d.ts.map +0 -1
  190. package/dist/components/micro/alert.d.ts +0 -35
  191. package/dist/components/micro/alert.d.ts.map +0 -1
  192. package/dist/components/micro/aspect-ratio.d.ts +0 -20
  193. package/dist/components/micro/aspect-ratio.d.ts.map +0 -1
  194. package/dist/components/micro/avatar.d.ts +0 -23
  195. package/dist/components/micro/avatar.d.ts.map +0 -1
  196. package/dist/components/micro/badge.d.ts +0 -23
  197. package/dist/components/micro/badge.d.ts.map +0 -1
  198. package/dist/components/micro/breadcrumb.d.ts +0 -31
  199. package/dist/components/micro/breadcrumb.d.ts.map +0 -1
  200. package/dist/components/micro/button.d.ts +0 -46
  201. package/dist/components/micro/button.d.ts.map +0 -1
  202. package/dist/components/micro/calendar.d.ts +0 -28
  203. package/dist/components/micro/calendar.d.ts.map +0 -1
  204. package/dist/components/micro/card.d.ts +0 -28
  205. package/dist/components/micro/card.d.ts.map +0 -1
  206. package/dist/components/micro/carousel.d.ts +0 -29
  207. package/dist/components/micro/carousel.d.ts.map +0 -1
  208. package/dist/components/micro/chart.d.ts +0 -49
  209. package/dist/components/micro/chart.d.ts.map +0 -1
  210. package/dist/components/micro/checkbox.d.ts +0 -17
  211. package/dist/components/micro/checkbox.d.ts.map +0 -1
  212. package/dist/components/micro/collapsible.d.ts +0 -15
  213. package/dist/components/micro/collapsible.d.ts.map +0 -1
  214. package/dist/components/micro/combobox.d.ts +0 -34
  215. package/dist/components/micro/combobox.d.ts.map +0 -1
  216. package/dist/components/micro/command.d.ts +0 -79
  217. package/dist/components/micro/command.d.ts.map +0 -1
  218. package/dist/components/micro/context-menu.d.ts +0 -58
  219. package/dist/components/micro/context-menu.d.ts.map +0 -1
  220. package/dist/components/micro/dialog.d.ts +0 -15
  221. package/dist/components/micro/dialog.d.ts.map +0 -1
  222. package/dist/components/micro/direction.d.ts +0 -2
  223. package/dist/components/micro/direction.d.ts.map +0 -1
  224. package/dist/components/micro/drawer.d.ts +0 -18
  225. package/dist/components/micro/drawer.d.ts.map +0 -1
  226. package/dist/components/micro/dropdown-menu.d.ts +0 -40
  227. package/dist/components/micro/dropdown-menu.d.ts.map +0 -1
  228. package/dist/components/micro/empty.d.ts +0 -30
  229. package/dist/components/micro/empty.d.ts.map +0 -1
  230. package/dist/components/micro/field.d.ts +0 -29
  231. package/dist/components/micro/field.d.ts.map +0 -1
  232. package/dist/components/micro/hover-card.d.ts +0 -18
  233. package/dist/components/micro/hover-card.d.ts.map +0 -1
  234. package/dist/components/micro/input-group.d.ts +0 -17
  235. package/dist/components/micro/input-group.d.ts.map +0 -1
  236. package/dist/components/micro/input-otp.d.ts +0 -44
  237. package/dist/components/micro/input-otp.d.ts.map +0 -1
  238. package/dist/components/micro/input.d.ts +0 -29
  239. package/dist/components/micro/input.d.ts.map +0 -1
  240. package/dist/components/micro/item.d.ts +0 -31
  241. package/dist/components/micro/item.d.ts.map +0 -1
  242. package/dist/components/micro/kbd.d.ts +0 -9
  243. package/dist/components/micro/kbd.d.ts.map +0 -1
  244. package/dist/components/micro/label.d.ts +0 -15
  245. package/dist/components/micro/label.d.ts.map +0 -1
  246. package/dist/components/micro/menubar.d.ts +0 -40
  247. package/dist/components/micro/menubar.d.ts.map +0 -1
  248. package/dist/components/micro/navigation-menu.d.ts +0 -26
  249. package/dist/components/micro/navigation-menu.d.ts.map +0 -1
  250. package/dist/components/micro/pagination.d.ts +0 -33
  251. package/dist/components/micro/pagination.d.ts.map +0 -1
  252. package/dist/components/micro/popover.d.ts +0 -24
  253. package/dist/components/micro/popover.d.ts.map +0 -1
  254. package/dist/components/micro/progress.d.ts +0 -19
  255. package/dist/components/micro/progress.d.ts.map +0 -1
  256. package/dist/components/micro/radio-group.d.ts +0 -13
  257. package/dist/components/micro/radio-group.d.ts.map +0 -1
  258. package/dist/components/micro/resizable.d.ts +0 -12
  259. package/dist/components/micro/resizable.d.ts.map +0 -1
  260. package/dist/components/micro/scroll-area.d.ts +0 -12
  261. package/dist/components/micro/scroll-area.d.ts.map +0 -1
  262. package/dist/components/micro/select.d.ts +0 -22
  263. package/dist/components/micro/select.d.ts.map +0 -1
  264. package/dist/components/micro/separator.d.ts +0 -9
  265. package/dist/components/micro/separator.d.ts.map +0 -1
  266. package/dist/components/micro/sheet.d.ts +0 -17
  267. package/dist/components/micro/sheet.d.ts.map +0 -1
  268. package/dist/components/micro/sidebar.d.ts +0 -28
  269. package/dist/components/micro/sidebar.d.ts.map +0 -1
  270. package/dist/components/micro/skeleton.d.ts +0 -16
  271. package/dist/components/micro/skeleton.d.ts.map +0 -1
  272. package/dist/components/micro/slider.d.ts +0 -21
  273. package/dist/components/micro/slider.d.ts.map +0 -1
  274. package/dist/components/micro/sonner.d.ts +0 -5
  275. package/dist/components/micro/sonner.d.ts.map +0 -1
  276. package/dist/components/micro/spinner.d.ts +0 -21
  277. package/dist/components/micro/spinner.d.ts.map +0 -1
  278. package/dist/components/micro/switch.d.ts +0 -13
  279. package/dist/components/micro/switch.d.ts.map +0 -1
  280. package/dist/components/micro/table.d.ts +0 -17
  281. package/dist/components/micro/table.d.ts.map +0 -1
  282. package/dist/components/micro/tabs.d.ts +0 -13
  283. package/dist/components/micro/tabs.d.ts.map +0 -1
  284. package/dist/components/micro/textarea.d.ts +0 -24
  285. package/dist/components/micro/textarea.d.ts.map +0 -1
  286. package/dist/components/micro/theme-provider.d.ts +0 -76
  287. package/dist/components/micro/theme-provider.d.ts.map +0 -1
  288. package/dist/components/micro/toggle-group.d.ts +0 -22
  289. package/dist/components/micro/toggle-group.d.ts.map +0 -1
  290. package/dist/components/micro/toggle.d.ts +0 -16
  291. package/dist/components/micro/toggle.d.ts.map +0 -1
  292. package/dist/components/micro/tooltip.d.ts +0 -21
  293. package/dist/components/micro/tooltip.d.ts.map +0 -1
  294. package/dist/dev/App.d.ts +0 -3
  295. package/dist/dev/App.d.ts.map +0 -1
  296. package/dist/dev/components/GladvnLogo.d.ts +0 -10
  297. package/dist/dev/components/GladvnLogo.d.ts.map +0 -1
  298. package/dist/dev/components/code-highlighter.d.ts +0 -5
  299. package/dist/dev/components/code-highlighter.d.ts.map +0 -1
  300. package/dist/dev/components/dev-context.d.ts +0 -12
  301. package/dist/dev/components/dev-context.d.ts.map +0 -1
  302. package/dist/dev/components/showcase.d.ts +0 -72
  303. package/dist/dev/components/showcase.d.ts.map +0 -1
  304. package/dist/dev/data.d.ts +0 -68
  305. package/dist/dev/data.d.ts.map +0 -1
  306. package/dist/dev/main.d.ts +0 -1
  307. package/dist/dev/main.d.ts.map +0 -1
  308. package/dist/dev/sections/buttons.d.ts +0 -2
  309. package/dist/dev/sections/buttons.d.ts.map +0 -1
  310. package/dist/dev/sections/display.d.ts +0 -2
  311. package/dist/dev/sections/display.d.ts.map +0 -1
  312. package/dist/dev/sections/feedback.d.ts +0 -2
  313. package/dist/dev/sections/feedback.d.ts.map +0 -1
  314. package/dist/dev/sections/forms.d.ts +0 -2
  315. package/dist/dev/sections/forms.d.ts.map +0 -1
  316. package/dist/dev/sections/interactive.d.ts +0 -2
  317. package/dist/dev/sections/interactive.d.ts.map +0 -1
  318. package/dist/dev/sections/overview.d.ts +0 -2
  319. package/dist/dev/sections/overview.d.ts.map +0 -1
  320. package/dist/dev/showcase/accordion.d.ts +0 -2
  321. package/dist/dev/showcase/accordion.d.ts.map +0 -1
  322. package/dist/dev/showcase/alert-dialog.d.ts +0 -2
  323. package/dist/dev/showcase/alert-dialog.d.ts.map +0 -1
  324. package/dist/dev/showcase/alert.d.ts +0 -2
  325. package/dist/dev/showcase/alert.d.ts.map +0 -1
  326. package/dist/dev/showcase/aspect-ratio.d.ts +0 -2
  327. package/dist/dev/showcase/aspect-ratio.d.ts.map +0 -1
  328. package/dist/dev/showcase/avatar.d.ts +0 -2
  329. package/dist/dev/showcase/avatar.d.ts.map +0 -1
  330. package/dist/dev/showcase/badge.d.ts +0 -2
  331. package/dist/dev/showcase/badge.d.ts.map +0 -1
  332. package/dist/dev/showcase/breadcrumb.d.ts +0 -2
  333. package/dist/dev/showcase/breadcrumb.d.ts.map +0 -1
  334. package/dist/dev/showcase/button.d.ts +0 -2
  335. package/dist/dev/showcase/button.d.ts.map +0 -1
  336. package/dist/dev/showcase/calendar.d.ts +0 -2
  337. package/dist/dev/showcase/calendar.d.ts.map +0 -1
  338. package/dist/dev/showcase/card.d.ts +0 -2
  339. package/dist/dev/showcase/card.d.ts.map +0 -1
  340. package/dist/dev/showcase/carousel.d.ts +0 -2
  341. package/dist/dev/showcase/carousel.d.ts.map +0 -1
  342. package/dist/dev/showcase/chart.d.ts +0 -2
  343. package/dist/dev/showcase/chart.d.ts.map +0 -1
  344. package/dist/dev/showcase/checkbox.d.ts +0 -2
  345. package/dist/dev/showcase/checkbox.d.ts.map +0 -1
  346. package/dist/dev/showcase/collapsible.d.ts +0 -3
  347. package/dist/dev/showcase/collapsible.d.ts.map +0 -1
  348. package/dist/dev/showcase/combobox.d.ts +0 -2
  349. package/dist/dev/showcase/combobox.d.ts.map +0 -1
  350. package/dist/dev/showcase/command.d.ts +0 -2
  351. package/dist/dev/showcase/command.d.ts.map +0 -1
  352. package/dist/dev/showcase/context-menu.d.ts +0 -2
  353. package/dist/dev/showcase/context-menu.d.ts.map +0 -1
  354. package/dist/dev/showcase/dialog.d.ts +0 -2
  355. package/dist/dev/showcase/dialog.d.ts.map +0 -1
  356. package/dist/dev/showcase/drawer.d.ts +0 -2
  357. package/dist/dev/showcase/drawer.d.ts.map +0 -1
  358. package/dist/dev/showcase/dropdown-menu.d.ts +0 -2
  359. package/dist/dev/showcase/dropdown-menu.d.ts.map +0 -1
  360. package/dist/dev/showcase/empty.d.ts +0 -2
  361. package/dist/dev/showcase/empty.d.ts.map +0 -1
  362. package/dist/dev/showcase/hover-card.d.ts +0 -2
  363. package/dist/dev/showcase/hover-card.d.ts.map +0 -1
  364. package/dist/dev/showcase/input-group.d.ts +0 -2
  365. package/dist/dev/showcase/input-group.d.ts.map +0 -1
  366. package/dist/dev/showcase/input-otp.d.ts +0 -2
  367. package/dist/dev/showcase/input-otp.d.ts.map +0 -1
  368. package/dist/dev/showcase/input.d.ts +0 -2
  369. package/dist/dev/showcase/input.d.ts.map +0 -1
  370. package/dist/dev/showcase/item.d.ts +0 -2
  371. package/dist/dev/showcase/item.d.ts.map +0 -1
  372. package/dist/dev/showcase/kbd.d.ts +0 -2
  373. package/dist/dev/showcase/kbd.d.ts.map +0 -1
  374. package/dist/dev/showcase/label.d.ts +0 -2
  375. package/dist/dev/showcase/label.d.ts.map +0 -1
  376. package/dist/dev/showcase/menubar.d.ts +0 -2
  377. package/dist/dev/showcase/menubar.d.ts.map +0 -1
  378. package/dist/dev/showcase/navigation-menu.d.ts +0 -3
  379. package/dist/dev/showcase/navigation-menu.d.ts.map +0 -1
  380. package/dist/dev/showcase/overview.d.ts +0 -2
  381. package/dist/dev/showcase/overview.d.ts.map +0 -1
  382. package/dist/dev/showcase/pagination.d.ts +0 -2
  383. package/dist/dev/showcase/pagination.d.ts.map +0 -1
  384. package/dist/dev/showcase/popover.d.ts +0 -2
  385. package/dist/dev/showcase/popover.d.ts.map +0 -1
  386. package/dist/dev/showcase/progress.d.ts +0 -2
  387. package/dist/dev/showcase/progress.d.ts.map +0 -1
  388. package/dist/dev/showcase/radio-group.d.ts +0 -2
  389. package/dist/dev/showcase/radio-group.d.ts.map +0 -1
  390. package/dist/dev/showcase/resizable.d.ts +0 -2
  391. package/dist/dev/showcase/resizable.d.ts.map +0 -1
  392. package/dist/dev/showcase/scroll-area.d.ts +0 -2
  393. package/dist/dev/showcase/scroll-area.d.ts.map +0 -1
  394. package/dist/dev/showcase/select.d.ts +0 -2
  395. package/dist/dev/showcase/select.d.ts.map +0 -1
  396. package/dist/dev/showcase/separator.d.ts +0 -2
  397. package/dist/dev/showcase/separator.d.ts.map +0 -1
  398. package/dist/dev/showcase/sheet.d.ts +0 -2
  399. package/dist/dev/showcase/sheet.d.ts.map +0 -1
  400. package/dist/dev/showcase/sidebar.d.ts +0 -2
  401. package/dist/dev/showcase/sidebar.d.ts.map +0 -1
  402. package/dist/dev/showcase/skeleton.d.ts +0 -2
  403. package/dist/dev/showcase/skeleton.d.ts.map +0 -1
  404. package/dist/dev/showcase/slider.d.ts +0 -2
  405. package/dist/dev/showcase/slider.d.ts.map +0 -1
  406. package/dist/dev/showcase/sonner.d.ts +0 -2
  407. package/dist/dev/showcase/sonner.d.ts.map +0 -1
  408. package/dist/dev/showcase/spinner.d.ts +0 -2
  409. package/dist/dev/showcase/spinner.d.ts.map +0 -1
  410. package/dist/dev/showcase/switch.d.ts +0 -2
  411. package/dist/dev/showcase/switch.d.ts.map +0 -1
  412. package/dist/dev/showcase/table.d.ts +0 -2
  413. package/dist/dev/showcase/table.d.ts.map +0 -1
  414. package/dist/dev/showcase/tabs.d.ts +0 -2
  415. package/dist/dev/showcase/tabs.d.ts.map +0 -1
  416. package/dist/dev/showcase/textarea.d.ts +0 -2
  417. package/dist/dev/showcase/textarea.d.ts.map +0 -1
  418. package/dist/dev/showcase/toast.d.ts +0 -2
  419. package/dist/dev/showcase/toast.d.ts.map +0 -1
  420. package/dist/dev/showcase/toggle-group.d.ts +0 -2
  421. package/dist/dev/showcase/toggle-group.d.ts.map +0 -1
  422. package/dist/dev/showcase/toggle.d.ts +0 -2
  423. package/dist/dev/showcase/toggle.d.ts.map +0 -1
  424. package/dist/dev/showcase/tooltip.d.ts +0 -2
  425. package/dist/dev/showcase/tooltip.d.ts.map +0 -1
  426. package/dist/hooks/use-controllable-state.d.ts +0 -14
  427. package/dist/hooks/use-controllable-state.d.ts.map +0 -1
  428. package/dist/hooks/use-mobile.d.ts +0 -2
  429. package/dist/hooks/use-mobile.d.ts.map +0 -1
  430. package/dist/index.cjs +0 -5099
  431. package/dist/index.cjs.map +0 -1
  432. package/dist/index.d.ts +0 -58
  433. package/dist/index.d.ts.map +0 -1
  434. package/dist/index.js +0 -4753
  435. package/dist/index.js.map +0 -1
  436. package/dist/lib/types.d.ts +0 -4
  437. package/dist/lib/types.d.ts.map +0 -1
  438. package/dist/lib/utils.d.ts +0 -3
  439. package/dist/lib/utils.d.ts.map +0 -1
  440. package/dist/preset.d.ts +0 -18
  441. package/dist/preset.d.ts.map +0 -1
  442. package/dist/test/setup.d.ts +0 -1
  443. package/dist/test/setup.d.ts.map +0 -1
  444. package/scripts/add-icononly-prop.ts +0 -84
  445. package/scripts/audit-best-practices.ts +0 -114
  446. package/scripts/audit-showcase.ts +0 -262
  447. package/scripts/audit-showcases.ts +0 -83
  448. package/scripts/clean-imports.ts +0 -21
  449. package/scripts/count_missing.ts +0 -24
  450. package/scripts/find-css-vars.ts +0 -62
  451. package/scripts/fix-portals.ts +0 -90
  452. package/scripts/format-codestrings.ts +0 -87
  453. package/scripts/full-audit.ts +0 -89
  454. package/scripts/merge-components.cjs +0 -65
  455. package/scripts/merge-components.js +0 -64
  456. package/scripts/optimize-barrel.ts +0 -116
  457. package/scripts/organize-imports.ts +0 -21
  458. package/scripts/refactor_divs.ts +0 -39
  459. package/scripts/regex-format.cjs +0 -67
  460. package/scripts/remove_div_wrappers.ts +0 -17
  461. package/scripts/tmp.tsx +0 -25
  462. package/scripts/update-gaps.ts +0 -83
  463. package/scripts/update_showcase_codestrings.ts +0 -87
@@ -0,0 +1,122 @@
1
+
2
+ import { render, screen, waitFor } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { describe, expect, it } from "vitest";
5
+
6
+ import {
7
+ Sheet,
8
+ SheetContent,
9
+ SheetDescription,
10
+ SheetHeader,
11
+ SheetTitle,
12
+ SheetTrigger
13
+ } from "./sheet";
14
+
15
+ describe("Sheet", () => {
16
+ it("[3C.15-01] [P1] renders trigger correctly and content is hidden initially", () => {
17
+ // Given
18
+ render(
19
+ <Sheet>
20
+ <SheetTrigger>Open Sheet</SheetTrigger>
21
+ <SheetContent>
22
+ <SheetHeader>
23
+ <SheetTitle>Sheet Title</SheetTitle>
24
+ <SheetDescription>Sheet description</SheetDescription>
25
+ </SheetHeader>
26
+ </SheetContent>
27
+ </Sheet>,
28
+ );
29
+
30
+ const trigger = screen.getByRole("button", { name: "Open Sheet" });
31
+ // Then
32
+ expect(trigger).toBeInTheDocument();
33
+
34
+ // Content should not be in the document
35
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
36
+ });
37
+
38
+ it("[3C.15-02] [P1] opens the sheet when trigger is clicked", async () => {
39
+ // Given
40
+ const user = userEvent.setup();
41
+ render(
42
+ <Sheet>
43
+ <SheetTrigger>Open Sheet</SheetTrigger>
44
+ <SheetContent>
45
+ <SheetHeader>
46
+ <SheetTitle>Sheet Title</SheetTitle>
47
+ <SheetDescription>Sheet description</SheetDescription>
48
+ </SheetHeader>
49
+ </SheetContent>
50
+ </Sheet>,
51
+ );
52
+
53
+ const trigger = screen.getByRole("button", { name: "Open Sheet" });
54
+ // When
55
+ await user.click(trigger);
56
+
57
+ // Then
58
+ await waitFor(() => {
59
+ const sheet = screen.getByRole("dialog");
60
+ expect(sheet).toBeInTheDocument();
61
+ expect(screen.getByText("Sheet Title")).toBeInTheDocument();
62
+ expect(screen.getByText("Sheet description")).toBeInTheDocument();
63
+ });
64
+ });
65
+
66
+ it("[3C.15-03] [P1] closes the sheet when default Close button is clicked", async () => {
67
+ // Given
68
+ const user = userEvent.setup();
69
+ render(
70
+ <Sheet>
71
+ <SheetTrigger>Open Sheet</SheetTrigger>
72
+ <SheetContent showCloseButton={true}>
73
+ <SheetTitle>Sheet Title</SheetTitle>
74
+ </SheetContent>
75
+ </Sheet>,
76
+ );
77
+
78
+ // Open
79
+ // When
80
+ await user.click(screen.getByRole("button", { name: "Open Sheet" }));
81
+
82
+ // Then
83
+ await waitFor(() => {
84
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
85
+ });
86
+
87
+ // Close via default 'X' button
88
+ const closeBtn = screen.getByRole("button", { name: "Close" });
89
+ await user.click(closeBtn);
90
+
91
+ await waitFor(() => {
92
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
93
+ });
94
+ });
95
+
96
+ it("[3C.15-04] [P1] closes the sheet when Escape is pressed", async () => {
97
+ // Given
98
+ const user = userEvent.setup();
99
+ render(
100
+ <Sheet>
101
+ <SheetTrigger>Open Sheet</SheetTrigger>
102
+ <SheetContent>
103
+ <SheetTitle>Sheet Title</SheetTitle>
104
+ </SheetContent>
105
+ </Sheet>,
106
+ );
107
+
108
+ // When
109
+ await user.click(screen.getByRole("button", { name: "Open Sheet" }));
110
+
111
+ // Then
112
+ await waitFor(() => {
113
+ expect(screen.getByRole("dialog")).toBeInTheDocument();
114
+ });
115
+
116
+ await user.keyboard("[Escape]");
117
+
118
+ await waitFor(() => {
119
+ expect(screen.queryByRole("dialog")).not.toBeInTheDocument();
120
+ });
121
+ });
122
+ });
@@ -146,5 +146,5 @@ export {
146
146
  SheetHeader,
147
147
  SheetOverlay,
148
148
  SheetTitle,
149
- SheetTrigger,
149
+ SheetTrigger
150
150
  };
@@ -237,5 +237,5 @@ export {
237
237
  SidebarLabel,
238
238
  SidebarLogo,
239
239
  SidebarMenuItem,
240
- SidebarMenuItemList,
240
+ SidebarMenuItemList
241
241
  };
@@ -0,0 +1,108 @@
1
+ import * as React from "react";
2
+
3
+ import { render, screen } from "@testing-library/react";
4
+ import userEvent from "@testing-library/user-event";
5
+ import { describe, expect, it, vi } from "vitest";
6
+
7
+ import { Switch, SwitchThumb } from "./switch";
8
+
9
+ describe("Switch", () => {
10
+ it("[3C.7-01] [P1] renders correctly", () => {
11
+ // Given
12
+ render(
13
+ <Switch aria-label="Toggle setting">
14
+ <SwitchThumb />
15
+ </Switch>,
16
+ );
17
+ const switchEl = screen.getByRole("switch", { name: "Toggle setting" });
18
+ // Then
19
+ expect(switchEl).toBeInTheDocument();
20
+ expect(switchEl).toHaveAttribute("data-slot", "switch");
21
+ });
22
+
23
+ it("[3C.7-02] [P1] handles user click to toggle state", async () => {
24
+ // Given
25
+ const user = userEvent.setup();
26
+ const handleCheckedChange = vi.fn();
27
+ render(
28
+ <Switch aria-label="Airplane mode" onCheckedChange={handleCheckedChange}>
29
+ <SwitchThumb />
30
+ </Switch>,
31
+ );
32
+
33
+ const switchEl = screen.getByRole("switch", { name: "Airplane mode" });
34
+
35
+ // Initially unchecked (base-ui uses aria-checked)
36
+ // Then
37
+ expect(switchEl).toHaveAttribute("aria-checked", "false");
38
+
39
+ // Click to check
40
+ // When
41
+ await user.click(switchEl);
42
+ expect(switchEl).toHaveAttribute("aria-checked", "true");
43
+ expect(handleCheckedChange).toHaveBeenCalledWith(true, expect.anything());
44
+
45
+ // Click to uncheck
46
+ await user.click(switchEl);
47
+ expect(switchEl).toHaveAttribute("aria-checked", "false");
48
+ expect(handleCheckedChange).toHaveBeenCalledWith(false, expect.anything());
49
+ });
50
+
51
+ it("[3C.7-03] [P1] can be focused and toggled via keyboard (Space)", async () => {
52
+ // Given
53
+ const user = userEvent.setup();
54
+ render(
55
+ <Switch aria-label="Keyboard toggle">
56
+ <SwitchThumb />
57
+ </Switch>,
58
+ );
59
+
60
+ const switchEl = screen.getByRole("switch", { name: "Keyboard toggle" });
61
+
62
+ // Test focus
63
+ // When
64
+ await user.tab();
65
+ // Then
66
+ expect(switchEl).toHaveFocus();
67
+
68
+ // Test keyboard activation (Space for switch/checkbox)
69
+ await user.keyboard("[Space]");
70
+ expect(switchEl).toHaveAttribute("aria-checked", "true");
71
+ });
72
+
73
+ it("[3C.7-04] [P1] handles disabled state correctly and blocks clicks", async () => {
74
+ // Given
75
+ const user = userEvent.setup();
76
+ const handleCheckedChange = vi.fn();
77
+ render(
78
+ <Switch
79
+ disabled
80
+ aria-label="Disabled switch"
81
+ onCheckedChange={handleCheckedChange}
82
+ >
83
+ <SwitchThumb />
84
+ </Switch>,
85
+ );
86
+
87
+ const switchEl = screen.getByRole("switch", { name: "Disabled switch" });
88
+ // Then
89
+ expect(switchEl).toHaveAttribute("aria-disabled", "true");
90
+
91
+ // When
92
+ await user.click(switchEl);
93
+ expect(handleCheckedChange).not.toHaveBeenCalled();
94
+ expect(switchEl).toHaveAttribute("aria-checked", "false");
95
+ });
96
+
97
+ it("[3C.7-05] [P1] forwards the ref to the underlying DOM element", () => {
98
+ // Given
99
+ const ref = React.createRef<HTMLSpanElement>();
100
+ render(
101
+ <Switch ref={ref} aria-label="Ref switch">
102
+ <SwitchThumb />
103
+ </Switch>,
104
+ );
105
+ // Then
106
+ expect(ref.current).toBeInstanceOf(HTMLSpanElement);
107
+ });
108
+ });
@@ -207,5 +207,5 @@ export {
207
207
  TableFooter,
208
208
  TableHead,
209
209
  TableHeader,
210
- TableRow,
210
+ TableRow
211
211
  };
@@ -0,0 +1,90 @@
1
+
2
+ import { render, screen, waitFor } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { describe, expect, it } from "vitest";
5
+
6
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./tabs";
7
+
8
+ describe("Tabs", () => {
9
+ it("[3C.8-01] [P1] renders correctly and shows default content", () => {
10
+ // Given
11
+ render(
12
+ <Tabs defaultValue="tab1">
13
+ <TabsList>
14
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
15
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
16
+ </TabsList>
17
+ <TabsContent value="tab1">Content 1</TabsContent>
18
+ <TabsContent value="tab2">Content 2</TabsContent>
19
+ </Tabs>,
20
+ );
21
+
22
+ // Then
23
+ expect(screen.getByRole("tab", { name: "Tab 1" })).toBeInTheDocument();
24
+ expect(screen.getByRole("tab", { name: "Tab 2" })).toBeInTheDocument();
25
+
26
+ // Tab 1 content should be visible
27
+ expect(screen.getByText("Content 1")).toBeInTheDocument();
28
+
29
+ // Tab 2 content should NOT be visible
30
+ expect(screen.queryByText("Content 2")).not.toBeInTheDocument();
31
+ });
32
+
33
+ it("[3C.8-02] [P1] switches content when another tab is clicked", async () => {
34
+ // Given
35
+ const user = userEvent.setup();
36
+ render(
37
+ <Tabs defaultValue="tab1">
38
+ <TabsList>
39
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
40
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
41
+ </TabsList>
42
+ <TabsContent value="tab1">Content 1</TabsContent>
43
+ <TabsContent value="tab2">Content 2</TabsContent>
44
+ </Tabs>,
45
+ );
46
+
47
+ const tab2 = screen.getByRole("tab", { name: "Tab 2" });
48
+ // When
49
+ await user.click(tab2);
50
+
51
+ // Then
52
+ expect(screen.queryByText("Content 1")).not.toBeInTheDocument();
53
+ expect(screen.getByText("Content 2")).toBeInTheDocument();
54
+ });
55
+
56
+ it("[3C.8-03] [P1] supports keyboard navigation", async () => {
57
+ // Given
58
+ const user = userEvent.setup();
59
+ render(
60
+ <Tabs defaultValue="tab1">
61
+ <TabsList>
62
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
63
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
64
+ </TabsList>
65
+ <TabsContent value="tab1">Content 1</TabsContent>
66
+ <TabsContent value="tab2">Content 2</TabsContent>
67
+ </Tabs>,
68
+ );
69
+
70
+ const tab1 = screen.getByRole("tab", { name: "Tab 1" });
71
+ const tab2 = screen.getByRole("tab", { name: "Tab 2" });
72
+
73
+ // When
74
+ await user.tab();
75
+ // Then
76
+ expect(tab1).toHaveFocus();
77
+
78
+ // ArrowRight should move focus and potentially activate the next tab
79
+ await user.keyboard("[ArrowRight]");
80
+ await waitFor(() => {
81
+ expect(tab2).toHaveFocus();
82
+ });
83
+
84
+ await user.keyboard("[Enter]");
85
+
86
+ await waitFor(() => {
87
+ expect(screen.getByText("Content 2")).toBeInTheDocument();
88
+ });
89
+ });
90
+ });
@@ -0,0 +1,107 @@
1
+
2
+ import { render, screen, waitFor } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
4
+ import { describe, expect, it } from "vitest";
5
+
6
+ import {
7
+ Tooltip,
8
+ TooltipContent,
9
+ TooltipProvider,
10
+ TooltipTrigger,
11
+ } from "./tooltip";
12
+
13
+ describe("Tooltip", () => {
14
+ it("[3C.9-01] [P1] renders trigger and hides content initially", () => {
15
+ // Given
16
+ render(
17
+ <TooltipProvider>
18
+ <Tooltip>
19
+ <TooltipTrigger>Hover me</TooltipTrigger>
20
+ <TooltipContent>Tooltip info</TooltipContent>
21
+ </Tooltip>
22
+ </TooltipProvider>,
23
+ );
24
+
25
+ // Then
26
+ expect(
27
+ screen.getByRole("button", { name: "Hover me" }),
28
+ ).toBeInTheDocument();
29
+
30
+ // Content should not be visible initially
31
+ expect(screen.queryByText("Tooltip info")).not.toBeInTheDocument();
32
+ });
33
+
34
+ it("[3C.9-02] [P1] shows tooltip content on hover", async () => {
35
+ // Given
36
+ const user = userEvent.setup();
37
+ render(
38
+ <TooltipProvider delay={0}>
39
+ <Tooltip>
40
+ <TooltipTrigger>Hover me</TooltipTrigger>
41
+ <TooltipContent>Tooltip info</TooltipContent>
42
+ </Tooltip>
43
+ </TooltipProvider>,
44
+ );
45
+
46
+ const trigger = screen.getByRole("button", { name: "Hover me" });
47
+ // When
48
+ await user.hover(trigger);
49
+
50
+ // Then
51
+ await waitFor(() => {
52
+ expect(screen.getByText("Tooltip info")).toBeVisible();
53
+ });
54
+ });
55
+
56
+ it("[3C.9-03] [P1] shows tooltip content on focus", async () => {
57
+ // Given
58
+ const user = userEvent.setup();
59
+ render(
60
+ <TooltipProvider delay={0}>
61
+ <Tooltip>
62
+ <TooltipTrigger>Hover me</TooltipTrigger>
63
+ <TooltipContent>Tooltip info</TooltipContent>
64
+ </Tooltip>
65
+ </TooltipProvider>,
66
+ );
67
+
68
+ const trigger = screen.getByRole("button", { name: "Hover me" });
69
+
70
+ // When
71
+ await user.tab();
72
+ // Then
73
+ expect(trigger).toHaveFocus();
74
+
75
+ await waitFor(() => {
76
+ expect(screen.getByText("Tooltip info")).toBeVisible();
77
+ });
78
+ });
79
+
80
+ it("[3C.9-04] [P1] hides tooltip when Escape is pressed", async () => {
81
+ // Given
82
+ const user = userEvent.setup();
83
+ render(
84
+ <TooltipProvider delay={0}>
85
+ <Tooltip>
86
+ <TooltipTrigger>Hover me</TooltipTrigger>
87
+ <TooltipContent>Tooltip info</TooltipContent>
88
+ </Tooltip>
89
+ </TooltipProvider>,
90
+ );
91
+
92
+ const trigger = screen.getByRole("button", { name: "Hover me" });
93
+ // When
94
+ await user.hover(trigger);
95
+
96
+ // Then
97
+ await waitFor(() => {
98
+ expect(screen.getByText("Tooltip info")).toBeVisible();
99
+ });
100
+
101
+ await user.keyboard("[Escape]");
102
+
103
+ await waitFor(() => {
104
+ expect(screen.queryByText("Tooltip info")).not.toBeInTheDocument();
105
+ });
106
+ });
107
+ });
@@ -112,5 +112,5 @@ export {
112
112
  Tooltip,
113
113
  TooltipContent,
114
114
  TooltipProvider,
115
- TooltipTrigger,
115
+ TooltipTrigger
116
116
  };
package/src/dev/data.ts CHANGED
@@ -484,4 +484,12 @@ export const COMPONENTS = [
484
484
  status: "stable",
485
485
  hasSize: true,
486
486
  },
487
+ {
488
+ id: "why",
489
+ category: "Other",
490
+ label: "Why gladvn?",
491
+ hasMicro: false,
492
+ hasMacro: false,
493
+ status: "stable",
494
+ },
487
495
  ];
package/src/dev/main.tsx CHANGED
@@ -2,6 +2,10 @@ import { StrictMode, useEffect } from "react";
2
2
 
3
3
  import { createRoot } from "react-dom/client";
4
4
 
5
+ import "@fontsource/inter/400.css";
6
+ import "@fontsource/inter/500.css";
7
+ import "@fontsource/inter/600.css";
8
+ import "@fontsource/inter/700.css";
5
9
  import { ThemeProvider, useTheme } from "../components/micro/theme-provider";
6
10
  import App from "../dev/App";
7
11
  import { DevContextProvider } from "../dev/components/dev-context";
@@ -7,13 +7,15 @@ import {
7
7
  Accordion,
8
8
  AccordionContent,
9
9
  AccordionItem,
10
- AccordionTrigger } from "../../components/micro/accordion";
10
+ AccordionTrigger
11
+ } from "../../components/micro/accordion";
11
12
  import {
12
13
  DocsP,
13
14
  ExampleGrid,
14
15
  ExampleSection,
15
16
  Showcase,
16
- ShowcaseDocs } from "../../dev/components/showcase";
17
+ ShowcaseDocs
18
+ } from "../../dev/components/showcase";
17
19
 
18
20
  // ──────────────────────────────────────────────────────────
19
21
  // Shared Data
@@ -7,7 +7,8 @@ import {
7
7
  MessageSquareWarningIcon,
8
8
  ShieldAlertIcon,
9
9
  TrashIcon,
10
- XIcon } from "lucide-react";
10
+ XIcon
11
+ } from "lucide-react";
11
12
 
12
13
  import { AlertDialogPreset } from "../../components/macro/alert-dialog-preset";
13
14
  import {
@@ -20,9 +21,10 @@ import {
20
21
  AlertDialogFooter,
21
22
  AlertDialogHeader,
22
23
  AlertDialogMedia,
23
-
24
+
24
25
  AlertDialogTitle,
25
- AlertDialogTrigger } from "../../components/micro/alert-dialog";
26
+ AlertDialogTrigger
27
+ } from "../../components/micro/alert-dialog";
26
28
  import { Button } from "../../components/micro/button";
27
29
  import { useDevContext } from "../../dev/components/dev-context";
28
30
  import {
@@ -30,7 +32,8 @@ import {
30
32
  ExampleGrid,
31
33
  ExampleSection,
32
34
  Showcase,
33
- ShowcaseDocs } from "../../dev/components/showcase";
35
+ ShowcaseDocs
36
+ } from "../../dev/components/showcase";
34
37
  import { type Size } from "../../lib/types";
35
38
 
36
39
  // ──────────────────────────────────────────────────────────
@@ -5,7 +5,8 @@ import {
5
5
  InfoIcon,
6
6
  TriangleAlertIcon,
7
7
  XCircleIcon,
8
- XIcon } from "lucide-react";
8
+ XIcon
9
+ } from "lucide-react";
9
10
 
10
11
  import { AlertPreset } from "../../components/macro/alert-preset";
11
12
  import {
@@ -13,7 +14,8 @@ import {
13
14
  AlertAction,
14
15
  AlertDescription,
15
16
  AlertIcon,
16
- AlertTitle } from "../../components/micro/alert";
17
+ AlertTitle
18
+ } from "../../components/micro/alert";
17
19
  import { Button } from "../../components/micro/button";
18
20
  import { useDevContext } from "../../dev/components/dev-context";
19
21
  import {
@@ -24,7 +26,8 @@ import {
24
26
  ExampleGrid,
25
27
  ExampleSection,
26
28
  Showcase,
27
- ShowcaseDocs } from "../../dev/components/showcase";
29
+ ShowcaseDocs
30
+ } from "../../dev/components/showcase";
28
31
  import { type Size } from "../../lib/types";
29
32
 
30
33
  // ──────────────────────────────────────────────────────────
@@ -5,7 +5,8 @@ import {
5
5
  ExampleGrid,
6
6
  ExampleSection,
7
7
  Showcase,
8
- ShowcaseDocs } from "../../dev/components/showcase";
8
+ ShowcaseDocs
9
+ } from "../../dev/components/showcase";
9
10
 
10
11
  const commonRatios = [
11
12
  { label: "16:9", ratio: 16 / 9, desc: "Widescreen — video, hero banners" },
@@ -2,7 +2,8 @@ import {
2
2
  CheckCircle2Icon,
3
3
  CheckIcon,
4
4
  LayersIcon,
5
- UserIcon } from "lucide-react";
5
+ UserIcon
6
+ } from "lucide-react";
6
7
 
7
8
  import { AvatarPreset } from "../../components/macro/avatar-preset";
8
9
  import {
@@ -11,14 +12,16 @@ import {
11
12
  AvatarFallback,
12
13
  AvatarGroup,
13
14
  AvatarGroupCount,
14
- AvatarImage } from "../../components/micro/avatar";
15
+ AvatarImage
16
+ } from "../../components/micro/avatar";
15
17
  import { useDevContext } from "../../dev/components/dev-context";
16
18
  import {
17
19
  DocsP,
18
20
  ExampleGrid,
19
21
  ExampleSection,
20
22
  Showcase,
21
- ShowcaseDocs } from "../../dev/components/showcase";
23
+ ShowcaseDocs
24
+ } from "../../dev/components/showcase";
22
25
  import { type Size } from "../../lib/types";
23
26
 
24
27
  // ──────────────────────────────────────────────────────────
@@ -8,7 +8,8 @@ import {
8
8
  ExampleGrid,
9
9
  ExampleSection,
10
10
  Showcase,
11
- ShowcaseDocs } from "../../dev/components/showcase";
11
+ ShowcaseDocs
12
+ } from "../../dev/components/showcase";
12
13
  import { type Size } from "../../lib/types";
13
14
 
14
15
  export default function BadgeShowcase() {
@@ -8,19 +8,22 @@ import {
8
8
  BreadcrumbLink,
9
9
  BreadcrumbList,
10
10
  BreadcrumbPage,
11
- BreadcrumbSeparator } from "../../components/micro/breadcrumb";
11
+ BreadcrumbSeparator
12
+ } from "../../components/micro/breadcrumb";
12
13
  import {
13
14
  DropdownMenu,
14
15
  DropdownMenuContent,
15
16
  DropdownMenuItem,
16
-
17
- DropdownMenuTrigger } from "../../components/micro/dropdown-menu";
17
+
18
+ DropdownMenuTrigger
19
+ } from "../../components/micro/dropdown-menu";
18
20
  import {
19
21
  DocsP,
20
22
  ExampleGrid,
21
23
  ExampleSection,
22
24
  Showcase,
23
- ShowcaseDocs } from "../../dev/components/showcase";
25
+ ShowcaseDocs
26
+ } from "../../dev/components/showcase";
24
27
 
25
28
  // ──────────────────────────────────────────────────────────
26
29
  // SECTION 1: Macro Content
@@ -10,7 +10,8 @@ import {
10
10
  ExampleGrid,
11
11
  ExampleSection,
12
12
  Showcase,
13
- ShowcaseDocs } from "../../dev/components/showcase";
13
+ ShowcaseDocs
14
+ } from "../../dev/components/showcase";
14
15
  import { type Size } from "../../lib/types";
15
16
 
16
17
  function ButtonMicroShowcase({ globalSize }: { globalSize: Size }) {
@@ -10,7 +10,8 @@ import {
10
10
  ExampleGrid,
11
11
  ExampleSection,
12
12
  Showcase,
13
- ShowcaseDocs } from "../../dev/components/showcase";
13
+ ShowcaseDocs
14
+ } from "../../dev/components/showcase";
14
15
  import { type Size } from "../../lib/types";
15
16
 
16
17
  function CalendarMicroShowcase({ globalSize }: { globalSize: Size }) {