@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.
- package/README.md +192 -185
- package/bin/cli.js +100 -0
- package/bin/create-registry.js +108 -0
- package/bin/mcp.js +403 -0
- package/bin/npx-registry-mcp.js +15 -0
- package/bin/registry-mcp-wrapper.sh +19 -0
- package/bin/registry-mcp.js +100 -0
- package/bin/start-mcp-server.sh +22 -0
- package/bin/test-mcp.sh +52 -0
- package/bin/update-registry.js +196 -0
- package/dist/accordion.js +1 -0
- package/dist/accordion.mjs +1 -0
- package/dist/alert-dialog.js +1 -0
- package/dist/alert-dialog.mjs +1 -0
- package/dist/alert.js +1 -0
- package/dist/alert.mjs +1 -0
- package/dist/avatar.js +1 -0
- package/dist/avatar.mjs +1 -0
- package/dist/badge.js +1 -0
- package/dist/badge.mjs +1 -0
- package/dist/breadcrumb.js +1 -0
- package/dist/breadcrumb.mjs +1 -0
- package/dist/calendar.js +1 -0
- package/dist/calendar.mjs +1 -0
- package/dist/carousel.js +1 -0
- package/dist/carousel.mjs +1 -0
- package/dist/checkbox.js +1 -0
- package/dist/checkbox.mjs +1 -0
- package/dist/chunk-3H5S2OQ3.mjs +1 -0
- package/dist/chunk-5GRJ7UQX.js +1 -0
- package/dist/chunk-63HNMH7C.js +1 -0
- package/dist/chunk-72TOQ4DM.mjs +1 -0
- package/dist/chunk-7AEFTV5R.mjs +1 -0
- package/dist/chunk-7M4AVV2R.js +1 -0
- package/dist/chunk-DKPVJSBC.js +1 -0
- package/dist/chunk-EI7MMDWY.js +1 -0
- package/dist/chunk-GANGDIZG.mjs +1 -0
- package/dist/chunk-GRGT2Z4K.js +1 -0
- package/dist/chunk-JCUUC6NY.mjs +1 -0
- package/dist/chunk-JUQMWLIN.js +1 -0
- package/dist/chunk-PRVEIITE.js +1 -0
- package/dist/chunk-SH52AKNZ.js +1 -0
- package/dist/chunk-TU67EJEW.mjs +1 -0
- package/dist/chunk-WN5KN73U.mjs +1 -0
- package/dist/chunk-YSXGDEY5.mjs +1 -0
- package/dist/chunk-Z76OOVUE.mjs +1 -0
- package/dist/collapsible.js +1 -0
- package/dist/collapsible.mjs +1 -0
- package/dist/command.js +1 -0
- package/dist/command.mjs +1 -0
- package/dist/context-menu.js +1 -0
- package/dist/context-menu.mjs +1 -0
- package/dist/dialog.js +1 -0
- package/dist/dialog.mjs +1 -0
- package/dist/drawer.js +1 -0
- package/dist/drawer.mjs +1 -0
- package/dist/dropdown-menu.js +1 -0
- package/dist/dropdown-menu.mjs +1 -0
- package/dist/form.js +1 -0
- package/dist/form.mjs +1 -0
- package/dist/hover-card.js +1 -0
- package/dist/hover-card.mjs +1 -0
- package/dist/index.js +1 -1096
- package/dist/index.mjs +1 -47
- package/dist/input-otp.js +1 -0
- package/dist/input-otp.mjs +1 -0
- package/dist/lib/utils.js +1 -12
- package/dist/lib/utils.mjs +1 -3
- package/dist/navigation-menu.js +1 -0
- package/dist/navigation-menu.mjs +1 -0
- package/dist/popover.js +1 -0
- package/dist/popover.mjs +1 -0
- package/dist/progress.js +1 -0
- package/dist/progress.mjs +1 -0
- package/dist/radio-group.js +1 -0
- package/dist/radio-group.mjs +1 -0
- package/dist/resizable.js +1 -0
- package/dist/resizable.mjs +1 -0
- package/dist/scroll-area.js +1 -0
- package/dist/scroll-area.mjs +1 -0
- package/dist/select.js +1 -0
- package/dist/select.mjs +1 -0
- package/dist/separator.js +1 -0
- package/dist/separator.mjs +1 -0
- package/dist/sheet.js +1 -0
- package/dist/sheet.mjs +1 -0
- package/dist/skeleton.js +1 -0
- package/dist/skeleton.mjs +1 -0
- package/dist/slider.js +1 -0
- package/dist/slider.mjs +1 -0
- package/dist/sonner.js +1 -0
- package/dist/sonner.mjs +1 -0
- package/dist/src/utils.js +1 -0
- package/dist/src/utils.mjs +1 -0
- package/dist/switch.js +1 -0
- package/dist/switch.mjs +1 -0
- package/dist/table.js +1 -0
- package/dist/table.mjs +1 -0
- package/dist/tabs.js +1 -0
- package/dist/tabs.mjs +1 -0
- package/dist/tailwind/index.js +1 -0
- package/dist/tailwind/index.mjs +1 -0
- package/dist/textarea.js +1 -0
- package/dist/textarea.mjs +1 -0
- package/dist/toggle-group.js +1 -0
- package/dist/toggle-group.mjs +1 -0
- package/dist/toggle.js +1 -0
- package/dist/toggle.mjs +1 -0
- package/dist/tooltip.js +1 -0
- package/dist/tooltip.mjs +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.mjs +1 -0
- package/package.json +303 -155
- package/style/drawer.css +163 -0
- package/style/globals.css +13 -0
- package/style/hanzo-common.css +31 -0
- package/style/hanzo-default-colors.css +82 -0
- package/style/theme-provider.tsx +20 -0
- package/CHANGELOG.md +0 -184
- package/LICENSE +0 -21
- package/dist/ai/index.js +0 -53
- package/dist/ai/index.js.map +0 -1
- package/dist/ai/index.mjs +0 -4
- package/dist/ai/index.mjs.map +0 -1
- package/dist/blocks/index.js +0 -983
- package/dist/blocks/index.js.map +0 -1
- package/dist/blocks/index.mjs +0 -945
- package/dist/blocks/index.mjs.map +0 -1
- package/dist/calendar/index.js +0 -14
- package/dist/calendar/index.js.map +0 -1
- package/dist/calendar/index.mjs +0 -5
- package/dist/calendar/index.mjs.map +0 -1
- package/dist/carousel/index.js +0 -220
- package/dist/carousel/index.js.map +0 -1
- package/dist/carousel/index.mjs +0 -191
- package/dist/carousel/index.mjs.map +0 -1
- package/dist/charts/index.js +0 -945
- package/dist/charts/index.js.map +0 -1
- package/dist/charts/index.mjs +0 -901
- package/dist/charts/index.mjs.map +0 -1
- package/dist/chunk-26T4V5QU.mjs +0 -111
- package/dist/chunk-26T4V5QU.mjs.map +0 -1
- package/dist/chunk-2A5KXDLJ.js +0 -22
- package/dist/chunk-2A5KXDLJ.js.map +0 -1
- package/dist/chunk-2CJ4HMF4.js +0 -79
- package/dist/chunk-2CJ4HMF4.js.map +0 -1
- package/dist/chunk-2OIQKC5E.js +0 -236
- package/dist/chunk-2OIQKC5E.js.map +0 -1
- package/dist/chunk-2X3KSYBN.js +0 -44
- package/dist/chunk-2X3KSYBN.js.map +0 -1
- package/dist/chunk-3PBQGYR7.mjs +0 -100
- package/dist/chunk-3PBQGYR7.mjs.map +0 -1
- package/dist/chunk-3POQQ6L7.js +0 -62
- package/dist/chunk-3POQQ6L7.js.map +0 -1
- package/dist/chunk-4B47GITH.mjs +0 -28
- package/dist/chunk-4B47GITH.mjs.map +0 -1
- package/dist/chunk-4BC2OH6B.js +0 -129
- package/dist/chunk-4BC2OH6B.js.map +0 -1
- package/dist/chunk-5AQSGH4R.js +0 -130
- package/dist/chunk-5AQSGH4R.js.map +0 -1
- package/dist/chunk-5IHRJFOO.mjs +0 -102
- package/dist/chunk-5IHRJFOO.mjs.map +0 -1
- package/dist/chunk-5LDGR7YN.mjs +0 -28
- package/dist/chunk-5LDGR7YN.mjs.map +0 -1
- package/dist/chunk-5MCN3VYM.mjs +0 -23
- package/dist/chunk-5MCN3VYM.mjs.map +0 -1
- package/dist/chunk-6AVAMRMB.mjs +0 -47
- package/dist/chunk-6AVAMRMB.mjs.map +0 -1
- package/dist/chunk-6H62JRNM.mjs +0 -120
- package/dist/chunk-6H62JRNM.mjs.map +0 -1
- package/dist/chunk-6KCII3F6.mjs +0 -126
- package/dist/chunk-6KCII3F6.mjs.map +0 -1
- package/dist/chunk-7EHB43BJ.js +0 -155
- package/dist/chunk-7EHB43BJ.js.map +0 -1
- package/dist/chunk-7LRD23Q5.js +0 -191
- package/dist/chunk-7LRD23Q5.js.map +0 -1
- package/dist/chunk-7SAHKOJG.mjs +0 -45
- package/dist/chunk-7SAHKOJG.mjs.map +0 -1
- package/dist/chunk-A3D2YZK3.js +0 -50
- package/dist/chunk-A3D2YZK3.js.map +0 -1
- package/dist/chunk-AL4QFH7V.js +0 -63
- package/dist/chunk-AL4QFH7V.js.map +0 -1
- package/dist/chunk-B3WFEG6U.js +0 -69
- package/dist/chunk-B3WFEG6U.js.map +0 -1
- package/dist/chunk-BDZQJ6GK.js +0 -242
- package/dist/chunk-BDZQJ6GK.js.map +0 -1
- package/dist/chunk-BRWFYRGX.js +0 -61
- package/dist/chunk-BRWFYRGX.js.map +0 -1
- package/dist/chunk-C5DNTLBO.js +0 -53
- package/dist/chunk-C5DNTLBO.js.map +0 -1
- package/dist/chunk-CRALRACO.js +0 -54
- package/dist/chunk-CRALRACO.js.map +0 -1
- package/dist/chunk-CVACQJRM.js +0 -149
- package/dist/chunk-CVACQJRM.js.map +0 -1
- package/dist/chunk-DEIUKFPZ.mjs +0 -63
- package/dist/chunk-DEIUKFPZ.mjs.map +0 -1
- package/dist/chunk-DN2AEEA2.js +0 -13
- package/dist/chunk-DN2AEEA2.js.map +0 -1
- package/dist/chunk-DTNRWU4B.mjs +0 -35
- package/dist/chunk-DTNRWU4B.mjs.map +0 -1
- package/dist/chunk-DXIUEWRJ.mjs +0 -31
- package/dist/chunk-DXIUEWRJ.mjs.map +0 -1
- package/dist/chunk-DYFV66JX.mjs +0 -54
- package/dist/chunk-DYFV66JX.mjs.map +0 -1
- package/dist/chunk-F3WMAHXV.mjs +0 -86
- package/dist/chunk-F3WMAHXV.mjs.map +0 -1
- package/dist/chunk-F4RWPBBB.js +0 -79
- package/dist/chunk-F4RWPBBB.js.map +0 -1
- package/dist/chunk-FEGAPM6U.js +0 -194
- package/dist/chunk-FEGAPM6U.js.map +0 -1
- package/dist/chunk-G5TS56PW.mjs +0 -160
- package/dist/chunk-G5TS56PW.mjs.map +0 -1
- package/dist/chunk-GG6VGOEN.mjs +0 -590
- package/dist/chunk-GG6VGOEN.mjs.map +0 -1
- package/dist/chunk-GLAMGK32.mjs +0 -54
- package/dist/chunk-GLAMGK32.mjs.map +0 -1
- package/dist/chunk-GNMMUJXD.mjs +0 -200
- package/dist/chunk-GNMMUJXD.mjs.map +0 -1
- package/dist/chunk-GNPBULLS.mjs +0 -600
- package/dist/chunk-GNPBULLS.mjs.map +0 -1
- package/dist/chunk-GTE2DELE.js +0 -65
- package/dist/chunk-GTE2DELE.js.map +0 -1
- package/dist/chunk-GUQAFFTH.js +0 -94
- package/dist/chunk-GUQAFFTH.js.map +0 -1
- package/dist/chunk-H5VOYZHT.mjs +0 -34
- package/dist/chunk-H5VOYZHT.mjs.map +0 -1
- package/dist/chunk-HR6PBOGG.mjs +0 -59
- package/dist/chunk-HR6PBOGG.mjs.map +0 -1
- package/dist/chunk-HROONQS3.js +0 -55
- package/dist/chunk-HROONQS3.js.map +0 -1
- package/dist/chunk-IAO7SOQ3.mjs +0 -56
- package/dist/chunk-IAO7SOQ3.mjs.map +0 -1
- package/dist/chunk-K2QKU3K6.mjs +0 -40
- package/dist/chunk-K2QKU3K6.mjs.map +0 -1
- package/dist/chunk-KEUZZCCP.js +0 -53
- package/dist/chunk-KEUZZCCP.js.map +0 -1
- package/dist/chunk-KJXSLTG7.mjs +0 -73
- package/dist/chunk-KJXSLTG7.mjs.map +0 -1
- package/dist/chunk-L5AFUCVH.mjs +0 -26
- package/dist/chunk-L5AFUCVH.mjs.map +0 -1
- package/dist/chunk-LB3I52KZ.mjs +0 -42
- package/dist/chunk-LB3I52KZ.mjs.map +0 -1
- package/dist/chunk-LN75MJQ2.js +0 -71
- package/dist/chunk-LN75MJQ2.js.map +0 -1
- package/dist/chunk-LRBOFJUV.js +0 -60
- package/dist/chunk-LRBOFJUV.js.map +0 -1
- package/dist/chunk-MMNYRBOU.js +0 -157
- package/dist/chunk-MMNYRBOU.js.map +0 -1
- package/dist/chunk-MO65YF6P.js +0 -236
- package/dist/chunk-MO65YF6P.js.map +0 -1
- package/dist/chunk-N4KHP5FC.mjs +0 -33
- package/dist/chunk-N4KHP5FC.mjs.map +0 -1
- package/dist/chunk-NP2J7AB7.mjs +0 -121
- package/dist/chunk-NP2J7AB7.mjs.map +0 -1
- package/dist/chunk-OLR6SGYO.js +0 -57
- package/dist/chunk-OLR6SGYO.js.map +0 -1
- package/dist/chunk-ON7NQ4DY.js +0 -21
- package/dist/chunk-ON7NQ4DY.js.map +0 -1
- package/dist/chunk-PE3VFRLV.mjs +0 -198
- package/dist/chunk-PE3VFRLV.mjs.map +0 -1
- package/dist/chunk-Q7LOOIE5.mjs +0 -8
- package/dist/chunk-Q7LOOIE5.mjs.map +0 -1
- package/dist/chunk-QFA6U75G.mjs +0 -51
- package/dist/chunk-QFA6U75G.mjs.map +0 -1
- package/dist/chunk-QJQPT4WX.js +0 -638
- package/dist/chunk-QJQPT4WX.js.map +0 -1
- package/dist/chunk-QKHQPBSR.mjs +0 -20
- package/dist/chunk-QKHQPBSR.mjs.map +0 -1
- package/dist/chunk-SJD4XRFJ.mjs +0 -141
- package/dist/chunk-SJD4XRFJ.mjs.map +0 -1
- package/dist/chunk-SOOJLU4C.mjs +0 -19
- package/dist/chunk-SOOJLU4C.mjs.map +0 -1
- package/dist/chunk-T66B5IM5.js +0 -51
- package/dist/chunk-T66B5IM5.js.map +0 -1
- package/dist/chunk-T7RPZDO4.js +0 -645
- package/dist/chunk-T7RPZDO4.js.map +0 -1
- package/dist/chunk-TGRMDGTV.mjs +0 -38
- package/dist/chunk-TGRMDGTV.mjs.map +0 -1
- package/dist/chunk-TH2UKMCO.mjs +0 -11
- package/dist/chunk-TH2UKMCO.mjs.map +0 -1
- package/dist/chunk-TMV45OKE.mjs +0 -113
- package/dist/chunk-TMV45OKE.mjs.map +0 -1
- package/dist/chunk-TUJ7EVEK.js +0 -171
- package/dist/chunk-TUJ7EVEK.js.map +0 -1
- package/dist/chunk-ULNWDOI7.js +0 -122
- package/dist/chunk-ULNWDOI7.js.map +0 -1
- package/dist/chunk-UNUTTHCH.mjs +0 -210
- package/dist/chunk-UNUTTHCH.mjs.map +0 -1
- package/dist/chunk-VJMI6BG4.mjs +0 -10
- package/dist/chunk-VJMI6BG4.mjs.map +0 -1
- package/dist/chunk-VZVOB5MG.mjs +0 -26
- package/dist/chunk-VZVOB5MG.mjs.map +0 -1
- package/dist/chunk-WD67O22C.js +0 -50
- package/dist/chunk-WD67O22C.js.map +0 -1
- package/dist/chunk-WYPMLIJN.js +0 -53
- package/dist/chunk-WYPMLIJN.js.map +0 -1
- package/dist/chunk-X32I34NH.js +0 -109
- package/dist/chunk-X32I34NH.js.map +0 -1
- package/dist/chunk-X5MOZ3YL.js +0 -65
- package/dist/chunk-X5MOZ3YL.js.map +0 -1
- package/dist/chunk-Y4JVIPQZ.mjs +0 -31
- package/dist/chunk-Y4JVIPQZ.mjs.map +0 -1
- package/dist/chunk-Y6WOV2LZ.js +0 -95
- package/dist/chunk-Y6WOV2LZ.js.map +0 -1
- package/dist/chunk-YAEN5SCU.mjs +0 -41
- package/dist/chunk-YAEN5SCU.mjs.map +0 -1
- package/dist/chunk-YH6XDF3N.js +0 -121
- package/dist/chunk-YH6XDF3N.js.map +0 -1
- package/dist/chunk-YJKA4D75.mjs +0 -124
- package/dist/chunk-YJKA4D75.mjs.map +0 -1
- package/dist/chunk-ZANAF7WB.js +0 -88
- package/dist/chunk-ZANAF7WB.js.map +0 -1
- package/dist/chunk-ZDBWNPLO.js +0 -30
- package/dist/chunk-ZDBWNPLO.js.map +0 -1
- package/dist/chunk-ZDT2IOK2.js +0 -56
- package/dist/chunk-ZDT2IOK2.js.map +0 -1
- package/dist/chunk-ZKGVLTSI.js +0 -25
- package/dist/chunk-ZKGVLTSI.js.map +0 -1
- package/dist/chunk-ZLELESO7.js +0 -34
- package/dist/chunk-ZLELESO7.js.map +0 -1
- package/dist/chunk-ZUFUEQTX.mjs +0 -157
- package/dist/chunk-ZUFUEQTX.mjs.map +0 -1
- package/dist/chunk-ZZZWRQQE.mjs +0 -42
- package/dist/chunk-ZZZWRQQE.mjs.map +0 -1
- package/dist/command/index.js +0 -138
- package/dist/command/index.js.map +0 -1
- package/dist/command/index.mjs +0 -128
- package/dist/command/index.mjs.map +0 -1
- package/dist/components/accordion.js +0 -25
- package/dist/components/accordion.js.map +0 -1
- package/dist/components/accordion.mjs +0 -4
- package/dist/components/accordion.mjs.map +0 -1
- package/dist/components/alert.js +0 -21
- package/dist/components/alert.js.map +0 -1
- package/dist/components/alert.mjs +0 -4
- package/dist/components/alert.mjs.map +0 -1
- package/dist/components/aspect-ratio.js +0 -12
- package/dist/components/aspect-ratio.js.map +0 -1
- package/dist/components/aspect-ratio.mjs +0 -3
- package/dist/components/aspect-ratio.mjs.map +0 -1
- package/dist/components/avatar.js +0 -21
- package/dist/components/avatar.js.map +0 -1
- package/dist/components/avatar.mjs +0 -4
- package/dist/components/avatar.mjs.map +0 -1
- package/dist/components/badge.js +0 -17
- package/dist/components/badge.js.map +0 -1
- package/dist/components/badge.mjs +0 -4
- package/dist/components/badge.mjs.map +0 -1
- package/dist/components/breadcrumb.js +0 -37
- package/dist/components/breadcrumb.js.map +0 -1
- package/dist/components/breadcrumb.mjs +0 -4
- package/dist/components/breadcrumb.mjs.map +0 -1
- package/dist/components/button.js +0 -17
- package/dist/components/button.js.map +0 -1
- package/dist/components/button.mjs +0 -4
- package/dist/components/button.mjs.map +0 -1
- package/dist/components/card.js +0 -37
- package/dist/components/card.js.map +0 -1
- package/dist/components/card.mjs +0 -4
- package/dist/components/card.mjs.map +0 -1
- package/dist/components/checkbox.js +0 -13
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/checkbox.mjs +0 -4
- package/dist/components/checkbox.mjs.map +0 -1
- package/dist/components/collapsible.js +0 -20
- package/dist/components/collapsible.js.map +0 -1
- package/dist/components/collapsible.mjs +0 -3
- package/dist/components/collapsible.mjs.map +0 -1
- package/dist/components/context-menu.js +0 -69
- package/dist/components/context-menu.js.map +0 -1
- package/dist/components/context-menu.mjs +0 -4
- package/dist/components/context-menu.mjs.map +0 -1
- package/dist/components/dialog.js +0 -49
- package/dist/components/dialog.js.map +0 -1
- package/dist/components/dialog.mjs +0 -4
- package/dist/components/dialog.mjs.map +0 -1
- package/dist/components/drawer.js +0 -49
- package/dist/components/drawer.js.map +0 -1
- package/dist/components/drawer.mjs +0 -4
- package/dist/components/drawer.mjs.map +0 -1
- package/dist/components/dropdown-menu.js +0 -69
- package/dist/components/dropdown-menu.js.map +0 -1
- package/dist/components/dropdown-menu.mjs +0 -4
- package/dist/components/dropdown-menu.mjs.map +0 -1
- package/dist/components/form.js +0 -42
- package/dist/components/form.js.map +0 -1
- package/dist/components/form.mjs +0 -5
- package/dist/components/form.mjs.map +0 -1
- package/dist/components/hover-card.js +0 -21
- package/dist/components/hover-card.js.map +0 -1
- package/dist/components/hover-card.mjs +0 -4
- package/dist/components/hover-card.mjs.map +0 -1
- package/dist/components/index.js +0 -1047
- package/dist/components/index.js.map +0 -1
- package/dist/components/index.mjs +0 -46
- package/dist/components/index.mjs.map +0 -1
- package/dist/components/input-otp.js +0 -25
- package/dist/components/input-otp.js.map +0 -1
- package/dist/components/input-otp.mjs +0 -4
- package/dist/components/input-otp.mjs.map +0 -1
- package/dist/components/input.js +0 -13
- package/dist/components/input.js.map +0 -1
- package/dist/components/input.mjs +0 -4
- package/dist/components/input.mjs.map +0 -1
- package/dist/components/label.js +0 -13
- package/dist/components/label.js.map +0 -1
- package/dist/components/label.mjs +0 -4
- package/dist/components/label.mjs.map +0 -1
- package/dist/components/menubar.js +0 -73
- package/dist/components/menubar.js.map +0 -1
- package/dist/components/menubar.mjs +0 -4
- package/dist/components/menubar.mjs.map +0 -1
- package/dist/components/navigation-menu.js +0 -45
- package/dist/components/navigation-menu.js.map +0 -1
- package/dist/components/navigation-menu.mjs +0 -4
- package/dist/components/navigation-menu.mjs.map +0 -1
- package/dist/components/pagination.js +0 -38
- package/dist/components/pagination.js.map +0 -1
- package/dist/components/pagination.mjs +0 -5
- package/dist/components/pagination.mjs.map +0 -1
- package/dist/components/popover.js +0 -25
- package/dist/components/popover.js.map +0 -1
- package/dist/components/popover.mjs +0 -4
- package/dist/components/popover.mjs.map +0 -1
- package/dist/components/progress.js +0 -13
- package/dist/components/progress.js.map +0 -1
- package/dist/components/progress.mjs +0 -4
- package/dist/components/progress.mjs.map +0 -1
- package/dist/components/radio-group.js +0 -17
- package/dist/components/radio-group.js.map +0 -1
- package/dist/components/radio-group.mjs +0 -4
- package/dist/components/radio-group.mjs.map +0 -1
- package/dist/components/resizable.js +0 -21
- package/dist/components/resizable.js.map +0 -1
- package/dist/components/resizable.mjs +0 -4
- package/dist/components/resizable.mjs.map +0 -1
- package/dist/components/scroll-area.js +0 -17
- package/dist/components/scroll-area.js.map +0 -1
- package/dist/components/scroll-area.mjs +0 -4
- package/dist/components/scroll-area.mjs.map +0 -1
- package/dist/components/select.js +0 -49
- package/dist/components/select.js.map +0 -1
- package/dist/components/select.mjs +0 -4
- package/dist/components/select.mjs.map +0 -1
- package/dist/components/separator.js +0 -13
- package/dist/components/separator.js.map +0 -1
- package/dist/components/separator.mjs +0 -4
- package/dist/components/separator.mjs.map +0 -1
- package/dist/components/sheet.js +0 -49
- package/dist/components/sheet.js.map +0 -1
- package/dist/components/sheet.mjs +0 -4
- package/dist/components/sheet.mjs.map +0 -1
- package/dist/components/sidebar.js +0 -111
- package/dist/components/sidebar.js.map +0 -1
- package/dist/components/sidebar.mjs +0 -10
- package/dist/components/sidebar.mjs.map +0 -1
- package/dist/components/skeleton.js +0 -13
- package/dist/components/skeleton.js.map +0 -1
- package/dist/components/skeleton.mjs +0 -4
- package/dist/components/skeleton.mjs.map +0 -1
- package/dist/components/slider.js +0 -13
- package/dist/components/slider.js.map +0 -1
- package/dist/components/slider.mjs +0 -4
- package/dist/components/slider.mjs.map +0 -1
- package/dist/components/switch.js +0 -13
- package/dist/components/switch.js.map +0 -1
- package/dist/components/switch.mjs +0 -4
- package/dist/components/switch.mjs.map +0 -1
- package/dist/components/table.js +0 -41
- package/dist/components/table.js.map +0 -1
- package/dist/components/table.mjs +0 -4
- package/dist/components/table.mjs.map +0 -1
- package/dist/components/tabs.js +0 -25
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/tabs.mjs +0 -4
- package/dist/components/tabs.mjs.map +0 -1
- package/dist/components/textarea.js +0 -13
- package/dist/components/textarea.js.map +0 -1
- package/dist/components/textarea.mjs +0 -4
- package/dist/components/textarea.mjs.map +0 -1
- package/dist/components/toast.js +0 -37
- package/dist/components/toast.js.map +0 -1
- package/dist/components/toast.mjs +0 -4
- package/dist/components/toast.mjs.map +0 -1
- package/dist/components/toggle-group.js +0 -18
- package/dist/components/toggle-group.js.map +0 -1
- package/dist/components/toggle-group.mjs +0 -5
- package/dist/components/toggle-group.mjs.map +0 -1
- package/dist/components/toggle.js +0 -17
- package/dist/components/toggle.js.map +0 -1
- package/dist/components/toggle.mjs +0 -4
- package/dist/components/toggle.mjs.map +0 -1
- package/dist/components/tooltip.js +0 -25
- package/dist/components/tooltip.js.map +0 -1
- package/dist/components/tooltip.mjs +0 -4
- package/dist/components/tooltip.mjs.map +0 -1
- package/dist/effects/index.js +0 -162
- package/dist/effects/index.js.map +0 -1
- package/dist/effects/index.mjs +0 -156
- package/dist/effects/index.mjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/lib/utils.mjs.map +0 -1
- package/dist/markdown/index.js +0 -669
- package/dist/markdown/index.js.map +0 -1
- package/dist/markdown/index.mjs +0 -635
- package/dist/markdown/index.mjs.map +0 -1
- package/dist/qr/index.js +0 -101
- package/dist/qr/index.js.map +0 -1
- package/dist/qr/index.mjs +0 -98
- package/dist/qr/index.mjs.map +0 -1
- package/dist/upload/index.js +0 -166
- package/dist/upload/index.js.map +0 -1
- package/dist/upload/index.mjs +0 -163
- package/dist/upload/index.mjs.map +0 -1
- package/publish.sh +0 -27
package/README.md
CHANGED
|
@@ -1,29 +1,10 @@
|
|
|
1
|
-
# @hanzo/ui
|
|
1
|
+
# @hanzo/ui
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://www.npmjs.com/package/@hanzo/ui)
|
|
5
|
-
[](https://bundlephobia.com/package/@hanzo/ui)
|
|
6
|
-
[](https://opensource.org/licenses/MIT)
|
|
7
|
-
[](https://www.typescriptlang.org/)
|
|
3
|
+
A comprehensive UI component library for Hanzo applications, built with React and TypeScript.
|
|
8
4
|
|
|
9
|
-
|
|
5
|
+
## Version 4.5.6
|
|
10
6
|
|
|
11
|
-
##
|
|
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
|
-
##
|
|
37
|
-
|
|
38
|
-
###
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
98
|
-
- **
|
|
99
|
-
- **
|
|
100
|
-
- **
|
|
101
|
-
- **
|
|
102
|
-
- **
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
-
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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 {
|
|
154
|
+
import { Button } from '@hanzo/ui';
|
|
148
155
|
|
|
149
156
|
function App() {
|
|
150
157
|
return (
|
|
151
|
-
<
|
|
152
|
-
|
|
153
|
-
</
|
|
154
|
-
)
|
|
158
|
+
<Button variant="primary" onClick={() => console.log('clicked')}>
|
|
159
|
+
Click me
|
|
160
|
+
</Button>
|
|
161
|
+
);
|
|
155
162
|
}
|
|
156
163
|
```
|
|
157
164
|
|
|
158
|
-
|
|
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 {
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
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
|
-
###
|
|
182
|
-
|
|
183
|
-
All components are fully typed:
|
|
203
|
+
### AI Provider Icons
|
|
184
204
|
|
|
185
205
|
```tsx
|
|
186
|
-
import
|
|
206
|
+
import { OpenAIIcon, AnthropicIcon, GeminiIcon } from '@hanzo/ui/assets';
|
|
187
207
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
221
|
+
BSD-3-Clause
|
|
211
222
|
|
|
212
|
-
##
|
|
223
|
+
## Author
|
|
213
224
|
|
|
214
|
-
|
|
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
|
-
|
|
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();
|