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.
- package/README.md +102 -0
- package/dist/composite/Accordion.d.ts +13 -0
- package/dist/composite/Accordion.d.ts.map +1 -0
- package/dist/composite/Accordion.js +54 -0
- package/dist/composite/Accordion.js.map +1 -0
- package/dist/composite/Dialog.d.ts +18 -0
- package/dist/composite/Dialog.d.ts.map +1 -0
- package/dist/composite/Dialog.js +113 -0
- package/dist/composite/Dialog.js.map +1 -0
- package/dist/composite/Nav.d.ts +13 -0
- package/dist/composite/Nav.d.ts.map +1 -0
- package/dist/composite/Nav.js +142 -0
- package/dist/composite/Nav.js.map +1 -0
- package/dist/composite/Tabs.d.ts +24 -0
- package/dist/composite/Tabs.d.ts.map +1 -0
- package/dist/composite/Tabs.js +53 -0
- package/dist/composite/Tabs.js.map +1 -0
- package/dist/feedback/CopyButton.d.ts +6 -0
- package/dist/feedback/CopyButton.d.ts.map +1 -0
- package/dist/feedback/CopyButton.js +50 -0
- package/dist/feedback/CopyButton.js.map +1 -0
- package/dist/feedback/CountUp.d.ts +10 -0
- package/dist/feedback/CountUp.d.ts.map +1 -0
- package/dist/feedback/CountUp.js +35 -0
- package/dist/feedback/CountUp.js.map +1 -0
- package/dist/feedback/Toast.d.ts +14 -0
- package/dist/feedback/Toast.d.ts.map +1 -0
- package/dist/feedback/Toast.js +61 -0
- package/dist/feedback/Toast.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/lab/Pinfield.d.ts +9 -0
- package/dist/lab/Pinfield.d.ts.map +1 -0
- package/dist/lab/Pinfield.js +100 -0
- package/dist/lab/Pinfield.js.map +1 -0
- package/dist/lab/RippleSurface.d.ts +6 -0
- package/dist/lab/RippleSurface.d.ts.map +1 -0
- package/dist/lab/RippleSurface.js +102 -0
- package/dist/lab/RippleSurface.js.map +1 -0
- package/dist/lab/Signal.d.ts +8 -0
- package/dist/lab/Signal.d.ts.map +1 -0
- package/dist/lab/Signal.js +101 -0
- package/dist/lab/Signal.js.map +1 -0
- package/dist/lab/useCanvas.d.ts +3 -0
- package/dist/lab/useCanvas.d.ts.map +1 -0
- package/dist/lab/useCanvas.js +63 -0
- package/dist/lab/useCanvas.js.map +1 -0
- package/dist/motion/Magnetic.d.ts +8 -0
- package/dist/motion/Magnetic.d.ts.map +1 -0
- package/dist/motion/Magnetic.js +22 -0
- package/dist/motion/Magnetic.js.map +1 -0
- package/dist/motion/Marquee.d.ts +11 -0
- package/dist/motion/Marquee.d.ts.map +1 -0
- package/dist/motion/Marquee.js +14 -0
- package/dist/motion/Marquee.js.map +1 -0
- package/dist/motion/MaskLine.d.ts +9 -0
- package/dist/motion/MaskLine.d.ts.map +1 -0
- package/dist/motion/MaskLine.js +8 -0
- package/dist/motion/MaskLine.js.map +1 -0
- package/dist/motion/PageWipe.d.ts +10 -0
- package/dist/motion/PageWipe.d.ts.map +1 -0
- package/dist/motion/PageWipe.js +60 -0
- package/dist/motion/PageWipe.js.map +1 -0
- package/dist/motion/Reveal.d.ts +12 -0
- package/dist/motion/Reveal.d.ts.map +1 -0
- package/dist/motion/Reveal.js +8 -0
- package/dist/motion/Reveal.js.map +1 -0
- package/dist/motion/easings.d.ts +4 -0
- package/dist/motion/easings.d.ts.map +1 -0
- package/dist/motion/easings.js +4 -0
- package/dist/motion/easings.js.map +1 -0
- package/dist/type/GhostWord.d.ts +7 -0
- package/dist/type/GhostWord.d.ts.map +1 -0
- package/dist/type/GhostWord.js +5 -0
- package/dist/type/GhostWord.js.map +1 -0
- package/dist/type/SoftType.d.ts +11 -0
- package/dist/type/SoftType.d.ts.map +1 -0
- package/dist/type/SoftType.js +27 -0
- package/dist/type/SoftType.js.map +1 -0
- package/dist/type/Specimen.d.ts +13 -0
- package/dist/type/Specimen.d.ts.map +1 -0
- package/dist/type/Specimen.js +82 -0
- package/dist/type/Specimen.js.map +1 -0
- package/dist/type/WaveText.d.ts +10 -0
- package/dist/type/WaveText.d.ts.map +1 -0
- package/dist/type/WaveText.js +37 -0
- package/dist/type/WaveText.js.map +1 -0
- package/dist/ui/Badge.d.ts +10 -0
- package/dist/ui/Badge.d.ts.map +1 -0
- package/dist/ui/Badge.js +26 -0
- package/dist/ui/Badge.js.map +1 -0
- package/dist/ui/Button.d.ts +19 -0
- package/dist/ui/Button.d.ts.map +1 -0
- package/dist/ui/Button.js +47 -0
- package/dist/ui/Button.js.map +1 -0
- package/dist/ui/Frame.d.ts +9 -0
- package/dist/ui/Frame.d.ts.map +1 -0
- package/dist/ui/Frame.js +37 -0
- package/dist/ui/Frame.js.map +1 -0
- package/dist/ui/Mark.d.ts +9 -0
- package/dist/ui/Mark.d.ts.map +1 -0
- package/dist/ui/Mark.js +19 -0
- package/dist/ui/Mark.js.map +1 -0
- package/dist/ui/Rule.d.ts +8 -0
- package/dist/ui/Rule.d.ts.map +1 -0
- package/dist/ui/Rule.js +22 -0
- package/dist/ui/Rule.js.map +1 -0
- package/dist/ui/SectionTag.d.ts +10 -0
- package/dist/ui/SectionTag.d.ts.map +1 -0
- package/dist/ui/SectionTag.js +17 -0
- package/dist/ui/SectionTag.js.map +1 -0
- package/dist/ui/Slider.d.ts +13 -0
- package/dist/ui/Slider.d.ts.map +1 -0
- package/dist/ui/Slider.js +18 -0
- package/dist/ui/Slider.js.map +1 -0
- package/dist/ui/Spinner.d.ts +8 -0
- package/dist/ui/Spinner.d.ts.map +1 -0
- package/dist/ui/Spinner.js +9 -0
- package/dist/ui/Spinner.js.map +1 -0
- package/dist/ui/Tooltip.d.ts +9 -0
- package/dist/ui/Tooltip.d.ts.map +1 -0
- package/dist/ui/Tooltip.js +5 -0
- package/dist/ui/Tooltip.js.map +1 -0
- package/package.json +44 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|