@hanzo/ui 5.3.26 → 5.3.29

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 (100) hide show
  1. package/content/index.ts +26 -0
  2. package/dist/util/index.js +6 -0
  3. package/dist/util/index.mjs +6 -1
  4. package/docs/_registry/index.ts +426 -0
  5. package/docs/_registry/layout/docs-min.tsx +197 -0
  6. package/docs/_registry/layout/page-min.tsx +128 -0
  7. package/docs/components/accordion.tsx +118 -0
  8. package/docs/components/banner.tsx +144 -0
  9. package/docs/components/callout.tsx +112 -0
  10. package/docs/components/card.tsx +52 -0
  11. package/docs/components/codeblock.tsx +258 -0
  12. package/docs/components/dialog/search-algolia.tsx +132 -0
  13. package/docs/components/dialog/search-default.tsx +131 -0
  14. package/docs/components/dialog/search-orama.tsx +143 -0
  15. package/docs/components/dialog/search.tsx +529 -0
  16. package/docs/components/dynamic-codeblock.tsx +129 -0
  17. package/docs/components/files.tsx +81 -0
  18. package/docs/components/github-info.tsx +107 -0
  19. package/docs/components/heading.tsx +33 -0
  20. package/docs/components/image-zoom.css +77 -0
  21. package/docs/components/image-zoom.tsx +58 -0
  22. package/docs/components/index.ts +7 -0
  23. package/docs/components/inline-toc.tsx +48 -0
  24. package/docs/components/sidebar/base.tsx +451 -0
  25. package/docs/components/sidebar/link-item.tsx +65 -0
  26. package/docs/components/sidebar/page-tree.tsx +113 -0
  27. package/docs/components/sidebar/tabs/dropdown.tsx +109 -0
  28. package/docs/components/sidebar/tabs/index.tsx +89 -0
  29. package/docs/components/steps.tsx +9 -0
  30. package/docs/components/tabs.tsx +203 -0
  31. package/docs/components/toc/clerk.tsx +173 -0
  32. package/docs/components/toc/default.tsx +57 -0
  33. package/docs/components/toc/index.tsx +136 -0
  34. package/docs/components/type-table.tsx +174 -0
  35. package/docs/components/ui/accordion.tsx +88 -0
  36. package/docs/components/ui/button.tsx +28 -0
  37. package/docs/components/ui/collapsible.tsx +42 -0
  38. package/docs/components/ui/navigation-menu.tsx +83 -0
  39. package/docs/components/ui/popover.tsx +32 -0
  40. package/docs/components/ui/scroll-area.tsx +59 -0
  41. package/docs/components/ui/tabs.tsx +145 -0
  42. package/docs/contexts/i18n.tsx +56 -0
  43. package/docs/contexts/search.tsx +165 -0
  44. package/docs/contexts/tree.tsx +65 -0
  45. package/docs/css/black.css +39 -0
  46. package/docs/css/catppuccin.css +49 -0
  47. package/docs/css/colors/index.css +51 -0
  48. package/docs/css/dusk.css +47 -0
  49. package/docs/css/layouts/docs.css +1 -0
  50. package/docs/css/layouts/home.css +1 -0
  51. package/docs/css/layouts/notebook.css +1 -0
  52. package/docs/css/neutral.css +7 -0
  53. package/docs/css/ocean.css +48 -0
  54. package/docs/css/preset.css +305 -0
  55. package/docs/css/purple.css +39 -0
  56. package/docs/css/shadcn.css +36 -0
  57. package/docs/css/shiki.css +90 -0
  58. package/docs/css/solar.css +75 -0
  59. package/docs/css/style.css +9 -0
  60. package/docs/css/vitepress.css +77 -0
  61. package/docs/i18n.tsx +30 -0
  62. package/docs/icons.tsx +354 -0
  63. package/docs/layouts/docs/client.tsx +129 -0
  64. package/docs/layouts/docs/index.tsx +321 -0
  65. package/docs/layouts/docs/page/client.tsx +376 -0
  66. package/docs/layouts/docs/page/index.tsx +251 -0
  67. package/docs/layouts/docs/sidebar.tsx +265 -0
  68. package/docs/layouts/home/client.tsx +375 -0
  69. package/docs/layouts/home/index.tsx +51 -0
  70. package/docs/layouts/home/navbar.tsx +55 -0
  71. package/docs/layouts/notebook/client.tsx +281 -0
  72. package/docs/layouts/notebook/index.tsx +461 -0
  73. package/docs/layouts/notebook/page/client.tsx +375 -0
  74. package/docs/layouts/notebook/page/index.tsx +251 -0
  75. package/docs/layouts/notebook/sidebar.tsx +248 -0
  76. package/docs/layouts/shared/index.tsx +89 -0
  77. package/docs/layouts/shared/language-toggle.tsx +66 -0
  78. package/docs/layouts/shared/link-item.tsx +119 -0
  79. package/docs/layouts/shared/search-toggle.tsx +78 -0
  80. package/docs/layouts/shared/theme-toggle.tsx +86 -0
  81. package/docs/mdx.server.tsx +37 -0
  82. package/docs/mdx.tsx +97 -0
  83. package/docs/og.tsx +101 -0
  84. package/docs/page.tsx +85 -0
  85. package/docs/provider/base.tsx +173 -0
  86. package/docs/provider/next.tsx +23 -0
  87. package/docs/provider/react-router.tsx +23 -0
  88. package/docs/provider/tanstack.tsx +23 -0
  89. package/docs/provider/waku.tsx +23 -0
  90. package/docs/source.ts +3 -0
  91. package/docs/theme/typography/LICENSE +21 -0
  92. package/docs/theme/typography/index.ts +201 -0
  93. package/docs/theme/typography/styles.ts +449 -0
  94. package/docs/utils/cn.ts +1 -0
  95. package/docs/utils/is-active.ts +23 -0
  96. package/docs/utils/merge-refs.ts +15 -0
  97. package/docs/utils/use-copy-button.ts +39 -0
  98. package/docs/utils/use-footer-items.ts +27 -0
  99. package/docs/utils/use-is-scroll-top.ts +21 -0
  100. package/package.json +4 -2
@@ -0,0 +1,39 @@
1
+ 'use client';
2
+ import {
3
+ type MouseEventHandler,
4
+ useCallback,
5
+ useEffect,
6
+ useRef,
7
+ useState,
8
+ } from 'react';
9
+
10
+ export function useCopyButton(
11
+ onCopy: () => void | Promise<void>,
12
+ ): [checked: boolean, onClick: MouseEventHandler] {
13
+ const [checked, setChecked] = useState(false);
14
+ const callbackRef = useRef(onCopy);
15
+ const timeoutRef = useRef<number | null>(null);
16
+
17
+ callbackRef.current = onCopy;
18
+
19
+ const onClick: MouseEventHandler = useCallback(() => {
20
+ if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
21
+ const res = Promise.resolve(callbackRef.current());
22
+
23
+ void res.then(() => {
24
+ setChecked(true);
25
+ timeoutRef.current = window.setTimeout(() => {
26
+ setChecked(false);
27
+ }, 1500);
28
+ });
29
+ }, []);
30
+
31
+ // Avoid updates after being unmounted
32
+ useEffect(() => {
33
+ return () => {
34
+ if (timeoutRef.current) window.clearTimeout(timeoutRef.current);
35
+ };
36
+ }, []);
37
+
38
+ return [checked, onClick];
39
+ }
@@ -0,0 +1,27 @@
1
+ import { useTreeContext } from '@/contexts/tree';
2
+ import type * as PageTree from '@hanzo/docs-core/page-tree';
3
+
4
+ const footerCache = new Map<string, PageTree.Item[]>();
5
+
6
+ /**
7
+ * @returns a list of page tree items (linear), that you can obtain footer items
8
+ */
9
+ export function useFooterItems(): PageTree.Item[] {
10
+ const { root } = useTreeContext();
11
+ const cached = footerCache.get(root.$id);
12
+ if (cached) return cached;
13
+
14
+ const list: PageTree.Item[] = [];
15
+ function onNode(node: PageTree.Node) {
16
+ if (node.type === 'folder') {
17
+ if (node.index) onNode(node.index);
18
+ for (const child of node.children) onNode(child);
19
+ } else if (node.type === 'page' && !node.external) {
20
+ list.push(node);
21
+ }
22
+ }
23
+
24
+ for (const child of root.children) onNode(child);
25
+ footerCache.set(root.$id, list);
26
+ return list;
27
+ }
@@ -0,0 +1,21 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ export function useIsScrollTop({ enabled = true }: { enabled?: boolean }) {
4
+ const [isTop, setIsTop] = useState<boolean | undefined>();
5
+
6
+ useEffect(() => {
7
+ if (!enabled) return;
8
+
9
+ const listener = () => {
10
+ setIsTop(window.scrollY < 10);
11
+ };
12
+
13
+ listener();
14
+ window.addEventListener('scroll', listener);
15
+ return () => {
16
+ window.removeEventListener('scroll', listener);
17
+ };
18
+ }, [enabled]);
19
+
20
+ return isTop;
21
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "5.3.26",
3
+ "version": "5.3.29",
4
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/",
@@ -15,6 +15,8 @@
15
15
  "sideEffects": false,
16
16
  "files": [
17
17
  "dist",
18
+ "docs",
19
+ "content",
18
20
  "style",
19
21
  "bin",
20
22
  "finance",
@@ -567,7 +569,7 @@
567
569
  }
568
570
  },
569
571
  "dependencies": {
570
- "@hanzo/docs-core": "^16.2.5",
572
+ "@hanzo/docs-core": "^16.2.6",
571
573
  "@dnd-kit/core": "^6.3.1",
572
574
  "@dnd-kit/modifiers": "^9.0.0",
573
575
  "@dnd-kit/sortable": "^10.0.0",