@adia-ai/web-components 0.4.5 → 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 (316) hide show
  1. package/README.md +63 -24
  2. package/USAGE.md +604 -0
  3. package/components/accordion/accordion.d.ts +17 -0
  4. package/components/accordion/accordion.js +10 -117
  5. package/components/accordion/class.js +132 -0
  6. package/components/action-list/action-list.d.ts +15 -0
  7. package/components/action-list/action-list.js +9 -140
  8. package/components/action-list/class.js +156 -0
  9. package/components/agent-artifact/agent-artifact.d.ts +25 -0
  10. package/components/agent-artifact/agent-artifact.js +8 -181
  11. package/components/agent-artifact/class.js +200 -0
  12. package/components/agent-feedback-bar/agent-feedback-bar.d.ts +21 -0
  13. package/components/agent-feedback-bar/agent-feedback-bar.js +8 -143
  14. package/components/agent-feedback-bar/class.js +162 -0
  15. package/components/agent-questions/agent-questions.d.ts +23 -0
  16. package/components/agent-questions/agent-questions.js +8 -180
  17. package/components/agent-questions/class.js +199 -0
  18. package/components/agent-reasoning/agent-reasoning.d.ts +23 -0
  19. package/components/agent-reasoning/agent-reasoning.js +8 -494
  20. package/components/agent-reasoning/class.js +513 -0
  21. package/components/agent-suggestions/agent-suggestions.d.ts +21 -0
  22. package/components/agent-suggestions/agent-suggestions.js +8 -78
  23. package/components/agent-suggestions/class.js +97 -0
  24. package/components/agent-trace/agent-trace.d.ts +19 -0
  25. package/components/alert/alert.d.ts +29 -0
  26. package/components/alert/alert.js +8 -175
  27. package/components/alert/class.js +194 -0
  28. package/components/avatar/avatar.d.ts +27 -0
  29. package/components/avatar/avatar.js +9 -159
  30. package/components/avatar/class.js +173 -0
  31. package/components/badge/badge.d.ts +27 -0
  32. package/components/badge/badge.js +9 -75
  33. package/components/badge/class.js +93 -0
  34. package/components/block/block.d.ts +19 -0
  35. package/components/block/block.js +9 -15
  36. package/components/block/class.js +33 -0
  37. package/components/breadcrumb/breadcrumb.d.ts +23 -0
  38. package/components/breadcrumb/breadcrumb.js +8 -113
  39. package/components/breadcrumb/class.js +132 -0
  40. package/components/button/button.d.ts +34 -0
  41. package/components/button/button.js +15 -66
  42. package/components/button/class.js +80 -0
  43. package/components/calendar-picker/calendar-picker.a2ui.json +6 -1
  44. package/components/calendar-picker/calendar-picker.d.ts +27 -0
  45. package/components/calendar-picker/calendar-picker.js +8 -332
  46. package/components/calendar-picker/calendar-picker.yaml +51 -177
  47. package/components/calendar-picker/class.js +351 -0
  48. package/components/canvas/canvas.a2ui.json +6 -1
  49. package/components/canvas/canvas.d.ts +17 -0
  50. package/components/canvas/canvas.yaml +19 -36
  51. package/components/card/card.a2ui.json +3 -0
  52. package/components/card/card.d.ts +27 -0
  53. package/components/card/card.js +9 -50
  54. package/components/card/card.yaml +171 -433
  55. package/components/card/class.js +68 -0
  56. package/components/chart/chart.d.ts +41 -0
  57. package/components/chart/chart.js +8 -2131
  58. package/components/chart/class.js +2150 -0
  59. package/components/chart-legend/chart-legend.d.ts +27 -0
  60. package/components/chart-legend/chart-legend.js +8 -197
  61. package/components/chart-legend/class.js +215 -0
  62. package/components/chat-thread/chat-thread.d.ts +17 -0
  63. package/components/chat-thread/chat-thread.js +8 -157
  64. package/components/chat-thread/class.js +176 -0
  65. package/components/check/check.d.ts +30 -0
  66. package/components/check/check.js +11 -52
  67. package/components/check/class.js +68 -0
  68. package/components/code/class.js +501 -0
  69. package/components/code/code.d.ts +39 -0
  70. package/components/code/code.js +8 -482
  71. package/components/col/class.js +30 -0
  72. package/components/col/col.d.ts +23 -0
  73. package/components/col/col.js +10 -13
  74. package/components/color-picker/class.js +550 -0
  75. package/components/color-picker/color-picker.d.ts +37 -0
  76. package/components/color-picker/color-picker.js +8 -531
  77. package/components/command/class.js +364 -0
  78. package/components/command/command.a2ui.json +3 -0
  79. package/components/command/command.d.ts +19 -0
  80. package/components/command/command.js +8 -345
  81. package/components/command/command.yaml +105 -124
  82. package/components/demo-toggle/class.js +153 -0
  83. package/components/demo-toggle/demo-toggle.d.ts +23 -0
  84. package/components/demo-toggle/demo-toggle.js +8 -135
  85. package/components/description-list/class.js +86 -0
  86. package/components/description-list/description-list.d.ts +21 -0
  87. package/components/description-list/description-list.js +8 -67
  88. package/components/divider/class.js +57 -0
  89. package/components/divider/divider.d.ts +19 -0
  90. package/components/divider/divider.js +10 -40
  91. package/components/drawer/class.js +306 -0
  92. package/components/drawer/drawer.d.ts +25 -0
  93. package/components/drawer/drawer.js +8 -287
  94. package/components/embed/class.js +73 -0
  95. package/components/embed/embed.d.ts +23 -0
  96. package/components/embed/embed.js +9 -55
  97. package/components/empty-state/class.js +108 -0
  98. package/components/empty-state/empty-state.d.ts +21 -0
  99. package/components/empty-state/empty-state.js +9 -90
  100. package/components/feed/class.js +381 -0
  101. package/components/feed/feed.d.ts +19 -0
  102. package/components/feed/feed.js +9 -367
  103. package/components/field/class.js +266 -0
  104. package/components/field/field.d.ts +23 -0
  105. package/components/field/field.js +8 -247
  106. package/components/fields/class.js +106 -0
  107. package/components/fields/fields.d.ts +19 -0
  108. package/components/fields/fields.js +8 -87
  109. package/components/grid/class.js +31 -0
  110. package/components/grid/grid.d.ts +23 -0
  111. package/components/grid/grid.js +10 -14
  112. package/components/heatmap/class.js +305 -0
  113. package/components/heatmap/heatmap.d.ts +31 -0
  114. package/components/heatmap/heatmap.js +8 -286
  115. package/components/icon/class.js +54 -0
  116. package/components/icon/icon.d.ts +23 -0
  117. package/components/icon/icon.js +13 -40
  118. package/components/image/class.js +112 -0
  119. package/components/image/image.d.ts +33 -0
  120. package/components/image/image.js +9 -94
  121. package/components/index.js +1 -0
  122. package/components/input/class.js +773 -0
  123. package/components/input/input.a2ui.json +3 -0
  124. package/components/input/input.d.ts +61 -0
  125. package/components/input/input.js +8 -755
  126. package/components/input/input.yaml +171 -442
  127. package/components/inspector/class.js +142 -0
  128. package/components/inspector/inspector.a2ui.json +8 -1
  129. package/components/inspector/inspector.d.ts +17 -0
  130. package/components/inspector/inspector.js +8 -124
  131. package/components/inspector/inspector.yaml +15 -30
  132. package/components/kbd/class.js +34 -0
  133. package/components/kbd/kbd.a2ui.json +3 -0
  134. package/components/kbd/kbd.d.ts +17 -0
  135. package/components/kbd/kbd.js +10 -17
  136. package/components/kbd/kbd.yaml +54 -185
  137. package/components/link/class.js +187 -0
  138. package/components/link/link.d.ts +55 -0
  139. package/components/link/link.js +8 -168
  140. package/components/list/class.js +249 -0
  141. package/components/list/list.d.ts +23 -0
  142. package/components/list/list.js +9 -231
  143. package/components/menu/class.js +332 -0
  144. package/components/menu/menu.d.ts +21 -0
  145. package/components/menu/menu.js +11 -316
  146. package/components/modal/class.js +231 -0
  147. package/components/modal/modal.a2ui.json +5 -1
  148. package/components/modal/modal.d.ts +23 -0
  149. package/components/modal/modal.js +8 -212
  150. package/components/modal/modal.yaml +19 -39
  151. package/components/nav/class.js +150 -0
  152. package/components/nav/nav.d.ts +31 -0
  153. package/components/nav/nav.js +8 -131
  154. package/components/nav-group/class.js +152 -0
  155. package/components/nav-group/nav-group.d.ts +35 -0
  156. package/components/nav-group/nav-group.js +9 -134
  157. package/components/nav-item/class.js +86 -0
  158. package/components/nav-item/nav-item.d.ts +37 -0
  159. package/components/nav-item/nav-item.js +10 -69
  160. package/components/noodles/class.js +510 -0
  161. package/components/noodles/noodles.d.ts +33 -0
  162. package/components/noodles/noodles.js +9 -493
  163. package/components/option-card/class.js +167 -0
  164. package/components/option-card/option-card.d.ts +30 -0
  165. package/components/option-card/option-card.js +8 -149
  166. package/components/otp-input/class.js +180 -0
  167. package/components/otp-input/otp-input.a2ui.json +5 -1
  168. package/components/otp-input/otp-input.d.ts +25 -0
  169. package/components/otp-input/otp-input.js +9 -162
  170. package/components/otp-input/otp-input.yaml +45 -174
  171. package/components/page/class.js +97 -0
  172. package/components/page/page.d.ts +46 -0
  173. package/components/page/page.js +8 -79
  174. package/components/pagination/class.js +195 -0
  175. package/components/pagination/pagination.d.ts +23 -0
  176. package/components/pagination/pagination.js +9 -177
  177. package/components/pane/class.js +186 -0
  178. package/components/pane/pane.a2ui.json +12 -1
  179. package/components/pane/pane.css +10 -0
  180. package/components/pane/pane.d.ts +31 -0
  181. package/components/pane/pane.js +8 -143
  182. package/components/pane/pane.yaml +57 -157
  183. package/components/pipeline-status/class.js +189 -0
  184. package/components/pipeline-status/pipeline-status.a2ui.json +7 -1
  185. package/components/pipeline-status/pipeline-status.d.ts +21 -0
  186. package/components/pipeline-status/pipeline-status.js +9 -172
  187. package/components/pipeline-status/pipeline-status.yaml +34 -72
  188. package/components/popover/class.js +194 -0
  189. package/components/popover/popover.d.ts +23 -0
  190. package/components/popover/popover.js +9 -176
  191. package/components/progress/class.js +74 -0
  192. package/components/progress/progress.a2ui.json +3 -0
  193. package/components/progress/progress.d.ts +19 -0
  194. package/components/progress/progress.js +10 -57
  195. package/components/progress/progress.yaml +124 -287
  196. package/components/progress-row/class.js +110 -0
  197. package/components/progress-row/progress-row.d.ts +23 -0
  198. package/components/progress-row/progress-row.js +8 -92
  199. package/components/radio/class.js +83 -0
  200. package/components/radio/radio.d.ts +28 -0
  201. package/components/radio/radio.js +11 -67
  202. package/components/range/class.js +194 -0
  203. package/components/range/range.d.ts +31 -0
  204. package/components/range/range.js +9 -176
  205. package/components/rating/class.js +148 -0
  206. package/components/rating/rating.d.ts +33 -0
  207. package/components/rating/rating.js +9 -130
  208. package/components/richtext/class.js +87 -0
  209. package/components/richtext/richtext.a2ui.json +7 -1
  210. package/components/richtext/richtext.d.ts +19 -0
  211. package/components/richtext/richtext.js +8 -68
  212. package/components/richtext/richtext.yaml +30 -65
  213. package/components/row/class.js +50 -0
  214. package/components/row/row.d.ts +27 -0
  215. package/components/row/row.js +10 -33
  216. package/components/search/class.js +134 -0
  217. package/components/search/search.d.ts +35 -0
  218. package/components/search/search.js +10 -117
  219. package/components/segment/class.js +62 -0
  220. package/components/segment/segment.d.ts +25 -0
  221. package/components/segment/segment.js +10 -45
  222. package/components/segmented/class.js +165 -0
  223. package/components/segmented/segmented.a2ui.json +4 -0
  224. package/components/segmented/segmented.d.ts +24 -0
  225. package/components/segmented/segmented.js +10 -148
  226. package/components/segmented/segmented.yaml +41 -59
  227. package/components/select/class.js +408 -0
  228. package/components/select/select.d.ts +57 -0
  229. package/components/select/select.js +15 -396
  230. package/components/skeleton/class.js +52 -0
  231. package/components/skeleton/skeleton.d.ts +23 -0
  232. package/components/skeleton/skeleton.js +8 -34
  233. package/components/slider/class.js +184 -0
  234. package/components/slider/slider.d.ts +31 -0
  235. package/components/slider/slider.js +9 -166
  236. package/components/stack/class.js +28 -0
  237. package/components/stack/stack.d.ts +17 -0
  238. package/components/stack/stack.js +10 -11
  239. package/components/step-progress/class.js +98 -0
  240. package/components/step-progress/step-progress.d.ts +27 -0
  241. package/components/step-progress/step-progress.js +8 -79
  242. package/components/stepper/class.js +126 -0
  243. package/components/stepper/stepper.d.ts +19 -0
  244. package/components/stepper/stepper.js +9 -112
  245. package/components/stream/class.js +109 -0
  246. package/components/stream/stream.d.ts +19 -0
  247. package/components/stream/stream.js +8 -90
  248. package/components/swatch/class.js +131 -0
  249. package/components/swatch/swatch.d.ts +28 -0
  250. package/components/swatch/swatch.js +8 -112
  251. package/components/swiper/class.js +373 -0
  252. package/components/swiper/swiper.a2ui.json +4 -0
  253. package/components/swiper/swiper.d.ts +31 -0
  254. package/components/swiper/swiper.js +8 -354
  255. package/components/swiper/swiper.yaml +68 -212
  256. package/components/switch/class.js +63 -0
  257. package/components/switch/switch.a2ui.json +6 -1
  258. package/components/switch/switch.d.ts +30 -0
  259. package/components/switch/switch.js +11 -47
  260. package/components/switch/switch.yaml +70 -265
  261. package/components/table/class.js +1453 -0
  262. package/components/table/table.d.ts +37 -0
  263. package/components/table/table.js +8 -1435
  264. package/components/table-toolbar/class.js +680 -0
  265. package/components/table-toolbar/table-toolbar.d.ts +33 -0
  266. package/components/table-toolbar/table-toolbar.js +8 -689
  267. package/components/tabs/class.js +242 -0
  268. package/components/tabs/tabs.d.ts +21 -0
  269. package/components/tabs/tabs.js +8 -223
  270. package/components/tag/class.js +99 -0
  271. package/components/tag/tag.d.ts +27 -0
  272. package/components/tag/tag.js +8 -80
  273. package/components/text/class.js +46 -0
  274. package/components/text/text.d.ts +25 -0
  275. package/components/text/text.js +9 -28
  276. package/components/textarea/class.js +134 -0
  277. package/components/textarea/textarea.d.ts +31 -0
  278. package/components/textarea/textarea.js +11 -118
  279. package/components/timeline/class.js +176 -0
  280. package/components/timeline/timeline.d.ts +19 -0
  281. package/components/timeline/timeline.js +9 -162
  282. package/components/toast/class.js +92 -0
  283. package/components/toast/toast.d.ts +23 -0
  284. package/components/toast/toast.js +9 -76
  285. package/components/toggle-group/class.js +154 -0
  286. package/components/toggle-group/toggle-group.d.ts +19 -0
  287. package/components/toggle-group/toggle-group.js +11 -140
  288. package/components/toggle-scheme/class.js +286 -0
  289. package/components/toggle-scheme/toggle-scheme.a2ui.json +197 -0
  290. package/components/toggle-scheme/toggle-scheme.css +20 -0
  291. package/components/toggle-scheme/toggle-scheme.d.ts +41 -0
  292. package/components/toggle-scheme/toggle-scheme.js +17 -0
  293. package/components/toggle-scheme/toggle-scheme.yaml +173 -0
  294. package/components/toolbar/class.js +388 -0
  295. package/components/toolbar/toolbar.d.ts +23 -0
  296. package/components/toolbar/toolbar.js +10 -376
  297. package/components/tooltip/class.js +299 -0
  298. package/components/tooltip/tooltip.d.ts +27 -0
  299. package/components/tooltip/tooltip.js +8 -280
  300. package/components/tree/class.js +245 -0
  301. package/components/tree/tree.d.ts +15 -0
  302. package/components/tree/tree.js +9 -244
  303. package/components/upload/class.js +199 -0
  304. package/components/upload/upload.d.ts +27 -0
  305. package/components/upload/upload.js +11 -183
  306. package/core/element.d.ts +174 -0
  307. package/core/form.d.ts +108 -0
  308. package/core/index.d.ts +11 -0
  309. package/core/index.js +1 -0
  310. package/core/register.d.ts +25 -0
  311. package/core/register.js +58 -0
  312. package/core/signals.d.ts +94 -0
  313. package/core/template.d.ts +70 -0
  314. package/index.d.ts +315 -0
  315. package/package.json +25 -6
  316. package/traits/CATEGORIES.md +1 -1
@@ -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: UISwiper
5
3
  tag: swiper-ui
@@ -15,17 +13,21 @@ props:
15
13
  slidesPerView:
16
14
  description: Number of slides visible at once. Accepts "1", "2", "3", or "auto". Empty = CSS default (single slide).
17
15
  type: string
18
- default: ""
16
+ default: ''
19
17
  attribute: slides-per-view
20
18
  snap:
21
19
  description: Scroll-snap alignment — start, center, end, or none.
22
20
  type: string
23
21
  default: start
24
- enum: [start, center, end, none]
22
+ enum:
23
+ - start
24
+ - center
25
+ - end
26
+ - none
25
27
  gap:
26
- description: "Gap between slides (token: sm, md, lg)"
28
+ description: 'Gap between slides (token: sm, md, lg)'
27
29
  type: string
28
- default: ""
30
+ default: ''
29
31
  interval:
30
32
  description: Autoplay interval in ms
31
33
  type: number
@@ -46,225 +48,79 @@ props:
46
48
  default: false
47
49
  events:
48
50
  autoplay-pause:
49
- description: "Fired on autoplay-pause."
51
+ description: Fired on autoplay-pause.
50
52
  autoplay-resume:
51
- description: "Fired on autoplay-resume."
53
+ description: Fired on autoplay-resume.
52
54
  change:
53
- description: "Fired when the active slide changes. Detail: { index, slide }."
55
+ description: 'Fired when the active slide changes. Detail: { index, slide }.'
54
56
  slots:
55
57
  default:
56
- description: "Default slot — primary child content."
58
+ description: Default slot — primary child content.
57
59
  states:
58
- - name: idle
59
- description: Default, ready for interaction.
60
+ - name: idle
61
+ description: Default, ready for interaction.
60
62
  traits: []
61
63
  tokens: {}
62
64
  a2ui:
63
65
  rules: []
64
66
  anti_patterns: []
65
67
  examples:
66
- - name: image-carousel
67
- description: Basic image carousel with 3 slides
68
- a2ui: >-
69
- [
70
- {
71
- "id": "root",
72
- "component": "Card",
73
- "children": [
74
- "hdr",
75
- "sec"
76
- ]
77
- },
78
- {
79
- "id": "hdr",
80
- "component": "Header",
81
- "children": [
82
- "title"
83
- ]
84
- },
85
- {
86
- "id": "title",
87
- "component": "Text",
88
- "slot": "heading",
89
- "variant": "section",
90
- "textContent": "Photo Gallery"
91
- },
92
- {
93
- "id": "sec",
94
- "component": "Section",
95
- "children": [
96
- "carousel"
97
- ]
98
- },
99
- {
100
- "id": "carousel",
101
- "component": "Swiper",
102
- "children": [
103
- "s1",
104
- "s2",
105
- "s3"
106
- ],
107
- "gap": "md"
108
- },
109
- {
110
- "id": "s1",
111
- "component": "Image",
112
- "src": "/images/photo-1.jpg",
113
- "alt": "Mountain landscape"
114
- },
115
- {
116
- "id": "s2",
117
- "component": "Image",
118
- "src": "/images/photo-2.jpg",
119
- "alt": "Ocean sunset"
120
- },
121
- {
122
- "id": "s3",
123
- "component": "Image",
124
- "src": "/images/photo-3.jpg",
125
- "alt": "Forest trail"
126
- }
127
- ]
128
- - name: product-showcase
129
- description: Product cards in a peek carousel with autoplay
130
- a2ui: >-
131
- [
132
- {
133
- "id": "root",
134
- "component": "Swiper",
135
- "children": [
136
- "p1",
137
- "p2",
138
- "p3"
139
- ],
140
- "peek": true,
141
- "slides-per-view": "3",
142
- "gap": "md",
143
- "autoplay": true,
144
- "interval": "5000"
145
- },
146
- {
147
- "id": "p1",
148
- "component": "Card",
149
- "children": [
150
- "p1-sec"
151
- ]
152
- },
153
- {
154
- "id": "p1-sec",
155
- "component": "Section",
156
- "children": [
157
- "p1-img",
158
- "p1-name",
159
- "p1-price"
160
- ]
161
- },
162
- {
163
- "id": "p1-img",
164
- "component": "Image",
165
- "src": "/images/product-1.jpg",
166
- "alt": "Wireless headphones"
167
- },
168
- {
169
- "id": "p1-name",
170
- "component": "Text",
171
- "variant": "label",
172
- "textContent": "Wireless Headphones"
173
- },
174
- {
175
- "id": "p1-price",
176
- "component": "Text",
177
- "variant": "metric",
178
- "textContent": "$79.99"
179
- },
180
- {
181
- "id": "p2",
182
- "component": "Card",
183
- "children": [
184
- "p2-sec"
185
- ]
186
- },
187
- {
188
- "id": "p2-sec",
189
- "component": "Section",
190
- "children": [
191
- "p2-img",
192
- "p2-name",
193
- "p2-price"
194
- ]
195
- },
196
- {
197
- "id": "p2-img",
198
- "component": "Image",
199
- "src": "/images/product-2.jpg",
200
- "alt": "Smart watch"
201
- },
202
- {
203
- "id": "p2-name",
204
- "component": "Text",
205
- "variant": "label",
206
- "textContent": "Smart Watch"
207
- },
208
- {
209
- "id": "p2-price",
210
- "component": "Text",
211
- "variant": "metric",
212
- "textContent": "$199.99"
213
- },
214
- {
215
- "id": "p3",
216
- "component": "Card",
217
- "children": [
218
- "p3-sec"
219
- ]
220
- },
221
- {
222
- "id": "p3-sec",
223
- "component": "Section",
224
- "children": [
225
- "p3-img",
226
- "p3-name",
227
- "p3-price"
228
- ]
229
- },
230
- {
231
- "id": "p3-img",
232
- "component": "Image",
233
- "src": "/images/product-3.jpg",
234
- "alt": "Bluetooth speaker"
235
- },
236
- {
237
- "id": "p3-name",
238
- "component": "Text",
239
- "variant": "label",
240
- "textContent": "Bluetooth Speaker"
241
- },
242
- {
243
- "id": "p3-price",
244
- "component": "Text",
245
- "variant": "metric",
246
- "textContent": "$49.99"
247
- }
248
- ]
68
+ - name: image-carousel
69
+ description: Basic image carousel with 3 slides
70
+ a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\"\n\
71
+ \ ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\"\n ]\n\
72
+ \ },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"variant\": \"section\"\
73
+ ,\n \"textContent\": \"Photo Gallery\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\"\
74
+ : [\n \"carousel\"\n ]\n },\n {\n \"id\": \"carousel\",\n \"component\": \"Swiper\",\n \"children\"\
75
+ : [\n \"s1\",\n \"s2\",\n \"s3\"\n ],\n \"gap\": \"md\"\n },\n {\n \"id\": \"s1\",\n \"component\"\
76
+ : \"Image\",\n \"src\": \"/images/photo-1.jpg\",\n \"alt\": \"Mountain landscape\"\n },\n {\n \"id\": \"s2\"\
77
+ ,\n \"component\": \"Image\",\n \"src\": \"/images/photo-2.jpg\",\n \"alt\": \"Ocean sunset\"\n },\n {\n \
78
+ \ \"id\": \"s3\",\n \"component\": \"Image\",\n \"src\": \"/images/photo-3.jpg\",\n \"alt\": \"Forest trail\"\
79
+ \n }\n]"
80
+ - name: product-showcase
81
+ description: Product cards in a peek carousel with autoplay
82
+ a2ui: "[\n {\n \"id\": \"root\",\n \"component\": \"Swiper\",\n \"children\": [\n \"p1\",\n \"p2\",\n\
83
+ \ \"p3\"\n ],\n \"peek\": true,\n \"slides-per-view\": \"3\",\n \"gap\": \"md\",\n \"autoplay\": true,\n\
84
+ \ \"interval\": \"5000\"\n },\n {\n \"id\": \"p1\",\n \"component\": \"Card\",\n \"children\": [\n \
85
+ \ \"p1-sec\"\n ]\n },\n {\n \"id\": \"p1-sec\",\n \"component\": \"Section\",\n \"children\": [\n \"\
86
+ p1-img\",\n \"p1-name\",\n \"p1-price\"\n ]\n },\n {\n \"id\": \"p1-img\",\n \"component\": \"Image\"\
87
+ ,\n \"src\": \"/images/product-1.jpg\",\n \"alt\": \"Wireless headphones\"\n },\n {\n \"id\": \"p1-name\",\n\
88
+ \ \"component\": \"Text\",\n \"variant\": \"label\",\n \"textContent\": \"Wireless Headphones\"\n },\n {\n\
89
+ \ \"id\": \"p1-price\",\n \"component\": \"Text\",\n \"variant\": \"metric\",\n \"textContent\": \"$79.99\"\
90
+ \n },\n {\n \"id\": \"p2\",\n \"component\": \"Card\",\n \"children\": [\n \"p2-sec\"\n ]\n },\n \
91
+ \ {\n \"id\": \"p2-sec\",\n \"component\": \"Section\",\n \"children\": [\n \"p2-img\",\n \"p2-name\"\
92
+ ,\n \"p2-price\"\n ]\n },\n {\n \"id\": \"p2-img\",\n \"component\": \"Image\",\n \"src\": \"/images/product-2.jpg\"\
93
+ ,\n \"alt\": \"Smart watch\"\n },\n {\n \"id\": \"p2-name\",\n \"component\": \"Text\",\n \"variant\": \"\
94
+ label\",\n \"textContent\": \"Smart Watch\"\n },\n {\n \"id\": \"p2-price\",\n \"component\": \"Text\",\n \
95
+ \ \"variant\": \"metric\",\n \"textContent\": \"$199.99\"\n },\n {\n \"id\": \"p3\",\n \"component\": \"\
96
+ Card\",\n \"children\": [\n \"p3-sec\"\n ]\n },\n {\n \"id\": \"p3-sec\",\n \"component\": \"Section\"\
97
+ ,\n \"children\": [\n \"p3-img\",\n \"p3-name\",\n \"p3-price\"\n ]\n },\n {\n \"id\": \"p3-img\"\
98
+ ,\n \"component\": \"Image\",\n \"src\": \"/images/product-3.jpg\",\n \"alt\": \"Bluetooth speaker\"\n },\n\
99
+ \ {\n \"id\": \"p3-name\",\n \"component\": \"Text\",\n \"variant\": \"label\",\n \"textContent\": \"Bluetooth\
100
+ \ Speaker\"\n },\n {\n \"id\": \"p3-price\",\n \"component\": \"Text\",\n \"variant\": \"metric\",\n \"\
101
+ textContent\": \"$49.99\"\n }\n]"
249
102
  keywords:
250
- - carousel
251
- - slider
252
- - slideshow
253
- - slides
254
- - gallery
255
- - banner
256
- - swiper
103
+ - carousel
104
+ - slider
105
+ - slideshow
106
+ - slides
107
+ - gallery
108
+ - banner
109
+ - swiper
257
110
  synonyms:
258
111
  carousel:
259
- - swiper
260
- - slide
261
- - gallery
262
- - banner
112
+ - swiper
113
+ - slide
114
+ - gallery
115
+ - banner
263
116
  slideshow:
264
- - swiper
265
- - carousel
266
- - slide
117
+ - swiper
118
+ - carousel
119
+ - slide
120
+ tags:
121
+ - Slideshow
122
+ - Carousel
267
123
  related:
268
- - image-gallery
269
- - hero-section
270
- - product-card
124
+ - image-gallery
125
+ - hero-section
126
+ - product-card
@@ -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": {
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `<switch-ui>` — Toggle switch (boolean-semantic form control).
3
+ *
4
+ * @see https://ui-kit.exe.xyz/site/components/switch
5
+ */
6
+
7
+ import { UIFormElement } from '../../core/form.js';
8
+
9
+ export interface SwitchChangeEventDetail {
10
+ /** Submitted value (defaults to `"on"` when checked). */
11
+ value: string;
12
+ /** Current checked state. */
13
+ checked: boolean;
14
+ }
15
+ export type SwitchChangeEvent = CustomEvent<SwitchChangeEventDetail>;
16
+
17
+ export class UISwitch extends UIFormElement {
18
+ /** Checked state — reflected, toggles on click. */
19
+ checked: boolean;
20
+ label: string;
21
+ /** Size — `sm` / `md` / `lg`. */
22
+ size: '' | 'sm' | 'md' | 'lg';
23
+
24
+ addEventListener<K extends keyof HTMLElementEventMap>(
25
+ type: K,
26
+ listener: (this: UISwitch, ev: HTMLElementEventMap[K]) => unknown,
27
+ options?: boolean | AddEventListenerOptions,
28
+ ): void;
29
+ addEventListener(type: 'change', listener: (ev: SwitchChangeEvent) => unknown, options?: boolean | AddEventListenerOptions): void;
30
+ }
@@ -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 };