@nysds/components 1.13.0 → 1.13.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 (62) hide show
  1. package/custom-elements.json +10506 -0
  2. package/dist/.vscode/vscode.css-custom-data.json +47 -1
  3. package/dist/.vscode/vscode.html-custom-data.json +1248 -275
  4. package/dist/custom-elements.json +829 -202
  5. package/dist/nys-stepper/newsletter.html +4 -0
  6. package/dist/nys-stepper/personal.html +6 -0
  7. package/dist/nys-stepper/survey.html +5 -0
  8. package/dist/nys-stepper/team.html +6 -0
  9. package/dist/nysds.es.js +623 -559
  10. package/dist/nysds.es.js.map +1 -1
  11. package/dist/nysds.js +59 -47
  12. package/dist/nysds.js.map +1 -1
  13. package/dist/packages/mcp-server/src/index.d.ts +8 -0
  14. package/dist/packages/mcp-server/src/lib/cem-parser.d.ts +95 -0
  15. package/dist/packages/mcp-server/src/lib/search.d.ts +19 -0
  16. package/dist/packages/mcp-server/src/lib/token-parser.d.ts +139 -0
  17. package/dist/packages/mcp-server/src/prompts/nysds-mode.d.ts +7 -0
  18. package/dist/packages/mcp-server/src/resources/components.d.ts +11 -0
  19. package/dist/packages/mcp-server/src/resources/guides.d.ts +10 -0
  20. package/dist/packages/mcp-server/src/resources/index.d.ts +7 -0
  21. package/dist/packages/mcp-server/src/resources/tokens.d.ts +16 -0
  22. package/dist/packages/mcp-server/src/server.d.ts +10 -0
  23. package/dist/packages/mcp-server/src/tools/component-tools.d.ts +13 -0
  24. package/dist/packages/mcp-server/src/tools/index.d.ts +7 -0
  25. package/dist/packages/mcp-server/src/tools/token-tools.d.ts +16 -0
  26. package/dist/packages/mcp-server/src/tools/validation-tools.d.ts +11 -0
  27. package/dist/packages/nys-accordion/src/nys-accordion.d.ts +25 -8
  28. package/dist/packages/nys-accordion/src/nys-accordionitem.d.ts +19 -7
  29. package/dist/packages/nys-alert/src/nys-alert.d.ts +32 -9
  30. package/dist/packages/nys-avatar/src/nys-avatar.d.ts +26 -7
  31. package/dist/packages/nys-backtotop/src/nys-backtotop.d.ts +17 -7
  32. package/dist/packages/nys-badge/src/nys-badge.d.ts +30 -4
  33. package/dist/packages/nys-button/src/nys-button.d.ts +126 -9
  34. package/dist/packages/nys-checkbox/src/nys-checkbox.d.ts +43 -11
  35. package/dist/packages/nys-checkbox/src/nys-checkboxgroup.d.ts +33 -12
  36. package/dist/packages/nys-divider/src/nys-divider.d.ts +20 -2
  37. package/dist/packages/nys-errormessage/src/nys-errormessage.d.ts +10 -3
  38. package/dist/packages/nys-fileinput/src/nys-fileinput.d.ts +37 -11
  39. package/dist/packages/nys-fileinput/src/nys-fileitem.d.ts +16 -2
  40. package/dist/packages/nys-globalfooter/src/nys-globalfooter.d.ts +16 -7
  41. package/dist/packages/nys-globalheader/src/nys-globalheader.d.ts +16 -10
  42. package/dist/packages/nys-icon/src/nys-icon.d.ts +25 -3
  43. package/dist/packages/nys-label/src/nys-label.d.ts +15 -3
  44. package/dist/packages/nys-modal/src/nys-modal.d.ts +30 -7
  45. package/dist/packages/nys-pagination/src/nys-pagination.d.ts +17 -5
  46. package/dist/packages/nys-radiobutton/src/nys-radiobutton.d.ts +35 -13
  47. package/dist/packages/nys-radiobutton/src/nys-radiogroup.d.ts +33 -8
  48. package/dist/packages/nys-select/src/nys-option.d.ts +24 -0
  49. package/dist/packages/nys-select/src/nys-select.d.ts +48 -12
  50. package/dist/packages/nys-skipnav/src/nys-skipnav.d.ts +19 -6
  51. package/dist/packages/nys-stepper/src/index.d.ts +2 -0
  52. package/dist/packages/nys-stepper/src/nys-step.d.ts +37 -0
  53. package/dist/packages/nys-stepper/src/nys-stepper.d.ts +48 -0
  54. package/dist/packages/nys-stepper/src/nys-stepper.figma.d.ts +1 -0
  55. package/dist/packages/nys-table/src/nys-table.d.ts +2 -1
  56. package/dist/packages/nys-textarea/src/nys-textarea.d.ts +51 -8
  57. package/dist/packages/nys-textinput/src/nys-textinput.d.ts +64 -9
  58. package/dist/packages/nys-toggle/src/nys-toggle.d.ts +35 -6
  59. package/dist/packages/nys-tooltip/src/nys-tooltip.d.ts +24 -11
  60. package/dist/packages/nys-unavfooter/src/nys-unavfooter.d.ts +12 -5
  61. package/dist/packages/nys-unavheader/src/nys-unavheader.d.ts +25 -7
  62. package/package.json +12 -10
@@ -4,41 +4,110 @@
4
4
  "tags": [
5
5
  {
6
6
  "name": "nys-accordion",
7
- "description": "`<nys-accordion>` groups one or more `<nys-accordionitem>` elements.\n\nFeatures:\n- Optionally enforces single-expanded-item behavior via `singleSelect`.\n- Propagates shared visual `bordered` property to child items.\n- Generates a stable unique identifier if none is provided.\n---\n\n\n### **Events:**\n - **nys-accordionitem-toggle** - Fired when a child `<nys-accordionitem>` is toggled. Event detail includes `{ id: string, heading: string, expanded: boolean }`.\n\n### **Slots:**\n - **default** - Place one or more `<nys-accordionitem>` components here.",
7
+ "description": "Container for accordion items with optional single-select and bordered styling.\n---\n\n\n### **Slots:**\n - _default_ - Default slot for `nys-accordionitem` elements.",
8
8
  "attributes": [
9
- { "name": "id", "values": [] },
10
- { "name": "singleSelect", "values": [] },
11
- { "name": "bordered", "values": [] }
9
+ {
10
+ "name": "id",
11
+ "description": "Unique identifier. Auto-generated if not provided.",
12
+ "values": []
13
+ },
14
+ {
15
+ "name": "singleSelect",
16
+ "description": "Only one item can be expanded at a time. Expanding one collapses others.",
17
+ "values": []
18
+ },
19
+ {
20
+ "name": "bordered",
21
+ "description": "Adds borders around each accordion item. Propagates to all children.",
22
+ "values": []
23
+ }
12
24
  ],
13
25
  "references": []
14
26
  },
15
27
  {
16
28
  "name": "nys-accordionitem",
17
- "description": "`<nys-accordionitem>` represents a single collapsible item inside a `<nys-accordion>`.\n---\n\n\n### **Events:**\n - **nys-accordionitem-toggle** - Fired when the item is expanded or collapsed.\n\n### **Slots:**\n - _default_ - Default slot for the content inside the accordion panel.",
29
+ "description": "Collapsible panel for use within nys-accordion with keyboard support.\n---\n\n\n### **Events:**\n - **nys-accordionitem-toggle** - Fired when expanded state changes. Detail: `{id, heading, expanded}`.\n\n### **Slots:**\n - _default_ - Default slot for panel content shown when expanded.",
18
30
  "attributes": [
19
- { "name": "id", "values": [] },
20
- { "name": "heading", "values": [] },
21
- { "name": "expanded", "values": [] },
22
- { "name": "bordered", "values": [] }
31
+ {
32
+ "name": "id",
33
+ "description": "Unique identifier. Auto-generated if not provided.",
34
+ "values": []
35
+ },
36
+ {
37
+ "name": "heading",
38
+ "description": "Heading text displayed in the clickable toggle button.",
39
+ "values": []
40
+ },
41
+ {
42
+ "name": "expanded",
43
+ "description": "Whether the content panel is visible. Toggle via click or keyboard.",
44
+ "values": []
45
+ },
46
+ {
47
+ "name": "bordered",
48
+ "description": "Adds border styling. Set by parent `nys-accordion`, not directly.",
49
+ "values": []
50
+ }
23
51
  ],
24
52
  "references": []
25
53
  },
26
54
  {
27
55
  "name": "nys-alert",
28
- "description": "`<nys-alert>` renders an informational, success, warning, or error alert.\n---\n\n\n### **Events:**\n - **nys-close** - Fired when alert is dismissed (manual or timeout).\n\n### **Slots:**\n - _default_ - Default slot for additional alert content.",
56
+ "description": "Alert for contextual feedback with semantic types and live region support.\n---\n\n\n### **Events:**\n - **nys-close** - Fired when alert is dismissed. Detail: `{id, type, label}`.\n\n### **Slots:**\n - _default_ - Default slot for custom body content. Overrides `text` prop when provided.",
29
57
  "attributes": [
30
- { "name": "id", "values": [] },
31
- { "name": "heading", "values": [] },
32
- { "name": "icon", "values": [] },
33
- { "name": "dismissible", "values": [] },
34
- { "name": "duration", "values": [] },
35
- { "name": "text", "values": [] },
36
- { "name": "primaryAction", "values": [] },
37
- { "name": "secondaryAction", "values": [] },
38
- { "name": "primaryLabel", "values": [] },
39
- { "name": "secondaryLabel", "values": [] },
58
+ {
59
+ "name": "id",
60
+ "description": "Unique identifier. Auto-generated if not provided.",
61
+ "values": []
62
+ },
63
+ {
64
+ "name": "heading",
65
+ "description": "Bold heading text displayed at the top of the alert.",
66
+ "values": []
67
+ },
68
+ {
69
+ "name": "icon",
70
+ "description": "Custom icon name. Defaults to type-appropriate icon if not set.",
71
+ "values": []
72
+ },
73
+ {
74
+ "name": "dismissible",
75
+ "description": "Shows close button allowing users to dismiss the alert.",
76
+ "values": []
77
+ },
78
+ {
79
+ "name": "duration",
80
+ "description": "Auto-dismiss after specified milliseconds. Set to 0 to disable.",
81
+ "values": []
82
+ },
83
+ {
84
+ "name": "text",
85
+ "description": "Body text content. Ignored if slot content is provided.",
86
+ "values": []
87
+ },
88
+ {
89
+ "name": "primaryAction",
90
+ "description": "URL for the primary action link.",
91
+ "values": []
92
+ },
93
+ {
94
+ "name": "secondaryAction",
95
+ "description": "URL for the secondary action link.",
96
+ "values": []
97
+ },
98
+ {
99
+ "name": "primaryLabel",
100
+ "description": "Label text for primary action link.",
101
+ "values": []
102
+ },
103
+ {
104
+ "name": "secondaryLabel",
105
+ "description": "Label text for secondary action link.",
106
+ "values": []
107
+ },
40
108
  {
41
109
  "name": "type",
110
+ "description": "Semantic alert type affecting color and ARIA role. `danger`/`emergency` use assertive live region.",
42
111
  "values": [
43
112
  { "name": "" },
44
113
  { "name": "base" },
@@ -54,38 +123,91 @@
54
123
  },
55
124
  {
56
125
  "name": "nys-avatar",
57
- "description": "`<nys-avatar>` displays a user avatar as an image, initials, or icon.\n---\n\n\n### **Slots:**\n - _default_ - Default slot for custom icon content. Fallback icon is used if slot is empty. Features: - Computes foreground color for sufficient contrast based on background. - Supports interactive avatars with button role. - Fallback to icon when image or initials are missing. - Lazy loading for performance optimization.",
126
+ "description": "User avatar with image, initials, or icon fallback and contrast-aware colors.\n---\n\n\n### **Slots:**\n - _default_ - Custom icon content. Overrides default icon when no image or initials.",
58
127
  "attributes": [
59
- { "name": "id", "values": [] },
60
- { "name": "ariaLabel", "values": [] },
61
- { "name": "image", "values": [] },
62
- { "name": "initials", "values": [] },
63
- { "name": "icon", "values": [] },
64
- { "name": "color", "values": [] },
65
- { "name": "interactive", "values": [] },
66
- { "name": "disabled", "values": [] },
67
- { "name": "lazy", "values": [] }
128
+ {
129
+ "name": "id",
130
+ "description": "Unique identifier. Auto-generated if not provided.",
131
+ "values": []
132
+ },
133
+ {
134
+ "name": "ariaLabel",
135
+ "description": "Accessible label for screen readers. Required when no image `alt` is available.",
136
+ "values": []
137
+ },
138
+ {
139
+ "name": "image",
140
+ "description": "Image URL. Takes priority over initials and icon.",
141
+ "values": []
142
+ },
143
+ {
144
+ "name": "initials",
145
+ "description": "1-2 character initials. Used when no image is provided.",
146
+ "values": []
147
+ },
148
+ {
149
+ "name": "icon",
150
+ "description": "Custom icon name. Falls back to `account_circle` if not set.",
151
+ "values": []
152
+ },
153
+ {
154
+ "name": "color",
155
+ "description": "Background color. Foreground auto-adjusts for contrast. Accepts CSS values or variables.",
156
+ "values": []
157
+ },
158
+ {
159
+ "name": "interactive",
160
+ "description": "Makes avatar clickable with button role and focus ring.",
161
+ "values": []
162
+ },
163
+ {
164
+ "name": "disabled",
165
+ "description": "Prevents interaction when `interactive` is true.",
166
+ "values": []
167
+ },
168
+ {
169
+ "name": "lazy",
170
+ "description": "Enables lazy loading for the image.",
171
+ "values": []
172
+ }
68
173
  ],
69
174
  "references": []
70
175
  },
71
176
  {
72
177
  "name": "nys-backtotop",
73
- "description": "`<nys-backtotop>` renders a button that scrolls the page to the top.\n\nFeatures:\n- Automatically appears after scrolling past 1.5 viewport heights\n if the page is at least 4 screens tall.\n- Adapts to mobile screens (renders as a circle button when narrow).\n- Can be explicitly shown with the `visible` attribute.\n---\n\n\n### **Events:**\n - **nys-click** - Fired when the button is clicked (scrolls page to top).",
178
+ "description": "Floating back-to-top button with auto-show behavior and smooth scroll.\n---\n",
74
179
  "attributes": [
75
- { "name": "position", "values": [] },
76
- { "name": "visible", "values": [] }
180
+ {
181
+ "name": "position",
182
+ "description": "Horizontal position: `left` or `right`.",
183
+ "values": []
184
+ },
185
+ {
186
+ "name": "visible",
187
+ "description": "Force button visibility. Overrides auto-show scroll behavior.",
188
+ "values": []
189
+ }
77
190
  ],
78
191
  "references": []
79
192
  },
80
193
  {
81
194
  "name": "nys-badge",
82
- "description": "`<nys-badge>` displays a badge with optional prefix/suffix icons and labels.\n\nFeatures:\n- Conveys an intent (`neutral`, `error`, `success`, `warning`) which affects default icons and styling.\n- Supports custom prefix and suffix icons.\n---\n",
195
+ "description": "Compact label for status, counts, or categorization with semantic styling.\n---\n",
83
196
  "attributes": [
84
- { "name": "id", "values": [] },
85
- { "name": "name", "values": [] },
86
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] },
197
+ { "name": "id", "description": "Unique identifier.", "values": [] },
198
+ {
199
+ "name": "name",
200
+ "description": "Name attribute for form association.",
201
+ "values": []
202
+ },
203
+ {
204
+ "name": "size",
205
+ "description": "Badge size: `sm` (smaller text) or `md` (default).",
206
+ "values": [{ "name": "sm" }, { "name": "md" }]
207
+ },
87
208
  {
88
209
  "name": "intent",
210
+ "description": "Semantic intent affecting color: `neutral`, `error`, `success`, or `warning`.",
89
211
  "values": [
90
212
  { "name": "" },
91
213
  { "name": "neutral" },
@@ -94,8 +216,20 @@
94
216
  { "name": "warning" }
95
217
  ]
96
218
  },
97
- { "name": "prefixLabel", "values": [] },
98
- { "name": "label", "values": [] },
219
+ {
220
+ "name": "prefixLabel",
221
+ "description": "Secondary label displayed before the main label.",
222
+ "values": []
223
+ },
224
+ {
225
+ "name": "label",
226
+ "description": "Primary label text displayed in the badge.",
227
+ "values": []
228
+ },
229
+ {
230
+ "name": "variant",
231
+ "values": [{ "name": "strong" }, { "name": "\"\"" }]
232
+ },
99
233
  { "name": "prefixicon", "values": [] },
100
234
  { "name": "suffixicon", "values": [] }
101
235
  ],
@@ -103,17 +237,31 @@
103
237
  },
104
238
  {
105
239
  "name": "nys-button",
106
- "description": "`<nys-button>` is a versatile button component supporting:\n- Multiple variants (`filled`, `outline`, `ghost`, `text`)\n- Sizes (`sm`, `md`, `lg`) and full-width layout\n- Icons (prefix, suffix, or circle) and optional labels\n- Native `<button>` or link `<a>` behavior with form association\n- Keyboard and accessibility support (`aria-label`, `aria-controls`, `aria-description`)\n---\n\n\n### **Events:**\n - **nys-focus** - Fired when button receives focus\n- **nys-blur** - Fired when button loses focus\n- **nys-click** - Fired on button click",
240
+ "description": "Button for actions and CTAs with variants, sizes, and icon support.\n---\n\n\n### **Events:**\n - **nys-focus** - Fired when the button receives focus.\n- **nys-blur** - Fired when the button loses focus.\n- **nys-click** - Fired when the button is clicked (mouse or keyboard). Not fired when disabled.\n\n### **Slots:**\n - **prefix-icon** - Icon before label. Not shown for `text` variant.\n- **suffix-icon** - Icon after label. Not shown for `text` variant.\n- **circle-icon** - Icon for circle mode. Overrides `icon` prop.\n\n### **CSS Properties:**\n - **--nys-button-color** - Text color of the button label. _(default: undefined)_\n- **--nys-button-color--hover** - Text color when hovered. _(default: undefined)_\n- **--nys-button-color--active** - Text color when active/pressed. _(default: undefined)_\n- **--nys-button-background-color** - Background color of the button. _(default: undefined)_\n- **--nys-button-background-color--hover** - Background color when hovered. _(default: undefined)_\n- **--nys-button-background-color--active** - Background color when active/pressed. _(default: undefined)_\n- **--nys-button-border-color** - Border color of the button. _(default: undefined)_\n- **--nys-button-border-color--hover** - Border color when hovered. _(default: undefined)_\n- **--nys-button-border-color--active** - Border color when active/pressed. _(default: undefined)_",
107
241
  "attributes": [
108
- { "name": "id", "values": [] },
109
- { "name": "name", "values": [] },
242
+ {
243
+ "name": "id",
244
+ "description": "Unique identifier. Auto-generated if not provided.",
245
+ "values": []
246
+ },
247
+ {
248
+ "name": "name",
249
+ "description": "Name for form submission.",
250
+ "values": []
251
+ },
110
252
  {
111
253
  "name": "size",
254
+ "description": "Button height: `sm` (40px) for dense UIs, `md` (48px, default) for standard use, `lg` (56px) for prominent CTAs.",
112
255
  "values": [{ "name": "sm" }, { "name": "md" }, { "name": "lg" }]
113
256
  },
114
- { "name": "fullWidth", "values": [] },
257
+ {
258
+ "name": "fullWidth",
259
+ "description": "Expands button to fill container width. Use for mobile layouts or stacked button groups.",
260
+ "values": []
261
+ },
115
262
  {
116
263
  "name": "variant",
264
+ "description": "Visual style: `filled` for primary (one per section), `outline` for secondary, `ghost` for tertiary, `text` for inline actions. Avoid `text` for navigation.",
117
265
  "values": [
118
266
  { "name": "" },
119
267
  { "name": "filled" },
@@ -122,20 +270,69 @@
122
270
  { "name": "text" }
123
271
  ]
124
272
  },
125
- { "name": "inverted", "values": [] },
126
- { "name": "label", "values": [] },
127
- { "name": "ariaLabel", "values": [] },
128
- { "name": "ariaControls", "values": [] },
129
- { "name": "prefixIcon", "values": [] },
130
- { "name": "suffixIcon", "values": [] },
131
- { "name": "circle", "values": [] },
132
- { "name": "icon", "values": [] },
133
- { "name": "disabled", "values": [] },
134
- { "name": "form", "values": [] },
135
- { "name": "value", "values": [] },
136
- { "name": "ariaDescription", "values": [] },
273
+ {
274
+ "name": "inverted",
275
+ "description": "Adjusts colors for dark backgrounds.",
276
+ "values": []
277
+ },
278
+ {
279
+ "name": "label",
280
+ "description": "Visible button text. Use sentence case, action-oriented text (e.g., \"Save Draft\"). Becomes aria-label in `circle` mode.",
281
+ "values": []
282
+ },
283
+ {
284
+ "name": "ariaLabel",
285
+ "description": "Screen reader label. Required for icon-only buttons if `label` is not set.",
286
+ "values": []
287
+ },
288
+ {
289
+ "name": "ariaControls",
290
+ "description": "ID of controlled element (e.g., dropdown or modal). Sets `aria-controls`.",
291
+ "values": []
292
+ },
293
+ {
294
+ "name": "prefixIcon",
295
+ "description": "Material Symbol icon before label. Not shown for `text` variant or `circle` mode.",
296
+ "values": []
297
+ },
298
+ {
299
+ "name": "suffixIcon",
300
+ "description": "Material Symbol icon after label. Use `chevron_down` for dropdowns, `open_in_new` for external links. Not shown for `text` variant or `circle` mode.",
301
+ "values": []
302
+ },
303
+ {
304
+ "name": "circle",
305
+ "description": "Renders circular icon-only button. Requires `icon` prop. `label` becomes aria-label.",
306
+ "values": []
307
+ },
308
+ {
309
+ "name": "icon",
310
+ "description": "Icon for circle mode. Required when `circle` is true. Scales with size (sm=24px, md=32px, lg=40px).",
311
+ "values": []
312
+ },
313
+ {
314
+ "name": "disabled",
315
+ "description": "Prevents interaction. Avoid disabling without explanation—show validation errors instead.",
316
+ "values": []
317
+ },
318
+ {
319
+ "name": "form",
320
+ "description": "Form `id` to associate with. Use when button is outside the form element.",
321
+ "values": []
322
+ },
323
+ {
324
+ "name": "value",
325
+ "description": "Value submitted with form data. Only used when `type=\"submit\"`.",
326
+ "values": []
327
+ },
328
+ {
329
+ "name": "ariaDescription",
330
+ "description": "Additional screen reader description. Sets `aria-description`.",
331
+ "values": []
332
+ },
137
333
  {
138
334
  "name": "type",
335
+ "description": "Form behavior: `button` (default, no form action), `submit` (submits form), `reset` (resets form). Always set explicitly to avoid unintended submissions.",
139
336
  "values": [
140
337
  { "name": "" },
141
338
  { "name": "submit" },
@@ -143,9 +340,14 @@
143
340
  { "name": "button" }
144
341
  ]
145
342
  },
146
- { "name": "href", "values": [] },
343
+ {
344
+ "name": "href",
345
+ "description": "URL to navigate to. Renders as `<a>` tag. Omit for action buttons.",
346
+ "values": []
347
+ },
147
348
  {
148
349
  "name": "target",
350
+ "description": "Link target: `_self` (same tab), `_blank` (new tab—add `suffixIcon=\"open_in_new\"`), `_parent`, `_top`, or frame name.",
149
351
  "values": [
150
352
  { "name": "" },
151
353
  { "name": "_self" },
@@ -160,44 +362,160 @@
160
362
  },
161
363
  {
162
364
  "name": "nys-checkbox",
163
- "description": "`<nys-checkbox>` is an accessible, form-associated checkbox component.\nCan be used standalone or within a `<nys-checkboxgroup>`.\n\nFeatures:\n- Supports labels, descriptions, and tooltips\n- Displays error messages with `showError` and `errorMessage`\n- Keyboard interaction with spacebar toggle\n- Form integration via ElementInternals (`checked` value submitted)\n---\n\n\n### **Events:**\n - **nys-change** - Fired when checkbox value changes\n- **nys-focus** - Fired on focus\n- **nys-blur** - Fired on blur\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Slot to provide a custom description element",
365
+ "description": "Checkbox for binary choices or multi-select options.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when checked state changes. Detail: `{id, checked, name, value}`.\n- **nys-focus** - Fired when checkbox gains focus.\n- **nys-blur** - Fired when checkbox loses focus.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Custom HTML description content.",
164
366
  "attributes": [
165
- { "name": "checked", "values": [] },
166
- { "name": "disabled", "values": [] },
167
- { "name": "required", "values": [] },
168
- { "name": "label", "values": [] },
169
- { "name": "description", "values": [] },
170
- { "name": "id", "values": [] },
171
- { "name": "name", "values": [] },
172
- { "name": "value", "values": [] },
173
- { "name": "form", "values": [] },
174
- { "name": "showError", "values": [] },
175
- { "name": "errorMessage", "values": [] },
176
- { "name": "groupExist", "values": [] },
177
- { "name": "tile", "values": [] },
178
- { "name": "inverted", "values": [] },
179
- { "name": "tooltip", "values": [] },
180
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
367
+ {
368
+ "name": "checked",
369
+ "description": "Whether checkbox is checked.",
370
+ "values": []
371
+ },
372
+ {
373
+ "name": "disabled",
374
+ "description": "Prevents interaction.",
375
+ "values": []
376
+ },
377
+ {
378
+ "name": "required",
379
+ "description": "Marks as required. Validates that checkbox is checked.",
380
+ "values": []
381
+ },
382
+ {
383
+ "name": "label",
384
+ "description": "Visible label text. Required for accessibility.",
385
+ "values": []
386
+ },
387
+ {
388
+ "name": "description",
389
+ "description": "Helper text below label. Use slot for custom HTML.",
390
+ "values": []
391
+ },
392
+ {
393
+ "name": "id",
394
+ "description": "Unique identifier. Auto-generated if not provided.",
395
+ "values": []
396
+ },
397
+ {
398
+ "name": "name",
399
+ "description": "Name for form submission. Use same name for grouped checkboxes.",
400
+ "values": []
401
+ },
402
+ {
403
+ "name": "value",
404
+ "description": "Value submitted when checked.",
405
+ "values": []
406
+ },
407
+ {
408
+ "name": "form",
409
+ "description": "Form `id` to associate with when checkbox is outside form element.",
410
+ "values": []
411
+ },
412
+ {
413
+ "name": "showError",
414
+ "description": "Shows error message when true.",
415
+ "values": []
416
+ },
417
+ {
418
+ "name": "errorMessage",
419
+ "description": "Error message text. Shown only when `showError` is true.",
420
+ "values": []
421
+ },
422
+ {
423
+ "name": "groupExist",
424
+ "description": "Internal: Set by parent checkboxgroup. Do not set manually.",
425
+ "values": []
426
+ },
427
+ {
428
+ "name": "tile",
429
+ "description": "Renders as tile with larger clickable area. Apply to group for consistency.",
430
+ "values": []
431
+ },
432
+ {
433
+ "name": "inverted",
434
+ "description": "Adjusts colors for dark backgrounds.",
435
+ "values": []
436
+ },
437
+ {
438
+ "name": "tooltip",
439
+ "description": "Tooltip text shown on hover/focus of info icon.",
440
+ "values": []
441
+ },
442
+ {
443
+ "name": "size",
444
+ "description": "Checkbox size: `sm` (24px) or `md` (32px, default).",
445
+ "values": [{ "name": "sm" }, { "name": "md" }]
446
+ }
181
447
  ],
182
448
  "references": []
183
449
  },
184
450
  {
185
451
  "name": "nys-checkboxgroup",
186
- "description": "`<nys-checkboxgroup>` is a form-associated container for multiple `<nys-checkbox>` components.\nHandles grouping, validation, required constraints, form submission, and accessibility.\n\nFeatures:\n- Manages multiple checkboxes as a single form field\n- Supports required/optional flags and error messages\n- Propagates size, tile, and inverted styling to child checkboxes\n- Keyboard and screen reader accessible via fieldset/legend\n---\n\n\n### **Events:**\n - **nys-change** - Fired when any child checkbox changes\n- **nys-focus** - Fired when any child checkbox gains focus\n- **nys-blur** - Fired when any child checkbox loses focus\n\n### **Slots:**\n - **default** - Slot for child `<nys-checkbox>` elements\n- **description** - Slot for custom description content",
452
+ "description": "Container for grouping checkboxes as a single form control.\n---\n\n\n### **Slots:**\n - _default_ - Default slot for `nys-checkbox` elements.\n- **description** - Custom HTML description content.",
187
453
  "attributes": [
188
- { "name": "id", "values": [] },
189
- { "name": "name", "values": [] },
190
- { "name": "required", "values": [] },
191
- { "name": "optional", "values": [] },
192
- { "name": "showError", "values": [] },
193
- { "name": "errorMessage", "values": [] },
194
- { "name": "label", "values": [] },
195
- { "name": "description", "values": [] },
196
- { "name": "tile", "values": [] },
197
- { "name": "tooltip", "values": [] },
198
- { "name": "inverted", "values": [] },
199
- { "name": "form", "values": [] },
200
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
454
+ {
455
+ "name": "id",
456
+ "description": "Unique identifier. Auto-generated if not provided.",
457
+ "values": []
458
+ },
459
+ {
460
+ "name": "name",
461
+ "description": "Name for form submission. Set on group, not individual checkboxes.",
462
+ "values": []
463
+ },
464
+ {
465
+ "name": "required",
466
+ "description": "Requires at least one checkbox to be checked.",
467
+ "values": []
468
+ },
469
+ {
470
+ "name": "optional",
471
+ "description": "Shows \"Optional\" flag.",
472
+ "values": []
473
+ },
474
+ {
475
+ "name": "showError",
476
+ "description": "Shows error message when true.",
477
+ "values": []
478
+ },
479
+ {
480
+ "name": "errorMessage",
481
+ "description": "Error message text. Shown only when `showError` is true.",
482
+ "values": []
483
+ },
484
+ {
485
+ "name": "label",
486
+ "description": "Visible label text for the group.",
487
+ "values": []
488
+ },
489
+ {
490
+ "name": "description",
491
+ "description": "Helper text below label. Use slot for custom HTML.",
492
+ "values": []
493
+ },
494
+ {
495
+ "name": "tile",
496
+ "description": "Renders all checkboxes as tiles with larger clickable area.",
497
+ "values": []
498
+ },
499
+ {
500
+ "name": "tooltip",
501
+ "description": "Tooltip text shown on hover/focus of info icon.",
502
+ "values": []
503
+ },
504
+ {
505
+ "name": "inverted",
506
+ "description": "Adjusts colors for dark backgrounds. Applied to all children.",
507
+ "values": []
508
+ },
509
+ {
510
+ "name": "form",
511
+ "description": "Form `id` to associate with. Applied to all children.",
512
+ "values": []
513
+ },
514
+ {
515
+ "name": "size",
516
+ "description": "Checkbox size for all children: `sm` (24px) or `md` (32px, default).",
517
+ "values": [{ "name": "sm" }, { "name": "md" }]
518
+ }
201
519
  ],
202
520
  "references": []
203
521
  },
@@ -231,50 +549,133 @@
231
549
  },
232
550
  {
233
551
  "name": "nys-divider",
234
- "description": "`<nys-divider>` renders a horizontal rule `<hr>` element with optional styling.\nCan be inverted for dark backgrounds.\n---\n",
235
- "attributes": [{ "name": "inverted", "values": [] }],
552
+ "description": "Horizontal divider for visual separation of content sections.\n---\n",
553
+ "attributes": [
554
+ {
555
+ "name": "inverted",
556
+ "description": "Adjusts colors for dark backgrounds.",
557
+ "values": []
558
+ }
559
+ ],
236
560
  "references": []
237
561
  },
238
562
  {
239
563
  "name": "nys-errormessage",
240
- "description": "THIS IS A PRIVATE COMPONENT!\n`<nys-errormessage>` displays an error message for form elements.\nCan optionally show a divider and supports native form validation messages.\n---\n",
564
+ "description": "Internal error message display with icon and ARIA alert support.\n---\n",
241
565
  "attributes": [
242
- { "name": "showError", "values": [] },
243
- { "name": "errorMessage", "values": [] },
244
- { "name": "showDivider", "values": [] }
566
+ {
567
+ "name": "showError",
568
+ "description": "Whether to display the error message.",
569
+ "values": []
570
+ },
571
+ {
572
+ "name": "errorMessage",
573
+ "description": "Error text to display. Falls back to native validation message if available.",
574
+ "values": []
575
+ },
576
+ {
577
+ "name": "showDivider",
578
+ "description": "Shows a divider line above the error message.",
579
+ "values": []
580
+ }
245
581
  ],
246
582
  "references": []
247
583
  },
248
584
  {
249
585
  "name": "nys-fileinput",
250
- "description": "`<nys-fileinput>` provides accessible file selection with optional\ndrag-and-drop support, progress tracking, validation, and form submission.\n\nFeatures:\n- Supports single or multiple file uploads\n- Optional drag-and-drop dropzone\n- File type validation and upload progress\n- Form-associated with native validation behavior\n- Keyboard and screen reader accessible\n---\n\n\n### **Events:**\n - **nys-change** - Fired when files are added or removed\n\n### **Slots:**\n - **description** - Custom description content under the label",
586
+ "description": "File input with drag-and-drop, validation, and progress tracking.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when files are added or removed. Detail: `{id, files}`.\n\n### **Slots:**\n - **description** - Custom HTML description content.",
251
587
  "attributes": [
252
- { "name": "id", "values": [] },
253
- { "name": "name", "values": [] },
254
- { "name": "label", "values": [] },
255
- { "name": "description", "values": [] },
256
- { "name": "multiple", "values": [] },
257
- { "name": "form", "values": [] },
258
- { "name": "tooltip", "values": [] },
259
- { "name": "accept", "values": [] },
260
- { "name": "disabled", "values": [] },
261
- { "name": "required", "values": [] },
262
- { "name": "optional", "values": [] },
263
- { "name": "showError", "values": [] },
264
- { "name": "errorMessage", "values": [] },
265
- { "name": "dropzone", "values": [] },
266
- { "name": "width", "values": [{ "name": "lg" }, { "name": "full" }] },
267
- { "name": "inverted", "values": [] }
588
+ {
589
+ "name": "id",
590
+ "description": "Unique identifier. Auto-generated if not provided.",
591
+ "values": []
592
+ },
593
+ {
594
+ "name": "name",
595
+ "description": "Name for form submission.",
596
+ "values": []
597
+ },
598
+ { "name": "label", "description": "Visible label text.", "values": [] },
599
+ {
600
+ "name": "description",
601
+ "description": "Helper text below label. Use slot for custom HTML.",
602
+ "values": []
603
+ },
604
+ {
605
+ "name": "multiple",
606
+ "description": "Allows selecting multiple files.",
607
+ "values": []
608
+ },
609
+ {
610
+ "name": "form",
611
+ "description": "Form `id` to associate with.",
612
+ "values": []
613
+ },
614
+ {
615
+ "name": "tooltip",
616
+ "description": "Tooltip text shown on hover/focus of info icon.",
617
+ "values": []
618
+ },
619
+ {
620
+ "name": "accept",
621
+ "description": "Accepted file types. Use MIME types (`image/*`) or extensions (`.pdf`). Validated via magic bytes.",
622
+ "values": []
623
+ },
624
+ {
625
+ "name": "disabled",
626
+ "description": "Prevents interaction.",
627
+ "values": []
628
+ },
629
+ {
630
+ "name": "required",
631
+ "description": "Requires at least one file to be uploaded.",
632
+ "values": []
633
+ },
634
+ {
635
+ "name": "optional",
636
+ "description": "Shows \"Optional\" flag.",
637
+ "values": []
638
+ },
639
+ {
640
+ "name": "showError",
641
+ "description": "Shows error message when true.",
642
+ "values": []
643
+ },
644
+ {
645
+ "name": "errorMessage",
646
+ "description": "Error message text. Shown only when `showError` is true.",
647
+ "values": []
648
+ },
649
+ {
650
+ "name": "dropzone",
651
+ "description": "Enables drag-and-drop zone UI.",
652
+ "values": []
653
+ },
654
+ {
655
+ "name": "width",
656
+ "description": "Component width: `lg` (384px) or `full` (100%, default).",
657
+ "values": [{ "name": "lg" }, { "name": "full" }]
658
+ },
659
+ {
660
+ "name": "inverted",
661
+ "description": "Adjusts colors for dark backgrounds.",
662
+ "values": []
663
+ }
268
664
  ],
269
665
  "references": []
270
666
  },
271
667
  {
272
668
  "name": "nys-fileitem",
273
- "description": "`<nys-fileitem>` displays an individual file in a file input component.\nIt shows the file name, upload status, progress bar, and error messages.\n---\n\n\n### **Events:**\n - **nys-fileRemove**",
669
+ "description": "Internal file item display with status, progress bar, and remove action.\n---\n\n\n### **Events:**\n - **nys-fileRemove** - Fired when remove button is clicked. Detail: `{filename}`.",
274
670
  "attributes": [
275
- { "name": "filename", "values": [] },
671
+ {
672
+ "name": "filename",
673
+ "description": "Name of the file being displayed.",
674
+ "values": []
675
+ },
276
676
  {
277
677
  "name": "status",
678
+ "description": "Upload status: `pending` (queued), `processing` (uploading), `done` (complete), `error` (failed).",
278
679
  "values": [
279
680
  { "name": "" },
280
681
  { "name": "pending" },
@@ -283,41 +684,90 @@
283
684
  { "name": "error" }
284
685
  ]
285
686
  },
286
- { "name": "progress", "values": [] },
287
- { "name": "errorMessage", "values": [] }
687
+ {
688
+ "name": "progress",
689
+ "description": "Upload progress percentage (0-100). Only shown when status is `processing`.",
690
+ "values": []
691
+ },
692
+ {
693
+ "name": "errorMessage",
694
+ "description": "Error message displayed when status is `error`.",
695
+ "values": []
696
+ }
288
697
  ],
289
698
  "references": []
290
699
  },
291
700
  {
292
701
  "name": "nys-globalfooter",
293
- "description": "`<nys-globalfooter>` renders a New York State–style global footer.\n\nDisplays an agency name with an optional homepage link and supports\nstructured footer content via slots.\n---\n\n\n### **Slots:**\n - **default** - Footer content such as headings, links, or groups Layout behavior: - Multiple `<h4>` elements trigger a multi-column layout - Single group content renders in a compact layout",
702
+ "description": "Agency footer with auto-layout for contact info and link sections.\n---\n\n\n### **Slots:**\n - _default_ - Footer content (links, contact info). Use `<h4>` for column headings.",
294
703
  "attributes": [
295
- { "name": "agencyName", "values": [] },
296
- { "name": "homepageLink", "values": [] }
704
+ {
705
+ "name": "agencyName",
706
+ "description": "Agency name displayed as the footer heading.",
707
+ "values": []
708
+ },
709
+ {
710
+ "name": "homepageLink",
711
+ "description": "URL for the agency name link. If empty, name is not clickable.",
712
+ "values": []
713
+ }
297
714
  ],
298
715
  "references": []
299
716
  },
300
717
  {
301
718
  "name": "nys-globalheader",
302
- "description": "`<nys-globalheader>` renders a New York State–style global header.\n\nDisplays an optional application name, agency name, and homepage link.\nSupports slotted navigation content with automatic active-link detection\nand a responsive mobile menu.\n---\n\n\n### **Slots:**\n - **default** - Primary navigation list, typically a `<ul>` with links\n- **user-actions** - Optional user action elements such as login or profile Behavior: - Automatically highlights the best matching link based on the current URL - Duplicates navigation content for desktop and mobile layouts - Provides a toggleable mobile menu when navigation content exists",
719
+ "description": "Agency header with navigation, mobile menu, and active link highlighting.\n---\n\n\n### **Slots:**\n - _default_ - Navigation content (typically `<ul>` with `<li><a>` links). Auto-sanitized.",
303
720
  "attributes": [
304
- { "name": "appName", "values": [] },
305
- { "name": "agencyName", "values": [] },
306
- { "name": "homepageLink", "values": [] }
721
+ {
722
+ "name": "appName",
723
+ "description": "Application name displayed prominently.",
724
+ "values": []
725
+ },
726
+ {
727
+ "name": "agencyName",
728
+ "description": "Agency name displayed below app name (or as main title if no appName).",
729
+ "values": []
730
+ },
731
+ {
732
+ "name": "homepageLink",
733
+ "description": "URL for the header title link. If empty, title is not clickable.",
734
+ "values": []
735
+ }
307
736
  ],
308
737
  "references": []
309
738
  },
310
739
  {
311
740
  "name": "nys-icon",
312
- "description": "`<nys-icon>` renders an SVG icon from the internal icon library.\n\nIcons are inline SVGs and support sizing, rotation, flipping, color,\nand accessibility labeling.\n---\n",
741
+ "description": "SVG icon from Material Symbols library with size, rotation, and color options.\n---\n",
313
742
  "attributes": [
314
- { "name": "name", "values": [] },
315
- { "name": "ariaLabel", "values": [] },
316
- { "name": "rotate", "values": [] },
317
- { "name": "flip", "values": [] },
318
- { "name": "color", "values": [] },
743
+ {
744
+ "name": "name",
745
+ "description": "Icon name from Material Symbols library. Required.",
746
+ "values": []
747
+ },
748
+ {
749
+ "name": "ariaLabel",
750
+ "description": "Accessible label. When set, removes `aria-hidden` and adds `aria-label` to the SVG.",
751
+ "values": []
752
+ },
753
+ {
754
+ "name": "rotate",
755
+ "description": "Rotation in degrees. Applied via CSS `rotate`.",
756
+ "values": []
757
+ },
758
+ {
759
+ "name": "flip",
760
+ "description": "Flip direction: `horizontal`, `vertical`, or empty for none.",
761
+ "values": []
762
+ },
763
+ {
764
+ "name": "color",
765
+ "description": "Icon color. Accepts any CSS color value. Defaults to `currentcolor`.",
766
+ "values": []
767
+ },
319
768
  {
320
769
  "name": "size",
770
+ "description": "Icon size. Semantic sizes: `xs`-`5xl`. Pixel sizes: `12`-`50`.",
321
771
  "values": [
322
772
  { "name": "" },
323
773
  { "name": "xs" },
@@ -345,28 +795,73 @@
345
795
  },
346
796
  {
347
797
  "name": "nys-label",
348
- "description": "THIS IS A PRIVATE COMPONENT!\n`NysLabel` is a component for rendering form labels with optional\ndescriptions, flags (required/optional), and tooltips.\n---\n",
798
+ "description": "Internal label component for form fields with flag and tooltip support.\n---\n\n\n### **Slots:**\n - **description** - Custom HTML description content below the label.",
349
799
  "attributes": [
350
- { "name": "for", "values": [] },
351
- { "name": "label", "values": [] },
352
- { "name": "description", "values": [] },
353
- { "name": "flag", "values": [] },
354
- { "name": "inverted", "values": [] },
355
- { "name": "tooltip", "values": [] }
800
+ {
801
+ "name": "for",
802
+ "description": "ID of the form element this label is associated with.",
803
+ "values": []
804
+ },
805
+ {
806
+ "name": "label",
807
+ "description": "Label text displayed above the form field.",
808
+ "values": []
809
+ },
810
+ {
811
+ "name": "description",
812
+ "description": "Helper text displayed below the label.",
813
+ "values": []
814
+ },
815
+ {
816
+ "name": "flag",
817
+ "description": "Flag type: `required` shows asterisk, `optional` shows \"(Optional)\".",
818
+ "values": []
819
+ },
820
+ {
821
+ "name": "inverted",
822
+ "description": "Adjusts colors for dark backgrounds.",
823
+ "values": []
824
+ },
825
+ {
826
+ "name": "tooltip",
827
+ "description": "Tooltip text shown on hover/focus of info icon next to label.",
828
+ "values": []
829
+ }
356
830
  ],
357
831
  "references": []
358
832
  },
359
833
  {
360
834
  "name": "nys-modal",
361
- "description": "`<nys-modal>` renders an accessible modal dialog.\n\nSupports headings, optional subheading, body content, and action buttons.\nManages focus trapping, escape key handling, and body scroll locking.\n---\n\n\n### **Events:**\n - **nys-open** - Emitted when the modal opens\n- **nys-close** - Emitted when the modal closes\n\n### **Slots:**\n - _default_ - Modal body content\n- **actions** - Action buttons shown in the footer",
835
+ "description": "Accessible modal dialog with focus trap, keyboard support, and action slots.\n---\n\n\n### **Events:**\n - **nys-open** - Fired when modal opens. Detail: `{id}`.\n- **nys-close** - Fired when modal closes. Detail: `{id}`.\n\n### **Slots:**\n - _default_ - Default slot for body content.\n- **actions** - Action buttons displayed in footer. Buttons auto-resize on mobile.",
362
836
  "attributes": [
363
- { "name": "id", "values": [] },
364
- { "name": "heading", "values": [] },
365
- { "name": "subheading", "values": [] },
366
- { "name": "open", "values": [] },
367
- { "name": "mandatory", "values": [] },
837
+ {
838
+ "name": "id",
839
+ "description": "Unique identifier. Auto-generated if not provided.",
840
+ "values": []
841
+ },
842
+ {
843
+ "name": "heading",
844
+ "description": "Modal heading text. Required for accessibility.",
845
+ "values": []
846
+ },
847
+ {
848
+ "name": "subheading",
849
+ "description": "Secondary heading below the main heading.",
850
+ "values": []
851
+ },
852
+ {
853
+ "name": "open",
854
+ "description": "Controls modal visibility. Set to `true` to show.",
855
+ "values": []
856
+ },
857
+ {
858
+ "name": "mandatory",
859
+ "description": "Prevents dismissal via close button or Escape key. User must take an action.",
860
+ "values": []
861
+ },
368
862
  {
369
863
  "name": "width",
864
+ "description": "Modal width: `sm` (400px), `md` (600px), or `lg` (800px).",
370
865
  "values": [{ "name": "sm" }, { "name": "md" }, { "name": "lg" }]
371
866
  }
372
867
  ],
@@ -374,86 +869,279 @@
374
869
  },
375
870
  {
376
871
  "name": "nys-pagination",
377
- "description": "`<nys-pagination>` renders page navigation controls.\n\nDisplays previous and next buttons, page numbers, and ellipses\nwhen pages are skipped. Handles page bounds automatically.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when the page changes detail: { page: number }",
872
+ "description": "Page navigation with numbered links, prev/next buttons, and responsive layout.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when page changes. Detail: `{page}`.",
378
873
  "attributes": [
379
- { "name": "id", "values": [] },
380
- { "name": "name", "values": [] },
381
- { "name": "currentPage", "values": [] },
382
- { "name": "totalPages", "values": [] },
383
- { "name": "_twoBeforeLast", "values": [] }
874
+ {
875
+ "name": "id",
876
+ "description": "Unique identifier. Auto-generated if not provided.",
877
+ "values": []
878
+ },
879
+ {
880
+ "name": "name",
881
+ "description": "Name attribute for form association.",
882
+ "values": []
883
+ },
884
+ {
885
+ "name": "currentPage",
886
+ "description": "Currently active page (1-indexed). Clamped to valid range.",
887
+ "values": []
888
+ },
889
+ {
890
+ "name": "totalPages",
891
+ "description": "Total number of pages. Must be at least 1.",
892
+ "values": []
893
+ },
894
+ {
895
+ "name": "_twoBeforeLast",
896
+ "description": "Internal state for layout adjustments near the end.",
897
+ "values": []
898
+ }
384
899
  ],
385
900
  "references": []
386
901
  },
387
902
  {
388
903
  "name": "nys-radiobutton",
389
- "description": "`<nys-radiobutton>` represents a single radio button for use in a `<nys-radiogroup>`.\n\nFeatures:\n- Single selection per group\n- Supports labels, descriptions, tile layout, inverted style, and size variants\n- Integrates with forms and dispatches `nys-change` events on selection\n---\n\n\n### **Events:**\n - **nys-change** - Fired when the radio is selected or deselected detail: { id: string, checked: boolean, name: string, value: string }\n- **nys-focus** - Fired when the radio gains focus\n- **nys-blur** - Fired when the radio loses focus\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Optional description text announced to screen readers",
904
+ "description": "Radio button for single selection from mutually exclusive options.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when selection changes. Detail: `{id, checked, name, value}`.\n- **nys-focus** - Fired when radio gains focus.\n- **nys-blur** - Fired when radio loses focus.\n\n### **Methods:**\n - **getInputElement(): _Promise<HTMLInputElement | null>_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Custom HTML description content.",
390
905
  "attributes": [
391
- { "name": "checked", "values": [] },
392
- { "name": "disabled", "values": [] },
393
- { "name": "required", "values": [] },
394
- { "name": "label", "values": [] },
395
- { "name": "description", "values": [] },
396
- { "name": "id", "values": [] },
397
- { "name": "name", "values": [] },
398
- { "name": "value", "values": [] },
399
- { "name": "inverted", "values": [] },
400
- { "name": "form", "values": [] },
401
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] },
402
- { "name": "tile", "values": [] }
906
+ {
907
+ "name": "checked",
908
+ "description": "Whether this radio is selected. Only one per group can be checked.",
909
+ "values": []
910
+ },
911
+ {
912
+ "name": "disabled",
913
+ "description": "Prevents interaction.",
914
+ "values": []
915
+ },
916
+ {
917
+ "name": "required",
918
+ "description": "Marks group as required. Set on radiogroup, not individual radios.",
919
+ "values": []
920
+ },
921
+ {
922
+ "name": "label",
923
+ "description": "Visible label text. Required for accessibility.",
924
+ "values": []
925
+ },
926
+ {
927
+ "name": "description",
928
+ "description": "Helper text below label. Use slot for custom HTML.",
929
+ "values": []
930
+ },
931
+ {
932
+ "name": "id",
933
+ "description": "Unique identifier. Auto-generated if not provided.",
934
+ "values": []
935
+ },
936
+ {
937
+ "name": "name",
938
+ "description": "Group name. Radios with same name are mutually exclusive.",
939
+ "values": []
940
+ },
941
+ {
942
+ "name": "value",
943
+ "description": "Value submitted when this radio is selected.",
944
+ "values": []
945
+ },
946
+ {
947
+ "name": "inverted",
948
+ "description": "Adjusts colors for dark backgrounds.",
949
+ "values": []
950
+ },
951
+ {
952
+ "name": "form",
953
+ "description": "Form `id` to associate with.",
954
+ "values": []
955
+ },
956
+ {
957
+ "name": "size",
958
+ "description": "Radio size: `sm` (24px) or `md` (32px, default).",
959
+ "values": [{ "name": "sm" }, { "name": "md" }]
960
+ },
961
+ {
962
+ "name": "tile",
963
+ "description": "Renders as tile with larger clickable area.",
964
+ "values": []
965
+ }
403
966
  ],
404
967
  "references": []
405
968
  },
406
969
  {
407
970
  "name": "nys-radiogroup",
408
- "description": "`<nys-radiogroup>` groups `<nys-radiobutton>` elements into a single\nselectable control.\n\nSupports keyboard navigation, validation, and native form submission\nthrough ElementInternals.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when selection changes detail: { name: string; value: string }\n\n### **Slots:**\n - **default** - One or more `<nys-radiobutton>` elements\n- **description** - Optional descriptive text announced to screen readers",
971
+ "description": "Container for grouping radio buttons as a single form control.\n---\n\n\n### **Slots:**\n - _default_ - Default slot for `nys-radiobutton` elements.\n- **description** - Custom HTML description content.",
409
972
  "attributes": [
410
- { "name": "id", "values": [] },
411
- { "name": "name", "values": [] },
412
- { "name": "required", "values": [] },
413
- { "name": "optional", "values": [] },
414
- { "name": "showError", "values": [] },
415
- { "name": "errorMessage", "values": [] },
416
- { "name": "label", "values": [] },
417
- { "name": "description", "values": [] },
418
- { "name": "tile", "values": [] },
419
- { "name": "tooltip", "values": [] },
420
- { "name": "inverted", "values": [] },
421
- { "name": "form", "values": [] },
422
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
973
+ {
974
+ "name": "id",
975
+ "description": "Unique identifier. Auto-generated if not provided.",
976
+ "values": []
977
+ },
978
+ {
979
+ "name": "name",
980
+ "description": "Name for form submission. Auto-populated from child radiobuttons.",
981
+ "values": []
982
+ },
983
+ {
984
+ "name": "required",
985
+ "description": "Requires a selection before form submission.",
986
+ "values": []
987
+ },
988
+ {
989
+ "name": "optional",
990
+ "description": "Shows \"Optional\" flag.",
991
+ "values": []
992
+ },
993
+ {
994
+ "name": "showError",
995
+ "description": "Shows error message when true.",
996
+ "values": []
997
+ },
998
+ {
999
+ "name": "errorMessage",
1000
+ "description": "Error message text. Shown only when `showError` is true.",
1001
+ "values": []
1002
+ },
1003
+ {
1004
+ "name": "label",
1005
+ "description": "Visible label text for the group.",
1006
+ "values": []
1007
+ },
1008
+ {
1009
+ "name": "description",
1010
+ "description": "Helper text below label. Use slot for custom HTML.",
1011
+ "values": []
1012
+ },
1013
+ {
1014
+ "name": "tile",
1015
+ "description": "Renders all radiobuttons as tiles with larger clickable area.",
1016
+ "values": []
1017
+ },
1018
+ {
1019
+ "name": "tooltip",
1020
+ "description": "Tooltip text shown on hover/focus of info icon.",
1021
+ "values": []
1022
+ },
1023
+ {
1024
+ "name": "inverted",
1025
+ "description": "Adjusts colors for dark backgrounds. Applied to all children.",
1026
+ "values": []
1027
+ },
1028
+ {
1029
+ "name": "form",
1030
+ "description": "Form `id` to associate with. Applied to all children.",
1031
+ "values": []
1032
+ },
1033
+ {
1034
+ "name": "size",
1035
+ "description": "Radio size for all children: `sm` (24px) or `md` (32px, default).",
1036
+ "values": [{ "name": "sm" }, { "name": "md" }]
1037
+ }
423
1038
  ],
424
1039
  "references": []
425
1040
  },
426
1041
  {
427
1042
  "name": "nys-option",
428
- "description": "\n---\n",
1043
+ "description": "Option item for nys-select dropdown.\n---\n\n\n### **Slots:**\n - _default_ - Option label text. Auto-populates the `label` prop if provided.",
429
1044
  "attributes": [
430
- { "name": "disabled", "values": [] },
431
- { "name": "selected", "values": [] },
432
- { "name": "value", "values": [] },
433
- { "name": "label", "values": [] },
434
- { "name": "hidden", "values": [] }
1045
+ {
1046
+ "name": "disabled",
1047
+ "description": "Prevents selection of this option.",
1048
+ "values": []
1049
+ },
1050
+ {
1051
+ "name": "selected",
1052
+ "description": "Pre-selects this option.",
1053
+ "values": []
1054
+ },
1055
+ {
1056
+ "name": "value",
1057
+ "description": "Value submitted when this option is selected.",
1058
+ "values": []
1059
+ },
1060
+ {
1061
+ "name": "label",
1062
+ "description": "Display text for the option. Auto-populated from slot content if not set.",
1063
+ "values": []
1064
+ },
1065
+ {
1066
+ "name": "hidden",
1067
+ "description": "Hides the option from the dropdown list.",
1068
+ "values": []
1069
+ }
435
1070
  ],
436
1071
  "references": []
437
1072
  },
438
1073
  {
439
1074
  "name": "nys-select",
440
- "description": "`<nys-select>` is a custom select/dropdown component.\n\nFeatures:\n- Supports slotted `<nys-option>` elements, native `<option>` and `<optgroup>`\n- Integrates with forms via ElementInternals\n- Handles validation, error messages, and required/optional states\n- Inverted style and width variants supported\n---\n\n\n### **Events:**\n - **nys-change** - Fired when the selected value changes detail: { id: string, value: string }\n- **nys-focus** - Fired when the select gains focus\n- **nys-blur** - Fired when the select loses focus\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Optional description text announced to screen readers\n- **default** - Options (<nys-option>, <option>, <optgroup>) to populate the dropdown",
1075
+ "description": "Dropdown select for choosing one option from a list.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when selection changes. Detail: `{id, value}`.\n- **nys-focus** - Fired when select gains focus.\n- **nys-blur** - Fired when select loses focus. Triggers validation.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - _default_ - Default slot for `<option>` and `<optgroup>` elements.\n- **description** - Custom HTML description content below the label.",
441
1076
  "attributes": [
442
- { "name": "id", "values": [] },
443
- { "name": "name", "values": [] },
444
- { "name": "label", "values": [] },
445
- { "name": "description", "values": [] },
446
- { "name": "value", "values": [] },
447
- { "name": "disabled", "values": [] },
448
- { "name": "required", "values": [] },
449
- { "name": "optional", "values": [] },
450
- { "name": "tooltip", "values": [] },
451
- { "name": "form", "values": [] },
452
- { "name": "inverted", "values": [] },
453
- { "name": "showError", "values": [] },
454
- { "name": "errorMessage", "values": [] },
1077
+ {
1078
+ "name": "id",
1079
+ "description": "Unique identifier. Auto-generated if not provided.",
1080
+ "values": []
1081
+ },
1082
+ {
1083
+ "name": "name",
1084
+ "description": "Name for form submission.",
1085
+ "values": []
1086
+ },
1087
+ {
1088
+ "name": "label",
1089
+ "description": "Visible label text. Required for accessibility.",
1090
+ "values": []
1091
+ },
1092
+ {
1093
+ "name": "description",
1094
+ "description": "Helper text below label. Use slot for custom HTML.",
1095
+ "values": []
1096
+ },
1097
+ {
1098
+ "name": "value",
1099
+ "description": "Currently selected option value.",
1100
+ "values": []
1101
+ },
1102
+ {
1103
+ "name": "disabled",
1104
+ "description": "Prevents interaction.",
1105
+ "values": []
1106
+ },
1107
+ {
1108
+ "name": "required",
1109
+ "description": "Marks as required. Shows \"Required\" flag and validates on blur.",
1110
+ "values": []
1111
+ },
1112
+ {
1113
+ "name": "optional",
1114
+ "description": "Shows \"Optional\" flag. Use when most fields are required.",
1115
+ "values": []
1116
+ },
1117
+ {
1118
+ "name": "tooltip",
1119
+ "description": "Tooltip text shown on hover/focus of info icon.",
1120
+ "values": []
1121
+ },
1122
+ {
1123
+ "name": "form",
1124
+ "description": "Form `id` to associate with when select is outside form element.",
1125
+ "values": []
1126
+ },
1127
+ {
1128
+ "name": "inverted",
1129
+ "description": "Adjusts colors for dark backgrounds.",
1130
+ "values": []
1131
+ },
1132
+ {
1133
+ "name": "showError",
1134
+ "description": "Shows error message when true. Set by validation or manually.",
1135
+ "values": []
1136
+ },
1137
+ {
1138
+ "name": "errorMessage",
1139
+ "description": "Error message text. Shown only when `showError` is true.",
1140
+ "values": []
1141
+ },
455
1142
  {
456
1143
  "name": "width",
1144
+ "description": "Select width: `sm` (88px), `md` (200px), `lg` (384px), `full` (100%, default).",
457
1145
  "values": [
458
1146
  { "name": "" },
459
1147
  { "name": "sm" },
@@ -467,35 +1155,83 @@
467
1155
  },
468
1156
  {
469
1157
  "name": "nys-skipnav",
470
- "description": "`<nys-skipnav>` provides an accessible skip navigation link for keyboard\nand screen reader users to jump directly to the main content of a page.\n\nFeatures:\n- Default target is `#main-content` if `href` is not provided\n- Link becomes visible on focus and hides on blur\n- Ensures the target element is focusable for accessibility\n---\n",
1158
+ "description": "Skip navigation link for keyboard accessibility. Hidden until focused.\n---\n",
471
1159
  "attributes": [
472
- { "name": "id", "values": [] },
473
- { "name": "href", "values": [] }
1160
+ {
1161
+ "name": "id",
1162
+ "description": "Unique identifier. Auto-generated if not provided.",
1163
+ "values": []
1164
+ },
1165
+ {
1166
+ "name": "href",
1167
+ "description": "Target element ID (with `#`). Defaults to `#main-content`.",
1168
+ "values": []
1169
+ }
474
1170
  ],
475
1171
  "references": []
476
1172
  },
477
1173
  {
478
1174
  "name": "nys-step",
479
- "description": "\n---\n",
1175
+ "description": "Individual step for use within nys-stepper with navigation support.\n---\n\n\n### **Events:**\n - **nys-step-click** - Fired when a navigable step is clicked. Detail: `{href, label}`. Cancelable.",
480
1176
  "attributes": [
481
- { "name": "selected", "values": [] },
482
- { "name": "current", "values": [] },
483
- { "name": "label", "values": [] },
484
- { "name": "href", "values": [] },
485
- { "name": "isCompactExpanded", "values": [] },
486
- { "name": "stepNumber", "values": [] }
1177
+ {
1178
+ "name": "selected",
1179
+ "description": "Whether this step is currently being viewed. Set by parent stepper.",
1180
+ "values": []
1181
+ },
1182
+ {
1183
+ "name": "current",
1184
+ "description": "Marks the furthest reached step. Steps before this are navigable.",
1185
+ "values": []
1186
+ },
1187
+ {
1188
+ "name": "label",
1189
+ "description": "Step label text displayed alongside the step number.",
1190
+ "values": []
1191
+ },
1192
+ {
1193
+ "name": "href",
1194
+ "description": "URL for page navigation when step is clicked. Optional for SPA routing.",
1195
+ "values": []
1196
+ },
1197
+ {
1198
+ "name": "isCompactExpanded",
1199
+ "description": "Internal: Whether parent stepper's compact view is expanded.",
1200
+ "values": []
1201
+ },
1202
+ {
1203
+ "name": "stepNumber",
1204
+ "description": "Step number (1-indexed). Auto-assigned by parent stepper.",
1205
+ "values": []
1206
+ }
487
1207
  ],
488
1208
  "references": []
489
1209
  },
490
1210
  {
491
1211
  "name": "nys-stepper",
492
- "description": "`<nys-stepper>` manages a sequence of `<nys-step>` elements, providing\nmulti-step navigation for forms or workflows.\n\nFeatures:\n- Tracks selected and current steps\n- Displays a step counter (e.g., \"Step 2 of 5\")\n- Supports compact/expanded view toggle\n- Validates that only `<nys-step>` or `<div slot=\"actions\">` children are used\n---\n\n\n### **Events:**\n - **nys-step-click** - Fired when a step is clicked; bubbles with the event path",
1212
+ "description": "Multi-step progress indicator with navigation and mobile-friendly compact view.\n---\n\n\n### **Slots:**\n - _default_ - Default slot for `nys-step` elements.\n- **actions** - Navigation buttons (e.g., Back, Continue). Must be wrapped in a `<div>`.",
493
1213
  "attributes": [
494
- { "name": "id", "values": [] },
495
- { "name": "name", "values": [] },
496
- { "name": "label", "values": [] },
497
- { "name": "counterText", "values": [] },
498
- { "name": "isCompactExpanded", "values": [] }
1214
+ { "name": "id", "description": "Unique identifier.", "values": [] },
1215
+ {
1216
+ "name": "name",
1217
+ "description": "Name attribute for form association.",
1218
+ "values": []
1219
+ },
1220
+ {
1221
+ "name": "label",
1222
+ "description": "Title displayed above the step counter.",
1223
+ "values": []
1224
+ },
1225
+ {
1226
+ "name": "counterText",
1227
+ "description": "Progress text (e.g., \"Step 2 of 5\"). Auto-updated based on selection.",
1228
+ "values": []
1229
+ },
1230
+ {
1231
+ "name": "isCompactExpanded",
1232
+ "description": "Whether compact mobile view is expanded to show all steps.",
1233
+ "values": []
1234
+ }
499
1235
  ],
500
1236
  "references": []
501
1237
  },
@@ -514,24 +1250,81 @@
514
1250
  },
515
1251
  {
516
1252
  "name": "nys-textarea",
517
- "description": "`<nys-textarea>` is a form-enabled textarea with validation, accessibility support,\nand live error messages. Integrates with forms via ElementInternals.\n---\n\n\n### **Events:**\n - **nys-input** - Fired on input, detail: `{ id, value }`\n- **nys-focus** - Fired on focus.\n- **nys-blur** - Fired on blur.\n- **nys-select** - Fired on text selection, detail: `{ id, value }`\n- **nys-selectionchange** - Fired on selection change, detail: `{ id, value }`\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Optional slot for custom description content below the label.",
1253
+ "description": "Multi-line text input for comments, descriptions, and feedback.\n---\n\n\n### **Events:**\n - **nys-input** - Fired on input change. Detail: `{id, value}`.\n- **nys-focus** - Fired when textarea gains focus.\n- **nys-blur** - Fired when textarea loses focus. Triggers validation.\n- **nys-select** - Fired when user selects text. Detail: `{id, value}`.\n- **nys-selectionchange**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Custom HTML description content below the label.",
518
1254
  "attributes": [
519
- { "name": "id", "values": [] },
520
- { "name": "name", "values": [] },
521
- { "name": "label", "values": [] },
522
- { "name": "description", "values": [] },
523
- { "name": "placeholder", "values": [] },
524
- { "name": "value", "values": [] },
525
- { "name": "disabled", "values": [] },
526
- { "name": "readonly", "values": [] },
527
- { "name": "required", "values": [] },
528
- { "name": "optional", "values": [] },
529
- { "name": "tooltip", "values": [] },
530
- { "name": "inverted", "values": [] },
531
- { "name": "form", "values": [] },
532
- { "name": "maxlength", "values": [] },
1255
+ {
1256
+ "name": "id",
1257
+ "description": "Unique identifier. Auto-generated if not provided.",
1258
+ "values": []
1259
+ },
1260
+ {
1261
+ "name": "name",
1262
+ "description": "Name for form submission.",
1263
+ "values": []
1264
+ },
1265
+ {
1266
+ "name": "label",
1267
+ "description": "Visible label text. Required for accessibility.",
1268
+ "values": []
1269
+ },
1270
+ {
1271
+ "name": "description",
1272
+ "description": "Helper text below label. Use slot for custom HTML.",
1273
+ "values": []
1274
+ },
1275
+ {
1276
+ "name": "placeholder",
1277
+ "description": "Placeholder text. Don't use as label replacement.",
1278
+ "values": []
1279
+ },
1280
+ {
1281
+ "name": "value",
1282
+ "description": "Current textarea value.",
1283
+ "values": []
1284
+ },
1285
+ {
1286
+ "name": "disabled",
1287
+ "description": "Prevents interaction.",
1288
+ "values": []
1289
+ },
1290
+ {
1291
+ "name": "readonly",
1292
+ "description": "Makes textarea read-only but focusable.",
1293
+ "values": []
1294
+ },
1295
+ {
1296
+ "name": "required",
1297
+ "description": "Marks as required. Shows \"Required\" flag and validates on blur.",
1298
+ "values": []
1299
+ },
1300
+ {
1301
+ "name": "optional",
1302
+ "description": "Shows \"Optional\" flag. Use when most fields are required.",
1303
+ "values": []
1304
+ },
1305
+ {
1306
+ "name": "tooltip",
1307
+ "description": "Tooltip text shown on hover/focus of info icon.",
1308
+ "values": []
1309
+ },
1310
+ {
1311
+ "name": "inverted",
1312
+ "description": "Adjusts colors for dark backgrounds.",
1313
+ "values": []
1314
+ },
1315
+ {
1316
+ "name": "form",
1317
+ "description": "Form `id` to associate with when textarea is outside form element.",
1318
+ "values": []
1319
+ },
1320
+ {
1321
+ "name": "maxlength",
1322
+ "description": "Maximum character length.",
1323
+ "values": []
1324
+ },
533
1325
  {
534
1326
  "name": "width",
1327
+ "description": "Textarea width: `sm` (88px), `md` (200px), `lg` (384px), `full` (100%, default).",
535
1328
  "values": [
536
1329
  { "name": "" },
537
1330
  { "name": "sm" },
@@ -540,24 +1333,46 @@
540
1333
  { "name": "full" }
541
1334
  ]
542
1335
  },
543
- { "name": "rows", "values": [] },
1336
+ {
1337
+ "name": "rows",
1338
+ "description": "Visible height in lines.",
1339
+ "values": []
1340
+ },
544
1341
  {
545
1342
  "name": "resize",
1343
+ "description": "Resize behavior: `vertical` (default, user can resize height), `none` (fixed size).",
546
1344
  "values": [{ "name": "vertical" }, { "name": "none" }]
547
1345
  },
548
- { "name": "showError", "values": [] },
549
- { "name": "errorMessage", "values": [] }
1346
+ {
1347
+ "name": "showError",
1348
+ "description": "Shows error message when true. Set by validation or manually.",
1349
+ "values": []
1350
+ },
1351
+ {
1352
+ "name": "errorMessage",
1353
+ "description": "Error message text. Shown only when `showError` is true.",
1354
+ "values": []
1355
+ }
550
1356
  ],
551
1357
  "references": []
552
1358
  },
553
1359
  {
554
1360
  "name": "nys-textinput",
555
- "description": "`<nys-textinput>` is a form-enabled text input with validation, optional\nmasking, password toggle, accessibility support, and live error messages.\nWorks with forms via ElementInternals.\n---\n\n\n### **Events:**\n - **nys-input** - Fired on input change. Detail: `{ id, value }`.\n- **nys-focus** - Fired when input receives focus.\n- **nys-blur** - Fired when input loses focus.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Optional custom description content below the label.\n- **startButton** - Slot for a single <nys-button> at the start of the input.\n- **endButton** - Slot for a single <nys-button> at the end of the input.",
1361
+ "description": "Text input for short single-line data with validation and masking support.\n---\n\n\n### **Events:**\n - **nys-input** - Fired on input change. Detail: `{id, value}`.\n- **nys-focus** - Fired when input gains focus.\n- **nys-blur** - Fired when input loses focus. Triggers validation.\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Functions\n--------------------------------------------------------------------------\n\n### **Slots:**\n - **description** - Custom HTML description content below the label.\n- **startButton** - Button at input start. Use single `nys-button` only.\n- **endButton** - Button at input end. Use single `nys-button` only.",
556
1362
  "attributes": [
557
- { "name": "id", "values": [] },
558
- { "name": "name", "values": [] },
1363
+ {
1364
+ "name": "id",
1365
+ "description": "Unique identifier. Auto-generated if not provided.",
1366
+ "values": []
1367
+ },
1368
+ {
1369
+ "name": "name",
1370
+ "description": "Name for form submission.",
1371
+ "values": []
1372
+ },
559
1373
  {
560
1374
  "name": "type",
1375
+ "description": "Input type: `text` (default), `email`, `number`, `password`, `search`, `tel` (auto-masked), `url`.",
561
1376
  "values": [
562
1377
  { "name": "" },
563
1378
  { "name": "email" },
@@ -569,20 +1384,69 @@
569
1384
  { "name": "url" }
570
1385
  ]
571
1386
  },
572
- { "name": "label", "values": [] },
573
- { "name": "description", "values": [] },
574
- { "name": "placeholder", "values": [] },
575
- { "name": "value", "values": [] },
576
- { "name": "disabled", "values": [] },
577
- { "name": "readonly", "values": [] },
578
- { "name": "required", "values": [] },
579
- { "name": "optional", "values": [] },
580
- { "name": "tooltip", "values": [] },
581
- { "name": "form", "values": [] },
582
- { "name": "pattern", "values": [] },
583
- { "name": "maxlength", "values": [] },
1387
+ {
1388
+ "name": "label",
1389
+ "description": "Visible label text. Required for accessibility.",
1390
+ "values": []
1391
+ },
1392
+ {
1393
+ "name": "description",
1394
+ "description": "Helper text below label. Use slot for custom HTML.",
1395
+ "values": []
1396
+ },
1397
+ {
1398
+ "name": "placeholder",
1399
+ "description": "Placeholder text. Don't use as label replacement.",
1400
+ "values": []
1401
+ },
1402
+ {
1403
+ "name": "value",
1404
+ "description": "Current input value.",
1405
+ "values": []
1406
+ },
1407
+ {
1408
+ "name": "disabled",
1409
+ "description": "Prevents interaction.",
1410
+ "values": []
1411
+ },
1412
+ {
1413
+ "name": "readonly",
1414
+ "description": "Makes input read-only but focusable.",
1415
+ "values": []
1416
+ },
1417
+ {
1418
+ "name": "required",
1419
+ "description": "Marks as required. Shows \"Required\" flag and validates on blur.",
1420
+ "values": []
1421
+ },
1422
+ {
1423
+ "name": "optional",
1424
+ "description": "Shows \"Optional\" flag. Use when most fields are required.",
1425
+ "values": []
1426
+ },
1427
+ {
1428
+ "name": "tooltip",
1429
+ "description": "Tooltip text shown on hover/focus of info icon.",
1430
+ "values": []
1431
+ },
1432
+ {
1433
+ "name": "form",
1434
+ "description": "Form `id` to associate with when input is outside form element.",
1435
+ "values": []
1436
+ },
1437
+ {
1438
+ "name": "pattern",
1439
+ "description": "Regex pattern for validation. Shows error on mismatch.",
1440
+ "values": []
1441
+ },
1442
+ {
1443
+ "name": "maxlength",
1444
+ "description": "Maximum character length.",
1445
+ "values": []
1446
+ },
584
1447
  {
585
1448
  "name": "width",
1449
+ "description": "Input width: `sm` (88px), `md` (200px), `lg` (384px), `full` (100%, default).",
586
1450
  "values": [
587
1451
  { "name": "" },
588
1452
  { "name": "sm" },
@@ -591,61 +1455,170 @@
591
1455
  { "name": "full" }
592
1456
  ]
593
1457
  },
594
- { "name": "step", "values": [] },
595
- { "name": "min", "values": [] },
596
- { "name": "max", "values": [] },
597
- { "name": "inverted", "values": [] },
598
- { "name": "showError", "values": [] },
599
- { "name": "errorMessage", "values": [] }
1458
+ {
1459
+ "name": "step",
1460
+ "description": "Step increment for `type=\"number\"`.",
1461
+ "values": []
1462
+ },
1463
+ {
1464
+ "name": "min",
1465
+ "description": "Minimum value for `type=\"number\"`.",
1466
+ "values": []
1467
+ },
1468
+ {
1469
+ "name": "max",
1470
+ "description": "Maximum value for `type=\"number\"`.",
1471
+ "values": []
1472
+ },
1473
+ {
1474
+ "name": "inverted",
1475
+ "description": "Adjusts colors for dark backgrounds.",
1476
+ "values": []
1477
+ },
1478
+ {
1479
+ "name": "showError",
1480
+ "description": "Shows error message when true. Set by validation or manually.",
1481
+ "values": []
1482
+ },
1483
+ {
1484
+ "name": "errorMessage",
1485
+ "description": "Error message text. Shown only when `showError` is true.",
1486
+ "values": []
1487
+ }
600
1488
  ],
601
1489
  "references": []
602
1490
  },
603
1491
  {
604
1492
  "name": "nys-toggle",
605
- "description": "`<nys-toggle>` is a form-associated toggle switch with label, description,\nsize variants, inverted styles, and optional icons. Supports keyboard\ninteraction and integrates with forms via ElementInternals.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when toggle changes state. Detail: `{ id, checked }`.\n- **nys-focus** - Fired when toggle receives focus.\n- **nys-blur** - Fired when toggle loses focus.\n\n### **Slots:**\n - **description** - Optional slot to provide additional description below the label.",
1493
+ "description": "Toggle switch for binary settings with immediate effect.\n---\n\n\n### **Events:**\n - **nys-change** - Fired when toggle state changes. Detail: `{id, checked}`.\n- **nys-focus** - Fired when toggle gains focus.\n- **nys-blur** - Fired when toggle loses focus.\n\n### **Slots:**\n - **description** - Custom HTML description content.",
606
1494
  "attributes": [
607
- { "name": "id", "values": [] },
608
- { "name": "name", "values": [] },
609
- { "name": "value", "values": [] },
610
- { "name": "label", "values": [] },
611
- { "name": "description", "values": [] },
612
- { "name": "form", "values": [] },
613
- { "name": "checked", "values": [] },
614
- { "name": "disabled", "values": [] },
615
- { "name": "noIcon", "values": [] },
616
- { "name": "inverted", "values": [] },
617
- { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
1495
+ {
1496
+ "name": "id",
1497
+ "description": "Unique identifier. Auto-generated if not provided.",
1498
+ "values": []
1499
+ },
1500
+ {
1501
+ "name": "name",
1502
+ "description": "Name for form submission.",
1503
+ "values": []
1504
+ },
1505
+ {
1506
+ "name": "value",
1507
+ "description": "Value submitted when toggle is on.",
1508
+ "values": []
1509
+ },
1510
+ { "name": "label", "description": "Visible label text.", "values": [] },
1511
+ {
1512
+ "name": "description",
1513
+ "description": "Helper text below label. Use slot for custom HTML.",
1514
+ "values": []
1515
+ },
1516
+ {
1517
+ "name": "form",
1518
+ "description": "Form `id` to associate with.",
1519
+ "values": []
1520
+ },
1521
+ {
1522
+ "name": "checked",
1523
+ "description": "Whether toggle is on.",
1524
+ "values": []
1525
+ },
1526
+ {
1527
+ "name": "disabled",
1528
+ "description": "Prevents interaction.",
1529
+ "values": []
1530
+ },
1531
+ {
1532
+ "name": "noIcon",
1533
+ "description": "Hides check/close icon inside toggle knob.",
1534
+ "values": []
1535
+ },
1536
+ {
1537
+ "name": "inverted",
1538
+ "description": "Adjusts colors for dark backgrounds.",
1539
+ "values": []
1540
+ },
1541
+ {
1542
+ "name": "size",
1543
+ "description": "Toggle size: `sm` or `md` (default).",
1544
+ "values": [{ "name": "sm" }, { "name": "md" }]
1545
+ }
618
1546
  ],
619
1547
  "references": []
620
1548
  },
621
1549
  {
622
1550
  "name": "nys-tooltip",
623
- "description": "`<nys-tooltip>` is a custom tooltip component for NYS design system elements.\nIt supports dynamic positioning, screen-reader accessibility, keyboard interaction,\nand viewport overflow handling.\n\nThe tooltip automatically positions itself relative to a target element specified\nvia the `for` attribute, but can also respect a user-defined position.\n---\n\n\n### **Events:**\n - **nys-focus** - Dispatched when the reference element receives focus (via keyboard or programmatically).\n- **nys-blur** - Dispatched when the reference element loses focus or mouse leaves the tooltip. Notes: - Tooltip visibility is automatically managed on hover/focus of the reference element. - The component adjusts position dynamically to prevent overflow off-screen. - Supports keyboard dismissal with the Escape key.",
1551
+ "description": "Contextual tooltip with auto-positioning, keyboard support, and screen reader integration.\n---\n",
624
1552
  "attributes": [
625
- { "name": "id", "values": [] },
626
- { "name": "text", "values": [] },
627
- { "name": "inverted", "values": [] },
628
- { "name": "for", "values": [] },
629
- { "name": "position", "values": [] }
1553
+ {
1554
+ "name": "id",
1555
+ "description": "Unique identifier. Auto-generated if not provided.",
1556
+ "values": []
1557
+ },
1558
+ {
1559
+ "name": "text",
1560
+ "description": "Tooltip content text. Required.",
1561
+ "values": []
1562
+ },
1563
+ {
1564
+ "name": "inverted",
1565
+ "description": "Adjusts colors for dark backgrounds.",
1566
+ "values": []
1567
+ },
1568
+ {
1569
+ "name": "for",
1570
+ "description": "ID of the trigger element to attach this tooltip to. Required.",
1571
+ "values": []
1572
+ },
1573
+ {
1574
+ "name": "position",
1575
+ "description": "Preferred position relative to trigger. Auto-adjusts if space is insufficient.",
1576
+ "values": []
1577
+ }
630
1578
  ],
631
1579
  "references": []
632
1580
  },
633
1581
  {
634
1582
  "name": "nys-unavfooter",
635
- "description": "`<nys-unavfooter>` is a footer component for New York State websites.\nIt displays the official NYS logo linking to ny.gov and a set of primary navigation links.\n\nFeatures:\n- Renders the NYS logo as an inline SVG linking to https://www.ny.gov\n- Provides key navigation links\n---\n",
1583
+ "description": "Universal NYS footer with logo and statewide links. Required site-wide.\n---\n",
636
1584
  "attributes": [],
637
1585
  "references": []
638
1586
  },
639
1587
  {
640
1588
  "name": "nys-unavheader",
641
- "description": "`<nys-unavheader>` is a universal header for New York State websites.\n\nFeatures:\n- Trust bar indicating official NYS site status, with expandable details\n- NYS logo linking to the homepage\n- Search bar with dropdown behavior for mobile and desktop\n- Language translation dropdown supporting multiple languages\n- Accessible interactions with ARIA attributes and keyboard handling\n---\n",
642
- "attributes": [
643
- { "name": "trustbarVisible", "values": [] },
644
- { "name": "searchDropdownVisible", "values": [] },
645
- { "name": "languageVisible", "values": [] },
646
- { "name": "isSearchFocused", "values": [] },
647
- { "name": "hideTranslate", "values": [] },
648
- { "name": "hideSearch", "values": [] },
1589
+ "description": "Universal NYS header with trust bar, search, and translation. Required site-wide.\n---\n",
1590
+ "attributes": [
1591
+ {
1592
+ "name": "trustbarVisible",
1593
+ "description": "Internal: Whether trust bar panel is expanded.",
1594
+ "values": []
1595
+ },
1596
+ {
1597
+ "name": "searchDropdownVisible",
1598
+ "description": "Internal: Whether search dropdown is visible (mobile).",
1599
+ "values": []
1600
+ },
1601
+ {
1602
+ "name": "languageVisible",
1603
+ "description": "Internal: Whether language dropdown is visible.",
1604
+ "values": []
1605
+ },
1606
+ {
1607
+ "name": "isSearchFocused",
1608
+ "description": "Internal: Whether search input is focused.",
1609
+ "values": []
1610
+ },
1611
+ {
1612
+ "name": "hideTranslate",
1613
+ "description": "Hides the translation dropdown.",
1614
+ "values": []
1615
+ },
1616
+ {
1617
+ "name": "hideSearch",
1618
+ "description": "Hides the search functionality.",
1619
+ "values": []
1620
+ },
1621
+ { "name": "searchUrl", "values": [] },
649
1622
  {
650
1623
  "name": "languages",
651
1624
  "values": [{ "name": "[string" }, { "name": "string][]" }]