@adia-ai/web-components 0.8.28 → 0.8.29

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog — @adia-ai/web-components
2
2
 
3
+ ## [0.8.29] — 2026-08-06
4
+
5
+ ### Added
6
+ - **`icon-ui` gains `tone`** — semantic color roles (accent/info/success/warning/danger/muted/neutral) matching badge-ui's vocabulary, mapped to the L3 role text tokens; default `""` inherits currentColor, zero behavior change for existing consumers. Wire-valid through the regenerated A2UI sidecar/catalog (gh#652, PR #658).
7
+
8
+ ### Maintenance
9
+ - **`components/` touched in this release window** (6 file(s), e.g. `icon/icon.a2ui.json`) — carried by the entries above.
10
+ - **`dist/` bundles rebuilt** in this cut's window (4 file(s)) — regenerated from the source changes described above, not independent edits.
11
+
3
12
  ## [0.8.28] — 2026-08-05
4
13
 
5
14
  ### Maintenance
@@ -31,6 +31,20 @@
31
31
  "type": "string",
32
32
  "default": ""
33
33
  },
34
+ "tone": {
35
+ "description": "Semantic color role. Empty (default) inherits currentColor — unchanged from pre-tone behavior. Maps to the L3 role text tokens (--a-{family}-text / --a-fg-muted). Vocabulary mirrors <badge-ui>'s [variant] enum so a status color reads the same whether it comes from a Badge chip or a bare status/trend icon.",
36
+ "type": "string",
37
+ "enum": [
38
+ "accent",
39
+ "info",
40
+ "success",
41
+ "warning",
42
+ "danger",
43
+ "muted",
44
+ "neutral"
45
+ ],
46
+ "default": ""
47
+ },
34
48
  "weight": {
35
49
  "description": "Icon weight — selects the Phosphor weight variant (thin/light/regular/bold/fill/duotone).",
36
50
  "type": "string",
@@ -53,6 +53,8 @@ export class UIIcon extends UIElement {
53
53
  label: { type: String, default: '', reflect: true },
54
54
  /** regular | thin | light | bold | fill | duotone */
55
55
  weight: { type: String, default: 'regular', reflect: true },
56
+ /** '' | accent | info | success | warning | danger | muted | neutral */
57
+ tone: { type: String, default: '', reflect: true },
56
58
  };
57
59
 
58
60
  // Incremented when the icon registry becomes ready so the reactive
@@ -1,6 +1,7 @@
1
1
  @scope (icon-ui) {
2
2
  :where(:scope) {
3
- --icon-size: var(--a-icon-size, calc(1em + 0.125rem));
3
+ --icon-size: var(--a-icon-size, calc(1em + 0.125rem));
4
+ --icon-color: currentColor;
4
5
  }
5
6
 
6
7
  :scope {
@@ -10,6 +11,7 @@
10
11
  justify-content: center;
11
12
  width: var(--icon-size);
12
13
  height: var(--icon-size);
14
+ color: var(--icon-color);
13
15
  flex-shrink: 0;
14
16
  line-height: 0;
15
17
  }
@@ -25,4 +27,17 @@
25
27
  placeholders, fill-the-parent) use the free-form string prop
26
28
  (size="48", size="3rem", size="100%"), which sets --icon-size
27
29
  inline from icon.class.js. */
30
+
31
+ /* ── Tone (override --icon-color) ────────────────────────────────
32
+ Consumes the L3 role text tokens — same source badge-ui's `muted`
33
+ (default) variant reads — so a tone-carrying icon matches an
34
+ equivalent Badge chip's foreground color exactly. `accent` maps
35
+ to the primary family per badge-ui's `accent` variant. */
36
+ :scope[tone="accent"] { --icon-color: var(--a-primary-text); }
37
+ :scope[tone="info"] { --icon-color: var(--a-info-text); }
38
+ :scope[tone="success"] { --icon-color: var(--a-success-text); }
39
+ :scope[tone="warning"] { --icon-color: var(--a-warning-text); }
40
+ :scope[tone="danger"] { --icon-color: var(--a-danger-text); }
41
+ :scope[tone="muted"],
42
+ :scope[tone="neutral"] { --icon-color: var(--a-fg-muted); }
28
43
  }
@@ -19,6 +19,8 @@ export class UIIcon extends UIElement {
19
19
  name: string;
20
20
  /** Icon size. Named tiers `sm` 14px / `md` 16px / `lg` 20px ride the universal `[size]` system (`--a-icon-size`), which the ancestor `[scale]` tiers re-table. Anything beyond the row is a free-form pixel / rem / em / percent string ("48", "3rem", "1.25em", "100%" fills the parent box). */
21
21
  size: string;
22
+ /** Semantic color role. Empty (default) inherits currentColor — unchanged from pre-tone behavior. Maps to the L3 role text tokens (--a-{family}-text / --a-fg-muted). Vocabulary mirrors <badge-ui>'s [variant] enum so a status color reads the same whether it comes from a Badge chip or a bare status/trend icon. */
23
+ tone: 'accent' | 'info' | 'success' | 'warning' | 'danger' | 'muted' | 'neutral';
22
24
  /** Icon weight — selects the Phosphor weight variant (thin/light/regular/bold/fill/duotone). */
23
25
  weight: 'thin' | 'light' | 'regular' | 'bold' | 'fill' | 'duotone';
24
26
  }
@@ -37,6 +37,24 @@ props:
37
37
  default: regular
38
38
  reflect: true
39
39
  enum: [thin, light, regular, bold, fill, duotone]
40
+ tone:
41
+ description: >-
42
+ Semantic color role. Empty (default) inherits currentColor —
43
+ unchanged from pre-tone behavior. Maps to the L3 role text tokens
44
+ (--a-{family}-text / --a-fg-muted). Vocabulary mirrors <badge-ui>'s
45
+ [variant] enum so a status color reads the same whether it comes
46
+ from a Badge chip or a bare status/trend icon.
47
+ type: string
48
+ default: ""
49
+ enum:
50
+ - accent
51
+ - info
52
+ - success
53
+ - warning
54
+ - danger
55
+ - muted
56
+ - neutral
57
+ reflect: true
40
58
  events: {}
41
59
  slots: {}
42
60
  states:
@@ -71,6 +89,12 @@ a2ui:
71
89
  Use [weight="fill"] for selected / active toggles,
72
90
  [weight="regular"] (default) for inactive. Do not mix weights
73
91
  in the same set; the visual inconsistency reads as a bug.
92
+ - >-
93
+ Set [tone] to carry semantic color independent of the parent's
94
+ text color — e.g. a trend arrow icon that must read
95
+ success/warning/danger regardless of surrounding row color.
96
+ Leave [tone] unset when the icon should just inherit the
97
+ ambient text color (the common case).
74
98
  anti_patterns: []
75
99
  examples:
76
100
  - name: command-palette