@nadicodeai/ui 12.1.133 → 12.1.134

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.
@@ -40,13 +40,16 @@ export type AgentOrbProps = AgentOrbBaseProps & ({
40
40
  * @instead A person is an `Avatar`. The system's own wait is the waiting line, never an orb. An orb
41
41
  * in artwork, such as a sign-in picture, takes `motion="ambient"` and claims no activity. An orb
42
42
  * that stands for an Agent shows her real state.
43
- * @behaviour The only thing that moves on its own. Idle turns at its form's own pace and breathes;
44
- * working and thinking move with their cue, the ribbon around working and three dots above
45
- * thinking; waiting holds; blocked makes one interrupted effort and stops; done celebrates once and
46
- * settles back into idle. A surface that only knows a machine checked in draws idle. No state draws
43
+ * @behaviour The only thing that moves on its own. Idle particles turn at 86.4% of the form's native pace,
44
+ * with a separate 6.4 s breath. Working sweeps a ribbon every 3.2 s; thinking passes three pulses
45
+ * over 2.4 s. Waiting leans softly as centered pause bars arrive; blocked recoils as a centered
46
+ * stop sign lands. Both entrances settle over 2 s, then waiting breathes and blocked holds still.
47
+ * Done celebrates once over 4.8 s, then rests at 72% of native particle speed with the Idle breath.
48
+ * A state change interrupts the previous gesture; `motionKey` replays it and `paused` freezes it. A surface that only knows a machine checked in draws idle. No state draws
47
49
  * a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue.
48
50
  * Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45
49
- * opacity so busy still reads as busy, and an ambient orb holds still.
51
+ * opacity so busy still reads as busy, an ambient orb holds still, and waiting and blocked keep
52
+ * their centered signs without an entrance gesture.
50
53
  * An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and
51
54
  * `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the
52
55
  * text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it
@@ -1 +1 @@
1
- {"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,KAAK,iBAAiB,GAAG;IACvB,4FAA4F;IAC5F,IAAI,EAAE,cAAc,CAAC;IACrB,wFAAwF;IACxF,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,qEAAqE;IACrE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAC3C,CAAC;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACrF,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,IAAS,EACT,QAAkB,EAClB,MAAc,EACd,KAAc,EACd,MAAiB,EACjB,SAAa,EACb,UAAkB,EAClB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,+BAyDf"}
1
+ {"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/components/agent-orb.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,OAAO,CAAC;AAE9D,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EACV,cAAc,EACd,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,YAAY,GACb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,KAAK,iBAAiB,GAAG;IACvB,4FAA4F;IAC5F,IAAI,EAAE,cAAc,CAAC;IACrB,wFAAwF;IACxF,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,qEAAqE;IACrE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAC3C,CAAC;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACrF,CAAC;IAAE,UAAU,EAAE,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,IAAS,EACT,QAAkB,EAClB,MAAc,EACd,KAAc,EACd,MAAiB,EACjB,SAAa,EACb,UAAkB,EAClB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,+BAyDf"}
@@ -14,13 +14,16 @@ import { cn } from "../lib/utils.js";
14
14
  * @instead A person is an `Avatar`. The system's own wait is the waiting line, never an orb. An orb
15
15
  * in artwork, such as a sign-in picture, takes `motion="ambient"` and claims no activity. An orb
16
16
  * that stands for an Agent shows her real state.
17
- * @behaviour The only thing that moves on its own. Idle turns at its form's own pace and breathes;
18
- * working and thinking move with their cue, the ribbon around working and three dots above
19
- * thinking; waiting holds; blocked makes one interrupted effort and stops; done celebrates once and
20
- * settles back into idle. A surface that only knows a machine checked in draws idle. No state draws
17
+ * @behaviour The only thing that moves on its own. Idle particles turn at 86.4% of the form's native pace,
18
+ * with a separate 6.4 s breath. Working sweeps a ribbon every 3.2 s; thinking passes three pulses
19
+ * over 2.4 s. Waiting leans softly as centered pause bars arrive; blocked recoils as a centered
20
+ * stop sign lands. Both entrances settle over 2 s, then waiting breathes and blocked holds still.
21
+ * Done celebrates once over 4.8 s, then rests at 72% of native particle speed with the Idle breath.
22
+ * A state change interrupts the previous gesture; `motionKey` replays it and `paused` freezes it. A surface that only knows a machine checked in draws idle. No state draws
21
23
  * a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue.
22
24
  * Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45
23
- * opacity so busy still reads as busy, and an ambient orb holds still.
25
+ * opacity so busy still reads as busy, an ambient orb holds still, and waiting and blocked keep
26
+ * their centered signs without an entrance gesture.
24
27
  * An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and
25
28
  * `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the
26
29
  * text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it
@@ -1,23 +1,54 @@
1
1
  import type { AgentOrbFigure } from "./agent-orb.js";
2
2
  export type AgentOrbState = "idle" | "working" | "waiting" | "blocked" | "thinking" | "done";
3
3
  export declare function nativeSpeed(form: AgentOrbFigure): number;
4
- export declare function stateSpeed(state: AgentOrbState, form: AgentOrbFigure): number;
4
+ export declare function stateSpeed(state: AgentOrbState, form: AgentOrbFigure, age?: number, timing?: {
5
+ wait: number;
6
+ confirm: number;
7
+ transition: number;
8
+ doneDuration: number;
9
+ blockedDuration: number;
10
+ gestureAge: (age: number) => number;
11
+ settle: (age: number, delay?: number) => number;
12
+ }): number;
5
13
  /**
6
14
  * Reduced motion turns movement off and keeps opacity and colour, so a
7
15
  * thinking or working orb breathes between full ink and 0.45 over 1.6 s,
8
16
  * ease-in-out, and busy still reads as busy. Every other state holds still.
9
17
  */
10
18
  export declare function reducedBreath(state: AgentOrbState, seconds: number): number;
11
- export declare function motionPose(form: AgentOrbFigure, state: AgentOrbState, age: number): {
19
+ export declare function readOrbTiming(style?: CSSStyleDeclaration): {
20
+ wait: number;
21
+ confirm: number;
22
+ transition: number;
23
+ doneDuration: number;
24
+ blockedDuration: number;
25
+ gestureAge: (age: number) => number;
26
+ settle: (age: number, delay?: number) => number;
27
+ };
28
+ export declare function motionPose(state: AgentOrbState, age: number, timing?: {
29
+ wait: number;
30
+ confirm: number;
31
+ transition: number;
32
+ doneDuration: number;
33
+ blockedDuration: number;
34
+ gestureAge: (age: number) => number;
35
+ settle: (age: number, delay?: number) => number;
36
+ }, reduced?: boolean): {
12
37
  sx: number;
13
38
  sy: number;
14
39
  x: number;
15
40
  y: number;
16
41
  rotation: number;
17
- split: number;
18
- opacity: number;
19
42
  };
20
43
  export declare function paintOrbCue(context: CanvasRenderingContext2D, state: AgentOrbState, size: number, seconds: number, reduced: boolean, colors: readonly string[], depth: "back" | "front",
21
44
  /** The orb's whole ink, so the cue breathes with the body under reduced motion. */
22
- ink?: number): void;
45
+ ink?: number, timing?: {
46
+ wait: number;
47
+ confirm: number;
48
+ transition: number;
49
+ doneDuration: number;
50
+ blockedDuration: number;
51
+ gestureAge: (age: number) => number;
52
+ settle: (age: number, delay?: number) => number;
53
+ }, statusColor?: string): void;
23
54
  //# sourceMappingURL=agent-orb-motion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-orb-motion.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb-motion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAc7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,UAE/C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,UAGpE;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAIlE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM;;;;;;;;EA0CjF;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,GAAG,OAAO;AACvB,mFAAmF;AACnF,GAAG,SAAI,QAiER"}
1
+ {"version":3,"file":"agent-orb-motion.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb-motion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAc7F,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,UAE/C;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,cAAc,EACpB,GAAG,SAAI,EACP,MAAM;;;;;;sBA2Cc,MAAM;kBACV,MAAM;CA5CA,UAWvB;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,UAIlE;AAED,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,mBAAmB;;;;;;sBAgBnC,MAAM;kBACV,MAAM;EAGvB;AAUD,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,EACX,MAAM;;;;;;sBAjBc,MAAM;kBACV,MAAM;CAgBA,EACtB,OAAO,UAAQ;;;;;;EA+ChB;AA6ED,wBAAgB,WAAW,CACzB,OAAO,EAAE,wBAAwB,EACjC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,KAAK,EAAE,MAAM,GAAG,OAAO;AACvB,mFAAmF;AACnF,GAAG,SAAI,EACP,MAAM;;;;;;sBAxJc,MAAM;kBACV,MAAM;CAuJA,EACtB,WAAW,SAA8B,QA4E1C"}
@@ -1,19 +1,27 @@
1
+ import { spring } from "motion";
1
2
  const personalities = {
2
- ribbon: { speed: 0.55, tilt: 0.15 },
3
- nadia: { speed: 0.55, tilt: 0.15 },
4
- sofia: { speed: 0.55, tilt: -0.15 },
5
- lattice: { speed: 0.28, tilt: -0.12 },
6
- orbit: { speed: 0.7, tilt: 0.2 },
7
- globe: { speed: 0.35, tilt: -0.16 },
8
- network: { speed: 0.55, tilt: 0.1 },
9
- braid: { speed: 0.65, tilt: -0.2 },
10
- morph: { speed: 0.9, tilt: 0.12 },
3
+ ribbon: { speed: 0.55 },
4
+ nadia: { speed: 0.55 },
5
+ sofia: { speed: 0.55 },
6
+ lattice: { speed: 0.28 },
7
+ orbit: { speed: 0.7 },
8
+ globe: { speed: 0.35 },
9
+ network: { speed: 0.55 },
10
+ braid: { speed: 0.65 },
11
+ morph: { speed: 0.9 },
11
12
  };
12
13
  export function nativeSpeed(form) {
13
14
  return personalities[form].speed;
14
15
  }
15
- export function stateSpeed(state, form) {
16
- const speed = { idle: 1, working: 1, thinking: 1, waiting: 0, blocked: 0, done: 0.65 };
16
+ export function stateSpeed(state, form, age = 0, timing = defaultTiming) {
17
+ const speed = {
18
+ idle: 0.864,
19
+ working: 1,
20
+ thinking: 0.55,
21
+ waiting: 0,
22
+ blocked: 0,
23
+ done: age >= timing.doneDuration ? 0.72 : 0.65,
24
+ };
17
25
  return speed[state] * nativeSpeed(form);
18
26
  }
19
27
  /** The breath's period, in seconds. */
@@ -29,58 +37,166 @@ export function reducedBreath(state, seconds) {
29
37
  const phase = (1 - Math.cos((seconds * Math.PI * 2) / BREATH_SECONDS)) / 2;
30
38
  return 1 - 0.55 * phase;
31
39
  }
32
- export function motionPose(form, state, age) {
33
- const personality = personalities[form];
40
+ export function readOrbTiming(style) {
41
+ const seconds = (name, fallback) => {
42
+ const token = style?.getPropertyValue(`--nc-duration-${name}`).trim() ?? "";
43
+ return token ? Number.parseFloat(token) * (token.endsWith("ms") ? 0.001 : 1) : fallback;
44
+ };
45
+ const wait = seconds("wait", 1.6);
46
+ const confirm = seconds("confirm", 0.18);
47
+ const transition = seconds("transition", 0.24);
48
+ const period = (beats) => Math.round(wait * beats * 1000) / 1000;
49
+ const gesture = spring({ keyframes: [0, 1], duration: transition * 2000, bounce: 0.1 });
50
+ return {
51
+ wait,
52
+ confirm,
53
+ transition,
54
+ doneDuration: period(3),
55
+ blockedDuration: period(1.25),
56
+ gestureAge: (age) => (age * transition * 2) / wait,
57
+ settle: (age, delay = 0) => age < delay ? 0 : gesture.next((age - delay) * 1000).value,
58
+ };
59
+ }
60
+ const defaultTiming = readOrbTiming();
61
+ const clamp = (value) => Math.min(1, Math.max(0, value));
62
+ const smooth = (value) => {
63
+ const t = clamp(value);
64
+ return t * t * (3 - 2 * t);
65
+ };
66
+ export function motionPose(state, age, timing = defaultTiming, reduced = false) {
34
67
  let sx = 0.82;
35
68
  let sy = 0.82;
36
69
  let y = 0;
37
- const x = 0;
70
+ let x = 0;
38
71
  let rotation = 0;
39
- const split = 0;
40
- let opacity = 1;
41
72
  if (state === "idle") {
42
- const breath = Math.sin((age * Math.PI) / 2);
73
+ const breath = Math.sin(((reduced ? 0.6 : age) * Math.PI * 2) / (timing.wait * 4));
43
74
  sx += breath * 0.01;
44
75
  sy += breath * 0.01;
45
76
  y = -breath * 0.004;
46
77
  }
47
- else if (state === "waiting") {
48
- sx = 0.8;
49
- sy = 0.84;
50
- y = -0.015;
51
- opacity = 0.75;
78
+ else if (!reduced && state === "waiting") {
79
+ const gestureAge = timing.gestureAge(age);
80
+ const breath = Math.sin((age * Math.PI * 2) / (timing.wait * 3));
81
+ const anticipation = Math.sin(clamp(gestureAge / timing.confirm) * Math.PI);
82
+ const lean = timing.settle(gestureAge, timing.confirm * 0.55);
83
+ const scale = 1 - anticipation * 0.018 + breath * 0.006;
84
+ sx *= scale;
85
+ sy *= scale;
86
+ y = -lean * 0.018;
87
+ rotation = (-lean * 4.5 * Math.PI) / 180;
52
88
  }
53
- else if (state === "blocked") {
54
- const stop = Math.min(1, age / 0.25);
55
- const effort = Math.sin(stop * Math.PI);
56
- sx = 0.8 + effort * 0.015;
57
- sy = 0.82 - stop * 0.08;
58
- y = stop * 0.025 - effort * 0.018;
59
- rotation = personality.tilt * stop * 0.4;
60
- opacity = 1 - stop * 0.4;
89
+ else if (!reduced && state === "blocked") {
90
+ const gestureAge = timing.gestureAge(age);
91
+ const strikeAt = timing.confirm * 0.85;
92
+ const recoil = smooth(gestureAge / strikeAt) * (1 - timing.settle(gestureAge, strikeAt));
93
+ sx *= 1 - recoil * 0.018;
94
+ sy *= 1 + recoil * 0.012;
95
+ x = -recoil * 0.034;
96
+ y = recoil * 0.014;
97
+ rotation = (-recoil * 4 * Math.PI) / 180;
61
98
  }
62
- else if (state === "done") {
63
- if (age < 0.18) {
64
- const anticipation = Math.sin((Math.PI * age) / 0.18);
99
+ else if (!reduced && state === "done") {
100
+ const phase = (age * 1.3) / (timing.wait * 2.25);
101
+ if (phase < 0.18) {
102
+ const anticipation = Math.sin((Math.PI * phase) / 0.18);
65
103
  sx += 0.03 * anticipation;
66
104
  sy -= 0.04 * anticipation;
67
105
  y = 0.012 * anticipation;
68
106
  }
69
- else if (age < 1.3) {
70
- const leap = (age - 0.18) / 1.12;
107
+ else if (phase < 1.3) {
108
+ const leap = (phase - 0.18) / 1.12;
71
109
  y = -0.07 * Math.sin(Math.PI * leap);
72
110
  sx += 0.025 * Math.sin(Math.PI * leap);
73
111
  sy += 0.035 * Math.sin(Math.PI * leap);
74
112
  rotation = Math.sin(leap * Math.PI * 2) * 0.07;
75
113
  }
76
114
  }
77
- return { sx, sy, x, y, rotation, split, opacity };
115
+ return { sx, sy, x, y, rotation };
116
+ }
117
+ // Lucide Pause and Ban geometry, lucide-static 1.58.0, ISC licence.
118
+ function paintHeldCue(context, state, size, age, reduced, color, timing) {
119
+ const gestureAge = timing.gestureAge(age);
120
+ const enter = reduced ? 1 : smooth((gestureAge - timing.confirm * 0.35) / timing.confirm);
121
+ const landed = reduced ? 1 : timing.settle(gestureAge, timing.confirm * 0.35);
122
+ const side = Math.max(7, Math.min(36, size * 0.26));
123
+ context.save();
124
+ context.fillStyle = color;
125
+ context.strokeStyle = color;
126
+ context.globalAlpha = enter * 0.95;
127
+ context.translate(size / 2, size / 2);
128
+ if (state === "waiting") {
129
+ const lean = reduced ? 0 : timing.settle(gestureAge, timing.confirm * 0.55);
130
+ const breath = reduced ? 0 : Math.sin((age * Math.PI * 2) / (timing.wait * 3));
131
+ context.translate(0, (1 - landed) * -0.12 * side);
132
+ context.rotate((-lean * 2 * Math.PI) / 180);
133
+ const scale = 0.94 + landed * 0.06;
134
+ context.scale(scale, scale);
135
+ context.scale(side / 24, side / 24);
136
+ for (const [index, x] of [14, 5].entries()) {
137
+ const arrival = reduced
138
+ ? 1
139
+ : timing.settle(gestureAge, timing.confirm * (index === 0 ? 0.65 : 0.2));
140
+ const direction = index === 0 ? 1 : -1;
141
+ context.save();
142
+ context.globalAlpha = enter * 0.95 * clamp(arrival) * (reduced ? 1 : 0.96 + breath * 0.04);
143
+ context.translate(x - 9.5 + direction * (1 - arrival) * 1.45 * 5, (1 - arrival) * -0.24 * 18);
144
+ context.rotate((direction * (1 - arrival) * 14 * Math.PI) / 180);
145
+ context.scale(1, 1 + (1 - arrival) * 0.12);
146
+ context.beginPath();
147
+ context.roundRect(-2.5, -9, 5, 18, 1);
148
+ context.fill();
149
+ context.restore();
150
+ }
151
+ }
152
+ else {
153
+ context.translate(0, (1 - landed) * -0.1 * side);
154
+ context.rotate(((1 - landed) * -12 * Math.PI) / 180);
155
+ const scale = 1 + (1 - landed) * 0.18;
156
+ context.scale(scale, scale);
157
+ context.scale(side / 24, side / 24);
158
+ context.lineWidth = Math.max(1.6, 24 / side);
159
+ context.lineCap = "round";
160
+ context.beginPath();
161
+ context.arc(0, 0, 10, 0, Math.PI * 2);
162
+ context.stroke();
163
+ const slash = reduced ? 1 : smooth((gestureAge - timing.confirm * 0.8) / timing.confirm);
164
+ context.beginPath();
165
+ context.moveTo(-7.071, -7.071);
166
+ context.lineTo(-7.071 + 14.141 * slash, -7.071 + 14.142 * slash);
167
+ context.stroke();
168
+ if (!reduced && size >= 40) {
169
+ const impact = clamp((gestureAge - timing.confirm * 0.85) / timing.transition);
170
+ context.globalAlpha *= Math.sin(impact * Math.PI) * 0.65;
171
+ context.lineWidth = (1.4 * 24) / side;
172
+ for (const direction of [-1, 1]) {
173
+ context.beginPath();
174
+ const x = direction * (14.52 + impact * 5.472);
175
+ const y = direction * (10.34 + impact * 1.68);
176
+ context.moveTo(x - 1.612, y - 1.612);
177
+ context.lineTo(x + 1.612, y + 1.612);
178
+ context.stroke();
179
+ }
180
+ }
181
+ }
182
+ context.restore();
78
183
  }
79
184
  export function paintOrbCue(context, state, size, seconds, reduced, colors, depth,
80
185
  /** The orb's whole ink, so the cue breathes with the body under reduced motion. */
81
- ink = 1) {
186
+ ink = 1, timing = defaultTiming, statusColor = colors[0] ?? "currentColor") {
187
+ if (state === "waiting" || state === "blocked") {
188
+ if (depth === "front")
189
+ paintHeldCue(context, state, size, seconds, reduced, statusColor, timing);
190
+ return;
191
+ }
82
192
  if (state !== "working" && state !== "thinking" && state !== "done")
83
193
  return;
194
+ seconds *=
195
+ state === "done"
196
+ ? 3.1 / timing.doneDuration
197
+ : state === "working"
198
+ ? 7.2 / (timing.wait * 2)
199
+ : 3.6 / (timing.wait * 1.5);
84
200
  context.save();
85
201
  if (state === "thinking") {
86
202
  if (depth === "front") {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,aAAa,EAMnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE7D,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,cAAc,CAAC;AACxD,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAiDlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAuDpF;AAqGD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAClD,CAAC;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAExF,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAoB;;sBAIzC,OAAO;qBAAuB,aAAa;EAoMvF"}
1
+ {"version":3,"file":"agent-orb.d.ts","sourceRoot":"","sources":["../../src/internal/agent-orb.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,QAAQ,EAEb,KAAK,QAAQ,EAId,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,aAAa,EAOnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE7D,kDAAkD;AAClD,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,cAAc,CAAC;AACxD,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAyDlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAuDpF;AA6HD,KAAK,iBAAiB,GAAG;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAClD,CAAC;IAAE,MAAM,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAExF,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAoB;;sBAIzC,OAAO;qBAAuB,aAAa;EA0MvF"}
@@ -1,5 +1,5 @@
1
1
  import { finalizeFrame, MODE_FRAMES, makeProj, radiusScale, resolvePreset, } from "thinking-orbs/engine";
2
- import { motionPose, nativeSpeed, paintOrbCue, reducedBreath, stateSpeed, } from "./agent-orb-motion.js";
2
+ import { motionPose, nativeSpeed, paintOrbCue, reducedBreath, readOrbTiming, stateSpeed, } from "./agent-orb-motion.js";
3
3
  const agentOrbForms = {
4
4
  orbit: "working",
5
5
  globe: "searching",
@@ -27,7 +27,15 @@ const presenceWeights = {
27
27
  */
28
28
  const nadiaStripes = ["--nc-identity-azzurro", "--nc-identity-verde", null, "--nc-identity-rosso"];
29
29
  const celebrationTokens = ["--nc-acqua-700", "--nc-viola-700", "--nc-warning", "--nc-rosso-700"];
30
- const appearanceTokens = [...celebrationTokens, ...nadiaStripes.filter((token) => token !== null)];
30
+ const statusTokens = { waiting: "--nc-warning-deep", blocked: "--nc-error" };
31
+ const appearanceTokens = [
32
+ ...celebrationTokens,
33
+ ...nadiaStripes.filter((token) => token !== null),
34
+ ...Object.values(statusTokens),
35
+ "--nc-duration-wait",
36
+ "--nc-duration-confirm",
37
+ "--nc-duration-transition",
38
+ ];
31
39
  /**
32
40
  * Sofia's four stripes: cobalto, giallo, the orb's own pigment and arancio, the
33
41
  * identity hues Nadia does not wear, so side by side the two carry all six.
@@ -122,22 +130,25 @@ function paintAgentOrb(context, input) {
122
130
  ? facing(stripedRibbonFrame(size, seconds, preset.opts), size)
123
131
  : MODE_FRAMES[preset.mode](size, seconds, preset.opts);
124
132
  context.clearRect(0, 0, size, size);
125
- const pose = motionPose(form, input.motion === "ambient" ? "idle" : state, reduced ? (state === "done" ? 2 : 0.6) : age);
126
- const gestureSeconds = reduced ? 0.8 : age / (state === "done" ? 0.575 : 0.2875);
133
+ const done = state === "done" && age >= input.timing.doneDuration;
134
+ const visualState = input.motion === "ambient" || done ? "idle" : state;
135
+ const poseAge = input.motion === "ambient" ? 0 : done ? age - input.timing.doneDuration : age;
136
+ const pose = motionPose(visualState, poseAge, input.timing, reduced);
137
+ const cueAge = done ? age - input.timing.doneDuration : age;
138
+ const statusColor = visualState === "waiting" || visualState === "blocked"
139
+ ? input.statusColors[visualState]
140
+ : color;
127
141
  const project = (x, y) => {
128
142
  const dx = (x - size / 2) * pose.sx;
129
143
  const dy = (y - size / 2) * pose.sy;
130
144
  return [
131
- size / 2 +
132
- dx * Math.cos(pose.rotation) -
133
- dy * Math.sin(pose.rotation) +
134
- (pose.x + Math.sign(dx) * pose.split) * size,
145
+ size / 2 + dx * Math.cos(pose.rotation) - dy * Math.sin(pose.rotation) + pose.x * size,
135
146
  size / 2 + dx * Math.sin(pose.rotation) + dy * Math.cos(pose.rotation) + pose.y * size,
136
147
  ];
137
148
  };
138
- const ink = pose.opacity * breath;
149
+ const ink = breath;
139
150
  if (input.motion === "status") {
140
- paintOrbCue(context, state, size, gestureSeconds, reduced, celebrationColors, "back", breath);
151
+ paintOrbCue(context, visualState, size, cueAge, reduced, celebrationColors, "back", breath, input.timing, statusColor);
141
152
  }
142
153
  context.fillStyle = color;
143
154
  context.strokeStyle = color;
@@ -159,7 +170,7 @@ function paintAgentOrb(context, input) {
159
170
  }
160
171
  context.globalAlpha = 1;
161
172
  if (input.motion === "status") {
162
- paintOrbCue(context, state, size, gestureSeconds, reduced, celebrationColors, "front", breath);
173
+ paintOrbCue(context, visualState, size, cueAge, reduced, celebrationColors, "front", breath, input.timing, statusColor);
163
174
  }
164
175
  }
165
176
  export function mountAgentOrb(canvas, options) {
@@ -185,6 +196,8 @@ export function mountAgentOrb(canvas, options) {
185
196
  let celebrationColors = [color];
186
197
  let stripeColors = [color];
187
198
  let appearanceKey = "";
199
+ let timing = readOrbTiming();
200
+ let statusColors = { waiting: color, blocked: color };
188
201
  /**
189
202
  * The box the orb is displayed at, in CSS pixels. A canvas stretched by
190
203
  * layout reads as pixels unless the engine paints at that size, so the box
@@ -213,6 +226,8 @@ export function mountAgentOrb(canvas, options) {
213
226
  motion: orbMotion,
214
227
  celebrationColors,
215
228
  stripeColors,
229
+ statusColors,
230
+ timing,
216
231
  });
217
232
  }
218
233
  function running() {
@@ -223,7 +238,7 @@ export function mountAgentOrb(canvas, options) {
223
238
  return orbMotion === "status" && (state === "thinking" || state === "working");
224
239
  if (orbMotion === "ambient")
225
240
  return true;
226
- return state !== "waiting" && !(state === "blocked" && age >= 0.3);
241
+ return !(state === "blocked" && age >= timing.blockedDuration);
227
242
  }
228
243
  function tick(now) {
229
244
  request = 0;
@@ -235,21 +250,19 @@ export function mountAgentOrb(canvas, options) {
235
250
  breath += elapsed;
236
251
  else {
237
252
  seconds +=
238
- elapsed * (orbMotion === "ambient" ? nativeSpeed(form) : stateSpeed(state, form));
253
+ elapsed *
254
+ (orbMotion === "ambient" ? nativeSpeed(form) : stateSpeed(state, form, age, timing));
239
255
  if (orbMotion === "status")
240
- age += elapsed * (state === "done" ? 0.575 : 0.2875);
241
- if (state === "done" && age >= 1.8) {
242
- state = "idle";
243
- age = 0;
244
- }
256
+ age += elapsed;
245
257
  }
246
258
  }
247
259
  previous = now;
248
- if (now - lastPaint >= 1000 / 30) {
260
+ if (now - lastPaint >= 1000 / 30 || !running()) {
249
261
  paint();
250
262
  lastPaint = now;
251
263
  }
252
- request = requestAnimationFrame(tick);
264
+ if (running())
265
+ request = requestAnimationFrame(tick);
253
266
  }
254
267
  function play() {
255
268
  cancelAnimationFrame(request);
@@ -293,6 +306,11 @@ export function mountAgentOrb(canvas, options) {
293
306
  const appearance = getComputedStyle(canvas);
294
307
  appearanceKey = readAppearanceKey(appearance, painted);
295
308
  color = appearance.color;
309
+ timing = readOrbTiming(appearance);
310
+ statusColors = {
311
+ waiting: computedColor(appearance.getPropertyValue(statusTokens.waiting).trim() || color),
312
+ blocked: computedColor(appearance.getPropertyValue(statusTokens.blocked).trim() || color),
313
+ };
296
314
  celebrationColors = celebrationTokens.map((token) => computedColor(`color-mix(in oklch, ${appearance.getPropertyValue(token).trim() || color} 75%, white)`));
297
315
  stripeColors = (figureStripes[form] ?? []).map((token) => (token && appearance.getPropertyValue(token).trim()) || color);
298
316
  play();
@@ -37,7 +37,7 @@ function CompanyCardSpecimen() {
37
37
  }
38
38
  function HiveSceneSpecimen() {
39
39
  const art = useEmptyArt();
40
- return (_jsx("div", { className: "h-96 overflow-hidden rounded-md", children: _jsx(HiveScene, { className: "size-full", logo: { src: HIVE_LOGO, label: "Alveare" }, mode: "join", picture: _jsx("img", { alt: "", className: "size-full object-cover", src: art.teams }), children: _jsx("p", { className: "text-lg font-semibold", children: "Join Acme's workspace" }) }) }));
40
+ return (_jsx("div", { className: "h-96 overflow-hidden rounded-md", style: { contain: "paint" }, children: _jsx(HiveScene, { className: "size-full", logo: { src: HIVE_LOGO, label: "Alveare" }, mode: "join", picture: _jsx("img", { alt: "", className: "size-full object-cover", src: art.teams }), children: _jsx("p", { className: "text-lg font-semibold", children: "Join Acme's workspace" }) }) }));
41
41
  }
42
42
  function NadiaPresenceSpecimen() {
43
43
  const [reveal, setReveal] = useState(0.6);
@@ -1,8 +1,9 @@
1
1
  declare function ActionStatusSpecimen(): import("react").JSX.Element;
2
2
  declare function GaugeSpecimen(): import("react").JSX.Element;
3
+ declare function AgentOrbSpecimen(): import("react").JSX.Element;
3
4
  export declare const STATUS: {
4
5
  ActionStatus: typeof ActionStatusSpecimen;
5
- AgentOrb: () => import("react").JSX.Element;
6
+ AgentOrb: typeof AgentOrbSpecimen;
6
7
  AppMark: () => import("react").JSX.Element;
7
8
  ArchIcon: () => import("react").JSX.Element;
8
9
  Avatar: () => import("react").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/showcase/specimens/status.tsx"],"names":[],"mappings":"AAwDA,iBAAS,oBAAoB,gCAiB5B;AAYD,iBAAS,aAAa,gCA2DrB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAoQQ,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/showcase/specimens/status.tsx"],"names":[],"mappings":"AAyDA,iBAAS,oBAAoB,gCAiB5B;AAYD,iBAAS,aAAa,gCA2DrB;AAWD,iBAAS,gBAAgB,gCAkExB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CAuPQ,CAAC"}
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useId } from "react";
3
+ import { useId, useState } from "react";
4
4
  import { Building2, Check, Clock, CreditCard, Database, Lock, Mail, MonitorDown, Pause, Save, Wrench, } from "lucide-react";
5
5
  import { ActionStatus } from "../../components/action-status.js";
6
6
  import { AgentOrb } from "../../components/agent-orb.js";
7
7
  import { AppMark, composioLogo } from "../../components/app-mark.js";
8
8
  import { Avatar, AvatarFallback, AvatarGroup, AvatarWithIcon } from "../../components/avatar.js";
9
9
  import { Badge } from "../../components/badge.js";
10
+ import { Button } from "../../components/button.js";
10
11
  import { BrandMark, BrandWordmark } from "../../components/brand.js";
11
12
  import { CheckCounts, CheckState } from "../../components/check-counts.js";
12
13
  import { FileTypeIcon } from "../../components/file-type-icon.js";
@@ -21,7 +22,7 @@ import { RecordIdentity } from "../../components/record-identity.js";
21
22
  import { StatusBadge } from "../../components/status-badge.js";
22
23
  import { Tag } from "../../components/tag.js";
23
24
  import { ObjectFactValue } from "../../components/object-fact-value.js";
24
- import { ARANCIO, COBALTO, nothing, VERDE } from "../samples.js";
25
+ import { COBALTO, nothing } from "../samples.js";
25
26
  const SAMPLE_LOGO = `data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 16"><rect width="64" height="16" fill="white"/><text x="0" y="13" fill="navy" font-family="sans-serif" font-size="14" font-weight="700">ROSSI</text></svg>')}`;
26
27
  const SAMPLE_ICON = `data:image/svg+xml,${encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="7" fill="royalblue"/><path d="M10 9h8a5 5 0 0 1 0 10h-4v5h-4z" fill="white"/></svg>')}`;
27
28
  const MEMBERS = [
@@ -41,9 +42,22 @@ function GaugeRow({ label, gauge }) {
41
42
  function GaugeSpecimen() {
42
43
  return (_jsxs("div", { className: "grid gap-6", children: [_jsxs("div", { className: "flex flex-wrap items-end gap-6", children: [_jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, size: "xs", value: 42 }), label: "Storage used" }), _jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, size: "sm", value: 64 }), label: "Plan used" }), _jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, size: "md", value: 87 }), label: "Tasks done" }), _jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, size: "lg", value: 99.97 }), label: "Cache hit rate" })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-6", children: [_jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, showValue: true, size: "sm", value: 64 }), label: "Plan used, 64%" }), _jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, showValue: true, size: "md", value: 87 }), label: "Tasks done, 87%" }), _jsx(GaugeRow, { gauge: (id) => _jsx(Gauge, { "aria-labelledby": id, showValue: true, size: "lg", value: 99.97 }), label: "Cache hit rate, 99.97%" })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-6", children: [_jsx(GaugeRow, { gauge: (id) => (_jsx(Gauge, { "aria-labelledby": id, showValue: true, size: "md", tone: "warning", value: 82 })), label: "Model budget, 82%: close to the limit" }), _jsx(GaugeRow, { gauge: (id) => (_jsx(Gauge, { "aria-labelledby": id, showValue: true, size: "md", tone: "critical", value: 97 })), label: "Mailbox space, 97%: almost full" }), _jsx(GaugeRow, { gauge: (id) => (_jsx(Gauge, { "aria-labelledby": id, size: "md", value: 58, children: _jsx(Database, { "aria-hidden": "true" }) })), label: "Memory used" })] })] }));
43
44
  }
45
+ const ORB_STATES = [
46
+ "idle",
47
+ "working",
48
+ "thinking",
49
+ "waiting",
50
+ "blocked",
51
+ "done",
52
+ ];
53
+ function AgentOrbSpecimen() {
54
+ const [replay, setReplay] = useState(0);
55
+ const [state, setState] = useState("waiting");
56
+ return (_jsxs("div", { className: "grid gap-6", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [ORB_STATES.map((option) => (_jsx(Button, { variant: state === option ? "default" : "outline", size: "sm", "aria-pressed": state === option, onClick: () => setState(option), children: option }, option))), _jsx(Button, { variant: "outline", size: "sm", onClick: () => setReplay((value) => value + 1), children: "Replay motion" })] }), _jsx("div", { className: "flex flex-wrap items-end gap-6", children: ORB_STATES.map((status) => (_jsxs("div", { className: "grid justify-items-center gap-2 text-sm", children: [_jsx(AgentOrb, { form: "nadia", label: `Nadia, ${status}`, size: 96, state: status, motionKey: replay }), _jsx("span", { children: status })] }, status))) }), _jsx("div", { className: "flex flex-wrap items-end gap-6", children: [20, 24, 32, 40, 64, 96, 160].map((size) => (_jsxs("div", { className: "grid justify-items-center gap-2 text-sm", children: [_jsx(AgentOrb, { form: "nadia", label: `Nadia, ${state}, ${size} px`, size: size, state: state, motionKey: replay }), _jsxs("span", { children: [size, " px"] })] }, size))) }), _jsx("div", { className: "flex flex-wrap items-end gap-6", children: ["sofia", "ribbon", "lattice", "orbit", "globe", "network", "braid", "morph"].map((form) => (_jsx(AgentOrb, { form: form, label: `${form}, ${state}`, color: form === "sofia" ? undefined : COBALTO, size: 64, state: state, motionKey: replay }, form))) })] }));
57
+ }
44
58
  export const STATUS = {
45
59
  ActionStatus: ActionStatusSpecimen,
46
- AgentOrb: () => (_jsxs("div", { className: "flex flex-wrap items-end gap-6", children: [_jsx(AgentOrb, { color: COBALTO, form: "orbit", label: "Invoices, working", size: 64, state: "working" }), _jsx(AgentOrb, { color: VERDE, form: "lattice", label: "Orders, waiting for you", size: 64, state: "waiting" }), _jsx(AgentOrb, { color: ARANCIO, form: "braid", label: "Support", size: 32 }), _jsx(AgentOrb, { form: "nadia", label: "Nadia", size: 96 })] })),
60
+ AgentOrb: AgentOrbSpecimen,
47
61
  AppMark: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-3 text-sm", children: [_jsx(AppMark, { app: "gmail", logo: composioLogo("gmail") }), "Gmail", _jsx(AppMark, { app: "telegram", platform: "telegram" }), "Telegram", _jsx(AppMark, { app: "Fatture in Cloud" }), "Fatture in Cloud"] })),
48
62
  ArchIcon: () => (_jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm", children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx(ArchIcon, { "aria-hidden": "true", className: "size-5" }), "Company"] }), _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(ApprovalsIcon, { "aria-hidden": "true", className: "size-5" }), "Approvals"] }), _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(AgentIcon, { "aria-hidden": "true", className: "size-5" }), "Agents"] })] })),
49
63
  Avatar: () => (_jsxs("div", { className: "grid gap-6", children: [_jsx("div", { className: "flex flex-wrap items-center gap-4", children: ["xs", "sm", "default", "lg"].map((size) => (_jsx(Avatar, { label: "Ada Rossi", size: size, children: _jsx(AvatarFallback, { children: size === "xs" ? "A" : "AR" }) }, size))) }), _jsxs("div", { className: "flex flex-wrap items-center gap-6", children: [_jsx(AvatarGroup, { label: "5 members", limit: 3, members: MEMBERS }), _jsx(AvatarGroup, { label: "5 members, last on top", limit: 3, members: MEMBERS, reverse: true }), _jsx(AvatarGroup, { label: "5 members, tight", limit: 3, members: MEMBERS, overlap: 6 })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-6 text-sm", children: [_jsxs("span", { className: "flex items-center gap-2", children: [_jsx(AvatarWithIcon, { icon: _jsx(Check, {}), iconBackground: true, label: "Ada Rossi, approved", name: "Ada Rossi" }), "Ada Rossi"] }), _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(AvatarWithIcon, { icon: _jsx(Pause, {}), iconBackground: true, label: "Marco Bianchi, paused", name: "Marco Bianchi" }), "Marco Bianchi"] }), _jsx(AvatarWithIcon, { icon: _jsx(Clock, {}), iconBackground: true, label: "Luca Conti, waiting for approval", name: "Luca Conti" })] })] })),
@@ -626,7 +626,7 @@ export const USAGE = [
626
626
  summary: "An Agent, anywhere: her orb, the only thing that moves on its own.",
627
627
  when: 'An Agent, anywhere: 20 in the sidebar, 32 in a row, 64 on her Profile card, 96 in an Agent card, 160 on entry. There is no other Agent picture. The sizes are 20, 24, 32, 40, 64, 96 and 160 px, and no other. On a photograph the orb takes the stronger `presence="over-picture"` weight; everywhere else it is `plain`.',
628
628
  instead: 'A person is an `Avatar`. The system\'s own wait is the waiting line, never an orb. An orb in artwork, such as a sign-in picture, takes `motion="ambient"` and claims no activity. An orb that stands for an Agent shows her real state.',
629
- behaviour: "The only thing that moves on its own. Idle turns at its form's own pace and breathes; working and thinking move with their cue, the ribbon around working and three dots above thinking; waiting holds; blocked makes one interrupted effort and stops; done celebrates once and settles back into idle. A surface that only knows a machine checked in draws idle. No state draws a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue. Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45 opacity so busy still reads as busy, and an ambient orb holds still. An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro, verde, the text colour and rosso along its whole length. Sofia, the Agent that looks up a new company, is her sister, the form `sofia`: the same ribbon turned to face Nadia's, striped cobalto, giallo, the text colour and arancio, the identity hues Nadia does not wear. Neither figure is ever stored as an Agent's look. An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent always draws as Nadia, an unknown form draws `orbit`, an unknown colour the text colour, and a stored rosso draws arancio. The retired `forma:*` shapes each draw one of the seven forms, so an Agent that chose one before the orbs keeps a distinct look. An Agent's look is a person's choice and is never derived from a name, id or role. A template that names no look is the one exception: `templateAgentOrb` gives it a form and colour fixed by its slug, so the templates in a gallery differ and the Portal and Nadia draw the same one; Nadia and Sofia keep their figures.",
629
+ behaviour: "The only thing that moves on its own. Idle particles turn at 86.4% of the form's native pace, with a separate 6.4 s breath. Working sweeps a ribbon every 3.2 s; thinking passes three pulses over 2.4 s. Waiting leans softly as centered pause bars arrive; blocked recoils as a centered stop sign lands. Both entrances settle over 2 s, then waiting breathes and blocked holds still. Done celebrates once over 4.8 s, then rests at 72% of native particle speed with the Idle breath. A state change interrupts the previous gesture; `motionKey` replays it and `paused` freezes it. A surface that only knows a machine checked in draws idle. No state draws a circle around the orb. Ambient motion moves the form at its own pace with no state pose or cue. Reduced motion: movement stops, a thinking or working orb breathes between full ink and 0.45 opacity so busy still reads as busy, an ambient orb holds still, and waiting and blocked keep their centered signs without an entrance gesture. An orb is one of seven forms, `ribbon`, `lattice`, `orbit`, `globe`, `network`, `braid` and `morph`, in one colour a person chose: cobalto, verde or arancio, or none, which draws it in the text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro, verde, the text colour and rosso along its whole length. Sofia, the Agent that looks up a new company, is her sister, the form `sofia`: the same ribbon turned to face Nadia's, striped cobalto, giallo, the text colour and arancio, the identity hues Nadia does not wear. Neither figure is ever stored as an Agent's look. An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent always draws as Nadia, an unknown form draws `orbit`, an unknown colour the text colour, and a stored rosso draws arancio. The retired `forma:*` shapes each draw one of the seven forms, so an Agent that chose one before the orbs keeps a distinct look. An Agent's look is a person's choice and is never derived from a name, id or role. A template that names no look is the one exception: `templateAgentOrb` gives it a form and colour fixed by its slug, so the templates in a gallery differ and the Portal and Nadia draw the same one; Nadia and Sofia keep their figures.",
630
630
  words: "Text sits beside the orb, never on it. Where the exact state matters a word names it: *Working*, *Waiting for you*.",
631
631
  access: '`role="img"` labelled with the Agent\'s name, and her state where it matters; `decorative` when her name is already beside it.',
632
632
  },
@@ -1,3 +1,3 @@
1
- export const agentOrbScript = "\"use strict\";(()=>{function U(n,e,t){return n+(e-n)*t}function at(n){return n-Math.floor(n)}function V(n,e){let t=Math.floor(n),a=Math.floor(e),o=n-t,s=e-a;o=o*o*(3-2*o),s=s*s*(3-2*s);let r=_(t,a),u=_(t+1,a),c=_(t,a+1),M=_(t+1,a+1);return r+(u-r)*o+(c-r)*s+(r-u-c+M)*o*s}function _(n,e){let t=Math.sin(n*12.9898+e*78.233)*43758.5453;return t-Math.floor(t)}function J(n,e){let t=Math.PI*(3-Math.sqrt(5)),a=1-2*(n+.5)/e,o=Math.sqrt(1-a*a),s=n*t;return[o*Math.cos(s),a,o*Math.sin(s)]}function Pt(n,e){return Math.atan2(Math.sin(n-e),Math.cos(n-e))}function j(n,e,t,a,o){let s=Math.sin(e),r=Math.cos(e),u=Math.sin(n),c=Math.cos(n);return(M,O,l)=>{let i=M*c+l*u,p=-M*u+l*c,m=O*r-p*s,b=O*s+p*r;return[t+i*o,a-m*o,b]}}function rt(n,e,t,a){if(!a){let s=Math.round((t?1-n:n)*255);return`rgba(${s},${s},${s},${e})`}let o=s=>Math.round(t?s*(1-n):s+(255-s)*n);return`rgba(${o(a.r)},${o(a.g)},${o(a.b)},${e})`}function it(n,e,t,a=.3,o){for(let s of e){let r=s.a??1,u=Math.min(1,Math.max(0,s.white));n.fillStyle=rt(u,r,t,o),n.beginPath(),n.arc(s.x,s.y,s.r,0,Math.PI*2),n.fill()}}function ct(n,e,t,a){for(let o of e){let s=o.a??1,r=Math.min(1,Math.max(0,o.white));n.strokeStyle=rt(r,s,t,a),n.lineWidth=o.w,n.beginPath(),n.moveTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.stroke()}}function q(n,e,t=.3){let a=[];for(let o of n)(o.a??1)<.02||(o.r=Math.max(t,o.r),a.push(o));return a.sort((o,s)=>o.z-s.z),{dots:a,lines:e.filter(o=>(o.a??1)>=.02)}}function ht(n,e,t,a){e.lines.length&&ct(n,e.lines,t,a),it(n,e.dots,t,.3,a)}function $(n,e){return(n/300)**e}var St=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],At=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],vt=[\"iconD\"],kt=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function Rt(n,e){let t={...n},a=new Set,o=Math.sqrt(e);for(let[s,r]of St){let u=t[s],c=t[r];u!=null&&c!=null&&!a.has(s)&&!a.has(r)&&(t[s]=Math.max(2,Math.round(u*o)),t[r]=Math.max(2,Math.round(c*o)),a.add(s),a.add(r))}for(let s of At){let r=t[s];r!=null&&r!==0&&!a.has(s)&&(t[s]=Math.max(1,Math.round(r*e)))}for(let s of vt){let r=t[s];r!=null&&(t[s]=Math.max(.02,r*e))}return t}function Dt(n,e){let t={...n};for(let a of kt){let o=t[a];o!=null&&(t[a]=o*e)}return t.rSizeMul=(t.rSizeMul??1)*e,t}var zt={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},It=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.76,r=j(e*.4,.3,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let i=0;i<M;i++){let p=J(i,M),[m,b,h]=r(p[0]*s,p[1]*s,p[2]*s),g=(h/s+1)/2;c.push({x:m,y:b,z:h,r:.8*u,white:.78,a:.1+.22*g})}let O=t.strandN??52,l=t.turns??3;for(let i=0;i<3;i++){let p=i/3*2*Math.PI;for(let m=0;m<O;m++){let b=(at(m/O+e*.045)*2-1)*.96,h=Math.sqrt(Math.max(0,1-b*b)),g=Math.min(1,(1-Math.abs(b))/.1),y=b*Math.PI*l+p,f=1+.075*Math.sin(b*Math.PI*l*2+p*2+e*.8),d=h*s*f,[x,S,w]=r(Math.cos(y)*d,b*s*f,Math.sin(y)*d),P=(w/s+1)/2;c.push({x,y:S,z:w,r:((t.rBase??1.2)+(t.rDepth??1.8)*P)*u,white:.55-.45*P,a:g*(.45+.55*P)})}}return q(c,[],t.rMin)};function Ct(n,e,t,a){let o=2*e*t+a,s=n%o,r=new Array(e).fill(0),u=-1;if(s<2*e*t){let c=Math.floor(s/t),M=(s-c*t)/t,l=1-(1-Math.min(1,M/.7))**3;if(c<e){for(let i=0;i<c;i++)r[i]=1;r[c]=l,u=c}else{let i=2*e-1-c;for(let p=0;p<i;p++)r[p]=1;r[i]=1-l,u=i}}return{amount:r,active:u}}function Et(n,e,t){let[a,o,s]=n,r=!1;for(let u=0;u<e.length;u++){if(t.amount[u]<=0)continue;let c=e[u],M=c.axis===0?a:c.axis===1?o:s;if(M<c.lo||M>=c.hi)continue;u===t.active&&(r=!0);let O=c.ang*t.amount[u],l=Math.cos(O),i=Math.sin(O);if(c.axis===0){let p=o*l-s*i;s=o*i+s*l,o=p}else if(c.axis===1){let p=a*l+s*i;s=-a*i+s*l,a=p}else{let p=a*l-o*i;o=a*i+o*l,a=p}}return[a,o,s,r]}function Ft(n){let e=[];for(let t=0;t<n;t++){let a=Math.min(2,Math.floor(_(t,2.3)*3)),o=-1+.5*Math.min(3,Math.floor(_(t,5.9)*4)),s=_(t,7.7)<.5?1:-1;e.push({axis:a,lo:o,hi:o+.5,ang:s*Math.PI/2})}return e}var Nt=(n,e,t)=>{let o=n/2,s=n/2,r=n/2*.82,u=.4+.06*Math.sin(e*.35),c=j(e*.5,u,o,s,r),M=e*(.5+(1.7-.5)*(t.scanMul??1)),O=$(n,t.rsPow??.6),l=t.dimBase??1,i=[],p=t.latRings??17,m=t.lonDensity??44;for(let b=0;b<=p;b++){let h=-Math.PI/2+b/p*Math.PI,g=Math.cos(h),y=Math.sin(h),f=Math.max(1,Math.round(Math.abs(g)*m));for(let d=0;d<f;d++){let x=d/f*2*Math.PI,[S,w,P]=c(g*Math.cos(x),y,g*Math.sin(x)),v=(P+1)/2,R=Pt(x+e*.5,M),k=Math.exp(-(R*R)/.18)*Math.max(0,P);i.push({x:S,y:w,z:P,r:((t.rBase??.6)+(t.rDepth??1.7)*v+(t.rBoost??1)*k)*O,white:(t.inkFar??.62)-(t.inkSpan??.54)*v,a:l+(1-l)*Math.min(1,k)})}}return q(i,[],t.rMin)},Bt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.55,.35+.1*Math.sin(e*.9),a,o,s),u=$(n,t.rsPow??.6),c=t.moveCount??14,M=Ft(c),O=Ct(e,c,.42,1.2),l=[],i=t.latRings??15,p=t.lonDensity??40;for(let m=0;m<=i;m++){let b=-Math.PI/2+m/i*Math.PI,h=Math.cos(b),g=Math.sin(b),y=Math.max(1,Math.round(Math.abs(h)*p));for(let f=0;f<y;f++){let d=f/y*2*Math.PI,[x,S,w,P]=Et([h*Math.cos(d),g,h*Math.sin(d)],M,O),[v,R,k]=r(x,S,w),D=(k+1)/2;l.push({x:v,y:R,z:k,r:((t.rBase??.6)+(t.rDepth??1.7)*D+(P?t.rActive??.3:0))*u,white:(t.inkFar??.62)-(t.inkSpan??.54)*D-(P?.14:0)})}}return q(l,[],t.rMin)},Lt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.874,r=j(e*.18,.38,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.rings??15,O=t.lonDensity??40;for(let l=0;l<=M;l++){let i=-Math.PI/2+l/M*Math.PI,p=Math.cos(i),m=Math.sin(i),b=.62*Math.sin(e*2.1-l*.52)+.38*Math.sin(e*1.27+l*.83),h=s*(.88+.105*b),g=Math.max(1,Math.round(Math.abs(p)*O));for(let y=0;y<g;y++){let f=y/g*2*Math.PI,[d,x,S]=r(p*Math.cos(f)*h,m*h,p*Math.sin(f)*h),w=(S/s+1)/2,P=Math.max(0,b);c.push({x:d,y:x,z:S,r:((t.rBase??.6)+(t.rDepth??1.7)*w)*(1+.4*P)*u,white:.66-.56*w-.1*P})}}return q(c,[],t.rMin)};function Tt(n){return n*n*(3-2*n)}function lt(n){let e=n.length,t=[],a=0;for(let o=0;o<e;o++){let s=n[o],r=n[(o+1)%e],u=Math.hypot(r[0]-s[0],r[1]-s[1]);t.push(u),a+=u}return o=>{let s=o*a,r=0;for(;s>t[r]&&r<e-1;)s-=t[r],r++;let u=n[r],c=n[(r+1)%e],M=t[r]?Math.min(1,s/t[r]):0;return[u[0]+(c[0]-u[0])*M,u[1]+(c[1]-u[1])*M]}}var _t=n=>{let e=-Math.PI/2+n*2*Math.PI;return[Math.cos(e)*.24,Math.sin(e)*.24]},qt=lt([[0,-.26],[.24,.16],[-.24,.16]]),jt=lt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),Q=[_t,qt,jt];function $t(n){return Math.max(6,Math.round(34*n))}var X=1.4,ut=.9,Y=X+ut,Wt=(n,e,t)=>{let a=Q.length,o=e%(Y*a),s=t.shape!=null&&t.shape>=0&&t.shape<a?Math.floor(t.shape):-1,r=s>=0?s:Math.floor(o/Y),u=s>=0?e%Y:o-r*Y,c=s>=0?0:u>X?Tt((u-X)/ut):0,M=t.spread??1,O=Q[r],l=s>=0?O:Q[(r+1)%a],i=160,p=[];for(let w=0;w<i;w++){let P=w/i,v=O(P),R=l(P);p.push([(v[0]+(R[0]-v[0])*c)*M,(v[1]+(R[1]-v[1])*c)*M])}let m=[],b=0;for(let w=0;w<i;w++){let P=p[w],v=p[(w+1)%i],R=Math.hypot(v[0]-P[0],v[1]-P[1]);m.push(R),b+=R}let h=$t(t.iconD??1),g=(t.rDot??.021)*1.35*M,y=1+.02*Math.sin(u*3.1),f=[],d=n/2,x=0,S=0;for(let w=0;w<h;w++){let P=w/h*b;for(;S+m[x]<P&&x<i-1;)S+=m[x],x++;let v=p[x],R=p[(x+1)%i],k=m[x]?Math.min(1,(P-S)/m[x]):0,D=(v[0]+(R[0]-v[0])*k)*y,C=(v[1]+(R[1]-v[1])*k)*y;f.push({x:d+D*n,y:d+C*n,z:0,r:Math.max(.35,g*n),white:.1})}return q(f,[],t.rMin)},Kt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.12,.3,a,o,1),u=$(n,t.rsPow??.6),c=[],M=t.orbitN??12,O=t.ghostN??40,l=t.particles??3;for(let i=0;i<M;i++){let p=_(i,1.7),m=_(i,5.2),b=_(i,8.9),h=s*(.45+.52*p),g=p*2*Math.PI,y=Math.acos(2*m-1),f=Math.sin(y)*Math.cos(g),d=Math.cos(y),x=Math.sin(y)*Math.sin(g),S=-d,w=f,P=0,v=Math.max(1e-6,Math.sqrt(S*S+w*w));S/=v,w/=v;let R=d*P-x*w,k=x*S-f*P,D=f*w-d*S,C=(.25+.55*b)*(b>.5?1:-1);for(let E=0;E<O;E++){let z=E/O*2*Math.PI,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(w*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:(t.ghostR??.9)*u,white:.72,a:(t.ghostA??.5)*(.4+.6*B)})}for(let E=0;E<l;E++){let z=e*C+E/l*2*Math.PI+m*6,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(w*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:((t.partR??1.2)+(t.partRDepth??1.6)*B)*u,white:.3-.22*B})}}return q(c,[],t.rMin)},st=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.78,r=t.spin??1,u=.3,c=j(e*.1*r,u,a,o,1),M=$(n,t.rsPow??.6),O=[],l=t.ghostN??150;for(let D=0;D<l;D++){let C=J(D,l),[E,z,F]=c(C[0]*s,C[1]*s,C[2]*s),N=(F/s+1)/2;O.push({x:E,y:z,z:F,r:.8*M,white:.78,a:.1+.22*N})}let i=e*.24*r,p=t.faceOn?-u:.55+.3*Math.sin(e*.18)*r,m=Math.cos(i),b=0,h=Math.sin(i),g=-h*Math.sin(p),y=Math.cos(p),f=m*Math.sin(p),d=b*f-h*y,x=h*g-m*f,S=m*y-b*g,w=.23*(t.wobMul??1),P=t.faceOn?s/(1+.85*w):s,v=t.lanes??5,R=t.segs??88,k=Math.max(1,Math.round(v*(t.bandMul??1)));for(let D=0;D<k;D++){let C=(D-(k-1)/2)*.075,E=Math.abs(D-(k-1)/2)/Math.max(1,(k-1)/2);for(let z=0;z<R;z++){let F=z/R*2*Math.PI,N=(.16*Math.sin(F*3-e*1.7+D*.22)+.07*Math.sin(F*5+e*1.1))*(t.wobMul??1),L=t.faceOn?1+N:1,B=t.faceOn?C:C+N,A=m*Math.cos(F)+g*Math.sin(F)+d*B,I=b*Math.cos(F)+y*Math.sin(F)+x*B,T=h*Math.cos(F)+f*Math.sin(F)+S*B,W=Math.sqrt(A*A+I*I+T*T),K=P*L,[wt,Ot,et]=c(A/W*K,I/W*K,T/W*K),G=(et/s+1)/2;O.push({x:wt,y:Ot,z:et,r:((t.rBase??1.1)+(t.rDepth??1.7)*G)*(1-.25*E)*M,white:.52-.44*G+.18*E,a:.4+.6*G})}}return q(O,[],t.rMin)},Yt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.8*(t.spread??1),r=j(e*.12,.32,a,o,s),u=$(n,t.rsPow??.6),c=t.nodeN??30,M=t.thr??.72,O=t.nodeR??1.4,l=t.nodeRDepth??1.8,i=[];for(let h=0;h<c;h++){let g=J(h,c),y=g[0]+.3*(V(h*.31+9,e*.24)-.5)*2,f=g[1]+.3*(V(h*.53+27,e*.21)-.5)*2,d=g[2]+.3*(V(h*.77+55,e*.27)-.5)*2,x=Math.sqrt(y*y+f*f+d*d);i.push([y/x,f/x,d/x])}let p=[],m=[];for(let h=0;h<c;h++)for(let g=h+1;g<c;g++){let y=i[h][0]-i[g][0],f=i[h][1]-i[g][1],d=i[h][2]-i[g][2],x=Math.sqrt(y*y+f*f+d*d);if(x>=M)continue;let[S,w,P]=r(i[h][0],i[h][1],i[h][2]),[v,R,k]=r(i[g][0],i[g][1],i[g][2]),D=((P+k)/2+1)/2;p.push({x1:S,y1:w,x2:v,y2:R,white:.42,a:(1-x/M)*(.3+.55*D),w:Math.max(.6,(t.lineW??.8)*u)})}for(let h=0;h<c;h++){let[g,y,f]=r(i[h][0],i[h][1],i[h][2]),d=(f+1)/2,x=1+.25*Math.sin(e*1.4+h*2.7);m.push({x:g,y,z:f,r:(O+l*d)*x*u,white:.55-.45*d})}let b=t.signals??5;for(let h=0;h<b;h++){let g=Math.floor(e*.55+h*7.31),y=Math.floor(_(g,h*3.1+1.7)*c),f=Math.floor(_(g,h*5.7+4.2)*c);if(y===f)continue;let d=at(e*.55+h*7.31),x=U(i[y][0],i[f][0],d),S=U(i[y][1],i[f][1],d),w=U(i[y][2],i[f][2],d),P=Math.max(1e-6,Math.sqrt(x*x+S*S+w*w)),[v,R,k]=r(x/P,S/P,w/P),D=(k+1)/2;m.push({x:v,y:R,z:k,r:(O*1.5+l*D)*u,white:.05,a:.5+.5*D})}return q(m,p,t.rMin)},H={orbits:Kt,globe:Nt,rubik:Bt,wave:Lt,web:Yt,braid:It,ribbon:st,ring:st,morph:Wt},Ht=Object.fromEntries(Object.entries(H).map(([n,e])=>[n,(t,a,o,s,r)=>ht(t,e(a,o,r),s)])),pt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},Gt={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},ot=new Map;function Z(n,e){let t=`${n}-${e}`,a=ot.get(t);if(a)return a;let o=pt[n],s=Gt[o][e],r={...zt[o]};s.count!==1&&(r=Rt(r,s.count)),s.size!==1&&(r=Dt(r,s.size)),s.extra&&(r={...r,...s.extra});let u={mode:o,speed:s.speed,opts:r};return ot.set(t,u),u}var dt={ribbon:{speed:.55,tilt:.15},nadia:{speed:.55,tilt:.15},sofia:{speed:.55,tilt:-.15},lattice:{speed:.28,tilt:-.12},orbit:{speed:.7,tilt:.2},globe:{speed:.35,tilt:-.16},network:{speed:.55,tilt:.1},braid:{speed:.65,tilt:-.2},morph:{speed:.9,tilt:.12}};function tt(n){return dt[n].speed}function Mt(n,e){return{idle:1,working:1,thinking:1,waiting:0,blocked:0,done:.65}[n]*tt(e)}var Ut=1.6;function ft(n,e){return n!==\"thinking\"&&n!==\"working\"?1:1-.55*((1-Math.cos(e*Math.PI*2/Ut))/2)}function bt(n,e,t){let a=dt[n],o=.82,s=.82,r=0,u=0,c=0,M=0,O=1;if(e===\"idle\"){let l=Math.sin(t*Math.PI/2);o+=l*.01,s+=l*.01,r=-l*.004}else if(e===\"waiting\")o=.8,s=.84,r=-.015,O=.75;else if(e===\"blocked\"){let l=Math.min(1,t/.25),i=Math.sin(l*Math.PI);o=.8+i*.015,s=.82-l*.08,r=l*.025-i*.018,c=a.tilt*l*.4,O=1-l*.4}else if(e===\"done\"){if(t<.18){let l=Math.sin(Math.PI*t/.18);o+=.03*l,s-=.04*l,r=.012*l}else if(t<1.3){let l=(t-.18)/1.12;r=-.07*Math.sin(Math.PI*l),o+=.025*Math.sin(Math.PI*l),s+=.035*Math.sin(Math.PI*l),c=Math.sin(l*Math.PI*2)*.07}}return{sx:o,sy:s,x:u,y:r,rotation:c,split:M,opacity:O}}function nt(n,e,t,a,o,s,r,u=1){if(!(e!==\"working\"&&e!==\"thinking\"&&e!==\"done\")){if(n.save(),e===\"thinking\"){if(r===\"front\")for(let c=0;c<3;c++){let M=o?.5:(1+Math.cos(a*Math.PI*2/3.6-c*Math.PI*2/3))/2,O=s[c%s.length];O!==void 0&&(n.fillStyle=O),n.globalAlpha=(.65+M*.35)*u,n.beginPath(),n.arc(t*(.5+(c-1)*.09),t*.08,Math.max(1,t*(.022+M*.005)),0,Math.PI*2),n.fill()}}else if(e===\"working\"||!o&&a<3.1){let c=e===\"done\"?3:1;for(let M=0;M<c;M++){let O=e===\"done\"?(a-M*.38)/2.2:0;if(O<0||O>1)continue;let l=e===\"done\"?Math.sin(O*Math.PI):1,i=(o?.8:a*Math.PI*2/7.2)+M*2.1,p=Math.PI*1.4,m=-.38+M*.4,b=t*(.44+O*.03),h=t*(.19+O*.11),g=f=>{let d=Math.cos(f)*b,x=Math.sin(f)*h;return[t/2+d*Math.cos(m)-x*Math.sin(m),t/2+d*Math.sin(m)+x*Math.cos(m)]},y=n.createLinearGradient(t*.1,t*.7,t*.9,t*.3);s.forEach((f,d)=>y.addColorStop(d/Math.max(1,s.length-1),f)),n.strokeStyle=y,n.lineCap=\"butt\";for(let f=0;f<100;f++){let d=f/100,x=i-p+p*d,S=Math.sin(x)>=0;if(S!==(r===\"front\"))continue;let w=Math.sin(Math.PI*(.04+d*.92));n.globalAlpha=l*(S?.92:.55)*(.25+w*.75)*u,n.lineWidth=Math.max(.65,t*.027*w),n.beginPath(),n.moveTo(...g(x)),n.lineTo(...g(x+p/100)),n.stroke()}}}n.restore()}}var Vt={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Qt={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},mt=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],yt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],Xt=[...yt,...mt.filter(n=>n!==null)],Jt=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],Zt={nadia:mt,sofia:Jt};function tn(n,e){let t=1-2*(n+.5)/e,a=Math.sqrt(1-t*t),o=n*Math.PI*(3-Math.sqrt(5));return[a*Math.cos(o),t,a*Math.sin(o)]}function gt(n,e,t){let a=n/2,o=n/2*.78,s=t.spin??1,r=j(e*.1*s,.3,a,a,1),u=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let v=0;v<M;v++){let[R,k,D]=tn(v,M),[C,E,z]=r(R*o,k*o,D*o);c.push({x:C,y:E,z,r:.8*u,white:.78,a:.1+.22*((z/o+1)/2)})}let O=e*.24*s,l=t.faceOn?-.3:.55+.3*Math.sin(e*.18)*s,[i,p,m]=[Math.cos(O),0,Math.sin(O)],[b,h,g]=[-m*Math.sin(l),Math.cos(l),i*Math.sin(l)],[y,f,d]=[p*g-m*h,m*b-i*g,i*h-p*b],x=t.wobMul??1,S=t.faceOn?o/(1+.85*.23*x):o,w=t.segs??88,P=Math.max(1,Math.round((t.lanes??5)*(t.bandMul??1)));for(let v=0;v<P;v++){let R=(v-(P-1)/2)*.075,k=Math.abs(v-(P-1)/2)/Math.max(1,(P-1)/2);for(let D=0;D<w;D++){let C=D/w*2*Math.PI,E=(.16*Math.sin(C*3-e*1.7+v*.22)+.07*Math.sin(C*5+e*1.1))*x,z=t.faceOn?1+E:1,F=t.faceOn?R:R+E,N=i*Math.cos(C)+b*Math.sin(C)+y*F,L=p*Math.cos(C)+h*Math.sin(C)+f*F,B=m*Math.cos(C)+g*Math.sin(C)+d*F,A=Math.sqrt(N*N+L*L+B*B),[I,T,W]=r(N/A*S*z,L/A*S*z,B/A*S*z),K=(W/o+1)/2;c.push({x:I,y:T,z:W,r:((t.rBase??1.1)+(t.rDepth??1.7)*K)*(1-.25*k)*u,white:.08+.1*k,a:.55+.45*K,stripe:Math.min(3,Math.floor(v/P*4))})}}return q(c,[],t.rMin)}function nn(n,e){for(let t of n.dots)t.x=e-t.x;return n}function en(n,e){let{form:t,size:a,seconds:o,color:s,state:r,age:u,reduced:c,breath:M,celebrationColors:O,stripeColors:l}=e,i=Qt[e.presence],p=Z(Vt[t===\"nadia\"||t===\"sofia\"?\"ribbon\":t],a<=32?20:64),m=t===\"nadia\"?gt(a,o,p.opts):t===\"sofia\"?nn(gt(a,o,p.opts),a):H[p.mode](a,o,p.opts);n.clearRect(0,0,a,a);let b=bt(t,e.motion===\"ambient\"?\"idle\":r,c?r===\"done\"?2:.6:u),h=c?.8:u/(r===\"done\"?.575:.2875),g=(d,x)=>{let S=(d-a/2)*b.sx,w=(x-a/2)*b.sy;return[a/2+S*Math.cos(b.rotation)-w*Math.sin(b.rotation)+(b.x+Math.sign(S)*b.split)*a,a/2+S*Math.sin(b.rotation)+w*Math.cos(b.rotation)+b.y*a]},y=b.opacity*M;e.motion===\"status\"&&nt(n,r,a,h,c,O,\"back\",M),n.fillStyle=s,n.strokeStyle=s;for(let d of m.lines)n.globalAlpha=Math.min(1,Math.max(0,(1-d.white)*(d.a??1)*y*i.alpha)),n.lineWidth=d.w*i.radius,n.beginPath(),n.moveTo(...g(d.x1,d.y1)),n.lineTo(...g(d.x2,d.y2)),n.stroke();let f=m.dots;for(let d of f)n.fillStyle=d.stripe===void 0?s:l[d.stripe]??s,n.globalAlpha=Math.min(1,Math.max(0,(1-d.white)*(d.a??1)*y*i.alpha)),n.beginPath(),n.arc(...g(d.x,d.y),d.r*i.radius,0,Math.PI*2),n.fill();n.globalAlpha=1,e.motion===\"status\"&&nt(n,r,a,h,c,O,\"front\",M)}function xt(n,e){let{form:t,presence:a=\"plain\"}=e,o=n.getContext(\"2d\");if(!o)return{destroy(){},setPaused(A){},setState(A){}};let s=window.matchMedia(\"(prefers-reduced-motion: reduce)\"),r=e.paused??!1,u=!0,c=!1,M=0,O=.6,l=0,i=0,p=e.state??\"idle\",m=e.motion??\"status\",b=null,h=0,g=1,y=e.size,f=getComputedStyle(n).color,d=[f],x=[f],S=\"\";function w(){let A=n.getBoundingClientRect(),I=Math.min(A.width,A.height);return I>0?I:e.size}function P(){!o||c||!n.isConnected||(o.setTransform(g,0,0,g,0,0),en(o,{form:t,size:y,seconds:O,color:f,state:p,age:l,reduced:s.matches,breath:s.matches?ft(p,i):1,presence:a,motion:m,celebrationColors:d,stripeColors:x}))}function v(){return c||!n.isConnected||!u||document.hidden||r?!1:s.matches?m===\"status\"&&(p===\"thinking\"||p===\"working\"):m===\"ambient\"?!0:p!==\"waiting\"&&!(p===\"blocked\"&&l>=.3)}function R(A){if(M=0,!!v()){if(b!==null){let I=Math.min((A-b)/1e3,.1);s.matches?i+=I:(O+=I*(m===\"ambient\"?tt(t):Mt(p,t)),m===\"status\"&&(l+=I*(p===\"done\"?.575:.2875)),p===\"done\"&&l>=1.8&&(p=\"idle\",l=0))}b=A,A-h>=1e3/30&&(P(),h=A),M=requestAnimationFrame(R)}}function k(){cancelAnimationFrame(M),M=0,b=null,P(),v()&&(M=requestAnimationFrame(R))}function D(A){let I=document.createElement(\"span\");I.hidden=!0,I.style.color=A,(n.parentElement??document.body).append(I);let T=getComputedStyle(I).color;return I.remove(),T||f}function C(A,I){return[I,window.devicePixelRatio||1,A.color,...Xt.map(T=>A.getPropertyValue(T))].join(\"|\")}function E(){C(getComputedStyle(n),w())!==S&&z()}function z(){if(c||!n.isConnected)return;y=w();let A=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));n.width=A,n.height=A,g=A/y;let I=getComputedStyle(n);S=C(I,y),f=I.color,d=yt.map(T=>D(`color-mix(in oklch, ${I.getPropertyValue(T).trim()||f} 75%, white)`)),x=(Zt[t]??[]).map(T=>T&&I.getPropertyValue(T).trim()||f),k()}let F=new IntersectionObserver(([A])=>{u=A?.isIntersecting??!1,k()});F.observe(n);let N=new MutationObserver(E);for(let A=n;A;A=A.parentElement)N.observe(A,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"]});let L=new ResizeObserver(()=>{Math.abs(w()-y)>=.5&&z()});L.observe(n);function B(A){A.propertyName===\"color\"&&A.target instanceof Node&&A.target.contains(n)&&E()}return document.addEventListener(\"transitionend\",B,!0),s.addEventListener(\"change\",k),document.addEventListener(\"visibilitychange\",k),window.addEventListener(\"resize\",E),z(),{setState(A){p=A,l=0,i=0,k()},setPaused(A){r=A,k()},destroy(){c=!0,cancelAnimationFrame(M),F.disconnect(),N.disconnect(),L.disconnect(),document.removeEventListener(\"transitionend\",B,!0),s.removeEventListener(\"change\",k),document.removeEventListener(\"visibilitychange\",k),window.removeEventListener(\"resize\",E)}}}for(let n of document.querySelectorAll(\"canvas[data-agent-orb]\"))xt(n,{form:n.dataset.agentOrb,size:Number(n.dataset.size),state:n.dataset.state??\"idle\"});})();\n";
1
+ export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function St(t){return t-Math.floor(t)}function ot(t,o){let e=Math.floor(t),s=Math.floor(o),n=t-e,r=o-s;n=n*n*(3-2*n),r=r*r*(3-2*r);let a=G(e,s),p=G(e+1,s),f=G(e,s+1),m=G(e+1,s+1);return a+(p-a)*n+(f-a)*r+(a-p-f+m)*n*r}function G(t,o){let e=Math.sin(t*12.9898+o*78.233)*43758.5453;return e-Math.floor(e)}function st(t,o){let e=Math.PI*(3-Math.sqrt(5)),s=1-2*(t+.5)/o,n=Math.sqrt(1-s*s),r=t*e;return[n*Math.cos(r),s,n*Math.sin(r)]}function _t(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function W(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),p=Math.sin(t),f=Math.cos(t);return(m,g,d)=>{let c=m*f+d*p,h=-m*p+d*f,M=g*a-h*r,x=g*r+h*a;return[e+c*n,s-M*n,x]}}function Dt(t,o,e,s){if(!s){let r=Math.round((e?1-t:t)*255);return`rgba(${r},${r},${r},${o})`}let n=r=>Math.round(e?r*(1-t):r+(255-r)*t);return`rgba(${n(s.r)},${n(s.g)},${n(s.b)},${o})`}function At(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,p=Math.min(1,Math.max(0,r.white));t.fillStyle=Dt(p,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function wt(t,o,e,s){for(let n of o){let r=n.a??1,a=Math.min(1,Math.max(0,n.white));t.strokeStyle=Dt(a,r,e,s),t.lineWidth=n.w,t.beginPath(),t.moveTo(n.x1,n.y1),t.lineTo(n.x2,n.y2),t.stroke()}}function j(t,o,e=.3){let s=[];for(let n of t)(n.a??1)<.02||(n.r=Math.max(e,n.r),s.push(n));return s.sort((n,r)=>n.z-r.z),{dots:s,lines:o.filter(n=>(n.a??1)>=.02)}}function Pt(t,o,e,s){o.lines.length&&wt(t,o.lines,e,s),At(t,o.dots,e,.3,s)}function _(t,o){return(t/300)**o}var Kt=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],$t=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],Ht=[\"iconD\"],Ut=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function Yt(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of Kt){let p=e[r],f=e[a];p!=null&&f!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(p*n)),e[a]=Math.max(2,Math.round(f*n)),s.add(r),s.add(a))}for(let r of $t){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of Ht){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function Zt(t,o){let e={...t};for(let s of Ut){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var Jt={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},Qt=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=W(o*.4,.3,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.ghostN??150;for(let c=0;c<m;c++){let h=st(c,m),[M,x,i]=a(h[0]*r,h[1]*r,h[2]*r),S=(i/r+1)/2;f.push({x:M,y:x,z:i,r:.8*p,white:.78,a:.1+.22*S})}let g=e.strandN??52,d=e.turns??3;for(let c=0;c<3;c++){let h=c/3*2*Math.PI;for(let M=0;M<g;M++){let x=(St(M/g+o*.045)*2-1)*.96,i=Math.sqrt(Math.max(0,1-x*x)),S=Math.min(1,(1-Math.abs(x))/.1),y=x*Math.PI*d+h,b=1+.075*Math.sin(x*Math.PI*d*2+h*2+o*.8),A=i*r*b,[v,w,u]=a(Math.cos(y)*A,x*r*b,Math.sin(y)*A),l=(u/r+1)/2;f.push({x:v,y:w,z:u,r:((e.rBase??1.2)+(e.rDepth??1.8)*l)*p,white:.55-.45*l,a:S*(.45+.55*l)})}}return j(f,[],e.rMin)};function Xt(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),p=-1;if(r<2*o*e){let f=Math.floor(r/e),m=(r-f*e)/e,d=1-(1-Math.min(1,m/.7))**3;if(f<o){for(let c=0;c<f;c++)a[c]=1;a[f]=d,p=f}else{let c=2*o-1-f;for(let h=0;h<c;h++)a[h]=1;a[c]=1-d,p=c}}return{amount:a,active:p}}function te(t,o,e){let[s,n,r]=t,a=!1;for(let p=0;p<o.length;p++){if(e.amount[p]<=0)continue;let f=o[p],m=f.axis===0?s:f.axis===1?n:r;if(m<f.lo||m>=f.hi)continue;p===e.active&&(a=!0);let g=f.ang*e.amount[p],d=Math.cos(g),c=Math.sin(g);if(f.axis===0){let h=n*d-r*c;r=n*c+r*d,n=h}else if(f.axis===1){let h=s*d+r*c;r=-s*c+r*d,s=h}else{let h=s*d-n*c;n=s*c+n*d,s=h}}return[s,n,r,a]}function ee(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(G(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(G(e,5.9)*4)),r=G(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var oe=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,p=.4+.06*Math.sin(o*.35),f=W(o*.5,p,n,r,a),m=o*(.5+(1.7-.5)*(e.scanMul??1)),g=_(t,e.rsPow??.6),d=e.dimBase??1,c=[],h=e.latRings??17,M=e.lonDensity??44;for(let x=0;x<=h;x++){let i=-Math.PI/2+x/h*Math.PI,S=Math.cos(i),y=Math.sin(i),b=Math.max(1,Math.round(Math.abs(S)*M));for(let A=0;A<b;A++){let v=A/b*2*Math.PI,[w,u,l]=f(S*Math.cos(v),y,S*Math.sin(v)),D=(l+1)/2,P=_t(v+o*.5,m),E=Math.exp(-(P*P)/.18)*Math.max(0,l);c.push({x:w,y:u,z:l,r:((e.rBase??.6)+(e.rDepth??1.7)*D+(e.rBoost??1)*E)*g,white:(e.inkFar??.62)-(e.inkSpan??.54)*D,a:d+(1-d)*Math.min(1,E)})}}return j(c,[],e.rMin)},ne=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=W(o*.55,.35+.1*Math.sin(o*.9),s,n,r),p=_(t,e.rsPow??.6),f=e.moveCount??14,m=ee(f),g=Xt(o,f,.42,1.2),d=[],c=e.latRings??15,h=e.lonDensity??40;for(let M=0;M<=c;M++){let x=-Math.PI/2+M/c*Math.PI,i=Math.cos(x),S=Math.sin(x),y=Math.max(1,Math.round(Math.abs(i)*h));for(let b=0;b<y;b++){let A=b/y*2*Math.PI,[v,w,u,l]=te([i*Math.cos(A),S,i*Math.sin(A)],m,g),[D,P,E]=a(v,w,u),T=(E+1)/2;d.push({x:D,y:P,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*T+(l?e.rActive??.3:0))*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*T-(l?.14:0)})}}return j(d,[],e.rMin)},re=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=W(o*.18,.38,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.rings??15,g=e.lonDensity??40;for(let d=0;d<=m;d++){let c=-Math.PI/2+d/m*Math.PI,h=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-d*.52)+.38*Math.sin(o*1.27+d*.83),i=r*(.88+.105*x),S=Math.max(1,Math.round(Math.abs(h)*g));for(let y=0;y<S;y++){let b=y/S*2*Math.PI,[A,v,w]=a(h*Math.cos(b)*i,M*i,h*Math.sin(b)*i),u=(w/r+1)/2,l=Math.max(0,x);f.push({x:A,y:v,z:w,r:((e.rBase??.6)+(e.rDepth??1.7)*u)*(1+.4*l)*p,white:.66-.56*u-.1*l})}}return j(f,[],e.rMin)};function se(t){return t*t*(3-2*t)}function Ot(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],p=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(p),s+=p}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let p=t[a],f=t[(a+1)%o],m=e[a]?Math.min(1,r/e[a]):0;return[p[0]+(f[0]-p[0])*m,p[1]+(f[1]-p[1])*m]}}var ae=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},ie=Ot([[0,-.26],[.24,.16],[-.24,.16]]),ce=Ot([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[ae,ie,ce];function le(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Et=.9,Y=rt+Et,pe=(t,o,e)=>{let s=nt.length,n=o%(Y*s),r=e.shape!=null&&e.shape>=0&&e.shape<s?Math.floor(e.shape):-1,a=r>=0?r:Math.floor(n/Y),p=r>=0?o%Y:n-a*Y,f=r>=0?0:p>rt?se((p-rt)/Et):0,m=e.spread??1,g=nt[a],d=r>=0?g:nt[(a+1)%s],c=160,h=[];for(let u=0;u<c;u++){let l=u/c,D=g(l),P=d(l);h.push([(D[0]+(P[0]-D[0])*f)*m,(D[1]+(P[1]-D[1])*f)*m])}let M=[],x=0;for(let u=0;u<c;u++){let l=h[u],D=h[(u+1)%c],P=Math.hypot(D[0]-l[0],D[1]-l[1]);M.push(P),x+=P}let i=le(e.iconD??1),S=(e.rDot??.021)*1.35*m,y=1+.02*Math.sin(p*3.1),b=[],A=t/2,v=0,w=0;for(let u=0;u<i;u++){let l=u/i*x;for(;w+M[v]<l&&v<c-1;)w+=M[v],v++;let D=h[v],P=h[(v+1)%c],E=M[v]?Math.min(1,(l-w)/M[v]):0,T=(D[0]+(P[0]-D[0])*E)*y,O=(D[1]+(P[1]-D[1])*E)*y;b.push({x:A+T*t,y:A+O*t,z:0,r:Math.max(.35,S*t),white:.1})}return j(b,[],e.rMin)},fe=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=W(o*.12,.3,s,n,1),p=_(t,e.rsPow??.6),f=[],m=e.orbitN??12,g=e.ghostN??40,d=e.particles??3;for(let c=0;c<m;c++){let h=G(c,1.7),M=G(c,5.2),x=G(c,8.9),i=r*(.45+.52*h),S=h*2*Math.PI,y=Math.acos(2*M-1),b=Math.sin(y)*Math.cos(S),A=Math.cos(y),v=Math.sin(y)*Math.sin(S),w=-A,u=b,l=0,D=Math.max(1e-6,Math.sqrt(w*w+u*u));w/=D,u/=D;let P=A*l-v*u,E=v*w-b*l,T=b*u-A*w,O=(.25+.55*x)*(x>.5?1:-1);for(let I=0;I<g;I++){let V=I/g*2*Math.PI,[R,N,L]=a((w*Math.cos(V)+P*Math.sin(V))*i,(u*Math.cos(V)+E*Math.sin(V))*i,(l*Math.cos(V)+T*Math.sin(V))*i),B=(L/i+1)/2;f.push({x:R,y:N,z:L,r:(e.ghostR??.9)*p,white:.72,a:(e.ghostA??.5)*(.4+.6*B)})}for(let I=0;I<d;I++){let V=o*O+I/d*2*Math.PI+M*6,[R,N,L]=a((w*Math.cos(V)+P*Math.sin(V))*i,(u*Math.cos(V)+E*Math.sin(V))*i,(l*Math.cos(V)+T*Math.sin(V))*i),B=(L/i+1)/2;f.push({x:R,y:N,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*B)*p,white:.3-.22*B})}}return j(f,[],e.rMin)},yt=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,p=.3,f=W(o*.1*a,p,s,n,1),m=_(t,e.rsPow??.6),g=[],d=e.ghostN??150;for(let T=0;T<d;T++){let O=st(T,d),[I,V,R]=f(O[0]*r,O[1]*r,O[2]*r),N=(R/r+1)/2;g.push({x:I,y:V,z:R,r:.8*m,white:.78,a:.1+.22*N})}let c=o*.24*a,h=e.faceOn?-p:.55+.3*Math.sin(o*.18)*a,M=Math.cos(c),x=0,i=Math.sin(c),S=-i*Math.sin(h),y=Math.cos(h),b=M*Math.sin(h),A=x*b-i*y,v=i*S-M*b,w=M*y-x*S,u=.23*(e.wobMul??1),l=e.faceOn?r/(1+.85*u):r,D=e.lanes??5,P=e.segs??88,E=Math.max(1,Math.round(D*(e.bandMul??1)));for(let T=0;T<E;T++){let O=(T-(E-1)/2)*.075,I=Math.abs(T-(E-1)/2)/Math.max(1,(E-1)/2);for(let V=0;V<P;V++){let R=V/P*2*Math.PI,N=(.16*Math.sin(R*3-o*1.7+T*.22)+.07*Math.sin(R*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+N:1,B=e.faceOn?O:O+N,q=M*Math.cos(R)+S*Math.sin(R)+A*B,K=x*Math.cos(R)+y*Math.sin(R)+v*B,k=i*Math.cos(R)+b*Math.sin(R)+w*B,C=Math.sqrt(q*q+K*K+k*k),z=l*L,[qt,Wt,bt]=f(q/C*z,K/C*z,k/C*z),tt=(bt/r+1)/2;g.push({x:qt,y:Wt,z:bt,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*I)*m,white:.52-.44*tt+.18*I,a:.4+.6*tt})}}return j(g,[],e.rMin)},me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=W(o*.12,.32,s,n,r),p=_(t,e.rsPow??.6),f=e.nodeN??30,m=e.thr??.72,g=e.nodeR??1.4,d=e.nodeRDepth??1.8,c=[];for(let i=0;i<f;i++){let S=st(i,f),y=S[0]+.3*(ot(i*.31+9,o*.24)-.5)*2,b=S[1]+.3*(ot(i*.53+27,o*.21)-.5)*2,A=S[2]+.3*(ot(i*.77+55,o*.27)-.5)*2,v=Math.sqrt(y*y+b*b+A*A);c.push([y/v,b/v,A/v])}let h=[],M=[];for(let i=0;i<f;i++)for(let S=i+1;S<f;S++){let y=c[i][0]-c[S][0],b=c[i][1]-c[S][1],A=c[i][2]-c[S][2],v=Math.sqrt(y*y+b*b+A*A);if(v>=m)continue;let[w,u,l]=a(c[i][0],c[i][1],c[i][2]),[D,P,E]=a(c[S][0],c[S][1],c[S][2]),T=((l+E)/2+1)/2;h.push({x1:w,y1:u,x2:D,y2:P,white:.42,a:(1-v/m)*(.3+.55*T),w:Math.max(.6,(e.lineW??.8)*p)})}for(let i=0;i<f;i++){let[S,y,b]=a(c[i][0],c[i][1],c[i][2]),A=(b+1)/2,v=1+.25*Math.sin(o*1.4+i*2.7);M.push({x:S,y,z:b,r:(g+d*A)*v*p,white:.55-.45*A})}let x=e.signals??5;for(let i=0;i<x;i++){let S=Math.floor(o*.55+i*7.31),y=Math.floor(G(S,i*3.1+1.7)*f),b=Math.floor(G(S,i*5.7+4.2)*f);if(y===b)continue;let A=St(o*.55+i*7.31),v=et(c[y][0],c[b][0],A),w=et(c[y][1],c[b][1],A),u=et(c[y][2],c[b][2],A),l=Math.max(1e-6,Math.sqrt(v*v+w*w+u*u)),[D,P,E]=a(v/l,w/l,u/l),T=(E+1)/2;M.push({x:D,y:P,z:E,r:(g*1.5+d*T)*p,white:.05,a:.5+.5*T})}return j(M,h,e.rMin)},Z={orbits:fe,globe:oe,rubik:ne,wave:re,web:me,braid:Qt,ribbon:yt,ring:yt,morph:pe},ue=Object.fromEntries(Object.entries(Z).map(([t,o])=>[t,(e,s,n,r,a)=>Pt(e,o(s,n,a),r)])),kt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},he={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},vt=new Map;function at(t,o){let e=`${t}-${o}`,s=vt.get(e);if(s)return s;let n=kt[t],r=he[n][o],a={...Jt[n]};r.count!==1&&(a=Yt(a,r.count)),r.size!==1&&(a=Zt(a,r.size)),r.extra&&(a={...a,...r.extra});let p={mode:n,speed:r.speed,opts:a};return vt.set(e,p),p}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var $=t=>t*1e3,H=t=>t/1e3;var Tt=(t,o,e=10)=>{let s=\"\",n=Math.max(Math.round(o/e),2);for(let r=0;r<n;r++)s+=Math.round(t(r/(n-1))*1e4)/1e4+\", \";return`linear(${s.substring(0,s.length-2)})`};function J(t,o=50,e=2e4,s){let n=0,r=t.next(n);for(s?.push(r.value);!r.done&&n<e;)n+=o,r=t.next(n),s?.push(r.value);return n>=e?1/0:n}function Vt(t,o=100,e){let{keyframes:s,velocity:n}=t,r=s&&s[s.length-1]-s[0],a=e({...t,velocity:n&&r?n*o/r:n,keyframes:[0,o]}),p=Math.min(J(a),2e4);return{type:\"keyframes\",ease:f=>a.next(p*f).value/o,duration:H(p)}}var F={stiffness:100,damping:10,mass:1,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05},Ct=t=>t<0?1/Math.max(1+t,F.minDamping):Math.max(1-t,F.minDamping);function It(t,o){if(!(t>1))return 1;let e=Math.sqrt(t*t-1),s=t-e,n=t+e,r=2*e*Math.exp(-o)*(1+o);return Rt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function mt(t,o){return t*Math.sqrt(1-o*o)}var de=12;function Rt(t,o,e){let s=e;for(let n=1;n<de;n++)s=s-t(s)/o(s);return s}var pt=.001;function ge({duration:t=F.duration,bounce:o=F.bounce}){let e,s;ct(t<=$(F.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=Ct(o);t=it(F.minDuration,F.maxDuration,H(t)),n<1?(e=m=>{let g=m*n,d=g*t,c=mt(m,n),h=Math.exp(-d);return pt-g/c*h},s=m=>{let d=m*n*t,c=n*n*m*m*t,h=Math.exp(-d),M=mt(m*m,n);return(-e(m)+pt>0?-1:1)*-c*h/M}):(e=m=>{let g=Math.exp(-m*t),d=m*t+1;return-pt+g*d},s=m=>{let g=Math.exp(-m*t),d=-m*(t*t);return g*d});let r=5/t,a=Rt(e,s,r),p=a*It(n,a*t),f=p*p;return{stiffness:f,damping:n*2*Math.sqrt(f),duration:$(t)}}var ut=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(ut(t,o))return t}function Me(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??F.stiffness,damping:e??F.damping,mass:s??F.mass,isResolvedFromDuration:!1,isTimeDefined:(o??e??s)===void 0&&(t.duration!==void 0||t.bounce!==void 0)};if(n.isTimeDefined){if(t.visualDuration){let r=Ct(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*It(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,ge(n)),n.isResolvedFromDuration=!0;(!ut(n.stiffness)||!ut(n.damping,!0))&&(n.stiffness=F.stiffness,n.damping=F.damping)}return n}function U(t=F.visualDuration,o=F.bounce){let e=typeof t!=\"object\"?{visualDuration:t,keyframes:[0,1],bounce:o}:t,s=e.keyframes[0],n=e.keyframes[e.keyframes.length-1],r={done:!1,value:s},{stiffness:a,damping:p,mass:f,duration:m,isResolvedFromDuration:g,isTimeDefined:d}=Me({...e}),c=u=>d?0:-H(u),h=p/(2*Math.sqrt(a*f)),M=H(Math.sqrt(a/f)),x=h*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},S=()=>{let u=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(u?F.restSpeed.granular:F.restSpeed.default),i.restDelta=e.restDelta||(u?F.restDelta.granular:F.restDelta.default)};S();let y,b,A;if(h<1){let u=mt(M,h),l={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};A=()=>{l.A=(i.velocity+x*i.delta)/u,l.sinC=x*l.A+i.delta*u,l.cosC=x*i.delta-l.A*u};let D=P=>{P!==l.t&&(l.t=P,l.env=Math.exp(-x*P),l.sin=Math.sin(u*P),l.cos=Math.cos(u*P))};y=P=>(D(P),i.target-l.env*(l.A*l.sin+i.delta*l.cos)),b=P=>(D(P),l.env*(l.sinC*l.sin+l.cosC*l.cos))}else if(h===1){y=l=>i.target-Math.exp(-M*l)*(i.delta+(i.velocity+M*i.delta)*l);let u={C:0};A=()=>{u.C=i.velocity+M*i.delta},b=l=>Math.exp(-M*l)*(M*u.C*l-i.velocity)}else{let u=M*Math.sqrt(h*h-1),l=x-u,D=x+u,P=d?1/0:300/u,E=(O,I)=>Math.exp(I>P?-O*P-x*(I-P):-O*I),T={S:0,F:0};A=()=>{let O=(i.velocity+x*i.delta)/u;T.S=(i.delta+O)/2,T.F=(i.delta-O)/2},y=O=>i.target-T.S*E(l,O)-T.F*E(D,O),b=O=>l*T.S*E(l,O)+D*T.F*E(D,O)}A();let v=g&&m||null,w={calculatedDuration:v,retarget:(u,l)=>{i.target=u[u.length-1],i.delta=i.target-u[0],i.velocity=c(l),e.restSpeed&&e.restDelta||S(),w.calculatedDuration=v,r.done=!1,A()},velocity:u=>$(b(u)),next:u=>{let l=y(u);if(g)r.done=u>=m;else{let D=$(b(u));r.done=Math.abs(D)<=i.restSpeed&&Math.abs(i.target-l)<=i.restDelta}return r.value=r.done?i.target:l,r},toString:()=>{let u=Math.min(J(w),2e4),l=Tt(D=>w.next(u*D).value,u,30);return u+\"ms \"+l},toTransition:()=>{}};return w}U.applyToOptions=t=>{let o=Vt(t,100,U);return t.ease=o.ease,t.duration=$(o.duration),t.type=\"keyframes\",t};var xe={ribbon:{speed:.55},nadia:{speed:.55},sofia:{speed:.55},lattice:{speed:.28},orbit:{speed:.7},globe:{speed:.35},network:{speed:.55},braid:{speed:.65},morph:{speed:.9}};function dt(t){return xe[t].speed}function Ft(t,o,e=0,s=gt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*dt(o)}var be=1.6;function Nt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/be))/2)}function X(t){let o=(p,f)=>{let m=t?.getPropertyValue(`--nc-duration-${p}`).trim()??\"\";return m?Number.parseFloat(m)*(m.endsWith(\"ms\")?.001:1):f},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=p=>Math.round(e*p*1e3)/1e3,a=U({keyframes:[0,1],duration:n*2e3,bounce:.1});return{wait:e,confirm:s,transition:n,doneDuration:r(3),blockedDuration:r(1.25),gestureAge:p=>p*n*2/e,settle:(p,f=0)=>p<f?0:a.next((p-f)*1e3).value}}var gt=X(),Q=t=>Math.min(1,Math.max(0,t)),ht=t=>{let o=Q(t);return o*o*(3-2*o)};function Bt(t,o,e=gt,s=!1){let n=.82,r=.82,a=0,p=0,f=0;if(t===\"idle\"){let m=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=m*.01,r+=m*.01,a=-m*.004}else if(!s&&t===\"waiting\"){let m=e.gestureAge(o),g=Math.sin(o*Math.PI*2/(e.wait*3)),d=Math.sin(Q(m/e.confirm)*Math.PI),c=e.settle(m,e.confirm*.55),h=1-d*.018+g*.006;n*=h,r*=h,a=-c*.018,f=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let m=e.gestureAge(o),g=e.confirm*.85,d=ht(m/g)*(1-e.settle(m,g));n*=1-d*.018,r*=1+d*.012,p=-d*.034,a=d*.014,f=-d*4*Math.PI/180}else if(!s&&t===\"done\"){let m=o*1.3/(e.wait*2.25);if(m<.18){let g=Math.sin(Math.PI*m/.18);n+=.03*g,r-=.04*g,a=.012*g}else if(m<1.3){let g=(m-.18)/1.12;a=-.07*Math.sin(Math.PI*g),n+=.025*Math.sin(Math.PI*g),r+=.035*Math.sin(Math.PI*g),f=Math.sin(g*Math.PI*2)*.07}}return{sx:n,sy:r,x:p,y:a,rotation:f}}function ye(t,o,e,s,n,r,a){let p=a.gestureAge(s),f=n?1:ht((p-a.confirm*.35)/a.confirm),m=n?1:a.settle(p,a.confirm*.35),g=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=f*.95,t.translate(e/2,e/2),o===\"waiting\"){let d=n?0:a.settle(p,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-m)*-.12*g),t.rotate(-d*2*Math.PI/180);let h=.94+m*.06;t.scale(h,h),t.scale(g/24,g/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(p,a.confirm*(M===0?.65:.2)),S=M===0?1:-1;t.save(),t.globalAlpha=f*.95*Q(i)*(n?1:.96+c*.04),t.translate(x-9.5+S*(1-i)*1.45*5,(1-i)*-.24*18),t.rotate(S*(1-i)*14*Math.PI/180),t.scale(1,1+(1-i)*.12),t.beginPath(),t.roundRect(-2.5,-9,5,18,1),t.fill(),t.restore()}}else{t.translate(0,(1-m)*-.1*g),t.rotate((1-m)*-12*Math.PI/180);let d=1+(1-m)*.18;t.scale(d,d),t.scale(g/24,g/24),t.lineWidth=Math.max(1.6,24/g),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:ht((p-a.confirm*.8)/a.confirm);if(t.beginPath(),t.moveTo(-7.071,-7.071),t.lineTo(-7.071+14.141*c,-7.071+14.142*c),t.stroke(),!n&&e>=40){let h=Q((p-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(h*Math.PI)*.65,t.lineWidth=1.4*24/g;for(let M of[-1,1]){t.beginPath();let x=M*(14.52+h*5.472),i=M*(10.34+h*1.68);t.moveTo(x-1.612,i-1.612),t.lineTo(x+1.612,i+1.612),t.stroke()}}}t.restore()}function Mt(t,o,e,s,n,r,a,p=1,f=gt,m=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&ye(t,o,e,s,n,m,f);return}if(!(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")){if(s*=o===\"done\"?3.1/f.doneDuration:o===\"working\"?7.2/(f.wait*2):3.6/(f.wait*1.5),t.save(),o===\"thinking\"){if(a===\"front\")for(let g=0;g<3;g++){let d=n?.5:(1+Math.cos(s*Math.PI*2/3.6-g*Math.PI*2/3))/2,c=r[g%r.length];c!==void 0&&(t.fillStyle=c),t.globalAlpha=(.65+d*.35)*p,t.beginPath(),t.arc(e*(.5+(g-1)*.09),e*.08,Math.max(1,e*(.022+d*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&s<3.1){let g=o===\"done\"?3:1;for(let d=0;d<g;d++){let c=o===\"done\"?(s-d*.38)/2.2:0;if(c<0||c>1)continue;let h=o===\"done\"?Math.sin(c*Math.PI):1,M=(n?.8:s*Math.PI*2/7.2)+d*2.1,x=Math.PI*1.4,i=-.38+d*.4,S=e*(.44+c*.03),y=e*(.19+c*.11),b=v=>{let w=Math.cos(v)*S,u=Math.sin(v)*y;return[e/2+w*Math.cos(i)-u*Math.sin(i),e/2+w*Math.sin(i)+u*Math.cos(i)]},A=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((v,w)=>A.addColorStop(w/Math.max(1,r.length-1),v)),t.strokeStyle=A,t.lineCap=\"butt\";for(let v=0;v<100;v++){let w=v/100,u=M-x+x*w,l=Math.sin(u)>=0;if(l!==(a===\"front\"))continue;let D=Math.sin(Math.PI*(.04+w*.92));t.globalAlpha=h*(l?.92:.55)*(.25+D*.75)*p,t.lineWidth=Math.max(.65,e*.027*D),t.beginPath(),t.moveTo(...b(u)),t.lineTo(...b(u+x/100)),t.stroke()}}}t.restore()}}var ve={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Se={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},Lt=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],Gt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],xt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},De=[...Gt,...Lt.filter(t=>t!==null),...Object.values(xt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"],Ae=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],we={nadia:Lt,sofia:Ae};function Pe(t,o){let e=1-2*(t+.5)/o,s=Math.sqrt(1-e*e),n=t*Math.PI*(3-Math.sqrt(5));return[s*Math.cos(n),e,s*Math.sin(n)]}function zt(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=W(o*.1*r,.3,s,s,1),p=_(t,e.rsPow??.6),f=[],m=e.ghostN??150;for(let D=0;D<m;D++){let[P,E,T]=Pe(D,m),[O,I,V]=a(P*n,E*n,T*n);f.push({x:O,y:I,z:V,r:.8*p,white:.78,a:.1+.22*((V/n+1)/2)})}let g=o*.24*r,d=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,h,M]=[Math.cos(g),0,Math.sin(g)],[x,i,S]=[-M*Math.sin(d),Math.cos(d),c*Math.sin(d)],[y,b,A]=[h*S-M*i,M*x-c*S,c*i-h*x],v=e.wobMul??1,w=e.faceOn?n/(1+.85*.23*v):n,u=e.segs??88,l=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let D=0;D<l;D++){let P=(D-(l-1)/2)*.075,E=Math.abs(D-(l-1)/2)/Math.max(1,(l-1)/2);for(let T=0;T<u;T++){let O=T/u*2*Math.PI,I=(.16*Math.sin(O*3-o*1.7+D*.22)+.07*Math.sin(O*5+o*1.1))*v,V=e.faceOn?1+I:1,R=e.faceOn?P:P+I,N=c*Math.cos(O)+x*Math.sin(O)+y*R,L=h*Math.cos(O)+i*Math.sin(O)+b*R,B=M*Math.cos(O)+S*Math.sin(O)+A*R,q=Math.sqrt(N*N+L*L+B*B),[K,k,C]=a(N/q*w*V,L/q*w*V,B/q*w*V),z=(C/n+1)/2;f.push({x:K,y:k,z:C,r:((e.rBase??1.1)+(e.rDepth??1.7)*z)*(1-.25*E)*p,white:.08+.1*E,a:.55+.45*z,stripe:Math.min(3,Math.floor(D/l*4))})}}return j(f,[],e.rMin)}function Oe(t,o){for(let e of t.dots)e.x=o-e.x;return t}function Ee(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:p,reduced:f,breath:m,celebrationColors:g,stripeColors:d}=o,c=Se[o.presence],h=at(ve[e===\"nadia\"||e===\"sofia\"?\"ribbon\":e],s<=32?20:64),M=e===\"nadia\"?zt(s,n,h.opts):e===\"sofia\"?Oe(zt(s,n,h.opts),s):Z[h.mode](s,n,h.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&p>=o.timing.doneDuration,i=o.motion===\"ambient\"||x?\"idle\":a,S=o.motion===\"ambient\"?0:x?p-o.timing.doneDuration:p,y=Bt(i,S,o.timing,f),b=x?p-o.timing.doneDuration:p,A=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,v=(l,D)=>{let P=(l-s/2)*y.sx,E=(D-s/2)*y.sy;return[s/2+P*Math.cos(y.rotation)-E*Math.sin(y.rotation)+y.x*s,s/2+P*Math.sin(y.rotation)+E*Math.cos(y.rotation)+y.y*s]},w=m;o.motion===\"status\"&&Mt(t,i,s,b,f,g,\"back\",m,o.timing,A),t.fillStyle=r,t.strokeStyle=r;for(let l of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*w*c.alpha)),t.lineWidth=l.w*c.radius,t.beginPath(),t.moveTo(...v(l.x1,l.y1)),t.lineTo(...v(l.x2,l.y2)),t.stroke();let u=M.dots;for(let l of u)t.fillStyle=l.stripe===void 0?r:d[l.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*w*c.alpha)),t.beginPath(),t.arc(...v(l.x,l.y),l.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&Mt(t,i,s,b,f,g,\"front\",m,o.timing,A)}function jt(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(k){},setState(k){}};let r=window.matchMedia(\"(prefers-reduced-motion: reduce)\"),a=o.paused??!1,p=!0,f=!1,m=0,g=.6,d=0,c=0,h=o.state??\"idle\",M=o.motion??\"status\",x=null,i=0,S=1,y=o.size,b=getComputedStyle(t).color,A=[b],v=[b],w=\"\",u=X(),l={waiting:b,blocked:b};function D(){let k=t.getBoundingClientRect(),C=Math.min(k.width,k.height);return C>0?C:o.size}function P(){!n||f||!t.isConnected||(n.setTransform(S,0,0,S,0,0),Ee(n,{form:e,size:y,seconds:g,color:b,state:h,age:d,reduced:r.matches,breath:r.matches?Nt(h,c):1,presence:s,motion:M,celebrationColors:A,stripeColors:v,statusColors:l,timing:u}))}function E(){return f||!t.isConnected||!p||document.hidden||a?!1:r.matches?M===\"status\"&&(h===\"thinking\"||h===\"working\"):M===\"ambient\"?!0:!(h===\"blocked\"&&d>=u.blockedDuration)}function T(k){if(m=0,!!E()){if(x!==null){let C=Math.min((k-x)/1e3,.1);r.matches?c+=C:(g+=C*(M===\"ambient\"?dt(e):Ft(h,e,d,u)),M===\"status\"&&(d+=C))}x=k,(k-i>=1e3/30||!E())&&(P(),i=k),E()&&(m=requestAnimationFrame(T))}}function O(){cancelAnimationFrame(m),m=0,x=null,P(),E()&&(m=requestAnimationFrame(T))}function I(k){let C=document.createElement(\"span\");C.hidden=!0,C.style.color=k,(t.parentElement??document.body).append(C);let z=getComputedStyle(C).color;return C.remove(),z||b}function V(k,C){return[C,window.devicePixelRatio||1,k.color,...De.map(z=>k.getPropertyValue(z))].join(\"|\")}function R(){V(getComputedStyle(t),D())!==w&&N()}function N(){if(f||!t.isConnected)return;y=D();let k=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));t.width=k,t.height=k,S=k/y;let C=getComputedStyle(t);w=V(C,y),b=C.color,u=X(C),l={waiting:I(C.getPropertyValue(xt.waiting).trim()||b),blocked:I(C.getPropertyValue(xt.blocked).trim()||b)},A=Gt.map(z=>I(`color-mix(in oklch, ${C.getPropertyValue(z).trim()||b} 75%, white)`)),v=(we[e]??[]).map(z=>z&&C.getPropertyValue(z).trim()||b),O()}let L=new IntersectionObserver(([k])=>{p=k?.isIntersecting??!1,O()});L.observe(t);let B=new MutationObserver(R);for(let k=t;k;k=k.parentElement)B.observe(k,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"]});let q=new ResizeObserver(()=>{Math.abs(D()-y)>=.5&&N()});q.observe(t);function K(k){k.propertyName===\"color\"&&k.target instanceof Node&&k.target.contains(t)&&R()}return document.addEventListener(\"transitionend\",K,!0),r.addEventListener(\"change\",O),document.addEventListener(\"visibilitychange\",O),window.addEventListener(\"resize\",R),N(),{setState(k){h=k,d=0,c=0,O()},setPaused(k){a=k,O()},destroy(){f=!0,cancelAnimationFrame(m),L.disconnect(),B.disconnect(),q.disconnect(),document.removeEventListener(\"transitionend\",K,!0),r.removeEventListener(\"change\",O),document.removeEventListener(\"visibilitychange\",O),window.removeEventListener(\"resize\",R)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\"))jt(t,{form:t.dataset.agentOrb,size:Number(t.dataset.size),state:t.dataset.state??\"idle\"});})();\n";
2
2
  export const designTokensCss = "@layer tokens, theme;\n\n\n\n\n\n\n\n\n\n@layer tokens {\n :root {\n --nc-action: oklch(0.5005 0.2804 266.17);\n --nc-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-action-active: oklch(0.4202 0.2522 266.14);\n --nc-ink: oklch(0.1776 0.0000 0.00);\n --nc-body: oklch(0.5103 0.0000 0.00);\n --nc-muted: oklch(0.5278 0.0000 0.00);\n --nc-canvas: oklch(1.0000 0.0000 0.00);\n --nc-canvas-soft: oklch(0.9851 0.0000 0.00);\n --nc-canvas-soft-2: oklch(0.9702 0.0000 0.00);\n --nc-material-workspace: oklch(0.9851 0.0000 0.00);\n --nc-material-solid: oklch(1.0000 0.0000 0.00);\n --nc-material-resting: oklch(1.0000 0.0000 0.00);\n --nc-material-raised: oklch(1.0000 0.0000 0.00);\n --nc-material-floating: oklch(1.0000 0.0000 0.00);\n --nc-material-modal: oklch(1.0000 0.0000 0.00);\n --nc-line: oklch(0.9219 0.0000 0.00);\n --nc-input: oklch(0.5624 0.0000 0.00);\n --nc-focus-ring: oklch(0.1776 0.0000 0.00);\n --nc-scrim: oklch(0.9612 0.0000 0.00);\n --nc-link: oklch(0.5005 0.2804 266.17);\n --nc-link-deep: oklch(0.4202 0.2522 266.14);\n --nc-link-bg-soft: oklch(0.9656 0.0171 248.01);\n --nc-info: oklch(0.5005 0.2804 266.17);\n --nc-info-soft: oklch(0.9457 0.0259 276.40);\n --nc-info-deep: oklch(0.3197 0.1758 266.79);\n --nc-success: oklch(0.6415 0.1644 153.23);\n --nc-success-soft: oklch(0.9170 0.0519 161.77);\n --nc-success-deep: oklch(0.3852 0.0953 154.99);\n --nc-error: oklch(0.5688 0.1995 26.59);\n --nc-error-soft: oklch(0.9522 0.0207 17.52);\n --nc-error-deep: oklch(0.4235 0.1525 27.08);\n --nc-warning: oklch(0.8466 0.1678 84.63);\n --nc-warning-soft: oklch(0.9649 0.0461 90.87);\n --nc-warning-deep: oklch(0.4834 0.0995 82.44);\n --nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00);\n --nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00);\n --nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00);\n --nc-state-ready: oklch(0.5278 0.0000 0.00);\n --nc-state-running: oklch(0.5005 0.2804 266.17);\n --nc-state-review: oklch(0.8466 0.1678 84.63);\n --nc-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-identity-verde: oklch(0.6415 0.1644 153.23);\n --nc-identity-rosso: oklch(0.5688 0.1995 26.59);\n --nc-identity-arancio: oklch(0.6824 0.2108 37.70);\n --nc-identity-giallo: oklch(0.8466 0.1678 84.63);\n --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);\n --nc-identity-azzurro: oklch(0.5618 0.2019 258.24);\n --nc-identity-ink: oklch(0.0000 0.0000 0.00);\n --nc-identity-white: oklch(1.0000 0.0000 0.00);\n --nc-logo-dot: oklch(0.5005 0.2804 266.17);\n --nc-chart-1: oklch(0.5005 0.2804 266.17);\n --nc-chart-2: oklch(0.6398 0.2044 356.46);\n --nc-chart-3: oklch(0.5015 0.1883 294.99);\n --nc-chart-4: oklch(0.6824 0.2108 37.70);\n --nc-chart-5: oklch(0.6161 0.1062 208.85);\n --nc-chart-6: oklch(0.5688 0.1995 26.59);\n --nc-chart-7: oklch(0.7691 0.1577 84.69);\n --nc-chart-8: oklch(0.6415 0.1644 153.23);\n --nc-chart-9: oklch(0.7191 0.1452 266.33);\n --nc-chart-10: oklch(0.8309 0.1048 356.57);\n --nc-cobalto-100: oklch(0.9754 0.0115 264.51);\n --nc-cobalto-200: oklch(0.9543 0.0215 265.76);\n --nc-cobalto-300: oklch(0.9297 0.0334 265.23);\n --nc-cobalto-400: oklch(0.8944 0.0509 267.00);\n --nc-cobalto-500: oklch(0.8308 0.0837 265.90);\n --nc-cobalto-600: oklch(0.7191 0.1452 266.33);\n --nc-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-cobalto-900: oklch(0.4202 0.2522 266.14);\n --nc-cobalto-1000: oklch(0.2811 0.1684 266.17);\n --nc-rosso-100: oklch(0.9752 0.0122 29.87);\n --nc-rosso-200: oklch(0.9552 0.0222 27.81);\n --nc-rosso-300: oklch(0.9290 0.0360 26.28);\n --nc-rosso-400: oklch(0.8944 0.0552 26.52);\n --nc-rosso-500: oklch(0.8304 0.0942 26.48);\n --nc-rosso-600: oklch(0.7201 0.1742 26.79);\n --nc-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-rosso-900: oklch(0.4882 0.1797 26.59);\n --nc-rosso-1000: oklch(0.2805 0.1143 26.81);\n --nc-arancio-100: oklch(0.9749 0.0125 35.73);\n --nc-arancio-200: oklch(0.9544 0.0233 37.38);\n --nc-arancio-300: oklch(0.9298 0.0366 36.77);\n --nc-arancio-400: oklch(0.8945 0.0567 37.21);\n --nc-arancio-500: oklch(0.8292 0.0974 37.12);\n --nc-arancio-600: oklch(0.7428 0.1602 37.76);\n --nc-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-arancio-900: oklch(0.4993 0.1647 37.64);\n --nc-arancio-1000: oklch(0.2801 0.0916 38.02);\n --nc-giallo-100: oklch(0.9860 0.0154 86.42);\n --nc-giallo-200: oklch(0.9699 0.0272 83.54);\n --nc-giallo-300: oklch(0.9555 0.0420 85.96);\n --nc-giallo-400: oklch(0.9298 0.0673 84.45);\n --nc-giallo-500: oklch(0.9004 0.1074 84.93);\n --nc-giallo-600: oklch(0.8696 0.1403 84.42);\n --nc-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-giallo-800: oklch(0.7691 0.1577 84.69);\n --nc-giallo-900: oklch(0.5305 0.1090 83.33);\n --nc-giallo-1000: oklch(0.3186 0.0654 84.14);\n --nc-verde-100: oklch(0.9747 0.0157 154.48);\n --nc-verde-200: oklch(0.9560 0.0265 152.38);\n --nc-verde-300: oklch(0.9290 0.0407 153.11);\n --nc-verde-400: oklch(0.8955 0.0664 152.93);\n --nc-verde-500: oklch(0.8310 0.1403 153.27);\n --nc-verde-600: oklch(0.7191 0.1645 153.16);\n --nc-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-verde-900: oklch(0.4992 0.1279 153.23);\n --nc-verde-1000: oklch(0.2815 0.0723 153.13);\n --nc-acqua-100: oklch(0.9752 0.0109 211.04);\n --nc-acqua-200: oklch(0.9559 0.0171 205.84);\n --nc-acqua-300: oklch(0.9297 0.0259 208.75);\n --nc-acqua-400: oklch(0.8954 0.0424 207.56);\n --nc-acqua-500: oklch(0.8304 0.0902 209.06);\n --nc-acqua-600: oklch(0.7205 0.1064 208.54);\n --nc-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-acqua-900: oklch(0.4990 0.0860 208.78);\n --nc-acqua-1000: oklch(0.2797 0.0484 210.29);\n --nc-viola-100: oklch(0.9745 0.0134 295.33);\n --nc-viola-200: oklch(0.9545 0.0243 296.12);\n --nc-viola-300: oklch(0.9290 0.0381 295.47);\n --nc-viola-400: oklch(0.8954 0.0563 294.18);\n --nc-viola-500: oklch(0.8289 0.0954 295.03);\n --nc-viola-600: oklch(0.7204 0.1631 294.91);\n --nc-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-viola-900: oklch(0.4227 0.1694 295.05);\n --nc-viola-1000: oklch(0.2796 0.1131 295.14);\n --nc-rosa-100: oklch(0.9746 0.0139 355.00);\n --nc-rosa-200: oklch(0.9555 0.0241 358.28);\n --nc-rosa-300: oklch(0.9307 0.0386 357.63);\n --nc-rosa-400: oklch(0.8944 0.0614 356.49);\n --nc-rosa-500: oklch(0.8309 0.1048 356.57);\n --nc-rosa-600: oklch(0.7193 0.1969 356.59);\n --nc-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-rosa-900: oklch(0.5009 0.1842 356.43);\n --nc-rosa-1000: oklch(0.2808 0.1147 356.80);\n --nc-dark-canvas: oklch(0.0000 0.0000 0.00);\n --nc-dark-canvas-soft: oklch(0.1776 0.0000 0.00);\n --nc-dark-canvas-soft-2: oklch(0.2178 0.0000 0.00);\n --nc-dark-material-workspace: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-solid: oklch(0.0000 0.0000 0.00);\n --nc-dark-material-resting: oklch(0.1448 0.0000 0.00);\n --nc-dark-material-raised: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-floating: oklch(0.1684 0.0000 0.00);\n --nc-dark-material-modal: oklch(0.1684 0.0000 0.00);\n --nc-card-graphite: oklch(0.1957 0.0000 0.00);\n --nc-dark-ink: oklch(0.9461 0.0000 0.00);\n --nc-dark-body: oklch(0.7090 0.0000 0.00);\n --nc-dark-muted: oklch(0.6993 0.0000 0.00);\n --nc-dark-line: oklch(0.2686 0.0000 0.00);\n --nc-dark-input: oklch(0.5590 0.0000 0.00);\n --nc-dark-on-primary: oklch(0.1448 0.0000 0.00);\n --nc-dark-action: oklch(0.5005 0.2804 266.17);\n --nc-dark-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-dark-action-hover: oklch(0.4602 0.2797 266.14);\n --nc-dark-action-active: oklch(0.4202 0.2522 266.14);\n --nc-dark-link: oklch(0.7993 0.1005 266.67);\n --nc-dark-link-deep: oklch(0.8944 0.0509 267.00);\n --nc-dark-link-bg-soft: oklch(0.2518 0.0572 257.41);\n --nc-dark-focus-ring: oklch(0.9461 0.0000 0.00);\n --nc-dark-scrim: oklch(0.0000 0.0000 0.00);\n --nc-dark-error: oklch(0.7955 0.0980 21.02);\n --nc-dark-error-soft: oklch(0.2296 0.0728 26.06);\n --nc-dark-error-deep: oklch(0.8856 0.0534 19.64);\n --nc-dark-warning: oklch(0.8939 0.1387 90.47);\n --nc-dark-warning-soft: oklch(0.3135 0.0643 85.04);\n --nc-dark-warning-deep: oklch(0.9320 0.0896 90.86);\n --nc-dark-info: oklch(0.7067 0.1528 272.08);\n --nc-dark-info-soft: oklch(0.2118 0.1033 268.28);\n --nc-dark-info-deep: oklch(0.8222 0.0888 274.44);\n --nc-dark-success: oklch(0.7019 0.1753 153.20);\n --nc-dark-success-soft: oklch(0.2893 0.0697 156.32);\n --nc-dark-success-deep: oklch(0.8524 0.0996 159.83);\n --nc-dark-state-ready: oklch(0.5624 0.0000 0.00);\n --nc-dark-state-running: oklch(0.5005 0.2804 266.17);\n --nc-dark-state-review: oklch(0.8466 0.1678 84.63);\n --nc-dark-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-dark-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-dark-logo-dot: oklch(0.5923 0.2215 269.61);\n --nc-dark-navigation-selection-bg: oklch(0.2393 0.0000 0.00);\n --nc-dark-navigation-selection-fg: oklch(0.9461 0.0000 0.00);\n --nc-dark-navigation-selection-hover: oklch(0.2686 0.0000 0.00);\n --nc-dark-chart-1: oklch(0.6007 0.2160 266.02);\n --nc-dark-chart-2: oklch(0.6611 0.1941 356.61);\n --nc-dark-chart-3: oklch(0.6004 0.1789 294.79);\n --nc-dark-chart-4: oklch(0.6612 0.2003 37.74);\n --nc-dark-chart-5: oklch(0.6568 0.1009 208.69);\n --nc-dark-chart-6: oklch(0.6084 0.1887 26.65);\n --nc-dark-chart-7: oklch(0.8466 0.1678 84.63);\n --nc-dark-chart-8: oklch(0.6608 0.1568 153.03);\n --nc-dark-chart-9: oklch(0.7993 0.1005 266.67);\n --nc-dark-chart-10: oklch(0.8005 0.1279 356.32);\n --nc-dark-cobalto-100: oklch(0.1915 0.0982 266.32);\n --nc-dark-cobalto-200: oklch(0.2197 0.1184 266.25);\n --nc-dark-cobalto-300: oklch(0.2604 0.1398 265.97);\n --nc-dark-cobalto-400: oklch(0.2997 0.1624 266.24);\n --nc-dark-cobalto-500: oklch(0.3702 0.1966 266.08);\n --nc-dark-cobalto-600: oklch(0.6007 0.2160 266.02);\n --nc-dark-cobalto-700: oklch(0.5005 0.2804 266.17);\n --nc-dark-cobalto-800: oklch(0.4602 0.2797 266.14);\n --nc-dark-cobalto-900: oklch(0.7993 0.1005 266.67);\n --nc-dark-cobalto-1000: oklch(0.9604 0.0186 265.98);\n --nc-dark-rosso-100: oklch(0.1907 0.0689 26.80);\n --nc-dark-rosso-200: oklch(0.2215 0.0837 26.41);\n --nc-dark-rosso-300: oklch(0.2596 0.0994 26.37);\n --nc-dark-rosso-400: oklch(0.3014 0.1159 26.97);\n --nc-dark-rosso-500: oklch(0.3705 0.1397 26.54);\n --nc-dark-rosso-600: oklch(0.6084 0.1887 26.65);\n --nc-dark-rosso-700: oklch(0.5688 0.1995 26.59);\n --nc-dark-rosso-800: oklch(0.5297 0.1996 26.67);\n --nc-dark-rosso-900: oklch(0.7992 0.1149 26.43);\n --nc-dark-rosso-1000: oklch(0.9598 0.0198 25.17);\n --nc-dark-arancio-100: oklch(0.1909 0.0632 37.47);\n --nc-dark-arancio-200: oklch(0.2201 0.0732 37.26);\n --nc-dark-arancio-300: oklch(0.2598 0.0852 37.90);\n --nc-dark-arancio-400: oklch(0.2988 0.0989 37.50);\n --nc-dark-arancio-500: oklch(0.3706 0.1219 37.77);\n --nc-dark-arancio-600: oklch(0.6612 0.2003 37.74);\n --nc-dark-arancio-700: oklch(0.6824 0.2108 37.70);\n --nc-dark-arancio-800: oklch(0.6419 0.2102 37.75);\n --nc-dark-arancio-900: oklch(0.7993 0.1180 37.52);\n --nc-dark-arancio-1000: oklch(0.9590 0.0208 36.03);\n --nc-dark-giallo-100: oklch(0.1903 0.0391 84.07);\n --nc-dark-giallo-200: oklch(0.2185 0.0449 83.81);\n --nc-dark-giallo-300: oklch(0.2592 0.0532 83.54);\n --nc-dark-giallo-400: oklch(0.3008 0.0616 85.18);\n --nc-dark-giallo-500: oklch(0.3705 0.0759 85.25);\n --nc-dark-giallo-600: oklch(0.6598 0.1353 84.83);\n --nc-dark-giallo-700: oklch(0.8466 0.1678 84.63);\n --nc-dark-giallo-800: oklch(0.8064 0.1654 84.43);\n --nc-dark-giallo-900: oklch(0.8007 0.1595 84.74);\n --nc-dark-giallo-1000: oklch(0.9604 0.0256 84.59);\n --nc-dark-verde-100: oklch(0.1910 0.0488 153.39);\n --nc-dark-verde-200: oklch(0.2208 0.0571 152.80);\n --nc-dark-verde-300: oklch(0.2606 0.0664 153.49);\n --nc-dark-verde-400: oklch(0.2987 0.0765 153.24);\n --nc-dark-verde-500: oklch(0.3685 0.0944 153.24);\n --nc-dark-verde-600: oklch(0.6608 0.1568 153.03);\n --nc-dark-verde-700: oklch(0.6415 0.1644 153.23);\n --nc-dark-verde-800: oklch(0.6017 0.1542 153.23);\n --nc-dark-verde-900: oklch(0.7994 0.1555 153.29);\n --nc-dark-verde-1000: oklch(0.9600 0.0248 152.88);\n --nc-dark-acqua-100: oklch(0.1914 0.0330 209.05);\n --nc-dark-acqua-200: oklch(0.2192 0.0379 209.81);\n --nc-dark-acqua-300: oklch(0.2610 0.0450 209.30);\n --nc-dark-acqua-400: oklch(0.3011 0.0519 208.95);\n --nc-dark-acqua-500: oklch(0.3711 0.0639 208.82);\n --nc-dark-acqua-600: oklch(0.6568 0.1009 208.69);\n --nc-dark-acqua-700: oklch(0.6161 0.1062 208.85);\n --nc-dark-acqua-800: oklch(0.5765 0.0992 208.28);\n --nc-dark-acqua-900: oklch(0.8004 0.1007 208.37);\n --nc-dark-acqua-1000: oklch(0.9596 0.0161 206.44);\n --nc-dark-viola-100: oklch(0.1897 0.0654 295.79);\n --nc-dark-viola-200: oklch(0.2192 0.0805 294.49);\n --nc-dark-viola-300: oklch(0.2605 0.0949 295.18);\n --nc-dark-viola-400: oklch(0.2990 0.1087 294.76);\n --nc-dark-viola-500: oklch(0.3702 0.1310 295.14);\n --nc-dark-viola-600: oklch(0.6004 0.1789 294.79);\n --nc-dark-viola-700: oklch(0.5015 0.1883 294.99);\n --nc-dark-viola-800: oklch(0.4620 0.1886 294.84);\n --nc-dark-viola-900: oklch(0.8000 0.1131 295.20);\n --nc-dark-viola-1000: oklch(0.9591 0.0215 294.60);\n --nc-dark-rosa-100: oklch(0.1902 0.0716 355.67);\n --nc-dark-rosa-200: oklch(0.2198 0.0850 357.06);\n --nc-dark-rosa-300: oklch(0.2591 0.1026 356.37);\n --nc-dark-rosa-400: oklch(0.3000 0.1188 356.62);\n --nc-dark-rosa-500: oklch(0.3695 0.1426 356.71);\n --nc-dark-rosa-600: oklch(0.6611 0.1941 356.61);\n --nc-dark-rosa-700: oklch(0.6398 0.2044 356.46);\n --nc-dark-rosa-800: oklch(0.6001 0.2050 356.50);\n --nc-dark-rosa-900: oklch(0.8005 0.1279 356.32);\n --nc-dark-rosa-1000: oklch(0.9599 0.0220 356.32);\n --nc-category-teal-soft: oklch(0.9585 0.0244 187.32);\n --nc-category-teal-deep: oklch(0.4600 0.0788 185.34);\n --nc-dark-category-teal-soft: oklch(0.2627 0.0410 187.13);\n --nc-dark-category-teal-deep: oklch(0.8398 0.1008 186.70);\n --nc-category-purple-soft: oklch(0.9464 0.0327 307.17);\n --nc-category-purple-deep: oklch(0.4541 0.1958 308.26);\n --nc-dark-category-purple-soft: oklch(0.2479 0.0790 306.78);\n --nc-dark-category-purple-deep: oklch(0.7911 0.1271 310.92);\n --nc-category-pink-soft: oklch(0.9476 0.0263 347.12);\n --nc-category-pink-deep: oklch(0.4863 0.1711 355.09);\n --nc-dark-category-pink-soft: oklch(0.2550 0.0598 353.51);\n --nc-dark-category-pink-deep: oklch(0.8108 0.1129 347.21);\n --nc-xxs: 4px;\n --nc-xs: 8px;\n --nc-sm: 12px;\n --nc-md: 16px;\n --nc-lg: 24px;\n --nc-xl: 32px;\n --nc-2xl: 40px;\n --nc-3xl: 48px;\n --nc-4xl: 64px;\n --nc-5xl: 96px;\n --nc-6xl: 128px;\n --nc-guide: 1px;\n --nc-icon-stroke: 1.5px;\n --nc-icon-stroke-sm: 1.25px;\n --nc-focus-outline-width: 2px;\n --nc-focus-outline-offset: 2px;\n --nc-control-height: 36px;\n --nc-control-height-sm: 32px;\n --nc-control-height-lg: 40px;\n --nc-control-height-xs: 24px;\n --nc-control-padding-inline: 12px;\n --nc-button-padding-inline-sm: 6px;\n --nc-button-padding-inline: 10px;\n --nc-button-padding-inline-lg: 14px;\n --nc-card-padding: 20px;\n --nc-touch-target: 44px;\n --nc-rounded-none: 0px;\n --nc-rounded-xs: 2px;\n --nc-rounded-xs-plus: 4px;\n --nc-rounded-sm: 6px;\n --nc-rounded-md: 8px;\n --nc-rounded-lg: 12px;\n --nc-rounded-xl: 16px;\n --nc-rounded-2xl: 20px;\n --nc-rounded-3xl: 24px;\n --nc-rounded-full: 9999px;\n --nc-type-display-xl-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-xl-font-size: 72px;\n --nc-type-display-xl-font-weight: 600;\n --nc-type-display-xl-line-height: 72px;\n --nc-type-display-xl-letter-spacing: -4.32px;\n --nc-type-display-wide-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-wide-font-size: 64px;\n --nc-type-display-wide-font-weight: 600;\n --nc-type-display-wide-line-height: 64px;\n --nc-type-display-wide-letter-spacing: -3.84px;\n --nc-type-display-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-lg-font-size: 56px;\n --nc-type-display-lg-font-weight: 600;\n --nc-type-display-lg-line-height: 56px;\n --nc-type-display-lg-letter-spacing: -3.36px;\n --nc-type-display-section-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-section-font-size: 48px;\n --nc-type-display-section-font-weight: 600;\n --nc-type-display-section-line-height: 56px;\n --nc-type-display-section-letter-spacing: -2.88px;\n --nc-type-display-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-display-md-font-size: 40px;\n --nc-type-display-md-font-weight: 600;\n --nc-type-display-md-line-height: 48px;\n --nc-type-display-md-letter-spacing: -2.4px;\n --nc-type-heading-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-lg-font-size: 32px;\n --nc-type-heading-lg-font-weight: 600;\n --nc-type-heading-lg-line-height: 40px;\n --nc-type-heading-lg-letter-spacing: -1.28px;\n --nc-type-heading-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-md-font-size: 24px;\n --nc-type-heading-md-font-weight: 600;\n --nc-type-heading-md-line-height: 32px;\n --nc-type-heading-md-letter-spacing: -0.96px;\n --nc-type-heading-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-sm-font-size: 20px;\n --nc-type-heading-sm-font-weight: 600;\n --nc-type-heading-sm-line-height: 26px;\n --nc-type-heading-sm-letter-spacing: -0.4px;\n --nc-type-heading-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-xs-font-size: 16px;\n --nc-type-heading-xs-font-weight: 600;\n --nc-type-heading-xs-line-height: 24px;\n --nc-type-heading-xs-letter-spacing: -0.32px;\n --nc-type-heading-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-heading-compact-font-size: 14px;\n --nc-type-heading-compact-font-weight: 600;\n --nc-type-heading-compact-line-height: 20px;\n --nc-type-heading-compact-letter-spacing: -0.28px;\n --nc-type-button-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-lg-font-size: 16px;\n --nc-type-button-lg-font-weight: 500;\n --nc-type-button-lg-line-height: 24px;\n --nc-type-button-lg-letter-spacing: 0px;\n --nc-type-button-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-font-size: 14px;\n --nc-type-button-font-weight: 500;\n --nc-type-button-line-height: 21px;\n --nc-type-button-letter-spacing: 0px;\n --nc-type-button-xs-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-button-xs-font-size: 12px;\n --nc-type-button-xs-font-weight: 500;\n --nc-type-button-xs-line-height: 16px;\n --nc-type-button-xs-letter-spacing: 0px;\n --nc-type-label-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-display-font-size: 20px;\n --nc-type-label-display-font-weight: 400;\n --nc-type-label-display-line-height: 32px;\n --nc-type-label-display-letter-spacing: 0px;\n --nc-type-label-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-lg-font-size: 18px;\n --nc-type-label-lg-font-weight: 400;\n --nc-type-label-lg-line-height: 20px;\n --nc-type-label-lg-letter-spacing: 0px;\n --nc-type-label-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-md-font-size: 16px;\n --nc-type-label-md-font-weight: 400;\n --nc-type-label-md-line-height: 20px;\n --nc-type-label-md-letter-spacing: 0px;\n --nc-type-label-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-font-size: 14px;\n --nc-type-label-font-weight: 400;\n --nc-type-label-line-height: 20px;\n --nc-type-label-letter-spacing: 0px;\n --nc-type-label-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-label-sm-font-size: 13px;\n --nc-type-label-sm-font-weight: 400;\n --nc-type-label-sm-line-height: 16px;\n --nc-type-label-sm-letter-spacing: 0px;\n --nc-type-caption-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-caption-font-size: 12px;\n --nc-type-caption-font-weight: 400;\n --nc-type-caption-line-height: 16px;\n --nc-type-caption-letter-spacing: 0px;\n --nc-type-label-mono-lg-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-lg-font-size: 14px;\n --nc-type-label-mono-lg-font-weight: 400;\n --nc-type-label-mono-lg-line-height: 20px;\n --nc-type-label-mono-lg-letter-spacing: 0px;\n --nc-type-label-mono-md-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-md-font-size: 13px;\n --nc-type-label-mono-md-font-weight: 400;\n --nc-type-label-mono-md-line-height: 20px;\n --nc-type-label-mono-md-letter-spacing: 0px;\n --nc-type-label-mono-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-label-mono-font-size: 12px;\n --nc-type-label-mono-font-weight: 400;\n --nc-type-label-mono-line-height: 16px;\n --nc-type-label-mono-letter-spacing: 0px;\n --nc-type-body-display-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-display-font-size: 24px;\n --nc-type-body-display-font-weight: 400;\n --nc-type-body-display-line-height: 36px;\n --nc-type-body-display-letter-spacing: 0px;\n --nc-type-body-lead-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lead-font-size: 20px;\n --nc-type-body-lead-font-weight: 400;\n --nc-type-body-lead-line-height: 36px;\n --nc-type-body-lead-letter-spacing: 0px;\n --nc-type-body-lg-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-lg-font-size: 18px;\n --nc-type-body-lg-font-weight: 400;\n --nc-type-body-lg-line-height: 28px;\n --nc-type-body-lg-letter-spacing: 0px;\n --nc-type-body-md-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-md-font-size: 16px;\n --nc-type-body-md-font-weight: 400;\n --nc-type-body-md-line-height: 24px;\n --nc-type-body-md-letter-spacing: 0px;\n --nc-type-body-sm-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-sm-font-size: 14px;\n --nc-type-body-sm-font-weight: 400;\n --nc-type-body-sm-line-height: 20px;\n --nc-type-body-sm-letter-spacing: 0px;\n --nc-type-body-compact-font-family:\n Geist,\n Inter,\n system-ui,\n -apple-system,\n sans-serif;\n --nc-type-body-compact-font-size: 13px;\n --nc-type-body-compact-font-weight: 400;\n --nc-type-body-compact-line-height: 18px;\n --nc-type-body-compact-letter-spacing: 0px;\n --nc-type-code-font-family:\n Geist Mono,\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n monospace;\n --nc-type-code-font-size: 13px;\n --nc-type-code-font-weight: 400;\n --nc-type-code-line-height: 18px;\n --nc-type-code-letter-spacing: 0px;\n --nc-material-scrim-opacity: 80%;\n --nc-material-dark-scrim-opacity: 60%;\n --nc-material-glass-opacity: 55%;\n --nc-material-glass-saturation: 180%;\n --nc-material-glass-blur: 20px;\n --nc-elevation-resting: 0px 0px 0px 1px rgb(0% 0% 0% / 0.08), 0px 2px 2px 0px rgb(0% 0% 0% / 0.04);\n --nc-elevation-raised:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 2px 2px 0px rgb(0% 0% 0% / 0.04),\n 0px 8px 16px -4px rgb(0% 0% 0% / 0.08);\n --nc-elevation-floating:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 1px 1px 0px rgb(0% 0% 0% / 0.02),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.1);\n --nc-elevation-modal:\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 8px 24px -12px rgb(0% 0% 0% / 0.12),\n 0px 32px 72px -12px rgb(0% 0% 0% / 0.12);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.75),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.35),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.06),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.08);\n --nc-duration-control: 100ms;\n --nc-duration-close: 140ms;\n --nc-duration-confirm: 180ms;\n --nc-duration-open: 220ms;\n --nc-duration-msg-in: 240ms;\n --nc-duration-transition: 240ms;\n --nc-duration-arrive: 300ms;\n --nc-duration-drawer-swipe: 400ms;\n --nc-duration-drawer: 450ms;\n --nc-duration-wait: 1.6s;\n --nc-ease-emphasized: cubic-bezier(0.3, 0.7, 0.2, 1);\n --nc-ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);\n --nc-ease-in-out-strong: cubic-bezier(0.77, 0, 0.175, 1);\n --nc-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);\n --nc-content-max: 1200px;\n --nc-gutter-mobile: 20px;\n --nc-gutter-tablet: 40px;\n --nc-gutter-desktop: 64px;\n --nc-section-step-mobile: 64px;\n --nc-section-step-desktop: 96px;\n }\n}\n\n\n@layer theme {\n .dark {\n --nc-canvas: var(--nc-dark-canvas);\n --nc-canvas-soft: var(--nc-dark-canvas-soft);\n --nc-canvas-soft-2: var(--nc-dark-canvas-soft-2);\n --nc-material-workspace: var(--nc-dark-material-workspace);\n --nc-material-solid: var(--nc-dark-material-solid);\n --nc-material-resting: var(--nc-dark-material-resting);\n --nc-material-raised: var(--nc-dark-material-raised);\n --nc-material-floating: var(--nc-dark-material-floating);\n --nc-material-modal: var(--nc-dark-material-modal);\n --nc-ink: var(--nc-dark-ink);\n --nc-body: var(--nc-dark-body);\n --nc-muted: var(--nc-dark-muted);\n --nc-line: var(--nc-dark-line);\n --nc-input: var(--nc-dark-input);\n --nc-action: var(--nc-dark-action);\n --nc-action-foreground: var(--nc-dark-action-foreground);\n --nc-action-hover: var(--nc-dark-action-hover);\n --nc-action-active: var(--nc-dark-action-active);\n --nc-link: var(--nc-dark-link);\n --nc-link-deep: var(--nc-dark-link-deep);\n --nc-link-bg-soft: var(--nc-dark-link-bg-soft);\n --nc-focus-ring: var(--nc-dark-focus-ring);\n --nc-scrim: var(--nc-dark-scrim);\n --nc-error: var(--nc-dark-error);\n --nc-error-soft: var(--nc-dark-error-soft);\n --nc-error-deep: var(--nc-dark-error-deep);\n --nc-warning: var(--nc-dark-warning);\n --nc-warning-soft: var(--nc-dark-warning-soft);\n --nc-warning-deep: var(--nc-dark-warning-deep);\n --nc-info: var(--nc-dark-info);\n --nc-info-soft: var(--nc-dark-info-soft);\n --nc-info-deep: var(--nc-dark-info-deep);\n --nc-success: var(--nc-dark-success);\n --nc-success-soft: var(--nc-dark-success-soft);\n --nc-success-deep: var(--nc-dark-success-deep);\n --nc-state-ready: var(--nc-dark-state-ready);\n --nc-state-running: var(--nc-dark-state-running);\n --nc-state-review: var(--nc-dark-state-review);\n --nc-state-blocked: var(--nc-dark-state-blocked);\n --nc-state-complete: var(--nc-dark-state-complete);\n --nc-logo-dot: var(--nc-dark-logo-dot);\n --nc-navigation-selection-bg: var(--nc-dark-navigation-selection-bg);\n --nc-navigation-selection-fg: var(--nc-dark-navigation-selection-fg);\n --nc-navigation-selection-hover: var(--nc-dark-navigation-selection-hover);\n --nc-chart-1: var(--nc-dark-chart-1);\n --nc-chart-2: var(--nc-dark-chart-2);\n --nc-chart-3: var(--nc-dark-chart-3);\n --nc-chart-4: var(--nc-dark-chart-4);\n --nc-chart-5: var(--nc-dark-chart-5);\n --nc-chart-6: var(--nc-dark-chart-6);\n --nc-chart-7: var(--nc-dark-chart-7);\n --nc-chart-8: var(--nc-dark-chart-8);\n --nc-chart-9: var(--nc-dark-chart-9);\n --nc-chart-10: var(--nc-dark-chart-10);\n --nc-cobalto-100: var(--nc-dark-cobalto-100);\n --nc-cobalto-200: var(--nc-dark-cobalto-200);\n --nc-cobalto-300: var(--nc-dark-cobalto-300);\n --nc-cobalto-400: var(--nc-dark-cobalto-400);\n --nc-cobalto-500: var(--nc-dark-cobalto-500);\n --nc-cobalto-600: var(--nc-dark-cobalto-600);\n --nc-cobalto-700: var(--nc-dark-cobalto-700);\n --nc-cobalto-800: var(--nc-dark-cobalto-800);\n --nc-cobalto-900: var(--nc-dark-cobalto-900);\n --nc-cobalto-1000: var(--nc-dark-cobalto-1000);\n --nc-rosso-100: var(--nc-dark-rosso-100);\n --nc-rosso-200: var(--nc-dark-rosso-200);\n --nc-rosso-300: var(--nc-dark-rosso-300);\n --nc-rosso-400: var(--nc-dark-rosso-400);\n --nc-rosso-500: var(--nc-dark-rosso-500);\n --nc-rosso-600: var(--nc-dark-rosso-600);\n --nc-rosso-700: var(--nc-dark-rosso-700);\n --nc-rosso-800: var(--nc-dark-rosso-800);\n --nc-rosso-900: var(--nc-dark-rosso-900);\n --nc-rosso-1000: var(--nc-dark-rosso-1000);\n --nc-arancio-100: var(--nc-dark-arancio-100);\n --nc-arancio-200: var(--nc-dark-arancio-200);\n --nc-arancio-300: var(--nc-dark-arancio-300);\n --nc-arancio-400: var(--nc-dark-arancio-400);\n --nc-arancio-500: var(--nc-dark-arancio-500);\n --nc-arancio-600: var(--nc-dark-arancio-600);\n --nc-arancio-700: var(--nc-dark-arancio-700);\n --nc-arancio-800: var(--nc-dark-arancio-800);\n --nc-arancio-900: var(--nc-dark-arancio-900);\n --nc-arancio-1000: var(--nc-dark-arancio-1000);\n --nc-giallo-100: var(--nc-dark-giallo-100);\n --nc-giallo-200: var(--nc-dark-giallo-200);\n --nc-giallo-300: var(--nc-dark-giallo-300);\n --nc-giallo-400: var(--nc-dark-giallo-400);\n --nc-giallo-500: var(--nc-dark-giallo-500);\n --nc-giallo-600: var(--nc-dark-giallo-600);\n --nc-giallo-700: var(--nc-dark-giallo-700);\n --nc-giallo-800: var(--nc-dark-giallo-800);\n --nc-giallo-900: var(--nc-dark-giallo-900);\n --nc-giallo-1000: var(--nc-dark-giallo-1000);\n --nc-verde-100: var(--nc-dark-verde-100);\n --nc-verde-200: var(--nc-dark-verde-200);\n --nc-verde-300: var(--nc-dark-verde-300);\n --nc-verde-400: var(--nc-dark-verde-400);\n --nc-verde-500: var(--nc-dark-verde-500);\n --nc-verde-600: var(--nc-dark-verde-600);\n --nc-verde-700: var(--nc-dark-verde-700);\n --nc-verde-800: var(--nc-dark-verde-800);\n --nc-verde-900: var(--nc-dark-verde-900);\n --nc-verde-1000: var(--nc-dark-verde-1000);\n --nc-acqua-100: var(--nc-dark-acqua-100);\n --nc-acqua-200: var(--nc-dark-acqua-200);\n --nc-acqua-300: var(--nc-dark-acqua-300);\n --nc-acqua-400: var(--nc-dark-acqua-400);\n --nc-acqua-500: var(--nc-dark-acqua-500);\n --nc-acqua-600: var(--nc-dark-acqua-600);\n --nc-acqua-700: var(--nc-dark-acqua-700);\n --nc-acqua-800: var(--nc-dark-acqua-800);\n --nc-acqua-900: var(--nc-dark-acqua-900);\n --nc-acqua-1000: var(--nc-dark-acqua-1000);\n --nc-viola-100: var(--nc-dark-viola-100);\n --nc-viola-200: var(--nc-dark-viola-200);\n --nc-viola-300: var(--nc-dark-viola-300);\n --nc-viola-400: var(--nc-dark-viola-400);\n --nc-viola-500: var(--nc-dark-viola-500);\n --nc-viola-600: var(--nc-dark-viola-600);\n --nc-viola-700: var(--nc-dark-viola-700);\n --nc-viola-800: var(--nc-dark-viola-800);\n --nc-viola-900: var(--nc-dark-viola-900);\n --nc-viola-1000: var(--nc-dark-viola-1000);\n --nc-rosa-100: var(--nc-dark-rosa-100);\n --nc-rosa-200: var(--nc-dark-rosa-200);\n --nc-rosa-300: var(--nc-dark-rosa-300);\n --nc-rosa-400: var(--nc-dark-rosa-400);\n --nc-rosa-500: var(--nc-dark-rosa-500);\n --nc-rosa-600: var(--nc-dark-rosa-600);\n --nc-rosa-700: var(--nc-dark-rosa-700);\n --nc-rosa-800: var(--nc-dark-rosa-800);\n --nc-rosa-900: var(--nc-dark-rosa-900);\n --nc-rosa-1000: var(--nc-dark-rosa-1000);\n --nc-category-teal-soft: var(--nc-dark-category-teal-soft);\n --nc-category-teal-deep: var(--nc-dark-category-teal-deep);\n --nc-category-purple-soft: var(--nc-dark-category-purple-soft);\n --nc-category-purple-deep: var(--nc-dark-category-purple-deep);\n --nc-category-pink-soft: var(--nc-dark-category-pink-soft);\n --nc-category-pink-deep: var(--nc-dark-category-pink-deep);\n --nc-material-scrim-opacity: var(--nc-material-dark-scrim-opacity);\n --nc-elevation-resting:\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 1px 2px 0px rgb(0% 0% 0% / 0.5);\n --nc-elevation-raised:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.06),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 12px 24px -8px rgb(0% 0% 0% / 0.8);\n --nc-elevation-floating:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.08),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.16),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 24px 48px -12px rgb(0% 0% 0% / 0.9);\n --nc-elevation-modal:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.18),\n 0px 0px 0px 2px rgb(0% 0% 0%),\n 0px 48px 96px -24px rgb(0% 0% 0%);\n --nc-elevation-glass:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.1),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.14),\n 0px 16px 32px -12px rgb(0% 0% 0% / 0.8);\n }\n}";
3
3
  export const brandWordmarkSvg = "<svg data-slot=\"brand-wordmark\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 858 150\" width=\"137\" height=\"24\" class=\"block h-6 w-auto\" role=\"img\" aria-label=\"nadicode\"><g fill=\"none\" stroke=\"currentColor\" stroke-width=\"18\"><path d=\"M9 150V100A41 41 0 0 1 91 100V150\"></path><circle cx=\"172\" cy=\"100\" r=\"41\"></circle><path d=\"M213 50V150\"></path><circle cx=\"294\" cy=\"100\" r=\"41\"></circle><path d=\"M335 0V150\"></path><path d=\"M375 50V150\"></path><path d=\"M484.99 71.01A41 41 0 1 0 484.99 128.99\"></path><circle cx=\"564\" cy=\"100\" r=\"41\"></circle><circle cx=\"686\" cy=\"100\" r=\"41\"></circle><path d=\"M727 0V150\"></path><path d=\"M767 100H849A41 41 0 1 0 839.41 126.35\"></path></g><circle cx=\"375\" cy=\"21\" r=\"14\" fill=\"var(--nc-logo-dot)\"></circle></svg>";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nadicodeai/ui",
3
- "version": "12.1.133",
3
+ "version": "12.1.134",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -83,7 +83,7 @@
83
83
  "@base-ui/react": "^1.9.0",
84
84
  "@iconify-icons/logos": "^2.0.3",
85
85
  "@iconify/react": "^6.0.2",
86
- "@nadicodeai/design-system": "12.1.133",
86
+ "@nadicodeai/design-system": "12.1.134",
87
87
  "@tanstack/react-table": "^9.3.1",
88
88
  "@vgpu/wgsl": "0.6.0",
89
89
  "class-variance-authority": "^0.7.1",