@adia-ai/web-components 0.0.1 → 0.0.3

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 (211) hide show
  1. package/a2ui/index.js +23 -17
  2. package/components/accordion/accordion.js +1 -1
  3. package/components/action-list/action-list.js +1 -1
  4. package/components/agent-artifact/agent-artifact.js +1 -1
  5. package/components/agent-feedback-bar/agent-feedback-bar.js +1 -1
  6. package/components/agent-questions/agent-questions.js +1 -1
  7. package/components/agent-reasoning/agent-reasoning.a2ui.json +14 -8
  8. package/components/agent-reasoning/agent-reasoning.css +1 -1
  9. package/components/agent-reasoning/agent-reasoning.js +9 -9
  10. package/components/agent-reasoning/agent-reasoning.yaml +9 -6
  11. package/components/agent-suggestions/agent-suggestions.js +1 -1
  12. package/components/agent-trace/agent-trace.js +1 -1
  13. package/components/alert/alert.js +1 -1
  14. package/components/avatar/avatar.a2ui.json +0 -10
  15. package/components/avatar/avatar.css +1 -1
  16. package/components/avatar/avatar.js +1 -1
  17. package/components/avatar/avatar.yaml +0 -8
  18. package/components/badge/badge.a2ui.json +6 -6
  19. package/components/badge/badge.js +22 -1
  20. package/components/badge/badge.yaml +8 -5
  21. package/components/block/block.js +1 -1
  22. package/components/breadcrumb/breadcrumb.js +1 -1
  23. package/components/button/button.a2ui.json +0 -11
  24. package/components/button/button.css +1 -1
  25. package/components/button/button.js +3 -3
  26. package/components/button/button.yaml +0 -11
  27. package/components/calendar-picker/calendar-picker.js +25 -19
  28. package/components/canvas/canvas.js +3 -3
  29. package/components/card/card.a2ui.json +0 -21
  30. package/components/card/card.js +2 -2
  31. package/components/card/card.yaml +0 -14
  32. package/components/chart/chart.a2ui.json +9 -8
  33. package/components/chart/chart.js +1 -1
  34. package/components/chart/chart.yaml +7 -5
  35. package/components/chat/chat-input.js +1 -1
  36. package/components/chat/chat.js +2 -2
  37. package/components/check/check.css +1 -1
  38. package/components/check/check.js +2 -2
  39. package/components/code/code.a2ui.json +0 -5
  40. package/components/code/code.js +1 -1
  41. package/components/code/code.yaml +0 -4
  42. package/components/col/col.a2ui.json +0 -20
  43. package/components/col/col.js +1 -1
  44. package/components/col/col.yaml +0 -20
  45. package/components/color-picker/color-picker.a2ui.json +1 -1
  46. package/components/color-picker/color-picker.js +5 -2
  47. package/components/color-picker/color-picker.yaml +1 -1
  48. package/components/command/command.js +22 -11
  49. package/components/description-list/description-list.js +1 -1
  50. package/components/divider/divider.a2ui.json +0 -19
  51. package/components/divider/divider.js +1 -1
  52. package/components/divider/divider.yaml +0 -12
  53. package/components/drawer/drawer.a2ui.json +2 -2
  54. package/components/drawer/drawer.css +1 -1
  55. package/components/drawer/drawer.js +2 -2
  56. package/components/drawer/drawer.yaml +3 -3
  57. package/components/embed/embed.js +1 -1
  58. package/components/empty-state/empty-state.a2ui.json +0 -13
  59. package/components/empty-state/empty-state.js +1 -1
  60. package/components/empty-state/empty-state.yaml +0 -5
  61. package/components/footer/footer.a2ui.json +1 -1
  62. package/components/footer/footer.yaml +1 -1
  63. package/components/grid/grid.a2ui.json +0 -5
  64. package/components/grid/grid.js +1 -1
  65. package/components/grid/grid.yaml +0 -4
  66. package/components/header/header.a2ui.json +1 -1
  67. package/components/header/header.yaml +1 -1
  68. package/components/heatmap/heatmap.a2ui.json +4 -4
  69. package/components/heatmap/heatmap.js +4 -4
  70. package/components/heatmap/heatmap.yaml +4 -4
  71. package/components/icon/icon.a2ui.json +13 -0
  72. package/components/icon/icon.js +2 -2
  73. package/components/icon/icon.yaml +6 -0
  74. package/components/image/image.a2ui.json +10 -21
  75. package/components/image/image.js +1 -1
  76. package/components/image/image.yaml +8 -16
  77. package/components/input/input.a2ui.json +0 -15
  78. package/components/input/input.js +2 -2
  79. package/components/input/input.yaml +0 -12
  80. package/components/inspector/inspector.a2ui.json +0 -5
  81. package/components/inspector/inspector.js +2 -2
  82. package/components/inspector/inspector.yaml +0 -4
  83. package/components/kbd/kbd.js +1 -1
  84. package/components/list/list.a2ui.json +0 -33
  85. package/components/list/list.js +1 -1
  86. package/components/list/list.yaml +0 -27
  87. package/components/menu/menu.a2ui.json +0 -10
  88. package/components/menu/menu.js +9 -3
  89. package/components/menu/menu.yaml +0 -8
  90. package/components/modal/modal.a2ui.json +1 -25
  91. package/components/modal/modal.js +1 -1
  92. package/components/modal/modal.yaml +1 -22
  93. package/components/noodles/noodles.a2ui.json +0 -5
  94. package/components/noodles/noodles.js +1 -1
  95. package/components/noodles/noodles.yaml +0 -5
  96. package/components/otp-input/otp-input.a2ui.json +0 -5
  97. package/components/otp-input/otp-input.js +1 -1
  98. package/components/otp-input/otp-input.yaml +0 -4
  99. package/components/pagination/pagination.a2ui.json +3 -13
  100. package/components/pagination/pagination.css +1 -1
  101. package/components/pagination/pagination.js +1 -1
  102. package/components/pagination/pagination.yaml +5 -14
  103. package/components/pane/pane.a2ui.json +0 -10
  104. package/components/pane/pane.js +1 -1
  105. package/components/pane/pane.yaml +0 -9
  106. package/components/pipeline-status/pipeline-status.js +1 -1
  107. package/components/popover/popover.a2ui.json +0 -14
  108. package/components/popover/popover.js +9 -3
  109. package/components/popover/popover.yaml +0 -11
  110. package/components/progress/progress.a2ui.json +2 -12
  111. package/components/progress/progress.js +1 -1
  112. package/components/progress/progress.yaml +2 -11
  113. package/components/progress-row/progress-row.a2ui.json +3 -13
  114. package/components/progress-row/progress-row.js +1 -1
  115. package/components/progress-row/progress-row.yaml +3 -11
  116. package/components/radio/radio.css +1 -1
  117. package/components/radio/radio.js +2 -2
  118. package/components/range/range.js +1 -1
  119. package/components/rating/rating.js +1 -1
  120. package/components/richtext/richtext.js +2 -2
  121. package/components/row/row.a2ui.json +0 -5
  122. package/components/row/row.js +2 -2
  123. package/components/row/row.yaml +0 -4
  124. package/components/search/search.a2ui.json +0 -5
  125. package/components/search/search.js +1 -1
  126. package/components/search/search.yaml +0 -4
  127. package/components/section/section.a2ui.json +1 -1
  128. package/components/section/section.yaml +1 -1
  129. package/components/segment/segment.js +1 -1
  130. package/components/segmented/segmented.css +1 -1
  131. package/components/segmented/segmented.js +1 -1
  132. package/components/select/select.a2ui.json +5 -0
  133. package/components/select/select.js +13 -3
  134. package/components/select/select.yaml +5 -0
  135. package/components/skeleton/skeleton.a2ui.json +0 -11
  136. package/components/skeleton/skeleton.js +1 -1
  137. package/components/skeleton/skeleton.yaml +0 -5
  138. package/components/slider/slider.a2ui.json +0 -5
  139. package/components/slider/slider.js +1 -1
  140. package/components/slider/slider.yaml +0 -5
  141. package/components/stack/stack.js +1 -1
  142. package/components/stat/stat.js +1 -1
  143. package/components/stepper/stepper.js +1 -1
  144. package/components/stream/stream.js +1 -1
  145. package/components/swiper/swiper.a2ui.json +7 -7
  146. package/components/swiper/swiper.js +2 -2
  147. package/components/swiper/swiper.yaml +8 -6
  148. package/components/switch/switch.css +1 -1
  149. package/components/switch/switch.js +2 -2
  150. package/components/table/table.js +1 -1
  151. package/components/tabs/tab.js +1 -1
  152. package/components/tabs/tabs.js +1 -1
  153. package/components/tag/tag.a2ui.json +0 -5
  154. package/components/tag/tag.js +1 -1
  155. package/components/tag/tag.yaml +0 -4
  156. package/components/text/text.a2ui.json +5 -0
  157. package/components/text/text.css +2 -2
  158. package/components/text/text.js +1 -1
  159. package/components/text/text.yaml +5 -0
  160. package/components/textarea/textarea.js +1 -1
  161. package/components/timeline/timeline.a2ui.json +8 -13
  162. package/components/timeline/timeline.js +1 -1
  163. package/components/timeline/timeline.yaml +6 -11
  164. package/components/toast/toast.a2ui.json +0 -15
  165. package/components/toast/toast.js +1 -1
  166. package/components/toast/toast.yaml +0 -13
  167. package/components/toggle-group/toggle-group.js +1 -1
  168. package/components/toolbar/toolbar.a2ui.json +0 -23
  169. package/components/toolbar/toolbar.js +13 -3
  170. package/components/toolbar/toolbar.yaml +0 -19
  171. package/components/tooltip/tooltip.a2ui.json +0 -10
  172. package/components/tooltip/tooltip.js +2 -2
  173. package/components/tooltip/tooltip.yaml +0 -8
  174. package/components/tree/tree.js +1 -1
  175. package/components/upload/upload.js +1 -1
  176. package/core/markdown.js +1 -1
  177. package/core/provider.js +2 -2
  178. package/package.json +7 -3
  179. package/patterns/a2ui-root/a2ui-root.a2ui.json +118 -0
  180. package/{a2ui/root.js → patterns/a2ui-root/a2ui-root.js} +9 -4
  181. package/patterns/a2ui-root/a2ui-root.yaml +76 -0
  182. package/patterns/adia-chat/adia-chat.js +3 -3
  183. package/patterns/adia-chat/css/adia-chat.streaming.css +2 -2
  184. package/patterns/adia-editor/adia-editor.js +1 -1
  185. package/patterns/app-nav/app-nav.js +1 -1
  186. package/patterns/app-nav-group/app-nav-group.js +2 -2
  187. package/patterns/app-nav-item/app-nav-item.js +1 -1
  188. package/patterns/app-shell/app-shell.js +1 -1
  189. package/patterns/gen-ui/gen-ui.css +3 -3
  190. package/patterns/gen-ui/gen-ui.js +1 -1
  191. package/patterns/index.js +1 -0
  192. package/patterns/section-nav/section-nav.js +1 -1
  193. package/patterns/section-nav-group/section-nav-group.js +1 -1
  194. package/patterns/section-nav-item/section-nav-item.js +1 -1
  195. package/traits/define.js +1 -1
  196. package/a2ui/dockables/action.js +0 -152
  197. package/a2ui/dockables/base.js +0 -30
  198. package/a2ui/dockables/controller.js +0 -97
  199. package/a2ui/dockables/data-source.js +0 -103
  200. package/a2ui/dockables/index.js +0 -6
  201. package/a2ui/dockables/lifecycle.js +0 -84
  202. package/a2ui/dockables/provider.js +0 -59
  203. package/a2ui/manifest-runtime.js +0 -226
  204. package/a2ui/registry.js +0 -200
  205. package/a2ui/renderer.js +0 -361
  206. package/a2ui/stream.js +0 -243
  207. package/a2ui/surface-manifest.js +0 -294
  208. package/a2ui/surface.js +0 -222
  209. package/a2ui/wire-factory.js +0 -134
  210. package/a2ui/wiring-engine.js +0 -209
  211. package/a2ui/wiring-registry.js +0 -342
@@ -3,7 +3,7 @@
3
3
  * Child of segmented-ui. Represents one option.
4
4
  */
5
5
 
6
- import { AdiaElement } from '@core/element.js';
6
+ import { AdiaElement } from '../../core/element.js';
7
7
 
8
8
  class AdiaSegment extends AdiaElement {
9
9
  static properties = {
@@ -11,7 +11,7 @@
11
11
  /* ── Colors ── */
12
12
  --segmented-bg: var(--a-ui-bg);
13
13
  --segmented-border: transparent;
14
- --segmented-indicator-bg: white;
14
+ --segmented-indicator-bg: var(--a-chrome-light);
15
15
  --segmented-indicator-shadow: var(--a-shadow-sm);
16
16
  --segmented-indicator-radius: calc(var(--segmented-radius) - var(--segmented-inset));
17
17
 
@@ -9,7 +9,7 @@
9
9
  * Indicator uses CSS transform (GPU-accelerated).
10
10
  */
11
11
 
12
- import { AdiaFormElement } from '@core/form.js';
12
+ import { AdiaFormElement } from '../../core/form.js';
13
13
  import '@components/segment/segment.js';
14
14
 
15
15
  class AdiaSegmented extends AdiaFormElement {
@@ -31,6 +31,11 @@
31
31
  "type": "boolean",
32
32
  "default": false
33
33
  },
34
+ "divider": {
35
+ "description": "Reserved attribute on a select option that renders as a visual divider instead of a selectable row.",
36
+ "type": "boolean",
37
+ "default": false
38
+ },
34
39
  "error": {
35
40
  "description": "Validation error message",
36
41
  "type": "string",
@@ -1,5 +1,5 @@
1
- import { AdiaFormElement } from '@core/form.js';
2
- import { anchorPopover } from '@core/anchor.js';
1
+ import { AdiaFormElement } from '../../core/form.js';
2
+ import { anchorPopover } from '../../core/anchor.js';
3
3
 
4
4
  function escapeHTML(s) {
5
5
  return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
@@ -26,6 +26,7 @@ class AdiaSelect extends AdiaFormElement {
26
26
  #anchorCleanup = null;
27
27
  #query = '';
28
28
  #searchInput = null;
29
+ #rafId = null;
29
30
 
30
31
  #onSearchFocus = () => { if (!this.disabled) this.open = true; };
31
32
  #onSearchClick = (e) => { e.stopPropagation(); if (!this.disabled) this.open = true; };
@@ -147,13 +148,18 @@ class AdiaSelect extends AdiaFormElement {
147
148
  placement: this.getAttribute('placement') || 'bottom-start', gap: 4, matchWidth: false,
148
149
  });
149
150
  // Dismiss on outside click (next frame so current click doesn't trigger it)
150
- requestAnimationFrame(() => {
151
+ this.#rafId = requestAnimationFrame(() => {
152
+ this.#rafId = null;
151
153
  document.addEventListener('pointerdown', this.#onOutside, { once: true });
152
154
  });
153
155
  } else {
154
156
  this.#anchorCleanup?.();
155
157
  this.#anchorCleanup = null;
156
158
  this.#listbox?.hidePopover?.();
159
+ if (this.#rafId != null) {
160
+ cancelAnimationFrame(this.#rafId);
161
+ this.#rafId = null;
162
+ }
157
163
  document.removeEventListener('pointerdown', this.#onOutside);
158
164
  }
159
165
  }
@@ -370,6 +376,10 @@ class AdiaSelect extends AdiaFormElement {
370
376
  super.disconnected();
371
377
  this.removeEventListener('click', this.#onClick);
372
378
  this.removeEventListener('keydown', this.#onKey);
379
+ if (this.#rafId != null) {
380
+ cancelAnimationFrame(this.#rafId);
381
+ this.#rafId = null;
382
+ }
373
383
  document.removeEventListener('pointerdown', this.#onOutside);
374
384
  if (this.#searchInput) {
375
385
  this.#searchInput.removeEventListener('input', this.#onSearchInput);
@@ -31,6 +31,11 @@ props:
31
31
  type: boolean
32
32
  default: false
33
33
  reflect: true
34
+ divider:
35
+ description: Reserved attribute on a select option that renders as a visual divider instead of a selectable row.
36
+ type: boolean
37
+ default: false
38
+ reflect: true
34
39
  error:
35
40
  description: Validation error message
36
41
  type: string
@@ -38,17 +38,6 @@
38
38
  "type": "boolean",
39
39
  "default": false
40
40
  },
41
- "variant": {
42
- "description": "Visual preset — text-line, circle (avatar), rect (card), image (aspect box).",
43
- "type": "string",
44
- "enum": [
45
- "text",
46
- "circle",
47
- "rect",
48
- "image"
49
- ],
50
- "default": "rect"
51
- },
52
41
  "width": {
53
42
  "description": "Width of the placeholder.",
54
43
  "type": "string",
@@ -11,7 +11,7 @@
11
11
  * Radius: none, sm (default), md, lg, full
12
12
  */
13
13
 
14
- import { AdiaElement } from '@core/element.js';
14
+ import { AdiaElement } from '../../core/element.js';
15
15
 
16
16
  class AdiaSkeleton extends AdiaElement {
17
17
  static properties = {
@@ -26,11 +26,6 @@ props:
26
26
  description: When true, suppress the shimmer animation.
27
27
  type: boolean
28
28
  default: false
29
- variant:
30
- description: Visual preset — text-line, circle (avatar), rect (card), image (aspect box).
31
- type: string
32
- default: rect
33
- enum: [text, circle, rect, image]
34
29
  width:
35
30
  description: Width of the placeholder.
36
31
  type: string
@@ -51,11 +51,6 @@
51
51
  "type": "string",
52
52
  "default": ""
53
53
  },
54
- "showValue": {
55
- "description": "Displays current value below the slider",
56
- "type": "boolean",
57
- "default": false
58
- },
59
54
  "step": {
60
55
  "description": "Step increment between values",
61
56
  "type": "number",
@@ -6,7 +6,7 @@
6
6
  * [====fill====●─────────────────track──────]
7
7
  */
8
8
 
9
- import { AdiaFormElement } from '@core/form.js';
9
+ import { AdiaFormElement } from '../../core/form.js';
10
10
 
11
11
  class AdiaSlider extends AdiaFormElement {
12
12
  static properties = {
@@ -39,11 +39,6 @@ props:
39
39
  description: Minimum slider value
40
40
  type: number
41
41
  default: 0
42
- showValue:
43
- description: Displays current value below the slider
44
- type: boolean
45
- default: false
46
- attribute: show-value
47
42
  step:
48
43
  description: Step increment between values
49
44
  type: number
@@ -5,7 +5,7 @@
5
5
  * <stack-ui align="center">...</stack-ui>
6
6
  */
7
7
 
8
- import { AdiaElement } from '@core/element.js';
8
+ import { AdiaElement } from '../../core/element.js';
9
9
 
10
10
  class AdiaStack extends AdiaElement {
11
11
  static properties = {
@@ -8,7 +8,7 @@
8
8
  * Trend: up, down, neutral (colors the change badge accordingly)
9
9
  */
10
10
 
11
- import { AdiaElement } from '@core/element.js';
11
+ import { AdiaElement } from '../../core/element.js';
12
12
 
13
13
  class AdiaStat extends AdiaElement {
14
14
  static properties = {
@@ -20,7 +20,7 @@
20
20
  * orientation — horizontal (default) | vertical
21
21
  */
22
22
 
23
- import { AdiaElement } from '@core/element.js';
23
+ import { AdiaElement } from '../../core/element.js';
24
24
 
25
25
  class AdiaStepper extends AdiaElement {
26
26
  static properties = {
@@ -18,7 +18,7 @@
18
18
  * stream-error — stream error (detail: { error })
19
19
  */
20
20
 
21
- import { AdiaElement } from '@core/element.js';
21
+ import { AdiaElement } from '../../core/element.js';
22
22
 
23
23
  class AdiaStream extends AdiaElement {
24
24
  static properties = {
@@ -36,20 +36,20 @@
36
36
  "type": "boolean",
37
37
  "default": false
38
38
  },
39
+ "noPauseOnHover": {
40
+ "description": "Suppress the default pause-on-hover/focus behavior for autoplay.",
41
+ "type": "boolean",
42
+ "default": false
43
+ },
39
44
  "peek": {
40
45
  "description": "Show peek of adjacent slides",
41
46
  "type": "boolean",
42
47
  "default": false
43
48
  },
44
- "slides-per-view": {
45
- "description": "Number of visible slides",
46
- "type": "string",
47
- "default": ""
48
- },
49
49
  "slidesPerView": {
50
- "description": "Number of slides visible at once. Accepts \"1\", \"2\", \"3\", or \"auto\".",
50
+ "description": "Number of slides visible at once. Accepts \"1\", \"2\", \"3\", or \"auto\". Empty = CSS default (single slide).",
51
51
  "type": "string",
52
- "default": "1"
52
+ "default": ""
53
53
  },
54
54
  "snap": {
55
55
  "description": "Scroll-snap alignment — start, center, end, or none.",
@@ -20,7 +20,7 @@
20
20
  * autoplay-resume
21
21
  */
22
22
 
23
- import { AdiaElement } from '@core/element.js';
23
+ import { AdiaElement } from '../../core/element.js';
24
24
 
25
25
  class AdiaSwiper extends AdiaElement {
26
26
  static properties = {
@@ -31,7 +31,7 @@ class AdiaSwiper extends AdiaElement {
31
31
  peek: { type: Boolean, default: false, reflect: true },
32
32
  snap: { type: String, default: 'start', reflect: true },
33
33
  gap: { type: String, default: '', reflect: true },
34
- 'slides-per-view': { type: String, default: '', reflect: true },
34
+ slidesPerView: { type: String, default: '', reflect: true, attribute: 'slides-per-view' },
35
35
  };
36
36
 
37
37
  static template = () => null;
@@ -13,9 +13,9 @@ props:
13
13
  type: boolean
14
14
  default: false
15
15
  slidesPerView:
16
- description: Number of slides visible at once. Accepts "1", "2", "3", or "auto".
16
+ description: Number of slides visible at once. Accepts "1", "2", "3", or "auto". Empty = CSS default (single slide).
17
17
  type: string
18
- default: "1"
18
+ default: ""
19
19
  attribute: slides-per-view
20
20
  snap:
21
21
  description: Scroll-snap alignment — start, center, end, or none.
@@ -34,14 +34,16 @@ props:
34
34
  description: Infinite loop
35
35
  type: boolean
36
36
  default: false
37
+ noPauseOnHover:
38
+ description: Suppress the default pause-on-hover/focus behavior for autoplay.
39
+ type: boolean
40
+ default: false
41
+ reflect: true
42
+ attribute: no-pause-on-hover
37
43
  peek:
38
44
  description: Show peek of adjacent slides
39
45
  type: boolean
40
46
  default: false
41
- slides-per-view:
42
- description: Number of visible slides
43
- type: string
44
- default: ""
45
47
  events:
46
48
  autoplay-pause:
47
49
  description: "Fired on autoplay-pause."
@@ -35,7 +35,7 @@
35
35
  --switch-thumb-inset: 2px;
36
36
  --switch-thumb-size: calc(var(--a-toggle-size) - 2 * var(--switch-thumb-inset) - 2px); /* -2px for 1px border each side */
37
37
  --switch-thumb-bg: var(--a-fg-muted);
38
- --switch-thumb-bg-checked: white;
38
+ --switch-thumb-bg-checked: var(--a-chrome-light);
39
39
  --switch-thumb-travel: calc(var(--switch-track-width) - var(--switch-thumb-size) - 2 * var(--switch-thumb-inset) - 2px);
40
40
 
41
41
  /* ── State: disabled ── */
@@ -3,8 +3,8 @@
3
3
  * Pure CSS track + thumb, no native <input>.
4
4
  */
5
5
 
6
- import { AdiaFormElement } from '@core/form.js';
7
- import { html } from '@core/element.js';
6
+ import { AdiaFormElement } from '../../core/form.js';
7
+ import { html } from '../../core/element.js';
8
8
 
9
9
  class AdiaSwitch extends AdiaFormElement {
10
10
  static properties = {
@@ -36,7 +36,7 @@
36
36
  * cell-click — { detail: { key, row, value, dataIndex } }
37
37
  */
38
38
 
39
- import { AdiaElement } from '@core/element.js';
39
+ import { AdiaElement } from '../../core/element.js';
40
40
  import { cellTypes, sortFns } from './cell-types.js';
41
41
 
42
42
  // ── Helpers ──────────────────────────────────────────────────────────────────
@@ -7,7 +7,7 @@
7
7
  * The tab button is rendered by the parent tabs-ui, not by tab-ui itself.
8
8
  */
9
9
 
10
- import { AdiaElement } from '@core/element.js';
10
+ import { AdiaElement } from '../../core/element.js';
11
11
 
12
12
  class AdiaTab extends AdiaElement {
13
13
  static properties = {
@@ -14,7 +14,7 @@
14
14
  * ArrowLeft / ArrowRight to navigate tabs
15
15
  */
16
16
 
17
- import { AdiaElement, html } from '@core/element.js';
17
+ import { AdiaElement, html } from '../../core/element.js';
18
18
  import '@components/tabs/tab.js';
19
19
 
20
20
  class AdiaTabs extends AdiaElement {
@@ -21,11 +21,6 @@
21
21
  "type": "boolean",
22
22
  "default": false
23
23
  },
24
- "dismissible": {
25
- "description": "Alias for `removable`; accepted for back-compat.",
26
- "type": "boolean",
27
- "default": false
28
- },
29
24
  "removable": {
30
25
  "description": "Shows a dismiss button that fires the remove event.",
31
26
  "type": "boolean",
@@ -11,7 +11,7 @@
11
11
  * remove — { detail: { text, value } } fired when dismiss is clicked
12
12
  */
13
13
 
14
- import { AdiaElement } from '@core/element.js';
14
+ import { AdiaElement } from '../../core/element.js';
15
15
 
16
16
  class AdiaTag extends AdiaElement {
17
17
  static properties = {
@@ -17,10 +17,6 @@ props:
17
17
  description: Shows a dismiss button that fires the remove event.
18
18
  type: boolean
19
19
  default: false
20
- dismissible:
21
- description: Alias for `removable`; accepted for back-compat.
22
- type: boolean
23
- default: false
24
20
  size:
25
21
  description: Size preset controlling font-size and padding.
26
22
  type: string
@@ -25,6 +25,11 @@
25
25
  "description": "Display text content. The main payload field for Text components extracted from HTML.",
26
26
  "$ref": "common_types.json#/$defs/DynamicString"
27
27
  },
28
+ "truncate": {
29
+ "description": "Single-line truncation with ellipsis. Ignored when `lines` is set.",
30
+ "type": "boolean",
31
+ "default": false
32
+ },
28
33
  "variant": {
29
34
  "description": "Typography variant — sets role tokens (size/weight/tracking/color).",
30
35
  "type": "string",
@@ -1,4 +1,5 @@
1
- :where(text-ui) {
1
+ @scope (text-ui) {
2
+ :where(:scope) {
2
3
  /* ── Tokens (body defaults) ── */
3
4
  --text-family: var(--a-body-family);
4
5
  --text-weight: var(--a-weight);
@@ -10,7 +11,6 @@
10
11
  --text-color: var(--a-fg);
11
12
  --text-color-strong: var(--a-fg-strong);
12
13
  }
13
- @scope (text-ui) {
14
14
 
15
15
  :scope {
16
16
  box-sizing: border-box;
@@ -11,7 +11,7 @@
11
11
  * lines — multi-line clamp count (0 = no clamp)
12
12
  */
13
13
 
14
- import { AdiaElement } from '@core/element.js';
14
+ import { AdiaElement } from '../../core/element.js';
15
15
 
16
16
  class AdiaText extends AdiaElement {
17
17
  static properties = {
@@ -12,6 +12,11 @@ props:
12
12
  description: Multi-line clamp count (0 = no clamp)
13
13
  type: number
14
14
  default: 0
15
+ truncate:
16
+ description: Single-line truncation with ellipsis. Ignored when `lines` is set.
17
+ type: boolean
18
+ default: false
19
+ reflect: true
15
20
  textContent:
16
21
  description: Display text content. The main payload field for Text components extracted from HTML.
17
22
  type: string
@@ -4,7 +4,7 @@
4
4
  * No native <textarea> inside.
5
5
  */
6
6
 
7
- import { AdiaFormElement } from '@core/form.js';
7
+ import { AdiaFormElement } from '../../core/form.js';
8
8
 
9
9
  class AdiaTextarea extends AdiaFormElement {
10
10
  static properties = {
@@ -16,15 +16,6 @@
16
16
  "component": {
17
17
  "const": "Timeline"
18
18
  },
19
- "mode": {
20
- "description": "Display mode",
21
- "type": "string",
22
- "enum": [
23
- "timeline",
24
- "steps"
25
- ],
26
- "default": "timeline"
27
- },
28
19
  "orientation": {
29
20
  "description": "Layout direction",
30
21
  "type": "string",
@@ -34,10 +25,14 @@
34
25
  ],
35
26
  "default": "vertical"
36
27
  },
37
- "step": {
38
- "description": "Current step index (steps mode)",
39
- "type": "number",
40
- "default": 0
28
+ "size": {
29
+ "description": "Rail size preset use `sm` for agent-reasoning/pipeline views; `md` is the default.",
30
+ "type": "string",
31
+ "enum": [
32
+ "sm",
33
+ "md"
34
+ ],
35
+ "default": "md"
41
36
  }
42
37
  },
43
38
  "required": [
@@ -40,7 +40,7 @@
40
40
  * .outcomes = string[] // renders an expandable sub-list under the row
41
41
  */
42
42
 
43
- import { AdiaElement } from '@core/element.js';
43
+ import { AdiaElement } from '../../core/element.js';
44
44
 
45
45
  // ── Container ──────────────────────────────────────────────────
46
46
 
@@ -8,13 +8,6 @@ category: display
8
8
  version: 1
9
9
  description: "Timeline and step wizard. Two modes: timeline (per-item state) and steps (parent-driven)."
10
10
  props:
11
- mode:
12
- description: Display mode
13
- type: string
14
- default: timeline
15
- enum:
16
- - timeline
17
- - steps
18
11
  orientation:
19
12
  description: Layout direction
20
13
  type: string
@@ -22,10 +15,12 @@ props:
22
15
  enum:
23
16
  - vertical
24
17
  - horizontal
25
- step:
26
- description: Current step index (steps mode)
27
- type: number
28
- default: 0
18
+ size:
19
+ description: Rail size preset use `sm` for agent-reasoning/pipeline views; `md` is the default.
20
+ type: string
21
+ default: md
22
+ reflect: true
23
+ enum: [sm, md]
29
24
  events: {}
30
25
  slots:
31
26
  default:
@@ -13,11 +13,6 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
- "closable": {
17
- "description": "When true, renders a dismiss button.",
18
- "type": "boolean",
19
- "default": true
20
- },
21
16
  "component": {
22
17
  "const": "Toast"
23
18
  },
@@ -26,16 +21,6 @@
26
21
  "type": "number",
27
22
  "default": 4000
28
23
  },
29
- "icon": {
30
- "description": "Leading Phosphor icon name; when omitted, defaults from `variant` (success → check, danger → x, etc.).",
31
- "type": "string",
32
- "default": ""
33
- },
34
- "open": {
35
- "description": "Controls visibility and triggers auto-dismiss timer",
36
- "type": "boolean",
37
- "default": false
38
- },
39
24
  "position": {
40
25
  "description": "Screen position",
41
26
  "type": "string",
@@ -14,7 +14,7 @@
14
14
  * close — fired after the toast finishes its exit animation
15
15
  */
16
16
 
17
- import { AdiaElement, html } from '@core/element.js';
17
+ import { AdiaElement, html } from '../../core/element.js';
18
18
 
19
19
  class AdiaToast extends AdiaElement {
20
20
  #timer = null;
@@ -8,23 +8,10 @@ category: container
8
8
  version: 1
9
9
  description: Notification popup with auto-dismiss. Animated enter/exit.
10
10
  props:
11
- icon:
12
- description: Leading Phosphor icon name; when omitted, defaults from `variant` (success → check, danger → x, etc.).
13
- type: string
14
- default: ""
15
- closable:
16
- description: When true, renders a dismiss button.
17
- type: boolean
18
- default: true
19
11
  duration:
20
12
  description: Auto-dismiss time in milliseconds. 0 disables auto-dismiss.
21
13
  type: number
22
14
  default: 4000
23
- open:
24
- description: Controls visibility and triggers auto-dismiss timer
25
- type: boolean
26
- default: false
27
- reflect: true
28
15
  position:
29
16
  description: Screen position
30
17
  type: string
@@ -12,7 +12,7 @@
12
12
  * single — restrict to one active option at a time (default false: multi-select)
13
13
  */
14
14
 
15
- import { AdiaElement } from '@core/element.js';
15
+ import { AdiaElement } from '../../core/element.js';
16
16
 
17
17
  // ── Toggle Option ──
18
18
  //
@@ -31,15 +31,6 @@
31
31
  "type": "string",
32
32
  "default": "sm"
33
33
  },
34
- "orientation": {
35
- "description": "Layout direction. Vertical mode disables overflow.",
36
- "type": "string",
37
- "enum": [
38
- "horizontal",
39
- "vertical"
40
- ],
41
- "default": "horizontal"
42
- },
43
34
  "overflow": {
44
35
  "description": "Overflow behavior",
45
36
  "type": "string",
@@ -48,20 +39,6 @@
48
39
  "none"
49
40
  ],
50
41
  "default": "menu"
51
- },
52
- "variant": {
53
- "description": "Visual style. Transparent removes background, border, and padding.",
54
- "type": "string",
55
- "enum": [
56
- "",
57
- "transparent"
58
- ],
59
- "default": ""
60
- },
61
- "vertical": {
62
- "description": "Stack items vertically (alias for orientation=\"vertical\").",
63
- "type": "boolean",
64
- "default": false
65
42
  }
66
43
  },
67
44
  "required": [