@actioneer/ads 1.0.6 → 1.0.8
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/DESIGN.md +80 -86
- package/README.md +6 -0
- package/components/ai-elements/chart.js +20 -20
- package/components/ai-elements/inline-citation.js +50 -50
- package/components/ai-elements/message.js +1 -1
- package/components/ai-elements/tool.js +5 -5
- package/components/alert.d.ts +5 -4
- package/components/alert.js +91 -79
- package/components/answer.js +1 -1
- package/components/assistant-ui/action-bar.js +1 -1
- package/components/assistant-ui/attachment.js +68 -49
- package/components/assistant-ui/composer-add-context.js +1 -1
- package/components/assistant-ui/composer-trigger-popover.js +1 -1
- package/components/assistant-ui/composer.js +13 -13
- package/components/assistant-ui/message-timing.js +6 -6
- package/components/assistant-ui/selection-toolbar.js +5 -5
- package/components/assistant-ui/sources.js +15 -15
- package/components/assistant-ui/tooltip-icon-button.js +18 -14
- package/components/audio-waveform.d.ts +21 -8
- package/components/audio-waveform.js +371 -94
- package/components/autocomplete.js +9 -9
- package/components/breadcrumbs.js +32 -38
- package/components/button.js +83 -73
- package/components/card.js +1 -1
- package/components/chart.js +732 -673
- package/components/chip.js +37 -35
- package/components/command-palette.js +12 -12
- package/components/connector-card.d.ts +1 -2
- package/components/connector-card.js +17 -17
- package/components/date-range-picker.js +1 -2
- package/components/drawer.js +9 -10
- package/components/dropdown.js +1 -1
- package/components/empty-state.d.ts +2 -0
- package/components/empty-state.js +17 -15
- package/components/field.js +9 -10
- package/components/file-dropzone.d.ts +6 -3
- package/components/file-dropzone.js +72 -60
- package/components/infinite-canvas.js +9 -9
- package/components/modal.js +1 -1
- package/components/page-body.js +8 -8
- package/components/popover.js +11 -11
- package/components/progress-circle.d.ts +1 -1
- package/components/progress-circle.js +57 -48
- package/components/radio.d.ts +1 -1
- package/components/radio.js +53 -53
- package/components/segmented.d.ts +1 -0
- package/components/segmented.js +34 -36
- package/components/select.js +2 -2
- package/components/selection-action-bar.js +32 -31
- package/components/setting-row.js +10 -10
- package/components/sidebar.js +74 -73
- package/components/slider.js +5 -5
- package/components/stepper.d.ts +1 -1
- package/components/stepper.js +1 -1
- package/components/switch.js +10 -10
- package/components/table.d.ts +17 -5
- package/components/table.js +559 -405
- package/components/tabs.js +41 -35
- package/components/timeline.js +3 -3
- package/components/toast.js +53 -56
- package/components/ui/button.js +4 -4
- package/components/ui/dialog.js +1 -1
- package/components/viz-charts.js +263 -221
- package/examples/README.md +30 -0
- package/examples/agents-screen.tsx +477 -0
- package/examples/settings-screen.tsx +90 -0
- package/examples/workspace-header.tsx +71 -0
- package/lib/icons.d.ts +8 -0
- package/lib/icons.js +171 -118
- package/llms.txt +16 -16
- package/manifest.json +178 -54
- package/package.json +1 -1
- package/styles.css +60 -72
- package/theme.css +55 -63
package/styles.css
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
/*
|
|
40
40
|
* ============================================================
|
|
41
41
|
* ADS 1.0 — Design Tokens
|
|
42
|
-
* Palette:
|
|
42
|
+
* Palette: neutral greys + product teal
|
|
43
43
|
* Typeface: Aribau Grotesk
|
|
44
44
|
* ============================================================
|
|
45
45
|
*/
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
|
|
94
94
|
/* ---- Foundation palette ----
|
|
95
95
|
Canonical primitive names:
|
|
96
|
-
T1…T12 = Teal · WG1…WG12 =
|
|
96
|
+
T1…T12 = Teal · WG1…WG12 = Neutral Grey (the WG token names are kept).
|
|
97
97
|
Each ramp progresses from light backgrounds and interactive fills through
|
|
98
98
|
supporting tones to solid colors and accessible text. Neutral UI borders
|
|
99
99
|
are intentionally restricted to WG3–WG5. ---- */
|
|
@@ -110,20 +110,20 @@
|
|
|
110
110
|
--color-t11: #016159;
|
|
111
111
|
--color-t12: #0f3c37;
|
|
112
112
|
|
|
113
|
-
--color-wg1: #
|
|
114
|
-
--color-wg2: #
|
|
115
|
-
--color-wg3: #
|
|
116
|
-
--color-wg4: #
|
|
117
|
-
--color-wg5: #
|
|
118
|
-
--color-wg6: #
|
|
119
|
-
--color-wg7: #
|
|
120
|
-
--color-wg8: #
|
|
121
|
-
--color-wg9: #
|
|
122
|
-
--color-wg10: #
|
|
123
|
-
--color-wg11: #
|
|
124
|
-
--color-wg12: #
|
|
125
|
-
|
|
126
|
-
/* Deprecated
|
|
113
|
+
--color-wg1: #fafafa;
|
|
114
|
+
--color-wg2: #f6f6f6;
|
|
115
|
+
--color-wg3: #f1f1f1;
|
|
116
|
+
--color-wg4: #ececec;
|
|
117
|
+
--color-wg5: #e6e6e6;
|
|
118
|
+
--color-wg6: #dedede;
|
|
119
|
+
--color-wg7: #d4d4d4;
|
|
120
|
+
--color-wg8: #bdbdbd;
|
|
121
|
+
--color-wg9: #868686;
|
|
122
|
+
--color-wg10: #7c7b7b;
|
|
123
|
+
--color-wg11: #5e5d5d;
|
|
124
|
+
--color-wg12: #202020;
|
|
125
|
+
|
|
126
|
+
/* Deprecated NG names resolve step-for-step to the canonical WG ramp.
|
|
127
127
|
Keep these aliases so existing consumer utilities continue to render. */
|
|
128
128
|
--color-ng1: var(--color-wg1);
|
|
129
129
|
--color-ng2: var(--color-wg2);
|
|
@@ -267,41 +267,26 @@
|
|
|
267
267
|
convention). */
|
|
268
268
|
--radius-dot: 2px;
|
|
269
269
|
|
|
270
|
-
/* ---- Elevation ----
|
|
271
|
-
|
|
270
|
+
/* ---- Elevation ---- five shadows, nothing else (ADS 1.0.8).
|
|
271
|
+
A shadow means "this layer floats above the page". Everything that sits
|
|
272
|
+
in the page — cards, panels, chips, buttons, tabs, fields — is flat and
|
|
273
|
+
reads by fill or border. Neutral WG12 ink (rgb 32 32 32); each floating
|
|
274
|
+
level pairs a 4% hairline (crisp edge on white), a tight contact shadow
|
|
275
|
+
and a wide ambient one. */
|
|
272
276
|
--shadow-0: none;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
--shadow-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
--shadow-
|
|
279
|
-
|
|
280
|
-
/*
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
/* Pinned-table-column smudges — whisper-soft directional casts shown only
|
|
285
|
-
while content is hidden behind a sticky column (Table is scroll-aware).
|
|
286
|
-
Deep negative spread keeps the edge feathered; the tint is warm grey. */
|
|
277
|
+
/* Menus, popovers, listboxes, tooltips with content, toasts, toolbars and
|
|
278
|
+
the chat composer dock. */
|
|
279
|
+
--shadow-float: 0 0 0 1px rgb(32 32 32 / 0.04), 0 2px 4px rgb(32 32 32 / 0.04), 0 8px 20px -4px rgb(32 32 32 / 0.10);
|
|
280
|
+
/* Modals, dialogs and overlay drawers — one step above float so a dialog
|
|
281
|
+
always reads on top of a menu. */
|
|
282
|
+
--shadow-overlay: 0 0 0 1px rgb(32 32 32 / 0.04), 0 4px 8px rgb(32 32 32 / 0.04), 0 16px 36px -8px rgb(32 32 32 / 0.14);
|
|
283
|
+
|
|
284
|
+
/* Table scroll hints — whisper-soft directional casts shown only while
|
|
285
|
+
content is hidden behind a sticky column (Table is scroll-aware). Deep
|
|
286
|
+
negative spread keeps the edge feathered; the tint is neutral grey. */
|
|
287
287
|
--shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
288
288
|
--shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
289
289
|
|
|
290
|
-
/* ---- Button inset depth ---- Polaris-inspired stacked inner edges. The
|
|
291
|
-
lower contact line, quiet inner outline, and half-pixel top catch make
|
|
292
|
-
solid actions feel tactile without adding a decorative outer border. */
|
|
293
|
-
--inner-glow-cta: inset 0 -1px 0 1px rgb(32 32 32 / 0.22),
|
|
294
|
-
inset 0 0 0 1px rgb(32 32 32 / 0.12),
|
|
295
|
-
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.28);
|
|
296
|
-
/* Compatibility treatment for explicitly raised light fills. Its visible
|
|
297
|
-
edge is entirely inset, so it keeps a transparent outer border. */
|
|
298
|
-
--inner-glow-fill: inset 0 -1px 0 0 var(--border-primary),
|
|
299
|
-
inset 0 0 0 1px rgb(32 32 32 / 0.1),
|
|
300
|
-
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.86);
|
|
301
|
-
/* Text fields — a whisper of inset depth so the writing surface reads
|
|
302
|
-
recessed into the page (persists through hover/focus/invalid). */
|
|
303
|
-
--inner-glow-field: inset 0 1px 2px 0 rgb(32 32 32 / 0.06);
|
|
304
|
-
|
|
305
290
|
/* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
|
|
306
291
|
--sidebar-width: 15rem; /* 240px — primary nav rail */
|
|
307
292
|
--sidebar-width-sm: 3.5rem; /* 56px — collapsed icon rail */
|
|
@@ -446,7 +431,7 @@
|
|
|
446
431
|
--color-menu-stroke: var(--menu-stroke);
|
|
447
432
|
--color-toast-stroke: var(--toast-stroke);
|
|
448
433
|
--color-tree-stroke: var(--tree-stroke);
|
|
449
|
-
/* Focus ring and scrim, both translucent
|
|
434
|
+
/* Focus ring and scrim, both translucent neutral ink. */
|
|
450
435
|
--color-ring: var(--ring);
|
|
451
436
|
--color-overlay: var(--overlay);
|
|
452
437
|
|
|
@@ -482,21 +467,21 @@
|
|
|
482
467
|
--foreground: var(--color-wg12); /* step 12 */
|
|
483
468
|
|
|
484
469
|
/* Both surface contexts point directly into the approved WG text steps.
|
|
485
|
-
WG9 is the tertiary/de-emphasis step for nonessential metadata.
|
|
486
|
-
|
|
487
|
-
AA. */
|
|
470
|
+
WG9 is the tertiary/de-emphasis step for nonessential metadata. On the
|
|
471
|
+
neutral ramp it clears large-text AA only; use Secondary whenever normal
|
|
472
|
+
text must clear AA. */
|
|
488
473
|
--text-on-white-primary: var(--color-wg12); /* 16.29:1 · AAA */
|
|
489
|
-
--text-on-white-secondary: var(--color-wg11); /*
|
|
490
|
-
--text-on-white-tertiary: var(--color-wg9); /*
|
|
491
|
-
--text-on-warm-grey-primary: var(--color-wg12); /*
|
|
492
|
-
--text-on-warm-grey-secondary: var(--color-wg11); /*
|
|
493
|
-
--text-on-warm-grey-tertiary: var(--color-wg9); /*
|
|
474
|
+
--text-on-white-secondary: var(--color-wg11); /* 6.56:1 · AA */
|
|
475
|
+
--text-on-white-tertiary: var(--color-wg9); /* 3.64:1 · large text AA */
|
|
476
|
+
--text-on-warm-grey-primary: var(--color-wg12); /* 15.08:1 on WG2 · AAA */
|
|
477
|
+
--text-on-warm-grey-secondary: var(--color-wg11); /* 6.07:1 on WG2 · AA */
|
|
478
|
+
--text-on-warm-grey-tertiary: var(--color-wg9); /* 3.37:1 on WG2 · large text AA */
|
|
494
479
|
|
|
495
480
|
/* Existing context-free utilities remain conservative compatibility aliases
|
|
496
481
|
across WG2–WG4 and White until their call sites adopt a surface role. */
|
|
497
|
-
--text-primary: var(--color-wg12); /*
|
|
498
|
-
--text-secondary: var(--color-wg11); /*
|
|
499
|
-
--text-tertiary: color-mix(in srgb, var(--color-wg10)
|
|
482
|
+
--text-primary: var(--color-wg12); /* 13.79:1 AAA (WG4 min surf) */
|
|
483
|
+
--text-secondary: var(--color-wg11); /* 5.56:1 AA (WG4 min surf) */
|
|
484
|
+
--text-tertiary: color-mix(in srgb, var(--color-wg10) 40%, var(--color-wg11)); /* 4.63:1 AA (WG4) */
|
|
500
485
|
|
|
501
486
|
--surface: var(--color-wg3); /* step 3 · tinted canvas */
|
|
502
487
|
--surface-foreground: var(--color-wg12);
|
|
@@ -521,8 +506,9 @@
|
|
|
521
506
|
--brand-hover: var(--action-primary-hover);
|
|
522
507
|
--brand-text: var(--action-primary-text);
|
|
523
508
|
|
|
524
|
-
/* Interactive row hover/focus uses the
|
|
525
|
-
--table-row-hover: var(--color-
|
|
509
|
+
/* Interactive row hover/focus uses the WG1 highlight wash. */
|
|
510
|
+
--table-row-hover: var(--color-wg1);
|
|
511
|
+
/* Start color for the row's selection fade; its right edge returns to White. */
|
|
526
512
|
--table-row-selected: var(--action-primary-soft);
|
|
527
513
|
|
|
528
514
|
/* Quiet component fill. WG3 is the first interactive-background
|
|
@@ -588,8 +574,8 @@
|
|
|
588
574
|
--sidebar-foreground: var(--foreground);
|
|
589
575
|
--sidebar-primary: var(--brand);
|
|
590
576
|
--sidebar-primary-foreground: var(--brand-foreground);
|
|
591
|
-
--sidebar-accent: var(--
|
|
592
|
-
--sidebar-accent-foreground: var(--
|
|
577
|
+
--sidebar-accent: var(--elevated);
|
|
578
|
+
--sidebar-accent-foreground: var(--foreground);
|
|
593
579
|
--sidebar-border: var(--border);
|
|
594
580
|
--sidebar-ring: var(--ring);
|
|
595
581
|
--popover: var(--elevated);
|
|
@@ -619,6 +605,12 @@
|
|
|
619
605
|
* clipped to the panel radius. Honours reduced-motion.
|
|
620
606
|
* ============================================================
|
|
621
607
|
*/
|
|
608
|
+
/* Icon-only controls fill their icon on hover instead of drawing a
|
|
609
|
+
background (see IconHoverFillContext in src/lib/icons.tsx). */
|
|
610
|
+
.ads-icon-hover { display: none; }
|
|
611
|
+
[data-icon-hover-fill]:hover:not(:disabled) .ads-icon-rest { display: none; }
|
|
612
|
+
[data-icon-hover-fill]:hover:not(:disabled) .ads-icon-hover { display: block; }
|
|
613
|
+
|
|
622
614
|
@keyframes ads-ripple-wave {
|
|
623
615
|
0% { opacity: 0.6; transform: scale(0.15); }
|
|
624
616
|
100% { opacity: 0; transform: scale(1.08); }
|
|
@@ -700,12 +692,12 @@
|
|
|
700
692
|
|
|
701
693
|
.ask-empty-composer [data-slot="aui_composer-shell"] {
|
|
702
694
|
border-color: var(--color-wg4);
|
|
703
|
-
box-shadow: var(--shadow-
|
|
695
|
+
box-shadow: var(--shadow-float);
|
|
704
696
|
}
|
|
705
697
|
|
|
706
698
|
.ask-empty-composer:focus-within [data-slot="aui_composer-shell"] {
|
|
707
699
|
border-color: var(--color-t8);
|
|
708
|
-
box-shadow: 0 0 0 3px var(--color-t4), var(--shadow-
|
|
700
|
+
box-shadow: 0 0 0 3px var(--color-t4), var(--shadow-float);
|
|
709
701
|
}
|
|
710
702
|
|
|
711
703
|
.ask-section-label {
|
|
@@ -714,13 +706,10 @@
|
|
|
714
706
|
}
|
|
715
707
|
|
|
716
708
|
/* Artifact widgets are positioned by GridStack; ADS cards own the visible
|
|
717
|
-
surface while the library content wrapper only clips during interaction.
|
|
718
|
-
The subtle elevation lives on the wrapper (not the inner card) because the
|
|
719
|
-
wrapper's own `overflow: hidden` would clip a shadow drawn on its child. */
|
|
709
|
+
surface while the library content wrapper only clips during interaction. */
|
|
720
710
|
.artifact-grid-stack > .grid-stack-item > .grid-stack-item-content {
|
|
721
711
|
overflow: hidden;
|
|
722
712
|
border-radius: var(--radius-lg);
|
|
723
|
-
box-shadow: var(--shadow-elevation);
|
|
724
713
|
}
|
|
725
714
|
|
|
726
715
|
/* Edit affordances live on a parent flag — never toggle GridStack's own
|
|
@@ -986,9 +975,8 @@
|
|
|
986
975
|
--glow-border-rest: var(--border);
|
|
987
976
|
--glow-border-hover: var(--brand);
|
|
988
977
|
--glow-border-active: var(--foreground);
|
|
989
|
-
/* Optional persistent inset
|
|
990
|
-
|
|
991
|
-
state below so hover/focus/invalid never strip it. */
|
|
978
|
+
/* Optional persistent inset hook. ADS fields are flat (no inset shadow);
|
|
979
|
+
carried through every state below so a host value is never stripped. */
|
|
992
980
|
--glow-inset: 0 0 transparent;
|
|
993
981
|
|
|
994
982
|
border-color: var(--glow-border-rest);
|
package/theme.css
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
/*
|
|
9
9
|
* ============================================================
|
|
10
10
|
* ADS 1.0 — Design Tokens
|
|
11
|
-
* Palette:
|
|
11
|
+
* Palette: neutral greys + product teal
|
|
12
12
|
* Typeface: Aribau Grotesk
|
|
13
13
|
* ============================================================
|
|
14
14
|
*/
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
|
|
63
63
|
/* ---- Foundation palette ----
|
|
64
64
|
Canonical primitive names:
|
|
65
|
-
T1…T12 = Teal · WG1…WG12 =
|
|
65
|
+
T1…T12 = Teal · WG1…WG12 = Neutral Grey (the WG token names are kept).
|
|
66
66
|
Each ramp progresses from light backgrounds and interactive fills through
|
|
67
67
|
supporting tones to solid colors and accessible text. Neutral UI borders
|
|
68
68
|
are intentionally restricted to WG3–WG5. ---- */
|
|
@@ -79,20 +79,20 @@
|
|
|
79
79
|
--color-t11: #016159;
|
|
80
80
|
--color-t12: #0f3c37;
|
|
81
81
|
|
|
82
|
-
--color-wg1: #
|
|
83
|
-
--color-wg2: #
|
|
84
|
-
--color-wg3: #
|
|
85
|
-
--color-wg4: #
|
|
86
|
-
--color-wg5: #
|
|
87
|
-
--color-wg6: #
|
|
88
|
-
--color-wg7: #
|
|
89
|
-
--color-wg8: #
|
|
90
|
-
--color-wg9: #
|
|
91
|
-
--color-wg10: #
|
|
92
|
-
--color-wg11: #
|
|
93
|
-
--color-wg12: #
|
|
94
|
-
|
|
95
|
-
/* Deprecated
|
|
82
|
+
--color-wg1: #fafafa;
|
|
83
|
+
--color-wg2: #f6f6f6;
|
|
84
|
+
--color-wg3: #f1f1f1;
|
|
85
|
+
--color-wg4: #ececec;
|
|
86
|
+
--color-wg5: #e6e6e6;
|
|
87
|
+
--color-wg6: #dedede;
|
|
88
|
+
--color-wg7: #d4d4d4;
|
|
89
|
+
--color-wg8: #bdbdbd;
|
|
90
|
+
--color-wg9: #868686;
|
|
91
|
+
--color-wg10: #7c7b7b;
|
|
92
|
+
--color-wg11: #5e5d5d;
|
|
93
|
+
--color-wg12: #202020;
|
|
94
|
+
|
|
95
|
+
/* Deprecated NG names resolve step-for-step to the canonical WG ramp.
|
|
96
96
|
Keep these aliases so existing consumer utilities continue to render. */
|
|
97
97
|
--color-ng1: var(--color-wg1);
|
|
98
98
|
--color-ng2: var(--color-wg2);
|
|
@@ -236,41 +236,26 @@
|
|
|
236
236
|
convention). */
|
|
237
237
|
--radius-dot: 2px;
|
|
238
238
|
|
|
239
|
-
/* ---- Elevation ----
|
|
240
|
-
|
|
239
|
+
/* ---- Elevation ---- five shadows, nothing else (ADS 1.0.8).
|
|
240
|
+
A shadow means "this layer floats above the page". Everything that sits
|
|
241
|
+
in the page — cards, panels, chips, buttons, tabs, fields — is flat and
|
|
242
|
+
reads by fill or border. Neutral WG12 ink (rgb 32 32 32); each floating
|
|
243
|
+
level pairs a 4% hairline (crisp edge on white), a tight contact shadow
|
|
244
|
+
and a wide ambient one. */
|
|
241
245
|
--shadow-0: none;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
--shadow-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
--shadow-
|
|
248
|
-
|
|
249
|
-
/*
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
/* Pinned-table-column smudges — whisper-soft directional casts shown only
|
|
254
|
-
while content is hidden behind a sticky column (Table is scroll-aware).
|
|
255
|
-
Deep negative spread keeps the edge feathered; the tint is warm grey. */
|
|
246
|
+
/* Menus, popovers, listboxes, tooltips with content, toasts, toolbars and
|
|
247
|
+
the chat composer dock. */
|
|
248
|
+
--shadow-float: 0 0 0 1px rgb(32 32 32 / 0.04), 0 2px 4px rgb(32 32 32 / 0.04), 0 8px 20px -4px rgb(32 32 32 / 0.10);
|
|
249
|
+
/* Modals, dialogs and overlay drawers — one step above float so a dialog
|
|
250
|
+
always reads on top of a menu. */
|
|
251
|
+
--shadow-overlay: 0 0 0 1px rgb(32 32 32 / 0.04), 0 4px 8px rgb(32 32 32 / 0.04), 0 16px 36px -8px rgb(32 32 32 / 0.14);
|
|
252
|
+
|
|
253
|
+
/* Table scroll hints — whisper-soft directional casts shown only while
|
|
254
|
+
content is hidden behind a sticky column (Table is scroll-aware). Deep
|
|
255
|
+
negative spread keeps the edge feathered; the tint is neutral grey. */
|
|
256
256
|
--shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
257
257
|
--shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
258
258
|
|
|
259
|
-
/* ---- Button inset depth ---- Polaris-inspired stacked inner edges. The
|
|
260
|
-
lower contact line, quiet inner outline, and half-pixel top catch make
|
|
261
|
-
solid actions feel tactile without adding a decorative outer border. */
|
|
262
|
-
--inner-glow-cta: inset 0 -1px 0 1px rgb(32 32 32 / 0.22),
|
|
263
|
-
inset 0 0 0 1px rgb(32 32 32 / 0.12),
|
|
264
|
-
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.28);
|
|
265
|
-
/* Compatibility treatment for explicitly raised light fills. Its visible
|
|
266
|
-
edge is entirely inset, so it keeps a transparent outer border. */
|
|
267
|
-
--inner-glow-fill: inset 0 -1px 0 0 var(--border-primary),
|
|
268
|
-
inset 0 0 0 1px rgb(32 32 32 / 0.1),
|
|
269
|
-
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.86);
|
|
270
|
-
/* Text fields — a whisper of inset depth so the writing surface reads
|
|
271
|
-
recessed into the page (persists through hover/focus/invalid). */
|
|
272
|
-
--inner-glow-field: inset 0 1px 2px 0 rgb(32 32 32 / 0.06);
|
|
273
|
-
|
|
274
259
|
/* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
|
|
275
260
|
--sidebar-width: 15rem; /* 240px — primary nav rail */
|
|
276
261
|
--sidebar-width-sm: 3.5rem; /* 56px — collapsed icon rail */
|
|
@@ -415,7 +400,7 @@
|
|
|
415
400
|
--color-menu-stroke: var(--menu-stroke);
|
|
416
401
|
--color-toast-stroke: var(--toast-stroke);
|
|
417
402
|
--color-tree-stroke: var(--tree-stroke);
|
|
418
|
-
/* Focus ring and scrim, both translucent
|
|
403
|
+
/* Focus ring and scrim, both translucent neutral ink. */
|
|
419
404
|
--color-ring: var(--ring);
|
|
420
405
|
--color-overlay: var(--overlay);
|
|
421
406
|
|
|
@@ -451,21 +436,21 @@
|
|
|
451
436
|
--foreground: var(--color-wg12); /* step 12 */
|
|
452
437
|
|
|
453
438
|
/* Both surface contexts point directly into the approved WG text steps.
|
|
454
|
-
WG9 is the tertiary/de-emphasis step for nonessential metadata.
|
|
455
|
-
|
|
456
|
-
AA. */
|
|
439
|
+
WG9 is the tertiary/de-emphasis step for nonessential metadata. On the
|
|
440
|
+
neutral ramp it clears large-text AA only; use Secondary whenever normal
|
|
441
|
+
text must clear AA. */
|
|
457
442
|
--text-on-white-primary: var(--color-wg12); /* 16.29:1 · AAA */
|
|
458
|
-
--text-on-white-secondary: var(--color-wg11); /*
|
|
459
|
-
--text-on-white-tertiary: var(--color-wg9); /*
|
|
460
|
-
--text-on-warm-grey-primary: var(--color-wg12); /*
|
|
461
|
-
--text-on-warm-grey-secondary: var(--color-wg11); /*
|
|
462
|
-
--text-on-warm-grey-tertiary: var(--color-wg9); /*
|
|
443
|
+
--text-on-white-secondary: var(--color-wg11); /* 6.56:1 · AA */
|
|
444
|
+
--text-on-white-tertiary: var(--color-wg9); /* 3.64:1 · large text AA */
|
|
445
|
+
--text-on-warm-grey-primary: var(--color-wg12); /* 15.08:1 on WG2 · AAA */
|
|
446
|
+
--text-on-warm-grey-secondary: var(--color-wg11); /* 6.07:1 on WG2 · AA */
|
|
447
|
+
--text-on-warm-grey-tertiary: var(--color-wg9); /* 3.37:1 on WG2 · large text AA */
|
|
463
448
|
|
|
464
449
|
/* Existing context-free utilities remain conservative compatibility aliases
|
|
465
450
|
across WG2–WG4 and White until their call sites adopt a surface role. */
|
|
466
|
-
--text-primary: var(--color-wg12); /*
|
|
467
|
-
--text-secondary: var(--color-wg11); /*
|
|
468
|
-
--text-tertiary: color-mix(in srgb, var(--color-wg10)
|
|
451
|
+
--text-primary: var(--color-wg12); /* 13.79:1 AAA (WG4 min surf) */
|
|
452
|
+
--text-secondary: var(--color-wg11); /* 5.56:1 AA (WG4 min surf) */
|
|
453
|
+
--text-tertiary: color-mix(in srgb, var(--color-wg10) 40%, var(--color-wg11)); /* 4.63:1 AA (WG4) */
|
|
469
454
|
|
|
470
455
|
--surface: var(--color-wg3); /* step 3 · tinted canvas */
|
|
471
456
|
--surface-foreground: var(--color-wg12);
|
|
@@ -490,8 +475,9 @@
|
|
|
490
475
|
--brand-hover: var(--action-primary-hover);
|
|
491
476
|
--brand-text: var(--action-primary-text);
|
|
492
477
|
|
|
493
|
-
/* Interactive row hover/focus uses the
|
|
494
|
-
--table-row-hover: var(--color-
|
|
478
|
+
/* Interactive row hover/focus uses the WG1 highlight wash. */
|
|
479
|
+
--table-row-hover: var(--color-wg1);
|
|
480
|
+
/* Start color for the row's selection fade; its right edge returns to White. */
|
|
495
481
|
--table-row-selected: var(--action-primary-soft);
|
|
496
482
|
|
|
497
483
|
/* Quiet component fill. WG3 is the first interactive-background
|
|
@@ -557,8 +543,8 @@
|
|
|
557
543
|
--sidebar-foreground: var(--foreground);
|
|
558
544
|
--sidebar-primary: var(--brand);
|
|
559
545
|
--sidebar-primary-foreground: var(--brand-foreground);
|
|
560
|
-
--sidebar-accent: var(--
|
|
561
|
-
--sidebar-accent-foreground: var(--
|
|
546
|
+
--sidebar-accent: var(--elevated);
|
|
547
|
+
--sidebar-accent-foreground: var(--foreground);
|
|
562
548
|
--sidebar-border: var(--border);
|
|
563
549
|
--sidebar-ring: var(--ring);
|
|
564
550
|
--popover: var(--elevated);
|
|
@@ -588,6 +574,12 @@
|
|
|
588
574
|
* clipped to the panel radius. Honours reduced-motion.
|
|
589
575
|
* ============================================================
|
|
590
576
|
*/
|
|
577
|
+
/* Icon-only controls fill their icon on hover instead of drawing a
|
|
578
|
+
background (see IconHoverFillContext in src/lib/icons.tsx). */
|
|
579
|
+
.ads-icon-hover { display: none; }
|
|
580
|
+
[data-icon-hover-fill]:hover:not(:disabled) .ads-icon-rest { display: none; }
|
|
581
|
+
[data-icon-hover-fill]:hover:not(:disabled) .ads-icon-hover { display: block; }
|
|
582
|
+
|
|
591
583
|
@keyframes ads-ripple-wave {
|
|
592
584
|
0% { opacity: 0.6; transform: scale(0.15); }
|
|
593
585
|
100% { opacity: 0; transform: scale(1.08); }
|