@tangle-network/agent-app 0.45.46 → 0.45.47
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/theme/tokens.css
CHANGED
|
@@ -238,6 +238,40 @@
|
|
|
238
238
|
--motion-surface: var(--duration-base) var(--ease-entrance);
|
|
239
239
|
--motion-dismiss: var(--duration-instant) var(--ease-exit);
|
|
240
240
|
|
|
241
|
+
/* ── Entrance choreography ───────────────────────────────────────────────
|
|
242
|
+
The durations above answer "how fast does an existing thing change".
|
|
243
|
+
These answer "how does a thing that was not there ARRIVE", which is most
|
|
244
|
+
of what an agent surface does: text streams in, rows appear as work
|
|
245
|
+
completes, a trace expands, a pending label waits.
|
|
246
|
+
|
|
247
|
+
Shipping the ladder without these is why this package had FOUR durations,
|
|
248
|
+
THREE curves, and ZERO keyframes on `/web-react` — every arrival was a
|
|
249
|
+
pop, which reads as cheap no matter how correct the colours are.
|
|
250
|
+
|
|
251
|
+
`--motion-stream` is longer than `base` on purpose: streamed text arrives
|
|
252
|
+
continuously, so each chunk overlaps its neighbours and a fast curve makes
|
|
253
|
+
the paragraph flicker. `--motion-arrive` is the row/card entrance and is
|
|
254
|
+
meant to be staggered by index (see `--stagger-step`). */
|
|
255
|
+
--duration-stream: 420ms;
|
|
256
|
+
--duration-arrive: 600ms;
|
|
257
|
+
--ease-expo: cubic-bezier(0.23, 1, 0.32, 1);
|
|
258
|
+
--motion-stream: var(--duration-stream) var(--ease-expo);
|
|
259
|
+
--motion-arrive: var(--duration-arrive) var(--ease-expo);
|
|
260
|
+
/* Per-item delay in a staggered group. 5 items = 200ms tail, which stays
|
|
261
|
+
under the 250ms an interface can add before it reads as latency. */
|
|
262
|
+
--stagger-step: 50ms;
|
|
263
|
+
/* Position in a staggered group, overridden PER ELEMENT by the caller. It is
|
|
264
|
+
declared here with a zero default rather than read through a `var()`
|
|
265
|
+
fallback so the file never references a token it does not define — an
|
|
266
|
+
undefined `var()` resolves to nothing and paints silently, which is the
|
|
267
|
+
failure the token contract exists to catch. */
|
|
268
|
+
--stagger-index: 0;
|
|
269
|
+
/* How far an arriving surface travels, and how far a streamed chunk resolves
|
|
270
|
+
from. Both are small: motion that announces itself is motion you notice
|
|
271
|
+
twice. */
|
|
272
|
+
--arrive-distance: 8px;
|
|
273
|
+
--stream-blur: 4px;
|
|
274
|
+
|
|
241
275
|
/* ── Border tiers ────────────────────────────────────────────────────────
|
|
242
276
|
Three strengths of the SAME border colour, because a divider inside a
|
|
243
277
|
panel and the edge of a card floated on the page are not the same line,
|
|
@@ -389,6 +423,140 @@
|
|
|
389
423
|
--shadow-overlay: 0 2px 6px hsl(var(--foreground) / 0.12), 0 16px 40px hsl(var(--foreground) / 0.2);
|
|
390
424
|
}
|
|
391
425
|
|
|
426
|
+
/**
|
|
427
|
+
* Entrance keyframes and the classes that ride them.
|
|
428
|
+
*
|
|
429
|
+
* They live in this file, not in a component, because a product already
|
|
430
|
+
* imports this stylesheet and because a keyframe defined inside a bundled
|
|
431
|
+
* component is a keyframe a precompiled consumer does not get — the same gap
|
|
432
|
+
* that shipped a picker with no text tier.
|
|
433
|
+
*
|
|
434
|
+
* Every duration below is a TOKEN, which is what makes the reduced-motion
|
|
435
|
+
* block underneath cover them without a second media query.
|
|
436
|
+
*/
|
|
437
|
+
|
|
438
|
+
/* Streamed text: each chunk resolves out of a small blur instead of popping
|
|
439
|
+
in. This is the single most visible difference between a chat that feels
|
|
440
|
+
alive and one that feels like a log being appended to. */
|
|
441
|
+
@keyframes agent-stream-in {
|
|
442
|
+
from {
|
|
443
|
+
opacity: 0;
|
|
444
|
+
filter: blur(var(--stream-blur));
|
|
445
|
+
}
|
|
446
|
+
to {
|
|
447
|
+
opacity: 1;
|
|
448
|
+
filter: blur(0);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/* A row, card or chip that was not there a moment ago. Travels a short
|
|
453
|
+
distance so the eye is told WHERE it came from. */
|
|
454
|
+
@keyframes agent-arrive {
|
|
455
|
+
from {
|
|
456
|
+
opacity: 0;
|
|
457
|
+
transform: translateY(var(--arrive-distance));
|
|
458
|
+
}
|
|
459
|
+
to {
|
|
460
|
+
opacity: 1;
|
|
461
|
+
transform: none;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/* A control appearing in place — a chip, a badge, a menu row. No travel,
|
|
466
|
+
because it did not come from anywhere. */
|
|
467
|
+
@keyframes agent-pop-in {
|
|
468
|
+
from {
|
|
469
|
+
opacity: 0;
|
|
470
|
+
transform: scale(0.96);
|
|
471
|
+
}
|
|
472
|
+
to {
|
|
473
|
+
opacity: 1;
|
|
474
|
+
transform: none;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/* The insertion caret at the end of streaming text. A hard step blink, not a
|
|
479
|
+
fade: a caret that eases is a caret that reads as a loading placeholder. */
|
|
480
|
+
@keyframes agent-caret {
|
|
481
|
+
0%,
|
|
482
|
+
49% {
|
|
483
|
+
opacity: 1;
|
|
484
|
+
}
|
|
485
|
+
50%,
|
|
486
|
+
100% {
|
|
487
|
+
opacity: 0;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/* A label that is WAITING. The sweep is what separates "the agent is working"
|
|
492
|
+
from "the interface is stuck": a static label cannot tell you which. */
|
|
493
|
+
@keyframes agent-shimmer {
|
|
494
|
+
from {
|
|
495
|
+
background-position: 150% center;
|
|
496
|
+
}
|
|
497
|
+
to {
|
|
498
|
+
background-position: -50% center;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.agent-stream-in {
|
|
503
|
+
animation: agent-stream-in var(--motion-stream) both;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
.agent-arrive {
|
|
507
|
+
animation: agent-arrive var(--motion-arrive) both;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
.agent-pop-in {
|
|
511
|
+
animation: agent-pop-in var(--motion-control) both;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/* Stagger by index: set `--stagger-index` and a group arrives as a sequence
|
|
515
|
+
rather than as a flash. Capped at 8 so a 200-row list does not open with a
|
|
516
|
+
10-second cascade — past the cap every row shares the last delay. */
|
|
517
|
+
.agent-arrive {
|
|
518
|
+
animation-delay: calc(min(var(--stagger-index), 8) * var(--stagger-step));
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/* The waiting label. `background-clip: text` over a moving gradient, so the
|
|
522
|
+
shimmer runs THROUGH the glyphs rather than behind them. Marked essential:
|
|
523
|
+
it is the only signal that work is still in flight. */
|
|
524
|
+
.agent-shimmer {
|
|
525
|
+
background: linear-gradient(
|
|
526
|
+
90deg,
|
|
527
|
+
hsl(var(--muted-foreground)) 0%,
|
|
528
|
+
hsl(var(--foreground)) 45%,
|
|
529
|
+
hsl(var(--muted-foreground)) 60%
|
|
530
|
+
);
|
|
531
|
+
background-size: 250% auto;
|
|
532
|
+
background-clip: text;
|
|
533
|
+
-webkit-background-clip: text;
|
|
534
|
+
color: transparent;
|
|
535
|
+
animation: agent-shimmer 1.4s linear infinite;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/* Height-auto disclosure without measuring anything in JavaScript. The row
|
|
539
|
+
animates between 0fr and 1fr; the child needs `min-height: 0` and
|
|
540
|
+
`overflow: hidden` to be clipped while it travels. A max-height guess is the
|
|
541
|
+
usual alternative and it either clips tall content or eases against a number
|
|
542
|
+
the content never reaches. */
|
|
543
|
+
.agent-disclose {
|
|
544
|
+
display: grid;
|
|
545
|
+
grid-template-rows: 0fr;
|
|
546
|
+
transition: grid-template-rows var(--motion-surface), opacity var(--motion-control);
|
|
547
|
+
opacity: 0;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.agent-disclose > * {
|
|
551
|
+
min-height: 0;
|
|
552
|
+
overflow: hidden;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.agent-disclose[data-open='true'] {
|
|
556
|
+
grid-template-rows: 1fr;
|
|
557
|
+
opacity: 1;
|
|
558
|
+
}
|
|
559
|
+
|
|
392
560
|
/**
|
|
393
561
|
* Reduced motion, at the token layer and at the floor.
|
|
394
562
|
*
|
|
@@ -420,6 +588,11 @@
|
|
|
420
588
|
--duration-fast: 1ms;
|
|
421
589
|
--duration-base: 1ms;
|
|
422
590
|
--duration-slow: 1ms;
|
|
591
|
+
--duration-stream: 1ms;
|
|
592
|
+
--duration-arrive: 1ms;
|
|
593
|
+
/* The stagger is a delay, not a duration, and a collapsed animation with a
|
|
594
|
+
live delay still arrives as a visible cascade. */
|
|
595
|
+
--stagger-step: 0ms;
|
|
423
596
|
}
|
|
424
597
|
|
|
425
598
|
*:where(:not([data-motion='essential'], [data-motion='essential'] *)) {
|
package/dist/web-react/index.js
CHANGED
package/package.json
CHANGED