@neynar/ui 0.1.1

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 (364) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +195 -0
  3. package/dist/components/ui/accordion.d.ts +229 -0
  4. package/dist/components/ui/accordion.d.ts.map +1 -0
  5. package/dist/components/ui/alert-dialog.d.ts +247 -0
  6. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  7. package/dist/components/ui/alert.d.ts +187 -0
  8. package/dist/components/ui/alert.d.ts.map +1 -0
  9. package/dist/components/ui/aspect-ratio.d.ts +94 -0
  10. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  11. package/dist/components/ui/avatar.d.ts +244 -0
  12. package/dist/components/ui/avatar.d.ts.map +1 -0
  13. package/dist/components/ui/badge.d.ts +163 -0
  14. package/dist/components/ui/badge.d.ts.map +1 -0
  15. package/dist/components/ui/breadcrumb.d.ts +281 -0
  16. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  17. package/dist/components/ui/button.d.ts +129 -0
  18. package/dist/components/ui/button.d.ts.map +1 -0
  19. package/dist/components/ui/calendar.d.ts +169 -0
  20. package/dist/components/ui/calendar.d.ts.map +1 -0
  21. package/dist/components/ui/card.d.ts +365 -0
  22. package/dist/components/ui/card.d.ts.map +1 -0
  23. package/dist/components/ui/carousel.d.ts +369 -0
  24. package/dist/components/ui/carousel.d.ts.map +1 -0
  25. package/dist/components/ui/chart.d.ts +442 -0
  26. package/dist/components/ui/chart.d.ts.map +1 -0
  27. package/dist/components/ui/checkbox.d.ts +88 -0
  28. package/dist/components/ui/checkbox.d.ts.map +1 -0
  29. package/dist/components/ui/collapsible.d.ts +182 -0
  30. package/dist/components/ui/collapsible.d.ts.map +1 -0
  31. package/dist/components/ui/combobox.d.ts +270 -0
  32. package/dist/components/ui/combobox.d.ts.map +1 -0
  33. package/dist/components/ui/command.d.ts +355 -0
  34. package/dist/components/ui/command.d.ts.map +1 -0
  35. package/dist/components/ui/container.d.ts +102 -0
  36. package/dist/components/ui/container.d.ts.map +1 -0
  37. package/dist/components/ui/context-menu.d.ts +339 -0
  38. package/dist/components/ui/context-menu.d.ts.map +1 -0
  39. package/dist/components/ui/date-picker.d.ts +145 -0
  40. package/dist/components/ui/date-picker.d.ts.map +1 -0
  41. package/dist/components/ui/dialog.d.ts +322 -0
  42. package/dist/components/ui/dialog.d.ts.map +1 -0
  43. package/dist/components/ui/drawer.d.ts +154 -0
  44. package/dist/components/ui/drawer.d.ts.map +1 -0
  45. package/dist/components/ui/dropdown-menu.d.ts +349 -0
  46. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  47. package/dist/components/ui/empty-state.d.ts +133 -0
  48. package/dist/components/ui/empty-state.d.ts.map +1 -0
  49. package/dist/components/ui/hover-card.d.ts +109 -0
  50. package/dist/components/ui/hover-card.d.ts.map +1 -0
  51. package/dist/components/ui/input.d.ts +89 -0
  52. package/dist/components/ui/input.d.ts.map +1 -0
  53. package/dist/components/ui/label.d.ts +93 -0
  54. package/dist/components/ui/label.d.ts.map +1 -0
  55. package/dist/components/ui/menubar.d.ts +306 -0
  56. package/dist/components/ui/menubar.d.ts.map +1 -0
  57. package/dist/components/ui/navigation-menu.d.ts +318 -0
  58. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  59. package/dist/components/ui/pagination.d.ts +343 -0
  60. package/dist/components/ui/pagination.d.ts.map +1 -0
  61. package/dist/components/ui/popover.d.ts +178 -0
  62. package/dist/components/ui/popover.d.ts.map +1 -0
  63. package/dist/components/ui/progress.d.ts +64 -0
  64. package/dist/components/ui/progress.d.ts.map +1 -0
  65. package/dist/components/ui/radio-group.d.ts +144 -0
  66. package/dist/components/ui/radio-group.d.ts.map +1 -0
  67. package/dist/components/ui/resizable.d.ts +164 -0
  68. package/dist/components/ui/resizable.d.ts.map +1 -0
  69. package/dist/components/ui/scroll-area.d.ts +82 -0
  70. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  71. package/dist/components/ui/select.d.ts +316 -0
  72. package/dist/components/ui/select.d.ts.map +1 -0
  73. package/dist/components/ui/separator.d.ts +80 -0
  74. package/dist/components/ui/separator.d.ts.map +1 -0
  75. package/dist/components/ui/sheet.d.ts +346 -0
  76. package/dist/components/ui/sheet.d.ts.map +1 -0
  77. package/dist/components/ui/sidebar.d.ts +1561 -0
  78. package/dist/components/ui/sidebar.d.ts.map +1 -0
  79. package/dist/components/ui/skeleton.d.ts +66 -0
  80. package/dist/components/ui/skeleton.d.ts.map +1 -0
  81. package/dist/components/ui/slider.d.ts +95 -0
  82. package/dist/components/ui/slider.d.ts.map +1 -0
  83. package/dist/components/ui/sonner.d.ts +101 -0
  84. package/dist/components/ui/sonner.d.ts.map +1 -0
  85. package/dist/components/ui/stack.d.ts +192 -0
  86. package/dist/components/ui/stack.d.ts.map +1 -0
  87. package/dist/components/ui/stories/accordion.stories.d.ts +71 -0
  88. package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -0
  89. package/dist/components/ui/stories/alert-dialog.stories.d.ts +39 -0
  90. package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -0
  91. package/dist/components/ui/stories/alert.stories.d.ts +48 -0
  92. package/dist/components/ui/stories/alert.stories.d.ts.map +1 -0
  93. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +53 -0
  94. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -0
  95. package/dist/components/ui/stories/avatar.stories.d.ts +49 -0
  96. package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -0
  97. package/dist/components/ui/stories/badge.stories.d.ts +64 -0
  98. package/dist/components/ui/stories/badge.stories.d.ts.map +1 -0
  99. package/dist/components/ui/stories/breadcrumb.stories.d.ts +27 -0
  100. package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -0
  101. package/dist/components/ui/stories/button.stories.d.ts +92 -0
  102. package/dist/components/ui/stories/button.stories.d.ts.map +1 -0
  103. package/dist/components/ui/stories/calendar.stories.d.ts +94 -0
  104. package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -0
  105. package/dist/components/ui/stories/card.stories.d.ts +29 -0
  106. package/dist/components/ui/stories/card.stories.d.ts.map +1 -0
  107. package/dist/components/ui/stories/carousel.stories.d.ts +42 -0
  108. package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -0
  109. package/dist/components/ui/stories/chart.stories.d.ts +51 -0
  110. package/dist/components/ui/stories/chart.stories.d.ts.map +1 -0
  111. package/dist/components/ui/stories/checkbox.stories.d.ts +72 -0
  112. package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -0
  113. package/dist/components/ui/stories/cn.stories.d.ts +19 -0
  114. package/dist/components/ui/stories/cn.stories.d.ts.map +1 -0
  115. package/dist/components/ui/stories/collapsible.stories.d.ts +51 -0
  116. package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -0
  117. package/dist/components/ui/stories/colors.stories.d.ts +31 -0
  118. package/dist/components/ui/stories/colors.stories.d.ts.map +1 -0
  119. package/dist/components/ui/stories/combobox.stories.d.ts +89 -0
  120. package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -0
  121. package/dist/components/ui/stories/command.stories.d.ts +69 -0
  122. package/dist/components/ui/stories/command.stories.d.ts.map +1 -0
  123. package/dist/components/ui/stories/container.stories.d.ts +42 -0
  124. package/dist/components/ui/stories/container.stories.d.ts.map +1 -0
  125. package/dist/components/ui/stories/context-menu.stories.d.ts +32 -0
  126. package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -0
  127. package/dist/components/ui/stories/date-picker.stories.d.ts +67 -0
  128. package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -0
  129. package/dist/components/ui/stories/dialog.stories.d.ts +48 -0
  130. package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -0
  131. package/dist/components/ui/stories/drawer.stories.d.ts +33 -0
  132. package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -0
  133. package/dist/components/ui/stories/dropdown-menu.stories.d.ts +31 -0
  134. package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -0
  135. package/dist/components/ui/stories/empty-state.stories.d.ts +74 -0
  136. package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -0
  137. package/dist/components/ui/stories/hover-card.stories.d.ts +35 -0
  138. package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -0
  139. package/dist/components/ui/stories/input.stories.d.ts +69 -0
  140. package/dist/components/ui/stories/input.stories.d.ts.map +1 -0
  141. package/dist/components/ui/stories/label.stories.d.ts +47 -0
  142. package/dist/components/ui/stories/label.stories.d.ts.map +1 -0
  143. package/dist/components/ui/stories/menubar.stories.d.ts +39 -0
  144. package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -0
  145. package/dist/components/ui/stories/navigation-menu.stories.d.ts +44 -0
  146. package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -0
  147. package/dist/components/ui/stories/pagination.stories.d.ts +33 -0
  148. package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -0
  149. package/dist/components/ui/stories/popover.stories.d.ts +36 -0
  150. package/dist/components/ui/stories/popover.stories.d.ts.map +1 -0
  151. package/dist/components/ui/stories/progress.stories.d.ts +38 -0
  152. package/dist/components/ui/stories/progress.stories.d.ts.map +1 -0
  153. package/dist/components/ui/stories/radio-group.stories.d.ts +76 -0
  154. package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -0
  155. package/dist/components/ui/stories/resizable.stories.d.ts +49 -0
  156. package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -0
  157. package/dist/components/ui/stories/scroll-area.stories.d.ts +35 -0
  158. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -0
  159. package/dist/components/ui/stories/select.stories.d.ts +51 -0
  160. package/dist/components/ui/stories/select.stories.d.ts.map +1 -0
  161. package/dist/components/ui/stories/separator.stories.d.ts +58 -0
  162. package/dist/components/ui/stories/separator.stories.d.ts.map +1 -0
  163. package/dist/components/ui/stories/sheet.stories.d.ts +43 -0
  164. package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -0
  165. package/dist/components/ui/stories/sidebar.stories.d.ts +60 -0
  166. package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -0
  167. package/dist/components/ui/stories/skeleton.stories.d.ts +42 -0
  168. package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -0
  169. package/dist/components/ui/stories/slider.stories.d.ts +99 -0
  170. package/dist/components/ui/stories/slider.stories.d.ts.map +1 -0
  171. package/dist/components/ui/stories/sonner.stories.d.ts +9 -0
  172. package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -0
  173. package/dist/components/ui/stories/stack.stories.d.ts +39 -0
  174. package/dist/components/ui/stories/stack.stories.d.ts.map +1 -0
  175. package/dist/components/ui/stories/switch.stories.d.ts +71 -0
  176. package/dist/components/ui/stories/switch.stories.d.ts.map +1 -0
  177. package/dist/components/ui/stories/table.stories.d.ts +40 -0
  178. package/dist/components/ui/stories/table.stories.d.ts.map +1 -0
  179. package/dist/components/ui/stories/tabs.stories.d.ts +62 -0
  180. package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -0
  181. package/dist/components/ui/stories/text-field.stories.d.ts +78 -0
  182. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -0
  183. package/dist/components/ui/stories/textarea.stories.d.ts +57 -0
  184. package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -0
  185. package/dist/components/ui/stories/theme-toggle.stories.d.ts +71 -0
  186. package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -0
  187. package/dist/components/ui/stories/theme.stories.d.ts +51 -0
  188. package/dist/components/ui/stories/theme.stories.d.ts.map +1 -0
  189. package/dist/components/ui/stories/toggle-group.stories.d.ts +71 -0
  190. package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -0
  191. package/dist/components/ui/stories/toggle.stories.d.ts +78 -0
  192. package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -0
  193. package/dist/components/ui/stories/tooltip.stories.d.ts +37 -0
  194. package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -0
  195. package/dist/components/ui/stories/typography.stories.d.ts +137 -0
  196. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -0
  197. package/dist/components/ui/stories/use-mobile.stories.d.ts +20 -0
  198. package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -0
  199. package/dist/components/ui/stories/use-theme.stories.d.ts +23 -0
  200. package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -0
  201. package/dist/components/ui/switch.d.ts +84 -0
  202. package/dist/components/ui/switch.d.ts.map +1 -0
  203. package/dist/components/ui/table.d.ts +321 -0
  204. package/dist/components/ui/table.d.ts.map +1 -0
  205. package/dist/components/ui/tabs.d.ts +260 -0
  206. package/dist/components/ui/tabs.d.ts.map +1 -0
  207. package/dist/components/ui/text-field.d.ts +157 -0
  208. package/dist/components/ui/text-field.d.ts.map +1 -0
  209. package/dist/components/ui/textarea.d.ts +84 -0
  210. package/dist/components/ui/textarea.d.ts.map +1 -0
  211. package/dist/components/ui/theme-toggle.d.ts +105 -0
  212. package/dist/components/ui/theme-toggle.d.ts.map +1 -0
  213. package/dist/components/ui/theme.d.ts +110 -0
  214. package/dist/components/ui/theme.d.ts.map +1 -0
  215. package/dist/components/ui/toggle-group.d.ts +133 -0
  216. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  217. package/dist/components/ui/toggle.d.ts +84 -0
  218. package/dist/components/ui/toggle.d.ts.map +1 -0
  219. package/dist/components/ui/tooltip.d.ts +202 -0
  220. package/dist/components/ui/tooltip.d.ts.map +1 -0
  221. package/dist/components/ui/typography.d.ts +287 -0
  222. package/dist/components/ui/typography.d.ts.map +1 -0
  223. package/dist/hooks/use-mobile.d.ts +74 -0
  224. package/dist/hooks/use-mobile.d.ts.map +1 -0
  225. package/dist/hooks/use-theme.d.ts +142 -0
  226. package/dist/hooks/use-theme.d.ts.map +1 -0
  227. package/dist/index.d.ts +57 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +27498 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/lib/utils.d.ts +43 -0
  232. package/dist/lib/utils.d.ts.map +1 -0
  233. package/dist/tsconfig.tsbuildinfo +1 -0
  234. package/docs/llm/colors.md +273 -0
  235. package/docs/llm/components/buttons.md +68 -0
  236. package/docs/llm/components/cards.md +53 -0
  237. package/docs/llm/components/display.md +134 -0
  238. package/docs/llm/components/feedback.md +96 -0
  239. package/docs/llm/components/forms.md +90 -0
  240. package/docs/llm/components/layout.md +59 -0
  241. package/docs/llm/components/menus.md +70 -0
  242. package/docs/llm/components/navigation.md +80 -0
  243. package/docs/llm/components/overlays.md +83 -0
  244. package/docs/llm/components/tables.md +73 -0
  245. package/docs/llm/components/typography.md +199 -0
  246. package/docs/llm/components/utilities.md +114 -0
  247. package/docs/llm/guide.md +165 -0
  248. package/llms.txt +122 -0
  249. package/package.json +104 -0
  250. package/src/components/ui/accordion.tsx +285 -0
  251. package/src/components/ui/alert-dialog.tsx +387 -0
  252. package/src/components/ui/alert.tsx +243 -0
  253. package/src/components/ui/aspect-ratio.tsx +99 -0
  254. package/src/components/ui/avatar.tsx +288 -0
  255. package/src/components/ui/badge.tsx +205 -0
  256. package/src/components/ui/breadcrumb.tsx +378 -0
  257. package/src/components/ui/button.tsx +195 -0
  258. package/src/components/ui/calendar.tsx +371 -0
  259. package/src/components/ui/card.tsx +447 -0
  260. package/src/components/ui/carousel.tsx +624 -0
  261. package/src/components/ui/chart.tsx +802 -0
  262. package/src/components/ui/checkbox.tsx +113 -0
  263. package/src/components/ui/collapsible.tsx +207 -0
  264. package/src/components/ui/combobox.tsx +373 -0
  265. package/src/components/ui/command.tsx +518 -0
  266. package/src/components/ui/container.tsx +114 -0
  267. package/src/components/ui/context-menu.tsx +563 -0
  268. package/src/components/ui/date-picker.tsx +213 -0
  269. package/src/components/ui/dialog.tsx +447 -0
  270. package/src/components/ui/drawer.tsx +273 -0
  271. package/src/components/ui/dropdown-menu.tsx +578 -0
  272. package/src/components/ui/empty-state.tsx +145 -0
  273. package/src/components/ui/hover-card.tsx +144 -0
  274. package/src/components/ui/input.tsx +106 -0
  275. package/src/components/ui/label.tsx +110 -0
  276. package/src/components/ui/menubar.tsx +553 -0
  277. package/src/components/ui/navigation-menu.tsx +471 -0
  278. package/src/components/ui/pagination.tsx +456 -0
  279. package/src/components/ui/popover.tsx +216 -0
  280. package/src/components/ui/progress.tsx +88 -0
  281. package/src/components/ui/radio-group.tsx +183 -0
  282. package/src/components/ui/resizable.tsx +209 -0
  283. package/src/components/ui/scroll-area.tsx +132 -0
  284. package/src/components/ui/select.tsx +485 -0
  285. package/src/components/ui/separator.tsx +101 -0
  286. package/src/components/ui/sheet.tsx +495 -0
  287. package/src/components/ui/sidebar.tsx +2211 -0
  288. package/src/components/ui/skeleton.tsx +76 -0
  289. package/src/components/ui/slider.tsx +147 -0
  290. package/src/components/ui/sonner.tsx +120 -0
  291. package/src/components/ui/stack.tsx +180 -0
  292. package/src/components/ui/stories/accordion.stories.tsx +429 -0
  293. package/src/components/ui/stories/alert-dialog.stories.tsx +519 -0
  294. package/src/components/ui/stories/alert.stories.tsx +228 -0
  295. package/src/components/ui/stories/aspect-ratio.stories.tsx +200 -0
  296. package/src/components/ui/stories/avatar.stories.tsx +317 -0
  297. package/src/components/ui/stories/badge.stories.tsx +260 -0
  298. package/src/components/ui/stories/breadcrumb.stories.tsx +482 -0
  299. package/src/components/ui/stories/button.stories.tsx +266 -0
  300. package/src/components/ui/stories/calendar.stories.tsx +375 -0
  301. package/src/components/ui/stories/card.stories.tsx +308 -0
  302. package/src/components/ui/stories/carousel.stories.tsx +328 -0
  303. package/src/components/ui/stories/chart.stories.tsx +430 -0
  304. package/src/components/ui/stories/checkbox.stories.tsx +297 -0
  305. package/src/components/ui/stories/cn.stories.tsx +433 -0
  306. package/src/components/ui/stories/collapsible.stories.tsx +256 -0
  307. package/src/components/ui/stories/colors.stories.tsx +502 -0
  308. package/src/components/ui/stories/combobox.stories.tsx +301 -0
  309. package/src/components/ui/stories/command.stories.tsx +632 -0
  310. package/src/components/ui/stories/container.stories.tsx +250 -0
  311. package/src/components/ui/stories/context-menu.stories.tsx +446 -0
  312. package/src/components/ui/stories/date-picker.stories.tsx +378 -0
  313. package/src/components/ui/stories/dialog.stories.tsx +535 -0
  314. package/src/components/ui/stories/drawer.stories.tsx +364 -0
  315. package/src/components/ui/stories/dropdown-menu.stories.tsx +374 -0
  316. package/src/components/ui/stories/empty-state.stories.tsx +244 -0
  317. package/src/components/ui/stories/hover-card.stories.tsx +355 -0
  318. package/src/components/ui/stories/input.stories.tsx +289 -0
  319. package/src/components/ui/stories/label.stories.tsx +294 -0
  320. package/src/components/ui/stories/menubar.stories.tsx +764 -0
  321. package/src/components/ui/stories/navigation-menu.stories.tsx +539 -0
  322. package/src/components/ui/stories/pagination.stories.tsx +604 -0
  323. package/src/components/ui/stories/popover.stories.tsx +392 -0
  324. package/src/components/ui/stories/progress.stories.tsx +218 -0
  325. package/src/components/ui/stories/radio-group.stories.tsx +400 -0
  326. package/src/components/ui/stories/resizable.stories.tsx +417 -0
  327. package/src/components/ui/stories/scroll-area.stories.tsx +180 -0
  328. package/src/components/ui/stories/select.stories.tsx +389 -0
  329. package/src/components/ui/stories/separator.stories.tsx +192 -0
  330. package/src/components/ui/stories/sheet.stories.tsx +468 -0
  331. package/src/components/ui/stories/sidebar.stories.tsx +731 -0
  332. package/src/components/ui/stories/skeleton.stories.tsx +216 -0
  333. package/src/components/ui/stories/slider.stories.tsx +321 -0
  334. package/src/components/ui/stories/sonner.stories.tsx +373 -0
  335. package/src/components/ui/stories/stack.stories.tsx +222 -0
  336. package/src/components/ui/stories/switch.stories.tsx +202 -0
  337. package/src/components/ui/stories/table.stories.tsx +541 -0
  338. package/src/components/ui/stories/tabs.stories.tsx +544 -0
  339. package/src/components/ui/stories/text-field.stories.tsx +280 -0
  340. package/src/components/ui/stories/textarea.stories.tsx +245 -0
  341. package/src/components/ui/stories/theme-toggle.stories.tsx +275 -0
  342. package/src/components/ui/stories/theme.stories.tsx +412 -0
  343. package/src/components/ui/stories/toggle-group.stories.tsx +337 -0
  344. package/src/components/ui/stories/toggle.stories.tsx +325 -0
  345. package/src/components/ui/stories/tooltip.stories.tsx +444 -0
  346. package/src/components/ui/stories/typography.stories.tsx +1586 -0
  347. package/src/components/ui/stories/use-mobile.stories.tsx +420 -0
  348. package/src/components/ui/stories/use-theme.stories.tsx +531 -0
  349. package/src/components/ui/switch.tsx +106 -0
  350. package/src/components/ui/table.tsx +424 -0
  351. package/src/components/ui/tabs.tsx +316 -0
  352. package/src/components/ui/text-field.tsx +206 -0
  353. package/src/components/ui/textarea.tsx +98 -0
  354. package/src/components/ui/theme-toggle.tsx +185 -0
  355. package/src/components/ui/theme.tsx +148 -0
  356. package/src/components/ui/toggle-group.tsx +196 -0
  357. package/src/components/ui/toggle.tsx +115 -0
  358. package/src/components/ui/tooltip.tsx +253 -0
  359. package/src/components/ui/typography.tsx +468 -0
  360. package/src/hooks/use-mobile.ts +91 -0
  361. package/src/hooks/use-theme.ts +319 -0
  362. package/src/index.ts +77 -0
  363. package/src/lib/utils.ts +57 -0
  364. package/src/styles/globals.css +160 -0
@@ -0,0 +1,471 @@
1
+ import * as React from "react";
2
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
3
+ import { cva } from "class-variance-authority";
4
+ import { ChevronDownIcon } from "lucide-react";
5
+
6
+ import { cn } from "@/lib/utils";
7
+
8
+ /**
9
+ * NavigationMenu - A collection of links for navigating websites
10
+ *
11
+ * A horizontal navigation component built on Radix UI primitives that provides
12
+ * flexible navigation patterns with dropdown content support. Features full
13
+ * keyboard navigation, accessibility compliance, and responsive design.
14
+ *
15
+ * @component
16
+ * @example
17
+ * ```tsx
18
+ * // Basic navigation with dropdown
19
+ * <NavigationMenu>
20
+ * <NavigationMenuList>
21
+ * <NavigationMenuItem>
22
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
23
+ * <NavigationMenuContent>
24
+ * <NavigationMenuLink href="/products">All Products</NavigationMenuLink>
25
+ * </NavigationMenuContent>
26
+ * </NavigationMenuItem>
27
+ * </NavigationMenuList>
28
+ * </NavigationMenu>
29
+ * ```
30
+ *
31
+ * @example
32
+ * ```tsx
33
+ * // Simple navigation links
34
+ * <NavigationMenu>
35
+ * <NavigationMenuList>
36
+ * <NavigationMenuItem>
37
+ * <NavigationMenuLink href="/about">About</NavigationMenuLink>
38
+ * </NavigationMenuItem>
39
+ * <NavigationMenuItem>
40
+ * <NavigationMenuLink href="/contact">Contact</NavigationMenuLink>
41
+ * </NavigationMenuItem>
42
+ * </NavigationMenuList>
43
+ * </NavigationMenu>
44
+ * ```
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * // With Next.js Link using asChild
49
+ * <NavigationMenu>
50
+ * <NavigationMenuList>
51
+ * <NavigationMenuItem>
52
+ * <NavigationMenuLink asChild>
53
+ * <Link href="/dashboard">Dashboard</Link>
54
+ * </NavigationMenuLink>
55
+ * </NavigationMenuItem>
56
+ * </NavigationMenuList>
57
+ * </NavigationMenu>
58
+ * ```
59
+ *
60
+ * @example
61
+ * ```tsx
62
+ * // Without viewport for simpler styling
63
+ * <NavigationMenu viewport={false}>
64
+ * <NavigationMenuList>
65
+ * <NavigationMenuItem>
66
+ * <NavigationMenuTrigger>Features</NavigationMenuTrigger>
67
+ * <NavigationMenuContent>
68
+ * <div className="p-4 w-[300px]">
69
+ * <NavigationMenuLink href="/analytics">Analytics</NavigationMenuLink>
70
+ * </div>
71
+ * </NavigationMenuContent>
72
+ * </NavigationMenuItem>
73
+ * </NavigationMenuList>
74
+ * </NavigationMenu>
75
+ * ```
76
+ *
77
+ * @accessibility
78
+ * - Full keyboard navigation with arrow keys for menu traversal
79
+ * - Tab key moves between focusable menu items
80
+ * - Escape key closes open dropdown menus
81
+ * - Enter/Space activates triggers and links
82
+ * - ARIA attributes for proper screen reader support
83
+ * - Focus management with automatic focus trapping in dropdowns
84
+ * - Semantic HTML structure for navigation landmarks
85
+ *
86
+ * @see {@link https://ui.shadcn.com/docs/components/navigation-menu} shadcn/ui Navigation Menu
87
+ * @see {@link https://www.radix-ui.com/primitives/docs/components/navigation-menu} Radix UI Navigation Menu
88
+ * @since 1.0.0
89
+ */
90
+ /**
91
+ * Main NavigationMenu component props
92
+ *
93
+ * @param viewport - Whether to render the navigation viewport container. Defaults to true.
94
+ * Set to false for simpler dropdown styling without viewport positioning.
95
+ * @param className - Additional CSS classes to apply to the navigation menu root
96
+ * @param children - NavigationMenuList and NavigationMenuViewport components
97
+ */
98
+ function NavigationMenu({
99
+ className,
100
+ children,
101
+ viewport = true,
102
+ ...props
103
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {
104
+ /** Whether to render the navigation viewport container for dropdown positioning */
105
+ viewport?: boolean;
106
+ }) {
107
+ return (
108
+ <NavigationMenuPrimitive.Root
109
+ data-slot="navigation-menu"
110
+ data-viewport={viewport}
111
+ className={cn(
112
+ "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
113
+ className,
114
+ )}
115
+ {...props}
116
+ >
117
+ {children}
118
+ {viewport && <NavigationMenuViewport />}
119
+ </NavigationMenuPrimitive.Root>
120
+ );
121
+ }
122
+
123
+ /**
124
+ * NavigationMenuList - Container for navigation menu items
125
+ *
126
+ * A horizontal list container that groups NavigationMenuItem components.
127
+ * Provides the foundational layout structure for the navigation menu.
128
+ *
129
+ * @component
130
+ * @example
131
+ * ```tsx
132
+ * <NavigationMenuList>
133
+ * <NavigationMenuItem>
134
+ * <NavigationMenuLink href="/home">Home</NavigationMenuLink>
135
+ * </NavigationMenuItem>
136
+ * <NavigationMenuItem>
137
+ * <NavigationMenuLink href="/about">About</NavigationMenuLink>
138
+ * </NavigationMenuItem>
139
+ * </NavigationMenuList>
140
+ * ```
141
+ *
142
+ * @param className - Additional CSS classes for styling
143
+ * @since 1.0.0
144
+ */
145
+ function NavigationMenuList({
146
+ className,
147
+ ...props
148
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.List>) {
149
+ return (
150
+ <NavigationMenuPrimitive.List
151
+ data-slot="navigation-menu-list"
152
+ className={cn(
153
+ "group flex flex-1 list-none items-center justify-center gap-1",
154
+ className,
155
+ )}
156
+ {...props}
157
+ />
158
+ );
159
+ }
160
+
161
+ /**
162
+ * NavigationMenuItem - Individual navigation menu item container
163
+ *
164
+ * Wraps a single navigation item, which can contain either:
165
+ * - A NavigationMenuTrigger with NavigationMenuContent for dropdowns
166
+ * - A NavigationMenuLink for direct navigation
167
+ *
168
+ * @component
169
+ * @example
170
+ * ```tsx
171
+ * // With dropdown content
172
+ * <NavigationMenuItem>
173
+ * <NavigationMenuTrigger>Products</NavigationMenuTrigger>
174
+ * <NavigationMenuContent>
175
+ * <NavigationMenuLink href="/products/all">All Products</NavigationMenuLink>
176
+ * </NavigationMenuContent>
177
+ * </NavigationMenuItem>
178
+ * ```
179
+ *
180
+ * @example
181
+ * ```tsx
182
+ * // Simple link
183
+ * <NavigationMenuItem>
184
+ * <NavigationMenuLink href="/contact">Contact</NavigationMenuLink>
185
+ * </NavigationMenuItem>
186
+ * ```
187
+ *
188
+ * @param className - Additional CSS classes for styling
189
+ * @since 1.0.0
190
+ */
191
+ function NavigationMenuItem({
192
+ className,
193
+ ...props
194
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Item>) {
195
+ return (
196
+ <NavigationMenuPrimitive.Item
197
+ data-slot="navigation-menu-item"
198
+ className={cn("relative", className)}
199
+ {...props}
200
+ />
201
+ );
202
+ }
203
+
204
+ const navigationMenuTriggerStyle = cva(
205
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1",
206
+ );
207
+
208
+ /**
209
+ * NavigationMenuTrigger - Button that opens dropdown navigation content
210
+ *
211
+ * An interactive trigger button that displays NavigationMenuContent when activated.
212
+ * Features automatic chevron icon rotation and hover/focus states. Supports the
213
+ * asChild prop for custom button styling.
214
+ *
215
+ * @component
216
+ * @example
217
+ * ```tsx
218
+ * <NavigationMenuTrigger>Features</NavigationMenuTrigger>
219
+ * ```
220
+ *
221
+ * @example
222
+ * ```tsx
223
+ * // With custom button styling using asChild
224
+ * <NavigationMenuTrigger asChild>
225
+ * <Button variant="outline">Custom Trigger</Button>
226
+ * </NavigationMenuTrigger>
227
+ * ```
228
+ *
229
+ * @accessibility
230
+ * - Automatic ARIA expanded state management
231
+ * - Keyboard activation with Enter/Space keys
232
+ * - Focus visible indicator for keyboard navigation
233
+ * - Screen reader accessible button semantics
234
+ *
235
+ * @param className - Additional CSS classes for styling
236
+ * @param children - Button content (text, icons, etc.)
237
+ * @since 1.0.0
238
+ */
239
+ function NavigationMenuTrigger({
240
+ className,
241
+ children,
242
+ ...props
243
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger>) {
244
+ return (
245
+ <NavigationMenuPrimitive.Trigger
246
+ data-slot="navigation-menu-trigger"
247
+ className={cn(navigationMenuTriggerStyle(), "group", className)}
248
+ {...props}
249
+ >
250
+ {children}{" "}
251
+ <ChevronDownIcon
252
+ className="relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180"
253
+ aria-hidden="true"
254
+ />
255
+ </NavigationMenuPrimitive.Trigger>
256
+ );
257
+ }
258
+
259
+ /**
260
+ * NavigationMenuContent - Dropdown content panel for navigation menu
261
+ *
262
+ * The content container that appears when a NavigationMenuTrigger is activated.
263
+ * Supports enter/exit animations, responsive positioning, and flexible layouts.
264
+ * Can be styled differently based on the viewport prop setting.
265
+ *
266
+ * @component
267
+ * @example
268
+ * ```tsx
269
+ * <NavigationMenuContent>
270
+ * <div className="grid gap-3 p-6 w-[400px]">
271
+ * <NavigationMenuLink href="/feature1">Feature 1</NavigationMenuLink>
272
+ * <NavigationMenuLink href="/feature2">Feature 2</NavigationMenuLink>
273
+ * </div>
274
+ * </NavigationMenuContent>
275
+ * ```
276
+ *
277
+ * @example
278
+ * ```tsx
279
+ * // Complex layout with sections
280
+ * <NavigationMenuContent>
281
+ * <div className="grid gap-6 p-6 w-[600px] grid-cols-3">
282
+ * <div>
283
+ * <h4>Analytics</h4>
284
+ * <NavigationMenuLink href="/dashboard">Dashboard</NavigationMenuLink>
285
+ * </div>
286
+ * </div>
287
+ * </NavigationMenuContent>
288
+ * ```
289
+ *
290
+ * @accessibility
291
+ * - Automatic focus management when opened
292
+ * - Escape key support for closing
293
+ * - Proper ARIA labeling and relationships
294
+ *
295
+ * @param className - Additional CSS classes for styling
296
+ * @param children - Content to display in the dropdown (links, layouts, etc.)
297
+ * @since 1.0.0
298
+ */
299
+ function NavigationMenuContent({
300
+ className,
301
+ ...props
302
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Content>) {
303
+ return (
304
+ <NavigationMenuPrimitive.Content
305
+ data-slot="navigation-menu-content"
306
+ className={cn(
307
+ "data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
308
+ "group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
309
+ className,
310
+ )}
311
+ {...props}
312
+ />
313
+ );
314
+ }
315
+
316
+ /**
317
+ * NavigationMenuViewport - Viewport container for dropdown content positioning
318
+ *
319
+ * Manages the positioning, sizing, and animation of NavigationMenuContent panels.
320
+ * Automatically adjusts dimensions based on content size and provides smooth
321
+ * enter/exit animations. Only rendered when viewport prop is true on NavigationMenu.
322
+ *
323
+ * @component
324
+ * @internal This component is typically not used directly by consumers
325
+ *
326
+ * @accessibility
327
+ * - Handles focus containment for dropdown content
328
+ * - Manages viewport announcements for screen readers
329
+ *
330
+ * @param className - Additional CSS classes for styling
331
+ * @since 1.0.0
332
+ */
333
+ function NavigationMenuViewport({
334
+ className,
335
+ ...props
336
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport>) {
337
+ return (
338
+ <div
339
+ className={cn(
340
+ "absolute top-full left-0 isolate z-50 flex justify-center",
341
+ )}
342
+ >
343
+ <NavigationMenuPrimitive.Viewport
344
+ data-slot="navigation-menu-viewport"
345
+ className={cn(
346
+ "origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
347
+ className,
348
+ )}
349
+ {...props}
350
+ />
351
+ </div>
352
+ );
353
+ }
354
+
355
+ /**
356
+ * NavigationMenuLink - Styled link component for navigation menus
357
+ *
358
+ * A link component designed specifically for navigation menus. Supports active
359
+ * states, hover effects, and the asChild pattern for framework integration.
360
+ * Can be used both within dropdown content and as direct navigation items.
361
+ *
362
+ * @component
363
+ * @example
364
+ * ```tsx
365
+ * // Direct navigation link
366
+ * <NavigationMenuLink href="/about">About Us</NavigationMenuLink>
367
+ * ```
368
+ *
369
+ * @example
370
+ * ```tsx
371
+ * // With Next.js Link using asChild
372
+ * <NavigationMenuLink asChild>
373
+ * <Link href="/products">Products</Link>
374
+ * </NavigationMenuLink>
375
+ * ```
376
+ *
377
+ * @example
378
+ * ```tsx
379
+ * // In dropdown content with description
380
+ * <NavigationMenuLink href="/analytics">
381
+ * <div className="text-sm font-medium">Analytics</div>
382
+ * <p className="text-sm text-muted-foreground">View your data insights</p>
383
+ * </NavigationMenuLink>
384
+ * ```
385
+ *
386
+ * @example
387
+ * ```tsx
388
+ * // With trigger styling for direct navigation
389
+ * <NavigationMenuLink href="/docs" className={navigationMenuTriggerStyle()}>
390
+ * Documentation
391
+ * </NavigationMenuLink>
392
+ * ```
393
+ *
394
+ * @accessibility
395
+ * - Focus visible ring for keyboard navigation
396
+ * - Active state styling for current page indication
397
+ * - Proper link semantics and ARIA attributes
398
+ * - Keyboard activation support (Enter key)
399
+ * - Screen reader compatible text content
400
+ *
401
+ * @param className - Additional CSS classes for styling
402
+ * @param children - Link content (text, elements, descriptions)
403
+ * @since 1.0.0
404
+ */
405
+ function NavigationMenuLink({
406
+ className,
407
+ ...props
408
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Link>) {
409
+ return (
410
+ <NavigationMenuPrimitive.Link
411
+ data-slot="navigation-menu-link"
412
+ className={cn(
413
+ "data-[active=true]:focus:bg-accent data-[active=true]:hover:bg-accent data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-ring/50 [&_svg:not([class*='text-'])]:text-muted-foreground flex flex-col gap-1 rounded-sm p-2 text-sm transition-all outline-none focus-visible:ring-[3px] focus-visible:outline-1 [&_svg:not([class*='size-'])]:size-4",
414
+ className,
415
+ )}
416
+ {...props}
417
+ />
418
+ );
419
+ }
420
+
421
+ /**
422
+ * NavigationMenuIndicator - Visual indicator for active menu item
423
+ *
424
+ * Displays an animated arrow indicator that points to the currently active
425
+ * or hovered navigation menu item. Automatically transitions between positions
426
+ * as users navigate through menu items, providing visual feedback.
427
+ *
428
+ * @component
429
+ * @example
430
+ * ```tsx
431
+ * // Typically used automatically, but can be customized
432
+ * <NavigationMenuIndicator className="custom-indicator-styles" />
433
+ * ```
434
+ *
435
+ * @accessibility
436
+ * - Purely decorative visual element
437
+ * - Does not interfere with screen reader navigation
438
+ * - Hidden from assistive technologies (aria-hidden)
439
+ *
440
+ * @param className - Additional CSS classes for custom indicator styling
441
+ * @since 1.0.0
442
+ */
443
+ function NavigationMenuIndicator({
444
+ className,
445
+ ...props
446
+ }: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator>) {
447
+ return (
448
+ <NavigationMenuPrimitive.Indicator
449
+ data-slot="navigation-menu-indicator"
450
+ className={cn(
451
+ "data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden",
452
+ className,
453
+ )}
454
+ {...props}
455
+ >
456
+ <div className="bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" />
457
+ </NavigationMenuPrimitive.Indicator>
458
+ );
459
+ }
460
+
461
+ export {
462
+ NavigationMenu,
463
+ NavigationMenuList,
464
+ NavigationMenuItem,
465
+ NavigationMenuContent,
466
+ NavigationMenuTrigger,
467
+ NavigationMenuLink,
468
+ NavigationMenuIndicator,
469
+ NavigationMenuViewport,
470
+ navigationMenuTriggerStyle,
471
+ };