@swell/swell-ui 0.1.0 → 0.1.1

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 (200) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +1 -1
  3. package/custom-elements.json +8274 -0
  4. package/dist/chunks/badge-Dt6q8Cqa.js +11 -0
  5. package/dist/chunks/button-C7nCiu-t.js +123 -0
  6. package/dist/chunks/card-CvSQEug8.js +10 -0
  7. package/dist/chunks/checkbox-BRI_A1TP.js +99 -0
  8. package/dist/chunks/chip-BtnufSMG.js +48 -0
  9. package/dist/chunks/config-C-FYxOaJ.js +588 -0
  10. package/dist/chunks/define-BlQTa1g4.js +19 -0
  11. package/dist/chunks/description-BHfQ8meK.js +19 -0
  12. package/dist/chunks/disclosure-CET8-H6f.js +56 -0
  13. package/dist/chunks/divider-BfkO0c1j.js +27 -0
  14. package/dist/chunks/element-B4-_7TLZ.js +138 -0
  15. package/dist/chunks/input-Uun-ls2_.js +53 -0
  16. package/dist/chunks/link-8qHFEKQE.js +53 -0
  17. package/dist/chunks/link-D4NC86oc.js +24 -0
  18. package/dist/chunks/lookup-5icr_T6o.js +205 -0
  19. package/dist/chunks/lookup-list-Bw6OJoDS.js +19 -0
  20. package/dist/chunks/lookup-option-Mn3k8W2M.js +26 -0
  21. package/dist/chunks/popover-D3Ob6slA.js +92 -0
  22. package/dist/chunks/popup-Dbh2fchP.js +21 -0
  23. package/dist/chunks/quantity-h3wqn8tC.js +140 -0
  24. package/dist/chunks/radio-BhFDL3pO.js +192 -0
  25. package/dist/chunks/radio-option-hT29S8Zl.js +88 -0
  26. package/dist/chunks/select-DS1n_htj.js +331 -0
  27. package/dist/chunks/select-option-DoM9GAe0.js +66 -0
  28. package/dist/chunks/skeleton-DfPjhls9.js +13 -0
  29. package/dist/chunks/status-B23JZ5RQ.js +71 -0
  30. package/dist/chunks/tab-BpjFUbFO.js +107 -0
  31. package/dist/chunks/tabs-aWKq1Iaz.js +122 -0
  32. package/dist/chunks/text-ZWPy-iB3.js +26 -0
  33. package/dist/chunks/text-field-BB_MRt5h.js +158 -0
  34. package/dist/chunks/textarea-L6_OJ2IN.js +18 -0
  35. package/dist/chunks/thumbnail-CLe9AsFg.js +21 -0
  36. package/dist/chunks/toggle-C7-oPgWR.js +22 -0
  37. package/dist/chunks/ui-HcyMKwzs.js +11 -0
  38. package/dist/editors/vscode.css-custom-data.json +824 -0
  39. package/dist/editors/vscode.html-custom-data.json +1156 -0
  40. package/dist/editors/web-types.json +1706 -0
  41. package/dist/elements/badge.d.ts +1 -0
  42. package/dist/elements/badge.js +1 -0
  43. package/dist/elements/button.d.ts +1 -0
  44. package/dist/elements/button.js +1 -0
  45. package/dist/elements/card.d.ts +1 -0
  46. package/dist/elements/card.js +1 -0
  47. package/dist/elements/checkbox.d.ts +1 -0
  48. package/dist/elements/checkbox.js +1 -0
  49. package/dist/elements/chip.d.ts +1 -0
  50. package/dist/elements/chip.js +1 -0
  51. package/dist/elements/disclosure.d.ts +1 -0
  52. package/dist/elements/disclosure.js +1 -0
  53. package/dist/elements/divider.d.ts +1 -0
  54. package/dist/elements/divider.js +1 -0
  55. package/dist/elements/input.d.ts +1 -0
  56. package/dist/elements/input.js +1 -0
  57. package/dist/elements/link.d.ts +1 -0
  58. package/dist/elements/link.js +1 -0
  59. package/dist/elements/lookup-list.d.ts +1 -0
  60. package/dist/elements/lookup-list.js +1 -0
  61. package/dist/elements/lookup-option.d.ts +1 -0
  62. package/dist/elements/lookup-option.js +1 -0
  63. package/dist/elements/lookup.d.ts +1 -0
  64. package/dist/elements/lookup.js +1 -0
  65. package/dist/elements/popover.d.ts +1 -0
  66. package/dist/elements/popover.js +1 -0
  67. package/dist/elements/quantity.d.ts +1 -0
  68. package/dist/elements/quantity.js +1 -0
  69. package/dist/elements/radio-option.d.ts +1 -0
  70. package/dist/elements/radio-option.js +1 -0
  71. package/dist/elements/radio.d.ts +1 -0
  72. package/dist/elements/radio.js +1 -0
  73. package/dist/elements/select-option.d.ts +1 -0
  74. package/dist/elements/select-option.js +1 -0
  75. package/dist/elements/select.d.ts +1 -0
  76. package/dist/elements/select.js +1 -0
  77. package/dist/elements/skeleton.d.ts +1 -0
  78. package/dist/elements/skeleton.js +1 -0
  79. package/dist/elements/status.d.ts +1 -0
  80. package/dist/elements/status.js +1 -0
  81. package/dist/elements/tab.d.ts +1 -0
  82. package/dist/elements/tab.js +1 -0
  83. package/dist/elements/tabs.d.ts +1 -0
  84. package/dist/elements/tabs.js +1 -0
  85. package/dist/elements/text.d.ts +1 -0
  86. package/dist/elements/text.js +1 -0
  87. package/dist/elements/textarea.d.ts +1 -0
  88. package/dist/elements/textarea.js +1 -0
  89. package/dist/elements/thumbnail.d.ts +1 -0
  90. package/dist/elements/thumbnail.js +1 -0
  91. package/dist/elements/ui.d.ts +1 -0
  92. package/dist/elements/ui.js +1 -0
  93. package/dist/frameworks/jsx.d.ts +3589 -0
  94. package/dist/frameworks/preact.d.ts +9 -0
  95. package/dist/frameworks/solid.d.ts +7 -0
  96. package/dist/frameworks/svelte.d.ts +1676 -0
  97. package/dist/frameworks/vue.d.ts +827 -0
  98. package/dist/index.js +80 -0
  99. package/dist/react/badge.d.ts +12 -0
  100. package/dist/react/badge.js +4 -0
  101. package/dist/react/button.d.ts +16 -0
  102. package/dist/react/button.js +4 -0
  103. package/dist/react/card.d.ts +11 -0
  104. package/dist/react/card.js +4 -0
  105. package/dist/react/checkbox.d.ts +14 -0
  106. package/dist/react/checkbox.js +4 -0
  107. package/dist/react/chip.d.ts +12 -0
  108. package/dist/react/chip.js +4 -0
  109. package/dist/react/create.js +49 -0
  110. package/dist/react/disclosure.d.ts +11 -0
  111. package/dist/react/disclosure.js +4 -0
  112. package/dist/react/divider.d.ts +9 -0
  113. package/dist/react/divider.js +4 -0
  114. package/dist/react/index.d.ts +26 -0
  115. package/dist/react/index.js +26 -0
  116. package/dist/react/input.d.ts +28 -0
  117. package/dist/react/input.js +4 -0
  118. package/dist/react/link.d.ts +15 -0
  119. package/dist/react/link.js +4 -0
  120. package/dist/react/lookup-list.d.ts +9 -0
  121. package/dist/react/lookup-list.js +4 -0
  122. package/dist/react/lookup-option.d.ts +11 -0
  123. package/dist/react/lookup-option.js +4 -0
  124. package/dist/react/lookup.d.ts +28 -0
  125. package/dist/react/lookup.js +4 -0
  126. package/dist/react/popover.d.ts +11 -0
  127. package/dist/react/popover.js +4 -0
  128. package/dist/react/quantity.d.ts +15 -0
  129. package/dist/react/quantity.js +4 -0
  130. package/dist/react/radio-option.d.ts +11 -0
  131. package/dist/react/radio-option.js +4 -0
  132. package/dist/react/radio.d.ts +18 -0
  133. package/dist/react/radio.js +4 -0
  134. package/dist/react/select-option.d.ts +11 -0
  135. package/dist/react/select-option.js +4 -0
  136. package/dist/react/select.d.ts +20 -0
  137. package/dist/react/select.js +4 -0
  138. package/dist/react/skeleton.d.ts +11 -0
  139. package/dist/react/skeleton.js +4 -0
  140. package/dist/react/status.d.ts +12 -0
  141. package/dist/react/status.js +4 -0
  142. package/dist/react/tab.d.ts +10 -0
  143. package/dist/react/tab.js +4 -0
  144. package/dist/react/tabs.d.ts +17 -0
  145. package/dist/react/tabs.js +4 -0
  146. package/dist/react/text.d.ts +12 -0
  147. package/dist/react/text.js +4 -0
  148. package/dist/react/textarea.d.ts +23 -0
  149. package/dist/react/textarea.js +4 -0
  150. package/dist/react/thumbnail.d.ts +13 -0
  151. package/dist/react/thumbnail.js +4 -0
  152. package/dist/react/ui.d.ts +10 -0
  153. package/dist/react/ui.js +4 -0
  154. package/dist/types/components/core/badge/badge.d.ts +25 -0
  155. package/dist/types/components/core/button/button.d.ts +60 -0
  156. package/dist/types/components/core/card/card.d.ts +21 -0
  157. package/dist/types/components/core/checkbox/checkbox.d.ts +46 -0
  158. package/dist/types/components/core/chip/chip.d.ts +36 -0
  159. package/dist/types/components/core/disclosure/disclosure.d.ts +37 -0
  160. package/dist/types/components/core/divider/divider.d.ts +21 -0
  161. package/dist/types/components/core/index.d.ts +21 -0
  162. package/dist/types/components/core/input/input.d.ts +57 -0
  163. package/dist/types/components/core/link/link.d.ts +42 -0
  164. package/dist/types/components/core/lookup/lookup-list.d.ts +21 -0
  165. package/dist/types/components/core/lookup/lookup-option.d.ts +27 -0
  166. package/dist/types/components/core/lookup/lookup.d.ts +32 -0
  167. package/dist/types/components/core/popover/popover.d.ts +33 -0
  168. package/dist/types/components/core/quantity/quantity.d.ts +47 -0
  169. package/dist/types/components/core/radio/radio-option.d.ts +82 -0
  170. package/dist/types/components/core/radio/radio.d.ts +65 -0
  171. package/dist/types/components/core/select/select-option.d.ts +69 -0
  172. package/dist/types/components/core/select/select.d.ts +70 -0
  173. package/dist/types/components/core/skeleton/skeleton.d.ts +23 -0
  174. package/dist/types/components/core/status/status.d.ts +38 -0
  175. package/dist/types/components/core/tabs/tab.d.ts +76 -0
  176. package/dist/types/components/core/tabs/tabs.d.ts +46 -0
  177. package/dist/types/components/core/text/text.d.ts +23 -0
  178. package/dist/types/components/core/textarea/textarea.d.ts +45 -0
  179. package/dist/types/components/core/thumbnail/thumbnail.d.ts +27 -0
  180. package/dist/types/components/core/ui/ui.d.ts +16 -0
  181. package/dist/types/components/elements.d.ts +1 -0
  182. package/dist/types/react/create.d.ts +8 -0
  183. package/dist/types/runtime/config.d.ts +25 -0
  184. package/dist/types/runtime/css.d.ts +12 -0
  185. package/dist/types/runtime/define.d.ts +4 -0
  186. package/dist/types/runtime/description.d.ts +12 -0
  187. package/dist/types/runtime/element.d.ts +61 -0
  188. package/dist/types/runtime/focus.d.ts +5 -0
  189. package/dist/types/runtime/form.d.ts +5 -0
  190. package/dist/types/runtime/index.d.ts +2 -0
  191. package/dist/types/runtime/link.d.ts +17 -0
  192. package/dist/types/runtime/loader.d.ts +21 -0
  193. package/dist/types/runtime/popup.d.ts +8 -0
  194. package/dist/types/runtime/sheet.d.ts +31 -0
  195. package/dist/types/runtime/text-field.d.ts +47 -0
  196. package/dist/types/runtime/toggle.d.ts +8 -0
  197. package/dist/types/runtime/tokens.generated.d.ts +492 -0
  198. package/dist/types/runtime/values.d.ts +6 -0
  199. package/dist/types/runtime/variants.d.ts +4 -0
  200. package/package.json +2 -1
@@ -0,0 +1,1156 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
3
+ "version": 1.1,
4
+ "tags": [
5
+ {
6
+ "name": "swell-badge",
7
+ "description": "A badge: a short label or a count, such as a subscription's interval, a discount or a quantity.\nIt is text only: screen readers read it in place, so a count needs its context in the host's markup, such as hidden text next to it.\n---\n\n\n### **Slots:**\n - _default_ - The label.\n- **start** - An icon before the label, drawn 1px larger than the text.",
8
+ "attributes": [
9
+ {
10
+ "name": "variant",
11
+ "description": "Which palette of `color` the badge takes its colors from: `secondary`, quiet, or a variant of the host's own; without it, the badge's own.",
12
+ "values": []
13
+ },
14
+ {
15
+ "name": "appearance",
16
+ "description": "How the badge is drawn; the configured setting by default.",
17
+ "values": [{ "name": "filled" }, { "name": "outline" }]
18
+ },
19
+ {
20
+ "name": "size",
21
+ "description": "How large the badge is; `medium` by default. A small one fits a count, an extra small one a count on an icon.",
22
+ "values": [
23
+ { "name": "xsmall" },
24
+ { "name": "small" },
25
+ { "name": "medium" },
26
+ { "name": "large" },
27
+ { "name": "xlarge" }
28
+ ]
29
+ }
30
+ ],
31
+ "references": []
32
+ },
33
+ {
34
+ "name": "swell-button",
35
+ "description": "A button. It submits or resets the form it belongs to, like a native button.\nWith `href` it is a link that looks like the button: an anchor in its shadow root fills it inside the border, takes the focus and follows the link, named by the element's own `aria-label`, or else by its content; `type`, `disabled`, `loading` and `success` belong to the button without `href`.\n`role=\"button\"` and `tabindex=\"0\"` count as the kit's and leave when `href` comes; any other role or tabindex is the host's and stays.\n\nWhile `loading`, the button shows a spinner in place of its `start` content, hides its `end` content and ignores clicks; it keeps its focus.\nWith `success`, it is filled with the success color and shows a check in place of its icons and its spinner. It is inactive, as after a payment, but keeps its focus and doesn't fade.\n---\n\n\n### **Methods:**\n - **shake(): _void_** - Shakes the button, as after a failed attempt to submit; each call starts the shake again.\n- **focus(options: _FocusOptions_): _void_** - Focuses the anchor with `href`, and the button itself without it.\n\n### **Slots:**\n - _default_ - The label of the button.\n- **start** - An icon before the label, drawn 4px larger than the text.\n- **end** - An icon after the label, drawn 4px larger than the text; it moves toward the end on hover.",
36
+ "attributes": [
37
+ {
38
+ "name": "disabled",
39
+ "description": "Removes the button from the tab order and ignores clicks.",
40
+ "values": []
41
+ },
42
+ {
43
+ "name": "loading",
44
+ "description": "Shows a spinner, marks the button busy and ignores clicks; the button stays in the tab order.",
45
+ "values": []
46
+ },
47
+ {
48
+ "name": "success",
49
+ "description": "Fills the button with the success color, draws a check and makes the button inactive; it keeps its tab stop and isn't busy.",
50
+ "values": []
51
+ },
52
+ {
53
+ "name": "variant",
54
+ "description": "Which palette of `color` the button takes its colors from: `secondary`, or a variant of the host's own; without it, the button's own.",
55
+ "values": []
56
+ },
57
+ {
58
+ "name": "appearance",
59
+ "description": "How the button is drawn; the variant's setting by default.",
60
+ "values": [
61
+ { "name": "filled" },
62
+ { "name": "outline" },
63
+ { "name": "plain" }
64
+ ]
65
+ },
66
+ {
67
+ "name": "size",
68
+ "description": "How large the button is; `medium` by default. `xsmall` fits an action inside a status message.",
69
+ "values": [
70
+ { "name": "xsmall" },
71
+ { "name": "small" },
72
+ { "name": "medium" },
73
+ { "name": "large" },
74
+ { "name": "xlarge" }
75
+ ]
76
+ },
77
+ {
78
+ "name": "shape",
79
+ "description": "Rounds the corners fully, in every variant, appearance and size, whatever the corner radius of the host's buttons.",
80
+ "values": [{ "name": "pill" }]
81
+ },
82
+ {
83
+ "name": "href",
84
+ "description": "Where the button leads; with it the element is a link, named by its own `aria-label`, or else by its content.",
85
+ "values": []
86
+ },
87
+ {
88
+ "name": "target",
89
+ "description": "Where to open the link.",
90
+ "values": []
91
+ },
92
+ {
93
+ "name": "rel",
94
+ "description": "How the link's target relates to the page.",
95
+ "values": []
96
+ },
97
+ {
98
+ "name": "type",
99
+ "description": "What the button does in a form; `submit` by default.",
100
+ "values": [
101
+ { "name": "submit" },
102
+ { "name": "reset" },
103
+ { "name": "button" }
104
+ ]
105
+ }
106
+ ],
107
+ "references": []
108
+ },
109
+ {
110
+ "name": "swell-card",
111
+ "description": "A card: a box that groups content, such as the details of an order or a note under a choice.\n---\n\n\n### **Slots:**\n - _default_ - The content.",
112
+ "attributes": [
113
+ {
114
+ "name": "appearance",
115
+ "description": "How the card is drawn: with a border, or filled with the quiet background; the configured setting by default.",
116
+ "values": [{ "name": "outline" }, { "name": "filled" }]
117
+ },
118
+ {
119
+ "name": "size",
120
+ "description": "How large the padding is: it follows the text of the size; `medium` by default.",
121
+ "values": [
122
+ { "name": "xsmall" },
123
+ { "name": "small" },
124
+ { "name": "medium" },
125
+ { "name": "large" },
126
+ { "name": "xlarge" }
127
+ ]
128
+ }
129
+ ],
130
+ "references": []
131
+ },
132
+ {
133
+ "name": "swell-checkbox",
134
+ "description": "A checkbox: a native checkbox with its label, hint and error, rendered into light DOM.\n---\n\n\n### **Events:**\n - **change** - The user checks or unchecks the box; it bubbles from the native input.",
135
+ "attributes": [
136
+ {
137
+ "name": "label",
138
+ "description": "The label beside the box.",
139
+ "values": []
140
+ },
141
+ {
142
+ "name": "hint",
143
+ "description": "Help text under the checkbox.",
144
+ "values": []
145
+ },
146
+ {
147
+ "name": "error",
148
+ "description": "The error shown while the checkbox is invalid.",
149
+ "values": []
150
+ },
151
+ {
152
+ "name": "invalid",
153
+ "description": "Marks the checkbox invalid and shows the error.",
154
+ "values": []
155
+ },
156
+ {
157
+ "name": "checked",
158
+ "description": "The default state.",
159
+ "values": []
160
+ },
161
+ {
162
+ "name": "value",
163
+ "description": "The value sent with the form; `on` by default.",
164
+ "values": []
165
+ },
166
+ {
167
+ "name": "disabled",
168
+ "description": "Disables the checkbox.",
169
+ "values": []
170
+ },
171
+ {
172
+ "name": "required",
173
+ "description": "Makes the checkbox required.",
174
+ "values": []
175
+ },
176
+ {
177
+ "name": "name",
178
+ "description": "The name sent with the form.",
179
+ "values": []
180
+ },
181
+ {
182
+ "name": "size",
183
+ "description": "How large the checkbox is: the label takes the text of the size and the box grows with it; `medium` by default. The target stays at least 24px.",
184
+ "values": [
185
+ { "name": "xsmall" },
186
+ { "name": "small" },
187
+ { "name": "medium" },
188
+ { "name": "large" },
189
+ { "name": "xlarge" }
190
+ ]
191
+ }
192
+ ],
193
+ "references": []
194
+ },
195
+ {
196
+ "name": "swell-chip",
197
+ "description": "A chip: a short value the shopper can remove, such as an applied discount code or gift card.\nIts remove button fires `remove`; the host removes the chip and moves the focus, for example to the code field.\nA disabled chip, by its own attribute or a disabled fieldset around it, keeps its value legible and fades its remove button, which takes neither the focus nor presses, so a host can lock a form while it is sent.\n---\n\n\n### **Events:**\n - **remove** - The shopper pressed the remove button; it bubbles, and the chip stays in the page. A disabled chip fires none.\n\n### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - Focuses the remove button, the chip's only stop, so a host can hand the focus to a chip; a click on the text leaves the focus alone.\n\n### **Slots:**\n - _default_ - The value.\n- **start** - An icon before the value, drawn 2px larger than the text.\n\n### **CSS Parts:**\n - **remove** - The remove button.",
198
+ "attributes": [
199
+ {
200
+ "name": "disabled",
201
+ "description": "Disables the remove button.",
202
+ "values": []
203
+ },
204
+ {
205
+ "name": "remove-label",
206
+ "description": "The name of the remove button in the host's language, such as `Remove WELCOME10`; every chip needs one.",
207
+ "values": []
208
+ },
209
+ {
210
+ "name": "size",
211
+ "description": "How large the chip is; `medium` by default. Its remove button is as high as the chip, at least 24px.",
212
+ "values": [
213
+ { "name": "xsmall" },
214
+ { "name": "small" },
215
+ { "name": "medium" },
216
+ { "name": "large" },
217
+ { "name": "xlarge" }
218
+ ]
219
+ }
220
+ ],
221
+ "references": []
222
+ },
223
+ {
224
+ "name": "swell-disclosure",
225
+ "description": "A disclosure: content that stays hidden until the shopper presses its trigger, such as \"Add apartment, suite, etc.\" and the field it reveals.\nThe trigger opens it and leaves; the focus moves to the first control of the content.\nWith `toggle`, such as a collapsible order summary, the trigger stays, closes the content too and tells whether it is open with `aria-expanded`; the focus stays on it.\nThe host can also set `open` itself, for example from a checkbox, and remove it to close the content and bring the trigger back; without a trigger, the host moves the focus out first.\nClosed content stays in the page and in the form: render it only while open, or disable its fields, so a required field doesn't block the submit.\n---\n\n\n### **Events:**\n - **toggle** - The content opened or closed: by the trigger or by script, also as it starts open. A `ToggleEvent` with `oldState` and `newState`, fired once the script that changed `open` has run; it doesn't bubble and can't be cancelled.\n\n### **Methods:**\n \n\n### **Slots:**\n - **trigger** - The host's button that opens the content, such as `<swell-link appearance=\"plain\">`; a button, not a link with `href`. Inside a form a `<button>` or a `<swell-button>` needs `type=\"button\"`. A listener that cancels the press, also a framework's handler on the page, keeps the content closed.\n- _default_ - The content.\n\n### **CSS Parts:**\n - **content** - The box that expands to show the content.",
226
+ "attributes": [
227
+ {
228
+ "name": "open",
229
+ "description": "Shows the content and hides the trigger. Set on connect, the content shows at once.",
230
+ "values": []
231
+ },
232
+ {
233
+ "name": "toggle",
234
+ "description": "Keeps the trigger while the content is open: it closes the content too and carries `aria-expanded`.",
235
+ "values": []
236
+ }
237
+ ],
238
+ "references": []
239
+ },
240
+ {
241
+ "name": "swell-divider",
242
+ "description": "A divider: a line across its width, or two lines with a label between them, such as \"or pay another way\".\nWithout a label it is a separator for screen readers; with one, they read the label and skip the lines.\nThe host sets the space around it.\n---\n\n\n### **Slots:**\n - _default_ - An optional label, such as text or an icon, drawn in the caption font and the secondary text color; whitespace and hidden content aren't one.",
243
+ "attributes": [],
244
+ "references": []
245
+ },
246
+ {
247
+ "name": "swell-link",
248
+ "description": "A link. With `href`, its anchor lives in the shadow root and takes the focus for the element.\n\nWithout `href` the element itself is a button that looks like the link: it takes the button role and the tab stop, fires `click` on Enter and Space, and never submits a form.\nIts own `aria-label`, `aria-expanded` and `aria-controls` name and describe that button, so it can open a popover or a disclosure.\n`role=\"button\"` and `tabindex=\"0\"` count as the kit's and leave when `href` comes; any other role or tabindex is the host's and stays.\n---\n\n\n### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - Focuses the anchor with `href`, and the element itself without it.\n\n### **Slots:**\n - _default_ - The text of the link.\n- **start** - An icon before the text, 2px larger than it.\n- **end** - An icon after the text, 2px larger than it.\n\n### **CSS Parts:**\n - **link** - The anchor, or the content of the button without `href`.",
249
+ "attributes": [
250
+ {
251
+ "name": "href",
252
+ "description": "Where the link goes; without it the element is a button. With it, the anchor is named by the element's own `aria-label`, as a link of an icon alone needs, or else by its content.",
253
+ "values": []
254
+ },
255
+ {
256
+ "name": "target",
257
+ "description": "Where to open the link.",
258
+ "values": []
259
+ },
260
+ {
261
+ "name": "rel",
262
+ "description": "How the target relates to the page.",
263
+ "values": []
264
+ },
265
+ {
266
+ "name": "variant",
267
+ "description": "Which palette of `color` the link takes its color from: `secondary`, quiet text, or a variant of the host's own; without it, the link color.",
268
+ "values": []
269
+ },
270
+ {
271
+ "name": "appearance",
272
+ "description": "How the link is drawn: `underline`, the default, in the font of the text around it; `plain`, for a link on its own, without an underline, in the text of a field hint, at least 24px high. Only the attribute sets it.",
273
+ "values": [{ "name": "underline" }, { "name": "plain" }]
274
+ },
275
+ {
276
+ "name": "size",
277
+ "description": "How large a plain link is: its text is one step smaller than the text of the size, at least 12px; `medium` by default. A link in text takes the font around it.",
278
+ "values": [
279
+ { "name": "xsmall" },
280
+ { "name": "small" },
281
+ { "name": "medium" },
282
+ { "name": "large" },
283
+ { "name": "xlarge" }
284
+ ]
285
+ }
286
+ ],
287
+ "references": []
288
+ },
289
+ {
290
+ "name": "swell-input",
291
+ "description": "A text field: a native input with its label, hint and error, rendered into light DOM.\n---\n\n\n### **Events:**\n - **input** - The value changes as the user types; it bubbles from the native input.\n- **change** - The user commits a new value; it bubbles from the native input.\n\n### **Methods:**\n \n\n- **attributesOf(passed: _string[]_, own: _string[]_): _string[]_** - Every attribute a text field observes, for the subclass's `observedAttributes`.\n\n### **Slots:**\n - **hint** - Help content under the field in place of the `hint` text, such as \"Did you mean <swell-link>gmail.com</swell-link>?\"; it describes the input, and hiding it with `hidden` brings the `hint` text back.\n- **start** - Content before the text, such as an icon; an svg is drawn 4px larger than the text, in the quiet color.\n- **end** - Content after the text, such as a card logo, a check or a button; hide it with `hidden`, and disable a button in it along with the field.\n\n### **CSS Parts:**\n - **frame** - The box that draws the field around the native input, its start and its end.\n- **start** - The box of the start content.\n- **end** - The box of the end content.",
292
+ "attributes": [
293
+ {
294
+ "name": "label",
295
+ "description": "The label of the field.",
296
+ "values": []
297
+ },
298
+ {
299
+ "name": "optional",
300
+ "description": "A marker after the label, such as `(optional)`, in the host's language; it joins the field's name.",
301
+ "values": []
302
+ },
303
+ {
304
+ "name": "hint",
305
+ "description": "Help text under the field.",
306
+ "values": []
307
+ },
308
+ {
309
+ "name": "error",
310
+ "description": "The error shown while the field is invalid.",
311
+ "values": []
312
+ },
313
+ {
314
+ "name": "invalid",
315
+ "description": "Marks the field invalid and shows the error.",
316
+ "values": []
317
+ },
318
+ { "name": "value", "description": "The default value.", "values": [] },
319
+ {
320
+ "name": "type",
321
+ "description": "The kind of value; `text` by default.",
322
+ "values": [
323
+ { "name": "text" },
324
+ { "name": "email" },
325
+ { "name": "tel" },
326
+ { "name": "password" },
327
+ { "name": "number" },
328
+ { "name": "search" },
329
+ { "name": "url" }
330
+ ]
331
+ },
332
+ {
333
+ "name": "appearance",
334
+ "description": "How the field is drawn; the configured setting by default.",
335
+ "values": [
336
+ { "name": "outline" },
337
+ { "name": "filled" },
338
+ { "name": "underline" }
339
+ ]
340
+ },
341
+ {
342
+ "name": "size",
343
+ "description": "How large the field is; `medium` by default. At `xsmall` the label sits above the field.",
344
+ "values": [
345
+ { "name": "xsmall" },
346
+ { "name": "small" },
347
+ { "name": "medium" },
348
+ { "name": "large" },
349
+ { "name": "xlarge" }
350
+ ]
351
+ },
352
+ {
353
+ "name": "disabled",
354
+ "description": "Disables the field.",
355
+ "values": []
356
+ },
357
+ {
358
+ "name": "readonly",
359
+ "description": "Makes the field read-only.",
360
+ "values": []
361
+ },
362
+ {
363
+ "name": "required",
364
+ "description": "Makes the field required.",
365
+ "values": []
366
+ },
367
+ {
368
+ "name": "name",
369
+ "description": "The name sent with the form.",
370
+ "values": []
371
+ },
372
+ {
373
+ "name": "placeholder",
374
+ "description": "Text shown while the field is empty.",
375
+ "values": []
376
+ },
377
+ {
378
+ "name": "autocomplete",
379
+ "description": "The autofill hint of the native input.",
380
+ "values": []
381
+ },
382
+ {
383
+ "name": "inputmode",
384
+ "description": "The virtual keyboard to show.",
385
+ "values": []
386
+ },
387
+ {
388
+ "name": "minlength",
389
+ "description": "The shortest allowed value.",
390
+ "values": []
391
+ },
392
+ {
393
+ "name": "maxlength",
394
+ "description": "The longest allowed value.",
395
+ "values": []
396
+ },
397
+ {
398
+ "name": "pattern",
399
+ "description": "The pattern the value matches.",
400
+ "values": []
401
+ },
402
+ {
403
+ "name": "min",
404
+ "description": "The smallest allowed value.",
405
+ "values": []
406
+ },
407
+ {
408
+ "name": "max",
409
+ "description": "The largest allowed value.",
410
+ "values": []
411
+ },
412
+ {
413
+ "name": "step",
414
+ "description": "The step between allowed values.",
415
+ "values": []
416
+ }
417
+ ],
418
+ "references": []
419
+ },
420
+ {
421
+ "name": "swell-lookup-list",
422
+ "description": "The list of a lookup's suggestions. It lives only as a child of `<swell-lookup>`, which shows it under the field while it opens.\n---\n\n\n### **Slots:**\n - _default_ - The suggestions, `<swell-lookup-option>` elements.",
423
+ "attributes": [],
424
+ "references": []
425
+ },
426
+ {
427
+ "name": "swell-lookup-option",
428
+ "description": "One suggestion of a lookup. It lives only as a child of `<swell-lookup-list>`.\nChoosing it clicks it: the host reads the option from the `click`. A click on a disabled suggestion reaches the host's handlers too, and the field ignores it.\n---\n\n\n### **Slots:**\n - _default_ - The label of the suggestion; the field writes its text into the input when it is chosen.\n- **start** - Content before the label, such as an icon.",
429
+ "attributes": [
430
+ {
431
+ "name": "value",
432
+ "description": "The value of the suggestion, such as the id of a place; the label by default.",
433
+ "values": []
434
+ },
435
+ {
436
+ "name": "hint",
437
+ "description": "A second line under the label.",
438
+ "values": []
439
+ },
440
+ {
441
+ "name": "disabled",
442
+ "description": "Disables the suggestion.",
443
+ "values": []
444
+ },
445
+ { "name": "hidden", "values": [] }
446
+ ],
447
+ "references": []
448
+ },
449
+ {
450
+ "name": "swell-lookup",
451
+ "description": "A text field with suggestions: a combobox in ARIA terms. The host loads the suggestions, such as addresses,\nand puts them into a `<swell-lookup-list>` child as `<swell-lookup-option>` elements; the field shows them under itself.\nIt is a `<swell-input>` in everything else: its native input stays in light DOM, so autofill works as in any field.\n\nThe list opens while the user types and it has something to show, and closes on a choice, on Escape and when the focus leaves the field.\nChoosing a suggestion clicks it. After the click, unless a handler prevented its default, the field writes the suggestion's label\ninto the input and fires `input`, with `inputType` `insertReplacementText`, and `change`; the list stays closed until the user types again.\n---\n\n\n### **Events:**\n - **input** - The value changes as the user types; it bubbles from the native input.\n- **change** - The user commits a new value; it bubbles from the native input.\n\n### **Methods:**\n \n\n- **attributesOf(passed: _string[]_, own: _string[]_): _string[]_** - Every attribute a text field observes, for the subclass's `observedAttributes`.\n\n### **Slots:**\n - _default_ - The list of suggestions, a `<swell-lookup-list>`. While it is there, the input is a combobox and the list can open: keep it in the field, even empty, for as long as the field takes suggestions.\n- **hint** - Help content under the field in place of the `hint` text, as on an input.\n- **action** - A row at the end of the list, such as a `<button type=\"button\">` that opens a manual form; it shows with at least one suggestion, so it stays in the field, and a click on it closes the list.\n- **start** - Content before the text, such as an icon; an svg is drawn 4px larger than the text, in the quiet color.\n- **end** - Content after the text, such as a card logo, a check or a button; hide it with `hidden`, and disable a button in it along with the field.\n\n### **CSS Parts:**\n - **list** - The popup that holds the list and the action.\n- **frame** - The box that draws the field around the native input, its start and its end.\n- **start** - The box of the start content.\n- **end** - The box of the end content.",
452
+ "attributes": [
453
+ {
454
+ "name": "label",
455
+ "description": "The label of the field.",
456
+ "values": []
457
+ },
458
+ {
459
+ "name": "optional",
460
+ "description": "A marker after the label, such as `(optional)`, in the host's language; it joins the field's name.",
461
+ "values": []
462
+ },
463
+ {
464
+ "name": "hint",
465
+ "description": "Help text under the field.",
466
+ "values": []
467
+ },
468
+ {
469
+ "name": "error",
470
+ "description": "The error shown while the field is invalid.",
471
+ "values": []
472
+ },
473
+ {
474
+ "name": "invalid",
475
+ "description": "Marks the field invalid and shows the error.",
476
+ "values": []
477
+ },
478
+ { "name": "value", "description": "The default value.", "values": [] },
479
+ {
480
+ "name": "type",
481
+ "description": "The kind of value; `text` by default.",
482
+ "values": [
483
+ { "name": "text" },
484
+ { "name": "email" },
485
+ { "name": "tel" },
486
+ { "name": "password" },
487
+ { "name": "number" },
488
+ { "name": "search" },
489
+ { "name": "url" }
490
+ ]
491
+ },
492
+ {
493
+ "name": "appearance",
494
+ "description": "How the field is drawn; the configured setting by default.",
495
+ "values": [
496
+ { "name": "outline" },
497
+ { "name": "filled" },
498
+ { "name": "underline" }
499
+ ]
500
+ },
501
+ {
502
+ "name": "size",
503
+ "description": "How large the field is; `medium` by default. At `xsmall` the label sits above the field.",
504
+ "values": [
505
+ { "name": "xsmall" },
506
+ { "name": "small" },
507
+ { "name": "medium" },
508
+ { "name": "large" },
509
+ { "name": "xlarge" }
510
+ ]
511
+ },
512
+ {
513
+ "name": "disabled",
514
+ "description": "Disables the field.",
515
+ "values": []
516
+ },
517
+ {
518
+ "name": "readonly",
519
+ "description": "Makes the field read-only.",
520
+ "values": []
521
+ },
522
+ {
523
+ "name": "required",
524
+ "description": "Makes the field required.",
525
+ "values": []
526
+ },
527
+ {
528
+ "name": "name",
529
+ "description": "The name sent with the form.",
530
+ "values": []
531
+ },
532
+ {
533
+ "name": "placeholder",
534
+ "description": "Text shown while the field is empty.",
535
+ "values": []
536
+ },
537
+ {
538
+ "name": "autocomplete",
539
+ "description": "The autofill hint of the native input.",
540
+ "values": []
541
+ },
542
+ {
543
+ "name": "inputmode",
544
+ "description": "The virtual keyboard to show.",
545
+ "values": []
546
+ },
547
+ {
548
+ "name": "minlength",
549
+ "description": "The shortest allowed value.",
550
+ "values": []
551
+ },
552
+ {
553
+ "name": "maxlength",
554
+ "description": "The longest allowed value.",
555
+ "values": []
556
+ },
557
+ {
558
+ "name": "pattern",
559
+ "description": "The pattern the value matches.",
560
+ "values": []
561
+ },
562
+ {
563
+ "name": "min",
564
+ "description": "The smallest allowed value.",
565
+ "values": []
566
+ },
567
+ {
568
+ "name": "max",
569
+ "description": "The largest allowed value.",
570
+ "values": []
571
+ },
572
+ {
573
+ "name": "step",
574
+ "description": "The step between allowed values.",
575
+ "values": []
576
+ }
577
+ ],
578
+ "references": []
579
+ },
580
+ {
581
+ "name": "swell-popover",
582
+ "description": "A popover: a small dialog that floats at the host's trigger, such as the language and currency picker of a checkout.\nThe trigger opens and closes it; opened by the trigger, it moves the focus to its first control. Escape closes it and gives the focus back to the trigger;\na press outside it and the focus leaving it close it too. A choice inside keeps it open.\nThe panel sits under the trigger, or above it when there is more room there, at the trigger's start edge, or at its end edge when it would leave the window there.\nIts content sets its width, at least the trigger's and at most the window's less 16px.\nName it with `aria-label`, such as `Language and currency`.\n---\n\n\n### **Events:**\n - **toggle** - The panel opened or closed: by the trigger, Escape, a press outside, the focus leaving it or script, also as it starts open or leaves the page open. A `ToggleEvent` with `oldState` and `newState`, fired once the script that changed `open` has run; it doesn't bubble and can't be cancelled.\n\n### **Slots:**\n - **trigger** - The host's button that opens and closes the panel: a `<button>` or a `<swell-button>`, with `type=\"button\"` inside a form, or a `<swell-link>` without `href`. The popover sets its `aria-expanded`. A listener that cancels the press, also a framework's handler on the page, keeps the panel closed.\n- _default_ - The content of the panel.\n\n### **CSS Parts:**\n - **panel** - The floating panel.",
583
+ "attributes": [
584
+ {
585
+ "name": "open",
586
+ "description": "The panel is open. Set it to open the panel without moving the focus; remove it to close the panel, which gives the focus back to the trigger when the focus is inside.",
587
+ "values": []
588
+ },
589
+ { "name": "aria-label", "values": [] }
590
+ ],
591
+ "references": []
592
+ },
593
+ {
594
+ "name": "swell-quantity",
595
+ "description": "A quantity: a count the shopper changes with − and +, such as the quantity of a cart line or of a product before it goes into the cart.\nIt is a spinbutton with one tab stop: the up and down arrows change the count by `step`, and Home and End move it to `min` and `max`.\nName it with `aria-label`, such as `Quantity, House Blend`, or with `aria-labelledby`. It holds the count and takes part in its form.\nWhile the cart updates, set `busy` rather than `disabled`: a disabled quantity leaves the tab order, so disabling the focused one drops the focus to the page.\n---\n\n\n### **Events:**\n - **input** - The user changed the count.\n- **change** - The user changed the count, after `input`.",
596
+ "attributes": [
597
+ {
598
+ "name": "value",
599
+ "description": "The starting count, a whole number; `min` by default. A count outside the limits is clamped, and a count the user or a script set stays at the limit that clamped it.",
600
+ "values": []
601
+ },
602
+ {
603
+ "name": "min",
604
+ "description": "The least count, a whole number; 1 by default.",
605
+ "values": []
606
+ },
607
+ {
608
+ "name": "max",
609
+ "description": "The greatest count, a whole number; no limit by default. A `max` below `min` counts as `min`.",
610
+ "values": []
611
+ },
612
+ {
613
+ "name": "step",
614
+ "description": "How much each step changes the count, a whole number above 0; 1 by default.",
615
+ "values": []
616
+ },
617
+ {
618
+ "name": "disabled",
619
+ "description": "Removes the quantity from the tab order and ignores steps.",
620
+ "values": []
621
+ },
622
+ {
623
+ "name": "busy",
624
+ "description": "The quantity waits, such as while the cart updates: it keeps the focus, its count and its tab stop, ignores steps, fades and tells screen readers it is busy; a script can still set its count.",
625
+ "values": []
626
+ },
627
+ {
628
+ "name": "name",
629
+ "description": "The name sent with the form.",
630
+ "values": []
631
+ },
632
+ {
633
+ "name": "size",
634
+ "description": "How large the quantity is: it shares a height with buttons and fields of its size; `medium` by default. A cart line takes `xsmall`.",
635
+ "values": [
636
+ { "name": "xsmall" },
637
+ { "name": "small" },
638
+ { "name": "medium" },
639
+ { "name": "large" },
640
+ { "name": "xlarge" }
641
+ ]
642
+ }
643
+ ],
644
+ "references": []
645
+ },
646
+ {
647
+ "name": "swell-radio-option",
648
+ "description": "One option of a radio group. It lives only as a direct child of `<swell-radio>`, which holds the choice.\nIn a segmented group and as a button an option shows its `start` and its label; its hint, `end` and `details` are not drawn.\nAn option with the `hidden` attribute is left out of its group.\n---\n\n\n### **Methods:**\n \n\n### **Slots:**\n - _default_ - The label of the option.\n- **start** - Content before the label, such as an icon or a logo; decoration, left out of the option's name.\n- **end** - Content at the end of the row, such as a price or logos.\n- **details** - Content shown while the option is chosen, such as card fields. While hidden it stays in the page and in the form: render it only while the option is chosen, or disable its fields.",
649
+ "attributes": [
650
+ {
651
+ "name": "value",
652
+ "description": "The value the group takes when the option is chosen; `on` by default.",
653
+ "values": []
654
+ },
655
+ {
656
+ "name": "hint",
657
+ "description": "Help text under the label.",
658
+ "values": []
659
+ },
660
+ {
661
+ "name": "disabled",
662
+ "description": "Disables the option.",
663
+ "values": []
664
+ },
665
+ { "name": "hidden", "values": [] }
666
+ ],
667
+ "references": []
668
+ },
669
+ {
670
+ "name": "swell-radio",
671
+ "description": "A radio group: a question with one answer, chosen from its `<swell-radio-option>` children.\nIt holds the choice and takes part in its form.\n---\n\n\n### **Events:**\n - **input** - The user chose another option.\n- **change** - The user chose another option, after `input`. Events of fields in the options' details bubble through the group too: the group's own have it as their `target`.\n\n### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - Focuses the group's Tab stop, as a Tab into the group does.\n\n### **Slots:**\n - _default_ - The options, `<swell-radio-option>` elements.",
672
+ "attributes": [
673
+ {
674
+ "name": "label",
675
+ "description": "The question. Without it, the group takes its name from its own `aria-label`.",
676
+ "values": []
677
+ },
678
+ {
679
+ "name": "hint",
680
+ "description": "Help text under the options.",
681
+ "values": []
682
+ },
683
+ {
684
+ "name": "error",
685
+ "description": "The error shown while the group is invalid.",
686
+ "values": []
687
+ },
688
+ {
689
+ "name": "invalid",
690
+ "description": "Marks the group invalid and shows the error.",
691
+ "values": []
692
+ },
693
+ {
694
+ "name": "name",
695
+ "description": "The name sent with the form.",
696
+ "values": []
697
+ },
698
+ {
699
+ "name": "value",
700
+ "description": "The value of the option chosen by default.",
701
+ "values": []
702
+ },
703
+ {
704
+ "name": "required",
705
+ "description": "The form can't be sent until an option is chosen.",
706
+ "values": []
707
+ },
708
+ {
709
+ "name": "disabled",
710
+ "description": "Disables every option.",
711
+ "values": []
712
+ },
713
+ { "name": "aria-label", "values": [] },
714
+ {
715
+ "name": "indicator-position",
716
+ "description": "Where the circle sits in the row of each option; the `radio.indicator.position` setting gives the default. A segmented group draws no circle.",
717
+ "values": [{ "name": "start" }, { "name": "end" }]
718
+ },
719
+ {
720
+ "name": "size",
721
+ "description": "How large the options are: their text, circle and padding follow the text of the size, and a segmented track takes the height of a control; `medium` by default.",
722
+ "values": [
723
+ { "name": "xsmall" },
724
+ { "name": "small" },
725
+ { "name": "medium" },
726
+ { "name": "large" },
727
+ { "name": "xlarge" }
728
+ ]
729
+ },
730
+ {
731
+ "name": "appearance",
732
+ "description": "How the options are drawn: the circle and the label, each option in a frame, the options sharing a track like a switch, or each option as a button in equal columns. `segmented` suits two or three short options, `button` short options such as languages or sizes; both are set with this attribute only. The `radio.appearance` setting gives the default.",
733
+ "values": [
734
+ { "name": "plain" },
735
+ { "name": "outline" },
736
+ { "name": "segmented" },
737
+ { "name": "button" }
738
+ ]
739
+ }
740
+ ],
741
+ "references": []
742
+ },
743
+ {
744
+ "name": "swell-select-option",
745
+ "description": "One option of a select. It lives only as a direct child of `<swell-select>`, which holds the choice.\n---\n\n\n### **Slots:**\n - _default_ - The label of the option.\n- **start** - Content before the label, such as an icon or an image; an svg is drawn 1px larger than the text, in the quiet color.",
746
+ "attributes": [
747
+ {
748
+ "name": "value",
749
+ "description": "The value the select takes when the option is chosen; the option's label by default.",
750
+ "values": []
751
+ },
752
+ {
753
+ "name": "hint",
754
+ "description": "A second line under the label.",
755
+ "values": []
756
+ },
757
+ {
758
+ "name": "disabled",
759
+ "description": "Disables the option.",
760
+ "values": []
761
+ },
762
+ { "name": "hidden", "values": [] }
763
+ ],
764
+ "references": []
765
+ },
766
+ {
767
+ "name": "swell-select",
768
+ "description": "A select: a field that opens a list of its `<swell-select-option>` children and shows the chosen one, with its start content; an svg there is drawn 4px larger than the text, in the quiet color.\nIt holds the choice and takes part in its form.\nTyping goes to the option whose label starts with the typed text, as on a native select: keys typed within half a second, spaces included, form one search.\n---\n\n\n### **Events:**\n - **input** - The user chose another option.\n- **change** - The user chose another option, after `input`.\n\n### **Slots:**\n - _default_ - The options, `<swell-select-option>` elements; a hidden one stays out of the list and the choice.",
769
+ "attributes": [
770
+ {
771
+ "name": "label",
772
+ "description": "The label of the field. Without it, the select takes its name from its own `aria-label`.",
773
+ "values": []
774
+ },
775
+ {
776
+ "name": "optional",
777
+ "description": "A marker after the label, such as `(optional)`, in the host's language; it joins the select's name.",
778
+ "values": []
779
+ },
780
+ {
781
+ "name": "hint",
782
+ "description": "Help text under the field.",
783
+ "values": []
784
+ },
785
+ {
786
+ "name": "error",
787
+ "description": "The error shown while the select is invalid.",
788
+ "values": []
789
+ },
790
+ {
791
+ "name": "invalid",
792
+ "description": "Marks the select invalid and shows the error.",
793
+ "values": []
794
+ },
795
+ {
796
+ "name": "name",
797
+ "description": "The name sent with the form.",
798
+ "values": []
799
+ },
800
+ {
801
+ "name": "value",
802
+ "description": "The value of the option chosen by default.",
803
+ "values": []
804
+ },
805
+ {
806
+ "name": "placeholder",
807
+ "description": "Text shown while nothing is chosen.",
808
+ "values": []
809
+ },
810
+ {
811
+ "name": "required",
812
+ "description": "The form can't be sent until an option is chosen.",
813
+ "values": []
814
+ },
815
+ {
816
+ "name": "disabled",
817
+ "description": "Disables the select.",
818
+ "values": []
819
+ },
820
+ {
821
+ "name": "autocomplete",
822
+ "description": "The browser's autofill hint, such as `country` or `address-level1`, as on a native select: autofill picks the enabled option whose value or label matches the saved one, which counts as the user's choice and fires `input` and `change`.",
823
+ "values": []
824
+ },
825
+ { "name": "aria-label", "values": [] },
826
+ {
827
+ "name": "appearance",
828
+ "description": "How the field is drawn; the configured setting by default.",
829
+ "values": [
830
+ { "name": "outline" },
831
+ { "name": "filled" },
832
+ { "name": "underline" }
833
+ ]
834
+ },
835
+ {
836
+ "name": "size",
837
+ "description": "How large the field is; `medium` by default. At `xsmall` the label sits above the field.",
838
+ "values": [
839
+ { "name": "xsmall" },
840
+ { "name": "small" },
841
+ { "name": "medium" },
842
+ { "name": "large" },
843
+ { "name": "xlarge" }
844
+ ]
845
+ }
846
+ ],
847
+ "references": []
848
+ },
849
+ {
850
+ "name": "swell-skeleton",
851
+ "description": "A skeleton: a shimmering bar that stands in for content while it loads, such as a delivery option's name and price.\nThe host sets its width through `style` and marks the region it fills with `aria-busy=\"true\"`; the skeleton itself is hidden from screen readers.\nScreen readers don't all announce `aria-busy`, so a host can also say what is loading in a polite message, such as a visually hidden `<swell-status>`.\n---\n\n\n### **Slots:**\n - _default_ - The bars of a card.",
852
+ "attributes": [
853
+ {
854
+ "name": "size",
855
+ "description": "How large the skeleton is: a bar is 4px lower than the text of the size, a card as high as a control; `medium` by default. The bars of a card keep their own size, so give them the card's.",
856
+ "values": [
857
+ { "name": "xsmall" },
858
+ { "name": "small" },
859
+ { "name": "medium" },
860
+ { "name": "large" },
861
+ { "name": "xlarge" }
862
+ ]
863
+ },
864
+ {
865
+ "name": "appearance",
866
+ "description": "`card` draws the empty frame of an option card with its bars at its ends; only the attribute sets it. Without it, the skeleton is a bar.",
867
+ "values": [{ "name": "card" }]
868
+ }
869
+ ],
870
+ "references": []
871
+ },
872
+ {
873
+ "name": "swell-status",
874
+ "description": "A status message: an error, a success or a warning.\nScreen readers announce it when it is added after the page has loaded and when its text or type changes:\neach message goes into a fresh visually hidden region, an alert for danger and a status otherwise.\n---\n\n\n### **Slots:**\n - _default_ - The message.\n- **start** - An icon before the message, drawn 4px larger than the text, or 2px larger than the smaller text of a plain message; it replaces the type's icon and is hidden from screen readers.\n- **end** - An action after the message, such as a `<swell-button size=\"xsmall\">`; it is left out of the announcement.\n\n### **CSS Parts:**\n - **message** - The message box.",
875
+ "attributes": [
876
+ {
877
+ "name": "type",
878
+ "description": "What the message means: its color, icon and how it is announced.",
879
+ "values": [
880
+ { "name": "danger" },
881
+ { "name": "success" },
882
+ { "name": "warning" }
883
+ ]
884
+ },
885
+ {
886
+ "name": "size",
887
+ "description": "How large the message is: its text, padding and icon follow the text of the size; `medium` by default.",
888
+ "values": [
889
+ { "name": "xsmall" },
890
+ { "name": "small" },
891
+ { "name": "medium" },
892
+ { "name": "large" },
893
+ { "name": "xlarge" }
894
+ ]
895
+ },
896
+ {
897
+ "name": "appearance",
898
+ "description": "How the message is drawn; the configured setting by default. `quiet`, for a note, comes from the attribute only.",
899
+ "values": [
900
+ { "name": "filled" },
901
+ { "name": "outline" },
902
+ { "name": "plain" },
903
+ { "name": "quiet" }
904
+ ]
905
+ }
906
+ ],
907
+ "references": []
908
+ },
909
+ {
910
+ "name": "swell-tab",
911
+ "description": "A tab of a `<swell-tabs>` group: its label and its content, shown while it is chosen.\nIn a tab list the group draws the tab and the element is its panel, named by the label; `role=\"tabpanel\"` and that name count as the kit's.\nA step of vertical steps draws its own heading at the group's level, holding a button that opens it, tells whether it is open and controls its content under the heading.\n---\n\n\n### **Methods:**\n \n\n### **Slots:**\n - _default_ - The content, shown while the tab is chosen.\n- **summary** - Vertical steps: content under the heading while the step is closed, such as what a done step holds or what a step that isn't open yet will ask.\n- **end** - Vertical steps: content beside the heading, such as a link that opens a done step or a note.",
912
+ "attributes": [
913
+ {
914
+ "name": "value",
915
+ "description": "The group's value while the tab is chosen; the label by default.",
916
+ "values": []
917
+ },
918
+ {
919
+ "name": "label",
920
+ "description": "The text of the tab or of the step's heading.",
921
+ "values": []
922
+ },
923
+ {
924
+ "name": "done",
925
+ "description": "Marks a step as done: its number becomes a check, and the line to the next step fills.",
926
+ "values": []
927
+ },
928
+ {
929
+ "name": "disabled",
930
+ "description": "The tab can't be chosen, such as a step that isn't open yet.",
931
+ "values": []
932
+ },
933
+ { "name": "hidden", "values": [] }
934
+ ],
935
+ "references": []
936
+ },
937
+ {
938
+ "name": "swell-tabs",
939
+ "description": "Tabs: a set of `<swell-tab>` children, one of them chosen, with its content shown.\nThe group draws a tab list: a tab per child, named by its label. The arrows move between the tabs and Home and End to the ends; underlined and segmented tabs are chosen as the focus moves, steps with Enter or Space.\nVertical steps draw no tab list: each step is a heading with a button that opens it, and Tab moves between the buttons.\n---\n\n\n### **Events:**\n - **change** - The user chose another tab. A listener that cancels the click on a tab, also a framework's handler on the page, keeps the choice.\n- **request** - The user asks for another tab, by a press or an arrow, with its value in `detail.value`, before the group chooses it; it bubbles. Cancelling it keeps the choice. It fires for a disabled tab too, which stays unchosen, so a host can answer a press on a locked step, such as by checking the open one.\n\n### **Methods:**\n \n\n\n\n### **Slots:**\n - _default_ - The tabs, `<swell-tab>` elements.",
940
+ "attributes": [
941
+ {
942
+ "name": "value",
943
+ "description": "The value of the chosen tab; the first tab that isn't disabled by default.",
944
+ "values": []
945
+ },
946
+ { "name": "aria-label", "values": [] },
947
+ {
948
+ "name": "orientation",
949
+ "description": "How steps line up: in a row above the chosen step's content, by default, or one under another, each a heading with its content under it. Other appearances stay in a row.",
950
+ "values": [{ "name": "horizontal" }, { "name": "vertical" }]
951
+ },
952
+ {
953
+ "name": "level",
954
+ "description": "The heading level of vertical steps, 1 to 6; 2 by default.",
955
+ "values": []
956
+ },
957
+ {
958
+ "name": "done-label",
959
+ "description": "The word a screen reader hears after the label of a done step, in the host's language, such as `Completed`; the check shows it to the eye.",
960
+ "values": []
961
+ },
962
+ {
963
+ "name": "appearance",
964
+ "description": "How the tabs are drawn: a line under the chosen tab, a track with a marker under it, or numbered steps joined by lines, each a check once done. `steps` is set with this attribute only; the `tabs.appearance` setting gives the default.",
965
+ "values": [
966
+ { "name": "underline" },
967
+ { "name": "segmented" },
968
+ { "name": "steps" }
969
+ ]
970
+ },
971
+ {
972
+ "name": "size",
973
+ "description": "How large the tabs are: they take the height and the text of a control of the size; `medium` by default.",
974
+ "values": [
975
+ { "name": "xsmall" },
976
+ { "name": "small" },
977
+ { "name": "medium" },
978
+ { "name": "large" },
979
+ { "name": "xlarge" }
980
+ ]
981
+ }
982
+ ],
983
+ "references": []
984
+ },
985
+ {
986
+ "name": "swell-text",
987
+ "description": "Text: a title, a heading, a subheading, strong text, body text, a caption, a footnote or an eyebrow.\n---\n\n\n### **Slots:**\n - _default_ - The text.",
988
+ "attributes": [
989
+ {
990
+ "name": "level",
991
+ "description": "The heading level, 1 to 6: it makes text of any type a heading. A title, a heading and a subheading are headings of level 1, 2 and 3 by default.",
992
+ "values": []
993
+ },
994
+ {
995
+ "name": "variant",
996
+ "description": "Which palette of `color` the text takes its color from: `secondary`, quiet text, or a variant of the host's own; without it, the text color.",
997
+ "values": []
998
+ },
999
+ {
1000
+ "name": "type",
1001
+ "description": "What the text is; body text by default. An eyebrow is uppercase.",
1002
+ "values": [
1003
+ { "name": "title" },
1004
+ { "name": "heading" },
1005
+ { "name": "subheading" },
1006
+ { "name": "strong" },
1007
+ { "name": "body" },
1008
+ { "name": "caption" },
1009
+ { "name": "footnote" },
1010
+ { "name": "eyebrow" }
1011
+ ]
1012
+ }
1013
+ ],
1014
+ "references": []
1015
+ },
1016
+ {
1017
+ "name": "swell-textarea",
1018
+ "description": "A text field for several lines: a native textarea with its label, hint and error, rendered into light DOM.\nEnter adds a line; the field grows only when the user drags its corner.\n---\n\n\n### **Events:**\n - **input** - The value changes as the user types; it bubbles from the native textarea.\n- **change** - The user commits a new value; it bubbles from the native textarea.\n\n### **Methods:**\n - **attributesOf(passed: _string[]_, own: _string[]_): _string[]_** - Every attribute a text field observes, for the subclass's `observedAttributes`.\n\n\n\n### **Slots:**\n - **hint** - Help content under the field in place of the `hint` text; it describes the textarea, and hiding it with `hidden` brings the `hint` text back.\n\n### **CSS Parts:**\n - **frame** - The box that draws the field around the native textarea.",
1019
+ "attributes": [
1020
+ {
1021
+ "name": "label",
1022
+ "description": "The label of the field.",
1023
+ "values": []
1024
+ },
1025
+ {
1026
+ "name": "optional",
1027
+ "description": "A marker after the label, such as `(optional)`, in the host's language; it joins the field's name.",
1028
+ "values": []
1029
+ },
1030
+ {
1031
+ "name": "hint",
1032
+ "description": "Help text under the field.",
1033
+ "values": []
1034
+ },
1035
+ {
1036
+ "name": "error",
1037
+ "description": "The error shown while the field is invalid.",
1038
+ "values": []
1039
+ },
1040
+ {
1041
+ "name": "invalid",
1042
+ "description": "Marks the field invalid and shows the error.",
1043
+ "values": []
1044
+ },
1045
+ { "name": "value", "description": "The default value.", "values": [] },
1046
+ {
1047
+ "name": "appearance",
1048
+ "description": "How the field is drawn; the configured setting by default.",
1049
+ "values": [
1050
+ { "name": "outline" },
1051
+ { "name": "filled" },
1052
+ { "name": "underline" }
1053
+ ]
1054
+ },
1055
+ {
1056
+ "name": "size",
1057
+ "description": "How large the field is; `medium` by default. At `xsmall` the label sits above the field.",
1058
+ "values": [
1059
+ { "name": "xsmall" },
1060
+ { "name": "small" },
1061
+ { "name": "medium" },
1062
+ { "name": "large" },
1063
+ { "name": "xlarge" }
1064
+ ]
1065
+ },
1066
+ {
1067
+ "name": "disabled",
1068
+ "description": "Disables the field.",
1069
+ "values": []
1070
+ },
1071
+ {
1072
+ "name": "readonly",
1073
+ "description": "Makes the field read-only.",
1074
+ "values": []
1075
+ },
1076
+ {
1077
+ "name": "required",
1078
+ "description": "Makes the field required.",
1079
+ "values": []
1080
+ },
1081
+ {
1082
+ "name": "name",
1083
+ "description": "The name sent with the form.",
1084
+ "values": []
1085
+ },
1086
+ {
1087
+ "name": "placeholder",
1088
+ "description": "Text shown while the field is empty.",
1089
+ "values": []
1090
+ },
1091
+ {
1092
+ "name": "autocomplete",
1093
+ "description": "The autofill hint of the native textarea.",
1094
+ "values": []
1095
+ },
1096
+ {
1097
+ "name": "minlength",
1098
+ "description": "The shortest allowed value.",
1099
+ "values": []
1100
+ },
1101
+ {
1102
+ "name": "maxlength",
1103
+ "description": "The longest allowed value.",
1104
+ "values": []
1105
+ },
1106
+ {
1107
+ "name": "rows",
1108
+ "description": "The visible lines; 2 by default.",
1109
+ "values": []
1110
+ }
1111
+ ],
1112
+ "references": []
1113
+ },
1114
+ {
1115
+ "name": "swell-thumbnail",
1116
+ "description": "A thumbnail: a picture, an icon or initials in a small box, such as the photo of a cart line or a person's avatar.\nIt is decoration, hidden from screen readers, with its badge; with `aria-label` it is an image with that name, which then carries what the badge says, such as the quantity.\n`aria-hidden=\"true\"` and `role=\"img\"` count as the kit's; any other value is the host's and stays.\n---\n\n\n### **Slots:**\n - _default_ - An `<img>`, which covers the box, an svg icon, or initials.\n- **badge** - A `<swell-badge>` over the top end corner, such as the quantity of a cart line.",
1117
+ "attributes": [
1118
+ { "name": "aria-label", "values": [] },
1119
+ {
1120
+ "name": "variant",
1121
+ "description": "Which palette of `color` the box takes its colors from: `secondary`, the quiet colors with a border, as for a product without a photo, or a variant of the host's own; without it, the accent, as for an avatar.",
1122
+ "values": []
1123
+ },
1124
+ {
1125
+ "name": "size",
1126
+ "description": "How large the box is: the height of a control of the size; `medium` by default.",
1127
+ "values": [
1128
+ { "name": "xsmall" },
1129
+ { "name": "small" },
1130
+ { "name": "medium" },
1131
+ { "name": "large" },
1132
+ { "name": "xlarge" }
1133
+ ]
1134
+ },
1135
+ {
1136
+ "name": "shape",
1137
+ "description": "Rounds the box fully, as for an avatar.",
1138
+ "values": [{ "name": "circle" }]
1139
+ }
1140
+ ],
1141
+ "references": []
1142
+ },
1143
+ {
1144
+ "name": "swell-ui",
1145
+ "description": "An area of the page with token values of its own, such as an order summary in the colors of the brand.\nThe host registers the area's configuration with `configure(config, id)`; its tokens and theme apply to everything inside the element, the host's own markup included, and every value it leaves out comes from the page.\nThe element keeps the layout of its content: it renders nothing of its own.\n---\n",
1146
+ "attributes": [
1147
+ {
1148
+ "name": "config",
1149
+ "description": "The id of the area's configuration. An id without a configuration yet applies once the host registers one.",
1150
+ "values": []
1151
+ }
1152
+ ],
1153
+ "references": []
1154
+ }
1155
+ ]
1156
+ }