@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
@@ -8,25 +8,8 @@ category: container
8
8
  version: 1
9
9
  description: Centered dialog overlay using native <dialog>. Focus trapping, Escape key, backdrop.
10
10
  props:
11
- anchor:
12
- description: ID of the element to anchor to (popover mode only). Positions the surface below the
13
- anchor element.
14
- type: string
15
- default: ""
16
- trigger:
17
- description: ID of the element that opens this modal (sets aria-controls + click handler).
18
- type: string
19
- default: ""
20
- mode:
21
- description: Surface type. Dialog uses showModal() with backdrop and focus trap. Popover uses the
22
- Popover API with light dismiss and optional anchor positioning.
23
- type: string
24
- default: dialog
25
- enum:
26
- - dialog
27
- - popover
28
11
  open:
29
- description: Alias for show (backwards compatibility). Either property controls visibility.
12
+ description: Controls overlay visibility. Setting to true opens the surface with entry animation.
30
13
  type: boolean
31
14
  default: false
32
15
  reflect: true
@@ -34,10 +17,6 @@ props:
34
17
  description: When true, suppress backdrop click and Escape key dismissal of the overlay
35
18
  type: boolean
36
19
  default: false
37
- show:
38
- description: Controls overlay visibility. Setting to true opens the surface with entry animation.
39
- type: boolean
40
- default: false
41
20
  size:
42
21
  description: Width preset. sm=24rem, md=32rem, lg=48rem, full=95vw.
43
22
  type: string
@@ -36,11 +36,6 @@
36
36
  ],
37
37
  "default": "bezier"
38
38
  },
39
- "disabled": {
40
- "description": "Disable the controller. Noodles render as dashed muted lines",
41
- "type": "boolean",
42
- "default": false
43
- },
44
39
  "editable": {
45
40
  "description": "Allow interactive creation/deletion of connections via drag",
46
41
  "type": "boolean",
@@ -10,7 +10,7 @@
10
10
  * Supports bezier, step, and straight curve modes.
11
11
  */
12
12
 
13
- import { AdiaElement } from '@core/element.js';
13
+ import { AdiaElement } from '../../core/element.js';
14
14
 
15
15
  let nextId = 0;
16
16
 
@@ -25,11 +25,6 @@ props:
25
25
  - bezier
26
26
  - step
27
27
  - straight
28
- disabled:
29
- description: Disable the controller. Noodles render as dashed muted lines
30
- type: boolean
31
- default: false
32
- reflect: true
33
28
  editable:
34
29
  description: Allow interactive creation/deletion of connections via drag
35
30
  type: boolean
@@ -31,11 +31,6 @@
31
31
  "type": "string",
32
32
  "default": ""
33
33
  },
34
- "separator": {
35
- "description": "Position to insert a dash separator (0 = no separator)",
36
- "type": "number",
37
- "default": 0
38
- },
39
34
  "value": {
40
35
  "description": "Current OTP value",
41
36
  "type": "string",
@@ -8,7 +8,7 @@
8
8
  * Events: 'complete' (detail: {value}), 'input'
9
9
  */
10
10
 
11
- import { AdiaFormElement } from '@core/form.js';
11
+ import { AdiaFormElement } from '../../core/form.js';
12
12
 
13
13
  class AdiaOtpInput extends AdiaFormElement {
14
14
  static properties = {
@@ -21,10 +21,6 @@ props:
21
21
  description: Number of digit boxes
22
22
  type: number
23
23
  default: 6
24
- separator:
25
- description: Position to insert a dash separator (0 = no separator)
26
- type: number
27
- default: 0
28
24
  value:
29
25
  description: Current OTP value
30
26
  type: string
@@ -16,21 +16,11 @@
16
16
  "component": {
17
17
  "const": "Pagination"
18
18
  },
19
- "current": {
20
- "description": "Alias for `page` — accepted for back-compat.",
21
- "type": "number",
22
- "default": 1
23
- },
24
19
  "page": {
25
20
  "description": "Current active page number.",
26
21
  "type": "number",
27
22
  "default": 1
28
23
  },
29
- "pageSize": {
30
- "description": "Items per page — drives the visible window and total-page math when combined with a total item count.",
31
- "type": "number",
32
- "default": 10
33
- },
34
24
  "siblings": {
35
25
  "description": "Number of page buttons to show on each side of the current page.",
36
26
  "type": "number",
@@ -44,7 +34,7 @@
44
34
  "variant": {
45
35
  "description": "Visual variant",
46
36
  "type": "string",
47
- "default": ""
37
+ "default": "default"
48
38
  }
49
39
  },
50
40
  "required": [
@@ -62,12 +52,12 @@
62
52
  "examples": [
63
53
  {
64
54
  "description": "Card with header containing title and search input, table component, and pagination footer.",
65
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"size\": \"lg\",\n \"children\": [\n \"hdr\",\n \"sec\",\n \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title-row\"\n ]\n },\n {\n \"id\": \"title-row\",\n \"component\": \"Row\",\n \"children\": [\n \"title\",\n \"search\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"Data Table\",\n \"variant\": \"section\"\n },\n {\n \"id\": \"search\",\n \"component\": \"Input\",\n \"placeholder\": \"Search...\",\n \"type\": \"search\",\n \"name\": \"search\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"tbl\"\n ]\n },\n {\n \"id\": \"tbl\",\n \"component\": \"Table\",\n \"sortable\": true\n },\n {\n \"id\": \"ftr\",\n \"component\": \"Footer\",\n \"children\": [\n \"pager\"\n ]\n },\n {\n \"id\": \"pager\",\n \"component\": \"Pagination\",\n \"totalPages\": 10,\n \"currentPage\": 1\n }\n]",
55
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"size\": \"lg\",\n \"children\": [\n \"hdr\",\n \"sec\",\n \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title-row\"\n ]\n },\n {\n \"id\": \"title-row\",\n \"component\": \"Row\",\n \"children\": [\n \"title\",\n \"search\"\n ],\n \"gap\": \"4\"\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"Data Table\",\n \"variant\": \"section\"\n },\n {\n \"id\": \"search\",\n \"component\": \"Input\",\n \"placeholder\": \"Search...\",\n \"type\": \"search\",\n \"name\": \"search\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"tbl\"\n ]\n },\n {\n \"id\": \"tbl\",\n \"component\": \"Table\",\n \"sortable\": true\n },\n {\n \"id\": \"ftr\",\n \"component\": \"Footer\",\n \"children\": [\n \"pager\"\n ]\n },\n {\n \"id\": \"pager\",\n \"component\": \"Pagination\",\n \"total\": 10,\n \"page\": 1\n }\n]",
66
56
  "name": "data-table-view"
67
57
  },
68
58
  {
69
59
  "description": "Row with centered pagination component for navigating paged content.",
70
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Row\",\n \"justify\": \"center\",\n \"children\": [\n \"pager\"\n ]\n },\n {\n \"id\": \"pager\",\n \"component\": \"Pagination\",\n \"totalPages\": 10,\n \"currentPage\": 1\n }\n]",
60
+ "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Row\",\n \"justify\": \"center\",\n \"children\": [\n \"pager\"\n ]\n },\n {\n \"id\": \"pager\",\n \"component\": \"Pagination\",\n \"total\": 10,\n \"page\": 1\n }\n]",
71
61
  "name": "pagination-nav"
72
62
  }
73
63
  ],
@@ -16,7 +16,7 @@
16
16
  /* ── Colors ── */
17
17
  --pagination-fg: var(--a-fg-subtle);
18
18
  --pagination-fg-hover: var(--a-fg);
19
- --pagination-fg-active: white;
19
+ --pagination-fg-active: var(--a-chrome-light);
20
20
  --pagination-fg-muted: var(--a-fg-muted);
21
21
  --pagination-bg-hover: var(--a-bg-muted);
22
22
  --pagination-bg-active: var(--a-accent);
@@ -8,7 +8,7 @@
8
8
  * page-change — { detail: { page } }
9
9
  */
10
10
 
11
- import { AdiaElement } from '@core/element.js';
11
+ import { AdiaElement } from '../../core/element.js';
12
12
 
13
13
  class AdiaPagination extends AdiaElement {
14
14
  static properties = {
@@ -12,19 +12,10 @@ props:
12
12
  description: Current active page number.
13
13
  type: number
14
14
  default: 1
15
- current:
16
- description: Alias for `page` — accepted for back-compat.
17
- type: number
18
- default: 1
19
15
  siblings:
20
16
  description: Number of page buttons to show on each side of the current page.
21
17
  type: number
22
18
  default: 1
23
- pageSize:
24
- description: Items per page — drives the visible window and total-page math when combined with a total item count.
25
- type: number
26
- default: 10
27
- attribute: page-size
28
19
  total:
29
20
  description: Total number of pages.
30
21
  type: number
@@ -32,7 +23,7 @@ props:
32
23
  variant:
33
24
  description: Visual variant
34
25
  type: string
35
- default: ""
26
+ default: default
36
27
  events:
37
28
  page-change:
38
29
  description: Fired when a page button is clicked. detail contains { page }.
@@ -112,8 +103,8 @@ examples:
112
103
  {
113
104
  "id": "pager",
114
105
  "component": "Pagination",
115
- "totalPages": 10,
116
- "currentPage": 1
106
+ "total": 10,
107
+ "page": 1
117
108
  }
118
109
  ]
119
110
  - name: pagination-nav
@@ -131,8 +122,8 @@ examples:
131
122
  {
132
123
  "id": "pager",
133
124
  "component": "Pagination",
134
- "totalPages": 10,
135
- "currentPage": 1
125
+ "total": 10,
126
+ "page": 1
136
127
  }
137
128
  ]
138
129
  keywords:
@@ -31,20 +31,10 @@
31
31
  "type": "number",
32
32
  "default": 200
33
33
  },
34
- "open": {
35
- "description": "Controls whether the panel content is visible",
36
- "type": "boolean",
37
- "default": false
38
- },
39
34
  "resizable": {
40
35
  "description": "Component property: resizable.",
41
36
  "type": "boolean",
42
37
  "default": false
43
- },
44
- "text": {
45
- "description": "Text displayed in the header",
46
- "type": "string",
47
- "default": ""
48
38
  }
49
39
  },
50
40
  "required": [
@@ -25,7 +25,7 @@
25
25
  * pane.toggle()
26
26
  */
27
27
 
28
- import { AdiaElement } from '@core/element.js';
28
+ import { AdiaElement } from '../../core/element.js';
29
29
 
30
30
  class AdiaPane extends AdiaElement {
31
31
  static properties = {
@@ -22,19 +22,10 @@ props:
22
22
  type: number
23
23
  default: 200
24
24
  attribute: min-width
25
- open:
26
- description: Controls whether the panel content is visible
27
- type: boolean
28
- default: false
29
- reflect: true
30
25
  resizable:
31
26
  description: "Component property: resizable."
32
27
  type: boolean
33
28
  default: false
34
- text:
35
- description: Text displayed in the header
36
- type: string
37
- default: ""
38
29
  events: {}
39
30
  slots:
40
31
  header:
@@ -1,4 +1,4 @@
1
- import { AdiaElement } from '@core/element.js';
1
+ import { AdiaElement } from '../../core/element.js';
2
2
 
3
3
  /**
4
4
  * <pipeline-status-ui> — Single updating pipeline status indicator.
@@ -13,20 +13,6 @@
13
13
  }
14
14
  ],
15
15
  "properties": {
16
- "type": {
17
- "description": "'auto' dismisses on outside click, 'manual' requires explicit close",
18
- "type": "string",
19
- "enum": [
20
- "auto",
21
- "manual"
22
- ],
23
- "default": "auto"
24
- },
25
- "anchor": {
26
- "description": "ID of the anchor element to position relative to",
27
- "type": "string",
28
- "default": ""
29
- },
30
16
  "component": {
31
17
  "const": "Popover"
32
18
  },
@@ -13,8 +13,8 @@
13
13
  * Triggers: click | hover | manual. ESC closes click/manual popovers.
14
14
  */
15
15
 
16
- import { AdiaElement } from '@core/element.js';
17
- import { anchorPopover } from '@core/anchor.js';
16
+ import { AdiaElement } from '../../core/element.js';
17
+ import { anchorPopover } from '../../core/anchor.js';
18
18
 
19
19
  const HOVER_CLOSE_DELAY = 120;
20
20
 
@@ -32,6 +32,7 @@ class AdiaPopover extends AdiaElement {
32
32
  #bound = false;
33
33
  #hoverTimer = null;
34
34
  #content = null;
35
+ #rafId = null;
35
36
 
36
37
  connected() {
37
38
  const content = this.querySelector('[slot="content"]');
@@ -88,7 +89,8 @@ class AdiaPopover extends AdiaElement {
88
89
 
89
90
  if (this.trigger === 'click' || this.trigger === 'manual') {
90
91
  // Defer to next frame so the opening click doesn't trigger outside-dismiss.
91
- requestAnimationFrame(() => {
92
+ this.#rafId = requestAnimationFrame(() => {
93
+ this.#rafId = null;
92
94
  document.addEventListener('pointerdown', this.#onOutside);
93
95
  document.addEventListener('keydown', this.#onKey);
94
96
  });
@@ -102,6 +104,10 @@ class AdiaPopover extends AdiaElement {
102
104
  const content = this.#content ?? this.querySelector('[slot="content"]');
103
105
  if (content?.matches(':popover-open')) content.hidePopover?.();
104
106
 
107
+ if (this.#rafId != null) {
108
+ cancelAnimationFrame(this.#rafId);
109
+ this.#rafId = null;
110
+ }
105
111
  document.removeEventListener('pointerdown', this.#onOutside);
106
112
  document.removeEventListener('keydown', this.#onKey);
107
113
  }
@@ -8,17 +8,6 @@ category: container
8
8
  version: 1
9
9
  description: "Popover using Popover API + CSS Anchor Positioning. Triggers: click, hover, manual."
10
10
  props:
11
- type:
12
- description: "'auto' dismisses on outside click, 'manual' requires explicit close"
13
- type: string
14
- default: auto
15
- enum:
16
- - auto
17
- - manual
18
- anchor:
19
- description: ID of the anchor element to position relative to
20
- type: string
21
- default: ""
22
11
  gap:
23
12
  description: Pixel offset between the anchor and the popover
24
13
  type: number
@@ -16,20 +16,10 @@
16
16
  "component": {
17
17
  "const": "Progress"
18
18
  },
19
- "indeterminate": {
20
- "description": "Force indeterminate mode (animated loop) regardless of value.",
21
- "type": "boolean",
22
- "default": false
23
- },
24
- "max": {
25
- "description": "Upper bound for value. When omitted, value is treated as a 0..1 fraction.",
26
- "type": "number",
27
- "default": 100
28
- },
29
19
  "value": {
30
- "description": "Current progress. 0..max (or 0..1 when max omitted). Negative = indeterminate.",
20
+ "description": "Current progress. 0..max (or 0..1 when max omitted). null = indeterminate (legacy -1 accepted for back-compat).",
31
21
  "type": "number",
32
- "default": -1
22
+ "default": null
33
23
  },
34
24
  "variant": {
35
25
  "description": "Display variant. Structural values (bar, spinner) set the render mode; semantic values (primary/success/warning/danger/info) set the fill color. Prefer the `color` global attribute for color; variant-as-color accepted for back-compat with older exemplars.",
@@ -8,7 +8,7 @@
8
8
  * (Legacy `value="-1"` is still treated as indeterminate for back-compat.)
9
9
  */
10
10
 
11
- import { AdiaElement } from '@core/element.js';
11
+ import { AdiaElement } from '../../core/element.js';
12
12
 
13
13
  class AdiaProgress extends AdiaElement {
14
14
  static properties = {
@@ -9,18 +9,9 @@ version: 1
9
9
  description: Progress indicator. Bar (default) or spinner. Value < 0 = indeterminate.
10
10
  props:
11
11
  value:
12
- description: Current progress. 0..max (or 0..1 when max omitted). Negative = indeterminate.
12
+ description: Current progress. 0..max (or 0..1 when max omitted). null = indeterminate (legacy -1 accepted for back-compat).
13
13
  type: number
14
- default: -1
15
- max:
16
- description: Upper bound for value. When omitted, value is treated as a 0..1 fraction.
17
- type: number
18
- default: 100
19
- indeterminate:
20
- description: Force indeterminate mode (animated loop) regardless of value.
21
- type: boolean
22
- default: false
23
- reflect: true
14
+ default: null
24
15
  variant:
25
16
  description: >-
26
17
  Display variant. Structural values (bar, spinner) set the render mode;
@@ -16,30 +16,20 @@
16
16
  "component": {
17
17
  "const": "ProgressRow"
18
18
  },
19
- "icon": {
20
- "description": "Optional Phosphor icon name rendered leading the label.",
21
- "type": "string",
22
- "default": ""
23
- },
24
19
  "label": {
25
20
  "description": "Left-hand label text",
26
21
  "type": "string",
27
22
  "default": ""
28
23
  },
29
- "max": {
30
- "description": "Upper bound for value. Defaults to 100.",
31
- "type": "number",
32
- "default": 100
33
- },
34
24
  "meta": {
35
25
  "description": "Right-hand meta text (e.g. '32 GB', '4.2k / 10k')",
36
26
  "type": "string",
37
27
  "default": ""
38
28
  },
39
29
  "value": {
40
- "description": "Progress value 0-100 (-1 = indeterminate)",
30
+ "description": "Progress value 0-100 (null = indeterminate; legacy -1 accepted for back-compat)",
41
31
  "type": "number",
42
- "default": -1
32
+ "default": null
43
33
  },
44
34
  "variant": {
45
35
  "description": "Color variant for the progress fill",
@@ -51,7 +41,7 @@
51
41
  "info",
52
42
  "primary"
53
43
  ],
54
- "default": ""
44
+ "default": "default"
55
45
  }
56
46
  },
57
47
  "required": [
@@ -17,7 +17,7 @@
17
17
  * variant — success | warning | danger (colors the fill; inherits otherwise)
18
18
  */
19
19
 
20
- import { AdiaElement } from '@core/element.js';
20
+ import { AdiaElement } from '../../core/element.js';
21
21
 
22
22
  class AdiaProgressRow extends AdiaElement {
23
23
  static properties = {
@@ -18,21 +18,13 @@ props:
18
18
  type: string
19
19
  default: ""
20
20
  value:
21
- description: Progress value 0-100 (-1 = indeterminate)
21
+ description: Progress value 0-100 (null = indeterminate; legacy -1 accepted for back-compat)
22
22
  type: number
23
- default: -1
24
- max:
25
- description: Upper bound for value. Defaults to 100.
26
- type: number
27
- default: 100
28
- icon:
29
- description: Optional Phosphor icon name rendered leading the label.
30
- type: string
31
- default: ""
23
+ default: null
32
24
  variant:
33
25
  description: Color variant for the progress fill
34
26
  type: string
35
- default: ""
27
+ default: default
36
28
  enum:
37
29
  - success
38
30
  - warning
@@ -14,7 +14,7 @@
14
14
  /* ── State: checked ── */
15
15
  --radio-bg-checked: var(--a-primary);
16
16
  --radio-border-checked: var(--a-primary);
17
- --radio-fg-checked: white;
17
+ --radio-fg-checked: var(--a-chrome-light);
18
18
  --radio-bg-checked-hover: var(--a-primary-hover);
19
19
 
20
20
  /* ── State: disabled ── */
@@ -3,8 +3,8 @@
3
3
  * Pure CSS dot via [slot="dot"]::after inner circle. No SVG, no inset shadow hack.
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 AdiaRadio extends AdiaFormElement {
10
10
  static properties = {
@@ -11,7 +11,7 @@
11
11
  * - While dragging: accent highlight on the field
12
12
  */
13
13
 
14
- import { AdiaFormElement } from '@core/form.js';
14
+ import { AdiaFormElement } from '../../core/form.js';
15
15
 
16
16
  class AdiaRange extends AdiaFormElement {
17
17
  static properties = {
@@ -9,7 +9,7 @@
9
9
  * <rating-ui value="5" readonly></rating-ui>
10
10
  */
11
11
 
12
- import { AdiaFormElement } from '@core/form.js';
12
+ import { AdiaFormElement } from '../../core/form.js';
13
13
 
14
14
  class AdiaRating extends AdiaFormElement {
15
15
  static properties = {
@@ -1,5 +1,5 @@
1
- import { AdiaElement } from '@core/element.js';
2
- import { renderMarkdown } from '@core/markdown.js';
1
+ import { AdiaElement } from '../../core/element.js';
2
+ import { renderMarkdown } from '../../core/markdown.js';
3
3
 
4
4
  /**
5
5
  * <richtext-ui> — Renders markdown to styled HTML.
@@ -36,11 +36,6 @@
36
36
  "type": "string",
37
37
  "default": "start"
38
38
  },
39
- "variant": {
40
- "description": "Visual variant — default, bordered, muted, separator.",
41
- "type": "string",
42
- "default": "default"
43
- },
44
39
  "wrap": {
45
40
  "description": "Enable flex wrap",
46
41
  "type": "boolean",
@@ -5,8 +5,8 @@
5
5
  * <row-ui draggable>...</row-ui> wires the draggable trait, emits drag-end
6
6
  */
7
7
 
8
- import { AdiaElement } from '@core/element.js';
9
- import { draggable } from '@traits/draggable.js';
8
+ import { AdiaElement } from '../../core/element.js';
9
+ import { draggable } from '../../traits/draggable.js';
10
10
 
11
11
  class AdiaRow extends AdiaElement {
12
12
  static properties = {
@@ -12,10 +12,6 @@ props:
12
12
  description: Align items
13
13
  type: string
14
14
  default: center
15
- variant:
16
- description: Visual variant — default, bordered, muted, separator.
17
- type: string
18
- default: default
19
15
  draggable:
20
16
  description: Enables drag handle + cursor:grab. Wires the draggable trait; dispatches drag-end.
21
17
  type: boolean
@@ -31,11 +31,6 @@
31
31
  "type": "boolean",
32
32
  "default": false
33
33
  },
34
- "icon": {
35
- "description": "Leading icon name. Defaults to search (magnifying glass).",
36
- "type": "string",
37
- "default": "search"
38
- },
39
34
  "name": {
40
35
  "description": "Form field name",
41
36
  "type": "string",
@@ -7,7 +7,7 @@
7
7
  * Fires debounced 'search' event. Clear button resets and fires immediately.
8
8
  */
9
9
 
10
- import { AdiaFormElement } from '@core/form.js';
10
+ import { AdiaFormElement } from '../../core/form.js';
11
11
 
12
12
  class AdiaSearch extends AdiaFormElement {
13
13
  static properties = {
@@ -26,10 +26,6 @@ props:
26
26
  type: boolean
27
27
  default: false
28
28
  reflect: true
29
- icon:
30
- description: Leading icon name. Defaults to search (magnifying glass).
31
- type: string
32
- default: search
33
29
  placeholder:
34
30
  description: Placeholder text
35
31
  type: string
@@ -70,7 +70,7 @@
70
70
  }
71
71
  ],
72
72
  "synonyms": {},
73
- "tag": "section-n",
73
+ "tag": "section-ui",
74
74
  "tokens": {},
75
75
  "traits": [],
76
76
  "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: AdiaSection
5
- tag: section-n
5
+ tag: section-ui
6
6
  component: Section
7
7
  category: container
8
8
  version: 1