@hanzo/ui 5.0.3 → 5.1.0

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 (517) hide show
  1. package/README.md +192 -185
  2. package/bin/cli.js +100 -0
  3. package/bin/create-registry.js +108 -0
  4. package/bin/mcp.js +403 -0
  5. package/bin/npx-registry-mcp.js +15 -0
  6. package/bin/registry-mcp-wrapper.sh +19 -0
  7. package/bin/registry-mcp.js +100 -0
  8. package/bin/start-mcp-server.sh +22 -0
  9. package/bin/test-mcp.sh +52 -0
  10. package/bin/update-registry.js +196 -0
  11. package/dist/accordion.js +1 -0
  12. package/dist/accordion.mjs +1 -0
  13. package/dist/alert-dialog.js +1 -0
  14. package/dist/alert-dialog.mjs +1 -0
  15. package/dist/alert.js +1 -0
  16. package/dist/alert.mjs +1 -0
  17. package/dist/avatar.js +1 -0
  18. package/dist/avatar.mjs +1 -0
  19. package/dist/badge.js +1 -0
  20. package/dist/badge.mjs +1 -0
  21. package/dist/breadcrumb.js +1 -0
  22. package/dist/breadcrumb.mjs +1 -0
  23. package/dist/calendar.js +1 -0
  24. package/dist/calendar.mjs +1 -0
  25. package/dist/carousel.js +1 -0
  26. package/dist/carousel.mjs +1 -0
  27. package/dist/checkbox.js +1 -0
  28. package/dist/checkbox.mjs +1 -0
  29. package/dist/chunk-3H5S2OQ3.mjs +1 -0
  30. package/dist/chunk-5GRJ7UQX.js +1 -0
  31. package/dist/chunk-63HNMH7C.js +1 -0
  32. package/dist/chunk-72TOQ4DM.mjs +1 -0
  33. package/dist/chunk-7AEFTV5R.mjs +1 -0
  34. package/dist/chunk-7M4AVV2R.js +1 -0
  35. package/dist/chunk-DKPVJSBC.js +1 -0
  36. package/dist/chunk-EI7MMDWY.js +1 -0
  37. package/dist/chunk-GANGDIZG.mjs +1 -0
  38. package/dist/chunk-GRGT2Z4K.js +1 -0
  39. package/dist/chunk-JCUUC6NY.mjs +1 -0
  40. package/dist/chunk-JUQMWLIN.js +1 -0
  41. package/dist/chunk-PRVEIITE.js +1 -0
  42. package/dist/chunk-SH52AKNZ.js +1 -0
  43. package/dist/chunk-TU67EJEW.mjs +1 -0
  44. package/dist/chunk-WN5KN73U.mjs +1 -0
  45. package/dist/chunk-YSXGDEY5.mjs +1 -0
  46. package/dist/chunk-Z76OOVUE.mjs +1 -0
  47. package/dist/collapsible.js +1 -0
  48. package/dist/collapsible.mjs +1 -0
  49. package/dist/command.js +1 -0
  50. package/dist/command.mjs +1 -0
  51. package/dist/context-menu.js +1 -0
  52. package/dist/context-menu.mjs +1 -0
  53. package/dist/dialog.js +1 -0
  54. package/dist/dialog.mjs +1 -0
  55. package/dist/drawer.js +1 -0
  56. package/dist/drawer.mjs +1 -0
  57. package/dist/dropdown-menu.js +1 -0
  58. package/dist/dropdown-menu.mjs +1 -0
  59. package/dist/form.js +1 -0
  60. package/dist/form.mjs +1 -0
  61. package/dist/hover-card.js +1 -0
  62. package/dist/hover-card.mjs +1 -0
  63. package/dist/index.js +1 -1096
  64. package/dist/index.mjs +1 -47
  65. package/dist/input-otp.js +1 -0
  66. package/dist/input-otp.mjs +1 -0
  67. package/dist/lib/utils.js +1 -12
  68. package/dist/lib/utils.mjs +1 -3
  69. package/dist/navigation-menu.js +1 -0
  70. package/dist/navigation-menu.mjs +1 -0
  71. package/dist/popover.js +1 -0
  72. package/dist/popover.mjs +1 -0
  73. package/dist/progress.js +1 -0
  74. package/dist/progress.mjs +1 -0
  75. package/dist/radio-group.js +1 -0
  76. package/dist/radio-group.mjs +1 -0
  77. package/dist/resizable.js +1 -0
  78. package/dist/resizable.mjs +1 -0
  79. package/dist/scroll-area.js +1 -0
  80. package/dist/scroll-area.mjs +1 -0
  81. package/dist/select.js +1 -0
  82. package/dist/select.mjs +1 -0
  83. package/dist/separator.js +1 -0
  84. package/dist/separator.mjs +1 -0
  85. package/dist/sheet.js +1 -0
  86. package/dist/sheet.mjs +1 -0
  87. package/dist/skeleton.js +1 -0
  88. package/dist/skeleton.mjs +1 -0
  89. package/dist/slider.js +1 -0
  90. package/dist/slider.mjs +1 -0
  91. package/dist/sonner.js +1 -0
  92. package/dist/sonner.mjs +1 -0
  93. package/dist/src/utils.js +1 -0
  94. package/dist/src/utils.mjs +1 -0
  95. package/dist/switch.js +1 -0
  96. package/dist/switch.mjs +1 -0
  97. package/dist/table.js +1 -0
  98. package/dist/table.mjs +1 -0
  99. package/dist/tabs.js +1 -0
  100. package/dist/tabs.mjs +1 -0
  101. package/dist/tailwind/index.js +1 -0
  102. package/dist/tailwind/index.mjs +1 -0
  103. package/dist/textarea.js +1 -0
  104. package/dist/textarea.mjs +1 -0
  105. package/dist/toggle-group.js +1 -0
  106. package/dist/toggle-group.mjs +1 -0
  107. package/dist/toggle.js +1 -0
  108. package/dist/toggle.mjs +1 -0
  109. package/dist/tooltip.js +1 -0
  110. package/dist/tooltip.mjs +1 -0
  111. package/dist/types/index.js +1 -0
  112. package/dist/types/index.mjs +1 -0
  113. package/package.json +303 -155
  114. package/style/drawer.css +163 -0
  115. package/style/globals.css +13 -0
  116. package/style/hanzo-common.css +31 -0
  117. package/style/hanzo-default-colors.css +82 -0
  118. package/style/theme-provider.tsx +20 -0
  119. package/CHANGELOG.md +0 -184
  120. package/LICENSE +0 -21
  121. package/dist/ai/index.js +0 -53
  122. package/dist/ai/index.js.map +0 -1
  123. package/dist/ai/index.mjs +0 -4
  124. package/dist/ai/index.mjs.map +0 -1
  125. package/dist/blocks/index.js +0 -983
  126. package/dist/blocks/index.js.map +0 -1
  127. package/dist/blocks/index.mjs +0 -945
  128. package/dist/blocks/index.mjs.map +0 -1
  129. package/dist/calendar/index.js +0 -14
  130. package/dist/calendar/index.js.map +0 -1
  131. package/dist/calendar/index.mjs +0 -5
  132. package/dist/calendar/index.mjs.map +0 -1
  133. package/dist/carousel/index.js +0 -220
  134. package/dist/carousel/index.js.map +0 -1
  135. package/dist/carousel/index.mjs +0 -191
  136. package/dist/carousel/index.mjs.map +0 -1
  137. package/dist/charts/index.js +0 -945
  138. package/dist/charts/index.js.map +0 -1
  139. package/dist/charts/index.mjs +0 -901
  140. package/dist/charts/index.mjs.map +0 -1
  141. package/dist/chunk-26T4V5QU.mjs +0 -111
  142. package/dist/chunk-26T4V5QU.mjs.map +0 -1
  143. package/dist/chunk-2A5KXDLJ.js +0 -22
  144. package/dist/chunk-2A5KXDLJ.js.map +0 -1
  145. package/dist/chunk-2CJ4HMF4.js +0 -79
  146. package/dist/chunk-2CJ4HMF4.js.map +0 -1
  147. package/dist/chunk-2OIQKC5E.js +0 -236
  148. package/dist/chunk-2OIQKC5E.js.map +0 -1
  149. package/dist/chunk-2X3KSYBN.js +0 -44
  150. package/dist/chunk-2X3KSYBN.js.map +0 -1
  151. package/dist/chunk-3PBQGYR7.mjs +0 -100
  152. package/dist/chunk-3PBQGYR7.mjs.map +0 -1
  153. package/dist/chunk-3POQQ6L7.js +0 -62
  154. package/dist/chunk-3POQQ6L7.js.map +0 -1
  155. package/dist/chunk-4B47GITH.mjs +0 -28
  156. package/dist/chunk-4B47GITH.mjs.map +0 -1
  157. package/dist/chunk-4BC2OH6B.js +0 -129
  158. package/dist/chunk-4BC2OH6B.js.map +0 -1
  159. package/dist/chunk-5AQSGH4R.js +0 -130
  160. package/dist/chunk-5AQSGH4R.js.map +0 -1
  161. package/dist/chunk-5IHRJFOO.mjs +0 -102
  162. package/dist/chunk-5IHRJFOO.mjs.map +0 -1
  163. package/dist/chunk-5LDGR7YN.mjs +0 -28
  164. package/dist/chunk-5LDGR7YN.mjs.map +0 -1
  165. package/dist/chunk-5MCN3VYM.mjs +0 -23
  166. package/dist/chunk-5MCN3VYM.mjs.map +0 -1
  167. package/dist/chunk-6AVAMRMB.mjs +0 -47
  168. package/dist/chunk-6AVAMRMB.mjs.map +0 -1
  169. package/dist/chunk-6H62JRNM.mjs +0 -120
  170. package/dist/chunk-6H62JRNM.mjs.map +0 -1
  171. package/dist/chunk-6KCII3F6.mjs +0 -126
  172. package/dist/chunk-6KCII3F6.mjs.map +0 -1
  173. package/dist/chunk-7EHB43BJ.js +0 -155
  174. package/dist/chunk-7EHB43BJ.js.map +0 -1
  175. package/dist/chunk-7LRD23Q5.js +0 -191
  176. package/dist/chunk-7LRD23Q5.js.map +0 -1
  177. package/dist/chunk-7SAHKOJG.mjs +0 -45
  178. package/dist/chunk-7SAHKOJG.mjs.map +0 -1
  179. package/dist/chunk-A3D2YZK3.js +0 -50
  180. package/dist/chunk-A3D2YZK3.js.map +0 -1
  181. package/dist/chunk-AL4QFH7V.js +0 -63
  182. package/dist/chunk-AL4QFH7V.js.map +0 -1
  183. package/dist/chunk-B3WFEG6U.js +0 -69
  184. package/dist/chunk-B3WFEG6U.js.map +0 -1
  185. package/dist/chunk-BDZQJ6GK.js +0 -242
  186. package/dist/chunk-BDZQJ6GK.js.map +0 -1
  187. package/dist/chunk-BRWFYRGX.js +0 -61
  188. package/dist/chunk-BRWFYRGX.js.map +0 -1
  189. package/dist/chunk-C5DNTLBO.js +0 -53
  190. package/dist/chunk-C5DNTLBO.js.map +0 -1
  191. package/dist/chunk-CRALRACO.js +0 -54
  192. package/dist/chunk-CRALRACO.js.map +0 -1
  193. package/dist/chunk-CVACQJRM.js +0 -149
  194. package/dist/chunk-CVACQJRM.js.map +0 -1
  195. package/dist/chunk-DEIUKFPZ.mjs +0 -63
  196. package/dist/chunk-DEIUKFPZ.mjs.map +0 -1
  197. package/dist/chunk-DN2AEEA2.js +0 -13
  198. package/dist/chunk-DN2AEEA2.js.map +0 -1
  199. package/dist/chunk-DTNRWU4B.mjs +0 -35
  200. package/dist/chunk-DTNRWU4B.mjs.map +0 -1
  201. package/dist/chunk-DXIUEWRJ.mjs +0 -31
  202. package/dist/chunk-DXIUEWRJ.mjs.map +0 -1
  203. package/dist/chunk-DYFV66JX.mjs +0 -54
  204. package/dist/chunk-DYFV66JX.mjs.map +0 -1
  205. package/dist/chunk-F3WMAHXV.mjs +0 -86
  206. package/dist/chunk-F3WMAHXV.mjs.map +0 -1
  207. package/dist/chunk-F4RWPBBB.js +0 -79
  208. package/dist/chunk-F4RWPBBB.js.map +0 -1
  209. package/dist/chunk-FEGAPM6U.js +0 -194
  210. package/dist/chunk-FEGAPM6U.js.map +0 -1
  211. package/dist/chunk-G5TS56PW.mjs +0 -160
  212. package/dist/chunk-G5TS56PW.mjs.map +0 -1
  213. package/dist/chunk-GG6VGOEN.mjs +0 -590
  214. package/dist/chunk-GG6VGOEN.mjs.map +0 -1
  215. package/dist/chunk-GLAMGK32.mjs +0 -54
  216. package/dist/chunk-GLAMGK32.mjs.map +0 -1
  217. package/dist/chunk-GNMMUJXD.mjs +0 -200
  218. package/dist/chunk-GNMMUJXD.mjs.map +0 -1
  219. package/dist/chunk-GNPBULLS.mjs +0 -600
  220. package/dist/chunk-GNPBULLS.mjs.map +0 -1
  221. package/dist/chunk-GTE2DELE.js +0 -65
  222. package/dist/chunk-GTE2DELE.js.map +0 -1
  223. package/dist/chunk-GUQAFFTH.js +0 -94
  224. package/dist/chunk-GUQAFFTH.js.map +0 -1
  225. package/dist/chunk-H5VOYZHT.mjs +0 -34
  226. package/dist/chunk-H5VOYZHT.mjs.map +0 -1
  227. package/dist/chunk-HR6PBOGG.mjs +0 -59
  228. package/dist/chunk-HR6PBOGG.mjs.map +0 -1
  229. package/dist/chunk-HROONQS3.js +0 -55
  230. package/dist/chunk-HROONQS3.js.map +0 -1
  231. package/dist/chunk-IAO7SOQ3.mjs +0 -56
  232. package/dist/chunk-IAO7SOQ3.mjs.map +0 -1
  233. package/dist/chunk-K2QKU3K6.mjs +0 -40
  234. package/dist/chunk-K2QKU3K6.mjs.map +0 -1
  235. package/dist/chunk-KEUZZCCP.js +0 -53
  236. package/dist/chunk-KEUZZCCP.js.map +0 -1
  237. package/dist/chunk-KJXSLTG7.mjs +0 -73
  238. package/dist/chunk-KJXSLTG7.mjs.map +0 -1
  239. package/dist/chunk-L5AFUCVH.mjs +0 -26
  240. package/dist/chunk-L5AFUCVH.mjs.map +0 -1
  241. package/dist/chunk-LB3I52KZ.mjs +0 -42
  242. package/dist/chunk-LB3I52KZ.mjs.map +0 -1
  243. package/dist/chunk-LN75MJQ2.js +0 -71
  244. package/dist/chunk-LN75MJQ2.js.map +0 -1
  245. package/dist/chunk-LRBOFJUV.js +0 -60
  246. package/dist/chunk-LRBOFJUV.js.map +0 -1
  247. package/dist/chunk-MMNYRBOU.js +0 -157
  248. package/dist/chunk-MMNYRBOU.js.map +0 -1
  249. package/dist/chunk-MO65YF6P.js +0 -236
  250. package/dist/chunk-MO65YF6P.js.map +0 -1
  251. package/dist/chunk-N4KHP5FC.mjs +0 -33
  252. package/dist/chunk-N4KHP5FC.mjs.map +0 -1
  253. package/dist/chunk-NP2J7AB7.mjs +0 -121
  254. package/dist/chunk-NP2J7AB7.mjs.map +0 -1
  255. package/dist/chunk-OLR6SGYO.js +0 -57
  256. package/dist/chunk-OLR6SGYO.js.map +0 -1
  257. package/dist/chunk-ON7NQ4DY.js +0 -21
  258. package/dist/chunk-ON7NQ4DY.js.map +0 -1
  259. package/dist/chunk-PE3VFRLV.mjs +0 -198
  260. package/dist/chunk-PE3VFRLV.mjs.map +0 -1
  261. package/dist/chunk-Q7LOOIE5.mjs +0 -8
  262. package/dist/chunk-Q7LOOIE5.mjs.map +0 -1
  263. package/dist/chunk-QFA6U75G.mjs +0 -51
  264. package/dist/chunk-QFA6U75G.mjs.map +0 -1
  265. package/dist/chunk-QJQPT4WX.js +0 -638
  266. package/dist/chunk-QJQPT4WX.js.map +0 -1
  267. package/dist/chunk-QKHQPBSR.mjs +0 -20
  268. package/dist/chunk-QKHQPBSR.mjs.map +0 -1
  269. package/dist/chunk-SJD4XRFJ.mjs +0 -141
  270. package/dist/chunk-SJD4XRFJ.mjs.map +0 -1
  271. package/dist/chunk-SOOJLU4C.mjs +0 -19
  272. package/dist/chunk-SOOJLU4C.mjs.map +0 -1
  273. package/dist/chunk-T66B5IM5.js +0 -51
  274. package/dist/chunk-T66B5IM5.js.map +0 -1
  275. package/dist/chunk-T7RPZDO4.js +0 -645
  276. package/dist/chunk-T7RPZDO4.js.map +0 -1
  277. package/dist/chunk-TGRMDGTV.mjs +0 -38
  278. package/dist/chunk-TGRMDGTV.mjs.map +0 -1
  279. package/dist/chunk-TH2UKMCO.mjs +0 -11
  280. package/dist/chunk-TH2UKMCO.mjs.map +0 -1
  281. package/dist/chunk-TMV45OKE.mjs +0 -113
  282. package/dist/chunk-TMV45OKE.mjs.map +0 -1
  283. package/dist/chunk-TUJ7EVEK.js +0 -171
  284. package/dist/chunk-TUJ7EVEK.js.map +0 -1
  285. package/dist/chunk-ULNWDOI7.js +0 -122
  286. package/dist/chunk-ULNWDOI7.js.map +0 -1
  287. package/dist/chunk-UNUTTHCH.mjs +0 -210
  288. package/dist/chunk-UNUTTHCH.mjs.map +0 -1
  289. package/dist/chunk-VJMI6BG4.mjs +0 -10
  290. package/dist/chunk-VJMI6BG4.mjs.map +0 -1
  291. package/dist/chunk-VZVOB5MG.mjs +0 -26
  292. package/dist/chunk-VZVOB5MG.mjs.map +0 -1
  293. package/dist/chunk-WD67O22C.js +0 -50
  294. package/dist/chunk-WD67O22C.js.map +0 -1
  295. package/dist/chunk-WYPMLIJN.js +0 -53
  296. package/dist/chunk-WYPMLIJN.js.map +0 -1
  297. package/dist/chunk-X32I34NH.js +0 -109
  298. package/dist/chunk-X32I34NH.js.map +0 -1
  299. package/dist/chunk-X5MOZ3YL.js +0 -65
  300. package/dist/chunk-X5MOZ3YL.js.map +0 -1
  301. package/dist/chunk-Y4JVIPQZ.mjs +0 -31
  302. package/dist/chunk-Y4JVIPQZ.mjs.map +0 -1
  303. package/dist/chunk-Y6WOV2LZ.js +0 -95
  304. package/dist/chunk-Y6WOV2LZ.js.map +0 -1
  305. package/dist/chunk-YAEN5SCU.mjs +0 -41
  306. package/dist/chunk-YAEN5SCU.mjs.map +0 -1
  307. package/dist/chunk-YH6XDF3N.js +0 -121
  308. package/dist/chunk-YH6XDF3N.js.map +0 -1
  309. package/dist/chunk-YJKA4D75.mjs +0 -124
  310. package/dist/chunk-YJKA4D75.mjs.map +0 -1
  311. package/dist/chunk-ZANAF7WB.js +0 -88
  312. package/dist/chunk-ZANAF7WB.js.map +0 -1
  313. package/dist/chunk-ZDBWNPLO.js +0 -30
  314. package/dist/chunk-ZDBWNPLO.js.map +0 -1
  315. package/dist/chunk-ZDT2IOK2.js +0 -56
  316. package/dist/chunk-ZDT2IOK2.js.map +0 -1
  317. package/dist/chunk-ZKGVLTSI.js +0 -25
  318. package/dist/chunk-ZKGVLTSI.js.map +0 -1
  319. package/dist/chunk-ZLELESO7.js +0 -34
  320. package/dist/chunk-ZLELESO7.js.map +0 -1
  321. package/dist/chunk-ZUFUEQTX.mjs +0 -157
  322. package/dist/chunk-ZUFUEQTX.mjs.map +0 -1
  323. package/dist/chunk-ZZZWRQQE.mjs +0 -42
  324. package/dist/chunk-ZZZWRQQE.mjs.map +0 -1
  325. package/dist/command/index.js +0 -138
  326. package/dist/command/index.js.map +0 -1
  327. package/dist/command/index.mjs +0 -128
  328. package/dist/command/index.mjs.map +0 -1
  329. package/dist/components/accordion.js +0 -25
  330. package/dist/components/accordion.js.map +0 -1
  331. package/dist/components/accordion.mjs +0 -4
  332. package/dist/components/accordion.mjs.map +0 -1
  333. package/dist/components/alert.js +0 -21
  334. package/dist/components/alert.js.map +0 -1
  335. package/dist/components/alert.mjs +0 -4
  336. package/dist/components/alert.mjs.map +0 -1
  337. package/dist/components/aspect-ratio.js +0 -12
  338. package/dist/components/aspect-ratio.js.map +0 -1
  339. package/dist/components/aspect-ratio.mjs +0 -3
  340. package/dist/components/aspect-ratio.mjs.map +0 -1
  341. package/dist/components/avatar.js +0 -21
  342. package/dist/components/avatar.js.map +0 -1
  343. package/dist/components/avatar.mjs +0 -4
  344. package/dist/components/avatar.mjs.map +0 -1
  345. package/dist/components/badge.js +0 -17
  346. package/dist/components/badge.js.map +0 -1
  347. package/dist/components/badge.mjs +0 -4
  348. package/dist/components/badge.mjs.map +0 -1
  349. package/dist/components/breadcrumb.js +0 -37
  350. package/dist/components/breadcrumb.js.map +0 -1
  351. package/dist/components/breadcrumb.mjs +0 -4
  352. package/dist/components/breadcrumb.mjs.map +0 -1
  353. package/dist/components/button.js +0 -17
  354. package/dist/components/button.js.map +0 -1
  355. package/dist/components/button.mjs +0 -4
  356. package/dist/components/button.mjs.map +0 -1
  357. package/dist/components/card.js +0 -37
  358. package/dist/components/card.js.map +0 -1
  359. package/dist/components/card.mjs +0 -4
  360. package/dist/components/card.mjs.map +0 -1
  361. package/dist/components/checkbox.js +0 -13
  362. package/dist/components/checkbox.js.map +0 -1
  363. package/dist/components/checkbox.mjs +0 -4
  364. package/dist/components/checkbox.mjs.map +0 -1
  365. package/dist/components/collapsible.js +0 -20
  366. package/dist/components/collapsible.js.map +0 -1
  367. package/dist/components/collapsible.mjs +0 -3
  368. package/dist/components/collapsible.mjs.map +0 -1
  369. package/dist/components/context-menu.js +0 -69
  370. package/dist/components/context-menu.js.map +0 -1
  371. package/dist/components/context-menu.mjs +0 -4
  372. package/dist/components/context-menu.mjs.map +0 -1
  373. package/dist/components/dialog.js +0 -49
  374. package/dist/components/dialog.js.map +0 -1
  375. package/dist/components/dialog.mjs +0 -4
  376. package/dist/components/dialog.mjs.map +0 -1
  377. package/dist/components/drawer.js +0 -49
  378. package/dist/components/drawer.js.map +0 -1
  379. package/dist/components/drawer.mjs +0 -4
  380. package/dist/components/drawer.mjs.map +0 -1
  381. package/dist/components/dropdown-menu.js +0 -69
  382. package/dist/components/dropdown-menu.js.map +0 -1
  383. package/dist/components/dropdown-menu.mjs +0 -4
  384. package/dist/components/dropdown-menu.mjs.map +0 -1
  385. package/dist/components/form.js +0 -42
  386. package/dist/components/form.js.map +0 -1
  387. package/dist/components/form.mjs +0 -5
  388. package/dist/components/form.mjs.map +0 -1
  389. package/dist/components/hover-card.js +0 -21
  390. package/dist/components/hover-card.js.map +0 -1
  391. package/dist/components/hover-card.mjs +0 -4
  392. package/dist/components/hover-card.mjs.map +0 -1
  393. package/dist/components/index.js +0 -1047
  394. package/dist/components/index.js.map +0 -1
  395. package/dist/components/index.mjs +0 -46
  396. package/dist/components/index.mjs.map +0 -1
  397. package/dist/components/input-otp.js +0 -25
  398. package/dist/components/input-otp.js.map +0 -1
  399. package/dist/components/input-otp.mjs +0 -4
  400. package/dist/components/input-otp.mjs.map +0 -1
  401. package/dist/components/input.js +0 -13
  402. package/dist/components/input.js.map +0 -1
  403. package/dist/components/input.mjs +0 -4
  404. package/dist/components/input.mjs.map +0 -1
  405. package/dist/components/label.js +0 -13
  406. package/dist/components/label.js.map +0 -1
  407. package/dist/components/label.mjs +0 -4
  408. package/dist/components/label.mjs.map +0 -1
  409. package/dist/components/menubar.js +0 -73
  410. package/dist/components/menubar.js.map +0 -1
  411. package/dist/components/menubar.mjs +0 -4
  412. package/dist/components/menubar.mjs.map +0 -1
  413. package/dist/components/navigation-menu.js +0 -45
  414. package/dist/components/navigation-menu.js.map +0 -1
  415. package/dist/components/navigation-menu.mjs +0 -4
  416. package/dist/components/navigation-menu.mjs.map +0 -1
  417. package/dist/components/pagination.js +0 -38
  418. package/dist/components/pagination.js.map +0 -1
  419. package/dist/components/pagination.mjs +0 -5
  420. package/dist/components/pagination.mjs.map +0 -1
  421. package/dist/components/popover.js +0 -25
  422. package/dist/components/popover.js.map +0 -1
  423. package/dist/components/popover.mjs +0 -4
  424. package/dist/components/popover.mjs.map +0 -1
  425. package/dist/components/progress.js +0 -13
  426. package/dist/components/progress.js.map +0 -1
  427. package/dist/components/progress.mjs +0 -4
  428. package/dist/components/progress.mjs.map +0 -1
  429. package/dist/components/radio-group.js +0 -17
  430. package/dist/components/radio-group.js.map +0 -1
  431. package/dist/components/radio-group.mjs +0 -4
  432. package/dist/components/radio-group.mjs.map +0 -1
  433. package/dist/components/resizable.js +0 -21
  434. package/dist/components/resizable.js.map +0 -1
  435. package/dist/components/resizable.mjs +0 -4
  436. package/dist/components/resizable.mjs.map +0 -1
  437. package/dist/components/scroll-area.js +0 -17
  438. package/dist/components/scroll-area.js.map +0 -1
  439. package/dist/components/scroll-area.mjs +0 -4
  440. package/dist/components/scroll-area.mjs.map +0 -1
  441. package/dist/components/select.js +0 -49
  442. package/dist/components/select.js.map +0 -1
  443. package/dist/components/select.mjs +0 -4
  444. package/dist/components/select.mjs.map +0 -1
  445. package/dist/components/separator.js +0 -13
  446. package/dist/components/separator.js.map +0 -1
  447. package/dist/components/separator.mjs +0 -4
  448. package/dist/components/separator.mjs.map +0 -1
  449. package/dist/components/sheet.js +0 -49
  450. package/dist/components/sheet.js.map +0 -1
  451. package/dist/components/sheet.mjs +0 -4
  452. package/dist/components/sheet.mjs.map +0 -1
  453. package/dist/components/sidebar.js +0 -111
  454. package/dist/components/sidebar.js.map +0 -1
  455. package/dist/components/sidebar.mjs +0 -10
  456. package/dist/components/sidebar.mjs.map +0 -1
  457. package/dist/components/skeleton.js +0 -13
  458. package/dist/components/skeleton.js.map +0 -1
  459. package/dist/components/skeleton.mjs +0 -4
  460. package/dist/components/skeleton.mjs.map +0 -1
  461. package/dist/components/slider.js +0 -13
  462. package/dist/components/slider.js.map +0 -1
  463. package/dist/components/slider.mjs +0 -4
  464. package/dist/components/slider.mjs.map +0 -1
  465. package/dist/components/switch.js +0 -13
  466. package/dist/components/switch.js.map +0 -1
  467. package/dist/components/switch.mjs +0 -4
  468. package/dist/components/switch.mjs.map +0 -1
  469. package/dist/components/table.js +0 -41
  470. package/dist/components/table.js.map +0 -1
  471. package/dist/components/table.mjs +0 -4
  472. package/dist/components/table.mjs.map +0 -1
  473. package/dist/components/tabs.js +0 -25
  474. package/dist/components/tabs.js.map +0 -1
  475. package/dist/components/tabs.mjs +0 -4
  476. package/dist/components/tabs.mjs.map +0 -1
  477. package/dist/components/textarea.js +0 -13
  478. package/dist/components/textarea.js.map +0 -1
  479. package/dist/components/textarea.mjs +0 -4
  480. package/dist/components/textarea.mjs.map +0 -1
  481. package/dist/components/toast.js +0 -37
  482. package/dist/components/toast.js.map +0 -1
  483. package/dist/components/toast.mjs +0 -4
  484. package/dist/components/toast.mjs.map +0 -1
  485. package/dist/components/toggle-group.js +0 -18
  486. package/dist/components/toggle-group.js.map +0 -1
  487. package/dist/components/toggle-group.mjs +0 -5
  488. package/dist/components/toggle-group.mjs.map +0 -1
  489. package/dist/components/toggle.js +0 -17
  490. package/dist/components/toggle.js.map +0 -1
  491. package/dist/components/toggle.mjs +0 -4
  492. package/dist/components/toggle.mjs.map +0 -1
  493. package/dist/components/tooltip.js +0 -25
  494. package/dist/components/tooltip.js.map +0 -1
  495. package/dist/components/tooltip.mjs +0 -4
  496. package/dist/components/tooltip.mjs.map +0 -1
  497. package/dist/effects/index.js +0 -162
  498. package/dist/effects/index.js.map +0 -1
  499. package/dist/effects/index.mjs +0 -156
  500. package/dist/effects/index.mjs.map +0 -1
  501. package/dist/index.js.map +0 -1
  502. package/dist/index.mjs.map +0 -1
  503. package/dist/lib/utils.js.map +0 -1
  504. package/dist/lib/utils.mjs.map +0 -1
  505. package/dist/markdown/index.js +0 -669
  506. package/dist/markdown/index.js.map +0 -1
  507. package/dist/markdown/index.mjs +0 -635
  508. package/dist/markdown/index.mjs.map +0 -1
  509. package/dist/qr/index.js +0 -101
  510. package/dist/qr/index.js.map +0 -1
  511. package/dist/qr/index.mjs +0 -98
  512. package/dist/qr/index.mjs.map +0 -1
  513. package/dist/upload/index.js +0 -166
  514. package/dist/upload/index.js.map +0 -1
  515. package/dist/upload/index.mjs +0 -163
  516. package/dist/upload/index.mjs.map +0 -1
  517. package/publish.sh +0 -27
package/README.md CHANGED
@@ -1,29 +1,10 @@
1
- # @hanzo/ui v5
1
+ # @hanzo/ui
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@hanzo/ui.svg)](https://www.npmjs.com/package/@hanzo/ui)
4
- [![npm downloads](https://img.shields.io/npm/dm/@hanzo/ui.svg)](https://www.npmjs.com/package/@hanzo/ui)
5
- [![Bundle Size](https://img.shields.io/bundlephobia/minzip/@hanzo/ui)](https://bundlephobia.com/package/@hanzo/ui)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
3
+ A comprehensive UI component library for Hanzo applications, built with React and TypeScript.
8
4
 
9
- Modern React component library built on shadcn/ui v4 with Hanzo branding, featuring 50+ accessible components, 35+ hooks, and comprehensive TypeScript support.
5
+ ## Version 4.5.6
10
6
 
11
- ## ✨ Features
12
-
13
- - 🎨 **Multi-Brand Theming** - Built-in support for Hanzo, Lux, and Zoo brands
14
- - 📦 **50+ Components** - Comprehensive UI components based on shadcn/ui v4
15
- - 🪝 **35+ Custom Hooks** - Powerful React hooks for common patterns
16
- - 🛠️ **25+ Utilities** - Helper functions and utilities
17
- - 🌙 **Dark Mode** - Native dark mode with system preference detection
18
- - ♿ **Accessible** - WCAG 2.1 AA compliant components
19
- - 📱 **Responsive** - Mobile-first responsive design
20
- - 🎯 **Tree Shakeable** - Import only what you need
21
- - 💅 **Tailwind CSS** - Utility-first styling with Tailwind v3.4+
22
- - 🎭 **OKLCH Colors** - Modern color system with OKLCH color space
23
- - 🤖 **AI Components** - Chat interfaces and AI-specific components
24
- - 📋 **Copy/Paste** - Components can be copied directly into your project
25
-
26
- ## 📦 Installation
7
+ ## Installation
27
8
 
28
9
  ```bash
29
10
  npm install @hanzo/ui
@@ -33,190 +14,216 @@ pnpm add @hanzo/ui
33
14
  yarn add @hanzo/ui
34
15
  ```
35
16
 
36
- ## 🚀 Quick Start
37
-
38
- ### 1. Configure Tailwind CSS
39
-
40
- Add the Hanzo UI preset to your `tailwind.config.js`:
41
-
42
- ```js
43
- // tailwind.config.js
44
- import hanzoPreset from '@hanzo/ui/tailwind-preset'
45
-
46
- export default {
47
- presets: [hanzoPreset],
48
- content: [
49
- './src/**/*.{js,ts,jsx,tsx,mdx}',
50
- './node_modules/@hanzo/ui/dist/**/*.{js,mjs}'
51
- ],
52
- // ... your config
53
- }
54
- ```
55
-
56
- ### 2. Import Components
57
-
58
- ```tsx
59
- // Import utilities
60
- import { cn } from '@hanzo/ui'
61
-
62
- // Import components
63
- import { Button, Card, Dialog } from '@hanzo/ui/components'
64
-
65
- // Or import individually
66
- import { Button } from '@hanzo/ui/components/button'
67
- import { Card } from '@hanzo/ui/components/card'
68
-
69
- // Import AI components
70
- import { ChatInterface } from '@hanzo/ui/ai'
71
-
72
- // Import block patterns
73
- import { AuthForm } from '@hanzo/ui/blocks'
74
- ```
75
-
76
- ### 3. Use Components
77
-
78
- ```tsx
79
- export function App() {
80
- return (
81
- <Card className="p-6">
82
- <h1>Welcome to Hanzo UI</h1>
83
- <Button variant="default" size="lg">
84
- Get Started
85
- </Button>
86
- </Card>
87
- )
88
- }
89
- ```
90
-
91
- ## 📚 Component Categories
92
-
93
- ### Core Components
94
- - **Layout**: Container, Grid, Stack, Spacer
95
- - **Typography**: Heading, Text, Label
96
- - **Buttons**: Button, IconButton, ButtonGroup
97
- - **Forms**: Input, Textarea, Select, Checkbox, Radio, Switch
98
- - **Feedback**: Alert, Toast, Progress, Skeleton
99
- - **Overlay**: Dialog, Sheet, Popover, Tooltip
100
- - **Navigation**: Tabs, Breadcrumb, Pagination
101
- - **Data Display**: Table, DataTable, Card, Badge
102
- - **Media**: Avatar, Image, Video
103
-
104
- ### AI Components
105
- - Chat Interface
106
- - Message Components
107
- - Code Block with Syntax Highlighting
108
- - Streaming Support
109
- - Tool Use Display
110
-
111
- ### Block Patterns
112
- - Authentication Forms
113
- - Dashboard Layouts
114
- - Marketing Sections
115
- - E-commerce Patterns
116
- - Landing Pages
117
-
118
- ## 🎨 Theming
119
-
120
- ### Using CSS Variables
121
-
122
- Hanzo UI uses CSS variables for theming. You can customize the theme by overriding these variables:
123
-
124
- ```css
125
- @layer base {
126
- :root {
127
- --hanzo-background: 0 0% 100%;
128
- --hanzo-foreground: 0 0% 3.9%;
129
- --hanzo-primary: 0 0% 9%;
130
- --hanzo-primary-foreground: 0 0% 98%;
131
- /* ... more variables */
132
- }
133
-
134
- .dark {
135
- --hanzo-background: 0 0% 3.9%;
136
- --hanzo-foreground: 0 0% 98%;
137
- /* ... dark mode variables */
138
- }
139
- }
140
- ```
141
-
142
- ### Multiple Brands
143
-
144
- Switch between brand themes:
17
+ ## Components
18
+
19
+ ### Primitives
20
+
21
+ Core UI components based on Radix UI primitives:
22
+
23
+ - **Accordion** - Collapsible content panels
24
+ - **Alert** - Informative alert messages
25
+ - **AlertDialog** - Modal dialogs for important alerts
26
+ - **Avatar** - User avatar display
27
+ - **Badge** - Status and label badges
28
+ - **Breadcrumb** - Navigation breadcrumbs
29
+ - **Button** - Interactive buttons with variants
30
+ - **Calendar** - Date picker calendar
31
+ - **Card** - Container cards for content
32
+ - **Carousel** - Image/content carousel
33
+ - **Checkbox** - Checkbox input
34
+ - **Collapsible** - Collapsible content sections
35
+ - **Combobox** - Searchable select dropdown
36
+ - **Command** - Command palette component
37
+ - **ContextMenu** - Right-click context menus
38
+ - **Dialog** - Modal dialogs
39
+ - **Drawer** - Slide-out drawer panels
40
+ - **DropdownMenu** - Dropdown menu component
41
+ - **Form** - Form components with validation
42
+ - **HoverCard** - Hover-triggered info cards
43
+ - **Input** - Text input field
44
+ - **InputOTP** - One-time password input
45
+ - **Label** - Form labels
46
+ - **NavigationMenu** - Navigation menu bar
47
+ - **Popover** - Popover overlays
48
+ - **Progress** - Progress indicators
49
+ - **RadioGroup** - Radio button groups
50
+ - **ResizablePanel** - Resizable panel layouts
51
+ - **ScrollArea** - Custom scrollable areas
52
+ - **SearchInput** - Search input with icon
53
+ - **Select** - Select dropdown
54
+ - **Separator** - Visual separator line
55
+ - **Sheet** - Side sheet panels
56
+ - **Skeleton** - Loading skeleton screens
57
+ - **Slider** - Range slider input
58
+ - **Switch** - Toggle switch
59
+ - **Table** - Data tables
60
+ - **Tabs** - Tabbed interfaces
61
+ - **TextArea** - Multi-line text input
62
+ - **TextField** - Enhanced text input
63
+ - **Toast** - Toast notifications (via Sonner)
64
+ - **Toggle** - Toggle buttons
65
+ - **ToggleGroup** - Grouped toggle buttons
66
+ - **Tooltip** - Hover tooltips
67
+ - **VideoPlayer** - Video playback component
68
+
69
+ ### Assets
70
+
71
+ Icon components and visual assets:
72
+
73
+ #### AI Provider Icons
74
+ - **AnthropicIcon** - Anthropic AI logo
75
+ - **OpenAIIcon** - OpenAI logo
76
+ - **GeminiIcon** - Google Gemini logo
77
+ - **DeepSeekIcon** - DeepSeek logo
78
+ - **MistralIcon** - Mistral AI logo
79
+ - **MetaIcon** - Meta AI logo
80
+ - **GroqIcon** - Groq logo
81
+ - **OllamaIcon** - Ollama logo
82
+ - **HanzoIcon** - Hanzo AI logo
83
+ - **TogetherAI** - Together AI logo
84
+ - **ExoIcon** - Exo logo
85
+ - **GrokIcon** - Grok logo
86
+ - **LmStudioIcon** - LM Studio logo
87
+ - **OpenRouterIcon** - OpenRouter logo
88
+ - **PerplexityIcon** - Perplexity logo
89
+ - **QwenIcon** - Qwen logo
90
+ - **AyaCohereIcon** - Aya/Cohere logo
91
+
92
+ #### Feature Icons
93
+ - **AIAgentIcon** - AI agent indicator
94
+ - **AisIcon** - AI services icon
95
+ - **ReactJsIcon** - React.js logo
96
+ - **ReasoningIcon** - AI reasoning indicator
97
+ - **ToolsIcon** - Tools/utilities icon
98
+ - **TracingIcon** - Tracing/monitoring icon
99
+ - **ScheduledTasksIcon** - Scheduled tasks icon
100
+ - **SendIcon** - Send/submit icon
101
+
102
+ #### File Type Icons
103
+ - **FileTypeIcon** - Dynamic file type icon based on extension
104
+ - **DirectoryTypeIcon** - Folder/directory icon
105
+
106
+ ### Utilities
107
+
108
+ Helper functions and hooks:
109
+
110
+ - **cn()** - Class name utility (clsx + tailwind-merge)
111
+ - **markdown()** - Markdown to JSX converter
112
+ - **formatText()** - Text formatting utilities
113
+ - **useDebounce()** - Debounce hook
114
+ - **useMap()** - Map state management hook
115
+ - **formatDateToLocaleStringWithTime()** - Date formatting
116
+ - **getFileExt()** - File extension extraction
117
+ - **hexToRgb()** - Color conversion utilities
118
+
119
+ ### Custom Components
120
+
121
+ Additional enhanced components:
122
+
123
+ - **ChatInput** - Chat message input
124
+ - **ChatInputArea** - Multi-line chat input
125
+ - **ChatSettingsIcon** - Chat settings icon
126
+ - **CopyToClipboardIcon** - Copy to clipboard button
127
+ - **DotsLoader** - Loading dots animation
128
+ - **FileList** - File list display
129
+ - **FileUploader** - File upload component
130
+ - **JsonForm** - JSON-based dynamic forms
131
+ - **MarkdownText** - Markdown renderer
132
+ - **PrettyJsonPrint** - Formatted JSON display
133
+
134
+ ## Styling
135
+
136
+ The library uses Tailwind CSS for styling. Make sure your application includes Tailwind CSS configuration.
137
+
138
+ ## Dependencies
139
+
140
+ Key peer dependencies:
141
+ - React 18.3.1+
142
+ - React DOM 18.3.1+
143
+ - @hookform/resolvers ^3.3.2
144
+ - react-hook-form 7.51.4
145
+ - lucide-react 0.456.0
146
+ - next-themes ^0.2.1
147
+ - embla-carousel ^8.1.6
148
+
149
+ ## Usage Examples
150
+
151
+ ### Basic Button
145
152
 
146
153
  ```tsx
147
- import { ThemeProvider } from '@hanzo/ui/components/theme-provider'
154
+ import { Button } from '@hanzo/ui';
148
155
 
149
156
  function App() {
150
157
  return (
151
- <ThemeProvider defaultTheme="hanzo" storageKey="ui-theme">
152
- {/* Your app */}
153
- </ThemeProvider>
154
- )
158
+ <Button variant="primary" onClick={() => console.log('clicked')}>
159
+ Click me
160
+ </Button>
161
+ );
155
162
  }
156
163
  ```
157
164
 
158
- ## 🔧 Advanced Usage
159
-
160
- ### Custom Styling with cn()
161
-
162
- The `cn()` utility combines clsx and tailwind-merge:
165
+ ### Alert Dialog
163
166
 
164
167
  ```tsx
165
- import { cn } from '@hanzo/ui'
166
-
167
- function CustomButton({ className, ...props }) {
168
+ import {
169
+ AlertDialog,
170
+ AlertDialogTrigger,
171
+ AlertDialogContent,
172
+ AlertDialogHeader,
173
+ AlertDialogTitle,
174
+ AlertDialogDescription,
175
+ AlertDialogFooter,
176
+ AlertDialogAction,
177
+ AlertDialogCancel
178
+ } from '@hanzo/ui';
179
+
180
+ function ConfirmDialog() {
168
181
  return (
169
- <button
170
- className={cn(
171
- 'px-4 py-2 rounded-lg bg-primary text-primary-foreground',
172
- 'hover:bg-primary/90 transition-colors',
173
- className
174
- )}
175
- {...props}
176
- />
177
- )
182
+ <AlertDialog>
183
+ <AlertDialogTrigger>
184
+ <Button>Open Dialog</Button>
185
+ </AlertDialogTrigger>
186
+ <AlertDialogContent>
187
+ <AlertDialogHeader>
188
+ <AlertDialogTitle>Are you sure?</AlertDialogTitle>
189
+ <AlertDialogDescription>
190
+ This action cannot be undone.
191
+ </AlertDialogDescription>
192
+ </AlertDialogHeader>
193
+ <AlertDialogFooter>
194
+ <AlertDialogCancel>Cancel</AlertDialogCancel>
195
+ <AlertDialogAction>Continue</AlertDialogAction>
196
+ </AlertDialogFooter>
197
+ </AlertDialogContent>
198
+ </AlertDialog>
199
+ );
178
200
  }
179
201
  ```
180
202
 
181
- ### TypeScript Support
182
-
183
- All components are fully typed:
203
+ ### AI Provider Icons
184
204
 
185
205
  ```tsx
186
- import type { ButtonProps } from '@hanzo/ui/components/button'
206
+ import { OpenAIIcon, AnthropicIcon, GeminiIcon } from '@hanzo/ui/assets';
187
207
 
188
- interface CustomButtonProps extends ButtonProps {
189
- customProp?: string
190
- }
191
-
192
- export function CustomButton({ customProp, ...props }: CustomButtonProps) {
193
- return <Button {...props} />
208
+ function AIProviders() {
209
+ return (
210
+ <div className="flex gap-4">
211
+ <OpenAIIcon className="h-6 w-6" />
212
+ <AnthropicIcon className="h-6 w-6" />
213
+ <GeminiIcon className="h-6 w-6" />
214
+ </div>
215
+ );
194
216
  }
195
217
  ```
196
218
 
197
- ## 📖 Documentation
198
-
199
- - [Full Documentation](https://ui.hanzo.ai)
200
- - [Component Examples](https://ui.hanzo.ai/components)
201
- - [Migration Guide](https://ui.hanzo.ai/docs/migration)
202
- - [Storybook](https://ui.hanzo.ai/storybook)
203
-
204
- ## 🤝 Contributing
205
-
206
- Contributions are welcome! Please read our [Contributing Guide](https://github.com/hanzoai/ui/blob/main/CONTRIBUTING.md) for details.
207
-
208
- ## 📄 License
219
+ ## License
209
220
 
210
- MIT © [Hanzo AI](https://hanzo.ai)
221
+ BSD-3-Clause
211
222
 
212
- ## 🔗 Links
223
+ ## Author
213
224
 
214
- - [GitHub Repository](https://github.com/hanzoai/ui)
215
- - [NPM Package](https://www.npmjs.com/package/@hanzo/ui)
216
- - [Documentation](https://ui.hanzo.ai)
217
- - [Storybook](https://ui.hanzo.ai/storybook)
218
- - [Discord Community](https://discord.gg/hanzo)
225
+ Hanzo AI, Inc.
219
226
 
220
- ---
227
+ ## Repository
221
228
 
222
- Built with ❤️ by [Hanzo AI](https://hanzo.ai)
229
+ https://github.com/hanzoai/react-sdk
package/bin/cli.js ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Main CLI entry point for @hanzo/ui
5
+ * Supports various commands including registry:mcp
6
+ */
7
+
8
+ const { program } = require("commander");
9
+
10
+ // Define the version from the package.json
11
+ let version = "4.5.0";
12
+ try {
13
+ const packageJson = require("../package.json");
14
+ version = packageJson.version || version;
15
+ } catch (error) {
16
+ // Use default version if package.json can't be loaded
17
+ }
18
+
19
+ // Set up the program
20
+ program
21
+ .name("@hanzo/ui")
22
+ .description("Hanzo UI Component Library CLI")
23
+ .version(version);
24
+
25
+ // Add the MCP command (main command)
26
+ program
27
+ .command("mcp")
28
+ .description("Start the Hanzo UI MCP server for AI assistants")
29
+ .option(
30
+ "-r, --registry <url>",
31
+ "URL to the registry.json file",
32
+ process.env.REGISTRY_URL || "https://ui.hanzo.ai/registry/registry.json"
33
+ )
34
+ .option(
35
+ "-p, --port <port>",
36
+ "Port to listen on (for HTTP mode)",
37
+ "3333"
38
+ )
39
+ .option(
40
+ "--http",
41
+ "Run in HTTP mode instead of stdio mode",
42
+ false
43
+ )
44
+ .action(async (options) => {
45
+ // Delegate to the dedicated MCP binary
46
+ require("./mcp.js");
47
+ });
48
+
49
+ // Add the registry:mcp command (alias for compatibility)
50
+ program
51
+ .command("registry:mcp")
52
+ .description("Starts the registry MCP server (alias for 'mcp')")
53
+ .option(
54
+ "-r, --registry <url>",
55
+ "URL to the registry.json file",
56
+ process.env.REGISTRY_URL
57
+ )
58
+ .option(
59
+ "-p, --port <port>",
60
+ "Port to listen on (for HTTP mode)",
61
+ "3333"
62
+ )
63
+ .option(
64
+ "--http",
65
+ "Run in HTTP mode instead of stdio mode",
66
+ false
67
+ )
68
+ .action(async (options) => {
69
+ try {
70
+ // Set environment variables based on options
71
+ if (options.registry) {
72
+ process.env.REGISTRY_URL = options.registry;
73
+ }
74
+
75
+ // Set port if running in HTTP mode
76
+ if (options.http) {
77
+ process.env.MCP_HTTP_MODE = "true";
78
+ process.env.MCP_PORT = options.port;
79
+ }
80
+
81
+ // Show info about the server
82
+ console.error("Starting Hanzo UI MCP server...");
83
+ console.error(`Registry URL: ${process.env.REGISTRY_URL || "[Using default registry]"}`);
84
+
85
+ if (options.http) {
86
+ console.error(`Running in HTTP mode on port ${options.port}`);
87
+ } else {
88
+ console.error("Running in stdio mode");
89
+ }
90
+
91
+ // Load and run the MCP server script
92
+ require("./registry-mcp.js");
93
+ } catch (error) {
94
+ console.error("Error starting MCP server:", error);
95
+ process.exit(1);
96
+ }
97
+ });
98
+
99
+ // Parse command line arguments
100
+ program.parse();
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Simple registry builder for @hanzo/ui
5
+ * Creates the necessary structure for the MCP registry
6
+ */
7
+
8
+ const fs = require('fs');
9
+ const path = require('path');
10
+
11
+ // Configuration
12
+ const REGISTRY_DIR = path.resolve(__dirname, '../registry');
13
+ const PUBLIC_DIR = path.resolve(__dirname, '../public');
14
+ const OUTPUT_FILE = path.resolve(__dirname, '../registry.json');
15
+ const REGISTRY_STYLES = ['default', 'new-york'];
16
+
17
+ // Registry schema
18
+ const registrySchema = {
19
+ "$schema": "https://ui.hanzo.com/schema/registry.json",
20
+ "name": "hanzo",
21
+ "homepage": "https://ui.hanzo.ai",
22
+ "items": []
23
+ };
24
+
25
+ // Create the basic registry structure
26
+ function createRegistry() {
27
+ console.log('Creating registry structure...');
28
+
29
+ const items = [];
30
+
31
+ // Ensure registry directory exists
32
+ if (!fs.existsSync(REGISTRY_DIR)) {
33
+ fs.mkdirSync(REGISTRY_DIR, { recursive: true });
34
+ }
35
+
36
+ // Create style directories and add them to registry items
37
+ for (const style of REGISTRY_STYLES) {
38
+ const styleDir = path.join(REGISTRY_DIR, style);
39
+ if (!fs.existsSync(styleDir)) {
40
+ fs.mkdirSync(styleDir, { recursive: true });
41
+
42
+ // Create ui and block directories
43
+ fs.mkdirSync(path.join(styleDir, 'ui'), { recursive: true });
44
+ fs.mkdirSync(path.join(styleDir, 'block'), { recursive: true });
45
+ }
46
+
47
+ // Add style to registry
48
+ items.push({
49
+ name: style,
50
+ type: 'registry:style',
51
+ description: `The ${style} style for Hanzo UI components.`,
52
+ files: []
53
+ });
54
+ }
55
+
56
+ // Add primitive components as empty placeholders
57
+ const primitives = [
58
+ 'accordion', 'alert', 'avatar', 'badge', 'button', 'card',
59
+ 'checkbox', 'dialog', 'input', 'label', 'popover', 'select',
60
+ 'table', 'tabs', 'toast'
61
+ ];
62
+
63
+ for (const component of primitives) {
64
+ items.push({
65
+ name: component,
66
+ type: 'registry:component',
67
+ description: `A ${component} component for your UI.`,
68
+ files: [
69
+ {
70
+ path: `default/ui/${component}/${component}.tsx`,
71
+ type: 'registry:component'
72
+ }
73
+ ]
74
+ });
75
+ }
76
+
77
+ // Update registry.json
78
+ registrySchema.items = items;
79
+
80
+ // Create output directory if it doesn't exist
81
+ const outputDir = path.dirname(OUTPUT_FILE);
82
+ if (!fs.existsSync(outputDir)) {
83
+ fs.mkdirSync(outputDir, { recursive: true });
84
+ }
85
+
86
+ // Write registry.json
87
+ fs.writeFileSync(OUTPUT_FILE, JSON.stringify(registrySchema, null, 2), 'utf8');
88
+ console.log(`Registry updated with ${items.length} items.`);
89
+
90
+ // Create public/r directory if it doesn't exist
91
+ const publicRDir = path.join(PUBLIC_DIR, 'r');
92
+ if (!fs.existsSync(publicRDir)) {
93
+ fs.mkdirSync(publicRDir, { recursive: true });
94
+ }
95
+
96
+ // Generate individual component JSON files
97
+ console.log('Generating individual component JSON files...');
98
+ for (const item of items) {
99
+ const componentFile = path.join(publicRDir, `${item.name}.json`);
100
+ fs.writeFileSync(componentFile, JSON.stringify(item, null, 2), 'utf8');
101
+ }
102
+
103
+ console.log(`Generated ${items.length} component JSON files.`);
104
+ console.log('Registry creation complete!');
105
+ }
106
+
107
+ // Run the registry creation
108
+ createRegistry();