@nysds/components 1.11.4 → 1.13.0

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 (68) hide show
  1. package/README.md +3 -1
  2. package/dist/.vscode/vscode.html-custom-data.json +183 -95
  3. package/dist/custom-elements.json +1570 -635
  4. package/dist/nysds.es.js +3414 -1837
  5. package/dist/nysds.es.js.map +1 -1
  6. package/dist/nysds.js +286 -187
  7. package/dist/nysds.js.map +1 -1
  8. package/dist/packages/nys-accordion/src/nys-accordion.d.ts +20 -5
  9. package/dist/packages/nys-accordion/src/nys-accordion.figma.d.ts +1 -0
  10. package/dist/packages/nys-accordion/src/nys-accordionitem.d.ts +20 -2
  11. package/dist/packages/nys-alert/src/nys-alert.d.ts +40 -8
  12. package/dist/packages/nys-alert/src/nys-alert.figma.d.ts +1 -0
  13. package/dist/packages/nys-avatar/src/nys-avatar.d.ts +25 -2
  14. package/dist/packages/nys-avatar/src/nys-avatar.figma.d.ts +1 -0
  15. package/dist/packages/nys-backtotop/src/nys-backtotop.d.ts +19 -0
  16. package/dist/packages/nys-backtotop/src/nys-backtotop.figma.d.ts +1 -0
  17. package/dist/packages/nys-badge/src/nys-badge.d.ts +22 -8
  18. package/dist/packages/nys-badge/src/nys-badge.figma.d.ts +1 -0
  19. package/dist/packages/nys-button/src/nys-button.d.ts +28 -20
  20. package/dist/packages/nys-button/src/nys-button.figma.d.ts +1 -0
  21. package/dist/packages/nys-checkbox/src/nys-checkbox.d.ts +35 -9
  22. package/dist/packages/nys-checkbox/src/nys-checkbox.figma.d.ts +1 -0
  23. package/dist/packages/nys-checkbox/src/nys-checkboxgroup.d.ts +31 -8
  24. package/dist/packages/nys-datepicker/src/index.d.ts +1 -0
  25. package/dist/packages/nys-datepicker/src/nys-datepicker.d.ts +116 -0
  26. package/dist/packages/nys-datepicker/src/nys-datepicker.figma.d.ts +1 -0
  27. package/dist/packages/nys-divider/src/nys-divider.d.ts +4 -0
  28. package/dist/packages/nys-divider/src/nys-divider.figma.d.ts +1 -0
  29. package/dist/packages/nys-errormessage/src/nys-errormessage.d.ts +9 -1
  30. package/dist/packages/nys-fileinput/src/nys-fileinput.d.ts +34 -5
  31. package/dist/packages/nys-fileinput/src/nys-fileinput.figma.d.ts +1 -0
  32. package/dist/packages/nys-fileinput/src/nys-fileitem.d.ts +4 -0
  33. package/dist/packages/nys-globalfooter/src/nys-globalfooter.d.ts +20 -3
  34. package/dist/packages/nys-globalfooter/src/nys-globalfooter.figma.d.ts +1 -0
  35. package/dist/packages/nys-globalheader/src/nys-global.logo.d.ts +2 -0
  36. package/dist/packages/nys-globalheader/src/nys-globalheader.d.ts +26 -8
  37. package/dist/packages/nys-globalheader/src/nys-globalheader.figma.d.ts +1 -0
  38. package/dist/packages/nys-icon/src/nys-icon.d.ts +12 -4
  39. package/dist/packages/nys-icon/src/nys-icon.figma.d.ts +1 -0
  40. package/dist/packages/nys-label/src/nys-label.d.ts +5 -0
  41. package/dist/packages/nys-modal/src/nys-modal.d.ts +25 -7
  42. package/dist/packages/nys-modal/src/nys-modal.figma.d.ts +1 -0
  43. package/dist/packages/nys-pagination/src/nys-pagination.d.ts +21 -3
  44. package/dist/packages/nys-pagination/src/nys-pagination.figma.d.ts +1 -0
  45. package/dist/packages/nys-radiobutton/src/nys-radiobutton.d.ts +28 -7
  46. package/dist/packages/nys-radiobutton/src/nys-radiobutton.figma.d.ts +1 -0
  47. package/dist/packages/nys-radiobutton/src/nys-radiogroup.d.ts +32 -11
  48. package/dist/packages/nys-select/src/nys-select.d.ts +36 -10
  49. package/dist/packages/nys-select/src/nys-select.figma.d.ts +1 -0
  50. package/dist/packages/nys-skipnav/src/nys-skipnav.d.ts +13 -1
  51. package/dist/packages/nys-skipnav/src/nys-skipnav.figma.d.ts +1 -0
  52. package/dist/packages/nys-table/src/index.d.ts +1 -0
  53. package/dist/packages/nys-table/src/nys-table.d.ts +38 -0
  54. package/dist/packages/nys-table/src/nys-table.figma.d.ts +1 -0
  55. package/dist/packages/nys-textarea/src/nys-textarea.d.ts +32 -12
  56. package/dist/packages/nys-textarea/src/nys-textarea.figma.d.ts +1 -0
  57. package/dist/packages/nys-textinput/src/nys-textinput.d.ts +33 -12
  58. package/dist/packages/nys-textinput/src/nys-textinput.figma.d.ts +1 -0
  59. package/dist/packages/nys-toggle/src/nys-toggle.d.ts +24 -7
  60. package/dist/packages/nys-toggle/src/nys-toggle.figma.d.ts +1 -0
  61. package/dist/packages/nys-tooltip/src/nys-tooltip.d.ts +49 -9
  62. package/dist/packages/nys-tooltip/src/nys-tooltip.figma.d.ts +1 -0
  63. package/dist/packages/nys-unavfooter/src/nys-unavfooter.d.ts +12 -1
  64. package/dist/packages/nys-unavfooter/src/nys-unavfooter.figma.d.ts +1 -0
  65. package/dist/packages/nys-unavheader/src/nys-unavheader.d.ts +20 -2
  66. package/dist/packages/nys-unavheader/src/nys-unavheader.figma.d.ts +1 -0
  67. package/dist/src/index.d.ts +2 -0
  68. package/package.json +19 -16
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # New York State Design System
2
2
 
3
+ ![Version](https://img.shields.io/github/v/release/ITS-HCD/nysds) ![Accessibility: WCAG 2.2 AA](https://img.shields.io/badge/accessibility-WCAG%202.2%20AA-green)
4
+
3
5
  This repository contains a library of reusable code components for building New York State applications and websites. These components are built using LitElement and styled with custom CSS properties (variables) for easy customization.
4
6
 
5
7
  ## About the New York State Design System
@@ -30,4 +32,4 @@ npm install @nysds/components @nysds/styles
30
32
  ```html
31
33
  <script type="module" src="[path-to-dir]/nysds.js"></script>
32
34
  <link rel="stylesheet" href="[path-to-dir]/nysds-full.min.css" />
33
- ```
35
+ ```
@@ -4,7 +4,7 @@
4
4
  "tags": [
5
5
  {
6
6
  "name": "nys-accordion",
7
- "description": "The \"nys-accordion\" is the wrapper that groups individual accordion items within it.\nThe items within is called \"nys-accordionitem\"\n---\n",
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.",
8
8
  "attributes": [
9
9
  { "name": "id", "values": [] },
10
10
  { "name": "singleSelect", "values": [] },
@@ -14,7 +14,7 @@
14
14
  },
15
15
  {
16
16
  "name": "nys-accordionitem",
17
- "description": "\n---\n\n\n### **Events:**\n - **nys-accordionitem-toggle**",
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.",
18
18
  "attributes": [
19
19
  { "name": "id", "values": [] },
20
20
  { "name": "heading", "values": [] },
@@ -25,13 +25,9 @@
25
25
  },
26
26
  {
27
27
  "name": "nys-alert",
28
- "description": "\n---\n\n\n### **Events:**\n - **nys-close**",
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.",
29
29
  "attributes": [
30
- {
31
- "name": "id",
32
- "description": "******************** Properties *********************",
33
- "values": []
34
- },
30
+ { "name": "id", "values": [] },
35
31
  { "name": "heading", "values": [] },
36
32
  { "name": "icon", "values": [] },
37
33
  { "name": "dismissible", "values": [] },
@@ -41,19 +37,26 @@
41
37
  { "name": "secondaryAction", "values": [] },
42
38
  { "name": "primaryLabel", "values": [] },
43
39
  { "name": "secondaryLabel", "values": [] },
44
- { "name": "type", "values": [] }
40
+ {
41
+ "name": "type",
42
+ "values": [
43
+ { "name": "" },
44
+ { "name": "base" },
45
+ { "name": "info" },
46
+ { "name": "success" },
47
+ { "name": "warning" },
48
+ { "name": "danger" },
49
+ { "name": "emergency" }
50
+ ]
51
+ }
45
52
  ],
46
53
  "references": []
47
54
  },
48
55
  {
49
56
  "name": "nys-avatar",
50
- "description": "\n---\n",
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.",
51
58
  "attributes": [
52
- {
53
- "name": "id",
54
- "description": "******************** Properties *********************",
55
- "values": []
56
- },
59
+ { "name": "id", "values": [] },
57
60
  { "name": "ariaLabel", "values": [] },
58
61
  { "name": "image", "values": [] },
59
62
  { "name": "initials", "values": [] },
@@ -67,7 +70,7 @@
67
70
  },
68
71
  {
69
72
  "name": "nys-backtotop",
70
- "description": "\n---\n",
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).",
71
74
  "attributes": [
72
75
  { "name": "position", "values": [] },
73
76
  { "name": "visible", "values": [] }
@@ -76,17 +79,20 @@
76
79
  },
77
80
  {
78
81
  "name": "nys-badge",
79
- "description": "\n---\n",
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",
80
83
  "attributes": [
81
84
  { "name": "id", "values": [] },
82
85
  { "name": "name", "values": [] },
83
- {
84
- "name": "size",
85
- "values": [{ "name": "(typeof NysBadge.VALID_SIZES)[number]" }]
86
- },
86
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] },
87
87
  {
88
88
  "name": "intent",
89
- "values": [{ "name": "(typeof NysBadge.VALID_INTENT)[number]" }]
89
+ "values": [
90
+ { "name": "" },
91
+ { "name": "neutral" },
92
+ { "name": "error" },
93
+ { "name": "success" },
94
+ { "name": "warning" }
95
+ ]
90
96
  },
91
97
  { "name": "prefixLabel", "values": [] },
92
98
  { "name": "label", "values": [] },
@@ -97,18 +103,24 @@
97
103
  },
98
104
  {
99
105
  "name": "nys-button",
100
- "description": "\n---\n\n\n### **Events:**\n - **nys-focus**\n- **nys-blur**\n- **nys-click**\n\n### **Methods:**\n - **focus(options: _FocusOptions_)** - ****************** Public Methods *******************",
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",
101
107
  "attributes": [
102
108
  { "name": "id", "values": [] },
103
109
  { "name": "name", "values": [] },
104
110
  {
105
111
  "name": "size",
106
- "values": [{ "name": "(typeof NysButton.VALID_SIZES)[number]" }]
112
+ "values": [{ "name": "sm" }, { "name": "md" }, { "name": "lg" }]
107
113
  },
108
114
  { "name": "fullWidth", "values": [] },
109
115
  {
110
116
  "name": "variant",
111
- "values": [{ "name": "(typeof NysButton.VALID_VARIANTS)[number]" }]
117
+ "values": [
118
+ { "name": "" },
119
+ { "name": "filled" },
120
+ { "name": "outline" },
121
+ { "name": "ghost" },
122
+ { "name": "text" }
123
+ ]
112
124
  },
113
125
  { "name": "inverted", "values": [] },
114
126
  { "name": "label", "values": [] },
@@ -124,19 +136,31 @@
124
136
  { "name": "ariaDescription", "values": [] },
125
137
  {
126
138
  "name": "type",
127
- "values": [{ "name": "(typeof NysButton.VALID_TYPES)[number]" }]
139
+ "values": [
140
+ { "name": "" },
141
+ { "name": "submit" },
142
+ { "name": "reset" },
143
+ { "name": "button" }
144
+ ]
128
145
  },
129
146
  { "name": "href", "values": [] },
130
147
  {
131
148
  "name": "target",
132
- "values": [{ "name": "(typeof NysButton.VALID_TARGETS)[number]" }]
149
+ "values": [
150
+ { "name": "" },
151
+ { "name": "_self" },
152
+ { "name": "_blank" },
153
+ { "name": "_parent" },
154
+ { "name": "_top" },
155
+ { "name": "framename" }
156
+ ]
133
157
  }
134
158
  ],
135
159
  "references": []
136
160
  },
137
161
  {
138
162
  "name": "nys-checkbox",
139
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**\n- **nys-focus**\n- **nys-blur**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - ******************** Functions *********************",
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",
140
164
  "attributes": [
141
165
  { "name": "checked", "values": [] },
142
166
  { "name": "disabled", "values": [] },
@@ -152,16 +176,14 @@
152
176
  { "name": "groupExist", "values": [] },
153
177
  { "name": "tile", "values": [] },
154
178
  { "name": "inverted", "values": [] },
155
- {
156
- "name": "size",
157
- "values": [{ "name": "(typeof NysCheckbox.VALID_SIZES)[number]" }]
158
- }
179
+ { "name": "tooltip", "values": [] },
180
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
159
181
  ],
160
182
  "references": []
161
183
  },
162
184
  {
163
185
  "name": "nys-checkboxgroup",
164
- "description": "\n---\n",
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",
165
187
  "attributes": [
166
188
  { "name": "id", "values": [] },
167
189
  { "name": "name", "values": [] },
@@ -172,27 +194,50 @@
172
194
  { "name": "label", "values": [] },
173
195
  { "name": "description", "values": [] },
174
196
  { "name": "tile", "values": [] },
175
- { "name": "_tooltip", "values": [] },
197
+ { "name": "tooltip", "values": [] },
176
198
  { "name": "inverted", "values": [] },
177
199
  { "name": "form", "values": [] },
200
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
201
+ ],
202
+ "references": []
203
+ },
204
+ {
205
+ "name": "nys-datepicker",
206
+ "description": "`<nys-datepicker>` is a form-associated, accessible date picker component.\nOptionally wraps a `<wc-datepicker>` for custom calendar UI.\n\nEvents:\n---\n\n\n### **Events:**\n - **nys-blur** - Dispatched when input or calendar loses focus\n- **nys-input** - Dispatched when user selects or types a valid date Notes: - Uses native date input on Safari or mobile devices (custom calendar removed for these scenarios)\n\n### **Methods:**\n - **checkValidity(): _boolean_** - Passive check of validity:\n- Returns true/false\n- Does NOT update UI or show errors\n- Used in form submission checks",
207
+ "attributes": [
208
+ { "name": "id", "values": [] },
209
+ { "name": "name", "values": [] },
178
210
  {
179
- "name": "size",
180
- "values": [
181
- { "name": "(typeof NysCheckboxgroup.VALID_SIZES)[number]" }
182
- ]
183
- }
211
+ "name": "width",
212
+ "values": [{ "name": "md" }, { "name": "lg" }, { "name": "full" }]
213
+ },
214
+ { "name": "hideTodayButton", "values": [] },
215
+ { "name": "hideClearButton", "values": [] },
216
+ { "name": "disabled", "values": [] },
217
+ { "name": "required", "values": [] },
218
+ { "name": "optional", "values": [] },
219
+ { "name": "showError", "values": [] },
220
+ { "name": "errorMessage", "values": [] },
221
+ { "name": "form", "values": [] },
222
+ { "name": "tooltip", "values": [] },
223
+ { "name": "type", "values": [] },
224
+ { "name": "label", "values": [] },
225
+ { "name": "description", "values": [] },
226
+ { "name": "startDate", "values": [] },
227
+ { "name": "inverted", "values": [] },
228
+ { "name": "value", "values": [{ "name": "Date" }] }
184
229
  ],
185
230
  "references": []
186
231
  },
187
232
  {
188
233
  "name": "nys-divider",
189
- "description": "\n---\n",
234
+ "description": "`<nys-divider>` renders a horizontal rule `<hr>` element with optional styling.\nCan be inverted for dark backgrounds.\n---\n",
190
235
  "attributes": [{ "name": "inverted", "values": [] }],
191
236
  "references": []
192
237
  },
193
238
  {
194
239
  "name": "nys-errormessage",
195
- "description": "\n---\n",
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",
196
241
  "attributes": [
197
242
  { "name": "showError", "values": [] },
198
243
  { "name": "errorMessage", "values": [] },
@@ -202,7 +247,7 @@
202
247
  },
203
248
  {
204
249
  "name": "nys-fileinput",
205
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**",
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",
206
251
  "attributes": [
207
252
  { "name": "id", "values": [] },
208
253
  { "name": "name", "values": [] },
@@ -210,7 +255,7 @@
210
255
  { "name": "description", "values": [] },
211
256
  { "name": "multiple", "values": [] },
212
257
  { "name": "form", "values": [] },
213
- { "name": "_tooltip", "values": [] },
258
+ { "name": "tooltip", "values": [] },
214
259
  { "name": "accept", "values": [] },
215
260
  { "name": "disabled", "values": [] },
216
261
  { "name": "required", "values": [] },
@@ -225,7 +270,7 @@
225
270
  },
226
271
  {
227
272
  "name": "nys-fileitem",
228
- "description": "\n---\n\n\n### **Events:**\n - **nys-fileRemove**",
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**",
229
274
  "attributes": [
230
275
  { "name": "filename", "values": [] },
231
276
  {
@@ -245,26 +290,18 @@
245
290
  },
246
291
  {
247
292
  "name": "nys-globalfooter",
248
- "description": "\n---\n",
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",
249
294
  "attributes": [
250
- {
251
- "name": "agencyName",
252
- "description": "******************** Properties *********************",
253
- "values": []
254
- },
295
+ { "name": "agencyName", "values": [] },
255
296
  { "name": "homepageLink", "values": [] }
256
297
  ],
257
298
  "references": []
258
299
  },
259
300
  {
260
301
  "name": "nys-globalheader",
261
- "description": "\n---\n",
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",
262
303
  "attributes": [
263
- {
264
- "name": "appName",
265
- "description": "******************** Properties *********************",
266
- "values": []
267
- },
304
+ { "name": "appName", "values": [] },
268
305
  { "name": "agencyName", "values": [] },
269
306
  { "name": "homepageLink", "values": [] }
270
307
  ],
@@ -272,7 +309,7 @@
272
309
  },
273
310
  {
274
311
  "name": "nys-icon",
275
- "description": "\n---\n",
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",
276
313
  "attributes": [
277
314
  { "name": "name", "values": [] },
278
315
  { "name": "ariaLabel", "values": [] },
@@ -281,14 +318,34 @@
281
318
  { "name": "color", "values": [] },
282
319
  {
283
320
  "name": "size",
284
- "values": [{ "name": "(typeof NysIcon.VALID_TYPES)[number]" }]
321
+ "values": [
322
+ { "name": "" },
323
+ { "name": "xs" },
324
+ { "name": "sm" },
325
+ { "name": "md" },
326
+ { "name": "lg" },
327
+ { "name": "xl" },
328
+ { "name": "2xl" },
329
+ { "name": "3xl" },
330
+ { "name": "4xl" },
331
+ { "name": "5xl" },
332
+ { "name": "12" },
333
+ { "name": "14" },
334
+ { "name": "16" },
335
+ { "name": "18" },
336
+ { "name": "20" },
337
+ { "name": "24" },
338
+ { "name": "32" },
339
+ { "name": "40" },
340
+ { "name": "50" }
341
+ ]
285
342
  }
286
343
  ],
287
344
  "references": []
288
345
  },
289
346
  {
290
347
  "name": "nys-label",
291
- "description": "\n---\n",
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",
292
349
  "attributes": [
293
350
  { "name": "for", "values": [] },
294
351
  { "name": "label", "values": [] },
@@ -301,7 +358,7 @@
301
358
  },
302
359
  {
303
360
  "name": "nys-modal",
304
- "description": "\n---\n\n\n### **Events:**\n - **nys-open**\n- **nys-close**",
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",
305
362
  "attributes": [
306
363
  { "name": "id", "values": [] },
307
364
  { "name": "heading", "values": [] },
@@ -310,14 +367,14 @@
310
367
  { "name": "mandatory", "values": [] },
311
368
  {
312
369
  "name": "width",
313
- "values": [{ "name": "(typeof NysModal.VALID_WIDTHS)[number]" }]
370
+ "values": [{ "name": "sm" }, { "name": "md" }, { "name": "lg" }]
314
371
  }
315
372
  ],
316
373
  "references": []
317
374
  },
318
375
  {
319
376
  "name": "nys-pagination",
320
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**",
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 }",
321
378
  "attributes": [
322
379
  { "name": "id", "values": [] },
323
380
  { "name": "name", "values": [] },
@@ -329,7 +386,7 @@
329
386
  },
330
387
  {
331
388
  "name": "nys-radiobutton",
332
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**\n- **nys-focus**\n- **nys-blur**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - ******************** Functions *********************",
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",
333
390
  "attributes": [
334
391
  { "name": "checked", "values": [] },
335
392
  { "name": "disabled", "values": [] },
@@ -341,17 +398,14 @@
341
398
  { "name": "value", "values": [] },
342
399
  { "name": "inverted", "values": [] },
343
400
  { "name": "form", "values": [] },
344
- {
345
- "name": "size",
346
- "values": [{ "name": "(typeof NysRadiobutton.VALID_SIZES)[number]" }]
347
- },
401
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] },
348
402
  { "name": "tile", "values": [] }
349
403
  ],
350
404
  "references": []
351
405
  },
352
406
  {
353
407
  "name": "nys-radiogroup",
354
- "description": "\n---\n",
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",
355
409
  "attributes": [
356
410
  { "name": "id", "values": [] },
357
411
  { "name": "name", "values": [] },
@@ -362,13 +416,10 @@
362
416
  { "name": "label", "values": [] },
363
417
  { "name": "description", "values": [] },
364
418
  { "name": "tile", "values": [] },
365
- { "name": "_tooltip", "values": [] },
419
+ { "name": "tooltip", "values": [] },
366
420
  { "name": "inverted", "values": [] },
367
421
  { "name": "form", "values": [] },
368
- {
369
- "name": "size",
370
- "values": [{ "name": "(typeof NysRadiogroup.VALID_SIZES)[number]" }]
371
- }
422
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
372
423
  ],
373
424
  "references": []
374
425
  },
@@ -386,7 +437,7 @@
386
437
  },
387
438
  {
388
439
  "name": "nys-select",
389
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**\n- **nys-focus**\n- **nys-blur**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - ******************** Functions *********************",
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",
390
441
  "attributes": [
391
442
  { "name": "id", "values": [] },
392
443
  { "name": "name", "values": [] },
@@ -396,21 +447,27 @@
396
447
  { "name": "disabled", "values": [] },
397
448
  { "name": "required", "values": [] },
398
449
  { "name": "optional", "values": [] },
399
- { "name": "_tooltip", "values": [] },
450
+ { "name": "tooltip", "values": [] },
400
451
  { "name": "form", "values": [] },
401
452
  { "name": "inverted", "values": [] },
402
453
  { "name": "showError", "values": [] },
403
454
  { "name": "errorMessage", "values": [] },
404
455
  {
405
456
  "name": "width",
406
- "values": [{ "name": "(typeof NysSelect.VALID_WIDTHS)[number]" }]
457
+ "values": [
458
+ { "name": "" },
459
+ { "name": "sm" },
460
+ { "name": "md" },
461
+ { "name": "lg" },
462
+ { "name": "full" }
463
+ ]
407
464
  }
408
465
  ],
409
466
  "references": []
410
467
  },
411
468
  {
412
469
  "name": "nys-skipnav",
413
- "description": "\n---\n",
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",
414
471
  "attributes": [
415
472
  { "name": "id", "values": [] },
416
473
  { "name": "href", "values": [] }
@@ -432,7 +489,7 @@
432
489
  },
433
490
  {
434
491
  "name": "nys-stepper",
435
- "description": "\n---\n",
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",
436
493
  "attributes": [
437
494
  { "name": "id", "values": [] },
438
495
  { "name": "name", "values": [] },
@@ -442,9 +499,22 @@
442
499
  ],
443
500
  "references": []
444
501
  },
502
+ {
503
+ "name": "nys-table",
504
+ "description": "`<nys-table>` is a responsive table component that can display native HTML tables,\nsupports striped and bordered styling, sortable columns, and CSV download.\n---\n\n\n### **Events:**\n - **nys-click** - Fired when the download button or sortable headers are clicked.\n\n### **Slots:**\n - _default_ - Accepts a `<table>` element. Only the first table is rendered.",
505
+ "attributes": [
506
+ { "name": "id", "values": [] },
507
+ { "name": "name", "values": [] },
508
+ { "name": "striped", "values": [] },
509
+ { "name": "sortable", "values": [] },
510
+ { "name": "bordered", "values": [] },
511
+ { "name": "download", "values": [] }
512
+ ],
513
+ "references": []
514
+ },
445
515
  {
446
516
  "name": "nys-textarea",
447
- "description": "\n---\n\n\n### **Events:**\n - **nys-input**\n- **nys-focus**\n- **nys-blur**\n- **nys-select**\n- **nys-selectionchange**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - ******************** Functions *********************",
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.",
448
518
  "attributes": [
449
519
  { "name": "id", "values": [] },
450
520
  { "name": "name", "values": [] },
@@ -456,18 +526,24 @@
456
526
  { "name": "readonly", "values": [] },
457
527
  { "name": "required", "values": [] },
458
528
  { "name": "optional", "values": [] },
459
- { "name": "_tooltip", "values": [] },
529
+ { "name": "tooltip", "values": [] },
460
530
  { "name": "inverted", "values": [] },
461
531
  { "name": "form", "values": [] },
462
532
  { "name": "maxlength", "values": [] },
463
533
  {
464
534
  "name": "width",
465
- "values": [{ "name": "(typeof NysTextarea.VALID_WIDTHS)[number]" }]
535
+ "values": [
536
+ { "name": "" },
537
+ { "name": "sm" },
538
+ { "name": "md" },
539
+ { "name": "lg" },
540
+ { "name": "full" }
541
+ ]
466
542
  },
467
543
  { "name": "rows", "values": [] },
468
544
  {
469
545
  "name": "resize",
470
- "values": [{ "name": "(typeof NysTextarea.VALID_RESIZE)[number]" }]
546
+ "values": [{ "name": "vertical" }, { "name": "none" }]
471
547
  },
472
548
  { "name": "showError", "values": [] },
473
549
  { "name": "errorMessage", "values": [] }
@@ -476,13 +552,22 @@
476
552
  },
477
553
  {
478
554
  "name": "nys-textinput",
479
- "description": "\n---\n\n\n### **Events:**\n - **nys-input**\n- **nys-focus**\n- **nys-blur**\n\n### **Methods:**\n - **checkValidity(): _boolean_** - ******************** Functions *********************",
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.",
480
556
  "attributes": [
481
557
  { "name": "id", "values": [] },
482
558
  { "name": "name", "values": [] },
483
559
  {
484
560
  "name": "type",
485
- "values": [{ "name": "(typeof NysTextinput.VALID_TYPES)[number]" }]
561
+ "values": [
562
+ { "name": "" },
563
+ { "name": "email" },
564
+ { "name": "number" },
565
+ { "name": "password" },
566
+ { "name": "search" },
567
+ { "name": "tel" },
568
+ { "name": "text" },
569
+ { "name": "url" }
570
+ ]
486
571
  },
487
572
  { "name": "label", "values": [] },
488
573
  { "name": "description", "values": [] },
@@ -492,13 +577,19 @@
492
577
  { "name": "readonly", "values": [] },
493
578
  { "name": "required", "values": [] },
494
579
  { "name": "optional", "values": [] },
495
- { "name": "_tooltip", "values": [] },
580
+ { "name": "tooltip", "values": [] },
496
581
  { "name": "form", "values": [] },
497
582
  { "name": "pattern", "values": [] },
498
583
  { "name": "maxlength", "values": [] },
499
584
  {
500
585
  "name": "width",
501
- "values": [{ "name": "(typeof NysTextinput.VALID_WIDTHS)[number]" }]
586
+ "values": [
587
+ { "name": "" },
588
+ { "name": "sm" },
589
+ { "name": "md" },
590
+ { "name": "lg" },
591
+ { "name": "full" }
592
+ ]
502
593
  },
503
594
  { "name": "step", "values": [] },
504
595
  { "name": "min", "values": [] },
@@ -511,7 +602,7 @@
511
602
  },
512
603
  {
513
604
  "name": "nys-toggle",
514
- "description": "\n---\n\n\n### **Events:**\n - **nys-change**\n- **nys-focus**\n- **nys-blur**",
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.",
515
606
  "attributes": [
516
607
  { "name": "id", "values": [] },
517
608
  { "name": "name", "values": [] },
@@ -523,34 +614,31 @@
523
614
  { "name": "disabled", "values": [] },
524
615
  { "name": "noIcon", "values": [] },
525
616
  { "name": "inverted", "values": [] },
526
- {
527
- "name": "size",
528
- "values": [{ "name": "(typeof NysToggle.VALID_SIZES)[number]" }]
529
- }
617
+ { "name": "size", "values": [{ "name": "sm" }, { "name": "md" }] }
530
618
  ],
531
619
  "references": []
532
620
  },
533
621
  {
534
622
  "name": "nys-tooltip",
535
- "description": "\n---\n",
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.",
536
624
  "attributes": [
537
625
  { "name": "id", "values": [] },
538
626
  { "name": "text", "values": [] },
539
627
  { "name": "inverted", "values": [] },
540
- { "name": "focusable", "values": [] },
628
+ { "name": "for", "values": [] },
541
629
  { "name": "position", "values": [] }
542
630
  ],
543
631
  "references": []
544
632
  },
545
633
  {
546
634
  "name": "nys-unavfooter",
547
- "description": "\n---\n",
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",
548
636
  "attributes": [],
549
637
  "references": []
550
638
  },
551
639
  {
552
640
  "name": "nys-unavheader",
553
- "description": "\n---\n",
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",
554
642
  "attributes": [
555
643
  { "name": "trustbarVisible", "values": [] },
556
644
  { "name": "searchDropdownVisible", "values": [] },