@arolariu/components 0.5.0 → 1.0.0

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 (892) hide show
  1. package/{changelog.md → CHANGELOG.md} +25 -0
  2. package/CONTRIBUTING.md +344 -265
  3. package/DEBUGGING.md +185 -103
  4. package/EXAMPLES.md +470 -345
  5. package/{readme.md → README.md} +306 -203
  6. package/dist/components/ui/accordion.d.ts +157 -5
  7. package/dist/components/ui/accordion.d.ts.map +1 -1
  8. package/dist/components/ui/accordion.js +100 -22
  9. package/dist/components/ui/accordion.js.map +1 -1
  10. package/dist/components/ui/accordion.module.js +12 -0
  11. package/dist/components/ui/accordion.module.js.map +1 -0
  12. package/dist/components/ui/accordion_module.css +72 -0
  13. package/dist/components/ui/accordion_module.css.map +1 -0
  14. package/dist/components/ui/alert-dialog.d.ts +321 -18
  15. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  16. package/dist/components/ui/alert-dialog.js +145 -52
  17. package/dist/components/ui/alert-dialog.js.map +1 -1
  18. package/dist/components/ui/alert-dialog.module.js +13 -0
  19. package/dist/components/ui/alert-dialog.module.js.map +1 -0
  20. package/dist/components/ui/alert-dialog_module.css +89 -0
  21. package/dist/components/ui/alert-dialog_module.css.map +1 -0
  22. package/dist/components/ui/alert.d.ts +109 -6
  23. package/dist/components/ui/alert.d.ts.map +1 -1
  24. package/dist/components/ui/alert.js +12 -21
  25. package/dist/components/ui/alert.js.map +1 -1
  26. package/dist/components/ui/alert.module.js +11 -0
  27. package/dist/components/ui/alert.module.js.map +1 -0
  28. package/dist/components/ui/alert_module.css +59 -0
  29. package/dist/components/ui/alert_module.css.map +1 -0
  30. package/dist/components/ui/aspect-ratio.d.ts +24 -2
  31. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  32. package/dist/components/ui/aspect-ratio.js +14 -3
  33. package/dist/components/ui/aspect-ratio.js.map +1 -1
  34. package/dist/components/ui/aspect-ratio.module.js +7 -0
  35. package/dist/components/ui/aspect-ratio.module.js.map +1 -0
  36. package/dist/components/ui/aspect-ratio_module.css +10 -0
  37. package/dist/components/ui/aspect-ratio_module.css.map +1 -0
  38. package/dist/components/ui/async-boundary.js +17 -0
  39. package/dist/components/ui/async-boundary.js.map +1 -0
  40. package/dist/components/ui/avatar.d.ts +97 -4
  41. package/dist/components/ui/avatar.d.ts.map +1 -1
  42. package/dist/components/ui/avatar.js +50 -21
  43. package/dist/components/ui/avatar.js.map +1 -1
  44. package/dist/components/ui/avatar.module.js +9 -0
  45. package/dist/components/ui/avatar.module.js.map +1 -0
  46. package/dist/components/ui/avatar_module.css +35 -0
  47. package/dist/components/ui/avatar_module.css.map +1 -0
  48. package/dist/components/ui/background-beams.d.ts +21 -3
  49. package/dist/components/ui/background-beams.d.ts.map +1 -1
  50. package/dist/components/ui/background-beams.js +22 -11
  51. package/dist/components/ui/background-beams.js.map +1 -1
  52. package/dist/components/ui/background-beams.module.js +8 -0
  53. package/dist/components/ui/background-beams.module.js.map +1 -0
  54. package/dist/components/ui/background-beams_module.css +22 -0
  55. package/dist/components/ui/background-beams_module.css.map +1 -0
  56. package/dist/components/ui/badge.d.ts +79 -6
  57. package/dist/components/ui/badge.d.ts.map +1 -1
  58. package/dist/components/ui/badge.js +19 -23
  59. package/dist/components/ui/badge.js.map +1 -1
  60. package/dist/components/ui/badge.module.js +11 -0
  61. package/dist/components/ui/badge.module.js.map +1 -0
  62. package/dist/components/ui/badge_module.css +63 -0
  63. package/dist/components/ui/badge_module.css.map +1 -0
  64. package/dist/components/ui/breadcrumb.d.ts +158 -13
  65. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  66. package/dist/components/ui/breadcrumb.js +39 -30
  67. package/dist/components/ui/breadcrumb.js.map +1 -1
  68. package/dist/components/ui/breadcrumb.module.js +14 -0
  69. package/dist/components/ui/breadcrumb.module.js.map +1 -0
  70. package/dist/components/ui/breadcrumb_module.css +90 -0
  71. package/dist/components/ui/breadcrumb_module.css.map +1 -0
  72. package/dist/components/ui/bubble-background.d.ts +38 -10
  73. package/dist/components/ui/bubble-background.d.ts.map +1 -1
  74. package/dist/components/ui/bubble-background.js +33 -35
  75. package/dist/components/ui/bubble-background.js.map +1 -1
  76. package/dist/components/ui/bubble-background.module.js +20 -0
  77. package/dist/components/ui/bubble-background.module.js.map +1 -0
  78. package/dist/components/ui/bubble-background_module.css +99 -0
  79. package/dist/components/ui/bubble-background_module.css.map +1 -0
  80. package/dist/components/ui/button-group.d.ts +88 -8
  81. package/dist/components/ui/button-group.d.ts.map +1 -1
  82. package/dist/components/ui/button-group.js +35 -32
  83. package/dist/components/ui/button-group.js.map +1 -1
  84. package/dist/components/ui/button-group.module.js +11 -0
  85. package/dist/components/ui/button-group.module.js.map +1 -0
  86. package/dist/components/ui/button-group_module.css +79 -0
  87. package/dist/components/ui/button-group_module.css.map +1 -0
  88. package/dist/components/ui/button.d.ts +82 -7
  89. package/dist/components/ui/button.d.ts.map +1 -1
  90. package/dist/components/ui/button.js +69 -34
  91. package/dist/components/ui/button.js.map +1 -1
  92. package/dist/components/ui/button.module.js +17 -0
  93. package/dist/components/ui/button.module.js.map +1 -0
  94. package/dist/components/ui/button_module.css +137 -0
  95. package/dist/components/ui/button_module.css.map +1 -0
  96. package/dist/components/ui/calendar.d.ts +39 -5
  97. package/dist/components/ui/calendar.d.ts.map +1 -1
  98. package/dist/components/ui/calendar.js +72 -61
  99. package/dist/components/ui/calendar.js.map +1 -1
  100. package/dist/components/ui/calendar.module.js +35 -0
  101. package/dist/components/ui/calendar.module.js.map +1 -0
  102. package/dist/components/ui/calendar_module.css +245 -0
  103. package/dist/components/ui/calendar_module.css.map +1 -0
  104. package/dist/components/ui/card-skeleton.js +41 -0
  105. package/dist/components/ui/card-skeleton.js.map +1 -0
  106. package/dist/components/ui/card-skeleton.module.js +15 -0
  107. package/dist/components/ui/card-skeleton.module.js.map +1 -0
  108. package/dist/components/ui/card-skeleton_module.css +54 -0
  109. package/dist/components/ui/card-skeleton_module.css.map +1 -0
  110. package/dist/components/ui/card.d.ts +162 -7
  111. package/dist/components/ui/card.d.ts.map +1 -1
  112. package/dist/components/ui/card.js +13 -13
  113. package/dist/components/ui/card.js.map +1 -1
  114. package/dist/components/ui/card.module.js +13 -0
  115. package/dist/components/ui/card.module.js.map +1 -0
  116. package/dist/components/ui/card_module.css +43 -0
  117. package/dist/components/ui/card_module.css.map +1 -0
  118. package/dist/components/ui/carousel.d.ts +127 -3
  119. package/dist/components/ui/carousel.d.ts.map +1 -1
  120. package/dist/components/ui/carousel.js +63 -36
  121. package/dist/components/ui/carousel.js.map +1 -1
  122. package/dist/components/ui/carousel.module.js +17 -0
  123. package/dist/components/ui/carousel.module.js.map +1 -0
  124. package/dist/components/ui/carousel_module.css +82 -0
  125. package/dist/components/ui/carousel_module.css.map +1 -0
  126. package/dist/components/ui/chart.d.ts +323 -13
  127. package/dist/components/ui/chart.d.ts.map +1 -1
  128. package/dist/components/ui/chart.js +158 -53
  129. package/dist/components/ui/chart.js.map +1 -1
  130. package/dist/components/ui/chart.module.js +27 -0
  131. package/dist/components/ui/chart.module.js.map +1 -0
  132. package/dist/components/ui/chart_module.css +159 -0
  133. package/dist/components/ui/chart_module.css.map +1 -0
  134. package/dist/components/ui/checkbox-group.d.ts +31 -0
  135. package/dist/components/ui/checkbox-group.d.ts.map +1 -0
  136. package/dist/components/ui/checkbox-group.js +25 -0
  137. package/dist/components/ui/checkbox-group.js.map +1 -0
  138. package/dist/components/ui/checkbox-group.module.js +7 -0
  139. package/dist/components/ui/checkbox-group.module.js.map +1 -0
  140. package/dist/components/ui/checkbox-group_module.css +11 -0
  141. package/dist/components/ui/checkbox-group_module.css.map +1 -0
  142. package/dist/components/ui/checkbox.d.ts +33 -2
  143. package/dist/components/ui/checkbox.d.ts.map +1 -1
  144. package/dist/components/ui/checkbox.js +37 -12
  145. package/dist/components/ui/checkbox.js.map +1 -1
  146. package/dist/components/ui/checkbox.module.js +8 -0
  147. package/dist/components/ui/checkbox.module.js.map +1 -0
  148. package/dist/components/ui/checkbox_module.css +45 -0
  149. package/dist/components/ui/checkbox_module.css.map +1 -0
  150. package/dist/components/ui/collapsible.d.ts +87 -3
  151. package/dist/components/ui/collapsible.d.ts.map +1 -1
  152. package/dist/components/ui/collapsible.js +46 -32
  153. package/dist/components/ui/collapsible.js.map +1 -1
  154. package/dist/components/ui/collapsible.module.js +8 -0
  155. package/dist/components/ui/collapsible.module.js.map +1 -0
  156. package/dist/components/ui/collapsible_module.css +26 -0
  157. package/dist/components/ui/collapsible_module.css.map +1 -0
  158. package/dist/components/ui/command.d.ts +284 -51
  159. package/dist/components/ui/command.d.ts.map +1 -1
  160. package/dist/components/ui/command.js +387 -51
  161. package/dist/components/ui/command.js.map +1 -1
  162. package/dist/components/ui/command.module.js +20 -0
  163. package/dist/components/ui/command.module.js.map +1 -0
  164. package/dist/components/ui/command_module.css +194 -0
  165. package/dist/components/ui/command_module.css.map +1 -0
  166. package/dist/components/ui/context-menu.d.ts +414 -21
  167. package/dist/components/ui/context-menu.d.ts.map +1 -1
  168. package/dist/components/ui/context-menu.js +190 -68
  169. package/dist/components/ui/context-menu.js.map +1 -1
  170. package/dist/components/ui/context-menu.module.js +19 -0
  171. package/dist/components/ui/context-menu.module.js.map +1 -0
  172. package/dist/components/ui/context-menu_module.css +114 -0
  173. package/dist/components/ui/context-menu_module.css.map +1 -0
  174. package/dist/components/ui/copy-button.d.ts +41 -0
  175. package/dist/components/ui/copy-button.d.ts.map +1 -0
  176. package/dist/components/ui/copy-button.js +51 -0
  177. package/dist/components/ui/copy-button.js.map +1 -0
  178. package/dist/components/ui/copy-button.module.js +8 -0
  179. package/dist/components/ui/copy-button.module.js.map +1 -0
  180. package/dist/components/ui/copy-button_module.css +37 -0
  181. package/dist/components/ui/copy-button_module.css.map +1 -0
  182. package/dist/components/ui/counting-number.d.ts +28 -2
  183. package/dist/components/ui/counting-number.d.ts.map +1 -1
  184. package/dist/components/ui/counting-number.js +31 -27
  185. package/dist/components/ui/counting-number.js.map +1 -1
  186. package/dist/components/ui/counting-number.module.js +7 -0
  187. package/dist/components/ui/counting-number.module.js.map +1 -0
  188. package/dist/components/ui/counting-number_module.css +7 -0
  189. package/dist/components/ui/counting-number_module.css.map +1 -0
  190. package/dist/components/ui/dialog.d.ts +287 -17
  191. package/dist/components/ui/dialog.d.ts.map +1 -1
  192. package/dist/components/ui/dialog.js +129 -52
  193. package/dist/components/ui/dialog.js.map +1 -1
  194. package/dist/components/ui/dialog.module.js +13 -0
  195. package/dist/components/ui/dialog.module.js.map +1 -0
  196. package/dist/components/ui/dialog_module.css +114 -0
  197. package/dist/components/ui/dialog_module.css.map +1 -0
  198. package/dist/components/ui/dot-background.d.ts +25 -35
  199. package/dist/components/ui/dot-background.d.ts.map +1 -1
  200. package/dist/components/ui/dot-background.js +31 -22
  201. package/dist/components/ui/dot-background.js.map +1 -1
  202. package/dist/components/ui/dot-background.module.js +8 -0
  203. package/dist/components/ui/dot-background.module.js.map +1 -0
  204. package/dist/components/ui/dot-background_module.css +15 -0
  205. package/dist/components/ui/dot-background_module.css.map +1 -0
  206. package/dist/components/ui/drawer.d.ts +287 -18
  207. package/dist/components/ui/drawer.d.ts.map +1 -1
  208. package/dist/components/ui/drawer.js +117 -40
  209. package/dist/components/ui/drawer.js.map +1 -1
  210. package/dist/components/ui/drawer.module.js +14 -0
  211. package/dist/components/ui/drawer.module.js.map +1 -0
  212. package/dist/components/ui/drawer_module.css +86 -0
  213. package/dist/components/ui/drawer_module.css.map +1 -0
  214. package/dist/components/ui/dropdown-menu.d.ts +414 -21
  215. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  216. package/dist/components/ui/dropdown-menu.js +189 -68
  217. package/dist/components/ui/dropdown-menu.js.map +1 -1
  218. package/dist/components/ui/dropdown-menu.module.js +19 -0
  219. package/dist/components/ui/dropdown-menu.module.js.map +1 -0
  220. package/dist/components/ui/dropdown-menu_module.css +114 -0
  221. package/dist/components/ui/dropdown-menu_module.css.map +1 -0
  222. package/dist/components/ui/dropdrawer.d.ts +313 -17
  223. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  224. package/dist/components/ui/dropdrawer.js +423 -159
  225. package/dist/components/ui/dropdrawer.js.map +1 -1
  226. package/dist/components/ui/dropdrawer.module.js +43 -0
  227. package/dist/components/ui/dropdrawer.module.js.map +1 -0
  228. package/dist/components/ui/dropdrawer_module.css +307 -0
  229. package/dist/components/ui/dropdrawer_module.css.map +1 -0
  230. package/dist/components/ui/empty.d.ts +129 -10
  231. package/dist/components/ui/empty.d.ts.map +1 -1
  232. package/dist/components/ui/empty.js +32 -47
  233. package/dist/components/ui/empty.js.map +1 -1
  234. package/dist/components/ui/empty.module.js +13 -0
  235. package/dist/components/ui/empty.module.js.map +1 -0
  236. package/dist/components/ui/empty_module.css +85 -0
  237. package/dist/components/ui/empty_module.css.map +1 -0
  238. package/dist/components/ui/error-boundary.js +61 -0
  239. package/dist/components/ui/error-boundary.js.map +1 -0
  240. package/dist/components/ui/error-boundary.module.js +10 -0
  241. package/dist/components/ui/error-boundary.module.js.map +1 -0
  242. package/dist/components/ui/error-boundary_module.css +41 -0
  243. package/dist/components/ui/error-boundary_module.css.map +1 -0
  244. package/dist/components/ui/field.d.ts +222 -23
  245. package/dist/components/ui/field.d.ts.map +1 -1
  246. package/dist/components/ui/field.js +76 -86
  247. package/dist/components/ui/field.js.map +1 -1
  248. package/dist/components/ui/field.module.js +24 -0
  249. package/dist/components/ui/field.module.js.map +1 -0
  250. package/dist/components/ui/field_module.css +185 -0
  251. package/dist/components/ui/field_module.css.map +1 -0
  252. package/dist/components/ui/fireworks-background.d.ts +27 -3
  253. package/dist/components/ui/fireworks-background.d.ts.map +1 -1
  254. package/dist/components/ui/fireworks-background.js +36 -35
  255. package/dist/components/ui/fireworks-background.js.map +1 -1
  256. package/dist/components/ui/fireworks-background.module.js +8 -0
  257. package/dist/components/ui/fireworks-background.module.js.map +1 -0
  258. package/dist/components/ui/fireworks-background_module.css +17 -0
  259. package/dist/components/ui/fireworks-background_module.css.map +1 -0
  260. package/dist/components/ui/flip-button.d.ts +27 -3
  261. package/dist/components/ui/flip-button.d.ts.map +1 -1
  262. package/dist/components/ui/flip-button.js +27 -17
  263. package/dist/components/ui/flip-button.js.map +1 -1
  264. package/dist/components/ui/flip-button.module.js +11 -0
  265. package/dist/components/ui/flip-button.module.js.map +1 -0
  266. package/dist/components/ui/flip-button_module.css +47 -0
  267. package/dist/components/ui/flip-button_module.css.map +1 -0
  268. package/dist/components/ui/focus-scope.js +70 -0
  269. package/dist/components/ui/focus-scope.js.map +1 -0
  270. package/dist/components/ui/focus-scope.module.js +7 -0
  271. package/dist/components/ui/focus-scope.module.js.map +1 -0
  272. package/dist/components/ui/focus-scope_module.css +6 -0
  273. package/dist/components/ui/focus-scope_module.css.map +1 -0
  274. package/dist/components/ui/form-skeleton.js +32 -0
  275. package/dist/components/ui/form-skeleton.js.map +1 -0
  276. package/dist/components/ui/form-skeleton.module.js +11 -0
  277. package/dist/components/ui/form-skeleton.module.js.map +1 -0
  278. package/dist/components/ui/form-skeleton_module.css +30 -0
  279. package/dist/components/ui/form-skeleton_module.css.map +1 -0
  280. package/dist/components/ui/form.d.ts +143 -13
  281. package/dist/components/ui/form.d.ts.map +1 -1
  282. package/dist/components/ui/form.js +55 -21
  283. package/dist/components/ui/form.js.map +1 -1
  284. package/dist/components/ui/form.module.js +10 -0
  285. package/dist/components/ui/form.module.js.map +1 -0
  286. package/dist/components/ui/form_module.css +22 -0
  287. package/dist/components/ui/form_module.css.map +1 -0
  288. package/dist/components/ui/gradient-background.d.ts +21 -3
  289. package/dist/components/ui/gradient-background.d.ts.map +1 -1
  290. package/dist/components/ui/gradient-background.js +8 -4
  291. package/dist/components/ui/gradient-background.js.map +1 -1
  292. package/dist/components/ui/gradient-background.module.js +7 -0
  293. package/dist/components/ui/gradient-background.module.js.map +1 -0
  294. package/dist/components/ui/gradient-background_module.css +9 -0
  295. package/dist/components/ui/gradient-background_module.css.map +1 -0
  296. package/dist/components/ui/gradient-text.d.ts +23 -2
  297. package/dist/components/ui/gradient-text.d.ts.map +1 -1
  298. package/dist/components/ui/gradient-text.js +8 -6
  299. package/dist/components/ui/gradient-text.js.map +1 -1
  300. package/dist/components/ui/gradient-text.module.js +9 -0
  301. package/dist/components/ui/gradient-text.module.js.map +1 -0
  302. package/dist/components/ui/gradient-text_module.css +24 -0
  303. package/dist/components/ui/gradient-text_module.css.map +1 -0
  304. package/dist/components/ui/highlight-text.d.ts +24 -2
  305. package/dist/components/ui/highlight-text.d.ts.map +1 -1
  306. package/dist/components/ui/highlight-text.js +7 -10
  307. package/dist/components/ui/highlight-text.js.map +1 -1
  308. package/dist/components/ui/highlight-text.module.js +7 -0
  309. package/dist/components/ui/highlight-text.module.js.map +1 -0
  310. package/dist/components/ui/highlight-text_module.css +16 -0
  311. package/dist/components/ui/highlight-text_module.css.map +1 -0
  312. package/dist/components/ui/hole-background.d.ts +23 -2
  313. package/dist/components/ui/hole-background.d.ts.map +1 -1
  314. package/dist/components/ui/hole-background.js +155 -118
  315. package/dist/components/ui/hole-background.js.map +1 -1
  316. package/dist/components/ui/hole-background.module.js +10 -0
  317. package/dist/components/ui/hole-background.module.js.map +1 -0
  318. package/dist/components/ui/hole-background_module.css +85 -0
  319. package/dist/components/ui/hole-background_module.css.map +1 -0
  320. package/dist/components/ui/hover-card.d.ts +85 -4
  321. package/dist/components/ui/hover-card.d.ts.map +1 -1
  322. package/dist/components/ui/hover-card.js +52 -10
  323. package/dist/components/ui/hover-card.js.map +1 -1
  324. package/dist/components/ui/hover-card.module.js +8 -0
  325. package/dist/components/ui/hover-card.module.js.map +1 -0
  326. package/dist/components/ui/hover-card_module.css +23 -0
  327. package/dist/components/ui/hover-card_module.css.map +1 -0
  328. package/dist/components/ui/input-group.d.ts +132 -13
  329. package/dist/components/ui/input-group.d.ts.map +1 -1
  330. package/dist/components/ui/input-group.js +62 -66
  331. package/dist/components/ui/input-group.js.map +1 -1
  332. package/dist/components/ui/input-group.module.js +20 -0
  333. package/dist/components/ui/input-group.module.js.map +1 -0
  334. package/dist/components/ui/input-group_module.css +150 -0
  335. package/dist/components/ui/input-group_module.css.map +1 -0
  336. package/dist/components/ui/input-otp.d.ts +110 -30
  337. package/dist/components/ui/input-otp.d.ts.map +1 -1
  338. package/dist/components/ui/input-otp.js +24 -15
  339. package/dist/components/ui/input-otp.js.map +1 -1
  340. package/dist/components/ui/input-otp.module.js +17 -0
  341. package/dist/components/ui/input-otp.module.js.map +1 -0
  342. package/dist/components/ui/input-otp_module.css +89 -0
  343. package/dist/components/ui/input-otp_module.css.map +1 -0
  344. package/dist/components/ui/input.d.ts +31 -1
  345. package/dist/components/ui/input.d.ts.map +1 -1
  346. package/dist/components/ui/input.js +21 -8
  347. package/dist/components/ui/input.js.map +1 -1
  348. package/dist/components/ui/input.module.js +7 -0
  349. package/dist/components/ui/input.module.js.map +1 -0
  350. package/dist/components/ui/input_module.css +40 -0
  351. package/dist/components/ui/input_module.css.map +1 -0
  352. package/dist/components/ui/item.d.ts +221 -19
  353. package/dist/components/ui/item.d.ts.map +1 -1
  354. package/dist/components/ui/item.js +66 -90
  355. package/dist/components/ui/item.js.map +1 -1
  356. package/dist/components/ui/item.module.js +22 -0
  357. package/dist/components/ui/item.module.js.map +1 -0
  358. package/dist/components/ui/item_module.css +143 -0
  359. package/dist/components/ui/item_module.css.map +1 -0
  360. package/dist/components/ui/kbd.d.ts +43 -2
  361. package/dist/components/ui/kbd.d.ts.map +1 -1
  362. package/dist/components/ui/kbd.js +12 -12
  363. package/dist/components/ui/kbd.js.map +1 -1
  364. package/dist/components/ui/kbd.module.js +8 -0
  365. package/dist/components/ui/kbd.module.js.map +1 -0
  366. package/dist/components/ui/kbd_module.css +35 -0
  367. package/dist/components/ui/kbd_module.css.map +1 -0
  368. package/dist/components/ui/label.d.ts +30 -3
  369. package/dist/components/ui/label.d.ts.map +1 -1
  370. package/dist/components/ui/label.js +7 -8
  371. package/dist/components/ui/label.js.map +1 -1
  372. package/dist/components/ui/label.module.js +7 -0
  373. package/dist/components/ui/label.module.js.map +1 -0
  374. package/dist/components/ui/label_module.css +17 -0
  375. package/dist/components/ui/label_module.css.map +1 -0
  376. package/dist/components/ui/list-skeleton.js +35 -0
  377. package/dist/components/ui/list-skeleton.js.map +1 -0
  378. package/dist/components/ui/list-skeleton.module.js +12 -0
  379. package/dist/components/ui/list-skeleton.module.js.map +1 -0
  380. package/dist/components/ui/list-skeleton_module.css +39 -0
  381. package/dist/components/ui/list-skeleton_module.css.map +1 -0
  382. package/dist/components/ui/loading-overlay.js +21 -0
  383. package/dist/components/ui/loading-overlay.js.map +1 -0
  384. package/dist/components/ui/loading-overlay.module.js +9 -0
  385. package/dist/components/ui/loading-overlay.module.js.map +1 -0
  386. package/dist/components/ui/loading-overlay_module.css +22 -0
  387. package/dist/components/ui/loading-overlay_module.css.map +1 -0
  388. package/dist/components/ui/menubar.d.ts +422 -22
  389. package/dist/components/ui/menubar.d.ts.map +1 -1
  390. package/dist/components/ui/menubar.js +199 -100
  391. package/dist/components/ui/menubar.js.map +1 -1
  392. package/dist/components/ui/menubar.module.js +21 -0
  393. package/dist/components/ui/menubar.module.js.map +1 -0
  394. package/dist/components/ui/menubar_module.css +145 -0
  395. package/dist/components/ui/menubar_module.css.map +1 -0
  396. package/dist/components/ui/meter.d.ts +101 -0
  397. package/dist/components/ui/meter.d.ts.map +1 -0
  398. package/dist/components/ui/meter.js +71 -0
  399. package/dist/components/ui/meter.js.map +1 -0
  400. package/dist/components/ui/meter.module.js +10 -0
  401. package/dist/components/ui/meter.module.js.map +1 -0
  402. package/dist/components/ui/meter_module.css +31 -0
  403. package/dist/components/ui/meter_module.css.map +1 -0
  404. package/dist/components/ui/navigation-menu.d.ts +242 -11
  405. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  406. package/dist/components/ui/navigation-menu.js +135 -49
  407. package/dist/components/ui/navigation-menu.js.map +1 -1
  408. package/dist/components/ui/navigation-menu.module.js +18 -0
  409. package/dist/components/ui/navigation-menu.module.js.map +1 -0
  410. package/dist/components/ui/navigation-menu_module.css +112 -0
  411. package/dist/components/ui/navigation-menu_module.css.map +1 -0
  412. package/dist/components/ui/number-field.d.ts +144 -0
  413. package/dist/components/ui/number-field.d.ts.map +1 -0
  414. package/dist/components/ui/number-field.js +111 -0
  415. package/dist/components/ui/number-field.js.map +1 -0
  416. package/dist/components/ui/number-field.module.js +15 -0
  417. package/dist/components/ui/number-field.module.js.map +1 -0
  418. package/dist/components/ui/number-field_module.css +125 -0
  419. package/dist/components/ui/number-field_module.css.map +1 -0
  420. package/dist/components/ui/pagination.d.ts +150 -24
  421. package/dist/components/ui/pagination.d.ts.map +1 -1
  422. package/dist/components/ui/pagination.js +41 -38
  423. package/dist/components/ui/pagination.js.map +1 -1
  424. package/dist/components/ui/pagination.module.js +14 -0
  425. package/dist/components/ui/pagination.module.js.map +1 -0
  426. package/dist/components/ui/pagination_module.css +66 -0
  427. package/dist/components/ui/pagination_module.css.map +1 -0
  428. package/dist/components/ui/popover.d.ts +133 -5
  429. package/dist/components/ui/popover.d.ts.map +1 -1
  430. package/dist/components/ui/popover.js +68 -14
  431. package/dist/components/ui/popover.js.map +1 -1
  432. package/dist/components/ui/popover.module.js +9 -0
  433. package/dist/components/ui/popover.module.js.map +1 -0
  434. package/dist/components/ui/popover_module.css +28 -0
  435. package/dist/components/ui/popover_module.css.map +1 -0
  436. package/dist/components/ui/progress.d.ts +34 -2
  437. package/dist/components/ui/progress.d.ts.map +1 -1
  438. package/dist/components/ui/progress.js +22 -14
  439. package/dist/components/ui/progress.js.map +1 -1
  440. package/dist/components/ui/progress.module.js +8 -0
  441. package/dist/components/ui/progress.module.js.map +1 -0
  442. package/dist/components/ui/progress_module.css +20 -0
  443. package/dist/components/ui/progress_module.css.map +1 -0
  444. package/dist/components/ui/radio-group.d.ts +44 -3
  445. package/dist/components/ui/radio-group.d.ts.map +1 -1
  446. package/dist/components/ui/radio-group.js +38 -16
  447. package/dist/components/ui/radio-group.js.map +1 -1
  448. package/dist/components/ui/radio-group.module.js +10 -0
  449. package/dist/components/ui/radio-group.module.js.map +1 -0
  450. package/dist/components/ui/radio-group_module.css +44 -0
  451. package/dist/components/ui/radio-group_module.css.map +1 -0
  452. package/dist/components/ui/resizable.d.ts +79 -6
  453. package/dist/components/ui/resizable.d.ts.map +1 -1
  454. package/dist/components/ui/resizable.js +23 -13
  455. package/dist/components/ui/resizable.js.map +1 -1
  456. package/dist/components/ui/resizable.module.js +10 -0
  457. package/dist/components/ui/resizable.module.js.map +1 -0
  458. package/dist/components/ui/resizable_module.css +70 -0
  459. package/dist/components/ui/resizable_module.css.map +1 -0
  460. package/dist/components/ui/ripple-button.d.ts +23 -2
  461. package/dist/components/ui/ripple-button.d.ts.map +1 -1
  462. package/dist/components/ui/ripple-button.js +26 -11
  463. package/dist/components/ui/ripple-button.js.map +1 -1
  464. package/dist/components/ui/ripple-button.module.js +9 -0
  465. package/dist/components/ui/ripple-button.module.js.map +1 -0
  466. package/dist/components/ui/ripple-button_module.css +38 -0
  467. package/dist/components/ui/ripple-button_module.css.map +1 -0
  468. package/dist/components/ui/scratcher.d.ts +25 -2
  469. package/dist/components/ui/scratcher.d.ts.map +1 -1
  470. package/dist/components/ui/scratcher.js +85 -87
  471. package/dist/components/ui/scratcher.js.map +1 -1
  472. package/dist/components/ui/scratcher.module.js +8 -0
  473. package/dist/components/ui/scratcher.module.js.map +1 -0
  474. package/dist/components/ui/scratcher_module.css +13 -0
  475. package/dist/components/ui/scratcher_module.css.map +1 -0
  476. package/dist/components/ui/scroll-area.d.ts +46 -3
  477. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  478. package/dist/components/ui/scroll-area.js +44 -19
  479. package/dist/components/ui/scroll-area.js.map +1 -1
  480. package/dist/components/ui/scroll-area.module.js +14 -0
  481. package/dist/components/ui/scroll-area.module.js.map +1 -0
  482. package/dist/components/ui/scroll-area_module.css +51 -0
  483. package/dist/components/ui/scroll-area_module.css.map +1 -0
  484. package/dist/components/ui/select.d.ts +269 -11
  485. package/dist/components/ui/select.d.ts.map +1 -1
  486. package/dist/components/ui/select.js +152 -67
  487. package/dist/components/ui/select.js.map +1 -1
  488. package/dist/components/ui/select.module.js +20 -0
  489. package/dist/components/ui/select.module.js.map +1 -0
  490. package/dist/components/ui/select_module.css +134 -0
  491. package/dist/components/ui/select_module.css.map +1 -0
  492. package/dist/components/ui/separator.d.ts +36 -2
  493. package/dist/components/ui/separator.d.ts.map +1 -1
  494. package/dist/components/ui/separator.js +20 -10
  495. package/dist/components/ui/separator.js.map +1 -1
  496. package/dist/components/ui/separator.module.js +9 -0
  497. package/dist/components/ui/separator.module.js.map +1 -0
  498. package/dist/components/ui/separator_module.css +17 -0
  499. package/dist/components/ui/separator_module.css.map +1 -0
  500. package/dist/components/ui/sheet.d.ts +297 -23
  501. package/dist/components/ui/sheet.d.ts.map +1 -1
  502. package/dist/components/ui/sheet.js +121 -63
  503. package/dist/components/ui/sheet.js.map +1 -1
  504. package/dist/components/ui/sheet.module.js +18 -0
  505. package/dist/components/ui/sheet.module.js.map +1 -0
  506. package/dist/components/ui/sheet_module.css +136 -0
  507. package/dist/components/ui/sheet_module.css.map +1 -0
  508. package/dist/components/ui/sidebar.d.ts +491 -23
  509. package/dist/components/ui/sidebar.d.ts.map +1 -1
  510. package/dist/components/ui/sidebar.js +214 -143
  511. package/dist/components/ui/sidebar.js.map +1 -1
  512. package/dist/components/ui/sidebar.module.js +50 -0
  513. package/dist/components/ui/sidebar.module.js.map +1 -0
  514. package/dist/components/ui/sidebar_module.css +569 -0
  515. package/dist/components/ui/sidebar_module.css.map +1 -0
  516. package/dist/components/ui/skeleton.d.ts +30 -1
  517. package/dist/components/ui/skeleton.d.ts.map +1 -1
  518. package/dist/components/ui/skeleton.js +7 -7
  519. package/dist/components/ui/skeleton.js.map +1 -1
  520. package/dist/components/ui/skeleton.module.js +8 -0
  521. package/dist/components/ui/skeleton.module.js.map +1 -0
  522. package/dist/components/ui/skeleton_module.css +18 -0
  523. package/dist/components/ui/skeleton_module.css.map +1 -0
  524. package/dist/components/ui/slider.d.ts +48 -2
  525. package/dist/components/ui/slider.d.ts.map +1 -1
  526. package/dist/components/ui/slider.js +44 -17
  527. package/dist/components/ui/slider.js.map +1 -1
  528. package/dist/components/ui/slider.module.js +11 -0
  529. package/dist/components/ui/slider.module.js.map +1 -0
  530. package/dist/components/ui/slider_module.css +55 -0
  531. package/dist/components/ui/slider_module.css.map +1 -0
  532. package/dist/components/ui/sonner.d.ts +137 -4
  533. package/dist/components/ui/sonner.d.ts.map +1 -1
  534. package/dist/components/ui/sonner.js +450 -18
  535. package/dist/components/ui/sonner.js.map +1 -1
  536. package/dist/components/ui/sonner.module.js +34 -0
  537. package/dist/components/ui/sonner.module.js.map +1 -0
  538. package/dist/components/ui/sonner_module.css +233 -0
  539. package/dist/components/ui/sonner_module.css.map +1 -0
  540. package/dist/components/ui/spinner.d.ts +20 -1
  541. package/dist/components/ui/spinner.d.ts.map +1 -1
  542. package/dist/components/ui/spinner.js +29 -11
  543. package/dist/components/ui/spinner.js.map +1 -1
  544. package/dist/components/ui/spinner.module.js +10 -0
  545. package/dist/components/ui/spinner.module.js.map +1 -0
  546. package/dist/components/ui/spinner_module.css +28 -0
  547. package/dist/components/ui/spinner_module.css.map +1 -0
  548. package/dist/components/ui/stepper.d.ts +48 -0
  549. package/dist/components/ui/stepper.d.ts.map +1 -0
  550. package/dist/components/ui/stepper.js +41 -0
  551. package/dist/components/ui/stepper.js.map +1 -0
  552. package/dist/components/ui/stepper.module.js +12 -0
  553. package/dist/components/ui/stepper.module.js.map +1 -0
  554. package/dist/components/ui/stepper_module.css +75 -0
  555. package/dist/components/ui/stepper_module.css.map +1 -0
  556. package/dist/components/ui/switch.d.ts +29 -2
  557. package/dist/components/ui/switch.d.ts.map +1 -1
  558. package/dist/components/ui/switch.js +21 -9
  559. package/dist/components/ui/switch.js.map +1 -1
  560. package/dist/components/ui/switch.module.js +8 -0
  561. package/dist/components/ui/switch.module.js.map +1 -0
  562. package/dist/components/ui/switch_module.css +45 -0
  563. package/dist/components/ui/switch_module.css.map +1 -0
  564. package/dist/components/ui/table-skeleton.js +34 -0
  565. package/dist/components/ui/table-skeleton.js.map +1 -0
  566. package/dist/components/ui/table-skeleton.module.js +11 -0
  567. package/dist/components/ui/table-skeleton.module.js.map +1 -0
  568. package/dist/components/ui/table-skeleton_module.css +32 -0
  569. package/dist/components/ui/table-skeleton_module.css.map +1 -0
  570. package/dist/components/ui/table.d.ts +170 -8
  571. package/dist/components/ui/table.d.ts.map +1 -1
  572. package/dist/components/ui/table.js +17 -17
  573. package/dist/components/ui/table.js.map +1 -1
  574. package/dist/components/ui/table.module.js +15 -0
  575. package/dist/components/ui/table.module.js.map +1 -0
  576. package/dist/components/ui/table_module.css +71 -0
  577. package/dist/components/ui/table_module.css.map +1 -0
  578. package/dist/components/ui/tabs.d.ts +114 -5
  579. package/dist/components/ui/tabs.d.ts.map +1 -1
  580. package/dist/components/ui/tabs.js +71 -20
  581. package/dist/components/ui/tabs.js.map +1 -1
  582. package/dist/components/ui/tabs.module.js +10 -0
  583. package/dist/components/ui/tabs.module.js.map +1 -0
  584. package/dist/components/ui/tabs_module.css +89 -0
  585. package/dist/components/ui/tabs_module.css.map +1 -0
  586. package/dist/components/ui/textarea.d.ts +24 -1
  587. package/dist/components/ui/textarea.d.ts.map +1 -1
  588. package/dist/components/ui/textarea.js +2 -2
  589. package/dist/components/ui/textarea.js.map +1 -1
  590. package/dist/components/ui/textarea.module.js +7 -0
  591. package/dist/components/ui/textarea.module.js.map +1 -0
  592. package/dist/components/ui/textarea_module.css +33 -0
  593. package/dist/components/ui/textarea_module.css.map +1 -0
  594. package/dist/components/ui/timeline.d.ts +111 -0
  595. package/dist/components/ui/timeline.d.ts.map +1 -0
  596. package/dist/components/ui/timeline.js +34 -0
  597. package/dist/components/ui/timeline.js.map +1 -0
  598. package/dist/components/ui/timeline.module.js +10 -0
  599. package/dist/components/ui/timeline.module.js.map +1 -0
  600. package/dist/components/ui/timeline_module.css +47 -0
  601. package/dist/components/ui/timeline_module.css.map +1 -0
  602. package/dist/components/ui/toggle-group.d.ts +81 -10
  603. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  604. package/dist/components/ui/toggle-group.js +32 -23
  605. package/dist/components/ui/toggle-group.js.map +1 -1
  606. package/dist/components/ui/toggle-group.module.js +7 -0
  607. package/dist/components/ui/toggle-group.module.js.map +1 -0
  608. package/dist/components/ui/toggle-group_module.css +8 -0
  609. package/dist/components/ui/toggle-group_module.css.map +1 -0
  610. package/dist/components/ui/toggle.d.ts +60 -11
  611. package/dist/components/ui/toggle.d.ts.map +1 -1
  612. package/dist/components/ui/toggle.js +29 -29
  613. package/dist/components/ui/toggle.js.map +1 -1
  614. package/dist/components/ui/toggle.module.js +12 -0
  615. package/dist/components/ui/toggle.module.js.map +1 -0
  616. package/dist/components/ui/toggle_module.css +62 -0
  617. package/dist/components/ui/toggle_module.css.map +1 -0
  618. package/dist/components/ui/toolbar.d.ts +127 -0
  619. package/dist/components/ui/toolbar.d.ts.map +1 -0
  620. package/dist/components/ui/toolbar.js +85 -0
  621. package/dist/components/ui/toolbar.js.map +1 -0
  622. package/dist/components/ui/toolbar.module.js +12 -0
  623. package/dist/components/ui/toolbar.module.js.map +1 -0
  624. package/dist/components/ui/toolbar_module.css +115 -0
  625. package/dist/components/ui/toolbar_module.css.map +1 -0
  626. package/dist/components/ui/tooltip.d.ts +119 -5
  627. package/dist/components/ui/tooltip.d.ts.map +1 -1
  628. package/dist/components/ui/tooltip.js +48 -13
  629. package/dist/components/ui/tooltip.js.map +1 -1
  630. package/dist/components/ui/tooltip.module.js +9 -0
  631. package/dist/components/ui/tooltip.module.js.map +1 -0
  632. package/dist/components/ui/tooltip_module.css +35 -0
  633. package/dist/components/ui/tooltip_module.css.map +1 -0
  634. package/dist/components/ui/typewriter.d.ts +48 -13
  635. package/dist/components/ui/typewriter.d.ts.map +1 -1
  636. package/dist/components/ui/typewriter.js +46 -49
  637. package/dist/components/ui/typewriter.js.map +1 -1
  638. package/dist/components/ui/typewriter.module.js +16 -0
  639. package/dist/components/ui/typewriter.module.js.map +1 -0
  640. package/dist/components/ui/typewriter_module.css +102 -0
  641. package/dist/components/ui/typewriter_module.css.map +1 -0
  642. package/dist/components/ui/visually-hidden.d.ts +38 -0
  643. package/dist/components/ui/visually-hidden.d.ts.map +1 -0
  644. package/dist/components/ui/visually-hidden.js +13 -0
  645. package/dist/components/ui/visually-hidden.js.map +1 -0
  646. package/dist/components/ui/visually-hidden.module.js +7 -0
  647. package/dist/components/ui/visually-hidden.module.js.map +1 -0
  648. package/dist/components/ui/visually-hidden_module.css +14 -0
  649. package/dist/components/ui/visually-hidden_module.css.map +1 -0
  650. package/dist/hooks/useAnnounce.js +46 -0
  651. package/dist/hooks/useAnnounce.js.map +1 -0
  652. package/dist/hooks/useBreakpoint.d.ts +17 -0
  653. package/dist/hooks/useBreakpoint.d.ts.map +1 -0
  654. package/dist/hooks/useBreakpoint.js +16 -0
  655. package/dist/hooks/useBreakpoint.js.map +1 -0
  656. package/dist/hooks/useColorScheme.d.ts +14 -0
  657. package/dist/hooks/useColorScheme.d.ts.map +1 -0
  658. package/dist/hooks/useColorScheme.js +9 -0
  659. package/dist/hooks/useColorScheme.js.map +1 -0
  660. package/dist/hooks/useFocusManager.js +51 -0
  661. package/dist/hooks/useFocusManager.js.map +1 -0
  662. package/dist/hooks/useFocusVisible.d.ts +50 -0
  663. package/dist/hooks/useFocusVisible.d.ts.map +1 -0
  664. package/dist/hooks/useFocusVisible.js +35 -0
  665. package/dist/hooks/useFocusVisible.js.map +1 -0
  666. package/dist/hooks/useIsMobile.d.ts +5 -11
  667. package/dist/hooks/useIsMobile.d.ts.map +1 -1
  668. package/dist/hooks/useIsMobile.js +2 -13
  669. package/dist/hooks/useIsMobile.js.map +1 -1
  670. package/dist/hooks/useMediaQuery.d.ts +14 -0
  671. package/dist/hooks/useMediaQuery.d.ts.map +1 -0
  672. package/dist/hooks/useMediaQuery.js +20 -0
  673. package/dist/hooks/useMediaQuery.js.map +1 -0
  674. package/dist/hooks/usePrefersContrast.d.ts +19 -0
  675. package/dist/hooks/usePrefersContrast.d.ts.map +1 -0
  676. package/dist/hooks/usePrefersContrast.js +8 -0
  677. package/dist/hooks/usePrefersContrast.js.map +1 -0
  678. package/dist/hooks/useReducedMotion.d.ts +19 -0
  679. package/dist/hooks/useReducedMotion.d.ts.map +1 -0
  680. package/dist/hooks/useReducedMotion.js +2 -0
  681. package/dist/index.css +104 -5363
  682. package/dist/index.css.map +1 -1
  683. package/dist/index.d.ts +38 -8
  684. package/dist/index.d.ts.map +1 -1
  685. package/dist/index.js +89 -72
  686. package/dist/lib/utilities.d.ts +5 -4
  687. package/dist/lib/utilities.d.ts.map +1 -1
  688. package/dist/lib/utilities.js +1 -2
  689. package/dist/lib/utilities.js.map +1 -1
  690. package/dist/motion/Collapse.js +19 -0
  691. package/dist/motion/Collapse.js.map +1 -0
  692. package/dist/motion/Collapse.module.js +8 -0
  693. package/dist/motion/Collapse.module.js.map +1 -0
  694. package/dist/motion/Collapse_module.css +25 -0
  695. package/dist/motion/Collapse_module.css.map +1 -0
  696. package/dist/motion/Presence.js +14 -0
  697. package/dist/motion/Presence.js.map +1 -0
  698. package/dist/motion/index.js +5 -0
  699. package/dist/motion/presets.js +117 -0
  700. package/dist/motion/presets.js.map +1 -0
  701. package/dist/motion/tokens.js +41 -0
  702. package/dist/motion/tokens.js.map +1 -0
  703. package/package.json +154 -67
  704. package/src/components/ui/accordion.module.css +70 -0
  705. package/src/components/ui/accordion.tsx +278 -44
  706. package/src/components/ui/alert-dialog.module.css +87 -0
  707. package/src/components/ui/alert-dialog.tsx +474 -99
  708. package/src/components/ui/alert.module.css +57 -0
  709. package/src/components/ui/alert.tsx +136 -43
  710. package/src/components/ui/aspect-ratio.module.css +7 -0
  711. package/src/components/ui/aspect-ratio.tsx +38 -3
  712. package/src/components/ui/async-boundary.tsx +56 -0
  713. package/src/components/ui/avatar.module.css +31 -0
  714. package/src/components/ui/avatar.tsx +146 -36
  715. package/src/components/ui/background-beams.module.css +20 -0
  716. package/src/components/ui/background-beams.tsx +173 -134
  717. package/src/components/ui/badge.module.css +60 -0
  718. package/src/components/ui/badge.tsx +100 -32
  719. package/src/components/ui/breadcrumb.module.css +87 -0
  720. package/src/components/ui/breadcrumb.tsx +256 -74
  721. package/src/components/ui/bubble-background.module.css +97 -0
  722. package/src/components/ui/bubble-background.tsx +92 -52
  723. package/src/components/ui/button-group.module.css +76 -0
  724. package/src/components/ui/button-group.tsx +135 -46
  725. package/src/components/ui/button.module.css +138 -0
  726. package/src/components/ui/button.tsx +159 -41
  727. package/src/components/ui/calendar.module.css +250 -0
  728. package/src/components/ui/calendar.tsx +133 -103
  729. package/src/components/ui/card-skeleton.module.css +50 -0
  730. package/src/components/ui/card-skeleton.tsx +69 -0
  731. package/src/components/ui/card.module.css +41 -0
  732. package/src/components/ui/card.tsx +175 -22
  733. package/src/components/ui/carousel.module.css +80 -0
  734. package/src/components/ui/carousel.tsx +184 -43
  735. package/src/components/ui/chart.module.css +164 -0
  736. package/src/components/ui/chart.tsx +444 -102
  737. package/src/components/ui/checkbox-group.module.css +8 -0
  738. package/src/components/ui/checkbox-group.tsx +54 -0
  739. package/src/components/ui/checkbox.module.css +43 -0
  740. package/src/components/ui/checkbox.tsx +73 -19
  741. package/src/components/ui/collapsible.module.css +24 -0
  742. package/src/components/ui/collapsible.tsx +139 -3
  743. package/src/components/ui/command.module.css +193 -0
  744. package/src/components/ui/command.tsx +877 -114
  745. package/src/components/ui/context-menu.module.css +113 -0
  746. package/src/components/ui/context-menu.tsx +616 -157
  747. package/src/components/ui/copy-button.module.css +34 -0
  748. package/src/components/ui/copy-button.tsx +116 -0
  749. package/src/components/ui/counting-number.module.css +4 -0
  750. package/src/components/ui/counting-number.tsx +69 -31
  751. package/src/components/ui/dialog.module.css +113 -0
  752. package/src/components/ui/dialog.tsx +427 -81
  753. package/src/components/ui/dot-background.module.css +12 -0
  754. package/src/components/ui/dot-background.tsx +134 -126
  755. package/src/components/ui/drawer.module.css +85 -0
  756. package/src/components/ui/drawer.tsx +408 -80
  757. package/src/components/ui/dropdown-menu.module.css +113 -0
  758. package/src/components/ui/dropdown-menu.tsx +616 -159
  759. package/src/components/ui/dropdrawer.module.css +322 -0
  760. package/src/components/ui/dropdrawer.tsx +850 -398
  761. package/src/components/ui/empty.module.css +84 -0
  762. package/src/components/ui/empty.tsx +176 -52
  763. package/src/components/ui/error-boundary.module.css +36 -0
  764. package/src/components/ui/error-boundary.tsx +127 -0
  765. package/src/components/ui/field.module.css +179 -0
  766. package/src/components/ui/field.tsx +345 -139
  767. package/src/components/ui/fireworks-background.module.css +13 -0
  768. package/src/components/ui/fireworks-background.tsx +89 -51
  769. package/src/components/ui/flip-button.module.css +44 -0
  770. package/src/components/ui/flip-button.tsx +59 -28
  771. package/src/components/ui/focus-scope.module.css +3 -0
  772. package/src/components/ui/focus-scope.tsx +160 -0
  773. package/src/components/ui/form-skeleton.module.css +28 -0
  774. package/src/components/ui/form-skeleton.tsx +62 -0
  775. package/src/components/ui/form.module.css +20 -0
  776. package/src/components/ui/form.tsx +244 -33
  777. package/src/components/ui/gradient-background.module.css +6 -0
  778. package/src/components/ui/gradient-background.tsx +27 -5
  779. package/src/components/ui/gradient-text.module.css +23 -0
  780. package/src/components/ui/gradient-text.tsx +36 -9
  781. package/src/components/ui/highlight-text.module.css +14 -0
  782. package/src/components/ui/highlight-text.tsx +37 -15
  783. package/src/components/ui/hole-background.module.css +84 -0
  784. package/src/components/ui/hole-background.tsx +290 -162
  785. package/src/components/ui/hover-card.module.css +21 -0
  786. package/src/components/ui/hover-card.tsx +142 -21
  787. package/src/components/ui/input-group.module.css +148 -0
  788. package/src/components/ui/input-group.tsx +222 -98
  789. package/src/components/ui/input-otp.module.css +92 -0
  790. package/src/components/ui/input-otp.tsx +159 -33
  791. package/src/components/ui/input.module.css +37 -0
  792. package/src/components/ui/input.tsx +56 -14
  793. package/src/components/ui/item.module.css +143 -0
  794. package/src/components/ui/item.tsx +331 -104
  795. package/src/components/ui/kbd.module.css +31 -0
  796. package/src/components/ui/kbd.tsx +60 -17
  797. package/src/components/ui/label.module.css +13 -0
  798. package/src/components/ui/label.tsx +38 -14
  799. package/src/components/ui/list-skeleton.module.css +35 -0
  800. package/src/components/ui/list-skeleton.tsx +70 -0
  801. package/src/components/ui/loading-overlay.module.css +19 -0
  802. package/src/components/ui/loading-overlay.tsx +72 -0
  803. package/src/components/ui/menubar.module.css +144 -0
  804. package/src/components/ui/menubar.tsx +605 -192
  805. package/src/components/ui/meter.module.css +32 -0
  806. package/src/components/ui/meter.tsx +170 -0
  807. package/src/components/ui/navigation-menu.module.css +110 -0
  808. package/src/components/ui/navigation-menu.tsx +375 -101
  809. package/src/components/ui/number-field.module.css +126 -0
  810. package/src/components/ui/number-field.tsx +254 -0
  811. package/src/components/ui/pagination.module.css +64 -0
  812. package/src/components/ui/pagination.tsx +250 -72
  813. package/src/components/ui/popover.module.css +26 -0
  814. package/src/components/ui/popover.tsx +207 -25
  815. package/src/components/ui/progress.module.css +15 -0
  816. package/src/components/ui/progress.tsx +53 -16
  817. package/src/components/ui/radio-group.module.css +41 -0
  818. package/src/components/ui/radio-group.tsx +91 -34
  819. package/src/components/ui/resizable.module.css +67 -0
  820. package/src/components/ui/resizable.tsx +106 -26
  821. package/src/components/ui/ripple-button.module.css +35 -0
  822. package/src/components/ui/ripple-button.tsx +55 -21
  823. package/src/components/ui/scratcher.module.css +9 -0
  824. package/src/components/ui/scratcher.tsx +129 -99
  825. package/src/components/ui/scroll-area.module.css +47 -0
  826. package/src/components/ui/scroll-area.tsx +96 -34
  827. package/src/components/ui/select.module.css +131 -0
  828. package/src/components/ui/select.tsx +435 -124
  829. package/src/components/ui/separator.module.css +14 -0
  830. package/src/components/ui/separator.tsx +59 -18
  831. package/src/components/ui/sheet.module.css +138 -0
  832. package/src/components/ui/sheet.tsx +424 -95
  833. package/src/components/ui/sidebar.module.css +594 -0
  834. package/src/components/ui/sidebar.tsx +899 -425
  835. package/src/components/ui/skeleton.module.css +14 -0
  836. package/src/components/ui/skeleton.tsx +39 -9
  837. package/src/components/ui/slider.module.css +48 -0
  838. package/src/components/ui/slider.tsx +89 -16
  839. package/src/components/ui/sonner.module.css +246 -0
  840. package/src/components/ui/sonner.tsx +769 -25
  841. package/src/components/ui/spinner.module.css +25 -0
  842. package/src/components/ui/spinner.tsx +51 -12
  843. package/src/components/ui/stepper.module.css +72 -0
  844. package/src/components/ui/stepper.tsx +95 -0
  845. package/src/components/ui/switch.module.css +42 -0
  846. package/src/components/ui/switch.tsx +53 -20
  847. package/src/components/ui/table-skeleton.module.css +29 -0
  848. package/src/components/ui/table-skeleton.tsx +79 -0
  849. package/src/components/ui/table.module.css +66 -0
  850. package/src/components/ui/table.tsx +235 -61
  851. package/src/components/ui/tabs.module.css +89 -0
  852. package/src/components/ui/tabs.tsx +192 -45
  853. package/src/components/ui/textarea.module.css +30 -0
  854. package/src/components/ui/textarea.tsx +30 -10
  855. package/src/components/ui/timeline.module.css +43 -0
  856. package/src/components/ui/timeline.tsx +153 -0
  857. package/src/components/ui/toggle-group.module.css +5 -0
  858. package/src/components/ui/toggle-group.tsx +116 -35
  859. package/src/components/ui/toggle.module.css +57 -0
  860. package/src/components/ui/toggle.tsx +89 -33
  861. package/src/components/ui/toolbar.module.css +112 -0
  862. package/src/components/ui/toolbar.tsx +210 -0
  863. package/src/components/ui/tooltip.module.css +39 -0
  864. package/src/components/ui/tooltip.tsx +181 -24
  865. package/src/components/ui/typewriter.module.css +101 -0
  866. package/src/components/ui/typewriter.tsx +130 -128
  867. package/src/components/ui/visually-hidden.module.css +11 -0
  868. package/src/components/ui/visually-hidden.tsx +50 -0
  869. package/src/css-modules.d.ts +9 -0
  870. package/src/hooks/useAnnounce.tsx +73 -0
  871. package/src/hooks/useBreakpoint.tsx +41 -0
  872. package/src/hooks/useColorScheme.tsx +23 -0
  873. package/src/hooks/useFocusManager.tsx +89 -0
  874. package/src/hooks/useFocusVisible.tsx +88 -0
  875. package/src/hooks/useIsMobile.tsx +7 -28
  876. package/src/hooks/useMediaQuery.tsx +34 -0
  877. package/src/hooks/usePrefersContrast.tsx +24 -0
  878. package/src/hooks/useReducedMotion.tsx +20 -0
  879. package/src/index.css +127 -65
  880. package/src/index.ts +196 -18
  881. package/src/lib/utilities.ts +7 -6
  882. package/src/motion/Collapse.module.css +22 -0
  883. package/src/motion/Collapse.tsx +52 -0
  884. package/src/motion/Presence.tsx +44 -0
  885. package/src/motion/index.ts +13 -0
  886. package/src/motion/presets.ts +77 -0
  887. package/src/motion/tokens.ts +37 -0
  888. package/src/hooks/useIsMobile.test.tsx +0 -96
  889. package/src/hooks/useWindowSize.test.tsx +0 -57
  890. package/src/index.test.ts +0 -537
  891. package/src/lib/color-conversion-utilities.test.ts +0 -225
  892. package/src/lib/utilities.test.ts +0 -37
package/EXAMPLES.md CHANGED
@@ -1,22 +1,61 @@
1
1
  # 💡 Usage Examples for @arolariu/components
2
2
 
3
- > **Real-world examples to get you building faster!** Copy, paste, and customize these patterns for your projects.
3
+ > **Real-world examples to get you building faster.** Copy, paste, and customize these patterns for your projects.
4
4
 
5
5
  ## 🚀 Getting Started
6
6
 
7
7
  ### Installation & Setup
8
8
 
9
9
  ```bash
10
- # Install the package
11
10
  npm install @arolariu/components
12
11
 
13
- # Install peer dependencies if needed
14
- npm install react react-dom tailwindcss
12
+ # Peer dependencies (install if not already in your project)
13
+ npm install react react-dom @base-ui/react motion
15
14
  ```
16
15
 
17
16
  ```tsx
18
- // Add to your app's root (App.tsx, main.tsx, or _app.tsx)
17
+ // Import design tokens only once in your app entry point
19
18
  import "@arolariu/components/styles";
19
+
20
+ // Components auto-load their CSS when imported
21
+ import { Button, Card } from "@arolariu/components";
22
+ ```
23
+
24
+ `@arolariu/components/styles` provides design tokens only. Component CSS is loaded automatically when components are imported.
25
+
26
+ ```tsx
27
+ // Use local CSS Modules for application-specific layout and composition
28
+ import styles from "./my-component.module.css";
29
+ ```
30
+
31
+ `tailwindcss` is not a peer dependency in v1.0.0.
32
+
33
+ ### Useful Subpath Imports
34
+
35
+ ```tsx
36
+ import { Button } from "@arolariu/components/button";
37
+ import { useIsMobile } from "@arolariu/components/useIsMobile";
38
+ import { cn } from "@arolariu/components/utilities";
39
+ import { hexToHsl } from "@arolariu/components/color-conversion-utilities";
40
+ ```
41
+
42
+ ### Composition with the `render` Prop
43
+
44
+ ```tsx
45
+ import { Button } from "@arolariu/components";
46
+
47
+ // Use render prop instead of asChild
48
+ <Button render={<a href="/dashboard" />}>
49
+ Go to Dashboard
50
+ </Button>
51
+ ```
52
+
53
+ ```css
54
+ /* my-component.module.css */
55
+ .page {
56
+ min-height: 100vh;
57
+ padding: 2rem;
58
+ }
20
59
  ```
21
60
 
22
61
  ---
@@ -26,51 +65,91 @@ import "@arolariu/components/styles";
26
65
  ### Simple Card Layout
27
66
 
28
67
  ```tsx
68
+ import { Badge } from "@arolariu/components/badge";
69
+ import { Button } from "@arolariu/components/button";
29
70
  import {
30
71
  Card,
31
- CardHeader,
32
- CardTitle,
33
72
  CardContent,
34
73
  CardFooter,
74
+ CardHeader,
75
+ CardTitle,
35
76
  } from "@arolariu/components/card";
36
- import { Button } from "@arolariu/components/button";
37
- import { Badge } from "@arolariu/components/badge";
77
+ import styles from "./product-card.module.css";
38
78
 
39
79
  export function ProductCard() {
40
80
  return (
41
- <Card className="w-96">
81
+ <Card className={styles.card}>
42
82
  <CardHeader>
43
- <div className="flex items-center justify-between">
83
+ <div className={styles.headerRow}>
44
84
  <CardTitle>Premium Plan</CardTitle>
45
85
  <Badge variant="secondary">Popular</Badge>
46
86
  </div>
47
87
  </CardHeader>
48
- <CardContent>
49
- <p className="text-3xl font-bold">
50
- $29<span className="text-sm font-normal">/month</span>
88
+ <CardContent className={styles.content}>
89
+ <p className={styles.price}>
90
+ $29<span className={styles.priceSuffix}>/month</span>
51
91
  </p>
52
- <ul className="mt-4 space-y-2">
92
+ <ul className={styles.featureList}>
53
93
  <li>✅ Unlimited projects</li>
54
94
  <li>✅ Priority support</li>
55
95
  <li>✅ Advanced analytics</li>
56
96
  </ul>
57
97
  </CardContent>
58
98
  <CardFooter>
59
- <Button className="w-full">Subscribe Now</Button>
99
+ <Button className={styles.primaryAction}>Subscribe Now</Button>
60
100
  </CardFooter>
61
101
  </Card>
62
102
  );
63
103
  }
64
104
  ```
65
105
 
106
+ ```css
107
+ /* product-card.module.css */
108
+ .card {
109
+ width: 24rem;
110
+ }
111
+
112
+ .headerRow {
113
+ display: flex;
114
+ align-items: center;
115
+ justify-content: space-between;
116
+ gap: 1rem;
117
+ }
118
+
119
+ .content {
120
+ display: grid;
121
+ gap: 1rem;
122
+ }
123
+
124
+ .price {
125
+ font-size: 1.875rem;
126
+ font-weight: 700;
127
+ }
128
+
129
+ .priceSuffix {
130
+ font-size: 0.875rem;
131
+ font-weight: 400;
132
+ }
133
+
134
+ .featureList {
135
+ display: grid;
136
+ gap: 0.5rem;
137
+ padding-left: 1.25rem;
138
+ }
139
+
140
+ .primaryAction {
141
+ width: 100%;
142
+ }
143
+ ```
144
+
66
145
  ### Dashboard Layout with Sidebar
67
146
 
68
147
  ```tsx
69
148
  import {
70
- Sidebar,
71
- SidebarContent,
72
- SidebarMenuItem,
73
- } from "@arolariu/components/sidebar";
149
+ Avatar,
150
+ AvatarFallback,
151
+ AvatarImage,
152
+ } from "@arolariu/components/avatar";
74
153
  import {
75
154
  Card,
76
155
  CardContent,
@@ -79,61 +158,73 @@ import {
79
158
  } from "@arolariu/components/card";
80
159
  import { Progress } from "@arolariu/components/progress";
81
160
  import {
82
- Avatar,
83
- AvatarImage,
84
- AvatarFallback,
85
- } from "@arolariu/components/avatar";
161
+ Sidebar,
162
+ SidebarContent,
163
+ SidebarMenu,
164
+ SidebarMenuButton,
165
+ SidebarMenuItem,
166
+ SidebarProvider,
167
+ } from "@arolariu/components/sidebar";
168
+ import styles from "./dashboard.module.css";
86
169
 
87
170
  export function Dashboard() {
88
171
  return (
89
- <div className="flex h-screen">
90
- {/* Sidebar */}
91
- <Sidebar>
92
- <SidebarContent>
93
- <SidebarMenuItem href="/dashboard">Dashboard</SidebarMenuItem>
94
- <SidebarMenuItem href="/projects">Projects</SidebarMenuItem>
95
- <SidebarMenuItem href="/settings">Settings</SidebarMenuItem>
96
- </SidebarContent>
97
- </Sidebar>
98
-
99
- {/* Main Content */}
100
- <main className="flex-1 p-6 overflow-auto">
101
- <h1 className="text-3xl font-bold mb-6">Dashboard</h1>
102
-
103
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
104
- <Card>
105
- <CardHeader>
106
- <CardTitle>Project Progress</CardTitle>
107
- </CardHeader>
108
- <CardContent>
109
- <Progress value={75} className="w-full" />
110
- <p className="text-sm text-muted-foreground mt-2">75% complete</p>
111
- </CardContent>
112
- </Card>
113
-
114
- <Card>
115
- <CardHeader>
116
- <CardTitle>Team Members</CardTitle>
117
- </CardHeader>
118
- <CardContent>
119
- <div className="flex -space-x-2">
120
- <Avatar className="border-2 border-background">
121
- <AvatarImage src="/avatar1.jpg" />
122
- <AvatarFallback>JD</AvatarFallback>
123
- </Avatar>
124
- <Avatar className="border-2 border-background">
125
- <AvatarImage src="/avatar2.jpg" />
126
- <AvatarFallback>SM</AvatarFallback>
127
- </Avatar>
128
- <Avatar className="border-2 border-background">
129
- <AvatarFallback>+3</AvatarFallback>
130
- </Avatar>
131
- </div>
132
- </CardContent>
133
- </Card>
134
- </div>
135
- </main>
136
- </div>
172
+ <SidebarProvider>
173
+ <div className={styles.layout}>
174
+ <Sidebar>
175
+ <SidebarContent>
176
+ <SidebarMenu>
177
+ <SidebarMenuItem>
178
+ <SidebarMenuButton isActive>Dashboard</SidebarMenuButton>
179
+ </SidebarMenuItem>
180
+ <SidebarMenuItem>
181
+ <SidebarMenuButton>Projects</SidebarMenuButton>
182
+ </SidebarMenuItem>
183
+ <SidebarMenuItem>
184
+ <SidebarMenuButton>Settings</SidebarMenuButton>
185
+ </SidebarMenuItem>
186
+ </SidebarMenu>
187
+ </SidebarContent>
188
+ </Sidebar>
189
+
190
+ <main className={styles.main}>
191
+ <h1 className={styles.title}>Dashboard</h1>
192
+
193
+ <div className={styles.cardGrid}>
194
+ <Card>
195
+ <CardHeader>
196
+ <CardTitle>Project Progress</CardTitle>
197
+ </CardHeader>
198
+ <CardContent className={styles.stack}>
199
+ <Progress value={75} />
200
+ <p className={styles.mutedText}>75% complete</p>
201
+ </CardContent>
202
+ </Card>
203
+
204
+ <Card>
205
+ <CardHeader>
206
+ <CardTitle>Team Members</CardTitle>
207
+ </CardHeader>
208
+ <CardContent>
209
+ <div className={styles.avatarRow}>
210
+ <Avatar className={styles.avatar}>
211
+ <AvatarImage src="/avatar1.jpg" />
212
+ <AvatarFallback>JD</AvatarFallback>
213
+ </Avatar>
214
+ <Avatar className={styles.avatar}>
215
+ <AvatarImage src="/avatar2.jpg" />
216
+ <AvatarFallback>SM</AvatarFallback>
217
+ </Avatar>
218
+ <Avatar className={styles.avatar}>
219
+ <AvatarFallback>+3</AvatarFallback>
220
+ </Avatar>
221
+ </div>
222
+ </CardContent>
223
+ </Card>
224
+ </div>
225
+ </main>
226
+ </div>
227
+ </SidebarProvider>
137
228
  );
138
229
  }
139
230
  ```
@@ -145,19 +236,21 @@ export function Dashboard() {
145
236
  ### Complete Login Form
146
237
 
147
238
  ```tsx
239
+ import { useState } from "react";
240
+
241
+ import { Alert, AlertDescription } from "@arolariu/components/alert";
242
+ import { Button } from "@arolariu/components/button";
148
243
  import {
149
244
  Card,
150
- CardHeader,
151
- CardTitle,
152
245
  CardContent,
153
246
  CardFooter,
247
+ CardHeader,
248
+ CardTitle,
154
249
  } from "@arolariu/components/card";
250
+ import { Checkbox } from "@arolariu/components/checkbox";
155
251
  import { Input } from "@arolariu/components/input";
156
- import { Button } from "@arolariu/components/button";
157
252
  import { Label } from "@arolariu/components/label";
158
- import { Checkbox } from "@arolariu/components/checkbox";
159
- import { Alert, AlertDescription } from "@arolariu/components/alert";
160
- import { useState } from "react";
253
+ import styles from "./login-form.module.css";
161
254
 
162
255
  export function LoginForm() {
163
256
  const [email, setEmail] = useState("");
@@ -166,16 +259,15 @@ export function LoginForm() {
166
259
  const [error, setError] = useState("");
167
260
  const [loading, setLoading] = useState(false);
168
261
 
169
- const handleSubmit = async (e: React.FormEvent) => {
170
- e.preventDefault();
262
+ const handleSubmit = async (event: React.FormEvent) => {
263
+ event.preventDefault();
171
264
  setLoading(true);
172
265
  setError("");
173
266
 
174
267
  try {
175
- // Your login logic here
176
- await new Promise((resolve) => setTimeout(resolve, 1000)); // Simulate API call
177
- console.log("Login successful!");
178
- } catch (err) {
268
+ await new Promise((resolve) => setTimeout(resolve, 1000));
269
+ console.log("Login successful");
270
+ } catch {
179
271
  setError("Invalid email or password");
180
272
  } finally {
181
273
  setLoading(false);
@@ -183,43 +275,43 @@ export function LoginForm() {
183
275
  };
184
276
 
185
277
  return (
186
- <div className="min-h-screen flex items-center justify-center bg-gray-50">
187
- <Card className="w-full max-w-md">
278
+ <div className={styles.page}>
279
+ <Card className={styles.card}>
188
280
  <CardHeader>
189
- <CardTitle className="text-center">Welcome Back</CardTitle>
281
+ <CardTitle className={styles.centeredTitle}>Welcome Back</CardTitle>
190
282
  </CardHeader>
191
283
  <form onSubmit={handleSubmit}>
192
- <CardContent className="space-y-4">
193
- {error && (
284
+ <CardContent className={styles.content}>
285
+ {error ? (
194
286
  <Alert variant="destructive">
195
287
  <AlertDescription>{error}</AlertDescription>
196
288
  </Alert>
197
- )}
289
+ ) : null}
198
290
 
199
- <div className="space-y-2">
291
+ <div className={styles.field}>
200
292
  <Label htmlFor="email">Email</Label>
201
293
  <Input
202
294
  id="email"
203
295
  type="email"
204
296
  placeholder="you@example.com"
205
297
  value={email}
206
- onChange={(e) => setEmail(e.target.value)}
298
+ onChange={(event) => setEmail(event.target.value)}
207
299
  required
208
300
  />
209
301
  </div>
210
302
 
211
- <div className="space-y-2">
303
+ <div className={styles.field}>
212
304
  <Label htmlFor="password">Password</Label>
213
305
  <Input
214
306
  id="password"
215
307
  type="password"
216
308
  value={password}
217
- onChange={(e) => setPassword(e.target.value)}
309
+ onChange={(event) => setPassword(event.target.value)}
218
310
  required
219
311
  />
220
312
  </div>
221
313
 
222
- <div className="flex items-center space-x-2">
314
+ <div className={styles.checkboxRow}>
223
315
  <Checkbox
224
316
  id="remember"
225
317
  checked={rememberMe}
@@ -229,13 +321,20 @@ export function LoginForm() {
229
321
  </div>
230
322
  </CardContent>
231
323
 
232
- <CardFooter className="flex flex-col space-y-2">
233
- <Button type="submit" className="w-full" disabled={loading}>
324
+ <CardFooter className={styles.footer}>
325
+ <Button
326
+ type="submit"
327
+ className={styles.submitButton}
328
+ disabled={loading}
329
+ >
234
330
  {loading ? "Signing in..." : "Sign In"}
235
331
  </Button>
236
- <Button variant="link" size="sm">
332
+ <a
333
+ className={styles.link}
334
+ href="/forgot-password"
335
+ >
237
336
  Forgot your password?
238
- </Button>
337
+ </a>
239
338
  </CardFooter>
240
339
  </form>
241
340
  </Card>
@@ -247,9 +346,11 @@ export function LoginForm() {
247
346
  ### Advanced Form with Validation
248
347
 
249
348
  ```tsx
250
- import { useForm } from "react-hook-form";
251
349
  import { zodResolver } from "@hookform/resolvers/zod";
350
+ import { useForm } from "react-hook-form";
252
351
  import * as z from "zod";
352
+
353
+ import { Button } from "@arolariu/components/button";
253
354
  import {
254
355
  Form,
255
356
  FormControl,
@@ -260,7 +361,6 @@ import {
260
361
  FormMessage,
261
362
  } from "@arolariu/components/form";
262
363
  import { Input } from "@arolariu/components/input";
263
- import { Button } from "@arolariu/components/button";
264
364
  import {
265
365
  Select,
266
366
  SelectContent,
@@ -269,6 +369,7 @@ import {
269
369
  SelectValue,
270
370
  } from "@arolariu/components/select";
271
371
  import { Textarea } from "@arolariu/components/textarea";
372
+ import styles from "./profile-form.module.css";
272
373
 
273
374
  const formSchema = z.object({
274
375
  firstName: z.string().min(2, "First name must be at least 2 characters"),
@@ -298,9 +399,9 @@ export function ProfileForm() {
298
399
  <Form {...form}>
299
400
  <form
300
401
  onSubmit={form.handleSubmit(onSubmit)}
301
- className="space-y-6 max-w-md"
402
+ className={styles.form}
302
403
  >
303
- <div className="grid grid-cols-2 gap-4">
404
+ <div className={styles.twoColumnGrid}>
304
405
  <FormField
305
406
  control={form.control}
306
407
  name="firstName"
@@ -308,7 +409,10 @@ export function ProfileForm() {
308
409
  <FormItem>
309
410
  <FormLabel>First Name</FormLabel>
310
411
  <FormControl>
311
- <Input placeholder="John" {...field} />
412
+ <Input
413
+ placeholder="John"
414
+ {...field}
415
+ />
312
416
  </FormControl>
313
417
  <FormMessage />
314
418
  </FormItem>
@@ -322,7 +426,10 @@ export function ProfileForm() {
322
426
  <FormItem>
323
427
  <FormLabel>Last Name</FormLabel>
324
428
  <FormControl>
325
- <Input placeholder="Doe" {...field} />
429
+ <Input
430
+ placeholder="Doe"
431
+ {...field}
432
+ />
326
433
  </FormControl>
327
434
  <FormMessage />
328
435
  </FormItem>
@@ -337,10 +444,13 @@ export function ProfileForm() {
337
444
  <FormItem>
338
445
  <FormLabel>Email</FormLabel>
339
446
  <FormControl>
340
- <Input placeholder="john.doe@example.com" {...field} />
447
+ <Input
448
+ placeholder="john.doe@example.com"
449
+ {...field}
450
+ />
341
451
  </FormControl>
342
452
  <FormDescription>
343
- We'll never share your email with anyone else.
453
+ We&apos;ll never share your email with anyone else.
344
454
  </FormDescription>
345
455
  <FormMessage />
346
456
  </FormItem>
@@ -353,7 +463,10 @@ export function ProfileForm() {
353
463
  render={({ field }) => (
354
464
  <FormItem>
355
465
  <FormLabel>Role</FormLabel>
356
- <Select onValueChange={field.onChange} defaultValue={field.value}>
466
+ <Select
467
+ defaultValue={field.value}
468
+ onValueChange={field.onChange}
469
+ >
357
470
  <FormControl>
358
471
  <SelectTrigger>
359
472
  <SelectValue placeholder="Select a role" />
@@ -379,7 +492,7 @@ export function ProfileForm() {
379
492
  <FormControl>
380
493
  <Textarea
381
494
  placeholder="Tell us about yourself"
382
- className="min-h-[100px]"
495
+ className={styles.textarea}
383
496
  {...field}
384
497
  />
385
498
  </FormControl>
@@ -402,17 +515,10 @@ export function ProfileForm() {
402
515
  ### Responsive Header Navigation
403
516
 
404
517
  ```tsx
405
- import {
406
- NavigationMenu,
407
- NavigationMenuItem,
408
- NavigationMenuList,
409
- } from "@arolariu/components/navigation-menu";
410
- import { Button } from "@arolariu/components/button";
411
- import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
412
518
  import {
413
519
  Avatar,
414
- AvatarImage,
415
520
  AvatarFallback,
521
+ AvatarImage,
416
522
  } from "@arolariu/components/avatar";
417
523
  import {
418
524
  DropdownMenu,
@@ -420,101 +526,82 @@ import {
420
526
  DropdownMenuItem,
421
527
  DropdownMenuTrigger,
422
528
  } from "@arolariu/components/dropdown-menu";
423
- import { MenuIcon, User, Settings, LogOut } from "lucide-react";
529
+ import {
530
+ NavigationMenu,
531
+ NavigationMenuItem,
532
+ NavigationMenuLink,
533
+ NavigationMenuList,
534
+ } from "@arolariu/components/navigation-menu";
535
+ import { Sheet, SheetContent, SheetTrigger } from "@arolariu/components/sheet";
536
+ import { LogOut, MenuIcon, Settings, User } from "lucide-react";
537
+ import styles from "./app-header.module.css";
424
538
 
425
539
  export function AppHeader() {
426
540
  return (
427
- <header className="sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
428
- <div className="container flex h-14 items-center">
429
- <div className="mr-4 hidden md:flex">
430
- <a className="mr-6 flex items-center space-x-2" href="/">
431
- <span className="hidden font-bold sm:inline-block">MyApp</span>
541
+ <header className={styles.header}>
542
+ <div className={styles.headerInner}>
543
+ <div className={styles.desktopArea}>
544
+ <a
545
+ className={styles.brandLink}
546
+ href="/"
547
+ >
548
+ <span className={styles.brandName}>MyApp</span>
432
549
  </a>
433
550
 
434
551
  <NavigationMenu>
435
552
  <NavigationMenuList>
436
553
  <NavigationMenuItem>
437
- <Button variant="ghost" href="/dashboard">
438
- Dashboard
439
- </Button>
554
+ <NavigationMenuLink href="/dashboard">Dashboard</NavigationMenuLink>
440
555
  </NavigationMenuItem>
441
556
  <NavigationMenuItem>
442
- <Button variant="ghost" href="/projects">
443
- Projects
444
- </Button>
557
+ <NavigationMenuLink href="/projects">Projects</NavigationMenuLink>
445
558
  </NavigationMenuItem>
446
559
  <NavigationMenuItem>
447
- <Button variant="ghost" href="/analytics">
448
- Analytics
449
- </Button>
560
+ <NavigationMenuLink href="/analytics">Analytics</NavigationMenuLink>
450
561
  </NavigationMenuItem>
451
562
  </NavigationMenuList>
452
563
  </NavigationMenu>
453
564
  </div>
454
565
 
455
- {/* Mobile Navigation */}
456
566
  <Sheet>
457
- <SheetTrigger asChild>
458
- <Button
459
- variant="ghost"
460
- className="mr-2 px-0 text-base hover:bg-transparent focus-visible:bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 md:hidden"
461
- >
462
- <MenuIcon className="h-5 w-5" />
463
- </Button>
567
+ <SheetTrigger
568
+ render={<button type="button" className={styles.mobileMenuButton} />}
569
+ >
570
+ <MenuIcon />
464
571
  </SheetTrigger>
465
572
  <SheetContent side="left">
466
- <nav className="flex flex-col space-y-3">
467
- <Button
468
- variant="ghost"
469
- className="justify-start"
470
- href="/dashboard"
471
- >
472
- Dashboard
473
- </Button>
474
- <Button
475
- variant="ghost"
476
- className="justify-start"
477
- href="/projects"
478
- >
479
- Projects
480
- </Button>
481
- <Button
482
- variant="ghost"
483
- className="justify-start"
484
- href="/analytics"
485
- >
486
- Analytics
487
- </Button>
573
+ <nav className={styles.mobileNav}>
574
+ <a href="/dashboard">Dashboard</a>
575
+ <a href="/projects">Projects</a>
576
+ <a href="/analytics">Analytics</a>
488
577
  </nav>
489
578
  </SheetContent>
490
579
  </Sheet>
491
580
 
492
- <div className="flex flex-1 items-center justify-between space-x-2 md:justify-end">
493
- <div className="w-full flex-1 md:w-auto md:flex-none">
494
- {/* Search or other content can go here */}
495
- </div>
496
-
497
- {/* User Menu */}
581
+ <div className={styles.actions}>
498
582
  <DropdownMenu>
499
- <DropdownMenuTrigger asChild>
500
- <Button variant="ghost" className="relative h-8 w-8 rounded-full">
501
- <Avatar className="h-8 w-8">
502
- <AvatarImage src="/avatars/01.png" alt="User" />
503
- <AvatarFallback>JD</AvatarFallback>
504
- </Avatar>
505
- </Button>
583
+ <DropdownMenuTrigger
584
+ render={<button type="button" className={styles.avatarButton} />}
585
+ >
586
+ <Avatar>
587
+ <AvatarImage
588
+ src="/avatars/01.png"
589
+ alt="User"
590
+ />
591
+ <AvatarFallback>JD</AvatarFallback>
592
+ </Avatar>
506
593
  </DropdownMenuTrigger>
507
- <DropdownMenuContent className="w-56" align="end" forceMount>
594
+ <DropdownMenuContent align="end">
508
595
  <DropdownMenuItem>
509
- <User className="mr-2 h-4 w-4" />
596
+ <User />
510
597
  <span>Profile</span>
511
598
  </DropdownMenuItem>
512
599
  <DropdownMenuItem>
513
- <Settings className="mr-2 h-4 w-4" />
600
+ <Settings />
514
601
  <span>Settings</span>
515
602
  </DropdownMenuItem>
516
603
  <DropdownMenuItem>
517
- <LogOut className="mr-2 h-4 w-4" />
604
+ <LogOut />
518
605
  <span>Log out</span>
519
606
  </DropdownMenuItem>
520
607
  </DropdownMenuContent>
@@ -533,6 +620,13 @@ export function AppHeader() {
533
620
  ### Interactive Data Table
534
621
 
535
622
  ```tsx
623
+ import { Badge } from "@arolariu/components/badge";
624
+ import {
625
+ DropdownMenu,
626
+ DropdownMenuContent,
627
+ DropdownMenuItem,
628
+ DropdownMenuTrigger,
629
+ } from "@arolariu/components/dropdown-menu";
536
630
  import {
537
631
  Table,
538
632
  TableBody,
@@ -542,15 +636,8 @@ import {
542
636
  TableHeader,
543
637
  TableRow,
544
638
  } from "@arolariu/components/table";
545
- import { Badge } from "@arolariu/components/badge";
546
- import { Button } from "@arolariu/components/button";
547
- import {
548
- DropdownMenu,
549
- DropdownMenuContent,
550
- DropdownMenuItem,
551
- DropdownMenuTrigger,
552
- } from "@arolariu/components/dropdown-menu";
553
- import { MoreHorizontal, Eye, Edit, Trash } from "lucide-react";
639
+ import { Edit, Eye, MoreHorizontal, Trash } from "lucide-react";
640
+ import styles from "./users-table.module.css";
554
641
 
555
642
  interface User {
556
643
  id: string;
@@ -600,8 +687,8 @@ export function UsersTable() {
600
687
  };
601
688
 
602
689
  return (
603
- <div className="w-full">
604
- <div className="rounded-md border">
690
+ <div className={styles.wrapper}>
691
+ <div className={styles.tableShell}>
605
692
  <Table>
606
693
  <TableCaption>A list of your team members.</TableCaption>
607
694
  <TableHeader>
@@ -611,35 +698,35 @@ export function UsersTable() {
611
698
  <TableHead>Role</TableHead>
612
699
  <TableHead>Status</TableHead>
613
700
  <TableHead>Last Login</TableHead>
614
- <TableHead className="w-[100px]">Actions</TableHead>
701
+ <TableHead className={styles.actionsColumn}>Actions</TableHead>
615
702
  </TableRow>
616
703
  </TableHeader>
617
704
  <TableBody>
618
705
  {users.map((user) => (
619
706
  <TableRow key={user.id}>
620
- <TableCell className="font-medium">{user.name}</TableCell>
707
+ <TableCell className={styles.emphasisCell}>{user.name}</TableCell>
621
708
  <TableCell>{user.email}</TableCell>
622
709
  <TableCell>{user.role}</TableCell>
623
710
  <TableCell>{getStatusBadge(user.status)}</TableCell>
624
711
  <TableCell>{user.lastLogin}</TableCell>
625
712
  <TableCell>
626
713
  <DropdownMenu>
627
- <DropdownMenuTrigger asChild>
628
- <Button variant="ghost" className="h-8 w-8 p-0">
629
- <MoreHorizontal className="h-4 w-4" />
630
- </Button>
714
+ <DropdownMenuTrigger
715
+ render={<button type="button" className={styles.iconButton} />}
716
+ >
717
+ <MoreHorizontal />
631
718
  </DropdownMenuTrigger>
632
719
  <DropdownMenuContent align="end">
633
720
  <DropdownMenuItem>
634
- <Eye className="mr-2 h-4 w-4" />
721
+ <Eye />
635
722
  View
636
723
  </DropdownMenuItem>
637
724
  <DropdownMenuItem>
638
- <Edit className="mr-2 h-4 w-4" />
725
+ <Edit />
639
726
  Edit
640
727
  </DropdownMenuItem>
641
- <DropdownMenuItem className="text-red-600">
642
- <Trash className="mr-2 h-4 w-4" />
728
+ <DropdownMenuItem className={styles.dangerItem}>
729
+ <Trash />
643
730
  Delete
644
731
  </DropdownMenuItem>
645
732
  </DropdownMenuContent>
@@ -673,8 +760,8 @@ import {
673
760
  AlertDialogTitle,
674
761
  AlertDialogTrigger,
675
762
  } from "@arolariu/components/alert-dialog";
676
- import { Button } from "@arolariu/components/button";
677
763
  import { Trash } from "lucide-react";
764
+ import styles from "./delete-confirmation.module.css";
678
765
 
679
766
  export function DeleteConfirmation({
680
767
  itemName,
@@ -685,26 +772,26 @@ export function DeleteConfirmation({
685
772
  }) {
686
773
  return (
687
774
  <AlertDialog>
688
- <AlertDialogTrigger asChild>
689
- <Button variant="destructive" size="sm">
690
- <Trash className="mr-2 h-4 w-4" />
691
- Delete
692
- </Button>
775
+ <AlertDialogTrigger
776
+ render={<button type="button" className={styles.triggerButton} />}
777
+ >
778
+ <Trash />
779
+ Delete
693
780
  </AlertDialogTrigger>
694
781
  <AlertDialogContent>
695
782
  <AlertDialogHeader>
696
783
  <AlertDialogTitle>Are you absolutely sure?</AlertDialogTitle>
697
784
  <AlertDialogDescription>
698
- This action cannot be undone. This will permanently delete "
699
- {itemName}" and remove all associated data from our servers.
785
+ This action cannot be undone. This will permanently delete
786
+ {" "}
787
+ {itemName}
788
+ {" "}
789
+ and remove all associated data from our servers.
700
790
  </AlertDialogDescription>
701
791
  </AlertDialogHeader>
702
792
  <AlertDialogFooter>
703
793
  <AlertDialogCancel>Cancel</AlertDialogCancel>
704
- <AlertDialogAction
705
- onClick={onConfirm}
706
- className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
707
- >
794
+ <AlertDialogAction onClick={onConfirm}>
708
795
  Yes, delete it
709
796
  </AlertDialogAction>
710
797
  </AlertDialogFooter>
@@ -717,6 +804,7 @@ export function DeleteConfirmation({
717
804
  ### Settings Modal
718
805
 
719
806
  ```tsx
807
+ import { Button } from "@arolariu/components/button";
720
808
  import {
721
809
  Dialog,
722
810
  DialogContent,
@@ -726,10 +814,8 @@ import {
726
814
  DialogTitle,
727
815
  DialogTrigger,
728
816
  } from "@arolariu/components/dialog";
729
- import { Button } from "@arolariu/components/button";
730
817
  import { Input } from "@arolariu/components/input";
731
818
  import { Label } from "@arolariu/components/label";
732
- import { Switch } from "@arolariu/components/switch";
733
819
  import {
734
820
  Select,
735
821
  SelectContent,
@@ -737,24 +823,21 @@ import {
737
823
  SelectTrigger,
738
824
  SelectValue,
739
825
  } from "@arolariu/components/select";
740
- import {
741
- Tabs,
742
- TabsContent,
743
- TabsList,
744
- TabsTrigger,
745
- } from "@arolariu/components/tabs";
826
+ import { Switch } from "@arolariu/components/switch";
827
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@arolariu/components/tabs";
746
828
  import { Settings } from "lucide-react";
829
+ import styles from "./settings-dialog.module.css";
747
830
 
748
831
  export function SettingsDialog() {
749
832
  return (
750
833
  <Dialog>
751
- <DialogTrigger asChild>
752
- <Button variant="outline">
753
- <Settings className="mr-2 h-4 w-4" />
754
- Settings
755
- </Button>
834
+ <DialogTrigger
835
+ render={<button type="button" className={styles.trigger} />}
836
+ >
837
+ <Settings />
838
+ Settings
756
839
  </DialogTrigger>
757
- <DialogContent className="sm:max-w-[525px]">
840
+ <DialogContent className={styles.dialogContent}>
758
841
  <DialogHeader>
759
842
  <DialogTitle>Settings</DialogTitle>
760
843
  <DialogDescription>
@@ -762,23 +845,35 @@ export function SettingsDialog() {
762
845
  </DialogDescription>
763
846
  </DialogHeader>
764
847
 
765
- <Tabs defaultValue="general" className="w-full">
766
- <TabsList className="grid w-full grid-cols-3">
848
+ <Tabs
849
+ defaultValue="general"
850
+ className={styles.tabs}
851
+ >
852
+ <TabsList className={styles.tabsList}>
767
853
  <TabsTrigger value="general">General</TabsTrigger>
768
854
  <TabsTrigger value="notifications">Notifications</TabsTrigger>
769
855
  <TabsTrigger value="security">Security</TabsTrigger>
770
856
  </TabsList>
771
857
 
772
- <TabsContent value="general" className="space-y-4">
773
- <div className="space-y-2">
858
+ <TabsContent
859
+ value="general"
860
+ className={styles.panel}
861
+ >
862
+ <div className={styles.field}>
774
863
  <Label htmlFor="name">Display Name</Label>
775
- <Input id="name" defaultValue="John Doe" />
864
+ <Input
865
+ id="name"
866
+ defaultValue="John Doe"
867
+ />
776
868
  </div>
777
- <div className="space-y-2">
869
+ <div className={styles.field}>
778
870
  <Label htmlFor="email">Email</Label>
779
- <Input id="email" defaultValue="john@example.com" />
871
+ <Input
872
+ id="email"
873
+ defaultValue="john@example.com"
874
+ />
780
875
  </div>
781
- <div className="space-y-2">
876
+ <div className={styles.field}>
782
877
  <Label htmlFor="timezone">Timezone</Label>
783
878
  <Select defaultValue="utc">
784
879
  <SelectTrigger>
@@ -793,20 +888,23 @@ export function SettingsDialog() {
793
888
  </div>
794
889
  </TabsContent>
795
890
 
796
- <TabsContent value="notifications" className="space-y-4">
797
- <div className="flex items-center justify-between">
798
- <div className="space-y-0.5">
891
+ <TabsContent
892
+ value="notifications"
893
+ className={styles.panel}
894
+ >
895
+ <div className={styles.switchRow}>
896
+ <div className={styles.switchText}>
799
897
  <Label>Email Notifications</Label>
800
- <div className="text-sm text-muted-foreground">
898
+ <div className={styles.mutedText}>
801
899
  Receive emails about your account activity.
802
900
  </div>
803
901
  </div>
804
902
  <Switch />
805
903
  </div>
806
- <div className="flex items-center justify-between">
807
- <div className="space-y-0.5">
904
+ <div className={styles.switchRow}>
905
+ <div className={styles.switchText}>
808
906
  <Label>Push Notifications</Label>
809
- <div className="text-sm text-muted-foreground">
907
+ <div className={styles.mutedText}>
810
908
  Receive push notifications on your devices.
811
909
  </div>
812
910
  </div>
@@ -814,18 +912,30 @@ export function SettingsDialog() {
814
912
  </div>
815
913
  </TabsContent>
816
914
 
817
- <TabsContent value="security" className="space-y-4">
818
- <div className="space-y-2">
915
+ <TabsContent
916
+ value="security"
917
+ className={styles.panel}
918
+ >
919
+ <div className={styles.field}>
819
920
  <Label htmlFor="current-password">Current Password</Label>
820
- <Input id="current-password" type="password" />
921
+ <Input
922
+ id="current-password"
923
+ type="password"
924
+ />
821
925
  </div>
822
- <div className="space-y-2">
926
+ <div className={styles.field}>
823
927
  <Label htmlFor="new-password">New Password</Label>
824
- <Input id="new-password" type="password" />
928
+ <Input
929
+ id="new-password"
930
+ type="password"
931
+ />
825
932
  </div>
826
- <div className="space-y-2">
933
+ <div className={styles.field}>
827
934
  <Label htmlFor="confirm-password">Confirm Password</Label>
828
- <Input id="confirm-password" type="password" />
935
+ <Input
936
+ id="confirm-password"
937
+ type="password"
938
+ />
829
939
  </div>
830
940
  </TabsContent>
831
941
  </Tabs>
@@ -842,81 +952,75 @@ export function SettingsDialog() {
842
952
 
843
953
  ---
844
954
 
845
- ## 🎨 Background Effects Examples
955
+ ## 🎨 Theming Examples
956
+
957
+ ### App Theme with `--ac-*` Tokens
846
958
 
847
- ### Animated Landing Page
959
+ ```css
960
+ :root {
961
+ --ac-primary: oklch(0.6 0.2 250);
962
+ --ac-radius: 0.5rem;
963
+ }
964
+ ```
965
+
966
+ ```css
967
+ /* app-theme.module.css */
968
+ .themeScope {
969
+ --ac-primary: oklch(0.68 0.2 258);
970
+ --ac-primary-foreground: oklch(0.98 0.01 258);
971
+ --ac-secondary: oklch(0.95 0.02 286);
972
+ --ac-background: oklch(0.99 0 0);
973
+ --ac-radius-md: 0.75rem;
974
+ --ac-radius-lg: 1rem;
975
+ }
976
+
977
+ .themeScope[data-theme="dark"] {
978
+ --ac-background: oklch(0.17 0.01 286);
979
+ --ac-foreground: oklch(0.98 0 0);
980
+ --ac-card: oklch(0.2 0.01 286);
981
+ }
982
+ ```
848
983
 
849
984
  ```tsx
850
- import { DotBackground } from "@arolariu/components/dot-background";
851
- import { BubbleBackground } from "@arolariu/components/bubble-background";
852
- import { GradientBackground } from "@arolariu/components/gradient-background";
853
985
  import { Button } from "@arolariu/components/button";
854
- import { Card, CardContent } from "@arolariu/components/card";
986
+ import { Card, CardContent, CardHeader, CardTitle } from "@arolariu/components/card";
987
+ import styles from "./app-theme.module.css";
855
988
 
856
- export function LandingPage() {
989
+ export function ThemePreview() {
857
990
  return (
858
- <div className="relative min-h-screen overflow-hidden">
859
- {/* Animated Background */}
860
- <DotBackground className="absolute inset-0" />
861
- <GradientBackground className="absolute inset-0" />
862
-
863
- {/* Content */}
864
- <div className="relative z-10 flex min-h-screen flex-col items-center justify-center px-4 text-center">
865
- <h1 className="mb-6 text-4xl font-bold tracking-tight sm:text-6xl">
866
- Build Beautiful Apps
867
- <span className="bg-gradient-to-r from-purple-600 to-pink-600 bg-clip-text text-transparent">
868
- {" "}
869
- Faster
870
- </span>
871
- </h1>
872
-
873
- <p className="mb-8 max-w-2xl text-lg text-muted-foreground">
874
- Create stunning user interfaces with our comprehensive React component
875
- library. Built with accessibility, performance, and developer
876
- experience in mind.
877
- </p>
991
+ <section
992
+ className={styles.themeScope}
993
+ data-theme="dark"
994
+ >
995
+ <Card>
996
+ <CardHeader>
997
+ <CardTitle>Custom theme scope</CardTitle>
998
+ </CardHeader>
999
+ <CardContent>
1000
+ <Button>Token-driven button</Button>
1001
+ </CardContent>
1002
+ </Card>
1003
+ </section>
1004
+ );
1005
+ }
1006
+ ```
878
1007
 
879
- <div className="flex flex-col gap-4 sm:flex-row">
880
- <Button size="lg" className="px-8">
881
- Get Started
882
- </Button>
883
- <Button variant="outline" size="lg" className="px-8">
884
- View Components
885
- </Button>
886
- </div>
1008
+ ### Styling Base UI State Attributes
887
1009
 
888
- {/* Feature Cards */}
889
- <div className="mt-16 grid gap-6 sm:grid-cols-3">
890
- <Card className="bg-card/50 backdrop-blur">
891
- <CardContent className="p-6 text-center">
892
- <h3 className="mb-2 text-lg font-semibold">60+ Components</h3>
893
- <p className="text-sm text-muted-foreground">
894
- Comprehensive set of UI components for any project
895
- </p>
896
- </CardContent>
897
- </Card>
898
-
899
- <Card className="bg-card/50 backdrop-blur">
900
- <CardContent className="p-6 text-center">
901
- <h3 className="mb-2 text-lg font-semibold">TypeScript First</h3>
902
- <p className="text-sm text-muted-foreground">
903
- Full type safety and excellent developer experience
904
- </p>
905
- </CardContent>
906
- </Card>
907
-
908
- <Card className="bg-card/50 backdrop-blur">
909
- <CardContent className="p-6 text-center">
910
- <h3 className="mb-2 text-lg font-semibold">Accessible</h3>
911
- <p className="text-sm text-muted-foreground">
912
- Built on Radix UI with WAI-ARIA compliance
913
- </p>
914
- </CardContent>
915
- </Card>
916
- </div>
917
- </div>
918
- </div>
919
- );
1010
+ ```css
1011
+ /* checkbox-demo.module.css */
1012
+ .checkboxRow {
1013
+ display: inline-flex;
1014
+ align-items: center;
1015
+ gap: 0.75rem;
1016
+ }
1017
+
1018
+ .checkboxRow :global([data-checked]) {
1019
+ box-shadow: 0 0 0 2px color-mix(in oklab, var(--ac-primary) 25%, transparent);
1020
+ }
1021
+
1022
+ .checkboxRow :global([data-disabled]) {
1023
+ opacity: 0.5;
920
1024
  }
921
1025
  ```
922
1026
 
@@ -927,6 +1031,9 @@ export function LandingPage() {
927
1031
  ### Mobile-Optimized Form
928
1032
 
929
1033
  ```tsx
1034
+ import { Button } from "@arolariu/components/button";
1035
+ import { Input } from "@arolariu/components/input";
1036
+ import { Label } from "@arolariu/components/label";
930
1037
  import {
931
1038
  Sheet,
932
1039
  SheetContent,
@@ -935,21 +1042,22 @@ import {
935
1042
  SheetTitle,
936
1043
  SheetTrigger,
937
1044
  } from "@arolariu/components/sheet";
938
- import { Button } from "@arolariu/components/button";
939
- import { Input } from "@arolariu/components/input";
940
- import { Label } from "@arolariu/components/label";
941
1045
  import { Textarea } from "@arolariu/components/textarea";
942
1046
  import { Plus } from "lucide-react";
1047
+ import styles from "./mobile-add-form.module.css";
943
1048
 
944
1049
  export function MobileAddForm() {
945
1050
  return (
946
1051
  <Sheet>
947
- <SheetTrigger asChild>
948
- <Button className="fixed bottom-4 right-4 h-14 w-14 rounded-full shadow-lg md:hidden">
949
- <Plus className="h-6 w-6" />
950
- </Button>
1052
+ <SheetTrigger
1053
+ render={<button type="button" className={styles.fab} />}
1054
+ >
1055
+ <Plus />
951
1056
  </SheetTrigger>
952
- <SheetContent side="bottom" className="h-[80vh]">
1057
+ <SheetContent
1058
+ side="bottom"
1059
+ className={styles.sheetContent}
1060
+ >
953
1061
  <SheetHeader>
954
1062
  <SheetTitle>Add New Item</SheetTitle>
955
1063
  <SheetDescription>
@@ -957,24 +1065,30 @@ export function MobileAddForm() {
957
1065
  </SheetDescription>
958
1066
  </SheetHeader>
959
1067
 
960
- <div className="mt-6 space-y-4">
961
- <div className="space-y-2">
1068
+ <div className={styles.formStack}>
1069
+ <div className={styles.field}>
962
1070
  <Label htmlFor="title">Title</Label>
963
- <Input id="title" placeholder="Enter title" />
1071
+ <Input
1072
+ id="title"
1073
+ placeholder="Enter title"
1074
+ />
964
1075
  </div>
965
1076
 
966
- <div className="space-y-2">
1077
+ <div className={styles.field}>
967
1078
  <Label htmlFor="description">Description</Label>
968
1079
  <Textarea
969
1080
  id="description"
970
1081
  placeholder="Enter description"
971
- className="min-h-[100px]"
1082
+ className={styles.textarea}
972
1083
  />
973
1084
  </div>
974
1085
 
975
- <div className="flex gap-2 pt-4">
976
- <Button className="flex-1">Save</Button>
977
- <Button variant="outline" className="flex-1">
1086
+ <div className={styles.actionRow}>
1087
+ <Button className={styles.flexButton}>Save</Button>
1088
+ <Button
1089
+ variant="outline"
1090
+ className={styles.flexButton}
1091
+ >
978
1092
  Cancel
979
1093
  </Button>
980
1094
  </div>
@@ -996,7 +1110,7 @@ export function MobileAddForm() {
996
1110
  import { Button } from "@arolariu/components/button";
997
1111
  import { Card } from "@arolariu/components/card";
998
1112
 
999
- // ❌ Avoid barrel imports
1113
+ // ❌ Avoid barrel imports when bundle size matters
1000
1114
  import { Button, Card } from "@arolariu/components";
1001
1115
  ```
1002
1116
 
@@ -1004,8 +1118,11 @@ import { Button, Card } from "@arolariu/components";
1004
1118
 
1005
1119
  ```tsx
1006
1120
  // ✅ Always include proper labels and ARIA attributes
1007
- <Button aria-label="Close dialog" onClick={handleClose}>
1008
- <X className="h-4 w-4" />
1121
+ <Button
1122
+ aria-label="Close dialog"
1123
+ onClick={handleClose}
1124
+ >
1125
+ <X />
1009
1126
  </Button>
1010
1127
 
1011
1128
  // ✅ Use semantic HTML structure
@@ -1019,17 +1136,25 @@ import { Button, Card } from "@arolariu/components";
1019
1136
 
1020
1137
  ### Responsive Design
1021
1138
 
1022
- ```tsx
1023
- // ✅ Use Tailwind's responsive utilities
1024
- <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
1025
- {/* components */}
1026
- </div>
1027
-
1028
- // ✅ Hide/show components based on screen size
1029
- <div className="block md:hidden">Mobile only content</div>
1030
- <div className="hidden md:block">Desktop only content</div>
1031
- ```
1139
+ ```css
1140
+ /* responsive-layout.module.css */
1141
+ .grid {
1142
+ display: grid;
1143
+ gap: 1rem;
1144
+ grid-template-columns: 1fr;
1145
+ }
1032
1146
 
1033
- ---
1147
+ @media (min-width: 48rem) {
1148
+ .grid {
1149
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1150
+ }
1151
+ }
1152
+
1153
+ @media (min-width: 64rem) {
1154
+ .grid {
1155
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1156
+ }
1157
+ }
1158
+ ```
1034
1159
 
1035
1160
  Ready to build something amazing? **[🚀 Start with our Quick Start Guide](./README.md#-quick-start)**