@actioneer/ads 1.0.4 → 1.0.6
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 +75 -75
- package/README.md +205 -0
- package/components/ai-elements/agent-trace.js +14 -14
- package/components/ai-elements/chain-of-thought.js +3 -3
- package/components/ai-elements/chart.js +3 -3
- package/components/ai-elements/inline-citation.js +2 -2
- package/components/ai-elements/message.js +1 -1
- package/components/ai-elements/research-activity.js +4 -4
- package/components/answer-sources.js +3 -3
- package/components/answer.js +3 -3
- package/components/assistant-ui/action-bar.js +2 -2
- package/components/assistant-ui/attachment.js +5 -5
- package/components/assistant-ui/badge.js +1 -1
- package/components/assistant-ui/branch-picker.js +1 -1
- package/components/assistant-ui/composer-add-context.js +7 -7
- package/components/assistant-ui/composer-deep-research.js +3 -3
- package/components/assistant-ui/composer-harness.js +1 -1
- package/components/assistant-ui/composer-trigger-popover.js +8 -8
- package/components/assistant-ui/composer.js +45 -45
- package/components/assistant-ui/file.js +9 -9
- package/components/assistant-ui/image.js +1 -1
- package/components/assistant-ui/markdown-text.js +1 -1
- package/components/assistant-ui/message-timing.js +1 -1
- package/components/assistant-ui/reasoning.js +10 -10
- package/components/assistant-ui/thread.js +1 -1
- package/components/assistant-ui/tool-fallback.js +2 -2
- package/components/assistant-ui/tool-group.js +3 -3
- package/components/autocomplete.js +28 -27
- package/components/brand-loader.d.ts +1 -1
- package/components/brand-loader.js +9 -9
- package/components/chart.js +5 -5
- package/components/checkbox.js +16 -16
- package/components/chip.js +33 -33
- package/components/collapsible.js +14 -12
- package/components/command-palette.js +37 -37
- package/components/connector-card.js +1 -1
- package/components/date-range-picker.js +2 -2
- package/components/dropdown.js +1 -1
- package/components/field.js +1 -1
- package/components/file-dropzone.js +2 -2
- package/components/infinite-canvas.js +1 -1
- package/components/modal.js +6 -6
- package/components/pagination.js +23 -23
- package/components/radio.js +1 -1
- package/components/segmented.js +23 -23
- package/components/selection-action-bar.js +13 -13
- package/components/sidebar.js +5 -5
- package/components/stepper.d.ts +1 -1
- package/components/stepper.js +4 -4
- package/components/switch.js +7 -7
- package/components/tooltip.js +1 -1
- package/components/tree.js +20 -20
- package/components/ui/button.js +21 -21
- package/components/ui/tooltip.js +3 -3
- package/llms.txt +6 -6
- package/manifest.json +13 -13
- package/package.json +1 -1
- package/styles.css +49 -56
- package/theme.css +49 -56
package/components/stepper.js
CHANGED
|
@@ -18,8 +18,8 @@ const b = y(
|
|
|
18
18
|
error: "bg-danger text-danger-foreground"
|
|
19
19
|
},
|
|
20
20
|
size: {
|
|
21
|
-
sm: "size-5 text-
|
|
22
|
-
md: "size-6 text-
|
|
21
|
+
sm: "size-5 text-s [&>svg]:size-3",
|
|
22
|
+
md: "size-6 text-s [&>svg]:size-3.5"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
defaultVariants: { status: "upcoming", size: "md" }
|
|
@@ -72,7 +72,7 @@ const b = y(
|
|
|
72
72
|
{
|
|
73
73
|
className: a(
|
|
74
74
|
"truncate whitespace-nowrap",
|
|
75
|
-
i === "sm" ? "text-
|
|
75
|
+
i === "sm" ? "text-s" : "text-base",
|
|
76
76
|
r === "upcoming" ? "text-tertiary" : "text-foreground",
|
|
77
77
|
r === "error" && "text-danger"
|
|
78
78
|
),
|
|
@@ -117,7 +117,7 @@ const b = y(
|
|
|
117
117
|
{
|
|
118
118
|
className: a(
|
|
119
119
|
"truncate",
|
|
120
|
-
i === "sm" ? "text-
|
|
120
|
+
i === "sm" ? "text-s" : "text-base",
|
|
121
121
|
r === "upcoming" ? "text-tertiary" : "text-foreground",
|
|
122
122
|
r === "error" && "text-danger"
|
|
123
123
|
),
|
package/components/switch.js
CHANGED
|
@@ -17,27 +17,27 @@ const v = {
|
|
|
17
17
|
}
|
|
18
18
|
}, y = c.forwardRef(
|
|
19
19
|
({
|
|
20
|
-
className:
|
|
20
|
+
className: m,
|
|
21
21
|
checked: t = !1,
|
|
22
22
|
onCheckedChange: e,
|
|
23
|
-
size:
|
|
23
|
+
size: d = "md",
|
|
24
24
|
disabled: s,
|
|
25
25
|
children: o,
|
|
26
26
|
...r
|
|
27
|
-
},
|
|
28
|
-
const l = v[
|
|
27
|
+
}, f) => {
|
|
28
|
+
const l = v[d], a = c.useId(), u = r["aria-label"] != null || r["aria-labelledby"] != null, b = o && !u ? a : void 0;
|
|
29
29
|
return /* @__PURE__ */ p(
|
|
30
30
|
"label",
|
|
31
31
|
{
|
|
32
32
|
className: n(
|
|
33
|
-
"inline-flex items-center gap-2 text-
|
|
33
|
+
"inline-flex items-center gap-2 text-m text-foreground select-none",
|
|
34
34
|
s ? "cursor-not-allowed opacity-50" : "cursor-pointer"
|
|
35
35
|
),
|
|
36
36
|
children: [
|
|
37
37
|
/* @__PURE__ */ i(
|
|
38
38
|
"button",
|
|
39
39
|
{
|
|
40
|
-
ref:
|
|
40
|
+
ref: f,
|
|
41
41
|
type: "button",
|
|
42
42
|
role: "switch",
|
|
43
43
|
"aria-checked": t,
|
|
@@ -51,7 +51,7 @@ const v = {
|
|
|
51
51
|
"disabled:cursor-not-allowed",
|
|
52
52
|
t ? "bg-brand" : "bg-input",
|
|
53
53
|
l.track,
|
|
54
|
-
|
|
54
|
+
m
|
|
55
55
|
),
|
|
56
56
|
...r,
|
|
57
57
|
children: /* @__PURE__ */ i(w, { reducedMotion: "user", children: /* @__PURE__ */ i(
|
package/components/tooltip.js
CHANGED
package/components/tree.js
CHANGED
|
@@ -12,7 +12,7 @@ const B = t.forwardRef(
|
|
|
12
12
|
ref: n,
|
|
13
13
|
role: "tree",
|
|
14
14
|
"data-variant": a,
|
|
15
|
-
className: f("group/tree flex flex-col gap-0.5 text-
|
|
15
|
+
className: f("group/tree flex flex-col gap-0.5 text-m", u),
|
|
16
16
|
...m
|
|
17
17
|
}
|
|
18
18
|
)
|
|
@@ -24,29 +24,29 @@ const E = t.forwardRef(
|
|
|
24
24
|
label: a,
|
|
25
25
|
icon: m,
|
|
26
26
|
count: n,
|
|
27
|
-
endContent:
|
|
27
|
+
endContent: x,
|
|
28
28
|
defaultExpanded: R = !1,
|
|
29
|
-
expanded:
|
|
30
|
-
onExpandedChange:
|
|
31
|
-
href:
|
|
29
|
+
expanded: v,
|
|
30
|
+
onExpandedChange: b,
|
|
31
|
+
href: y,
|
|
32
32
|
isActive: s,
|
|
33
|
-
onSelect:
|
|
33
|
+
onSelect: p,
|
|
34
34
|
children: l,
|
|
35
35
|
..._
|
|
36
36
|
}, j) => {
|
|
37
|
-
const o = t.Children.count(l) > 0,
|
|
38
|
-
|
|
37
|
+
const o = t.Children.count(l) > 0, N = v !== void 0, [z, F] = t.useState(R), r = N ? v : z, w = (c) => {
|
|
38
|
+
N || F(c), b == null || b(c);
|
|
39
39
|
}, d = f(
|
|
40
40
|
"group/tree-row flex h-9 w-full items-center gap-1.5 rounded-md px-2 text-left",
|
|
41
41
|
"outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring",
|
|
42
42
|
"[&_svg]:size-4 [&_svg]:shrink-0",
|
|
43
43
|
"group-data-[variant=sidebar]/tree:border group-data-[variant=sidebar]/tree:border-transparent group-data-[variant=sidebar]/tree:text-wg11",
|
|
44
|
-
"group-data-[variant=sidebar]/tree:[&_svg]:size-5
|
|
45
|
-
s ? "bg-
|
|
46
|
-
),
|
|
47
|
-
|
|
44
|
+
"group-data-[variant=sidebar]/tree:[&_svg]:size-5",
|
|
45
|
+
s ? "bg-action-primary-soft font-normal text-brand-text [&_svg]:text-brand-text group-data-[variant=sidebar]/tree:border-brand group-data-[variant=sidebar]/tree:bg-action-primary-soft group-data-[variant=sidebar]/tree:text-brand-text" : "text-muted-foreground hover:bg-action-primary-soft hover:text-brand-text group-data-[variant=sidebar]/tree:hover:bg-action-primary-soft group-data-[variant=sidebar]/tree:hover:text-brand-text"
|
|
46
|
+
), g = m ?? (o ? null : /* @__PURE__ */ e(W, { className: "text-tertiary" })), k = s && t.isValidElement(g) ? t.cloneElement(
|
|
47
|
+
g,
|
|
48
48
|
{ weight: "fill" }
|
|
49
|
-
) :
|
|
49
|
+
) : g, C = /* @__PURE__ */ e(
|
|
50
50
|
V,
|
|
51
51
|
{
|
|
52
52
|
className: f(
|
|
@@ -55,30 +55,30 @@ const E = t.forwardRef(
|
|
|
55
55
|
),
|
|
56
56
|
strokeWidth: 2
|
|
57
57
|
}
|
|
58
|
-
), I = (n ?? t.Children.count(l)) > 0 && /* @__PURE__ */ e("span", { className: "shrink-0 tabular-nums text-
|
|
58
|
+
), I = (n ?? t.Children.count(l)) > 0 && /* @__PURE__ */ e("span", { className: "shrink-0 tabular-nums text-s text-tertiary", children: n ?? t.Children.count(l) }), h = /* @__PURE__ */ i(T, { children: [
|
|
59
59
|
k,
|
|
60
60
|
/* @__PURE__ */ e("span", { className: "min-w-0 flex-1 truncate", children: a }),
|
|
61
|
-
|
|
61
|
+
x,
|
|
62
62
|
o && /* @__PURE__ */ i(T, { children: [
|
|
63
63
|
I,
|
|
64
64
|
C
|
|
65
65
|
] })
|
|
66
66
|
] });
|
|
67
67
|
return /* @__PURE__ */ i("div", { ref: j, role: "treeitem", "aria-expanded": o ? r : void 0, "aria-selected": s, className: u, ..._, children: [
|
|
68
|
-
o &&
|
|
68
|
+
o && p ? /* @__PURE__ */ i("div", { className: d, children: [
|
|
69
69
|
/* @__PURE__ */ i(
|
|
70
70
|
"button",
|
|
71
71
|
{
|
|
72
72
|
type: "button",
|
|
73
73
|
className: "flex min-w-0 flex-1 items-center gap-1.5 rounded-sm text-left outline-none focus-visible:ring-3 focus-visible:ring-ring",
|
|
74
|
-
onClick:
|
|
74
|
+
onClick: p,
|
|
75
75
|
children: [
|
|
76
76
|
k,
|
|
77
77
|
/* @__PURE__ */ e("span", { className: "min-w-0 flex-1 truncate", children: a })
|
|
78
78
|
]
|
|
79
79
|
}
|
|
80
80
|
),
|
|
81
|
-
|
|
81
|
+
x,
|
|
82
82
|
I,
|
|
83
83
|
/* @__PURE__ */ e(
|
|
84
84
|
"button",
|
|
@@ -87,11 +87,11 @@ const E = t.forwardRef(
|
|
|
87
87
|
"aria-label": `${r ? "Collapse" : "Expand"} ${typeof a == "string" ? a : "tree item"}`,
|
|
88
88
|
"aria-expanded": r,
|
|
89
89
|
className: "inline-flex size-7 shrink-0 items-center justify-center rounded-sm outline-none hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring",
|
|
90
|
-
onClick: () =>
|
|
90
|
+
onClick: () => w(!r),
|
|
91
91
|
children: C
|
|
92
92
|
}
|
|
93
93
|
)
|
|
94
|
-
] }) : o ? /* @__PURE__ */ e("button", { type: "button", className: d, onClick: () =>
|
|
94
|
+
] }) : o ? /* @__PURE__ */ e("button", { type: "button", className: d, onClick: () => w(!r), children: h }) : y ? /* @__PURE__ */ e("a", { href: y, className: d, "aria-current": s ? "page" : void 0, children: h }) : /* @__PURE__ */ e("button", { type: "button", className: d, onClick: p, children: h }),
|
|
95
95
|
/* @__PURE__ */ e(M, { reducedMotion: "user", children: /* @__PURE__ */ e($, { initial: !1, children: o && r && /* @__PURE__ */ e(
|
|
96
96
|
D.div,
|
|
97
97
|
{
|
package/components/ui/button.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
2
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
3
3
|
import { cva as a } from "class-variance-authority";
|
|
4
4
|
import { Slot as d } from "radix-ui";
|
|
5
5
|
import { cn as c } from "../../lib/cn.js";
|
|
6
6
|
const u = a(
|
|
7
|
-
"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-
|
|
7
|
+
"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-m font-medium whitespace-nowrap transition-[background-color,border-color,color,box-shadow,transform] duration-150 ease-out outline-none motion-reduce:transition-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
8
8
|
{
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
|
-
default: "bg-primary text-primary-foreground hover:bg-primary
|
|
11
|
+
default: "bg-action-primary text-action-primary-foreground hover:bg-action-primary-hover",
|
|
12
12
|
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20",
|
|
13
|
-
outline: "border bg-background shadow-100 hover:bg-
|
|
14
|
-
secondary: "bg-
|
|
15
|
-
ghost: "hover:bg-
|
|
16
|
-
link: "text-primary underline-offset-4 hover:underline"
|
|
13
|
+
outline: "border bg-background shadow-100 hover:border-action-primary hover:bg-action-primary-soft hover:text-action-primary-text",
|
|
14
|
+
secondary: "bg-action-primary-soft text-action-primary-text hover:bg-action-primary-soft/80",
|
|
15
|
+
ghost: "hover:bg-action-primary-soft hover:text-action-primary-text",
|
|
16
|
+
link: "text-action-primary-text underline-offset-4 hover:underline"
|
|
17
17
|
},
|
|
18
18
|
size: {
|
|
19
19
|
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
20
|
-
xs: "h-6 gap-1 rounded-sm px-2
|
|
20
|
+
xs: "h-6 gap-1 rounded-sm px-2 has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
|
|
21
21
|
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
|
|
22
22
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
23
23
|
icon: "size-9",
|
|
@@ -32,26 +32,26 @@ const u = a(
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
);
|
|
35
|
-
function
|
|
36
|
-
className:
|
|
37
|
-
variant:
|
|
38
|
-
size:
|
|
39
|
-
asChild:
|
|
40
|
-
...
|
|
35
|
+
function g({
|
|
36
|
+
className: r,
|
|
37
|
+
variant: t = "default",
|
|
38
|
+
size: e = "default",
|
|
39
|
+
asChild: o = !1,
|
|
40
|
+
...i
|
|
41
41
|
}) {
|
|
42
|
-
const n =
|
|
43
|
-
return /* @__PURE__ */
|
|
42
|
+
const n = o ? d.Root : "button";
|
|
43
|
+
return /* @__PURE__ */ s(
|
|
44
44
|
n,
|
|
45
45
|
{
|
|
46
46
|
"data-slot": "button",
|
|
47
|
-
"data-variant":
|
|
48
|
-
"data-size":
|
|
49
|
-
className: c(u({ variant:
|
|
50
|
-
...
|
|
47
|
+
"data-variant": t,
|
|
48
|
+
"data-size": e,
|
|
49
|
+
className: c(u({ variant: t, size: e, className: r })),
|
|
50
|
+
...i
|
|
51
51
|
}
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
export {
|
|
55
|
-
|
|
55
|
+
g as Button,
|
|
56
56
|
u as buttonVariants
|
|
57
57
|
};
|
package/components/ui/tooltip.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as t, jsxs as m } from "react/jsx-runtime";
|
|
3
3
|
import * as s from "react";
|
|
4
4
|
import { Tooltip as i } from "radix-ui";
|
|
5
|
-
import { MotionConfig as
|
|
5
|
+
import { MotionConfig as g, AnimatePresence as x, motion as v } from "motion/react";
|
|
6
6
|
import { cn as T } from "../../lib/cn.js";
|
|
7
7
|
import { tooltipVariants as h } from "../../lib/motion.js";
|
|
8
8
|
const u = s.createContext(!1);
|
|
@@ -54,7 +54,7 @@ function y({
|
|
|
54
54
|
...n
|
|
55
55
|
}) {
|
|
56
56
|
const a = s.useContext(u);
|
|
57
|
-
return /* @__PURE__ */ t(i.Portal, { children: /* @__PURE__ */ t(
|
|
57
|
+
return /* @__PURE__ */ t(i.Portal, { children: /* @__PURE__ */ t(g, { reducedMotion: "user", children: /* @__PURE__ */ t(x, { initial: !1, children: a && /* @__PURE__ */ t(
|
|
58
58
|
i.Content,
|
|
59
59
|
{
|
|
60
60
|
"data-slot": "tooltip-content",
|
|
@@ -70,7 +70,7 @@ function y({
|
|
|
70
70
|
animate: "visible",
|
|
71
71
|
exit: "hidden",
|
|
72
72
|
className: T(
|
|
73
|
-
"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md bg-foreground px-3 py-1.5 text-
|
|
73
|
+
"z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md bg-foreground px-3 py-1.5 text-s text-balance text-background",
|
|
74
74
|
o
|
|
75
75
|
),
|
|
76
76
|
children: [
|
package/llms.txt
CHANGED
|
@@ -41,10 +41,10 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
41
41
|
- `action-primary-text` — Primary CTA role — restrained Studio teal, used sparingly.
|
|
42
42
|
- `action-primary-soft` — Primary CTA role — restrained Studio teal, used sparingly.
|
|
43
43
|
- `field-focus` — Primary CTA role — restrained Studio teal, used sparingly.
|
|
44
|
-
- `brand` —
|
|
45
|
-
- `brand-foreground` —
|
|
46
|
-
- `brand-hover` —
|
|
47
|
-
- `brand-text` —
|
|
44
|
+
- `brand` — Shared brand roles for control states, primary accents, and marks.
|
|
45
|
+
- `brand-foreground` — Shared brand roles for control states, primary accents, and marks.
|
|
46
|
+
- `brand-hover` — Shared brand roles for control states, primary accents, and marks.
|
|
47
|
+
- `brand-text` — Shared brand roles for control states, primary accents, and marks.
|
|
48
48
|
- `fill` — Quiet fill — avatars, chips, and disabled controls
|
|
49
49
|
- `fill-foreground` — Quiet fill — avatars, chips, and disabled controls
|
|
50
50
|
- `table-shell` — Table surfaces: the white tray, its hairlines, and header ink.
|
|
@@ -53,8 +53,8 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
53
53
|
- `artifact-canvas` — The artifact sheet: white warmed by a trace of the brand mark.
|
|
54
54
|
- `accent` — The active and selected wash, one step above hover.
|
|
55
55
|
- `accent-foreground` — The active and selected wash, one step above hover.
|
|
56
|
-
- `success` —
|
|
57
|
-
- `success-foreground` —
|
|
56
|
+
- `success` — Grass green 700 clears AA on White and both success soft fills.
|
|
57
|
+
- `success-foreground` — Grass green 700 clears AA on White and both success soft fills.
|
|
58
58
|
- `warning` — Amber-500 fill kept (it IS the caution signal); dark ink foreground instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1).
|
|
59
59
|
- `warning-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1).
|
|
60
60
|
- `danger` — Danger and info: solid semantic fills carrying white foregrounds.
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actioneer/ads",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"importPath": "@actioneer/ads",
|
|
5
5
|
"styleImport": "@import \"@actioneer/ads/styles.css\";",
|
|
6
6
|
"families": [
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
"text-brand",
|
|
278
278
|
"border-brand"
|
|
279
279
|
],
|
|
280
|
-
"description": "
|
|
280
|
+
"description": "Shared brand roles for control states, primary accents, and marks."
|
|
281
281
|
},
|
|
282
282
|
{
|
|
283
283
|
"name": "--color-brand-foreground",
|
|
@@ -286,7 +286,7 @@
|
|
|
286
286
|
"text-brand-foreground",
|
|
287
287
|
"bg-brand-foreground"
|
|
288
288
|
],
|
|
289
|
-
"description": "
|
|
289
|
+
"description": "Shared brand roles for control states, primary accents, and marks."
|
|
290
290
|
},
|
|
291
291
|
{
|
|
292
292
|
"name": "--color-brand-hover",
|
|
@@ -296,7 +296,7 @@
|
|
|
296
296
|
"text-brand-hover",
|
|
297
297
|
"border-brand-hover"
|
|
298
298
|
],
|
|
299
|
-
"description": "
|
|
299
|
+
"description": "Shared brand roles for control states, primary accents, and marks."
|
|
300
300
|
},
|
|
301
301
|
{
|
|
302
302
|
"name": "--color-brand-text",
|
|
@@ -306,7 +306,7 @@
|
|
|
306
306
|
"text-brand-text",
|
|
307
307
|
"border-brand-text"
|
|
308
308
|
],
|
|
309
|
-
"description": "
|
|
309
|
+
"description": "Shared brand roles for control states, primary accents, and marks."
|
|
310
310
|
},
|
|
311
311
|
{
|
|
312
312
|
"name": "--color-fill",
|
|
@@ -393,7 +393,7 @@
|
|
|
393
393
|
"text-success",
|
|
394
394
|
"border-success"
|
|
395
395
|
],
|
|
396
|
-
"description": "
|
|
396
|
+
"description": "Grass green 700 clears AA on White and both success soft fills."
|
|
397
397
|
},
|
|
398
398
|
{
|
|
399
399
|
"name": "--color-success-foreground",
|
|
@@ -402,7 +402,7 @@
|
|
|
402
402
|
"text-success-foreground",
|
|
403
403
|
"bg-success-foreground"
|
|
404
404
|
],
|
|
405
|
-
"description": "
|
|
405
|
+
"description": "Grass green 700 clears AA on White and both success soft fills."
|
|
406
406
|
},
|
|
407
407
|
{
|
|
408
408
|
"name": "--color-warning",
|
|
@@ -799,8 +799,8 @@
|
|
|
799
799
|
],
|
|
800
800
|
"default": "solid",
|
|
801
801
|
"options": {
|
|
802
|
-
"solid": "The
|
|
803
|
-
"secondary": "A
|
|
802
|
+
"solid": "The teal primary CTA; shares the brand palette used by checked controls and selected states.",
|
|
803
|
+
"secondary": "A teal outlined companion action with accessible brand text and pale-teal hover fill.",
|
|
804
804
|
"outline": "Unfilled with a visible border, lighter than secondary but still clearly a button.",
|
|
805
805
|
"ghost": "Unfilled and borderless — the lowest-emphasis button chrome short of link.",
|
|
806
806
|
"link": "Drops all button chrome for inline text-style actions; underlines on hover, no press scale.",
|
|
@@ -5142,7 +5142,7 @@
|
|
|
5142
5142
|
"default": "default",
|
|
5143
5143
|
"options": {
|
|
5144
5144
|
"default": "Neutral heads-up with no status implication, foreground-colored icon/title, no urgency signaled.",
|
|
5145
|
-
"success": "
|
|
5145
|
+
"success": "Grass green confirms a completed or positive outcome.",
|
|
5146
5146
|
"warning": "Flags a non-blocking risk or upcoming issue (e.g. scheduled maintenance), amber accent.",
|
|
5147
5147
|
"danger": "Signals a failure or blocking problem (e.g. connection error) needing attention, red accent.",
|
|
5148
5148
|
"info": "Neutral-positive announcement or tip (e.g. new feature, update available), blue accent — softer than success, less urgent than warning."
|
|
@@ -9669,7 +9669,7 @@
|
|
|
9669
9669
|
"required": false,
|
|
9670
9670
|
"derived": true,
|
|
9671
9671
|
"isDefault": true,
|
|
9672
|
-
"description": "The
|
|
9672
|
+
"description": "The teal primary CTA; shares the brand palette used by checked controls and selected states."
|
|
9673
9673
|
},
|
|
9674
9674
|
{
|
|
9675
9675
|
"id": "state:Button:variant=secondary",
|
|
@@ -9681,7 +9681,7 @@
|
|
|
9681
9681
|
"required": false,
|
|
9682
9682
|
"derived": true,
|
|
9683
9683
|
"isDefault": false,
|
|
9684
|
-
"description": "A
|
|
9684
|
+
"description": "A teal outlined companion action with accessible brand text and pale-teal hover fill."
|
|
9685
9685
|
},
|
|
9686
9686
|
{
|
|
9687
9687
|
"id": "state:Button:variant=outline",
|
|
@@ -14526,7 +14526,7 @@
|
|
|
14526
14526
|
"required": false,
|
|
14527
14527
|
"derived": true,
|
|
14528
14528
|
"isDefault": false,
|
|
14529
|
-
"description": "
|
|
14529
|
+
"description": "Grass green confirms a completed or positive outcome."
|
|
14530
14530
|
},
|
|
14531
14531
|
{
|
|
14532
14532
|
"id": "state:Alert:variant=warning",
|
package/package.json
CHANGED
package/styles.css
CHANGED
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
|
|
60
60
|
/* ---- Type scale ---- seven canonical steps: XS · S · M · L · XL · 2XL · 3XL.
|
|
61
61
|
Roles follow the agent workflow. Root stays 16px so spacing is unaffected. */
|
|
62
|
-
--text-xs: 0.625rem; /* 10px ·
|
|
62
|
+
--text-xs: 0.625rem; /* 10px · noninteractive micro metadata */
|
|
63
63
|
--text-xs--line-height: 0.875rem; /* 14px */
|
|
64
|
-
--text-s: 0.75rem; /* 12px · table headers and
|
|
64
|
+
--text-s: 0.75rem; /* 12px · compact controls, table headers and kickers */
|
|
65
65
|
--text-s--line-height: 1rem; /* 16px */
|
|
66
|
-
--text-m: 0.875rem; /* 14px ·
|
|
66
|
+
--text-m: 0.875rem; /* 14px · body, table cells, form labels and controls */
|
|
67
67
|
--text-m--line-height: 1.25rem; /* 20px */
|
|
68
|
-
--text-l: 1rem; /* 16px · tabs
|
|
68
|
+
--text-l: 1rem; /* 16px · tabs and section titles */
|
|
69
69
|
--text-l--line-height: 1.375rem; /* 22px */
|
|
70
70
|
--text-xl: 1.125rem; /* 18px · metric values and subtitles */
|
|
71
71
|
--text-xl--line-height: 1.5rem; /* 24px */
|
|
@@ -110,18 +110,18 @@
|
|
|
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: #
|
|
113
|
+
--color-wg1: #f9f7f0;
|
|
114
|
+
--color-wg2: #f3f1e9;
|
|
115
|
+
--color-wg3: #efece3;
|
|
116
|
+
--color-wg4: #e8e5db;
|
|
117
|
+
--color-wg5: #dfdcd0;
|
|
118
|
+
--color-wg6: #d4d1c4;
|
|
119
|
+
--color-wg7: #c6c2b3;
|
|
120
|
+
--color-wg8: #aaa698;
|
|
121
|
+
--color-wg9: #79766a;
|
|
122
|
+
--color-wg10: #6b685e;
|
|
123
|
+
--color-wg11: #4d4b44;
|
|
124
|
+
--color-wg12: #21201d;
|
|
125
125
|
|
|
126
126
|
/* Deprecated Neutral Grey names resolve to the canonical Warm Grey ramp.
|
|
127
127
|
Keep these aliases so existing consumer utilities continue to render. */
|
|
@@ -196,16 +196,15 @@
|
|
|
196
196
|
--color-ink-950: var(--color-wg12);
|
|
197
197
|
|
|
198
198
|
/* ---- Semantic accent ramps ---- */
|
|
199
|
-
/*
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
--color-success-
|
|
203
|
-
--color-success-
|
|
204
|
-
--color-success-
|
|
205
|
-
--color-success-
|
|
206
|
-
--color-success-
|
|
207
|
-
--color-success-
|
|
208
|
-
--color-success-700: #516923;
|
|
199
|
+
/* Grass green keeps positive states distinct from primary-action teal.
|
|
200
|
+
Soft fills use 50/100; 700 carries accessible status text and solid fills. */
|
|
201
|
+
--color-success-50: #f2fbef;
|
|
202
|
+
--color-success-100: #e1f3d8;
|
|
203
|
+
--color-success-300: #b2dda0;
|
|
204
|
+
--color-success-400: #8acb70;
|
|
205
|
+
--color-success-500: #4d9f38;
|
|
206
|
+
--color-success-600: #3b852b;
|
|
207
|
+
--color-success-700: #2d6b22;
|
|
209
208
|
|
|
210
209
|
--color-warning-50: #fffaeb;
|
|
211
210
|
--color-warning-100: #fef0c7;
|
|
@@ -241,8 +240,8 @@
|
|
|
241
240
|
--color-amber-base: #f3a72e;
|
|
242
241
|
--color-amber-deep: #b57414;
|
|
243
242
|
|
|
244
|
-
/*
|
|
245
|
-
--color-brand-mark:
|
|
243
|
+
/* Brand mark and artifact canvas wash share the product teal. */
|
|
244
|
+
--color-brand-mark: var(--brand);
|
|
246
245
|
|
|
247
246
|
/* ---- Radii ---- four canonical steps: XS · S · M · L.
|
|
248
247
|
M (6px) is the default corner radius. */
|
|
@@ -403,7 +402,7 @@
|
|
|
403
402
|
--color-action-primary-soft: var(--action-primary-soft);
|
|
404
403
|
--color-field-focus: var(--field-focus);
|
|
405
404
|
|
|
406
|
-
/*
|
|
405
|
+
/* Shared brand roles for control states, primary accents, and marks. */
|
|
407
406
|
--color-brand: var(--brand);
|
|
408
407
|
--color-brand-foreground: var(--brand-foreground);
|
|
409
408
|
--color-brand-hover: var(--brand-hover);
|
|
@@ -424,9 +423,7 @@
|
|
|
424
423
|
--color-accent: var(--accent);
|
|
425
424
|
--color-accent-foreground: var(--accent-foreground);
|
|
426
425
|
|
|
427
|
-
/*
|
|
428
|
-
success-600 is reserved for non-text marks because its 3.73:1 contrast
|
|
429
|
-
on White does not clear body-text AA. */
|
|
426
|
+
/* Grass green 700 clears AA on White and both success soft fills. */
|
|
430
427
|
--color-success: var(--color-success-700);
|
|
431
428
|
--color-success-foreground: var(--color-white);
|
|
432
429
|
/* Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
@@ -480,8 +477,7 @@
|
|
|
480
477
|
|
|
481
478
|
/* ---- Theme (light only) ---- */
|
|
482
479
|
:root {
|
|
483
|
-
/* Surfaces and
|
|
484
|
-
points into G. */
|
|
480
|
+
/* Surfaces and neutral text use WG; actions and controls share Teal. */
|
|
485
481
|
--background: var(--color-wg2); /* step 2 · canvas */
|
|
486
482
|
--foreground: var(--color-wg12); /* step 12 */
|
|
487
483
|
|
|
@@ -489,18 +485,18 @@
|
|
|
489
485
|
WG9 is the tertiary/de-emphasis step for nonessential metadata. It clears
|
|
490
486
|
normal-text AA on White; use Secondary when normal text on WG2 must clear
|
|
491
487
|
AA. */
|
|
492
|
-
--text-on-white-primary: var(--color-wg12); /* 16.
|
|
493
|
-
--text-on-white-secondary: var(--color-wg11); /* 8.
|
|
494
|
-
--text-on-white-tertiary: var(--color-wg9); /* 4.
|
|
495
|
-
--text-on-warm-grey-primary: var(--color-wg12); /* 14.
|
|
496
|
-
--text-on-warm-grey-secondary: var(--color-wg11); /* 7.
|
|
497
|
-
--text-on-warm-grey-tertiary: var(--color-wg9); /*
|
|
488
|
+
--text-on-white-primary: var(--color-wg12); /* 16.29:1 · AAA */
|
|
489
|
+
--text-on-white-secondary: var(--color-wg11); /* 8.73:1 · AAA */
|
|
490
|
+
--text-on-white-tertiary: var(--color-wg9); /* 4.55:1 · AA */
|
|
491
|
+
--text-on-warm-grey-primary: var(--color-wg12); /* 14.41:1 on WG2 · AAA */
|
|
492
|
+
--text-on-warm-grey-secondary: var(--color-wg11); /* 7.72:1 on WG2 · AAA */
|
|
493
|
+
--text-on-warm-grey-tertiary: var(--color-wg9); /* 4.03:1 on WG2 · large text AA */
|
|
498
494
|
|
|
499
495
|
/* Existing context-free utilities remain conservative compatibility aliases
|
|
500
496
|
across WG2–WG4 and White until their call sites adopt a surface role. */
|
|
501
497
|
--text-primary: var(--color-wg12); /* 12.93:1 AAA (WG4 min surf) */
|
|
502
|
-
--text-secondary: var(--color-wg11); /* 6.
|
|
503
|
-
--text-tertiary: color-mix(in srgb, var(--color-wg10) 80%, var(--color-wg11)); /* 4.
|
|
498
|
+
--text-secondary: var(--color-wg11); /* 6.93:1 AA (WG4 min surf) */
|
|
499
|
+
--text-tertiary: color-mix(in srgb, var(--color-wg10) 80%, var(--color-wg11)); /* 4.83:1 AA (WG4) */
|
|
504
500
|
|
|
505
501
|
--surface: var(--color-wg3); /* step 3 · tinted canvas */
|
|
506
502
|
--surface-foreground: var(--color-wg12);
|
|
@@ -512,25 +508,22 @@
|
|
|
512
508
|
--card: var(--color-white); /* pure white base */
|
|
513
509
|
--card-foreground: var(--color-wg12);
|
|
514
510
|
|
|
515
|
-
/*
|
|
516
|
-
5–10% of a screen). Selection controls keep using neutral `brand` below,
|
|
517
|
-
so tabs, switches, radios, and progress never inherit CTA color. */
|
|
511
|
+
/* One teal action palette shared by CTAs and component interaction states. */
|
|
518
512
|
--action-primary: var(--color-t9);
|
|
519
513
|
--action-primary-foreground: var(--color-white);
|
|
520
514
|
--action-primary-hover: var(--color-t10);
|
|
521
515
|
--action-primary-text: var(--color-t11);
|
|
522
516
|
--action-primary-soft: var(--color-t3);
|
|
523
517
|
|
|
524
|
-
/*
|
|
525
|
-
|
|
526
|
-
--brand: var(--
|
|
527
|
-
--brand-
|
|
528
|
-
--brand-
|
|
529
|
-
--brand-text: var(--color-wg12); /* action text / links */
|
|
518
|
+
/* Brand aliases follow the action roles so every consumer stays in sync. */
|
|
519
|
+
--brand: var(--action-primary);
|
|
520
|
+
--brand-foreground: var(--action-primary-foreground);
|
|
521
|
+
--brand-hover: var(--action-primary-hover);
|
|
522
|
+
--brand-text: var(--action-primary-text);
|
|
530
523
|
|
|
531
524
|
/* Interactive row hover/focus uses the WG2 highlight wash. */
|
|
532
525
|
--table-row-hover: var(--color-wg2);
|
|
533
|
-
--table-row-selected: var(--
|
|
526
|
+
--table-row-selected: var(--action-primary-soft);
|
|
534
527
|
|
|
535
528
|
/* Quiet component fill. WG3 is the first interactive-background
|
|
536
529
|
step, so this remains visible on both white cards and the step-2 canvas. */
|
|
@@ -563,7 +556,7 @@
|
|
|
563
556
|
|
|
564
557
|
/* Stroke width — every standard UI border is exactly 1px. */
|
|
565
558
|
--stroke-width: 1px;
|
|
566
|
-
--ring:
|
|
559
|
+
--ring: var(--brand); /* visible teal focus */
|
|
567
560
|
--overlay: color-mix(in srgb, var(--color-wg12) 50%, transparent); /* WG12 @ 50% */
|
|
568
561
|
|
|
569
562
|
/* Functional / domain tokens — named for their render role, pointing into
|
|
@@ -576,7 +569,7 @@
|
|
|
576
569
|
--chart-context: var(--color-wg6); /* de-emphasised context series */
|
|
577
570
|
--chart-active-bar-opacity: 0.68; /* hover lightens a bar while preserving its series hue */
|
|
578
571
|
--canvas-edge: var(--border-secondary);/* infinite-canvas edges / connectors */
|
|
579
|
-
--texture-ink: var(--
|
|
572
|
+
--texture-ink: var(--brand); /* brand-texture / pixel-blast marks */
|
|
580
573
|
--table-shell: var(--color-white); /* simplified single-surface table */
|
|
581
574
|
--table-stroke: var(--color-wg3); /* table outline + row separators */
|
|
582
575
|
--table-header-foreground: var(--text-tertiary); /* 12px tertiary table heading text */
|
|
@@ -595,8 +588,8 @@
|
|
|
595
588
|
--sidebar-foreground: var(--foreground);
|
|
596
589
|
--sidebar-primary: var(--brand);
|
|
597
590
|
--sidebar-primary-foreground: var(--brand-foreground);
|
|
598
|
-
--sidebar-accent: var(--
|
|
599
|
-
--sidebar-accent-foreground: var(--
|
|
591
|
+
--sidebar-accent: var(--action-primary-soft);
|
|
592
|
+
--sidebar-accent-foreground: var(--brand-text);
|
|
600
593
|
--sidebar-border: var(--border);
|
|
601
594
|
--sidebar-ring: var(--ring);
|
|
602
595
|
--popover: var(--elevated);
|