@nadicodeai/ui 12.1.161 → 12.1.163
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/agent-orb.d.ts +6 -5
- package/dist/components/agent-orb.d.ts.map +1 -1
- package/dist/components/agent-orb.js +4 -3
- package/dist/components/model-identity.d.ts.map +1 -1
- package/dist/components/model-identity.js +12 -0
- package/dist/internal/agent-orb-motion.js +1 -1
- package/dist/internal/agent-orb.d.ts +2 -1
- package/dist/internal/agent-orb.d.ts.map +1 -1
- package/dist/internal/agent-orb.js +22 -9
- package/dist/internal/assistant-ui/thread-labels.d.ts +22 -0
- package/dist/internal/assistant-ui/thread-labels.d.ts.map +1 -0
- package/dist/internal/assistant-ui/thread-labels.js +23 -0
- package/dist/internal/assistant-ui/thread.d.ts +7 -0
- package/dist/internal/assistant-ui/thread.d.ts.map +1 -1
- package/dist/internal/assistant-ui/thread.js +32 -16
- package/dist/internal/assistant-ui/tool-fallback.d.ts +5 -0
- package/dist/internal/assistant-ui/tool-fallback.d.ts.map +1 -1
- package/dist/internal/assistant-ui/tool-fallback.js +20 -5
- package/dist/showcase/usage.generated.js +1 -1
- package/dist/standalone/index.js +1 -1
- package/package.json +2 -2
|
@@ -4,9 +4,9 @@ export type { AgentOrbFigure, AgentOrbForm, AgentOrbMotion, AgentOrbPresence, Ag
|
|
|
4
4
|
import type { AgentOrbState } from "../internal/agent-orb-motion.js";
|
|
5
5
|
export type { AgentOrbState } from "../internal/agent-orb-motion.js";
|
|
6
6
|
type AgentOrbBaseProps = {
|
|
7
|
-
/** A chosen form, or `nadia` or `sofia`: their
|
|
7
|
+
/** A chosen form, or `nadia` or `sofia`: their own figures, whose colours are fixed. */
|
|
8
8
|
form: AgentOrbFigure;
|
|
9
|
-
/** The pigment of a chosen form; on Nadia
|
|
9
|
+
/** The pigment of a chosen form; on Nadia only the third stripe takes it, and Sofia takes none. */
|
|
10
10
|
color?: CSSProperties["color"];
|
|
11
11
|
/** The laid-out size, unless `className` sizes the canvas itself. */
|
|
12
12
|
size?: AgentOrbSize;
|
|
@@ -59,9 +59,10 @@ export type AgentOrbProps = AgentOrbBaseProps & ({
|
|
|
59
59
|
* text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it
|
|
60
60
|
* is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the
|
|
61
61
|
* same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro,
|
|
62
|
-
* verde, the text colour and rosso along its whole length. Sofia,
|
|
63
|
-
*
|
|
64
|
-
*
|
|
62
|
+
* verde, the text colour and rosso along its whole length. Sofia, nadicode's own Agent in the
|
|
63
|
+
* Portal, is her sister, the form `sofia`: the shapeshifting morph, a circle that turns into a
|
|
64
|
+
* triangle and a square, its outline cut into five arcs in the brand's identity colours, cobalto,
|
|
65
|
+
* verde, giallo, arancio and rosso, each holding its arc through every shape. Neither
|
|
65
66
|
* figure is ever stored as an Agent's look.
|
|
66
67
|
* An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a
|
|
67
68
|
* template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent
|
|
@@ -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,
|
|
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,wFAAwF;IACxF,IAAI,EAAE,cAAc,CAAC;IACrB,mGAAmG;IACnG,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;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"}
|
|
@@ -33,9 +33,10 @@ import { cn } from "../lib/utils.js";
|
|
|
33
33
|
* text colour. Giallo is not offered because it fails 3:1 on white; rosso is not offered because it
|
|
34
34
|
* is the error red. nadicode's own two Agents are the only ones with a figure nobody chooses, the
|
|
35
35
|
* same at every size and in every state. Nadia is her striped ribbon, the form `nadia`: azzurro,
|
|
36
|
-
* verde, the text colour and rosso along its whole length. Sofia,
|
|
37
|
-
*
|
|
38
|
-
*
|
|
36
|
+
* verde, the text colour and rosso along its whole length. Sofia, nadicode's own Agent in the
|
|
37
|
+
* Portal, is her sister, the form `sofia`: the shapeshifting morph, a circle that turns into a
|
|
38
|
+
* triangle and a square, its outline cut into five arcs in the brand's identity colours, cobalto,
|
|
39
|
+
* verde, giallo, arancio and rosso, each holding its arc through every shape. Neither
|
|
39
40
|
* figure is ever stored as an Agent's look.
|
|
40
41
|
* An Agent's form is stored as `orb:<form>` and its colour as the identity hex or nothing; a
|
|
41
42
|
* template declares its starting look the same way. The stored-appearance resolver reads it: the root Agent
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-identity.d.ts","sourceRoot":"","sources":["../../src/components/model-identity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAItD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;
|
|
1
|
+
{"version":3,"file":"model-identity.d.ts","sourceRoot":"","sources":["../../src/components/model-identity.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAItD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAsBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BASpF"}
|
|
@@ -10,10 +10,22 @@ export function modelAuthor(model) {
|
|
|
10
10
|
return separator === -1 ? "" : model.slice(0, separator);
|
|
11
11
|
}
|
|
12
12
|
const MODEL_NAMES = new Map([
|
|
13
|
+
["anthropic/claude-fable-5.1", "Claude Fable 5.1"],
|
|
14
|
+
["anthropic/claude-haiku-5.5", "Claude Haiku 5.5"],
|
|
13
15
|
["anthropic/claude-opus-5", "Claude Opus 5"],
|
|
16
|
+
["anthropic/claude-opus-5.5", "Claude Opus 5.5"],
|
|
14
17
|
["anthropic/claude-sonnet-5", "Claude Sonnet 5"],
|
|
18
|
+
["anthropic/claude-sonnet-5.5", "Claude Sonnet 5.5"],
|
|
19
|
+
["deepseek/deepseek-v4.1-flash", "DeepSeek V4.1 Flash"],
|
|
15
20
|
["google/gemini-3.1-flash-lite", "Gemini 3.1 Flash Lite"],
|
|
21
|
+
["google/gemini-3.1-pro-preview", "Gemini 3.1 Pro Preview"],
|
|
22
|
+
["google/gemini-3.8-flash", "Gemini 3.8 Flash"],
|
|
23
|
+
["mistral/mistral-large-4", "Mistral Large 4"],
|
|
24
|
+
["moonshotai/kimi-k3", "Kimi K3"],
|
|
25
|
+
["openai/gpt-5.6-luna", "GPT-5.6 Luna"],
|
|
16
26
|
["openai/gpt-5.6-sol", "GPT-5.6 Sol"],
|
|
27
|
+
["openai/gpt-6-luna", "GPT-6 Luna"],
|
|
28
|
+
["openai/gpt-6.1-sol", "GPT-6.1 Sol"],
|
|
17
29
|
["x-ai/grok-4.5", "Grok 4.5"],
|
|
18
30
|
]);
|
|
19
31
|
/**
|
|
@@ -12,7 +12,8 @@ declare const agentOrbForms: {
|
|
|
12
12
|
export type AgentOrbForm = keyof typeof agentOrbForms;
|
|
13
13
|
/**
|
|
14
14
|
* A chosen form, or one of nadicode's own two Agents, whose figures nobody
|
|
15
|
-
* chooses: Nadia's ribbon, and Sofia's
|
|
15
|
+
* chooses: Nadia's striped ribbon, and Sofia's shapeshifting morph in the
|
|
16
|
+
* brand's five colours.
|
|
16
17
|
*/
|
|
17
18
|
export type AgentOrbFigure = AgentOrbForm | "nadia" | "sofia";
|
|
18
19
|
export type AgentOrbSize = 20 | 24 | 32 | 40 | 64 | 96 | 160;
|
|
@@ -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,EAQnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD
|
|
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,EAQnB,MAAM,oBAAoB,CAAC;AAE5B,QAAA,MAAM,aAAa;;;;;;;;CAQ0B,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,aAAa,CAAC;AACtD;;;;GAIG;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;AAgElD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAuDpF;AAqJD,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;AAmIxF,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,oBAAoB;;sBAIzC,OAAO;qBAAuB,aAAa;EA2LvF"}
|
|
@@ -34,14 +34,15 @@ const statusTokens = { waiting: "--nc-warning-deep", blocked: "--nc-error" };
|
|
|
34
34
|
*/
|
|
35
35
|
const computedColors = new Map();
|
|
36
36
|
/**
|
|
37
|
-
* Sofia's
|
|
38
|
-
*
|
|
37
|
+
* Sofia's five arcs around her outline: the brand's five identity colours,
|
|
38
|
+
* cobalto, verde, giallo, arancio and rosso, walking the hue wheel.
|
|
39
39
|
*/
|
|
40
40
|
const sofiaStripes = [
|
|
41
41
|
"--nc-identity-cobalto",
|
|
42
|
+
"--nc-identity-verde",
|
|
42
43
|
"--nc-identity-giallo",
|
|
43
|
-
null,
|
|
44
44
|
"--nc-identity-arancio",
|
|
45
|
+
"--nc-identity-rosso",
|
|
45
46
|
];
|
|
46
47
|
const figureStripes = {
|
|
47
48
|
nadia: nadiaStripes,
|
|
@@ -119,12 +120,24 @@ export function stripedRibbonFrame(size, t, opts) {
|
|
|
119
120
|
}
|
|
120
121
|
return finalizeFrame(dots, [], opts.rMin);
|
|
121
122
|
}
|
|
122
|
-
/**
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
/**
|
|
124
|
+
* The vendor lays
|
|
125
|
+
* the dots in order along the outline, all at one depth, and its depth sort is
|
|
126
|
+
* stable, so a dot's place in the frame is its place on the outline and each
|
|
127
|
+
* colour keeps its arc through every shape.
|
|
128
|
+
*/
|
|
129
|
+
function brandMorphFrame(frame, arcs) {
|
|
130
|
+
const dots = frame.dots;
|
|
131
|
+
for (const [index, dot] of dots.entries()) {
|
|
132
|
+
dot.stripe = Math.floor((index / dots.length) * arcs);
|
|
133
|
+
}
|
|
126
134
|
return frame;
|
|
127
135
|
}
|
|
136
|
+
function drawnForm(form) {
|
|
137
|
+
if (form === "nadia")
|
|
138
|
+
return "ribbon";
|
|
139
|
+
return form === "sofia" ? "morph" : form;
|
|
140
|
+
}
|
|
128
141
|
function detailProfile(drawn) {
|
|
129
142
|
if (drawn <= 32)
|
|
130
143
|
return 20;
|
|
@@ -136,11 +149,11 @@ function shownState(state, age, motion, timing) {
|
|
|
136
149
|
function paintAgentOrb(context, input) {
|
|
137
150
|
const { form, size, seconds, color, state, age, reduced, breath, celebrationColors, stripeColors, } = input;
|
|
138
151
|
const presence = presenceWeights[input.presence];
|
|
139
|
-
const preset = resolvePreset(agentOrbForms[form
|
|
152
|
+
const preset = resolvePreset(agentOrbForms[drawnForm(form)], detailProfile(size));
|
|
140
153
|
const frame = form === "nadia"
|
|
141
154
|
? stripedRibbonFrame(size, seconds, preset.opts)
|
|
142
155
|
: form === "sofia"
|
|
143
|
-
?
|
|
156
|
+
? brandMorphFrame(MODE_FRAMES[preset.mode](size, seconds, preset.opts), sofiaStripes.length)
|
|
144
157
|
: MODE_FRAMES[preset.mode](size, seconds, preset.opts);
|
|
145
158
|
context.clearRect(0, 0, size, size);
|
|
146
159
|
const done = state === "done" && age >= input.timing.doneDuration;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** The thread's own words, for a product that shows them in another language. */
|
|
2
|
+
export type ThreadLabels = {
|
|
3
|
+
composerPlaceholder: string;
|
|
4
|
+
composerInput: string;
|
|
5
|
+
send: string;
|
|
6
|
+
stop: string;
|
|
7
|
+
scrollToBottom: string;
|
|
8
|
+
allow: string;
|
|
9
|
+
deny: string;
|
|
10
|
+
usedTool: string;
|
|
11
|
+
runningTool: string;
|
|
12
|
+
waitingTool: string;
|
|
13
|
+
cancelledTool: string;
|
|
14
|
+
copy: string;
|
|
15
|
+
refresh: string;
|
|
16
|
+
more: string;
|
|
17
|
+
exportMarkdown: string;
|
|
18
|
+
};
|
|
19
|
+
export declare const defaultThreadLabels: ThreadLabels;
|
|
20
|
+
export declare const ThreadLabelsContext: import("react").Context<ThreadLabels>;
|
|
21
|
+
export declare function useThreadLabels(): ThreadLabels;
|
|
22
|
+
//# sourceMappingURL=thread-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-labels.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/thread-labels.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,YAgBjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,uCAAmD,CAAC;AAEpF,wBAAgB,eAAe,IAAI,YAAY,CAE9C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, useContext } from "react";
|
|
3
|
+
export const defaultThreadLabels = {
|
|
4
|
+
composerPlaceholder: "Send a message...",
|
|
5
|
+
composerInput: "Message input",
|
|
6
|
+
send: "Send message",
|
|
7
|
+
stop: "Stop generating",
|
|
8
|
+
scrollToBottom: "Scroll to bottom",
|
|
9
|
+
allow: "Allow",
|
|
10
|
+
deny: "Deny",
|
|
11
|
+
usedTool: "Used tool",
|
|
12
|
+
runningTool: "Running tool",
|
|
13
|
+
waitingTool: "Waiting for you",
|
|
14
|
+
cancelledTool: "Cancelled tool",
|
|
15
|
+
copy: "Copy",
|
|
16
|
+
refresh: "Refresh",
|
|
17
|
+
more: "More",
|
|
18
|
+
exportMarkdown: "Export as Markdown",
|
|
19
|
+
};
|
|
20
|
+
export const ThreadLabelsContext = createContext(defaultThreadLabels);
|
|
21
|
+
export function useThreadLabels() {
|
|
22
|
+
return useContext(ThreadLabelsContext);
|
|
23
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { type ThreadLabels } from "./thread-labels.js";
|
|
1
2
|
import { MessagePrimitive, type ToolCallMessagePartComponent } from "@assistant-ui/react";
|
|
2
3
|
import { type ComponentType, type FC, type PropsWithChildren } from "react";
|
|
3
4
|
export type ThreadGroupPart = MessagePrimitive.GroupedParts.GroupPart;
|
|
5
|
+
export type { ThreadLabels };
|
|
4
6
|
/**
|
|
5
7
|
* Optional component overrides for the thread. `AssistantMessage` and
|
|
6
8
|
* `Welcome` replace whole sections; the remaining slots override how the
|
|
@@ -11,6 +13,8 @@ export type ThreadGroupPart = MessagePrimitive.GroupedParts.GroupPart;
|
|
|
11
13
|
export type ThreadComponents = {
|
|
12
14
|
AssistantMessage?: ComponentType | undefined;
|
|
13
15
|
Welcome?: ComponentType | undefined;
|
|
16
|
+
/** The mark of the assistant's work while its reply has nothing to show yet: an Agent's own orb, working. */
|
|
17
|
+
Indicator?: ComponentType | undefined;
|
|
14
18
|
ToolFallback?: ToolCallMessagePartComponent | undefined;
|
|
15
19
|
ToolGroup?: ComponentType<PropsWithChildren<{
|
|
16
20
|
group: ThreadGroupPart;
|
|
@@ -21,6 +25,9 @@ export type ThreadComponents = {
|
|
|
21
25
|
};
|
|
22
26
|
export type ThreadProps = {
|
|
23
27
|
components?: ThreadComponents | undefined;
|
|
28
|
+
labels?: Partial<ThreadLabels> | undefined;
|
|
29
|
+
/** Whether tool calls show their input and result; `false` for people who are not developers. */
|
|
30
|
+
toolDetails?: boolean | undefined;
|
|
24
31
|
};
|
|
25
32
|
export declare const Thread: FC<ThreadProps>;
|
|
26
33
|
//# sourceMappingURL=thread.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/thread.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/thread.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,uCAAuC,CAAC;AAW/C,OAAO,EASL,gBAAgB,EAGhB,KAAK,4BAA4B,EAElC,MAAM,qBAAqB,CAAC;AAe7B,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,EAAE,EACP,KAAK,iBAAiB,EACvB,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAC7C,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACpC,6GAA6G;IAC7G,SAAS,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,4BAA4B,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAC;IACrF,cAAc,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;QAAE,KAAK,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3F,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IAC3C,iGAAiG;IACjG,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnC,CAAC;AAWF,eAAO,MAAM,MAAM,EAAE,EAAE,CAAC,WAAW,CAclC,CAAC"}
|
|
@@ -4,7 +4,8 @@ import { ComposerAddAttachment, ComposerAttachments, UserMessageAttachments, } f
|
|
|
4
4
|
import { ThreadFollowupSuggestions } from "./follow-up-suggestions.js";
|
|
5
5
|
import { MarkdownText } from "./markdown-text.js";
|
|
6
6
|
import { Reasoning, ReasoningContent, ReasoningRoot, ReasoningText, ReasoningTrigger, } from "./reasoning.js";
|
|
7
|
-
import { ToolFallback } from "./tool-fallback.js";
|
|
7
|
+
import { ToolDetailsContext, ToolFallback } from "./tool-fallback.js";
|
|
8
|
+
import { defaultThreadLabels, ThreadLabelsContext, useThreadLabels, } from "./thread-labels.js";
|
|
8
9
|
import { ToolGroupContent, ToolGroupRoot, ToolGroupTrigger, } from "./tool-group.js";
|
|
9
10
|
import { TooltipIconButton } from "./tooltip-icon-button.js";
|
|
10
11
|
import { AgentOrb } from "../../components/agent-orb.js";
|
|
@@ -13,17 +14,16 @@ import { Alert } from "../../components/alert.js";
|
|
|
13
14
|
import { cn } from "../../lib/utils.js";
|
|
14
15
|
import { ActionBarMorePrimitive, ActionBarPrimitive, AuiIf, BranchPickerPrimitive, ComposerPrimitive, ErrorPrimitive, groupPartByType, MessagePrimitive, SuggestionPrimitive, ThreadPrimitive, useAuiState, } from "@assistant-ui/react";
|
|
15
16
|
import { ArrowDownIcon, ArrowUpIcon, CheckIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon, DownloadIcon, MicIcon, MoreHorizontalIcon, PencilIcon, RefreshCwIcon, SquareIcon, } from "lucide-react";
|
|
16
|
-
import { createContext, useContext, } from "react";
|
|
17
|
+
import { createContext, useContext, useState, } from "react";
|
|
17
18
|
const EMPTY_COMPONENTS = {};
|
|
18
19
|
const ThreadComponentsContext = createContext(EMPTY_COMPONENTS);
|
|
19
|
-
// Startup exposes a loading placeholder thread; treat it as a new chat so
|
|
20
|
-
// the
|
|
20
|
+
// Startup exposes a loading placeholder thread; treat it as a new chat so the
|
|
21
|
+
// welcome shows from the first frame. Loads after startup keep the messages.
|
|
21
22
|
const isNewChatView = (s) => s.thread.messages.length === 0 && (!s.thread.isLoading || s.threads.isLoading);
|
|
22
|
-
export const Thread = ({ components = EMPTY_COMPONENTS }) => {
|
|
23
|
-
|
|
24
|
-
return (_jsx(ThreadComponentsContext.Provider, { value: components, children: _jsx(ThreadRoot, { isEmpty: isEmpty }) }));
|
|
23
|
+
export const Thread = ({ components = EMPTY_COMPONENTS, labels, toolDetails = true, }) => {
|
|
24
|
+
return (_jsx(ThreadComponentsContext.Provider, { value: components, children: _jsx(ThreadLabelsContext.Provider, { value: { ...defaultThreadLabels, ...labels }, children: _jsx(ToolDetailsContext.Provider, { value: toolDetails, children: _jsx(ThreadRoot, {}) }) }) }));
|
|
25
25
|
};
|
|
26
|
-
const ThreadRoot = (
|
|
26
|
+
const ThreadRoot = () => {
|
|
27
27
|
const { Welcome = ThreadWelcome } = useContext(ThreadComponentsContext);
|
|
28
28
|
return (_jsx(ThreadPrimitive.Root, { className: "aui-root aui-thread-root bg-background @container flex h-full flex-col",
|
|
29
29
|
// SAFETY: CSSProperties lists only standard properties; widening each `--` key to string lets the literal pass as a style object, and React sets each through style.setProperty.
|
|
@@ -32,7 +32,18 @@ const ThreadRoot = ({ isEmpty }) => {
|
|
|
32
32
|
["--composer-bg"]: "var(--color-muted)",
|
|
33
33
|
["--composer-radius"]: "var(--radius-md)",
|
|
34
34
|
["--composer-padding"]: "8px",
|
|
35
|
-
}, children: _jsx(ThreadPrimitive.Viewport, { turnAnchor: "top", "data-slot": "aui_thread-viewport", className: "relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll scroll-smooth", children: _jsxs("div", { className:
|
|
35
|
+
}, children: _jsx(ThreadPrimitive.Viewport, { turnAnchor: "top", "data-slot": "aui_thread-viewport", className: "relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll scroll-smooth", children: _jsxs("div", { className: "mx-auto flex w-full max-w-(--thread-max-width) flex-1 flex-col px-4 pt-4", children: [_jsx(AuiIf, { condition: isNewChatView, children: _jsx("div", { className: "flex flex-1 flex-col justify-center", children: _jsx(Welcome, {}) }) }), _jsx("div", { "data-slot": "aui_message-group", className: "mb-14 flex flex-col gap-y-6 empty:hidden", children: _jsx(ThreadPrimitive.Messages, { children: () => _jsx(ThreadMessage, {}) }) }), _jsxs(ThreadPrimitive.ViewportFooter, { className: "aui-thread-viewport-footer bg-background sticky bottom-0 mt-auto flex flex-col gap-4 overflow-visible rounded-t-(--composer-radius) pb-4 md:pb-6", children: [_jsx(ThreadScrollToBottom, {}), _jsx(ThreadFollowupSuggestions, {}), _jsx(AuiIf, { condition: isNewChatView, children: _jsx(ThreadSuggestions, {}) }), _jsx(Composer, {})] })] }) }) }));
|
|
36
|
+
};
|
|
37
|
+
const DefaultToolGroup = ({ group, children, }) => {
|
|
38
|
+
const waiting = group.status.type === "requires-action";
|
|
39
|
+
const [open, setOpen] = useState(waiting);
|
|
40
|
+
const [wasWaiting, setWasWaiting] = useState(waiting);
|
|
41
|
+
if (waiting !== wasWaiting) {
|
|
42
|
+
setWasWaiting(waiting);
|
|
43
|
+
if (waiting)
|
|
44
|
+
setOpen(true);
|
|
45
|
+
}
|
|
46
|
+
return (_jsxs(ToolGroupRoot, { variant: "ghost", open: open, onOpenChange: setOpen, children: [_jsx(ToolGroupTrigger, { count: group.indices.length, active: group.status.type === "running" }), _jsx(ToolGroupContent, { children: children })] }));
|
|
36
47
|
};
|
|
37
48
|
const ThreadMessage = () => {
|
|
38
49
|
const { AssistantMessage: AssistantMessageComponent = AssistantMessage } = useContext(ThreadComponentsContext);
|
|
@@ -45,7 +56,8 @@ const ThreadMessage = () => {
|
|
|
45
56
|
return _jsx(AssistantMessageComponent, {});
|
|
46
57
|
};
|
|
47
58
|
const ThreadScrollToBottom = () => {
|
|
48
|
-
|
|
59
|
+
const labels = useThreadLabels();
|
|
60
|
+
return (_jsx(ThreadPrimitive.ScrollToBottom, { render: _jsx(TooltipIconButton, { tooltip: labels.scrollToBottom, variant: "outline", className: "aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-md p-4 disabled:invisible" }), children: _jsx(ArrowDownIcon, {}) }));
|
|
49
61
|
};
|
|
50
62
|
const ThreadWelcome = () => {
|
|
51
63
|
return (_jsx("div", { className: "aui-thread-welcome-root mb-6 flex flex-col items-center px-4 text-center", children: _jsx("h1", { className: "aui-thread-welcome-message-inner text-2xl font-semibold", children: "How can I help you today?" }) }));
|
|
@@ -57,16 +69,19 @@ const ThreadSuggestionItem = () => {
|
|
|
57
69
|
return (_jsx("div", { className: "aui-thread-welcome-suggestion-display", children: _jsxs(SuggestionPrimitive.Trigger, { send: true, render: _jsx(Button, { variant: "ghost", className: "aui-thread-welcome-suggestion text-foreground hover:bg-muted border-border gap-1.5 rounded-md border py-1.5 text-sm font-normal whitespace-nowrap transition-colors" }), children: [_jsx(SuggestionPrimitive.Title, { className: "aui-thread-welcome-suggestion-text-1" }), _jsx(SuggestionPrimitive.Description, { className: "aui-thread-welcome-suggestion-text-2 empty:hidden" })] }) }));
|
|
58
70
|
};
|
|
59
71
|
const Composer = () => {
|
|
60
|
-
|
|
72
|
+
const labels = useThreadLabels();
|
|
73
|
+
return (_jsx(ComposerPrimitive.Root, { className: "aui-composer-root relative flex w-full flex-col", children: _jsxs(ComposerPrimitive.AttachmentDropzone, { render: _jsx("div", { "data-slot": "aui_composer-shell", className: "nc-transition-paint flex w-full flex-col gap-2 rounded-(--composer-radius) border border-border bg-(--composer-bg) p-(--composer-padding) focus-within:border-ring data-[dragging=true]:border-dashed data-[dragging=true]:border-ring data-[dragging=true]:bg-accent" }), children: [_jsx(ComposerAttachments, {}), _jsx(ComposerPrimitive.Input, { placeholder: labels.composerPlaceholder, className: "aui-composer-input caret-primary placeholder:text-muted-foreground/80 max-h-32 min-h-10 w-full resize-none bg-transparent px-2.5 py-1 text-base outline-none", rows: 1, autoFocus: true, enterKeyHint: "send", "aria-label": labels.composerInput }), _jsx(ComposerAction, {})] }) }));
|
|
61
74
|
};
|
|
62
75
|
const ComposerAction = () => {
|
|
63
|
-
|
|
76
|
+
const labels = useThreadLabels();
|
|
77
|
+
return (_jsxs("div", { className: "aui-composer-action-wrapper relative flex items-center justify-between", children: [_jsx(ComposerAddAttachment, {}), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsxs(AuiIf, { condition: (s) => s.thread.capabilities.dictation, children: [_jsx(AuiIf, { condition: (s) => s.composer.dictation == null, children: _jsx(ComposerPrimitive.Dictate, { render: _jsx(TooltipIconButton, { tooltip: "Voice input", side: "bottom", type: "button", variant: "ghost", size: "icon", className: "aui-composer-dictate rounded-md", "aria-label": "Start voice input" }), children: _jsx(MicIcon, { className: "aui-composer-dictate-icon size-4" }) }) }), _jsx(AuiIf, { condition: (s) => s.composer.dictation != null, children: _jsx(ComposerPrimitive.StopDictation, { render: _jsx(TooltipIconButton, { tooltip: "Stop dictation", side: "bottom", type: "button", variant: "ghost", size: "icon", className: "aui-composer-stop-dictation text-destructive rounded-md", "aria-label": "Stop voice input" }), children: _jsx(SquareIcon, { className: "aui-composer-stop-dictation-icon size-3.5 fill-current" }) }) })] }), _jsx(AuiIf, { condition: (s) => !s.thread.isRunning, children: _jsx(ComposerPrimitive.Send, { render: _jsx(TooltipIconButton, { tooltip: labels.send, side: "bottom", type: "button", variant: "default", size: "icon", className: "aui-composer-send rounded-md", "aria-label": labels.send }), children: _jsx(ArrowUpIcon, { className: "aui-composer-send-icon size-4.5" }) }) }), _jsx(AuiIf, { condition: (s) => s.thread.isRunning, children: _jsx(ComposerPrimitive.Cancel, { render: _jsx(Button, { type: "button", variant: "default", size: "icon", className: "aui-composer-cancel rounded-md", "aria-label": labels.stop }), children: _jsx(SquareIcon, { className: "aui-composer-cancel-icon size-3.5 fill-current" }) }) })] })] }));
|
|
64
78
|
};
|
|
65
79
|
const MessageError = () => {
|
|
66
80
|
return (_jsx(MessagePrimitive.Error, { children: _jsx(ErrorPrimitive.Root, { render: _jsx(Alert, { className: "aui-message-error-root mt-2", variant: "destructive" }), children: _jsx(ErrorPrimitive.Message, { className: "aui-message-error-message line-clamp-2" }) }) }));
|
|
67
81
|
};
|
|
82
|
+
const ThreadIndicator = () => (_jsx(AgentOrb, { form: "orbit", size: 20, state: "working", label: "Assistant is working" }));
|
|
68
83
|
const AssistantMessage = () => {
|
|
69
|
-
const { ToolFallback: ToolFallbackComponent = ToolFallback, ToolGroup, ReasoningGroup, } = useContext(ThreadComponentsContext);
|
|
84
|
+
const { ToolFallback: ToolFallbackComponent = ToolFallback, ToolGroup, ReasoningGroup, Indicator = ThreadIndicator, } = useContext(ThreadComponentsContext);
|
|
70
85
|
const ACTION_BAR_PT = "pt-1.5";
|
|
71
86
|
// Keep the action bar inside the contained root's paint box, then cancel its reserved space in flow.
|
|
72
87
|
const ACTION_BAR_HEIGHT = `min-h-7.5 ${ACTION_BAR_PT}`;
|
|
@@ -82,7 +97,7 @@ const AssistantMessage = () => {
|
|
|
82
97
|
if (ToolGroup) {
|
|
83
98
|
return _jsx(ToolGroup, { group: part, children: children });
|
|
84
99
|
}
|
|
85
|
-
return
|
|
100
|
+
return _jsx(DefaultToolGroup, { group: part, children: children });
|
|
86
101
|
case "group-reasoning": {
|
|
87
102
|
if (ReasoningGroup) {
|
|
88
103
|
return _jsx(ReasoningGroup, { group: part, children: children });
|
|
@@ -99,14 +114,15 @@ const AssistantMessage = () => {
|
|
|
99
114
|
case "data":
|
|
100
115
|
return part.dataRendererUI;
|
|
101
116
|
case "indicator":
|
|
102
|
-
return (_jsx("span", { "data-slot": "aui_assistant-message-indicator", className: "inline-flex", children: _jsx(
|
|
117
|
+
return (_jsx("span", { "data-slot": "aui_assistant-message-indicator", className: "inline-flex", children: _jsx(Indicator, {}) }));
|
|
103
118
|
default:
|
|
104
119
|
return null;
|
|
105
120
|
}
|
|
106
121
|
} }), _jsx(MessageError, {})] }), _jsxs("div", { "data-slot": "aui_assistant-message-footer", className: cn("ms-2 flex items-center", ACTION_BAR_HEIGHT), children: [_jsx(BranchPicker, {}), _jsx(AssistantActionBar, {})] })] }));
|
|
107
122
|
};
|
|
108
123
|
const AssistantActionBar = () => {
|
|
109
|
-
|
|
124
|
+
const labels = useThreadLabels();
|
|
125
|
+
return (_jsxs(ActionBarPrimitive.Root, { hideWhenRunning: true, autohide: "not-last", className: "aui-assistant-action-bar-root nc-transition-opacity col-start-3 row-start-2 -ms-1 flex gap-1 text-muted-foreground", children: [_jsxs(ActionBarPrimitive.Copy, { render: _jsx(TooltipIconButton, { tooltip: labels.copy }), children: [_jsx(AuiIf, { condition: (s) => s.message.isCopied, children: _jsx(CheckIcon, {}) }), _jsx(AuiIf, { condition: (s) => !s.message.isCopied, children: _jsx(CopyIcon, {}) })] }), _jsx(ActionBarPrimitive.Reload, { render: _jsx(TooltipIconButton, { tooltip: labels.refresh }), children: _jsx(RefreshCwIcon, {}) }), _jsxs(ActionBarMorePrimitive.Root, { children: [_jsx(ActionBarMorePrimitive.Trigger, { render: _jsx(TooltipIconButton, { tooltip: labels.more, className: "data-[state=open]:bg-accent" }), children: _jsx(MoreHorizontalIcon, {}) }), _jsx(ActionBarMorePrimitive.Content, { side: "bottom", align: "start", sideOffset: 6, className: "aui-action-bar-more-content nc-transition-opacity z-50 min-w-[8rem] overflow-hidden rounded-md border-0 bg-popover p-1.5 text-popover-foreground nc-elevation-floating data-[state=closed]:opacity-0 data-[state=open]:opacity-100", children: _jsxs(ActionBarPrimitive.ExportMarkdown, { render: _jsx(ActionBarMorePrimitive.Item, { className: "aui-action-bar-more-item hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground flex cursor-pointer items-center gap-2 rounded-md px-2.5 py-1.5 text-sm outline-none select-none" }), children: [_jsx(DownloadIcon, { className: "size-4" }), labels.exportMarkdown] }) })] })] }));
|
|
110
126
|
};
|
|
111
127
|
const UserMessage = () => {
|
|
112
128
|
return (_jsxs(MessagePrimitive.Root, { "data-slot": "aui_user-message-root", className: "grid auto-rows-auto grid-cols-[minmax(72px,1fr)_auto] content-start gap-y-2 px-2 [contain-intrinsic-size:auto_200px] [content-visibility:auto] [&:where(>*)]:col-start-2", "data-role": "user", children: [_jsx(UserMessageAttachments, {}), _jsxs("div", { className: "aui-user-message-content-wrapper relative col-start-2 min-w-0", children: [_jsx("div", { className: "aui-user-message-content peer bg-muted text-foreground rounded-md px-4 py-2 wrap-break-word empty:hidden", children: _jsx(MessagePrimitive.Parts, {}) }), _jsx("div", { className: "aui-user-action-bar-wrapper absolute start-0 top-1/2 -translate-x-full -translate-y-1/2 pe-2 peer-empty:hidden rtl:translate-x-full", children: _jsx(UserActionBar, {}) })] }), _jsx(BranchPicker, { "data-slot": "aui_user-branch-picker", className: "col-span-full col-start-1 row-start-3 -me-1 justify-end" })] }));
|
|
@@ -5,6 +5,11 @@ export type ToolFallbackRootProps = Omit<React.ComponentProps<typeof Collapsible
|
|
|
5
5
|
onOpenChange?: (open: boolean) => void;
|
|
6
6
|
defaultOpen?: boolean;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Whether a call shows its input and its result. A thread for people who are
|
|
10
|
+
* not developers hides them: the Agent says in words what she is doing.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ToolDetailsContext: import("react").Context<boolean>;
|
|
8
13
|
declare const ToolFallback: ToolCallMessagePartComponent;
|
|
9
14
|
export { ToolFallback };
|
|
10
15
|
//# sourceMappingURL=tool-fallback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-fallback.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/tool-fallback.tsx"],"names":[],"mappings":"AAUA,OAAO,EAOL,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAA0C,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-fallback.d.ts","sourceRoot":"","sources":["../../../src/internal/assistant-ui/tool-fallback.tsx"],"names":[],"mappings":"AAUA,OAAO,EAOL,KAAK,4BAA4B,EAClC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAA0C,MAAM,0BAA0B,CAAC;AAQ/F,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EACxC,MAAM,GAAG,cAAc,CACxB,GAAG;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AA6bF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,kCAAsB,CAAC;AA+CtD,QAAA,MAAM,YAAY,EAAE,4BAAqD,CAAC;AAI1E,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { memo, useCallback, useRef, useState } from "react";
|
|
3
|
+
import { createContext, memo, useCallback, useContext, useRef, useState } from "react";
|
|
4
4
|
import { AlertCircleIcon, CheckIcon, ChevronDownIcon, CircleDotIcon, XCircleIcon, } from "lucide-react";
|
|
5
5
|
import { useScrollLock, useToolCallElapsed, } from "@assistant-ui/react";
|
|
6
6
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "../../components/collapsible.js";
|
|
7
7
|
import { cn } from "../../lib/utils.js";
|
|
8
8
|
import { disclosureDuration, disclosureDurationMs } from "../../lib/motion.js";
|
|
9
9
|
import { Button } from "../../components/button.js";
|
|
10
|
+
import { useThreadLabels } from "./thread-labels.js";
|
|
10
11
|
const pressable = "active:scale-[0.98]";
|
|
11
12
|
function ToolFallbackRoot({ className, open: controlledOpen, onOpenChange: controlledOnOpenChange, defaultOpen = false, children, ...props }) {
|
|
12
13
|
const collapsibleRef = useRef(null);
|
|
@@ -55,7 +56,14 @@ function ToolFallbackTrigger({ toolName, status, className, ...props }) {
|
|
|
55
56
|
const isCancelled = status?.type === "incomplete" && status.reason === "cancelled";
|
|
56
57
|
const Icon = statusIconMap[statusType];
|
|
57
58
|
// A call still running says so in its own words; the icon holds still.
|
|
58
|
-
const
|
|
59
|
+
const labels = useThreadLabels();
|
|
60
|
+
const label = isCancelled
|
|
61
|
+
? labels.cancelledTool
|
|
62
|
+
: isRunning
|
|
63
|
+
? labels.runningTool
|
|
64
|
+
: statusType === "requires-action"
|
|
65
|
+
? labels.waitingTool
|
|
66
|
+
: labels.usedTool;
|
|
59
67
|
return (_jsxs(CollapsibleTrigger, { "aria-busy": isRunning || undefined, "data-slot": "tool-fallback-trigger", className: cn("aui-tool-fallback-trigger nc-transition-paint group/trigger flex w-fit origin-left items-center gap-2 py-1.5 text-sm text-muted-foreground hover:text-foreground", className), ...props, children: [_jsx(Icon, { "data-slot": "tool-fallback-trigger-icon", className: cn("aui-tool-fallback-trigger-icon size-4 shrink-0", isCancelled && "text-muted-foreground") }), _jsx("span", { "data-slot": "tool-fallback-trigger-label", className: cn("aui-tool-fallback-trigger-label-wrapper relative inline-block text-start leading-none", isCancelled && "text-muted-foreground line-through"), children: _jsxs("span", { children: [label, ": ", _jsx("b", { children: toolName })] }) }), _jsx(ToolFallbackDuration, {}), _jsx(ChevronDownIcon, { "data-slot": "tool-fallback-trigger-chevron", className: cn("aui-tool-fallback-trigger-chevron size-4 shrink-0", "transition-transform duration-(--animation-duration) ease-[var(--nc-ease-out-strong)] motion-reduce:transition-none", "-rotate-90", "group-data-open/trigger:rotate-0", "group-data-panel-open/trigger:rotate-0") })] }));
|
|
60
68
|
}
|
|
61
69
|
function ToolFallbackContent({ className, children, ...props }) {
|
|
@@ -96,6 +104,7 @@ const approvalOptionLabel = (option) => option.label ?? APPROVAL_OPTION_DEFAULT_
|
|
|
96
104
|
function ToolFallbackApproval({ className, addResult, resume, interrupt, approval, respondToApproval, ...props }) {
|
|
97
105
|
const [submitted, setSubmitted] = useState(false);
|
|
98
106
|
const [confirmingId, setConfirmingId] = useState(null);
|
|
107
|
+
const labels = useThreadLabels();
|
|
99
108
|
if (approval != null && (approval.approved !== undefined || approval.resolution !== undefined))
|
|
100
109
|
return null;
|
|
101
110
|
// Custom (`_`-prefixed) kinds cannot be resolved to a boolean by the kit;
|
|
@@ -143,13 +152,19 @@ function ToolFallbackApproval({ className, addResult, resume, interrupt, approva
|
|
|
143
152
|
if (declaredOptions && declaredOptions.length > 0) {
|
|
144
153
|
const allowOptions = options?.filter((o) => isAllowKind(o.kind)) ?? [];
|
|
145
154
|
const rejectOptions = options?.filter((o) => !isAllowKind(o.kind)) ?? [];
|
|
146
|
-
return (_jsxs("div", { "data-slot": "tool-fallback-approval", className: cn("aui-tool-fallback-approval flex flex-wrap items-center gap-2 pt-1", className), ...props, children: [[...allowOptions, ...rejectOptions].map((option) => (_jsx(Button, { size: "sm", variant: option === allowOptions[0] ? "default" : "outline", className: pressable, onClick: () => handleOption(option), disabled: submitted, children: approvalOptionLabel(option) }, option.id))), rejectOptions.length === 0 && (_jsx(Button, { size: "sm", variant: "outline", className: pressable, onClick: () => respond(false), disabled: submitted, children:
|
|
155
|
+
return (_jsxs("div", { "data-slot": "tool-fallback-approval", className: cn("aui-tool-fallback-approval flex flex-wrap items-center gap-2 pt-1", className), ...props, children: [[...allowOptions, ...rejectOptions].map((option) => (_jsx(Button, { size: "sm", variant: option === allowOptions[0] ? "default" : "outline", className: pressable, onClick: () => handleOption(option), disabled: submitted, children: approvalOptionLabel(option) }, option.id))), rejectOptions.length === 0 && (_jsx(Button, { size: "sm", variant: "outline", className: pressable, onClick: () => respond(false), disabled: submitted, children: labels.deny }))] }));
|
|
147
156
|
}
|
|
148
|
-
return (_jsxs("div", { "data-slot": "tool-fallback-approval", className: cn("aui-tool-fallback-approval flex items-center gap-2 pt-1", className), ...props, children: [_jsx(Button, { size: "sm", className: pressable, onClick: () => respond(true), disabled: submitted, children:
|
|
157
|
+
return (_jsxs("div", { "data-slot": "tool-fallback-approval", className: cn("aui-tool-fallback-approval flex flex-wrap items-center gap-2 pt-1", className), ...props, children: [approval?.prompt ? (_jsx("p", { "data-slot": "tool-fallback-approval-prompt", className: "min-w-0 basis-full text-sm wrap-break-word", children: approval.prompt })) : null, _jsx(Button, { size: "sm", className: pressable, onClick: () => respond(true), disabled: submitted, children: labels.allow }), _jsx(Button, { size: "sm", variant: "outline", className: pressable, onClick: () => respond(false), disabled: submitted, children: labels.deny })] }));
|
|
149
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Whether a call shows its input and its result. A thread for people who are
|
|
161
|
+
* not developers hides them: the Agent says in words what she is doing.
|
|
162
|
+
*/
|
|
163
|
+
export const ToolDetailsContext = createContext(true);
|
|
150
164
|
const ToolFallbackImpl = ({ toolName, argsText, result, status, addResult, resume, interrupt, approval, respondToApproval, }) => {
|
|
151
165
|
const isCancelled = status?.type === "incomplete" && status.reason === "cancelled";
|
|
152
166
|
const isRequiresAction = status?.type === "requires-action";
|
|
167
|
+
const details = useContext(ToolDetailsContext);
|
|
153
168
|
const [open, setOpen] = useState(isRequiresAction);
|
|
154
169
|
const [prevRequiresAction, setPrevRequiresAction] = useState(isRequiresAction);
|
|
155
170
|
if (isRequiresAction !== prevRequiresAction) {
|
|
@@ -157,7 +172,7 @@ const ToolFallbackImpl = ({ toolName, argsText, result, status, addResult, resum
|
|
|
157
172
|
if (isRequiresAction)
|
|
158
173
|
setOpen(true);
|
|
159
174
|
}
|
|
160
|
-
return (_jsxs(ToolFallbackRoot, { open: open, onOpenChange: setOpen, children: [_jsx(ToolFallbackTrigger, { toolName: toolName, status: status }), _jsxs(ToolFallbackContent, { children: [_jsx(ToolFallbackError, { status: status }), _jsx(ToolFallbackArgs, { argsText: argsText, className: cn(isCancelled && "opacity-60") }), isRequiresAction && (_jsx(ToolFallbackApproval, { addResult: addResult, resume: resume, interrupt: interrupt, approval: approval, respondToApproval: respondToApproval })), !isCancelled && _jsx(ToolFallbackResult, { result: result })] })] }));
|
|
175
|
+
return (_jsxs(ToolFallbackRoot, { open: open, onOpenChange: setOpen, children: [_jsx(ToolFallbackTrigger, { toolName: toolName, status: status }), _jsxs(ToolFallbackContent, { children: [_jsx(ToolFallbackError, { status: status }), details && (_jsx(ToolFallbackArgs, { argsText: argsText, className: cn(isCancelled && "opacity-60") })), isRequiresAction && (_jsx(ToolFallbackApproval, { addResult: addResult, resume: resume, interrupt: interrupt, approval: approval, respondToApproval: respondToApproval })), details && !isCancelled && _jsx(ToolFallbackResult, { result: result })] })] }));
|
|
161
176
|
};
|
|
162
177
|
const ToolFallback = memo(ToolFallbackImpl);
|
|
163
178
|
ToolFallback.displayName = "ToolFallback";
|
|
@@ -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. Detail follows the size the orb is drawn at: up to 32 px it draws the engine's lightest dot profile, at 40 px the middle one and from 64 px the full one, since a small orb cannot show the full profile's dots apart. 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 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. An orb at rest (idle, ambient, or done after its celebration) paints 15 frames a second; every other state, gesture and the celebration paint 30. The pace is the same at either rate. 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,
|
|
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. An orb at rest (idle, ambient, or done after its celebration) paints 15 frames a second; every other state, gesture and the celebration paint 30. The pace is the same at either rate. 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, nadicode's own Agent in the Portal, is her sister, the form `sofia`: the shapeshifting morph, a circle that turns into a triangle and a square, its outline cut into five arcs in the brand's identity colours, cobalto, verde, giallo, arancio and rosso, each holding its arc through every shape. 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
|
},
|
package/dist/standalone/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function Dt(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=W(e,s),l=W(e+1,s),d=W(e,s+1),u=W(e+1,s+1);return a+(l-a)*n+(d-a)*r+(a-l-d+u)*n*r}function W(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 Zt(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function q(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),l=Math.sin(t),d=Math.cos(t);return(u,p,m)=>{let c=u*d+m*l,h=-u*l+m*d,M=p*a-h*r,x=p*r+h*a;return[e+c*n,s-M*n,x]}}function Ot(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 Pt(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,l=Math.min(1,Math.max(0,r.white));t.fillStyle=Ot(l,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function Et(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=Ot(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 kt(t,o,e,s){o.lines.length&&Et(t,o.lines,e,s),Pt(t,o.dots,e,.3,s)}function K(t,o){return(t/300)**o}var Jt=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],Qt=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],Xt=[\"iconD\"],te=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function ee(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of Jt){let l=e[r],d=e[a];l!=null&&d!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(l*n)),e[a]=Math.max(2,Math.round(d*n)),s.add(r),s.add(a))}for(let r of Qt){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of Xt){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function oe(t,o){let e={...t};for(let s of te){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var ne={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}},re=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=q(o*.4,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let c=0;c<u;c++){let h=st(c,u),[M,x,i]=a(h[0]*r,h[1]*r,h[2]*r),S=(i/r+1)/2;d.push({x:M,y:x,z:i,r:.8*l,white:.78,a:.1+.22*S})}let p=e.strandN??52,m=e.turns??3;for(let c=0;c<3;c++){let h=c/3*2*Math.PI;for(let M=0;M<p;M++){let x=(Dt(M/p+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*m+h,b=1+.075*Math.sin(x*Math.PI*m*2+h*2+o*.8),A=i*r*b,[v,D,g]=a(Math.cos(y)*A,x*r*b,Math.sin(y)*A),f=(g/r+1)/2;d.push({x:v,y:D,z:g,r:((e.rBase??1.2)+(e.rDepth??1.8)*f)*l,white:.55-.45*f,a:S*(.45+.55*f)})}}return j(d,[],e.rMin)};function se(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),l=-1;if(r<2*o*e){let d=Math.floor(r/e),u=(r-d*e)/e,m=1-(1-Math.min(1,u/.7))**3;if(d<o){for(let c=0;c<d;c++)a[c]=1;a[d]=m,l=d}else{let c=2*o-1-d;for(let h=0;h<c;h++)a[h]=1;a[c]=1-m,l=c}}return{amount:a,active:l}}function ae(t,o,e){let[s,n,r]=t,a=!1;for(let l=0;l<o.length;l++){if(e.amount[l]<=0)continue;let d=o[l],u=d.axis===0?s:d.axis===1?n:r;if(u<d.lo||u>=d.hi)continue;l===e.active&&(a=!0);let p=d.ang*e.amount[l],m=Math.cos(p),c=Math.sin(p);if(d.axis===0){let h=n*m-r*c;r=n*c+r*m,n=h}else if(d.axis===1){let h=s*m+r*c;r=-s*c+r*m,s=h}else{let h=s*m-n*c;n=s*c+n*m,s=h}}return[s,n,r,a]}function ie(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(W(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(W(e,5.9)*4)),r=W(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var ce=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,l=.4+.06*Math.sin(o*.35),d=q(o*.5,l,n,r,a),u=o*(.5+(1.7-.5)*(e.scanMul??1)),p=K(t,e.rsPow??.6),m=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,[D,g,f]=d(S*Math.cos(v),y,S*Math.sin(v)),w=(f+1)/2,O=Zt(v+o*.5,u),E=Math.exp(-(O*O)/.18)*Math.max(0,f);c.push({x:D,y:g,z:f,r:((e.rBase??.6)+(e.rDepth??1.7)*w+(e.rBoost??1)*E)*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*w,a:m+(1-m)*Math.min(1,E)})}}return j(c,[],e.rMin)},le=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.55,.35+.1*Math.sin(o*.9),s,n,r),l=K(t,e.rsPow??.6),d=e.moveCount??14,u=ie(d),p=se(o,d,.42,1.2),m=[],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,D,g,f]=ae([i*Math.cos(A),S,i*Math.sin(A)],u,p),[w,O,E]=a(v,D,g),k=(E+1)/2;m.push({x:w,y:O,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*k+(f?e.rActive??.3:0))*l,white:(e.inkFar??.62)-(e.inkSpan??.54)*k-(f?.14:0)})}}return j(m,[],e.rMin)},pe=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=q(o*.18,.38,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.rings??15,p=e.lonDensity??40;for(let m=0;m<=u;m++){let c=-Math.PI/2+m/u*Math.PI,h=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-m*.52)+.38*Math.sin(o*1.27+m*.83),i=r*(.88+.105*x),S=Math.max(1,Math.round(Math.abs(h)*p));for(let y=0;y<S;y++){let b=y/S*2*Math.PI,[A,v,D]=a(h*Math.cos(b)*i,M*i,h*Math.sin(b)*i),g=(D/r+1)/2,f=Math.max(0,x);d.push({x:A,y:v,z:D,r:((e.rBase??.6)+(e.rDepth??1.7)*g)*(1+.4*f)*l,white:.66-.56*g-.1*f})}}return j(d,[],e.rMin)};function fe(t){return t*t*(3-2*t)}function Tt(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],l=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(l),s+=l}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let l=t[a],d=t[(a+1)%o],u=e[a]?Math.min(1,r/e[a]):0;return[l[0]+(d[0]-l[0])*u,l[1]+(d[1]-l[1])*u]}}var ue=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},me=Tt([[0,-.26],[.24,.16],[-.24,.16]]),de=Tt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[ue,me,de];function he(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Rt=.9,Y=rt+Rt,ge=(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),l=r>=0?o%Y:n-a*Y,d=r>=0?0:l>rt?fe((l-rt)/Rt):0,u=e.spread??1,p=nt[a],m=r>=0?p:nt[(a+1)%s],c=160,h=[];for(let g=0;g<c;g++){let f=g/c,w=p(f),O=m(f);h.push([(w[0]+(O[0]-w[0])*d)*u,(w[1]+(O[1]-w[1])*d)*u])}let M=[],x=0;for(let g=0;g<c;g++){let f=h[g],w=h[(g+1)%c],O=Math.hypot(w[0]-f[0],w[1]-f[1]);M.push(O),x+=O}let i=he(e.iconD??1),S=(e.rDot??.021)*1.35*u,y=1+.02*Math.sin(l*3.1),b=[],A=t/2,v=0,D=0;for(let g=0;g<i;g++){let f=g/i*x;for(;D+M[v]<f&&v<c-1;)D+=M[v],v++;let w=h[v],O=h[(v+1)%c],E=M[v]?Math.min(1,(f-D)/M[v]):0,k=(w[0]+(O[0]-w[0])*E)*y,T=(w[1]+(O[1]-w[1])*E)*y;b.push({x:A+k*t,y:A+T*t,z:0,r:Math.max(.35,S*t),white:.1})}return j(b,[],e.rMin)},Me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.12,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.orbitN??12,p=e.ghostN??40,m=e.particles??3;for(let c=0;c<u;c++){let h=W(c,1.7),M=W(c,5.2),x=W(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),D=-A,g=b,f=0,w=Math.max(1e-6,Math.sqrt(D*D+g*g));D/=w,g/=w;let O=A*f-v*g,E=v*D-b*f,k=b*g-A*D,T=(.25+.55*x)*(x>.5?1:-1);for(let C=0;C<p;C++){let R=C/p*2*Math.PI,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:(e.ghostR??.9)*l,white:.72,a:(e.ghostA??.5)*(.4+.6*N)})}for(let C=0;C<m;C++){let R=o*T+C/m*2*Math.PI+M*6,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*N)*l,white:.3-.22*N})}}return j(d,[],e.rMin)},wt=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,l=.3,d=q(o*.1*a,l,s,n,1),u=K(t,e.rsPow??.6),p=[],m=e.ghostN??150;for(let k=0;k<m;k++){let T=st(k,m),[C,R,I]=d(T[0]*r,T[1]*r,T[2]*r),B=(I/r+1)/2;p.push({x:C,y:R,z:I,r:.8*u,white:.78,a:.1+.22*B})}let c=o*.24*a,h=e.faceOn?-l:.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,D=M*y-x*S,g=.23*(e.wobMul??1),f=e.faceOn?r/(1+.85*g):r,w=e.lanes??5,O=e.segs??88,E=Math.max(1,Math.round(w*(e.bandMul??1)));for(let k=0;k<E;k++){let T=(k-(E-1)/2)*.075,C=Math.abs(k-(E-1)/2)/Math.max(1,(E-1)/2);for(let R=0;R<O;R++){let I=R/O*2*Math.PI,B=(.16*Math.sin(I*3-o*1.7+k*.22)+.07*Math.sin(I*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+B:1,N=e.faceOn?T:T+B,_=M*Math.cos(I)+S*Math.sin(I)+A*N,P=x*Math.cos(I)+y*Math.sin(I)+v*N,V=i*Math.cos(I)+b*Math.sin(I)+D*N,F=Math.sqrt(_*_+P*P+V*V),G=f*L,[Ut,Yt,St]=d(_/F*G,P/F*G,V/F*G),tt=(St/r+1)/2;p.push({x:Ut,y:Yt,z:St,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*C)*u,white:.52-.44*tt+.18*C,a:.4+.6*tt})}}return j(p,[],e.rMin)},be=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=q(o*.12,.32,s,n,r),l=K(t,e.rsPow??.6),d=e.nodeN??30,u=e.thr??.72,p=e.nodeR??1.4,m=e.nodeRDepth??1.8,c=[];for(let i=0;i<d;i++){let S=st(i,d),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<d;i++)for(let S=i+1;S<d;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>=u)continue;let[D,g,f]=a(c[i][0],c[i][1],c[i][2]),[w,O,E]=a(c[S][0],c[S][1],c[S][2]),k=((f+E)/2+1)/2;h.push({x1:D,y1:g,x2:w,y2:O,white:.42,a:(1-v/u)*(.3+.55*k),w:Math.max(.6,(e.lineW??.8)*l)})}for(let i=0;i<d;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:(p+m*A)*v*l,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(W(S,i*3.1+1.7)*d),b=Math.floor(W(S,i*5.7+4.2)*d);if(y===b)continue;let A=Dt(o*.55+i*7.31),v=et(c[y][0],c[b][0],A),D=et(c[y][1],c[b][1],A),g=et(c[y][2],c[b][2],A),f=Math.max(1e-6,Math.sqrt(v*v+D*D+g*g)),[w,O,E]=a(v/f,D/f,g/f),k=(E+1)/2;M.push({x:w,y:O,z:E,r:(p*1.5+m*k)*l,white:.05,a:.5+.5*k})}return j(M,h,e.rMin)},Z={orbits:Me,globe:ce,rubik:le,wave:pe,web:be,braid:re,ribbon:wt,ring:wt,morph:ge},xe=Object.fromEntries(Object.entries(Z).map(([t,o])=>[t,(e,s,n,r,a)=>kt(e,o(s,n,a),r)])),Ct={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},ye={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}}}},At=new Map;function at(t,o){let e=`${t}-${o}`,s=At.get(e);if(s)return s;let n=Ct[t],r=ye[n][o],a={...ne[n]};r.count!==1&&(a=ee(a,r.count)),r.size!==1&&(a=oe(a,r.size)),r.extra&&(a={...a,...r.extra});let l={mode:n,speed:r.speed,opts:a};return At.set(e,l),l}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var H=t=>t*1e3,$=t=>t/1e3;var Vt=(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 It(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]}),l=Math.min(J(a),2e4);return{type:\"keyframes\",ease:d=>a.next(l*d).value/o,duration:$(l)}}var z={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},Ft=t=>t<0?1/Math.max(1+t,z.minDamping):Math.max(1-t,z.minDamping);function zt(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 Nt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function ut(t,o){return t*Math.sqrt(1-o*o)}var ve=12;function Nt(t,o,e){let s=e;for(let n=1;n<ve;n++)s=s-t(s)/o(s);return s}var pt=.001;function Se({duration:t=z.duration,bounce:o=z.bounce}){let e,s;ct(t<=H(z.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=Ft(o);t=it(z.minDuration,z.maxDuration,$(t)),n<1?(e=u=>{let p=u*n,m=p*t,c=ut(u,n),h=Math.exp(-m);return pt-p/c*h},s=u=>{let m=u*n*t,c=n*n*u*u*t,h=Math.exp(-m),M=ut(u*u,n);return(-e(u)+pt>0?-1:1)*-c*h/M}):(e=u=>{let p=Math.exp(-u*t),m=u*t+1;return-pt+p*m},s=u=>{let p=Math.exp(-u*t),m=-u*(t*t);return p*m});let r=5/t,a=Nt(e,s,r),l=a*zt(n,a*t),d=l*l;return{stiffness:d,damping:n*2*Math.sqrt(d),duration:H(t)}}var mt=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(mt(t,o))return t}function we(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??z.stiffness,damping:e??z.damping,mass:s??z.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=Ft(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*zt(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,Se(n)),n.isResolvedFromDuration=!0;(!mt(n.stiffness)||!mt(n.damping,!0))&&(n.stiffness=z.stiffness,n.damping=z.damping)}return n}function U(t=z.visualDuration,o=z.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:l,mass:d,duration:u,isResolvedFromDuration:p,isTimeDefined:m}=we({...e}),c=g=>m?0:-$(g),h=l/(2*Math.sqrt(a*d)),M=$(Math.sqrt(a/d)),x=h*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},S=()=>{let g=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(g?z.restSpeed.granular:z.restSpeed.default),i.restDelta=e.restDelta||(g?z.restDelta.granular:z.restDelta.default)};S();let y,b,A;if(h<1){let g=ut(M,h),f={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};A=()=>{f.A=(i.velocity+x*i.delta)/g,f.sinC=x*f.A+i.delta*g,f.cosC=x*i.delta-f.A*g};let w=O=>{O!==f.t&&(f.t=O,f.env=Math.exp(-x*O),f.sin=Math.sin(g*O),f.cos=Math.cos(g*O))};y=O=>(w(O),i.target-f.env*(f.A*f.sin+i.delta*f.cos)),b=O=>(w(O),f.env*(f.sinC*f.sin+f.cosC*f.cos))}else if(h===1){y=f=>i.target-Math.exp(-M*f)*(i.delta+(i.velocity+M*i.delta)*f);let g={C:0};A=()=>{g.C=i.velocity+M*i.delta},b=f=>Math.exp(-M*f)*(M*g.C*f-i.velocity)}else{let g=M*Math.sqrt(h*h-1),f=x-g,w=x+g,O=m?1/0:300/g,E=(T,C)=>Math.exp(C>O?-T*O-x*(C-O):-T*C),k={S:0,F:0};A=()=>{let T=(i.velocity+x*i.delta)/g;k.S=(i.delta+T)/2,k.F=(i.delta-T)/2},y=T=>i.target-k.S*E(f,T)-k.F*E(w,T),b=T=>f*k.S*E(f,T)+w*k.F*E(w,T)}A();let v=p&&u||null,D={calculatedDuration:v,retarget:(g,f)=>{i.target=g[g.length-1],i.delta=i.target-g[0],i.velocity=c(f),e.restSpeed&&e.restDelta||S(),D.calculatedDuration=v,r.done=!1,A()},velocity:g=>H(b(g)),next:g=>{let f=y(g);if(p)r.done=g>=u;else{let w=H(b(g));r.done=Math.abs(w)<=i.restSpeed&&Math.abs(i.target-f)<=i.restDelta}return r.value=r.done?i.target:f,r},toString:()=>{let g=Math.min(J(D),2e4),f=Vt(w=>D.next(g*w).value,g,30);return g+\"ms \"+f},toTransition:()=>{}};return D}U.applyToOptions=t=>{let o=It(t,100,U);return t.ease=o.ease,t.duration=H(o.duration),t.type=\"keyframes\",t};var Ae={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 ht(t){return Ae[t].speed}function Bt(t,o,e=0,s=Mt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*ht(o)}var gt={resting:15,busy:30},De=1.6;function Lt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/De))/2)}function X(t){let o=(l,d)=>{let u=t?.getPropertyValue(`--nc-duration-${l}`).trim()??\"\";return u?Number.parseFloat(u)*(u.endsWith(\"ms\")?.001:1):d},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=l=>Math.round(e*l*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:l=>l*n*2/e,settle:(l,d=0)=>l<d?0:a.next((l-d)*1e3).value}}var Mt=X(),Q=t=>Math.min(1,Math.max(0,t)),dt=t=>{let o=Q(t);return o*o*(3-2*o)};function Gt(t,o,e=Mt,s=!1){let n=.82,r=.82,a=0,l=0,d=0;if(t===\"idle\"){let u=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=u*.01,r+=u*.01,a=-u*.004}else if(!s&&t===\"waiting\"){let u=e.gestureAge(o),p=Math.sin(o*Math.PI*2/(e.wait*3)),m=Math.sin(Q(u/e.confirm)*Math.PI),c=e.settle(u,e.confirm*.55),h=1-m*.018+p*.006;n*=h,r*=h,a=-c*.018,d=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let u=e.gestureAge(o),p=e.confirm*.85,m=dt(u/p)*(1-e.settle(u,p));n*=1-m*.018,r*=1+m*.012,l=-m*.034,a=m*.014,d=-m*4*Math.PI/180}else if(!s&&t===\"done\"){let u=o*1.3/(e.wait*2.25);if(u<.18){let p=Math.sin(Math.PI*u/.18);n+=.03*p,r-=.04*p,a=.012*p}else if(u<1.3){let p=(u-.18)/1.12;a=-.07*Math.sin(Math.PI*p),n+=.025*Math.sin(Math.PI*p),r+=.035*Math.sin(Math.PI*p),d=Math.sin(p*Math.PI*2)*.07}}return{sx:n,sy:r,x:l,y:a,rotation:d}}function Oe(t,o,e,s,n,r,a){let l=a.gestureAge(s),d=n?1:dt((l-a.confirm*.35)/a.confirm),u=n?1:a.settle(l,a.confirm*.35),p=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=d*.95,t.translate(e/2,e/2),o===\"waiting\"){let m=n?0:a.settle(l,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-u)*-.12*p),t.rotate(-m*2*Math.PI/180);let h=.94+u*.06;t.scale(h,h),t.scale(p/24,p/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(l,a.confirm*(M===0?.65:.2)),S=M===0?1:-1;t.save(),t.globalAlpha=d*.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-u)*-.1*p),t.rotate((1-u)*-12*Math.PI/180);let m=1+(1-u)*.18;t.scale(m,m),t.scale(p/24,p/24),t.lineWidth=Math.max(1.6,24/p),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:dt((l-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((l-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(h*Math.PI)*.65,t.lineWidth=1.4*24/p;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 bt(t,o,e,s,n,r,a,l=1,d=Mt,u=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&Oe(t,o,e,s,n,u,d);return}if(!(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")){if(s*=o===\"done\"?3.1/d.doneDuration:o===\"working\"?7.2/(d.wait*2):3.6/(d.wait*1.5),t.save(),o===\"thinking\"){if(a===\"front\")for(let p=0;p<3;p++){let m=n?.5:(1+Math.cos(s*Math.PI*2/3.6-p*Math.PI*2/3))/2,c=r[p%r.length];c!==void 0&&(t.fillStyle=c),t.globalAlpha=(.65+m*.35)*l,t.beginPath(),t.arc(e*(.5+(p-1)*.09),e*.08,Math.max(1,e*(.022+m*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&s<3.1){let p=o===\"done\"?3:1;for(let m=0;m<p;m++){let c=o===\"done\"?(s-m*.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)+m*2.1,x=Math.PI*1.4,i=-.38+m*.4,S=e*(.44+c*.03),y=e*(.19+c*.11),b=v=>{let D=Math.cos(v)*S,g=Math.sin(v)*y;return[e/2+D*Math.cos(i)-g*Math.sin(i),e/2+D*Math.sin(i)+g*Math.cos(i)]},A=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((v,D)=>A.addColorStop(D/Math.max(1,r.length-1),v)),t.strokeStyle=A,t.lineCap=\"butt\";for(let v=0;v<100;v++){let D=v/100,g=M-x+x*D,f=Math.sin(g)>=0;if(f!==(a===\"front\"))continue;let w=Math.sin(Math.PI*(.04+D*.92));t.globalAlpha=h*(f?.92:.55)*(.25+w*.75)*l,t.lineWidth=Math.max(.65,e*.027*w),t.beginPath(),t.moveTo(...b(g)),t.lineTo(...b(g+x/100)),t.stroke()}}}t.restore()}}var Pe={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Ee={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},_t=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],qt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],vt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},Wt=new Map,Kt=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],ke={nadia:_t,sofia:Kt},Te=[...qt,...[..._t,...Kt].filter(t=>t!==null),...Object.values(vt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"];function Re(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 jt(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=q(o*.1*r,.3,s,s,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let w=0;w<u;w++){let[O,E,k]=Re(w,u),[T,C,R]=a(O*n,E*n,k*n);d.push({x:T,y:C,z:R,r:.8*l,white:.78,a:.1+.22*((R/n+1)/2)})}let p=o*.24*r,m=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,h,M]=[Math.cos(p),0,Math.sin(p)],[x,i,S]=[-M*Math.sin(m),Math.cos(m),c*Math.sin(m)],[y,b,A]=[h*S-M*i,M*x-c*S,c*i-h*x],v=e.wobMul??1,D=e.faceOn?n/(1+.85*.23*v):n,g=e.segs??88,f=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let w=0;w<f;w++){let O=(w-(f-1)/2)*.075,E=Math.abs(w-(f-1)/2)/Math.max(1,(f-1)/2);for(let k=0;k<g;k++){let T=k/g*2*Math.PI,C=(.16*Math.sin(T*3-o*1.7+w*.22)+.07*Math.sin(T*5+o*1.1))*v,R=e.faceOn?1+C:1,I=e.faceOn?O:O+C,B=c*Math.cos(T)+x*Math.sin(T)+y*I,L=h*Math.cos(T)+i*Math.sin(T)+b*I,N=M*Math.cos(T)+S*Math.sin(T)+A*I,_=Math.sqrt(B*B+L*L+N*N),[P,V,F]=a(B/_*D*R,L/_*D*R,N/_*D*R),G=(F/n+1)/2;d.push({x:P,y:V,z:F,r:((e.rBase??1.1)+(e.rDepth??1.7)*G)*(1-.25*E)*l,white:.08+.1*E,a:.55+.45*G,stripe:Math.min(3,Math.floor(w/f*4))})}}return j(d,[],e.rMin)}function Ce(t,o){for(let e of t.dots)e.x=o-e.x;return t}function Ve(t){return t<=32?20:t<=48?32:64}function Ht(t,o,e,s){return e===\"ambient\"||t===\"done\"&&o>=s.doneDuration?\"idle\":t}function Ie(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:l,reduced:d,breath:u,celebrationColors:p,stripeColors:m}=o,c=Ee[o.presence],h=at(Pe[e===\"nadia\"||e===\"sofia\"?\"ribbon\":e],Ve(s)),M=e===\"nadia\"?jt(s,n,h.opts):e===\"sofia\"?Ce(jt(s,n,h.opts),s):Z[h.mode](s,n,h.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&l>=o.timing.doneDuration,i=Ht(a,l,o.motion,o.timing),S=o.motion===\"ambient\"?0:x?l-o.timing.doneDuration:l,y=Gt(i,S,o.timing,d),b=x?l-o.timing.doneDuration:l,A=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,v=(f,w)=>{let O=(f-s/2)*y.sx,E=(w-s/2)*y.sy;return[s/2+O*Math.cos(y.rotation)-E*Math.sin(y.rotation)+y.x*s,s/2+O*Math.sin(y.rotation)+E*Math.cos(y.rotation)+y.y*s]},D=u;o.motion===\"status\"&&bt(t,i,s,b,d,p,\"back\",u,o.timing,A),t.fillStyle=r,t.strokeStyle=r;for(let f of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.lineWidth=f.w*c.radius,t.beginPath(),t.moveTo(...v(f.x1,f.y1)),t.lineTo(...v(f.x2,f.y2)),t.stroke();let g=M.dots;for(let f of g)t.fillStyle=f.stripe===void 0?r:m[f.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.beginPath(),t.arc(...v(f.x,f.y),f.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&bt(t,i,s,b,d,p,\"front\",u,o.timing,A)}function Fe(t){let o=new Map,e=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function s(p){let m=h=>{for(let M=h;M;M=M.parentElement)if(p.has(M))return!0;return!1},c=[...o].flatMap(([h,M])=>m(h)?[M.readChange()]:[]);for(let h of c)h?.()}function n(){for(let p of o.values())p.play()}let r=typeof IntersectionObserver>\"u\"?void 0:new IntersectionObserver(p=>{for(let m of p)o.get(m.target)?.setVisible(m.isIntersecting)}),a=new MutationObserver(p=>{s(new Set(p.map(m=>m.target)))});a.observe(document.documentElement,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"],subtree:!0});let l=new ResizeObserver(p=>{let m=p.map(c=>o.get(c.target)?.readResize());for(let c of m)c?.()});function d(p){p.propertyName===\"color\"&&p.target instanceof Node&&s(new Set([p.target]))}function u(){s(new Set([document.documentElement]))}return document.addEventListener(\"transitionend\",d,!0),e.addEventListener(\"change\",n),document.addEventListener(\"visibilitychange\",n),window.addEventListener(\"resize\",u),{motion:e,watch(p,m){o.set(p,m),r?.observe(p),l.observe(p)},unwatch(p,m){if(o.get(p)===m){if(o.delete(p),o.size>0){r?.unobserve(p),l.unobserve(p);return}r?.disconnect(),a.disconnect(),l.disconnect(),document.removeEventListener(\"transitionend\",d,!0),e.removeEventListener(\"change\",n),document.removeEventListener(\"visibilitychange\",n),window.removeEventListener(\"resize\",u),t()}}}}var xt;function ze(){let t=new Set,o=0;function e(s){o=0;for(let n of[...t])n(s)||t.delete(n);t.size>0&&o===0&&(o=requestAnimationFrame(e))}return{run(s){t.add(s),o===0&&(o=requestAnimationFrame(e))},stop(s){t.delete(s),!(t.size>0||o===0)&&(cancelAnimationFrame(o),o=0)}}}var yt=ze(),Ne=4;function Be(){return xt??=Fe(()=>{xt=void 0}),xt}var Le=.1;function $t(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(P){},setState(P){}};let r=Be(),{motion:a}=r,l=o.paused??!1,d=!0,u=!1,p=.6,m=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],D=\"\",g=X(),f={waiting:b,blocked:b};function w(){let P=t.getBoundingClientRect(),V=Math.min(P.width,P.height);return V>0?V:o.size}function O(){!n||u||!t.isConnected||(n.setTransform(S,0,0,S,0,0),Ie(n,{form:e,size:y,seconds:p,color:b,state:h,age:m,reduced:a.matches,breath:a.matches?Lt(h,c):1,presence:s,motion:M,celebrationColors:A,stripeColors:v,statusColors:f,timing:g}))}function E(){return u||!t.isConnected||!d||document.hidden||l?!1:a.matches?M===\"status\"&&(h===\"thinking\"||h===\"working\"):M===\"ambient\"?!0:!(h===\"blocked\"&&m>=g.blockedDuration)}function k(P){if(!E())return!1;if(x!==null){let F=Math.min((P-x)/1e3,Le);a.matches?c+=F:(p+=F*(M===\"ambient\"?ht(e):Bt(h,e,m,g)),M===\"status\"&&(m+=F))}x=P;let V=Ht(h,m,M,g)===\"idle\"?gt.resting:gt.busy;return(P-i>=1e3/V-Ne||!E())&&(O(),i=P),E()}function T(){x=null,O(),E()?yt.run(k):yt.stop(k)}function C(P){let V=Wt.get(P);if(V)return V;let F=document.createElement(\"span\");F.hidden=!0,F.style.color=P,(t.parentElement??document.body).append(F);let G=getComputedStyle(F).color;return F.remove(),G?(Wt.set(P,G),G):b}function R(){let P=getComputedStyle(t),V=new Map(Te.map(G=>[G,P.getPropertyValue(G).trim()]));return{key:[window.devicePixelRatio||1,P.color,...V.values()].join(\"|\"),color:P.color,tokens:V,timing:X(P)}}function I(P){if(u||!t.isConnected)return;y=P;let V=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));t.width=V,t.height=V,S=V/y,T()}function B(P,V){D=P.key,b=P.color,g=P.timing,f={waiting:C(P.tokens.get(vt.waiting)||b),blocked:C(P.tokens.get(vt.blocked)||b)},A=qt.map(F=>C(`color-mix(in oklch, ${P.tokens.get(F)||b} 75%, white)`)),v=(ke[e]??[]).map(F=>F&&P.tokens.get(F)||b),I(V)}function L(){if(u||!t.isConnected)return;let P=w();return Math.abs(P-y)>=.5?()=>I(P):void 0}function N(){if(u||!t.isConnected)return;let P=R();if(P.key===D)return L();let V=w();return()=>B(P,V)}let _={readChange:N,readResize:L,setVisible(P){d=P,T()},play:T};return r.watch(t,_),N()?.(),{setState(P){h=P,m=0,c=0,T()},setPaused(P){l=P,T()},destroy(){u=!0,yt.stop(k),r.unwatch(t,_)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\"))$t(t,{form:t.dataset.agentOrb,size:Number(t.dataset.size),state:t.dataset.state??\"idle\"});})();\n";
|
|
1
|
+
export const agentOrbScript = "\"use strict\";(()=>{function et(t,o,e){return t+(o-t)*e}function Ot(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=W(e,s),l=W(e+1,s),d=W(e,s+1),u=W(e+1,s+1);return a+(l-a)*n+(d-a)*r+(a-l-d+u)*n*r}function W(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 Yt(t,o){return Math.atan2(Math.sin(t-o),Math.cos(t-o))}function q(t,o,e,s,n){let r=Math.sin(o),a=Math.cos(o),l=Math.sin(t),d=Math.cos(t);return(u,p,m)=>{let c=u*d+m*l,h=-u*l+m*d,M=p*a-h*r,x=p*r+h*a;return[e+c*n,s-M*n,x]}}function Pt(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 Et(t,o,e,s=.3,n){for(let r of o){let a=r.a??1,l=Math.min(1,Math.max(0,r.white));t.fillStyle=Pt(l,a,e,n),t.beginPath(),t.arc(r.x,r.y,r.r,0,Math.PI*2),t.fill()}}function kt(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=Pt(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 Tt(t,o,e,s){o.lines.length&&kt(t,o.lines,e,s),Et(t,o.dots,e,.3,s)}function K(t,o){return(t/300)**o}var Zt=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],Jt=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],Qt=[\"iconD\"],Xt=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function te(t,o){let e={...t},s=new Set,n=Math.sqrt(o);for(let[r,a]of Zt){let l=e[r],d=e[a];l!=null&&d!=null&&!s.has(r)&&!s.has(a)&&(e[r]=Math.max(2,Math.round(l*n)),e[a]=Math.max(2,Math.round(d*n)),s.add(r),s.add(a))}for(let r of Jt){let a=e[r];a!=null&&a!==0&&!s.has(r)&&(e[r]=Math.max(1,Math.round(a*o)))}for(let r of Qt){let a=e[r];a!=null&&(e[r]=Math.max(.02,a*o))}return e}function ee(t,o){let e={...t};for(let s of Xt){let n=e[s];n!=null&&(e[s]=n*o)}return e.rSizeMul=(e.rSizeMul??1)*o,e}var oe={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}},ne=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.76,a=q(o*.4,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let c=0;c<u;c++){let h=st(c,u),[M,x,i]=a(h[0]*r,h[1]*r,h[2]*r),S=(i/r+1)/2;d.push({x:M,y:x,z:i,r:.8*l,white:.78,a:.1+.22*S})}let p=e.strandN??52,m=e.turns??3;for(let c=0;c<3;c++){let h=c/3*2*Math.PI;for(let M=0;M<p;M++){let x=(Ot(M/p+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*m+h,b=1+.075*Math.sin(x*Math.PI*m*2+h*2+o*.8),A=i*r*b,[v,D,g]=a(Math.cos(y)*A,x*r*b,Math.sin(y)*A),f=(g/r+1)/2;d.push({x:v,y:D,z:g,r:((e.rBase??1.2)+(e.rDepth??1.8)*f)*l,white:.55-.45*f,a:S*(.45+.55*f)})}}return j(d,[],e.rMin)};function re(t,o,e,s){let n=2*o*e+s,r=t%n,a=new Array(o).fill(0),l=-1;if(r<2*o*e){let d=Math.floor(r/e),u=(r-d*e)/e,m=1-(1-Math.min(1,u/.7))**3;if(d<o){for(let c=0;c<d;c++)a[c]=1;a[d]=m,l=d}else{let c=2*o-1-d;for(let h=0;h<c;h++)a[h]=1;a[c]=1-m,l=c}}return{amount:a,active:l}}function se(t,o,e){let[s,n,r]=t,a=!1;for(let l=0;l<o.length;l++){if(e.amount[l]<=0)continue;let d=o[l],u=d.axis===0?s:d.axis===1?n:r;if(u<d.lo||u>=d.hi)continue;l===e.active&&(a=!0);let p=d.ang*e.amount[l],m=Math.cos(p),c=Math.sin(p);if(d.axis===0){let h=n*m-r*c;r=n*c+r*m,n=h}else if(d.axis===1){let h=s*m+r*c;r=-s*c+r*m,s=h}else{let h=s*m-n*c;n=s*c+n*m,s=h}}return[s,n,r,a]}function ae(t){let o=[];for(let e=0;e<t;e++){let s=Math.min(2,Math.floor(W(e,2.3)*3)),n=-1+.5*Math.min(3,Math.floor(W(e,5.9)*4)),r=W(e,7.7)<.5?1:-1;o.push({axis:s,lo:n,hi:n+.5,ang:r*Math.PI/2})}return o}var ie=(t,o,e)=>{let n=t/2,r=t/2,a=t/2*.82,l=.4+.06*Math.sin(o*.35),d=q(o*.5,l,n,r,a),u=o*(.5+(1.7-.5)*(e.scanMul??1)),p=K(t,e.rsPow??.6),m=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,[D,g,f]=d(S*Math.cos(v),y,S*Math.sin(v)),w=(f+1)/2,O=Yt(v+o*.5,u),E=Math.exp(-(O*O)/.18)*Math.max(0,f);c.push({x:D,y:g,z:f,r:((e.rBase??.6)+(e.rDepth??1.7)*w+(e.rBoost??1)*E)*p,white:(e.inkFar??.62)-(e.inkSpan??.54)*w,a:m+(1-m)*Math.min(1,E)})}}return j(c,[],e.rMin)},ce=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.55,.35+.1*Math.sin(o*.9),s,n,r),l=K(t,e.rsPow??.6),d=e.moveCount??14,u=ae(d),p=re(o,d,.42,1.2),m=[],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,D,g,f]=se([i*Math.cos(A),S,i*Math.sin(A)],u,p),[w,O,E]=a(v,D,g),k=(E+1)/2;m.push({x:w,y:O,z:E,r:((e.rBase??.6)+(e.rDepth??1.7)*k+(f?e.rActive??.3:0))*l,white:(e.inkFar??.62)-(e.inkSpan??.54)*k-(f?.14:0)})}}return j(m,[],e.rMin)},le=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.874,a=q(o*.18,.38,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.rings??15,p=e.lonDensity??40;for(let m=0;m<=u;m++){let c=-Math.PI/2+m/u*Math.PI,h=Math.cos(c),M=Math.sin(c),x=.62*Math.sin(o*2.1-m*.52)+.38*Math.sin(o*1.27+m*.83),i=r*(.88+.105*x),S=Math.max(1,Math.round(Math.abs(h)*p));for(let y=0;y<S;y++){let b=y/S*2*Math.PI,[A,v,D]=a(h*Math.cos(b)*i,M*i,h*Math.sin(b)*i),g=(D/r+1)/2,f=Math.max(0,x);d.push({x:A,y:v,z:D,r:((e.rBase??.6)+(e.rDepth??1.7)*g)*(1+.4*f)*l,white:.66-.56*g-.1*f})}}return j(d,[],e.rMin)};function pe(t){return t*t*(3-2*t)}function Rt(t){let o=t.length,e=[],s=0;for(let n=0;n<o;n++){let r=t[n],a=t[(n+1)%o],l=Math.hypot(a[0]-r[0],a[1]-r[1]);e.push(l),s+=l}return n=>{let r=n*s,a=0;for(;r>e[a]&&a<o-1;)r-=e[a],a++;let l=t[a],d=t[(a+1)%o],u=e[a]?Math.min(1,r/e[a]):0;return[l[0]+(d[0]-l[0])*u,l[1]+(d[1]-l[1])*u]}}var fe=t=>{let o=-Math.PI/2+t*2*Math.PI;return[Math.cos(o)*.24,Math.sin(o)*.24]},ue=Rt([[0,-.26],[.24,.16],[-.24,.16]]),me=Rt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),nt=[fe,ue,me];function de(t){return Math.max(6,Math.round(34*t))}var rt=1.4,Ct=.9,Z=rt+Ct,he=(t,o,e)=>{let s=nt.length,n=o%(Z*s),r=e.shape!=null&&e.shape>=0&&e.shape<s?Math.floor(e.shape):-1,a=r>=0?r:Math.floor(n/Z),l=r>=0?o%Z:n-a*Z,d=r>=0?0:l>rt?pe((l-rt)/Ct):0,u=e.spread??1,p=nt[a],m=r>=0?p:nt[(a+1)%s],c=160,h=[];for(let g=0;g<c;g++){let f=g/c,w=p(f),O=m(f);h.push([(w[0]+(O[0]-w[0])*d)*u,(w[1]+(O[1]-w[1])*d)*u])}let M=[],x=0;for(let g=0;g<c;g++){let f=h[g],w=h[(g+1)%c],O=Math.hypot(w[0]-f[0],w[1]-f[1]);M.push(O),x+=O}let i=de(e.iconD??1),S=(e.rDot??.021)*1.35*u,y=1+.02*Math.sin(l*3.1),b=[],A=t/2,v=0,D=0;for(let g=0;g<i;g++){let f=g/i*x;for(;D+M[v]<f&&v<c-1;)D+=M[v],v++;let w=h[v],O=h[(v+1)%c],E=M[v]?Math.min(1,(f-D)/M[v]):0,k=(w[0]+(O[0]-w[0])*E)*y,T=(w[1]+(O[1]-w[1])*E)*y;b.push({x:A+k*t,y:A+T*t,z:0,r:Math.max(.35,S*t),white:.1})}return j(b,[],e.rMin)},ge=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.82,a=q(o*.12,.3,s,n,1),l=K(t,e.rsPow??.6),d=[],u=e.orbitN??12,p=e.ghostN??40,m=e.particles??3;for(let c=0;c<u;c++){let h=W(c,1.7),M=W(c,5.2),x=W(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),D=-A,g=b,f=0,w=Math.max(1e-6,Math.sqrt(D*D+g*g));D/=w,g/=w;let O=A*f-v*g,E=v*D-b*f,k=b*g-A*D,T=(.25+.55*x)*(x>.5?1:-1);for(let C=0;C<p;C++){let R=C/p*2*Math.PI,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:(e.ghostR??.9)*l,white:.72,a:(e.ghostA??.5)*(.4+.6*N)})}for(let C=0;C<m;C++){let R=o*T+C/m*2*Math.PI+M*6,[I,B,L]=a((D*Math.cos(R)+O*Math.sin(R))*i,(g*Math.cos(R)+E*Math.sin(R))*i,(f*Math.cos(R)+k*Math.sin(R))*i),N=(L/i+1)/2;d.push({x:I,y:B,z:L,r:((e.partR??1.2)+(e.partRDepth??1.6)*N)*l,white:.3-.22*N})}}return j(d,[],e.rMin)},At=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.78,a=e.spin??1,l=.3,d=q(o*.1*a,l,s,n,1),u=K(t,e.rsPow??.6),p=[],m=e.ghostN??150;for(let k=0;k<m;k++){let T=st(k,m),[C,R,I]=d(T[0]*r,T[1]*r,T[2]*r),B=(I/r+1)/2;p.push({x:C,y:R,z:I,r:.8*u,white:.78,a:.1+.22*B})}let c=o*.24*a,h=e.faceOn?-l:.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,D=M*y-x*S,g=.23*(e.wobMul??1),f=e.faceOn?r/(1+.85*g):r,w=e.lanes??5,O=e.segs??88,E=Math.max(1,Math.round(w*(e.bandMul??1)));for(let k=0;k<E;k++){let T=(k-(E-1)/2)*.075,C=Math.abs(k-(E-1)/2)/Math.max(1,(E-1)/2);for(let R=0;R<O;R++){let I=R/O*2*Math.PI,B=(.16*Math.sin(I*3-o*1.7+k*.22)+.07*Math.sin(I*5+o*1.1))*(e.wobMul??1),L=e.faceOn?1+B:1,N=e.faceOn?T:T+B,_=M*Math.cos(I)+S*Math.sin(I)+A*N,P=x*Math.cos(I)+y*Math.sin(I)+v*N,V=i*Math.cos(I)+b*Math.sin(I)+D*N,F=Math.sqrt(_*_+P*P+V*V),G=f*L,[$t,Ut,wt]=d(_/F*G,P/F*G,V/F*G),tt=(wt/r+1)/2;p.push({x:$t,y:Ut,z:wt,r:((e.rBase??1.1)+(e.rDepth??1.7)*tt)*(1-.25*C)*u,white:.52-.44*tt+.18*C,a:.4+.6*tt})}}return j(p,[],e.rMin)},Me=(t,o,e)=>{let s=t/2,n=t/2,r=t/2*.8*(e.spread??1),a=q(o*.12,.32,s,n,r),l=K(t,e.rsPow??.6),d=e.nodeN??30,u=e.thr??.72,p=e.nodeR??1.4,m=e.nodeRDepth??1.8,c=[];for(let i=0;i<d;i++){let S=st(i,d),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<d;i++)for(let S=i+1;S<d;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>=u)continue;let[D,g,f]=a(c[i][0],c[i][1],c[i][2]),[w,O,E]=a(c[S][0],c[S][1],c[S][2]),k=((f+E)/2+1)/2;h.push({x1:D,y1:g,x2:w,y2:O,white:.42,a:(1-v/u)*(.3+.55*k),w:Math.max(.6,(e.lineW??.8)*l)})}for(let i=0;i<d;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:(p+m*A)*v*l,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(W(S,i*3.1+1.7)*d),b=Math.floor(W(S,i*5.7+4.2)*d);if(y===b)continue;let A=Ot(o*.55+i*7.31),v=et(c[y][0],c[b][0],A),D=et(c[y][1],c[b][1],A),g=et(c[y][2],c[b][2],A),f=Math.max(1e-6,Math.sqrt(v*v+D*D+g*g)),[w,O,E]=a(v/f,D/f,g/f),k=(E+1)/2;M.push({x:w,y:O,z:E,r:(p*1.5+m*k)*l,white:.05,a:.5+.5*k})}return j(M,h,e.rMin)},U={orbits:ge,globe:ie,rubik:ce,wave:le,web:Me,braid:ne,ribbon:At,ring:At,morph:he},be=Object.fromEntries(Object.entries(U).map(([t,o])=>[t,(e,s,n,r,a)=>Tt(e,o(s,n,a),r)])),Vt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},xe={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}}}},Dt=new Map;function at(t,o){let e=`${t}-${o}`,s=Dt.get(e);if(s)return s;let n=Vt[t],r=xe[n][o],a={...oe[n]};r.count!==1&&(a=te(a,r.count)),r.size!==1&&(a=ee(a,r.size)),r.extra&&(a={...a,...r.extra});let l={mode:n,speed:r.speed,opts:a};return Dt.set(e,l),l}var it=(t,o,e)=>e>o?o:e<t?t:e;var ct=()=>{};var H=t=>t*1e3,$=t=>t/1e3;var It=(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 Ft(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]}),l=Math.min(J(a),2e4);return{type:\"keyframes\",ease:d=>a.next(l*d).value/o,duration:$(l)}}var z={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},zt=t=>t<0?1/Math.max(1+t,z.minDamping):Math.max(1-t,z.minDamping);function Nt(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 Bt(a=>n*Math.exp(-s*a)-s*Math.exp(-n*a)-r,a=>Math.exp(-n*a)-Math.exp(-s*a),o)/o}function ut(t,o){return t*Math.sqrt(1-o*o)}var ye=12;function Bt(t,o,e){let s=e;for(let n=1;n<ye;n++)s=s-t(s)/o(s);return s}var pt=.001;function ve({duration:t=z.duration,bounce:o=z.bounce}){let e,s;ct(t<=H(z.maxDuration),\"Spring duration must be 10 seconds or less\",\"spring-duration-limit\");let n=zt(o);t=it(z.minDuration,z.maxDuration,$(t)),n<1?(e=u=>{let p=u*n,m=p*t,c=ut(u,n),h=Math.exp(-m);return pt-p/c*h},s=u=>{let m=u*n*t,c=n*n*u*u*t,h=Math.exp(-m),M=ut(u*u,n);return(-e(u)+pt>0?-1:1)*-c*h/M}):(e=u=>{let p=Math.exp(-u*t),m=u*t+1;return-pt+p*m},s=u=>{let p=Math.exp(-u*t),m=-u*(t*t);return p*m});let r=5/t,a=Bt(e,s,r),l=a*Nt(n,a*t),d=l*l;return{stiffness:d,damping:n*2*Math.sqrt(d),duration:H(t)}}var mt=(t,o)=>(o?t>=0:t>0)&&t<1/0;function ft(t,o){if(mt(t,o))return t}function Se(t){let o=ft(t.stiffness),e=ft(t.damping,!0),s=ft(t.mass),n={...t,stiffness:o??z.stiffness,damping:e??z.damping,mass:s??z.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=zt(t.bounce||0),a=2*Math.PI/(t.visualDuration*1.2)*Nt(r,2*Math.PI/1.2);n.stiffness=a*a,n.damping=2*r*Math.sqrt(n.stiffness)}else Object.assign(n,ve(n)),n.isResolvedFromDuration=!0;(!mt(n.stiffness)||!mt(n.damping,!0))&&(n.stiffness=z.stiffness,n.damping=z.damping)}return n}function Y(t=z.visualDuration,o=z.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:l,mass:d,duration:u,isResolvedFromDuration:p,isTimeDefined:m}=Se({...e}),c=g=>m?0:-$(g),h=l/(2*Math.sqrt(a*d)),M=$(Math.sqrt(a/d)),x=h*M,i={target:n,delta:n-s,velocity:c(e.velocity||0)||0,restSpeed:0,restDelta:0},S=()=>{let g=Math.abs(i.delta)<5;i.restSpeed=e.restSpeed||(g?z.restSpeed.granular:z.restSpeed.default),i.restDelta=e.restDelta||(g?z.restDelta.granular:z.restDelta.default)};S();let y,b,A;if(h<1){let g=ut(M,h),f={A:0,sinC:0,cosC:0,t:-1,env:0,sin:0,cos:0};A=()=>{f.A=(i.velocity+x*i.delta)/g,f.sinC=x*f.A+i.delta*g,f.cosC=x*i.delta-f.A*g};let w=O=>{O!==f.t&&(f.t=O,f.env=Math.exp(-x*O),f.sin=Math.sin(g*O),f.cos=Math.cos(g*O))};y=O=>(w(O),i.target-f.env*(f.A*f.sin+i.delta*f.cos)),b=O=>(w(O),f.env*(f.sinC*f.sin+f.cosC*f.cos))}else if(h===1){y=f=>i.target-Math.exp(-M*f)*(i.delta+(i.velocity+M*i.delta)*f);let g={C:0};A=()=>{g.C=i.velocity+M*i.delta},b=f=>Math.exp(-M*f)*(M*g.C*f-i.velocity)}else{let g=M*Math.sqrt(h*h-1),f=x-g,w=x+g,O=m?1/0:300/g,E=(T,C)=>Math.exp(C>O?-T*O-x*(C-O):-T*C),k={S:0,F:0};A=()=>{let T=(i.velocity+x*i.delta)/g;k.S=(i.delta+T)/2,k.F=(i.delta-T)/2},y=T=>i.target-k.S*E(f,T)-k.F*E(w,T),b=T=>f*k.S*E(f,T)+w*k.F*E(w,T)}A();let v=p&&u||null,D={calculatedDuration:v,retarget:(g,f)=>{i.target=g[g.length-1],i.delta=i.target-g[0],i.velocity=c(f),e.restSpeed&&e.restDelta||S(),D.calculatedDuration=v,r.done=!1,A()},velocity:g=>H(b(g)),next:g=>{let f=y(g);if(p)r.done=g>=u;else{let w=H(b(g));r.done=Math.abs(w)<=i.restSpeed&&Math.abs(i.target-f)<=i.restDelta}return r.value=r.done?i.target:f,r},toString:()=>{let g=Math.min(J(D),2e4),f=It(w=>D.next(g*w).value,g,30);return g+\"ms \"+f},toTransition:()=>{}};return D}Y.applyToOptions=t=>{let o=Ft(t,100,Y);return t.ease=o.ease,t.duration=H(o.duration),t.type=\"keyframes\",t};var we={ribbon:{speed:.55},nadia:{speed:.55},sofia:{speed:.9},lattice:{speed:.28},orbit:{speed:.7},globe:{speed:.35},network:{speed:.55},braid:{speed:.65},morph:{speed:.9}};function ht(t){return we[t].speed}function Lt(t,o,e=0,s=Mt){return{idle:.864,working:1,thinking:.55,waiting:0,blocked:0,done:e>=s.doneDuration?.72:.65}[t]*ht(o)}var gt={resting:15,busy:30},Ae=1.6;function Gt(t,o){return t!==\"thinking\"&&t!==\"working\"?1:1-.55*((1-Math.cos(o*Math.PI*2/Ae))/2)}function X(t){let o=(l,d)=>{let u=t?.getPropertyValue(`--nc-duration-${l}`).trim()??\"\";return u?Number.parseFloat(u)*(u.endsWith(\"ms\")?.001:1):d},e=o(\"wait\",1.6),s=o(\"confirm\",.18),n=o(\"transition\",.24),r=l=>Math.round(e*l*1e3)/1e3,a=Y({keyframes:[0,1],duration:n*2e3,bounce:.1});return{wait:e,confirm:s,transition:n,doneDuration:r(3),blockedDuration:r(1.25),gestureAge:l=>l*n*2/e,settle:(l,d=0)=>l<d?0:a.next((l-d)*1e3).value}}var Mt=X(),Q=t=>Math.min(1,Math.max(0,t)),dt=t=>{let o=Q(t);return o*o*(3-2*o)};function Wt(t,o,e=Mt,s=!1){let n=.82,r=.82,a=0,l=0,d=0;if(t===\"idle\"){let u=Math.sin((s?.6:o)*Math.PI*2/(e.wait*4));n+=u*.01,r+=u*.01,a=-u*.004}else if(!s&&t===\"waiting\"){let u=e.gestureAge(o),p=Math.sin(o*Math.PI*2/(e.wait*3)),m=Math.sin(Q(u/e.confirm)*Math.PI),c=e.settle(u,e.confirm*.55),h=1-m*.018+p*.006;n*=h,r*=h,a=-c*.018,d=-c*4.5*Math.PI/180}else if(!s&&t===\"blocked\"){let u=e.gestureAge(o),p=e.confirm*.85,m=dt(u/p)*(1-e.settle(u,p));n*=1-m*.018,r*=1+m*.012,l=-m*.034,a=m*.014,d=-m*4*Math.PI/180}else if(!s&&t===\"done\"){let u=o*1.3/(e.wait*2.25);if(u<.18){let p=Math.sin(Math.PI*u/.18);n+=.03*p,r-=.04*p,a=.012*p}else if(u<1.3){let p=(u-.18)/1.12;a=-.07*Math.sin(Math.PI*p),n+=.025*Math.sin(Math.PI*p),r+=.035*Math.sin(Math.PI*p),d=Math.sin(p*Math.PI*2)*.07}}return{sx:n,sy:r,x:l,y:a,rotation:d}}function De(t,o,e,s,n,r,a){let l=a.gestureAge(s),d=n?1:dt((l-a.confirm*.35)/a.confirm),u=n?1:a.settle(l,a.confirm*.35),p=Math.max(7,Math.min(36,e*.26));if(t.save(),t.fillStyle=r,t.strokeStyle=r,t.globalAlpha=d*.95,t.translate(e/2,e/2),o===\"waiting\"){let m=n?0:a.settle(l,a.confirm*.55),c=n?0:Math.sin(s*Math.PI*2/(a.wait*3));t.translate(0,(1-u)*-.12*p),t.rotate(-m*2*Math.PI/180);let h=.94+u*.06;t.scale(h,h),t.scale(p/24,p/24);for(let[M,x]of[14,5].entries()){let i=n?1:a.settle(l,a.confirm*(M===0?.65:.2)),S=M===0?1:-1;t.save(),t.globalAlpha=d*.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-u)*-.1*p),t.rotate((1-u)*-12*Math.PI/180);let m=1+(1-u)*.18;t.scale(m,m),t.scale(p/24,p/24),t.lineWidth=Math.max(1.6,24/p),t.lineCap=\"round\",t.beginPath(),t.arc(0,0,10,0,Math.PI*2),t.stroke();let c=n?1:dt((l-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((l-a.confirm*.85)/a.transition);t.globalAlpha*=Math.sin(h*Math.PI)*.65,t.lineWidth=1.4*24/p;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 bt(t,o,e,s,n,r,a,l=1,d=Mt,u=r[0]??\"currentColor\"){if(o===\"waiting\"||o===\"blocked\"){a===\"front\"&&De(t,o,e,s,n,u,d);return}if(!(o!==\"working\"&&o!==\"thinking\"&&o!==\"done\")){if(s*=o===\"done\"?3.1/d.doneDuration:o===\"working\"?7.2/(d.wait*2):3.6/(d.wait*1.5),t.save(),o===\"thinking\"){if(a===\"front\")for(let p=0;p<3;p++){let m=n?.5:(1+Math.cos(s*Math.PI*2/3.6-p*Math.PI*2/3))/2,c=r[p%r.length];c!==void 0&&(t.fillStyle=c),t.globalAlpha=(.65+m*.35)*l,t.beginPath(),t.arc(e*(.5+(p-1)*.09),e*.08,Math.max(1,e*(.022+m*.005)),0,Math.PI*2),t.fill()}}else if(o===\"working\"||!n&&s<3.1){let p=o===\"done\"?3:1;for(let m=0;m<p;m++){let c=o===\"done\"?(s-m*.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)+m*2.1,x=Math.PI*1.4,i=-.38+m*.4,S=e*(.44+c*.03),y=e*(.19+c*.11),b=v=>{let D=Math.cos(v)*S,g=Math.sin(v)*y;return[e/2+D*Math.cos(i)-g*Math.sin(i),e/2+D*Math.sin(i)+g*Math.cos(i)]},A=t.createLinearGradient(e*.1,e*.7,e*.9,e*.3);r.forEach((v,D)=>A.addColorStop(D/Math.max(1,r.length-1),v)),t.strokeStyle=A,t.lineCap=\"butt\";for(let v=0;v<100;v++){let D=v/100,g=M-x+x*D,f=Math.sin(g)>=0;if(f!==(a===\"front\"))continue;let w=Math.sin(Math.PI*(.04+D*.92));t.globalAlpha=h*(f?.92:.55)*(.25+w*.75)*l,t.lineWidth=Math.max(.65,e*.027*w),t.beginPath(),t.moveTo(...b(g)),t.lineTo(...b(g+x/100)),t.stroke()}}}t.restore()}}var Oe={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Pe={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},_t=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],qt=[\"--nc-acqua-700\",\"--nc-viola-700\",\"--nc-warning\",\"--nc-rosso-700\"],vt={waiting:\"--nc-warning-deep\",blocked:\"--nc-error\"},jt=new Map,St=[\"--nc-identity-cobalto\",\"--nc-identity-verde\",\"--nc-identity-giallo\",\"--nc-identity-arancio\",\"--nc-identity-rosso\"],Ee={nadia:_t,sofia:St},ke=[...qt,...[..._t,...St].filter(t=>t!==null),...Object.values(vt),\"--nc-duration-wait\",\"--nc-duration-confirm\",\"--nc-duration-transition\"];function Te(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 Re(t,o,e){let s=t/2,n=t/2*.78,r=e.spin??1,a=q(o*.1*r,.3,s,s,1),l=K(t,e.rsPow??.6),d=[],u=e.ghostN??150;for(let w=0;w<u;w++){let[O,E,k]=Te(w,u),[T,C,R]=a(O*n,E*n,k*n);d.push({x:T,y:C,z:R,r:.8*l,white:.78,a:.1+.22*((R/n+1)/2)})}let p=o*.24*r,m=e.faceOn?-.3:.55+.3*Math.sin(o*.18)*r,[c,h,M]=[Math.cos(p),0,Math.sin(p)],[x,i,S]=[-M*Math.sin(m),Math.cos(m),c*Math.sin(m)],[y,b,A]=[h*S-M*i,M*x-c*S,c*i-h*x],v=e.wobMul??1,D=e.faceOn?n/(1+.85*.23*v):n,g=e.segs??88,f=Math.max(1,Math.round((e.lanes??5)*(e.bandMul??1)));for(let w=0;w<f;w++){let O=(w-(f-1)/2)*.075,E=Math.abs(w-(f-1)/2)/Math.max(1,(f-1)/2);for(let k=0;k<g;k++){let T=k/g*2*Math.PI,C=(.16*Math.sin(T*3-o*1.7+w*.22)+.07*Math.sin(T*5+o*1.1))*v,R=e.faceOn?1+C:1,I=e.faceOn?O:O+C,B=c*Math.cos(T)+x*Math.sin(T)+y*I,L=h*Math.cos(T)+i*Math.sin(T)+b*I,N=M*Math.cos(T)+S*Math.sin(T)+A*I,_=Math.sqrt(B*B+L*L+N*N),[P,V,F]=a(B/_*D*R,L/_*D*R,N/_*D*R),G=(F/n+1)/2;d.push({x:P,y:V,z:F,r:((e.rBase??1.1)+(e.rDepth??1.7)*G)*(1-.25*E)*l,white:.08+.1*E,a:.55+.45*G,stripe:Math.min(3,Math.floor(w/f*4))})}}return j(d,[],e.rMin)}function Ce(t,o){let e=t.dots;for(let[s,n]of e.entries())n.stripe=Math.floor(s/e.length*o);return t}function Ve(t){return t===\"nadia\"?\"ribbon\":t===\"sofia\"?\"morph\":t}function Ie(t){return t<=32?20:t<=48?32:64}function Kt(t,o,e,s){return e===\"ambient\"||t===\"done\"&&o>=s.doneDuration?\"idle\":t}function Fe(t,o){let{form:e,size:s,seconds:n,color:r,state:a,age:l,reduced:d,breath:u,celebrationColors:p,stripeColors:m}=o,c=Pe[o.presence],h=at(Oe[Ve(e)],Ie(s)),M=e===\"nadia\"?Re(s,n,h.opts):e===\"sofia\"?Ce(U[h.mode](s,n,h.opts),St.length):U[h.mode](s,n,h.opts);t.clearRect(0,0,s,s);let x=a===\"done\"&&l>=o.timing.doneDuration,i=Kt(a,l,o.motion,o.timing),S=o.motion===\"ambient\"?0:x?l-o.timing.doneDuration:l,y=Wt(i,S,o.timing,d),b=x?l-o.timing.doneDuration:l,A=i===\"waiting\"||i===\"blocked\"?o.statusColors[i]:r,v=(f,w)=>{let O=(f-s/2)*y.sx,E=(w-s/2)*y.sy;return[s/2+O*Math.cos(y.rotation)-E*Math.sin(y.rotation)+y.x*s,s/2+O*Math.sin(y.rotation)+E*Math.cos(y.rotation)+y.y*s]},D=u;o.motion===\"status\"&&bt(t,i,s,b,d,p,\"back\",u,o.timing,A),t.fillStyle=r,t.strokeStyle=r;for(let f of M.lines)t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.lineWidth=f.w*c.radius,t.beginPath(),t.moveTo(...v(f.x1,f.y1)),t.lineTo(...v(f.x2,f.y2)),t.stroke();let g=M.dots;for(let f of g)t.fillStyle=f.stripe===void 0?r:m[f.stripe]??r,t.globalAlpha=Math.min(1,Math.max(0,(1-f.white)*(f.a??1)*D*c.alpha)),t.beginPath(),t.arc(...v(f.x,f.y),f.r*c.radius,0,Math.PI*2),t.fill();t.globalAlpha=1,o.motion===\"status\"&&bt(t,i,s,b,d,p,\"front\",u,o.timing,A)}function ze(t){let o=new Map,e=window.matchMedia(\"(prefers-reduced-motion: reduce)\");function s(p){let m=h=>{for(let M=h;M;M=M.parentElement)if(p.has(M))return!0;return!1},c=[...o].flatMap(([h,M])=>m(h)?[M.readChange()]:[]);for(let h of c)h?.()}function n(){for(let p of o.values())p.play()}let r=typeof IntersectionObserver>\"u\"?void 0:new IntersectionObserver(p=>{for(let m of p)o.get(m.target)?.setVisible(m.isIntersecting)}),a=new MutationObserver(p=>{s(new Set(p.map(m=>m.target)))});a.observe(document.documentElement,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"],subtree:!0});let l=new ResizeObserver(p=>{let m=p.map(c=>o.get(c.target)?.readResize());for(let c of m)c?.()});function d(p){p.propertyName===\"color\"&&p.target instanceof Node&&s(new Set([p.target]))}function u(){s(new Set([document.documentElement]))}return document.addEventListener(\"transitionend\",d,!0),e.addEventListener(\"change\",n),document.addEventListener(\"visibilitychange\",n),window.addEventListener(\"resize\",u),{motion:e,watch(p,m){o.set(p,m),r?.observe(p),l.observe(p)},unwatch(p,m){if(o.get(p)===m){if(o.delete(p),o.size>0){r?.unobserve(p),l.unobserve(p);return}r?.disconnect(),a.disconnect(),l.disconnect(),document.removeEventListener(\"transitionend\",d,!0),e.removeEventListener(\"change\",n),document.removeEventListener(\"visibilitychange\",n),window.removeEventListener(\"resize\",u),t()}}}}var xt;function Ne(){let t=new Set,o=0;function e(s){o=0;for(let n of[...t])n(s)||t.delete(n);t.size>0&&o===0&&(o=requestAnimationFrame(e))}return{run(s){t.add(s),o===0&&(o=requestAnimationFrame(e))},stop(s){t.delete(s),!(t.size>0||o===0)&&(cancelAnimationFrame(o),o=0)}}}var yt=Ne(),Be=4;function Le(){return xt??=ze(()=>{xt=void 0}),xt}var Ge=.1;function Ht(t,o){let{form:e,presence:s=\"plain\"}=o,n=t.getContext(\"2d\");if(!n)return{destroy(){},setPaused(P){},setState(P){}};let r=Le(),{motion:a}=r,l=o.paused??!1,d=!0,u=!1,p=.6,m=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],D=\"\",g=X(),f={waiting:b,blocked:b};function w(){let P=t.getBoundingClientRect(),V=Math.min(P.width,P.height);return V>0?V:o.size}function O(){!n||u||!t.isConnected||(n.setTransform(S,0,0,S,0,0),Fe(n,{form:e,size:y,seconds:p,color:b,state:h,age:m,reduced:a.matches,breath:a.matches?Gt(h,c):1,presence:s,motion:M,celebrationColors:A,stripeColors:v,statusColors:f,timing:g}))}function E(){return u||!t.isConnected||!d||document.hidden||l?!1:a.matches?M===\"status\"&&(h===\"thinking\"||h===\"working\"):M===\"ambient\"?!0:!(h===\"blocked\"&&m>=g.blockedDuration)}function k(P){if(!E())return!1;if(x!==null){let F=Math.min((P-x)/1e3,Ge);a.matches?c+=F:(p+=F*(M===\"ambient\"?ht(e):Lt(h,e,m,g)),M===\"status\"&&(m+=F))}x=P;let V=Kt(h,m,M,g)===\"idle\"?gt.resting:gt.busy;return(P-i>=1e3/V-Be||!E())&&(O(),i=P),E()}function T(){x=null,O(),E()?yt.run(k):yt.stop(k)}function C(P){let V=jt.get(P);if(V)return V;let F=document.createElement(\"span\");F.hidden=!0,F.style.color=P,(t.parentElement??document.body).append(F);let G=getComputedStyle(F).color;return F.remove(),G?(jt.set(P,G),G):b}function R(){let P=getComputedStyle(t),V=new Map(ke.map(G=>[G,P.getPropertyValue(G).trim()]));return{key:[window.devicePixelRatio||1,P.color,...V.values()].join(\"|\"),color:P.color,tokens:V,timing:X(P)}}function I(P){if(u||!t.isConnected)return;y=P;let V=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));t.width=V,t.height=V,S=V/y,T()}function B(P,V){D=P.key,b=P.color,g=P.timing,f={waiting:C(P.tokens.get(vt.waiting)||b),blocked:C(P.tokens.get(vt.blocked)||b)},A=qt.map(F=>C(`color-mix(in oklch, ${P.tokens.get(F)||b} 75%, white)`)),v=(Ee[e]??[]).map(F=>F&&P.tokens.get(F)||b),I(V)}function L(){if(u||!t.isConnected)return;let P=w();return Math.abs(P-y)>=.5?()=>I(P):void 0}function N(){if(u||!t.isConnected)return;let P=R();if(P.key===D)return L();let V=w();return()=>B(P,V)}let _={readChange:N,readResize:L,setVisible(P){d=P,T()},play:T};return r.watch(t,_),N()?.(),{setState(P){h=P,m=0,c=0,T()},setPaused(P){l=P,T()},destroy(){u=!0,yt.stop(k),r.unwatch(t,_)}}}for(let t of document.querySelectorAll(\"canvas[data-agent-orb]\"))Ht(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-logo-guide: oklch(0.6830 0.0000 0.00);\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.
|
|
3
|
+
"version": "12.1.163",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"@base-ui/react": "^1.9.0",
|
|
85
85
|
"@iconify-icons/logos": "^2.0.3",
|
|
86
86
|
"@iconify/react": "^6.0.2",
|
|
87
|
-
"@nadicodeai/design-system": "12.1.
|
|
87
|
+
"@nadicodeai/design-system": "12.1.163",
|
|
88
88
|
"@tanstack/react-table": "^9.3.1",
|
|
89
89
|
"@vgpu/wgsl": "0.6.0",
|
|
90
90
|
"class-variance-authority": "^0.7.1",
|