@illuma-ai/icons 2.5.1 → 2.6.1
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/dist/brand/ThinkingOrb.d.ts +8 -14
- package/dist/brand.cjs +13 -68
- package/dist/brand.es.js +78 -144
- package/package.json +1 -1
|
@@ -1,22 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
* around the orb as the noise field shifts. */
|
|
3
|
-
export type ThinkingOrbPalette = 'aurora' | 'ai';
|
|
1
|
+
export type ThinkingOrbPalette = 'ai' | 'aurora';
|
|
4
2
|
export interface ThinkingOrbProps {
|
|
5
|
-
/** Pixel diameter. Defaults to
|
|
3
|
+
/** Pixel diameter. Defaults to 16 (inline with text). */
|
|
6
4
|
size?: number;
|
|
7
|
-
/** Animation speed multiplier. Defaults to 1. */
|
|
8
|
-
speed?: number;
|
|
9
5
|
/** Color palette. Defaults to `'ai'` (pink/purple). */
|
|
10
6
|
palette?: ThinkingOrbPalette;
|
|
11
7
|
className?: string;
|
|
12
8
|
}
|
|
13
9
|
/**
|
|
14
|
-
* A
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* background so it sits inline beside "Thinking" text on any theme. Falls back
|
|
20
|
-
* gracefully (renders nothing) where WebGL is unavailable.
|
|
10
|
+
* A living, AI-"thinking" fluid orb — a morphing, breathing "spirit bubble"
|
|
11
|
+
* with a swirling pink/purple gradient (pass `palette="aurora"` for the cyan→
|
|
12
|
+
* amber variant). Pure CSS (no WebGL, no canvas, no external stylesheet) — it
|
|
13
|
+
* injects its own keyframes once and animates on the GPU. Sits inline beside
|
|
14
|
+
* "Thinking" text on any theme.
|
|
21
15
|
*/
|
|
22
|
-
export declare function ThinkingOrb({ size,
|
|
16
|
+
export declare function ThinkingOrb({ size, palette, className }: ThinkingOrbProps): import("react/jsx-runtime").JSX.Element;
|
package/dist/brand.cjs
CHANGED
|
@@ -1,71 +1,16 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
precision highp float;
|
|
7
|
-
varying vec2 uv;
|
|
8
|
-
uniform float t;
|
|
9
|
-
|
|
10
|
-
// Classic 2D simplex noise (Ashima Arts, MIT) — compact.
|
|
11
|
-
vec3 permute(vec3 x){return mod(((x*34.0)+1.0)*x,289.0);}
|
|
12
|
-
float snoise(vec2 v){
|
|
13
|
-
const vec4 C=vec4(0.211324865,0.366025404,-0.577350269,0.024390244);
|
|
14
|
-
vec2 i=floor(v+dot(v,C.yy));vec2 x0=v-i+dot(i,C.xx);
|
|
15
|
-
vec2 i1=(x0.x>x0.y)?vec2(1.0,0.0):vec2(0.0,1.0);
|
|
16
|
-
vec4 x12=x0.xyxy+C.xxzz;x12.xy-=i1;
|
|
17
|
-
i=mod(i,289.0);
|
|
18
|
-
vec3 p=permute(permute(i.y+vec3(0.0,i1.y,1.0))+i.x+vec3(0.0,i1.x,1.0));
|
|
19
|
-
vec3 m=max(0.5-vec3(dot(x0,x0),dot(x12.xy,x12.xy),dot(x12.zw,x12.zw)),0.0);
|
|
20
|
-
m=m*m;m=m*m;
|
|
21
|
-
vec3 x=2.0*fract(p*C.www)-1.0;vec3 h=abs(x)-0.5;vec3 ox=floor(x+0.5);vec3 a0=x-ox;
|
|
22
|
-
m*=1.79284291-0.85373472*(a0*a0+h*h);
|
|
23
|
-
vec3 g;g.x=a0.x*x0.x+h.x*x0.y;g.yz=a0.yz*x12.xz+h.yz*x12.yw;
|
|
24
|
-
return 130.0*dot(m,g);
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("react"),c=require("framer-motion"),m=o.forwardRef(function({size:r=24,className:n,...t},a){return e.jsxs("svg",{ref:a,width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:n,role:"img","aria-label":"Terminal",...t,children:[e.jsx("rect",{x:"2.5",y:"4",width:"19",height:"16",rx:"2.5"}),e.jsx("path",{d:"m6.5 9 3 3-3 3"}),e.jsx("path",{d:"M12.5 15h4",stroke:"#facc15"})]})}),f=o.forwardRef(function({size:r=24,running:n=!0,accent:t="#facc15",className:a,...s},d){return n?e.jsxs("svg",{ref:d,width:r,height:r,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",className:a,role:"img","aria-label":"Terminal running",...s,children:[e.jsx("rect",{x:"2.5",y:"4",width:"19",height:"16",rx:"2.5"}),e.jsx("path",{d:"m6.5 9 3 3-3 3"}),e.jsx(c.motion.path,{d:"M12.5 15h5",stroke:t,initial:{pathLength:0,opacity:.9},animate:{pathLength:[0,1,1,0]},transition:{duration:1.6,times:[0,.5,.8,1],repeat:1/0,ease:"easeInOut"}}),e.jsx(c.motion.rect,{x:"18.5",y:"13.4",width:"1.6",height:"3.2",rx:"0.3",fill:t,stroke:"none",animate:{opacity:[1,1,0,0,1]},transition:{duration:1.1,times:[0,.4,.5,.9,1],repeat:1/0}})]}):e.jsx(m,{ref:d,size:r,className:a,...s})}),l={ai:"#8b5cf6, #c026d3, #ec4899, #f0abfc, #a855f7, #8b5cf6",aurora:"#22d3ee, #8b5cf6, #ec4899, #f59e0b, #22d3ee"},u={ai:"0 0 6px rgba(192,38,211,0.5), 0 0 2px rgba(139,92,246,0.6)",aurora:"0 0 6px rgba(34,211,238,0.5), 0 0 2px rgba(139,92,246,0.6)"},h="ai-thinking-orb-styles",b=`
|
|
2
|
+
@keyframes ai-orb-morph {
|
|
3
|
+
0%,100% { border-radius:58% 42% 55% 45% / 52% 58% 42% 48%; }
|
|
4
|
+
33% { border-radius:45% 55% 42% 58% / 58% 42% 55% 45%; }
|
|
5
|
+
66% { border-radius:52% 48% 60% 40% / 45% 52% 48% 55%; }
|
|
25
6
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
float r=length(p);
|
|
30
|
-
float a=atan(p.y,p.x);
|
|
31
|
-
|
|
32
|
-
// ── Alive silhouette ──────────────────────────────────────────────
|
|
33
|
-
// Several layers of moving noise deform the radius a LOT, so the orb
|
|
34
|
-
// visibly grows lobes and shrinks them — a living, bacteria-like blob.
|
|
35
|
-
float n1=snoise(vec2(cos(a),sin(a))*1.4 + vec2(t*0.5, t*0.37));
|
|
36
|
-
float n2=snoise(p*3.1 - vec2(t*0.43, t*0.31));
|
|
37
|
-
float n3=snoise(p*5.5 + vec2(t*0.6));
|
|
38
|
-
float wobble=n1*0.30 + n2*0.16 + n3*0.08;
|
|
39
|
-
// Slow breathing pulse on top of the wobble (grow ↔ shrink).
|
|
40
|
-
float breathe=0.06*sin(t*1.6);
|
|
41
|
-
float edge=0.70 + wobble + breathe;
|
|
42
|
-
float orb=smoothstep(edge,edge-0.20,r);
|
|
43
|
-
if(orb<0.01){ gl_FragColor=vec4(0.0); return; }
|
|
44
|
-
|
|
45
|
-
// ── Swirling internal color ───────────────────────────────────────
|
|
46
|
-
// Domain-warp the field with noise so the colors churn inside the orb
|
|
47
|
-
// (not just a static angular gradient).
|
|
48
|
-
float warp=snoise(p*2.0 + vec2(t*0.4, -t*0.3));
|
|
49
|
-
float f=0.5+0.5*sin(a*1.0 + t*1.1 + warp*2.5 + r*2.0);
|
|
50
|
-
vec3 c0=${t[0]};
|
|
51
|
-
vec3 c1=${t[1]};
|
|
52
|
-
vec3 c2=${t[2]};
|
|
53
|
-
vec3 c3=${t[3]};
|
|
54
|
-
vec3 col=mix(c0,c1,smoothstep(0.0,0.4,f));
|
|
55
|
-
col=mix(col,c2,smoothstep(0.35,0.7,f));
|
|
56
|
-
col=mix(col,c3,smoothstep(0.7,1.0,f));
|
|
57
|
-
|
|
58
|
-
// Moving bright core that drifts around (the "energy" inside).
|
|
59
|
-
vec2 coreOff=0.22*vec2(cos(t*0.9), sin(t*1.3));
|
|
60
|
-
float core=smoothstep(0.55,0.0,length(p-coreOff));
|
|
61
|
-
col+=core*0.35;
|
|
62
|
-
|
|
63
|
-
// Inner glow + bright fresnel rim.
|
|
64
|
-
float glow=smoothstep(0.0,0.6,1.0-r);
|
|
65
|
-
col+=glow*0.20;
|
|
66
|
-
float rim=smoothstep(edge-0.02,edge-0.18,r);
|
|
67
|
-
col=mix(col,vec3(1.0),(1.0-rim)*0.40*orb);
|
|
68
|
-
gl_FragColor=vec4(col,orb);
|
|
7
|
+
@keyframes ai-orb-breathe {
|
|
8
|
+
0%,100% { transform:scale(0.9) rotate(0deg); }
|
|
9
|
+
50% { transform:scale(1.08) rotate(8deg); }
|
|
69
10
|
}
|
|
70
|
-
|
|
11
|
+
@keyframes ai-orb-spin { to { filter:hue-rotate(360deg); } }
|
|
12
|
+
@media (prefers-reduced-motion: reduce) {
|
|
13
|
+
.ai-orb { animation: ai-orb-breathe 3s ease-in-out infinite !important; }
|
|
14
|
+
}
|
|
15
|
+
`;function g(){o.useEffect(()=>{if(typeof document>"u"||document.getElementById(h))return;const i=document.createElement("style");i.id=h,i.textContent=b,document.head.appendChild(i)},[])}function p({size:i=16,palette:r="ai",className:n}){g();const t=l[r]??l.ai,a=u[r]??u.ai;return e.jsx("span",{className:`ai-orb${n?` ${n}`:""}`,role:"img","aria-label":"Thinking",style:{display:"inline-block",width:i,height:i,borderRadius:"50%",flexShrink:0,background:`radial-gradient(circle at 32% 30%, rgba(255,255,255,0.65) 0%, transparent 38%), conic-gradient(from 0deg, ${t})`,boxShadow:a,animation:"ai-orb-morph 3.2s ease-in-out infinite, ai-orb-breathe 2.1s ease-in-out infinite, ai-orb-spin 4.5s linear infinite",willChange:"border-radius, transform"}})}exports.AnimatedTerminalIcon=f;exports.TerminalIcon=m;exports.ThinkingOrb=p;
|
|
71
16
|
//# sourceMappingURL=brand.cjs.map
|
package/dist/brand.es.js
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { motion as
|
|
4
|
-
const
|
|
5
|
-
return /* @__PURE__ */
|
|
1
|
+
import { jsxs as m, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as f, useEffect as u } from "react";
|
|
3
|
+
import { motion as s } from "framer-motion";
|
|
4
|
+
const b = f(function({ size: e = 24, className: t, ...n }, a) {
|
|
5
|
+
return /* @__PURE__ */ m(
|
|
6
6
|
"svg",
|
|
7
7
|
{
|
|
8
|
-
ref:
|
|
9
|
-
width:
|
|
10
|
-
height:
|
|
8
|
+
ref: a,
|
|
9
|
+
width: e,
|
|
10
|
+
height: e,
|
|
11
11
|
viewBox: "0 0 24 24",
|
|
12
12
|
fill: "none",
|
|
13
13
|
stroke: "currentColor",
|
|
14
14
|
strokeWidth: 2,
|
|
15
15
|
strokeLinecap: "round",
|
|
16
16
|
strokeLinejoin: "round",
|
|
17
|
-
className:
|
|
17
|
+
className: t,
|
|
18
18
|
role: "img",
|
|
19
19
|
"aria-label": "Terminal",
|
|
20
|
-
...
|
|
20
|
+
...n,
|
|
21
21
|
children: [
|
|
22
|
-
/* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
22
|
+
/* @__PURE__ */ r("rect", { x: "2.5", y: "4", width: "19", height: "16", rx: "2.5" }),
|
|
23
|
+
/* @__PURE__ */ r("path", { d: "m6.5 9 3 3-3 3" }),
|
|
24
|
+
/* @__PURE__ */ r("path", { d: "M12.5 15h4", stroke: "#facc15" })
|
|
25
25
|
]
|
|
26
26
|
}
|
|
27
27
|
);
|
|
28
|
-
}),
|
|
29
|
-
function({ size:
|
|
30
|
-
return
|
|
28
|
+
}), w = f(
|
|
29
|
+
function({ size: e = 24, running: t = !0, accent: n = "#facc15", className: a, ...o }, d) {
|
|
30
|
+
return t ? /* @__PURE__ */ m(
|
|
31
31
|
"svg",
|
|
32
32
|
{
|
|
33
|
-
ref:
|
|
34
|
-
width:
|
|
35
|
-
height:
|
|
33
|
+
ref: d,
|
|
34
|
+
width: e,
|
|
35
|
+
height: e,
|
|
36
36
|
viewBox: "0 0 24 24",
|
|
37
37
|
fill: "none",
|
|
38
38
|
stroke: "currentColor",
|
|
39
39
|
strokeWidth: 2,
|
|
40
40
|
strokeLinecap: "round",
|
|
41
41
|
strokeLinejoin: "round",
|
|
42
|
-
className:
|
|
42
|
+
className: a,
|
|
43
43
|
role: "img",
|
|
44
44
|
"aria-label": "Terminal running",
|
|
45
|
-
...
|
|
45
|
+
...o,
|
|
46
46
|
children: [
|
|
47
|
-
/* @__PURE__ */
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
/* @__PURE__ */
|
|
50
|
-
|
|
47
|
+
/* @__PURE__ */ r("rect", { x: "2.5", y: "4", width: "19", height: "16", rx: "2.5" }),
|
|
48
|
+
/* @__PURE__ */ r("path", { d: "m6.5 9 3 3-3 3" }),
|
|
49
|
+
/* @__PURE__ */ r(
|
|
50
|
+
s.path,
|
|
51
51
|
{
|
|
52
52
|
d: "M12.5 15h5",
|
|
53
|
-
stroke:
|
|
53
|
+
stroke: n,
|
|
54
54
|
initial: { pathLength: 0, opacity: 0.9 },
|
|
55
55
|
animate: { pathLength: [0, 1, 1, 0] },
|
|
56
56
|
transition: { duration: 1.6, times: [0, 0.5, 0.8, 1], repeat: 1 / 0, ease: "easeInOut" }
|
|
57
57
|
}
|
|
58
58
|
),
|
|
59
|
-
/* @__PURE__ */
|
|
60
|
-
|
|
59
|
+
/* @__PURE__ */ r(
|
|
60
|
+
s.rect,
|
|
61
61
|
{
|
|
62
62
|
x: "18.5",
|
|
63
63
|
y: "13.4",
|
|
64
64
|
width: "1.6",
|
|
65
65
|
height: "3.2",
|
|
66
66
|
rx: "0.3",
|
|
67
|
-
fill:
|
|
67
|
+
fill: n,
|
|
68
68
|
stroke: "none",
|
|
69
69
|
animate: { opacity: [1, 1, 0, 0, 1] },
|
|
70
70
|
transition: { duration: 1.1, times: [0, 0.4, 0.5, 0.9, 1], repeat: 1 / 0 }
|
|
@@ -72,131 +72,65 @@ const L = w(function({ size: o = 24, className: a, ...r }, c) {
|
|
|
72
72
|
)
|
|
73
73
|
]
|
|
74
74
|
}
|
|
75
|
-
) : /* @__PURE__ */
|
|
75
|
+
) : /* @__PURE__ */ r(b, { ref: d, size: e, className: a, ...o });
|
|
76
76
|
}
|
|
77
|
-
),
|
|
78
|
-
//
|
|
79
|
-
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
uniform float t;
|
|
91
|
-
|
|
92
|
-
// Classic 2D simplex noise (Ashima Arts, MIT) — compact.
|
|
93
|
-
vec3 permute(vec3 x){return mod(((x*34.0)+1.0)*x,289.0);}
|
|
94
|
-
float snoise(vec2 v){
|
|
95
|
-
const vec4 C=vec4(0.211324865,0.366025404,-0.577350269,0.024390244);
|
|
96
|
-
vec2 i=floor(v+dot(v,C.yy));vec2 x0=v-i+dot(i,C.xx);
|
|
97
|
-
vec2 i1=(x0.x>x0.y)?vec2(1.0,0.0):vec2(0.0,1.0);
|
|
98
|
-
vec4 x12=x0.xyxy+C.xxzz;x12.xy-=i1;
|
|
99
|
-
i=mod(i,289.0);
|
|
100
|
-
vec3 p=permute(permute(i.y+vec3(0.0,i1.y,1.0))+i.x+vec3(0.0,i1.x,1.0));
|
|
101
|
-
vec3 m=max(0.5-vec3(dot(x0,x0),dot(x12.xy,x12.xy),dot(x12.zw,x12.zw)),0.0);
|
|
102
|
-
m=m*m;m=m*m;
|
|
103
|
-
vec3 x=2.0*fract(p*C.www)-1.0;vec3 h=abs(x)-0.5;vec3 ox=floor(x+0.5);vec3 a0=x-ox;
|
|
104
|
-
m*=1.79284291-0.85373472*(a0*a0+h*h);
|
|
105
|
-
vec3 g;g.x=a0.x*x0.x+h.x*x0.y;g.yz=a0.yz*x12.xz+h.yz*x12.yw;
|
|
106
|
-
return 130.0*dot(m,g);
|
|
77
|
+
), c = {
|
|
78
|
+
// Pink → purple → magenta → rose — the "AI" gradient.
|
|
79
|
+
ai: "#8b5cf6, #c026d3, #ec4899, #f0abfc, #a855f7, #8b5cf6",
|
|
80
|
+
// Original aurora: cyan → violet → magenta → amber.
|
|
81
|
+
aurora: "#22d3ee, #8b5cf6, #ec4899, #f59e0b, #22d3ee"
|
|
82
|
+
}, h = {
|
|
83
|
+
ai: "0 0 6px rgba(192,38,211,0.5), 0 0 2px rgba(139,92,246,0.6)",
|
|
84
|
+
aurora: "0 0 6px rgba(34,211,238,0.5), 0 0 2px rgba(139,92,246,0.6)"
|
|
85
|
+
}, l = "ai-thinking-orb-styles", g = `
|
|
86
|
+
@keyframes ai-orb-morph {
|
|
87
|
+
0%,100% { border-radius:58% 42% 55% 45% / 52% 58% 42% 48%; }
|
|
88
|
+
33% { border-radius:45% 55% 42% 58% / 58% 42% 55% 45%; }
|
|
89
|
+
66% { border-radius:52% 48% 60% 40% / 45% 52% 48% 55%; }
|
|
107
90
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
float r=length(p);
|
|
112
|
-
float a=atan(p.y,p.x);
|
|
113
|
-
|
|
114
|
-
// ── Alive silhouette ──────────────────────────────────────────────
|
|
115
|
-
// Several layers of moving noise deform the radius a LOT, so the orb
|
|
116
|
-
// visibly grows lobes and shrinks them — a living, bacteria-like blob.
|
|
117
|
-
float n1=snoise(vec2(cos(a),sin(a))*1.4 + vec2(t*0.5, t*0.37));
|
|
118
|
-
float n2=snoise(p*3.1 - vec2(t*0.43, t*0.31));
|
|
119
|
-
float n3=snoise(p*5.5 + vec2(t*0.6));
|
|
120
|
-
float wobble=n1*0.30 + n2*0.16 + n3*0.08;
|
|
121
|
-
// Slow breathing pulse on top of the wobble (grow ↔ shrink).
|
|
122
|
-
float breathe=0.06*sin(t*1.6);
|
|
123
|
-
float edge=0.70 + wobble + breathe;
|
|
124
|
-
float orb=smoothstep(edge,edge-0.20,r);
|
|
125
|
-
if(orb<0.01){ gl_FragColor=vec4(0.0); return; }
|
|
126
|
-
|
|
127
|
-
// ── Swirling internal color ───────────────────────────────────────
|
|
128
|
-
// Domain-warp the field with noise so the colors churn inside the orb
|
|
129
|
-
// (not just a static angular gradient).
|
|
130
|
-
float warp=snoise(p*2.0 + vec2(t*0.4, -t*0.3));
|
|
131
|
-
float f=0.5+0.5*sin(a*1.0 + t*1.1 + warp*2.5 + r*2.0);
|
|
132
|
-
vec3 c0=${t[0]};
|
|
133
|
-
vec3 c1=${t[1]};
|
|
134
|
-
vec3 c2=${t[2]};
|
|
135
|
-
vec3 c3=${t[3]};
|
|
136
|
-
vec3 col=mix(c0,c1,smoothstep(0.0,0.4,f));
|
|
137
|
-
col=mix(col,c2,smoothstep(0.35,0.7,f));
|
|
138
|
-
col=mix(col,c3,smoothstep(0.7,1.0,f));
|
|
139
|
-
|
|
140
|
-
// Moving bright core that drifts around (the "energy" inside).
|
|
141
|
-
vec2 coreOff=0.22*vec2(cos(t*0.9), sin(t*1.3));
|
|
142
|
-
float core=smoothstep(0.55,0.0,length(p-coreOff));
|
|
143
|
-
col+=core*0.35;
|
|
144
|
-
|
|
145
|
-
// Inner glow + bright fresnel rim.
|
|
146
|
-
float glow=smoothstep(0.0,0.6,1.0-r);
|
|
147
|
-
col+=glow*0.20;
|
|
148
|
-
float rim=smoothstep(edge-0.02,edge-0.18,r);
|
|
149
|
-
col=mix(col,vec3(1.0),(1.0-rim)*0.40*orb);
|
|
150
|
-
gl_FragColor=vec4(col,orb);
|
|
91
|
+
@keyframes ai-orb-breathe {
|
|
92
|
+
0%,100% { transform:scale(0.9) rotate(0deg); }
|
|
93
|
+
50% { transform:scale(1.08) rotate(8deg); }
|
|
151
94
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
return t.shaderSource(r, a), t.compileShader(r), r;
|
|
95
|
+
@keyframes ai-orb-spin { to { filter:hue-rotate(360deg); } }
|
|
96
|
+
@media (prefers-reduced-motion: reduce) {
|
|
97
|
+
.ai-orb { animation: ai-orb-breathe 3s ease-in-out infinite !important; }
|
|
156
98
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (!i)
|
|
162
|
-
return;
|
|
163
|
-
const s = Math.min(window.devicePixelRatio || 1, 2);
|
|
164
|
-
i.width = t * s, i.height = t * s;
|
|
165
|
-
const e = i.getContext("webgl", { premultipliedAlpha: !1, alpha: !0 });
|
|
166
|
-
if (!e)
|
|
99
|
+
`;
|
|
100
|
+
function p() {
|
|
101
|
+
u(() => {
|
|
102
|
+
if (typeof document > "u" || document.getElementById(l))
|
|
167
103
|
return;
|
|
168
|
-
const
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
let h = 0, m = 0;
|
|
178
|
-
const x = (f) => {
|
|
179
|
-
m || (m = f);
|
|
180
|
-
const R = (f - m) / 1e3 * o;
|
|
181
|
-
e.uniform1f(A, d ? 0.4 : R), e.drawArrays(e.TRIANGLES, 0, 3), d || (h = requestAnimationFrame(x));
|
|
182
|
-
};
|
|
183
|
-
return h = requestAnimationFrame(x), () => {
|
|
184
|
-
cancelAnimationFrame(h), e.getExtension("WEBGL_lose_context")?.loseContext();
|
|
185
|
-
};
|
|
186
|
-
}, [t, o, a]), /* @__PURE__ */ n(
|
|
187
|
-
"canvas",
|
|
104
|
+
const i = document.createElement("style");
|
|
105
|
+
i.id = l, i.textContent = g, document.head.appendChild(i);
|
|
106
|
+
}, []);
|
|
107
|
+
}
|
|
108
|
+
function I({ size: i = 16, palette: e = "ai", className: t }) {
|
|
109
|
+
p();
|
|
110
|
+
const n = c[e] ?? c.ai, a = h[e] ?? h.ai;
|
|
111
|
+
return /* @__PURE__ */ r(
|
|
112
|
+
"span",
|
|
188
113
|
{
|
|
189
|
-
|
|
190
|
-
className: r,
|
|
191
|
-
style: { width: t, height: t, display: "inline-block" },
|
|
114
|
+
className: `ai-orb${t ? ` ${t}` : ""}`,
|
|
192
115
|
role: "img",
|
|
193
|
-
"aria-label": "Thinking"
|
|
116
|
+
"aria-label": "Thinking",
|
|
117
|
+
style: {
|
|
118
|
+
display: "inline-block",
|
|
119
|
+
width: i,
|
|
120
|
+
height: i,
|
|
121
|
+
borderRadius: "50%",
|
|
122
|
+
flexShrink: 0,
|
|
123
|
+
background: `radial-gradient(circle at 32% 30%, rgba(255,255,255,0.65) 0%, transparent 38%), conic-gradient(from 0deg, ${n})`,
|
|
124
|
+
boxShadow: a,
|
|
125
|
+
animation: "ai-orb-morph 3.2s ease-in-out infinite, ai-orb-breathe 2.1s ease-in-out infinite, ai-orb-spin 4.5s linear infinite",
|
|
126
|
+
willChange: "border-radius, transform"
|
|
127
|
+
}
|
|
194
128
|
}
|
|
195
129
|
);
|
|
196
130
|
}
|
|
197
131
|
export {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
132
|
+
w as AnimatedTerminalIcon,
|
|
133
|
+
b as TerminalIcon,
|
|
134
|
+
I as ThinkingOrb
|
|
201
135
|
};
|
|
202
136
|
//# sourceMappingURL=brand.es.js.map
|
package/package.json
CHANGED