@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,175 @@
1
+ import { cn } from "@/lib/utils"
2
+
3
+ /**
4
+ * Props for Kbd component (Documentation only - NOT used in component implementation)
5
+ * These types are for documentation generation and should not replace HTML kbd element inferred types
6
+ */
7
+ type KbdDocsProps = {
8
+ /** Additional CSS classes for custom styling */
9
+ className?: string;
10
+ /** Content to display inside the keyboard key (text, icons, or components) */
11
+ children?: React.ReactNode;
12
+ } & Omit<React.HTMLAttributes<HTMLElement>, "children" | "className">;
13
+
14
+ /**
15
+ * Props for KbdGroup component (Documentation only - NOT used in component implementation)
16
+ * These types are for documentation generation and should not replace HTML div element inferred types
17
+ */
18
+ type KbdGroupDocsProps = {
19
+ /** Additional CSS classes for custom styling */
20
+ className?: string;
21
+ /** Kbd components or other content to group together */
22
+ children?: React.ReactNode;
23
+ } & Omit<React.HTMLAttributes<HTMLDivElement>, "children" | "className">;
24
+
25
+ /**
26
+ * Kbd - Display keyboard input and shortcuts
27
+ *
28
+ * A semantic component for representing keyboard keys, shortcuts, and input in documentation,
29
+ * tutorials, and UI instructions. Uses the HTML kbd element with consistent styling for
30
+ * monospace text, subtle background, and appropriate sizing. Supports icons, text, and
31
+ * modifier keys like Cmd, Shift, Ctrl, and Alt.
32
+ *
33
+ * @example
34
+ * ```tsx
35
+ * // Display a single keyboard key
36
+ * <Kbd>K</Kbd>
37
+ * ```
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * // Display keyboard shortcuts with modifiers
42
+ * <KbdGroup>
43
+ * <Kbd>⌘</Kbd>
44
+ * <Kbd>K</Kbd>
45
+ * </KbdGroup>
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // Display keyboard shortcuts in help text
51
+ * <p>
52
+ * Press <Kbd>Ctrl</Kbd> + <Kbd>S</Kbd> to save your work
53
+ * </p>
54
+ * ```
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * // Complex keyboard shortcut with multiple modifiers
59
+ * <KbdGroup>
60
+ * <Kbd>Ctrl</Kbd>
61
+ * <Kbd>Shift</Kbd>
62
+ * <Kbd>P</Kbd>
63
+ * </KbdGroup>
64
+ * ```
65
+ *
66
+ * @example
67
+ * ```tsx
68
+ * // Display keyboard shortcuts with icons
69
+ * <KbdGroup>
70
+ * <Kbd>
71
+ * <Command className="h-3 w-3" />
72
+ * </Kbd>
73
+ * <Kbd>K</Kbd>
74
+ * </KbdGroup>
75
+ * ```
76
+ *
77
+ * @accessibility
78
+ * - Uses semantic HTML kbd element for keyboard input representation
79
+ * - Screen readers announce content naturally as keyboard input
80
+ * - Non-interactive by default (pointer-events-none) to avoid confusion
81
+ * - Sufficient color contrast for readability (WCAG 2.1 AA compliant)
82
+ * - Respects user font size preferences with relative sizing
83
+ * - Works within tooltips with adjusted contrast for visibility
84
+ *
85
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/kbd} MDN kbd Element Reference
86
+ * @see {@link https://ui.shadcn.com/docs/components/kbd} shadcn/ui Kbd Documentation
87
+ * @see {@link KbdGroup} Group multiple keyboard keys together
88
+ * @since 1.0.0
89
+ */
90
+ function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
91
+ return (
92
+ <kbd
93
+ data-slot="kbd"
94
+ className={cn(
95
+ "bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none",
96
+ "[&_svg:not([class*='size-'])]:size-3",
97
+ "[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10",
98
+ className
99
+ )}
100
+ {...props}
101
+ />
102
+ )
103
+ }
104
+
105
+ /**
106
+ * KbdGroup - Group multiple keyboard keys together
107
+ *
108
+ * A container component for grouping multiple Kbd components to represent complex keyboard
109
+ * shortcuts or key combinations. Automatically handles spacing between individual keys and
110
+ * provides semantic grouping. Useful for displaying shortcuts like "Ctrl+Shift+P" or "Cmd+K".
111
+ *
112
+ * @example
113
+ * ```tsx
114
+ * // Basic keyboard shortcut
115
+ * <KbdGroup>
116
+ * <Kbd>Ctrl</Kbd>
117
+ * <Kbd>C</Kbd>
118
+ * </KbdGroup>
119
+ * ```
120
+ *
121
+ * @example
122
+ * ```tsx
123
+ * // Multiple modifier keys
124
+ * <KbdGroup>
125
+ * <Kbd>⌘</Kbd>
126
+ * <Kbd>⇧</Kbd>
127
+ * <Kbd>P</Kbd>
128
+ * </KbdGroup>
129
+ * ```
130
+ *
131
+ * @example
132
+ * ```tsx
133
+ * // With custom separators using text
134
+ * <KbdGroup>
135
+ * <Kbd>Ctrl</Kbd>
136
+ * <span className="text-muted-foreground">+</span>
137
+ * <Kbd>Alt</Kbd>
138
+ * <span className="text-muted-foreground">+</span>
139
+ * <Kbd>Delete</Kbd>
140
+ * </KbdGroup>
141
+ * ```
142
+ *
143
+ * @example
144
+ * ```tsx
145
+ * // In a command palette or menu item
146
+ * <div className="flex items-center justify-between">
147
+ * <span>Open command palette</span>
148
+ * <KbdGroup>
149
+ * <Kbd>⌘</Kbd>
150
+ * <Kbd>K</Kbd>
151
+ * </KbdGroup>
152
+ * </div>
153
+ * ```
154
+ *
155
+ * @accessibility
156
+ * - Groups related keyboard keys semantically
157
+ * - Screen readers announce grouped keys naturally
158
+ * - Maintains visual separation between keys for clarity
159
+ * - Non-interactive to prevent accidental activation
160
+ * - Respects user preferences for font sizing and spacing
161
+ *
162
+ * @see {@link Kbd} Individual keyboard key display
163
+ * @since 1.0.0
164
+ */
165
+ function KbdGroup({ className, ...props }: React.ComponentProps<"div">) {
166
+ return (
167
+ <kbd
168
+ data-slot="kbd-group"
169
+ className={cn("inline-flex items-center gap-1", className)}
170
+ {...props}
171
+ />
172
+ )
173
+ }
174
+
175
+ export { Kbd, KbdGroup, type KbdDocsProps, type KbdGroupDocsProps }
@@ -149,7 +149,7 @@ function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
149
149
  return (
150
150
  <div
151
151
  data-slot="skeleton"
152
- className={cn("bg-accent animate-pulse rounded-md", className)}
152
+ className={cn("bg-card animate-pulse rounded-md", className)}
153
153
  {...props}
154
154
  />
155
155
  );
@@ -0,0 +1,211 @@
1
+ import * as React from "react";
2
+ import { Loader2Icon } from "lucide-react";
3
+
4
+ import { cn } from "@/lib/utils";
5
+
6
+ /**
7
+ * Props for Spinner component (Documentation only - NOT used in component implementation)
8
+ * These types are for documentation generation and should not replace inferred SVG types
9
+ */
10
+ type SpinnerDocsProps = {
11
+ /** Additional CSS classes for custom size, color, or animation speed styling */
12
+ className?: string;
13
+ /** Color of the spinner icon (uses currentColor by default, inherits from parent text color) */
14
+ color?: string;
15
+ /** Size of the spinner icon in pixels @default 16 */
16
+ size?: number | string;
17
+ /** Stroke width of the spinner lines @default 2 */
18
+ strokeWidth?: number | string;
19
+ /** Accessible label for screen readers describing the loading state @default "Loading" */
20
+ "aria-label"?: string;
21
+ /** Role attribute for accessibility @default "status" */
22
+ role?: string;
23
+ /** Whether the spinner should be hidden from assistive technologies @default false */
24
+ "aria-hidden"?: boolean | "false" | "true";
25
+ /** Describes the element that is currently loading */
26
+ "aria-describedby"?: string;
27
+ /** Indicates that the region is being updated */
28
+ "aria-live"?: "off" | "polite" | "assertive";
29
+ /** Indicates that the content is currently busy loading @default false */
30
+ "aria-busy"?: boolean;
31
+ /** Style object for inline CSS styling */
32
+ style?: React.CSSProperties;
33
+ /** Data attributes for testing or identification */
34
+ [key: `data-${string}`]: string | undefined;
35
+ } & Omit<
36
+ React.SVGProps<SVGSVGElement>,
37
+ "color" | "size" | "strokeWidth" | "children"
38
+ >;
39
+
40
+ /**
41
+ * Spinner - Loading indicator with animated rotation
42
+ *
43
+ * A circular loading spinner built on the Lucide React Loader2 icon with smooth rotation
44
+ * animation. Provides visual feedback to users during asynchronous operations such as
45
+ * data fetching, form submissions, or content loading. The spinner is highly customizable
46
+ * through CSS classes and supports all standard SVG props for size, color, and styling.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // Basic loading spinner with default size (16px)
51
+ * <Spinner />
52
+ *
53
+ * // Custom size using Tailwind size utilities
54
+ * <Spinner className="size-6" />
55
+ * <Spinner className="size-8" />
56
+ * <Spinner className="size-12" />
57
+ *
58
+ * // Custom color using text color classes
59
+ * <Spinner className="text-primary" />
60
+ * <Spinner className="text-destructive" />
61
+ * <Spinner className="text-muted-foreground" />
62
+ * ```
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * // In loading buttons
67
+ * import { Button } from "./button";
68
+ *
69
+ * <Button disabled>
70
+ * <Spinner className="mr-2 size-4" />
71
+ * Loading...
72
+ * </Button>
73
+ *
74
+ * <Button variant="outline" disabled>
75
+ * <Spinner className="mr-2 size-4" />
76
+ * Processing
77
+ * </Button>
78
+ *
79
+ * // Icon-only loading button
80
+ * <Button size="icon" disabled aria-label="Loading">
81
+ * <Spinner className="size-4" />
82
+ * </Button>
83
+ * ```
84
+ *
85
+ * @example
86
+ * ```tsx
87
+ * // Full-page loading state
88
+ * <div className="flex min-h-screen items-center justify-center">
89
+ * <div className="text-center space-y-4">
90
+ * <Spinner className="size-12 mx-auto" />
91
+ * <p className="text-muted-foreground">Loading your dashboard...</p>
92
+ * </div>
93
+ * </div>
94
+ *
95
+ * // Card loading state
96
+ * <div className="border rounded-lg p-8 flex flex-col items-center gap-3">
97
+ * <Spinner className="size-8" />
98
+ * <p className="text-sm text-muted-foreground">Fetching data...</p>
99
+ * </div>
100
+ *
101
+ * // Inline loading with text
102
+ * <p className="flex items-center gap-2 text-sm">
103
+ * <Spinner className="size-4" />
104
+ * Syncing your data...
105
+ * </p>
106
+ * ```
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * // Custom animation speed
111
+ * // Slow rotation
112
+ * <Spinner className="animate-[spin_2s_linear_infinite]" />
113
+ *
114
+ * // Fast rotation
115
+ * <Spinner className="animate-[spin_0.5s_linear_infinite]" />
116
+ *
117
+ * // Custom size and color combination
118
+ * <Spinner
119
+ * className="size-6 text-blue-500"
120
+ * strokeWidth={3}
121
+ * />
122
+ *
123
+ * // With background overlay
124
+ * <div className="relative">
125
+ * <div className="absolute inset-0 bg-background/50 backdrop-blur-sm flex items-center justify-center rounded-lg">
126
+ * <Spinner className="size-8" />
127
+ * </div>
128
+ * <div>Your content here</div>
129
+ * </div>
130
+ * ```
131
+ *
132
+ * @example
133
+ * ```tsx
134
+ * // Conditional rendering with loading state
135
+ * function DataDisplay() {
136
+ * const [isLoading, setIsLoading] = React.useState(true);
137
+ *
138
+ * return (
139
+ * <div className="space-y-4">
140
+ * {isLoading ? (
141
+ * <div className="flex justify-center p-8">
142
+ * <Spinner className="size-6" />
143
+ * </div>
144
+ * ) : (
145
+ * <div>Loaded content here</div>
146
+ * )}
147
+ * </div>
148
+ * );
149
+ * }
150
+ *
151
+ * // With aria-live region for screen reader announcements
152
+ * <div aria-live="polite" aria-atomic="true">
153
+ * {isLoading && (
154
+ * <div className="flex items-center gap-2">
155
+ * <Spinner className="size-4" />
156
+ * <span>Loading content, please wait...</span>
157
+ * </div>
158
+ * )}
159
+ * </div>
160
+ * ```
161
+ *
162
+ * @accessibility
163
+ * - Includes role="status" by default to announce loading state to screen readers
164
+ * - Default aria-label="Loading" provides context for assistive technologies
165
+ * - Can be customized with custom aria-label for specific loading contexts
166
+ * - Spinner animation respects user's prefers-reduced-motion preferences via Tailwind
167
+ * - For purely decorative spinners in buttons with text labels, consider aria-hidden="true"
168
+ * - When used in loading overlays, ensure parent container has proper aria-live region
169
+ * - Icon inherits color from parent text color (currentColor) for consistent theming
170
+ * - Meets WCAG 2.1 AA standards when used with sufficient color contrast
171
+ * - Consider adding visually hidden text for additional context: <span className="sr-only">Loading...</span>
172
+ *
173
+ * @size
174
+ * The spinner size can be controlled through:
175
+ * - Tailwind size utilities: size-3 (12px), size-4 (16px), size-5 (20px), size-6 (24px), size-8 (32px), size-12 (48px)
176
+ * - Lucide size prop: <Spinner size={24} /> for pixel-based sizing
177
+ * - Custom width/height classes: w-10 h-10 for specific dimensions
178
+ * - Default size is 16px (size-4) when no size is specified
179
+ *
180
+ * @color
181
+ * The spinner color inherits from the parent text color by default:
182
+ * - text-primary for brand colors
183
+ * - text-destructive for error states
184
+ * - text-muted-foreground for subtle loading indicators
185
+ * - text-primary-foreground for use on colored backgrounds
186
+ * - Custom colors via arbitrary values: text-[#FF0000]
187
+ *
188
+ * @animation
189
+ * - Uses Tailwind's animate-spin utility (360° rotation, 1s linear infinite)
190
+ * - Respects prefers-reduced-motion media query automatically
191
+ * - Can be customized with arbitrary animation values for different speeds
192
+ * - Smooth 60fps rotation on modern browsers
193
+ *
194
+ * @see {@link https://lucide.dev/guide/packages/lucide-react} Lucide React documentation
195
+ * @see {@link https://lucide.dev/icons/loader} Loader2 icon details
196
+ * @see {@link https://lucide.dev/guide/advanced/accessibility} Lucide accessibility guide
197
+ * @see {@link Button} Button component for loading button patterns
198
+ * @since 1.0.0
199
+ */
200
+ function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
201
+ return (
202
+ <Loader2Icon
203
+ role="status"
204
+ aria-label="Loading"
205
+ className={cn("size-4 animate-spin", className)}
206
+ {...props}
207
+ />
208
+ );
209
+ }
210
+
211
+ export { Spinner, type SpinnerDocsProps };
@@ -475,7 +475,9 @@ const Stack = React.forwardRef<
475
475
  <div
476
476
  ref={ref}
477
477
  className={cn(
478
- direction === "vertical" ? "flex flex-col" : "flex flex-row",
478
+ direction === "vertical"
479
+ ? "flex flex-col"
480
+ : "flex flex-row items-center",
479
481
  {
480
482
  "space-y-0": direction === "vertical" && spacing === 0,
481
483
  "space-y-1": direction === "vertical" && spacing === 1,
@@ -19,7 +19,6 @@ const meta = {
19
19
  },
20
20
  },
21
21
  },
22
- tags: ["autodocs"],
23
22
  argTypes: {
24
23
  type: {
25
24
  control: { type: "radio" },
@@ -32,7 +32,6 @@ const meta = {
32
32
  },
33
33
  },
34
34
  },
35
- tags: ["autodocs"],
36
35
  } satisfies Meta<typeof AlertDialog>;
37
36
 
38
37
  export default meta;
@@ -15,7 +15,6 @@ const meta = {
15
15
  },
16
16
  },
17
17
  },
18
- tags: ["autodocs"],
19
18
  argTypes: {
20
19
  variant: {
21
20
  control: { type: "select" },
@@ -13,7 +13,6 @@ const meta = {
13
13
  },
14
14
  },
15
15
  },
16
- tags: ["autodocs"],
17
16
  argTypes: {
18
17
  ratio: {
19
18
  control: { type: "number", min: 0.1, max: 5, step: 0.1 },
@@ -14,7 +14,6 @@ const meta = {
14
14
  },
15
15
  },
16
16
  },
17
- tags: ["autodocs"],
18
17
  argTypes: {
19
18
  className: {
20
19
  control: { type: "text" },
@@ -14,7 +14,6 @@ const meta = {
14
14
  },
15
15
  },
16
16
  },
17
- tags: ["autodocs"],
18
17
  argTypes: {
19
18
  variant: {
20
19
  control: { type: "select" },
@@ -28,7 +28,6 @@ const meta = {
28
28
  },
29
29
  },
30
30
  },
31
- tags: ["autodocs"],
32
31
  argTypes: {
33
32
  // No direct props on Breadcrumb component, but we can show composition options
34
33
  children: {