@adia-ai/web-components 0.7.3 → 0.7.5

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.
Files changed (137) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/components/accordion/accordion.css +2 -2
  3. package/components/action-list/action-list.css +2 -2
  4. package/components/agent-artifact/agent-artifact.css +31 -31
  5. package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
  6. package/components/agent-questions/agent-questions.css +59 -57
  7. package/components/agent-reasoning/agent-reasoning.css +54 -54
  8. package/components/agent-suggestions/agent-suggestions.css +4 -4
  9. package/components/agent-trace/agent-trace.css +53 -53
  10. package/components/alert/alert.css +53 -53
  11. package/components/avatar/avatar.css +27 -27
  12. package/components/badge/badge.css +56 -53
  13. package/components/block/block.css +16 -16
  14. package/components/blockquote/blockquote.css +16 -16
  15. package/components/breadcrumb/breadcrumb.css +23 -23
  16. package/components/button/button.css +123 -101
  17. package/components/calendar-grid/calendar-grid.css +95 -92
  18. package/components/calendar-picker/calendar-picker.css +141 -139
  19. package/components/canvas/canvas.css +12 -12
  20. package/components/card/card.css +83 -83
  21. package/components/chart/chart.css +218 -218
  22. package/components/chart-legend/chart-legend.css +26 -26
  23. package/components/check/check.css +40 -40
  24. package/components/code/code.css +125 -125
  25. package/components/col/col.css +15 -15
  26. package/components/color-picker/color-picker.css +55 -55
  27. package/components/combobox/combobox.css +64 -62
  28. package/components/command/command.css +91 -91
  29. package/components/context-menu/context-menu.css +1 -1
  30. package/components/date-range-picker/date-range-picker.css +59 -59
  31. package/components/datetime-picker/datetime-picker.css +25 -25
  32. package/components/demo-toggle/demo-toggle.css +27 -27
  33. package/components/description-list/description-list.css +18 -18
  34. package/components/divider/divider.css +24 -24
  35. package/components/embed/embed.css +6 -6
  36. package/components/empty-state/empty-state.css +29 -29
  37. package/components/feed/feed.css +12 -12
  38. package/components/field/field.css +28 -28
  39. package/components/field/field.test.js +2 -2
  40. package/components/fields/fields.css +5 -5
  41. package/components/grid/grid.a2ui.json +10 -0
  42. package/components/grid/grid.css +23 -5
  43. package/components/grid/grid.d.ts +4 -0
  44. package/components/grid/grid.yaml +13 -0
  45. package/components/heatmap/heatmap.css +61 -61
  46. package/components/icon/icon.css +12 -12
  47. package/components/image/image.css +14 -14
  48. package/components/inline-edit/inline-edit.css +16 -16
  49. package/components/inline-message/inline-message.css +16 -16
  50. package/components/input/input.css +69 -66
  51. package/components/inspector/inspector.css +6 -6
  52. package/components/integration-card/integration-card.css +41 -41
  53. package/components/integration-card/integration-card.test.js +4 -4
  54. package/components/kbd/kbd.css +47 -40
  55. package/components/link/link.css +12 -12
  56. package/components/list/list.css +8 -8
  57. package/components/list-window/list-window.css +10 -10
  58. package/components/loading-overlay/loading-overlay.css +17 -18
  59. package/components/loading-overlay/loading-overlay.test.js +8 -8
  60. package/components/mark/mark.css +16 -16
  61. package/components/menu/menu.css +9 -9
  62. package/components/modal/modal.class.js +5 -9
  63. package/components/modal/modal.css +43 -43
  64. package/components/nav/nav.css +40 -40
  65. package/components/nav-group/nav-group.css +54 -54
  66. package/components/nav-item/nav-item.css +44 -44
  67. package/components/noodles/noodles.css +31 -31
  68. package/components/number-format/number-format.css +4 -4
  69. package/components/option-card/option-card.css +70 -70
  70. package/components/otp-input/otp-input.css +29 -29
  71. package/components/page/page.a2ui.json +1 -1
  72. package/components/page/page.css +27 -27
  73. package/components/page/page.d.ts +1 -1
  74. package/components/page/page.yaml +1 -1
  75. package/components/pagination/pagination.css +6 -6
  76. package/components/pane/pane.css +57 -57
  77. package/components/password-strength/password-strength.css +32 -32
  78. package/components/pipeline-status/pipeline-status.css +67 -67
  79. package/components/popover/popover.css +11 -11
  80. package/components/preview/preview.css +21 -21
  81. package/components/progress/progress.css +23 -23
  82. package/components/progress-row/progress-row.css +17 -17
  83. package/components/qr-code/qr-code.css +4 -4
  84. package/components/radio/radio.css +39 -39
  85. package/components/range/range.css +58 -55
  86. package/components/rating/rating.css +28 -28
  87. package/components/relative-time/relative-time.css +6 -6
  88. package/components/richtext/richtext.css +133 -133
  89. package/components/row/row.css +19 -19
  90. package/components/search/search.css +5 -5
  91. package/components/segment/segment.css +29 -24
  92. package/components/segmented/segmented.css +30 -25
  93. package/components/select/select.css +95 -93
  94. package/components/skeleton/skeleton.css +14 -14
  95. package/components/skip-nav/skip-nav.css +4 -4
  96. package/components/slider/slider.css +61 -61
  97. package/components/spinner/spinner.css +40 -40
  98. package/components/spinner/spinner.test.js +10 -12
  99. package/components/stack/stack.css +11 -11
  100. package/components/stat/stat.css +27 -27
  101. package/components/step-progress/step-progress.css +20 -20
  102. package/components/stepper/stepper.css +29 -29
  103. package/components/stream/stream.css +12 -12
  104. package/components/swatch/swatch.css +68 -68
  105. package/components/swiper/swiper.class.js +5 -12
  106. package/components/swiper/swiper.css +57 -57
  107. package/components/switch/switch.css +53 -53
  108. package/components/table/table.css +166 -163
  109. package/components/table-toolbar/table-toolbar.css +33 -33
  110. package/components/tabs/tabs.css +54 -51
  111. package/components/tag/tag.css +74 -71
  112. package/components/tag/tag.test.js +14 -14
  113. package/components/tags-input/tags-input.css +51 -49
  114. package/components/text/text.css +44 -44
  115. package/components/textarea/textarea.css +49 -46
  116. package/components/time-picker/time-picker.css +47 -47
  117. package/components/timeline/timeline.css +54 -54
  118. package/components/toast/toast.css +58 -58
  119. package/components/toc/toc.css +28 -28
  120. package/components/toggle-group/toggle-group.css +9 -6
  121. package/components/toggle-scheme/toggle-scheme.css +2 -2
  122. package/components/toolbar/toolbar.css +18 -18
  123. package/components/tooltip/tooltip.css +2 -2
  124. package/components/tour/tour.css +4 -4
  125. package/components/tree/tree.css +37 -37
  126. package/components/upload/upload.css +49 -49
  127. package/dist/host.min.css +1 -0
  128. package/dist/web-components.min.css +1 -1
  129. package/dist/web-components.min.js +2 -2
  130. package/package.json +1 -1
  131. package/styles/api/text.css +9 -2
  132. package/styles/foundation/space.css +19 -18
  133. package/styles/host.css +48 -0
  134. package/styles/prose.css +187 -173
  135. package/styles/type/scale.css +6 -0
  136. package/styles/typography.css +10 -5
  137. package/styles/verse.css +122 -0
@@ -13,6 +13,11 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
+ "align": {
17
+ "description": "Block-axis alignment of grid items (start/center/end/stretch) via align-items — e.g. vertically centering a text column against a visual in a 2-column hero. Sets grid-item alignment, NOT text alignment.",
18
+ "type": "string",
19
+ "default": "stretch"
20
+ },
16
21
  "columnGap": {
17
22
  "description": "Column gap override",
18
23
  "type": "string",
@@ -31,6 +36,11 @@
31
36
  "type": "string",
32
37
  "default": "md"
33
38
  },
39
+ "justify": {
40
+ "description": "Inline-axis alignment of grid items (start/center/end/stretch) via justify-items. Default stretch (items fill their column track).",
41
+ "type": "string",
42
+ "default": "stretch"
43
+ },
34
44
  "minColumnWidth": {
35
45
  "description": "Minimum track width for columns=\"auto-fit\"/\"auto-fill\" (any CSS length, e.g. \"240px\", \"16rem\"). Sets the minmax() floor so cards don't shrink below it before wrapping; unset uses the 12rem default. No effect on numeric columns.",
36
46
  "type": "string",
@@ -3,9 +3,9 @@
3
3
  /* Explicit-then-ambient: `[gap="N"]` sets non-inheriting
4
4
  `--a-gap-self`; `[size]`/`:root` set inheriting `--a-gap` (base
5
5
  `--a-gap-md`). See styles/api/sizing.css + spec §5.2. */
6
- --grid-gap-default: var(--a-gap-self, var(--a-gap));
7
- --grid-column-gap-default: var(--grid-gap, var(--grid-gap-default));
8
- --grid-row-gap-default: var(--grid-gap, var(--grid-gap-default));
6
+ --grid-gap: var(--a-gap-self, var(--a-gap));
7
+ --grid-column-gap: var(--grid-gap);
8
+ --grid-row-gap: var(--grid-gap);
9
9
  }
10
10
 
11
11
  :scope {
@@ -14,13 +14,31 @@
14
14
  /* Default: auto 1fr columns — as many equal columns as children */
15
15
  grid-auto-flow: column;
16
16
  grid-auto-columns: 1fr;
17
- column-gap: var(--grid-column-gap, var(--grid-column-gap-default));
18
- row-gap: var(--grid-row-gap, var(--grid-row-gap-default));
17
+ column-gap: var(--grid-column-gap);
18
+ row-gap: var(--grid-row-gap);
19
19
  /* Universal [padding] / [margin] opt-in — see tokens.css for scale. */
20
20
  padding: var(--a-padding, 0);
21
21
  margin: var(--a-margin, 0);
22
+ /* Neutralize the legacy UA rule that maps the HTML `align=` attr to
23
+ `text-align`. Our [align]/[justify] set grid cross/main-axis item
24
+ alignment, NOT text alignment — without this, `align="center"` silently
25
+ leaks `text-align:center` into every descendant (centered a hero
26
+ headline/deck that should read left). Mirrors row.css / col.css. */
27
+ text-align: inherit;
22
28
  }
23
29
 
30
+ /* ── Item alignment ── [align] = block axis (align-items), [justify] =
31
+ inline axis (justify-items). Parity with row-ui / col-ui. CSS-only. */
32
+ :scope[align="start"] { align-items: start; }
33
+ :scope[align="center"] { align-items: center; }
34
+ :scope[align="end"] { align-items: end; }
35
+ :scope[align="stretch"] { align-items: stretch; }
36
+
37
+ :scope[justify="start"] { justify-items: start; }
38
+ :scope[justify="center"] { justify-items: center; }
39
+ :scope[justify="end"] { justify-items: end; }
40
+ :scope[justify="stretch"] { justify-items: stretch; }
41
+
24
42
  /* Explicit column count — switches to template mode */
25
43
  :scope[columns="1"] { grid-auto-flow: row; grid-template-columns: 1fr; grid-auto-columns: auto; }
26
44
  :scope[columns="2"] { grid-auto-flow: row; grid-template-columns: repeat(2, 1fr); grid-auto-columns: auto; }
@@ -13,12 +13,16 @@
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
15
  export class UIGrid extends UIElement {
16
+ /** Block-axis alignment of grid items (start/center/end/stretch) via align-items — e.g. vertically centering a text column against a visual in a 2-column hero. Sets grid-item alignment, NOT text alignment. */
17
+ align: string;
16
18
  /** Column gap override */
17
19
  columnGap: string;
18
20
  /** Number of equal columns (1–6), "auto-fill", or "auto-fit". Accepts responsive `@bp` notation: "1 2@sm 4@lg" = 1 on xs, 2 from sm, 4 from lg/xl. Unannotated value is the mobile-first base. */
19
21
  columns: string;
20
22
  /** Grid gap (row + column). Two grammars: a NAMED scale (xs/sm/md/lg/xl, parametric via --a-gap-k — 4/8/12/16/20px at k=1) and an integer space-rung ("0"…"10", "12", "16", literal). At k=1 they coincide: xs=1, sm=2, md=3, lg=4, xl=5. Responsive `@bp` notation supported: "2 4@md" = 2 below md, 4 from md upward. */
21
23
  gap: string;
24
+ /** Inline-axis alignment of grid items (start/center/end/stretch) via justify-items. Default stretch (items fill their column track). */
25
+ justify: string;
22
26
  /** Minimum track width for columns="auto-fit"/"auto-fill" (any CSS length, e.g. "240px", "16rem"). Sets the minmax() floor so cards don't shrink below it before wrapping; unset uses the 12rem default. No effect on numeric columns. */
23
27
  minColumnWidth: string;
24
28
  /** Row gap override */
@@ -16,6 +16,13 @@ description: >-
16
16
  Compose a 2:1 split as columns="3" + span="2"; 3:2 as columns="5" +
17
17
  span="3" + span="2".
18
18
  props:
19
+ align:
20
+ description: >-
21
+ Block-axis alignment of grid items (start/center/end/stretch) via
22
+ align-items — e.g. vertically centering a text column against a visual
23
+ in a 2-column hero. Sets grid-item alignment, NOT text alignment.
24
+ type: string
25
+ default: stretch
19
26
  columnGap:
20
27
  description: Column gap override
21
28
  type: string
@@ -37,6 +44,12 @@ props:
37
44
  upward.
38
45
  type: string
39
46
  default: md
47
+ justify:
48
+ description: >-
49
+ Inline-axis alignment of grid items (start/center/end/stretch) via
50
+ justify-items. Default stretch (items fill their column track).
51
+ type: string
52
+ default: stretch
40
53
  minColumnWidth:
41
54
  description: >-
42
55
  Minimum track width for columns="auto-fit"/"auto-fill" (any CSS length,
@@ -1,40 +1,40 @@
1
1
  @scope (heatmap-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --heatmap-gap-default: var(--a-space-1);
5
- --heatmap-cell-radius-default: var(--a-radius-xs);
6
- --heatmap-inset-default: var(--a-inset);
7
- --heatmap-aspect-default: auto;
8
- --heatmap-cell-min-size-default: 0.75rem;
4
+ --heatmap-gap: var(--a-space-1);
5
+ --heatmap-cell-radius: var(--a-radius-xs);
6
+ --heatmap-inset: var(--a-inset);
7
+ --heatmap-aspect: auto;
8
+ --heatmap-cell-min-size: 0.75rem;
9
9
 
10
10
  /* ── Colors ── */
11
- --heatmap-empty-bg-default: var(--a-bg-muted);
12
- --heatmap-border-default: 1px solid var(--a-border-subtle);
13
- --heatmap-text-default: var(--a-fg);
14
- --heatmap-label-default: var(--a-fg-subtle);
11
+ --heatmap-empty-bg: var(--a-bg-muted);
12
+ --heatmap-border: 1px solid var(--a-border-subtle);
13
+ --heatmap-text: var(--a-fg);
14
+ --heatmap-label: var(--a-fg-subtle);
15
15
 
16
16
  /* ── Data ramp (5 buckets) ──
17
17
  Sequential tint scale, sourced from the L2 `--a-{family}-bucket-N`
18
18
  semantic aliases (see styles/colors/semantics.css §BUCKETS). The
19
19
  L2 layer handles light-dark() polarity so step 0 reads as
20
20
  low-intensity in either scheme without per-component math. */
21
- --heatmap-bucket-0-default: var(--a-accent-bucket-0);
22
- --heatmap-bucket-1-default: var(--a-accent-bucket-1);
23
- --heatmap-bucket-2-default: var(--a-accent-bucket-2);
24
- --heatmap-bucket-3-default: var(--a-accent-bucket-3);
25
- --heatmap-bucket-4-default: var(--a-accent-bucket-4);
21
+ --heatmap-bucket-0: var(--a-accent-bucket-0);
22
+ --heatmap-bucket-1: var(--a-accent-bucket-1);
23
+ --heatmap-bucket-2: var(--a-accent-bucket-2);
24
+ --heatmap-bucket-3: var(--a-accent-bucket-3);
25
+ --heatmap-bucket-4: var(--a-accent-bucket-4);
26
26
 
27
27
  /* ── Legend ── */
28
- --heatmap-legend-size-default: var(--a-caption-size);
29
- --heatmap-legend-gap-default: var(--a-space-1);
28
+ --heatmap-legend-size: var(--a-caption-size);
29
+ --heatmap-legend-gap: var(--a-space-1);
30
30
  }
31
31
 
32
32
  :scope {
33
33
  box-sizing: border-box;
34
34
  display: flex;
35
35
  flex-direction: column;
36
- gap: var(--heatmap-gap, var(--heatmap-gap-default));
37
- color: var(--heatmap-text, var(--heatmap-text-default));
36
+ gap: var(--heatmap-gap);
37
+ color: var(--heatmap-text);
38
38
  font-size: var(--a-body-size);
39
39
  /* A wide day-grid (52+ week columns) keeps a FIXED cell size and scrolls
40
40
  horizontally (the GitHub-contributions model) rather than crushing
@@ -60,9 +60,9 @@
60
60
  /* Month labels row (day-grid mode) */
61
61
  :scope > [data-months] {
62
62
  display: grid;
63
- gap: var(--heatmap-gap, var(--heatmap-gap-default));
64
- font-size: var(--heatmap-legend-size, var(--heatmap-legend-size-default));
65
- color: var(--heatmap-label, var(--heatmap-label-default));
63
+ gap: var(--heatmap-gap);
64
+ font-size: var(--heatmap-legend-size);
65
+ color: var(--heatmap-label);
66
66
  }
67
67
 
68
68
  :scope [data-month-label] {
@@ -72,7 +72,7 @@
72
72
  /* Grid of cells */
73
73
  :scope > [data-grid] {
74
74
  display: grid;
75
- gap: var(--heatmap-gap, var(--heatmap-gap-default));
75
+ gap: var(--heatmap-gap);
76
76
  }
77
77
 
78
78
  :scope[aspect="square"] > [data-grid] {
@@ -84,8 +84,8 @@
84
84
  }
85
85
 
86
86
  :scope [data-cell] {
87
- border-radius: var(--heatmap-cell-radius, var(--heatmap-cell-radius-default));
88
- background: var(--heatmap-empty-bg, var(--heatmap-empty-bg-default));
87
+ border-radius: var(--heatmap-cell-radius);
88
+ background: var(--heatmap-empty-bg);
89
89
  /* No hard min on the cell box — it conflicted with matrix/density's
90
90
  minmax(0,1fr) tracks (the floor refused to shrink, so cells overlapped
91
91
  into a smear). day-grid keeps fixed size via its fixed tracks; the
@@ -103,70 +103,70 @@
103
103
 
104
104
  :scope [data-cell][data-v]:hover {
105
105
  transform: scale(1.15);
106
- outline: var(--heatmap-border, var(--heatmap-border-default));
106
+ outline: var(--heatmap-border);
107
107
  }
108
108
 
109
- :scope [data-cell][data-bucket="0"] { background: var(--heatmap-bucket-0, var(--heatmap-bucket-0-default)); }
110
- :scope [data-cell][data-bucket="1"] { background: var(--heatmap-bucket-1, var(--heatmap-bucket-1-default)); }
111
- :scope [data-cell][data-bucket="2"] { background: var(--heatmap-bucket-2, var(--heatmap-bucket-2-default)); }
112
- :scope [data-cell][data-bucket="3"] { background: var(--heatmap-bucket-3, var(--heatmap-bucket-3-default)); }
113
- :scope [data-cell][data-bucket="4"] { background: var(--heatmap-bucket-4, var(--heatmap-bucket-4-default)); }
109
+ :scope [data-cell][data-bucket="0"] { background: var(--heatmap-bucket-0); }
110
+ :scope [data-cell][data-bucket="1"] { background: var(--heatmap-bucket-1); }
111
+ :scope [data-cell][data-bucket="2"] { background: var(--heatmap-bucket-2); }
112
+ :scope [data-cell][data-bucket="3"] { background: var(--heatmap-bucket-3); }
113
+ :scope [data-cell][data-bucket="4"] { background: var(--heatmap-bucket-4); }
114
114
 
115
115
  /* Legend strip */
116
116
  :scope > [data-legend] {
117
117
  display: flex;
118
118
  align-items: center;
119
- gap: var(--heatmap-legend-gap, var(--heatmap-legend-gap-default));
120
- font-size: var(--heatmap-legend-size, var(--heatmap-legend-size-default));
121
- color: var(--heatmap-label, var(--heatmap-label-default));
122
- margin-top: var(--heatmap-gap, var(--heatmap-gap-default));
119
+ gap: var(--heatmap-legend-gap);
120
+ font-size: var(--heatmap-legend-size);
121
+ color: var(--heatmap-label);
122
+ margin-top: var(--heatmap-gap);
123
123
  }
124
124
 
125
125
  :scope [data-legend-swatch] {
126
126
  width: 0.875rem;
127
127
  height: 0.875rem;
128
- border-radius: var(--heatmap-cell-radius, var(--heatmap-cell-radius-default));
129
- background: var(--heatmap-empty-bg, var(--heatmap-empty-bg-default));
128
+ border-radius: var(--heatmap-cell-radius);
129
+ background: var(--heatmap-empty-bg);
130
130
  display: inline-block;
131
131
  }
132
132
 
133
- :scope [data-legend-swatch][data-bucket="0"] { background: var(--heatmap-bucket-0, var(--heatmap-bucket-0-default)); }
134
- :scope [data-legend-swatch][data-bucket="1"] { background: var(--heatmap-bucket-1, var(--heatmap-bucket-1-default)); }
135
- :scope [data-legend-swatch][data-bucket="2"] { background: var(--heatmap-bucket-2, var(--heatmap-bucket-2-default)); }
136
- :scope [data-legend-swatch][data-bucket="3"] { background: var(--heatmap-bucket-3, var(--heatmap-bucket-3-default)); }
137
- :scope [data-legend-swatch][data-bucket="4"] { background: var(--heatmap-bucket-4, var(--heatmap-bucket-4-default)); }
133
+ :scope [data-legend-swatch][data-bucket="0"] { background: var(--heatmap-bucket-0); }
134
+ :scope [data-legend-swatch][data-bucket="1"] { background: var(--heatmap-bucket-1); }
135
+ :scope [data-legend-swatch][data-bucket="2"] { background: var(--heatmap-bucket-2); }
136
+ :scope [data-legend-swatch][data-bucket="3"] { background: var(--heatmap-bucket-3); }
137
+ :scope [data-legend-swatch][data-bucket="4"] { background: var(--heatmap-bucket-4); }
138
138
 
139
139
  /* ── Color-scheme variants (token overrides only) ── */
140
140
 
141
141
  :scope[color-scheme="success"] {
142
- --heatmap-bucket-0-default: var(--a-success-bucket-0);
143
- --heatmap-bucket-1-default: var(--a-success-bucket-1);
144
- --heatmap-bucket-2-default: var(--a-success-bucket-2);
145
- --heatmap-bucket-3-default: var(--a-success-bucket-3);
146
- --heatmap-bucket-4-default: var(--a-success-bucket-4);
142
+ --heatmap-bucket-0: var(--a-success-bucket-0);
143
+ --heatmap-bucket-1: var(--a-success-bucket-1);
144
+ --heatmap-bucket-2: var(--a-success-bucket-2);
145
+ --heatmap-bucket-3: var(--a-success-bucket-3);
146
+ --heatmap-bucket-4: var(--a-success-bucket-4);
147
147
  }
148
148
 
149
149
  :scope[color-scheme="warning"] {
150
- --heatmap-bucket-0-default: var(--a-warning-bucket-0);
151
- --heatmap-bucket-1-default: var(--a-warning-bucket-1);
152
- --heatmap-bucket-2-default: var(--a-warning-bucket-2);
153
- --heatmap-bucket-3-default: var(--a-warning-bucket-3);
154
- --heatmap-bucket-4-default: var(--a-warning-bucket-4);
150
+ --heatmap-bucket-0: var(--a-warning-bucket-0);
151
+ --heatmap-bucket-1: var(--a-warning-bucket-1);
152
+ --heatmap-bucket-2: var(--a-warning-bucket-2);
153
+ --heatmap-bucket-3: var(--a-warning-bucket-3);
154
+ --heatmap-bucket-4: var(--a-warning-bucket-4);
155
155
  }
156
156
 
157
157
  :scope[color-scheme="danger"] {
158
- --heatmap-bucket-0-default: var(--a-danger-bucket-0);
159
- --heatmap-bucket-1-default: var(--a-danger-bucket-1);
160
- --heatmap-bucket-2-default: var(--a-danger-bucket-2);
161
- --heatmap-bucket-3-default: var(--a-danger-bucket-3);
162
- --heatmap-bucket-4-default: var(--a-danger-bucket-4);
158
+ --heatmap-bucket-0: var(--a-danger-bucket-0);
159
+ --heatmap-bucket-1: var(--a-danger-bucket-1);
160
+ --heatmap-bucket-2: var(--a-danger-bucket-2);
161
+ --heatmap-bucket-3: var(--a-danger-bucket-3);
162
+ --heatmap-bucket-4: var(--a-danger-bucket-4);
163
163
  }
164
164
 
165
165
  :scope[color-scheme="info"] {
166
- --heatmap-bucket-0-default: var(--a-info-bucket-0);
167
- --heatmap-bucket-1-default: var(--a-info-bucket-1);
168
- --heatmap-bucket-2-default: var(--a-info-bucket-2);
169
- --heatmap-bucket-3-default: var(--a-info-bucket-3);
170
- --heatmap-bucket-4-default: var(--a-info-bucket-4);
166
+ --heatmap-bucket-0: var(--a-info-bucket-0);
167
+ --heatmap-bucket-1: var(--a-info-bucket-1);
168
+ --heatmap-bucket-2: var(--a-info-bucket-2);
169
+ --heatmap-bucket-3: var(--a-info-bucket-3);
170
+ --heatmap-bucket-4: var(--a-info-bucket-4);
171
171
  }
172
172
  }
@@ -1,6 +1,6 @@
1
1
  @scope (icon-ui) {
2
2
  :where(:scope) {
3
- --icon-size-default: var(--a-icon-size, calc(1em + 0.125rem));
3
+ --icon-size: var(--a-icon-size, calc(1em + 0.125rem));
4
4
  }
5
5
 
6
6
  :scope {
@@ -8,8 +8,8 @@
8
8
  display: inline-flex;
9
9
  align-items: center;
10
10
  justify-content: center;
11
- width: var(--icon-size, var(--icon-size-default));
12
- height: var(--icon-size, var(--icon-size-default));
11
+ width: var(--icon-size);
12
+ height: var(--icon-size);
13
13
  flex-shrink: 0;
14
14
  line-height: 0;
15
15
  }
@@ -24,13 +24,13 @@
24
24
  icon-ui set its own size locally. xs / xl / 2xl / 3xl / 4xl
25
25
  extend the scale beyond the universal range for hero placeholder
26
26
  contexts. `fill` matches the parent box. */
27
- :scope[size="xs"] { --icon-size-default: 0.75rem; } /* 12px */
28
- :scope[size="sm"] { --icon-size-default: 0.875rem; } /* 14px */
29
- :scope[size="md"] { --icon-size-default: 1rem; } /* 16px */
30
- :scope[size="lg"] { --icon-size-default: 1.25rem; } /* 20px */
31
- :scope[size="xl"] { --icon-size-default: 2rem; } /* 32px */
32
- :scope[size="2xl"] { --icon-size-default: 3rem; } /* 48px */
33
- :scope[size="3xl"] { --icon-size-default: 4rem; } /* 64px */
34
- :scope[size="4xl"] { --icon-size-default: 6rem; } /* 96px */
35
- :scope[size="fill"] { --icon-size-default: 100%; }
27
+ :scope[size="xs"] { --icon-size: 0.75rem; } /* 12px */
28
+ :scope[size="sm"] { --icon-size: 0.875rem; } /* 14px */
29
+ :scope[size="md"] { --icon-size: 1rem; } /* 16px */
30
+ :scope[size="lg"] { --icon-size: 1.25rem; } /* 20px */
31
+ :scope[size="xl"] { --icon-size: 2rem; } /* 32px */
32
+ :scope[size="2xl"] { --icon-size: 3rem; } /* 48px */
33
+ :scope[size="3xl"] { --icon-size: 4rem; } /* 64px */
34
+ :scope[size="4xl"] { --icon-size: 6rem; } /* 96px */
35
+ :scope[size="fill"] { --icon-size: 100%; }
36
36
  }
@@ -1,14 +1,14 @@
1
1
  @scope (image-ui) {
2
2
  :where(:scope) {
3
3
  /* ── Layout ── */
4
- --image-radius-default: 0;
4
+ --image-radius: 0;
5
5
 
6
6
  /* ── Colors ── */
7
- --image-bg-default: var(--a-bg-muted);
7
+ --image-bg: var(--a-bg-muted);
8
8
 
9
9
  /* ── Transition ── */
10
- --image-duration-default: var(--a-duration);
11
- --image-easing-default: var(--a-easing);
10
+ --image-duration: var(--a-duration);
11
+ --image-easing: var(--a-easing);
12
12
  }
13
13
 
14
14
  :scope {
@@ -17,8 +17,8 @@
17
17
  display: block;
18
18
  position: relative;
19
19
  overflow: hidden;
20
- background: var(--image-bg, var(--image-bg-default));
21
- border-radius: var(--image-radius, var(--image-radius-default));
20
+ background: var(--image-bg);
21
+ border-radius: var(--image-radius);
22
22
  }
23
23
 
24
24
  /* Display convention (ADR-0037): block-level by default; [inline] opts back to inline-level. */
@@ -31,7 +31,7 @@
31
31
  height: 100%;
32
32
  object-fit: cover;
33
33
  opacity: 0;
34
- transition: opacity var(--image-duration, var(--image-duration-default)) var(--image-easing, var(--image-easing-default));
34
+ transition: opacity var(--image-duration) var(--image-easing);
35
35
  }
36
36
 
37
37
  :scope[data-loaded] [slot="image"] {
@@ -48,7 +48,7 @@
48
48
  [slot="skeleton"] {
49
49
  position: absolute;
50
50
  inset: 0;
51
- transition: opacity var(--image-duration, var(--image-duration-default)) var(--image-easing, var(--image-easing-default));
51
+ transition: opacity var(--image-duration) var(--image-easing);
52
52
  }
53
53
 
54
54
  :scope[data-loaded] [slot="skeleton"] {
@@ -57,10 +57,10 @@
57
57
  }
58
58
 
59
59
  /* ── Radius variants ── */
60
- :scope[radius="sm"] { --image-radius-default: var(--a-radius-sm); }
61
- :scope[radius="md"] { --image-radius-default: var(--a-radius-md); }
62
- :scope[radius="lg"] { --image-radius-default: var(--a-radius-lg); }
63
- :scope[radius="full"] { --image-radius-default: var(--a-radius-full); }
60
+ :scope[radius="sm"] { --image-radius: var(--a-radius-sm); }
61
+ :scope[radius="md"] { --image-radius: var(--a-radius-md); }
62
+ :scope[radius="lg"] { --image-radius: var(--a-radius-lg); }
63
+ :scope[radius="full"] { --image-radius: var(--a-radius-full); }
64
64
 
65
65
  /* ── Size mode — fills the container.
66
66
  Layout-changing attribute; sanctioned in component-token-contract.md. */
@@ -73,7 +73,7 @@
73
73
  /* ── Raw — strips chrome (background + radius) for edge-to-edge rendering.
74
74
  Comes after radius variants so it overrides them by source order. */
75
75
  :scope[raw] {
76
- --image-bg-default: transparent;
77
- --image-radius-default: 0;
76
+ --image-bg: transparent;
77
+ --image-radius: 0;
78
78
  }
79
79
  }
@@ -1,12 +1,12 @@
1
1
  @scope (inline-edit-ui) {
2
2
  :where(:scope) {
3
- --inline-edit-bg-hover-default: var(--a-bg-muted);
4
- --inline-edit-bg-edit-default: var(--a-bg);
5
- --inline-edit-outline-default: var(--a-accent-strong);
6
- --inline-edit-placeholder-default: var(--a-fg-subtle);
7
- --inline-edit-px-default: var(--a-space-1);
8
- --inline-edit-py-default: var(--a-space-0-5);
9
- --inline-edit-radius-default: var(--a-radius-sm);
3
+ --inline-edit-bg-hover: var(--a-bg-muted);
4
+ --inline-edit-bg-edit: var(--a-bg);
5
+ --inline-edit-outline: var(--a-accent-strong);
6
+ --inline-edit-placeholder: var(--a-fg-subtle);
7
+ --inline-edit-px: var(--a-space-1);
8
+ --inline-edit-py: var(--a-space-0-5);
9
+ --inline-edit-radius: var(--a-radius-sm);
10
10
  }
11
11
 
12
12
  :scope {
@@ -15,11 +15,11 @@
15
15
  table cells (where the cell already contains the box). */
16
16
  display: inline-block;
17
17
  box-sizing: border-box;
18
- padding-inline: var(--inline-edit-px, var(--inline-edit-px-default));
19
- padding-block: var(--inline-edit-py, var(--inline-edit-py-default));
20
- margin-inline: calc(-1 * var(--inline-edit-px, var(--inline-edit-px-default)));
21
- margin-block: calc(-1 * var(--inline-edit-py, var(--inline-edit-py-default)));
22
- border-radius: var(--inline-edit-radius, var(--inline-edit-radius-default));
18
+ padding-inline: var(--inline-edit-px);
19
+ padding-block: var(--inline-edit-py);
20
+ margin-inline: calc(-1 * var(--inline-edit-px));
21
+ margin-block: calc(-1 * var(--inline-edit-py));
22
+ border-radius: var(--inline-edit-radius);
23
23
  cursor: text;
24
24
  color: inherit;
25
25
  font: inherit;
@@ -31,13 +31,13 @@
31
31
  /* Hover affordance — subtle bg tint so the user sees this IS editable.
32
32
  Suppressed when disabled / readonly / already editing. */
33
33
  :scope:not([editing]):not([disabled]):not([readonly]):hover {
34
- background: var(--inline-edit-bg-hover, var(--inline-edit-bg-hover-default));
34
+ background: var(--inline-edit-bg-hover);
35
35
  }
36
36
 
37
37
  /* Editing state — flat background + accent outline for focus clarity */
38
38
  :scope[editing] {
39
- background: var(--inline-edit-bg-edit, var(--inline-edit-bg-edit-default));
40
- outline: 2px solid var(--inline-edit-outline, var(--inline-edit-outline-default));
39
+ background: var(--inline-edit-bg-edit);
40
+ outline: 2px solid var(--inline-edit-outline);
41
41
  outline-offset: 0;
42
42
  cursor: text;
43
43
  }
@@ -46,7 +46,7 @@
46
46
  when the host has no text content + isn't being edited. */
47
47
  :scope:empty:not([editing])::before {
48
48
  content: attr(placeholder);
49
- color: var(--inline-edit-placeholder, var(--inline-edit-placeholder-default));
49
+ color: var(--inline-edit-placeholder);
50
50
  font-style: italic;
51
51
  }
52
52
 
@@ -5,16 +5,16 @@
5
5
  `--a-fg-muted`). Severity variants drop in `--a-{family}-text`
6
6
  (light-dark(20-shade, 20-tint)) — the on-canvas text family, not
7
7
  `--a-{family}-fg` (which is on-fill / on-strong-bg). */
8
- --inline-message-fg-default: var(--a-fg-muted);
9
- --inline-message-icon-fg-default: currentColor;
8
+ --inline-message-fg: var(--a-fg-muted);
9
+ --inline-message-icon-fg: currentColor;
10
10
 
11
11
  /* ── Layout ── */
12
- --inline-message-gap-default: var(--a-space-1);
13
- --inline-message-icon-size-default: var(--a-ui-sm);
12
+ --inline-message-gap: var(--a-space-1);
13
+ --inline-message-icon-size: var(--a-ui-sm);
14
14
 
15
15
  /* ── Typography ── */
16
- --inline-message-font-size-default: var(--a-ui-sm);
17
- --inline-message-line-height-default: var(--a-leading-snug);
16
+ --inline-message-font-size: var(--a-ui-sm);
17
+ --inline-message-line-height: var(--a-leading-snug);
18
18
  }
19
19
 
20
20
  :scope {
@@ -26,10 +26,10 @@
26
26
  box-sizing: border-box;
27
27
  display: inline-flex;
28
28
  align-items: baseline;
29
- gap: var(--inline-message-gap, var(--inline-message-gap-default));
30
- color: var(--inline-message-fg, var(--inline-message-fg-default));
31
- font-size: var(--inline-message-font-size, var(--inline-message-font-size-default));
32
- line-height: var(--inline-message-line-height, var(--inline-message-line-height-default));
29
+ gap: var(--inline-message-gap);
30
+ color: var(--inline-message-fg);
31
+ font-size: var(--inline-message-font-size);
32
+ line-height: var(--inline-message-line-height);
33
33
  }
34
34
 
35
35
  /* ── Leading icon ──
@@ -48,8 +48,8 @@
48
48
  :scope [slot="leading"] {
49
49
  flex-shrink: 0;
50
50
  align-self: center;
51
- color: var(--inline-message-icon-fg, var(--inline-message-icon-fg-default));
52
- --a-icon-size: var(--inline-message-icon-size, var(--inline-message-icon-size-default));
51
+ color: var(--inline-message-icon-fg);
52
+ --a-icon-size: var(--inline-message-icon-size);
53
53
  order: -1;
54
54
  }
55
55
 
@@ -58,18 +58,18 @@
58
58
  the variant's default in inline-message.class.js). No padding / display / layout
59
59
  changes — these are variants, not modes (per css-patterns.md). */
60
60
  :scope[variant="info"] {
61
- --inline-message-fg-default: var(--a-info-text);
61
+ --inline-message-fg: var(--a-info-text);
62
62
  }
63
63
 
64
64
  :scope[variant="success"] {
65
- --inline-message-fg-default: var(--a-success-text);
65
+ --inline-message-fg: var(--a-success-text);
66
66
  }
67
67
 
68
68
  :scope[variant="warning"] {
69
- --inline-message-fg-default: var(--a-warning-text);
69
+ --inline-message-fg: var(--a-warning-text);
70
70
  }
71
71
 
72
72
  :scope[variant="danger"] {
73
- --inline-message-fg-default: var(--a-danger-text);
73
+ --inline-message-fg: var(--a-danger-text);
74
74
  }
75
75
  }