@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,349 @@
1
+ import * as React from "react";
2
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
3
+ /**
4
+ * A versatile dropdown menu component built on Radix UI primitives
5
+ *
6
+ * Dropdown menus display a list of actions or options that a user can choose from.
7
+ * They're typically triggered by a button and appear as a floating panel with full
8
+ * keyboard navigation support, submenus, and various interactive item types.
9
+ *
10
+ * Based on the shadcn/ui dropdown-menu component with additional enhancements for
11
+ * better integration with design systems and improved accessibility.
12
+ *
13
+ * @component
14
+ * @example
15
+ * ```tsx
16
+ * // Basic dropdown menu
17
+ * <DropdownMenu>
18
+ * <DropdownMenuTrigger asChild>
19
+ * <Button variant="outline">Options</Button>
20
+ * </DropdownMenuTrigger>
21
+ * <DropdownMenuContent>
22
+ * <DropdownMenuItem>Profile</DropdownMenuItem>
23
+ * <DropdownMenuItem>Settings</DropdownMenuItem>
24
+ * <DropdownMenuSeparator />
25
+ * <DropdownMenuItem>Logout</DropdownMenuItem>
26
+ * </DropdownMenuContent>
27
+ * </DropdownMenu>
28
+ * ```
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * // Context menu with alignment and destructive actions
33
+ * <DropdownMenu>
34
+ * <DropdownMenuTrigger asChild>
35
+ * <Button variant="ghost" size="icon">
36
+ * <MoreHorizontal />
37
+ * </Button>
38
+ * </DropdownMenuTrigger>
39
+ * <DropdownMenuContent align="end">
40
+ * <DropdownMenuItem>Edit</DropdownMenuItem>
41
+ * <DropdownMenuItem>Duplicate</DropdownMenuItem>
42
+ * <DropdownMenuSeparator />
43
+ * <DropdownMenuItem variant="destructive">Delete</DropdownMenuItem>
44
+ * </DropdownMenuContent>
45
+ * </DropdownMenu>
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // Complex menu with checkboxes, radio groups, and submenus
51
+ * <DropdownMenu>
52
+ * <DropdownMenuTrigger asChild>
53
+ * <Button>Advanced Menu</Button>
54
+ * </DropdownMenuTrigger>
55
+ * <DropdownMenuContent className="w-56">
56
+ * <DropdownMenuLabel>View Options</DropdownMenuLabel>
57
+ * <DropdownMenuSeparator />
58
+ * <DropdownMenuCheckboxItem checked={showPanel} onCheckedChange={setShowPanel}>
59
+ * Show Panel
60
+ * </DropdownMenuCheckboxItem>
61
+ * <DropdownMenuSeparator />
62
+ * <DropdownMenuRadioGroup value={position} onValueChange={setPosition}>
63
+ * <DropdownMenuRadioItem value="top">Top</DropdownMenuRadioItem>
64
+ * <DropdownMenuRadioItem value="bottom">Bottom</DropdownMenuRadioItem>
65
+ * </DropdownMenuRadioGroup>
66
+ * <DropdownMenuSeparator />
67
+ * <DropdownMenuSub>
68
+ * <DropdownMenuSubTrigger>Share</DropdownMenuSubTrigger>
69
+ * <DropdownMenuSubContent>
70
+ * <DropdownMenuItem>Email</DropdownMenuItem>
71
+ * <DropdownMenuItem>Copy Link</DropdownMenuItem>
72
+ * </DropdownMenuSubContent>
73
+ * </DropdownMenuSub>
74
+ * </DropdownMenuContent>
75
+ * </DropdownMenu>
76
+ * ```
77
+ *
78
+ * @accessibility
79
+ * - Full keyboard navigation with arrow keys (Up/Down for navigation)
80
+ * - Enter/Space to activate items
81
+ * - Escape key closes the menu and restores focus
82
+ * - Home/End keys navigate to first/last item
83
+ * - Type-ahead search to jump to items by first letter
84
+ * - Left/Right arrow keys for submenu navigation
85
+ * - Proper ARIA roles (menu, menuitem, menuitemcheckbox, menuitemradio)
86
+ * - Focus management with focus trapping and restoration
87
+ * - Screen reader announcements for state changes
88
+ *
89
+ * @see {@link ContextMenu} - For right-click context menus
90
+ * @see {@link Popover} - For rich content overlays
91
+ * @see {@link Select} - For single selection dropdowns
92
+ * @see {@link https://ui.shadcn.com/docs/components/dropdown-menu} - shadcn/ui documentation
93
+ * @since 1.0.0
94
+ */
95
+ declare function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
96
+ /**
97
+ * Portal component for rendering menu content in a different DOM location
98
+ *
99
+ * Renders dropdown content outside of the normal DOM hierarchy to avoid
100
+ * z-index and overflow issues. Automatically used by DropdownMenuContent
101
+ * but can be used explicitly for submenus.
102
+ *
103
+ * @component
104
+ * @param container - Optional container element for portal rendering
105
+ * @since 1.0.0
106
+ */
107
+ declare function DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
108
+ /**
109
+ * DropdownMenuTrigger - The element that triggers the dropdown menu
110
+ *
111
+ * @component
112
+ * @example
113
+ * ```tsx
114
+ * <DropdownMenuTrigger asChild>
115
+ * <Button>Menu</Button>
116
+ * </DropdownMenuTrigger>
117
+ * ```
118
+ * @since 1.0.0
119
+ */
120
+ declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
121
+ /**
122
+ * DropdownMenuContent - The content container for dropdown menu items
123
+ *
124
+ * @component
125
+ * @example
126
+ * ```tsx
127
+ * <DropdownMenuContent align="end" sideOffset={5}>
128
+ * <DropdownMenuItem>Item 1</DropdownMenuItem>
129
+ * </DropdownMenuContent>
130
+ * ```
131
+ * @since 1.0.0
132
+ */
133
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
134
+ /**
135
+ * Groups related dropdown menu items together
136
+ *
137
+ * Used to create logical groupings of menu items, typically separated by
138
+ * DropdownMenuSeparator components. Helps with semantic organization and
139
+ * keyboard navigation.
140
+ *
141
+ * @component
142
+ * @example
143
+ * ```tsx
144
+ * <DropdownMenuGroup>
145
+ * <DropdownMenuItem>Profile</DropdownMenuItem>
146
+ * <DropdownMenuItem>Settings</DropdownMenuItem>
147
+ * </DropdownMenuGroup>
148
+ * ```
149
+ * @since 1.0.0
150
+ */
151
+ declare function DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>): import("react/jsx-runtime").JSX.Element;
152
+ /**
153
+ * DropdownMenuItem - A single item in the dropdown menu
154
+ *
155
+ * @component
156
+ * @example
157
+ * ```tsx
158
+ * <DropdownMenuItem onClick={handleClick}>
159
+ * Edit
160
+ * </DropdownMenuItem>
161
+ * <DropdownMenuItem variant="destructive">
162
+ * Delete
163
+ * </DropdownMenuItem>
164
+ * ```
165
+ * @since 1.0.0
166
+ */
167
+ declare function DropdownMenuItem({ className, inset, variant, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
168
+ inset?: boolean;
169
+ variant?: "default" | "destructive";
170
+ }): import("react/jsx-runtime").JSX.Element;
171
+ /**
172
+ * A checkable menu item with visual state indication
173
+ *
174
+ * Displays a checkbox that can be toggled on/off. The checked state is
175
+ * visually indicated with a checkmark icon. Useful for menu options that
176
+ * represent toggleable settings or features.
177
+ *
178
+ * @component
179
+ * @param checked - Whether the checkbox is checked
180
+ * @param onCheckedChange - Callback when the checked state changes
181
+ * @param disabled - Whether the item is disabled
182
+ *
183
+ * @example
184
+ * ```tsx
185
+ * const [showSidebar, setShowSidebar] = useState(true);
186
+ *
187
+ * <DropdownMenuCheckboxItem
188
+ * checked={showSidebar}
189
+ * onCheckedChange={setShowSidebar}
190
+ * >
191
+ * Show Sidebar
192
+ * </DropdownMenuCheckboxItem>
193
+ * ```
194
+ * @since 1.0.0
195
+ */
196
+ declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): import("react/jsx-runtime").JSX.Element;
197
+ /**
198
+ * Groups radio items for single selection
199
+ *
200
+ * Creates a group where only one radio item can be selected at a time.
201
+ * Use with DropdownMenuRadioItem components to create single-choice options.
202
+ *
203
+ * @component
204
+ * @param value - Currently selected value
205
+ * @param onValueChange - Callback when selection changes
206
+ *
207
+ * @example
208
+ * ```tsx
209
+ * const [theme, setTheme] = useState("light");
210
+ *
211
+ * <DropdownMenuRadioGroup value={theme} onValueChange={setTheme}>
212
+ * <DropdownMenuRadioItem value="light">Light</DropdownMenuRadioItem>
213
+ * <DropdownMenuRadioItem value="dark">Dark</DropdownMenuRadioItem>
214
+ * <DropdownMenuRadioItem value="system">System</DropdownMenuRadioItem>
215
+ * </DropdownMenuRadioGroup>
216
+ * ```
217
+ * @since 1.0.0
218
+ */
219
+ declare function DropdownMenuRadioGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): import("react/jsx-runtime").JSX.Element;
220
+ /**
221
+ * A radio button menu item for single selection within a group
222
+ *
223
+ * Must be used within a DropdownMenuRadioGroup. Shows a filled circle
224
+ * indicator when selected. Only one radio item can be selected per group.
225
+ *
226
+ * @component
227
+ * @param value - The value this radio item represents
228
+ * @param disabled - Whether the item is disabled
229
+ *
230
+ * @example
231
+ * ```tsx
232
+ * <DropdownMenuRadioGroup value={selectedTheme} onValueChange={setSelectedTheme}>
233
+ * <DropdownMenuRadioItem value="light">
234
+ * Light Theme
235
+ * </DropdownMenuRadioItem>
236
+ * <DropdownMenuRadioItem value="dark">
237
+ * Dark Theme
238
+ * </DropdownMenuRadioItem>
239
+ * </DropdownMenuRadioGroup>
240
+ * ```
241
+ * @since 1.0.0
242
+ */
243
+ declare function DropdownMenuRadioItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): import("react/jsx-runtime").JSX.Element;
244
+ /**
245
+ * DropdownMenuLabel - A label for grouping menu items
246
+ *
247
+ * @component
248
+ * @example
249
+ * ```tsx
250
+ * <DropdownMenuLabel>Actions</DropdownMenuLabel>
251
+ * ```
252
+ * @since 1.0.0
253
+ */
254
+ declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
255
+ inset?: boolean;
256
+ }): import("react/jsx-runtime").JSX.Element;
257
+ /**
258
+ * DropdownMenuSeparator - A visual separator between menu items
259
+ *
260
+ * @component
261
+ * @since 1.0.0
262
+ */
263
+ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): import("react/jsx-runtime").JSX.Element;
264
+ /**
265
+ * Displays keyboard shortcut hints in menu items
266
+ *
267
+ * Shows keyboard shortcut text aligned to the right side of menu items.
268
+ * Purely visual - does not implement the actual keyboard functionality.
269
+ * Use standard keyboard shortcut notation (⌘, ⌃, ⌥, ⇧).
270
+ *
271
+ * @component
272
+ * @example
273
+ * ```tsx
274
+ * <DropdownMenuItem>
275
+ * Save Document
276
+ * <DropdownMenuShortcut>⌘S</DropdownMenuShortcut>
277
+ * </DropdownMenuItem>
278
+ * ```
279
+ * @since 1.0.0
280
+ */
281
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
282
+ /**
283
+ * Container for creating nested submenus
284
+ *
285
+ * Wraps a submenu trigger and content to create hierarchical menu structures.
286
+ * Use with DropdownMenuSubTrigger and DropdownMenuSubContent.
287
+ *
288
+ * @component
289
+ * @example
290
+ * ```tsx
291
+ * <DropdownMenuSub>
292
+ * <DropdownMenuSubTrigger>Share</DropdownMenuSubTrigger>
293
+ * <DropdownMenuSubContent>
294
+ * <DropdownMenuItem>Email</DropdownMenuItem>
295
+ * <DropdownMenuItem>Copy Link</DropdownMenuItem>
296
+ * </DropdownMenuSubContent>
297
+ * </DropdownMenuSub>
298
+ * ```
299
+ * @since 1.0.0
300
+ */
301
+ declare function DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>): import("react/jsx-runtime").JSX.Element;
302
+ /**
303
+ * Trigger element for opening a submenu
304
+ *
305
+ * Displays an arrow indicator and opens the associated submenu on hover or click.
306
+ * Must be used within a DropdownMenuSub component.
307
+ *
308
+ * @component
309
+ * @param inset - Whether to add left padding to align with items that have icons
310
+ *
311
+ * @example
312
+ * ```tsx
313
+ * <DropdownMenuSub>
314
+ * <DropdownMenuSubTrigger>
315
+ * <Share className="mr-2 h-4 w-4" />
316
+ * Share Options
317
+ * </DropdownMenuSubTrigger>
318
+ * <DropdownMenuSubContent>
319
+ * <DropdownMenuItem>Email</DropdownMenuItem>
320
+ * <DropdownMenuItem>Copy Link</DropdownMenuItem>
321
+ * </DropdownMenuSubContent>
322
+ * </DropdownMenuSub>
323
+ * ```
324
+ * @since 1.0.0
325
+ */
326
+ declare function DropdownMenuSubTrigger({ className, inset, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
327
+ inset?: boolean;
328
+ }): import("react/jsx-runtime").JSX.Element;
329
+ /**
330
+ * Content container for submenu items
331
+ *
332
+ * Contains the items displayed when a submenu is opened. Positioned relative
333
+ * to the trigger and supports the same item types as the main menu.
334
+ *
335
+ * @component
336
+ * @example
337
+ * ```tsx
338
+ * <DropdownMenuSubContent>
339
+ * <DropdownMenuItem>Submenu Item 1</DropdownMenuItem>
340
+ * <DropdownMenuItem>Submenu Item 2</DropdownMenuItem>
341
+ * <DropdownMenuSeparator />
342
+ * <DropdownMenuItem>Submenu Item 3</DropdownMenuItem>
343
+ * </DropdownMenuSubContent>
344
+ * ```
345
+ * @since 1.0.0
346
+ */
347
+ declare function DropdownMenuSubContent({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>): import("react/jsx-runtime").JSX.Element;
348
+ export { DropdownMenu, DropdownMenuPortal, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, };
349
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dropdown-menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import * as React from "react";
2
+ /**
3
+ * Props for the EmptyState component
4
+ *
5
+ * Extends standard HTML div attributes to support all native div functionality
6
+ * while providing specific props for empty state content and behavior.
7
+ *
8
+ * @type EmptyStateProps
9
+ * @extends {React.HTMLAttributes<HTMLDivElement>}
10
+ */
11
+ export type EmptyStateProps = React.HTMLAttributes<HTMLDivElement> & {
12
+ /** Main title text displayed prominently in the empty state */
13
+ title: string;
14
+ /** Optional descriptive text providing additional context or guidance */
15
+ description?: string;
16
+ /** Optional icon, illustration, or React element displayed above the title */
17
+ icon?: React.ReactNode;
18
+ /** Optional action button configuration for primary user action */
19
+ action?: {
20
+ /** Text label for the action button */
21
+ label: string;
22
+ /** Click handler function executed when the action button is pressed */
23
+ onClick: () => void;
24
+ };
25
+ };
26
+ /**
27
+ * EmptyState component for displaying empty or no-data states
28
+ *
29
+ * A versatile component that provides a consistent way to show empty states when there's
30
+ * no content to display. Commonly used in lists, tables, search results, dashboards,
31
+ * or any area where data might be absent. Follows standard empty state UX patterns
32
+ * with support for icons, descriptions, and call-to-action buttons to guide users.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * // Basic empty state with title and description
37
+ * <EmptyState
38
+ * title="No results found"
39
+ * description="Try adjusting your search or filters to find what you're looking for"
40
+ * />
41
+ * ```
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * // Empty state with icon and action button
46
+ * import { Search } from 'lucide-react';
47
+ *
48
+ * <EmptyState
49
+ * icon={<Search className="w-12 h-12" />}
50
+ * title="No search results"
51
+ * description="We couldn't find anything matching your search criteria"
52
+ * action={{
53
+ * label: "Clear search",
54
+ * onClick: () => handleClearSearch()
55
+ * }}
56
+ * />
57
+ * ```
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * // Inbox empty state with contextual messaging
62
+ * import { Inbox } from 'lucide-react';
63
+ *
64
+ * <EmptyState
65
+ * icon={<Inbox className="w-16 h-16" />}
66
+ * title="Your inbox is empty"
67
+ * description="When you receive new messages, they'll appear here"
68
+ * action={{
69
+ * label: "Compose message",
70
+ * onClick: () => openComposer()
71
+ * }}
72
+ * />
73
+ * ```
74
+ *
75
+ * @example
76
+ * ```tsx
77
+ * // Custom styled empty state for data visualization
78
+ * import { Database } from 'lucide-react';
79
+ *
80
+ * <EmptyState
81
+ * className="min-h-[400px] bg-muted/30 rounded-lg"
82
+ * icon={<Database className="w-14 h-14 opacity-50" />}
83
+ * title="No data available"
84
+ * description="Import data or connect a data source to get started"
85
+ * action={{
86
+ * label: "Import data",
87
+ * onClick: () => showImportDialog()
88
+ * }}
89
+ * />
90
+ * ```
91
+ *
92
+ * @param props - Component props extending HTMLDivElement attributes
93
+ * @param props.title - Main title text displayed prominently (required)
94
+ * @param props.description - Optional descriptive text providing context
95
+ * @param props.icon - Optional icon or React element displayed above title
96
+ * @param props.action - Optional action button configuration
97
+ * @param props.className - Additional CSS classes for styling
98
+ * @param ref - Forwarded ref to the container div element
99
+ *
100
+ * @remarks
101
+ * **Accessibility Features:**
102
+ * - Uses semantic HTML structure with proper heading hierarchy
103
+ * - Title rendered as h3 element for screen reader navigation
104
+ * - Action button follows Button component accessibility patterns
105
+ * - Supports keyboard navigation and focus management
106
+ * - Screen reader friendly text content structure
107
+ *
108
+ * **Design Guidelines:**
109
+ * - Icon should be 48-64px (w-12 h-12 to w-16 h-16) for optimal visual balance
110
+ * - Keep titles concise and action-oriented
111
+ * - Use descriptions to provide helpful context or next steps
112
+ * - Action buttons should have clear, specific labels
113
+ *
114
+ * @see {@link Button} for action button styling and behavior
115
+ * @since 1.0.0
116
+ */
117
+ declare const EmptyState: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
118
+ /** Main title text displayed prominently in the empty state */
119
+ title: string;
120
+ /** Optional descriptive text providing additional context or guidance */
121
+ description?: string;
122
+ /** Optional icon, illustration, or React element displayed above the title */
123
+ icon?: React.ReactNode;
124
+ /** Optional action button configuration for primary user action */
125
+ action?: {
126
+ /** Text label for the action button */
127
+ label: string;
128
+ /** Click handler function executed when the action button is pressed */
129
+ onClick: () => void;
130
+ };
131
+ } & React.RefAttributes<HTMLDivElement>>;
132
+ export { EmptyState };
133
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../src/components/ui/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACnE,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,mEAAmE;IACnE,MAAM,CAAC,EAAE;QACP,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,wEAAwE;QACxE,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB,CAAC;CACH,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AACH,QAAA,MAAM,UAAU;IA1Gd,+DAA+D;WACxD,MAAM;IACb,yEAAyE;kBAC3D,MAAM;IACpB,8EAA8E;WACvE,KAAK,CAAC,SAAS;IACtB,mEAAmE;aAC1D;QACP,uCAAuC;QACvC,KAAK,EAAE,MAAM,CAAC;QACd,wEAAwE;QACxE,OAAO,EAAE,MAAM,IAAI,CAAC;KACrB;wCAkHF,CAAC;AAIF,OAAO,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,109 @@
1
+ import * as React from "react";
2
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
3
+ /**
4
+ * HoverCard component for previewing content available behind a link
5
+ *
6
+ * For sighted users to preview content available behind a link. Displays rich content
7
+ * when users hover over a trigger element. Ideal for showing previews, user profiles,
8
+ * repository information, or contextual details without requiring navigation.
9
+ *
10
+ * Built on Radix UI Hover Card primitive with custom styling and animations.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * // Basic user profile hover card
15
+ * <HoverCard>
16
+ * <HoverCardTrigger asChild>
17
+ * <Button variant="link">@nextjs</Button>
18
+ * </HoverCardTrigger>
19
+ * <HoverCardContent className="w-80">
20
+ * <div className="flex justify-between gap-4">
21
+ * <Avatar>
22
+ * <AvatarImage src="https://github.com/vercel.png" />
23
+ * <AvatarFallback>VC</AvatarFallback>
24
+ * </Avatar>
25
+ * <div className="space-y-1">
26
+ * <h4 className="text-sm font-semibold">@nextjs</h4>
27
+ * <p className="text-sm">
28
+ * The React Framework – created and maintained by @vercel.
29
+ * </p>
30
+ * <div className="text-muted-foreground text-xs">
31
+ * Joined December 2021
32
+ * </div>
33
+ * </div>
34
+ * </div>
35
+ * </HoverCardContent>
36
+ * </HoverCard>
37
+ * ```
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * // With custom positioning and delays
42
+ * <HoverCard openDelay={500} closeDelay={200}>
43
+ * <HoverCardTrigger asChild>
44
+ * <Button>Hover me</Button>
45
+ * </HoverCardTrigger>
46
+ * <HoverCardContent side="top" align="start">
47
+ * Content appears above with custom alignment
48
+ * </HoverCardContent>
49
+ * </HoverCard>
50
+ * ```
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * // Interactive content
55
+ * <HoverCard>
56
+ * <HoverCardTrigger asChild>
57
+ * <Button>Settings</Button>
58
+ * </HoverCardTrigger>
59
+ * <HoverCardContent>
60
+ * <div className="space-y-2">
61
+ * <h4 className="font-semibold">Quick Actions</h4>
62
+ * <Button size="sm">Manage Team</Button>
63
+ * <Button size="sm">View Reports</Button>
64
+ * </div>
65
+ * </HoverCardContent>
66
+ * </HoverCard>
67
+ * ```
68
+ *
69
+ * @accessibility
70
+ * **Important**: Hover cards are intended for sighted users only. The content will be
71
+ * inaccessible to keyboard users. Consider providing alternative access methods.
72
+ *
73
+ * - Opens on hover with configurable `openDelay`
74
+ * - Stays open when hovering over content
75
+ * - Closes with configurable `closeDelay`
76
+ * - Auto-positions to avoid viewport overflow
77
+ * - Supports focus-based interactions for some accessibility
78
+ *
79
+ * @see {@link https://ui.shadcn.com/docs/components/hover-card} shadcn/ui documentation
80
+ * @since 1.0.0
81
+ * @see {@link https://www.radix-ui.com/primitives/docs/components/hover-card} Radix UI Hover Card
82
+ */
83
+ /**
84
+ * Root container for the hover card component
85
+ *
86
+ * @param openDelay - Delay in milliseconds before the hover card opens (default: 700)
87
+ * @param closeDelay - Delay in milliseconds before the hover card closes (default: 300)
88
+ * @param open - Controlled open state
89
+ * @param onOpenChange - Callback when open state changes
90
+ */
91
+ declare function HoverCard({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
92
+ /**
93
+ * Trigger element that opens the hover card on hover
94
+ *
95
+ * @param asChild - When true, merges props with immediate child element
96
+ */
97
+ declare function HoverCardTrigger({ ...props }: React.ComponentProps<typeof HoverCardPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
98
+ /**
99
+ * Content container with built-in styling and animations
100
+ *
101
+ * @param side - Side of the trigger to position content ("top" | "right" | "bottom" | "left")
102
+ * @param align - Alignment relative to trigger ("start" | "center" | "end")
103
+ * @param sideOffset - Distance in pixels from the trigger (default: 4)
104
+ * @param alignOffset - Offset in pixels from the alignment axis
105
+ * @param className - Additional CSS classes
106
+ */
107
+ declare function HoverCardContent({ className, align, sideOffset, ...props }: React.ComponentProps<typeof HoverCardPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
108
+ export { HoverCard, HoverCardTrigger, HoverCardContent };
109
+ //# sourceMappingURL=hover-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/hover-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAC;AAIjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH;;;;;;;GAOG;AACH,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAEtD;AAED;;;;GAIG;AACH,iBAAS,gBAAgB,CAAC,EACxB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAIzD;AAED;;;;;;;;GAQG;AACH,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAezD;AAED,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC"}