@adia-ai/web-components 0.4.8 → 0.5.0

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 (112) hide show
  1. package/USAGE.md +255 -2
  2. package/components/action-list/action-list.a2ui.json +15 -1
  3. package/components/action-list/action-list.d.ts +10 -1
  4. package/components/action-list/action-list.yaml +10 -0
  5. package/components/agent-artifact/agent-artifact.a2ui.json +7 -1
  6. package/components/agent-artifact/agent-artifact.d.ts +6 -1
  7. package/components/agent-artifact/agent-artifact.yaml +4 -0
  8. package/components/agent-feedback-bar/agent-feedback-bar.a2ui.json +7 -1
  9. package/components/agent-feedback-bar/agent-feedback-bar.d.ts +6 -1
  10. package/components/agent-feedback-bar/agent-feedback-bar.yaml +4 -0
  11. package/components/agent-questions/agent-questions.a2ui.json +11 -1
  12. package/components/agent-questions/agent-questions.d.ts +8 -1
  13. package/components/agent-questions/agent-questions.yaml +7 -0
  14. package/components/agent-reasoning/agent-reasoning.a2ui.json +25 -3
  15. package/components/agent-reasoning/agent-reasoning.d.ts +20 -3
  16. package/components/agent-reasoning/agent-reasoning.yaml +15 -0
  17. package/components/agent-suggestions/agent-suggestions.a2ui.json +15 -1
  18. package/components/agent-suggestions/agent-suggestions.d.ts +10 -1
  19. package/components/agent-suggestions/agent-suggestions.yaml +10 -0
  20. package/components/agent-trace/agent-trace.a2ui.json +7 -1
  21. package/components/agent-trace/agent-trace.d.ts +6 -1
  22. package/components/agent-trace/agent-trace.yaml +4 -0
  23. package/components/canvas/canvas.yaml +9 -7
  24. package/components/chart/chart.a2ui.json +3 -0
  25. package/components/chart/chart.d.ts +2 -0
  26. package/components/chart/chart.yaml +5 -0
  27. package/components/chart-legend/chart-legend.a2ui.json +15 -1
  28. package/components/chart-legend/chart-legend.d.ts +10 -1
  29. package/components/chart-legend/chart-legend.yaml +10 -0
  30. package/components/chat-thread/chat-thread.a2ui.json +11 -1
  31. package/components/chat-thread/chat-thread.d.ts +8 -1
  32. package/components/chat-thread/chat-thread.yaml +7 -0
  33. package/components/code/code.a2ui.json +36 -7
  34. package/components/code/code.d.ts +30 -0
  35. package/components/code/code.yaml +29 -6
  36. package/components/color-picker/class.js +59 -1
  37. package/components/color-picker/color-picker.a2ui.json +34 -0
  38. package/components/color-picker/color-picker.d.ts +70 -8
  39. package/components/color-picker/color-picker.yaml +49 -0
  40. package/components/command/command.a2ui.json +11 -1
  41. package/components/command/command.d.ts +8 -1
  42. package/components/command/command.yaml +7 -0
  43. package/components/demo-toggle/demo-toggle.a2ui.json +7 -1
  44. package/components/demo-toggle/demo-toggle.d.ts +6 -1
  45. package/components/demo-toggle/demo-toggle.yaml +4 -0
  46. package/components/heatmap/heatmap.a2ui.json +11 -2
  47. package/components/heatmap/heatmap.d.ts +6 -0
  48. package/components/heatmap/heatmap.yaml +17 -2
  49. package/components/link/link.a2ui.json +11 -1
  50. package/components/link/link.d.ts +8 -1
  51. package/components/link/link.yaml +7 -0
  52. package/components/list/list.a2ui.json +11 -1
  53. package/components/list/list.d.ts +8 -1
  54. package/components/list/list.yaml +7 -0
  55. package/components/menu/menu.a2ui.json +11 -1
  56. package/components/menu/menu.d.ts +8 -1
  57. package/components/menu/menu.yaml +7 -0
  58. package/components/nav/nav.a2ui.json +15 -1
  59. package/components/nav/nav.d.ts +10 -1
  60. package/components/nav/nav.yaml +10 -0
  61. package/components/nav-group/nav-group.a2ui.json +11 -1
  62. package/components/nav-group/nav-group.d.ts +8 -1
  63. package/components/nav-group/nav-group.yaml +7 -0
  64. package/components/nav-item/nav-item.a2ui.json +15 -1
  65. package/components/nav-item/nav-item.d.ts +10 -1
  66. package/components/nav-item/nav-item.yaml +10 -0
  67. package/components/noodles/noodles.a2ui.json +46 -2
  68. package/components/noodles/noodles.d.ts +28 -2
  69. package/components/noodles/noodles.yaml +32 -0
  70. package/components/otp-input/otp-input.a2ui.json +14 -2
  71. package/components/otp-input/otp-input.d.ts +11 -0
  72. package/components/otp-input/otp-input.yaml +10 -2
  73. package/components/pagination/pagination.a2ui.json +7 -1
  74. package/components/pagination/pagination.d.ts +6 -1
  75. package/components/pagination/pagination.yaml +4 -0
  76. package/components/stream/stream.a2ui.json +7 -1
  77. package/components/stream/stream.d.ts +6 -1
  78. package/components/stream/stream.yaml +4 -0
  79. package/components/swatch/class.js +362 -15
  80. package/components/swatch/swatch.a2ui.json +68 -1
  81. package/components/swatch/swatch.css +150 -0
  82. package/components/swatch/swatch.d.ts +43 -0
  83. package/components/swatch/swatch.yaml +67 -1
  84. package/components/swiper/swiper.a2ui.json +18 -2
  85. package/components/swiper/swiper.d.ts +14 -2
  86. package/components/swiper/swiper.yaml +11 -0
  87. package/components/table/table.a2ui.json +80 -5
  88. package/components/table/table.d.ts +58 -5
  89. package/components/table/table.yaml +54 -2
  90. package/components/tabs/tabs.a2ui.json +7 -1
  91. package/components/tabs/tabs.d.ts +6 -1
  92. package/components/tabs/tabs.yaml +4 -0
  93. package/components/tag/tag.a2ui.json +11 -1
  94. package/components/tag/tag.d.ts +8 -1
  95. package/components/tag/tag.yaml +7 -0
  96. package/components/timeline/timeline.a2ui.json +3 -7
  97. package/components/timeline/timeline.d.ts +2 -4
  98. package/components/timeline/timeline.yaml +3 -6
  99. package/components/toggle-group/toggle-group.a2ui.json +7 -1
  100. package/components/toggle-group/toggle-group.d.ts +6 -1
  101. package/components/toggle-group/toggle-group.yaml +4 -0
  102. package/components/toggle-scheme/toggle-scheme.a2ui.json +11 -1
  103. package/components/toggle-scheme/toggle-scheme.d.ts +8 -1
  104. package/components/toggle-scheme/toggle-scheme.yaml +7 -0
  105. package/components/tree/tree.a2ui.json +15 -1
  106. package/components/tree/tree.d.ts +10 -1
  107. package/components/tree/tree.yaml +10 -0
  108. package/core/data-stream.d.ts +56 -0
  109. package/core/element.d.ts +10 -0
  110. package/core/index.d.ts +6 -0
  111. package/index.d.ts +9 -2
  112. package/package.json +2 -2
@@ -40,7 +40,17 @@
40
40
  "description": "Fired when Escape is pressed"
41
41
  },
42
42
  "select": {
43
- "description": "Fired when an item is selected. Detail contains { value, label, item }."
43
+ "description": "Fired when an item is selected. Detail contains { value, label, item }.",
44
+ "detail": {
45
+ "label": {
46
+ "description": "Item label text.",
47
+ "type": "string"
48
+ },
49
+ "value": {
50
+ "description": "Item value attribute.",
51
+ "type": "string"
52
+ }
53
+ }
44
54
  }
45
55
  },
46
56
  "examples": [
@@ -13,7 +13,14 @@
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
15
  export type CommandDismissEvent = CustomEvent<unknown>;
16
- export type CommandSelectEvent = CustomEvent<unknown>;
16
+ export interface CommandSelectEventDetail {
17
+ /** Item label text. */
18
+ label: string;
19
+ /** Item value attribute. */
20
+ value: string;
21
+ }
22
+
23
+ export type CommandSelectEvent = CustomEvent<CommandSelectEventDetail>;
17
24
 
18
25
  export class UICommand extends UIElement {
19
26
  /** Whether the command palette is visible */
@@ -20,6 +20,13 @@ events:
20
20
  description: Fired when Escape is pressed
21
21
  select:
22
22
  description: Fired when an item is selected. Detail contains { value, label, item }.
23
+ detail:
24
+ value:
25
+ type: string
26
+ description: Item value attribute.
27
+ label:
28
+ type: string
29
+ description: Item label text.
23
30
  slots:
24
31
  empty:
25
32
  description: Empty state shown when no items match
@@ -56,7 +56,13 @@
56
56
  "composes": [],
57
57
  "events": {
58
58
  "change": {
59
- "description": "Fired when the toggle flips. detail contains { state }."
59
+ "description": "Fired when the toggle flips. detail contains { state }.",
60
+ "detail": {
61
+ "state": {
62
+ "description": "New toggle state.",
63
+ "type": "boolean"
64
+ }
65
+ }
60
66
  }
61
67
  },
62
68
  "examples": [
@@ -12,7 +12,12 @@
12
12
 
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
- export type DemoToggleChangeEvent = CustomEvent<unknown>;
15
+ export interface DemoToggleChangeEventDetail {
16
+ /** New toggle state. */
17
+ state: boolean;
18
+ }
19
+
20
+ export type DemoToggleChangeEvent = CustomEvent<DemoToggleChangeEventDetail>;
16
21
 
17
22
  export class UIDemoToggle extends UIElement {
18
23
  /** Initial state when [state] is not set on connect ("on" | "off"). */
@@ -44,6 +44,10 @@ props:
44
44
  events:
45
45
  change:
46
46
  description: Fired when the toggle flips. detail contains { state }.
47
+ detail:
48
+ state:
49
+ type: boolean
50
+ description: New toggle state.
47
51
  slots:
48
52
  bar:
49
53
  description: Internal header bar (auto-stamped). Hosts the embedded switch + label.
@@ -87,10 +87,19 @@
87
87
  "composes": [],
88
88
  "events": {
89
89
  "cell-click": {
90
- "description": "Fired on cell-click."
90
+ "description": "Fired on cell click. detail carries the cell's row + column indices + value."
91
91
  },
92
92
  "cell-hover": {
93
- "description": "Fired on cell-hover."
93
+ "description": "Fired on cell hover. detail carries the cell's row + column indices + value."
94
+ },
95
+ "chart-hover": {
96
+ "description": "Canonical chart-hover shape — same detail as cell-hover. Re-emitted\nalongside cell-hover so consumers wiring a pointer-follow tooltip via\ntooltip-ui[follows=pointer] can listen for one event-name regardless\nof chart kind (chart-ui + heatmap-ui both emit it).\n"
97
+ },
98
+ "chart-leave": {
99
+ "description": "Signal-only counterpart to chart-hover. Fires when the pointer leaves\nthe heatmap grid. Detail-free — receivers should clear their hover\nstate on receipt.\n"
100
+ },
101
+ "chart-select": {
102
+ "description": "Canonical chart-select shape — same detail as cell-click. Re-emitted\nalongside cell-click for chart-kind-agnostic listeners.\n"
94
103
  }
95
104
  },
96
105
  "examples": [
@@ -14,6 +14,9 @@ import { UIElement } from '../../core/element.js';
14
14
 
15
15
  export type HeatmapCellClickEvent = CustomEvent<unknown>;
16
16
  export type HeatmapCellHoverEvent = CustomEvent<unknown>;
17
+ export type HeatmapChartHoverEvent = CustomEvent<unknown>;
18
+ export type HeatmapChartLeaveEvent = CustomEvent<unknown>;
19
+ export type HeatmapChartSelectEvent = CustomEvent<unknown>;
17
20
 
18
21
  export class UIHeatmap extends UIElement {
19
22
  /** Heatmap type */
@@ -40,4 +43,7 @@ export class UIHeatmap extends UIElement {
40
43
  ): void;
41
44
  addEventListener(type: 'cell-click', listener: (ev: HeatmapCellClickEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
42
45
  addEventListener(type: 'cell-hover', listener: (ev: HeatmapCellHoverEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
46
+ addEventListener(type: 'chart-hover', listener: (ev: HeatmapChartHoverEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
47
+ addEventListener(type: 'chart-leave', listener: (ev: HeatmapChartLeaveEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
48
+ addEventListener(type: 'chart-select', listener: (ev: HeatmapChartSelectEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
43
49
  }
@@ -62,9 +62,24 @@ props:
62
62
  attribute: start-date
63
63
  events:
64
64
  cell-click:
65
- description: "Fired on cell-click."
65
+ description: Fired on cell click. detail carries the cell's row + column indices + value.
66
66
  cell-hover:
67
- description: "Fired on cell-hover."
67
+ description: Fired on cell hover. detail carries the cell's row + column indices + value.
68
+ chart-hover:
69
+ description: |
70
+ Canonical chart-hover shape — same detail as cell-hover. Re-emitted
71
+ alongside cell-hover so consumers wiring a pointer-follow tooltip via
72
+ tooltip-ui[follows=pointer] can listen for one event-name regardless
73
+ of chart kind (chart-ui + heatmap-ui both emit it).
74
+ chart-leave:
75
+ description: |
76
+ Signal-only counterpart to chart-hover. Fires when the pointer leaves
77
+ the heatmap grid. Detail-free — receivers should clear their hover
78
+ state on receipt.
79
+ chart-select:
80
+ description: |
81
+ Canonical chart-select shape — same detail as cell-click. Re-emitted
82
+ alongside cell-click for chart-kind-agnostic listeners.
68
83
  slots:
69
84
  title:
70
85
  description: "Child content region for the `title` slot."
@@ -83,7 +83,17 @@
83
83
  "composes": [],
84
84
  "events": {
85
85
  "press": {
86
- "description": "Bubbles when the link is activated by click or Enter. Detail: `{ href, target }`. Fires BEFORE the browser's native navigation so handlers can `preventDefault()` and route through the A2UI action handler system. If no handler intercepts, native navigation proceeds."
86
+ "description": "Bubbles when the link is activated by click or Enter. Detail: `{ href, target }`. Fires BEFORE the browser's native navigation so handlers can `preventDefault()` and route through the A2UI action handler system. If no handler intercepts, native navigation proceeds.",
87
+ "detail": {
88
+ "href": {
89
+ "description": "Link href attribute.",
90
+ "type": "string"
91
+ },
92
+ "target": {
93
+ "description": "Link target attribute (e.g. _blank).",
94
+ "type": "string"
95
+ }
96
+ }
87
97
  }
88
98
  },
89
99
  "examples": [
@@ -36,7 +36,14 @@ wiring. ARIA role is "link" (set automatically by `<a>` element).
36
36
 
37
37
  import { UIElement } from '../../core/element.js';
38
38
 
39
- export type LinkPressEvent = CustomEvent<unknown>;
39
+ export interface LinkPressEventDetail {
40
+ /** Link href attribute. */
41
+ href: string;
42
+ /** Link target attribute (e.g. _blank). */
43
+ target: string;
44
+ }
45
+
46
+ export type LinkPressEvent = CustomEvent<LinkPressEventDetail>;
40
47
 
41
48
  export class UILink extends UIElement {
42
49
  /** Stretches the link to fill its container; useful for standalone link rows. */
@@ -102,6 +102,13 @@ events:
102
102
  so handlers can `preventDefault()` and route through the A2UI
103
103
  action handler system. If no handler intercepts, native
104
104
  navigation proceeds.
105
+ detail:
106
+ href:
107
+ type: string
108
+ description: Link href attribute.
109
+ target:
110
+ type: string
111
+ description: Link target attribute (e.g. _blank).
105
112
 
106
113
  slots:
107
114
  default:
@@ -49,7 +49,17 @@
49
49
  ],
50
50
  "events": {
51
51
  "selection-change": {
52
- "description": "Fired on selection-change."
52
+ "description": "Fired on selection-change.",
53
+ "detail": {
54
+ "key": {
55
+ "description": "New selection key.",
56
+ "type": "string"
57
+ },
58
+ "previousKey": {
59
+ "description": "Previously selected key.",
60
+ "type": "string"
61
+ }
62
+ }
53
63
  }
54
64
  },
55
65
  "examples": [
@@ -12,7 +12,14 @@
12
12
 
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
- export type ListSelectionChangeEvent = CustomEvent<unknown>;
15
+ export interface ListSelectionChangeEventDetail {
16
+ /** New selection key. */
17
+ key: string;
18
+ /** Previously selected key. */
19
+ previousKey: string;
20
+ }
21
+
22
+ export type ListSelectionChangeEvent = CustomEvent<ListSelectionChangeEventDetail>;
16
23
 
17
24
  export class UIList extends UIElement {
18
25
  /** Show dividers between items */
@@ -32,6 +32,13 @@ props:
32
32
  events:
33
33
  selection-change:
34
34
  description: "Fired on selection-change."
35
+ detail:
36
+ key:
37
+ type: string
38
+ description: New selection key.
39
+ previousKey:
40
+ type: string
41
+ description: Previously selected key.
35
42
  slots: {}
36
43
  states:
37
44
  - name: idle
@@ -50,7 +50,17 @@
50
50
  ],
51
51
  "events": {
52
52
  "action": {
53
- "description": "Fired when a menu item is activated. Detail contains the triggering element."
53
+ "description": "Fired when a menu item is activated. Detail contains the triggering element.",
54
+ "detail": {
55
+ "text": {
56
+ "description": "Menu item text.",
57
+ "type": "string"
58
+ },
59
+ "value": {
60
+ "description": "Menu item value.",
61
+ "type": "string"
62
+ }
63
+ }
54
64
  }
55
65
  },
56
66
  "examples": [
@@ -12,7 +12,14 @@
12
12
 
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
- export type MenuActionEvent = CustomEvent<unknown>;
15
+ export interface MenuActionEventDetail {
16
+ /** Menu item text. */
17
+ text: string;
18
+ /** Menu item value. */
19
+ value: string;
20
+ }
21
+
22
+ export type MenuActionEvent = CustomEvent<MenuActionEventDetail>;
16
23
 
17
24
  export class UIMenu extends UIElement {
18
25
  /** Gap in px */
@@ -33,6 +33,13 @@ props:
33
33
  events:
34
34
  action:
35
35
  description: Fired when a menu item is activated. Detail contains the triggering element.
36
+ detail:
37
+ value:
38
+ type: string
39
+ description: Menu item value.
40
+ text:
41
+ type: string
42
+ description: Menu item text.
36
43
  slots:
37
44
  default:
38
45
  description: Menu items with role="menuitem" and optional <hr> dividers
@@ -51,7 +51,21 @@
51
51
  "composes": [],
52
52
  "events": {
53
53
  "nav-select": {
54
- "description": "Bubbles from <nav-item-ui> children when one is selected. Detail: { item, text, value }."
54
+ "description": "Bubbles from <nav-item-ui> children when one is selected. Detail: { item, text, value }.",
55
+ "detail": {
56
+ "item": {
57
+ "description": "Selected nav-item element.",
58
+ "type": "object"
59
+ },
60
+ "text": {
61
+ "description": "Item text content.",
62
+ "type": "string"
63
+ },
64
+ "value": {
65
+ "description": "Item value attribute.",
66
+ "type": "string"
67
+ }
68
+ }
55
69
  }
56
70
  },
57
71
  "examples": [
@@ -20,7 +20,16 @@ and a [heading] kicker rendered via CSS.
20
20
 
21
21
  import { UIElement } from '../../core/element.js';
22
22
 
23
- export type NavSelectEvent = CustomEvent<unknown>;
23
+ export interface NavSelectEventDetail {
24
+ /** Selected nav-item element. */
25
+ item: Record<string, unknown>;
26
+ /** Item text content. */
27
+ text: string;
28
+ /** Item value attribute. */
29
+ value: string;
30
+ }
31
+
32
+ export type NavSelectEvent = CustomEvent<NavSelectEventDetail>;
24
33
 
25
34
  export class UINav extends UIElement {
26
35
  /** Primary-variant only. Force icon-only collapse regardless of viewport width. */
@@ -36,6 +36,16 @@ props:
36
36
  events:
37
37
  nav-select:
38
38
  description: "Bubbles from <nav-item-ui> children when one is selected. Detail: { item, text, value }."
39
+ detail:
40
+ item:
41
+ type: object
42
+ description: Selected nav-item element.
43
+ text:
44
+ type: string
45
+ description: Item text content.
46
+ value:
47
+ type: string
48
+ description: Item value attribute.
39
49
 
40
50
  slots:
41
51
  default:
@@ -61,7 +61,17 @@
61
61
  "composes": [],
62
62
  "events": {
63
63
  "group-toggle": {
64
- "description": "Fired when the header toggles via click/keyboard. Detail: { text, open }."
64
+ "description": "Fired when the header toggles via click/keyboard. Detail: { text, open }.",
65
+ "detail": {
66
+ "open": {
67
+ "description": "Whether the group is now open.",
68
+ "type": "boolean"
69
+ },
70
+ "text": {
71
+ "description": "Group label text.",
72
+ "type": "string"
73
+ }
74
+ }
65
75
  }
66
76
  },
67
77
  "examples": [],
@@ -20,7 +20,14 @@ when [collapsible] (default true).
20
20
 
21
21
  import { UIElement } from '../../core/element.js';
22
22
 
23
- export type NavGroupGroupToggleEvent = CustomEvent<unknown>;
23
+ export interface NavGroupGroupToggleEventDetail {
24
+ /** Whether the group is now open. */
25
+ open: boolean;
26
+ /** Group label text. */
27
+ text: string;
28
+ }
29
+
30
+ export type NavGroupGroupToggleEvent = CustomEvent<NavGroupGroupToggleEventDetail>;
24
31
 
25
32
  export class UINavGroup extends UIElement {
26
33
  /** Optional trailing badge (count, label). */
@@ -44,6 +44,13 @@ props:
44
44
  events:
45
45
  group-toggle:
46
46
  description: "Fired when the header toggles via click/keyboard. Detail: { text, open }."
47
+ detail:
48
+ text:
49
+ type: string
50
+ description: Group label text.
51
+ open:
52
+ type: boolean
53
+ description: Whether the group is now open.
47
54
 
48
55
  slots:
49
56
  default:
@@ -66,7 +66,21 @@
66
66
  "composes": [],
67
67
  "events": {
68
68
  "nav-select": {
69
- "description": "Bubbles when the item is activated. Detail: { item, text, value }."
69
+ "description": "Bubbles when the item is activated. Detail: { item, text, value }.",
70
+ "detail": {
71
+ "item": {
72
+ "description": "The nav-item element itself.",
73
+ "type": "object"
74
+ },
75
+ "text": {
76
+ "description": "Item text content.",
77
+ "type": "string"
78
+ },
79
+ "value": {
80
+ "description": "Item value attribute.",
81
+ "type": "string"
82
+ }
83
+ }
70
84
  }
71
85
  },
72
86
  "examples": [],
@@ -20,7 +20,16 @@ bubbles a `nav-select` event.
20
20
 
21
21
  import { UIElement } from '../../core/element.js';
22
22
 
23
- export type NavItemNavSelectEvent = CustomEvent<unknown>;
23
+ export interface NavItemNavSelectEventDetail {
24
+ /** The nav-item element itself. */
25
+ item: Record<string, unknown>;
26
+ /** Item text content. */
27
+ text: string;
28
+ /** Item value attribute. */
29
+ value: string;
30
+ }
31
+
32
+ export type NavItemNavSelectEvent = CustomEvent<NavItemNavSelectEventDetail>;
24
33
 
25
34
  export class UINavItem extends UIElement {
26
35
  /** Optional trailing badge. */
@@ -48,6 +48,16 @@ props:
48
48
  events:
49
49
  nav-select:
50
50
  description: "Bubbles when the item is activated. Detail: { item, text, value }."
51
+ detail:
52
+ item:
53
+ type: object
54
+ description: The nav-item element itself.
55
+ text:
56
+ type: string
57
+ description: Item text content.
58
+ value:
59
+ type: string
60
+ description: Item value attribute.
51
61
 
52
62
  slots:
53
63
  default:
@@ -92,10 +92,54 @@
92
92
  "composes": [],
93
93
  "events": {
94
94
  "noodle-connect": {
95
- "description": "Fired when a connection is created. detail: { id, from, to, fromPort, toPort }"
95
+ "description": "Fired when a connection is created. detail: { id, from, to, fromPort, toPort }",
96
+ "detail": {
97
+ "from": {
98
+ "description": "Source node ID.",
99
+ "type": "string"
100
+ },
101
+ "fromPort": {
102
+ "description": "Source port identifier.",
103
+ "type": "string"
104
+ },
105
+ "id": {
106
+ "description": "Connection ID.",
107
+ "type": "string"
108
+ },
109
+ "to": {
110
+ "description": "Target node ID.",
111
+ "type": "string"
112
+ },
113
+ "toPort": {
114
+ "description": "Target port identifier.",
115
+ "type": "string"
116
+ }
117
+ }
96
118
  },
97
119
  "noodle-disconnect": {
98
- "description": "Fired when a connection is removed. detail: { id, from, to, fromPort, toPort }"
120
+ "description": "Fired when a connection is removed. detail: { id, from, to, fromPort, toPort }",
121
+ "detail": {
122
+ "from": {
123
+ "description": "Source node ID.",
124
+ "type": "string"
125
+ },
126
+ "fromPort": {
127
+ "description": "Source port identifier.",
128
+ "type": "string"
129
+ },
130
+ "id": {
131
+ "description": "Connection ID.",
132
+ "type": "string"
133
+ },
134
+ "to": {
135
+ "description": "Target node ID.",
136
+ "type": "string"
137
+ },
138
+ "toPort": {
139
+ "description": "Target port identifier.",
140
+ "type": "string"
141
+ }
142
+ }
99
143
  },
100
144
  "noodle-drag": {
101
145
  "description": "Fired during drag-to-connect. detail: { from, fromPort, x, y, reconnect }"
@@ -12,8 +12,34 @@
12
12
 
13
13
  import { UIElement } from '../../core/element.js';
14
14
 
15
- export type NoodlesNoodleConnectEvent = CustomEvent<unknown>;
16
- export type NoodlesNoodleDisconnectEvent = CustomEvent<unknown>;
15
+ export interface NoodlesNoodleConnectEventDetail {
16
+ /** Source node ID. */
17
+ from: string;
18
+ /** Source port identifier. */
19
+ fromPort: string;
20
+ /** Connection ID. */
21
+ id: string;
22
+ /** Target node ID. */
23
+ to: string;
24
+ /** Target port identifier. */
25
+ toPort: string;
26
+ }
27
+
28
+ export type NoodlesNoodleConnectEvent = CustomEvent<NoodlesNoodleConnectEventDetail>;
29
+ export interface NoodlesNoodleDisconnectEventDetail {
30
+ /** Source node ID. */
31
+ from: string;
32
+ /** Source port identifier. */
33
+ fromPort: string;
34
+ /** Connection ID. */
35
+ id: string;
36
+ /** Target node ID. */
37
+ to: string;
38
+ /** Target port identifier. */
39
+ toPort: string;
40
+ }
41
+
42
+ export type NoodlesNoodleDisconnectEvent = CustomEvent<NoodlesNoodleDisconnectEventDetail>;
17
43
  export type NoodlesNoodleDragEvent = CustomEvent<unknown>;
18
44
 
19
45
  export class UINoodles extends UIElement {
@@ -68,8 +68,40 @@ props:
68
68
  events:
69
69
  noodle-connect:
70
70
  description: "Fired when a connection is created. detail: { id, from, to, fromPort, toPort }"
71
+ detail:
72
+ id:
73
+ type: string
74
+ description: Connection ID.
75
+ from:
76
+ type: string
77
+ description: Source node ID.
78
+ to:
79
+ type: string
80
+ description: Target node ID.
81
+ fromPort:
82
+ type: string
83
+ description: Source port identifier.
84
+ toPort:
85
+ type: string
86
+ description: Target port identifier.
71
87
  noodle-disconnect:
72
88
  description: "Fired when a connection is removed. detail: { id, from, to, fromPort, toPort }"
89
+ detail:
90
+ id:
91
+ type: string
92
+ description: Connection ID.
93
+ from:
94
+ type: string
95
+ description: Source node ID.
96
+ to:
97
+ type: string
98
+ description: Target node ID.
99
+ fromPort:
100
+ type: string
101
+ description: Source port identifier.
102
+ toPort:
103
+ type: string
104
+ description: Target port identifier.
73
105
  noodle-drag:
74
106
  description: "Fired during drag-to-connect. detail: { from, fromPort, x, y, reconnect }"
75
107
  slots: {}
@@ -47,10 +47,22 @@
47
47
  "composes": [],
48
48
  "events": {
49
49
  "complete": {
50
- "description": "Fired when all digits are filled. Detail contains { code }."
50
+ "description": "Fired exactly once when the user fills the last digit slot. detail.value is the combined string.",
51
+ "detail": {
52
+ "value": {
53
+ "description": "Combined digits (e.g. \"123456\").",
54
+ "type": "string"
55
+ }
56
+ }
51
57
  },
52
58
  "input": {
53
- "description": "Fired on every digit change"
59
+ "description": "Fired on every digit change. detail.value is the current combined string.",
60
+ "detail": {
61
+ "value": {
62
+ "description": "Combined digits at the moment of the change.",
63
+ "type": "string"
64
+ }
65
+ }
54
66
  }
55
67
  },
56
68
  "examples": [