@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,444 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import React from "react";
3
+ import { Info, Copy, ExternalLink, Settings, HelpCircle } from "lucide-react";
4
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip";
5
+ import { Button } from "../button";
6
+ import { Badge } from "../badge";
7
+ import { Avatar, AvatarFallback } from "../avatar";
8
+ import {
9
+ Card,
10
+ CardContent,
11
+ CardDescription,
12
+ CardHeader,
13
+ CardTitle,
14
+ } from "../card";
15
+
16
+ const meta = {
17
+ title: "Overlays/Tooltip",
18
+ component: Tooltip,
19
+ parameters: {
20
+ layout: "centered",
21
+ docs: {
22
+ description: {
23
+ component:
24
+ "A versatile tooltip component built on Radix UI primitives. Provides contextual information when users hover or focus on an element. Perfect for help text, definitions, and additional context.",
25
+ },
26
+ },
27
+ },
28
+ tags: ["autodocs"],
29
+ argTypes: {
30
+ // Since Tooltip is a composition of sub-components, we'll document the key props here
31
+ delayDuration: {
32
+ control: { type: "number" },
33
+ description: "Time in milliseconds to wait before showing tooltip",
34
+ table: {
35
+ type: { summary: "number" },
36
+ defaultValue: { summary: "0" },
37
+ },
38
+ },
39
+ },
40
+ } satisfies Meta<typeof Tooltip>;
41
+
42
+ export default meta;
43
+ type Story = StoryObj<typeof meta>;
44
+
45
+ export const Interactive: Story = {
46
+ render: () => (
47
+ <div className="space-y-6">
48
+ <div className="text-center space-y-4">
49
+ <h3 className="text-lg font-medium">Interactive Tooltip Playground</h3>
50
+ <p className="text-sm text-muted-foreground">
51
+ Test different tooltip configurations and interactions
52
+ </p>
53
+ </div>
54
+
55
+ <div className="grid grid-cols-2 gap-6">
56
+ {/* Basic Text Tooltip */}
57
+ <div className="space-y-2">
58
+ <label className="text-sm font-medium">Basic Text</label>
59
+ <Tooltip>
60
+ <TooltipTrigger asChild>
61
+ <Button variant="outline">Hover me</Button>
62
+ </TooltipTrigger>
63
+ <TooltipContent>
64
+ <p>This is a basic tooltip with helpful text</p>
65
+ </TooltipContent>
66
+ </Tooltip>
67
+ </div>
68
+
69
+ {/* Icon Button */}
70
+ <div className="space-y-2">
71
+ <label className="text-sm font-medium">Icon Button</label>
72
+ <Tooltip>
73
+ <TooltipTrigger asChild>
74
+ <Button variant="ghost" size="icon">
75
+ <Info className="h-4 w-4" />
76
+ </Button>
77
+ </TooltipTrigger>
78
+ <TooltipContent>
79
+ <p>Information about this feature</p>
80
+ </TooltipContent>
81
+ </Tooltip>
82
+ </div>
83
+
84
+ {/* Disabled Element */}
85
+ <div className="space-y-2">
86
+ <label className="text-sm font-medium">Disabled Element</label>
87
+ <Tooltip>
88
+ <TooltipTrigger asChild>
89
+ <span>
90
+ <Button disabled>Disabled Action</Button>
91
+ </span>
92
+ </TooltipTrigger>
93
+ <TooltipContent>
94
+ <p>This action is disabled. Complete setup first.</p>
95
+ </TooltipContent>
96
+ </Tooltip>
97
+ </div>
98
+
99
+ {/* Rich Content */}
100
+ <div className="space-y-2">
101
+ <label className="text-sm font-medium">Rich Content</label>
102
+ <Tooltip>
103
+ <TooltipTrigger asChild>
104
+ <Badge variant="secondary" className="cursor-help">
105
+ API Key
106
+ </Badge>
107
+ </TooltipTrigger>
108
+ <TooltipContent className="max-w-[250px]">
109
+ <div className="space-y-1">
110
+ <p className="font-medium">API Authentication</p>
111
+ <p className="text-xs">
112
+ Your key is used to authenticate all requests to the Neynar
113
+ API
114
+ </p>
115
+ </div>
116
+ </TooltipContent>
117
+ </Tooltip>
118
+ </div>
119
+ </div>
120
+ </div>
121
+ ),
122
+ parameters: {
123
+ docs: {
124
+ description: {
125
+ story:
126
+ "Interactive playground for testing different tooltip configurations, content types, and trigger elements.",
127
+ },
128
+ },
129
+ },
130
+ };
131
+
132
+ export const Variants: Story = {
133
+ render: () => (
134
+ <div className="space-y-8">
135
+ <div className="text-center space-y-2">
136
+ <h3 className="text-lg font-medium">Tooltip Positions</h3>
137
+ <p className="text-sm text-muted-foreground">
138
+ Tooltips automatically position themselves and include collision
139
+ detection
140
+ </p>
141
+ </div>
142
+
143
+ {/* Positioning */}
144
+ <div className="grid grid-cols-3 gap-8 place-items-center min-h-[200px]">
145
+ <Tooltip>
146
+ <TooltipTrigger asChild>
147
+ <Button variant="outline">Top</Button>
148
+ </TooltipTrigger>
149
+ <TooltipContent side="top">
150
+ <p>Tooltip positioned on top</p>
151
+ </TooltipContent>
152
+ </Tooltip>
153
+
154
+ <div />
155
+
156
+ <Tooltip>
157
+ <TooltipTrigger asChild>
158
+ <Button variant="outline">Right</Button>
159
+ </TooltipTrigger>
160
+ <TooltipContent side="right">
161
+ <p>Tooltip positioned on right</p>
162
+ </TooltipContent>
163
+ </Tooltip>
164
+
165
+ <Tooltip>
166
+ <TooltipTrigger asChild>
167
+ <Button variant="outline">Left</Button>
168
+ </TooltipTrigger>
169
+ <TooltipContent side="left">
170
+ <p>Tooltip positioned on left</p>
171
+ </TooltipContent>
172
+ </Tooltip>
173
+
174
+ <div />
175
+
176
+ <Tooltip>
177
+ <TooltipTrigger asChild>
178
+ <Button variant="outline">Bottom</Button>
179
+ </TooltipTrigger>
180
+ <TooltipContent side="bottom">
181
+ <p>Tooltip positioned on bottom</p>
182
+ </TooltipContent>
183
+ </Tooltip>
184
+ </div>
185
+
186
+ {/* Content Variations */}
187
+ <div className="space-y-4">
188
+ <h4 className="text-md font-medium">Content Variations</h4>
189
+ <div className="flex flex-wrap gap-4">
190
+ {/* Simple text */}
191
+ <Tooltip>
192
+ <TooltipTrigger asChild>
193
+ <Button variant="ghost" size="sm">
194
+ Simple
195
+ </Button>
196
+ </TooltipTrigger>
197
+ <TooltipContent>
198
+ <p>Simple text tooltip</p>
199
+ </TooltipContent>
200
+ </Tooltip>
201
+
202
+ {/* Long content */}
203
+ <Tooltip>
204
+ <TooltipTrigger asChild>
205
+ <Button variant="ghost" size="sm">
206
+ Long Content
207
+ </Button>
208
+ </TooltipTrigger>
209
+ <TooltipContent className="max-w-[300px]">
210
+ <div className="space-y-2">
211
+ <p className="font-medium">Security Best Practices</p>
212
+ <ul className="text-xs space-y-1">
213
+ <li>• Never share your private keys</li>
214
+ <li>• Use hardware wallets for signers</li>
215
+ <li>• Enable 2FA on your account</li>
216
+ </ul>
217
+ </div>
218
+ </TooltipContent>
219
+ </Tooltip>
220
+
221
+ {/* With custom offset */}
222
+ <Tooltip>
223
+ <TooltipTrigger asChild>
224
+ <Button variant="ghost" size="sm">
225
+ Custom Offset
226
+ </Button>
227
+ </TooltipTrigger>
228
+ <TooltipContent side="top" sideOffset={15}>
229
+ <p>Tooltip with increased spacing</p>
230
+ </TooltipContent>
231
+ </Tooltip>
232
+ </div>
233
+ </div>
234
+ </div>
235
+ ),
236
+ parameters: {
237
+ docs: {
238
+ description: {
239
+ story:
240
+ "Comprehensive showcase of all tooltip variants including positioning, content types, and styling options.",
241
+ },
242
+ },
243
+ },
244
+ };
245
+
246
+ export const InContext: Story = {
247
+ render: () => (
248
+ <div className="w-[600px] space-y-6">
249
+ <div className="text-center space-y-2">
250
+ <h3 className="text-lg font-medium">Real-world Usage Example</h3>
251
+ <p className="text-sm text-muted-foreground">
252
+ Tooltips in a typical Farcaster application dashboard
253
+ </p>
254
+ </div>
255
+
256
+ {/* Cast Analytics Card */}
257
+ <Card>
258
+ <CardHeader>
259
+ <CardTitle>Cast Analytics Dashboard</CardTitle>
260
+ <CardDescription>
261
+ Performance metrics for your recent cast activity
262
+ </CardDescription>
263
+ </CardHeader>
264
+ <CardContent>
265
+ <div className="space-y-6">
266
+ {/* Metrics Row */}
267
+ <div className="grid grid-cols-3 gap-4">
268
+ <div className="flex items-center justify-between">
269
+ <div className="flex items-center gap-2">
270
+ <span className="text-sm font-medium">Impressions</span>
271
+ <Tooltip>
272
+ <TooltipTrigger asChild>
273
+ <Info className="h-3 w-3 text-muted-foreground cursor-help" />
274
+ </TooltipTrigger>
275
+ <TooltipContent>
276
+ <p>Number of times your cast was viewed</p>
277
+ </TooltipContent>
278
+ </Tooltip>
279
+ </div>
280
+ <span className="text-lg font-bold">12.5k</span>
281
+ </div>
282
+
283
+ <div className="flex items-center justify-between">
284
+ <div className="flex items-center gap-2">
285
+ <span className="text-sm font-medium">Engagement</span>
286
+ <Tooltip>
287
+ <TooltipTrigger asChild>
288
+ <Info className="h-3 w-3 text-muted-foreground cursor-help" />
289
+ </TooltipTrigger>
290
+ <TooltipContent>
291
+ <p>
292
+ Percentage of viewers who interacted (like, recast,
293
+ reply)
294
+ </p>
295
+ </TooltipContent>
296
+ </Tooltip>
297
+ </div>
298
+ <span className="text-lg font-bold">8.4%</span>
299
+ </div>
300
+
301
+ <div className="flex items-center justify-between">
302
+ <div className="flex items-center gap-2">
303
+ <span className="text-sm font-medium">Quality Score</span>
304
+ <Tooltip>
305
+ <TooltipTrigger asChild>
306
+ <Info className="h-3 w-3 text-muted-foreground cursor-help" />
307
+ </TooltipTrigger>
308
+ <TooltipContent className="max-w-[250px]">
309
+ <p>
310
+ Based on engagement, reply quality, and community
311
+ feedback. Higher scores increase visibility in feeds.
312
+ </p>
313
+ </TooltipContent>
314
+ </Tooltip>
315
+ </div>
316
+ <Badge variant="default">High</Badge>
317
+ </div>
318
+ </div>
319
+
320
+ {/* User Profile Section */}
321
+ <div className="border-t pt-4">
322
+ <div className="flex items-center justify-between">
323
+ <div className="flex items-center gap-3">
324
+ <Tooltip>
325
+ <TooltipTrigger asChild>
326
+ <div className="flex items-center gap-2 cursor-pointer">
327
+ <Avatar>
328
+ <AvatarFallback>DW</AvatarFallback>
329
+ </Avatar>
330
+ <span className="font-medium">dwr.eth</span>
331
+ </div>
332
+ </TooltipTrigger>
333
+ <TooltipContent>
334
+ <div className="space-y-1">
335
+ <p className="font-semibold">Dan Romero</p>
336
+ <p className="text-xs">FID: 3 • 45.2k followers</p>
337
+ <p className="text-xs">Co-founder of Farcaster</p>
338
+ </div>
339
+ </TooltipContent>
340
+ </Tooltip>
341
+
342
+ <Tooltip>
343
+ <TooltipTrigger asChild>
344
+ <Badge variant="secondary" className="cursor-help">
345
+ Verified
346
+ </Badge>
347
+ </TooltipTrigger>
348
+ <TooltipContent>
349
+ <p>This account is verified on Farcaster</p>
350
+ </TooltipContent>
351
+ </Tooltip>
352
+ </div>
353
+
354
+ {/* Action buttons */}
355
+ <div className="flex gap-1">
356
+ <Tooltip>
357
+ <TooltipTrigger asChild>
358
+ <Button variant="ghost" size="icon">
359
+ <Copy className="h-4 w-4" />
360
+ </Button>
361
+ </TooltipTrigger>
362
+ <TooltipContent>
363
+ <p>Copy profile link</p>
364
+ </TooltipContent>
365
+ </Tooltip>
366
+
367
+ <Tooltip>
368
+ <TooltipTrigger asChild>
369
+ <Button variant="ghost" size="icon">
370
+ <ExternalLink className="h-4 w-4" />
371
+ </Button>
372
+ </TooltipTrigger>
373
+ <TooltipContent>
374
+ <p>Open in Warpcast</p>
375
+ </TooltipContent>
376
+ </Tooltip>
377
+
378
+ <Tooltip>
379
+ <TooltipTrigger asChild>
380
+ <Button variant="ghost" size="icon">
381
+ <Settings className="h-4 w-4" />
382
+ </Button>
383
+ </TooltipTrigger>
384
+ <TooltipContent>
385
+ <p>Profile settings</p>
386
+ </TooltipContent>
387
+ </Tooltip>
388
+ </div>
389
+ </div>
390
+ </div>
391
+
392
+ {/* API Configuration Section */}
393
+ <div className="border-t pt-4 space-y-3">
394
+ <div className="flex items-center gap-2">
395
+ <label className="text-sm font-medium">API Configuration</label>
396
+ <Tooltip>
397
+ <TooltipTrigger asChild>
398
+ <HelpCircle className="h-3 w-3 text-muted-foreground cursor-help" />
399
+ </TooltipTrigger>
400
+ <TooltipContent className="max-w-[300px]">
401
+ <div className="space-y-2">
402
+ <p className="font-medium">API Key Security</p>
403
+ <p className="text-xs">
404
+ Your Neynar API key is used to authenticate requests.
405
+ Keep it secret and never expose it in client-side code.
406
+ </p>
407
+ </div>
408
+ </TooltipContent>
409
+ </Tooltip>
410
+ </div>
411
+
412
+ <div className="flex gap-2">
413
+ <input
414
+ type="password"
415
+ value="neynar_XXXX...XXXX"
416
+ readOnly
417
+ className="flex-1 rounded-md border px-3 py-2 text-sm bg-muted"
418
+ />
419
+ <Tooltip>
420
+ <TooltipTrigger asChild>
421
+ <Button size="sm" variant="outline">
422
+ <Copy className="h-4 w-4" />
423
+ </Button>
424
+ </TooltipTrigger>
425
+ <TooltipContent>
426
+ <p>Copy API key to clipboard</p>
427
+ </TooltipContent>
428
+ </Tooltip>
429
+ </div>
430
+ </div>
431
+ </div>
432
+ </CardContent>
433
+ </Card>
434
+ </div>
435
+ ),
436
+ parameters: {
437
+ docs: {
438
+ description: {
439
+ story:
440
+ "Real-world example showing tooltips integrated into a typical Farcaster application dashboard with user profiles, metrics, and API configuration.",
441
+ },
442
+ },
443
+ },
444
+ };