@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,541 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import {
4
+ Table,
5
+ TableBody,
6
+ TableCaption,
7
+ TableCell,
8
+ TableFooter,
9
+ TableHead,
10
+ TableHeader,
11
+ TableRow,
12
+ } from "../table";
13
+ import { Badge } from "../badge";
14
+ import { Button } from "../button";
15
+ import { Checkbox } from "../checkbox";
16
+ import { Avatar, AvatarFallback } from "../avatar";
17
+ import {
18
+ DropdownMenu,
19
+ DropdownMenuContent,
20
+ DropdownMenuItem,
21
+ DropdownMenuLabel,
22
+ DropdownMenuSeparator,
23
+ DropdownMenuTrigger,
24
+ } from "../dropdown-menu";
25
+ import { MoreHorizontal } from "lucide-react";
26
+
27
+ const meta = {
28
+ title: "Data Display/Table",
29
+ component: Table,
30
+ parameters: {
31
+ layout: "padded",
32
+ docs: {
33
+ description: {
34
+ component:
35
+ "A responsive table component built on semantic HTML elements. Supports hover states, selection, captions, and footers. Perfect for dashboards, data management, and structured content display following shadcn/ui patterns.",
36
+ },
37
+ },
38
+ },
39
+ tags: ["autodocs"],
40
+ argTypes: {
41
+ className: {
42
+ control: "text",
43
+ description: "Additional CSS classes for styling customization",
44
+ },
45
+ },
46
+ } satisfies Meta<typeof Table>;
47
+
48
+ export default meta;
49
+ type Story = StoryObj<typeof meta>;
50
+
51
+ /**
52
+ * Interactive playground with all table features available for testing.
53
+ * This story demonstrates the full range of table capabilities including
54
+ * selection, actions, captions, and various cell types.
55
+ */
56
+ export const Interactive: Story = {
57
+ render: function InteractiveTable() {
58
+ const [selectedRows, setSelectedRows] = React.useState<Set<string>>(
59
+ new Set()
60
+ );
61
+
62
+ const users = [
63
+ {
64
+ id: "1",
65
+ username: "dwr.eth",
66
+ displayName: "Dan Romero",
67
+ fid: "3",
68
+ followers: "45.2k",
69
+ following: "892",
70
+ joined: "Jul 2021",
71
+ avatar: "DR",
72
+ status: "active" as const,
73
+ },
74
+ {
75
+ id: "2",
76
+ username: "vitalik.eth",
77
+ displayName: "Vitalik Buterin",
78
+ fid: "5650",
79
+ followers: "112.3k",
80
+ following: "234",
81
+ joined: "Oct 2022",
82
+ avatar: "VB",
83
+ status: "active" as const,
84
+ },
85
+ {
86
+ id: "3",
87
+ username: "jessepollak",
88
+ displayName: "Jesse Pollak",
89
+ fid: "420",
90
+ followers: "32.1k",
91
+ following: "567",
92
+ joined: "Sep 2021",
93
+ avatar: "JP",
94
+ status: "inactive" as const,
95
+ },
96
+ {
97
+ id: "4",
98
+ username: "linda",
99
+ displayName: "Linda Xie",
100
+ fid: "1214",
101
+ followers: "28.9k",
102
+ following: "432",
103
+ joined: "Nov 2021",
104
+ avatar: "LX",
105
+ status: "active" as const,
106
+ },
107
+ ];
108
+
109
+ const toggleRow = (id: string) => {
110
+ const newSelected = new Set(selectedRows);
111
+ if (newSelected.has(id)) {
112
+ newSelected.delete(id);
113
+ } else {
114
+ newSelected.add(id);
115
+ }
116
+ setSelectedRows(newSelected);
117
+ };
118
+
119
+ const toggleAll = () => {
120
+ if (selectedRows.size === users.length) {
121
+ setSelectedRows(new Set());
122
+ } else {
123
+ setSelectedRows(new Set(users.map((u) => u.id)));
124
+ }
125
+ };
126
+
127
+ return (
128
+ <div className="space-y-4">
129
+ <Table>
130
+ <TableCaption>
131
+ Farcaster user directory - {users.length} users shown
132
+ </TableCaption>
133
+ <TableHeader>
134
+ <TableRow>
135
+ <TableHead className="w-[50px]">
136
+ <Checkbox
137
+ checked={selectedRows.size === users.length}
138
+ onCheckedChange={toggleAll}
139
+ aria-label="Select all users"
140
+ />
141
+ </TableHead>
142
+ <TableHead>User</TableHead>
143
+ <TableHead>FID</TableHead>
144
+ <TableHead>Network</TableHead>
145
+ <TableHead>Joined</TableHead>
146
+ <TableHead>Status</TableHead>
147
+ <TableHead className="text-right">Actions</TableHead>
148
+ </TableRow>
149
+ </TableHeader>
150
+ <TableBody>
151
+ {users.map((user) => (
152
+ <TableRow
153
+ key={user.id}
154
+ data-state={selectedRows.has(user.id) ? "selected" : undefined}
155
+ >
156
+ <TableCell>
157
+ <Checkbox
158
+ checked={selectedRows.has(user.id)}
159
+ onCheckedChange={() => toggleRow(user.id)}
160
+ aria-label={`Select ${user.displayName}`}
161
+ />
162
+ </TableCell>
163
+ <TableCell>
164
+ <div className="flex items-center gap-3">
165
+ <Avatar className="h-8 w-8">
166
+ <AvatarFallback>{user.avatar}</AvatarFallback>
167
+ </Avatar>
168
+ <div>
169
+ <div className="font-medium">{user.displayName}</div>
170
+ <div className="text-sm text-muted-foreground">
171
+ @{user.username}
172
+ </div>
173
+ </div>
174
+ </div>
175
+ </TableCell>
176
+ <TableCell>{user.fid}</TableCell>
177
+ <TableCell>
178
+ <div className="text-sm">
179
+ <div>{user.followers} followers</div>
180
+ <div className="text-muted-foreground">
181
+ {user.following} following
182
+ </div>
183
+ </div>
184
+ </TableCell>
185
+ <TableCell>{user.joined}</TableCell>
186
+ <TableCell>
187
+ <Badge
188
+ variant={
189
+ user.status === "active" ? "default" : "secondary"
190
+ }
191
+ >
192
+ {user.status}
193
+ </Badge>
194
+ </TableCell>
195
+ <TableCell className="text-right">
196
+ <DropdownMenu>
197
+ <DropdownMenuTrigger asChild>
198
+ <Button variant="ghost" className="h-8 w-8 p-0">
199
+ <span className="sr-only">Open menu</span>
200
+ <MoreHorizontal className="h-4 w-4" />
201
+ </Button>
202
+ </DropdownMenuTrigger>
203
+ <DropdownMenuContent align="end">
204
+ <DropdownMenuLabel>Actions</DropdownMenuLabel>
205
+ <DropdownMenuItem>View profile</DropdownMenuItem>
206
+ <DropdownMenuItem>Send message</DropdownMenuItem>
207
+ <DropdownMenuSeparator />
208
+ <DropdownMenuItem>Block user</DropdownMenuItem>
209
+ <DropdownMenuItem>Report user</DropdownMenuItem>
210
+ </DropdownMenuContent>
211
+ </DropdownMenu>
212
+ </TableCell>
213
+ </TableRow>
214
+ ))}
215
+ </TableBody>
216
+ <TableFooter>
217
+ <TableRow>
218
+ <TableCell colSpan={5}>Total Active Users</TableCell>
219
+ <TableCell>
220
+ <Badge variant="default">
221
+ {users.filter((u) => u.status === "active").length}
222
+ </Badge>
223
+ </TableCell>
224
+ <TableCell className="text-right">
225
+ {selectedRows.size > 0 && (
226
+ <Button variant="outline" size="sm">
227
+ Bulk Actions ({selectedRows.size})
228
+ </Button>
229
+ )}
230
+ </TableCell>
231
+ </TableRow>
232
+ </TableFooter>
233
+ </Table>
234
+ </div>
235
+ );
236
+ },
237
+ parameters: {
238
+ docs: {
239
+ description: {
240
+ story:
241
+ "Interactive table with all features including selection checkboxes, dropdown actions, various cell types, and footer totals. Test selection, hover states, and accessibility features.",
242
+ },
243
+ },
244
+ },
245
+ };
246
+
247
+ /**
248
+ * Showcase of different table variants and configurations.
249
+ * Demonstrates basic tables, tables with captions, footers, and empty states.
250
+ */
251
+ export const Variants: Story = {
252
+ render: () => (
253
+ <div className="space-y-8">
254
+ {/* Basic Table */}
255
+ <div>
256
+ <h3 className="text-lg font-semibold mb-4">Basic Table</h3>
257
+ <Table>
258
+ <TableHeader>
259
+ <TableRow>
260
+ <TableHead>User</TableHead>
261
+ <TableHead>Channel</TableHead>
262
+ <TableHead className="text-right">Reactions</TableHead>
263
+ </TableRow>
264
+ </TableHeader>
265
+ <TableBody>
266
+ <TableRow>
267
+ <TableCell className="font-medium">@dwr.eth</TableCell>
268
+ <TableCell>/farcaster</TableCell>
269
+ <TableCell className="text-right">1,234</TableCell>
270
+ </TableRow>
271
+ <TableRow>
272
+ <TableCell className="font-medium">@vitalik.eth</TableCell>
273
+ <TableCell>/ethereum</TableCell>
274
+ <TableCell className="text-right">892</TableCell>
275
+ </TableRow>
276
+ </TableBody>
277
+ </Table>
278
+ </div>
279
+
280
+ {/* Table with Caption */}
281
+ <div>
282
+ <h3 className="text-lg font-semibold mb-4">Table with Caption</h3>
283
+ <Table>
284
+ <TableCaption>Recent casts from your network</TableCaption>
285
+ <TableHeader>
286
+ <TableRow>
287
+ <TableHead>Channel</TableHead>
288
+ <TableHead>Members</TableHead>
289
+ <TableHead>Growth</TableHead>
290
+ </TableRow>
291
+ </TableHeader>
292
+ <TableBody>
293
+ <TableRow>
294
+ <TableCell>/farcaster</TableCell>
295
+ <TableCell>5,234</TableCell>
296
+ <TableCell>
297
+ <Badge variant="default">+12%</Badge>
298
+ </TableCell>
299
+ </TableRow>
300
+ <TableRow>
301
+ <TableCell>/dev</TableCell>
302
+ <TableCell>3,821</TableCell>
303
+ <TableCell>
304
+ <Badge variant="default">+8%</Badge>
305
+ </TableCell>
306
+ </TableRow>
307
+ </TableBody>
308
+ </Table>
309
+ </div>
310
+
311
+ {/* Table with Footer */}
312
+ <div>
313
+ <h3 className="text-lg font-semibold mb-4">Table with Footer</h3>
314
+ <Table>
315
+ <TableHeader>
316
+ <TableRow>
317
+ <TableHead>Channel</TableHead>
318
+ <TableHead>Members</TableHead>
319
+ <TableHead>Active</TableHead>
320
+ </TableRow>
321
+ </TableHeader>
322
+ <TableBody>
323
+ <TableRow>
324
+ <TableCell>/farcaster</TableCell>
325
+ <TableCell>5,234</TableCell>
326
+ <TableCell>1,892</TableCell>
327
+ </TableRow>
328
+ <TableRow>
329
+ <TableCell>/dev</TableCell>
330
+ <TableCell>3,821</TableCell>
331
+ <TableCell>1,234</TableCell>
332
+ </TableRow>
333
+ </TableBody>
334
+ <TableFooter>
335
+ <TableRow>
336
+ <TableCell>Total</TableCell>
337
+ <TableCell>9,055</TableCell>
338
+ <TableCell>3,126</TableCell>
339
+ </TableRow>
340
+ </TableFooter>
341
+ </Table>
342
+ </div>
343
+
344
+ {/* Empty State */}
345
+ <div>
346
+ <h3 className="text-lg font-semibold mb-4">Empty State</h3>
347
+ <Table>
348
+ <TableCaption>No data available</TableCaption>
349
+ <TableHeader>
350
+ <TableRow>
351
+ <TableHead>Username</TableHead>
352
+ <TableHead>FID</TableHead>
353
+ <TableHead>Status</TableHead>
354
+ </TableRow>
355
+ </TableHeader>
356
+ <TableBody>
357
+ <TableRow>
358
+ <TableCell colSpan={3} className="h-24 text-center">
359
+ No users found.
360
+ </TableCell>
361
+ </TableRow>
362
+ </TableBody>
363
+ </Table>
364
+ </div>
365
+ </div>
366
+ ),
367
+ parameters: {
368
+ docs: {
369
+ description: {
370
+ story:
371
+ "Different table configurations showing basic tables, tables with captions for accessibility, tables with footer totals, and empty state handling.",
372
+ },
373
+ },
374
+ },
375
+ };
376
+
377
+ /**
378
+ * Real-world usage example in a dashboard context.
379
+ * Shows how tables integrate with other components in actual applications.
380
+ */
381
+ export const InContext: Story = {
382
+ render: () => (
383
+ <div className="space-y-6">
384
+ {/* Dashboard Header */}
385
+ <div className="flex items-center justify-between">
386
+ <div>
387
+ <h2 className="text-2xl font-bold tracking-tight">
388
+ Channel Analytics
389
+ </h2>
390
+ <p className="text-muted-foreground">
391
+ Performance metrics for your Farcaster channels
392
+ </p>
393
+ </div>
394
+ <div className="flex gap-2">
395
+ <Button variant="outline" size="sm">
396
+ Export Data
397
+ </Button>
398
+ <Button size="sm">Refresh</Button>
399
+ </div>
400
+ </div>
401
+
402
+ {/* Analytics Table */}
403
+ <Table>
404
+ <TableCaption>
405
+ Channel performance over the last 30 days. Data updated hourly.
406
+ </TableCaption>
407
+ <TableHeader>
408
+ <TableRow>
409
+ <TableHead>Channel</TableHead>
410
+ <TableHead>Members</TableHead>
411
+ <TableHead>Daily Active</TableHead>
412
+ <TableHead>Casts/Day</TableHead>
413
+ <TableHead>Engagement Rate</TableHead>
414
+ <TableHead>Growth</TableHead>
415
+ <TableHead className="text-right">Actions</TableHead>
416
+ </TableRow>
417
+ </TableHeader>
418
+ <TableBody>
419
+ <TableRow>
420
+ <TableCell className="font-medium">
421
+ <div className="flex items-center gap-2">
422
+ <div className="w-8 h-8 rounded-md bg-purple-500" />
423
+ /farcaster
424
+ </div>
425
+ </TableCell>
426
+ <TableCell>5,234</TableCell>
427
+ <TableCell>1,892</TableCell>
428
+ <TableCell>342</TableCell>
429
+ <TableCell>8.4%</TableCell>
430
+ <TableCell>
431
+ <Badge variant="default">+12%</Badge>
432
+ </TableCell>
433
+ <TableCell className="text-right">
434
+ <Button variant="ghost" size="sm">
435
+ View Details
436
+ </Button>
437
+ </TableCell>
438
+ </TableRow>
439
+ <TableRow>
440
+ <TableCell className="font-medium">
441
+ <div className="flex items-center gap-2">
442
+ <div className="w-8 h-8 rounded-md bg-blue-500" />
443
+ /dev
444
+ </div>
445
+ </TableCell>
446
+ <TableCell>3,821</TableCell>
447
+ <TableCell>1,234</TableCell>
448
+ <TableCell>256</TableCell>
449
+ <TableCell>7.2%</TableCell>
450
+ <TableCell>
451
+ <Badge variant="default">+8%</Badge>
452
+ </TableCell>
453
+ <TableCell className="text-right">
454
+ <Button variant="ghost" size="sm">
455
+ View Details
456
+ </Button>
457
+ </TableCell>
458
+ </TableRow>
459
+ <TableRow>
460
+ <TableCell className="font-medium">
461
+ <div className="flex items-center gap-2">
462
+ <div className="w-8 h-8 rounded-md bg-green-500" />
463
+ /founders
464
+ </div>
465
+ </TableCell>
466
+ <TableCell>2,145</TableCell>
467
+ <TableCell>892</TableCell>
468
+ <TableCell>178</TableCell>
469
+ <TableCell>9.1%</TableCell>
470
+ <TableCell>
471
+ <Badge variant="default">+15%</Badge>
472
+ </TableCell>
473
+ <TableCell className="text-right">
474
+ <Button variant="ghost" size="sm">
475
+ View Details
476
+ </Button>
477
+ </TableCell>
478
+ </TableRow>
479
+ <TableRow>
480
+ <TableCell className="font-medium">
481
+ <div className="flex items-center gap-2">
482
+ <div className="w-8 h-8 rounded-md bg-orange-500" />
483
+ /crypto
484
+ </div>
485
+ </TableCell>
486
+ <TableCell>4,567</TableCell>
487
+ <TableCell>2,103</TableCell>
488
+ <TableCell>412</TableCell>
489
+ <TableCell>6.8%</TableCell>
490
+ <TableCell>
491
+ <Badge variant="secondary">+2%</Badge>
492
+ </TableCell>
493
+ <TableCell className="text-right">
494
+ <Button variant="ghost" size="sm">
495
+ View Details
496
+ </Button>
497
+ </TableCell>
498
+ </TableRow>
499
+ </TableBody>
500
+ <TableFooter>
501
+ <TableRow>
502
+ <TableCell>Total</TableCell>
503
+ <TableCell>15,767</TableCell>
504
+ <TableCell>6,121</TableCell>
505
+ <TableCell>1,188</TableCell>
506
+ <TableCell>7.9%</TableCell>
507
+ <TableCell>
508
+ <Badge variant="default">+9.25%</Badge>
509
+ </TableCell>
510
+ <TableCell className="text-right">
511
+ <Button variant="outline" size="sm">
512
+ Export
513
+ </Button>
514
+ </TableCell>
515
+ </TableRow>
516
+ </TableFooter>
517
+ </Table>
518
+
519
+ {/* Table Footer Actions */}
520
+ <div className="flex items-center justify-between text-sm text-muted-foreground">
521
+ <p>Showing 4 of 12 channels</p>
522
+ <div className="flex gap-2">
523
+ <Button variant="outline" size="sm">
524
+ Previous
525
+ </Button>
526
+ <Button variant="outline" size="sm">
527
+ Next
528
+ </Button>
529
+ </div>
530
+ </div>
531
+ </div>
532
+ ),
533
+ parameters: {
534
+ docs: {
535
+ description: {
536
+ story:
537
+ "Real-world dashboard example showing how tables work in context with headers, actions, and pagination. Demonstrates integration with other UI components for complete data management interfaces.",
538
+ },
539
+ },
540
+ },
541
+ };