@nadicodeai/ui 12.1.67 → 12.1.69
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/hive-scene.d.ts +63 -0
- package/dist/components/hive-scene.d.ts.map +1 -0
- package/dist/components/hive-scene.js +337 -0
- package/dist/components/qr-code.d.ts +14 -0
- package/dist/components/qr-code.d.ts.map +1 -0
- package/dist/components/qr-code.js +26 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/standalone/index.js +1 -1
- package/dist/styles/components.css +130 -0
- package/package.json +3 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Alveare's entry scene, the hive, which Alveare's desktop and Alveare Server
|
|
4
|
+
* both stand their entry screens on (apps/alveare/docs/design-doctrine.md,
|
|
5
|
+
* "Screens"): the app's picture on black, Alveare's logo at the upper left,
|
|
6
|
+
* six Agent orbs on the corners of a hexagon around the words, and the work
|
|
7
|
+
* flowing between them and the people in the picture as particles in the
|
|
8
|
+
* sending orb's colour. The orbs are artwork, so they take ambient motion and
|
|
9
|
+
* claim no activity (DESIGN.md, "Agent orbs"). Only the orbs and the particles
|
|
10
|
+
* move; reduced motion stops both, an ambient orb holding still.
|
|
11
|
+
*
|
|
12
|
+
* - `join`: the words stand in the middle of the hexagon.
|
|
13
|
+
* - `loading`: the orbs draw in and there are no words.
|
|
14
|
+
* - `still`: no Agent and no work, for a failure (no orb turns on one) or a
|
|
15
|
+
* screen read at length.
|
|
16
|
+
*
|
|
17
|
+
* The scene is black in every theme, so it scopes `dark`. The app owns its
|
|
18
|
+
* picture and where it stands, through its own stylesheet.
|
|
19
|
+
*/
|
|
20
|
+
export type HivePoint = {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
/** Where the work comes from and goes to in the picture, in the scene's pixels. */
|
|
25
|
+
export type HiveWork = {
|
|
26
|
+
senders: readonly HivePoint[];
|
|
27
|
+
receivers: readonly HivePoint[];
|
|
28
|
+
};
|
|
29
|
+
export type HiveSceneMode = "join" | "loading" | "still";
|
|
30
|
+
export type HiveSceneProps = Omit<React.ComponentProps<"div">, "children"> & {
|
|
31
|
+
mode: HiveSceneMode;
|
|
32
|
+
/** Alveare's logo, its app icon without the construction guides, and its name. */
|
|
33
|
+
logo: {
|
|
34
|
+
src: string;
|
|
35
|
+
label: string;
|
|
36
|
+
};
|
|
37
|
+
/** The app's picture, placed by the app's own stylesheet. */
|
|
38
|
+
picture?: React.ReactNode;
|
|
39
|
+
/** The picture's people for the scene's current size, so the work reaches them. */
|
|
40
|
+
work?: (size: {
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
}) => HiveWork;
|
|
44
|
+
/** Window chrome the scene must carry, such as a drag region. */
|
|
45
|
+
chrome?: React.ReactNode;
|
|
46
|
+
/** What `loading` is waiting for, read by assistive technology. */
|
|
47
|
+
label?: string;
|
|
48
|
+
children?: React.ReactNode;
|
|
49
|
+
};
|
|
50
|
+
declare function HiveScene({ mode, logo, picture, work, chrome, label, className, children, ...props }: HiveSceneProps): React.JSX.Element;
|
|
51
|
+
/** The screen's one heading, in the middle of the hive. */
|
|
52
|
+
declare function HiveTitle({ children, id }: {
|
|
53
|
+
children: React.ReactNode;
|
|
54
|
+
id?: string;
|
|
55
|
+
}): React.JSX.Element;
|
|
56
|
+
/** A line under the title saying what happened or what to do. */
|
|
57
|
+
declare function HiveLine({ children, id, tone, }: {
|
|
58
|
+
children: React.ReactNode;
|
|
59
|
+
id?: string;
|
|
60
|
+
tone?: "body" | "error";
|
|
61
|
+
}): React.JSX.Element;
|
|
62
|
+
export { HiveLine, HiveScene, HiveTitle };
|
|
63
|
+
//# sourceMappingURL=hive-scene.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hive-scene.d.ts","sourceRoot":"","sources":["../../src/components/hive-scene.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,mFAAmF;AACnF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IAC3E,IAAI,EAAE,aAAa,CAAC;IACpB,kFAAkF;IAClF,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,6DAA6D;IAC7D,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,mFAAmF;IACnF,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC;IAC7D,iEAAiE;IACjE,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAmLF,iBAAS,SAAS,CAAC,EACjB,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBAiNhB;AAED,2DAA2D;AAC3D,iBAAS,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,qBAM9E;AAED,iEAAiE;AACjE,iBAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,EAAE,EACF,IAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB,qBAMA;AAED,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { mountAgentOrb } from "../internal/agent-orb.js";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
const COBALTO = "var(--nc-identity-cobalto)";
|
|
7
|
+
const VERDE = "var(--nc-identity-verde)";
|
|
8
|
+
const ARANCIO = "var(--nc-identity-arancio)";
|
|
9
|
+
const AGENTS = [
|
|
10
|
+
{ form: "orbit", colour: COBALTO, size: 96 },
|
|
11
|
+
{ form: "network", colour: VERDE, size: 64 },
|
|
12
|
+
{ form: "globe", colour: ARANCIO, size: 96 },
|
|
13
|
+
{ form: "lattice", colour: null, size: 64 },
|
|
14
|
+
{ form: "braid", colour: COBALTO, size: 96 },
|
|
15
|
+
{ form: "morph", colour: VERDE, size: 64 },
|
|
16
|
+
];
|
|
17
|
+
function cellRadius(width, height) {
|
|
18
|
+
return Math.min(width, height) * 0.3;
|
|
19
|
+
}
|
|
20
|
+
function corner(index, centre, radius) {
|
|
21
|
+
const angle = -Math.PI / 2 + (index * Math.PI) / 3;
|
|
22
|
+
return {
|
|
23
|
+
x: centre.x + Math.cos(angle) * radius,
|
|
24
|
+
y: centre.y + Math.sin(angle) * radius,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** The room an orb keeps from the words, so text never sits on an Agent. */
|
|
28
|
+
const WORDS_GAP = 16;
|
|
29
|
+
/**
|
|
30
|
+
* An orb's seat moved clear of the words: a seat at the side steps out
|
|
31
|
+
* sideways, the top and bottom ones up and down. An orb with no room left
|
|
32
|
+
* inside the scene is not drawn.
|
|
33
|
+
*/
|
|
34
|
+
function clearOfWords(seat, size, words, scene) {
|
|
35
|
+
const half = size / 2 + WORDS_GAP;
|
|
36
|
+
let { x, y } = seat;
|
|
37
|
+
const covers = words &&
|
|
38
|
+
x + half > words.left &&
|
|
39
|
+
x - half < words.right &&
|
|
40
|
+
y + half > words.top &&
|
|
41
|
+
y - half < words.bottom;
|
|
42
|
+
if (words && covers) {
|
|
43
|
+
const centre = (words.left + words.right) / 2;
|
|
44
|
+
if (Math.abs(x - centre) > 1)
|
|
45
|
+
x = x > centre ? words.right + half : words.left - half;
|
|
46
|
+
else
|
|
47
|
+
y = y > (words.top + words.bottom) / 2 ? words.bottom + half : words.top - half;
|
|
48
|
+
}
|
|
49
|
+
const inside = x - size / 2 >= 0 &&
|
|
50
|
+
x + size / 2 <= scene.width &&
|
|
51
|
+
y - size / 2 >= 0 &&
|
|
52
|
+
y + size / 2 <= scene.height;
|
|
53
|
+
return inside ? { x, y } : null;
|
|
54
|
+
}
|
|
55
|
+
function sizeCanvas(canvas, width, height) {
|
|
56
|
+
const ratio = Math.min(window.devicePixelRatio || 1, 2);
|
|
57
|
+
canvas.width = width * ratio;
|
|
58
|
+
canvas.height = height * ratio;
|
|
59
|
+
const context = canvas.getContext("2d");
|
|
60
|
+
context?.setTransform(ratio, 0, 0, ratio, 0, 0);
|
|
61
|
+
return context;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Small groups of touching honeycomb cells in faint white lines, three
|
|
65
|
+
* clusters at the edges, clear of the people and the centre: the hive seen in
|
|
66
|
+
* passing, never a pattern. Each cluster is its centre (a share of the window)
|
|
67
|
+
* and its cells in axial hex coordinates, so the comb never moves.
|
|
68
|
+
*/
|
|
69
|
+
const COMB_RADIUS = 15;
|
|
70
|
+
const COMB_CLUSTERS = [
|
|
71
|
+
{
|
|
72
|
+
x: 0.1,
|
|
73
|
+
y: 0.13,
|
|
74
|
+
alpha: 0.2,
|
|
75
|
+
cells: [
|
|
76
|
+
[0, 0],
|
|
77
|
+
[1, 0],
|
|
78
|
+
[0, 1],
|
|
79
|
+
[-1, 1],
|
|
80
|
+
[1, -1],
|
|
81
|
+
[2, -1],
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
x: 0.83,
|
|
86
|
+
y: 0.16,
|
|
87
|
+
alpha: 0.2,
|
|
88
|
+
cells: [
|
|
89
|
+
[0, 0],
|
|
90
|
+
[1, 0],
|
|
91
|
+
[0, 1],
|
|
92
|
+
[1, 1],
|
|
93
|
+
[-1, 1],
|
|
94
|
+
[2, -1],
|
|
95
|
+
[1, -1],
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
x: 0.22,
|
|
100
|
+
y: 0.3,
|
|
101
|
+
alpha: 0.13,
|
|
102
|
+
cells: [
|
|
103
|
+
[0, 0],
|
|
104
|
+
[1, 0],
|
|
105
|
+
[0, 1],
|
|
106
|
+
[1, -1],
|
|
107
|
+
[-1, 1],
|
|
108
|
+
[0, 2],
|
|
109
|
+
[-1, 2],
|
|
110
|
+
[1, 1],
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
function drawComb(canvas, width, height) {
|
|
115
|
+
const context = sizeCanvas(canvas, width, height);
|
|
116
|
+
if (!context)
|
|
117
|
+
return;
|
|
118
|
+
context.strokeStyle = getComputedStyle(canvas).color;
|
|
119
|
+
context.lineWidth = 1;
|
|
120
|
+
// Pointy-top cells in axial coordinates: q along the row, r down the rows.
|
|
121
|
+
// One path per cluster, stroked once, so an edge two cells share is one line.
|
|
122
|
+
const across = Math.sqrt(3) * COMB_RADIUS;
|
|
123
|
+
for (const cluster of COMB_CLUSTERS) {
|
|
124
|
+
context.globalAlpha = cluster.alpha;
|
|
125
|
+
context.beginPath();
|
|
126
|
+
for (const [q, r] of cluster.cells) {
|
|
127
|
+
const centre = {
|
|
128
|
+
x: cluster.x * width + across * (q + r / 2),
|
|
129
|
+
y: cluster.y * height + 1.5 * COMB_RADIUS * r,
|
|
130
|
+
};
|
|
131
|
+
for (let k = 0; k <= 6; k += 1) {
|
|
132
|
+
const { x, y } = corner(k % 6, centre, COMB_RADIUS);
|
|
133
|
+
if (k === 0)
|
|
134
|
+
context.moveTo(x, y);
|
|
135
|
+
else
|
|
136
|
+
context.lineTo(x, y);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
context.stroke();
|
|
140
|
+
}
|
|
141
|
+
context.globalAlpha = 1;
|
|
142
|
+
}
|
|
143
|
+
function along(particle, t) {
|
|
144
|
+
const u = 1 - t;
|
|
145
|
+
return {
|
|
146
|
+
x: u * u * particle.from.x + 2 * u * t * particle.bend.x + t * t * particle.to.x,
|
|
147
|
+
y: u * u * particle.from.y + 2 * u * t * particle.bend.y + t * t * particle.to.y,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
function pick(items) {
|
|
151
|
+
return items[Math.floor(Math.random() * items.length)];
|
|
152
|
+
}
|
|
153
|
+
function HiveScene({ mode, logo, picture, work, chrome, label, className, children, ...props }) {
|
|
154
|
+
const sceneRef = React.useRef(null);
|
|
155
|
+
const combRef = React.useRef(null);
|
|
156
|
+
const flowRef = React.useRef(null);
|
|
157
|
+
const orbRefs = React.useRef([]);
|
|
158
|
+
const holderRefs = React.useRef([]);
|
|
159
|
+
// The words' box, kept as state so the scene places the orbs again when it appears.
|
|
160
|
+
const [column, setColumn] = React.useState(null);
|
|
161
|
+
const workRef = React.useRef(work);
|
|
162
|
+
workRef.current = work;
|
|
163
|
+
const still = mode === "still";
|
|
164
|
+
React.useEffect(() => {
|
|
165
|
+
if (still)
|
|
166
|
+
return;
|
|
167
|
+
const mounted = orbRefs.current.flatMap((canvas, index) => {
|
|
168
|
+
const agent = AGENTS[index];
|
|
169
|
+
return canvas && agent
|
|
170
|
+
? [
|
|
171
|
+
mountAgentOrb(canvas, {
|
|
172
|
+
form: agent.form,
|
|
173
|
+
size: agent.size,
|
|
174
|
+
// Artwork, not Agents at work: each form moves at its own pace and claims no activity.
|
|
175
|
+
motion: "ambient",
|
|
176
|
+
presence: "over-picture",
|
|
177
|
+
}),
|
|
178
|
+
]
|
|
179
|
+
: [];
|
|
180
|
+
});
|
|
181
|
+
return () => {
|
|
182
|
+
for (const orb of mounted)
|
|
183
|
+
orb.destroy();
|
|
184
|
+
};
|
|
185
|
+
}, [still]);
|
|
186
|
+
React.useEffect(() => {
|
|
187
|
+
const scene = sceneRef.current;
|
|
188
|
+
const comb = combRef.current;
|
|
189
|
+
const flow = flowRef.current;
|
|
190
|
+
if (!scene || !comb || !flow)
|
|
191
|
+
return;
|
|
192
|
+
const reduced = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
193
|
+
let width = 0;
|
|
194
|
+
let height = 0;
|
|
195
|
+
let context = null;
|
|
196
|
+
let seats = [];
|
|
197
|
+
const place = () => {
|
|
198
|
+
width = scene.clientWidth;
|
|
199
|
+
height = scene.clientHeight;
|
|
200
|
+
const centre = { x: width / 2, y: height / 2 };
|
|
201
|
+
const radius = cellRadius(width, height) * (mode === "loading" ? 0.62 : 1);
|
|
202
|
+
const bounds = scene.getBoundingClientRect();
|
|
203
|
+
const box = column?.getBoundingClientRect();
|
|
204
|
+
const words = box?.width
|
|
205
|
+
? {
|
|
206
|
+
left: box.left - bounds.left,
|
|
207
|
+
top: box.top - bounds.top,
|
|
208
|
+
right: box.right - bounds.left,
|
|
209
|
+
bottom: box.bottom - bounds.top,
|
|
210
|
+
}
|
|
211
|
+
: null;
|
|
212
|
+
seats = still
|
|
213
|
+
? []
|
|
214
|
+
: AGENTS.map((agent, index) => clearOfWords(corner(index, centre, radius), agent.size, words, { width, height }));
|
|
215
|
+
holderRefs.current.forEach((holder, index) => {
|
|
216
|
+
if (!holder)
|
|
217
|
+
return;
|
|
218
|
+
const seat = seats[index];
|
|
219
|
+
holder.hidden = !seat;
|
|
220
|
+
if (!seat)
|
|
221
|
+
return;
|
|
222
|
+
holder.style.left = `${seat.x}px`;
|
|
223
|
+
holder.style.top = `${seat.y}px`;
|
|
224
|
+
});
|
|
225
|
+
drawComb(comb, width, height);
|
|
226
|
+
context = sizeCanvas(flow, width, height);
|
|
227
|
+
};
|
|
228
|
+
place();
|
|
229
|
+
const resize = new ResizeObserver(place);
|
|
230
|
+
resize.observe(scene);
|
|
231
|
+
if (column)
|
|
232
|
+
resize.observe(column);
|
|
233
|
+
if (still)
|
|
234
|
+
return () => resize.disconnect();
|
|
235
|
+
const colours = orbRefs.current.map((canvas) => canvas ? getComputedStyle(canvas).color : "white");
|
|
236
|
+
const particles = [];
|
|
237
|
+
let frame = 0;
|
|
238
|
+
let last = performance.now();
|
|
239
|
+
let nextSpawn = 0;
|
|
240
|
+
const spawn = () => {
|
|
241
|
+
const source = Math.floor(Math.random() * AGENTS.length);
|
|
242
|
+
const seat = seats[source];
|
|
243
|
+
if (!seat)
|
|
244
|
+
return;
|
|
245
|
+
const others = seats.filter((other) => other !== null && other !== seat);
|
|
246
|
+
const neighbour = (source + 1 + (Math.random() < 0.5 ? 0 : 4)) % AGENTS.length;
|
|
247
|
+
const next = seats[neighbour] ?? pick(others);
|
|
248
|
+
const people = workRef.current?.({ width, height });
|
|
249
|
+
const sender = people ? pick(people.senders) : undefined;
|
|
250
|
+
const receiver = people ? pick(people.receivers) : undefined;
|
|
251
|
+
const roll = Math.random();
|
|
252
|
+
const [from, to] = roll < 0.3 && sender
|
|
253
|
+
? [sender, seat]
|
|
254
|
+
: roll < 0.6 && receiver
|
|
255
|
+
? [seat, receiver]
|
|
256
|
+
: next
|
|
257
|
+
? [seat, next]
|
|
258
|
+
: [];
|
|
259
|
+
if (!from || !to)
|
|
260
|
+
return;
|
|
261
|
+
const bend = (Math.random() - 0.5) * 120;
|
|
262
|
+
particles.push({
|
|
263
|
+
from,
|
|
264
|
+
to,
|
|
265
|
+
bend: {
|
|
266
|
+
x: (from.x + to.x) / 2 + bend,
|
|
267
|
+
y: (from.y + to.y) / 2 - Math.abs(bend),
|
|
268
|
+
},
|
|
269
|
+
t: 0,
|
|
270
|
+
speed: 0.07 + Math.random() * 0.06,
|
|
271
|
+
colour: colours[source] ?? "white",
|
|
272
|
+
size: 1.2 + Math.random() * 1.8,
|
|
273
|
+
trail: [],
|
|
274
|
+
});
|
|
275
|
+
};
|
|
276
|
+
const tick = (now) => {
|
|
277
|
+
const dt = Math.min(0.05, (now - last) / 1000);
|
|
278
|
+
last = now;
|
|
279
|
+
nextSpawn -= dt;
|
|
280
|
+
const paint = context;
|
|
281
|
+
if (paint) {
|
|
282
|
+
paint.clearRect(0, 0, width, height);
|
|
283
|
+
if (!reduced.matches && nextSpawn <= 0 && seats.length === AGENTS.length) {
|
|
284
|
+
nextSpawn = 0.3;
|
|
285
|
+
spawn();
|
|
286
|
+
}
|
|
287
|
+
for (let k = particles.length - 1; k >= 0; k -= 1) {
|
|
288
|
+
const particle = particles[k];
|
|
289
|
+
if (!particle)
|
|
290
|
+
continue;
|
|
291
|
+
particle.t += particle.speed * dt;
|
|
292
|
+
if (particle.t >= 1 || reduced.matches) {
|
|
293
|
+
particles.splice(k, 1);
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
const fade = Math.sin(particle.t * Math.PI);
|
|
297
|
+
particle.trail.push(along(particle, particle.t));
|
|
298
|
+
if (particle.trail.length > 10)
|
|
299
|
+
particle.trail.shift();
|
|
300
|
+
paint.fillStyle = particle.colour;
|
|
301
|
+
particle.trail.forEach((point, j) => {
|
|
302
|
+
const share = (j + 1) / particle.trail.length;
|
|
303
|
+
paint.globalAlpha = 0.9 * fade * share ** 2;
|
|
304
|
+
paint.beginPath();
|
|
305
|
+
paint.arc(point.x, point.y, particle.size * (0.4 + 0.6 * share), 0, Math.PI * 2);
|
|
306
|
+
paint.fill();
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
paint.globalAlpha = 1;
|
|
310
|
+
}
|
|
311
|
+
frame = requestAnimationFrame(tick);
|
|
312
|
+
};
|
|
313
|
+
frame = requestAnimationFrame(tick);
|
|
314
|
+
return () => {
|
|
315
|
+
cancelAnimationFrame(frame);
|
|
316
|
+
resize.disconnect();
|
|
317
|
+
};
|
|
318
|
+
}, [mode, still, column]);
|
|
319
|
+
return (_jsxs("div", { ...props, className: cn("nc-hive dark", className), "data-mode": mode, "data-slot": "hive-scene", ref: sceneRef, ...(mode === "loading" ? { "aria-label": label, role: "status" } : {}), children: [chrome, _jsx("img", { alt: logo.label, className: "nc-hive-logo", "data-slot": "hive-logo", src: logo.src }), picture, _jsx("canvas", { "aria-hidden": "true", className: "nc-hive-comb", ref: combRef }), _jsx("canvas", { "aria-hidden": "true", className: "nc-hive-flow", ref: flowRef }), still
|
|
320
|
+
? null
|
|
321
|
+
: AGENTS.map((agent, index) => (_jsx("div", { "aria-hidden": "true", className: "nc-hive-agent", "data-slot": "hive-agent", "data-size": agent.size, ref: (holder) => {
|
|
322
|
+
holderRefs.current[index] = holder;
|
|
323
|
+
}, children: _jsx("canvas", { ref: (canvas) => {
|
|
324
|
+
orbRefs.current[index] = canvas;
|
|
325
|
+
if (canvas && agent.colour)
|
|
326
|
+
canvas.style.color = agent.colour;
|
|
327
|
+
} }) }, agent.form))), children ? (_jsx("div", { className: "nc-hive-column", "data-slot": "hive-column", ref: setColumn, children: children })) : null] }));
|
|
328
|
+
}
|
|
329
|
+
/** The screen's one heading, in the middle of the hive. */
|
|
330
|
+
function HiveTitle({ children, id }) {
|
|
331
|
+
return (_jsx("h1", { className: "nc-hive-title", id: id, children: children }));
|
|
332
|
+
}
|
|
333
|
+
/** A line under the title saying what happened or what to do. */
|
|
334
|
+
function HiveLine({ children, id, tone = "body", }) {
|
|
335
|
+
return (_jsx("p", { className: "nc-hive-line", "data-tone": tone, id: id, children: children }));
|
|
336
|
+
}
|
|
337
|
+
export { HiveLine, HiveScene, HiveTitle };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A link drawn as a QR code another device can scan: square dark modules on a
|
|
3
|
+
* white tile in every theme, because readers expect dark on light. `label`
|
|
4
|
+
* names what the code opens; the code itself is the image.
|
|
5
|
+
*/
|
|
6
|
+
declare function QrCode({ value, label, size, className, }: {
|
|
7
|
+
value: string;
|
|
8
|
+
label: string;
|
|
9
|
+
/** The drawn width and height, in CSS pixels. */
|
|
10
|
+
size: number;
|
|
11
|
+
className?: string;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
export { QrCode };
|
|
14
|
+
//# sourceMappingURL=qr-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr-code.d.ts","sourceRoot":"","sources":["../../src/components/qr-code.tsx"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,iBAAS,MAAM,CAAC,EACd,KAAK,EACL,KAAK,EACL,IAAI,EACJ,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA0BA;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { create } from "qrcode";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
/** The blank border a reader needs around the code, in modules. */
|
|
6
|
+
const QUIET_ZONE = 4;
|
|
7
|
+
/**
|
|
8
|
+
* A link drawn as a QR code another device can scan: square dark modules on a
|
|
9
|
+
* white tile in every theme, because readers expect dark on light. `label`
|
|
10
|
+
* names what the code opens; the code itself is the image.
|
|
11
|
+
*/
|
|
12
|
+
function QrCode({ value, label, size, className, }) {
|
|
13
|
+
const { box, path } = useMemo(() => {
|
|
14
|
+
const { modules } = create(value, { errorCorrectionLevel: "M" });
|
|
15
|
+
let d = "";
|
|
16
|
+
for (let row = 0; row < modules.size; row += 1) {
|
|
17
|
+
for (let column = 0; column < modules.size; column += 1) {
|
|
18
|
+
if (modules.get(row, column))
|
|
19
|
+
d += `M${column + QUIET_ZONE} ${row + QUIET_ZONE}h1v1h-1z`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return { box: modules.size + QUIET_ZONE * 2, path: d };
|
|
23
|
+
}, [value]);
|
|
24
|
+
return (_jsx("svg", { "aria-label": label, className: cn("block rounded-md bg-nc-identity-white text-nc-identity-ink", className), "data-slot": "qr-code", height: size, role: "img", shapeRendering: "crispEdges", viewBox: `0 0 ${box} ${box}`, width: size, children: _jsx("path", { d: path, fill: "currentColor" }) }));
|
|
25
|
+
}
|
|
26
|
+
export { QrCode };
|
package/dist/index.d.ts
CHANGED
|
@@ -68,6 +68,7 @@ export * from "./components/footer.js";
|
|
|
68
68
|
export * from "./components/form-drawer.js";
|
|
69
69
|
export * from "./components/form.js";
|
|
70
70
|
export * from "./components/glass-control.js";
|
|
71
|
+
export * from "./components/hive-scene.js";
|
|
71
72
|
export * from "./components/house-icons.js";
|
|
72
73
|
export * from "./components/hover-card.js";
|
|
73
74
|
export * from "./components/input.js";
|
|
@@ -100,6 +101,7 @@ export * from "./components/plugin-slot-boundary.js";
|
|
|
100
101
|
export * from "./components/popover.js";
|
|
101
102
|
export * from "./components/portal-sidebar-frame.js";
|
|
102
103
|
export * from "./components/progress.js";
|
|
104
|
+
export * from "./components/qr-code.js";
|
|
103
105
|
export * from "./components/radio-group.js";
|
|
104
106
|
export * from "./components/reading-column.js";
|
|
105
107
|
export * from "./components/resizable.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -68,6 +68,7 @@ export * from "./components/footer.js";
|
|
|
68
68
|
export * from "./components/form-drawer.js";
|
|
69
69
|
export * from "./components/form.js";
|
|
70
70
|
export * from "./components/glass-control.js";
|
|
71
|
+
export * from "./components/hive-scene.js";
|
|
71
72
|
export * from "./components/house-icons.js";
|
|
72
73
|
export * from "./components/hover-card.js";
|
|
73
74
|
export * from "./components/input.js";
|
|
@@ -100,6 +101,7 @@ export * from "./components/plugin-slot-boundary.js";
|
|
|
100
101
|
export * from "./components/popover.js";
|
|
101
102
|
export * from "./components/portal-sidebar-frame.js";
|
|
102
103
|
export * from "./components/progress.js";
|
|
104
|
+
export * from "./components/qr-code.js";
|
|
103
105
|
export * from "./components/radio-group.js";
|
|
104
106
|
export * from "./components/reading-column.js";
|
|
105
107
|
export * from "./components/resizable.js";
|
package/dist/standalone/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export const agentOrbScript = "\"use strict\";(()=>{function U(n,e,t){return n+(e-n)*t}function at(n){return n-Math.floor(n)}function V(n,e){let t=Math.floor(n),a=Math.floor(e),o=n-t,s=e-a;o=o*o*(3-2*o),s=s*s*(3-2*s);let r=_(t,a),p=_(t+1,a),c=_(t,a+1),M=_(t+1,a+1);return r+(p-r)*o+(c-r)*s+(r-p-c+M)*o*s}function _(n,e){let t=Math.sin(n*12.9898+e*78.233)*43758.5453;return t-Math.floor(t)}function J(n,e){let t=Math.PI*(3-Math.sqrt(5)),a=1-2*(n+.5)/e,o=Math.sqrt(1-a*a),s=n*t;return[o*Math.cos(s),a,o*Math.sin(s)]}function Pt(n,e){return Math.atan2(Math.sin(n-e),Math.cos(n-e))}function j(n,e,t,a,o){let s=Math.sin(e),r=Math.cos(e),p=Math.sin(n),c=Math.cos(n);return(M,x,u)=>{let i=M*c+u*p,d=-M*p+u*c,m=x*r-d*s,f=x*s+d*r;return[t+i*o,a-m*o,f]}}function rt(n,e,t,a){if(!a){let s=Math.round((t?1-n:n)*255);return`rgba(${s},${s},${s},${e})`}let o=s=>Math.round(t?s*(1-n):s+(255-s)*n);return`rgba(${o(a.r)},${o(a.g)},${o(a.b)},${e})`}function it(n,e,t,a=.3,o){for(let s of e){let r=s.a??1,p=Math.min(1,Math.max(0,s.white));n.fillStyle=rt(p,r,t,o),n.beginPath(),n.arc(s.x,s.y,s.r,0,Math.PI*2),n.fill()}}function ct(n,e,t,a){for(let o of e){let s=o.a??1,r=Math.min(1,Math.max(0,o.white));n.strokeStyle=rt(r,s,t,a),n.lineWidth=o.w,n.beginPath(),n.moveTo(o.x1,o.y1),n.lineTo(o.x2,o.y2),n.stroke()}}function q(n,e,t=.3){let a=[];for(let o of n)(o.a??1)<.02||(o.r=Math.max(t,o.r),a.push(o));return a.sort((o,s)=>o.z-s.z),{dots:a,lines:e.filter(o=>(o.a??1)>=.02)}}function ht(n,e,t,a){e.lines.length&&ct(n,e.lines,t,a),it(n,e.dots,t,.3,a)}function $(n,e){return(n/300)**e}var St=[[\"latRings\",\"lonDensity\"],[\"rings\",\"lonDensity\"],[\"lanes\",\"segs\"]],At=[\"orbitN\",\"ghostN\",\"nodeN\",\"strandN\",\"signals\"],vt=[\"iconD\"],kt=[\"rBase\",\"rDepth\",\"rActive\",\"rDot\",\"ghostR\",\"partR\",\"partRDepth\",\"nodeR\",\"nodeRDepth\"];function Rt(n,e){let t={...n},a=new Set,o=Math.sqrt(e);for(let[s,r]of St){let p=t[s],c=t[r];p!=null&&c!=null&&!a.has(s)&&!a.has(r)&&(t[s]=Math.max(2,Math.round(p*o)),t[r]=Math.max(2,Math.round(c*o)),a.add(s),a.add(r))}for(let s of At){let r=t[s];r!=null&&r!==0&&!a.has(s)&&(t[s]=Math.max(1,Math.round(r*e)))}for(let s of vt){let r=t[s];r!=null&&(t[s]=Math.max(.02,r*e))}return t}function Dt(n,e){let t={...n};for(let a of kt){let o=t[a];o!=null&&(t[a]=o*e)}return t.rSizeMul=(t.rSizeMul??1)*e,t}var zt={globe:{latRings:17,lonDensity:44,rBase:.6,rDepth:1.7,rBoost:1,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},orbits:{orbitN:12,ghostN:40,ghostR:.9,ghostA:.5,particles:3,partR:1.2,partRDepth:1.6,rsPow:.6,rMin:.3},rubik:{latRings:15,lonDensity:40,moveCount:14,rBase:.6,rDepth:1.7,rActive:.3,inkFar:.62,inkSpan:.54,rsPow:.6,rMin:.3},wave:{rings:15,lonDensity:40,rBase:.6,rDepth:1.7,rsPow:.6,rMin:.3},web:{nodeN:30,thr:.72,signals:5,nodeR:1.4,nodeRDepth:1.8,lineW:.8,rsPow:.6,rMin:.3},braid:{strandN:52,turns:3,ghostN:150,rBase:1.2,rDepth:1.8,rsPow:.6,rMin:.3},ribbon:{lanes:5,segs:88,ghostN:150,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},ring:{lanes:5,segs:88,ghostN:0,faceOn:1,rBase:1.1,rDepth:1.7,rsPow:.6,rMin:.3},morph:{rDot:.021,iconD:1,rMin:.25}},It=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.76,r=j(e*.4,.3,a,o,1),p=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let i=0;i<M;i++){let d=J(i,M),[m,f,h]=r(d[0]*s,d[1]*s,d[2]*s),b=(h/s+1)/2;c.push({x:m,y:f,z:h,r:.8*p,white:.78,a:.1+.22*b})}let x=t.strandN??52,u=t.turns??3;for(let i=0;i<3;i++){let d=i/3*2*Math.PI;for(let m=0;m<x;m++){let f=(at(m/x+e*.045)*2-1)*.96,h=Math.sqrt(Math.max(0,1-f*f)),b=Math.min(1,(1-Math.abs(f))/.1),y=f*Math.PI*u+d,l=1+.075*Math.sin(f*Math.PI*u*2+d*2+e*.8),w=h*s*l,[g,S,O]=r(Math.cos(y)*w,f*s*l,Math.sin(y)*w),P=(O/s+1)/2;c.push({x:g,y:S,z:O,r:((t.rBase??1.2)+(t.rDepth??1.8)*P)*p,white:.55-.45*P,a:b*(.45+.55*P)})}}return q(c,[],t.rMin)};function Ct(n,e,t,a){let o=2*e*t+a,s=n%o,r=new Array(e).fill(0),p=-1;if(s<2*e*t){let c=Math.floor(s/t),M=(s-c*t)/t,u=1-(1-Math.min(1,M/.7))**3;if(c<e){for(let i=0;i<c;i++)r[i]=1;r[c]=u,p=c}else{let i=2*e-1-c;for(let d=0;d<i;d++)r[d]=1;r[i]=1-u,p=i}}return{amount:r,active:p}}function Et(n,e,t){let[a,o,s]=n,r=!1;for(let p=0;p<e.length;p++){if(t.amount[p]<=0)continue;let c=e[p],M=c.axis===0?a:c.axis===1?o:s;if(M<c.lo||M>=c.hi)continue;p===t.active&&(r=!0);let x=c.ang*t.amount[p],u=Math.cos(x),i=Math.sin(x);if(c.axis===0){let d=o*u-s*i;s=o*i+s*u,o=d}else if(c.axis===1){let d=a*u+s*i;s=-a*i+s*u,a=d}else{let d=a*u-o*i;o=a*i+o*u,a=d}}return[a,o,s,r]}function Ft(n){let e=[];for(let t=0;t<n;t++){let a=Math.min(2,Math.floor(_(t,2.3)*3)),o=-1+.5*Math.min(3,Math.floor(_(t,5.9)*4)),s=_(t,7.7)<.5?1:-1;e.push({axis:a,lo:o,hi:o+.5,ang:s*Math.PI/2})}return e}var Nt=(n,e,t)=>{let o=n/2,s=n/2,r=n/2*.82,p=.4+.06*Math.sin(e*.35),c=j(e*.5,p,o,s,r),M=e*(.5+(1.7-.5)*(t.scanMul??1)),x=$(n,t.rsPow??.6),u=t.dimBase??1,i=[],d=t.latRings??17,m=t.lonDensity??44;for(let f=0;f<=d;f++){let h=-Math.PI/2+f/d*Math.PI,b=Math.cos(h),y=Math.sin(h),l=Math.max(1,Math.round(Math.abs(b)*m));for(let w=0;w<l;w++){let g=w/l*2*Math.PI,[S,O,P]=c(b*Math.cos(g),y,b*Math.sin(g)),v=(P+1)/2,R=Pt(g+e*.5,M),k=Math.exp(-(R*R)/.18)*Math.max(0,P);i.push({x:S,y:O,z:P,r:((t.rBase??.6)+(t.rDepth??1.7)*v+(t.rBoost??1)*k)*x,white:(t.inkFar??.62)-(t.inkSpan??.54)*v,a:u+(1-u)*Math.min(1,k)})}}return q(i,[],t.rMin)},Bt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.55,.35+.1*Math.sin(e*.9),a,o,s),p=$(n,t.rsPow??.6),c=t.moveCount??14,M=Ft(c),x=Ct(e,c,.42,1.2),u=[],i=t.latRings??15,d=t.lonDensity??40;for(let m=0;m<=i;m++){let f=-Math.PI/2+m/i*Math.PI,h=Math.cos(f),b=Math.sin(f),y=Math.max(1,Math.round(Math.abs(h)*d));for(let l=0;l<y;l++){let w=l/y*2*Math.PI,[g,S,O,P]=Et([h*Math.cos(w),b,h*Math.sin(w)],M,x),[v,R,k]=r(g,S,O),D=(k+1)/2;u.push({x:v,y:R,z:k,r:((t.rBase??.6)+(t.rDepth??1.7)*D+(P?t.rActive??.3:0))*p,white:(t.inkFar??.62)-(t.inkSpan??.54)*D-(P?.14:0)})}}return q(u,[],t.rMin)},Lt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.874,r=j(e*.18,.38,a,o,1),p=$(n,t.rsPow??.6),c=[],M=t.rings??15,x=t.lonDensity??40;for(let u=0;u<=M;u++){let i=-Math.PI/2+u/M*Math.PI,d=Math.cos(i),m=Math.sin(i),f=.62*Math.sin(e*2.1-u*.52)+.38*Math.sin(e*1.27+u*.83),h=s*(.88+.105*f),b=Math.max(1,Math.round(Math.abs(d)*x));for(let y=0;y<b;y++){let l=y/b*2*Math.PI,[w,g,S]=r(d*Math.cos(l)*h,m*h,d*Math.sin(l)*h),O=(S/s+1)/2,P=Math.max(0,f);c.push({x:w,y:g,z:S,r:((t.rBase??.6)+(t.rDepth??1.7)*O)*(1+.4*P)*p,white:.66-.56*O-.1*P})}}return q(c,[],t.rMin)};function Tt(n){return n*n*(3-2*n)}function lt(n){let e=n.length,t=[],a=0;for(let o=0;o<e;o++){let s=n[o],r=n[(o+1)%e],p=Math.hypot(r[0]-s[0],r[1]-s[1]);t.push(p),a+=p}return o=>{let s=o*a,r=0;for(;s>t[r]&&r<e-1;)s-=t[r],r++;let p=n[r],c=n[(r+1)%e],M=t[r]?Math.min(1,s/t[r]):0;return[p[0]+(c[0]-p[0])*M,p[1]+(c[1]-p[1])*M]}}var _t=n=>{let e=-Math.PI/2+n*2*Math.PI;return[Math.cos(e)*.24,Math.sin(e)*.24]},qt=lt([[0,-.26],[.24,.16],[-.24,.16]]),jt=lt([[0,-.2],[.2,-.2],[.2,.2],[-.2,.2],[-.2,-.2]]),Q=[_t,qt,jt];function $t(n){return Math.max(6,Math.round(34*n))}var X=1.4,ut=.9,Y=X+ut,Wt=(n,e,t)=>{let a=Q.length,o=e%(Y*a),s=t.shape!=null&&t.shape>=0&&t.shape<a?Math.floor(t.shape):-1,r=s>=0?s:Math.floor(o/Y),p=s>=0?e%Y:o-r*Y,c=s>=0?0:p>X?Tt((p-X)/ut):0,M=t.spread??1,x=Q[r],u=s>=0?x:Q[(r+1)%a],i=160,d=[];for(let O=0;O<i;O++){let P=O/i,v=x(P),R=u(P);d.push([(v[0]+(R[0]-v[0])*c)*M,(v[1]+(R[1]-v[1])*c)*M])}let m=[],f=0;for(let O=0;O<i;O++){let P=d[O],v=d[(O+1)%i],R=Math.hypot(v[0]-P[0],v[1]-P[1]);m.push(R),f+=R}let h=$t(t.iconD??1),b=(t.rDot??.021)*1.35*M,y=1+.02*Math.sin(p*3.1),l=[],w=n/2,g=0,S=0;for(let O=0;O<h;O++){let P=O/h*f;for(;S+m[g]<P&&g<i-1;)S+=m[g],g++;let v=d[g],R=d[(g+1)%i],k=m[g]?Math.min(1,(P-S)/m[g]):0,D=(v[0]+(R[0]-v[0])*k)*y,C=(v[1]+(R[1]-v[1])*k)*y;l.push({x:w+D*n,y:w+C*n,z:0,r:Math.max(.35,b*n),white:.1})}return q(l,[],t.rMin)},Kt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.82,r=j(e*.12,.3,a,o,1),p=$(n,t.rsPow??.6),c=[],M=t.orbitN??12,x=t.ghostN??40,u=t.particles??3;for(let i=0;i<M;i++){let d=_(i,1.7),m=_(i,5.2),f=_(i,8.9),h=s*(.45+.52*d),b=d*2*Math.PI,y=Math.acos(2*m-1),l=Math.sin(y)*Math.cos(b),w=Math.cos(y),g=Math.sin(y)*Math.sin(b),S=-w,O=l,P=0,v=Math.max(1e-6,Math.sqrt(S*S+O*O));S/=v,O/=v;let R=w*P-g*O,k=g*S-l*P,D=l*O-w*S,C=(.25+.55*f)*(f>.5?1:-1);for(let E=0;E<x;E++){let z=E/x*2*Math.PI,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(O*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:(t.ghostR??.9)*p,white:.72,a:(t.ghostA??.5)*(.4+.6*B)})}for(let E=0;E<u;E++){let z=e*C+E/u*2*Math.PI+m*6,[F,N,L]=r((S*Math.cos(z)+R*Math.sin(z))*h,(O*Math.cos(z)+k*Math.sin(z))*h,(P*Math.cos(z)+D*Math.sin(z))*h),B=(L/h+1)/2;c.push({x:F,y:N,z:L,r:((t.partR??1.2)+(t.partRDepth??1.6)*B)*p,white:.3-.22*B})}}return q(c,[],t.rMin)},st=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.78,r=t.spin??1,p=.3,c=j(e*.1*r,p,a,o,1),M=$(n,t.rsPow??.6),x=[],u=t.ghostN??150;for(let D=0;D<u;D++){let C=J(D,u),[E,z,F]=c(C[0]*s,C[1]*s,C[2]*s),N=(F/s+1)/2;x.push({x:E,y:z,z:F,r:.8*M,white:.78,a:.1+.22*N})}let i=e*.24*r,d=t.faceOn?-p:.55+.3*Math.sin(e*.18)*r,m=Math.cos(i),f=0,h=Math.sin(i),b=-h*Math.sin(d),y=Math.cos(d),l=m*Math.sin(d),w=f*l-h*y,g=h*b-m*l,S=m*y-f*b,O=.23*(t.wobMul??1),P=t.faceOn?s/(1+.85*O):s,v=t.lanes??5,R=t.segs??88,k=Math.max(1,Math.round(v*(t.bandMul??1)));for(let D=0;D<k;D++){let C=(D-(k-1)/2)*.075,E=Math.abs(D-(k-1)/2)/Math.max(1,(k-1)/2);for(let z=0;z<R;z++){let F=z/R*2*Math.PI,N=(.16*Math.sin(F*3-e*1.7+D*.22)+.07*Math.sin(F*5+e*1.1))*(t.wobMul??1),L=t.faceOn?1+N:1,B=t.faceOn?C:C+N,A=m*Math.cos(F)+b*Math.sin(F)+w*B,I=f*Math.cos(F)+y*Math.sin(F)+g*B,T=h*Math.cos(F)+l*Math.sin(F)+S*B,W=Math.sqrt(A*A+I*I+T*T),K=P*L,[wt,Ot,et]=c(A/W*K,I/W*K,T/W*K),G=(et/s+1)/2;x.push({x:wt,y:Ot,z:et,r:((t.rBase??1.1)+(t.rDepth??1.7)*G)*(1-.25*E)*M,white:.52-.44*G+.18*E,a:.4+.6*G})}}return q(x,[],t.rMin)},Yt=(n,e,t)=>{let a=n/2,o=n/2,s=n/2*.8*(t.spread??1),r=j(e*.12,.32,a,o,s),p=$(n,t.rsPow??.6),c=t.nodeN??30,M=t.thr??.72,x=t.nodeR??1.4,u=t.nodeRDepth??1.8,i=[];for(let h=0;h<c;h++){let b=J(h,c),y=b[0]+.3*(V(h*.31+9,e*.24)-.5)*2,l=b[1]+.3*(V(h*.53+27,e*.21)-.5)*2,w=b[2]+.3*(V(h*.77+55,e*.27)-.5)*2,g=Math.sqrt(y*y+l*l+w*w);i.push([y/g,l/g,w/g])}let d=[],m=[];for(let h=0;h<c;h++)for(let b=h+1;b<c;b++){let y=i[h][0]-i[b][0],l=i[h][1]-i[b][1],w=i[h][2]-i[b][2],g=Math.sqrt(y*y+l*l+w*w);if(g>=M)continue;let[S,O,P]=r(i[h][0],i[h][1],i[h][2]),[v,R,k]=r(i[b][0],i[b][1],i[b][2]),D=((P+k)/2+1)/2;d.push({x1:S,y1:O,x2:v,y2:R,white:.42,a:(1-g/M)*(.3+.55*D),w:Math.max(.6,(t.lineW??.8)*p)})}for(let h=0;h<c;h++){let[b,y,l]=r(i[h][0],i[h][1],i[h][2]),w=(l+1)/2,g=1+.25*Math.sin(e*1.4+h*2.7);m.push({x:b,y,z:l,r:(x+u*w)*g*p,white:.55-.45*w})}let f=t.signals??5;for(let h=0;h<f;h++){let b=Math.floor(e*.55+h*7.31),y=Math.floor(_(b,h*3.1+1.7)*c),l=Math.floor(_(b,h*5.7+4.2)*c);if(y===l)continue;let w=at(e*.55+h*7.31),g=U(i[y][0],i[l][0],w),S=U(i[y][1],i[l][1],w),O=U(i[y][2],i[l][2],w),P=Math.max(1e-6,Math.sqrt(g*g+S*S+O*O)),[v,R,k]=r(g/P,S/P,O/P),D=(k+1)/2;m.push({x:v,y:R,z:k,r:(x*1.5+u*D)*p,white:.05,a:.5+.5*D})}return q(m,d,t.rMin)},H={orbits:Kt,globe:Nt,rubik:Bt,wave:Lt,web:Yt,braid:It,ribbon:st,ring:st,morph:Wt},Ht=Object.fromEntries(Object.entries(H).map(([n,e])=>[n,(t,a,o,s,r)=>ht(t,e(a,o,r),s)])),pt={working:\"orbits\",searching:\"globe\",solving:\"rubik\",listening:\"wave\",connecting:\"web\",weaving:\"braid\",composing:\"ribbon\",breathing:\"ring\",shaping:\"morph\"},Gt={orbits:{64:{speed:1.885,count:1,size:1},32:{speed:2.9072,count:.4251,size:1.6849},20:{speed:3.9,count:.238,size:2.4}},globe:{64:{speed:2.015,count:.42,size:1.15,extra:{scanMul:4.08,dimBase:.45}},32:{speed:2.3803,count:.1839,size:1.4769,extra:{scanMul:4.2301,dimBase:.45}},20:{speed:2.665,count:.105,size:1.75,extra:{scanMul:4.335,dimBase:.45}}},rubik:{64:{speed:1.82,count:.35,size:1.05},32:{speed:1.8964,count:.1537,size:1.4951},20:{speed:1.95,count:.088,size:1.9}},wave:{64:{speed:4.388,count:.341,size:1},32:{speed:4.1512,count:.169,size:1.3232},20:{speed:3.998,count:.105,size:1.6}},web:{64:{speed:3.315,count:1.35,size:.95},32:{speed:5.0104,count:.4942,size:1.2571},20:{speed:6.63,count:.25,size:1.52}},braid:{64:{speed:1.625,count:.5,size:1},32:{speed:2.2234,count:.2056,size:1.2011},20:{speed:2.75,count:.1125,size:1.36}},ribbon:{64:{speed:2.34,count:.25,size:.85,extra:{spin:0,bandMul:3.9,wobMul:1}},32:{speed:2.7776,count:.0969,size:.9766,extra:{spin:0,bandMul:4.49,wobMul:1}},20:{speed:3.12,count:.051,size:1.073,extra:{spin:0,bandMul:4.94,wobMul:1}}},ring:{64:{speed:3.24,count:.25,size:.956,extra:{spin:0,bandMul:3.627,wobMul:.368}},32:{speed:3.5517,count:.0678,size:1.31,extra:{spin:0,bandMul:3.8265,wobMul:.4751}},20:{speed:3.78,count:.028,size:1.622,extra:{spin:0,bandMul:3.968,wobMul:.565}}},morph:{64:{speed:2.405,count:.702,size:.395,extra:{spread:1.45}},32:{speed:2.2057,count:.5937,size:.6916,extra:{spread:1.45}},20:{speed:2.08,count:.53,size:1.011,extra:{spread:1.45}}}},ot=new Map;function Z(n,e){let t=`${n}-${e}`,a=ot.get(t);if(a)return a;let o=pt[n],s=Gt[o][e],r={...zt[o]};s.count!==1&&(r=Rt(r,s.count)),s.size!==1&&(r=Dt(r,s.size)),s.extra&&(r={...r,...s.extra});let p={mode:o,speed:s.speed,opts:r};return ot.set(t,p),p}var dt={ribbon:{speed:.55,tilt:.15},nadia:{speed:.55,tilt:.15},sofia:{speed:.55,tilt:-.15},lattice:{speed:.28,tilt:-.12},orbit:{speed:.7,tilt:.2},globe:{speed:.35,tilt:-.16},network:{speed:.55,tilt:.1},braid:{speed:.65,tilt:-.2},morph:{speed:.9,tilt:.12}};function tt(n){return dt[n].speed}function Mt(n,e){return{idle:1,working:1,thinking:1,waiting:0,blocked:0,done:.65}[n]*tt(e)}var Ut=1.6;function ft(n,e){return n!==\"thinking\"&&n!==\"working\"?1:1-.55*((1-Math.cos(e*Math.PI*2/Ut))/2)}function bt(n,e,t){let a=dt[n],o=.82,s=.82,r=0,p=0,c=0,M=0,x=1;if(e===\"idle\"){let u=Math.sin(t*Math.PI/2);o+=u*.01,s+=u*.01,r=-u*.004}else if(e===\"waiting\")o=.8,s=.84,r=-.015,x=.75;else if(e===\"blocked\"){let u=Math.min(1,t/.25),i=Math.sin(u*Math.PI);o=.8+i*.015,s=.82-u*.08,r=u*.025-i*.018,c=a.tilt*u*.4,x=1-u*.4}else if(e===\"done\"){if(t<.18){let u=Math.sin(Math.PI*t/.18);o+=.03*u,s-=.04*u,r=.012*u}else if(t<1.3){let u=(t-.18)/1.12;r=-.07*Math.sin(Math.PI*u),o+=.025*Math.sin(Math.PI*u),s+=.035*Math.sin(Math.PI*u),c=Math.sin(u*Math.PI*2)*.07}}return{sx:o,sy:s,x:p,y:r,rotation:c,split:M,opacity:x}}function nt(n,e,t,a,o,s,r,p=1){if(!(e!==\"working\"&&e!==\"thinking\"&&e!==\"done\")){if(n.save(),e===\"thinking\"){if(r===\"front\")for(let c=0;c<3;c++){let M=o?.5:(1+Math.cos(a*Math.PI*2/3.6-c*Math.PI*2/3))/2,x=s[c%s.length];x!==void 0&&(n.fillStyle=x),n.globalAlpha=(.65+M*.35)*p,n.beginPath(),n.arc(t*(.5+(c-1)*.09),t*.08,Math.max(1,t*(.022+M*.005)),0,Math.PI*2),n.fill()}}else if(e===\"working\"||!o&&a<3.1){let c=e===\"done\"?3:1;for(let M=0;M<c;M++){let x=e===\"done\"?(a-M*.38)/2.2:0;if(x<0||x>1)continue;let u=e===\"done\"?Math.sin(x*Math.PI):1,i=(o?.8:a*Math.PI*2/7.2)+M*2.1,d=Math.PI*1.4,m=-.38+M*.4,f=t*(.44+x*.03),h=t*(.19+x*.11),b=l=>{let w=Math.cos(l)*f,g=Math.sin(l)*h;return[t/2+w*Math.cos(m)-g*Math.sin(m),t/2+w*Math.sin(m)+g*Math.cos(m)]},y=n.createLinearGradient(t*.1,t*.7,t*.9,t*.3);s.forEach((l,w)=>y.addColorStop(w/Math.max(1,s.length-1),l)),n.strokeStyle=y,n.lineCap=\"butt\";for(let l=0;l<100;l++){let w=l/100,g=i-d+d*w,S=Math.sin(g)>=0;if(S!==(r===\"front\"))continue;let O=Math.sin(Math.PI*(.04+w*.92));n.globalAlpha=u*(S?.92:.55)*(.25+O*.75)*p,n.lineWidth=Math.max(.65,t*.027*O),n.beginPath(),n.moveTo(...b(g)),n.lineTo(...b(g+d/100)),n.stroke()}}}n.restore()}}var Vt={orbit:\"working\",globe:\"searching\",lattice:\"solving\",network:\"connecting\",braid:\"weaving\",ribbon:\"composing\",morph:\"shaping\"},Qt={plain:{alpha:1,radius:1},\"over-picture\":{alpha:2.3,radius:1.9}},mt=[\"--nc-identity-azzurro\",\"--nc-identity-verde\",null,\"--nc-identity-rosso\"],yt=[\"--nc-chart-5\",\"--nc-chart-6\",\"--nc-warning\",\"--nc-chart-4\"],Xt=[...yt,...mt.filter(n=>n!==null)],Jt=[\"--nc-identity-cobalto\",\"--nc-identity-giallo\",null,\"--nc-identity-arancio\"],Zt={nadia:mt,sofia:Jt};function tn(n,e){let t=1-2*(n+.5)/e,a=Math.sqrt(1-t*t),o=n*Math.PI*(3-Math.sqrt(5));return[a*Math.cos(o),t,a*Math.sin(o)]}function gt(n,e,t){let a=n/2,o=n/2*.78,s=t.spin??1,r=j(e*.1*s,.3,a,a,1),p=$(n,t.rsPow??.6),c=[],M=t.ghostN??150;for(let v=0;v<M;v++){let[R,k,D]=tn(v,M),[C,E,z]=r(R*o,k*o,D*o);c.push({x:C,y:E,z,r:.8*p,white:.78,a:.1+.22*((z/o+1)/2)})}let x=e*.24*s,u=t.faceOn?-.3:.55+.3*Math.sin(e*.18)*s,[i,d,m]=[Math.cos(x),0,Math.sin(x)],[f,h,b]=[-m*Math.sin(u),Math.cos(u),i*Math.sin(u)],[y,l,w]=[d*b-m*h,m*f-i*b,i*h-d*f],g=t.wobMul??1,S=t.faceOn?o/(1+.85*.23*g):o,O=t.segs??88,P=Math.max(1,Math.round((t.lanes??5)*(t.bandMul??1)));for(let v=0;v<P;v++){let R=(v-(P-1)/2)*.075,k=Math.abs(v-(P-1)/2)/Math.max(1,(P-1)/2);for(let D=0;D<O;D++){let C=D/O*2*Math.PI,E=(.16*Math.sin(C*3-e*1.7+v*.22)+.07*Math.sin(C*5+e*1.1))*g,z=t.faceOn?1+E:1,F=t.faceOn?R:R+E,N=i*Math.cos(C)+f*Math.sin(C)+y*F,L=d*Math.cos(C)+h*Math.sin(C)+l*F,B=m*Math.cos(C)+b*Math.sin(C)+w*F,A=Math.sqrt(N*N+L*L+B*B),[I,T,W]=r(N/A*S*z,L/A*S*z,B/A*S*z),K=(W/o+1)/2;c.push({x:I,y:T,z:W,r:((t.rBase??1.1)+(t.rDepth??1.7)*K)*(1-.25*k)*p,white:.08+.1*k,a:.55+.45*K,stripe:Math.min(3,Math.floor(v/P*4))})}}return q(c,[],t.rMin)}function nn(n,e){for(let t of n.dots)t.x=e-t.x;return n}function en(n,e){let{form:t,size:a,seconds:o,color:s,state:r,age:p,reduced:c,breath:M,celebrationColors:x,stripeColors:u}=e,i=Qt[e.presence],d=Z(Vt[t===\"nadia\"||t===\"sofia\"?\"ribbon\":t],a<=32?20:64),m=t===\"nadia\"?gt(a,o,d.opts):t===\"sofia\"?nn(gt(a,o,d.opts),a):H[d.mode](a,o,d.opts);n.clearRect(0,0,a,a);let f=bt(t,e.motion===\"ambient\"?\"idle\":r,c?r===\"done\"?2:.6:p),h=c?.8:p/(r===\"done\"?.575:.2875),b=(l,w)=>{let g=(l-a/2)*f.sx,S=(w-a/2)*f.sy;return[a/2+g*Math.cos(f.rotation)-S*Math.sin(f.rotation)+(f.x+Math.sign(g)*f.split)*a,a/2+g*Math.sin(f.rotation)+S*Math.cos(f.rotation)+f.y*a]},y=f.opacity*M;e.motion===\"status\"&&nt(n,r,a,h,c,x,\"back\",M),n.fillStyle=s,n.strokeStyle=s;for(let l of m.lines)n.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*y*i.alpha)),n.lineWidth=l.w*i.radius,n.beginPath(),n.moveTo(...b(l.x1,l.y1)),n.lineTo(...b(l.x2,l.y2)),n.stroke();for(let l of m.dots)n.fillStyle=l.stripe===void 0?s:u[l.stripe]??s,n.globalAlpha=Math.min(1,Math.max(0,(1-l.white)*(l.a??1)*y*i.alpha)),n.beginPath(),n.arc(...b(l.x,l.y),l.r*i.radius,0,Math.PI*2),n.fill();n.globalAlpha=1,e.motion===\"status\"&&nt(n,r,a,h,c,x,\"front\",M)}function xt(n,e){let{form:t,presence:a=\"plain\"}=e,o=n.getContext(\"2d\");if(!o)return{destroy(){},setPaused(A){},setState(A){}};let s=window.matchMedia(\"(prefers-reduced-motion: reduce)\"),r=e.paused??!1,p=!0,c=!1,M=0,x=.6,u=0,i=0,d=e.state??\"idle\",m=e.motion??\"status\",f=null,h=0,b=1,y=e.size,l=getComputedStyle(n).color,w=[l],g=[l],S=\"\";function O(){let A=n.getBoundingClientRect(),I=Math.min(A.width,A.height);return I>0?I:e.size}function P(){!o||c||!n.isConnected||(o.setTransform(b,0,0,b,0,0),en(o,{form:t,size:y,seconds:x,color:l,state:d,age:u,reduced:s.matches,breath:s.matches?ft(d,i):1,presence:a,motion:m,celebrationColors:w,stripeColors:g}))}function v(){return c||!n.isConnected||!p||document.hidden||r?!1:s.matches?m===\"status\"&&(d===\"thinking\"||d===\"working\"):m===\"ambient\"?!0:d!==\"waiting\"&&!(d===\"blocked\"&&u>=.3)}function R(A){if(M=0,!!v()){if(f!==null){let I=Math.min((A-f)/1e3,.1);s.matches?i+=I:(x+=I*(m===\"ambient\"?tt(t):Mt(d,t)),m===\"status\"&&(u+=I*(d===\"done\"?.575:.2875)),d===\"done\"&&u>=1.8&&(d=\"idle\",u=0))}f=A,A-h>=1e3/30&&(P(),h=A),M=requestAnimationFrame(R)}}function k(){cancelAnimationFrame(M),M=0,f=null,P(),v()&&(M=requestAnimationFrame(R))}function D(A){let I=document.createElement(\"span\");I.hidden=!0,I.style.color=A,(n.parentElement??document.body).append(I);let T=getComputedStyle(I).color;return I.remove(),T||l}function C(A,I){return[I,window.devicePixelRatio||1,A.color,...Xt.map(T=>A.getPropertyValue(T))].join(\"|\")}function E(){C(getComputedStyle(n),O())!==S&&z()}function z(){if(c||!n.isConnected)return;y=O();let A=Math.max(1,Math.round(y*Math.min(window.devicePixelRatio||1,2)));n.width=A,n.height=A,b=A/y;let I=getComputedStyle(n);S=C(I,y),l=I.color,w=yt.map(T=>D(`color-mix(in oklch, ${I.getPropertyValue(T).trim()||l} 75%, white)`)),g=(Zt[t]??[]).map(T=>T&&I.getPropertyValue(T).trim()||l),k()}let F=new IntersectionObserver(([A])=>{p=A?.isIntersecting??!1,k()});F.observe(n);let N=new MutationObserver(E);for(let A=n;A;A=A.parentElement)N.observe(A,{attributes:!0,attributeFilter:[\"class\",\"style\",\"data-theme\"]});let L=new ResizeObserver(()=>{Math.abs(O()-y)>=.5&&z()});L.observe(n);function B(A){A.propertyName===\"color\"&&A.target instanceof Node&&A.target.contains(n)&&E()}return document.addEventListener(\"transitionend\",B,!0),s.addEventListener(\"change\",k),document.addEventListener(\"visibilitychange\",k),window.addEventListener(\"resize\",E),z(),{setState(A){d=A,u=0,i=0,k()},setPaused(A){r=A,k()},destroy(){c=!0,cancelAnimationFrame(M),F.disconnect(),N.disconnect(),L.disconnect(),document.removeEventListener(\"transitionend\",B,!0),s.removeEventListener(\"change\",k),document.removeEventListener(\"visibilitychange\",k),window.removeEventListener(\"resize\",E)}}}for(let n of document.querySelectorAll(\"canvas[data-agent-orb]\"))xt(n,{form:n.dataset.agentOrb,size:Number(n.dataset.size),state:n.dataset.state??\"idle\"});})();\n";
|
|
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.1776 0.0000 0.00);\n --nc-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-action-hover: oklch(0.3012 0.0000 0.00);\n --nc-action-active: oklch(0.0000 0.0000 0.00);\n --nc-ink: oklch(0.1776 0.0000 0.00);\n --nc-body: oklch(0.3867 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.9761 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.0000 0.0000 0.00);\n --nc-link: oklch(0.4815 0.1209 154.24);\n --nc-link-deep: oklch(0.3852 0.0953 154.99);\n --nc-link-bg-soft: oklch(0.9170 0.0519 161.77);\n --nc-info: oklch(0.5005 0.2804 266.17);\n --nc-info-soft: oklch(0.9457 0.0259 276.40);\n --nc-info-deep: oklch(0.3197 0.1758 266.79);\n --nc-success: oklch(0.6415 0.1644 153.23);\n --nc-success-soft: oklch(0.9170 0.0519 161.77);\n --nc-success-deep: oklch(0.3852 0.0953 154.99);\n --nc-error: oklch(0.5688 0.1995 26.59);\n --nc-error-soft: oklch(0.9522 0.0207 17.52);\n --nc-error-deep: oklch(0.4235 0.1525 27.08);\n --nc-warning: oklch(0.8466 0.1678 84.63);\n --nc-warning-soft: oklch(0.9649 0.0461 90.87);\n --nc-warning-deep: oklch(0.4834 0.0995 82.44);\n --nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00);\n --nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00);\n --nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00);\n --nc-state-ready: oklch(0.5278 0.0000 0.00);\n --nc-state-running: oklch(0.5005 0.2804 266.17);\n --nc-state-review: oklch(0.8466 0.1678 84.63);\n --nc-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-identity-verde: oklch(0.6415 0.1644 153.23);\n --nc-identity-rosso: oklch(0.5688 0.1995 26.59);\n --nc-identity-arancio: oklch(0.6824 0.2108 37.70);\n --nc-identity-giallo: oklch(0.8466 0.1678 84.63);\n --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);\n --nc-identity-azzurro: oklch(0.5618 0.2019 258.24);\n --nc-identity-ink: oklch(0.0000 0.0000 0.00);\n --nc-identity-white: oklch(1.0000 0.0000 0.00);\n --nc-logo-dot: oklch(0.5005 0.2804 266.17);\n --nc-chart-1: oklch(0.5005 0.2804 266.17);\n --nc-chart-2: oklch(0.6415 0.1644 153.23);\n --nc-chart-3: oklch(0.7638 0.1562 86.86);\n --nc-chart-4: oklch(0.5688 0.1995 26.59);\n --nc-chart-5: oklch(0.6161 0.1062 208.85);\n --nc-chart-6: oklch(0.5015 0.1883 294.99);\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.2264 0.0000 0.00);\n --nc-dark-material-raised: oklch(0.2520 0.0000 0.00);\n --nc-dark-material-floating: oklch(0.2686 0.0000 0.00);\n --nc-dark-material-modal: oklch(0.2686 0.0000 0.00);\n --nc-dark-ink: oklch(0.9461 0.0000 0.00);\n --nc-dark-body: oklch(0.8297 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.9461 0.0000 0.00);\n --nc-dark-action-foreground: oklch(0.1448 0.0000 0.00);\n --nc-dark-action-hover: oklch(0.8761 0.0000 0.00);\n --nc-dark-action-active: oklch(0.8297 0.0000 0.00);\n --nc-dark-link: oklch(0.7661 0.1498 157.10);\n --nc-dark-link-deep: oklch(0.8524 0.0996 159.83);\n --nc-dark-link-bg-soft: oklch(0.2893 0.0697 156.32);\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.5923 0.2215 269.61);\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.5923 0.2215 269.61);\n --nc-dark-chart-2: oklch(0.6415 0.1644 153.23);\n --nc-dark-chart-3: oklch(0.8939 0.1387 90.47);\n --nc-dark-chart-4: oklch(0.6627 0.1685 23.66);\n --nc-dark-chart-5: oklch(0.7820 0.1247 190.99);\n --nc-dark-chart-6: oklch(0.6297 0.1321 299.36);\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: 32px;\n --nc-control-padding-inline: 10px;\n --nc-touch-target: 44px;\n --nc-rounded-none: 0px;\n --nc-rounded-xs: 2px;\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: 500;\n --nc-type-display-xl-line-height: 74px;\n --nc-type-display-xl-letter-spacing: -2.52px;\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: 52px;\n --nc-type-display-lg-font-weight: 500;\n --nc-type-display-lg-line-height: 54px;\n --nc-type-display-lg-letter-spacing: -1.5px;\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: 500;\n --nc-type-display-md-line-height: 42px;\n --nc-type-display-md-letter-spacing: -1px;\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: 30px;\n --nc-type-heading-lg-font-weight: 600;\n --nc-type-heading-lg-line-height: 32px;\n --nc-type-heading-lg-letter-spacing: 0px;\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: 0px;\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: 28px;\n --nc-type-heading-sm-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: 27px;\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: 25px;\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-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-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: 20px;\n --nc-type-code-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: 500;\n --nc-type-label-mono-line-height: 16px;\n --nc-type-label-mono-letter-spacing: 0px;\n --nc-material-scrim-opacity: 50%;\n --nc-material-glass-opacity: 60%;\n --nc-material-glass-saturation: 180%;\n --nc-material-glass-blur: 20px;\n --nc-elevation-resting:\n 0px 1px 2px 0px rgb(0% 0% 0% / 0.1),\n 0px 12px 24px -6px rgb(3.9% 7.8% 35.3% / 0.3),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-raised:\n 0px 2px 4px 0px rgb(0% 0% 0% / 0.1),\n 0px 24px 48px -12px rgb(3.9% 7.8% 35.3% / 0.35),\n 0px 64px 128px -32px rgb(3.9% 7.8% 35.3% / 0.45),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-floating:\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 2px 4px 0px rgb(0% 0% 0% / 0.1),\n 0px 32px 64px -16px rgb(3.9% 7.8% 35.3% / 0.4),\n 0px 80px 160px -40px rgb(3.9% 7.8% 35.3% / 0.5),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-modal:\n 0px 2px 4px 0px rgb(0% 0% 0% / 0.1),\n 0px 40px 80px -20px rgb(3.9% 7.8% 35.3% / 0.45),\n 0px 96px 192px -48px rgb(3.9% 7.8% 35.3% / 0.55),\n 0px 0px 0px 1px 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-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-elevation-resting:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.08),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.11),\n 0px 1px 2px 0px rgb(0% 0% 0% / 0.6),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.8);\n --nc-elevation-raised:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.11),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.14),\n 0px 16px 32px -8px rgb(0% 0% 0% / 0.6),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.8);\n --nc-elevation-floating:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.14),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.17),\n 0px 12px 24px -6px rgb(0% 0% 0% / 0.6),\n 0px 32px 64px -16px rgb(0% 0% 0% / 0.7),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.8);\n --nc-elevation-modal:\n inset 0px 1px 0px 0px rgb(100% 100% 100% / 0.17),\n inset 0px 0px 0px 1px rgb(100% 100% 100% / 0.2),\n 0px 64px 128px -32px rgb(0% 0% 0% / 0.8),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.8);\n }\n}";
|
|
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.1776 0.0000 0.00);\n --nc-action-foreground: oklch(1.0000 0.0000 0.00);\n --nc-action-hover: oklch(0.3012 0.0000 0.00);\n --nc-action-active: oklch(0.0000 0.0000 0.00);\n --nc-ink: oklch(0.1776 0.0000 0.00);\n --nc-body: oklch(0.3867 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.9761 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.0000 0.0000 0.00);\n --nc-link: oklch(0.4815 0.1209 154.24);\n --nc-link-deep: oklch(0.3852 0.0953 154.99);\n --nc-link-bg-soft: oklch(0.9170 0.0519 161.77);\n --nc-info: oklch(0.5005 0.2804 266.17);\n --nc-info-soft: oklch(0.9457 0.0259 276.40);\n --nc-info-deep: oklch(0.3197 0.1758 266.79);\n --nc-success: oklch(0.6415 0.1644 153.23);\n --nc-success-soft: oklch(0.9170 0.0519 161.77);\n --nc-success-deep: oklch(0.3852 0.0953 154.99);\n --nc-error: oklch(0.5688 0.1995 26.59);\n --nc-error-soft: oklch(0.9522 0.0207 17.52);\n --nc-error-deep: oklch(0.4235 0.1525 27.08);\n --nc-warning: oklch(0.8466 0.1678 84.63);\n --nc-warning-soft: oklch(0.9649 0.0461 90.87);\n --nc-warning-deep: oklch(0.4834 0.0995 82.44);\n --nc-navigation-selection-bg: oklch(0.9461 0.0000 0.00);\n --nc-navigation-selection-fg: oklch(0.1776 0.0000 0.00);\n --nc-navigation-selection-hover: oklch(0.9219 0.0000 0.00);\n --nc-state-ready: oklch(0.5278 0.0000 0.00);\n --nc-state-running: oklch(0.5005 0.2804 266.17);\n --nc-state-review: oklch(0.8466 0.1678 84.63);\n --nc-state-blocked: oklch(0.5688 0.1995 26.59);\n --nc-state-complete: oklch(0.6415 0.1644 153.23);\n --nc-identity-verde: oklch(0.6415 0.1644 153.23);\n --nc-identity-rosso: oklch(0.5688 0.1995 26.59);\n --nc-identity-arancio: oklch(0.6824 0.2108 37.70);\n --nc-identity-giallo: oklch(0.8466 0.1678 84.63);\n --nc-identity-cobalto: oklch(0.5005 0.2804 266.17);\n --nc-identity-azzurro: oklch(0.5618 0.2019 258.24);\n --nc-identity-ink: oklch(0.0000 0.0000 0.00);\n --nc-identity-white: oklch(1.0000 0.0000 0.00);\n --nc-logo-dot: oklch(0.5005 0.2804 266.17);\n --nc-chart-1: oklch(0.5005 0.2804 266.17);\n --nc-chart-2: oklch(0.6415 0.1644 153.23);\n --nc-chart-3: oklch(0.7638 0.1562 86.86);\n --nc-chart-4: oklch(0.5688 0.1995 26.59);\n --nc-chart-5: oklch(0.6161 0.1062 208.85);\n --nc-chart-6: oklch(0.5015 0.1883 294.99);\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.1776 0.0000 0.00);\n --nc-dark-material-modal: oklch(0.1776 0.0000 0.00);\n --nc-dark-ink: oklch(0.9461 0.0000 0.00);\n --nc-dark-body: oklch(0.8297 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.9461 0.0000 0.00);\n --nc-dark-action-foreground: oklch(0.1448 0.0000 0.00);\n --nc-dark-action-hover: oklch(0.8761 0.0000 0.00);\n --nc-dark-action-active: oklch(0.8297 0.0000 0.00);\n --nc-dark-link: oklch(0.7661 0.1498 157.10);\n --nc-dark-link-deep: oklch(0.8524 0.0996 159.83);\n --nc-dark-link-bg-soft: oklch(0.2893 0.0697 156.32);\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.5923 0.2215 269.61);\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.5923 0.2215 269.61);\n --nc-dark-chart-2: oklch(0.6415 0.1644 153.23);\n --nc-dark-chart-3: oklch(0.8939 0.1387 90.47);\n --nc-dark-chart-4: oklch(0.6627 0.1685 23.66);\n --nc-dark-chart-5: oklch(0.7820 0.1247 190.99);\n --nc-dark-chart-6: oklch(0.6297 0.1321 299.36);\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: 32px;\n --nc-control-padding-inline: 10px;\n --nc-touch-target: 44px;\n --nc-rounded-none: 0px;\n --nc-rounded-xs: 2px;\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: 500;\n --nc-type-display-xl-line-height: 74px;\n --nc-type-display-xl-letter-spacing: -2.52px;\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: 52px;\n --nc-type-display-lg-font-weight: 500;\n --nc-type-display-lg-line-height: 54px;\n --nc-type-display-lg-letter-spacing: -1.5px;\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: 500;\n --nc-type-display-md-line-height: 42px;\n --nc-type-display-md-letter-spacing: -1px;\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: 30px;\n --nc-type-heading-lg-font-weight: 600;\n --nc-type-heading-lg-line-height: 32px;\n --nc-type-heading-lg-letter-spacing: 0px;\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: 0px;\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: 28px;\n --nc-type-heading-sm-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: 27px;\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: 25px;\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-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-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: 20px;\n --nc-type-code-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: 500;\n --nc-type-label-mono-line-height: 16px;\n --nc-type-label-mono-letter-spacing: 0px;\n --nc-material-scrim-opacity: 50%;\n --nc-material-glass-opacity: 60%;\n --nc-material-glass-saturation: 180%;\n --nc-material-glass-blur: 20px;\n --nc-elevation-resting: 0px 2px 2px 0px rgb(0% 0% 0% / 0.04), 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-raised:\n 0px 2px 2px 0px rgb(0% 0% 0% / 0.04),\n 0px 8px 8px -8px rgb(0% 0% 0% / 0.04),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-floating:\n 0px 1px 1px 0px rgb(0% 0% 0% / 0.02),\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.04),\n 0px 16px 24px -8px rgb(0% 0% 0% / 0.06),\n 0px 0px 0px 1px rgb(0% 0% 0% / 0.08);\n --nc-elevation-modal:\n 0px 1px 1px 0px rgb(0% 0% 0% / 0.02),\n 0px 8px 16px -4px rgb(0% 0% 0% / 0.04),\n 0px 24px 32px -8px rgb(0% 0% 0% / 0.06),\n 0px 0px 0px 1px 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-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-elevation-resting: 0px 1px 2px 0px rgb(0% 0% 0% / 0.16), 0px 0px 0px 1px rgb(100% 100% 100% / 0.145);\n --nc-elevation-raised:\n 0px 2px 2px 0px rgb(0% 0% 0% / 0.2),\n 0px 8px 8px -8px rgb(0% 0% 0% / 0.3),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145);\n --nc-elevation-floating:\n 0px 4px 8px -4px rgb(0% 0% 0% / 0.4),\n 0px 16px 24px -8px rgb(0% 0% 0% / 0.5),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145);\n --nc-elevation-modal:\n 0px 8px 16px -4px rgb(0% 0% 0% / 0.4),\n 0px 24px 32px -8px rgb(0% 0% 0% / 0.55),\n 0px 0px 0px 1px rgb(100% 100% 100% / 0.145);\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>";
|
|
@@ -516,6 +516,136 @@
|
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
518
|
|
|
519
|
+
/*
|
|
520
|
+
* Alveare's entry scene, the hive (`components/hive-scene.tsx`), in the
|
|
521
|
+
* composition of Nadia's entry screen: the app's picture on a black ground and
|
|
522
|
+
* the words standing on its empty centre, with no panel, card or ground behind
|
|
523
|
+
* them. The scene scopes `dark`, so every token inside it takes its dark value
|
|
524
|
+
* whatever the app's mode. Each app places its own picture.
|
|
525
|
+
*/
|
|
526
|
+
|
|
527
|
+
.nc-hive {
|
|
528
|
+
position: fixed;
|
|
529
|
+
inset: 0;
|
|
530
|
+
z-index: 0;
|
|
531
|
+
isolation: isolate;
|
|
532
|
+
overflow: hidden auto;
|
|
533
|
+
display: grid;
|
|
534
|
+
place-items: safe center;
|
|
535
|
+
padding: var(--nc-xl) var(--nc-md);
|
|
536
|
+
background: var(--nc-identity-ink);
|
|
537
|
+
color: var(--nc-ink);
|
|
538
|
+
color-scheme: dark;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
/*
|
|
542
|
+
* Alveare's own logo at the upper left, where Nadia's and the Portal's entry
|
|
543
|
+
* screens put the nadicode wordmark, at the wordmark's height and inset. The
|
|
544
|
+
* icon's tile is 824 of its 1024 units; the image box is sized so the tile,
|
|
545
|
+
* not the file's margin, takes the wordmark's height. An app with window
|
|
546
|
+
* controls over the scene sets `--hive-chrome-clearance` to their height, which
|
|
547
|
+
* the narrow inset clears.
|
|
548
|
+
*/
|
|
549
|
+
.nc-hive-logo {
|
|
550
|
+
--hive-logo-tile: 24px;
|
|
551
|
+
--hive-logo-inset: var(--nc-lg);
|
|
552
|
+
--hive-logo-box: calc(var(--hive-logo-tile) * 1024 / 824);
|
|
553
|
+
--hive-logo-margin: calc(var(--hive-logo-box) * 100 / 1024);
|
|
554
|
+
position: absolute;
|
|
555
|
+
z-index: 2;
|
|
556
|
+
top: calc(
|
|
557
|
+
max(var(--hive-logo-inset), var(--hive-chrome-clearance, 0px)) -
|
|
558
|
+
var(--hive-logo-margin)
|
|
559
|
+
);
|
|
560
|
+
left: calc(var(--hive-logo-inset) - var(--hive-logo-margin));
|
|
561
|
+
width: var(--hive-logo-box);
|
|
562
|
+
height: var(--hive-logo-box);
|
|
563
|
+
pointer-events: none;
|
|
564
|
+
user-select: none;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
@media (min-width: 640px) {
|
|
568
|
+
.nc-hive-logo {
|
|
569
|
+
--hive-logo-tile: 32px;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
@media (min-width: 768px) {
|
|
574
|
+
.nc-hive-logo {
|
|
575
|
+
--hive-logo-inset: var(--nc-2xl);
|
|
576
|
+
top: calc(var(--hive-logo-inset) - var(--hive-logo-margin));
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
.nc-hive-comb,
|
|
581
|
+
.nc-hive-flow {
|
|
582
|
+
position: absolute;
|
|
583
|
+
inset: 0;
|
|
584
|
+
width: 100%;
|
|
585
|
+
height: 100%;
|
|
586
|
+
pointer-events: none;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
.nc-hive-comb {
|
|
590
|
+
color: var(--nc-identity-white);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
.nc-hive-agent {
|
|
594
|
+
position: absolute;
|
|
595
|
+
translate: -50% -50%;
|
|
596
|
+
pointer-events: none;
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
.nc-hive-agent[data-size="64"] {
|
|
600
|
+
width: 64px;
|
|
601
|
+
height: 64px;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.nc-hive-agent[data-size="96"] {
|
|
605
|
+
width: 96px;
|
|
606
|
+
height: 96px;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
.nc-hive-agent canvas {
|
|
610
|
+
display: block;
|
|
611
|
+
width: 100%;
|
|
612
|
+
height: 100%;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
.nc-hive-column {
|
|
616
|
+
position: relative;
|
|
617
|
+
z-index: 1;
|
|
618
|
+
display: grid;
|
|
619
|
+
justify-items: stretch;
|
|
620
|
+
gap: var(--nc-md);
|
|
621
|
+
width: min(20rem, 80vw);
|
|
622
|
+
text-align: center;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.nc-hive-title {
|
|
626
|
+
margin: 0;
|
|
627
|
+
font-family: var(--nc-type-heading-md-font-family);
|
|
628
|
+
font-size: var(--nc-type-heading-md-font-size);
|
|
629
|
+
font-weight: var(--nc-type-heading-md-font-weight);
|
|
630
|
+
line-height: var(--nc-type-heading-md-line-height);
|
|
631
|
+
letter-spacing: var(--nc-type-heading-md-letter-spacing);
|
|
632
|
+
text-wrap: balance;
|
|
633
|
+
overflow-wrap: break-word;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
.nc-hive-line {
|
|
637
|
+
margin: 0;
|
|
638
|
+
font-family: var(--nc-type-body-sm-font-family);
|
|
639
|
+
font-size: var(--nc-type-body-sm-font-size);
|
|
640
|
+
line-height: var(--nc-type-body-sm-line-height);
|
|
641
|
+
overflow-wrap: break-word;
|
|
642
|
+
color: var(--nc-body);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
.nc-hive-line[data-tone="error"] {
|
|
646
|
+
color: var(--nc-error);
|
|
647
|
+
}
|
|
648
|
+
|
|
519
649
|
/*
|
|
520
650
|
* The company card, contained (`components/company-card.tsx`;
|
|
521
651
|
* design-system DESIGN.md, "Company card").
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/ui",
|
|
3
|
-
"version": "12.1.
|
|
3
|
+
"version": "12.1.69",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@base-ui/react": "^1.8.0",
|
|
76
76
|
"@iconify-icons/logos": "^2.0.2",
|
|
77
77
|
"@iconify/react": "^6.0.2",
|
|
78
|
-
"@nadicodeai/design-system": "12.1.
|
|
78
|
+
"@nadicodeai/design-system": "12.1.69",
|
|
79
79
|
"@tanstack/react-table": "^9.2.4",
|
|
80
80
|
"class-variance-authority": "^0.7.1",
|
|
81
81
|
"clsx": "^2.1.1",
|
|
@@ -86,6 +86,7 @@
|
|
|
86
86
|
"lucide-react": "1.49.0",
|
|
87
87
|
"motion": "^13.4.4",
|
|
88
88
|
"next-themes": "^0.4.6",
|
|
89
|
+
"qrcode": "^1.5.4",
|
|
89
90
|
"react-day-picker": "^10.0.1",
|
|
90
91
|
"react-hook-form": "^7.89.0",
|
|
91
92
|
"react-resizable-panels": "^4.13.3",
|