@neynar/ui 0.2.1 → 0.3.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 (547) hide show
  1. package/{llm-docs → .llm}/a.llm.md +2 -16
  2. package/{llm-docs → .llm}/badge.llm.md +16 -21
  3. package/{llm-docs → .llm}/blockquote.llm.md +1 -6
  4. package/.llm/button-group-separator.llm.md +53 -0
  5. package/.llm/button-group-text.llm.md +56 -0
  6. package/.llm/button-group.llm.md +81 -0
  7. package/{llm-docs → .llm}/button.llm.md +1 -1
  8. package/{llm-docs → .llm}/code.llm.md +1 -6
  9. package/.llm/empty-content.llm.md +103 -0
  10. package/.llm/empty-description.llm.md +70 -0
  11. package/.llm/empty-header.llm.md +64 -0
  12. package/.llm/empty-media.llm.md +81 -0
  13. package/.llm/empty-title.llm.md +54 -0
  14. package/.llm/empty.llm.md +158 -0
  15. package/.llm/field-content.llm.md +28 -0
  16. package/.llm/field-description.llm.md +28 -0
  17. package/.llm/field-error.llm.md +41 -0
  18. package/.llm/field-group.llm.md +84 -0
  19. package/.llm/field-label.llm.md +28 -0
  20. package/.llm/field-legend.llm.md +77 -0
  21. package/.llm/field-separator.llm.md +35 -0
  22. package/.llm/field-set.llm.md +80 -0
  23. package/.llm/field-title.llm.md +28 -0
  24. package/.llm/field.llm.md +35 -0
  25. package/{llm-docs → .llm}/h1.llm.md +2 -7
  26. package/{llm-docs → .llm}/h2.llm.md +2 -7
  27. package/{llm-docs → .llm}/h3.llm.md +2 -7
  28. package/{llm-docs → .llm}/h4.llm.md +2 -7
  29. package/{llm-docs → .llm}/h5.llm.md +2 -7
  30. package/{llm-docs → .llm}/h6.llm.md +1 -6
  31. package/.llm/input-group-addon.llm.md +91 -0
  32. package/.llm/input-group-button.llm.md +120 -0
  33. package/.llm/input-group-input.llm.md +145 -0
  34. package/.llm/input-group-text.llm.md +75 -0
  35. package/.llm/input-group-textarea.llm.md +157 -0
  36. package/.llm/input-group.llm.md +108 -0
  37. package/.llm/item-actions.llm.md +77 -0
  38. package/.llm/item-content.llm.md +73 -0
  39. package/.llm/item-description.llm.md +61 -0
  40. package/.llm/item-footer.llm.md +68 -0
  41. package/.llm/item-group.llm.md +73 -0
  42. package/.llm/item-header.llm.md +66 -0
  43. package/.llm/item-media.llm.md +75 -0
  44. package/.llm/item-separator.llm.md +80 -0
  45. package/.llm/item-title.llm.md +59 -0
  46. package/.llm/item.llm.md +115 -0
  47. package/.llm/kbd-group.llm.md +71 -0
  48. package/.llm/kbd.llm.md +71 -0
  49. package/{llm-docs → .llm}/lead.llm.md +1 -6
  50. package/{llm-docs → .llm}/p.llm.md +1 -6
  51. package/{llm-docs → .llm}/sdk-items-registry.json +390 -6
  52. package/{llm-docs → .llm}/small.llm.md +1 -6
  53. package/{llm-docs → .llm}/span.llm.md +2 -16
  54. package/.llm/spinner.llm.md +182 -0
  55. package/{llm-docs → .llm}/strong.llm.md +1 -6
  56. package/{llm-docs → .llm}/typography.llm.md +2 -16
  57. package/dist/components/ui/button-group.d.ts +448 -0
  58. package/dist/components/ui/button-group.d.ts.map +1 -0
  59. package/dist/components/ui/button.d.ts +1 -1
  60. package/dist/components/ui/button.d.ts.map +1 -1
  61. package/dist/components/ui/empty-state.d.ts +1 -0
  62. package/dist/components/ui/empty-state.d.ts.map +1 -1
  63. package/dist/components/ui/empty.d.ts +630 -0
  64. package/dist/components/ui/empty.d.ts.map +1 -0
  65. package/dist/components/ui/field.d.ts +238 -0
  66. package/dist/components/ui/field.d.ts.map +1 -0
  67. package/dist/components/ui/input-group.d.ts +636 -0
  68. package/dist/components/ui/input-group.d.ts.map +1 -0
  69. package/dist/components/ui/item.d.ts +766 -0
  70. package/dist/components/ui/item.d.ts.map +1 -0
  71. package/dist/components/ui/kbd.d.ts +149 -0
  72. package/dist/components/ui/kbd.d.ts.map +1 -0
  73. package/dist/components/ui/scroll-area.d.ts +5 -5
  74. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  75. package/dist/components/ui/spinner.d.ts +194 -0
  76. package/dist/components/ui/spinner.d.ts.map +1 -0
  77. package/dist/components/ui/stack.d.ts.map +1 -1
  78. package/dist/components/ui/stories/accordion.stories.d.ts +0 -1
  79. package/dist/components/ui/stories/accordion.stories.d.ts.map +1 -1
  80. package/dist/components/ui/stories/alert-dialog.stories.d.ts +0 -1
  81. package/dist/components/ui/stories/alert-dialog.stories.d.ts.map +1 -1
  82. package/dist/components/ui/stories/alert.stories.d.ts +0 -1
  83. package/dist/components/ui/stories/alert.stories.d.ts.map +1 -1
  84. package/dist/components/ui/stories/aspect-ratio.stories.d.ts +0 -1
  85. package/dist/components/ui/stories/aspect-ratio.stories.d.ts.map +1 -1
  86. package/dist/components/ui/stories/avatar.stories.d.ts +0 -1
  87. package/dist/components/ui/stories/avatar.stories.d.ts.map +1 -1
  88. package/dist/components/ui/stories/badge.stories.d.ts +0 -1
  89. package/dist/components/ui/stories/badge.stories.d.ts.map +1 -1
  90. package/dist/components/ui/stories/breadcrumb.stories.d.ts +0 -1
  91. package/dist/components/ui/stories/breadcrumb.stories.d.ts.map +1 -1
  92. package/dist/components/ui/stories/button-group.stories.d.ts +48 -0
  93. package/dist/components/ui/stories/button-group.stories.d.ts.map +1 -0
  94. package/dist/components/ui/stories/button.stories.d.ts +0 -1
  95. package/dist/components/ui/stories/button.stories.d.ts.map +1 -1
  96. package/dist/components/ui/stories/calendar.stories.d.ts +0 -1
  97. package/dist/components/ui/stories/calendar.stories.d.ts.map +1 -1
  98. package/dist/components/ui/stories/card.stories.d.ts +0 -1
  99. package/dist/components/ui/stories/card.stories.d.ts.map +1 -1
  100. package/dist/components/ui/stories/carousel.stories.d.ts +0 -1
  101. package/dist/components/ui/stories/carousel.stories.d.ts.map +1 -1
  102. package/dist/components/ui/stories/chart.stories.d.ts +0 -1
  103. package/dist/components/ui/stories/chart.stories.d.ts.map +1 -1
  104. package/dist/components/ui/stories/checkbox.stories.d.ts +0 -1
  105. package/dist/components/ui/stories/checkbox.stories.d.ts.map +1 -1
  106. package/dist/components/ui/stories/cn.stories.d.ts.map +1 -1
  107. package/dist/components/ui/stories/collapsible.stories.d.ts +0 -1
  108. package/dist/components/ui/stories/collapsible.stories.d.ts.map +1 -1
  109. package/dist/components/ui/stories/colors.stories.d.ts +0 -1
  110. package/dist/components/ui/stories/colors.stories.d.ts.map +1 -1
  111. package/dist/components/ui/stories/combobox.stories.d.ts +0 -1
  112. package/dist/components/ui/stories/combobox.stories.d.ts.map +1 -1
  113. package/dist/components/ui/stories/command.stories.d.ts +0 -1
  114. package/dist/components/ui/stories/command.stories.d.ts.map +1 -1
  115. package/dist/components/ui/stories/container.stories.d.ts +0 -1
  116. package/dist/components/ui/stories/container.stories.d.ts.map +1 -1
  117. package/dist/components/ui/stories/context-menu.stories.d.ts +0 -1
  118. package/dist/components/ui/stories/context-menu.stories.d.ts.map +1 -1
  119. package/dist/components/ui/stories/date-picker.stories.d.ts +0 -1
  120. package/dist/components/ui/stories/date-picker.stories.d.ts.map +1 -1
  121. package/dist/components/ui/stories/dialog.stories.d.ts +0 -1
  122. package/dist/components/ui/stories/dialog.stories.d.ts.map +1 -1
  123. package/dist/components/ui/stories/drawer.stories.d.ts +0 -1
  124. package/dist/components/ui/stories/drawer.stories.d.ts.map +1 -1
  125. package/dist/components/ui/stories/dropdown-menu.stories.d.ts +0 -1
  126. package/dist/components/ui/stories/dropdown-menu.stories.d.ts.map +1 -1
  127. package/dist/components/ui/stories/empty-state.stories.d.ts +0 -1
  128. package/dist/components/ui/stories/empty-state.stories.d.ts.map +1 -1
  129. package/dist/components/ui/stories/empty.stories.d.ts +38 -0
  130. package/dist/components/ui/stories/empty.stories.d.ts.map +1 -0
  131. package/dist/components/ui/stories/field.stories.d.ts +48 -0
  132. package/dist/components/ui/stories/field.stories.d.ts.map +1 -0
  133. package/dist/components/ui/stories/hover-card.stories.d.ts +0 -1
  134. package/dist/components/ui/stories/hover-card.stories.d.ts.map +1 -1
  135. package/dist/components/ui/stories/input-group.stories.d.ts +37 -0
  136. package/dist/components/ui/stories/input-group.stories.d.ts.map +1 -0
  137. package/dist/components/ui/stories/input.stories.d.ts +0 -1
  138. package/dist/components/ui/stories/input.stories.d.ts.map +1 -1
  139. package/dist/components/ui/stories/item.stories.d.ts +61 -0
  140. package/dist/components/ui/stories/item.stories.d.ts.map +1 -0
  141. package/dist/components/ui/stories/kbd.stories.d.ts +37 -0
  142. package/dist/components/ui/stories/kbd.stories.d.ts.map +1 -0
  143. package/dist/components/ui/stories/label.stories.d.ts +0 -1
  144. package/dist/components/ui/stories/label.stories.d.ts.map +1 -1
  145. package/dist/components/ui/stories/menubar.stories.d.ts +0 -1
  146. package/dist/components/ui/stories/menubar.stories.d.ts.map +1 -1
  147. package/dist/components/ui/stories/navigation-menu.stories.d.ts +0 -1
  148. package/dist/components/ui/stories/navigation-menu.stories.d.ts.map +1 -1
  149. package/dist/components/ui/stories/pagination.stories.d.ts +0 -1
  150. package/dist/components/ui/stories/pagination.stories.d.ts.map +1 -1
  151. package/dist/components/ui/stories/popover.stories.d.ts +0 -1
  152. package/dist/components/ui/stories/popover.stories.d.ts.map +1 -1
  153. package/dist/components/ui/stories/progress.stories.d.ts +0 -1
  154. package/dist/components/ui/stories/progress.stories.d.ts.map +1 -1
  155. package/dist/components/ui/stories/radio-group.stories.d.ts +0 -1
  156. package/dist/components/ui/stories/radio-group.stories.d.ts.map +1 -1
  157. package/dist/components/ui/stories/resizable.stories.d.ts +0 -1
  158. package/dist/components/ui/stories/resizable.stories.d.ts.map +1 -1
  159. package/dist/components/ui/stories/scroll-area.stories.d.ts +1 -2
  160. package/dist/components/ui/stories/scroll-area.stories.d.ts.map +1 -1
  161. package/dist/components/ui/stories/select.stories.d.ts +0 -1
  162. package/dist/components/ui/stories/select.stories.d.ts.map +1 -1
  163. package/dist/components/ui/stories/separator.stories.d.ts +0 -1
  164. package/dist/components/ui/stories/separator.stories.d.ts.map +1 -1
  165. package/dist/components/ui/stories/sheet.stories.d.ts +0 -1
  166. package/dist/components/ui/stories/sheet.stories.d.ts.map +1 -1
  167. package/dist/components/ui/stories/sidebar.stories.d.ts +0 -1
  168. package/dist/components/ui/stories/sidebar.stories.d.ts.map +1 -1
  169. package/dist/components/ui/stories/skeleton.stories.d.ts +0 -1
  170. package/dist/components/ui/stories/skeleton.stories.d.ts.map +1 -1
  171. package/dist/components/ui/stories/slider.stories.d.ts +0 -1
  172. package/dist/components/ui/stories/slider.stories.d.ts.map +1 -1
  173. package/dist/components/ui/stories/sonner.stories.d.ts.map +1 -1
  174. package/dist/components/ui/stories/spinner.stories.d.ts +37 -0
  175. package/dist/components/ui/stories/spinner.stories.d.ts.map +1 -0
  176. package/dist/components/ui/stories/stack.stories.d.ts +0 -1
  177. package/dist/components/ui/stories/stack.stories.d.ts.map +1 -1
  178. package/dist/components/ui/stories/switch.stories.d.ts +0 -1
  179. package/dist/components/ui/stories/switch.stories.d.ts.map +1 -1
  180. package/dist/components/ui/stories/table.stories.d.ts +0 -1
  181. package/dist/components/ui/stories/table.stories.d.ts.map +1 -1
  182. package/dist/components/ui/stories/tabs.stories.d.ts +0 -1
  183. package/dist/components/ui/stories/tabs.stories.d.ts.map +1 -1
  184. package/dist/components/ui/stories/text-field.stories.d.ts +0 -1
  185. package/dist/components/ui/stories/text-field.stories.d.ts.map +1 -1
  186. package/dist/components/ui/stories/textarea.stories.d.ts +0 -1
  187. package/dist/components/ui/stories/textarea.stories.d.ts.map +1 -1
  188. package/dist/components/ui/stories/theme-toggle.stories.d.ts +0 -1
  189. package/dist/components/ui/stories/theme-toggle.stories.d.ts.map +1 -1
  190. package/dist/components/ui/stories/theme.stories.d.ts +0 -1
  191. package/dist/components/ui/stories/theme.stories.d.ts.map +1 -1
  192. package/dist/components/ui/stories/toggle-group.stories.d.ts +0 -1
  193. package/dist/components/ui/stories/toggle-group.stories.d.ts.map +1 -1
  194. package/dist/components/ui/stories/toggle.stories.d.ts +0 -1
  195. package/dist/components/ui/stories/toggle.stories.d.ts.map +1 -1
  196. package/dist/components/ui/stories/tooltip.stories.d.ts +0 -1
  197. package/dist/components/ui/stories/tooltip.stories.d.ts.map +1 -1
  198. package/dist/components/ui/stories/typography.stories.d.ts +0 -1
  199. package/dist/components/ui/stories/typography.stories.d.ts.map +1 -1
  200. package/dist/components/ui/stories/use-mobile.stories.d.ts.map +1 -1
  201. package/dist/components/ui/stories/use-theme.stories.d.ts.map +1 -1
  202. package/dist/components/ui/theme-toggle.d.ts +0 -3
  203. package/dist/components/ui/theme-toggle.d.ts.map +1 -1
  204. package/dist/components/ui/theme.d.ts.map +1 -1
  205. package/dist/components/ui/typography.d.ts +12 -11
  206. package/dist/components/ui/typography.d.ts.map +1 -1
  207. package/dist/index.d.ts +7 -0
  208. package/dist/index.d.ts.map +1 -1
  209. package/dist/index.js +4973 -2353
  210. package/dist/index.js.map +1 -1
  211. package/dist/tsconfig.tsbuildinfo +1 -1
  212. package/docs/llm/components/display.md +125 -0
  213. package/docs/llm/components/feedback.md +0 -14
  214. package/docs/llm/components/forms.md +94 -0
  215. package/docs/llm/components/layout.md +169 -0
  216. package/llms.txt +18 -12
  217. package/package.json +7 -6
  218. package/src/components/ui/button-group.tsx +525 -0
  219. package/src/components/ui/button.tsx +9 -12
  220. package/src/components/ui/empty-state.tsx +1 -0
  221. package/src/components/ui/empty.tsx +793 -0
  222. package/src/components/ui/field.tsx +494 -0
  223. package/src/components/ui/input-group.tsx +801 -0
  224. package/src/components/ui/item.tsx +955 -0
  225. package/src/components/ui/kbd.tsx +175 -0
  226. package/src/components/ui/skeleton.tsx +1 -1
  227. package/src/components/ui/spinner.tsx +211 -0
  228. package/src/components/ui/stack.tsx +3 -1
  229. package/src/components/ui/stories/accordion.stories.tsx +0 -1
  230. package/src/components/ui/stories/alert-dialog.stories.tsx +0 -1
  231. package/src/components/ui/stories/alert.stories.tsx +0 -1
  232. package/src/components/ui/stories/aspect-ratio.stories.tsx +0 -1
  233. package/src/components/ui/stories/avatar.stories.tsx +0 -1
  234. package/src/components/ui/stories/badge.stories.tsx +0 -1
  235. package/src/components/ui/stories/breadcrumb.stories.tsx +0 -1
  236. package/src/components/ui/stories/button-group.stories.tsx +300 -0
  237. package/src/components/ui/stories/button.stories.tsx +0 -1
  238. package/src/components/ui/stories/calendar.stories.tsx +0 -1
  239. package/src/components/ui/stories/card.stories.tsx +0 -1
  240. package/src/components/ui/stories/carousel.stories.tsx +0 -1
  241. package/src/components/ui/stories/chart.stories.tsx +0 -1
  242. package/src/components/ui/stories/checkbox.stories.tsx +0 -1
  243. package/src/components/ui/stories/cn.stories.tsx +0 -1
  244. package/src/components/ui/stories/collapsible.stories.tsx +0 -1
  245. package/src/components/ui/stories/colors.stories.tsx +0 -1
  246. package/src/components/ui/stories/combobox.stories.tsx +0 -1
  247. package/src/components/ui/stories/command.stories.tsx +0 -1
  248. package/src/components/ui/stories/container.stories.tsx +0 -1
  249. package/src/components/ui/stories/context-menu.stories.tsx +0 -1
  250. package/src/components/ui/stories/date-picker.stories.tsx +0 -1
  251. package/src/components/ui/stories/dialog.stories.tsx +0 -1
  252. package/src/components/ui/stories/drawer.stories.tsx +0 -1
  253. package/src/components/ui/stories/dropdown-menu.stories.tsx +0 -1
  254. package/src/components/ui/stories/empty-state.stories.tsx +0 -1
  255. package/src/components/ui/stories/empty.stories.tsx +293 -0
  256. package/src/components/ui/stories/field.stories.tsx +470 -0
  257. package/src/components/ui/stories/hover-card.stories.tsx +0 -1
  258. package/src/components/ui/stories/input-group.stories.tsx +444 -0
  259. package/src/components/ui/stories/input.stories.tsx +0 -1
  260. package/src/components/ui/stories/item.stories.tsx +601 -0
  261. package/src/components/ui/stories/kbd.stories.tsx +462 -0
  262. package/src/components/ui/stories/label.stories.tsx +0 -1
  263. package/src/components/ui/stories/menubar.stories.tsx +0 -1
  264. package/src/components/ui/stories/navigation-menu.stories.tsx +0 -1
  265. package/src/components/ui/stories/pagination.stories.tsx +0 -1
  266. package/src/components/ui/stories/popover.stories.tsx +0 -1
  267. package/src/components/ui/stories/progress.stories.tsx +0 -1
  268. package/src/components/ui/stories/radio-group.stories.tsx +0 -1
  269. package/src/components/ui/stories/resizable.stories.tsx +0 -1
  270. package/src/components/ui/stories/scroll-area.stories.tsx +0 -1
  271. package/src/components/ui/stories/select.stories.tsx +0 -1
  272. package/src/components/ui/stories/separator.stories.tsx +0 -1
  273. package/src/components/ui/stories/sheet.stories.tsx +0 -1
  274. package/src/components/ui/stories/sidebar.stories.tsx +0 -1
  275. package/src/components/ui/stories/skeleton.stories.tsx +0 -1
  276. package/src/components/ui/stories/slider.stories.tsx +0 -1
  277. package/src/components/ui/stories/sonner.stories.tsx +0 -1
  278. package/src/components/ui/stories/spinner.stories.tsx +356 -0
  279. package/src/components/ui/stories/stack.stories.tsx +0 -1
  280. package/src/components/ui/stories/switch.stories.tsx +0 -1
  281. package/src/components/ui/stories/table.stories.tsx +0 -1
  282. package/src/components/ui/stories/tabs.stories.tsx +0 -1
  283. package/src/components/ui/stories/text-field.stories.tsx +0 -1
  284. package/src/components/ui/stories/textarea.stories.tsx +0 -1
  285. package/src/components/ui/stories/theme-toggle.stories.tsx +0 -1
  286. package/src/components/ui/stories/theme.stories.tsx +0 -1
  287. package/src/components/ui/stories/toggle-group.stories.tsx +0 -1
  288. package/src/components/ui/stories/toggle.stories.tsx +0 -1
  289. package/src/components/ui/stories/tooltip.stories.tsx +0 -1
  290. package/src/components/ui/stories/typography.stories.tsx +5 -2
  291. package/src/components/ui/stories/use-mobile.stories.tsx +0 -1
  292. package/src/components/ui/stories/use-theme.stories.tsx +0 -1
  293. package/src/components/ui/tabs.tsx +1 -1
  294. package/src/components/ui/theme-toggle.tsx +1 -3
  295. package/src/components/ui/theme.tsx +6 -1
  296. package/src/components/ui/typography.tsx +29 -129
  297. package/src/index.ts +7 -0
  298. package/src/styles/globals.css +82 -94
  299. /package/{llm-docs → .llm}/accordion-content.llm.md +0 -0
  300. /package/{llm-docs → .llm}/accordion-item.llm.md +0 -0
  301. /package/{llm-docs → .llm}/accordion-trigger.llm.md +0 -0
  302. /package/{llm-docs → .llm}/accordion.llm.md +0 -0
  303. /package/{llm-docs → .llm}/alert-description.llm.md +0 -0
  304. /package/{llm-docs → .llm}/alert-dialog-action.llm.md +0 -0
  305. /package/{llm-docs → .llm}/alert-dialog-cancel.llm.md +0 -0
  306. /package/{llm-docs → .llm}/alert-dialog-content.llm.md +0 -0
  307. /package/{llm-docs → .llm}/alert-dialog-description.llm.md +0 -0
  308. /package/{llm-docs → .llm}/alert-dialog-footer.llm.md +0 -0
  309. /package/{llm-docs → .llm}/alert-dialog-header.llm.md +0 -0
  310. /package/{llm-docs → .llm}/alert-dialog-overlay.llm.md +0 -0
  311. /package/{llm-docs → .llm}/alert-dialog-portal.llm.md +0 -0
  312. /package/{llm-docs → .llm}/alert-dialog-title.llm.md +0 -0
  313. /package/{llm-docs → .llm}/alert-dialog-trigger.llm.md +0 -0
  314. /package/{llm-docs → .llm}/alert-dialog.llm.md +0 -0
  315. /package/{llm-docs → .llm}/alert-title.llm.md +0 -0
  316. /package/{llm-docs → .llm}/alert.llm.md +0 -0
  317. /package/{llm-docs → .llm}/aspect-ratio.llm.md +0 -0
  318. /package/{llm-docs → .llm}/avatar-fallback.llm.md +0 -0
  319. /package/{llm-docs → .llm}/avatar-image.llm.md +0 -0
  320. /package/{llm-docs → .llm}/avatar.llm.md +0 -0
  321. /package/{llm-docs → .llm}/breadcrumb-ellipsis.llm.md +0 -0
  322. /package/{llm-docs → .llm}/breadcrumb-item.llm.md +0 -0
  323. /package/{llm-docs → .llm}/breadcrumb-link.llm.md +0 -0
  324. /package/{llm-docs → .llm}/breadcrumb-list.llm.md +0 -0
  325. /package/{llm-docs → .llm}/breadcrumb-page.llm.md +0 -0
  326. /package/{llm-docs → .llm}/breadcrumb-separator.llm.md +0 -0
  327. /package/{llm-docs → .llm}/breadcrumb.llm.md +0 -0
  328. /package/{llm-docs → .llm}/calendar-day-button.llm.md +0 -0
  329. /package/{llm-docs → .llm}/calendar.llm.md +0 -0
  330. /package/{llm-docs → .llm}/card-action.llm.md +0 -0
  331. /package/{llm-docs → .llm}/card-content.llm.md +0 -0
  332. /package/{llm-docs → .llm}/card-description.llm.md +0 -0
  333. /package/{llm-docs → .llm}/card-footer.llm.md +0 -0
  334. /package/{llm-docs → .llm}/card-header.llm.md +0 -0
  335. /package/{llm-docs → .llm}/card-title.llm.md +0 -0
  336. /package/{llm-docs → .llm}/card.llm.md +0 -0
  337. /package/{llm-docs → .llm}/carousel-content.llm.md +0 -0
  338. /package/{llm-docs → .llm}/carousel-item.llm.md +0 -0
  339. /package/{llm-docs → .llm}/carousel-next.llm.md +0 -0
  340. /package/{llm-docs → .llm}/carousel-previous.llm.md +0 -0
  341. /package/{llm-docs → .llm}/carousel.llm.md +0 -0
  342. /package/{llm-docs → .llm}/chart-config.llm.md +0 -0
  343. /package/{llm-docs → .llm}/chart-container.llm.md +0 -0
  344. /package/{llm-docs → .llm}/chart-legend-content.llm.md +0 -0
  345. /package/{llm-docs → .llm}/chart-legend.llm.md +0 -0
  346. /package/{llm-docs → .llm}/chart-style.llm.md +0 -0
  347. /package/{llm-docs → .llm}/chart-tooltip-content.llm.md +0 -0
  348. /package/{llm-docs → .llm}/chart-tooltip.llm.md +0 -0
  349. /package/{llm-docs → .llm}/checkbox.llm.md +0 -0
  350. /package/{llm-docs → .llm}/cn.llm.md +0 -0
  351. /package/{llm-docs → .llm}/collapsible-content.llm.md +0 -0
  352. /package/{llm-docs → .llm}/collapsible-trigger.llm.md +0 -0
  353. /package/{llm-docs → .llm}/collapsible.llm.md +0 -0
  354. /package/{llm-docs → .llm}/combobox-option.llm.md +0 -0
  355. /package/{llm-docs → .llm}/combobox.llm.md +0 -0
  356. /package/{llm-docs → .llm}/command-dialog.llm.md +0 -0
  357. /package/{llm-docs → .llm}/command-empty.llm.md +0 -0
  358. /package/{llm-docs → .llm}/command-group.llm.md +0 -0
  359. /package/{llm-docs → .llm}/command-input.llm.md +0 -0
  360. /package/{llm-docs → .llm}/command-item.llm.md +0 -0
  361. /package/{llm-docs → .llm}/command-list.llm.md +0 -0
  362. /package/{llm-docs → .llm}/command-loading.llm.md +0 -0
  363. /package/{llm-docs → .llm}/command-separator.llm.md +0 -0
  364. /package/{llm-docs → .llm}/command-shortcut.llm.md +0 -0
  365. /package/{llm-docs → .llm}/command.llm.md +0 -0
  366. /package/{llm-docs → .llm}/container.llm.md +0 -0
  367. /package/{llm-docs → .llm}/context-menu-checkbox-item.llm.md +0 -0
  368. /package/{llm-docs → .llm}/context-menu-content.llm.md +0 -0
  369. /package/{llm-docs → .llm}/context-menu-group.llm.md +0 -0
  370. /package/{llm-docs → .llm}/context-menu-item.llm.md +0 -0
  371. /package/{llm-docs → .llm}/context-menu-label.llm.md +0 -0
  372. /package/{llm-docs → .llm}/context-menu-portal.llm.md +0 -0
  373. /package/{llm-docs → .llm}/context-menu-radio-group.llm.md +0 -0
  374. /package/{llm-docs → .llm}/context-menu-radio-item.llm.md +0 -0
  375. /package/{llm-docs → .llm}/context-menu-separator.llm.md +0 -0
  376. /package/{llm-docs → .llm}/context-menu-shortcut.llm.md +0 -0
  377. /package/{llm-docs → .llm}/context-menu-sub-content.llm.md +0 -0
  378. /package/{llm-docs → .llm}/context-menu-sub-trigger.llm.md +0 -0
  379. /package/{llm-docs → .llm}/context-menu-sub.llm.md +0 -0
  380. /package/{llm-docs → .llm}/context-menu-trigger.llm.md +0 -0
  381. /package/{llm-docs → .llm}/context-menu.llm.md +0 -0
  382. /package/{llm-docs → .llm}/date-picker.llm.md +0 -0
  383. /package/{llm-docs → .llm}/dialog-close.llm.md +0 -0
  384. /package/{llm-docs → .llm}/dialog-content.llm.md +0 -0
  385. /package/{llm-docs → .llm}/dialog-description.llm.md +0 -0
  386. /package/{llm-docs → .llm}/dialog-footer.llm.md +0 -0
  387. /package/{llm-docs → .llm}/dialog-header.llm.md +0 -0
  388. /package/{llm-docs → .llm}/dialog-overlay.llm.md +0 -0
  389. /package/{llm-docs → .llm}/dialog-portal.llm.md +0 -0
  390. /package/{llm-docs → .llm}/dialog-title.llm.md +0 -0
  391. /package/{llm-docs → .llm}/dialog-trigger.llm.md +0 -0
  392. /package/{llm-docs → .llm}/dialog.llm.md +0 -0
  393. /package/{llm-docs → .llm}/drawer-close.llm.md +0 -0
  394. /package/{llm-docs → .llm}/drawer-content.llm.md +0 -0
  395. /package/{llm-docs → .llm}/drawer-description.llm.md +0 -0
  396. /package/{llm-docs → .llm}/drawer-footer.llm.md +0 -0
  397. /package/{llm-docs → .llm}/drawer-header.llm.md +0 -0
  398. /package/{llm-docs → .llm}/drawer-overlay.llm.md +0 -0
  399. /package/{llm-docs → .llm}/drawer-portal.llm.md +0 -0
  400. /package/{llm-docs → .llm}/drawer-title.llm.md +0 -0
  401. /package/{llm-docs → .llm}/drawer-trigger.llm.md +0 -0
  402. /package/{llm-docs → .llm}/drawer.llm.md +0 -0
  403. /package/{llm-docs → .llm}/dropdown-menu-checkbox-item.llm.md +0 -0
  404. /package/{llm-docs → .llm}/dropdown-menu-content.llm.md +0 -0
  405. /package/{llm-docs → .llm}/dropdown-menu-group.llm.md +0 -0
  406. /package/{llm-docs → .llm}/dropdown-menu-item.llm.md +0 -0
  407. /package/{llm-docs → .llm}/dropdown-menu-label.llm.md +0 -0
  408. /package/{llm-docs → .llm}/dropdown-menu-portal.llm.md +0 -0
  409. /package/{llm-docs → .llm}/dropdown-menu-radio-group.llm.md +0 -0
  410. /package/{llm-docs → .llm}/dropdown-menu-radio-item.llm.md +0 -0
  411. /package/{llm-docs → .llm}/dropdown-menu-separator.llm.md +0 -0
  412. /package/{llm-docs → .llm}/dropdown-menu-shortcut.llm.md +0 -0
  413. /package/{llm-docs → .llm}/dropdown-menu-sub-content.llm.md +0 -0
  414. /package/{llm-docs → .llm}/dropdown-menu-sub-trigger.llm.md +0 -0
  415. /package/{llm-docs → .llm}/dropdown-menu-sub.llm.md +0 -0
  416. /package/{llm-docs → .llm}/dropdown-menu-trigger.llm.md +0 -0
  417. /package/{llm-docs → .llm}/dropdown-menu.llm.md +0 -0
  418. /package/{llm-docs → .llm}/empty-state.llm.md +0 -0
  419. /package/{llm-docs → .llm}/hover-card-content.llm.md +0 -0
  420. /package/{llm-docs → .llm}/hover-card-trigger.llm.md +0 -0
  421. /package/{llm-docs → .llm}/hover-card.llm.md +0 -0
  422. /package/{llm-docs → .llm}/input.llm.md +0 -0
  423. /package/{llm-docs → .llm}/label.llm.md +0 -0
  424. /package/{llm-docs → .llm}/menubar-checkbox-item.llm.md +0 -0
  425. /package/{llm-docs → .llm}/menubar-content.llm.md +0 -0
  426. /package/{llm-docs → .llm}/menubar-group.llm.md +0 -0
  427. /package/{llm-docs → .llm}/menubar-item.llm.md +0 -0
  428. /package/{llm-docs → .llm}/menubar-label.llm.md +0 -0
  429. /package/{llm-docs → .llm}/menubar-menu.llm.md +0 -0
  430. /package/{llm-docs → .llm}/menubar-portal.llm.md +0 -0
  431. /package/{llm-docs → .llm}/menubar-radio-group.llm.md +0 -0
  432. /package/{llm-docs → .llm}/menubar-radio-item.llm.md +0 -0
  433. /package/{llm-docs → .llm}/menubar-separator.llm.md +0 -0
  434. /package/{llm-docs → .llm}/menubar-shortcut.llm.md +0 -0
  435. /package/{llm-docs → .llm}/menubar-sub-content.llm.md +0 -0
  436. /package/{llm-docs → .llm}/menubar-sub-trigger.llm.md +0 -0
  437. /package/{llm-docs → .llm}/menubar-sub.llm.md +0 -0
  438. /package/{llm-docs → .llm}/menubar-trigger.llm.md +0 -0
  439. /package/{llm-docs → .llm}/menubar.llm.md +0 -0
  440. /package/{llm-docs → .llm}/navigation-menu-content.llm.md +0 -0
  441. /package/{llm-docs → .llm}/navigation-menu-indicator.llm.md +0 -0
  442. /package/{llm-docs → .llm}/navigation-menu-item.llm.md +0 -0
  443. /package/{llm-docs → .llm}/navigation-menu-link.llm.md +0 -0
  444. /package/{llm-docs → .llm}/navigation-menu-list.llm.md +0 -0
  445. /package/{llm-docs → .llm}/navigation-menu-trigger-style.llm.md +0 -0
  446. /package/{llm-docs → .llm}/navigation-menu-trigger.llm.md +0 -0
  447. /package/{llm-docs → .llm}/navigation-menu-viewport.llm.md +0 -0
  448. /package/{llm-docs → .llm}/navigation-menu.llm.md +0 -0
  449. /package/{llm-docs → .llm}/pagination-content.llm.md +0 -0
  450. /package/{llm-docs → .llm}/pagination-ellipsis.llm.md +0 -0
  451. /package/{llm-docs → .llm}/pagination-item.llm.md +0 -0
  452. /package/{llm-docs → .llm}/pagination-link.llm.md +0 -0
  453. /package/{llm-docs → .llm}/pagination-next.llm.md +0 -0
  454. /package/{llm-docs → .llm}/pagination-previous.llm.md +0 -0
  455. /package/{llm-docs → .llm}/pagination.llm.md +0 -0
  456. /package/{llm-docs → .llm}/popover-anchor.llm.md +0 -0
  457. /package/{llm-docs → .llm}/popover-content.llm.md +0 -0
  458. /package/{llm-docs → .llm}/popover-trigger.llm.md +0 -0
  459. /package/{llm-docs → .llm}/popover.llm.md +0 -0
  460. /package/{llm-docs → .llm}/progress.llm.md +0 -0
  461. /package/{llm-docs → .llm}/radio-group-indicator.llm.md +0 -0
  462. /package/{llm-docs → .llm}/radio-group-item.llm.md +0 -0
  463. /package/{llm-docs → .llm}/radio-group.llm.md +0 -0
  464. /package/{llm-docs → .llm}/resizable-handle.llm.md +0 -0
  465. /package/{llm-docs → .llm}/resizable-panel-group.llm.md +0 -0
  466. /package/{llm-docs → .llm}/resizable-panel.llm.md +0 -0
  467. /package/{llm-docs → .llm}/scroll-area-corner.llm.md +0 -0
  468. /package/{llm-docs → .llm}/scroll-area-thumb.llm.md +0 -0
  469. /package/{llm-docs → .llm}/scroll-area-viewport.llm.md +0 -0
  470. /package/{llm-docs → .llm}/scroll-area.llm.md +0 -0
  471. /package/{llm-docs → .llm}/scroll-bar.llm.md +0 -0
  472. /package/{llm-docs → .llm}/select-content.llm.md +0 -0
  473. /package/{llm-docs → .llm}/select-group.llm.md +0 -0
  474. /package/{llm-docs → .llm}/select-item.llm.md +0 -0
  475. /package/{llm-docs → .llm}/select-label.llm.md +0 -0
  476. /package/{llm-docs → .llm}/select-scroll-down-button.llm.md +0 -0
  477. /package/{llm-docs → .llm}/select-scroll-up-button.llm.md +0 -0
  478. /package/{llm-docs → .llm}/select-separator.llm.md +0 -0
  479. /package/{llm-docs → .llm}/select-trigger.llm.md +0 -0
  480. /package/{llm-docs → .llm}/select-value.llm.md +0 -0
  481. /package/{llm-docs → .llm}/select.llm.md +0 -0
  482. /package/{llm-docs → .llm}/separator.llm.md +0 -0
  483. /package/{llm-docs → .llm}/sheet-close.llm.md +0 -0
  484. /package/{llm-docs → .llm}/sheet-content.llm.md +0 -0
  485. /package/{llm-docs → .llm}/sheet-description.llm.md +0 -0
  486. /package/{llm-docs → .llm}/sheet-footer.llm.md +0 -0
  487. /package/{llm-docs → .llm}/sheet-header.llm.md +0 -0
  488. /package/{llm-docs → .llm}/sheet-title.llm.md +0 -0
  489. /package/{llm-docs → .llm}/sheet-trigger.llm.md +0 -0
  490. /package/{llm-docs → .llm}/sheet.llm.md +0 -0
  491. /package/{llm-docs → .llm}/sidebar-content.llm.md +0 -0
  492. /package/{llm-docs → .llm}/sidebar-footer.llm.md +0 -0
  493. /package/{llm-docs → .llm}/sidebar-group-action.llm.md +0 -0
  494. /package/{llm-docs → .llm}/sidebar-group-content.llm.md +0 -0
  495. /package/{llm-docs → .llm}/sidebar-group-label.llm.md +0 -0
  496. /package/{llm-docs → .llm}/sidebar-group.llm.md +0 -0
  497. /package/{llm-docs → .llm}/sidebar-header.llm.md +0 -0
  498. /package/{llm-docs → .llm}/sidebar-input.llm.md +0 -0
  499. /package/{llm-docs → .llm}/sidebar-inset.llm.md +0 -0
  500. /package/{llm-docs → .llm}/sidebar-menu-action.llm.md +0 -0
  501. /package/{llm-docs → .llm}/sidebar-menu-badge.llm.md +0 -0
  502. /package/{llm-docs → .llm}/sidebar-menu-button.llm.md +0 -0
  503. /package/{llm-docs → .llm}/sidebar-menu-item.llm.md +0 -0
  504. /package/{llm-docs → .llm}/sidebar-menu-skeleton.llm.md +0 -0
  505. /package/{llm-docs → .llm}/sidebar-menu-sub-button.llm.md +0 -0
  506. /package/{llm-docs → .llm}/sidebar-menu-sub-item.llm.md +0 -0
  507. /package/{llm-docs → .llm}/sidebar-menu-sub.llm.md +0 -0
  508. /package/{llm-docs → .llm}/sidebar-menu.llm.md +0 -0
  509. /package/{llm-docs → .llm}/sidebar-provider.llm.md +0 -0
  510. /package/{llm-docs → .llm}/sidebar-rail.llm.md +0 -0
  511. /package/{llm-docs → .llm}/sidebar-separator.llm.md +0 -0
  512. /package/{llm-docs → .llm}/sidebar-trigger.llm.md +0 -0
  513. /package/{llm-docs → .llm}/sidebar.llm.md +0 -0
  514. /package/{llm-docs → .llm}/skeleton.llm.md +0 -0
  515. /package/{llm-docs → .llm}/slider.llm.md +0 -0
  516. /package/{llm-docs → .llm}/stack.llm.md +0 -0
  517. /package/{llm-docs → .llm}/switch.llm.md +0 -0
  518. /package/{llm-docs → .llm}/table-body.llm.md +0 -0
  519. /package/{llm-docs → .llm}/table-caption.llm.md +0 -0
  520. /package/{llm-docs → .llm}/table-cell.llm.md +0 -0
  521. /package/{llm-docs → .llm}/table-footer.llm.md +0 -0
  522. /package/{llm-docs → .llm}/table-head.llm.md +0 -0
  523. /package/{llm-docs → .llm}/table-header.llm.md +0 -0
  524. /package/{llm-docs → .llm}/table-row.llm.md +0 -0
  525. /package/{llm-docs → .llm}/table.llm.md +0 -0
  526. /package/{llm-docs → .llm}/tabs-content.llm.md +0 -0
  527. /package/{llm-docs → .llm}/tabs-list.llm.md +0 -0
  528. /package/{llm-docs → .llm}/tabs-trigger.llm.md +0 -0
  529. /package/{llm-docs → .llm}/tabs.llm.md +0 -0
  530. /package/{llm-docs → .llm}/text-field.llm.md +0 -0
  531. /package/{llm-docs → .llm}/textarea.llm.md +0 -0
  532. /package/{llm-docs → .llm}/theme-preference.llm.md +0 -0
  533. /package/{llm-docs → .llm}/theme-toggle.llm.md +0 -0
  534. /package/{llm-docs → .llm}/theme.llm.md +0 -0
  535. /package/{llm-docs → .llm}/toast.llm.md +0 -0
  536. /package/{llm-docs → .llm}/toaster.llm.md +0 -0
  537. /package/{llm-docs → .llm}/toggle-group-item.llm.md +0 -0
  538. /package/{llm-docs → .llm}/toggle-group.llm.md +0 -0
  539. /package/{llm-docs → .llm}/toggle.llm.md +0 -0
  540. /package/{llm-docs → .llm}/tooltip-content.llm.md +0 -0
  541. /package/{llm-docs → .llm}/tooltip-provider.llm.md +0 -0
  542. /package/{llm-docs → .llm}/tooltip-trigger.llm.md +0 -0
  543. /package/{llm-docs → .llm}/tooltip.llm.md +0 -0
  544. /package/{llm-docs → .llm}/use-carousel.llm.md +0 -0
  545. /package/{llm-docs → .llm}/use-command-state.llm.md +0 -0
  546. /package/{llm-docs → .llm}/use-is-mobile.llm.md +0 -0
  547. /package/{llm-docs → .llm}/use-sidebar.llm.md +0 -0
@@ -0,0 +1,470 @@
1
+ import type { Meta, StoryObj } from "@storybook/react-vite";
2
+ import { Info } from "lucide-react";
3
+ import { useState } from "react";
4
+ import { Checkbox } from "../checkbox";
5
+ import {
6
+ Field,
7
+ FieldContent,
8
+ FieldDescription,
9
+ FieldError,
10
+ FieldGroup,
11
+ FieldLabel,
12
+ FieldLegend,
13
+ FieldSeparator,
14
+ FieldSet,
15
+ FieldTitle,
16
+ } from "../field";
17
+ import { Input } from "../input";
18
+ import { RadioGroup, RadioGroupItem } from "../radio-group";
19
+ import { Switch } from "../switch";
20
+
21
+ const meta = {
22
+ title: "Form & Input/Field",
23
+ component: Field,
24
+ parameters: {
25
+ layout: "centered",
26
+ docs: {
27
+ description: {
28
+ component:
29
+ "A comprehensive form field component that provides proper labeling, description, error handling, and layout options. Supports vertical, horizontal, and responsive orientations.",
30
+ },
31
+ },
32
+ },
33
+ argTypes: {
34
+ orientation: {
35
+ control: { type: "select" },
36
+ options: ["vertical", "horizontal", "responsive"],
37
+ description: "The orientation of the field layout",
38
+ },
39
+ className: {
40
+ control: { type: "text" },
41
+ description: "Additional CSS classes to apply",
42
+ },
43
+ },
44
+ args: {
45
+ orientation: "vertical",
46
+ },
47
+ } satisfies Meta<typeof Field>;
48
+
49
+ export default meta;
50
+ type Story = StoryObj<typeof meta>;
51
+
52
+ /**
53
+ * Interactive playground with all field properties.
54
+ * Use the controls panel to test different combinations of props.
55
+ */
56
+ export const Interactive: Story = {
57
+ render: (args) => (
58
+ <div className="w-96">
59
+ <Field {...args}>
60
+ <FieldLabel htmlFor="email">Email Address</FieldLabel>
61
+ <Input id="email" type="email" placeholder="Enter your email" />
62
+ <FieldDescription>We'll never share your email.</FieldDescription>
63
+ </Field>
64
+ </div>
65
+ ),
66
+ };
67
+
68
+ /**
69
+ * Showcase of all available field orientations and compositions.
70
+ */
71
+ export const Variants: Story = {
72
+ render: () => (
73
+ <div className="space-y-12 w-full max-w-2xl">
74
+ {/* Vertical Orientation */}
75
+ <div className="space-y-4">
76
+ <h3 className="text-sm font-medium text-muted-foreground">
77
+ Vertical Layout
78
+ </h3>
79
+ <div className="space-y-6">
80
+ <Field>
81
+ <FieldLabel htmlFor="name-v">Full Name</FieldLabel>
82
+ <Input id="name-v" placeholder="John Doe" />
83
+ <FieldDescription>Enter your full legal name.</FieldDescription>
84
+ </Field>
85
+
86
+ <Field>
87
+ <FieldLabel htmlFor="bio-v">Bio</FieldLabel>
88
+ <textarea
89
+ id="bio-v"
90
+ className="w-full min-h-24 px-3 py-2 border rounded-md"
91
+ placeholder="Tell us about yourself"
92
+ />
93
+ <FieldDescription>
94
+ Write a short bio about yourself (max 500 characters).
95
+ </FieldDescription>
96
+ </Field>
97
+ </div>
98
+ </div>
99
+
100
+ {/* Horizontal Orientation */}
101
+ <div className="space-y-4">
102
+ <h3 className="text-sm font-medium text-muted-foreground">
103
+ Horizontal Layout
104
+ </h3>
105
+ <FieldGroup>
106
+ <Field orientation="horizontal">
107
+ <FieldContent>
108
+ <FieldTitle>Email Notifications</FieldTitle>
109
+ <FieldDescription>
110
+ Receive email updates about your account.
111
+ </FieldDescription>
112
+ </FieldContent>
113
+ <Switch />
114
+ </Field>
115
+
116
+ <Field orientation="horizontal">
117
+ <FieldContent>
118
+ <FieldTitle>Marketing Emails</FieldTitle>
119
+ <FieldDescription>
120
+ Get updates about new features and products.
121
+ </FieldDescription>
122
+ </FieldContent>
123
+ <Switch />
124
+ </Field>
125
+ </FieldGroup>
126
+ </div>
127
+
128
+ {/* Responsive Orientation */}
129
+ <div className="space-y-4">
130
+ <h3 className="text-sm font-medium text-muted-foreground">
131
+ Responsive Layout (vertical on mobile, horizontal on larger screens)
132
+ </h3>
133
+ <FieldGroup>
134
+ <Field orientation="responsive">
135
+ <FieldContent>
136
+ <FieldTitle>Two-Factor Auth</FieldTitle>
137
+ <FieldDescription>
138
+ Add an extra layer of security to your account.
139
+ </FieldDescription>
140
+ </FieldContent>
141
+ <Switch />
142
+ </Field>
143
+ </FieldGroup>
144
+ </div>
145
+
146
+ {/* With Error State */}
147
+ <div className="space-y-4">
148
+ <h3 className="text-sm font-medium text-muted-foreground">
149
+ Error States
150
+ </h3>
151
+ <div className="space-y-6">
152
+ <Field data-invalid="true">
153
+ <FieldLabel htmlFor="email-error">Email</FieldLabel>
154
+ <Input
155
+ id="email-error"
156
+ type="email"
157
+ placeholder="email@example.com"
158
+ aria-invalid="true"
159
+ defaultValue="invalid-email"
160
+ />
161
+ <FieldError>Please enter a valid email address.</FieldError>
162
+ </Field>
163
+
164
+ <Field data-invalid="true">
165
+ <FieldLabel htmlFor="password-error">Password</FieldLabel>
166
+ <Input
167
+ id="password-error"
168
+ type="password"
169
+ aria-invalid="true"
170
+ defaultValue="123"
171
+ />
172
+ <FieldError
173
+ errors={[
174
+ { message: "Password must be at least 8 characters" },
175
+ { message: "Password must contain a number" },
176
+ { message: "Password must contain a special character" },
177
+ ]}
178
+ />
179
+ </Field>
180
+ </div>
181
+ </div>
182
+
183
+ {/* Field Groups */}
184
+ <div className="space-y-4">
185
+ <h3 className="text-sm font-medium text-muted-foreground">
186
+ Field Groups with Separators
187
+ </h3>
188
+ <FieldGroup>
189
+ <Field>
190
+ <FieldLabel htmlFor="first-name">First Name</FieldLabel>
191
+ <Input id="first-name" placeholder="John" />
192
+ </Field>
193
+
194
+ <Field>
195
+ <FieldLabel htmlFor="last-name">Last Name</FieldLabel>
196
+ <Input id="last-name" placeholder="Doe" />
197
+ </Field>
198
+
199
+ <FieldSeparator>Contact Information</FieldSeparator>
200
+
201
+ <Field>
202
+ <FieldLabel htmlFor="email-group">Email</FieldLabel>
203
+ <Input id="email-group" type="email" placeholder="john@example.com" />
204
+ </Field>
205
+
206
+ <Field>
207
+ <FieldLabel htmlFor="phone-group">Phone</FieldLabel>
208
+ <Input id="phone-group" type="tel" placeholder="+1 (555) 000-0000" />
209
+ </Field>
210
+ </FieldGroup>
211
+ </div>
212
+
213
+ {/* With Checkboxes and Radio */}
214
+ <div className="space-y-4">
215
+ <h3 className="text-sm font-medium text-muted-foreground">
216
+ With Checkboxes and Radio Buttons
217
+ </h3>
218
+ <div className="space-y-6">
219
+ <FieldSet>
220
+ <FieldLegend>Preferences</FieldLegend>
221
+ <FieldGroup>
222
+ <Field orientation="horizontal">
223
+ <Checkbox id="newsletter" />
224
+ <FieldLabel htmlFor="newsletter">
225
+ Subscribe to newsletter
226
+ </FieldLabel>
227
+ </Field>
228
+
229
+ <Field orientation="horizontal">
230
+ <Checkbox id="updates" />
231
+ <FieldLabel htmlFor="updates">Receive product updates</FieldLabel>
232
+ </Field>
233
+ </FieldGroup>
234
+ </FieldSet>
235
+
236
+ <FieldSet>
237
+ <FieldLegend>Notification Method</FieldLegend>
238
+ <RadioGroup defaultValue="email">
239
+ <Field orientation="horizontal">
240
+ <RadioGroupItem value="email" id="radio-email" />
241
+ <FieldLabel htmlFor="radio-email">Email</FieldLabel>
242
+ </Field>
243
+
244
+ <Field orientation="horizontal">
245
+ <RadioGroupItem value="sms" id="radio-sms" />
246
+ <FieldLabel htmlFor="radio-sms">SMS</FieldLabel>
247
+ </Field>
248
+
249
+ <Field orientation="horizontal">
250
+ <RadioGroupItem value="push" id="radio-push" />
251
+ <FieldLabel htmlFor="radio-push">Push Notification</FieldLabel>
252
+ </Field>
253
+ </RadioGroup>
254
+ </FieldSet>
255
+ </div>
256
+ </div>
257
+ </div>
258
+ ),
259
+ parameters: {
260
+ layout: "padded",
261
+ docs: {
262
+ description: {
263
+ story:
264
+ "Complete showcase of field orientations, error states, groups, and integration with various form controls.",
265
+ },
266
+ },
267
+ },
268
+ };
269
+
270
+ /**
271
+ * Real-world usage examples showing fields in practical form scenarios.
272
+ */
273
+ export const InContext: Story = {
274
+ render: () => {
275
+ const [formErrors, setFormErrors] = useState({
276
+ email: "",
277
+ password: "",
278
+ });
279
+
280
+ const handleSubmit = (e: React.FormEvent) => {
281
+ e.preventDefault();
282
+ const formData = new FormData(e.target as HTMLFormElement);
283
+ const email = formData.get("email") as string;
284
+ const password = formData.get("password") as string;
285
+
286
+ const errors = { email: "", password: "" };
287
+ if (!email.includes("@")) {
288
+ errors.email = "Please enter a valid email address";
289
+ }
290
+ if (password.length < 8) {
291
+ errors.password = "Password must be at least 8 characters";
292
+ }
293
+ setFormErrors(errors);
294
+ };
295
+
296
+ return (
297
+ <div className="space-y-8 w-full max-w-2xl">
298
+ {/* Registration Form */}
299
+ <div className="space-y-4 p-6 border rounded-lg">
300
+ <h3 className="text-lg font-semibold">Create Account</h3>
301
+ <form onSubmit={handleSubmit} className="space-y-6">
302
+ <FieldGroup>
303
+ <Field data-invalid={!!formErrors.email}>
304
+ <FieldLabel htmlFor="reg-email">
305
+ Email Address
306
+ <span className="text-destructive ml-1">*</span>
307
+ </FieldLabel>
308
+ <Input
309
+ id="reg-email"
310
+ name="email"
311
+ type="email"
312
+ placeholder="you@example.com"
313
+ aria-invalid={!!formErrors.email}
314
+ required
315
+ />
316
+ {formErrors.email && (
317
+ <FieldError>{formErrors.email}</FieldError>
318
+ )}
319
+ </Field>
320
+
321
+ <Field data-invalid={!!formErrors.password}>
322
+ <FieldLabel htmlFor="reg-password">
323
+ Password
324
+ <span className="text-destructive ml-1">*</span>
325
+ </FieldLabel>
326
+ <Input
327
+ id="reg-password"
328
+ name="password"
329
+ type="password"
330
+ placeholder="Min. 8 characters"
331
+ aria-invalid={!!formErrors.password}
332
+ required
333
+ />
334
+ <FieldDescription>
335
+ Must be at least 8 characters with a number and special
336
+ character.
337
+ </FieldDescription>
338
+ {formErrors.password && (
339
+ <FieldError>{formErrors.password}</FieldError>
340
+ )}
341
+ </Field>
342
+
343
+ <Field orientation="horizontal">
344
+ <Checkbox id="reg-terms" required />
345
+ <FieldLabel htmlFor="reg-terms">
346
+ I agree to the{" "}
347
+ <a href="#" className="underline">
348
+ Terms of Service
349
+ </a>{" "}
350
+ and{" "}
351
+ <a href="#" className="underline">
352
+ Privacy Policy
353
+ </a>
354
+ </FieldLabel>
355
+ </Field>
356
+ </FieldGroup>
357
+
358
+ <button
359
+ type="submit"
360
+ className="w-full px-4 py-2 bg-primary text-primary-foreground rounded-md font-medium hover:bg-primary/90"
361
+ >
362
+ Create Account
363
+ </button>
364
+ </form>
365
+ </div>
366
+
367
+ {/* Settings Form */}
368
+ <div className="space-y-4 p-6 border rounded-lg">
369
+ <h3 className="text-lg font-semibold">Notification Settings</h3>
370
+ <FieldGroup>
371
+ <Field orientation="horizontal">
372
+ <FieldContent>
373
+ <FieldTitle>
374
+ Email Notifications
375
+ <Info className="size-4 text-muted-foreground ml-1" />
376
+ </FieldTitle>
377
+ <FieldDescription>
378
+ Receive email updates about your account activity.
379
+ </FieldDescription>
380
+ </FieldContent>
381
+ <Switch defaultChecked />
382
+ </Field>
383
+
384
+ <Field orientation="horizontal">
385
+ <FieldContent>
386
+ <FieldTitle>Push Notifications</FieldTitle>
387
+ <FieldDescription>
388
+ Get push notifications on your devices.
389
+ </FieldDescription>
390
+ </FieldContent>
391
+ <Switch />
392
+ </Field>
393
+
394
+ <FieldSeparator />
395
+
396
+ <Field orientation="horizontal">
397
+ <FieldContent>
398
+ <FieldTitle>Marketing Communications</FieldTitle>
399
+ <FieldDescription>
400
+ Receive news, announcements, and product updates.
401
+ </FieldDescription>
402
+ </FieldContent>
403
+ <Switch />
404
+ </Field>
405
+ </FieldGroup>
406
+ </div>
407
+
408
+ {/* Profile Form */}
409
+ <div className="space-y-4 p-6 border rounded-lg">
410
+ <h3 className="text-lg font-semibold">Profile Information</h3>
411
+ <FieldGroup>
412
+ <Field>
413
+ <FieldLabel htmlFor="profile-name">Display Name</FieldLabel>
414
+ <Input
415
+ id="profile-name"
416
+ placeholder="How you'd like to be called"
417
+ />
418
+ <FieldDescription>
419
+ This is how your name will appear to others.
420
+ </FieldDescription>
421
+ </Field>
422
+
423
+ <Field>
424
+ <FieldLabel htmlFor="profile-bio">Bio</FieldLabel>
425
+ <textarea
426
+ id="profile-bio"
427
+ className="w-full min-h-24 px-3 py-2 border rounded-md"
428
+ placeholder="Tell us about yourself"
429
+ />
430
+ <FieldDescription>
431
+ Brief description for your profile (max 500 characters).
432
+ </FieldDescription>
433
+ </Field>
434
+
435
+ <FieldSeparator>Visibility</FieldSeparator>
436
+
437
+ <FieldSet>
438
+ <FieldLegend variant="label">Who can see your profile?</FieldLegend>
439
+ <RadioGroup defaultValue="public">
440
+ <Field orientation="horizontal">
441
+ <RadioGroupItem value="public" id="vis-public" />
442
+ <FieldLabel htmlFor="vis-public">Public</FieldLabel>
443
+ </Field>
444
+
445
+ <Field orientation="horizontal">
446
+ <RadioGroupItem value="private" id="vis-private" />
447
+ <FieldLabel htmlFor="vis-private">Private</FieldLabel>
448
+ </Field>
449
+
450
+ <Field orientation="horizontal">
451
+ <RadioGroupItem value="friends" id="vis-friends" />
452
+ <FieldLabel htmlFor="vis-friends">Friends Only</FieldLabel>
453
+ </Field>
454
+ </RadioGroup>
455
+ </FieldSet>
456
+ </FieldGroup>
457
+ </div>
458
+ </div>
459
+ );
460
+ },
461
+ parameters: {
462
+ layout: "padded",
463
+ docs: {
464
+ description: {
465
+ story:
466
+ "Real-world examples showing fields in registration forms, settings panels, and profile editors with proper validation and layout.",
467
+ },
468
+ },
469
+ },
470
+ };
@@ -17,7 +17,6 @@ const meta = {
17
17
  },
18
18
  },
19
19
  },
20
- tags: ["autodocs"],
21
20
  argTypes: {
22
21
  openDelay: {
23
22
  control: { type: "number" },