@hanzo/ui 4.6.0 → 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 (290) hide show
  1. package/dist/index.d.mts +16 -0
  2. package/dist/index.d.ts +16 -0
  3. package/dist/index.js +9458 -0
  4. package/dist/index.mjs +9449 -0
  5. package/dist/lib/utils.d.mts +2 -0
  6. package/dist/lib/utils.d.ts +2 -0
  7. package/dist/lib/utils.js +47 -0
  8. package/dist/lib/utils.mjs +28 -0
  9. package/dist/src/utils.d.mts +7 -0
  10. package/dist/src/utils.d.ts +7 -0
  11. package/dist/src/utils.js +47 -0
  12. package/dist/src/utils.mjs +28 -0
  13. package/dist/tailwind/index.d.mts +2 -0
  14. package/dist/tailwind/index.d.ts +2 -0
  15. package/dist/tailwind/index.js +2048 -0
  16. package/dist/tailwind/index.mjs +2017 -0
  17. package/dist/types/index.d.mts +12 -0
  18. package/dist/types/index.d.ts +12 -0
  19. package/dist/types/index.js +79 -0
  20. package/dist/types/index.mjs +56 -0
  21. package/package.json +151 -25
  22. package/MCP-INSTRUCTIONS.md +0 -73
  23. package/README-MCP.md +0 -175
  24. package/assets/ai-icons.tsx +0 -207
  25. package/assets/crypto.tsx +0 -33
  26. package/assets/file-type-icon.tsx +0 -66
  27. package/assets/file.tsx +0 -45
  28. package/assets/general.tsx +0 -2318
  29. package/assets/hanzo-logo.svg +0 -9
  30. package/assets/hanzo-logo.tsx +0 -15
  31. package/assets/index.ts +0 -8
  32. package/assets/index.tsx +0 -4
  33. package/assets/llm-provider.tsx +0 -1094
  34. package/blocks/components/accordian-block.tsx +0 -48
  35. package/blocks/components/block-component-props.ts +0 -11
  36. package/blocks/components/bullet-cards-block.tsx +0 -46
  37. package/blocks/components/card-block/index.tsx +0 -171
  38. package/blocks/components/card-block/link-out-button.tsx +0 -20
  39. package/blocks/components/card-block/util.ts +0 -28
  40. package/blocks/components/carte-blanche-block/index.tsx +0 -127
  41. package/blocks/components/carte-blanche-block/variant-content-left.tsx +0 -49
  42. package/blocks/components/content.tsx +0 -70
  43. package/blocks/components/cta-block.tsx +0 -115
  44. package/blocks/components/enh-heading-block.tsx +0 -204
  45. package/blocks/components/grid-block/grid-block-mutator.ts +0 -12
  46. package/blocks/components/grid-block/index.tsx +0 -83
  47. package/blocks/components/grid-block/mutator-registry.ts +0 -10
  48. package/blocks/components/grid-block/table-borders.mutator.ts +0 -47
  49. package/blocks/components/group-block.tsx +0 -83
  50. package/blocks/components/heading-block.tsx +0 -88
  51. package/blocks/components/image-block.tsx +0 -111
  52. package/blocks/components/index.ts +0 -30
  53. package/blocks/components/screenful-block/content.tsx +0 -123
  54. package/blocks/components/screenful-block/index.tsx +0 -107
  55. package/blocks/components/screenful-block/poster-background.tsx +0 -34
  56. package/blocks/components/screenful-block/video-background.tsx +0 -45
  57. package/blocks/components/space-block.tsx +0 -66
  58. package/blocks/components/video-block.tsx +0 -138
  59. package/blocks/def/accordian-block.ts +0 -14
  60. package/blocks/def/block.ts +0 -7
  61. package/blocks/def/bullet-cards-block.ts +0 -22
  62. package/blocks/def/card-block.ts +0 -22
  63. package/blocks/def/carte-blanche-block.ts +0 -21
  64. package/blocks/def/cta-block.ts +0 -19
  65. package/blocks/def/element-block.ts +0 -11
  66. package/blocks/def/enh-heading-block.ts +0 -44
  67. package/blocks/def/grid-block.ts +0 -16
  68. package/blocks/def/group-block.ts +0 -11
  69. package/blocks/def/heading-block.ts +0 -15
  70. package/blocks/def/image-block.ts +0 -31
  71. package/blocks/def/index.ts +0 -35
  72. package/blocks/def/screenful-block.ts +0 -54
  73. package/blocks/def/space-block.ts +0 -64
  74. package/blocks/def/video-block.ts +0 -9
  75. package/blocks/index.ts +0 -2
  76. package/components/index.ts +0 -56
  77. package/dist/button.d.ts +0 -1
  78. package/dist/button.js +0 -1
  79. package/dist/hooks/index.d.ts +0 -7
  80. package/dist/hooks/index.js +0 -7
  81. package/dist/hooks/use-click-away.d.ts +0 -2
  82. package/dist/hooks/use-click-away.js +0 -23
  83. package/dist/hooks/use-combined-refs.d.ts +0 -3
  84. package/dist/hooks/use-combined-refs.js +0 -18
  85. package/dist/hooks/use-copy-clipboard.d.ts +0 -9
  86. package/dist/hooks/use-copy-clipboard.js +0 -21
  87. package/dist/hooks/use-debounce.d.ts +0 -1
  88. package/dist/hooks/use-debounce.js +0 -13
  89. package/dist/hooks/use-fill-ids.d.ts +0 -8
  90. package/dist/hooks/use-fill-ids.js +0 -20
  91. package/dist/hooks/use-map.d.ts +0 -1
  92. package/dist/hooks/use-map.js +0 -20
  93. package/dist/hooks/use-measure.d.ts +0 -8
  94. package/dist/hooks/use-measure.js +0 -25
  95. package/dist/hooks/use-reverse-video-playback.d.ts +0 -1
  96. package/dist/hooks/use-reverse-video-playback.js +0 -41
  97. package/dist/hooks/use-scroll-restoration.d.ts +0 -8
  98. package/dist/hooks/use-scroll-restoration.js +0 -36
  99. package/dist/mcp/enhanced-server.d.ts +0 -29
  100. package/dist/mcp/enhanced-server.js +0 -1128
  101. package/dist/mcp/index.d.ts +0 -28
  102. package/dist/mcp/index.js +0 -436
  103. package/dist/registry/api.d.ts +0 -37
  104. package/dist/registry/api.js +0 -129
  105. package/dist/registry/index.d.ts +0 -353
  106. package/dist/registry/index.js +0 -45
  107. package/dist/utils.d.ts +0 -1
  108. package/dist/utils.js +0 -1
  109. package/environment.d.ts +0 -6
  110. package/helpers/file.ts +0 -33
  111. package/helpers/memoization.ts +0 -40
  112. package/primitives/accordion.tsx +0 -74
  113. package/primitives/action-button.tsx +0 -42
  114. package/primitives/alert-dialog.tsx +0 -185
  115. package/primitives/alert.tsx +0 -74
  116. package/primitives/apply-typography.tsx +0 -55
  117. package/primitives/aspect-ratio.tsx +0 -5
  118. package/primitives/avatar.tsx +0 -57
  119. package/primitives/background-beams.tsx +0 -142
  120. package/primitives/badge.tsx +0 -44
  121. package/primitives/breadcrumb.tsx +0 -130
  122. package/primitives/breakpoint-indicator.tsx +0 -19
  123. package/primitives/button.tsx +0 -82
  124. package/primitives/calendar.tsx +0 -72
  125. package/primitives/card.tsx +0 -97
  126. package/primitives/carousel.tsx +0 -237
  127. package/primitives/chat/chat-input-area.tsx +0 -87
  128. package/primitives/chat/chat-input.tsx +0 -71
  129. package/primitives/chat/files-preview.tsx +0 -330
  130. package/primitives/chat/index.ts +0 -6
  131. package/primitives/chat/json-form.tsx +0 -8
  132. package/primitives/chat/message-list.tsx +0 -307
  133. package/primitives/chat/message.tsx +0 -569
  134. package/primitives/chat/sqlite-preview.tsx +0 -215
  135. package/primitives/checkbox.tsx +0 -31
  136. package/primitives/collapsible.tsx +0 -9
  137. package/primitives/combobox.tsx +0 -239
  138. package/primitives/command.tsx +0 -149
  139. package/primitives/context-menu.tsx +0 -206
  140. package/primitives/copy-to-clipboard-icon.tsx +0 -60
  141. package/primitives/dialog-video-controller.tsx +0 -38
  142. package/primitives/dialog.tsx +0 -123
  143. package/primitives/dot-pattern.tsx +0 -57
  144. package/primitives/dots-loader.tsx +0 -13
  145. package/primitives/drawer.tsx +0 -110
  146. package/primitives/dropdown-menu.tsx +0 -199
  147. package/primitives/error-message.tsx +0 -19
  148. package/primitives/file-uploader.tsx +0 -200
  149. package/primitives/form.tsx +0 -183
  150. package/primitives/hover-card.tsx +0 -28
  151. package/primitives/icons/github.tsx +0 -14
  152. package/primitives/icons/index.ts +0 -18
  153. package/primitives/icons/youtube-logo.tsx +0 -59
  154. package/primitives/index-common.ts +0 -303
  155. package/primitives/index-next.ts +0 -4
  156. package/primitives/input-otp.tsx +0 -65
  157. package/primitives/input.tsx +0 -125
  158. package/primitives/label.tsx +0 -20
  159. package/primitives/list-adaptor.ts +0 -12
  160. package/primitives/list-box.tsx +0 -74
  161. package/primitives/loading-spinner.tsx +0 -33
  162. package/primitives/markdown-preview.tsx +0 -609
  163. package/primitives/mermaid.tsx +0 -196
  164. package/primitives/navigation-menu.tsx +0 -147
  165. package/primitives/next/image.tsx +0 -90
  166. package/primitives/next/index.ts +0 -7
  167. package/primitives/next/inline-icon.tsx +0 -36
  168. package/primitives/next/link-element.tsx +0 -109
  169. package/primitives/next/mdx-link.tsx +0 -22
  170. package/primitives/next/media-stack.tsx +0 -69
  171. package/primitives/next/nav-items.tsx +0 -45
  172. package/primitives/next/youtube-embed.tsx +0 -83
  173. package/primitives/pagination.tsx +0 -117
  174. package/primitives/popover.tsx +0 -32
  175. package/primitives/pretty-json-print.tsx +0 -28
  176. package/primitives/progress.tsx +0 -26
  177. package/primitives/prompt-textarea.tsx +0 -72
  178. package/primitives/qr-code.tsx +0 -112
  179. package/primitives/radio-group.tsx +0 -42
  180. package/primitives/resizable.tsx +0 -47
  181. package/primitives/scroll-area.tsx +0 -57
  182. package/primitives/search-input.tsx +0 -66
  183. package/primitives/select.tsx +0 -122
  184. package/primitives/separator.tsx +0 -25
  185. package/primitives/sheet.tsx +0 -139
  186. package/primitives/skeleton.tsx +0 -17
  187. package/primitives/slider.tsx +0 -62
  188. package/primitives/sonner.tsx +0 -35
  189. package/primitives/step-indicator.tsx +0 -69
  190. package/primitives/stepper.tsx +0 -272
  191. package/primitives/switch.tsx +0 -26
  192. package/primitives/table.tsx +0 -105
  193. package/primitives/tabs.tsx +0 -50
  194. package/primitives/text-area.tsx +0 -26
  195. package/primitives/text-link.tsx +0 -25
  196. package/primitives/textarea.tsx +0 -61
  197. package/primitives/textfield.tsx +0 -75
  198. package/primitives/toast.tsx +0 -30
  199. package/primitives/toggle-group.tsx +0 -63
  200. package/primitives/toggle.tsx +0 -44
  201. package/primitives/tooltip.tsx +0 -47
  202. package/primitives/video-player.tsx +0 -23
  203. package/public/r/accordion.json +0 -11
  204. package/public/r/alert.json +0 -11
  205. package/public/r/avatar.json +0 -11
  206. package/public/r/badge.json +0 -11
  207. package/public/r/button.json +0 -11
  208. package/public/r/card.json +0 -11
  209. package/public/r/checkbox.json +0 -11
  210. package/public/r/default.json +0 -6
  211. package/public/r/dialog.json +0 -11
  212. package/public/r/input.json +0 -11
  213. package/public/r/label.json +0 -11
  214. package/public/r/new-york.json +0 -6
  215. package/public/r/popover.json +0 -11
  216. package/public/r/select.json +0 -11
  217. package/public/r/table.json +0 -11
  218. package/public/r/tabs.json +0 -11
  219. package/public/r/toast.json +0 -11
  220. package/registry.json +0 -184
  221. package/src/button.ts +0 -1
  222. package/src/hooks/index.ts +0 -7
  223. package/src/hooks/use-click-away.ts +0 -31
  224. package/src/hooks/use-combined-refs.ts +0 -22
  225. package/src/hooks/use-copy-clipboard.ts +0 -30
  226. package/src/hooks/use-debounce.ts +0 -17
  227. package/src/hooks/use-fill-ids.ts +0 -25
  228. package/src/hooks/use-map.ts +0 -26
  229. package/src/hooks/use-measure.ts +0 -42
  230. package/src/hooks/use-reverse-video-playback.ts +0 -43
  231. package/src/hooks/use-scroll-restoration.ts +0 -50
  232. package/src/mcp/README.md +0 -141
  233. package/src/mcp/enhanced-server.ts +0 -1208
  234. package/src/mcp/index.ts +0 -518
  235. package/src/mcp/package.json +0 -10
  236. package/src/registry/api.ts +0 -164
  237. package/src/registry/index.ts +0 -60
  238. package/src/registry/package.json +0 -10
  239. package/src/utils.ts +0 -1
  240. package/tailwind/colors.tailwind.js +0 -53
  241. package/tailwind/fontFamily.tailwind.ts +0 -7
  242. package/tailwind/fontSize.tailwind.ts +0 -13
  243. package/tailwind/index.ts +0 -7
  244. package/tailwind/safelist.tailwind.js +0 -26
  245. package/tailwind/screens.tailwind.js +0 -8
  246. package/tailwind/spacing.tailwind.js +0 -65
  247. package/tailwind/tailwind.config.hanzo-preset.d.ts +0 -5
  248. package/tailwind/tailwind.config.hanzo-preset.js +0 -915
  249. package/tailwind/tw-font-desc.ts +0 -15
  250. package/tailwind/typo-plugin/get-plugin-styles.js +0 -679
  251. package/tailwind/typo-plugin/index.d.ts +0 -9
  252. package/tailwind/typo-plugin/index.js +0 -141
  253. package/tailwind/typo-plugin/utils.js +0 -60
  254. package/tailwind/typography-test.mdx +0 -35
  255. package/tailwind/z-index.tailwind.js +0 -71
  256. package/test/test-registry.js +0 -73
  257. package/test-imports.mjs +0 -19
  258. package/tsconfig.json +0 -22
  259. package/types/animation-def.ts +0 -3
  260. package/types/breakpoints.ts +0 -11
  261. package/types/bullet-item.ts +0 -10
  262. package/types/button-def.ts +0 -39
  263. package/types/dimensions.ts +0 -8
  264. package/types/grid-def.ts +0 -56
  265. package/types/image-def.ts +0 -32
  266. package/types/index.ts +0 -29
  267. package/types/link-def.ts +0 -56
  268. package/types/media-stack-def.ts +0 -31
  269. package/types/t-shirt-size.ts +0 -5
  270. package/types/tshirt-dimensions.ts +0 -20
  271. package/types/video-def.ts +0 -25
  272. package/util/blob.ts +0 -28
  273. package/util/copy-to-clipboard.ts +0 -17
  274. package/util/create-shadow-root.ts +0 -22
  275. package/util/date.ts +0 -83
  276. package/util/debounce.ts +0 -11
  277. package/util/file.ts +0 -15
  278. package/util/format-and-abbreviate-as-currency.ts +0 -125
  279. package/util/format-text.ts +0 -33
  280. package/util/format-to-max-char.ts +0 -68
  281. package/util/index-client.ts +0 -3
  282. package/util/index.ts +0 -9
  283. package/util/number-abbreviate.ts +0 -49
  284. package/util/specifier.ts +0 -43
  285. package/util/spread-to-transform.ts +0 -24
  286. package/util/step-animation.ts +0 -90
  287. package/util/timing.ts +0 -3
  288. package/util/toasts.tsx +0 -17
  289. package/util/two-way-map.ts +0 -19
  290. package/utils.ts +0 -9
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
-
3
- export function useDebounce(value: string, delay = 500) {
4
- const [debouncedValue, setDebouncedValue] = React.useState(value);
5
-
6
- React.useEffect(() => {
7
- const handler: NodeJS.Timeout = setTimeout(() => {
8
- setDebouncedValue(value);
9
- }, delay);
10
-
11
- return () => {
12
- clearTimeout(handler);
13
- };
14
- }, [value, delay]);
15
-
16
- return debouncedValue;
17
- }
@@ -1,25 +0,0 @@
1
- import { useMemo } from 'react';
2
-
3
- export const useFillId = (namespace: string) => {
4
- const id = `lobe-icons-${namespace.toLowerCase()}-fill`;
5
- return useMemo(
6
- () => ({
7
- fill: `url(#${id})`,
8
- id,
9
- }),
10
- [namespace],
11
- );
12
- };
13
-
14
- export const useFillIds = (namespace: string, length: number) => {
15
- return useMemo(() => {
16
- const ids = Array.from({ length }, (_, i) => {
17
- const id = `lobe-icons-${namespace.toLowerCase()}-fill-${i}`;
18
- return {
19
- fill: `url(#${id})`,
20
- id,
21
- };
22
- });
23
- return ids;
24
- }, [namespace]);
25
- };
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
-
3
- export function useMap<Key, Value>(initialState: [Key, Value][] = []) {
4
- const mapRef = React.useRef(new Map<Key, Value>(initialState));
5
- const [, reRender] = React.useReducer((x) => x + 1, 0);
6
-
7
- mapRef.current.set = (...args) => {
8
- Map.prototype.set.apply(mapRef.current, args);
9
- reRender();
10
- return mapRef.current;
11
- };
12
-
13
- mapRef.current.clear = (...args) => {
14
- Map.prototype.clear.apply(mapRef.current, args);
15
- reRender();
16
- };
17
-
18
- mapRef.current.delete = (...args) => {
19
- const res = Map.prototype.delete.apply(mapRef.current, args);
20
- reRender();
21
-
22
- return res;
23
- };
24
-
25
- return mapRef.current;
26
- }
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
-
3
- export function useMeasure<T extends Element>(): [
4
- React.RefCallback<T>,
5
- {
6
- width: number | null;
7
- height: number | null;
8
- },
9
- ] {
10
- const [dimensions, setDimensions] = React.useState<{
11
- width: number | null;
12
- height: number | null;
13
- }>({
14
- width: null,
15
- height: null,
16
- });
17
-
18
- const previousObserver = React.useRef<ResizeObserver | null>(null);
19
-
20
- const customRef = React.useCallback((node: T) => {
21
- if (previousObserver.current) {
22
- previousObserver.current.disconnect();
23
- previousObserver.current = null;
24
- }
25
-
26
- if (node?.nodeType === Node.ELEMENT_NODE) {
27
- const observer = new ResizeObserver(([entry]) => {
28
- if (entry && entry.borderBoxSize) {
29
- const { inlineSize: width, blockSize: height } =
30
- entry.borderBoxSize[0];
31
-
32
- setDimensions({ width, height });
33
- }
34
- });
35
-
36
- observer.observe(node);
37
- previousObserver.current = observer;
38
- }
39
- }, []);
40
-
41
- return [customRef, dimensions];
42
- }
@@ -1,43 +0,0 @@
1
- import { useEffect, useRef, useState } from 'react';
2
-
3
- export const useReverseVideoPlayback = () => {
4
- const videoRef = useRef<HTMLVideoElement>(null);
5
-
6
- const [isReversing, setIsReversing] = useState(false);
7
- const playReverse = () => {
8
- if (!videoRef.current) return;
9
- const video = videoRef.current;
10
- const reversePlayback = () => {
11
- if (video.currentTime <= 0) {
12
- setIsReversing(false);
13
- void video.play();
14
- return;
15
- }
16
- video.currentTime -= 0.023;
17
- requestAnimationFrame(reversePlayback);
18
- };
19
- reversePlayback();
20
- };
21
-
22
- useEffect(() => {
23
- const videoElement = videoRef.current;
24
- if (videoElement) {
25
- const handleVideoEnd = () => {
26
- if (isReversing) {
27
- setIsReversing(false);
28
- videoElement.currentTime = 0;
29
- void videoElement.play();
30
- } else {
31
- setIsReversing(true);
32
- playReverse();
33
- }
34
- };
35
-
36
- videoElement.addEventListener('ended', handleVideoEnd);
37
- return () => {
38
- videoElement.removeEventListener('ended', handleVideoEnd);
39
- };
40
- }
41
- }, [isReversing]);
42
- return videoRef;
43
- };
@@ -1,50 +0,0 @@
1
- import React from 'react';
2
-
3
- export const useScrollRestoration = ({
4
- key,
5
- containerRef,
6
- scrollTopStateRef,
7
- }: {
8
- key: string;
9
- containerRef: React.RefObject<HTMLElement | null>;
10
- scrollTopStateRef: React.RefObject<{ [key: string]: number } | null>;
11
- }): void => {
12
- const saveScroll = React.useCallback(() => {
13
- if (scrollTopStateRef.current) {
14
- scrollTopStateRef.current[`${key}-scrollTop`] =
15
- containerRef?.current?.scrollTop ?? 0;
16
- }
17
- }, [containerRef, scrollTopStateRef, key]);
18
-
19
- const restoreScroll = React.useCallback(() => {
20
- if (containerRef.current) {
21
- containerRef.current.scrollTo({
22
- top: scrollTopStateRef?.current?.[`${key}-scrollTop`] ?? 0,
23
- });
24
- }
25
- }, [containerRef, key, scrollTopStateRef]);
26
-
27
- React.useLayoutEffect(() => {
28
- return () => {
29
- saveScroll();
30
- };
31
- }, [saveScroll]);
32
-
33
- React.useEffect(() => {
34
- // Small delay to ensure content is rendered
35
- const timeoutId = setTimeout(restoreScroll, 100);
36
- return () => clearTimeout(timeoutId);
37
- }, [restoreScroll]);
38
-
39
- React.useEffect(() => {
40
- restoreScroll();
41
- }, [restoreScroll]);
42
-
43
- React.useEffect(() => {
44
- const element = containerRef?.current;
45
- element?.addEventListener('scroll', saveScroll);
46
- return () => {
47
- element?.removeEventListener('scroll', saveScroll);
48
- };
49
- }, [containerRef, saveScroll]);
50
- };
package/src/mcp/README.md DELETED
@@ -1,141 +0,0 @@
1
- # Hanzo UI MCP Server
2
-
3
- The Hanzo UI MCP (Model Context Protocol) server provides AI assistants with comprehensive access to the Hanzo UI component library, enabling them to browse, search, and help developers use Hanzo UI components effectively.
4
-
5
- ## Quick Start
6
-
7
- ### For AI Clients
8
-
9
- Configure your AI client to use the Hanzo UI MCP server:
10
-
11
- **Claude Desktop** (`.mcp.json`):
12
- ```json
13
- {
14
- "mcpServers": {
15
- "hanzo-ui": {
16
- "command": "npx",
17
- "args": ["@hanzo/ui@latest", "mcp"]
18
- }
19
- }
20
- }
21
- ```
22
-
23
- **Cursor** (`.cursor/mcp.json`):
24
- ```json
25
- {
26
- "mcpServers": {
27
- "hanzo-ui": {
28
- "command": "npx",
29
- "args": ["@hanzo/ui@latest", "mcp"]
30
- }
31
- }
32
- }
33
- ```
34
-
35
- **VS Code** (`.vscode/mcp.json`):
36
- ```json
37
- {
38
- "mcpServers": {
39
- "hanzo-ui": {
40
- "command": "npx",
41
- "args": ["@hanzo/ui@latest", "mcp"]
42
- }
43
- }
44
- }
45
- ```
46
-
47
- ### Manual Usage
48
-
49
- ```bash
50
- # Run the MCP server (stdio mode for AI clients)
51
- npx @hanzo/ui mcp
52
-
53
- # Run in HTTP mode for testing
54
- npx @hanzo/ui mcp --http --port 3333
55
-
56
- # Use custom registry
57
- npx @hanzo/ui mcp --registry https://my-registry.com/registry.json
58
-
59
- # Legacy command (still works)
60
- npx @hanzo/ui registry:mcp
61
- ```
62
-
63
- ## Available Tools
64
-
65
- The enhanced MCP server provides comprehensive tools:
66
-
67
- 1. **Component Management**
68
- - `init` - Initialize a new project with Hanzo UI
69
- - `list_components` - List all available components
70
- - `get_component` - Get detailed component information
71
- - `get_component_source` - Get full component source code
72
- - `get_component_demo` - Get demo implementation
73
- - `add_component` - Get installation instructions
74
-
75
- 2. **Blocks & Patterns**
76
- - `list_blocks` - List UI blocks and patterns
77
- - `get_block` - Get block details
78
-
79
- 3. **Search & Discovery**
80
- - `search_registry` - Search components by name/description
81
- - `list_styles` - View available styles
82
- - `get_installation_guide` - Complete setup guide
83
-
84
- ## Available Resources
85
-
86
- The MCP server exposes these resources:
87
- - `hanzo://components/list` - Complete component catalog
88
- - `hanzo://blocks/list` - UI blocks and patterns
89
- - `hanzo://installation/guide` - Installation guide
90
- - `hanzo://theming/guide` - Theming documentation
91
-
92
- ## Available Prompts
93
-
94
- AI-assisted development prompts:
95
- - `component_usage` - Generate usage examples
96
- - `build_page` - Build complete pages
97
- - `component_composition` - Create custom components
98
- - `accessibility_review` - Review accessibility
99
- - `theme_customization` - Generate custom themes
100
-
101
- ## Example Interactions
102
-
103
- Ask your AI assistant:
104
-
105
- - "Show me all available Hanzo UI components"
106
- - "How do I use the Dialog component?"
107
- - "Build a login form using Hanzo UI"
108
- - "Create a dashboard layout with Hanzo components"
109
- - "Generate a dark theme with purple accents"
110
- - "Create a custom date picker using Hanzo primitives"
111
-
112
- ## Development
113
-
114
- To build the MCP server:
115
-
116
- ```bash
117
- cd pkg/ui
118
- pnpm build
119
- ```
120
-
121
- This will compile the TypeScript files and make the MCP server available.
122
-
123
- ## Registry Format
124
-
125
- The registry follows the same format as hanzo/ui registries, with items defined as:
126
-
127
- ```json
128
- {
129
- "name": "button",
130
- "type": "registry:component",
131
- "description": "A button component with different variants.",
132
- "files": [
133
- {
134
- "path": "components/ui/button.tsx",
135
- "type": "registry:component"
136
- }
137
- ]
138
- }
139
- ```
140
-
141
- To configure your own registry, set the `REGISTRY_URL` environment variable before running the MCP server.