@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,417 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import {
3
+ ResizablePanelGroup,
4
+ ResizablePanel,
5
+ ResizableHandle,
6
+ } from "../resizable";
7
+
8
+ const meta = {
9
+ title: "Layout and Structure/Resizable",
10
+ component: ResizablePanelGroup,
11
+ parameters: {
12
+ layout: "centered",
13
+ docs: {
14
+ description: {
15
+ component:
16
+ "Accessible resizable panel groups and layouts with keyboard support. Built on react-resizable-panels for creating flexible, user-adjustable interfaces.",
17
+ },
18
+ },
19
+ },
20
+ tags: ["autodocs"],
21
+ argTypes: {
22
+ direction: {
23
+ control: { type: "select" },
24
+ options: ["horizontal", "vertical"],
25
+ description: "Layout direction of the panel group",
26
+ defaultValue: "horizontal",
27
+ },
28
+ className: {
29
+ control: { type: "text" },
30
+ description: "Additional CSS classes to apply",
31
+ },
32
+ },
33
+ } satisfies Meta<typeof ResizablePanelGroup>;
34
+
35
+ export default meta;
36
+ type Story = StoryObj<typeof meta>;
37
+
38
+ /**
39
+ * Interactive playground for testing all resizable panel features.
40
+ * Experiment with different directions, sizes, and handle configurations.
41
+ */
42
+ export const Interactive: Story = {
43
+ args: {
44
+ direction: "horizontal",
45
+ className: "min-h-[300px] max-w-4xl rounded-lg border",
46
+ },
47
+ render: (args) => (
48
+ <ResizablePanelGroup {...args}>
49
+ <ResizablePanel defaultSize={25} minSize={15} maxSize={40}>
50
+ <div className="flex h-full items-center justify-center p-6 bg-blue-50 dark:bg-blue-950">
51
+ <div className="text-center">
52
+ <div className="font-semibold text-blue-900 dark:text-blue-100">
53
+ Panel 1
54
+ </div>
55
+ <div className="text-sm text-blue-700 dark:text-blue-300 mt-1">
56
+ 15-40% size range
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </ResizablePanel>
61
+ <ResizableHandle withHandle />
62
+ <ResizablePanel defaultSize={50}>
63
+ <div className="flex h-full items-center justify-center p-6">
64
+ <div className="text-center">
65
+ <div className="font-semibold">Main Content</div>
66
+ <div className="text-sm text-muted-foreground mt-1">
67
+ Drag handles to resize
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </ResizablePanel>
72
+ <ResizableHandle withHandle />
73
+ <ResizablePanel defaultSize={25} minSize={20}>
74
+ <div className="flex h-full items-center justify-center p-6 bg-green-50 dark:bg-green-950">
75
+ <div className="text-center">
76
+ <div className="font-semibold text-green-900 dark:text-green-100">
77
+ Panel 3
78
+ </div>
79
+ <div className="text-sm text-green-700 dark:text-green-300 mt-1">
80
+ Min 20% size
81
+ </div>
82
+ </div>
83
+ </div>
84
+ </ResizablePanel>
85
+ </ResizablePanelGroup>
86
+ ),
87
+ };
88
+
89
+ /**
90
+ * Showcase of different panel configurations and layout variations.
91
+ * Demonstrates horizontal, vertical, nested, and various handle styles.
92
+ */
93
+ export const Variants: Story = {
94
+ args: {
95
+ direction: "horizontal",
96
+ className: "min-h-[300px] max-w-4xl rounded-lg border",
97
+ },
98
+ render: () => (
99
+ <div className="space-y-8">
100
+ {/* Horizontal Layout */}
101
+ <div>
102
+ <h3 className="text-lg font-semibold mb-4">Horizontal Layout</h3>
103
+ <ResizablePanelGroup
104
+ direction="horizontal"
105
+ className="min-h-[200px] max-w-2xl rounded-lg border"
106
+ >
107
+ <ResizablePanel defaultSize={50}>
108
+ <div className="flex h-full items-center justify-center p-4">
109
+ <span className="font-medium">Left Panel</span>
110
+ </div>
111
+ </ResizablePanel>
112
+ <ResizableHandle />
113
+ <ResizablePanel defaultSize={50}>
114
+ <div className="flex h-full items-center justify-center p-4">
115
+ <span className="font-medium">Right Panel</span>
116
+ </div>
117
+ </ResizablePanel>
118
+ </ResizablePanelGroup>
119
+ </div>
120
+
121
+ {/* Vertical Layout */}
122
+ <div>
123
+ <h3 className="text-lg font-semibold mb-4">Vertical Layout</h3>
124
+ <ResizablePanelGroup
125
+ direction="vertical"
126
+ className="min-h-[300px] max-w-lg rounded-lg border"
127
+ >
128
+ <ResizablePanel defaultSize={40}>
129
+ <div className="flex h-full items-center justify-center p-4">
130
+ <span className="font-medium">Top Panel</span>
131
+ </div>
132
+ </ResizablePanel>
133
+ <ResizableHandle />
134
+ <ResizablePanel defaultSize={60}>
135
+ <div className="flex h-full items-center justify-center p-4">
136
+ <span className="font-medium">Bottom Panel</span>
137
+ </div>
138
+ </ResizablePanel>
139
+ </ResizablePanelGroup>
140
+ </div>
141
+
142
+ {/* With Handle Grips */}
143
+ <div>
144
+ <h3 className="text-lg font-semibold mb-4">With Handle Grips</h3>
145
+ <ResizablePanelGroup
146
+ direction="horizontal"
147
+ className="min-h-[200px] max-w-2xl rounded-lg border"
148
+ >
149
+ <ResizablePanel defaultSize={33}>
150
+ <div className="flex h-full items-center justify-center p-4 bg-orange-50 dark:bg-orange-950">
151
+ <span className="font-medium text-orange-900 dark:text-orange-100">
152
+ Panel A
153
+ </span>
154
+ </div>
155
+ </ResizablePanel>
156
+ <ResizableHandle withHandle />
157
+ <ResizablePanel defaultSize={34}>
158
+ <div className="flex h-full items-center justify-center p-4 bg-purple-50 dark:bg-purple-950">
159
+ <span className="font-medium text-purple-900 dark:text-purple-100">
160
+ Panel B
161
+ </span>
162
+ </div>
163
+ </ResizablePanel>
164
+ <ResizableHandle withHandle />
165
+ <ResizablePanel defaultSize={33}>
166
+ <div className="flex h-full items-center justify-center p-4 bg-cyan-50 dark:bg-cyan-950">
167
+ <span className="font-medium text-cyan-900 dark:text-cyan-100">
168
+ Panel C
169
+ </span>
170
+ </div>
171
+ </ResizablePanel>
172
+ </ResizablePanelGroup>
173
+ </div>
174
+
175
+ {/* Nested Panels */}
176
+ <div>
177
+ <h3 className="text-lg font-semibold mb-4">Nested Panels</h3>
178
+ <ResizablePanelGroup
179
+ direction="horizontal"
180
+ className="min-h-[300px] max-w-3xl rounded-lg border"
181
+ >
182
+ <ResizablePanel defaultSize={30}>
183
+ <div className="flex h-full items-center justify-center p-4 bg-gray-50 dark:bg-gray-900">
184
+ <span className="font-medium">Sidebar</span>
185
+ </div>
186
+ </ResizablePanel>
187
+ <ResizableHandle withHandle />
188
+ <ResizablePanel defaultSize={70}>
189
+ <ResizablePanelGroup direction="vertical">
190
+ <ResizablePanel defaultSize={60}>
191
+ <div className="flex h-full items-center justify-center p-4">
192
+ <span className="font-medium">Main Content</span>
193
+ </div>
194
+ </ResizablePanel>
195
+ <ResizableHandle withHandle />
196
+ <ResizablePanel defaultSize={40}>
197
+ <div className="flex h-full items-center justify-center p-4 bg-gray-50 dark:bg-gray-900">
198
+ <span className="font-medium">Footer Area</span>
199
+ </div>
200
+ </ResizablePanel>
201
+ </ResizablePanelGroup>
202
+ </ResizablePanel>
203
+ </ResizablePanelGroup>
204
+ </div>
205
+ </div>
206
+ ),
207
+ parameters: {
208
+ layout: "padded",
209
+ },
210
+ };
211
+
212
+ /**
213
+ * Real-world example showing resizable panels in a code editor interface.
214
+ * Demonstrates practical usage with file explorer, editor, and terminal.
215
+ */
216
+ export const InContext: Story = {
217
+ args: {
218
+ direction: "horizontal",
219
+ className: "min-h-[300px] max-w-4xl rounded-lg border",
220
+ },
221
+ render: () => (
222
+ <div className="max-w-6xl mx-auto">
223
+ <h3 className="text-lg font-semibold mb-4">Code Editor Layout</h3>
224
+ <ResizablePanelGroup
225
+ direction="horizontal"
226
+ className="min-h-[500px] rounded-lg border bg-background"
227
+ >
228
+ {/* File Explorer */}
229
+ <ResizablePanel defaultSize={20} minSize={15} maxSize={30}>
230
+ <div className="flex h-full flex-col">
231
+ <div className="flex items-center gap-2 p-3 border-b bg-muted/50">
232
+ <div className="w-3 h-3 rounded-full bg-red-500"></div>
233
+ <div className="w-3 h-3 rounded-full bg-yellow-500"></div>
234
+ <div className="w-3 h-3 rounded-full bg-green-500"></div>
235
+ <span className="ml-2 text-sm font-medium">Explorer</span>
236
+ </div>
237
+ <div className="flex-1 p-3 text-sm">
238
+ <div className="space-y-1">
239
+ <div className="flex items-center gap-1">
240
+ <span>📁</span>
241
+ <span className="font-medium">src</span>
242
+ </div>
243
+ <div className="ml-4 space-y-1">
244
+ <div className="flex items-center gap-1 text-blue-600 dark:text-blue-400">
245
+ <span>📄</span>
246
+ <span>App.tsx</span>
247
+ </div>
248
+ <div className="flex items-center gap-1">
249
+ <span>📄</span>
250
+ <span>index.tsx</span>
251
+ </div>
252
+ <div className="flex items-center gap-1">
253
+ <span>📄</span>
254
+ <span>types.ts</span>
255
+ </div>
256
+ </div>
257
+ <div className="flex items-center gap-1">
258
+ <span>📁</span>
259
+ <span className="font-medium">components</span>
260
+ </div>
261
+ <div className="flex items-center gap-1">
262
+ <span>📁</span>
263
+ <span className="font-medium">utils</span>
264
+ </div>
265
+ </div>
266
+ </div>
267
+ </div>
268
+ </ResizablePanel>
269
+
270
+ <ResizableHandle withHandle />
271
+
272
+ {/* Main Editor Area */}
273
+ <ResizablePanel defaultSize={60}>
274
+ <ResizablePanelGroup direction="vertical">
275
+ {/* Code Editor */}
276
+ <ResizablePanel defaultSize={70}>
277
+ <div className="flex h-full flex-col">
278
+ <div className="flex items-center justify-between p-3 border-b bg-muted/50">
279
+ <div className="flex items-center gap-2">
280
+ <span className="text-sm font-medium">App.tsx</span>
281
+ <span className="text-xs text-muted-foreground">
282
+ • Modified
283
+ </span>
284
+ </div>
285
+ <div className="flex gap-1">
286
+ <button className="text-xs px-2 py-1 rounded bg-primary text-primary-foreground">
287
+ Save
288
+ </button>
289
+ </div>
290
+ </div>
291
+ <div className="flex-1 p-4 font-mono text-sm bg-muted/20">
292
+ <div className="space-y-1">
293
+ <div>
294
+ <span className="text-blue-600">import</span>{" "}
295
+ <span className="text-green-600">React</span>{" "}
296
+ <span className="text-blue-600">from</span>{" "}
297
+ <span className="text-orange-600">&apos;react&apos;</span>
298
+ ;
299
+ </div>
300
+ <div>
301
+ <span className="text-blue-600">import</span>{" "}
302
+ <span className="text-green-600">
303
+ {"{ ResizablePanelGroup }"}
304
+ </span>{" "}
305
+ <span className="text-blue-600">from</span>{" "}
306
+ <span className="text-orange-600">
307
+ &apos;./components&apos;
308
+ </span>
309
+ ;
310
+ </div>
311
+ <div></div>
312
+ <div>
313
+ <span className="text-blue-600">function</span>{" "}
314
+ <span className="text-yellow-600">App</span>() {"{"}
315
+ </div>
316
+ <div className="ml-4">
317
+ <span className="text-blue-600">return</span> (
318
+ </div>
319
+ <div className="ml-8">{'<div className="h-screen">'}</div>
320
+ <div className="ml-12">
321
+ {'<ResizablePanelGroup direction="horizontal">'}
322
+ </div>
323
+ <div className="ml-16">
324
+ {"<ResizablePanel>Content</ResizablePanel>"}
325
+ </div>
326
+ <div className="ml-12">{"</ResizablePanelGroup>"}</div>
327
+ <div className="ml-8">{"</div>"}</div>
328
+ <div className="ml-4">);</div>
329
+ <div>{"}"}</div>
330
+ </div>
331
+ </div>
332
+ </div>
333
+ </ResizablePanel>
334
+
335
+ <ResizableHandle withHandle />
336
+
337
+ {/* Terminal */}
338
+ <ResizablePanel defaultSize={30}>
339
+ <div className="flex h-full flex-col">
340
+ <div className="flex items-center gap-2 p-3 border-b bg-muted/50">
341
+ <span className="text-sm font-medium">Terminal</span>
342
+ <span className="text-xs text-muted-foreground">zsh</span>
343
+ </div>
344
+ <div className="flex-1 p-4 font-mono text-sm bg-black text-green-400">
345
+ <div className="space-y-1">
346
+ <div>$ npm run dev</div>
347
+ <div className="text-blue-400">
348
+ → Starting development server...
349
+ </div>
350
+ <div className="text-green-400">
351
+ ✓ Server ready on http://localhost:3000
352
+ </div>
353
+ <div className="text-gray-400">
354
+ {" "}
355
+ Watching for file changes...
356
+ </div>
357
+ <div className="flex items-center">
358
+ <span>$ </span>
359
+ <div className="w-2 h-4 bg-green-400 animate-pulse ml-1"></div>
360
+ </div>
361
+ </div>
362
+ </div>
363
+ </div>
364
+ </ResizablePanel>
365
+ </ResizablePanelGroup>
366
+ </ResizablePanel>
367
+
368
+ <ResizableHandle withHandle />
369
+
370
+ {/* Properties Panel */}
371
+ <ResizablePanel defaultSize={20} minSize={15} maxSize={35}>
372
+ <div className="flex h-full flex-col">
373
+ <div className="p-3 border-b bg-muted/50">
374
+ <span className="text-sm font-medium">Properties</span>
375
+ </div>
376
+ <div className="flex-1 p-3 text-sm space-y-3">
377
+ <div>
378
+ <div className="font-medium mb-1">Component</div>
379
+ <div className="text-muted-foreground">ResizablePanelGroup</div>
380
+ </div>
381
+ <div>
382
+ <div className="font-medium mb-1">Props</div>
383
+ <div className="space-y-1 text-xs">
384
+ <div>direction: &quot;horizontal&quot;</div>
385
+ <div>className: &quot;h-full&quot;</div>
386
+ </div>
387
+ </div>
388
+ <div>
389
+ <div className="font-medium mb-1">Dimensions</div>
390
+ <div className="space-y-1 text-xs text-muted-foreground">
391
+ <div>Width: 1200px</div>
392
+ <div>Height: 500px</div>
393
+ </div>
394
+ </div>
395
+ <div>
396
+ <div className="font-medium mb-1">Performance</div>
397
+ <div className="space-y-1 text-xs text-muted-foreground">
398
+ <div>Renders: 3</div>
399
+ <div>Re-renders: 0</div>
400
+ </div>
401
+ </div>
402
+ </div>
403
+ </div>
404
+ </ResizablePanel>
405
+ </ResizablePanelGroup>
406
+ </div>
407
+ ),
408
+ parameters: {
409
+ layout: "fullscreen",
410
+ docs: {
411
+ description: {
412
+ story:
413
+ "A complete code editor interface demonstrating how resizable panels work in real applications. Features file explorer, code editor, terminal, and properties panel with realistic content and interactions.",
414
+ },
415
+ },
416
+ },
417
+ };
@@ -0,0 +1,180 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { ScrollArea, ScrollBar } from "../scroll-area";
3
+
4
+ const meta = {
5
+ title: "Layout and Structure/ScrollArea",
6
+ component: ScrollArea,
7
+ parameters: {
8
+ layout: "centered",
9
+ docs: {
10
+ description: {
11
+ component:
12
+ "Augments native scroll functionality for custom, cross-browser styling. Provides enhanced scrolling experience with consistent scrollbar appearance across different browsers while maintaining native scroll behavior.",
13
+ },
14
+ },
15
+ },
16
+ tags: ["autodocs"],
17
+ argTypes: {
18
+ className: {
19
+ control: { type: "text" },
20
+ description: "Additional CSS classes to apply to the scroll area",
21
+ },
22
+ children: {
23
+ control: { type: "text" },
24
+ description: "The content to be scrolled",
25
+ },
26
+ },
27
+ } satisfies Meta<typeof ScrollArea>;
28
+
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Interactive: Story = {
33
+ args: {
34
+ className: "h-72 w-48 rounded-md border",
35
+ },
36
+ render: (args) => (
37
+ <ScrollArea {...args}>
38
+ <div className="p-4 space-y-4">
39
+ {Array.from({ length: 20 }, (_, i) => (
40
+ <div key={i} className="flex items-center space-x-3">
41
+ <div className="w-10 h-10 bg-blue-100 dark:bg-blue-900 rounded-full flex items-center justify-center text-sm font-medium">
42
+ {i + 1}
43
+ </div>
44
+ <div>
45
+ <h4 className="font-medium">Item {i + 1}</h4>
46
+ <p className="text-sm text-muted-foreground">
47
+ Sample content for testing scrolling behavior
48
+ </p>
49
+ </div>
50
+ </div>
51
+ ))}
52
+ </div>
53
+ </ScrollArea>
54
+ ),
55
+ parameters: {
56
+ docs: {
57
+ description: {
58
+ story: "Interactive playground for testing ScrollArea with all props controllable via Storybook controls.",
59
+ },
60
+ },
61
+ },
62
+ };
63
+
64
+ export const Variants: Story = {
65
+ render: () => (
66
+ <div className="space-y-8">
67
+ <div>
68
+ <h3 className="text-lg font-semibold mb-4">Vertical Scrolling</h3>
69
+ <ScrollArea className="h-48 w-72 rounded-md border">
70
+ <div className="p-4 space-y-3">
71
+ {Array.from({ length: 15 }, (_, i) => (
72
+ <div key={i} className="p-3 border rounded">
73
+ Vertical item {i + 1}
74
+ </div>
75
+ ))}
76
+ </div>
77
+ </ScrollArea>
78
+ </div>
79
+
80
+ <div>
81
+ <h3 className="text-lg font-semibold mb-4">Horizontal Scrolling</h3>
82
+ <ScrollArea className="w-72 whitespace-nowrap rounded-md border">
83
+ <div className="flex gap-4 p-4">
84
+ {Array.from({ length: 10 }, (_, i) => (
85
+ <div key={i} className="w-40 h-24 bg-muted rounded-lg flex items-center justify-center">
86
+ Card {i + 1}
87
+ </div>
88
+ ))}
89
+ </div>
90
+ <ScrollBar orientation="horizontal" />
91
+ </ScrollArea>
92
+ </div>
93
+
94
+ <div>
95
+ <h3 className="text-lg font-semibold mb-4">Both Scrollbars</h3>
96
+ <ScrollArea className="h-48 w-72 rounded-md border">
97
+ <div className="w-[500px] p-4 space-y-3">
98
+ {Array.from({ length: 12 }, (_, i) => (
99
+ <div key={i} className="whitespace-nowrap p-3 border rounded">
100
+ Wide content that extends beyond container width - Item {i + 1}
101
+ </div>
102
+ ))}
103
+ </div>
104
+ <ScrollBar orientation="horizontal" />
105
+ </ScrollArea>
106
+ </div>
107
+ </div>
108
+ ),
109
+ parameters: {
110
+ docs: {
111
+ description: {
112
+ story: "Showcase of all ScrollArea variants including vertical, horizontal, and combined scrolling patterns.",
113
+ },
114
+ },
115
+ },
116
+ };
117
+
118
+ export const InContext: Story = {
119
+ render: () => (
120
+ <div className="max-w-2xl mx-auto bg-background border rounded-lg overflow-hidden">
121
+ <div className="border-b p-4">
122
+ <h2 className="text-xl font-semibold">User Dashboard</h2>
123
+ <p className="text-sm text-muted-foreground mt-1">
124
+ Manage your team members and their permissions
125
+ </p>
126
+ </div>
127
+
128
+ <div className="p-4">
129
+ <ScrollArea className="h-80 w-full rounded-md border">
130
+ <table className="w-full">
131
+ <thead className="bg-muted/50 sticky top-0">
132
+ <tr className="border-b">
133
+ <th className="px-4 py-3 text-left text-sm font-medium">Name</th>
134
+ <th className="px-4 py-3 text-left text-sm font-medium">Email</th>
135
+ <th className="px-4 py-3 text-left text-sm font-medium">Role</th>
136
+ <th className="px-4 py-3 text-left text-sm font-medium">Status</th>
137
+ </tr>
138
+ </thead>
139
+ <tbody>
140
+ {Array.from({ length: 25 }, (_, i) => (
141
+ <tr key={i} className="border-b hover:bg-muted/50">
142
+ <td className="px-4 py-3 font-medium">User {i + 1}</td>
143
+ <td className="px-4 py-3 text-muted-foreground">
144
+ user{i + 1}@company.com
145
+ </td>
146
+ <td className="px-4 py-3">
147
+ <span className="inline-flex px-2 py-1 text-xs rounded-full bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200">
148
+ {i % 3 === 0 ? "Admin" : i % 2 === 0 ? "Editor" : "Viewer"}
149
+ </span>
150
+ </td>
151
+ <td className="px-4 py-3">
152
+ <span className={`inline-flex px-2 py-1 text-xs rounded-full ${
153
+ i % 4 === 0
154
+ ? "bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200"
155
+ : "bg-gray-100 text-gray-800 dark:bg-gray-900 dark:text-gray-200"
156
+ }`}>
157
+ {i % 4 === 0 ? "Active" : "Inactive"}
158
+ </span>
159
+ </td>
160
+ </tr>
161
+ ))}
162
+ </tbody>
163
+ </table>
164
+ </ScrollArea>
165
+ </div>
166
+
167
+ <div className="border-t p-4 flex justify-between items-center text-sm text-muted-foreground">
168
+ <span>Showing 25 users</span>
169
+ <span>Use ScrollArea for large data sets</span>
170
+ </div>
171
+ </div>
172
+ ),
173
+ parameters: {
174
+ docs: {
175
+ description: {
176
+ story: "Real-world example showing ScrollArea in a user management dashboard with sticky headers and proper table layout.",
177
+ },
178
+ },
179
+ },
180
+ };