@enact-ui/backgrounds 0.1.1 → 0.2.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/api-schema.json +49 -0
- package/dist/components/background-paths.d.ts.map +1 -1
- package/dist/components/background-paths.demo.d.ts +6 -0
- package/dist/components/background-paths.demo.d.ts.map +1 -0
- package/dist/components/background-paths.demo.js +9 -0
- package/dist/components/background-paths.demo.js.map +1 -0
- package/dist/components/background-paths.js +2 -3
- package/dist/components/background-paths.js.map +1 -1
- package/dist/components/background-paths.story.d.ts.map +1 -1
- package/dist/components/background-paths.story.js +6 -18
- package/dist/components/background-paths.story.js.map +1 -1
- package/dist/components/light-rays.d.ts.map +1 -1
- package/dist/components/light-rays.demo.d.ts +8 -0
- package/dist/components/light-rays.demo.d.ts.map +1 -0
- package/dist/components/light-rays.demo.js +11 -0
- package/dist/components/light-rays.demo.js.map +1 -0
- package/dist/components/light-rays.js +0 -1
- package/dist/components/light-rays.js.map +1 -1
- package/dist/components/light-rays.story.d.ts.map +1 -1
- package/dist/components/light-rays.story.js +9 -43
- package/dist/components/light-rays.story.js.map +1 -1
- package/dist/components/liquid-glass-background.d.ts.map +1 -1
- package/dist/components/liquid-glass-background.js +0 -1
- package/dist/components/liquid-glass-background.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -4
package/api-schema.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"package": "@enact-ui/backgrounds",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"extractedAt": "2026-01-04T19:10:38.253Z",
|
|
5
|
+
"components": {
|
|
6
|
+
"LightRays": {
|
|
7
|
+
"name": "LightRays",
|
|
8
|
+
"props": {
|
|
9
|
+
"preset": {
|
|
10
|
+
"name": "preset",
|
|
11
|
+
"type": "MotionPreset",
|
|
12
|
+
"required": true
|
|
13
|
+
},
|
|
14
|
+
"count": {
|
|
15
|
+
"name": "count",
|
|
16
|
+
"type": "number",
|
|
17
|
+
"required": false
|
|
18
|
+
},
|
|
19
|
+
"color": {
|
|
20
|
+
"name": "color",
|
|
21
|
+
"type": "string",
|
|
22
|
+
"required": false
|
|
23
|
+
},
|
|
24
|
+
"blur": {
|
|
25
|
+
"name": "blur",
|
|
26
|
+
"type": "number",
|
|
27
|
+
"required": false
|
|
28
|
+
},
|
|
29
|
+
"length": {
|
|
30
|
+
"name": "length",
|
|
31
|
+
"type": "string",
|
|
32
|
+
"required": false
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"sourceFile": "src/components/light-rays.tsx"
|
|
36
|
+
},
|
|
37
|
+
"BackgroundPaths": {
|
|
38
|
+
"name": "BackgroundPaths",
|
|
39
|
+
"props": {
|
|
40
|
+
"preset": {
|
|
41
|
+
"name": "preset",
|
|
42
|
+
"type": "MotionPreset",
|
|
43
|
+
"required": true
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"sourceFile": "src/components/background-paths.tsx"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-paths.d.ts","sourceRoot":"","sources":["../../src/components/background-paths.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"background-paths.d.ts","sourceRoot":"","sources":["../../src/components/background-paths.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AAiFzC,MAAM,WAAW,oBAAoB;IACjC,wEAAwE;IACxE,MAAM,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAyBpD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const Slow: () => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const Medium: () => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare const Fast: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare const WithDarkBackground: () => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=background-paths.demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-paths.demo.d.ts","sourceRoot":"","sources":["../../src/components/background-paths.demo.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,+CAA4C,CAAC;AAEjE,eAAO,MAAM,IAAI,+CAA0C,CAAC;AAE5D,eAAO,MAAM,MAAM,+CAA4C,CAAC;AAEhE,eAAO,MAAM,IAAI,+CAA0C,CAAC;AAE5D,eAAO,MAAM,kBAAkB,+CAI9B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { BackgroundPaths } from "./background-paths";
|
|
4
|
+
export const Default = () => _jsx(BackgroundPaths, { preset: "medium" });
|
|
5
|
+
export const Slow = () => _jsx(BackgroundPaths, { preset: "slow" });
|
|
6
|
+
export const Medium = () => _jsx(BackgroundPaths, { preset: "medium" });
|
|
7
|
+
export const Fast = () => _jsx(BackgroundPaths, { preset: "fast" });
|
|
8
|
+
export const WithDarkBackground = () => (_jsx("div", { className: "relative h-screen w-full bg-surface-base", children: _jsx(BackgroundPaths, { preset: "medium" }) }));
|
|
9
|
+
//# sourceMappingURL=background-paths.demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"background-paths.demo.js","sourceRoot":"","sources":["../../src/components/background-paths.demo.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAC,eAAe,IAAC,MAAM,EAAC,QAAQ,GAAG,CAAC;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAC,eAAe,IAAC,MAAM,EAAC,MAAM,GAAG,CAAC;AAE5D,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAC,eAAe,IAAC,MAAM,EAAC,QAAQ,GAAG,CAAC;AAEhE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAC,eAAe,IAAC,MAAM,EAAC,MAAM,GAAG,CAAC;AAE5D,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,CACpC,cAAK,SAAS,EAAC,0CAA0C,YACrD,KAAC,eAAe,IAAC,MAAM,EAAC,QAAQ,GAAG,GACjC,CACT,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// Copyright (c) 2025 Amsterdam Data Labs
|
|
2
1
|
"use client";
|
|
3
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
3
|
import { useMotionPreset } from "@enact-ui/animate";
|
|
@@ -19,9 +18,9 @@ function FloatingPaths({ position, baseDuration, opacity, ease, durationVariatio
|
|
|
19
18
|
}), [position]);
|
|
20
19
|
// If reduced motion is preferred, render static paths
|
|
21
20
|
if (prefersReducedMotion) {
|
|
22
|
-
return (_jsx("div", { className: "pointer-events-none absolute inset-0", children: _jsxs("svg", { className: "text-
|
|
21
|
+
return (_jsx("div", { className: "pointer-events-none absolute inset-0", children: _jsxs("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [_jsx("title", { children: "Background Paths" }), paths.map((path) => (_jsx("path", { d: path.d, stroke: "currentColor", strokeWidth: path.width, strokeOpacity: opacity[1] }, path.id)))] }) }));
|
|
23
22
|
}
|
|
24
|
-
return (_jsx("div", { className: "pointer-events-none absolute inset-0", children: _jsxs("svg", { className: "text-
|
|
23
|
+
return (_jsx("div", { className: "pointer-events-none absolute inset-0", children: _jsxs("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [_jsx("title", { children: "Background Paths" }), paths.map((path) => {
|
|
25
24
|
// Calculate duration with preset-based variation
|
|
26
25
|
const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;
|
|
27
26
|
return (_jsx(motion.path, { d: path.d, stroke: "currentColor", strokeWidth: path.width, strokeOpacity: 0.1 + path.id * 0.03, initial: { pathLength: 0.3, opacity: opacity[0] }, animate: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-paths.js","sourceRoot":"","sources":["../../src/components/background-paths.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"background-paths.js","sourceRoot":"","sources":["../../src/components/background-paths.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAqB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAW,OAAO,EAAE,MAAM,OAAO,CAAC;AAWzC,SAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,oBAAoB,EAAsB;IACzH,mFAAmF;IACnF,MAAM,KAAK,GAAG,OAAO,CACjB,GAAG,EAAE,CACD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,6CAA6C;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,OAAO;YACH,EAAE,EAAE,CAAC;YACL,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAC/H,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAClB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IACpD,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAClB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;YAC1D,KAAK,EAAE,iBAAiB,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG;YACzC,KAAK,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI;YACrB,cAAc;SACjB,CAAC;IACN,CAAC,CAAC,EACN,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,sDAAsD;IACtD,IAAI,oBAAoB,EAAE,CAAC;QACvB,OAAO,CACH,cAAK,SAAS,EAAC,sCAAsC,YACjD,eAAK,SAAS,EAAC,qCAAqC,EAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aACrG,+CAA+B,EAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACjB,eAAoB,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAC,cAAc,EAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,IAA5F,IAAI,CAAC,EAAE,CAAyF,CAC9G,CAAC,IACA,GACJ,CACT,CAAC;IACN,CAAC;IAED,OAAO,CACH,cAAK,SAAS,EAAC,sCAAsC,YACjD,eAAK,SAAS,EAAC,qCAAqC,EAAC,OAAO,EAAC,aAAa,EAAC,IAAI,EAAC,MAAM,iBAAa,MAAM,aACrG,+CAA+B,EAC9B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBAChB,iDAAiD;oBACjD,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;oBAEvF,OAAO,CACH,KAAC,MAAM,CAAC,IAAI,IAER,CAAC,EAAE,IAAI,CAAC,CAAC,EACT,MAAM,EAAC,cAAc,EACrB,WAAW,EAAE,IAAI,CAAC,KAAK,EACvB,aAAa,EAAE,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,EACnC,OAAO,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EACjD,OAAO,EAAE;4BACL,UAAU,EAAE,CAAC;4BACb,OAAO,EAAE,OAAO;4BAChB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;yBACxB,EACD,UAAU,EAAE;4BACR,QAAQ;4BACR,MAAM,EAAE,MAAM,CAAC,iBAAiB;4BAChC,IAAI;yBACP,IAfI,IAAI,CAAC,EAAE,CAgBd,CACL,CAAC;gBACN,CAAC,CAAC,IACA,GACJ,CACT,CAAC;AACN,CAAC;AAOD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACpE,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEtD,OAAO,CACH,cAAK,SAAS,EAAC,6FAA6F,iBAAa,MAAM,YAC3H,eAAK,SAAS,EAAC,kBAAkB,aAC7B,KAAC,aAAa,IACV,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,YAAY,CAAC,YAAY,EACvC,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,EACjD,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,GACzD,EACF,KAAC,aAAa,IACV,QAAQ,EAAE,CAAC,CAAC,EACZ,YAAY,EAAE,YAAY,CAAC,YAAY,EACvC,OAAO,EAAE,YAAY,CAAC,OAAO,EAC7B,IAAI,EAAE,YAAY,CAAC,IAAI,EACvB,iBAAiB,EAAE,YAAY,CAAC,iBAAiB,EACjD,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,GACzD,IACA,GACJ,CACT,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-paths.story.d.ts","sourceRoot":"","sources":["../../src/components/background-paths.story.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"background-paths.story.d.ts","sourceRoot":"","sources":["../../src/components/background-paths.story.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAmB,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAuBpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE5C,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KASlB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KASpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KASlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAShC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { BackgroundPaths } from "./background-paths";
|
|
3
|
+
import * as BackgroundPathsDemos from "./background-paths.demo";
|
|
3
4
|
const meta = {
|
|
4
5
|
title: "Backgrounds/BackgroundPaths",
|
|
5
6
|
component: BackgroundPaths,
|
|
@@ -22,14 +23,10 @@ const meta = {
|
|
|
22
23
|
};
|
|
23
24
|
export default meta;
|
|
24
25
|
export const Default = {
|
|
25
|
-
|
|
26
|
-
preset: "medium",
|
|
27
|
-
},
|
|
26
|
+
render: () => _jsx(BackgroundPathsDemos.Default, {}),
|
|
28
27
|
};
|
|
29
28
|
export const Slow = {
|
|
30
|
-
|
|
31
|
-
preset: "slow",
|
|
32
|
-
},
|
|
29
|
+
render: () => _jsx(BackgroundPathsDemos.Slow, {}),
|
|
33
30
|
parameters: {
|
|
34
31
|
docs: {
|
|
35
32
|
description: {
|
|
@@ -39,9 +36,7 @@ export const Slow = {
|
|
|
39
36
|
},
|
|
40
37
|
};
|
|
41
38
|
export const Medium = {
|
|
42
|
-
|
|
43
|
-
preset: "medium",
|
|
44
|
-
},
|
|
39
|
+
render: () => _jsx(BackgroundPathsDemos.Medium, {}),
|
|
45
40
|
parameters: {
|
|
46
41
|
docs: {
|
|
47
42
|
description: {
|
|
@@ -51,9 +46,7 @@ export const Medium = {
|
|
|
51
46
|
},
|
|
52
47
|
};
|
|
53
48
|
export const Fast = {
|
|
54
|
-
|
|
55
|
-
preset: "fast",
|
|
56
|
-
},
|
|
49
|
+
render: () => _jsx(BackgroundPathsDemos.Fast, {}),
|
|
57
50
|
parameters: {
|
|
58
51
|
docs: {
|
|
59
52
|
description: {
|
|
@@ -63,12 +56,7 @@ export const Fast = {
|
|
|
63
56
|
},
|
|
64
57
|
};
|
|
65
58
|
export const WithDarkBackground = {
|
|
66
|
-
|
|
67
|
-
preset: "medium",
|
|
68
|
-
},
|
|
69
|
-
decorators: [
|
|
70
|
-
(Story) => (_jsx("div", { className: "relative h-screen w-full bg-gray-900", children: _jsx(Story, {}) })),
|
|
71
|
-
],
|
|
59
|
+
render: () => _jsx(BackgroundPathsDemos.WithDarkBackground, {}),
|
|
72
60
|
parameters: {
|
|
73
61
|
docs: {
|
|
74
62
|
description: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background-paths.story.js","sourceRoot":"","sources":["../../src/components/background-paths.story.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"background-paths.story.js","sourceRoot":"","sources":["../../src/components/background-paths.story.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAA6B,MAAM,oBAAoB,CAAC;AAChF,OAAO,KAAK,oBAAoB,MAAM,yBAAyB,CAAC;AAEhE,MAAM,IAAI,GAA+B;IACrC,KAAK,EAAE,6BAA6B;IACpC,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE;QACR,MAAM,EAAE,YAAY;KACvB;IACD,UAAU,EAAE;QACR,CAAC,KAAK,EAAE,EAAE,CAAC,CACP,cAAK,SAAS,EAAC,wCAAwC,YACnD,KAAC,KAAK,KAAG,GACP,CACT;KACJ;IACD,QAAQ,EAAE;QACN,MAAM,EAAE;YACJ,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;YACnC,WAAW,EAAE,iEAAiE;YAC9E,KAAK,EAAE;gBACH,IAAI,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE;aAClD;SACJ;KACJ;CACJ,CAAC;AAEF,eAAe,IAAI,CAAC;AAGpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,CAAC,OAAO,KAAG;CACjD,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAU;IACvB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,CAAC,IAAI,KAAG;IAC3C,UAAU,EAAE;QACR,IAAI,EAAE;YACF,WAAW,EAAE;gBACT,KAAK,EAAE,4GAA4G;aACtH;SACJ;KACJ;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAU;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,CAAC,MAAM,KAAG;IAC7C,UAAU,EAAE;QACR,IAAI,EAAE;YACF,WAAW,EAAE;gBACT,KAAK,EAAE,iHAAiH;aAC3H;SACJ;KACJ;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAU;IACvB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,CAAC,IAAI,KAAG;IAC3C,UAAU,EAAE;QACR,IAAI,EAAE;YACF,WAAW,EAAE;gBACT,KAAK,EAAE,0GAA0G;aACpH;SACJ;KACJ;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAU;IACrC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,oBAAoB,CAAC,kBAAkB,KAAG;IACzD,UAAU,EAAE;QACR,IAAI,EAAE;YACF,WAAW,EAAE;gBACT,KAAK,EAAE,qEAAqE;aAC/E;SACJ;KACJ;CACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-rays.d.ts","sourceRoot":"","sources":["../../src/components/light-rays.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"light-rays.d.ts","sourceRoot":"","sources":["../../src/components/light-rays.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAsB,KAAK,EAAE,EAAW,MAAM,OAAO,CAAC;AAE7D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,wEAAwE;IACxE,MAAM,EAAE,YAAY,CAAC;IACrB,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AA6FD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA8DxC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const Default: () => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const Slow: () => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const Medium: () => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare const Fast: () => import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare const WarmColors: () => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare const CoolColors: () => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare const IntenseRays: () => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=light-rays.demo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light-rays.demo.d.ts","sourceRoot":"","sources":["../../src/components/light-rays.demo.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,+CAAyG,CAAC;AAE9H,eAAO,MAAM,IAAI,+CAA8C,CAAC;AAEhE,eAAO,MAAM,MAAM,+CAAgD,CAAC;AAEpE,eAAO,MAAM,IAAI,+CAA8C,CAAC;AAEhE,eAAO,MAAM,UAAU,+CAA4F,CAAC;AAEpH,eAAO,MAAM,UAAU,+CAAuG,CAAC;AAE/H,eAAO,MAAM,WAAW,+CAIvB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { LightRays } from "./light-rays";
|
|
4
|
+
export const Default = () => _jsx(LightRays, { preset: "medium", count: 7, color: "rgba(160, 210, 255, 0.2)", blur: 36, length: "70vh" });
|
|
5
|
+
export const Slow = () => _jsx(LightRays, { preset: "slow", count: 5 });
|
|
6
|
+
export const Medium = () => _jsx(LightRays, { preset: "medium", count: 7 });
|
|
7
|
+
export const Fast = () => _jsx(LightRays, { preset: "fast", count: 9 });
|
|
8
|
+
export const WarmColors = () => _jsx(LightRays, { preset: "medium", count: 7, color: "rgba(255, 180, 120, 0.25)", blur: 40 });
|
|
9
|
+
export const CoolColors = () => _jsx(LightRays, { preset: "slow", count: 6, color: "rgba(100, 200, 255, 0.3)", blur: 48, length: "80vh" });
|
|
10
|
+
export const IntenseRays = () => (_jsx("div", { className: "relative h-screen w-full bg-surface-base", children: _jsx(LightRays, { preset: "fast", count: 12, color: "rgba(200, 220, 255, 0.35)", blur: 24, length: "90vh" }) }));
|
|
11
|
+
//# sourceMappingURL=light-rays.demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"light-rays.demo.js","sourceRoot":"","sources":["../../src/components/light-rays.demo.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAC,0BAA0B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,GAAG,CAAC;AAE9H,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,GAAI,CAAC;AAEhE,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,GAAI,CAAC;AAEpE,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,GAAI,CAAC;AAEhE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAE,EAAE,GAAI,CAAC;AAEpH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,KAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAC,0BAA0B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,GAAG,CAAC;AAE/H,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CAC7B,cAAK,SAAS,EAAC,0CAA0C,YACrD,KAAC,SAAS,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAC,2BAA2B,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,GAAG,GAC9F,CACT,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-rays.js","sourceRoot":"","sources":["../../src/components/light-rays.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"light-rays.js","sourceRoot":"","sources":["../../src/components/light-rays.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-rays.story.d.ts","sourceRoot":"","sources":["../../src/components/light-rays.story.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"light-rays.story.d.ts","sourceRoot":"","sources":["../../src/components/light-rays.story.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,cAAc,CAmD9B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;AAEtC,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KASlB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KASpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KASlB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { LightRays } from "./light-rays";
|
|
3
|
+
import * as LightRaysDemos from "./light-rays.demo";
|
|
3
4
|
const meta = {
|
|
4
5
|
title: "Backgrounds/LightRays",
|
|
5
6
|
component: LightRays,
|
|
@@ -7,7 +8,7 @@ const meta = {
|
|
|
7
8
|
layout: "fullscreen",
|
|
8
9
|
},
|
|
9
10
|
decorators: [
|
|
10
|
-
(Story) => (_jsx("div", { className: "relative h-screen w-full bg-
|
|
11
|
+
(Story) => (_jsx("div", { className: "relative h-screen w-full bg-surface-base", children: _jsx(Story, {}) })),
|
|
11
12
|
],
|
|
12
13
|
argTypes: {
|
|
13
14
|
preset: {
|
|
@@ -50,19 +51,10 @@ const meta = {
|
|
|
50
51
|
};
|
|
51
52
|
export default meta;
|
|
52
53
|
export const Default = {
|
|
53
|
-
|
|
54
|
-
preset: "medium",
|
|
55
|
-
count: 7,
|
|
56
|
-
color: "rgba(160, 210, 255, 0.2)",
|
|
57
|
-
blur: 36,
|
|
58
|
-
length: "70vh",
|
|
59
|
-
},
|
|
54
|
+
render: () => _jsx(LightRaysDemos.Default, {}),
|
|
60
55
|
};
|
|
61
56
|
export const Slow = {
|
|
62
|
-
|
|
63
|
-
preset: "slow",
|
|
64
|
-
count: 5,
|
|
65
|
-
},
|
|
57
|
+
render: () => _jsx(LightRaysDemos.Slow, {}),
|
|
66
58
|
parameters: {
|
|
67
59
|
docs: {
|
|
68
60
|
description: {
|
|
@@ -72,10 +64,7 @@ export const Slow = {
|
|
|
72
64
|
},
|
|
73
65
|
};
|
|
74
66
|
export const Medium = {
|
|
75
|
-
|
|
76
|
-
preset: "medium",
|
|
77
|
-
count: 7,
|
|
78
|
-
},
|
|
67
|
+
render: () => _jsx(LightRaysDemos.Medium, {}),
|
|
79
68
|
parameters: {
|
|
80
69
|
docs: {
|
|
81
70
|
description: {
|
|
@@ -85,10 +74,7 @@ export const Medium = {
|
|
|
85
74
|
},
|
|
86
75
|
};
|
|
87
76
|
export const Fast = {
|
|
88
|
-
|
|
89
|
-
preset: "fast",
|
|
90
|
-
count: 9,
|
|
91
|
-
},
|
|
77
|
+
render: () => _jsx(LightRaysDemos.Fast, {}),
|
|
92
78
|
parameters: {
|
|
93
79
|
docs: {
|
|
94
80
|
description: {
|
|
@@ -98,12 +84,7 @@ export const Fast = {
|
|
|
98
84
|
},
|
|
99
85
|
};
|
|
100
86
|
export const WarmColors = {
|
|
101
|
-
|
|
102
|
-
preset: "medium",
|
|
103
|
-
count: 7,
|
|
104
|
-
color: "rgba(255, 180, 120, 0.25)",
|
|
105
|
-
blur: 40,
|
|
106
|
-
},
|
|
87
|
+
render: () => _jsx(LightRaysDemos.WarmColors, {}),
|
|
107
88
|
parameters: {
|
|
108
89
|
docs: {
|
|
109
90
|
description: {
|
|
@@ -113,13 +94,7 @@ export const WarmColors = {
|
|
|
113
94
|
},
|
|
114
95
|
};
|
|
115
96
|
export const CoolColors = {
|
|
116
|
-
|
|
117
|
-
preset: "slow",
|
|
118
|
-
count: 6,
|
|
119
|
-
color: "rgba(100, 200, 255, 0.3)",
|
|
120
|
-
blur: 48,
|
|
121
|
-
length: "80vh",
|
|
122
|
-
},
|
|
97
|
+
render: () => _jsx(LightRaysDemos.CoolColors, {}),
|
|
123
98
|
parameters: {
|
|
124
99
|
docs: {
|
|
125
100
|
description: {
|
|
@@ -129,16 +104,7 @@ export const CoolColors = {
|
|
|
129
104
|
},
|
|
130
105
|
};
|
|
131
106
|
export const IntenseRays = {
|
|
132
|
-
|
|
133
|
-
preset: "fast",
|
|
134
|
-
count: 12,
|
|
135
|
-
color: "rgba(200, 220, 255, 0.35)",
|
|
136
|
-
blur: 24,
|
|
137
|
-
length: "90vh",
|
|
138
|
-
},
|
|
139
|
-
decorators: [
|
|
140
|
-
(Story) => (_jsx("div", { className: "relative h-screen w-full bg-black", children: _jsx(Story, {}) })),
|
|
141
|
-
],
|
|
107
|
+
render: () => _jsx(LightRaysDemos.IntenseRays, {}),
|
|
142
108
|
parameters: {
|
|
143
109
|
docs: {
|
|
144
110
|
description: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-rays.story.js","sourceRoot":"","sources":["../../src/components/light-rays.story.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"light-rays.story.js","sourceRoot":"","sources":["../../src/components/light-rays.story.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquid-glass-background.d.ts","sourceRoot":"","sources":["../../src/components/liquid-glass-background.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"liquid-glass-background.d.ts","sourceRoot":"","sources":["../../src/components/liquid-glass-background.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAgGzC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"liquid-glass-background.js","sourceRoot":"","sources":["../../src/components/liquid-glass-background.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"liquid-glass-background.js","sourceRoot":"","sources":["../../src/components/liquid-glass-background.tsx"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAKH,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -46,12 +46,12 @@ function FloatingPaths({ position, baseDuration, opacity, ease, durationVariatio
|
|
|
46
46
|
[position]
|
|
47
47
|
);
|
|
48
48
|
if (prefersReducedMotion) {
|
|
49
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { className: "text-
|
|
49
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [
|
|
50
50
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: "Background Paths" }),
|
|
51
51
|
paths.map((path) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: path.d, stroke: "currentColor", strokeWidth: path.width, strokeOpacity: opacity[1] }, path.id))
|
|
52
52
|
] }) });
|
|
53
53
|
}
|
|
54
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { className: "text-
|
|
54
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [
|
|
55
55
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("title", { children: "Background Paths" }),
|
|
56
56
|
paths.map((path) => {
|
|
57
57
|
const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/background-paths.tsx","../src/components/light-rays.tsx","../src/components/liquid-glass-background.tsx"],"sourcesContent":["// Copyright (c) 2025 Amsterdam Data Labs\n// @enact-ui/backgrounds - Decorative background effects\n\n/**\n * @enact-ui/backgrounds\n *\n * Decorative background effects for ENACT UI.\n * Purely cosmetic - can be removed without functional impact.\n *\n * Requires: @enact-ui/react (for cx utility)\n * Requires: @enact-ui/animate (for motion presets)\n * Requires: motion/react (for animations)\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Background Components\n// =============================================================================\nexport { BackgroundPaths, type BackgroundPathsProps } from \"./components/background-paths\";\nexport { LightRays, type LightRaysProps } from \"./components/light-rays\";\nexport { LiquidGlassBackground } from \"./components/liquid-glass-background\";\n","// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { motion } from \"motion/react\";\nimport { type FC, useMemo } from \"react\";\n\ninterface FloatingPathsProps {\n position: number;\n baseDuration: number;\n opacity: [number, number, number];\n ease: \"linear\" | \"easeInOut\";\n durationVariation: number;\n prefersReducedMotion: boolean;\n}\n\nfunction FloatingPaths({ position, baseDuration, opacity, ease, durationVariation, prefersReducedMotion }: FloatingPathsProps) {\n // Memoize path calculations and random values to prevent regeneration on re-render\n const paths = useMemo(\n () =>\n Array.from({ length: 36 }, (_, i) => {\n // Generate stable random variations per path\n const durationRandom = Math.random();\n return {\n id: i,\n d: `M-${380 - i * 5 * position} -${189 + i * 6}C-${380 - i * 5 * position} -${189 + i * 6} -${312 - i * 5 * position} ${216 - i * 6} ${\n 152 - i * 5 * position\n } ${343 - i * 6}C${616 - i * 5 * position} ${470 - i * 6} ${\n 684 - i * 5 * position\n } ${875 - i * 6} ${684 - i * 5 * position} ${875 - i * 6}`,\n color: `rgba(15,23,42,${0.1 + i * 0.03})`,\n width: 0.5 + i * 0.03,\n durationRandom,\n };\n }),\n [position],\n );\n\n // If reduced motion is preferred, render static paths\n if (prefersReducedMotion) {\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-muted h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => (\n <path key={path.id} d={path.d} stroke=\"currentColor\" strokeWidth={path.width} strokeOpacity={opacity[1]} />\n ))}\n </svg>\n </div>\n );\n }\n\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-muted h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => {\n // Calculate duration with preset-based variation\n const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;\n\n return (\n <motion.path\n key={path.id}\n d={path.d}\n stroke=\"currentColor\"\n strokeWidth={path.width}\n strokeOpacity={0.1 + path.id * 0.03}\n initial={{ pathLength: 0.3, opacity: opacity[0] }}\n animate={{\n pathLength: 1,\n opacity: opacity,\n pathOffset: [0, 1, 0],\n }}\n transition={{\n duration,\n repeat: Number.POSITIVE_INFINITY,\n ease,\n }}\n />\n );\n })}\n </svg>\n </div>\n );\n}\n\nexport interface BackgroundPathsProps {\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n}\n\n/**\n * BackgroundPaths Component\n *\n * Renders animated SVG paths for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <BackgroundPaths preset=\"medium\" />\n * <BackgroundPaths preset=\"slow\" />\n * <BackgroundPaths preset=\"fast\" />\n * ```\n */\nexport const BackgroundPaths: FC<BackgroundPathsProps> = ({ preset }) => {\n const motionConfig = useMotionPreset(\"paths\", preset);\n\n return (\n <div className=\"pointer-events-none relative flex h-full w-full items-center justify-center overflow-hidden\" aria-hidden=\"true\">\n <div className=\"absolute inset-0\">\n <FloatingPaths\n position={1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n <FloatingPaths\n position={-1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n </div>\n </div>\n );\n};\n","// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { cx } from \"@enact-ui/react\";\nimport { type MotionStyle, motion } from \"motion/react\";\nimport { type CSSProperties, type FC, useMemo } from \"react\";\n\n/**\n * LightRays Component\n *\n * Adapted from MagicUI (MIT Licensed)\n * Original source: https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/light-rays.tsx\n * Reference files: references/magicui-lightrays/\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses CSS gradients and motion animations - no Three.js dependencies required.\n *\n * Uses the motion preset system for theme-aware, configurable animations.\n */\nexport interface LightRaysProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement>;\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n /** Number of light rays to render */\n count?: number;\n /** Color of the light rays (CSS color value) */\n color?: string;\n /** Blur amount in pixels */\n blur?: number;\n /** Length of the rays (CSS length value) */\n length?: string;\n}\n\ntype LightRay = {\n id: string;\n left: number;\n rotate: number;\n width: number;\n swing: number;\n delay: number;\n durationMultiplier: number;\n intensityMultiplier: number;\n};\n\nconst createRays = (count: number, swingVariation: number): LightRay[] => {\n if (count <= 0) return [];\n\n return Array.from({ length: count }, (_, index) => {\n const left = 8 + Math.random() * 84;\n const rotate = -28 + Math.random() * 56;\n const width = 160 + Math.random() * 160;\n const swing = 0.8 + Math.random() * swingVariation;\n const delay = Math.random();\n const durationMultiplier = 0.75 + Math.random() * 0.5;\n const intensityMultiplier = 0.6 + Math.random() * 0.5;\n\n return {\n id: `${index}-${Math.round(left * 10)}`,\n left,\n rotate,\n width,\n swing,\n delay,\n durationMultiplier,\n intensityMultiplier,\n };\n });\n};\n\ninterface RayProps extends LightRay {\n cycleDuration: number;\n intensity: number;\n prefersReducedMotion: boolean;\n}\n\nconst Ray: FC<RayProps> = ({ left, rotate, width, swing, delay, durationMultiplier, intensityMultiplier, cycleDuration, intensity, prefersReducedMotion }) => {\n const computedIntensity = intensity * intensityMultiplier;\n const computedDuration = cycleDuration * durationMultiplier;\n const computedDelay = delay * cycleDuration;\n\n // If reduced motion is preferred, render static ray\n if (prefersReducedMotion) {\n return (\n <div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-[var(--ray-opacity)] mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n \"--ray-opacity\": computedIntensity * 0.5,\n transform: `rotate(${rotate}deg)`,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n />\n );\n }\n\n return (\n <motion.div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-0 mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n } as MotionStyle\n }\n initial={{ rotate: rotate }}\n animate={{\n opacity: [0, computedIntensity, 0],\n rotate: [rotate - swing, rotate + swing, rotate - swing],\n }}\n transition={{\n duration: computedDuration,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"easeInOut\",\n delay: computedDelay,\n repeatDelay: computedDuration * 0.1,\n }}\n aria-hidden=\"true\"\n />\n );\n};\n\n/**\n * LightRays Component\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <LightRays preset=\"medium\" />\n * <LightRays preset=\"slow\" count={5} color=\"rgba(160, 210, 255, 0.3)\" />\n * <LightRays preset=\"fast\" blur={48} length=\"80vh\" />\n * ```\n */\nexport const LightRays: FC<LightRaysProps> = ({\n className,\n style,\n preset,\n count = 7,\n color = \"rgba(160, 210, 255, 0.2)\",\n blur = 36,\n length = \"70vh\",\n ref,\n ...props\n}) => {\n const motionConfig = useMotionPreset(\"rays\", preset);\n\n // Memoize rays creation based on count and swingVariation\n const rays = useMemo(() => createRays(count, motionConfig.swingVariation), [count, motionConfig.swingVariation]);\n\n return (\n <div\n ref={ref}\n className={cx(\"pointer-events-none absolute inset-0 isolate overflow-hidden rounded-[inherit]\", className)}\n style={\n {\n \"--light-rays-color\": color,\n \"--light-rays-blur\": `${blur}px`,\n \"--light-rays-length\": length,\n ...style,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 overflow-hidden\">\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 20% 15%, color-mix(in srgb, var(--light-rays-color) 45%, transparent), transparent 70%)\",\n } as CSSProperties\n }\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 80% 10%, color-mix(in srgb, var(--light-rays-color) 35%, transparent), transparent 75%)\",\n } as CSSProperties\n }\n />\n {rays.map((ray) => (\n <Ray\n key={ray.id}\n {...ray}\n cycleDuration={motionConfig.cycleDuration}\n intensity={motionConfig.intensity}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n ))}\n </div>\n </div>\n );\n};\n","// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { motion } from \"motion/react\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * LiquidGlassBackground Component\n *\n * Provides a subtle animated background for the liquid glass theme.\n * Features floating gradient orbs with gentle movements that showcase\n * glassmorphism effects without being distracting.\n */\nexport const LiquidGlassBackground: React.FC = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n // Check for dark mode class on document element\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains(\"dark-mode\"));\n };\n\n checkDarkMode();\n\n // Watch for dark mode changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n // Color gradients for light and dark modes\n const lightModeColors = [\n \"rgba(0, 212, 255, 0.15)\", // Bright cyan\n \"rgba(173, 230, 255, 0.12)\", // Light cyan\n \"rgba(102, 178, 255, 0.1)\", // Soft blue\n \"rgba(0, 153, 204, 0.08)\", // Deeper cyan\n ];\n\n const darkModeColors = [\n \"rgba(0, 102, 255, 0.2)\", // Deep blue\n \"rgba(51, 153, 255, 0.15)\", // Bright blue\n \"rgba(102, 178, 255, 0.12)\", // Light blue\n \"rgba(0, 51, 204, 0.1)\", // Dark blue\n ];\n\n const colors = isDarkMode ? darkModeColors : lightModeColors;\n\n // Check for reduced motion preference\n const prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n // Animation variants - more pronounced movement for visible distortion\n const orbVariants = {\n animate: {\n x: prefersReducedMotion ? 0 : [0, 100, -80, 60, -40, 0],\n y: prefersReducedMotion ? 0 : [0, -80, 60, -50, 40, 0],\n scale: prefersReducedMotion ? 1 : [1, 1.3, 0.8, 1.2, 0.9, 1],\n },\n };\n\n const transition = {\n duration: prefersReducedMotion ? 0 : 12,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n };\n\n return (\n <div className=\"pointer-events-none fixed inset-0 -z-10 overflow-hidden\" aria-hidden=\"true\">\n {/* Floating Orbs */}\n {colors.map((color, index) => {\n const size = 400 + index * 120;\n const initialX = 10 + index * 30;\n const initialY = 20 + index * 25;\n\n return (\n <motion.div\n key={color}\n className=\"absolute rounded-full blur-3xl\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n left: `${initialX}%`,\n top: `${initialY}%`,\n }}\n variants={orbVariants}\n animate=\"animate\"\n transition={{\n ...transition,\n delay: index * 1.5,\n }}\n />\n );\n })}\n\n {/* Subtle gradient overlay for depth */}\n <div\n className=\"absolute inset-0 opacity-30\"\n style={{\n background: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(0, 102, 255, 0.1) 0%, transparent 70%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(0, 212, 255, 0.08) 0%, transparent 70%)\",\n }}\n />\n </div>\n );\n};\n\nexport default LiquidGlassBackground;\n"],"mappings":"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","names":["import_react","import_animate","import_react","import_jsx_runtime","import_react","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/background-paths.tsx","../src/components/light-rays.tsx","../src/components/liquid-glass-background.tsx"],"sourcesContent":["// @enact-ui/backgrounds - Decorative background effects\n\n/**\n * @enact-ui/backgrounds\n *\n * Decorative background effects for ENACT UI.\n * Purely cosmetic - can be removed without functional impact.\n *\n * Requires: @enact-ui/react (for cx utility)\n * Requires: @enact-ui/animate (for motion presets)\n * Requires: motion/react (for animations)\n *\n * @packageDocumentation\n */\n\n// =============================================================================\n// Background Components\n// =============================================================================\nexport { BackgroundPaths, type BackgroundPathsProps } from \"./components/background-paths\";\nexport { LightRays, type LightRaysProps } from \"./components/light-rays\";\nexport { LiquidGlassBackground } from \"./components/liquid-glass-background\";\n","\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { motion } from \"motion/react\";\nimport { type FC, useMemo } from \"react\";\n\ninterface FloatingPathsProps {\n position: number;\n baseDuration: number;\n opacity: [number, number, number];\n ease: \"linear\" | \"easeInOut\";\n durationVariation: number;\n prefersReducedMotion: boolean;\n}\n\nfunction FloatingPaths({ position, baseDuration, opacity, ease, durationVariation, prefersReducedMotion }: FloatingPathsProps) {\n // Memoize path calculations and random values to prevent regeneration on re-render\n const paths = useMemo(\n () =>\n Array.from({ length: 36 }, (_, i) => {\n // Generate stable random variations per path\n const durationRandom = Math.random();\n return {\n id: i,\n d: `M-${380 - i * 5 * position} -${189 + i * 6}C-${380 - i * 5 * position} -${189 + i * 6} -${312 - i * 5 * position} ${216 - i * 6} ${\n 152 - i * 5 * position\n } ${343 - i * 6}C${616 - i * 5 * position} ${470 - i * 6} ${\n 684 - i * 5 * position\n } ${875 - i * 6} ${684 - i * 5 * position} ${875 - i * 6}`,\n color: `rgba(15,23,42,${0.1 + i * 0.03})`,\n width: 0.5 + i * 0.03,\n durationRandom,\n };\n }),\n [position],\n );\n\n // If reduced motion is preferred, render static paths\n if (prefersReducedMotion) {\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-content-tertiary h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => (\n <path key={path.id} d={path.d} stroke=\"currentColor\" strokeWidth={path.width} strokeOpacity={opacity[1]} />\n ))}\n </svg>\n </div>\n );\n }\n\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-content-tertiary h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => {\n // Calculate duration with preset-based variation\n const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;\n\n return (\n <motion.path\n key={path.id}\n d={path.d}\n stroke=\"currentColor\"\n strokeWidth={path.width}\n strokeOpacity={0.1 + path.id * 0.03}\n initial={{ pathLength: 0.3, opacity: opacity[0] }}\n animate={{\n pathLength: 1,\n opacity: opacity,\n pathOffset: [0, 1, 0],\n }}\n transition={{\n duration,\n repeat: Number.POSITIVE_INFINITY,\n ease,\n }}\n />\n );\n })}\n </svg>\n </div>\n );\n}\n\nexport interface BackgroundPathsProps {\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n}\n\n/**\n * BackgroundPaths Component\n *\n * Renders animated SVG paths for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <BackgroundPaths preset=\"medium\" />\n * <BackgroundPaths preset=\"slow\" />\n * <BackgroundPaths preset=\"fast\" />\n * ```\n */\nexport const BackgroundPaths: FC<BackgroundPathsProps> = ({ preset }) => {\n const motionConfig = useMotionPreset(\"paths\", preset);\n\n return (\n <div className=\"pointer-events-none relative flex h-full w-full items-center justify-center overflow-hidden\" aria-hidden=\"true\">\n <div className=\"absolute inset-0\">\n <FloatingPaths\n position={1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n <FloatingPaths\n position={-1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { cx } from \"@enact-ui/react\";\nimport { motion } from \"motion/react\";\nimport { type CSSProperties, type FC, useMemo } from \"react\";\n\n/**\n * LightRays Component\n *\n * Adapted from MagicUI (MIT Licensed)\n * Original source: https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/light-rays.tsx\n * Reference files: references/magicui-lightrays/\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses CSS gradients and motion animations - no Three.js dependencies required.\n *\n * Uses the motion preset system for theme-aware, configurable animations.\n */\nexport interface LightRaysProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement>;\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n /** Number of light rays to render */\n count?: number;\n /** Color of the light rays (CSS color value) */\n color?: string;\n /** Blur amount in pixels */\n blur?: number;\n /** Length of the rays (CSS length value) */\n length?: string;\n}\n\ntype LightRay = {\n id: string;\n left: number;\n rotate: number;\n width: number;\n swing: number;\n delay: number;\n durationMultiplier: number;\n intensityMultiplier: number;\n};\n\nconst createRays = (count: number, swingVariation: number): LightRay[] => {\n if (count <= 0) return [];\n\n return Array.from({ length: count }, (_, index) => {\n const left = 8 + Math.random() * 84;\n const rotate = -28 + Math.random() * 56;\n const width = 160 + Math.random() * 160;\n const swing = 0.8 + Math.random() * swingVariation;\n const delay = Math.random();\n const durationMultiplier = 0.75 + Math.random() * 0.5;\n const intensityMultiplier = 0.6 + Math.random() * 0.5;\n\n return {\n id: `${index}-${Math.round(left * 10)}`,\n left,\n rotate,\n width,\n swing,\n delay,\n durationMultiplier,\n intensityMultiplier,\n };\n });\n};\n\ninterface RayProps extends LightRay {\n cycleDuration: number;\n intensity: number;\n prefersReducedMotion: boolean;\n}\n\nconst Ray: FC<RayProps> = ({ left, rotate, width, swing, delay, durationMultiplier, intensityMultiplier, cycleDuration, intensity, prefersReducedMotion }) => {\n const computedIntensity = intensity * intensityMultiplier;\n const computedDuration = cycleDuration * durationMultiplier;\n const computedDelay = delay * cycleDuration;\n\n // If reduced motion is preferred, render static ray\n if (prefersReducedMotion) {\n return (\n <div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-[var(--ray-opacity)] mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n \"--ray-opacity\": computedIntensity * 0.5,\n transform: `rotate(${rotate}deg)`,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n />\n );\n }\n\n return (\n <motion.div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-0 mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n } as Record<string, string>\n }\n initial={{ rotate: rotate }}\n animate={{\n opacity: [0, computedIntensity, 0],\n rotate: [rotate - swing, rotate + swing, rotate - swing],\n }}\n transition={{\n duration: computedDuration,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"easeInOut\",\n delay: computedDelay,\n repeatDelay: computedDuration * 0.1,\n }}\n aria-hidden=\"true\"\n />\n );\n};\n\n/**\n * LightRays Component\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <LightRays preset=\"medium\" />\n * <LightRays preset=\"slow\" count={5} color=\"rgba(160, 210, 255, 0.3)\" />\n * <LightRays preset=\"fast\" blur={48} length=\"80vh\" />\n * ```\n */\nexport const LightRays: FC<LightRaysProps> = ({\n className,\n style,\n preset,\n count = 7,\n color = \"rgba(160, 210, 255, 0.2)\",\n blur = 36,\n length = \"70vh\",\n ref,\n ...props\n}) => {\n const motionConfig = useMotionPreset(\"rays\", preset);\n\n // Memoize rays creation based on count and swingVariation\n const rays = useMemo(() => createRays(count, motionConfig.swingVariation), [count, motionConfig.swingVariation]);\n\n return (\n <div\n ref={ref}\n className={cx(\"pointer-events-none absolute inset-0 isolate overflow-hidden rounded-[inherit]\", className)}\n style={\n {\n \"--light-rays-color\": color,\n \"--light-rays-blur\": `${blur}px`,\n \"--light-rays-length\": length,\n ...style,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 overflow-hidden\">\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 20% 15%, color-mix(in srgb, var(--light-rays-color) 45%, transparent), transparent 70%)\",\n } as CSSProperties\n }\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 80% 10%, color-mix(in srgb, var(--light-rays-color) 35%, transparent), transparent 75%)\",\n } as CSSProperties\n }\n />\n {rays.map((ray) => (\n <Ray\n key={ray.id}\n {...ray}\n cycleDuration={motionConfig.cycleDuration}\n intensity={motionConfig.intensity}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n ))}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { motion } from \"motion/react\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * LiquidGlassBackground Component\n *\n * Provides a subtle animated background for the liquid glass theme.\n * Features floating gradient orbs with gentle movements that showcase\n * glassmorphism effects without being distracting.\n */\nexport const LiquidGlassBackground: React.FC = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n // Check for dark mode class on document element\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains(\"dark-mode\"));\n };\n\n checkDarkMode();\n\n // Watch for dark mode changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n // Color gradients for light and dark modes\n const lightModeColors = [\n \"rgba(0, 212, 255, 0.15)\", // Bright cyan\n \"rgba(173, 230, 255, 0.12)\", // Light cyan\n \"rgba(102, 178, 255, 0.1)\", // Soft blue\n \"rgba(0, 153, 204, 0.08)\", // Deeper cyan\n ];\n\n const darkModeColors = [\n \"rgba(0, 102, 255, 0.2)\", // Deep blue\n \"rgba(51, 153, 255, 0.15)\", // Bright blue\n \"rgba(102, 178, 255, 0.12)\", // Light blue\n \"rgba(0, 51, 204, 0.1)\", // Dark blue\n ];\n\n const colors = isDarkMode ? darkModeColors : lightModeColors;\n\n // Check for reduced motion preference\n const prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n // Animation variants - more pronounced movement for visible distortion\n const orbVariants = {\n animate: {\n x: prefersReducedMotion ? 0 : [0, 100, -80, 60, -40, 0],\n y: prefersReducedMotion ? 0 : [0, -80, 60, -50, 40, 0],\n scale: prefersReducedMotion ? 1 : [1, 1.3, 0.8, 1.2, 0.9, 1],\n },\n };\n\n const transition = {\n duration: prefersReducedMotion ? 0 : 12,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n };\n\n return (\n <div className=\"pointer-events-none fixed inset-0 -z-10 overflow-hidden\" aria-hidden=\"true\">\n {/* Floating Orbs */}\n {colors.map((color, index) => {\n const size = 400 + index * 120;\n const initialX = 10 + index * 30;\n const initialY = 20 + index * 25;\n\n return (\n <motion.div\n key={color}\n className=\"absolute rounded-full blur-3xl\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n left: `${initialX}%`,\n top: `${initialY}%`,\n }}\n variants={orbVariants}\n animate=\"animate\"\n transition={{\n ...transition,\n delay: index * 1.5,\n }}\n />\n );\n })}\n\n {/* Subtle gradient overlay for depth */}\n <div\n className=\"absolute inset-0 opacity-30\"\n style={{\n background: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(0, 102, 255, 0.1) 0%, transparent 70%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(0, 212, 255, 0.08) 0%, transparent 70%)\",\n }}\n />\n </div>\n );\n};\n\nexport default LiquidGlassBackground;\n"],"mappings":"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","names":["import_react","import_animate","import_react","import_jsx_runtime","import_react","import_jsx_runtime"]}
|
package/dist/index.mjs
CHANGED
|
@@ -18,12 +18,12 @@ function FloatingPaths({ position, baseDuration, opacity, ease, durationVariatio
|
|
|
18
18
|
[position]
|
|
19
19
|
);
|
|
20
20
|
if (prefersReducedMotion) {
|
|
21
|
-
return /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ jsxs("svg", { className: "text-
|
|
21
|
+
return /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ jsxs("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [
|
|
22
22
|
/* @__PURE__ */ jsx("title", { children: "Background Paths" }),
|
|
23
23
|
paths.map((path) => /* @__PURE__ */ jsx("path", { d: path.d, stroke: "currentColor", strokeWidth: path.width, strokeOpacity: opacity[1] }, path.id))
|
|
24
24
|
] }) });
|
|
25
25
|
}
|
|
26
|
-
return /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ jsxs("svg", { className: "text-
|
|
26
|
+
return /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0", children: /* @__PURE__ */ jsxs("svg", { className: "text-content-tertiary h-full w-full", viewBox: "0 0 696 316", fill: "none", "aria-hidden": "true", children: [
|
|
27
27
|
/* @__PURE__ */ jsx("title", { children: "Background Paths" }),
|
|
28
28
|
paths.map((path) => {
|
|
29
29
|
const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/background-paths.tsx","../src/components/light-rays.tsx","../src/components/liquid-glass-background.tsx"],"sourcesContent":["// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { motion } from \"motion/react\";\nimport { type FC, useMemo } from \"react\";\n\ninterface FloatingPathsProps {\n position: number;\n baseDuration: number;\n opacity: [number, number, number];\n ease: \"linear\" | \"easeInOut\";\n durationVariation: number;\n prefersReducedMotion: boolean;\n}\n\nfunction FloatingPaths({ position, baseDuration, opacity, ease, durationVariation, prefersReducedMotion }: FloatingPathsProps) {\n // Memoize path calculations and random values to prevent regeneration on re-render\n const paths = useMemo(\n () =>\n Array.from({ length: 36 }, (_, i) => {\n // Generate stable random variations per path\n const durationRandom = Math.random();\n return {\n id: i,\n d: `M-${380 - i * 5 * position} -${189 + i * 6}C-${380 - i * 5 * position} -${189 + i * 6} -${312 - i * 5 * position} ${216 - i * 6} ${\n 152 - i * 5 * position\n } ${343 - i * 6}C${616 - i * 5 * position} ${470 - i * 6} ${\n 684 - i * 5 * position\n } ${875 - i * 6} ${684 - i * 5 * position} ${875 - i * 6}`,\n color: `rgba(15,23,42,${0.1 + i * 0.03})`,\n width: 0.5 + i * 0.03,\n durationRandom,\n };\n }),\n [position],\n );\n\n // If reduced motion is preferred, render static paths\n if (prefersReducedMotion) {\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-muted h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => (\n <path key={path.id} d={path.d} stroke=\"currentColor\" strokeWidth={path.width} strokeOpacity={opacity[1]} />\n ))}\n </svg>\n </div>\n );\n }\n\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-muted h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => {\n // Calculate duration with preset-based variation\n const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;\n\n return (\n <motion.path\n key={path.id}\n d={path.d}\n stroke=\"currentColor\"\n strokeWidth={path.width}\n strokeOpacity={0.1 + path.id * 0.03}\n initial={{ pathLength: 0.3, opacity: opacity[0] }}\n animate={{\n pathLength: 1,\n opacity: opacity,\n pathOffset: [0, 1, 0],\n }}\n transition={{\n duration,\n repeat: Number.POSITIVE_INFINITY,\n ease,\n }}\n />\n );\n })}\n </svg>\n </div>\n );\n}\n\nexport interface BackgroundPathsProps {\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n}\n\n/**\n * BackgroundPaths Component\n *\n * Renders animated SVG paths for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <BackgroundPaths preset=\"medium\" />\n * <BackgroundPaths preset=\"slow\" />\n * <BackgroundPaths preset=\"fast\" />\n * ```\n */\nexport const BackgroundPaths: FC<BackgroundPathsProps> = ({ preset }) => {\n const motionConfig = useMotionPreset(\"paths\", preset);\n\n return (\n <div className=\"pointer-events-none relative flex h-full w-full items-center justify-center overflow-hidden\" aria-hidden=\"true\">\n <div className=\"absolute inset-0\">\n <FloatingPaths\n position={1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n <FloatingPaths\n position={-1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n </div>\n </div>\n );\n};\n","// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { cx } from \"@enact-ui/react\";\nimport { type MotionStyle, motion } from \"motion/react\";\nimport { type CSSProperties, type FC, useMemo } from \"react\";\n\n/**\n * LightRays Component\n *\n * Adapted from MagicUI (MIT Licensed)\n * Original source: https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/light-rays.tsx\n * Reference files: references/magicui-lightrays/\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses CSS gradients and motion animations - no Three.js dependencies required.\n *\n * Uses the motion preset system for theme-aware, configurable animations.\n */\nexport interface LightRaysProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement>;\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n /** Number of light rays to render */\n count?: number;\n /** Color of the light rays (CSS color value) */\n color?: string;\n /** Blur amount in pixels */\n blur?: number;\n /** Length of the rays (CSS length value) */\n length?: string;\n}\n\ntype LightRay = {\n id: string;\n left: number;\n rotate: number;\n width: number;\n swing: number;\n delay: number;\n durationMultiplier: number;\n intensityMultiplier: number;\n};\n\nconst createRays = (count: number, swingVariation: number): LightRay[] => {\n if (count <= 0) return [];\n\n return Array.from({ length: count }, (_, index) => {\n const left = 8 + Math.random() * 84;\n const rotate = -28 + Math.random() * 56;\n const width = 160 + Math.random() * 160;\n const swing = 0.8 + Math.random() * swingVariation;\n const delay = Math.random();\n const durationMultiplier = 0.75 + Math.random() * 0.5;\n const intensityMultiplier = 0.6 + Math.random() * 0.5;\n\n return {\n id: `${index}-${Math.round(left * 10)}`,\n left,\n rotate,\n width,\n swing,\n delay,\n durationMultiplier,\n intensityMultiplier,\n };\n });\n};\n\ninterface RayProps extends LightRay {\n cycleDuration: number;\n intensity: number;\n prefersReducedMotion: boolean;\n}\n\nconst Ray: FC<RayProps> = ({ left, rotate, width, swing, delay, durationMultiplier, intensityMultiplier, cycleDuration, intensity, prefersReducedMotion }) => {\n const computedIntensity = intensity * intensityMultiplier;\n const computedDuration = cycleDuration * durationMultiplier;\n const computedDelay = delay * cycleDuration;\n\n // If reduced motion is preferred, render static ray\n if (prefersReducedMotion) {\n return (\n <div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-[var(--ray-opacity)] mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n \"--ray-opacity\": computedIntensity * 0.5,\n transform: `rotate(${rotate}deg)`,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n />\n );\n }\n\n return (\n <motion.div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-0 mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n } as MotionStyle\n }\n initial={{ rotate: rotate }}\n animate={{\n opacity: [0, computedIntensity, 0],\n rotate: [rotate - swing, rotate + swing, rotate - swing],\n }}\n transition={{\n duration: computedDuration,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"easeInOut\",\n delay: computedDelay,\n repeatDelay: computedDuration * 0.1,\n }}\n aria-hidden=\"true\"\n />\n );\n};\n\n/**\n * LightRays Component\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <LightRays preset=\"medium\" />\n * <LightRays preset=\"slow\" count={5} color=\"rgba(160, 210, 255, 0.3)\" />\n * <LightRays preset=\"fast\" blur={48} length=\"80vh\" />\n * ```\n */\nexport const LightRays: FC<LightRaysProps> = ({\n className,\n style,\n preset,\n count = 7,\n color = \"rgba(160, 210, 255, 0.2)\",\n blur = 36,\n length = \"70vh\",\n ref,\n ...props\n}) => {\n const motionConfig = useMotionPreset(\"rays\", preset);\n\n // Memoize rays creation based on count and swingVariation\n const rays = useMemo(() => createRays(count, motionConfig.swingVariation), [count, motionConfig.swingVariation]);\n\n return (\n <div\n ref={ref}\n className={cx(\"pointer-events-none absolute inset-0 isolate overflow-hidden rounded-[inherit]\", className)}\n style={\n {\n \"--light-rays-color\": color,\n \"--light-rays-blur\": `${blur}px`,\n \"--light-rays-length\": length,\n ...style,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 overflow-hidden\">\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 20% 15%, color-mix(in srgb, var(--light-rays-color) 45%, transparent), transparent 70%)\",\n } as CSSProperties\n }\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 80% 10%, color-mix(in srgb, var(--light-rays-color) 35%, transparent), transparent 75%)\",\n } as CSSProperties\n }\n />\n {rays.map((ray) => (\n <Ray\n key={ray.id}\n {...ray}\n cycleDuration={motionConfig.cycleDuration}\n intensity={motionConfig.intensity}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n ))}\n </div>\n </div>\n );\n};\n","// Copyright (c) 2025 Amsterdam Data Labs\n\"use client\";\n\nimport { motion } from \"motion/react\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * LiquidGlassBackground Component\n *\n * Provides a subtle animated background for the liquid glass theme.\n * Features floating gradient orbs with gentle movements that showcase\n * glassmorphism effects without being distracting.\n */\nexport const LiquidGlassBackground: React.FC = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n // Check for dark mode class on document element\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains(\"dark-mode\"));\n };\n\n checkDarkMode();\n\n // Watch for dark mode changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n // Color gradients for light and dark modes\n const lightModeColors = [\n \"rgba(0, 212, 255, 0.15)\", // Bright cyan\n \"rgba(173, 230, 255, 0.12)\", // Light cyan\n \"rgba(102, 178, 255, 0.1)\", // Soft blue\n \"rgba(0, 153, 204, 0.08)\", // Deeper cyan\n ];\n\n const darkModeColors = [\n \"rgba(0, 102, 255, 0.2)\", // Deep blue\n \"rgba(51, 153, 255, 0.15)\", // Bright blue\n \"rgba(102, 178, 255, 0.12)\", // Light blue\n \"rgba(0, 51, 204, 0.1)\", // Dark blue\n ];\n\n const colors = isDarkMode ? darkModeColors : lightModeColors;\n\n // Check for reduced motion preference\n const prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n // Animation variants - more pronounced movement for visible distortion\n const orbVariants = {\n animate: {\n x: prefersReducedMotion ? 0 : [0, 100, -80, 60, -40, 0],\n y: prefersReducedMotion ? 0 : [0, -80, 60, -50, 40, 0],\n scale: prefersReducedMotion ? 1 : [1, 1.3, 0.8, 1.2, 0.9, 1],\n },\n };\n\n const transition = {\n duration: prefersReducedMotion ? 0 : 12,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n };\n\n return (\n <div className=\"pointer-events-none fixed inset-0 -z-10 overflow-hidden\" aria-hidden=\"true\">\n {/* Floating Orbs */}\n {colors.map((color, index) => {\n const size = 400 + index * 120;\n const initialX = 10 + index * 30;\n const initialY = 20 + index * 25;\n\n return (\n <motion.div\n key={color}\n className=\"absolute rounded-full blur-3xl\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n left: `${initialX}%`,\n top: `${initialY}%`,\n }}\n variants={orbVariants}\n animate=\"animate\"\n transition={{\n ...transition,\n delay: index * 1.5,\n }}\n />\n );\n })}\n\n {/* Subtle gradient overlay for depth */}\n <div\n className=\"absolute inset-0 opacity-30\"\n style={{\n background: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(0, 102, 255, 0.1) 0%, transparent 70%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(0, 212, 255, 0.08) 0%, transparent 70%)\",\n }}\n />\n </div>\n );\n};\n\nexport default LiquidGlassBackground;\n"],"mappings":"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","names":["useMotionPreset","motion","useMemo","jsx","jsxs","motion","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/background-paths.tsx","../src/components/light-rays.tsx","../src/components/liquid-glass-background.tsx"],"sourcesContent":["\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { motion } from \"motion/react\";\nimport { type FC, useMemo } from \"react\";\n\ninterface FloatingPathsProps {\n position: number;\n baseDuration: number;\n opacity: [number, number, number];\n ease: \"linear\" | \"easeInOut\";\n durationVariation: number;\n prefersReducedMotion: boolean;\n}\n\nfunction FloatingPaths({ position, baseDuration, opacity, ease, durationVariation, prefersReducedMotion }: FloatingPathsProps) {\n // Memoize path calculations and random values to prevent regeneration on re-render\n const paths = useMemo(\n () =>\n Array.from({ length: 36 }, (_, i) => {\n // Generate stable random variations per path\n const durationRandom = Math.random();\n return {\n id: i,\n d: `M-${380 - i * 5 * position} -${189 + i * 6}C-${380 - i * 5 * position} -${189 + i * 6} -${312 - i * 5 * position} ${216 - i * 6} ${\n 152 - i * 5 * position\n } ${343 - i * 6}C${616 - i * 5 * position} ${470 - i * 6} ${\n 684 - i * 5 * position\n } ${875 - i * 6} ${684 - i * 5 * position} ${875 - i * 6}`,\n color: `rgba(15,23,42,${0.1 + i * 0.03})`,\n width: 0.5 + i * 0.03,\n durationRandom,\n };\n }),\n [position],\n );\n\n // If reduced motion is preferred, render static paths\n if (prefersReducedMotion) {\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-content-tertiary h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => (\n <path key={path.id} d={path.d} stroke=\"currentColor\" strokeWidth={path.width} strokeOpacity={opacity[1]} />\n ))}\n </svg>\n </div>\n );\n }\n\n return (\n <div className=\"pointer-events-none absolute inset-0\">\n <svg className=\"text-content-tertiary h-full w-full\" viewBox=\"0 0 696 316\" fill=\"none\" aria-hidden=\"true\">\n <title>Background Paths</title>\n {paths.map((path) => {\n // Calculate duration with preset-based variation\n const duration = baseDuration + baseDuration * durationVariation * path.durationRandom;\n\n return (\n <motion.path\n key={path.id}\n d={path.d}\n stroke=\"currentColor\"\n strokeWidth={path.width}\n strokeOpacity={0.1 + path.id * 0.03}\n initial={{ pathLength: 0.3, opacity: opacity[0] }}\n animate={{\n pathLength: 1,\n opacity: opacity,\n pathOffset: [0, 1, 0],\n }}\n transition={{\n duration,\n repeat: Number.POSITIVE_INFINITY,\n ease,\n }}\n />\n );\n })}\n </svg>\n </div>\n );\n}\n\nexport interface BackgroundPathsProps {\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n}\n\n/**\n * BackgroundPaths Component\n *\n * Renders animated SVG paths for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <BackgroundPaths preset=\"medium\" />\n * <BackgroundPaths preset=\"slow\" />\n * <BackgroundPaths preset=\"fast\" />\n * ```\n */\nexport const BackgroundPaths: FC<BackgroundPathsProps> = ({ preset }) => {\n const motionConfig = useMotionPreset(\"paths\", preset);\n\n return (\n <div className=\"pointer-events-none relative flex h-full w-full items-center justify-center overflow-hidden\" aria-hidden=\"true\">\n <div className=\"absolute inset-0\">\n <FloatingPaths\n position={1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n <FloatingPaths\n position={-1}\n baseDuration={motionConfig.baseDuration}\n opacity={motionConfig.opacity}\n ease={motionConfig.ease}\n durationVariation={motionConfig.durationVariation}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { type MotionPreset, useMotionPreset } from \"@enact-ui/animate\";\nimport { cx } from \"@enact-ui/react\";\nimport { motion } from \"motion/react\";\nimport { type CSSProperties, type FC, useMemo } from \"react\";\n\n/**\n * LightRays Component\n *\n * Adapted from MagicUI (MIT Licensed)\n * Original source: https://github.com/magicuidesign/magicui/blob/main/apps/www/registry/magicui/light-rays.tsx\n * Reference files: references/magicui-lightrays/\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses CSS gradients and motion animations - no Three.js dependencies required.\n *\n * Uses the motion preset system for theme-aware, configurable animations.\n */\nexport interface LightRaysProps extends React.HTMLAttributes<HTMLDivElement> {\n ref?: React.Ref<HTMLDivElement>;\n /** Motion preset - controls animation speed and intensity (required) */\n preset: MotionPreset;\n /** Number of light rays to render */\n count?: number;\n /** Color of the light rays (CSS color value) */\n color?: string;\n /** Blur amount in pixels */\n blur?: number;\n /** Length of the rays (CSS length value) */\n length?: string;\n}\n\ntype LightRay = {\n id: string;\n left: number;\n rotate: number;\n width: number;\n swing: number;\n delay: number;\n durationMultiplier: number;\n intensityMultiplier: number;\n};\n\nconst createRays = (count: number, swingVariation: number): LightRay[] => {\n if (count <= 0) return [];\n\n return Array.from({ length: count }, (_, index) => {\n const left = 8 + Math.random() * 84;\n const rotate = -28 + Math.random() * 56;\n const width = 160 + Math.random() * 160;\n const swing = 0.8 + Math.random() * swingVariation;\n const delay = Math.random();\n const durationMultiplier = 0.75 + Math.random() * 0.5;\n const intensityMultiplier = 0.6 + Math.random() * 0.5;\n\n return {\n id: `${index}-${Math.round(left * 10)}`,\n left,\n rotate,\n width,\n swing,\n delay,\n durationMultiplier,\n intensityMultiplier,\n };\n });\n};\n\ninterface RayProps extends LightRay {\n cycleDuration: number;\n intensity: number;\n prefersReducedMotion: boolean;\n}\n\nconst Ray: FC<RayProps> = ({ left, rotate, width, swing, delay, durationMultiplier, intensityMultiplier, cycleDuration, intensity, prefersReducedMotion }) => {\n const computedIntensity = intensity * intensityMultiplier;\n const computedDuration = cycleDuration * durationMultiplier;\n const computedDelay = delay * cycleDuration;\n\n // If reduced motion is preferred, render static ray\n if (prefersReducedMotion) {\n return (\n <div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-[var(--ray-opacity)] mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n \"--ray-opacity\": computedIntensity * 0.5,\n transform: `rotate(${rotate}deg)`,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n />\n );\n }\n\n return (\n <motion.div\n className=\"pointer-events-none absolute -top-[12%] left-[var(--ray-left)] h-[var(--light-rays-length)] w-[var(--ray-width)] origin-top -translate-x-1/2 rounded-full bg-gradient-to-b from-[color-mix(in_srgb,var(--light-rays-color)_70%,transparent)] to-transparent opacity-0 mix-blend-screen blur-[var(--light-rays-blur)]\"\n style={\n {\n \"--ray-left\": `${left}%`,\n \"--ray-width\": `${width}px`,\n } as Record<string, string>\n }\n initial={{ rotate: rotate }}\n animate={{\n opacity: [0, computedIntensity, 0],\n rotate: [rotate - swing, rotate + swing, rotate - swing],\n }}\n transition={{\n duration: computedDuration,\n repeat: Number.POSITIVE_INFINITY,\n ease: \"easeInOut\",\n delay: computedDelay,\n repeatDelay: computedDuration * 0.1,\n }}\n aria-hidden=\"true\"\n />\n );\n};\n\n/**\n * LightRays Component\n *\n * Creates animated light rays that shine from above, perfect for ambient background effects.\n * Uses the motion preset system for theme-aware, configurable animations.\n *\n * @example\n * ```tsx\n * <LightRays preset=\"medium\" />\n * <LightRays preset=\"slow\" count={5} color=\"rgba(160, 210, 255, 0.3)\" />\n * <LightRays preset=\"fast\" blur={48} length=\"80vh\" />\n * ```\n */\nexport const LightRays: FC<LightRaysProps> = ({\n className,\n style,\n preset,\n count = 7,\n color = \"rgba(160, 210, 255, 0.2)\",\n blur = 36,\n length = \"70vh\",\n ref,\n ...props\n}) => {\n const motionConfig = useMotionPreset(\"rays\", preset);\n\n // Memoize rays creation based on count and swingVariation\n const rays = useMemo(() => createRays(count, motionConfig.swingVariation), [count, motionConfig.swingVariation]);\n\n return (\n <div\n ref={ref}\n className={cx(\"pointer-events-none absolute inset-0 isolate overflow-hidden rounded-[inherit]\", className)}\n style={\n {\n \"--light-rays-color\": color,\n \"--light-rays-blur\": `${blur}px`,\n \"--light-rays-length\": length,\n ...style,\n } as CSSProperties\n }\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 overflow-hidden\">\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 20% 15%, color-mix(in srgb, var(--light-rays-color) 45%, transparent), transparent 70%)\",\n } as CSSProperties\n }\n />\n <div\n aria-hidden=\"true\"\n className=\"absolute inset-0 opacity-60\"\n style={\n {\n background: \"radial-gradient(circle at 80% 10%, color-mix(in srgb, var(--light-rays-color) 35%, transparent), transparent 75%)\",\n } as CSSProperties\n }\n />\n {rays.map((ray) => (\n <Ray\n key={ray.id}\n {...ray}\n cycleDuration={motionConfig.cycleDuration}\n intensity={motionConfig.intensity}\n prefersReducedMotion={motionConfig.prefersReducedMotion}\n />\n ))}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { motion } from \"motion/react\";\nimport type React from \"react\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * LiquidGlassBackground Component\n *\n * Provides a subtle animated background for the liquid glass theme.\n * Features floating gradient orbs with gentle movements that showcase\n * glassmorphism effects without being distracting.\n */\nexport const LiquidGlassBackground: React.FC = () => {\n const [isDarkMode, setIsDarkMode] = useState(false);\n\n useEffect(() => {\n // Check for dark mode class on document element\n const checkDarkMode = () => {\n setIsDarkMode(document.documentElement.classList.contains(\"dark-mode\"));\n };\n\n checkDarkMode();\n\n // Watch for dark mode changes\n const observer = new MutationObserver(checkDarkMode);\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: [\"class\"],\n });\n\n return () => observer.disconnect();\n }, []);\n\n // Color gradients for light and dark modes\n const lightModeColors = [\n \"rgba(0, 212, 255, 0.15)\", // Bright cyan\n \"rgba(173, 230, 255, 0.12)\", // Light cyan\n \"rgba(102, 178, 255, 0.1)\", // Soft blue\n \"rgba(0, 153, 204, 0.08)\", // Deeper cyan\n ];\n\n const darkModeColors = [\n \"rgba(0, 102, 255, 0.2)\", // Deep blue\n \"rgba(51, 153, 255, 0.15)\", // Bright blue\n \"rgba(102, 178, 255, 0.12)\", // Light blue\n \"rgba(0, 51, 204, 0.1)\", // Dark blue\n ];\n\n const colors = isDarkMode ? darkModeColors : lightModeColors;\n\n // Check for reduced motion preference\n const prefersReducedMotion = typeof window !== \"undefined\" && window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\n // Animation variants - more pronounced movement for visible distortion\n const orbVariants = {\n animate: {\n x: prefersReducedMotion ? 0 : [0, 100, -80, 60, -40, 0],\n y: prefersReducedMotion ? 0 : [0, -80, 60, -50, 40, 0],\n scale: prefersReducedMotion ? 1 : [1, 1.3, 0.8, 1.2, 0.9, 1],\n },\n };\n\n const transition = {\n duration: prefersReducedMotion ? 0 : 12,\n repeat: Infinity,\n ease: \"easeInOut\" as const,\n };\n\n return (\n <div className=\"pointer-events-none fixed inset-0 -z-10 overflow-hidden\" aria-hidden=\"true\">\n {/* Floating Orbs */}\n {colors.map((color, index) => {\n const size = 400 + index * 120;\n const initialX = 10 + index * 30;\n const initialY = 20 + index * 25;\n\n return (\n <motion.div\n key={color}\n className=\"absolute rounded-full blur-3xl\"\n style={{\n width: `${size}px`,\n height: `${size}px`,\n background: `radial-gradient(circle, ${color} 0%, transparent 70%)`,\n left: `${initialX}%`,\n top: `${initialY}%`,\n }}\n variants={orbVariants}\n animate=\"animate\"\n transition={{\n ...transition,\n delay: index * 1.5,\n }}\n />\n );\n })}\n\n {/* Subtle gradient overlay for depth */}\n <div\n className=\"absolute inset-0 opacity-30\"\n style={{\n background: isDarkMode\n ? \"radial-gradient(circle at 50% 50%, rgba(0, 102, 255, 0.1) 0%, transparent 70%)\"\n : \"radial-gradient(circle at 50% 50%, rgba(0, 212, 255, 0.08) 0%, transparent 70%)\",\n }}\n />\n </div>\n );\n};\n\nexport default LiquidGlassBackground;\n"],"mappings":"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","names":["useMotionPreset","motion","useMemo","jsx","jsxs","motion","jsx","jsxs"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enact-ui/backgrounds",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Decorative background effects for ENACT UI. Purely cosmetic - can be removed without functional impact.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"files": [
|
|
17
17
|
"dist",
|
|
18
|
+
"api-schema.json",
|
|
18
19
|
"README.md"
|
|
19
20
|
],
|
|
20
21
|
"scripts": {
|
|
@@ -26,8 +27,8 @@
|
|
|
26
27
|
"clean": "rm -rf dist tsconfig.tsbuildinfo"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
|
-
"@enact-ui/animate": "^1.0
|
|
30
|
-
"@enact-ui/react": "^0.
|
|
30
|
+
"@enact-ui/animate": "^0.1.0",
|
|
31
|
+
"@enact-ui/react": "^0.1.0",
|
|
31
32
|
"motion": "^12.0.0",
|
|
32
33
|
"react": "^18.0.0 || ^19.0.0",
|
|
33
34
|
"react-dom": "^18.0.0 || ^19.0.0"
|
|
@@ -35,7 +36,7 @@
|
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/react": "^19.1.9",
|
|
37
38
|
"@types/react-dom": "^19.1.7",
|
|
38
|
-
"typescript": "^5.9.
|
|
39
|
+
"typescript": "^5.9.3"
|
|
39
40
|
},
|
|
40
41
|
"keywords": [
|
|
41
42
|
"react",
|