@mivabyte/ui 26.9.21-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 (497) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/components/ui/accordion.cjs +76 -0
  4. package/dist/components/ui/accordion.cjs.map +1 -0
  5. package/dist/components/ui/accordion.d.cts +7 -0
  6. package/dist/components/ui/accordion.d.ts +8 -0
  7. package/dist/components/ui/accordion.d.ts.map +1 -0
  8. package/dist/components/ui/accordion.js +50 -0
  9. package/dist/components/ui/accordion.js.map +1 -0
  10. package/dist/components/ui/alert-dialog.cjs +232 -0
  11. package/dist/components/ui/alert-dialog.cjs.map +1 -0
  12. package/dist/components/ui/alert-dialog.d.cts +20 -0
  13. package/dist/components/ui/alert-dialog.d.ts +21 -0
  14. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  15. package/dist/components/ui/alert-dialog.js +199 -0
  16. package/dist/components/ui/alert-dialog.js.map +1 -0
  17. package/dist/components/ui/alert.cjs +81 -0
  18. package/dist/components/ui/alert.cjs.map +1 -0
  19. package/dist/components/ui/alert.d.cts +8 -0
  20. package/dist/components/ui/alert.d.ts +9 -0
  21. package/dist/components/ui/alert.d.ts.map +1 -0
  22. package/dist/components/ui/alert.js +57 -0
  23. package/dist/components/ui/alert.js.map +1 -0
  24. package/dist/components/ui/aspect-ratio.cjs +29 -0
  25. package/dist/components/ui/aspect-ratio.cjs.map +1 -0
  26. package/dist/components/ui/aspect-ratio.d.cts +5 -0
  27. package/dist/components/ui/aspect-ratio.d.ts +6 -0
  28. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  29. package/dist/components/ui/aspect-ratio.js +27 -0
  30. package/dist/components/ui/aspect-ratio.js.map +1 -0
  31. package/dist/components/ui/attachment.cjs +26 -0
  32. package/dist/components/ui/attachment.cjs.map +1 -0
  33. package/dist/components/ui/attachment.d.cts +4 -0
  34. package/dist/components/ui/attachment.d.ts +5 -0
  35. package/dist/components/ui/attachment.d.ts.map +1 -0
  36. package/dist/components/ui/attachment.js +24 -0
  37. package/dist/components/ui/attachment.js.map +1 -0
  38. package/dist/components/ui/avatar.cjs +72 -0
  39. package/dist/components/ui/avatar.cjs.map +1 -0
  40. package/dist/components/ui/avatar.d.cts +6 -0
  41. package/dist/components/ui/avatar.d.ts +7 -0
  42. package/dist/components/ui/avatar.d.ts.map +1 -0
  43. package/dist/components/ui/avatar.js +47 -0
  44. package/dist/components/ui/avatar.js.map +1 -0
  45. package/dist/components/ui/badge.cjs +71 -0
  46. package/dist/components/ui/badge.cjs.map +1 -0
  47. package/dist/components/ui/badge.d.cts +11 -0
  48. package/dist/components/ui/badge.d.ts +12 -0
  49. package/dist/components/ui/badge.d.ts.map +1 -0
  50. package/dist/components/ui/badge.js +48 -0
  51. package/dist/components/ui/badge.js.map +1 -0
  52. package/dist/components/ui/breadcrumb.cjs +122 -0
  53. package/dist/components/ui/breadcrumb.cjs.map +1 -0
  54. package/dist/components/ui/breadcrumb.d.cts +19 -0
  55. package/dist/components/ui/breadcrumb.d.ts +20 -0
  56. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  57. package/dist/components/ui/breadcrumb.js +94 -0
  58. package/dist/components/ui/breadcrumb.js.map +1 -0
  59. package/dist/components/ui/bubble.cjs +31 -0
  60. package/dist/components/ui/bubble.cjs.map +1 -0
  61. package/dist/components/ui/bubble.d.cts +6 -0
  62. package/dist/components/ui/bubble.d.ts +7 -0
  63. package/dist/components/ui/bubble.d.ts.map +1 -0
  64. package/dist/components/ui/bubble.js +29 -0
  65. package/dist/components/ui/bubble.js.map +1 -0
  66. package/dist/components/ui/button-group.cjs +18 -0
  67. package/dist/components/ui/button-group.cjs.map +1 -0
  68. package/dist/components/ui/button-group.d.cts +5 -0
  69. package/dist/components/ui/button-group.d.ts +6 -0
  70. package/dist/components/ui/button-group.d.ts.map +1 -0
  71. package/dist/components/ui/button-group.js +16 -0
  72. package/dist/components/ui/button-group.js.map +1 -0
  73. package/dist/components/ui/button.cjs +124 -0
  74. package/dist/components/ui/button.cjs.map +1 -0
  75. package/dist/components/ui/button.d.cts +16 -0
  76. package/dist/components/ui/button.d.ts +17 -0
  77. package/dist/components/ui/button.d.ts.map +1 -0
  78. package/dist/components/ui/button.js +101 -0
  79. package/dist/components/ui/button.js.map +1 -0
  80. package/dist/components/ui/calendar.cjs +302 -0
  81. package/dist/components/ui/calendar.cjs.map +1 -0
  82. package/dist/components/ui/calendar.d.cts +8 -0
  83. package/dist/components/ui/calendar.d.ts +9 -0
  84. package/dist/components/ui/calendar.d.ts.map +1 -0
  85. package/dist/components/ui/calendar.js +279 -0
  86. package/dist/components/ui/calendar.js.map +1 -0
  87. package/dist/components/ui/card.cjs +106 -0
  88. package/dist/components/ui/card.cjs.map +1 -0
  89. package/dist/components/ui/card.d.cts +11 -0
  90. package/dist/components/ui/card.d.ts +12 -0
  91. package/dist/components/ui/card.d.ts.map +1 -0
  92. package/dist/components/ui/card.js +79 -0
  93. package/dist/components/ui/card.js.map +1 -0
  94. package/dist/components/ui/carousel.cjs +312 -0
  95. package/dist/components/ui/carousel.cjs.map +1 -0
  96. package/dist/components/ui/carousel.d.cts +18 -0
  97. package/dist/components/ui/carousel.d.ts +19 -0
  98. package/dist/components/ui/carousel.d.ts.map +1 -0
  99. package/dist/components/ui/carousel.js +283 -0
  100. package/dist/components/ui/carousel.js.map +1 -0
  101. package/dist/components/ui/chart.cjs +270 -0
  102. package/dist/components/ui/chart.cjs.map +1 -0
  103. package/dist/components/ui/chart.d.cts +41 -0
  104. package/dist/components/ui/chart.d.ts +42 -0
  105. package/dist/components/ui/chart.d.ts.map +1 -0
  106. package/dist/components/ui/chart.js +241 -0
  107. package/dist/components/ui/chart.js.map +1 -0
  108. package/dist/components/ui/checkbox.cjs +57 -0
  109. package/dist/components/ui/checkbox.cjs.map +1 -0
  110. package/dist/components/ui/checkbox.d.cts +4 -0
  111. package/dist/components/ui/checkbox.d.ts +5 -0
  112. package/dist/components/ui/checkbox.d.ts.map +1 -0
  113. package/dist/components/ui/checkbox.js +34 -0
  114. package/dist/components/ui/checkbox.js.map +1 -0
  115. package/dist/components/ui/collapsible.cjs +34 -0
  116. package/dist/components/ui/collapsible.cjs.map +1 -0
  117. package/dist/components/ui/collapsible.d.cts +5 -0
  118. package/dist/components/ui/collapsible.d.ts +6 -0
  119. package/dist/components/ui/collapsible.d.ts.map +1 -0
  120. package/dist/components/ui/collapsible.js +10 -0
  121. package/dist/components/ui/collapsible.js.map +1 -0
  122. package/dist/components/ui/combobox.cjs +277 -0
  123. package/dist/components/ui/combobox.cjs.map +1 -0
  124. package/dist/components/ui/combobox.d.cts +15 -0
  125. package/dist/components/ui/combobox.d.ts +16 -0
  126. package/dist/components/ui/combobox.d.ts.map +1 -0
  127. package/dist/components/ui/combobox.js +254 -0
  128. package/dist/components/ui/combobox.js.map +1 -0
  129. package/dist/components/ui/command.cjs +244 -0
  130. package/dist/components/ui/command.cjs.map +1 -0
  131. package/dist/components/ui/command.d.cts +80 -0
  132. package/dist/components/ui/command.d.ts +81 -0
  133. package/dist/components/ui/command.d.ts.map +1 -0
  134. package/dist/components/ui/command.js +213 -0
  135. package/dist/components/ui/command.js.map +1 -0
  136. package/dist/components/ui/container.cjs +69 -0
  137. package/dist/components/ui/container.cjs.map +1 -0
  138. package/dist/components/ui/container.d.cts +11 -0
  139. package/dist/components/ui/container.d.ts +12 -0
  140. package/dist/components/ui/container.d.ts.map +1 -0
  141. package/dist/components/ui/container.js +46 -0
  142. package/dist/components/ui/container.js.map +1 -0
  143. package/dist/components/ui/context-menu.cjs +182 -0
  144. package/dist/components/ui/context-menu.cjs.map +1 -0
  145. package/dist/components/ui/context-menu.d.cts +27 -0
  146. package/dist/components/ui/context-menu.d.ts +28 -0
  147. package/dist/components/ui/context-menu.d.ts.map +1 -0
  148. package/dist/components/ui/context-menu.js +145 -0
  149. package/dist/components/ui/context-menu.js.map +1 -0
  150. package/dist/components/ui/data-table.cjs +139 -0
  151. package/dist/components/ui/data-table.cjs.map +1 -0
  152. package/dist/components/ui/data-table.d.cts +13 -0
  153. package/dist/components/ui/data-table.d.ts +14 -0
  154. package/dist/components/ui/data-table.d.ts.map +1 -0
  155. package/dist/components/ui/data-table.js +117 -0
  156. package/dist/components/ui/data-table.js.map +1 -0
  157. package/dist/components/ui/date-picker.cjs +304 -0
  158. package/dist/components/ui/date-picker.cjs.map +1 -0
  159. package/dist/components/ui/date-picker.d.cts +4 -0
  160. package/dist/components/ui/date-picker.d.ts +5 -0
  161. package/dist/components/ui/date-picker.d.ts.map +1 -0
  162. package/dist/components/ui/date-picker.js +282 -0
  163. package/dist/components/ui/date-picker.js.map +1 -0
  164. package/dist/components/ui/dialog.cjs +175 -0
  165. package/dist/components/ui/dialog.cjs.map +1 -0
  166. package/dist/components/ui/dialog.d.cts +34 -0
  167. package/dist/components/ui/dialog.d.ts +35 -0
  168. package/dist/components/ui/dialog.d.ts.map +1 -0
  169. package/dist/components/ui/dialog.js +143 -0
  170. package/dist/components/ui/dialog.js.map +1 -0
  171. package/dist/components/ui/direction.cjs +16 -0
  172. package/dist/components/ui/direction.cjs.map +1 -0
  173. package/dist/components/ui/direction.d.cts +2 -0
  174. package/dist/components/ui/direction.d.ts +3 -0
  175. package/dist/components/ui/direction.d.ts.map +1 -0
  176. package/dist/components/ui/direction.js +3 -0
  177. package/dist/components/ui/direction.js.map +1 -0
  178. package/dist/components/ui/drawer.cjs +130 -0
  179. package/dist/components/ui/drawer.cjs.map +1 -0
  180. package/dist/components/ui/drawer.d.cts +22 -0
  181. package/dist/components/ui/drawer.d.ts +23 -0
  182. package/dist/components/ui/drawer.d.ts.map +1 -0
  183. package/dist/components/ui/drawer.js +99 -0
  184. package/dist/components/ui/drawer.js.map +1 -0
  185. package/dist/components/ui/dropdown-menu.cjs +182 -0
  186. package/dist/components/ui/dropdown-menu.cjs.map +1 -0
  187. package/dist/components/ui/dropdown-menu.d.cts +27 -0
  188. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  189. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  190. package/dist/components/ui/dropdown-menu.js +145 -0
  191. package/dist/components/ui/dropdown-menu.js.map +1 -0
  192. package/dist/components/ui/empty.cjs +111 -0
  193. package/dist/components/ui/empty.cjs.map +1 -0
  194. package/dist/components/ui/empty.d.cts +11 -0
  195. package/dist/components/ui/empty.d.ts +12 -0
  196. package/dist/components/ui/empty.d.ts.map +1 -0
  197. package/dist/components/ui/empty.js +104 -0
  198. package/dist/components/ui/empty.js.map +1 -0
  199. package/dist/components/ui/field.cjs +285 -0
  200. package/dist/components/ui/field.cjs.map +1 -0
  201. package/dist/components/ui/field.d.cts +24 -0
  202. package/dist/components/ui/field.d.ts +25 -0
  203. package/dist/components/ui/field.d.ts.map +1 -0
  204. package/dist/components/ui/field.js +253 -0
  205. package/dist/components/ui/field.js.map +1 -0
  206. package/dist/components/ui/hover-card.cjs +55 -0
  207. package/dist/components/ui/hover-card.cjs.map +1 -0
  208. package/dist/components/ui/hover-card.d.cts +6 -0
  209. package/dist/components/ui/hover-card.d.ts +7 -0
  210. package/dist/components/ui/hover-card.d.ts.map +1 -0
  211. package/dist/components/ui/hover-card.js +30 -0
  212. package/dist/components/ui/hover-card.js.map +1 -0
  213. package/dist/components/ui/input-group.cjs +26 -0
  214. package/dist/components/ui/input-group.cjs.map +1 -0
  215. package/dist/components/ui/input-group.d.cts +4 -0
  216. package/dist/components/ui/input-group.d.ts +5 -0
  217. package/dist/components/ui/input-group.d.ts.map +1 -0
  218. package/dist/components/ui/input-group.js +24 -0
  219. package/dist/components/ui/input-group.js.map +1 -0
  220. package/dist/components/ui/input-otp.cjs +77 -0
  221. package/dist/components/ui/input-otp.cjs.map +1 -0
  222. package/dist/components/ui/input-otp.d.cts +36 -0
  223. package/dist/components/ui/input-otp.d.ts +37 -0
  224. package/dist/components/ui/input-otp.d.ts.map +1 -0
  225. package/dist/components/ui/input-otp.js +52 -0
  226. package/dist/components/ui/input-otp.js.map +1 -0
  227. package/dist/components/ui/input.cjs +52 -0
  228. package/dist/components/ui/input.cjs.map +1 -0
  229. package/dist/components/ui/input.d.cts +3 -0
  230. package/dist/components/ui/input.d.ts +4 -0
  231. package/dist/components/ui/input.d.ts.map +1 -0
  232. package/dist/components/ui/input.js +30 -0
  233. package/dist/components/ui/input.js.map +1 -0
  234. package/dist/components/ui/item.cjs +26 -0
  235. package/dist/components/ui/item.cjs.map +1 -0
  236. package/dist/components/ui/item.d.cts +5 -0
  237. package/dist/components/ui/item.d.ts +6 -0
  238. package/dist/components/ui/item.d.ts.map +1 -0
  239. package/dist/components/ui/item.js +24 -0
  240. package/dist/components/ui/item.js.map +1 -0
  241. package/dist/components/ui/kbd-group.cjs +74 -0
  242. package/dist/components/ui/kbd-group.cjs.map +1 -0
  243. package/dist/components/ui/kbd-group.d.cts +9 -0
  244. package/dist/components/ui/kbd-group.d.ts +10 -0
  245. package/dist/components/ui/kbd-group.d.ts.map +1 -0
  246. package/dist/components/ui/kbd-group.js +51 -0
  247. package/dist/components/ui/kbd-group.js.map +1 -0
  248. package/dist/components/ui/kbd.cjs +26 -0
  249. package/dist/components/ui/kbd.cjs.map +1 -0
  250. package/dist/components/ui/kbd.d.cts +5 -0
  251. package/dist/components/ui/kbd.d.ts +6 -0
  252. package/dist/components/ui/kbd.d.ts.map +1 -0
  253. package/dist/components/ui/kbd.js +24 -0
  254. package/dist/components/ui/kbd.js.map +1 -0
  255. package/dist/components/ui/label.cjs +49 -0
  256. package/dist/components/ui/label.cjs.map +1 -0
  257. package/dist/components/ui/label.d.cts +5 -0
  258. package/dist/components/ui/label.d.ts +6 -0
  259. package/dist/components/ui/label.d.ts.map +1 -0
  260. package/dist/components/ui/label.js +26 -0
  261. package/dist/components/ui/label.js.map +1 -0
  262. package/dist/components/ui/marker.cjs +17 -0
  263. package/dist/components/ui/marker.cjs.map +1 -0
  264. package/dist/components/ui/marker.d.cts +5 -0
  265. package/dist/components/ui/marker.d.ts +6 -0
  266. package/dist/components/ui/marker.d.ts.map +1 -0
  267. package/dist/components/ui/marker.js +15 -0
  268. package/dist/components/ui/marker.js.map +1 -0
  269. package/dist/components/ui/menubar.cjs +232 -0
  270. package/dist/components/ui/menubar.cjs.map +1 -0
  271. package/dist/components/ui/menubar.d.cts +28 -0
  272. package/dist/components/ui/menubar.d.ts +29 -0
  273. package/dist/components/ui/menubar.d.ts.map +1 -0
  274. package/dist/components/ui/menubar.js +194 -0
  275. package/dist/components/ui/menubar.js.map +1 -0
  276. package/dist/components/ui/message-scroller.cjs +79 -0
  277. package/dist/components/ui/message-scroller.cjs.map +1 -0
  278. package/dist/components/ui/message-scroller.d.cts +5 -0
  279. package/dist/components/ui/message-scroller.d.ts +6 -0
  280. package/dist/components/ui/message-scroller.d.ts.map +1 -0
  281. package/dist/components/ui/message-scroller.js +56 -0
  282. package/dist/components/ui/message-scroller.js.map +1 -0
  283. package/dist/components/ui/message.cjs +20 -0
  284. package/dist/components/ui/message.cjs.map +1 -0
  285. package/dist/components/ui/message.d.cts +6 -0
  286. package/dist/components/ui/message.d.ts +7 -0
  287. package/dist/components/ui/message.d.ts.map +1 -0
  288. package/dist/components/ui/message.js +18 -0
  289. package/dist/components/ui/message.js.map +1 -0
  290. package/dist/components/ui/native-select.cjs +49 -0
  291. package/dist/components/ui/native-select.cjs.map +1 -0
  292. package/dist/components/ui/native-select.d.cts +4 -0
  293. package/dist/components/ui/native-select.d.ts +5 -0
  294. package/dist/components/ui/native-select.d.ts.map +1 -0
  295. package/dist/components/ui/native-select.js +27 -0
  296. package/dist/components/ui/native-select.js.map +1 -0
  297. package/dist/components/ui/navigation-menu.cjs +137 -0
  298. package/dist/components/ui/navigation-menu.cjs.map +1 -0
  299. package/dist/components/ui/navigation-menu.d.cts +12 -0
  300. package/dist/components/ui/navigation-menu.d.ts +13 -0
  301. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  302. package/dist/components/ui/navigation-menu.js +106 -0
  303. package/dist/components/ui/navigation-menu.js.map +1 -0
  304. package/dist/components/ui/pagination.cjs +218 -0
  305. package/dist/components/ui/pagination.cjs.map +1 -0
  306. package/dist/components/ui/pagination.d.cts +28 -0
  307. package/dist/components/ui/pagination.d.ts +29 -0
  308. package/dist/components/ui/pagination.d.ts.map +1 -0
  309. package/dist/components/ui/pagination.js +190 -0
  310. package/dist/components/ui/pagination.js.map +1 -0
  311. package/dist/components/ui/popover.cjs +57 -0
  312. package/dist/components/ui/popover.cjs.map +1 -0
  313. package/dist/components/ui/popover.d.cts +7 -0
  314. package/dist/components/ui/popover.d.ts +8 -0
  315. package/dist/components/ui/popover.d.ts.map +1 -0
  316. package/dist/components/ui/popover.js +31 -0
  317. package/dist/components/ui/popover.js.map +1 -0
  318. package/dist/components/ui/progress.cjs +56 -0
  319. package/dist/components/ui/progress.cjs.map +1 -0
  320. package/dist/components/ui/progress.d.cts +4 -0
  321. package/dist/components/ui/progress.d.ts +5 -0
  322. package/dist/components/ui/progress.d.ts.map +1 -0
  323. package/dist/components/ui/progress.js +33 -0
  324. package/dist/components/ui/progress.js.map +1 -0
  325. package/dist/components/ui/questionnaire.cjs +17 -0
  326. package/dist/components/ui/questionnaire.cjs.map +1 -0
  327. package/dist/components/ui/questionnaire.d.cts +5 -0
  328. package/dist/components/ui/questionnaire.d.ts +6 -0
  329. package/dist/components/ui/questionnaire.d.ts.map +1 -0
  330. package/dist/components/ui/questionnaire.js +15 -0
  331. package/dist/components/ui/questionnaire.js.map +1 -0
  332. package/dist/components/ui/radio-group.cjs +65 -0
  333. package/dist/components/ui/radio-group.cjs.map +1 -0
  334. package/dist/components/ui/radio-group.d.cts +5 -0
  335. package/dist/components/ui/radio-group.d.ts +6 -0
  336. package/dist/components/ui/radio-group.d.ts.map +1 -0
  337. package/dist/components/ui/radio-group.js +41 -0
  338. package/dist/components/ui/radio-group.js.map +1 -0
  339. package/dist/components/ui/resizable.cjs +67 -0
  340. package/dist/components/ui/resizable.cjs.map +1 -0
  341. package/dist/components/ui/resizable.d.cts +7 -0
  342. package/dist/components/ui/resizable.d.ts +8 -0
  343. package/dist/components/ui/resizable.d.ts.map +1 -0
  344. package/dist/components/ui/resizable.js +43 -0
  345. package/dist/components/ui/resizable.js.map +1 -0
  346. package/dist/components/ui/scroll-area.cjs +67 -0
  347. package/dist/components/ui/scroll-area.cjs.map +1 -0
  348. package/dist/components/ui/scroll-area.d.cts +5 -0
  349. package/dist/components/ui/scroll-area.d.ts +6 -0
  350. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  351. package/dist/components/ui/scroll-area.js +43 -0
  352. package/dist/components/ui/scroll-area.js.map +1 -0
  353. package/dist/components/ui/select.cjs +154 -0
  354. package/dist/components/ui/select.cjs.map +1 -0
  355. package/dist/components/ui/select.d.cts +13 -0
  356. package/dist/components/ui/select.d.ts +14 -0
  357. package/dist/components/ui/select.d.ts.map +1 -0
  358. package/dist/components/ui/select.js +122 -0
  359. package/dist/components/ui/select.js.map +1 -0
  360. package/dist/components/ui/separator.cjs +54 -0
  361. package/dist/components/ui/separator.cjs.map +1 -0
  362. package/dist/components/ui/separator.d.cts +4 -0
  363. package/dist/components/ui/separator.d.ts +5 -0
  364. package/dist/components/ui/separator.d.ts.map +1 -0
  365. package/dist/components/ui/separator.js +31 -0
  366. package/dist/components/ui/separator.js.map +1 -0
  367. package/dist/components/ui/sheet.cjs +186 -0
  368. package/dist/components/ui/sheet.cjs.map +1 -0
  369. package/dist/components/ui/sheet.d.cts +32 -0
  370. package/dist/components/ui/sheet.d.ts +33 -0
  371. package/dist/components/ui/sheet.d.ts.map +1 -0
  372. package/dist/components/ui/sheet.js +154 -0
  373. package/dist/components/ui/sheet.js.map +1 -0
  374. package/dist/components/ui/sidebar.cjs +962 -0
  375. package/dist/components/ui/sidebar.cjs.map +1 -0
  376. package/dist/components/ui/sidebar.d.cts +75 -0
  377. package/dist/components/ui/sidebar.d.ts +76 -0
  378. package/dist/components/ui/sidebar.d.ts.map +1 -0
  379. package/dist/components/ui/sidebar.js +914 -0
  380. package/dist/components/ui/sidebar.js.map +1 -0
  381. package/dist/components/ui/skeleton.cjs +26 -0
  382. package/dist/components/ui/skeleton.cjs.map +1 -0
  383. package/dist/components/ui/skeleton.d.cts +2 -0
  384. package/dist/components/ui/skeleton.d.ts +3 -0
  385. package/dist/components/ui/skeleton.d.ts.map +1 -0
  386. package/dist/components/ui/skeleton.js +24 -0
  387. package/dist/components/ui/skeleton.js.map +1 -0
  388. package/dist/components/ui/slider.cjs +52 -0
  389. package/dist/components/ui/slider.cjs.map +1 -0
  390. package/dist/components/ui/slider.d.cts +4 -0
  391. package/dist/components/ui/slider.d.ts +5 -0
  392. package/dist/components/ui/slider.d.ts.map +1 -0
  393. package/dist/components/ui/slider.js +29 -0
  394. package/dist/components/ui/slider.js.map +1 -0
  395. package/dist/components/ui/spinner.cjs +26 -0
  396. package/dist/components/ui/spinner.cjs.map +1 -0
  397. package/dist/components/ui/spinner.d.cts +2 -0
  398. package/dist/components/ui/spinner.d.ts +3 -0
  399. package/dist/components/ui/spinner.d.ts.map +1 -0
  400. package/dist/components/ui/spinner.js +24 -0
  401. package/dist/components/ui/spinner.js.map +1 -0
  402. package/dist/components/ui/switch.cjs +57 -0
  403. package/dist/components/ui/switch.cjs.map +1 -0
  404. package/dist/components/ui/switch.d.cts +4 -0
  405. package/dist/components/ui/switch.d.ts +5 -0
  406. package/dist/components/ui/switch.d.ts.map +1 -0
  407. package/dist/components/ui/switch.js +34 -0
  408. package/dist/components/ui/switch.js.map +1 -0
  409. package/dist/components/ui/table.cjs +135 -0
  410. package/dist/components/ui/table.cjs.map +1 -0
  411. package/dist/components/ui/table.d.cts +10 -0
  412. package/dist/components/ui/table.d.ts +11 -0
  413. package/dist/components/ui/table.d.ts.map +1 -0
  414. package/dist/components/ui/table.js +106 -0
  415. package/dist/components/ui/table.js.map +1 -0
  416. package/dist/components/ui/tabs.cjs +78 -0
  417. package/dist/components/ui/tabs.cjs.map +1 -0
  418. package/dist/components/ui/tabs.d.cts +10 -0
  419. package/dist/components/ui/tabs.d.ts +11 -0
  420. package/dist/components/ui/tabs.d.ts.map +1 -0
  421. package/dist/components/ui/tabs.js +52 -0
  422. package/dist/components/ui/tabs.js.map +1 -0
  423. package/dist/components/ui/textarea.cjs +49 -0
  424. package/dist/components/ui/textarea.cjs.map +1 -0
  425. package/dist/components/ui/textarea.d.cts +3 -0
  426. package/dist/components/ui/textarea.d.ts +4 -0
  427. package/dist/components/ui/textarea.d.ts.map +1 -0
  428. package/dist/components/ui/textarea.js +27 -0
  429. package/dist/components/ui/textarea.js.map +1 -0
  430. package/dist/components/ui/toast.cjs +16 -0
  431. package/dist/components/ui/toast.cjs.map +1 -0
  432. package/dist/components/ui/toast.d.cts +2 -0
  433. package/dist/components/ui/toast.d.ts +3 -0
  434. package/dist/components/ui/toast.d.ts.map +1 -0
  435. package/dist/components/ui/toast.js +3 -0
  436. package/dist/components/ui/toast.js.map +1 -0
  437. package/dist/components/ui/toggle-group.cjs +102 -0
  438. package/dist/components/ui/toggle-group.cjs.map +1 -0
  439. package/dist/components/ui/toggle-group.d.cts +12 -0
  440. package/dist/components/ui/toggle-group.d.ts +13 -0
  441. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  442. package/dist/components/ui/toggle-group.js +77 -0
  443. package/dist/components/ui/toggle-group.js.map +1 -0
  444. package/dist/components/ui/toggle.cjs +68 -0
  445. package/dist/components/ui/toggle.cjs.map +1 -0
  446. package/dist/components/ui/toggle.d.cts +12 -0
  447. package/dist/components/ui/toggle.d.ts +13 -0
  448. package/dist/components/ui/toggle.d.ts.map +1 -0
  449. package/dist/components/ui/toggle.js +44 -0
  450. package/dist/components/ui/toggle.js.map +1 -0
  451. package/dist/components/ui/tooltip.cjs +55 -0
  452. package/dist/components/ui/tooltip.cjs.map +1 -0
  453. package/dist/components/ui/tooltip.d.cts +7 -0
  454. package/dist/components/ui/tooltip.d.ts +8 -0
  455. package/dist/components/ui/tooltip.d.ts.map +1 -0
  456. package/dist/components/ui/tooltip.js +29 -0
  457. package/dist/components/ui/tooltip.js.map +1 -0
  458. package/dist/components/ui/typography.cjs +159 -0
  459. package/dist/components/ui/typography.cjs.map +1 -0
  460. package/dist/components/ui/typography.d.cts +35 -0
  461. package/dist/components/ui/typography.d.ts +36 -0
  462. package/dist/components/ui/typography.d.ts.map +1 -0
  463. package/dist/components/ui/typography.js +132 -0
  464. package/dist/components/ui/typography.js.map +1 -0
  465. package/dist/fonts/ONEST-LICENSE.txt +93 -0
  466. package/dist/fonts/onest-latin-ext-wght-normal.woff2 +0 -0
  467. package/dist/fonts/onest-latin-wght-normal.woff2 +0 -0
  468. package/dist/hooks/use-direction.cjs +12 -0
  469. package/dist/hooks/use-direction.cjs.map +1 -0
  470. package/dist/hooks/use-direction.d.cts +2 -0
  471. package/dist/hooks/use-direction.d.ts +3 -0
  472. package/dist/hooks/use-direction.d.ts.map +1 -0
  473. package/dist/hooks/use-direction.js +3 -0
  474. package/dist/hooks/use-direction.js.map +1 -0
  475. package/dist/hooks/use-mobile.cjs +45 -0
  476. package/dist/hooks/use-mobile.cjs.map +1 -0
  477. package/dist/hooks/use-mobile.d.cts +1 -0
  478. package/dist/hooks/use-mobile.d.ts +2 -0
  479. package/dist/hooks/use-mobile.d.ts.map +1 -0
  480. package/dist/hooks/use-mobile.js +23 -0
  481. package/dist/hooks/use-mobile.js.map +1 -0
  482. package/dist/index.cjs +67 -0
  483. package/dist/index.cjs.map +1 -0
  484. package/dist/index.d.cts +86 -0
  485. package/dist/index.d.ts +87 -0
  486. package/dist/index.d.ts.map +1 -0
  487. package/dist/index.js +67 -0
  488. package/dist/index.js.map +1 -0
  489. package/dist/lib/utils.cjs +13 -0
  490. package/dist/lib/utils.cjs.map +1 -0
  491. package/dist/lib/utils.d.cts +2 -0
  492. package/dist/lib/utils.d.ts +3 -0
  493. package/dist/lib/utils.d.ts.map +1 -0
  494. package/dist/lib/utils.js +11 -0
  495. package/dist/lib/utils.js.map +1 -0
  496. package/dist/styles.css +2 -0
  497. package/package.json +931 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mivabyte
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,380 @@
1
+ # @mivabyte/ui
2
+
3
+ <div align="center">
4
+
5
+ [![Version](https://img.shields.io/npm/v/@mivabyte/ui?color=0ea5e9&label=version)](https://www.npmjs.com/package/@mivabyte/ui)
6
+ [![CI Verification](https://github.com/mivabyte/ui/actions/workflows/verify.yml/badge.svg?branch=main)](https://github.com/mivabyte/ui/actions/workflows/verify.yml)
7
+ [![Browser Tests](https://github.com/mivabyte/ui/actions/workflows/browser.yml/badge.svg?branch=main)](https://github.com/mivabyte/ui/actions/workflows/browser.yml)
8
+ [![Consumer Tests](https://github.com/mivabyte/ui/actions/workflows/consumer.yml/badge.svg?branch=main)](https://github.com/mivabyte/ui/actions/workflows/consumer.yml)
9
+ [![CodeQL](https://github.com/mivabyte/ui/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/mivabyte/ui/actions/workflows/codeql.yml)
10
+ [![React 19](https://img.shields.io/badge/React-19-61dafb.svg?logo=react&logoColor=white)](https://react.dev/)
11
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5-3178c6.svg?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
12
+ [![A11y WCAG AA](https://img.shields.io/badge/A11y-WCAG%202.1%20AA-success.svg)](https://www.w3.org/WAI/standards-guidelines/wcag/)
13
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
14
+
15
+ **The production-grade React 19 UI component system and semantic design tokens for high-craft applications, dashboards, and marketing surfaces.**
16
+
17
+ [Quick Start](#quick-start) •
18
+ [Component Catalog](#component-catalog) •
19
+ [Design System](#design-system-and-tokens) •
20
+ [Accessibility](#accessibility--motion) •
21
+ [Storybook](https://github.com/mivabyte/ui) •
22
+ [Documentation](docs/components.md)
23
+
24
+ </div>
25
+
26
+ ---
27
+
28
+ ## Highlights
29
+
30
+ - **📦 Zero Copy-Paste Required**: Shipped as a fully compiled, tree-shakeable npm package (`@mivabyte/ui`) with dual ESM and CommonJS exports and bundled TypeScript declarations.
31
+ - **🎨 Midnight, Cyan & Azure Visual System**: A cohesive, distinctive color language engineered with semantic HSL channels. Features rich deep navy dark surfaces, energetic cyan highlights, and crisp azure daylight actions.
32
+ - **⚡ 66 Production-Ready Component Primitives**: Built on battle-tested Radix UI and `@shadcn/react` foundations, from buttons and responsive dialogs to TanStack data tables and Recharts visualizations.
33
+ - **🎯 Precise Subpath Imports**: Fine-grained subpath exports (`@mivabyte/ui/button`, `@mivabyte/ui/card`, `@mivabyte/ui/dialog`) guarantee minimal bundle footprints and prevent barrel file bloat.
34
+ - **♿ WCAG 2.1 AA Compliance Built-In**: Fully tested with Axe Core across all components. Keyboard traps, accessible dialog lifecycles, ARIA roles, and high-contrast focus outlines work out of the box.
35
+ - **📏 Adaptive Density Scaling**: Seamlessly switch between spacious touch-friendly `comfortable` mode and information-dense `compact` desktop mode via `data-density`.
36
+ - **🔤 Self-Hosted Typography**: The Onest variable font is self-hosted and compiled directly into `@mivabyte/ui/styles.css` with zero external Google Fonts network dependencies.
37
+ - **🚀 Native React 19 & Next.js App Router**: Zero runtime CSS-in-JS overhead; fully compatible with React Server Components (RSC), Next.js 15+, Vite, and modern bundlers.
38
+
39
+ ---
40
+
41
+ ## Installation
42
+
43
+ Install `@mivabyte/ui` and its peer dependencies into your project:
44
+
45
+ ```bash
46
+ # npm
47
+ npm install @mivabyte/ui
48
+
49
+ # pnpm
50
+ pnpm add @mivabyte/ui
51
+
52
+ # yarn
53
+ yarn add @mivabyte/ui
54
+
55
+ # bun
56
+ bun add @mivabyte/ui
57
+ ```
58
+
59
+ > **Peer Dependency Requirement**: `@mivabyte/ui` requires `react >= 19.0.0` and `react-dom >= 19.0.0`.
60
+
61
+ ---
62
+
63
+ ## Quick start
64
+
65
+ ### 1. Import Global Styles
66
+
67
+ Import `@mivabyte/ui/styles.css` once at your application root (e.g. `app/layout.tsx`, `src/main.tsx`, or `_app.tsx`). It bundles Tailwind CSS utilities, self-hosted Onest variable fonts, and core design tokens:
68
+
69
+ ```tsx
70
+ // app/layout.tsx (Next.js App Router) or src/main.tsx (Vite)
71
+ import "@mivabyte/ui/styles.css"
72
+ ```
73
+
74
+ ### 2. Compose Your Application
75
+
76
+ ```tsx
77
+ import * as React from "react"
78
+ import { Button } from "@mivabyte/ui/button"
79
+ import {
80
+ Card,
81
+ CardContent,
82
+ CardDescription,
83
+ CardHeader,
84
+ CardTitle,
85
+ } from "@mivabyte/ui/card"
86
+ import { Field, FieldDescription, FieldLabel } from "@mivabyte/ui/field"
87
+ import { Input } from "@mivabyte/ui/input"
88
+ import { Toaster } from "@mivabyte/ui/toast"
89
+
90
+ export function ProjectSetup() {
91
+ const [name, setName] = React.useState("")
92
+
93
+ return (
94
+ <div className="flex min-h-screen items-center justify-center p-6 bg-background text-foreground">
95
+ <Card className="w-full max-w-md">
96
+ <CardHeader>
97
+ <CardTitle>Create Project</CardTitle>
98
+ <CardDescription>
99
+ Configure your workspace deployment settings.
100
+ </CardDescription>
101
+ </CardHeader>
102
+ <CardContent className="space-y-4">
103
+ <Field>
104
+ <FieldLabel htmlFor="project-name">Project name</FieldLabel>
105
+ <Input
106
+ id="project-name"
107
+ placeholder="e.g. Apollo Telemetry"
108
+ value={name}
109
+ onChange={(e) => setName(e.target.value)}
110
+ required
111
+ />
112
+ <FieldDescription>
113
+ Unique identifier used in API routing and logs.
114
+ </FieldDescription>
115
+ </Field>
116
+
117
+ <Button className="w-full" size="default">
118
+ Deploy workspace
119
+ </Button>
120
+ </CardContent>
121
+ </Card>
122
+ <Toaster />
123
+ </div>
124
+ )
125
+ }
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Import Architecture
131
+
132
+ `@mivabyte/ui` provides dual export paths to support both granular bundle optimization and rapid prototyping.
133
+
134
+ ### Subpath Imports (Recommended)
135
+
136
+ Subpath imports bypass root barrel files, ensuring optimal tree-shaking, fast bundler startup, and minimal production bundle sizes:
137
+
138
+ ```tsx
139
+ import { Button } from "@mivabyte/ui/button"
140
+ import { Card, CardContent, CardHeader } from "@mivabyte/ui/card"
141
+ import { DataTable } from "@mivabyte/ui/data-table"
142
+ import { Dialog, DialogContent, DialogTrigger } from "@mivabyte/ui/dialog"
143
+ import {
144
+ Field,
145
+ FieldLabel,
146
+ FieldDescription,
147
+ FieldError,
148
+ } from "@mivabyte/ui/field"
149
+ import { Input } from "@mivabyte/ui/input"
150
+ import { ChartContainer, ChartTooltip } from "@mivabyte/ui/chart"
151
+ import { Sidebar, SidebarTrigger } from "@mivabyte/ui/sidebar"
152
+ ```
153
+
154
+ ### Root Barrel Import
155
+
156
+ For rapid prototyping or small script bundles, all components and utilities are also accessible from the package root:
157
+
158
+ ```tsx
159
+ import { Badge, Button, Card, Dialog, Input, Tabs, Tooltip } from "@mivabyte/ui"
160
+ ```
161
+
162
+ > **Authoritative Export Catalog**: For the complete machine-verified subpath and module inventory, consult [`docs/generated/exports.md`](docs/generated/exports.md).
163
+
164
+ ---
165
+
166
+ ## Component Catalog
167
+
168
+ `@mivabyte/ui` contains **66 component modules**, grouped into logical architectural families:
169
+
170
+ | Category | Primitives & Modules |
171
+ | :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
172
+ | **Actions & Triggers** | [`Button`](docs/components.md#button), [`ButtonGroup`](docs/components.md#button-group), [`Toggle`](docs/components.md#toggle), [`ToggleGroup`](docs/components.md#toggle-group) |
173
+ | **Forms & User Input** | [`Input`](docs/components.md#input), [`InputGroup`](docs/components.md#input-group), [`InputOTP`](docs/components.md#input-otp), [`Textarea`](docs/components.md#textarea), [`Checkbox`](docs/components.md#checkbox), [`RadioGroup`](docs/components.md#radio-group), [`Select`](docs/components.md#select), [`NativeSelect`](docs/components.md#native-select), [`Switch`](docs/components.md#switch), [`Slider`](docs/components.md#slider), [`DatePicker`](docs/components.md#date-picker), [`Calendar`](docs/components.md#calendar), [`Field`](docs/components.md#field), [`Combobox`](docs/components.md#combobox), [`Questionnaire`](docs/components.md#questionnaire) |
174
+ | **Overlays & Dialogs** | [`Dialog`](docs/components.md#dialog), [`AlertDialog`](docs/components.md#alert-dialog), [`Sheet`](docs/components.md#sheet), [`Drawer`](docs/components.md#drawer), [`Popover`](docs/components.md#popover), [`Tooltip`](docs/components.md#tooltip), [`HoverCard`](docs/components.md#hover-card), [`ContextMenu`](docs/components.md#context-menu), [`DropdownMenu`](docs/components.md#dropdown-menu), [`Command`](docs/components.md#command) |
175
+ | **Navigation** | [`NavigationMenu`](docs/components.md#navigation-menu), [`Breadcrumb`](docs/components.md#breadcrumb), [`Pagination`](docs/components.md#pagination), [`Tabs`](docs/components.md#tabs), [`Menubar`](docs/components.md#menubar), [`Sidebar`](docs/components.md#sidebar), [`Direction`](docs/components.md#direction) |
176
+ | **Layout & Structure** | [`Container`](docs/components.md#container), [`Card`](docs/components.md#card), [`Separator`](docs/components.md#separator), [`Resizable`](docs/components.md#resizable), [`ScrollArea`](docs/components.md#scroll-area), [`AspectRatio`](docs/components.md#aspect-ratio), [`Collapsible`](docs/components.md#collapsible), [`Accordion`](docs/components.md#accordion) |
177
+ | **Data Display & Content** | [`DataTable`](docs/components.md#data-table), [`Table`](docs/components.md#table), [`Badge`](docs/components.md#badge), [`Avatar`](docs/components.md#avatar), [`Skeleton`](docs/components.md#skeleton), [`Empty`](docs/components.md#empty), [`Item`](docs/components.md#item), [`Bubble`](docs/components.md#bubble), [`Attachment`](docs/components.md#attachment), [`Marker`](docs/components.md#marker), [`Message`](docs/components.md#message), [`MessageScroller`](docs/components.md#message-scroller), [`Carousel`](docs/components.md#carousel), [`Kbd`](docs/components.md#kbd), [`KbdGroup`](docs/components.md#kbd-group) |
178
+ | **Typography** | [`Heading`](docs/components.md#typography), [`Text`](docs/components.md#typography), [`Eyebrow`](docs/components.md#typography), [`Label`](docs/components.md#label) |
179
+ | **Feedback & Status** | [`Alert`](docs/components.md#alert), [`Progress`](docs/components.md#progress), [`Spinner`](docs/components.md#spinner), [`Toast`](docs/components.md#toast) (`Toaster`, `toast`) |
180
+ | **Data Visualization** | [`Chart`](docs/components.md#chart) (`ChartContainer`, `ChartTooltip`, `ChartTooltipContent`, `ChartLegend`, `ChartLegendContent`) |
181
+
182
+ For comprehensive API signatures, props interfaces, and code examples for every component, refer to [`docs/components.md`](docs/components.md).
183
+
184
+ ---
185
+
186
+ ## Design System and Tokens
187
+
188
+ The Mivabyte design system balances technical precision with warm human typography and deliberate visual depth. Read [DESIGN.md](DESIGN.md) for the complete design contract.
189
+
190
+ ### The Midnight, Cyan & Azure Palette
191
+
192
+ - **Light Mode (`:root` / `.light`)**: A clean, cool canvas (`--background: 202 68% 97%`) anchored by an Azure action tone (`--primary: 198 92% 31%`), providing high clarity without harsh starkness.
193
+ - **Dark Mode (`.dark`)**: A rich Midnight navy canvas (`--background: 218 63% 6%`) illuminated by vibrant Cyan accents (`--primary: 188 86% 53%` and `--accent: 194 57% 17%`).
194
+
195
+ To enable dark mode, toggle the `.dark` class on the `<html>` or `<body>` element:
196
+
197
+ ```html
198
+ <html class="dark">
199
+ <!-- Themed automatically -->
200
+ </html>
201
+ ```
202
+
203
+ ### Surface Elevation Hierarchy
204
+
205
+ Elevation in Mivabyte UI is communicated via structured tonal layers rather than exaggerated shadows:
206
+
207
+ ```
208
+ Canvas (--background)
209
+ └── Section Layer (--section)
210
+ └── Card / Surface Layer (--surface)
211
+ └── Floating / Elevated Layer (--surface-elevated, --popover)
212
+ └── Interactive Highlight (--surface-interactive)
213
+ ```
214
+
215
+ ### Density Control
216
+
217
+ Mivabyte UI supports contextual interface density via the `data-density` attribute:
218
+
219
+ - `data-density="comfortable"` _(Default)_: 44px control height, spacious touch padding, fluid reading rhythms.
220
+ - `data-density="compact"`: 32px control height on desktop, tight information hierarchy designed for data grids and dense operator consoles.
221
+
222
+ ```tsx
223
+ {
224
+ /* Dense workspace region */
225
+ }
226
+ ;<div data-density="compact" className="space-y-2">
227
+ <Input placeholder="Filter records..." />
228
+ <Button size="compact">Search</Button>
229
+ </div>
230
+ ```
231
+
232
+ > **Touch Target Safety**: When viewed on touch devices or coarse pointers, Mivabyte UI automatically retains accessible 44px minimum target areas even in `compact` density mode.
233
+
234
+ ### Typography System
235
+
236
+ The visual role of text is strictly separated from the underlying semantic HTML element:
237
+
238
+ ```tsx
239
+ import { Heading, Text, Eyebrow } from "@mivabyte/ui/typography"
240
+
241
+ ;<section className="space-y-3">
242
+ <Eyebrow>Platform Architecture</Eyebrow>
243
+ <Heading variant="display" render={<h1 />}>
244
+ Engineered for mission-critical velocity.
245
+ </Heading>
246
+ <Text variant="lead">
247
+ High-craft components with zero-compromise accessibility.
248
+ </Text>
249
+ </section>
250
+ ```
251
+
252
+ - **Heading Variants**: `display`, `statement`, `page`, `section`, `title`, `card`, `signal`.
253
+ - **Text Variants**: `lead`, `body`, `muted`, `code`.
254
+
255
+ ---
256
+
257
+ ## Forms & Validation
258
+
259
+ Form composition uses semantic helper primitives that manage labels, helper descriptions, and error announcements while leaving DOM identifiers and binding under consumer control:
260
+
261
+ ```tsx
262
+ import {
263
+ Field,
264
+ FieldLabel,
265
+ FieldDescription,
266
+ FieldError,
267
+ } from "@mivabyte/ui/field"
268
+ import { Input } from "@mivabyte/ui/input"
269
+
270
+ ;<Field>
271
+ <FieldLabel htmlFor="email">Work Email</FieldLabel>
272
+ <Input
273
+ id="email"
274
+ type="email"
275
+ aria-describedby="email-desc"
276
+ placeholder="alex@mivabyte.com"
277
+ />
278
+ <FieldDescription id="email-desc">
279
+ We will never share your email with third parties.
280
+ </FieldDescription>
281
+ {/* <FieldError>Invalid email address</FieldError> */}
282
+ </Field>
283
+ ```
284
+
285
+ Compatible with `react-hook-form`, `zod`, `Formik`, or standard HTML form submissions.
286
+
287
+ ---
288
+
289
+ ## Accessibility & Motion
290
+
291
+ - **A11y Standards**: Strict WCAG 2.1 Level AA compliance across all components, validated with automated Axe Core integration tests.
292
+ - **Keyboard Navigation**: Native keyboard orchestration across all complex families (Arrow navigation in Menubars, Dropdowns, and Tabs; Escape key dismissal for Overlays; Tab cycling with focus trapping in Dialogs and Sheets).
293
+ - **Reduced Motion**: All animations and transitions automatically respect user preferences via `@media (prefers-reduced-motion: reduce)`. Essential loading indicators (such as `Skeleton` and `Spinner`) retain visible state without animated pulsation.
294
+ - **High-Contrast & Forced Colors**: Tested and hardened against Windows High Contrast mode and browser forced-colors environments. Focus rings use double-offset styling for clear visibility over any surface.
295
+
296
+ ---
297
+
298
+ ## Interactive Storybook
299
+
300
+ Storybook provides an interactive sandbox for inspecting all 66 components, their token foundations, and complete full-page compositions (marketing websites and administrative dashboards).
301
+
302
+ ```bash
303
+ # Start local Storybook development server
304
+ npm run storybook
305
+ ```
306
+
307
+ CI strictly verifies that every registered component in `config/components.mjs` has a corresponding Storybook story with zero orphan primitives.
308
+
309
+ ---
310
+
311
+ ## Development & Testing
312
+
313
+ Mivabyte UI maintains an exhaustive verification suite with zero tolerance for broken types, missing exports, bundle regressions, or accessibility failures.
314
+
315
+ ### Local Verification
316
+
317
+ ```bash
318
+ # Clean dependency installation (avoids executing arbitrary lifecycle scripts)
319
+ npm ci --ignore-scripts
320
+
321
+ # Run the complete verification suite
322
+ npm run verify
323
+ ```
324
+
325
+ The canonical `npm run verify` command runs:
326
+
327
+ 1. **`lint`**: ESLint rules across all source, story, test, and script files.
328
+ 2. **`format:check`**: Prettier code style validation.
329
+ 3. **`audit:source`**: Security audit forbidding unsafe code generation patterns.
330
+ 4. **`registry:check`**: Validates consistency between component catalog, source, and exports.
331
+ 5. **`storybook:check`**: Verifies 100% story coverage across all components.
332
+ 6. **`typecheck`**: TypeScript check with strict compiler configurations.
333
+ 7. **`build`**: Builds ESM and CJS bundles (`tsup`), compiles CSS (`tailwindcss`), and emits declaration files.
334
+ 8. **`bundle:check`**: Enforces strict bundle budgets on all distribution targets.
335
+ 9. **`test:contracts`**: Verifies package export contracts and upstream baseline guarantees.
336
+ 10. **`pack:check`**: Builds a dry-run tarball and validates packed package contents.
337
+ 11. **`package:lint`**: Runs `publint` (package export health) and `attw` (Are The Types Wrong).
338
+ 12. **`api:check`**: Validates public surface against Microsoft API Extractor contract report.
339
+ 13. **`test:coverage`**: Executes Vitest unit tests with v8 code coverage reporting.
340
+
341
+ ### End-to-End & Design Testing
342
+
343
+ ```bash
344
+ # Run Playwright E2E browser tests across Chromium, Firefox, WebKit
345
+ npm run test:e2e
346
+
347
+ # Run Playwright design, accessibility, and composition tests
348
+ npm run test:design
349
+ ```
350
+
351
+ ---
352
+
353
+ ## Releases & Governance
354
+
355
+ - **Changeset-Driven**: All releases are declared using [Changesets](https://github.com/changesets/changesets). Every user-facing feature or fix includes a changeset markdown file.
356
+ - **Calendar Versioning (CalVer)**: Releases follow the format `YY.M.D-patch` (e.g. `26.9.10-1`).
357
+ - **Cryptographic Provenance**: Published directly through GitHub Actions with OpenID Connect (OIDC) token exchange, npm provenance attestations, and zero static token storage.
358
+ - **Registry Release Probe**: Post-publish CI job pulls the newly released package from npm and executes integration smoke tests in clean Vite and Next.js consumer fixtures.
359
+
360
+ See [`docs/maintainers/releases.md`](docs/maintainers/releases.md) for maintainer publishing procedures.
361
+
362
+ ---
363
+
364
+ ## Documentation Directory
365
+
366
+ | Document | Purpose |
367
+ | :----------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- |
368
+ | **[`DESIGN.md`](DESIGN.md)** | Canonical design contract, color philosophy, typography, and motion specifications |
369
+ | **[`docs/components.md`](docs/components.md)** | Complete component catalog, API signatures, and usage patterns |
370
+ | **[`docs/generated/exports.md`](docs/generated/exports.md)** | Machine-generated authoritative package export and subpath map |
371
+ | **[`docs/upstream/component-parity.md`](docs/upstream/component-parity.md)** | Parity tracking against upstream shadcn/ui primitives |
372
+ | **[`docs/accessibility/keyboard-interactions.md`](docs/accessibility/keyboard-interactions.md)** | Keyboard interaction and focus management specification |
373
+ | **[`docs/maintainers/releases.md`](docs/maintainers/releases.md)** | Release workflow and publishing procedures |
374
+ | **[`docs/migration/shadcn-compatible-release.md`](docs/migration/shadcn-compatible-release.md)** | Migration guide from legacy versions to the pure Radix/shadcn distribution |
375
+
376
+ ---
377
+
378
+ ## License
379
+
380
+ MIT © [Mivabyte](https://github.com/mivabyte)
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var AccordionPrimitive = require('@radix-ui/react-accordion');
5
+ var lucideReact = require('lucide-react');
6
+ var clsx = require('clsx');
7
+ var tailwindMerge = require('tailwind-merge');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function _interopNamespace(e) {
11
+ if (e && e.__esModule) return e;
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
29
+ var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
30
+
31
+ function cn(...inputs) {
32
+ return tailwindMerge.twMerge(clsx.clsx(inputs));
33
+ }
34
+ var Accordion = AccordionPrimitive__namespace.Root;
35
+ var AccordionItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
36
+ AccordionPrimitive__namespace.Item,
37
+ {
38
+ ref,
39
+ className: cn("border-b", className),
40
+ ...props
41
+ }
42
+ ));
43
+ AccordionItem.displayName = "AccordionItem";
44
+ var AccordionTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(AccordionPrimitive__namespace.Header, { className: "flex", children: /* @__PURE__ */ jsxRuntime.jsxs(
45
+ AccordionPrimitive__namespace.Trigger,
46
+ {
47
+ ref,
48
+ className: cn(
49
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
50
+ className
51
+ ),
52
+ ...props,
53
+ children: [
54
+ children,
55
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
56
+ ]
57
+ }
58
+ ) }));
59
+ AccordionTrigger.displayName = AccordionPrimitive__namespace.Trigger.displayName;
60
+ var AccordionContent = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
61
+ AccordionPrimitive__namespace.Content,
62
+ {
63
+ ref,
64
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
65
+ ...props,
66
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("pb-4 pt-0", className), children })
67
+ }
68
+ ));
69
+ AccordionContent.displayName = AccordionPrimitive__namespace.Content.displayName;
70
+
71
+ exports.Accordion = Accordion;
72
+ exports.AccordionContent = AccordionContent;
73
+ exports.AccordionItem = AccordionItem;
74
+ exports.AccordionTrigger = AccordionTrigger;
75
+ //# sourceMappingURL=accordion.cjs.map
76
+ //# sourceMappingURL=accordion.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/accordion.tsx"],"names":["twMerge","clsx","AccordionPrimitive","React","jsx","jsxs","ChevronDown"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAOA,qBAAA,CAAQC,SAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACGA,IAAM,SAAA,GAA+BC,6BAAA,CAAA;AAErC,IAAM,aAAA,GAAsBC,4BAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1BC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyBC,gBAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA,CAAoBF,6BAAA,CAAA,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAAG,eAAA;AAAA,EAAoBH,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACDE,cAAA,CAACE,uBAAA,EAAA,EAAY,SAAA,EAAU,0EAAA,EAA2E;AAAA;AAAA;AACpG,CAAA,EACF,CACD;AACD,gBAAA,CAAiB,cAAiCJ,6BAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyBC,4BAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpCC,cAAA;AAAA,EAAoBF,6BAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,2GAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,yCAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD;AACD,gBAAA,CAAiB,cAAiCA,6BAAA,CAAA,OAAA,CAAQ,WAAA","file":"accordion.cjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"]}
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import * as AccordionPrimitive from "@radix-ui/react-accordion";
3
+ declare const Accordion: React.ForwardRefExoticComponent<(AccordionPrimitive.AccordionSingleProps | AccordionPrimitive.AccordionMultipleProps) & React.RefAttributes<HTMLDivElement>>;
4
+ declare const AccordionItem: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
5
+ declare const AccordionTrigger: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
6
+ declare const AccordionContent: React.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/components/ui/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAK/D,QAAA,MAAM,SAAS,8JAA0B,CAAA;AAEzC,QAAA,MAAM,aAAa,iKASjB,CAAA;AAGF,QAAA,MAAM,gBAAgB,0KAiBpB,CAAA;AAGF,QAAA,MAAM,gBAAgB,oKAWpB,CAAA;AAGF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
+ import { ChevronDown } from 'lucide-react';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs } from 'react/jsx-runtime';
7
+
8
+ function cn(...inputs) {
9
+ return twMerge(clsx(inputs));
10
+ }
11
+ var Accordion = AccordionPrimitive.Root;
12
+ var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
13
+ AccordionPrimitive.Item,
14
+ {
15
+ ref,
16
+ className: cn("border-b", className),
17
+ ...props
18
+ }
19
+ ));
20
+ AccordionItem.displayName = "AccordionItem";
21
+ var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
22
+ AccordionPrimitive.Trigger,
23
+ {
24
+ ref,
25
+ className: cn(
26
+ "flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
27
+ className
28
+ ),
29
+ ...props,
30
+ children: [
31
+ children,
32
+ /* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
33
+ ]
34
+ }
35
+ ) }));
36
+ AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
37
+ var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
38
+ AccordionPrimitive.Content,
39
+ {
40
+ ref,
41
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
42
+ ...props,
43
+ children: /* @__PURE__ */ jsx("div", { className: cn("pb-4 pt-0", className), children })
44
+ }
45
+ ));
46
+ AccordionContent.displayName = AccordionPrimitive.Content.displayName;
47
+
48
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
49
+ //# sourceMappingURL=accordion.js.map
50
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/ui/accordion.tsx"],"names":[],"mappings":";;;;;;;AAGO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B;ACGA,IAAM,SAAA,GAA+B,kBAAA,CAAA;AAErC,IAAM,aAAA,GAAsB,iBAG1B,CAAC,EAAE,WAAW,GAAG,KAAA,IAAS,GAAA,qBAC1B,GAAA;AAAA,EAAoB,kBAAA,CAAA,IAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,IAClC,GAAG;AAAA;AACN,CACD;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,IAAM,gBAAA,GAAyB,KAAA,CAAA,UAAA,CAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC,GAAA,CAAoB,kBAAA,CAAA,MAAA,EAAnB,EAA0B,WAAU,MAAA,EACnC,QAAA,kBAAA,IAAA;AAAA,EAAoB,kBAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,gJAAA;AAAA,MACA;AAAA,KACF;AAAA,IACC,GAAG,KAAA;AAAA,IAEH,QAAA,EAAA;AAAA,MAAA,QAAA;AAAA,sBACD,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,0EAAA,EAA2E;AAAA;AAAA;AACpG,CAAA,EACF,CACD;AACD,gBAAA,CAAiB,cAAiC,kBAAA,CAAA,OAAA,CAAQ,WAAA;AAE1D,IAAM,gBAAA,GAAyB,iBAG7B,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACpC,GAAA;AAAA,EAAoB,kBAAA,CAAA,OAAA;AAAA,EAAnB;AAAA,IACC,GAAA;AAAA,IACA,SAAA,EAAU,2GAAA;AAAA,IACT,GAAG,KAAA;AAAA,IAEJ,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,WAAA,EAAa,SAAS,GAAI,QAAA,EAAS;AAAA;AACxD,CACD;AACD,gBAAA,CAAiB,cAAiC,kBAAA,CAAA,OAAA,CAAQ,WAAA","file":"accordion.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"]}