@hanzo/ui 5.0.0 → 5.0.2

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 (685) hide show
  1. package/README.md +192 -185
  2. package/assets/ai-icons.tsx +207 -0
  3. package/assets/crypto.tsx +33 -0
  4. package/assets/file-type-icon.tsx +66 -0
  5. package/assets/file.tsx +45 -0
  6. package/assets/general.tsx +2318 -0
  7. package/assets/hanzo-logo.svg +9 -0
  8. package/assets/hanzo-logo.tsx +17 -0
  9. package/assets/index.ts +122 -0
  10. package/assets/index.tsx +4 -0
  11. package/assets/llm-provider.tsx +1094 -0
  12. package/bin/cli.js +100 -0
  13. package/bin/create-registry.js +108 -0
  14. package/bin/mcp.js +403 -0
  15. package/bin/npx-registry-mcp.js +15 -0
  16. package/bin/registry-mcp-wrapper.sh +19 -0
  17. package/bin/registry-mcp.js +100 -0
  18. package/bin/start-mcp-server.sh +22 -0
  19. package/bin/test-mcp.sh +52 -0
  20. package/bin/update-registry.js +196 -0
  21. package/blocks/auth/index.ts +6 -0
  22. package/blocks/auth/login-2fa.tsx +165 -0
  23. package/blocks/auth/login-basic.tsx +94 -0
  24. package/blocks/auth/login-social.tsx +148 -0
  25. package/blocks/auth/magic-link.tsx +129 -0
  26. package/blocks/auth/password-reset.tsx +97 -0
  27. package/blocks/auth/signup.tsx +157 -0
  28. package/blocks/components/accordian-block.tsx +48 -0
  29. package/blocks/components/block-component-props.ts +11 -0
  30. package/blocks/components/bullet-cards-block.tsx +46 -0
  31. package/blocks/components/card-block/index.tsx +171 -0
  32. package/blocks/components/card-block/link-out-button.tsx +20 -0
  33. package/blocks/components/card-block/util.ts +28 -0
  34. package/blocks/components/carte-blanche-block/index.tsx +127 -0
  35. package/blocks/components/carte-blanche-block/variant-content-left.tsx +49 -0
  36. package/blocks/components/content.tsx +70 -0
  37. package/blocks/components/cta-block.tsx +115 -0
  38. package/blocks/components/enh-heading-block.tsx +204 -0
  39. package/blocks/components/grid-block/grid-block-mutator.ts +12 -0
  40. package/blocks/components/grid-block/index.tsx +83 -0
  41. package/blocks/components/grid-block/mutator-registry.ts +10 -0
  42. package/blocks/components/grid-block/table-borders.mutator.ts +47 -0
  43. package/blocks/components/group-block.tsx +83 -0
  44. package/blocks/components/heading-block.tsx +88 -0
  45. package/blocks/components/image-block.tsx +111 -0
  46. package/blocks/components/index.ts +30 -0
  47. package/blocks/components/screenful-block/content.tsx +123 -0
  48. package/blocks/components/screenful-block/index.tsx +107 -0
  49. package/blocks/components/screenful-block/poster-background.tsx +34 -0
  50. package/blocks/components/screenful-block/video-background.tsx +45 -0
  51. package/blocks/components/space-block.tsx +66 -0
  52. package/blocks/components/video-block.tsx +138 -0
  53. package/blocks/data-display/activity-feed.tsx +242 -0
  54. package/blocks/data-display/data-table.tsx +235 -0
  55. package/blocks/data-display/stats-grid.tsx +194 -0
  56. package/blocks/def/accordian-block.ts +14 -0
  57. package/blocks/def/block.ts +7 -0
  58. package/blocks/def/bullet-cards-block.ts +22 -0
  59. package/blocks/def/card-block.ts +22 -0
  60. package/blocks/def/carte-blanche-block.ts +21 -0
  61. package/blocks/def/cta-block.ts +19 -0
  62. package/blocks/def/element-block.ts +11 -0
  63. package/blocks/def/enh-heading-block.ts +44 -0
  64. package/blocks/def/grid-block.ts +16 -0
  65. package/blocks/def/group-block.ts +11 -0
  66. package/blocks/def/heading-block.ts +15 -0
  67. package/blocks/def/image-block.ts +31 -0
  68. package/blocks/def/index.ts +35 -0
  69. package/blocks/def/screenful-block.ts +54 -0
  70. package/blocks/def/space-block.ts +64 -0
  71. package/blocks/def/video-block.ts +9 -0
  72. package/blocks/ecommerce/checkout.tsx +242 -0
  73. package/blocks/ecommerce/index.ts +7 -0
  74. package/blocks/ecommerce/product-detail.tsx +257 -0
  75. package/blocks/ecommerce/product-grid.tsx +148 -0
  76. package/blocks/ecommerce/shopping-cart.tsx +181 -0
  77. package/blocks/index.ts +2 -0
  78. package/blocks/marketing/cta-section.tsx +207 -0
  79. package/blocks/marketing/faq.tsx +159 -0
  80. package/blocks/marketing/features-grid.tsx +156 -0
  81. package/blocks/marketing/hero-section.tsx +192 -0
  82. package/blocks/marketing/index.ts +6 -0
  83. package/blocks/marketing/pricing-table.tsx +121 -0
  84. package/blocks/marketing/testimonials.tsx +196 -0
  85. package/components/index.ts +9 -0
  86. package/dist/index.js +9072 -1089
  87. package/dist/index.js.map +1 -1
  88. package/dist/index.mjs +8698 -45
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/tailwind.js +2025 -0
  91. package/dist/tailwind.js.map +1 -0
  92. package/dist/tailwind.mjs +2013 -0
  93. package/dist/tailwind.mjs.map +1 -0
  94. package/dist/types.js +59 -0
  95. package/dist/types.js.map +1 -0
  96. package/dist/types.mjs +53 -0
  97. package/dist/types.mjs.map +1 -0
  98. package/dist/utils.js +30 -0
  99. package/dist/utils.js.map +1 -0
  100. package/dist/utils.mjs +26 -0
  101. package/dist/utils.mjs.map +1 -0
  102. package/frameworks/core/index.ts +6 -0
  103. package/frameworks/core/utils/index.ts +64 -0
  104. package/frameworks/react/components/button.tsx +26 -0
  105. package/frameworks/react/components/index.ts +5 -0
  106. package/frameworks/react/hooks/index.ts +5 -0
  107. package/frameworks/react/index.ts +9 -0
  108. package/frameworks/react/package.json +8 -0
  109. package/frameworks/react/utils/index.ts +2 -0
  110. package/frameworks/react-native/index.ts +9 -0
  111. package/frameworks/react-native/package.json +8 -0
  112. package/frameworks/registry.json +371 -0
  113. package/frameworks/setup.sh +69 -0
  114. package/frameworks/svelte/index.ts +9 -0
  115. package/frameworks/svelte/package.json +8 -0
  116. package/frameworks/tracker.json +1854 -0
  117. package/frameworks/vue/index.ts +9 -0
  118. package/frameworks/vue/package.json +8 -0
  119. package/helpers/file.ts +33 -0
  120. package/helpers/memoization.ts +40 -0
  121. package/package.json +272 -153
  122. package/primitives/accordion.tsx +74 -0
  123. package/primitives/action-button.tsx +42 -0
  124. package/primitives/alert-dialog.tsx +185 -0
  125. package/primitives/alert.tsx +74 -0
  126. package/primitives/apply-typography.tsx +55 -0
  127. package/primitives/aspect-ratio.tsx +5 -0
  128. package/primitives/avatar.tsx +57 -0
  129. package/primitives/background-beams.tsx +142 -0
  130. package/primitives/badge.tsx +45 -0
  131. package/primitives/breadcrumb.tsx +130 -0
  132. package/primitives/breakpoint-indicator.tsx +19 -0
  133. package/primitives/button.tsx +72 -0
  134. package/primitives/calendar.tsx +72 -0
  135. package/primitives/card.tsx +97 -0
  136. package/primitives/carousel.tsx +238 -0
  137. package/primitives/chat/chat-input-area.tsx +88 -0
  138. package/primitives/chat/chat-input.tsx +71 -0
  139. package/primitives/chat/files-preview.tsx +331 -0
  140. package/primitives/chat/index.ts +6 -0
  141. package/primitives/chat/json-form.tsx +8 -0
  142. package/primitives/chat/message-list.tsx +308 -0
  143. package/primitives/chat/message.tsx +569 -0
  144. package/primitives/chat/sqlite-preview.tsx +215 -0
  145. package/primitives/checkbox.tsx +32 -0
  146. package/primitives/collapsible.tsx +9 -0
  147. package/primitives/combobox.tsx +239 -0
  148. package/primitives/command.tsx +151 -0
  149. package/primitives/context-menu.tsx +206 -0
  150. package/primitives/copy-to-clipboard-icon.tsx +60 -0
  151. package/primitives/dialog-video-controller.tsx +38 -0
  152. package/primitives/dialog.tsx +128 -0
  153. package/primitives/dot-pattern.tsx +57 -0
  154. package/primitives/dots-loader.tsx +13 -0
  155. package/primitives/drawer.tsx +113 -0
  156. package/primitives/dropdown-menu.tsx +199 -0
  157. package/primitives/error-message.tsx +19 -0
  158. package/primitives/file-uploader.tsx +203 -0
  159. package/primitives/form.tsx +185 -0
  160. package/primitives/hover-card.tsx +28 -0
  161. package/primitives/icons/github.tsx +14 -0
  162. package/primitives/icons/index.ts +18 -0
  163. package/primitives/icons/youtube-logo.tsx +59 -0
  164. package/primitives/index-client.ts +4 -0
  165. package/primitives/index-common.ts +304 -0
  166. package/primitives/index-next.ts +4 -0
  167. package/primitives/input-otp.tsx +65 -0
  168. package/primitives/input.tsx +128 -0
  169. package/primitives/label.tsx +21 -0
  170. package/primitives/list-adaptor.ts +12 -0
  171. package/primitives/list-box.tsx +74 -0
  172. package/primitives/loading-spinner.tsx +33 -0
  173. package/primitives/markdown-preview.tsx +612 -0
  174. package/primitives/mermaid.tsx +196 -0
  175. package/primitives/navigation-menu.tsx +147 -0
  176. package/primitives/next/image.tsx +91 -0
  177. package/primitives/next/index.ts +7 -0
  178. package/primitives/next/inline-icon.tsx +36 -0
  179. package/primitives/next/link-element.tsx +109 -0
  180. package/primitives/next/mdx-link.tsx +22 -0
  181. package/primitives/next/media-stack.tsx +52 -0
  182. package/primitives/next/nav-items.tsx +45 -0
  183. package/primitives/next/youtube-embed.tsx +83 -0
  184. package/primitives/pagination.tsx +117 -0
  185. package/primitives/popover.tsx +34 -0
  186. package/primitives/pretty-json-print.tsx +28 -0
  187. package/primitives/progress.tsx +27 -0
  188. package/primitives/prompt-textarea.tsx +72 -0
  189. package/primitives/qr-code.tsx +112 -0
  190. package/primitives/radio-group.tsx +42 -0
  191. package/primitives/resizable.tsx +47 -0
  192. package/primitives/scroll-area.tsx +57 -0
  193. package/primitives/search-input.tsx +66 -0
  194. package/primitives/select.tsx +122 -0
  195. package/primitives/separator.tsx +26 -0
  196. package/primitives/sheet.tsx +139 -0
  197. package/primitives/skeleton.tsx +18 -0
  198. package/primitives/slider.tsx +63 -0
  199. package/primitives/sonner.tsx +35 -0
  200. package/primitives/step-indicator.tsx +69 -0
  201. package/primitives/stepper.tsx +272 -0
  202. package/primitives/switch.tsx +27 -0
  203. package/primitives/table.tsx +105 -0
  204. package/primitives/tabs.tsx +50 -0
  205. package/primitives/text-area.tsx +26 -0
  206. package/primitives/text-link.tsx +27 -0
  207. package/primitives/textarea.tsx +64 -0
  208. package/primitives/textfield.tsx +78 -0
  209. package/primitives/toast.tsx +30 -0
  210. package/primitives/toggle-group.tsx +63 -0
  211. package/primitives/toggle.tsx +44 -0
  212. package/primitives/tooltip.tsx +47 -0
  213. package/primitives/video-player.tsx +23 -0
  214. package/src/button.ts +1 -0
  215. package/src/hooks/index.ts +7 -0
  216. package/src/hooks/use-click-away.ts +31 -0
  217. package/src/hooks/use-combined-refs.ts +22 -0
  218. package/src/hooks/use-copy-clipboard.ts +30 -0
  219. package/src/hooks/use-debounce.ts +17 -0
  220. package/src/hooks/use-fill-ids.ts +25 -0
  221. package/src/hooks/use-map.ts +26 -0
  222. package/src/hooks/use-measure.ts +42 -0
  223. package/src/hooks/use-reverse-video-playback.ts +43 -0
  224. package/src/hooks/use-scroll-restoration.ts +50 -0
  225. package/src/index-lean.ts +87 -0
  226. package/src/index.ts +54 -0
  227. package/src/mcp/README.md +141 -0
  228. package/src/mcp/enhanced-server.ts +1208 -0
  229. package/src/mcp/index.ts +518 -0
  230. package/src/mcp/package.json +10 -0
  231. package/src/registry/api.ts +164 -0
  232. package/src/registry/index.ts +60 -0
  233. package/src/registry/package.json +10 -0
  234. package/src/utils.ts +19 -0
  235. package/style/drawer.css +163 -0
  236. package/style/globals.css +13 -0
  237. package/style/hanzo-common.css +31 -0
  238. package/style/hanzo-default-colors.css +82 -0
  239. package/style/theme-provider.tsx +20 -0
  240. package/tailwind/colors.tailwind.js +53 -0
  241. package/tailwind/fontFamily.tailwind.ts +7 -0
  242. package/tailwind/fontSize.tailwind.ts +13 -0
  243. package/tailwind/index.ts +7 -0
  244. package/tailwind/safelist.tailwind.js +26 -0
  245. package/tailwind/screens.tailwind.js +8 -0
  246. package/tailwind/spacing.tailwind.js +65 -0
  247. package/tailwind/tailwind.config.hanzo-preset.d.ts +5 -0
  248. package/tailwind/tailwind.config.hanzo-preset.js +915 -0
  249. package/tailwind/tw-font-desc.ts +15 -0
  250. package/tailwind/typo-plugin/get-plugin-styles.js +679 -0
  251. package/tailwind/typo-plugin/index.d.ts +9 -0
  252. package/tailwind/typo-plugin/index.js +141 -0
  253. package/tailwind/typo-plugin/utils.js +60 -0
  254. package/tailwind/typography-test.mdx +35 -0
  255. package/tailwind/z-index.tailwind.js +71 -0
  256. package/types/animation-def.ts +3 -0
  257. package/types/breakpoints.ts +11 -0
  258. package/types/bullet-item.ts +10 -0
  259. package/types/button-def.ts +39 -0
  260. package/types/dimensions.ts +8 -0
  261. package/types/grid-def.ts +56 -0
  262. package/types/image-def.ts +32 -0
  263. package/types/index.ts +30 -0
  264. package/types/link-def.ts +56 -0
  265. package/types/media-stack-def.ts +31 -0
  266. package/types/t-shirt-size.ts +5 -0
  267. package/types/tshirt-dimensions.ts +20 -0
  268. package/types/video-def.ts +25 -0
  269. package/util/blob.ts +33 -0
  270. package/util/copy-to-clipboard.ts +17 -0
  271. package/util/create-shadow-root.ts +22 -0
  272. package/util/date.ts +84 -0
  273. package/util/debounce.ts +11 -0
  274. package/util/file.ts +15 -0
  275. package/util/format-and-abbreviate-as-currency.ts +125 -0
  276. package/util/format-text.ts +34 -0
  277. package/util/format-to-max-char.ts +68 -0
  278. package/util/index-client.ts +3 -0
  279. package/util/index.ts +112 -0
  280. package/util/number-abbreviate.ts +49 -0
  281. package/util/specifier.ts +43 -0
  282. package/util/spread-to-transform.ts +25 -0
  283. package/util/step-animation.ts +90 -0
  284. package/util/timing.ts +3 -0
  285. package/util/toasts.tsx +17 -0
  286. package/util/two-way-map.ts +19 -0
  287. package/CHANGELOG.md +0 -184
  288. package/LICENSE +0 -21
  289. package/dist/ai/index.js +0 -53
  290. package/dist/ai/index.js.map +0 -1
  291. package/dist/ai/index.mjs +0 -4
  292. package/dist/ai/index.mjs.map +0 -1
  293. package/dist/blocks/index.js +0 -983
  294. package/dist/blocks/index.js.map +0 -1
  295. package/dist/blocks/index.mjs +0 -945
  296. package/dist/blocks/index.mjs.map +0 -1
  297. package/dist/calendar/index.js +0 -14
  298. package/dist/calendar/index.js.map +0 -1
  299. package/dist/calendar/index.mjs +0 -5
  300. package/dist/calendar/index.mjs.map +0 -1
  301. package/dist/carousel/index.js +0 -220
  302. package/dist/carousel/index.js.map +0 -1
  303. package/dist/carousel/index.mjs +0 -191
  304. package/dist/carousel/index.mjs.map +0 -1
  305. package/dist/charts/index.js +0 -945
  306. package/dist/charts/index.js.map +0 -1
  307. package/dist/charts/index.mjs +0 -901
  308. package/dist/charts/index.mjs.map +0 -1
  309. package/dist/chunk-26T4V5QU.mjs +0 -111
  310. package/dist/chunk-26T4V5QU.mjs.map +0 -1
  311. package/dist/chunk-2A5KXDLJ.js +0 -22
  312. package/dist/chunk-2A5KXDLJ.js.map +0 -1
  313. package/dist/chunk-2CJ4HMF4.js +0 -79
  314. package/dist/chunk-2CJ4HMF4.js.map +0 -1
  315. package/dist/chunk-2OIQKC5E.js +0 -236
  316. package/dist/chunk-2OIQKC5E.js.map +0 -1
  317. package/dist/chunk-2X3KSYBN.js +0 -44
  318. package/dist/chunk-2X3KSYBN.js.map +0 -1
  319. package/dist/chunk-3PBQGYR7.mjs +0 -100
  320. package/dist/chunk-3PBQGYR7.mjs.map +0 -1
  321. package/dist/chunk-3POQQ6L7.js +0 -62
  322. package/dist/chunk-3POQQ6L7.js.map +0 -1
  323. package/dist/chunk-4B47GITH.mjs +0 -28
  324. package/dist/chunk-4B47GITH.mjs.map +0 -1
  325. package/dist/chunk-4BC2OH6B.js +0 -129
  326. package/dist/chunk-4BC2OH6B.js.map +0 -1
  327. package/dist/chunk-5AQSGH4R.js +0 -130
  328. package/dist/chunk-5AQSGH4R.js.map +0 -1
  329. package/dist/chunk-5IHRJFOO.mjs +0 -102
  330. package/dist/chunk-5IHRJFOO.mjs.map +0 -1
  331. package/dist/chunk-5LDGR7YN.mjs +0 -28
  332. package/dist/chunk-5LDGR7YN.mjs.map +0 -1
  333. package/dist/chunk-5MCN3VYM.mjs +0 -23
  334. package/dist/chunk-5MCN3VYM.mjs.map +0 -1
  335. package/dist/chunk-6AVAMRMB.mjs +0 -47
  336. package/dist/chunk-6AVAMRMB.mjs.map +0 -1
  337. package/dist/chunk-6H62JRNM.mjs +0 -120
  338. package/dist/chunk-6H62JRNM.mjs.map +0 -1
  339. package/dist/chunk-6KCII3F6.mjs +0 -126
  340. package/dist/chunk-6KCII3F6.mjs.map +0 -1
  341. package/dist/chunk-7EHB43BJ.js +0 -155
  342. package/dist/chunk-7EHB43BJ.js.map +0 -1
  343. package/dist/chunk-7LRD23Q5.js +0 -191
  344. package/dist/chunk-7LRD23Q5.js.map +0 -1
  345. package/dist/chunk-7SAHKOJG.mjs +0 -45
  346. package/dist/chunk-7SAHKOJG.mjs.map +0 -1
  347. package/dist/chunk-A3D2YZK3.js +0 -50
  348. package/dist/chunk-A3D2YZK3.js.map +0 -1
  349. package/dist/chunk-AL4QFH7V.js +0 -63
  350. package/dist/chunk-AL4QFH7V.js.map +0 -1
  351. package/dist/chunk-B3WFEG6U.js +0 -69
  352. package/dist/chunk-B3WFEG6U.js.map +0 -1
  353. package/dist/chunk-BDZQJ6GK.js +0 -242
  354. package/dist/chunk-BDZQJ6GK.js.map +0 -1
  355. package/dist/chunk-BRWFYRGX.js +0 -61
  356. package/dist/chunk-BRWFYRGX.js.map +0 -1
  357. package/dist/chunk-C5DNTLBO.js +0 -53
  358. package/dist/chunk-C5DNTLBO.js.map +0 -1
  359. package/dist/chunk-CRALRACO.js +0 -54
  360. package/dist/chunk-CRALRACO.js.map +0 -1
  361. package/dist/chunk-CVACQJRM.js +0 -149
  362. package/dist/chunk-CVACQJRM.js.map +0 -1
  363. package/dist/chunk-DEIUKFPZ.mjs +0 -63
  364. package/dist/chunk-DEIUKFPZ.mjs.map +0 -1
  365. package/dist/chunk-DN2AEEA2.js +0 -13
  366. package/dist/chunk-DN2AEEA2.js.map +0 -1
  367. package/dist/chunk-DTNRWU4B.mjs +0 -35
  368. package/dist/chunk-DTNRWU4B.mjs.map +0 -1
  369. package/dist/chunk-DXIUEWRJ.mjs +0 -31
  370. package/dist/chunk-DXIUEWRJ.mjs.map +0 -1
  371. package/dist/chunk-DYFV66JX.mjs +0 -54
  372. package/dist/chunk-DYFV66JX.mjs.map +0 -1
  373. package/dist/chunk-F3WMAHXV.mjs +0 -86
  374. package/dist/chunk-F3WMAHXV.mjs.map +0 -1
  375. package/dist/chunk-F4RWPBBB.js +0 -79
  376. package/dist/chunk-F4RWPBBB.js.map +0 -1
  377. package/dist/chunk-FEGAPM6U.js +0 -194
  378. package/dist/chunk-FEGAPM6U.js.map +0 -1
  379. package/dist/chunk-G5TS56PW.mjs +0 -160
  380. package/dist/chunk-G5TS56PW.mjs.map +0 -1
  381. package/dist/chunk-GG6VGOEN.mjs +0 -590
  382. package/dist/chunk-GG6VGOEN.mjs.map +0 -1
  383. package/dist/chunk-GLAMGK32.mjs +0 -54
  384. package/dist/chunk-GLAMGK32.mjs.map +0 -1
  385. package/dist/chunk-GNMMUJXD.mjs +0 -200
  386. package/dist/chunk-GNMMUJXD.mjs.map +0 -1
  387. package/dist/chunk-GNPBULLS.mjs +0 -600
  388. package/dist/chunk-GNPBULLS.mjs.map +0 -1
  389. package/dist/chunk-GTE2DELE.js +0 -65
  390. package/dist/chunk-GTE2DELE.js.map +0 -1
  391. package/dist/chunk-GUQAFFTH.js +0 -94
  392. package/dist/chunk-GUQAFFTH.js.map +0 -1
  393. package/dist/chunk-H5VOYZHT.mjs +0 -34
  394. package/dist/chunk-H5VOYZHT.mjs.map +0 -1
  395. package/dist/chunk-HR6PBOGG.mjs +0 -59
  396. package/dist/chunk-HR6PBOGG.mjs.map +0 -1
  397. package/dist/chunk-HROONQS3.js +0 -55
  398. package/dist/chunk-HROONQS3.js.map +0 -1
  399. package/dist/chunk-IAO7SOQ3.mjs +0 -56
  400. package/dist/chunk-IAO7SOQ3.mjs.map +0 -1
  401. package/dist/chunk-K2QKU3K6.mjs +0 -40
  402. package/dist/chunk-K2QKU3K6.mjs.map +0 -1
  403. package/dist/chunk-KEUZZCCP.js +0 -53
  404. package/dist/chunk-KEUZZCCP.js.map +0 -1
  405. package/dist/chunk-KJXSLTG7.mjs +0 -73
  406. package/dist/chunk-KJXSLTG7.mjs.map +0 -1
  407. package/dist/chunk-L5AFUCVH.mjs +0 -26
  408. package/dist/chunk-L5AFUCVH.mjs.map +0 -1
  409. package/dist/chunk-LB3I52KZ.mjs +0 -42
  410. package/dist/chunk-LB3I52KZ.mjs.map +0 -1
  411. package/dist/chunk-LN75MJQ2.js +0 -71
  412. package/dist/chunk-LN75MJQ2.js.map +0 -1
  413. package/dist/chunk-LRBOFJUV.js +0 -60
  414. package/dist/chunk-LRBOFJUV.js.map +0 -1
  415. package/dist/chunk-MMNYRBOU.js +0 -157
  416. package/dist/chunk-MMNYRBOU.js.map +0 -1
  417. package/dist/chunk-MO65YF6P.js +0 -236
  418. package/dist/chunk-MO65YF6P.js.map +0 -1
  419. package/dist/chunk-N4KHP5FC.mjs +0 -33
  420. package/dist/chunk-N4KHP5FC.mjs.map +0 -1
  421. package/dist/chunk-NP2J7AB7.mjs +0 -121
  422. package/dist/chunk-NP2J7AB7.mjs.map +0 -1
  423. package/dist/chunk-OLR6SGYO.js +0 -57
  424. package/dist/chunk-OLR6SGYO.js.map +0 -1
  425. package/dist/chunk-ON7NQ4DY.js +0 -21
  426. package/dist/chunk-ON7NQ4DY.js.map +0 -1
  427. package/dist/chunk-PE3VFRLV.mjs +0 -198
  428. package/dist/chunk-PE3VFRLV.mjs.map +0 -1
  429. package/dist/chunk-Q7LOOIE5.mjs +0 -8
  430. package/dist/chunk-Q7LOOIE5.mjs.map +0 -1
  431. package/dist/chunk-QFA6U75G.mjs +0 -51
  432. package/dist/chunk-QFA6U75G.mjs.map +0 -1
  433. package/dist/chunk-QJQPT4WX.js +0 -638
  434. package/dist/chunk-QJQPT4WX.js.map +0 -1
  435. package/dist/chunk-QKHQPBSR.mjs +0 -20
  436. package/dist/chunk-QKHQPBSR.mjs.map +0 -1
  437. package/dist/chunk-SJD4XRFJ.mjs +0 -141
  438. package/dist/chunk-SJD4XRFJ.mjs.map +0 -1
  439. package/dist/chunk-SOOJLU4C.mjs +0 -19
  440. package/dist/chunk-SOOJLU4C.mjs.map +0 -1
  441. package/dist/chunk-T66B5IM5.js +0 -51
  442. package/dist/chunk-T66B5IM5.js.map +0 -1
  443. package/dist/chunk-T7RPZDO4.js +0 -645
  444. package/dist/chunk-T7RPZDO4.js.map +0 -1
  445. package/dist/chunk-TGRMDGTV.mjs +0 -38
  446. package/dist/chunk-TGRMDGTV.mjs.map +0 -1
  447. package/dist/chunk-TH2UKMCO.mjs +0 -11
  448. package/dist/chunk-TH2UKMCO.mjs.map +0 -1
  449. package/dist/chunk-TMV45OKE.mjs +0 -113
  450. package/dist/chunk-TMV45OKE.mjs.map +0 -1
  451. package/dist/chunk-TUJ7EVEK.js +0 -171
  452. package/dist/chunk-TUJ7EVEK.js.map +0 -1
  453. package/dist/chunk-ULNWDOI7.js +0 -122
  454. package/dist/chunk-ULNWDOI7.js.map +0 -1
  455. package/dist/chunk-UNUTTHCH.mjs +0 -210
  456. package/dist/chunk-UNUTTHCH.mjs.map +0 -1
  457. package/dist/chunk-VJMI6BG4.mjs +0 -10
  458. package/dist/chunk-VJMI6BG4.mjs.map +0 -1
  459. package/dist/chunk-VZVOB5MG.mjs +0 -26
  460. package/dist/chunk-VZVOB5MG.mjs.map +0 -1
  461. package/dist/chunk-WD67O22C.js +0 -50
  462. package/dist/chunk-WD67O22C.js.map +0 -1
  463. package/dist/chunk-WYPMLIJN.js +0 -53
  464. package/dist/chunk-WYPMLIJN.js.map +0 -1
  465. package/dist/chunk-X32I34NH.js +0 -109
  466. package/dist/chunk-X32I34NH.js.map +0 -1
  467. package/dist/chunk-X5MOZ3YL.js +0 -65
  468. package/dist/chunk-X5MOZ3YL.js.map +0 -1
  469. package/dist/chunk-Y4JVIPQZ.mjs +0 -31
  470. package/dist/chunk-Y4JVIPQZ.mjs.map +0 -1
  471. package/dist/chunk-Y6WOV2LZ.js +0 -95
  472. package/dist/chunk-Y6WOV2LZ.js.map +0 -1
  473. package/dist/chunk-YAEN5SCU.mjs +0 -41
  474. package/dist/chunk-YAEN5SCU.mjs.map +0 -1
  475. package/dist/chunk-YH6XDF3N.js +0 -121
  476. package/dist/chunk-YH6XDF3N.js.map +0 -1
  477. package/dist/chunk-YJKA4D75.mjs +0 -124
  478. package/dist/chunk-YJKA4D75.mjs.map +0 -1
  479. package/dist/chunk-ZANAF7WB.js +0 -88
  480. package/dist/chunk-ZANAF7WB.js.map +0 -1
  481. package/dist/chunk-ZDBWNPLO.js +0 -30
  482. package/dist/chunk-ZDBWNPLO.js.map +0 -1
  483. package/dist/chunk-ZDT2IOK2.js +0 -56
  484. package/dist/chunk-ZDT2IOK2.js.map +0 -1
  485. package/dist/chunk-ZKGVLTSI.js +0 -25
  486. package/dist/chunk-ZKGVLTSI.js.map +0 -1
  487. package/dist/chunk-ZLELESO7.js +0 -34
  488. package/dist/chunk-ZLELESO7.js.map +0 -1
  489. package/dist/chunk-ZUFUEQTX.mjs +0 -157
  490. package/dist/chunk-ZUFUEQTX.mjs.map +0 -1
  491. package/dist/chunk-ZZZWRQQE.mjs +0 -42
  492. package/dist/chunk-ZZZWRQQE.mjs.map +0 -1
  493. package/dist/command/index.js +0 -138
  494. package/dist/command/index.js.map +0 -1
  495. package/dist/command/index.mjs +0 -128
  496. package/dist/command/index.mjs.map +0 -1
  497. package/dist/components/accordion.js +0 -25
  498. package/dist/components/accordion.js.map +0 -1
  499. package/dist/components/accordion.mjs +0 -4
  500. package/dist/components/accordion.mjs.map +0 -1
  501. package/dist/components/alert.js +0 -21
  502. package/dist/components/alert.js.map +0 -1
  503. package/dist/components/alert.mjs +0 -4
  504. package/dist/components/alert.mjs.map +0 -1
  505. package/dist/components/aspect-ratio.js +0 -12
  506. package/dist/components/aspect-ratio.js.map +0 -1
  507. package/dist/components/aspect-ratio.mjs +0 -3
  508. package/dist/components/aspect-ratio.mjs.map +0 -1
  509. package/dist/components/avatar.js +0 -21
  510. package/dist/components/avatar.js.map +0 -1
  511. package/dist/components/avatar.mjs +0 -4
  512. package/dist/components/avatar.mjs.map +0 -1
  513. package/dist/components/badge.js +0 -17
  514. package/dist/components/badge.js.map +0 -1
  515. package/dist/components/badge.mjs +0 -4
  516. package/dist/components/badge.mjs.map +0 -1
  517. package/dist/components/breadcrumb.js +0 -37
  518. package/dist/components/breadcrumb.js.map +0 -1
  519. package/dist/components/breadcrumb.mjs +0 -4
  520. package/dist/components/breadcrumb.mjs.map +0 -1
  521. package/dist/components/button.js +0 -17
  522. package/dist/components/button.js.map +0 -1
  523. package/dist/components/button.mjs +0 -4
  524. package/dist/components/button.mjs.map +0 -1
  525. package/dist/components/card.js +0 -37
  526. package/dist/components/card.js.map +0 -1
  527. package/dist/components/card.mjs +0 -4
  528. package/dist/components/card.mjs.map +0 -1
  529. package/dist/components/checkbox.js +0 -13
  530. package/dist/components/checkbox.js.map +0 -1
  531. package/dist/components/checkbox.mjs +0 -4
  532. package/dist/components/checkbox.mjs.map +0 -1
  533. package/dist/components/collapsible.js +0 -20
  534. package/dist/components/collapsible.js.map +0 -1
  535. package/dist/components/collapsible.mjs +0 -3
  536. package/dist/components/collapsible.mjs.map +0 -1
  537. package/dist/components/context-menu.js +0 -69
  538. package/dist/components/context-menu.js.map +0 -1
  539. package/dist/components/context-menu.mjs +0 -4
  540. package/dist/components/context-menu.mjs.map +0 -1
  541. package/dist/components/dialog.js +0 -49
  542. package/dist/components/dialog.js.map +0 -1
  543. package/dist/components/dialog.mjs +0 -4
  544. package/dist/components/dialog.mjs.map +0 -1
  545. package/dist/components/drawer.js +0 -49
  546. package/dist/components/drawer.js.map +0 -1
  547. package/dist/components/drawer.mjs +0 -4
  548. package/dist/components/drawer.mjs.map +0 -1
  549. package/dist/components/dropdown-menu.js +0 -69
  550. package/dist/components/dropdown-menu.js.map +0 -1
  551. package/dist/components/dropdown-menu.mjs +0 -4
  552. package/dist/components/dropdown-menu.mjs.map +0 -1
  553. package/dist/components/form.js +0 -42
  554. package/dist/components/form.js.map +0 -1
  555. package/dist/components/form.mjs +0 -5
  556. package/dist/components/form.mjs.map +0 -1
  557. package/dist/components/hover-card.js +0 -21
  558. package/dist/components/hover-card.js.map +0 -1
  559. package/dist/components/hover-card.mjs +0 -4
  560. package/dist/components/hover-card.mjs.map +0 -1
  561. package/dist/components/index.js +0 -1047
  562. package/dist/components/index.js.map +0 -1
  563. package/dist/components/index.mjs +0 -46
  564. package/dist/components/index.mjs.map +0 -1
  565. package/dist/components/input-otp.js +0 -25
  566. package/dist/components/input-otp.js.map +0 -1
  567. package/dist/components/input-otp.mjs +0 -4
  568. package/dist/components/input-otp.mjs.map +0 -1
  569. package/dist/components/input.js +0 -13
  570. package/dist/components/input.js.map +0 -1
  571. package/dist/components/input.mjs +0 -4
  572. package/dist/components/input.mjs.map +0 -1
  573. package/dist/components/label.js +0 -13
  574. package/dist/components/label.js.map +0 -1
  575. package/dist/components/label.mjs +0 -4
  576. package/dist/components/label.mjs.map +0 -1
  577. package/dist/components/menubar.js +0 -73
  578. package/dist/components/menubar.js.map +0 -1
  579. package/dist/components/menubar.mjs +0 -4
  580. package/dist/components/menubar.mjs.map +0 -1
  581. package/dist/components/navigation-menu.js +0 -45
  582. package/dist/components/navigation-menu.js.map +0 -1
  583. package/dist/components/navigation-menu.mjs +0 -4
  584. package/dist/components/navigation-menu.mjs.map +0 -1
  585. package/dist/components/pagination.js +0 -38
  586. package/dist/components/pagination.js.map +0 -1
  587. package/dist/components/pagination.mjs +0 -5
  588. package/dist/components/pagination.mjs.map +0 -1
  589. package/dist/components/popover.js +0 -25
  590. package/dist/components/popover.js.map +0 -1
  591. package/dist/components/popover.mjs +0 -4
  592. package/dist/components/popover.mjs.map +0 -1
  593. package/dist/components/progress.js +0 -13
  594. package/dist/components/progress.js.map +0 -1
  595. package/dist/components/progress.mjs +0 -4
  596. package/dist/components/progress.mjs.map +0 -1
  597. package/dist/components/radio-group.js +0 -17
  598. package/dist/components/radio-group.js.map +0 -1
  599. package/dist/components/radio-group.mjs +0 -4
  600. package/dist/components/radio-group.mjs.map +0 -1
  601. package/dist/components/resizable.js +0 -21
  602. package/dist/components/resizable.js.map +0 -1
  603. package/dist/components/resizable.mjs +0 -4
  604. package/dist/components/resizable.mjs.map +0 -1
  605. package/dist/components/scroll-area.js +0 -17
  606. package/dist/components/scroll-area.js.map +0 -1
  607. package/dist/components/scroll-area.mjs +0 -4
  608. package/dist/components/scroll-area.mjs.map +0 -1
  609. package/dist/components/select.js +0 -49
  610. package/dist/components/select.js.map +0 -1
  611. package/dist/components/select.mjs +0 -4
  612. package/dist/components/select.mjs.map +0 -1
  613. package/dist/components/separator.js +0 -13
  614. package/dist/components/separator.js.map +0 -1
  615. package/dist/components/separator.mjs +0 -4
  616. package/dist/components/separator.mjs.map +0 -1
  617. package/dist/components/sheet.js +0 -49
  618. package/dist/components/sheet.js.map +0 -1
  619. package/dist/components/sheet.mjs +0 -4
  620. package/dist/components/sheet.mjs.map +0 -1
  621. package/dist/components/sidebar.js +0 -111
  622. package/dist/components/sidebar.js.map +0 -1
  623. package/dist/components/sidebar.mjs +0 -10
  624. package/dist/components/sidebar.mjs.map +0 -1
  625. package/dist/components/skeleton.js +0 -13
  626. package/dist/components/skeleton.js.map +0 -1
  627. package/dist/components/skeleton.mjs +0 -4
  628. package/dist/components/skeleton.mjs.map +0 -1
  629. package/dist/components/slider.js +0 -13
  630. package/dist/components/slider.js.map +0 -1
  631. package/dist/components/slider.mjs +0 -4
  632. package/dist/components/slider.mjs.map +0 -1
  633. package/dist/components/switch.js +0 -13
  634. package/dist/components/switch.js.map +0 -1
  635. package/dist/components/switch.mjs +0 -4
  636. package/dist/components/switch.mjs.map +0 -1
  637. package/dist/components/table.js +0 -41
  638. package/dist/components/table.js.map +0 -1
  639. package/dist/components/table.mjs +0 -4
  640. package/dist/components/table.mjs.map +0 -1
  641. package/dist/components/tabs.js +0 -25
  642. package/dist/components/tabs.js.map +0 -1
  643. package/dist/components/tabs.mjs +0 -4
  644. package/dist/components/tabs.mjs.map +0 -1
  645. package/dist/components/textarea.js +0 -13
  646. package/dist/components/textarea.js.map +0 -1
  647. package/dist/components/textarea.mjs +0 -4
  648. package/dist/components/textarea.mjs.map +0 -1
  649. package/dist/components/toast.js +0 -37
  650. package/dist/components/toast.js.map +0 -1
  651. package/dist/components/toast.mjs +0 -4
  652. package/dist/components/toast.mjs.map +0 -1
  653. package/dist/components/toggle-group.js +0 -18
  654. package/dist/components/toggle-group.js.map +0 -1
  655. package/dist/components/toggle-group.mjs +0 -5
  656. package/dist/components/toggle-group.mjs.map +0 -1
  657. package/dist/components/toggle.js +0 -17
  658. package/dist/components/toggle.js.map +0 -1
  659. package/dist/components/toggle.mjs +0 -4
  660. package/dist/components/toggle.mjs.map +0 -1
  661. package/dist/components/tooltip.js +0 -25
  662. package/dist/components/tooltip.js.map +0 -1
  663. package/dist/components/tooltip.mjs +0 -4
  664. package/dist/components/tooltip.mjs.map +0 -1
  665. package/dist/effects/index.js +0 -162
  666. package/dist/effects/index.js.map +0 -1
  667. package/dist/effects/index.mjs +0 -156
  668. package/dist/effects/index.mjs.map +0 -1
  669. package/dist/lib/utils.js +0 -12
  670. package/dist/lib/utils.js.map +0 -1
  671. package/dist/lib/utils.mjs +0 -3
  672. package/dist/lib/utils.mjs.map +0 -1
  673. package/dist/markdown/index.js +0 -669
  674. package/dist/markdown/index.js.map +0 -1
  675. package/dist/markdown/index.mjs +0 -635
  676. package/dist/markdown/index.mjs.map +0 -1
  677. package/dist/qr/index.js +0 -101
  678. package/dist/qr/index.js.map +0 -1
  679. package/dist/qr/index.mjs +0 -98
  680. package/dist/qr/index.mjs.map +0 -1
  681. package/dist/upload/index.js +0 -166
  682. package/dist/upload/index.js.map +0 -1
  683. package/dist/upload/index.mjs +0 -163
  684. package/dist/upload/index.mjs.map +0 -1
  685. package/publish.sh +0 -27
package/README.md CHANGED
@@ -1,29 +1,10 @@
1
- # @hanzo/ui v5
1
+ # @hanzo/ui
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/@hanzo/ui.svg)](https://www.npmjs.com/package/@hanzo/ui)
4
- [![npm downloads](https://img.shields.io/npm/dm/@hanzo/ui.svg)](https://www.npmjs.com/package/@hanzo/ui)
5
- [![Bundle Size](https://img.shields.io/bundlephobia/minzip/@hanzo/ui)](https://bundlephobia.com/package/@hanzo/ui)
6
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
3
+ A comprehensive UI component library for Hanzo applications, built with React and TypeScript.
8
4
 
9
- Modern React component library built on shadcn/ui v4 with Hanzo branding, featuring 50+ accessible components, 35+ hooks, and comprehensive TypeScript support.
5
+ ## Version 4.5.6
10
6
 
11
- ## ✨ Features
12
-
13
- - 🎨 **Multi-Brand Theming** - Built-in support for Hanzo, Lux, and Zoo brands
14
- - 📦 **50+ Components** - Comprehensive UI components based on shadcn/ui v4
15
- - 🪝 **35+ Custom Hooks** - Powerful React hooks for common patterns
16
- - 🛠️ **25+ Utilities** - Helper functions and utilities
17
- - 🌙 **Dark Mode** - Native dark mode with system preference detection
18
- - ♿ **Accessible** - WCAG 2.1 AA compliant components
19
- - 📱 **Responsive** - Mobile-first responsive design
20
- - 🎯 **Tree Shakeable** - Import only what you need
21
- - 💅 **Tailwind CSS** - Utility-first styling with Tailwind v3.4+
22
- - 🎭 **OKLCH Colors** - Modern color system with OKLCH color space
23
- - 🤖 **AI Components** - Chat interfaces and AI-specific components
24
- - 📋 **Copy/Paste** - Components can be copied directly into your project
25
-
26
- ## 📦 Installation
7
+ ## Installation
27
8
 
28
9
  ```bash
29
10
  npm install @hanzo/ui
@@ -33,190 +14,216 @@ pnpm add @hanzo/ui
33
14
  yarn add @hanzo/ui
34
15
  ```
35
16
 
36
- ## 🚀 Quick Start
37
-
38
- ### 1. Configure Tailwind CSS
39
-
40
- Add the Hanzo UI preset to your `tailwind.config.js`:
41
-
42
- ```js
43
- // tailwind.config.js
44
- import hanzoPreset from '@hanzo/ui/tailwind-preset'
45
-
46
- export default {
47
- presets: [hanzoPreset],
48
- content: [
49
- './src/**/*.{js,ts,jsx,tsx,mdx}',
50
- './node_modules/@hanzo/ui/dist/**/*.{js,mjs}'
51
- ],
52
- // ... your config
53
- }
54
- ```
55
-
56
- ### 2. Import Components
57
-
58
- ```tsx
59
- // Import utilities
60
- import { cn } from '@hanzo/ui'
61
-
62
- // Import components
63
- import { Button, Card, Dialog } from '@hanzo/ui/components'
64
-
65
- // Or import individually
66
- import { Button } from '@hanzo/ui/components/button'
67
- import { Card } from '@hanzo/ui/components/card'
68
-
69
- // Import AI components
70
- import { ChatInterface } from '@hanzo/ui/ai'
71
-
72
- // Import block patterns
73
- import { AuthForm } from '@hanzo/ui/blocks'
74
- ```
75
-
76
- ### 3. Use Components
77
-
78
- ```tsx
79
- export function App() {
80
- return (
81
- <Card className="p-6">
82
- <h1>Welcome to Hanzo UI</h1>
83
- <Button variant="default" size="lg">
84
- Get Started
85
- </Button>
86
- </Card>
87
- )
88
- }
89
- ```
90
-
91
- ## 📚 Component Categories
92
-
93
- ### Core Components
94
- - **Layout**: Container, Grid, Stack, Spacer
95
- - **Typography**: Heading, Text, Label
96
- - **Buttons**: Button, IconButton, ButtonGroup
97
- - **Forms**: Input, Textarea, Select, Checkbox, Radio, Switch
98
- - **Feedback**: Alert, Toast, Progress, Skeleton
99
- - **Overlay**: Dialog, Sheet, Popover, Tooltip
100
- - **Navigation**: Tabs, Breadcrumb, Pagination
101
- - **Data Display**: Table, DataTable, Card, Badge
102
- - **Media**: Avatar, Image, Video
103
-
104
- ### AI Components
105
- - Chat Interface
106
- - Message Components
107
- - Code Block with Syntax Highlighting
108
- - Streaming Support
109
- - Tool Use Display
110
-
111
- ### Block Patterns
112
- - Authentication Forms
113
- - Dashboard Layouts
114
- - Marketing Sections
115
- - E-commerce Patterns
116
- - Landing Pages
117
-
118
- ## 🎨 Theming
119
-
120
- ### Using CSS Variables
121
-
122
- Hanzo UI uses CSS variables for theming. You can customize the theme by overriding these variables:
123
-
124
- ```css
125
- @layer base {
126
- :root {
127
- --hanzo-background: 0 0% 100%;
128
- --hanzo-foreground: 0 0% 3.9%;
129
- --hanzo-primary: 0 0% 9%;
130
- --hanzo-primary-foreground: 0 0% 98%;
131
- /* ... more variables */
132
- }
133
-
134
- .dark {
135
- --hanzo-background: 0 0% 3.9%;
136
- --hanzo-foreground: 0 0% 98%;
137
- /* ... dark mode variables */
138
- }
139
- }
140
- ```
141
-
142
- ### Multiple Brands
143
-
144
- Switch between brand themes:
17
+ ## Components
18
+
19
+ ### Primitives
20
+
21
+ Core UI components based on Radix UI primitives:
22
+
23
+ - **Accordion** - Collapsible content panels
24
+ - **Alert** - Informative alert messages
25
+ - **AlertDialog** - Modal dialogs for important alerts
26
+ - **Avatar** - User avatar display
27
+ - **Badge** - Status and label badges
28
+ - **Breadcrumb** - Navigation breadcrumbs
29
+ - **Button** - Interactive buttons with variants
30
+ - **Calendar** - Date picker calendar
31
+ - **Card** - Container cards for content
32
+ - **Carousel** - Image/content carousel
33
+ - **Checkbox** - Checkbox input
34
+ - **Collapsible** - Collapsible content sections
35
+ - **Combobox** - Searchable select dropdown
36
+ - **Command** - Command palette component
37
+ - **ContextMenu** - Right-click context menus
38
+ - **Dialog** - Modal dialogs
39
+ - **Drawer** - Slide-out drawer panels
40
+ - **DropdownMenu** - Dropdown menu component
41
+ - **Form** - Form components with validation
42
+ - **HoverCard** - Hover-triggered info cards
43
+ - **Input** - Text input field
44
+ - **InputOTP** - One-time password input
45
+ - **Label** - Form labels
46
+ - **NavigationMenu** - Navigation menu bar
47
+ - **Popover** - Popover overlays
48
+ - **Progress** - Progress indicators
49
+ - **RadioGroup** - Radio button groups
50
+ - **ResizablePanel** - Resizable panel layouts
51
+ - **ScrollArea** - Custom scrollable areas
52
+ - **SearchInput** - Search input with icon
53
+ - **Select** - Select dropdown
54
+ - **Separator** - Visual separator line
55
+ - **Sheet** - Side sheet panels
56
+ - **Skeleton** - Loading skeleton screens
57
+ - **Slider** - Range slider input
58
+ - **Switch** - Toggle switch
59
+ - **Table** - Data tables
60
+ - **Tabs** - Tabbed interfaces
61
+ - **TextArea** - Multi-line text input
62
+ - **TextField** - Enhanced text input
63
+ - **Toast** - Toast notifications (via Sonner)
64
+ - **Toggle** - Toggle buttons
65
+ - **ToggleGroup** - Grouped toggle buttons
66
+ - **Tooltip** - Hover tooltips
67
+ - **VideoPlayer** - Video playback component
68
+
69
+ ### Assets
70
+
71
+ Icon components and visual assets:
72
+
73
+ #### AI Provider Icons
74
+ - **AnthropicIcon** - Anthropic AI logo
75
+ - **OpenAIIcon** - OpenAI logo
76
+ - **GeminiIcon** - Google Gemini logo
77
+ - **DeepSeekIcon** - DeepSeek logo
78
+ - **MistralIcon** - Mistral AI logo
79
+ - **MetaIcon** - Meta AI logo
80
+ - **GroqIcon** - Groq logo
81
+ - **OllamaIcon** - Ollama logo
82
+ - **HanzoIcon** - Hanzo AI logo
83
+ - **TogetherAI** - Together AI logo
84
+ - **ExoIcon** - Exo logo
85
+ - **GrokIcon** - Grok logo
86
+ - **LmStudioIcon** - LM Studio logo
87
+ - **OpenRouterIcon** - OpenRouter logo
88
+ - **PerplexityIcon** - Perplexity logo
89
+ - **QwenIcon** - Qwen logo
90
+ - **AyaCohereIcon** - Aya/Cohere logo
91
+
92
+ #### Feature Icons
93
+ - **AIAgentIcon** - AI agent indicator
94
+ - **AisIcon** - AI services icon
95
+ - **ReactJsIcon** - React.js logo
96
+ - **ReasoningIcon** - AI reasoning indicator
97
+ - **ToolsIcon** - Tools/utilities icon
98
+ - **TracingIcon** - Tracing/monitoring icon
99
+ - **ScheduledTasksIcon** - Scheduled tasks icon
100
+ - **SendIcon** - Send/submit icon
101
+
102
+ #### File Type Icons
103
+ - **FileTypeIcon** - Dynamic file type icon based on extension
104
+ - **DirectoryTypeIcon** - Folder/directory icon
105
+
106
+ ### Utilities
107
+
108
+ Helper functions and hooks:
109
+
110
+ - **cn()** - Class name utility (clsx + tailwind-merge)
111
+ - **markdown()** - Markdown to JSX converter
112
+ - **formatText()** - Text formatting utilities
113
+ - **useDebounce()** - Debounce hook
114
+ - **useMap()** - Map state management hook
115
+ - **formatDateToLocaleStringWithTime()** - Date formatting
116
+ - **getFileExt()** - File extension extraction
117
+ - **hexToRgb()** - Color conversion utilities
118
+
119
+ ### Custom Components
120
+
121
+ Additional enhanced components:
122
+
123
+ - **ChatInput** - Chat message input
124
+ - **ChatInputArea** - Multi-line chat input
125
+ - **ChatSettingsIcon** - Chat settings icon
126
+ - **CopyToClipboardIcon** - Copy to clipboard button
127
+ - **DotsLoader** - Loading dots animation
128
+ - **FileList** - File list display
129
+ - **FileUploader** - File upload component
130
+ - **JsonForm** - JSON-based dynamic forms
131
+ - **MarkdownText** - Markdown renderer
132
+ - **PrettyJsonPrint** - Formatted JSON display
133
+
134
+ ## Styling
135
+
136
+ The library uses Tailwind CSS for styling. Make sure your application includes Tailwind CSS configuration.
137
+
138
+ ## Dependencies
139
+
140
+ Key peer dependencies:
141
+ - React 18.3.1+
142
+ - React DOM 18.3.1+
143
+ - @hookform/resolvers ^3.3.2
144
+ - react-hook-form 7.51.4
145
+ - lucide-react 0.456.0
146
+ - next-themes ^0.2.1
147
+ - embla-carousel ^8.1.6
148
+
149
+ ## Usage Examples
150
+
151
+ ### Basic Button
145
152
 
146
153
  ```tsx
147
- import { ThemeProvider } from '@hanzo/ui/components/theme-provider'
154
+ import { Button } from '@hanzo/ui';
148
155
 
149
156
  function App() {
150
157
  return (
151
- <ThemeProvider defaultTheme="hanzo" storageKey="ui-theme">
152
- {/* Your app */}
153
- </ThemeProvider>
154
- )
158
+ <Button variant="primary" onClick={() => console.log('clicked')}>
159
+ Click me
160
+ </Button>
161
+ );
155
162
  }
156
163
  ```
157
164
 
158
- ## 🔧 Advanced Usage
159
-
160
- ### Custom Styling with cn()
161
-
162
- The `cn()` utility combines clsx and tailwind-merge:
165
+ ### Alert Dialog
163
166
 
164
167
  ```tsx
165
- import { cn } from '@hanzo/ui'
166
-
167
- function CustomButton({ className, ...props }) {
168
+ import {
169
+ AlertDialog,
170
+ AlertDialogTrigger,
171
+ AlertDialogContent,
172
+ AlertDialogHeader,
173
+ AlertDialogTitle,
174
+ AlertDialogDescription,
175
+ AlertDialogFooter,
176
+ AlertDialogAction,
177
+ AlertDialogCancel
178
+ } from '@hanzo/ui';
179
+
180
+ function ConfirmDialog() {
168
181
  return (
169
- <button
170
- className={cn(
171
- 'px-4 py-2 rounded-lg bg-primary text-primary-foreground',
172
- 'hover:bg-primary/90 transition-colors',
173
- className
174
- )}
175
- {...props}
176
- />
177
- )
182
+ <AlertDialog>
183
+ <AlertDialogTrigger>
184
+ <Button>Open Dialog</Button>
185
+ </AlertDialogTrigger>
186
+ <AlertDialogContent>
187
+ <AlertDialogHeader>
188
+ <AlertDialogTitle>Are you sure?</AlertDialogTitle>
189
+ <AlertDialogDescription>
190
+ This action cannot be undone.
191
+ </AlertDialogDescription>
192
+ </AlertDialogHeader>
193
+ <AlertDialogFooter>
194
+ <AlertDialogCancel>Cancel</AlertDialogCancel>
195
+ <AlertDialogAction>Continue</AlertDialogAction>
196
+ </AlertDialogFooter>
197
+ </AlertDialogContent>
198
+ </AlertDialog>
199
+ );
178
200
  }
179
201
  ```
180
202
 
181
- ### TypeScript Support
182
-
183
- All components are fully typed:
203
+ ### AI Provider Icons
184
204
 
185
205
  ```tsx
186
- import type { ButtonProps } from '@hanzo/ui/components/button'
206
+ import { OpenAIIcon, AnthropicIcon, GeminiIcon } from '@hanzo/ui/assets';
187
207
 
188
- interface CustomButtonProps extends ButtonProps {
189
- customProp?: string
190
- }
191
-
192
- export function CustomButton({ customProp, ...props }: CustomButtonProps) {
193
- return <Button {...props} />
208
+ function AIProviders() {
209
+ return (
210
+ <div className="flex gap-4">
211
+ <OpenAIIcon className="h-6 w-6" />
212
+ <AnthropicIcon className="h-6 w-6" />
213
+ <GeminiIcon className="h-6 w-6" />
214
+ </div>
215
+ );
194
216
  }
195
217
  ```
196
218
 
197
- ## 📖 Documentation
198
-
199
- - [Full Documentation](https://ui.hanzo.ai)
200
- - [Component Examples](https://ui.hanzo.ai/components)
201
- - [Migration Guide](https://ui.hanzo.ai/docs/migration)
202
- - [Storybook](https://ui.hanzo.ai/storybook)
203
-
204
- ## 🤝 Contributing
205
-
206
- Contributions are welcome! Please read our [Contributing Guide](https://github.com/hanzoai/ui/blob/main/CONTRIBUTING.md) for details.
207
-
208
- ## 📄 License
219
+ ## License
209
220
 
210
- MIT © [Hanzo AI](https://hanzo.ai)
221
+ BSD-3-Clause
211
222
 
212
- ## 🔗 Links
223
+ ## Author
213
224
 
214
- - [GitHub Repository](https://github.com/hanzoai/ui)
215
- - [NPM Package](https://www.npmjs.com/package/@hanzo/ui)
216
- - [Documentation](https://ui.hanzo.ai)
217
- - [Storybook](https://ui.hanzo.ai/storybook)
218
- - [Discord Community](https://discord.gg/hanzo)
225
+ Hanzo AI, Inc.
219
226
 
220
- ---
227
+ ## Repository
221
228
 
222
- Built with ❤️ by [Hanzo AI](https://hanzo.ai)
229
+ https://github.com/hanzoai/react-sdk
@@ -0,0 +1,207 @@
1
+ // AI provider icon implementations
2
+ import React from 'react';
3
+ import { cn } from '../src/utils';
4
+ import { BrainIcon, ServerIcon, BotIcon, SparklesIcon, CpuIcon, ZapIcon, RocketIcon, ActivityIcon, NetworkIcon } from 'lucide-react';
5
+
6
+ // Simple placeholder icons for AI providers - replace with actual brand icons when available
7
+ export const AnthropicIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
8
+ ({ className, ...props }, ref) => (
9
+ <BrainIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
10
+ )
11
+ );
12
+ AnthropicIcon.displayName = 'AnthropicIcon';
13
+
14
+ export const AyaCohereIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
15
+ ({ className, ...props }, ref) => (
16
+ <SparklesIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
17
+ )
18
+ );
19
+ AyaCohereIcon.displayName = 'AyaCohereIcon';
20
+
21
+ export const DeepSeekIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
22
+ ({ className, ...props }, ref) => (
23
+ <CpuIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
24
+ )
25
+ );
26
+ DeepSeekIcon.displayName = 'DeepSeekIcon';
27
+
28
+ export const ExoIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
29
+ ({ className, ...props }, ref) => (
30
+ <ServerIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
31
+ )
32
+ );
33
+ ExoIcon.displayName = 'ExoIcon';
34
+
35
+ export const GeminiIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
36
+ ({ className, ...props }, ref) => (
37
+ <SparklesIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
38
+ )
39
+ );
40
+ GeminiIcon.displayName = 'GeminiIcon';
41
+
42
+ export const GoogleIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
43
+ ({ className, ...props }, ref) => (
44
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="currentColor" {...props}>
45
+ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>
46
+ </svg>
47
+ )
48
+ );
49
+ GoogleIcon.displayName = 'GoogleIcon';
50
+
51
+ export const GrokIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
52
+ ({ className, ...props }, ref) => (
53
+ <ZapIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
54
+ )
55
+ );
56
+ GrokIcon.displayName = 'GrokIcon';
57
+
58
+ export const GroqIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
59
+ ({ className, ...props }, ref) => (
60
+ <RocketIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
61
+ )
62
+ );
63
+ GroqIcon.displayName = 'GroqIcon';
64
+
65
+ export const LmStudioIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
66
+ ({ className, ...props }, ref) => (
67
+ <ServerIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
68
+ )
69
+ );
70
+ LmStudioIcon.displayName = 'LmStudioIcon';
71
+
72
+ export const MetaIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
73
+ ({ className, ...props }, ref) => (
74
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="currentColor" {...props}>
75
+ <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 2c4.41 0 8 3.59 8 8s-3.59 8-8 8-8-3.59-8-8 3.59-8 8-8z"/>
76
+ </svg>
77
+ )
78
+ );
79
+ MetaIcon.displayName = 'MetaIcon';
80
+
81
+ export const MistralIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
82
+ ({ className, ...props }, ref) => (
83
+ <ActivityIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
84
+ )
85
+ );
86
+ MistralIcon.displayName = 'MistralIcon';
87
+
88
+ export const OllamaIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
89
+ ({ className, ...props }, ref) => (
90
+ <ServerIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
91
+ )
92
+ );
93
+ OllamaIcon.displayName = 'OllamaIcon';
94
+
95
+ export const OpenAIIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
96
+ ({ className, ...props }, ref) => (
97
+ <BotIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
98
+ )
99
+ );
100
+ OpenAIIcon.displayName = 'OpenAIIcon';
101
+
102
+ export const OpenRouterIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
103
+ ({ className, ...props }, ref) => (
104
+ <NetworkIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
105
+ )
106
+ );
107
+ OpenRouterIcon.displayName = 'OpenRouterIcon';
108
+
109
+ export const PerplexityIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
110
+ ({ className, ...props }, ref) => (
111
+ <SparklesIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
112
+ )
113
+ );
114
+ PerplexityIcon.displayName = 'PerplexityIcon';
115
+
116
+ export const QwenIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
117
+ ({ className, ...props }, ref) => (
118
+ <CpuIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
119
+ )
120
+ );
121
+ QwenIcon.displayName = 'QwenIcon';
122
+
123
+ export const HanzoIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
124
+ ({ className, ...props }, ref) => (
125
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="currentColor" {...props}>
126
+ <path d="M12 2L2 7v10c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V7l-10-5z"/>
127
+ </svg>
128
+ )
129
+ );
130
+ HanzoIcon.displayName = 'HanzoIcon';
131
+
132
+ export const TogetherAI = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
133
+ ({ className, ...props }, ref) => (
134
+ <NetworkIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
135
+ )
136
+ );
137
+ TogetherAI.displayName = 'TogetherAI';
138
+
139
+ // Generic AI icon for providers without specific icons
140
+ export const AisIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
141
+ ({ className, ...props }, ref) => (
142
+ <BrainIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
143
+ )
144
+ );
145
+ AisIcon.displayName = 'AisIcon';
146
+
147
+ // Also export the ScheduledTasksIcon and SendIcon that might be needed
148
+ export const ScheduledTasksIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
149
+ ({ className, ...props }, ref) => (
150
+ <ActivityIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
151
+ )
152
+ );
153
+ ScheduledTasksIcon.displayName = 'ScheduledTasksIcon';
154
+
155
+ export const SendIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
156
+ ({ className, ...props }, ref) => (
157
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" {...props}>
158
+ <line x1="22" y1="2" x2="11" y2="13"></line>
159
+ <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
160
+ </svg>
161
+ )
162
+ );
163
+ SendIcon.displayName = 'SendIcon';
164
+
165
+ export const ReactJsIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
166
+ ({ className, ...props }, ref) => (
167
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="currentColor" {...props}>
168
+ <circle cx="12" cy="12" r="10" fill="none" stroke="currentColor" strokeWidth="2"/>
169
+ <circle cx="12" cy="12" r="3" fill="currentColor"/>
170
+ <circle cx="12" cy="6" r="2" fill="currentColor"/>
171
+ <circle cx="18" cy="15" r="2" fill="currentColor"/>
172
+ <circle cx="6" cy="15" r="2" fill="currentColor"/>
173
+ <path d="M12 12 L12 6 M12 12 L18 15 M12 12 L6 15" stroke="currentColor" strokeWidth="1.5"/>
174
+ </svg>
175
+ )
176
+ );
177
+ ReactJsIcon.displayName = 'ReactJsIcon';
178
+
179
+ export const ReasoningIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
180
+ ({ className, ...props }, ref) => (
181
+ <BrainIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
182
+ )
183
+ );
184
+ ReasoningIcon.displayName = 'ReasoningIcon';
185
+
186
+ export const ToolsIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
187
+ ({ className, ...props }, ref) => (
188
+ <svg ref={ref} className={cn("h-4 w-4", className)} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" {...props}>
189
+ <path d="M14 2l1.5 1.5v5.5L21 9v6l-5.5-.5V21L14 22l-2-7-2 7-1.5-1V14.5L3 15V9l5.5.5V4L10 2h4z"/>
190
+ </svg>
191
+ )
192
+ );
193
+ ToolsIcon.displayName = 'ToolsIcon';
194
+
195
+ export const AIAgentIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
196
+ ({ className, ...props }, ref) => (
197
+ <BotIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
198
+ )
199
+ );
200
+ AIAgentIcon.displayName = 'AIAgentIcon';
201
+
202
+ export const TracingIcon = React.forwardRef<SVGSVGElement, React.SVGProps<SVGSVGElement>>(
203
+ ({ className, ...props }, ref) => (
204
+ <ActivityIcon ref={ref} className={cn("h-4 w-4", className)} {...props} />
205
+ )
206
+ );
207
+ TracingIcon.displayName = 'TracingIcon';
@@ -0,0 +1,33 @@
1
+ import { cn } from '../src/utils';
2
+
3
+ export const EthereumIcon = ({ className }: { className?: string }) => (
4
+ <svg
5
+ className={cn('shrink-0', className)}
6
+ width="16"
7
+ height="16"
8
+ fill="none"
9
+ viewBox="0 0 24 24"
10
+ >
11
+ <path
12
+ fill="#fff"
13
+ d="M12 3v6.65l5.625 2.516zm0 0-5.625 9.166L12 9.651zm0 13.477v4.522l5.625-7.784zM12 21v-4.523l-5.625-3.262z"
14
+ />
15
+ </svg>
16
+ );
17
+
18
+ export const USDCIcon = ({ className }: { className?: string }) => (
19
+ <svg
20
+ width="16"
21
+ className={cn('shrink-0', className)}
22
+ height="16"
23
+ fill="none"
24
+ viewBox="0 0 24 24"
25
+ >
26
+ <path
27
+ fill="#fff"
28
+ fillRule="evenodd"
29
+ d="M12 21c4.99 0 9-4.01 9-9s-4.01-9-9-9-9 4.01-9 9 4.01 9 9 9m2.475-7.578c0-1.31-.787-1.76-2.362-1.946-1.125-.152-1.35-.45-1.35-.978 0-.523.377-.86 1.125-.86.675 0 1.052.224 1.237.787.04.112.152.185.265.185h.596a.256.256 0 0 0 .264-.259v-.039c-.152-.827-.827-1.614-1.687-1.687v-.827c0-.152-.113-.265-.298-.298h-.495c-.152 0-.293.112-.332.298v.827c-1.125.151-1.873 1.012-1.873 1.951 0 1.238.748 1.722 2.323 1.913 1.052.185 1.39.41 1.39 1.012 0 .597-.53 1.013-1.238 1.013-.98 0-1.316-.416-1.429-.979-.034-.146-.146-.225-.259-.225h-.641a.256.256 0 0 0-.259.264v.04c.146.934.748 1.575 1.986 1.76v.833c0 .152.112.253.298.293h.54c.146 0 .248-.102.287-.293v-.833c1.125-.185 1.912-.939 1.912-1.952"
30
+ clipRule="evenodd"
31
+ />
32
+ </svg>
33
+ );