@hanzo/ui 4.5.4 → 4.7.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 (203) hide show
  1. package/README.md +229 -0
  2. package/bin/create-registry.js +1 -1
  3. package/bin/test-mcp.sh +1 -1
  4. package/bin/update-registry.js +2 -2
  5. package/dist/index.d.mts +16 -0
  6. package/dist/index.d.ts +16 -0
  7. package/dist/index.js +9458 -0
  8. package/dist/index.mjs +9449 -0
  9. package/dist/lib/utils.d.mts +2 -0
  10. package/dist/lib/utils.d.ts +2 -0
  11. package/dist/lib/utils.js +47 -0
  12. package/dist/lib/utils.mjs +28 -0
  13. package/dist/src/utils.d.mts +7 -0
  14. package/dist/src/utils.d.ts +7 -0
  15. package/dist/src/utils.js +47 -0
  16. package/dist/src/utils.mjs +28 -0
  17. package/dist/tailwind/index.d.mts +2 -0
  18. package/dist/tailwind/index.d.ts +2 -0
  19. package/dist/tailwind/index.js +2048 -0
  20. package/dist/tailwind/index.mjs +2017 -0
  21. package/dist/types/index.d.mts +12 -0
  22. package/dist/types/index.d.ts +12 -0
  23. package/dist/types/index.js +79 -0
  24. package/dist/types/index.mjs +56 -0
  25. package/package.json +170 -23
  26. package/style/theme-provider.tsx +1 -1
  27. package/MCP-INSTRUCTIONS.md +0 -73
  28. package/README-MCP.md +0 -175
  29. package/blocks/components/accordian-block.tsx +0 -48
  30. package/blocks/components/block-component-props.ts +0 -11
  31. package/blocks/components/bullet-cards-block.tsx +0 -46
  32. package/blocks/components/card-block/index.tsx +0 -171
  33. package/blocks/components/card-block/link-out-button.tsx +0 -20
  34. package/blocks/components/card-block/util.ts +0 -28
  35. package/blocks/components/carte-blanche-block/index.tsx +0 -127
  36. package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
  37. package/blocks/components/content.tsx +0 -70
  38. package/blocks/components/cta-block.tsx +0 -115
  39. package/blocks/components/enh-heading-block.tsx +0 -204
  40. package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
  41. package/blocks/components/grid-block/index.tsx +0 -83
  42. package/blocks/components/grid-block/mutator-registry.ts +0 -10
  43. package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
  44. package/blocks/components/group-block.tsx +0 -83
  45. package/blocks/components/heading-block.tsx +0 -88
  46. package/blocks/components/image-block.tsx +0 -111
  47. package/blocks/components/index.ts +0 -30
  48. package/blocks/components/screenful-block/content.tsx +0 -123
  49. package/blocks/components/screenful-block/index.tsx +0 -107
  50. package/blocks/components/screenful-block/poster-background.tsx +0 -34
  51. package/blocks/components/screenful-block/video-background.tsx +0 -45
  52. package/blocks/components/space-block.tsx +0 -66
  53. package/blocks/components/video-block.tsx +0 -138
  54. package/blocks/def/accordian-block.ts +0 -14
  55. package/blocks/def/block.ts +0 -7
  56. package/blocks/def/bullet-cards-block.ts +0 -22
  57. package/blocks/def/card-block.ts +0 -22
  58. package/blocks/def/carte-blanche-block.ts +0 -21
  59. package/blocks/def/cta-block.ts +0 -19
  60. package/blocks/def/element-block.ts +0 -11
  61. package/blocks/def/enh-heading-block.ts +0 -44
  62. package/blocks/def/grid-block.ts +0 -16
  63. package/blocks/def/group-block.ts +0 -11
  64. package/blocks/def/heading-block.ts +0 -15
  65. package/blocks/def/image-block.ts +0 -31
  66. package/blocks/def/index.ts +0 -35
  67. package/blocks/def/screenful-block.ts +0 -54
  68. package/blocks/def/space-block.ts +0 -64
  69. package/blocks/def/video-block.ts +0 -9
  70. package/blocks/index.ts +0 -2
  71. package/dist/mcp/enhanced-server.d.ts +0 -29
  72. package/dist/mcp/enhanced-server.js +0 -1128
  73. package/dist/mcp/index.d.ts +0 -28
  74. package/dist/mcp/index.js +0 -436
  75. package/dist/registry/api.d.ts +0 -37
  76. package/dist/registry/api.js +0 -129
  77. package/dist/registry/index.d.ts +0 -353
  78. package/dist/registry/index.js +0 -45
  79. package/environment.d.ts +0 -6
  80. package/primitives/accordion.tsx +0 -66
  81. package/primitives/action-button.tsx +0 -42
  82. package/primitives/apply-typography.tsx +0 -55
  83. package/primitives/aspect-ratio.tsx +0 -5
  84. package/primitives/avatar.tsx +0 -49
  85. package/primitives/badge.tsx +0 -36
  86. package/primitives/breadcrumb.tsx +0 -115
  87. package/primitives/breakpoint-indicator.tsx +0 -19
  88. package/primitives/button.tsx +0 -85
  89. package/primitives/calendar.tsx +0 -72
  90. package/primitives/card.tsx +0 -83
  91. package/primitives/carousel.tsx +0 -237
  92. package/primitives/checkbox.tsx +0 -32
  93. package/primitives/combobox.tsx +0 -239
  94. package/primitives/command.tsx +0 -157
  95. package/primitives/context-menu.tsx +0 -200
  96. package/primitives/dialog-video-controller.tsx +0 -38
  97. package/primitives/dialog.tsx +0 -157
  98. package/primitives/drawer.tsx +0 -138
  99. package/primitives/form.tsx +0 -178
  100. package/primitives/icons/github.tsx +0 -14
  101. package/primitives/icons/index.ts +0 -18
  102. package/primitives/icons/youtube-logo.tsx +0 -59
  103. package/primitives/index-common.ts +0 -224
  104. package/primitives/index-next.ts +0 -2
  105. package/primitives/input-otp.tsx +0 -65
  106. package/primitives/input.tsx +0 -30
  107. package/primitives/label.tsx +0 -28
  108. package/primitives/list-adaptor.ts +0 -12
  109. package/primitives/list-box.tsx +0 -74
  110. package/primitives/loading-spinner.tsx +0 -33
  111. package/primitives/navigation-menu.tsx +0 -147
  112. package/primitives/next/image.tsx +0 -90
  113. package/primitives/next/index.ts +0 -7
  114. package/primitives/next/inline-icon.tsx +0 -36
  115. package/primitives/next/link-element.tsx +0 -109
  116. package/primitives/next/mdx-link.tsx +0 -22
  117. package/primitives/next/media-stack.tsx +0 -69
  118. package/primitives/next/nav-items.tsx +0 -45
  119. package/primitives/next/youtube-embed.tsx +0 -83
  120. package/primitives/popover.tsx +0 -37
  121. package/primitives/progress.tsx +0 -27
  122. package/primitives/radio-group.tsx +0 -56
  123. package/primitives/scroll-area.tsx +0 -47
  124. package/primitives/select.tsx +0 -169
  125. package/primitives/separator.tsx +0 -29
  126. package/primitives/sheet.tsx +0 -178
  127. package/primitives/skeleton.tsx +0 -20
  128. package/primitives/slider.tsx +0 -72
  129. package/primitives/sonner.tsx +0 -35
  130. package/primitives/step-indicator.tsx +0 -69
  131. package/primitives/switch.tsx +0 -35
  132. package/primitives/table.tsx +0 -117
  133. package/primitives/tabs.tsx +0 -60
  134. package/primitives/text-area.tsx +0 -26
  135. package/primitives/toggle-group.tsx +0 -63
  136. package/primitives/toggle.tsx +0 -73
  137. package/primitives/tooltip.tsx +0 -48
  138. package/primitives/video-player.tsx +0 -23
  139. package/public/r/accordion.json +0 -11
  140. package/public/r/alert.json +0 -11
  141. package/public/r/avatar.json +0 -11
  142. package/public/r/badge.json +0 -11
  143. package/public/r/button.json +0 -11
  144. package/public/r/card.json +0 -11
  145. package/public/r/checkbox.json +0 -11
  146. package/public/r/default.json +0 -6
  147. package/public/r/dialog.json +0 -11
  148. package/public/r/input.json +0 -11
  149. package/public/r/label.json +0 -11
  150. package/public/r/new-york.json +0 -6
  151. package/public/r/popover.json +0 -11
  152. package/public/r/select.json +0 -11
  153. package/public/r/table.json +0 -11
  154. package/public/r/tabs.json +0 -11
  155. package/public/r/toast.json +0 -11
  156. package/registry.json +0 -184
  157. package/src/mcp/README.md +0 -141
  158. package/src/mcp/enhanced-server.ts +0 -1208
  159. package/src/mcp/index.ts +0 -518
  160. package/src/mcp/package.json +0 -10
  161. package/src/registry/api.ts +0 -164
  162. package/src/registry/index.ts +0 -60
  163. package/src/registry/package.json +0 -10
  164. package/tailwind/colors.tailwind.js +0 -53
  165. package/tailwind/fontFamily.tailwind.ts +0 -7
  166. package/tailwind/fontSize.tailwind.ts +0 -13
  167. package/tailwind/index.ts +0 -7
  168. package/tailwind/safelist.tailwind.js +0 -26
  169. package/tailwind/screens.tailwind.js +0 -8
  170. package/tailwind/spacing.tailwind.js +0 -65
  171. package/tailwind/tailwind.config.hanzo-preset.d.ts +0 -5
  172. package/tailwind/tailwind.config.hanzo-preset.js +0 -915
  173. package/tailwind/tw-font-desc.ts +0 -15
  174. package/tailwind/typo-plugin/get-plugin-styles.js +0 -679
  175. package/tailwind/typo-plugin/index.d.ts +0 -9
  176. package/tailwind/typo-plugin/index.js +0 -141
  177. package/tailwind/typo-plugin/utils.js +0 -60
  178. package/tailwind/typography-test.mdx +0 -35
  179. package/tailwind/z-index.tailwind.js +0 -71
  180. package/test/test-registry.js +0 -73
  181. package/tsconfig.json +0 -22
  182. package/types/animation-def.ts +0 -3
  183. package/types/breakpoints.ts +0 -11
  184. package/types/bullet-item.ts +0 -10
  185. package/types/button-def.ts +0 -39
  186. package/types/dimensions.ts +0 -8
  187. package/types/grid-def.ts +0 -56
  188. package/types/image-def.ts +0 -32
  189. package/types/index.ts +0 -29
  190. package/types/link-def.ts +0 -56
  191. package/types/media-stack-def.ts +0 -31
  192. package/types/t-shirt-size.ts +0 -5
  193. package/types/tshirt-dimensions.ts +0 -20
  194. package/types/video-def.ts +0 -25
  195. package/util/format-and-abbreviate-as-currency.ts +0 -125
  196. package/util/format-to-max-char.ts +0 -68
  197. package/util/index-client.ts +0 -3
  198. package/util/index.ts +0 -78
  199. package/util/number-abbreviate.ts +0 -49
  200. package/util/specifier.ts +0 -43
  201. package/util/spread-to-transform.ts +0 -24
  202. package/util/step-animation.ts +0 -90
  203. package/util/two-way-map.ts +0 -19
@@ -0,0 +1,12 @@
1
+ export { default as AnimationDef } from './animation-def.ts';
2
+ export { Breakpoint, Breakpoints } from './breakpoints.ts';
3
+ export { default as BulletItem } from './bullet-item.ts';
4
+ export { ButtonDef, ButtonModalDef, ButtonModalProps, SubmitServerAction } from './button-def.ts';
5
+ export { default as Dimensions } from './dimensions.ts';
6
+ export { COMMON_GRID_1_COL, COMMON_GRID_2_COL, COMMON_GRID_3_COL, COMMON_GRID_4_COL, GridColumnSpec, default as GridDef } from './grid-def.ts';
7
+ export { default as ImageDef } from './image-def.ts';
8
+ export { default as LinkDef } from './link-def.ts';
9
+ export { default as TShirtDimensions } from './tshirt-dimensions.ts';
10
+ export { default as TShirtSize } from './t-shirt-size.ts';
11
+ export { default as VideoDef } from './video-def.ts';
12
+ export { MediaStackDef, MediaTransform } from './media-stack-def.ts';
@@ -0,0 +1,12 @@
1
+ export { default as AnimationDef } from './animation-def.ts';
2
+ export { Breakpoint, Breakpoints } from './breakpoints.ts';
3
+ export { default as BulletItem } from './bullet-item.ts';
4
+ export { ButtonDef, ButtonModalDef, ButtonModalProps, SubmitServerAction } from './button-def.ts';
5
+ export { default as Dimensions } from './dimensions.ts';
6
+ export { COMMON_GRID_1_COL, COMMON_GRID_2_COL, COMMON_GRID_3_COL, COMMON_GRID_4_COL, GridColumnSpec, default as GridDef } from './grid-def.ts';
7
+ export { default as ImageDef } from './image-def.ts';
8
+ export { default as LinkDef } from './link-def.ts';
9
+ export { default as TShirtDimensions } from './tshirt-dimensions.ts';
10
+ export { default as TShirtSize } from './t-shirt-size.ts';
11
+ export { default as VideoDef } from './video-def.ts';
12
+ export { MediaStackDef, MediaTransform } from './media-stack-def.ts';
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // types/index.ts
21
+ var types_exports = {};
22
+ __export(types_exports, {
23
+ Breakpoints: () => Breakpoints,
24
+ COMMON_GRID_1_COL: () => COMMON_GRID_1_COL,
25
+ COMMON_GRID_2_COL: () => COMMON_GRID_2_COL,
26
+ COMMON_GRID_3_COL: () => COMMON_GRID_3_COL,
27
+ COMMON_GRID_4_COL: () => COMMON_GRID_4_COL
28
+ });
29
+ module.exports = __toCommonJS(types_exports);
30
+
31
+ // tailwind/screens.tailwind.js
32
+ var screens_tailwind_default = {
33
+ xs: "0px",
34
+ // <-- phone
35
+ sm: "480px",
36
+ // phone --><-- sm tablets / narrow
37
+ md: "768px",
38
+ // sm tablets / narrow -->
39
+ lg: "1024px",
40
+ xl: "1280px",
41
+ "2xl": "1500px"
42
+ };
43
+
44
+ // types/breakpoints.ts
45
+ var Breakpoints = Object.keys(screens_tailwind_default);
46
+
47
+ // types/grid-def.ts
48
+ var COMMON_GRID_1_COL = {
49
+ at: {
50
+ xs: { columns: 1, gap: 2 },
51
+ md: { columns: 1, gap: 3 },
52
+ lg: { columns: 1, gap: 6 }
53
+ },
54
+ mobile: { columns: 1, gap: 2 }
55
+ };
56
+ var COMMON_GRID_2_COL = {
57
+ at: {
58
+ xs: { columns: 1, gap: 2 },
59
+ md: { columns: 2, gap: 3 },
60
+ lg: { columns: 2, gap: 6 }
61
+ },
62
+ mobile: { columns: 1, gap: 2 }
63
+ };
64
+ var COMMON_GRID_3_COL = {
65
+ at: {
66
+ xs: { columns: 1, gap: 2 },
67
+ md: { columns: 3, gap: 3 },
68
+ lg: { columns: 3, gap: 6 }
69
+ },
70
+ mobile: { columns: 1, gap: 2 }
71
+ };
72
+ var COMMON_GRID_4_COL = {
73
+ at: {
74
+ xs: { columns: 1, gap: 2 },
75
+ md: { columns: 2, gap: 3 },
76
+ lg: { columns: 4, gap: 6 }
77
+ },
78
+ mobile: { columns: 1, gap: 2 }
79
+ };
@@ -0,0 +1,56 @@
1
+ // tailwind/screens.tailwind.js
2
+ var screens_tailwind_default = {
3
+ xs: "0px",
4
+ // <-- phone
5
+ sm: "480px",
6
+ // phone --><-- sm tablets / narrow
7
+ md: "768px",
8
+ // sm tablets / narrow -->
9
+ lg: "1024px",
10
+ xl: "1280px",
11
+ "2xl": "1500px"
12
+ };
13
+
14
+ // types/breakpoints.ts
15
+ var Breakpoints = Object.keys(screens_tailwind_default);
16
+
17
+ // types/grid-def.ts
18
+ var COMMON_GRID_1_COL = {
19
+ at: {
20
+ xs: { columns: 1, gap: 2 },
21
+ md: { columns: 1, gap: 3 },
22
+ lg: { columns: 1, gap: 6 }
23
+ },
24
+ mobile: { columns: 1, gap: 2 }
25
+ };
26
+ var COMMON_GRID_2_COL = {
27
+ at: {
28
+ xs: { columns: 1, gap: 2 },
29
+ md: { columns: 2, gap: 3 },
30
+ lg: { columns: 2, gap: 6 }
31
+ },
32
+ mobile: { columns: 1, gap: 2 }
33
+ };
34
+ var COMMON_GRID_3_COL = {
35
+ at: {
36
+ xs: { columns: 1, gap: 2 },
37
+ md: { columns: 3, gap: 3 },
38
+ lg: { columns: 3, gap: 6 }
39
+ },
40
+ mobile: { columns: 1, gap: 2 }
41
+ };
42
+ var COMMON_GRID_4_COL = {
43
+ at: {
44
+ xs: { columns: 1, gap: 2 },
45
+ md: { columns: 2, gap: 3 },
46
+ lg: { columns: 4, gap: 6 }
47
+ },
48
+ mobile: { columns: 1, gap: 2 }
49
+ };
50
+ export {
51
+ Breakpoints,
52
+ COMMON_GRID_1_COL,
53
+ COMMON_GRID_2_COL,
54
+ COMMON_GRID_3_COL,
55
+ COMMON_GRID_4_COL
56
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "4.5.4",
4
- "description": "Library that contains shared UI primitives, support for a common design system, and other boilerplate support.",
3
+ "version": "4.7.0",
4
+ "description": "Multi-framework UI library with React, Vue, Svelte, and React Native support. Based on shadcn/ui with comprehensive framework coverage.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
7
7
  "access": "public",
@@ -9,6 +9,17 @@
9
9
  },
10
10
  "author": "Hanzo AI, Inc.",
11
11
  "license": "BSD-3-Clause",
12
+ "main": "./dist/index.js",
13
+ "module": "./dist/index.mjs",
14
+ "types": "./dist/index.d.ts",
15
+ "sideEffects": false,
16
+ "files": [
17
+ "dist",
18
+ "style",
19
+ "bin",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
12
23
  "repository": {
13
24
  "type": "git",
14
25
  "url": "git+https://github.com/hanzoai/react-sdk.git",
@@ -31,44 +42,170 @@
31
42
  "scripts": {
32
43
  "lat": "npm show @hanzo/ui version",
33
44
  "pub": "npm publish",
34
- "tc": "tsc",
35
- "build": "tsc -p tsconfig.json",
45
+ "tc": "tsc --project tsconfig.build.json",
46
+ "build": "npm run clean && npm run build:tsup",
47
+ "build:tsup": "tsup --config tsup.config.minimal.ts",
48
+ "build:full": "tsup --config tsup.config.production.ts",
49
+ "build:frameworks": "npm run build",
50
+ "build:watch": "tsup --watch",
51
+ "build:check": "tsc --project tsconfig.build.json --noEmit",
52
+ "clean": "rm -rf dist",
53
+ "prepublishOnly": "npm run build",
36
54
  "update-registry": "node ./bin/update-registry.js",
37
55
  "registry:mcp": "node ./bin/cli.js registry:mcp",
38
- "registry:mcp:http": "node ./bin/cli.js registry:mcp --http"
56
+ "registry:mcp:http": "node ./bin/cli.js registry:mcp --http",
57
+ "analyze:frameworks": "node analyze-frameworks.js",
58
+ "test": "jest test/multi-framework.test.js",
59
+ "test:frameworks": "jest test/multi-framework.test.js --verbose"
39
60
  },
40
61
  "bin": {
41
62
  "@hanzo/ui": "./bin/cli.js",
42
63
  "hanzo-ui": "./bin/cli.js"
43
64
  },
44
65
  "exports": {
45
- "./blocks": "./blocks/index.ts",
46
- "./primitives": "./primitives/index-next.ts",
47
- "./primitives-common": "./primitives/index-common.ts",
66
+ ".": {
67
+ "types": "./dist/index.d.ts",
68
+ "import": "./dist/index.mjs",
69
+ "require": "./dist/index.js"
70
+ },
71
+ "./assets": {
72
+ "types": "./dist/assets/index.d.ts",
73
+ "import": "./dist/assets/index.mjs",
74
+ "require": "./dist/assets/index.js"
75
+ },
76
+ "./assets/*": {
77
+ "types": "./dist/assets/*.d.ts",
78
+ "import": "./dist/assets/*.mjs",
79
+ "require": "./dist/assets/*.js"
80
+ },
81
+ "./blocks": {
82
+ "types": "./dist/blocks/index.d.ts",
83
+ "import": "./dist/blocks/index.mjs",
84
+ "require": "./dist/blocks/index.js"
85
+ },
86
+ "./blocks/*": {
87
+ "types": "./dist/blocks/*.d.ts",
88
+ "import": "./dist/blocks/*.mjs",
89
+ "require": "./dist/blocks/*.js"
90
+ },
91
+ "./components": {
92
+ "types": "./dist/components/index.d.ts",
93
+ "import": "./dist/components/index.mjs",
94
+ "require": "./dist/components/index.js"
95
+ },
96
+ "./components/*": {
97
+ "types": "./dist/components/*.d.ts",
98
+ "import": "./dist/components/*.mjs",
99
+ "require": "./dist/components/*.js"
100
+ },
101
+ "./primitives": {
102
+ "types": "./dist/primitives/index-next.d.ts",
103
+ "import": "./dist/primitives/index-next.mjs",
104
+ "require": "./dist/primitives/index-next.js"
105
+ },
106
+ "./primitives/*": {
107
+ "types": "./dist/primitives/*.d.ts",
108
+ "import": "./dist/primitives/*.mjs",
109
+ "require": "./dist/primitives/*.js"
110
+ },
111
+ "./primitives-common": {
112
+ "types": "./dist/primitives/index-common.d.ts",
113
+ "import": "./dist/primitives/index-common.mjs",
114
+ "require": "./dist/primitives/index-common.js"
115
+ },
48
116
  "./registry": {
49
- "types": "./dist/registry/index.d.ts",
50
- "default": "./dist/registry/index.js"
51
- },
52
- "./style/": "./style/*",
53
- "./tailwind": "./tailwind/index.ts",
54
- "./types": "./types/index.ts",
55
- "./util": "./util/index.ts",
56
- "./util-client": "./util/index-client.ts",
117
+ "types": "./dist/src/registry/index.d.ts",
118
+ "import": "./dist/src/registry/index.mjs",
119
+ "require": "./dist/src/registry/index.js"
120
+ },
121
+ "./style/*": "./style/*",
122
+ "./tailwind": {
123
+ "types": "./dist/tailwind/index.d.ts",
124
+ "import": "./dist/tailwind/index.mjs",
125
+ "require": "./dist/tailwind/index.js"
126
+ },
127
+ "./tailwind/*": {
128
+ "types": "./dist/tailwind/*.d.ts",
129
+ "import": "./dist/tailwind/*.mjs",
130
+ "require": "./dist/tailwind/*.js"
131
+ },
132
+ "./types": {
133
+ "types": "./dist/types/index.d.ts",
134
+ "import": "./dist/types/index.mjs",
135
+ "require": "./dist/types/index.js"
136
+ },
137
+ "./types/*": {
138
+ "types": "./dist/types/*.d.ts",
139
+ "import": "./dist/types/*.mjs",
140
+ "require": "./dist/types/*.js"
141
+ },
142
+ "./util": {
143
+ "types": "./dist/util/index.d.ts",
144
+ "import": "./dist/util/index.mjs",
145
+ "require": "./dist/util/index.js"
146
+ },
147
+ "./util/*": {
148
+ "types": "./dist/util/*.d.ts",
149
+ "import": "./dist/util/*.mjs",
150
+ "require": "./dist/util/*.js"
151
+ },
152
+ "./util-client": {
153
+ "types": "./dist/util/index-client.d.ts",
154
+ "import": "./dist/util/index-client.mjs",
155
+ "require": "./dist/util/index-client.js"
156
+ },
157
+ "./utils": {
158
+ "types": "./dist/src/utils.d.ts",
159
+ "import": "./dist/src/utils.mjs",
160
+ "require": "./dist/src/utils.js"
161
+ },
162
+ "./lib/utils": {
163
+ "types": "./dist/src/utils.d.ts",
164
+ "import": "./dist/src/utils.mjs",
165
+ "require": "./dist/src/utils.js"
166
+ },
57
167
  "./mcp": {
58
- "types": "./dist/mcp/index.d.ts",
59
- "default": "./dist/mcp/index.js"
60
- }
168
+ "types": "./dist/src/mcp/index.d.ts",
169
+ "import": "./dist/src/mcp/index.mjs",
170
+ "require": "./dist/src/mcp/index.js"
171
+ },
172
+ "./react": {
173
+ "types": "./dist/frameworks/react/index.d.ts",
174
+ "import": "./dist/frameworks/react/index.mjs",
175
+ "require": "./dist/frameworks/react/index.js"
176
+ },
177
+ "./vue": {
178
+ "types": "./dist/frameworks/vue/index.d.ts",
179
+ "import": "./dist/frameworks/vue/index.mjs",
180
+ "require": "./dist/frameworks/vue/index.js"
181
+ },
182
+ "./svelte": {
183
+ "svelte": "./frameworks/svelte/index.ts",
184
+ "types": "./dist/frameworks/svelte/index.d.ts",
185
+ "import": "./dist/frameworks/svelte/index.mjs",
186
+ "require": "./dist/frameworks/svelte/index.js"
187
+ },
188
+ "./react-native": {
189
+ "types": "./dist/frameworks/react-native/index.d.ts",
190
+ "import": "./dist/frameworks/react-native/index.mjs",
191
+ "require": "./dist/frameworks/react-native/index.js"
192
+ },
193
+ "./package.json": "./package.json"
61
194
  },
62
195
  "dependencies": {
63
196
  "@hanzo/react-drawer": "^0.1.8",
64
197
  "@modelcontextprotocol/sdk": "^1.10.2",
65
198
  "@next/third-parties": "^15.0.1",
66
199
  "@radix-ui/react-accordion": "^1.1.2",
200
+ "@radix-ui/react-alert-dialog": "^1.1.15",
67
201
  "@radix-ui/react-aspect-ratio": "^1.0.3",
68
202
  "@radix-ui/react-avatar": "^1.0.3",
69
203
  "@radix-ui/react-checkbox": "^1.0.4",
204
+ "@radix-ui/react-collapsible": "^1.1.12",
70
205
  "@radix-ui/react-context-menu": "^2.2.2",
71
206
  "@radix-ui/react-dialog": "^1.0.5",
207
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
208
+ "@radix-ui/react-hover-card": "^1.1.15",
72
209
  "@radix-ui/react-icons": "^1.3.0",
73
210
  "@radix-ui/react-label": "^2.0.2",
74
211
  "@radix-ui/react-navigation-menu": "^1.1.3",
@@ -86,26 +223,34 @@
86
223
  "@radix-ui/react-toggle": "^1.0.3",
87
224
  "@radix-ui/react-toggle-group": "^1.0.4",
88
225
  "@radix-ui/react-tooltip": "^1.0.6",
226
+ "@radix-ui/react-use-callback-ref": "^1.1.1",
89
227
  "@splinetool/react-spline": "^4.0.0",
90
228
  "@splinetool/runtime": "^1.9.35",
91
229
  "@tailwindcss/container-queries": "^0.1.1",
92
- "class-variance-authority": "^0.7.0",
93
- "clsx": "^2.1.0",
230
+ "class-variance-authority": "^0.7.1",
231
+ "clsx": "^2.1.1",
94
232
  "cmdk": "^0.2.0",
95
233
  "commander": "^12.1.0",
234
+ "date-fns": "^4.1.0",
96
235
  "embla-carousel-react": "8.5.1",
97
236
  "input-otp": "^1.0.1",
98
237
  "lodash.castarray": "^4.4.0",
99
238
  "lodash.isplainobject": "^4.0.6",
100
239
  "lodash.merge": "^4.6.2",
101
- "markdown-to-jsx": "^7.4.7",
240
+ "markdown-to-jsx": "^7.7.13",
241
+ "mermaid": "^11.12.0",
102
242
  "postcss-selector-parser": "^6.0.16",
243
+ "qrcode.react": "^4.2.0",
103
244
  "react-day-picker": "^8.10.1",
104
245
  "react-intersection-observer": "^9.8.2",
246
+ "react-resizable-panels": "^3.0.6",
105
247
  "sonner": "^1.4.41",
106
- "tailwind-merge": "^2.3.0",
248
+ "sql.js": "^1.13.0",
249
+ "svg-pan-zoom": "^3.6.2",
250
+ "tailwind-merge": "^2.6.0",
107
251
  "tailwindcss-animate": "^1.0.7",
108
252
  "tailwindcss-interaction-media": "^0.1.0",
253
+ "vaul": "^1.1.2",
109
254
  "zod": "^3.23.8",
110
255
  "zod-to-json-schema": "^3.23.2"
111
256
  },
@@ -133,7 +278,9 @@
133
278
  "@types/react": "18.3.1",
134
279
  "@types/react-dom": "18.3.1",
135
280
  "glob": "^11.0.2",
281
+ "jest": "^30.1.3",
136
282
  "tailwindcss": "3.4.14",
283
+ "tsup": "^8.5.0",
137
284
  "typescript": "5.6.3"
138
285
  }
139
286
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import React from "react"
4
4
  import { ThemeProvider as NextThemesProvider } from "next-themes"
5
- import { type ThemeProviderProps } from "next-themes/dist/types"
5
+ import { ThemeProviderProps } from "next-themes/dist/types"
6
6
 
7
7
  const ThemeProvider: React.FC<ThemeProviderProps> = ({ children, ...props }) => (
8
8
  <NextThemesProvider
@@ -1,73 +0,0 @@
1
- # Using @hanzo/ui with AI Assistants
2
-
3
- This guide explains how to use @hanzo/ui with AI assistants through the Model Context Protocol (MCP).
4
-
5
- ## Getting Started
6
-
7
- 1. Install the package:
8
-
9
- ```bash
10
- npm install @hanzo/ui
11
- ```
12
-
13
- 2. Start the MCP server:
14
-
15
- ```bash
16
- npx @hanzo/ui registry:mcp
17
- ```
18
-
19
- 3. Configure your AI assistant to use the server.
20
-
21
- ## Available Commands
22
-
23
- - **Initialize a new project**:
24
- ```bash
25
- npx @hanzo/ui init --style=default
26
- ```
27
-
28
- - **List available components**:
29
- ```bash
30
- npx @hanzo/ui list
31
- ```
32
-
33
- - **Add a component**:
34
- ```bash
35
- npx @hanzo/ui add button
36
- ```
37
-
38
- ## Using with LLMs
39
-
40
- AI Assistants like Claude or ChatGPT can help you explore and use the components. Just describe what you need, and the AI can guide you through:
41
-
42
- - Finding the right component
43
- - Installing and configuring it
44
- - Using it in your project
45
-
46
- Example prompt: "I need a dropdown menu component for my React project. Can you help me find and set it up using @hanzo/ui?"
47
-
48
- ## Registry Configuration
49
-
50
- You can create a custom registry for your components, making them available through the same interface. To create a registry:
51
-
52
- 1. Set up the registry structure
53
- 2. Run the update-registry script
54
- 3. Host the registry files
55
- 4. Point to your custom registry:
56
-
57
- ```bash
58
- npx @hanzo/ui registry:mcp --registry=https://your-registry-url.com/registry.json
59
- ```
60
-
61
- ## HTTP Mode
62
-
63
- For web-based applications, you can run the MCP server in HTTP mode:
64
-
65
- ```bash
66
- npx @hanzo/ui registry:mcp --http --port=3333
67
- ```
68
-
69
- This exposes an HTTP endpoint at http://localhost:3333 that you can use to communicate with the MCP server.
70
-
71
- ## Learn More
72
-
73
- For detailed documentation, see [README-MCP.md](./README-MCP.md) or visit the [Hanzo UI website](https://ui.hanzo.ai).
package/README-MCP.md DELETED
@@ -1,175 +0,0 @@
1
- # Hanzo UI with MCP Support
2
-
3
- This implementation provides Model Context Protocol (MCP) support for the Hanzo UI library, enabling AI assistants to interact with the component registry based on shadcn/ui.
4
-
5
- ## Quick Start
6
-
7
- ```bash
8
- # Run with npx (recommended)
9
- npx @hanzo/ui registry:mcp
10
-
11
- # Or set a custom registry URL
12
- npx @hanzo/ui registry:mcp --registry=https://ui.hanzo.ai/registry/registry.json
13
-
14
- # Run in HTTP mode instead of stdio
15
- npx @hanzo/ui registry:mcp --http --port=3333
16
- ```
17
-
18
- ## Setup and Usage
19
-
20
- ### Configure Your LLM Tool
21
-
22
- To configure your AI assistant or LLM to use the Hanzo UI MCP server, add the following configuration:
23
-
24
- ```json
25
- {
26
- "name": "hanzo-ui",
27
- "command": "npx @hanzo/ui registry:mcp"
28
- }
29
- ```
30
-
31
- ### Available Tools
32
-
33
- The MCP server provides the following tools for AI assistants:
34
-
35
- 1. `init` - Initialize a new project using @hanzo/ui components and styles
36
- 2. `list_components` - List all available components in the registry
37
- 3. `get_component` - Get detailed information about a specific component
38
- 4. `add_component` - Get instructions for adding a component to a project
39
- 5. `list_styles` - List all available styles in the registry
40
- 6. `search_registry` - Search the registry for components matching criteria
41
-
42
- ### Registry Configuration
43
-
44
- The registry URL can be configured by setting the `REGISTRY_URL` environment variable:
45
-
46
- ```bash
47
- export REGISTRY_URL="https://ui.hanzo.ai/registry/registry.json"
48
- npx @hanzo/ui registry:mcp
49
- ```
50
-
51
- Or by using the `--registry` command-line option:
52
-
53
- ```bash
54
- npx @hanzo/ui registry:mcp --registry=https://ui.hanzo.ai/registry/registry.json
55
- ```
56
-
57
- ## HTTP Mode
58
-
59
- You can run the MCP server in HTTP mode, which exposes the server over HTTP rather than stdio:
60
-
61
- ```bash
62
- npx @hanzo/ui registry:mcp --http --port=3333
63
- ```
64
-
65
- This allows you to access the MCP server directly from web applications or other HTTP clients.
66
-
67
- ## Developer Instructions
68
-
69
- ### Building from Source
70
-
71
- ```bash
72
- # Clone the repository
73
- git clone https://github.com/hanzoai/ui.git
74
- cd ui/pkg/ui
75
-
76
- # Install dependencies
77
- npm install
78
-
79
- # Build the package
80
- npm run build
81
-
82
- # Run the MCP server
83
- node ./bin/cli.js registry:mcp
84
- ```
85
-
86
- ### Project Structure
87
-
88
- - `/pkg/ui/mcp/`: MCP server implementation
89
- - `/pkg/ui/registry/`: Registry schema and API
90
- - `/pkg/ui/bin/`: CLI tools for running the MCP server
91
-
92
- ### Creating a Registry
93
-
94
- The registry is compatible with shadcn/ui's registry format. To create a custom registry:
95
-
96
- 1. Create a `registry.json` file using the schema from `/pkg/ui/registry/schema.ts`
97
- 2. Build the registry using a build script
98
- 3. Host the registry files on a web server or CDN
99
- 4. Point the MCP server to your custom registry using the `--registry` option
100
-
101
- ## How It Works
102
-
103
- The MCP server enables AI assistants to:
104
-
105
- 1. Discover and browse available components in your registry
106
- 2. Fetch detailed information about specific components
107
- 3. Provide instructions on adding components to projects
108
- 4. Initialize new projects with your component library
109
-
110
- This makes it easy for users to interact with your UI library through conversational interfaces.
111
-
112
- ## Example Interactions
113
-
114
- ### Initialize a Project
115
-
116
- ```
117
- Assistant: To create a new project with Hanzo UI components, you can run:
118
-
119
- npx create-next-app@latest my-app
120
- cd my-app
121
- npx @hanzo/ui@latest init
122
- ```
123
-
124
- ### Add a Component
125
-
126
- ```
127
- Assistant: To add the Button component to your project:
128
-
129
- npx @hanzo/ui@latest add button
130
-
131
- This will install the component and its dependencies.
132
- ```
133
-
134
- ### Search for Components
135
-
136
- ```
137
- Assistant: I found several form-related components:
138
- - form
139
- - input
140
- - checkbox
141
- - select
142
- - textarea
143
-
144
- Which one would you like to add to your project?
145
- ```
146
-
147
- ## Technical Details
148
-
149
- ### Registry Schema
150
-
151
- The registry schema is compatible with shadcn/ui and includes:
152
-
153
- - Component metadata (name, description, type)
154
- - Dependencies (npm packages)
155
- - Registry dependencies (other components)
156
- - Component files with source code
157
- - Category and subcategory information
158
-
159
- ### MCP Integration
160
-
161
- The MCP server implements the Model Context Protocol, enabling AI assistants to:
162
-
163
- - Query the registry for components
164
- - Get detailed information about components
165
- - Provide installation instructions
166
- - Generate example usage code
167
-
168
- ### Command-Line Interface
169
-
170
- The CLI provides options for:
171
-
172
- - Setting the registry URL
173
- - Running in HTTP mode
174
- - Specifying the port for HTTP mode
175
- - Verbose logging