@adia-ai/web-components 0.0.1 → 0.0.2

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 (113) hide show
  1. package/components/agent-reasoning/agent-reasoning.a2ui.json +14 -8
  2. package/components/agent-reasoning/agent-reasoning.css +1 -1
  3. package/components/agent-reasoning/agent-reasoning.js +8 -8
  4. package/components/agent-reasoning/agent-reasoning.yaml +9 -6
  5. package/components/avatar/avatar.a2ui.json +0 -10
  6. package/components/avatar/avatar.css +1 -1
  7. package/components/avatar/avatar.yaml +0 -8
  8. package/components/badge/badge.a2ui.json +6 -6
  9. package/components/badge/badge.js +21 -0
  10. package/components/badge/badge.yaml +8 -5
  11. package/components/button/button.a2ui.json +0 -11
  12. package/components/button/button.css +1 -1
  13. package/components/button/button.js +1 -1
  14. package/components/button/button.yaml +0 -11
  15. package/components/calendar-picker/calendar-picker.js +23 -17
  16. package/components/canvas/canvas.js +1 -1
  17. package/components/card/card.a2ui.json +0 -21
  18. package/components/card/card.yaml +0 -14
  19. package/components/chart/chart.a2ui.json +9 -8
  20. package/components/chart/chart.yaml +7 -5
  21. package/components/check/check.css +1 -1
  22. package/components/code/code.a2ui.json +0 -5
  23. package/components/code/code.yaml +0 -4
  24. package/components/col/col.a2ui.json +0 -20
  25. package/components/col/col.yaml +0 -20
  26. package/components/color-picker/color-picker.a2ui.json +1 -1
  27. package/components/color-picker/color-picker.js +4 -1
  28. package/components/color-picker/color-picker.yaml +1 -1
  29. package/components/command/command.js +21 -10
  30. package/components/divider/divider.a2ui.json +0 -19
  31. package/components/divider/divider.yaml +0 -12
  32. package/components/drawer/drawer.a2ui.json +2 -2
  33. package/components/drawer/drawer.css +1 -1
  34. package/components/drawer/drawer.js +1 -1
  35. package/components/drawer/drawer.yaml +3 -3
  36. package/components/empty-state/empty-state.a2ui.json +0 -13
  37. package/components/empty-state/empty-state.yaml +0 -5
  38. package/components/footer/footer.a2ui.json +1 -1
  39. package/components/footer/footer.yaml +1 -1
  40. package/components/grid/grid.a2ui.json +0 -5
  41. package/components/grid/grid.yaml +0 -4
  42. package/components/header/header.a2ui.json +1 -1
  43. package/components/header/header.yaml +1 -1
  44. package/components/heatmap/heatmap.a2ui.json +4 -4
  45. package/components/heatmap/heatmap.js +3 -3
  46. package/components/heatmap/heatmap.yaml +4 -4
  47. package/components/icon/icon.a2ui.json +13 -0
  48. package/components/icon/icon.yaml +6 -0
  49. package/components/image/image.a2ui.json +10 -21
  50. package/components/image/image.yaml +8 -16
  51. package/components/input/input.a2ui.json +0 -15
  52. package/components/input/input.yaml +0 -12
  53. package/components/inspector/inspector.a2ui.json +0 -5
  54. package/components/inspector/inspector.yaml +0 -4
  55. package/components/list/list.a2ui.json +0 -33
  56. package/components/list/list.yaml +0 -27
  57. package/components/menu/menu.a2ui.json +0 -10
  58. package/components/menu/menu.js +7 -1
  59. package/components/menu/menu.yaml +0 -8
  60. package/components/modal/modal.a2ui.json +1 -25
  61. package/components/modal/modal.yaml +1 -22
  62. package/components/noodles/noodles.a2ui.json +0 -5
  63. package/components/noodles/noodles.yaml +0 -5
  64. package/components/otp-input/otp-input.a2ui.json +0 -5
  65. package/components/otp-input/otp-input.yaml +0 -4
  66. package/components/pagination/pagination.a2ui.json +3 -13
  67. package/components/pagination/pagination.css +1 -1
  68. package/components/pagination/pagination.yaml +5 -14
  69. package/components/pane/pane.a2ui.json +0 -10
  70. package/components/pane/pane.yaml +0 -9
  71. package/components/popover/popover.a2ui.json +0 -14
  72. package/components/popover/popover.js +7 -1
  73. package/components/popover/popover.yaml +0 -11
  74. package/components/progress/progress.a2ui.json +2 -12
  75. package/components/progress/progress.yaml +2 -11
  76. package/components/progress-row/progress-row.a2ui.json +3 -13
  77. package/components/progress-row/progress-row.yaml +3 -11
  78. package/components/radio/radio.css +1 -1
  79. package/components/row/row.a2ui.json +0 -5
  80. package/components/row/row.yaml +0 -4
  81. package/components/search/search.a2ui.json +0 -5
  82. package/components/search/search.yaml +0 -4
  83. package/components/section/section.a2ui.json +1 -1
  84. package/components/section/section.yaml +1 -1
  85. package/components/segmented/segmented.css +1 -1
  86. package/components/select/select.a2ui.json +5 -0
  87. package/components/select/select.js +11 -1
  88. package/components/select/select.yaml +5 -0
  89. package/components/skeleton/skeleton.a2ui.json +0 -11
  90. package/components/skeleton/skeleton.yaml +0 -5
  91. package/components/slider/slider.a2ui.json +0 -5
  92. package/components/slider/slider.yaml +0 -5
  93. package/components/swiper/swiper.a2ui.json +7 -7
  94. package/components/swiper/swiper.js +1 -1
  95. package/components/swiper/swiper.yaml +8 -6
  96. package/components/switch/switch.css +1 -1
  97. package/components/tag/tag.a2ui.json +0 -5
  98. package/components/tag/tag.yaml +0 -4
  99. package/components/text/text.a2ui.json +5 -0
  100. package/components/text/text.css +2 -2
  101. package/components/text/text.yaml +5 -0
  102. package/components/timeline/timeline.a2ui.json +8 -13
  103. package/components/timeline/timeline.yaml +6 -11
  104. package/components/toast/toast.a2ui.json +0 -15
  105. package/components/toast/toast.yaml +0 -13
  106. package/components/toolbar/toolbar.a2ui.json +0 -23
  107. package/components/toolbar/toolbar.js +11 -1
  108. package/components/toolbar/toolbar.yaml +0 -19
  109. package/components/tooltip/tooltip.a2ui.json +0 -10
  110. package/components/tooltip/tooltip.yaml +0 -8
  111. package/package.json +1 -1
  112. package/patterns/adia-chat/css/adia-chat.streaming.css +2 -2
  113. package/patterns/gen-ui/gen-ui.css +3 -3
@@ -22,26 +22,6 @@ props:
22
22
  description: Justify content
23
23
  type: string
24
24
  default: start
25
- span:
26
- description: >-
27
- Column span — consumed by a parent Grid to make this column wrap multiple
28
- grid tracks. Accepts a numeric rung ("1".."6") or "full".
29
- type: string
30
- default: ""
31
- wrap:
32
- description: Allow children to wrap onto multiple lines (default is flex nowrap).
33
- type: boolean
34
- default: false
35
- reflect: true
36
- basis:
37
- description: Flex basis override (CSS length or keyword like "auto"/"content").
38
- type: string
39
- default: ""
40
- active:
41
- description: Marks this column as the active one in a tab-panel layout.
42
- type: boolean
43
- default: false
44
- reflect: true
45
25
  events: {}
46
26
  slots:
47
27
  default:
@@ -38,7 +38,7 @@
38
38
  "value": {
39
39
  "description": "Current color as hex string",
40
40
  "type": "string",
41
- "default": ""
41
+ "default": "#3b82f6"
42
42
  }
43
43
  },
44
44
  "required": [
@@ -426,7 +426,10 @@ class AdiaColorPicker extends AdiaFormElement {
426
426
  };
427
427
 
428
428
  if (navigator.clipboard?.writeText) {
429
- navigator.clipboard.writeText(text).then(() => onDone(true), () => onDone(false));
429
+ navigator.clipboard.writeText(text).then(
430
+ () => { if (!this.isConnected) return; onDone(true); },
431
+ () => { if (!this.isConnected) return; onDone(false); },
432
+ );
430
433
  } else {
431
434
  const ta = Object.assign(document.createElement('textarea'), { value: text });
432
435
  ta.style.cssText = 'position:fixed;opacity:0';
@@ -27,7 +27,7 @@ props:
27
27
  value:
28
28
  description: Current color as hex string
29
29
  type: string
30
- default: ""
30
+ default: "#3b82f6"
31
31
  events:
32
32
  change:
33
33
  description: Fired on every color change
@@ -34,6 +34,21 @@ class AdiaCommand extends AdiaElement {
34
34
  #listEl = null;
35
35
  #footerEl = null;
36
36
  #bound = false;
37
+ #itemByEl = new WeakMap();
38
+
39
+ #onListClick = (e) => {
40
+ const el = e.target instanceof Element ? e.target.closest('[role="option"]:not([aria-disabled])') : null;
41
+ if (!el) return;
42
+ const item = this.#itemByEl.get(el);
43
+ if (item) this.#select(item);
44
+ };
45
+
46
+ #onListPointerOver = (e) => {
47
+ const el = e.target instanceof Element ? e.target.closest('[role="option"]:not([aria-disabled])') : null;
48
+ if (!el) return;
49
+ const idx = parseInt(el.dataset.idx);
50
+ if (Number.isFinite(idx) && idx !== this.#activeIdx) this.#activate(idx);
51
+ };
37
52
 
38
53
  connected() {
39
54
  if (!this.#bound) {
@@ -66,6 +81,9 @@ class AdiaCommand extends AdiaElement {
66
81
  this.#footerEl = this.querySelector('footer');
67
82
 
68
83
  this.#inputEl.addEventListener('input', this.#onInput);
84
+ // Delegated item handlers — handler identity is stable so teardown is symmetric.
85
+ this.#listEl.addEventListener('click', this.#onListClick);
86
+ this.#listEl.addEventListener('pointerover', this.#onListPointerOver);
69
87
  this.#renderItems();
70
88
  }
71
89
 
@@ -173,16 +191,7 @@ class AdiaCommand extends AdiaElement {
173
191
  ${item.shortcut ? `<span data-shortcut>${item.shortcut}</span>` : ''}
174
192
  `;
175
193
 
176
- el.addEventListener('click', () => {
177
- if (item.disabled) return;
178
- this.#select(item);
179
- });
180
-
181
- el.addEventListener('pointerenter', () => {
182
- if (item.disabled) return;
183
- this.#activate(idx);
184
- });
185
-
194
+ this.#itemByEl.set(el, item);
186
195
  return el;
187
196
  }
188
197
 
@@ -273,6 +282,8 @@ class AdiaCommand extends AdiaElement {
273
282
  disconnected() {
274
283
  this.removeEventListener('keydown', this.#onKeydown);
275
284
  this.#inputEl?.removeEventListener('input', this.#onInput);
285
+ this.#listEl?.removeEventListener('click', this.#onListClick);
286
+ this.#listEl?.removeEventListener('pointerover', this.#onListPointerOver);
276
287
  this.#inputEl = null;
277
288
  this.#listEl = null;
278
289
  this.#footerEl = null;
@@ -13,15 +13,6 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
- "axis": {
17
- "description": "Divider orientation.",
18
- "type": "string",
19
- "enum": [
20
- "horizontal",
21
- "vertical"
22
- ],
23
- "default": "horizontal"
24
- },
25
16
  "component": {
26
17
  "const": "Divider"
27
18
  },
@@ -30,16 +21,6 @@
30
21
  "type": "string",
31
22
  "default": ""
32
23
  },
33
- "orientation": {
34
- "description": "Alias for `axis` — accepted for back-compat.",
35
- "type": "string",
36
- "enum": [
37
- "",
38
- "horizontal",
39
- "vertical"
40
- ],
41
- "default": ""
42
- },
43
24
  "vertical": {
44
25
  "description": "Vertical orientation",
45
26
  "type": "boolean",
@@ -8,18 +8,6 @@ category: display
8
8
  version: 1
9
9
  description: Horizontal or vertical divider with optional label.
10
10
  props:
11
- axis:
12
- description: Divider orientation.
13
- type: string
14
- default: horizontal
15
- enum:
16
- - horizontal
17
- - vertical
18
- orientation:
19
- description: Alias for `axis` — accepted for back-compat.
20
- type: string
21
- default: ""
22
- enum: ["", horizontal, vertical]
23
11
  label:
24
12
  description: Center label text
25
13
  type: string
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://adiaui.dev/a2ui/v0_9/components/Drawer.json",
4
4
  "title": "Drawer",
5
- "description": "Slide-out panel anchored to a viewport edge. Uses native <dialog> for focus trap, Escape dismiss, and ::backdrop. Panel is a flex column that scrolls as a whole — the header and footer stick to the top/bottom of the panel when the body overflows. Authors can compose content with either card-n-style bare tags (<header>, <section>, <footer>) or explicit [slot=\"header|body|footer\"] attributes; multiple <section> siblings are allowed and stack in author order between the sticky header and footer. The header activates a card-n-aligned 3-column grid (icon | heading+description | action+close) when any direct [slot=\"icon|heading|description|action\"] child is present.",
5
+ "description": "Slide-out panel anchored to a viewport edge. Uses native <dialog> for focus trap, Escape dismiss, and ::backdrop. Panel is a flex column that scrolls as a whole — the header and footer stick to the top/bottom of the panel when the body overflows. Authors can compose content with either card-ui-style bare tags (<header>, <section>, <footer>) or explicit [slot=\"header|body|footer\"] attributes; multiple <section> siblings are allowed and stack in author order between the sticky header and footer. The header activates a card-ui-aligned 3-column grid (icon | heading+description | action+close) when any direct [slot=\"icon|heading|description|action\"] child is present.",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -112,7 +112,7 @@
112
112
  "description": "Optional sticky action row pinned to the bottom of the panel. Only mounted if the author supplies a bare <footer> tag or [slot=\"footer\"]. Inner [slot=\"description\"] + [slot=\"action\"] triggers space-between layout, matching card-ui footer semantics."
113
113
  },
114
114
  "header": {
115
- "description": "Title bar — pinned to the top of the panel via position:sticky. Accepts either a bare <header> tag or [slot=\"header\"]. When any direct child has [slot=\"icon|heading|description|action\"], the header activates a card-n-aligned 3-column grid; otherwise renders as a block with the close button appended."
115
+ "description": "Title bar — pinned to the top of the panel via position:sticky. Accepts either a bare <header> tag or [slot=\"header\"]. When any direct child has [slot=\"icon|heading|description|action\"], the header activates a card-ui-aligned 3-column grid; otherwise renders as a block with the close button appended."
116
116
  },
117
117
  "heading": {
118
118
  "description": "Direct child of <header> — grid row 1. Also accepts bare <h1>-<h6> tags. Renders as a flex container, so inline badges/metadata sit alongside the title. If the drawer has a [text] attribute and no author-supplied heading, a <span slot=\"heading\" data-stamped> is stamped with the text value."
@@ -167,7 +167,7 @@
167
167
  transform: translateY(-100%); opacity: 0;
168
168
  }
169
169
 
170
- /* ═══════ Header — card-n-aligned grid ═══════
170
+ /* ═══════ Header — card-ui-aligned grid ═══════
171
171
  Block by default (fallback for empty/free-form content).
172
172
  Grid activates when any slotted child is present. Column template
173
173
  adapts to the presence of [slot="icon"] and [slot="action"|"close"]. */
@@ -5,7 +5,7 @@
5
5
  * Content panel slides in/out with CSS transitions.
6
6
  * Exit animation plays before dialog.close() via [data-closing].
7
7
  *
8
- * Authoring — card-n-style tags (recommended):
8
+ * Authoring — card-ui-style tags (recommended):
9
9
  * <drawer-ui side="right" size="md">
10
10
  * <header>Title block</header>
11
11
  * <section>Body content</section>
@@ -10,10 +10,10 @@ description: >-
10
10
  Slide-out panel anchored to a viewport edge. Uses native <dialog> for focus trap,
11
11
  Escape dismiss, and ::backdrop. Panel is a flex column that scrolls as a whole — the
12
12
  header and footer stick to the top/bottom of the panel when the body overflows.
13
- Authors can compose content with either card-n-style bare tags (<header>, <section>,
13
+ Authors can compose content with either card-ui-style bare tags (<header>, <section>,
14
14
  <footer>) or explicit [slot="header|body|footer"] attributes; multiple <section>
15
15
  siblings are allowed and stack in author order between the sticky header and footer.
16
- The header activates a card-n-aligned 3-column grid (icon | heading+description |
16
+ The header activates a card-ui-aligned 3-column grid (icon | heading+description |
17
17
  action+close) when any direct [slot="icon|heading|description|action"] child is
18
18
  present.
19
19
  props:
@@ -59,7 +59,7 @@ slots:
59
59
  description: >-
60
60
  Title bar — pinned to the top of the panel via position:sticky. Accepts either
61
61
  a bare <header> tag or [slot="header"]. When any direct child has
62
- [slot="icon|heading|description|action"], the header activates a card-n-aligned
62
+ [slot="icon|heading|description|action"], the header activates a card-ui-aligned
63
63
  3-column grid; otherwise renders as a block with the close button appended.
64
64
  body:
65
65
  description: >-
@@ -30,19 +30,6 @@
30
30
  "description": "Icon name displayed above the heading",
31
31
  "type": "string",
32
32
  "default": ""
33
- },
34
- "variant": {
35
- "description": "Semantic variant — colors the icon and sets the border tone (default, info, success, warning, danger).",
36
- "type": "string",
37
- "enum": [
38
- "default",
39
- "info",
40
- "success",
41
- "warning",
42
- "danger",
43
- "muted"
44
- ],
45
- "default": "default"
46
33
  }
47
34
  },
48
35
  "required": [
@@ -20,11 +20,6 @@ props:
20
20
  description: Icon name displayed above the heading
21
21
  type: string
22
22
  default: ""
23
- variant:
24
- description: Semantic variant — colors the icon and sets the border tone (default, info, success, warning, danger).
25
- type: string
26
- default: default
27
- enum: [default, info, success, warning, danger, muted]
28
23
  events: {}
29
24
  slots:
30
25
  action:
@@ -71,7 +71,7 @@
71
71
  }
72
72
  ],
73
73
  "synonyms": {},
74
- "tag": "footer-n",
74
+ "tag": "footer-ui",
75
75
  "tokens": {},
76
76
  "traits": [],
77
77
  "version": 1
@@ -2,7 +2,7 @@
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
4
  name: AdiaFooter
5
- tag: footer-n
5
+ tag: footer-ui
6
6
  component: Footer
7
7
  category: container
8
8
  version: 1
@@ -13,11 +13,6 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
- "cols": {
17
- "description": "Alias for `columns` — accepted for back-compat.",
18
- "type": "string",
19
- "default": ""
20
- },
21
16
  "columnGap": {
22
17
  "description": "Column gap override",
23
18
  "type": "string",
@@ -23,10 +23,6 @@ props:
23
23
  description: Number of columns or grid-template-columns
24
24
  type: string
25
25
  default: "3"
26
- cols:
27
- description: Alias for `columns` — accepted for back-compat.
28
- type: string
29
- default: ""
30
26
  gap:
31
27
  description: Grid gap
32
28
  type: string
@@ -68,7 +68,7 @@
68
68
  }
69
69
  ],
70
70
  "synonyms": {},
71
- "tag": "header-n",
71
+ "tag": "header-ui",
72
72
  "tokens": {},
73
73
  "traits": [],
74
74
  "version": 1
@@ -2,7 +2,7 @@
2
2
  # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
3
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
4
  name: AdiaHeader
5
- tag: header-n
5
+ tag: header-ui
6
6
  component: Header
7
7
  category: container
8
8
  version: 1
@@ -51,10 +51,10 @@
51
51
  "component": {
52
52
  "const": "Heatmap"
53
53
  },
54
- "legend": {
55
- "description": "Show Less/More legend strip",
54
+ "noLegend": {
55
+ "description": "Hide the Less/More legend strip",
56
56
  "type": "boolean",
57
- "default": true
57
+ "default": false
58
58
  },
59
59
  "rows": {
60
60
  "description": "Row count",
@@ -95,7 +95,7 @@
95
95
  "examples": [
96
96
  {
97
97
  "description": "Basic 7x12 matrix heatmap with random data.",
98
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"hm\"\n ]\n },\n {\n \"id\": \"hm\",\n \"component\": \"Heatmap\",\n \"type\": \"matrix\",\n \"rows\": 7,\n \"cols\": 12,\n \"legend\": true,\n \"colorScheme\": \"data-ramp\"\n }\n]",
98
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"hm\"\n ]\n },\n {\n \"id\": \"hm\",\n \"component\": \"Heatmap\",\n \"type\": \"matrix\",\n \"rows\": 7,\n \"cols\": 12,\n \"colorScheme\": \"data-ramp\"\n }\n]",
99
99
  "name": "basic-heatmap"
100
100
  }
101
101
  ],
@@ -7,7 +7,7 @@
7
7
  * cols — Number (default 12)
8
8
  * scale — 'linear' | 'log' | 'quantile' (default 'linear')
9
9
  * data — JSON string OR .data property [{ r, c, v, label? }]
10
- * legend — Boolean (default true)
10
+ * no-legend — Boolean (default false — legend shown)
11
11
  * color-scheme — 'accent' | 'success' | 'warning' | 'data-ramp' (default 'data-ramp')
12
12
  * start-date — ISO date (for day-grid to label months)
13
13
  * aspect — 'square' | 'wide' (default 'wide')
@@ -30,7 +30,7 @@ class AdiaHeatmap extends AdiaElement {
30
30
  rows: { type: Number, default: 7, reflect: true },
31
31
  cols: { type: Number, default: 12, reflect: true },
32
32
  scale: { type: String, default: 'linear', reflect: true },
33
- legend: { type: Boolean, default: true, reflect: true },
33
+ noLegend: { type: Boolean, default: false, reflect: true, attribute: 'no-legend' },
34
34
  colorScheme: { type: String, default: 'data-ramp', reflect: true, attribute: 'color-scheme' },
35
35
  startDate: { type: String, default: '', reflect: true, attribute: 'start-date' },
36
36
  aspect: { type: String, default: 'wide', reflect: true },
@@ -192,7 +192,7 @@ class AdiaHeatmap extends AdiaElement {
192
192
  this.appendChild(grid);
193
193
 
194
194
  // ── Legend ──
195
- if (this.legend) {
195
+ if (!this.noLegend) {
196
196
  const legend = document.createElement('div');
197
197
  legend.setAttribute('data-legend', '');
198
198
  const less = document.createElement('span');
@@ -38,10 +38,11 @@ props:
38
38
  description: Column count
39
39
  type: number
40
40
  default: 12
41
- legend:
42
- description: Show Less/More legend strip
41
+ noLegend:
42
+ description: Hide the Less/More legend strip
43
43
  type: boolean
44
- default: true
44
+ default: false
45
+ attribute: no-legend
45
46
  rows:
46
47
  description: Row count
47
48
  type: number
@@ -100,7 +101,6 @@ examples:
100
101
  "type": "matrix",
101
102
  "rows": 7,
102
103
  "cols": 12,
103
- "legend": true,
104
104
  "colorScheme": "data-ramp"
105
105
  }
106
106
  ]
@@ -30,6 +30,19 @@
30
30
  "description": "Icon size. Accepts the named scale (xs/sm/md/lg/xl) or a pixel value as a string (\"12\", \"16\", \"24\", \"32\", \"48\"). Overrides --a-icon-size.",
31
31
  "type": "string",
32
32
  "default": ""
33
+ },
34
+ "weight": {
35
+ "description": "Icon weight — selects the Phosphor weight variant (thin/light/regular/bold/fill/duotone).",
36
+ "type": "string",
37
+ "enum": [
38
+ "thin",
39
+ "light",
40
+ "regular",
41
+ "bold",
42
+ "fill",
43
+ "duotone"
44
+ ],
45
+ "default": "regular"
33
46
  }
34
47
  },
35
48
  "required": [
@@ -22,6 +22,12 @@ props:
22
22
  as a string ("12", "16", "24", "32", "48"). Overrides --a-icon-size.
23
23
  type: string
24
24
  default: ""
25
+ weight:
26
+ description: Icon weight — selects the Phosphor weight variant (thin/light/regular/bold/fill/duotone).
27
+ type: string
28
+ default: regular
29
+ reflect: true
30
+ enum: [thin, light, regular, bold, fill, duotone]
25
31
  events: {}
26
32
  slots: {}
27
33
  states:
@@ -18,22 +18,6 @@
18
18
  "type": "string",
19
19
  "default": ""
20
20
  },
21
- "aspect": {
22
- "description": "Aspect ratio preset — sets the intrinsic aspect-ratio CSS property.",
23
- "type": "string",
24
- "enum": [
25
- "",
26
- "1/1",
27
- "3/2",
28
- "4/3",
29
- "16/9",
30
- "21/9",
31
- "2/3",
32
- "3/4",
33
- "9/16"
34
- ],
35
- "default": ""
36
- },
37
21
  "component": {
38
22
  "const": "Image"
39
23
  },
@@ -58,11 +42,6 @@
58
42
  "type": "string",
59
43
  "default": ""
60
44
  },
61
- "lazy": {
62
- "description": "Enables native lazy loading.",
63
- "type": "boolean",
64
- "default": false
65
- },
66
45
  "radius": {
67
46
  "description": "Border radius token",
68
47
  "type": "string",
@@ -74,6 +53,16 @@
74
53
  ],
75
54
  "default": ""
76
55
  },
56
+ "raw": {
57
+ "description": "Strip chrome (no background, no radius) for edge-to-edge rendering.",
58
+ "type": "boolean",
59
+ "default": false
60
+ },
61
+ "size": {
62
+ "description": "Size preset — e.g. 'full' fills the container width and height.",
63
+ "type": "string",
64
+ "default": ""
65
+ },
77
66
  "src": {
78
67
  "description": "Image source URL.",
79
68
  "type": "string",
@@ -12,20 +12,6 @@ props:
12
12
  description: Alt text for the image.
13
13
  type: string
14
14
  default: ""
15
- aspect:
16
- description: Aspect ratio preset — sets the intrinsic aspect-ratio CSS property.
17
- type: string
18
- default: ""
19
- enum:
20
- - ""
21
- - 1/1
22
- - 3/2
23
- - 4/3
24
- - 16/9
25
- - 21/9
26
- - 2/3
27
- - 3/4
28
- - 9/16
29
15
  fallback:
30
16
  description: Fallback image URL on error
31
17
  type: string
@@ -43,10 +29,16 @@ props:
43
29
  description: CSS height
44
30
  type: string
45
31
  default: ""
46
- lazy:
47
- description: Enables native lazy loading.
32
+ raw:
33
+ description: Strip chrome (no background, no radius) for edge-to-edge rendering.
48
34
  type: boolean
49
35
  default: false
36
+ reflect: true
37
+ size:
38
+ description: Size preset — e.g. 'full' fills the container width and height.
39
+ type: string
40
+ default: ""
41
+ reflect: true
50
42
  radius:
51
43
  description: Border radius token
52
44
  type: string
@@ -51,11 +51,6 @@
51
51
  "type": "string",
52
52
  "default": ""
53
53
  },
54
- "icon": {
55
- "description": "Leading Phosphor icon name (shortcut for setting `prefix` to an icon tag).",
56
- "type": "string",
57
- "default": ""
58
- },
59
54
  "label": {
60
55
  "description": "Label text rendered above the input field",
61
56
  "type": "string",
@@ -71,11 +66,6 @@
71
66
  "type": "number",
72
67
  "default": null
73
68
  },
74
- "multiline": {
75
- "description": "Render a multiline textarea-like surface. Prefer TextArea; kept for back-compat.",
76
- "type": "boolean",
77
- "default": false
78
- },
79
69
  "name": {
80
70
  "description": "Form control name for form data submission",
81
71
  "type": "string",
@@ -106,11 +96,6 @@
106
96
  "type": "boolean",
107
97
  "default": false
108
98
  },
109
- "rows": {
110
- "description": "Visible row count when multiline is true. Ignored otherwise.",
111
- "type": "number",
112
- "default": 3
113
- },
114
99
  "suffix": {
115
100
  "description": "Suffix text rendered after the text surface (e.g., unit like 'kg')",
116
101
  "type": "string",
@@ -13,18 +13,6 @@ props:
13
13
  description: Form control name for form data submission
14
14
  type: string
15
15
  default: ""
16
- icon:
17
- description: Leading Phosphor icon name (shortcut for setting `prefix` to an icon tag).
18
- type: string
19
- default: ""
20
- multiline:
21
- description: Render a multiline textarea-like surface. Prefer TextArea; kept for back-compat.
22
- type: boolean
23
- default: false
24
- rows:
25
- description: Visible row count when multiline is true. Ignored otherwise.
26
- type: number
27
- default: 3
28
16
  type:
29
17
  description: Input type hint. Password type applies disc masking via -webkit-text-security.
30
18
  type: string
@@ -13,11 +13,6 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
- "active": {
17
- "description": "Active tab (alias for `value`, accepts same enum).",
18
- "type": "string",
19
- "default": ""
20
- },
21
16
  "component": {
22
17
  "const": "Inspector"
23
18
  },
@@ -12,10 +12,6 @@ props:
12
12
  description: Active tab. One of 'catalog', 'surface', 'messages', 'code'.
13
13
  type: string
14
14
  default: surface
15
- active:
16
- description: Active tab (alias for `value`, accepts same enum).
17
- type: string
18
- default: ""
19
15
  events: {}
20
16
  slots:
21
17
  default: