mizu-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/README.md +102 -0
  2. package/dist/composite/Accordion.d.ts +13 -0
  3. package/dist/composite/Accordion.d.ts.map +1 -0
  4. package/dist/composite/Accordion.js +54 -0
  5. package/dist/composite/Accordion.js.map +1 -0
  6. package/dist/composite/Dialog.d.ts +18 -0
  7. package/dist/composite/Dialog.d.ts.map +1 -0
  8. package/dist/composite/Dialog.js +113 -0
  9. package/dist/composite/Dialog.js.map +1 -0
  10. package/dist/composite/Nav.d.ts +13 -0
  11. package/dist/composite/Nav.d.ts.map +1 -0
  12. package/dist/composite/Nav.js +142 -0
  13. package/dist/composite/Nav.js.map +1 -0
  14. package/dist/composite/Tabs.d.ts +24 -0
  15. package/dist/composite/Tabs.d.ts.map +1 -0
  16. package/dist/composite/Tabs.js +53 -0
  17. package/dist/composite/Tabs.js.map +1 -0
  18. package/dist/feedback/CopyButton.d.ts +6 -0
  19. package/dist/feedback/CopyButton.d.ts.map +1 -0
  20. package/dist/feedback/CopyButton.js +50 -0
  21. package/dist/feedback/CopyButton.js.map +1 -0
  22. package/dist/feedback/CountUp.d.ts +10 -0
  23. package/dist/feedback/CountUp.d.ts.map +1 -0
  24. package/dist/feedback/CountUp.js +35 -0
  25. package/dist/feedback/CountUp.js.map +1 -0
  26. package/dist/feedback/Toast.d.ts +14 -0
  27. package/dist/feedback/Toast.d.ts.map +1 -0
  28. package/dist/feedback/Toast.js +61 -0
  29. package/dist/feedback/Toast.js.map +1 -0
  30. package/dist/index.d.ts +31 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +31 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/lab/Pinfield.d.ts +9 -0
  35. package/dist/lab/Pinfield.d.ts.map +1 -0
  36. package/dist/lab/Pinfield.js +100 -0
  37. package/dist/lab/Pinfield.js.map +1 -0
  38. package/dist/lab/RippleSurface.d.ts +6 -0
  39. package/dist/lab/RippleSurface.d.ts.map +1 -0
  40. package/dist/lab/RippleSurface.js +102 -0
  41. package/dist/lab/RippleSurface.js.map +1 -0
  42. package/dist/lab/Signal.d.ts +8 -0
  43. package/dist/lab/Signal.d.ts.map +1 -0
  44. package/dist/lab/Signal.js +101 -0
  45. package/dist/lab/Signal.js.map +1 -0
  46. package/dist/lab/useCanvas.d.ts +3 -0
  47. package/dist/lab/useCanvas.d.ts.map +1 -0
  48. package/dist/lab/useCanvas.js +63 -0
  49. package/dist/lab/useCanvas.js.map +1 -0
  50. package/dist/motion/Magnetic.d.ts +8 -0
  51. package/dist/motion/Magnetic.d.ts.map +1 -0
  52. package/dist/motion/Magnetic.js +22 -0
  53. package/dist/motion/Magnetic.js.map +1 -0
  54. package/dist/motion/Marquee.d.ts +11 -0
  55. package/dist/motion/Marquee.d.ts.map +1 -0
  56. package/dist/motion/Marquee.js +14 -0
  57. package/dist/motion/Marquee.js.map +1 -0
  58. package/dist/motion/MaskLine.d.ts +9 -0
  59. package/dist/motion/MaskLine.d.ts.map +1 -0
  60. package/dist/motion/MaskLine.js +8 -0
  61. package/dist/motion/MaskLine.js.map +1 -0
  62. package/dist/motion/PageWipe.d.ts +10 -0
  63. package/dist/motion/PageWipe.d.ts.map +1 -0
  64. package/dist/motion/PageWipe.js +60 -0
  65. package/dist/motion/PageWipe.js.map +1 -0
  66. package/dist/motion/Reveal.d.ts +12 -0
  67. package/dist/motion/Reveal.d.ts.map +1 -0
  68. package/dist/motion/Reveal.js +8 -0
  69. package/dist/motion/Reveal.js.map +1 -0
  70. package/dist/motion/easings.d.ts +4 -0
  71. package/dist/motion/easings.d.ts.map +1 -0
  72. package/dist/motion/easings.js +4 -0
  73. package/dist/motion/easings.js.map +1 -0
  74. package/dist/type/GhostWord.d.ts +7 -0
  75. package/dist/type/GhostWord.d.ts.map +1 -0
  76. package/dist/type/GhostWord.js +5 -0
  77. package/dist/type/GhostWord.js.map +1 -0
  78. package/dist/type/SoftType.d.ts +11 -0
  79. package/dist/type/SoftType.d.ts.map +1 -0
  80. package/dist/type/SoftType.js +27 -0
  81. package/dist/type/SoftType.js.map +1 -0
  82. package/dist/type/Specimen.d.ts +13 -0
  83. package/dist/type/Specimen.d.ts.map +1 -0
  84. package/dist/type/Specimen.js +82 -0
  85. package/dist/type/Specimen.js.map +1 -0
  86. package/dist/type/WaveText.d.ts +10 -0
  87. package/dist/type/WaveText.d.ts.map +1 -0
  88. package/dist/type/WaveText.js +37 -0
  89. package/dist/type/WaveText.js.map +1 -0
  90. package/dist/ui/Badge.d.ts +10 -0
  91. package/dist/ui/Badge.d.ts.map +1 -0
  92. package/dist/ui/Badge.js +26 -0
  93. package/dist/ui/Badge.js.map +1 -0
  94. package/dist/ui/Button.d.ts +19 -0
  95. package/dist/ui/Button.d.ts.map +1 -0
  96. package/dist/ui/Button.js +47 -0
  97. package/dist/ui/Button.js.map +1 -0
  98. package/dist/ui/Frame.d.ts +9 -0
  99. package/dist/ui/Frame.d.ts.map +1 -0
  100. package/dist/ui/Frame.js +37 -0
  101. package/dist/ui/Frame.js.map +1 -0
  102. package/dist/ui/Mark.d.ts +9 -0
  103. package/dist/ui/Mark.d.ts.map +1 -0
  104. package/dist/ui/Mark.js +19 -0
  105. package/dist/ui/Mark.js.map +1 -0
  106. package/dist/ui/Rule.d.ts +8 -0
  107. package/dist/ui/Rule.d.ts.map +1 -0
  108. package/dist/ui/Rule.js +22 -0
  109. package/dist/ui/Rule.js.map +1 -0
  110. package/dist/ui/SectionTag.d.ts +10 -0
  111. package/dist/ui/SectionTag.d.ts.map +1 -0
  112. package/dist/ui/SectionTag.js +17 -0
  113. package/dist/ui/SectionTag.js.map +1 -0
  114. package/dist/ui/Slider.d.ts +13 -0
  115. package/dist/ui/Slider.d.ts.map +1 -0
  116. package/dist/ui/Slider.js +18 -0
  117. package/dist/ui/Slider.js.map +1 -0
  118. package/dist/ui/Spinner.d.ts +8 -0
  119. package/dist/ui/Spinner.d.ts.map +1 -0
  120. package/dist/ui/Spinner.js +9 -0
  121. package/dist/ui/Spinner.js.map +1 -0
  122. package/dist/ui/Tooltip.d.ts +9 -0
  123. package/dist/ui/Tooltip.d.ts.map +1 -0
  124. package/dist/ui/Tooltip.js +5 -0
  125. package/dist/ui/Tooltip.js.map +1 -0
  126. package/package.json +44 -0
  127. package/styles.css +280 -0
@@ -0,0 +1,50 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef, useState } from "react";
4
+ import { Mark } from "../ui/Mark";
5
+ async function copyText(text) {
6
+ try {
7
+ await navigator.clipboard.writeText(text);
8
+ return true;
9
+ }
10
+ catch {
11
+ try {
12
+ const ta = document.createElement("textarea");
13
+ ta.value = text;
14
+ ta.style.position = "fixed";
15
+ ta.style.opacity = "0";
16
+ document.body.appendChild(ta);
17
+ ta.select();
18
+ document.execCommand("copy");
19
+ document.body.removeChild(ta);
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ }
27
+ export const CopyButton = forwardRef(function CopyButton({ text, feedback = "Copied", className = "", children, ...props }, ref) {
28
+ const [copied, setCopied] = useState(false);
29
+ const onCopy = async () => {
30
+ const ok = await copyText(text);
31
+ setCopied(ok);
32
+ if (ok)
33
+ window.setTimeout(() => setCopied((c) => (c ? false : c)), 1400);
34
+ };
35
+ return (_jsxs("button", { ref: ref, onClick: onCopy, "aria-label": copied ? feedback : `Copy ${text}`, className: className, style: {
36
+ display: "inline-flex",
37
+ alignItems: "center",
38
+ gap: 8,
39
+ background: "transparent",
40
+ border: "none",
41
+ padding: 0,
42
+ fontFamily: "var(--mizu-font-mono)",
43
+ fontSize: 11,
44
+ letterSpacing: "0.12em",
45
+ color: copied ? "var(--mizu-accent)" : "var(--mizu-muted)",
46
+ cursor: "pointer",
47
+ transition: "color 250ms ease",
48
+ }, ...props, children: [copied ? (_jsx("svg", { width: "11", height: "11", viewBox: "0 0 12 12", fill: "none", "aria-hidden": true, children: _jsx("path", { d: "M2 6.5L4.8 9L10 3.5", stroke: "currentColor", strokeWidth: "1.5" }) })) : (_jsx(Mark, { size: 5, tone: copied ? "accent" : "line" })), copied ? feedback : children] }));
49
+ });
50
+ //# sourceMappingURL=CopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.js","sourceRoot":"","sources":["../../src/feedback/CopyButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function CountUp({ value, duration, delay, decimals, prefix, suffix, className, }: {
2
+ value: number;
3
+ duration?: number;
4
+ delay?: number;
5
+ decimals?: number;
6
+ prefix?: string;
7
+ suffix?: string;
8
+ className?: string;
9
+ }): import("react").JSX.Element;
10
+ //# sourceMappingURL=CountUp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountUp.d.ts","sourceRoot":"","sources":["../../src/feedback/CountUp.tsx"],"names":[],"mappings":"AAKA,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,QAAc,EACd,KAAS,EACT,QAAY,EACZ,MAAW,EACX,MAAW,EACX,SAAc,GACf,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAoCA"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ import { jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { useReducedMotion } from "motion/react";
5
+ export function CountUp({ value, duration = 1.2, delay = 0, decimals = 0, prefix = "", suffix = "", className = "", }) {
6
+ const reduce = useReducedMotion();
7
+ const [display, setDisplay] = useState(0);
8
+ const prev = useRef(0);
9
+ useEffect(() => {
10
+ if (reduce)
11
+ return;
12
+ const from = prev.current;
13
+ prev.current = value;
14
+ if (from === value)
15
+ return;
16
+ let raf = 0;
17
+ const start = performance.now() + delay * 1000;
18
+ const tick = (now) => {
19
+ const t = Math.min(1, Math.max(0, (now - start) / (duration * 1000)));
20
+ const e = 1 - Math.pow(1 - t, 4);
21
+ setDisplay(from + (value - from) * e);
22
+ if (t < 1)
23
+ raf = requestAnimationFrame(tick);
24
+ };
25
+ raf = requestAnimationFrame(tick);
26
+ return () => cancelAnimationFrame(raf);
27
+ }, [value, duration, delay, reduce]);
28
+ const shown = reduce ? value : display;
29
+ const formatted = shown.toLocaleString("en-US", {
30
+ minimumFractionDigits: decimals,
31
+ maximumFractionDigits: decimals,
32
+ });
33
+ return (_jsxs("span", { className: className, style: { fontVariantNumeric: "tabular-nums" }, children: [prefix, formatted, suffix] }));
34
+ }
35
+ //# sourceMappingURL=CountUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CountUp.js","sourceRoot":"","sources":["../../src/feedback/CountUp.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,UAAU,OAAO,CAAC,EACtB,KAAK,EACL,QAAQ,GAAG,GAAG,EACd,KAAK,GAAG,CAAC,EACT,QAAQ,GAAG,CAAC,EACZ,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,SAAS,GAAG,EAAE,GASf;IACC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEvB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO;QAC3B,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,UAAU,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC;gBAAE,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC;QACF,GAAG,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAEvC,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;QAC9C,qBAAqB,EAAE,QAAQ;QAC/B,qBAAqB,EAAE,QAAQ;KAChC,CAAC,CAAC;IAEH,OAAO,CACL,gBAAM,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,cAAc,EAAE,aACtE,MAAM,EACN,SAAS,EACT,MAAM,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type ReactNode } from "react";
2
+ export type ToastTone = "default" | "success" | "error";
3
+ type ToastContextValue = {
4
+ toast: (message: string, options?: {
5
+ tone?: ToastTone;
6
+ duration?: number;
7
+ }) => void;
8
+ };
9
+ export declare function useToast(): ToastContextValue;
10
+ export declare function ToastProvider({ children }: {
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/feedback/Toast.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAQxD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrF,CAAC;AAIF,wBAAgB,QAAQ,IAAI,iBAAiB,CAI5C;AAQD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAqFlE"}
@@ -0,0 +1,61 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { createContext, useCallback, useContext, useRef, useState, } from "react";
4
+ import { AnimatePresence, motion } from "motion/react";
5
+ import { EASE_EXPO } from "../motion/easings";
6
+ import { Mark } from "../ui/Mark";
7
+ const ToastContext = createContext(null);
8
+ export function useToast() {
9
+ const ctx = useContext(ToastContext);
10
+ if (!ctx)
11
+ throw new Error("useToast must be used within <ToastProvider>");
12
+ return ctx;
13
+ }
14
+ const TONE_MARK = {
15
+ default: "paper",
16
+ success: "accent",
17
+ error: "accent",
18
+ };
19
+ export function ToastProvider({ children }) {
20
+ const [toasts, setToasts] = useState([]);
21
+ const idRef = useRef(0);
22
+ const dismiss = useCallback((id) => {
23
+ setToasts((ts) => ts.filter((t) => t.id !== id));
24
+ }, []);
25
+ const toast = useCallback((message, options) => {
26
+ const id = ++idRef.current;
27
+ const item = { id, message, tone: options?.tone ?? "default" };
28
+ setToasts((ts) => [...ts.slice(-3), item]);
29
+ const duration = options?.duration ?? 3500;
30
+ window.setTimeout(() => dismiss(id), duration);
31
+ }, [dismiss]);
32
+ return (_jsxs(ToastContext.Provider, { value: { toast }, children: [children, _jsx("div", { "aria-live": "polite", style: {
33
+ position: "fixed",
34
+ bottom: 24,
35
+ left: "50%",
36
+ transform: "translateX(-50%)",
37
+ zIndex: "var(--mizu-z-overlay)",
38
+ display: "flex",
39
+ flexDirection: "column",
40
+ alignItems: "center",
41
+ gap: 10,
42
+ pointerEvents: "none",
43
+ width: "min(92vw, 420px)",
44
+ }, children: _jsx(AnimatePresence, { children: toasts.map((t) => (_jsxs(motion.div, { initial: { opacity: 0, y: 24, scale: 0.96 }, animate: { opacity: 1, y: 0, scale: 1 }, exit: { opacity: 0, y: 12, scale: 0.97 }, transition: { duration: 0.4, ease: EASE_EXPO }, style: {
45
+ display: "flex",
46
+ alignItems: "center",
47
+ gap: 12,
48
+ width: "100%",
49
+ padding: "14px 18px",
50
+ background: "var(--mizu-ink-2)",
51
+ border: "1px solid var(--mizu-line-bright)",
52
+ pointerEvents: "auto",
53
+ }, children: [_jsx(Mark, { size: 5, tone: TONE_MARK[t.tone] }), _jsx("span", { style: {
54
+ flex: 1,
55
+ fontFamily: "var(--mizu-font-mono)",
56
+ fontSize: 11,
57
+ letterSpacing: "0.08em",
58
+ color: "var(--mizu-paper)",
59
+ }, children: t.message }), t.tone === "success" && (_jsx("svg", { width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", "aria-hidden": true, children: _jsx("path", { d: "M2 6.5L4.8 9L10 3.5", stroke: "var(--mizu-accent)", strokeWidth: "1.5" }) })), t.tone === "error" && (_jsx("svg", { width: "11", height: "11", viewBox: "0 0 12 12", fill: "none", "aria-hidden": true, children: _jsx("path", { d: "M2 2L10 10M10 2L2 10", stroke: "var(--mizu-accent)", strokeWidth: "1.5" }) }))] }, t.id))) }) })] }));
60
+ }
61
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/feedback/Toast.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export { Mark, type MarkTone } from "./ui/Mark";
2
+ export { SectionTag, type SectionTagTone } from "./ui/SectionTag";
3
+ export { Rule } from "./ui/Rule";
4
+ export { Badge, type BadgeTone } from "./ui/Badge";
5
+ export { Spinner } from "./ui/Spinner";
6
+ export { Frame } from "./ui/Frame";
7
+ export { Slider } from "./ui/Slider";
8
+ export { Tooltip } from "./ui/Tooltip";
9
+ export { Button, ButtonLink, type ButtonProps, type ButtonLinkProps, type ButtonVariant, type ButtonSize } from "./ui/Button";
10
+ export { Accordion, AccordionItem } from "./composite/Accordion";
11
+ export { Tabs, TabsList, TabsTrigger, TabsPanel } from "./composite/Tabs";
12
+ export { Dialog, DialogTitle, DialogBody, DialogFooter, DialogClose } from "./composite/Dialog";
13
+ export { Nav, type NavLink } from "./composite/Nav";
14
+ export { CountUp } from "./feedback/CountUp";
15
+ export { CopyButton } from "./feedback/CopyButton";
16
+ export { ToastProvider, useToast } from "./feedback/Toast";
17
+ export { Specimen } from "./type/Specimen";
18
+ export { SoftType } from "./type/SoftType";
19
+ export { WaveText } from "./type/WaveText";
20
+ export { GhostWord } from "./type/GhostWord";
21
+ export { useCanvasLoop } from "./lab/useCanvas";
22
+ export { Pinfield } from "./lab/Pinfield";
23
+ export { Signal } from "./lab/Signal";
24
+ export { RippleSurface } from "./lab/RippleSurface";
25
+ export { EASE_EXPO, EASE_WIPE, EASE_SPRING } from "./motion/easings";
26
+ export { MaskLine } from "./motion/MaskLine";
27
+ export { Reveal } from "./motion/Reveal";
28
+ export { Magnetic } from "./motion/Magnetic";
29
+ export { Marquee } from "./motion/Marquee";
30
+ export { PageWipeProvider, usePageWipe } from "./motion/PageWipe";
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9H,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,31 @@
1
+ export { Mark } from "./ui/Mark";
2
+ export { SectionTag } from "./ui/SectionTag";
3
+ export { Rule } from "./ui/Rule";
4
+ export { Badge } from "./ui/Badge";
5
+ export { Spinner } from "./ui/Spinner";
6
+ export { Frame } from "./ui/Frame";
7
+ export { Slider } from "./ui/Slider";
8
+ export { Tooltip } from "./ui/Tooltip";
9
+ export { Button, ButtonLink } from "./ui/Button";
10
+ export { Accordion, AccordionItem } from "./composite/Accordion";
11
+ export { Tabs, TabsList, TabsTrigger, TabsPanel } from "./composite/Tabs";
12
+ export { Dialog, DialogTitle, DialogBody, DialogFooter, DialogClose } from "./composite/Dialog";
13
+ export { Nav } from "./composite/Nav";
14
+ export { CountUp } from "./feedback/CountUp";
15
+ export { CopyButton } from "./feedback/CopyButton";
16
+ export { ToastProvider, useToast } from "./feedback/Toast";
17
+ export { Specimen } from "./type/Specimen";
18
+ export { SoftType } from "./type/SoftType";
19
+ export { WaveText } from "./type/WaveText";
20
+ export { GhostWord } from "./type/GhostWord";
21
+ export { useCanvasLoop } from "./lab/useCanvas";
22
+ export { Pinfield } from "./lab/Pinfield";
23
+ export { Signal } from "./lab/Signal";
24
+ export { RippleSurface } from "./lab/RippleSurface";
25
+ export { EASE_EXPO, EASE_WIPE, EASE_SPRING } from "./motion/easings";
26
+ export { MaskLine } from "./motion/MaskLine";
27
+ export { Reveal } from "./motion/Reveal";
28
+ export { Magnetic } from "./motion/Magnetic";
29
+ export { Marquee } from "./motion/Marquee";
30
+ export { PageWipeProvider, usePageWipe } from "./motion/PageWipe";
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAiB,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,UAAU,EAAuB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+E,MAAM,aAAa,CAAC;AAC9H,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,GAAG,EAAgB,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function Pinfield({ gap, speed, autoPulse, className, style, label, }: {
2
+ gap?: number;
3
+ speed?: number;
4
+ autoPulse?: boolean;
5
+ className?: string;
6
+ style?: React.CSSProperties;
7
+ label?: string;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=Pinfield.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pinfield.d.ts","sourceRoot":"","sources":["../../src/lab/Pinfield.tsx"],"names":[],"mappings":"AAOA,wBAAgB,QAAQ,CAAC,EACvB,GAAQ,EACR,KAAW,EACX,SAAgB,EAChB,SAAc,EACd,KAAK,EACL,KAA+E,GAChF,EAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,+BA6GA"}
@@ -0,0 +1,100 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
+ import { useReducedMotion } from "motion/react";
5
+ export function Pinfield({ gap = 26, speed = 3.4, autoPulse = true, className = "", style, label = "Interactive pinfield. Click to send a pulse through the grid of dots.", }) {
6
+ const canvasRef = useRef(null);
7
+ const reduce = useReducedMotion();
8
+ useEffect(() => {
9
+ const canvas = canvasRef.current;
10
+ if (!canvas)
11
+ return;
12
+ const ctx = canvas.getContext("2d");
13
+ if (!ctx)
14
+ return;
15
+ let raf = 0;
16
+ let running = true;
17
+ let visible = true;
18
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
19
+ let w = 0;
20
+ let h = 0;
21
+ const pulses = [];
22
+ let lastAuto = 0;
23
+ const resize = () => {
24
+ const r = canvas.getBoundingClientRect();
25
+ w = r.width;
26
+ h = r.height;
27
+ canvas.width = Math.round(w * dpr);
28
+ canvas.height = Math.round(h * dpr);
29
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
30
+ };
31
+ const io = new IntersectionObserver(([e]) => {
32
+ if (e)
33
+ visible = e.isIntersecting;
34
+ });
35
+ io.observe(canvas);
36
+ const onDown = (e) => {
37
+ const r = canvas.getBoundingClientRect();
38
+ pulses.push({ x: e.clientX - r.left, y: e.clientY - r.top, age: 0 });
39
+ if (pulses.length > 10)
40
+ pulses.shift();
41
+ };
42
+ const frame = (now) => {
43
+ raf = requestAnimationFrame(frame);
44
+ if (!running || !visible || document.hidden)
45
+ return;
46
+ if (!reduce && autoPulse && now - lastAuto > 3000) {
47
+ lastAuto = now;
48
+ pulses.push({ x: Math.random() * w, y: Math.random() * h, age: 0 });
49
+ }
50
+ ctx.clearRect(0, 0, w, h);
51
+ for (let i = pulses.length - 1; i >= 0; i--) {
52
+ pulses[i].age += 1;
53
+ if (pulses[i].age > 80)
54
+ pulses.splice(i, 1);
55
+ }
56
+ const cols = Math.floor(w / gap);
57
+ const rows = Math.floor(h / gap);
58
+ const ox = (w - cols * gap) / 2 + gap / 2;
59
+ const oy = (h - rows * gap) / 2 + gap / 2;
60
+ for (let r = 0; r <= rows; r++) {
61
+ for (let c = 0; c <= cols; c++) {
62
+ const x = ox + c * gap;
63
+ const y = oy + r * gap;
64
+ let intensity = 0;
65
+ for (const p of pulses) {
66
+ const d = Math.hypot(x - p.x, y - p.y);
67
+ const wave = 1 - Math.abs(d - p.age * speed) / 90;
68
+ const fade = 1 - p.age / 80;
69
+ intensity = Math.max(intensity, wave * fade);
70
+ }
71
+ if (intensity > 0.03) {
72
+ ctx.fillStyle = `rgba(255,77,28,${Math.min(1, intensity)})`;
73
+ ctx.beginPath();
74
+ ctx.arc(x, y, 1.4 + intensity * 2.2, 0, Math.PI * 2);
75
+ ctx.fill();
76
+ }
77
+ else {
78
+ ctx.fillStyle = "rgba(244, 240, 232, 0.16)";
79
+ ctx.beginPath();
80
+ ctx.arc(x, y, 1.4, 0, Math.PI * 2);
81
+ ctx.fill();
82
+ }
83
+ }
84
+ }
85
+ };
86
+ resize();
87
+ window.addEventListener("resize", resize);
88
+ canvas.addEventListener("pointerdown", onDown);
89
+ raf = requestAnimationFrame(frame);
90
+ return () => {
91
+ running = false;
92
+ cancelAnimationFrame(raf);
93
+ io.disconnect();
94
+ window.removeEventListener("resize", resize);
95
+ canvas.removeEventListener("pointerdown", onDown);
96
+ };
97
+ }, [reduce, gap, speed, autoPulse]);
98
+ return (_jsx("canvas", { ref: canvasRef, className: `mizu-canvas-pointer ${className}`, style: style, role: "img", "aria-label": label, tabIndex: 0 }));
99
+ }
100
+ //# sourceMappingURL=Pinfield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pinfield.js","sourceRoot":"","sources":["../../src/lab/Pinfield.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function RippleSurface({ auto, className, style, }: {
2
+ auto?: boolean;
3
+ className?: string;
4
+ style?: React.CSSProperties;
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=RippleSurface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RippleSurface.d.ts","sourceRoot":"","sources":["../../src/lab/RippleSurface.tsx"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,EAC5B,IAAW,EACX,SAAc,EACd,KAAK,GACN,EAAE;IACD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,+BAuGA"}
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
+ import { useReducedMotion } from "motion/react";
5
+ export function RippleSurface({ auto = true, className = "", style, }) {
6
+ const canvasRef = useRef(null);
7
+ const reduce = useReducedMotion();
8
+ useEffect(() => {
9
+ const canvas = canvasRef.current;
10
+ if (!canvas)
11
+ return;
12
+ const ctx = canvas.getContext("2d");
13
+ if (!ctx)
14
+ return;
15
+ let raf = 0;
16
+ let running = true;
17
+ let visible = true;
18
+ const dpr = Math.min(window.devicePixelRatio || 1, 2);
19
+ let w = 0;
20
+ let h = 0;
21
+ const ripples = [];
22
+ const mouse = { x: -9999 };
23
+ let lastAuto = 0;
24
+ const resize = () => {
25
+ const r = canvas.getBoundingClientRect();
26
+ w = r.width;
27
+ h = r.height;
28
+ canvas.width = Math.round(w * dpr);
29
+ canvas.height = Math.round(h * dpr);
30
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
31
+ };
32
+ const io = new IntersectionObserver(([e]) => {
33
+ if (e)
34
+ visible = e.isIntersecting;
35
+ });
36
+ io.observe(canvas);
37
+ const drop = (x, y) => {
38
+ ripples.push({ x, y, r: 4, a: 0.9 });
39
+ if (ripples.length > 24)
40
+ ripples.shift();
41
+ };
42
+ const onPointer = (e) => {
43
+ const r = canvas.getBoundingClientRect();
44
+ const x = e.clientX - r.left;
45
+ const y = e.clientY - r.top;
46
+ mouse.x = x;
47
+ if (e.type === "pointerdown")
48
+ drop(x, y);
49
+ };
50
+ const frame = (now) => {
51
+ raf = requestAnimationFrame(frame);
52
+ if (!running || !visible || document.hidden)
53
+ return;
54
+ if (!reduce && auto && now - lastAuto > 2600) {
55
+ lastAuto = now;
56
+ drop(Math.random() * w, Math.random() * h);
57
+ }
58
+ ctx.clearRect(0, 0, w, h);
59
+ if (mouse.x > 0) {
60
+ const grad = ctx.createLinearGradient(mouse.x - 70, 0, mouse.x + 70, 0);
61
+ grad.addColorStop(0, "rgba(244, 240, 232, 0)");
62
+ grad.addColorStop(0.5, "rgba(244, 240, 232, 0.05)");
63
+ grad.addColorStop(1, "rgba(244, 240, 232, 0)");
64
+ ctx.fillStyle = grad;
65
+ ctx.fillRect(mouse.x - 70, 0, 140, h);
66
+ }
67
+ for (let i = ripples.length - 1; i >= 0; i--) {
68
+ const rp = ripples[i];
69
+ rp.r += 2.4;
70
+ rp.a -= 0.0075;
71
+ if (rp.a <= 0) {
72
+ ripples.splice(i, 1);
73
+ continue;
74
+ }
75
+ ctx.strokeStyle = `rgba(255,77,28,${rp.a})`;
76
+ ctx.lineWidth = 1;
77
+ ctx.beginPath();
78
+ ctx.arc(rp.x, rp.y, rp.r, 0, Math.PI * 2);
79
+ ctx.stroke();
80
+ ctx.strokeStyle = `rgba(255,77,28,${rp.a * 0.35})`;
81
+ ctx.beginPath();
82
+ ctx.arc(rp.x, rp.y, rp.r * 0.6, 0, Math.PI * 2);
83
+ ctx.stroke();
84
+ }
85
+ };
86
+ resize();
87
+ window.addEventListener("resize", resize);
88
+ canvas.addEventListener("pointermove", onPointer);
89
+ canvas.addEventListener("pointerdown", onPointer);
90
+ raf = requestAnimationFrame(frame);
91
+ return () => {
92
+ running = false;
93
+ cancelAnimationFrame(raf);
94
+ io.disconnect();
95
+ window.removeEventListener("resize", resize);
96
+ canvas.removeEventListener("pointermove", onPointer);
97
+ canvas.removeEventListener("pointerdown", onPointer);
98
+ };
99
+ }, [reduce, auto]);
100
+ return _jsx("canvas", { ref: canvasRef, className: className, style: style, "aria-hidden": "true" });
101
+ }
102
+ //# sourceMappingURL=RippleSurface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RippleSurface.js","sourceRoot":"","sources":["../../src/lab/RippleSurface.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function Signal({ density, speed, className, style, label, }: {
2
+ density?: number;
3
+ speed?: number;
4
+ className?: string;
5
+ style?: React.CSSProperties;
6
+ label?: string;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=Signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Signal.d.ts","sourceRoot":"","sources":["../../src/lab/Signal.tsx"],"names":[],"mappings":"AAKA,wBAAgB,MAAM,CAAC,EACrB,OAAY,EACZ,KAAS,EACT,SAAc,EACd,KAAK,EACL,KAAiG,GAClG,EAAE;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,+BA8GA"}