@adia-ai/web-components 0.4.6 → 0.4.7

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 (284) hide show
  1. package/USAGE.md +29 -9
  2. package/components/accordion/accordion.d.ts +17 -0
  3. package/components/accordion/accordion.js +10 -117
  4. package/components/accordion/class.js +132 -0
  5. package/components/action-list/action-list.d.ts +15 -0
  6. package/components/action-list/action-list.js +9 -140
  7. package/components/action-list/class.js +156 -0
  8. package/components/agent-artifact/agent-artifact.d.ts +25 -0
  9. package/components/agent-artifact/agent-artifact.js +8 -181
  10. package/components/agent-artifact/class.js +200 -0
  11. package/components/agent-feedback-bar/agent-feedback-bar.d.ts +21 -0
  12. package/components/agent-feedback-bar/agent-feedback-bar.js +8 -143
  13. package/components/agent-feedback-bar/class.js +162 -0
  14. package/components/agent-questions/agent-questions.d.ts +23 -0
  15. package/components/agent-questions/agent-questions.js +8 -180
  16. package/components/agent-questions/class.js +199 -0
  17. package/components/agent-reasoning/agent-reasoning.d.ts +23 -0
  18. package/components/agent-reasoning/agent-reasoning.js +8 -494
  19. package/components/agent-reasoning/class.js +513 -0
  20. package/components/agent-suggestions/agent-suggestions.d.ts +21 -0
  21. package/components/agent-suggestions/agent-suggestions.js +8 -78
  22. package/components/agent-suggestions/class.js +97 -0
  23. package/components/agent-trace/agent-trace.d.ts +19 -0
  24. package/components/alert/alert.d.ts +29 -0
  25. package/components/alert/alert.js +8 -175
  26. package/components/alert/class.js +194 -0
  27. package/components/avatar/avatar.d.ts +27 -0
  28. package/components/avatar/avatar.js +9 -159
  29. package/components/avatar/class.js +173 -0
  30. package/components/badge/badge.d.ts +27 -0
  31. package/components/badge/badge.js +9 -75
  32. package/components/badge/class.js +93 -0
  33. package/components/block/block.d.ts +19 -0
  34. package/components/block/block.js +9 -15
  35. package/components/block/class.js +33 -0
  36. package/components/breadcrumb/breadcrumb.d.ts +23 -0
  37. package/components/breadcrumb/breadcrumb.js +8 -113
  38. package/components/breadcrumb/class.js +132 -0
  39. package/components/button/button.d.ts +34 -0
  40. package/components/button/button.js +15 -66
  41. package/components/button/class.js +80 -0
  42. package/components/calendar-picker/calendar-picker.a2ui.json +6 -1
  43. package/components/calendar-picker/calendar-picker.js +8 -332
  44. package/components/calendar-picker/calendar-picker.yaml +51 -177
  45. package/components/calendar-picker/class.js +351 -0
  46. package/components/canvas/canvas.a2ui.json +6 -1
  47. package/components/canvas/canvas.d.ts +17 -0
  48. package/components/canvas/canvas.yaml +19 -36
  49. package/components/card/card.a2ui.json +3 -0
  50. package/components/card/card.d.ts +27 -0
  51. package/components/card/card.js +9 -50
  52. package/components/card/card.yaml +171 -433
  53. package/components/card/class.js +68 -0
  54. package/components/chart/chart.d.ts +41 -0
  55. package/components/chart/chart.js +8 -2131
  56. package/components/chart/class.js +2150 -0
  57. package/components/chart-legend/chart-legend.d.ts +27 -0
  58. package/components/chart-legend/chart-legend.js +8 -197
  59. package/components/chart-legend/class.js +215 -0
  60. package/components/chat-thread/chat-thread.d.ts +17 -0
  61. package/components/chat-thread/chat-thread.js +8 -157
  62. package/components/chat-thread/class.js +176 -0
  63. package/components/check/check.js +11 -52
  64. package/components/check/class.js +68 -0
  65. package/components/code/class.js +501 -0
  66. package/components/code/code.js +8 -482
  67. package/components/col/class.js +30 -0
  68. package/components/col/col.d.ts +23 -0
  69. package/components/col/col.js +10 -13
  70. package/components/color-picker/class.js +550 -0
  71. package/components/color-picker/color-picker.js +8 -531
  72. package/components/command/class.js +364 -0
  73. package/components/command/command.a2ui.json +3 -0
  74. package/components/command/command.d.ts +19 -0
  75. package/components/command/command.js +8 -345
  76. package/components/command/command.yaml +105 -124
  77. package/components/demo-toggle/class.js +153 -0
  78. package/components/demo-toggle/demo-toggle.d.ts +23 -0
  79. package/components/demo-toggle/demo-toggle.js +8 -135
  80. package/components/description-list/class.js +86 -0
  81. package/components/description-list/description-list.d.ts +21 -0
  82. package/components/description-list/description-list.js +8 -67
  83. package/components/divider/class.js +57 -0
  84. package/components/divider/divider.d.ts +19 -0
  85. package/components/divider/divider.js +10 -40
  86. package/components/drawer/class.js +306 -0
  87. package/components/drawer/drawer.d.ts +25 -0
  88. package/components/drawer/drawer.js +8 -287
  89. package/components/embed/class.js +73 -0
  90. package/components/embed/embed.d.ts +23 -0
  91. package/components/embed/embed.js +9 -55
  92. package/components/empty-state/class.js +108 -0
  93. package/components/empty-state/empty-state.d.ts +21 -0
  94. package/components/empty-state/empty-state.js +9 -90
  95. package/components/feed/class.js +381 -0
  96. package/components/feed/feed.d.ts +19 -0
  97. package/components/feed/feed.js +9 -367
  98. package/components/field/class.js +266 -0
  99. package/components/field/field.d.ts +23 -0
  100. package/components/field/field.js +8 -247
  101. package/components/fields/class.js +106 -0
  102. package/components/fields/fields.d.ts +19 -0
  103. package/components/fields/fields.js +8 -87
  104. package/components/grid/class.js +31 -0
  105. package/components/grid/grid.d.ts +23 -0
  106. package/components/grid/grid.js +10 -14
  107. package/components/heatmap/class.js +305 -0
  108. package/components/heatmap/heatmap.d.ts +31 -0
  109. package/components/heatmap/heatmap.js +8 -286
  110. package/components/icon/class.js +54 -0
  111. package/components/icon/icon.d.ts +23 -0
  112. package/components/icon/icon.js +13 -40
  113. package/components/image/class.js +112 -0
  114. package/components/image/image.d.ts +33 -0
  115. package/components/image/image.js +9 -94
  116. package/components/input/class.js +773 -0
  117. package/components/input/input.a2ui.json +3 -0
  118. package/components/input/input.js +8 -755
  119. package/components/input/input.yaml +171 -442
  120. package/components/inspector/class.js +142 -0
  121. package/components/inspector/inspector.a2ui.json +8 -1
  122. package/components/inspector/inspector.d.ts +17 -0
  123. package/components/inspector/inspector.js +8 -124
  124. package/components/inspector/inspector.yaml +15 -30
  125. package/components/kbd/class.js +34 -0
  126. package/components/kbd/kbd.a2ui.json +3 -0
  127. package/components/kbd/kbd.d.ts +17 -0
  128. package/components/kbd/kbd.js +10 -17
  129. package/components/kbd/kbd.yaml +54 -185
  130. package/components/link/class.js +187 -0
  131. package/components/link/link.d.ts +55 -0
  132. package/components/link/link.js +8 -168
  133. package/components/list/class.js +249 -0
  134. package/components/list/list.d.ts +23 -0
  135. package/components/list/list.js +9 -231
  136. package/components/menu/class.js +332 -0
  137. package/components/menu/menu.d.ts +21 -0
  138. package/components/menu/menu.js +11 -316
  139. package/components/modal/class.js +231 -0
  140. package/components/modal/modal.a2ui.json +5 -1
  141. package/components/modal/modal.d.ts +23 -0
  142. package/components/modal/modal.js +8 -212
  143. package/components/modal/modal.yaml +19 -39
  144. package/components/nav/class.js +150 -0
  145. package/components/nav/nav.d.ts +31 -0
  146. package/components/nav/nav.js +8 -131
  147. package/components/nav-group/class.js +152 -0
  148. package/components/nav-group/nav-group.d.ts +35 -0
  149. package/components/nav-group/nav-group.js +9 -134
  150. package/components/nav-item/class.js +86 -0
  151. package/components/nav-item/nav-item.d.ts +37 -0
  152. package/components/nav-item/nav-item.js +10 -69
  153. package/components/noodles/class.js +510 -0
  154. package/components/noodles/noodles.d.ts +33 -0
  155. package/components/noodles/noodles.js +9 -493
  156. package/components/option-card/class.js +167 -0
  157. package/components/option-card/option-card.js +8 -149
  158. package/components/otp-input/class.js +180 -0
  159. package/components/otp-input/otp-input.a2ui.json +5 -1
  160. package/components/otp-input/otp-input.js +9 -162
  161. package/components/otp-input/otp-input.yaml +45 -174
  162. package/components/page/class.js +97 -0
  163. package/components/page/page.d.ts +46 -0
  164. package/components/page/page.js +8 -79
  165. package/components/pagination/class.js +195 -0
  166. package/components/pagination/pagination.d.ts +23 -0
  167. package/components/pagination/pagination.js +9 -177
  168. package/components/pane/class.js +186 -0
  169. package/components/pane/pane.a2ui.json +12 -1
  170. package/components/pane/pane.d.ts +31 -0
  171. package/components/pane/pane.js +8 -167
  172. package/components/pane/pane.yaml +57 -157
  173. package/components/pipeline-status/class.js +189 -0
  174. package/components/pipeline-status/pipeline-status.a2ui.json +7 -1
  175. package/components/pipeline-status/pipeline-status.d.ts +21 -0
  176. package/components/pipeline-status/pipeline-status.js +9 -172
  177. package/components/pipeline-status/pipeline-status.yaml +34 -72
  178. package/components/popover/class.js +194 -0
  179. package/components/popover/popover.d.ts +23 -0
  180. package/components/popover/popover.js +9 -176
  181. package/components/progress/class.js +74 -0
  182. package/components/progress/progress.a2ui.json +3 -0
  183. package/components/progress/progress.d.ts +19 -0
  184. package/components/progress/progress.js +10 -57
  185. package/components/progress/progress.yaml +124 -287
  186. package/components/progress-row/class.js +110 -0
  187. package/components/progress-row/progress-row.d.ts +23 -0
  188. package/components/progress-row/progress-row.js +8 -92
  189. package/components/radio/class.js +83 -0
  190. package/components/radio/radio.js +11 -67
  191. package/components/range/class.js +194 -0
  192. package/components/range/range.js +9 -176
  193. package/components/rating/class.js +148 -0
  194. package/components/rating/rating.js +9 -130
  195. package/components/richtext/class.js +87 -0
  196. package/components/richtext/richtext.a2ui.json +7 -1
  197. package/components/richtext/richtext.d.ts +19 -0
  198. package/components/richtext/richtext.js +8 -68
  199. package/components/richtext/richtext.yaml +30 -65
  200. package/components/row/class.js +50 -0
  201. package/components/row/row.d.ts +27 -0
  202. package/components/row/row.js +10 -33
  203. package/components/search/class.js +134 -0
  204. package/components/search/search.js +10 -117
  205. package/components/segment/class.js +62 -0
  206. package/components/segment/segment.d.ts +25 -0
  207. package/components/segment/segment.js +10 -45
  208. package/components/segmented/class.js +165 -0
  209. package/components/segmented/segmented.a2ui.json +4 -0
  210. package/components/segmented/segmented.js +10 -148
  211. package/components/segmented/segmented.yaml +41 -59
  212. package/components/select/class.js +408 -0
  213. package/components/select/select.js +15 -396
  214. package/components/skeleton/class.js +52 -0
  215. package/components/skeleton/skeleton.d.ts +23 -0
  216. package/components/skeleton/skeleton.js +8 -34
  217. package/components/slider/class.js +184 -0
  218. package/components/slider/slider.js +9 -166
  219. package/components/stack/class.js +28 -0
  220. package/components/stack/stack.d.ts +17 -0
  221. package/components/stack/stack.js +10 -11
  222. package/components/step-progress/class.js +98 -0
  223. package/components/step-progress/step-progress.d.ts +27 -0
  224. package/components/step-progress/step-progress.js +8 -79
  225. package/components/stepper/class.js +126 -0
  226. package/components/stepper/stepper.d.ts +19 -0
  227. package/components/stepper/stepper.js +9 -112
  228. package/components/stream/class.js +109 -0
  229. package/components/stream/stream.d.ts +19 -0
  230. package/components/stream/stream.js +8 -90
  231. package/components/swatch/class.js +131 -0
  232. package/components/swatch/swatch.d.ts +28 -0
  233. package/components/swatch/swatch.js +8 -112
  234. package/components/swiper/class.js +373 -0
  235. package/components/swiper/swiper.a2ui.json +4 -0
  236. package/components/swiper/swiper.d.ts +31 -0
  237. package/components/swiper/swiper.js +8 -354
  238. package/components/swiper/swiper.yaml +68 -212
  239. package/components/switch/class.js +63 -0
  240. package/components/switch/switch.a2ui.json +6 -1
  241. package/components/switch/switch.js +11 -47
  242. package/components/switch/switch.yaml +70 -265
  243. package/components/table/class.js +1453 -0
  244. package/components/table/table.d.ts +37 -0
  245. package/components/table/table.js +8 -1435
  246. package/components/table-toolbar/class.js +680 -0
  247. package/components/table-toolbar/table-toolbar.d.ts +33 -0
  248. package/components/table-toolbar/table-toolbar.js +8 -689
  249. package/components/tabs/class.js +242 -0
  250. package/components/tabs/tabs.d.ts +21 -0
  251. package/components/tabs/tabs.js +8 -223
  252. package/components/tag/class.js +99 -0
  253. package/components/tag/tag.d.ts +27 -0
  254. package/components/tag/tag.js +8 -80
  255. package/components/text/class.js +46 -0
  256. package/components/text/text.d.ts +25 -0
  257. package/components/text/text.js +9 -28
  258. package/components/textarea/class.js +134 -0
  259. package/components/textarea/textarea.js +11 -118
  260. package/components/timeline/class.js +176 -0
  261. package/components/timeline/timeline.d.ts +19 -0
  262. package/components/timeline/timeline.js +9 -162
  263. package/components/toast/class.js +92 -0
  264. package/components/toast/toast.d.ts +23 -0
  265. package/components/toast/toast.js +9 -76
  266. package/components/toggle-group/class.js +154 -0
  267. package/components/toggle-group/toggle-group.d.ts +19 -0
  268. package/components/toggle-group/toggle-group.js +11 -140
  269. package/components/toggle-scheme/class.js +286 -0
  270. package/components/toggle-scheme/toggle-scheme.d.ts +41 -0
  271. package/components/toggle-scheme/toggle-scheme.js +8 -268
  272. package/components/toolbar/class.js +388 -0
  273. package/components/toolbar/toolbar.d.ts +23 -0
  274. package/components/toolbar/toolbar.js +10 -376
  275. package/components/tooltip/class.js +299 -0
  276. package/components/tooltip/tooltip.d.ts +27 -0
  277. package/components/tooltip/tooltip.js +8 -280
  278. package/components/tree/class.js +245 -0
  279. package/components/tree/tree.d.ts +15 -0
  280. package/components/tree/tree.js +9 -244
  281. package/components/upload/class.js +199 -0
  282. package/components/upload/upload.js +11 -183
  283. package/index.d.ts +159 -5
  284. package/package.json +5 -1
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Non-side-effect class export for `<switch-ui>`.
3
+ *
4
+ * Importing this file gives you the class(es) without auto-registering the tag.
5
+ * Useful for test isolation, subclassing with tag-name override, or selective
6
+ * composition.
7
+ *
8
+ * The auto-register path stays at `@adia-ai/web-components/components/switch`
9
+ * (which imports this file + calls `defineIfFree()`).
10
+ *
11
+ * @see ../../USAGE.md#registration--auto-vs-explicit
12
+ */
13
+
14
+ /**
15
+ * <switch-ui> — Toggle switch. The host IS the control.
16
+ * Pure CSS track + thumb, no native <input>.
17
+ */
18
+
19
+ import { UIFormElement } from '../../core/form.js';
20
+ import { html } from '../../core/element.js';
21
+
22
+ export class UISwitch extends UIFormElement {
23
+ static properties = {
24
+ ...UIFormElement.properties,
25
+ checked: { type: Boolean, default: false, reflect: true },
26
+ label: { type: String, default: '', reflect: true },
27
+ size: { type: String, default: '', reflect: true },
28
+ };
29
+
30
+ static template = (el) => html`
31
+ <span slot="track"><span slot="thumb"></span></span>
32
+ ${el.label ? html`<span slot="label">${el.label}</span>` : null}
33
+ `;
34
+
35
+ connected() {
36
+ super.connected();
37
+ this.setAttribute('role', 'switch');
38
+ this.setAttribute('tabindex', '0');
39
+ this.addEventListener('click', this.#toggle);
40
+ this.addEventListener('keydown', this.#onKey);
41
+ }
42
+
43
+ render() {
44
+ this.setAttribute('aria-checked', String(this.checked));
45
+ this.syncValue(this.checked ? (this.value || 'on') : '');
46
+ }
47
+
48
+ #toggle = () => {
49
+ if (this.disabled) return;
50
+ this.checked = !this.checked;
51
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { value: this.value, checked: this.checked } }));
52
+ };
53
+
54
+ #onKey = (e) => {
55
+ if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this.#toggle(); }
56
+ };
57
+
58
+ disconnected() {
59
+ super.disconnected();
60
+ this.removeEventListener('click', this.#toggle);
61
+ this.removeEventListener('keydown', this.#onKey);
62
+ }
63
+ }
@@ -120,7 +120,12 @@
120
120
  "name": "disabled"
121
121
  }
122
122
  ],
123
- "synonyms": {},
123
+ "synonyms": {
124
+ "tags": [
125
+ "Toggle",
126
+ "Switch"
127
+ ]
128
+ },
124
129
  "tag": "switch-ui",
125
130
  "tokens": {
126
131
  "--toggle-thumb-background": {
@@ -1,53 +1,17 @@
1
1
  /**
2
- * <switch-ui>Toggle switch. The host IS the control.
3
- * Pure CSS track + thumb, no native <input>.
2
+ * `<switch-ui>`auto-registers the tag on import.
3
+ *
4
+ * For non-side-effect class import (test isolation, tag override), use
5
+ * the `class` subpath:
6
+ *
7
+ * import { UISwitch } from '@adia-ai/web-components/components/switch/class';
8
+ *
9
+ * @see ../../USAGE.md#registration--auto-vs-explicit
4
10
  */
5
11
 
6
- import { UIFormElement } from '../../core/form.js';
7
- import { html } from '../../core/element.js';
12
+ import { defineIfFree } from '../../core/register.js';
13
+ import { UISwitch } from './class.js';
8
14
 
9
- class UISwitch extends UIFormElement {
10
- static properties = {
11
- ...UIFormElement.properties,
12
- checked: { type: Boolean, default: false, reflect: true },
13
- label: { type: String, default: '', reflect: true },
14
- size: { type: String, default: '', reflect: true },
15
- };
16
-
17
- static template = (el) => html`
18
- <span slot="track"><span slot="thumb"></span></span>
19
- ${el.label ? html`<span slot="label">${el.label}</span>` : null}
20
- `;
21
-
22
- connected() {
23
- super.connected();
24
- this.setAttribute('role', 'switch');
25
- this.setAttribute('tabindex', '0');
26
- this.addEventListener('click', this.#toggle);
27
- this.addEventListener('keydown', this.#onKey);
28
- }
29
-
30
- render() {
31
- this.setAttribute('aria-checked', String(this.checked));
32
- this.syncValue(this.checked ? (this.value || 'on') : '');
33
- }
34
-
35
- #toggle = () => {
36
- if (this.disabled) return;
37
- this.checked = !this.checked;
38
- this.dispatchEvent(new CustomEvent('change', { bubbles: true, detail: { value: this.value, checked: this.checked } }));
39
- };
40
-
41
- #onKey = (e) => {
42
- if (e.key === ' ' || e.key === 'Enter') { e.preventDefault(); this.#toggle(); }
43
- };
44
-
45
- disconnected() {
46
- super.disconnected();
47
- this.removeEventListener('click', this.#toggle);
48
- this.removeEventListener('keydown', this.#onKey);
49
- }
50
- }
51
- customElements.define('switch-ui', UISwitch);
15
+ defineIfFree('switch-ui', UISwitch);
52
16
 
53
17
  export { UISwitch };
@@ -1,5 +1,3 @@
1
- # Generated by scripts/migrate-yamls-to-v1.mjs — migrated to v1 contract.
2
- # Edit this file; run `npm run build:components` to regenerate a2ui.json.
3
1
  $schema: ../../../../scripts/schemas/component.yaml.schema.json
4
2
  name: UISwitch
5
3
  tag: switch-ui
@@ -11,7 +9,7 @@ props:
11
9
  name:
12
10
  description: Form field name
13
11
  type: string
14
- default: ""
12
+ default: ''
15
13
  required:
16
14
  description: Marks as required
17
15
  type: boolean
@@ -30,26 +28,26 @@ props:
30
28
  hint:
31
29
  description: Help text below the label
32
30
  type: string
33
- default: ""
31
+ default: ''
34
32
  label:
35
33
  description: Label text beside the toggle
36
34
  type: string
37
- default: ""
35
+ default: ''
38
36
  size:
39
37
  description: Sizing scale (full tier — xs / sm / md / lg / xl).
40
38
  type: string
41
- default: ""
39
+ default: ''
42
40
  enum:
43
- - xs
44
- - sm
45
- - md
46
- - lg
47
- - xl
41
+ - xs
42
+ - sm
43
+ - md
44
+ - lg
45
+ - xl
48
46
  reflect: true
49
47
  value:
50
48
  description: Form value (submitted as 'on' when checked)
51
49
  type: string
52
- default: ""
50
+ default: ''
53
51
  events:
54
52
  change:
55
53
  description: Fired when checked state changes
@@ -63,11 +61,11 @@ slots:
63
61
  track:
64
62
  description: Toggle track container (holds thumb)
65
63
  states:
66
- - name: idle
67
- description: Default, ready for interaction.
68
- - name: disabled
69
- description: Non-interactive; dimmed.
70
- attribute: disabled
64
+ - name: idle
65
+ description: Default, ready for interaction.
66
+ - name: disabled
67
+ description: Non-interactive; dimmed.
68
+ attribute: disabled
71
69
  traits: []
72
70
  tokens:
73
71
  --toggle-thumb-background:
@@ -84,255 +82,62 @@ tokens:
84
82
  description: Track width
85
83
  a2ui:
86
84
  rules:
87
- - "Self-labeling widget — use the [label] attribute directly; do NOT wrap in <field-ui>. The widget renders its own label inline via CSS attr() pattern. For settings rows (label-left, switch-right), put the descriptive text in switch-ui's own [label] attribute; do not introduce a field-ui wrapper. For descriptive helper text below the switch, use <text-ui variant='caption'> as a sibling — not field-ui's hint slot."
85
+ - Self-labeling widget — use the [label] attribute directly; do NOT wrap in <field-ui>. The widget renders its own label
86
+ inline via CSS attr() pattern. For settings rows (label-left, switch-right), put the descriptive text in switch-ui's own
87
+ [label] attribute; do not introduce a field-ui wrapper. For descriptive helper text below the switch, use <text-ui variant='caption'>
88
+ as a sibling — not field-ui's hint slot.
88
89
  anti_patterns:
89
- - description: Wrapping a switch-ui in field-ui. The widget already self-labels.
90
- wrong: |
91
- <field-ui inline label="Email notifications">
92
- <switch-ui></switch-ui>
93
- </field-ui>
94
- right: |
95
- <switch-ui label="Email notifications"></switch-ui>
96
- rule: Use [label] on switch-ui directly; do not wrap in field-ui.
90
+ - description: Wrapping a switch-ui in field-ui. The widget already self-labels.
91
+ wrong: "<field-ui inline label=\"Email notifications\">\n <switch-ui></switch-ui>\n</field-ui>\n"
92
+ right: '<switch-ui label="Email notifications"></switch-ui>
93
+
94
+ '
95
+ rule: Use [label] on switch-ui directly; do not wrap in field-ui.
97
96
  examples:
98
- - name: notification-preferences
99
- description: Notification preferences card with toggle switches for different notification channels
100
- and types.
101
- a2ui: >-
102
- [
103
- {
104
- "id": "root",
105
- "component": "Card",
106
- "children": [
107
- "hdr",
108
- "sec"
109
- ]
110
- },
111
- {
112
- "id": "hdr",
113
- "component": "Header",
114
- "children": [
115
- "title",
116
- "desc"
117
- ]
118
- },
119
- {
120
- "id": "title",
121
- "component": "Text",
122
- "slot": "heading",
123
- "variant": "span",
124
- "textContent": "Notification Preferences"
125
- },
126
- {
127
- "id": "desc",
128
- "component": "Text",
129
- "slot": "description",
130
- "textContent": "Choose how you want to be notified"
131
- },
132
- {
133
- "id": "sec",
134
- "component": "Section",
135
- "children": [
136
- "list"
137
- ]
138
- },
139
- {
140
- "id": "list",
141
- "component": "Column",
142
- "gap": "4",
143
- "children": [
144
- "r1",
145
- "r2",
146
- "r3",
147
- "r4",
148
- "r5"
149
- ]
150
- },
151
- {
152
- "id": "r1",
153
- "component": "Row",
154
- "gap": "3",
155
- "align": "center",
156
- "children": [
157
- "info1",
158
- "sw1"
159
- ]
160
- },
161
- {
162
- "id": "info1",
163
- "component": "Column",
164
- "gap": "0",
165
- "grow": true,
166
- "children": [
167
- "label1",
168
- "hint1"
169
- ]
170
- },
171
- {
172
- "id": "label1",
173
- "component": "Text",
174
- "weight": "semibold",
175
- "textContent": "Email Notifications"
176
- },
177
- {
178
- "id": "hint1",
179
- "component": "Text",
180
- "color": "muted",
181
- "textContent": "Receive updates via email"
182
- },
183
- {
184
- "id": "sw1",
185
- "component": "Switch",
186
- "checked": true
187
- },
188
- {
189
- "id": "r2",
190
- "component": "Row",
191
- "gap": "3",
192
- "align": "center",
193
- "children": [
194
- "info2",
195
- "sw2"
196
- ]
197
- },
198
- {
199
- "id": "info2",
200
- "component": "Column",
201
- "gap": "0",
202
- "grow": true,
203
- "children": [
204
- "label2",
205
- "hint2"
206
- ]
207
- },
208
- {
209
- "id": "label2",
210
- "component": "Text",
211
- "weight": "semibold",
212
- "textContent": "Push Notifications"
213
- },
214
- {
215
- "id": "hint2",
216
- "component": "Text",
217
- "color": "muted",
218
- "textContent": "Browser and mobile push alerts"
219
- },
220
- {
221
- "id": "sw2",
222
- "component": "Switch",
223
- "checked": true
224
- },
225
- {
226
- "id": "r3",
227
- "component": "Row",
228
- "gap": "3",
229
- "align": "center",
230
- "children": [
231
- "info3",
232
- "sw3"
233
- ]
234
- },
235
- {
236
- "id": "info3",
237
- "component": "Column",
238
- "gap": "0",
239
- "grow": true,
240
- "children": [
241
- "label3",
242
- "hint3"
243
- ]
244
- },
245
- {
246
- "id": "label3",
247
- "component": "Text",
248
- "weight": "semibold",
249
- "textContent": "Marketing Emails"
250
- },
251
- {
252
- "id": "hint3",
253
- "component": "Text",
254
- "color": "muted",
255
- "textContent": "Product updates and announcements"
256
- },
257
- {
258
- "id": "sw3",
259
- "component": "Switch"
260
- },
261
- {
262
- "id": "r4",
263
- "component": "Row",
264
- "gap": "3",
265
- "align": "center",
266
- "children": [
267
- "info4",
268
- "sw4"
269
- ]
270
- },
271
- {
272
- "id": "info4",
273
- "component": "Column",
274
- "gap": "0",
275
- "grow": true,
276
- "children": [
277
- "label4",
278
- "hint4"
279
- ]
280
- },
281
- {
282
- "id": "label4",
283
- "component": "Text",
284
- "weight": "semibold",
285
- "textContent": "Security Alerts"
286
- },
287
- {
288
- "id": "hint4",
289
- "component": "Text",
290
- "color": "muted",
291
- "textContent": "Login attempts and password changes"
292
- },
293
- {
294
- "id": "sw4",
295
- "component": "Switch",
296
- "checked": true
297
- },
298
- {
299
- "id": "r5",
300
- "component": "Row",
301
- "gap": "3",
302
- "align": "center",
303
- "children": [
304
- "info5",
305
- "sw5"
306
- ]
307
- },
308
- {
309
- "id": "info5",
310
- "component": "Column",
311
- "gap": "0",
312
- "grow": true,
313
- "children": [
314
- "label5",
315
- "hint5"
316
- ]
317
- },
318
- {
319
- "id": "label5",
320
- "component": "Text",
321
- "weight": "semibold",
322
- "textContent": "Weekly Digest"
323
- },
324
- {
325
- "id": "hint5",
326
- "component": "Text",
327
- "color": "muted",
328
- "textContent": "Summary of activity each week"
329
- },
330
- {
331
- "id": "sw5",
332
- "component": "Switch"
333
- }
334
- ]
97
+ - name: notification-preferences
98
+ description: Notification preferences card with toggle switches for different notification channels and types.
99
+ a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\"\n\
100
+ \ ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\",\n \
101
+ \ \"desc\"\n ]\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"\
102
+ variant\": \"span\",\n \"textContent\": \"Notification Preferences\"\n },\n {\n \"id\": \"desc\",\n \"component\"\
103
+ : \"Text\",\n \"slot\": \"description\",\n \"textContent\": \"Choose how you want to be notified\"\n },\n {\n\
104
+ \ \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"list\"\n ]\n },\n {\n \"\
105
+ id\": \"list\",\n \"component\": \"Column\",\n \"gap\": \"4\",\n \"children\": [\n \"r1\",\n \"r2\"\
106
+ ,\n \"r3\",\n \"r4\",\n \"r5\"\n ]\n },\n {\n \"id\": \"r1\",\n \"component\": \"Row\",\n \
107
+ \ \"gap\": \"3\",\n \"align\": \"center\",\n \"children\": [\n \"info1\",\n \"sw1\"\n ]\n },\n {\n\
108
+ \ \"id\": \"info1\",\n \"component\": \"Column\",\n \"gap\": \"0\",\n \"grow\": true,\n \"children\": [\n\
109
+ \ \"label1\",\n \"hint1\"\n ]\n },\n {\n \"id\": \"label1\",\n \"component\": \"Text\",\n \"weight\"\
110
+ : \"semibold\",\n \"textContent\": \"Email Notifications\"\n },\n {\n \"id\": \"hint1\",\n \"component\": \"\
111
+ Text\",\n \"color\": \"muted\",\n \"textContent\": \"Receive updates via email\"\n },\n {\n \"id\": \"sw1\"\
112
+ ,\n \"component\": \"Switch\",\n \"checked\": true\n },\n {\n \"id\": \"r2\",\n \"component\": \"Row\",\n\
113
+ \ \"gap\": \"3\",\n \"align\": \"center\",\n \"children\": [\n \"info2\",\n \"sw2\"\n ]\n },\n\
114
+ \ {\n \"id\": \"info2\",\n \"component\": \"Column\",\n \"gap\": \"0\",\n \"grow\": true,\n \"children\"\
115
+ : [\n \"label2\",\n \"hint2\"\n ]\n },\n {\n \"id\": \"label2\",\n \"component\": \"Text\",\n \
116
+ \ \"weight\": \"semibold\",\n \"textContent\": \"Push Notifications\"\n },\n {\n \"id\": \"hint2\",\n \"component\"\
117
+ : \"Text\",\n \"color\": \"muted\",\n \"textContent\": \"Browser and mobile push alerts\"\n },\n {\n \"id\"\
118
+ : \"sw2\",\n \"component\": \"Switch\",\n \"checked\": true\n },\n {\n \"id\": \"r3\",\n \"component\":\
119
+ \ \"Row\",\n \"gap\": \"3\",\n \"align\": \"center\",\n \"children\": [\n \"info3\",\n \"sw3\"\n \
120
+ \ ]\n },\n {\n \"id\": \"info3\",\n \"component\": \"Column\",\n \"gap\": \"0\",\n \"grow\": true,\n \
121
+ \ \"children\": [\n \"label3\",\n \"hint3\"\n ]\n },\n {\n \"id\": \"label3\",\n \"component\":\
122
+ \ \"Text\",\n \"weight\": \"semibold\",\n \"textContent\": \"Marketing Emails\"\n },\n {\n \"id\": \"hint3\"\
123
+ ,\n \"component\": \"Text\",\n \"color\": \"muted\",\n \"textContent\": \"Product updates and announcements\"\
124
+ \n },\n {\n \"id\": \"sw3\",\n \"component\": \"Switch\"\n },\n {\n \"id\": \"r4\",\n \"component\": \"\
125
+ Row\",\n \"gap\": \"3\",\n \"align\": \"center\",\n \"children\": [\n \"info4\",\n \"sw4\"\n ]\n\
126
+ \ },\n {\n \"id\": \"info4\",\n \"component\": \"Column\",\n \"gap\": \"0\",\n \"grow\": true,\n \"children\"\
127
+ : [\n \"label4\",\n \"hint4\"\n ]\n },\n {\n \"id\": \"label4\",\n \"component\": \"Text\",\n \
128
+ \ \"weight\": \"semibold\",\n \"textContent\": \"Security Alerts\"\n },\n {\n \"id\": \"hint4\",\n \"component\"\
129
+ : \"Text\",\n \"color\": \"muted\",\n \"textContent\": \"Login attempts and password changes\"\n },\n {\n \"\
130
+ id\": \"sw4\",\n \"component\": \"Switch\",\n \"checked\": true\n },\n {\n \"id\": \"r5\",\n \"component\"\
131
+ : \"Row\",\n \"gap\": \"3\",\n \"align\": \"center\",\n \"children\": [\n \"info5\",\n \"sw5\"\n \
132
+ \ ]\n },\n {\n \"id\": \"info5\",\n \"component\": \"Column\",\n \"gap\": \"0\",\n \"grow\": true,\n \
133
+ \ \"children\": [\n \"label5\",\n \"hint5\"\n ]\n },\n {\n \"id\": \"label5\",\n \"component\":\
134
+ \ \"Text\",\n \"weight\": \"semibold\",\n \"textContent\": \"Weekly Digest\"\n },\n {\n \"id\": \"hint5\",\n\
135
+ \ \"component\": \"Text\",\n \"color\": \"muted\",\n \"textContent\": \"Summary of activity each week\"\n },\n\
136
+ \ {\n \"id\": \"sw5\",\n \"component\": \"Switch\"\n }\n]"
335
137
  keywords:
336
- - switch
337
- synonyms: {}
138
+ - switch
139
+ synonyms:
140
+ tags:
141
+ - Toggle
142
+ - Switch
338
143
  related: []