@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,355 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { Calendar, User } from "lucide-react";
3
+ import { Avatar, AvatarFallback, AvatarImage } from "../avatar";
4
+ import { Badge } from "../badge";
5
+ import { Button } from "../button";
6
+ import { HoverCard, HoverCardContent, HoverCardTrigger } from "../hover-card";
7
+
8
+ const meta = {
9
+ title: "Overlays/HoverCard",
10
+ component: HoverCard,
11
+ parameters: {
12
+ layout: "centered",
13
+ docs: {
14
+ description: {
15
+ component:
16
+ "A hover card component for displaying rich content when hovering over a trigger element. Built with Radix UI and Tailwind CSS 4.",
17
+ },
18
+ },
19
+ },
20
+ tags: ["autodocs"],
21
+ argTypes: {
22
+ openDelay: {
23
+ control: { type: "number" },
24
+ description: "The delay in milliseconds before the hover card opens",
25
+ },
26
+ closeDelay: {
27
+ control: { type: "number" },
28
+ description: "The delay in milliseconds before the hover card closes",
29
+ },
30
+ },
31
+ } satisfies Meta<typeof HoverCard>;
32
+
33
+ export default meta;
34
+ type Story = StoryObj<typeof meta>;
35
+
36
+ // Interactive playground with all customizable props
37
+ export const Interactive: Story = {
38
+ args: {
39
+ openDelay: 700,
40
+ closeDelay: 300,
41
+ },
42
+ argTypes: {
43
+ openDelay: {
44
+ control: { type: "range", min: 0, max: 2000, step: 100 },
45
+ description: "Delay in milliseconds before opening",
46
+ },
47
+ closeDelay: {
48
+ control: { type: "range", min: 0, max: 1000, step: 50 },
49
+ description: "Delay in milliseconds before closing",
50
+ },
51
+ },
52
+ render: (args) => (
53
+ <div className="flex justify-center p-8">
54
+ <HoverCard openDelay={args.openDelay} closeDelay={args.closeDelay}>
55
+ <HoverCardTrigger asChild>
56
+ <Button variant="link">@nextjs</Button>
57
+ </HoverCardTrigger>
58
+ <HoverCardContent className="w-80">
59
+ <div className="flex justify-between gap-4">
60
+ <Avatar>
61
+ <AvatarImage src="https://github.com/vercel.png" />
62
+ <AvatarFallback>VC</AvatarFallback>
63
+ </Avatar>
64
+ <div className="space-y-1">
65
+ <h4 className="text-sm font-semibold">@nextjs</h4>
66
+ <p className="text-sm text-muted-foreground">
67
+ The React Framework – created and maintained by @vercel.
68
+ </p>
69
+ <div className="flex items-center pt-2">
70
+ <Calendar className="mr-2 h-4 w-4 opacity-70" />
71
+ <span className="text-xs text-muted-foreground">
72
+ Joined December 2021
73
+ </span>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </HoverCardContent>
78
+ </HoverCard>
79
+ </div>
80
+ ),
81
+ parameters: {
82
+ docs: {
83
+ description: {
84
+ story: "Interactive playground to test all hover card props and behaviors. Adjust the timing controls to see how delays affect the user experience.",
85
+ },
86
+ },
87
+ },
88
+ };
89
+
90
+ // Showcase of different variants and positioning options
91
+ export const Variants: Story = {
92
+ render: () => (
93
+ <div className="grid grid-cols-2 gap-8 p-8">
94
+ {/* User Profile */}
95
+ <div className="space-y-4">
96
+ <h3 className="font-semibold">User Profile</h3>
97
+ <HoverCard>
98
+ <HoverCardTrigger asChild>
99
+ <Button variant="ghost" className="justify-start">
100
+ <Avatar className="h-6 w-6 mr-2">
101
+ <AvatarImage src="https://github.com/shadcn.png" />
102
+ <AvatarFallback>CN</AvatarFallback>
103
+ </Avatar>
104
+ @shadcn
105
+ </Button>
106
+ </HoverCardTrigger>
107
+ <HoverCardContent className="w-80">
108
+ <div className="flex justify-between gap-4">
109
+ <Avatar>
110
+ <AvatarImage src="https://github.com/shadcn.png" />
111
+ <AvatarFallback>CN</AvatarFallback>
112
+ </Avatar>
113
+ <div className="space-y-1">
114
+ <h4 className="text-sm font-semibold">@shadcn</h4>
115
+ <p className="text-sm text-muted-foreground">
116
+ Creator of shadcn/ui. Building beautiful, accessible components.
117
+ </p>
118
+ <div className="flex gap-1 pt-2">
119
+ <Badge variant="secondary" className="text-xs">TypeScript</Badge>
120
+ <Badge variant="secondary" className="text-xs">React</Badge>
121
+ </div>
122
+ </div>
123
+ </div>
124
+ </HoverCardContent>
125
+ </HoverCard>
126
+ </div>
127
+
128
+ {/* Repository Info */}
129
+ <div className="space-y-4">
130
+ <h3 className="font-semibold">Repository</h3>
131
+ <p className="text-sm">
132
+ Check out{" "}
133
+ <HoverCard>
134
+ <HoverCardTrigger asChild>
135
+ <Button variant="link" className="p-0 h-auto">
136
+ shadcn/ui
137
+ </Button>
138
+ </HoverCardTrigger>
139
+ <HoverCardContent className="w-72">
140
+ <div className="space-y-2">
141
+ <h4 className="text-sm font-semibold">shadcn/ui</h4>
142
+ <p className="text-sm text-muted-foreground">
143
+ Beautifully designed components built with Radix UI and Tailwind CSS.
144
+ </p>
145
+ <div className="flex items-center gap-4 pt-2 text-xs text-muted-foreground">
146
+ <span className="flex items-center gap-1">
147
+ <div className="w-3 h-3 bg-blue-500 rounded-full"></div>
148
+ TypeScript
149
+ </span>
150
+ <span>⭐ 45.2k</span>
151
+ <span>🍴 2.1k</span>
152
+ </div>
153
+ </div>
154
+ </HoverCardContent>
155
+ </HoverCard>
156
+ </p>
157
+ </div>
158
+
159
+ {/* Custom Positioning */}
160
+ <div className="space-y-4">
161
+ <h3 className="font-semibold">Custom Position</h3>
162
+ <HoverCard>
163
+ <HoverCardTrigger asChild>
164
+ <Button variant="outline">Top Aligned</Button>
165
+ </HoverCardTrigger>
166
+ <HoverCardContent side="top" align="start" className="w-60">
167
+ <div className="space-y-1">
168
+ <h4 className="font-semibold">Custom Position</h4>
169
+ <p className="text-sm text-muted-foreground">
170
+ This card appears above with start alignment.
171
+ </p>
172
+ </div>
173
+ </HoverCardContent>
174
+ </HoverCard>
175
+ </div>
176
+
177
+ {/* Simple Text */}
178
+ <div className="space-y-4">
179
+ <h3 className="font-semibold">Simple Content</h3>
180
+ <p className="text-sm">
181
+ Learn about{" "}
182
+ <HoverCard>
183
+ <HoverCardTrigger asChild>
184
+ <Button variant="link" className="p-0 h-auto">
185
+ React 19
186
+ </Button>
187
+ </HoverCardTrigger>
188
+ <HoverCardContent>
189
+ <div className="space-y-1">
190
+ <h4 className="font-semibold">React 19</h4>
191
+ <p className="text-sm text-muted-foreground">
192
+ Latest React with Compiler and improved performance.
193
+ </p>
194
+ </div>
195
+ </HoverCardContent>
196
+ </HoverCard>
197
+ </p>
198
+ </div>
199
+ </div>
200
+ ),
201
+ parameters: {
202
+ docs: {
203
+ description: {
204
+ story: "Showcase of different hover card variants including user profiles, repository information, custom positioning, and simple text content.",
205
+ },
206
+ },
207
+ },
208
+ };
209
+
210
+ // Real-world usage in a dashboard-like interface
211
+ export const InContext: Story = {
212
+ render: () => (
213
+ <div className="max-w-4xl mx-auto p-6 space-y-6">
214
+ {/* Header with user profile */}
215
+ <div className="flex items-center justify-between border-b pb-4">
216
+ <h1 className="text-2xl font-bold">Project Dashboard</h1>
217
+ <div className="flex items-center gap-3">
218
+ <span className="text-sm text-muted-foreground">Welcome back,</span>
219
+ <HoverCard>
220
+ <HoverCardTrigger asChild>
221
+ <Button variant="ghost" className="p-1">
222
+ <Avatar className="h-8 w-8">
223
+ <AvatarImage src="https://github.com/vercel.png" />
224
+ <AvatarFallback>JD</AvatarFallback>
225
+ </Avatar>
226
+ </Button>
227
+ </HoverCardTrigger>
228
+ <HoverCardContent align="end" className="w-72">
229
+ <div className="space-y-3">
230
+ <div className="flex items-center gap-3">
231
+ <Avatar>
232
+ <AvatarImage src="https://github.com/vercel.png" />
233
+ <AvatarFallback>JD</AvatarFallback>
234
+ </Avatar>
235
+ <div>
236
+ <h4 className="font-semibold">John Doe</h4>
237
+ <p className="text-sm text-muted-foreground">Product Manager</p>
238
+ </div>
239
+ </div>
240
+ <div className="border-t pt-2">
241
+ <div className="flex flex-col gap-1">
242
+ <Button size="sm" variant="ghost" className="justify-start">
243
+ <User className="mr-2 h-4 w-4" />
244
+ View Profile
245
+ </Button>
246
+ <Button size="sm" variant="ghost" className="justify-start">
247
+ Settings
248
+ </Button>
249
+ </div>
250
+ </div>
251
+ </div>
252
+ </HoverCardContent>
253
+ </HoverCard>
254
+ </div>
255
+ </div>
256
+
257
+ {/* Team section with multiple hover cards */}
258
+ <div className="space-y-4">
259
+ <h2 className="text-lg font-semibold">Team Members</h2>
260
+ <div className="flex gap-4">
261
+ {[
262
+ { name: "Alice Johnson", role: "Frontend Dev", avatar: "https://github.com/vercel.png", initials: "AJ" },
263
+ { name: "Bob Smith", role: "Backend Dev", avatar: "https://github.com/shadcn.png", initials: "BS" },
264
+ { name: "Carol White", role: "Designer", avatar: "https://github.com/vercel.png", initials: "CW" },
265
+ ].map((member, i) => (
266
+ <HoverCard key={i}>
267
+ <HoverCardTrigger asChild>
268
+ <Button variant="outline" className="h-auto p-3">
269
+ <Avatar className="h-8 w-8 mr-2">
270
+ <AvatarImage src={member.avatar} />
271
+ <AvatarFallback>{member.initials}</AvatarFallback>
272
+ </Avatar>
273
+ <div className="text-left">
274
+ <div className="font-medium text-sm">{member.name}</div>
275
+ <div className="text-xs text-muted-foreground">{member.role}</div>
276
+ </div>
277
+ </Button>
278
+ </HoverCardTrigger>
279
+ <HoverCardContent className="w-80">
280
+ <div className="flex gap-4">
281
+ <Avatar>
282
+ <AvatarImage src={member.avatar} />
283
+ <AvatarFallback>{member.initials}</AvatarFallback>
284
+ </Avatar>
285
+ <div className="space-y-1 flex-1">
286
+ <h4 className="font-semibold">{member.name}</h4>
287
+ <p className="text-sm text-muted-foreground">{member.role}</p>
288
+ <p className="text-xs text-muted-foreground">
289
+ Available • Last seen 2h ago
290
+ </p>
291
+ <div className="flex gap-2 pt-2">
292
+ <Button size="sm" variant="outline">Message</Button>
293
+ <Button size="sm" variant="ghost">View Tasks</Button>
294
+ </div>
295
+ </div>
296
+ </div>
297
+ </HoverCardContent>
298
+ </HoverCard>
299
+ ))}
300
+ </div>
301
+ </div>
302
+
303
+ {/* Project links */}
304
+ <div className="space-y-4">
305
+ <h2 className="text-lg font-semibold">Active Projects</h2>
306
+ <div className="grid grid-cols-2 gap-4">
307
+ <div className="p-4 border rounded-lg">
308
+ <h3 className="font-medium mb-2">Frontend Redesign</h3>
309
+ <p className="text-sm text-muted-foreground mb-3">
310
+ Built with{" "}
311
+ <HoverCard>
312
+ <HoverCardTrigger asChild>
313
+ <Button variant="link" className="p-0 h-auto text-sm">
314
+ Next.js 15
315
+ </Button>
316
+ </HoverCardTrigger>
317
+ <HoverCardContent>
318
+ <div className="space-y-2">
319
+ <h4 className="font-semibold">Next.js 15</h4>
320
+ <p className="text-sm text-muted-foreground">
321
+ The React Framework with App Router, Server Components, and improved performance.
322
+ </p>
323
+ </div>
324
+ </HoverCardContent>
325
+ </HoverCard>
326
+ {" and "}
327
+ <HoverCard>
328
+ <HoverCardTrigger asChild>
329
+ <Button variant="link" className="p-0 h-auto text-sm">
330
+ Tailwind CSS
331
+ </Button>
332
+ </HoverCardTrigger>
333
+ <HoverCardContent>
334
+ <div className="space-y-2">
335
+ <h4 className="font-semibold">Tailwind CSS</h4>
336
+ <p className="text-sm text-muted-foreground">
337
+ Utility-first CSS framework for rapidly building modern websites.
338
+ </p>
339
+ </div>
340
+ </HoverCardContent>
341
+ </HoverCard>
342
+ </p>
343
+ </div>
344
+ </div>
345
+ </div>
346
+ </div>
347
+ ),
348
+ parameters: {
349
+ docs: {
350
+ description: {
351
+ story: "Real-world example showing hover cards in a dashboard interface. Demonstrates user profiles, team member info, and contextual information throughout the UI.",
352
+ },
353
+ },
354
+ },
355
+ };
@@ -0,0 +1,289 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { Eye, EyeOff, Lock, Mail, Search } from "lucide-react";
3
+ import { useState } from "react";
4
+ import { Input } from "../input";
5
+
6
+ const meta = {
7
+ title: "Form & Input/Input",
8
+ component: Input,
9
+ parameters: {
10
+ layout: "centered",
11
+ docs: {
12
+ description: {
13
+ component:
14
+ "A form input field component based on shadcn/ui patterns. Supports all HTML input types with consistent styling, accessibility features, and form integration.",
15
+ },
16
+ },
17
+ },
18
+ tags: ["autodocs"],
19
+ argTypes: {
20
+ type: {
21
+ control: { type: "select" },
22
+ options: [
23
+ "text",
24
+ "email",
25
+ "password",
26
+ "number",
27
+ "tel",
28
+ "url",
29
+ "search",
30
+ "file",
31
+ ],
32
+ description: "The HTML input type",
33
+ },
34
+ placeholder: {
35
+ control: { type: "text" },
36
+ description: "Placeholder text displayed when input is empty",
37
+ },
38
+ disabled: {
39
+ control: { type: "boolean" },
40
+ description: "Disables the input and prevents user interaction",
41
+ },
42
+ value: {
43
+ control: { type: "text" },
44
+ description: "The current value of the input",
45
+ },
46
+ className: {
47
+ control: { type: "text" },
48
+ description: "Additional CSS classes to apply to the input",
49
+ },
50
+ },
51
+ args: {
52
+ placeholder: "Enter text...",
53
+ },
54
+ } satisfies Meta<typeof Input>;
55
+
56
+ export default meta;
57
+ type Story = StoryObj<typeof meta>;
58
+
59
+ /**
60
+ * Interactive playground with all input properties and variants.
61
+ * Use the controls panel to test different combinations of props.
62
+ */
63
+ export const Interactive: Story = {
64
+ args: {
65
+ type: "text",
66
+ placeholder: "Try different props using the controls below",
67
+ },
68
+ };
69
+
70
+ /**
71
+ * Showcase of all available input types and states.
72
+ * Demonstrates the visual variations available for different use cases.
73
+ */
74
+ export const Variants: Story = {
75
+ render: () => (
76
+ <div className="space-y-6 w-96">
77
+ {/* Input Types */}
78
+ <div className="space-y-3">
79
+ <h3 className="text-sm font-medium text-muted-foreground">
80
+ Input Types
81
+ </h3>
82
+ <div className="space-y-2">
83
+ <Input type="text" placeholder="Text input" />
84
+ <Input type="email" placeholder="Email input" />
85
+ <Input type="password" placeholder="Password input" />
86
+ <Input type="number" placeholder="Number input" />
87
+ <Input type="tel" placeholder="Phone input" />
88
+ <Input type="url" placeholder="URL input" />
89
+ <Input type="search" placeholder="Search input" />
90
+ <Input type="file" />
91
+ </div>
92
+ </div>
93
+
94
+ {/* States */}
95
+ <div className="space-y-3">
96
+ <h3 className="text-sm font-medium text-muted-foreground">States</h3>
97
+ <div className="space-y-2">
98
+ <Input placeholder="Default state" />
99
+ <Input value="Filled input" readOnly />
100
+ <Input disabled placeholder="Disabled input" />
101
+ <Input aria-invalid="true" placeholder="Invalid input" />
102
+ </div>
103
+ </div>
104
+
105
+ {/* Sizes */}
106
+ <div className="space-y-3">
107
+ <h3 className="text-sm font-medium text-muted-foreground">Sizes</h3>
108
+ <div className="space-y-2">
109
+ <Input className="h-8 text-sm" placeholder="Small (h-8)" />
110
+ <Input placeholder="Default (h-9)" />
111
+ <Input className="h-10" placeholder="Large (h-10)" />
112
+ <Input className="h-12 text-lg" placeholder="Extra large (h-12)" />
113
+ </div>
114
+ </div>
115
+
116
+ {/* With Icons */}
117
+ <div className="space-y-3">
118
+ <h3 className="text-sm font-medium text-muted-foreground">
119
+ With Icons
120
+ </h3>
121
+ <div className="space-y-2">
122
+ <div className="relative">
123
+ <Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground size-4" />
124
+ <Input className="pl-10" placeholder="Search..." />
125
+ </div>
126
+ <div className="relative">
127
+ <Mail className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground size-4" />
128
+ <Input
129
+ type="email"
130
+ className="pl-10"
131
+ placeholder="Email with icon"
132
+ />
133
+ </div>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ ),
138
+ parameters: {
139
+ layout: "padded",
140
+ docs: {
141
+ description: {
142
+ story:
143
+ "Complete showcase of all input types, states, sizes, and icon integration patterns.",
144
+ },
145
+ },
146
+ },
147
+ };
148
+
149
+ /**
150
+ * Real-world usage examples in context of forms and applications.
151
+ * Shows how inputs work in practical scenarios for design and business teams.
152
+ */
153
+ export const InContext: Story = {
154
+ render: () => {
155
+ const [showPassword, setShowPassword] = useState(false);
156
+ const [email, setEmail] = useState("");
157
+ const [searchQuery, setSearchQuery] = useState("");
158
+
159
+ return (
160
+ <div className="space-y-8 w-96">
161
+ {/* Login Form */}
162
+ <div className="space-y-4 p-6 border rounded-lg">
163
+ <h3 className="text-lg font-semibold">Login Form</h3>
164
+ <div className="space-y-3">
165
+ <div className="space-y-1">
166
+ <label htmlFor="login-email" className="text-sm font-medium">
167
+ Email
168
+ </label>
169
+ <div className="relative">
170
+ <Mail className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground size-4" />
171
+ <Input
172
+ id="login-email"
173
+ type="email"
174
+ className="pl-10"
175
+ placeholder="Enter your email"
176
+ value={email}
177
+ onChange={(e) => setEmail(e.target.value)}
178
+ />
179
+ </div>
180
+ </div>
181
+ <div className="space-y-1">
182
+ <label htmlFor="login-password" className="text-sm font-medium">
183
+ Password
184
+ </label>
185
+ <div className="relative">
186
+ <Lock className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground size-4" />
187
+ <Input
188
+ id="login-password"
189
+ type={showPassword ? "text" : "password"}
190
+ className="pl-10 pr-10"
191
+ placeholder="Enter your password"
192
+ />
193
+ <button
194
+ type="button"
195
+ className="absolute right-3 top-1/2 transform -translate-y-1/2 text-muted-foreground hover:text-foreground"
196
+ onClick={() => setShowPassword(!showPassword)}
197
+ >
198
+ {showPassword ? (
199
+ <EyeOff className="size-4" />
200
+ ) : (
201
+ <Eye className="size-4" />
202
+ )}
203
+ </button>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+
209
+ {/* Search Bar */}
210
+ <div className="space-y-4 p-6 border rounded-lg">
211
+ <h3 className="text-lg font-semibold">Search Interface</h3>
212
+ <div className="relative">
213
+ <Search className="absolute left-3 top-1/2 transform -translate-y-1/2 text-muted-foreground size-4" />
214
+ <Input
215
+ className="pl-10 h-11 text-base"
216
+ placeholder="Search products, users, or content..."
217
+ value={searchQuery}
218
+ onChange={(e) => setSearchQuery(e.target.value)}
219
+ />
220
+ </div>
221
+ {searchQuery && (
222
+ <p className="text-sm text-muted-foreground">
223
+ Searching for: &quot;{searchQuery}&quot;
224
+ </p>
225
+ )}
226
+ </div>
227
+
228
+ {/* Newsletter Subscription */}
229
+ <div className="space-y-4 p-6 border rounded-lg">
230
+ <h3 className="text-lg font-semibold">Newsletter Subscription</h3>
231
+ <div className="flex w-full items-center space-x-2">
232
+ <Input
233
+ type="email"
234
+ placeholder="Enter your email"
235
+ className="flex-1"
236
+ />
237
+ <button className="px-4 py-2 bg-primary text-primary-foreground rounded-md text-sm font-medium hover:bg-primary/90">
238
+ Subscribe
239
+ </button>
240
+ </div>
241
+ </div>
242
+
243
+ {/* Profile Form */}
244
+ <div className="space-y-4 p-6 border rounded-lg">
245
+ <h3 className="text-lg font-semibold">Profile Information</h3>
246
+ <div className="grid grid-cols-2 gap-3">
247
+ <div className="space-y-1">
248
+ <label htmlFor="first-name" className="text-sm font-medium">
249
+ First Name
250
+ </label>
251
+ <Input id="first-name" placeholder="John" />
252
+ </div>
253
+ <div className="space-y-1">
254
+ <label htmlFor="last-name" className="text-sm font-medium">
255
+ Last Name
256
+ </label>
257
+ <Input id="last-name" placeholder="Doe" />
258
+ </div>
259
+ </div>
260
+ <div className="space-y-1">
261
+ <label htmlFor="phone" className="text-sm font-medium">
262
+ Phone Number
263
+ </label>
264
+ <Input id="phone" type="tel" placeholder="+1 (555) 123-4567" />
265
+ </div>
266
+ <div className="space-y-1">
267
+ <label htmlFor="website" className="text-sm font-medium">
268
+ Website
269
+ </label>
270
+ <Input
271
+ id="website"
272
+ type="url"
273
+ placeholder="https://yourwebsite.com"
274
+ />
275
+ </div>
276
+ </div>
277
+ </div>
278
+ );
279
+ },
280
+ parameters: {
281
+ layout: "padded",
282
+ docs: {
283
+ description: {
284
+ story:
285
+ "Real-world examples showing inputs in login forms, search interfaces, subscriptions, and profile forms. Demonstrates proper labeling, icon integration, and user interaction patterns.",
286
+ },
287
+ },
288
+ },
289
+ };