@pure-ds/storybook 0.7.23 → 0.7.26

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 (83) hide show
  1. package/.storybook/htmlPreview.css +8 -0
  2. package/.storybook/preview.js +27 -5
  3. package/dist/pds-reference.json +2302 -1031
  4. package/package.json +2 -2
  5. package/public/assets/js/app.js +1 -1
  6. package/public/assets/js/pds-ask.js +6 -6
  7. package/public/assets/js/pds-enhancers.js +1 -1
  8. package/public/assets/js/pds-manager.js +129 -54
  9. package/public/assets/pds/components/pds-calendar.js +91 -159
  10. package/public/assets/pds/components/pds-daterange.js +683 -0
  11. package/public/assets/pds/components/pds-form.js +123 -21
  12. package/public/assets/pds/components/pds-live-edit.js +3 -8
  13. package/public/assets/pds/components/pds-omnibox.js +37 -1
  14. package/public/assets/pds/components/pds-rating.js +648 -0
  15. package/public/assets/pds/components/pds-tags.js +802 -0
  16. package/public/assets/pds/components/pds-toaster.js +35 -1
  17. package/public/assets/pds/core/pds-ask.js +6 -6
  18. package/public/assets/pds/core/pds-enhancers.js +1 -1
  19. package/public/assets/pds/core/pds-manager.js +129 -54
  20. package/public/assets/pds/custom-elements.json +1099 -74
  21. package/public/assets/pds/pds-css-complete.json +7 -2
  22. package/public/assets/pds/pds-runtime-config.json +1 -1
  23. package/public/assets/pds/pds.css-data.json +4 -4
  24. package/public/assets/pds/styles/pds-components.css +96 -24
  25. package/public/assets/pds/styles/pds-components.css.js +192 -48
  26. package/public/assets/pds/styles/pds-primitives.css +6 -3
  27. package/public/assets/pds/styles/pds-primitives.css.js +12 -6
  28. package/public/assets/pds/styles/pds-styles.css +104 -29
  29. package/public/assets/pds/styles/pds-styles.css.js +208 -58
  30. package/public/assets/pds/styles/pds-utilities.css +2 -2
  31. package/public/assets/pds/styles/pds-utilities.css.js +4 -4
  32. package/public/assets/pds/vscode-custom-data.json +97 -0
  33. package/src/js/common/ask.js +122 -12
  34. package/src/js/pds-core/pds-enhancers.js +53 -8
  35. package/src/js/pds-core/pds-generator.js +104 -29
  36. package/src/js/pds-core/pds-live.js +5 -0
  37. package/src/js/pds-core/pds-ontology.js +2 -2
  38. package/stories/WhatIsPDS.md +1 -1
  39. package/stories/components/PdsCalendar.stories.js +650 -168
  40. package/stories/components/PdsDaterange.stories.js +85 -0
  41. package/stories/components/PdsForm.Basics.stories.js +16 -0
  42. package/stories/components/PdsForm.ConditionalAndCalculated.stories.js +16 -0
  43. package/stories/components/PdsForm.CustomContent.stories.js +10 -0
  44. package/stories/components/PdsForm.Dialogs.stories.js +7 -0
  45. package/stories/components/PdsForm.Layout.stories.js +16 -0
  46. package/stories/components/PdsForm.SelectionAndArrays.stories.js +12 -0
  47. package/stories/components/PdsForm.stories.js +179 -235
  48. package/stories/components/PdsIcon.stories.js +17 -7
  49. package/stories/components/PdsOmnibox.stories.js +2 -133
  50. package/stories/components/PdsRating.stories.js +126 -0
  51. package/stories/components/PdsTags.stories.js +224 -0
  52. package/stories/components/PdsToaster.stories.js +37 -117
  53. package/stories/components/omnibox-countries-api-settings.js +63 -0
  54. package/stories/enhancements/Accordion.stories.js +34 -39
  55. package/stories/enhancements/_enhancement-header.js +1 -1
  56. package/stories/foundations/Colors.stories.js +6 -1
  57. package/stories/foundations/Dividers.stories.js +2 -2
  58. package/stories/foundations/HTMLDefaults.stories.js +16 -16
  59. package/stories/foundations/Icons.stories.js +14 -14
  60. package/stories/foundations/MeshGradients.stories.js +13 -3
  61. package/stories/foundations/SmartSurfaces.stories.js +50 -36
  62. package/stories/foundations/Typography.stories.js +30 -108
  63. package/stories/foundations/ZIndex.stories.js +9 -9
  64. package/stories/layout/LayoutOverview.stories.js +3 -3
  65. package/stories/layout/LayoutSystem.stories.js +37 -31
  66. package/stories/patterns/BorderEffects.stories.js +28 -16
  67. package/stories/patterns/InteractiveStates.stories.js +42 -27
  68. package/stories/patterns/Utilities.stories.js +45 -23
  69. package/stories/primitives/ArticleLayout.stories.js +176 -0
  70. package/stories/primitives/Badges.stories.js +24 -8
  71. package/stories/primitives/Buttons.stories.js +29 -9
  72. package/stories/primitives/Callouts.stories.js +13 -12
  73. package/stories/primitives/Cards.stories.js +17 -10
  74. package/stories/primitives/FormElements.stories.js +8 -2
  75. package/stories/primitives/HtmlFormElements.stories.js +8 -2
  76. package/stories/primitives/HtmlFormGroups.stories.js +5 -2
  77. package/stories/primitives/Media.stories.js +47 -33
  78. package/stories/primitives/Tables.stories.js +25 -7
  79. package/stories/utilities/Backdrop.stories.js +4 -4
  80. package/stories/utils/PdsAsk.stories.js +17 -5
  81. package/stories/utils/PdsObjectApi.stories.js +716 -0
  82. package/stories/utils/PdsParse.stories.js +14 -5
  83. package/stories/utils/PdsToast.stories.js +23 -9
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedAt": "2026-02-26T14:42:23.254Z",
2
+ "generatedAt": "2026-03-03T15:26:02.592Z",
3
3
  "sources": {
4
4
  "customElements": "custom-elements.json",
5
5
  "ontology": "src\\js\\pds-core\\pds-ontology.js",
@@ -14,7 +14,7 @@
14
14
  "storyTitle": "Components/pds-calendar",
15
15
  "category": "Components",
16
16
  "description": null,
17
- "docsDescription": "A fully featured calendar component with month navigation, event display, and expandable day views",
17
+ "docsDescription": "A fully featured calendar component with month navigation, event display, and keyboard-accessible date selection",
18
18
  "pdsTags": [
19
19
  "autodocs",
20
20
  "calendar",
@@ -38,69 +38,61 @@
38
38
  ],
39
39
  "category": "form"
40
40
  },
41
- "stories": [
42
- {
43
- "exportName": "Default",
44
- "name": "Default",
45
- "id": "components-pds-calendar--default",
46
- "tags": [],
47
- "description": null,
48
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
49
- },
41
+ "stories": [],
42
+ "sourceModule": "public/assets/pds/components/pds-calendar.js",
43
+ "superclass": "HTMLElement",
44
+ "attributes": [
50
45
  {
51
- "exportName": "DynamicEvents",
52
- "name": "DynamicEvents",
53
- "id": "components-pds-calendar--dynamic-events",
54
- "tags": [],
55
- "description": null,
56
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
46
+ "name": "date",
47
+ "description": "The date to display (defaults to current date). Accepts any valid date string",
48
+ "type": "String",
49
+ "default": null,
50
+ "fieldName": null,
51
+ "property": "date"
57
52
  },
58
53
  {
59
- "exportName": "EventTypes",
60
- "name": "EventTypes",
61
- "id": "components-pds-calendar--event-types",
62
- "tags": [],
54
+ "name": "required",
63
55
  "description": null,
64
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
56
+ "type": null,
57
+ "default": null,
58
+ "fieldName": null,
59
+ "property": "required"
65
60
  },
66
61
  {
67
- "exportName": "FormParticipation",
68
- "name": "FormParticipation",
69
- "id": "components-pds-calendar--form-participation",
70
- "tags": [],
62
+ "name": "name",
71
63
  "description": null,
72
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
64
+ "type": null,
65
+ "default": null,
66
+ "fieldName": null,
67
+ "property": "name"
73
68
  },
74
69
  {
75
- "exportName": "WithManyEvents",
76
- "name": "WithManyEvents",
77
- "id": "components-pds-calendar--with-many-events",
78
- "tags": [],
70
+ "name": "disabled",
79
71
  "description": null,
80
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
72
+ "type": null,
73
+ "default": null,
74
+ "fieldName": null,
75
+ "property": "disabled"
81
76
  },
82
77
  {
83
- "exportName": "WithSpecificDate",
84
- "name": "WithSpecificDate",
85
- "id": "components-pds-calendar--with-specific-date",
86
- "tags": [],
78
+ "name": "compact",
87
79
  "description": null,
88
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
89
- }
90
- ],
91
- "sourceModule": "public/assets/pds/components/pds-calendar.js",
92
- "superclass": "HTMLElement",
93
- "attributes": [
94
- {
95
- "name": "date",
96
- "description": "The date to display (defaults to current date). Accepts any valid date string",
97
- "type": "String",
80
+ "type": null,
98
81
  "default": null,
99
82
  "fieldName": null,
100
- "property": "date"
83
+ "property": "compact"
101
84
  }
102
85
  ],
103
86
  "properties": [
87
+ {
88
+ "name": "compact",
89
+ "attribute": "compact",
90
+ "description": null,
91
+ "type": null,
92
+ "default": null,
93
+ "reflects": false,
94
+ "privacy": "public"
95
+ },
104
96
  {
105
97
  "name": "date",
106
98
  "attribute": "date",
@@ -118,22 +110,167 @@
118
110
  "default": "new DateHelper()",
119
111
  "reflects": false,
120
112
  "privacy": "public"
113
+ },
114
+ {
115
+ "name": "disabled",
116
+ "attribute": "disabled",
117
+ "description": null,
118
+ "type": null,
119
+ "default": null,
120
+ "reflects": false,
121
+ "privacy": "public"
122
+ },
123
+ {
124
+ "name": "form",
125
+ "attribute": null,
126
+ "description": null,
127
+ "type": null,
128
+ "default": null,
129
+ "reflects": false,
130
+ "privacy": "public"
131
+ },
132
+ {
133
+ "name": "formAssociated",
134
+ "attribute": null,
135
+ "description": null,
136
+ "type": "boolean",
137
+ "default": "true",
138
+ "reflects": false,
139
+ "privacy": "public"
140
+ },
141
+ {
142
+ "name": "name",
143
+ "attribute": "name",
144
+ "description": null,
145
+ "type": null,
146
+ "default": null,
147
+ "reflects": false,
148
+ "privacy": "public"
149
+ },
150
+ {
151
+ "name": "required",
152
+ "attribute": "required",
153
+ "description": null,
154
+ "type": null,
155
+ "default": null,
156
+ "reflects": false,
157
+ "privacy": "public"
158
+ },
159
+ {
160
+ "name": "type",
161
+ "attribute": null,
162
+ "description": null,
163
+ "type": null,
164
+ "default": null,
165
+ "reflects": false,
166
+ "privacy": "public"
167
+ },
168
+ {
169
+ "name": "value",
170
+ "attribute": null,
171
+ "description": null,
172
+ "type": null,
173
+ "default": null,
174
+ "reflects": false,
175
+ "privacy": "public"
121
176
  }
122
177
  ],
123
178
  "methods": [
179
+ {
180
+ "name": "checkValidity",
181
+ "description": null,
182
+ "parameters": [],
183
+ "return": null
184
+ },
185
+ {
186
+ "name": "focus",
187
+ "description": null,
188
+ "parameters": [
189
+ {
190
+ "name": "options",
191
+ "type": null,
192
+ "description": null
193
+ }
194
+ ],
195
+ "return": null
196
+ },
197
+ {
198
+ "name": "formAssociatedCallback",
199
+ "description": null,
200
+ "parameters": [],
201
+ "return": null
202
+ },
203
+ {
204
+ "name": "formDisabledCallback",
205
+ "description": null,
206
+ "parameters": [
207
+ {
208
+ "name": "disabled",
209
+ "type": null,
210
+ "description": null
211
+ }
212
+ ],
213
+ "return": null
214
+ },
215
+ {
216
+ "name": "formResetCallback",
217
+ "description": null,
218
+ "parameters": [],
219
+ "return": null
220
+ },
221
+ {
222
+ "name": "formStateRestoreCallback",
223
+ "description": null,
224
+ "parameters": [
225
+ {
226
+ "name": "state",
227
+ "type": null,
228
+ "description": null
229
+ }
230
+ ],
231
+ "return": null
232
+ },
124
233
  {
125
234
  "name": "refresh",
126
235
  "description": "Refreshes the calendar display",
127
236
  "parameters": [],
128
237
  "return": null
238
+ },
239
+ {
240
+ "name": "reportValidity",
241
+ "description": null,
242
+ "parameters": [],
243
+ "return": null
244
+ },
245
+ {
246
+ "name": "serializeDate",
247
+ "description": null,
248
+ "parameters": [],
249
+ "return": null
250
+ },
251
+ {
252
+ "name": "updateFormState",
253
+ "description": null,
254
+ "parameters": [],
255
+ "return": null
129
256
  }
130
257
  ],
131
258
  "events": [
259
+ {
260
+ "name": "month-change",
261
+ "description": null,
262
+ "type": "CustomEvent"
263
+ },
132
264
  {
133
265
  "name": "month-rendered",
134
266
  "description": null,
135
267
  "type": "CustomEvent"
136
268
  },
269
+ {
270
+ "name": "pds-calendar#month-change",
271
+ "description": "Dispatched when the visible month/year changes",
272
+ "type": null
273
+ },
137
274
  {
138
275
  "name": "pds-calendar#month-rendered",
139
276
  "description": "Dispatched after the calendar month is rendered with event fill capability",
@@ -165,403 +302,1355 @@
165
302
  ],
166
303
  "notes": []
167
304
  },
168
- "pds-drawer": {
169
- "tag": "pds-drawer",
170
- "className": "PdsDrawer",
171
- "displayName": "pds-drawer",
172
- "storyTitle": "Components/pds-drawer",
173
- "category": "Components",
305
+ "pds-code": {
306
+ "tag": "pds-code",
307
+ "className": "PDSCode",
308
+ "displayName": "PDS Code",
309
+ "storyTitle": null,
310
+ "category": null,
174
311
  "description": null,
175
- "docsDescription": "Slide-out panels from any edge",
176
- "pdsTags": [
177
- "autodocs",
178
- "drawer",
179
- "grouping",
180
- "interaction",
181
- "layout",
182
- "modal",
183
- "navigation",
184
- "overlay",
185
- "panel",
186
- "pds-drawer",
187
- "sidebar"
188
- ],
189
- "ontology": {
190
- "id": "pds-drawer",
191
- "name": "Drawer",
192
- "description": "Slide-out panel overlay",
193
- "selectors": [
194
- "pds-drawer"
195
- ],
196
- "tags": [
197
- "panel",
198
- "overlay",
199
- "sidebar"
200
- ],
201
- "category": "overlay"
202
- },
203
- "stories": [
204
- {
205
- "exportName": "Default",
206
- "name": "Default",
207
- "id": "components-pds-drawer--default",
208
- "tags": [],
209
- "description": null,
210
- "source": "packages\\pds-storybook\\stories\\components\\PdsDrawer.stories.js"
211
- }
212
- ],
213
- "sourceModule": "public/assets/pds/components/pds-drawer.js",
312
+ "docsDescription": null,
313
+ "pdsTags": [],
314
+ "ontology": null,
315
+ "stories": [],
316
+ "sourceModule": "public/assets/pds/components/pds-code.js",
214
317
  "superclass": "HTMLElement",
215
318
  "attributes": [
216
319
  {
217
- "name": "open",
218
- "description": "Controls whether the drawer is open or closed",
219
- "type": "boolean",
320
+ "name": "code",
321
+ "description": null,
322
+ "type": null,
220
323
  "default": null,
221
- "fieldName": "open",
222
- "property": "open"
324
+ "fieldName": null,
325
+ "property": "code"
223
326
  },
224
327
  {
225
- "name": "position",
226
- "description": "Position of the drawer relative to the viewport",
227
- "type": "\"bottom\" | \"top\" | \"left\" | \"right\"",
228
- "default": "\"bottom\"",
229
- "fieldName": "position",
230
- "property": "position"
231
- },
232
- {
233
- "name": "drag",
234
- "description": "Controls drag interaction behavior",
235
- "type": "\"header\" | \"none\"",
236
- "default": "\"header\"",
237
- "fieldName": "drag",
238
- "property": "drag"
239
- },
240
- {
241
- "name": "max-height",
242
- "description": "Maximum height for top/bottom positioned drawers (CSS value)",
243
- "type": "string",
244
- "default": "\"70vh\"",
245
- "fieldName": "maxHeight",
246
- "property": "maxHeight"
247
- },
248
- {
249
- "name": "min-height",
250
- "description": "Minimum height for top/bottom positioned drawers (CSS value)",
251
- "type": "string",
252
- "default": "\"auto\"",
253
- "fieldName": "minHeight",
254
- "property": "minHeight"
328
+ "name": "lang",
329
+ "description": null,
330
+ "type": null,
331
+ "default": null,
332
+ "fieldName": null
255
333
  },
256
334
  {
257
- "name": "show-close",
258
- "description": "Whether to show the close button in the header",
259
- "type": "boolean",
260
- "default": "false",
261
- "fieldName": "showClose",
262
- "property": "showClose"
335
+ "name": "theme",
336
+ "description": null,
337
+ "type": null,
338
+ "default": null,
339
+ "fieldName": null
263
340
  }
264
341
  ],
265
342
  "properties": [
266
343
  {
267
- "name": "drag",
268
- "attribute": "drag",
269
- "description": "Controls drag interaction behavior",
270
- "type": "\"header\" | \"none\"",
271
- "default": "\"header\"",
272
- "reflects": false,
273
- "privacy": "public"
274
- },
275
- {
276
- "name": "maxHeight",
277
- "attribute": "max-height",
278
- "description": "Maximum height for top/bottom positioned drawers (CSS value)",
279
- "type": "string",
280
- "default": "\"70vh\"",
344
+ "name": "code",
345
+ "attribute": "code",
346
+ "description": null,
347
+ "type": null,
348
+ "default": null,
281
349
  "reflects": false,
282
350
  "privacy": "public"
283
- },
351
+ }
352
+ ],
353
+ "methods": [
284
354
  {
285
- "name": "minHeight",
286
- "attribute": "min-height",
287
- "description": "Minimum height for top/bottom positioned drawers (CSS value)",
288
- "type": "string",
289
- "default": "\"auto\"",
290
- "reflects": false,
291
- "privacy": "public"
355
+ "name": "attributeChangedCallback",
356
+ "description": null,
357
+ "parameters": [],
358
+ "return": "void"
292
359
  },
293
360
  {
294
- "name": "open",
295
- "attribute": "open",
296
- "description": "Controls whether the drawer is open or closed",
297
- "type": "boolean",
298
- "default": null,
299
- "reflects": false,
300
- "privacy": "public"
361
+ "name": "captureInitialText",
362
+ "description": null,
363
+ "parameters": [],
364
+ "return": "void"
301
365
  },
302
366
  {
303
- "name": "position",
304
- "attribute": "position",
305
- "description": "Position of the drawer relative to the viewport",
306
- "type": "\"bottom\" | \"top\" | \"left\" | \"right\"",
307
- "default": "\"bottom\"",
308
- "reflects": false,
309
- "privacy": "public"
367
+ "name": "connectedCallback",
368
+ "description": null,
369
+ "parameters": [],
370
+ "return": "void"
310
371
  },
311
372
  {
312
- "name": "showClose",
313
- "attribute": "show-close",
314
- "description": "Whether to show the close button in the header",
315
- "type": "boolean",
316
- "default": "false",
317
- "reflects": false,
318
- "privacy": "public"
319
- }
320
- ],
321
- "methods": [
322
- {
323
- "name": "clearContent",
324
- "description": "Clear drawer content (removes all slotted content)",
373
+ "name": "disconnectedCallback",
374
+ "description": null,
325
375
  "parameters": [],
326
- "return": null
376
+ "return": "void"
327
377
  },
328
378
  {
329
- "name": "closeDrawer",
330
- "description": "Closes the drawer",
379
+ "name": "ensureCodeFromContent",
380
+ "description": null,
331
381
  "parameters": [],
332
- "return": null
382
+ "return": "boolean"
333
383
  },
334
384
  {
335
- "name": "openDrawer",
336
- "description": "Opens the drawer",
385
+ "name": "render",
386
+ "description": null,
337
387
  "parameters": [],
338
- "return": null
388
+ "return": "Promise<void>"
339
389
  },
340
390
  {
341
- "name": "setContent",
342
- "description": "Set the content of the drawer",
391
+ "name": "setCode",
392
+ "description": null,
343
393
  "parameters": [
344
394
  {
345
- "name": "bodyContent",
346
- "type": "any|HTMLElement|string",
347
- "description": "Content for the drawer body"
395
+ "name": "value",
396
+ "type": "any",
397
+ "description": null,
398
+ "optional": false
348
399
  },
349
400
  {
350
- "name": "headerContent",
351
- "type": "any|HTMLElement|string",
352
- "description": "Optional header content"
401
+ "name": "{ lang, theme }",
402
+ "type": "{}",
403
+ "description": null,
404
+ "optional": true
353
405
  }
354
406
  ],
355
- "return": "Promise<void>"
407
+ "return": "void"
356
408
  },
357
409
  {
358
- "name": "show",
359
- "description": "Configure and open the drawer in one call",
360
- "parameters": [
361
- {
362
- "name": "htmlContent",
363
- "type": "any|HTMLElement|string",
364
- "description": "The main content to display"
365
- },
366
- {
367
- "name": "options",
368
- "type": "@param {any|HTMLElement|string} [options.header] - Header content\n * @param {\"bottom\"|\"top\"|\"left\"|\"right\"} [options.position] - Drawer position\n * @param {string} [options.maxHeight] - Maximum height (CSS value)\n * @param {string} [options.minHeight] - Minimum height (CSS value)\n * @param {boolean} [options.showClose] - Show close button\n * @param {boolean} [options.waitForMedia=true] - Wait for images/videos to load\n * @param {number} [options.mediaTimeout=500] - Media load timeout in ms\n * ",
369
- "description": "Configuration options"
370
- }
371
- ],
372
- "return": "Promise<this>"
410
+ "name": "startTextObserver",
411
+ "description": null,
412
+ "parameters": [],
413
+ "return": "void"
373
414
  },
374
415
  {
375
- "name": "toggleDrawer",
376
- "description": "Toggles the drawer open/closed state",
416
+ "name": "stopTextObserver",
417
+ "description": null,
377
418
  "parameters": [],
378
- "return": null
419
+ "return": "void"
379
420
  }
380
421
  ],
381
- "events": [
422
+ "events": [],
423
+ "slots": [],
424
+ "cssParts": [],
425
+ "notes": []
426
+ },
427
+ "pds-daterange": {
428
+ "tag": "pds-daterange",
429
+ "className": "PdsDateRange",
430
+ "displayName": "pds-daterange",
431
+ "storyTitle": "Components/pds-daterange",
432
+ "category": "Components",
433
+ "description": null,
434
+ "docsDescription": "Form-associated date range picker with compact dual-calendar dropdown and ISO interval value output.",
435
+ "pdsTags": [
436
+ "autodocs",
437
+ "calendar",
438
+ "date",
439
+ "form",
440
+ "pds-daterange",
441
+ "range",
442
+ "travel"
443
+ ],
444
+ "ontology": null,
445
+ "stories": [
382
446
  {
383
- "name": "toggle",
384
- "description": "Fired when the drawer opens or closes",
385
- "type": null
447
+ "exportName": "Default",
448
+ "name": "Default",
449
+ "id": "components-pds-daterange--default",
450
+ "tags": [],
451
+ "description": null,
452
+ "source": "packages\\pds-storybook\\stories\\components\\PdsDaterange.stories.js"
386
453
  }
387
454
  ],
388
- "slots": [
455
+ "sourceModule": "public/assets/pds/components/pds-daterange.js",
456
+ "superclass": "HTMLElement",
457
+ "attributes": [
389
458
  {
390
- "name": "drawer-header",
391
- "description": "Header content for the drawer"
459
+ "name": "name",
460
+ "description": "Form field name used during form submission.",
461
+ "type": "String",
462
+ "default": null,
463
+ "fieldName": null,
464
+ "property": "name"
392
465
  },
393
466
  {
394
- "name": "drawer-content",
395
- "description": "Main content of the drawer"
396
- }
397
- ],
398
- "cssParts": [
467
+ "name": "required",
468
+ "description": "Requires both start and end dates to be selected.",
469
+ "type": "Boolean",
470
+ "default": null,
471
+ "fieldName": null,
472
+ "property": "required"
473
+ },
399
474
  {
400
- "name": "backdrop",
401
- "description": "The semi-transparent backdrop overlay"
475
+ "name": "disabled",
476
+ "description": "Disables interaction and closes the panel when active.",
477
+ "type": "Boolean",
478
+ "default": null,
479
+ "fieldName": null,
480
+ "property": "disabled"
402
481
  },
403
482
  {
404
- "name": "panel",
405
- "description": "The drawer panel container"
483
+ "name": "value",
484
+ "description": "Serialized range value as ISO interval: `YYYY-MM-DD/YYYY-MM-DD`.",
485
+ "type": "String",
486
+ "default": null,
487
+ "fieldName": null,
488
+ "property": "value"
406
489
  },
407
490
  {
408
- "name": "header",
409
- "description": "The drawer header section"
491
+ "name": "display-format",
492
+ "description": "Button date text format. Default is `d MMM yy`.",
493
+ "type": "String",
494
+ "default": null,
495
+ "fieldName": null,
496
+ "property": "displayFormat"
497
+ }
498
+ ],
499
+ "properties": [
500
+ {
501
+ "name": "disabled",
502
+ "attribute": "disabled",
503
+ "description": "Whether the control is disabled.",
504
+ "type": "Boolean",
505
+ "default": null,
506
+ "reflects": false,
507
+ "privacy": "public"
410
508
  },
411
509
  {
412
- "name": "close-button",
413
- "description": "The close button"
510
+ "name": "displayFormat",
511
+ "attribute": null,
512
+ "description": "Button date text format.",
513
+ "type": "String",
514
+ "default": null,
515
+ "reflects": false,
516
+ "privacy": "public"
414
517
  },
415
518
  {
416
- "name": "grab-handle",
417
- "description": "The drag handle indicator"
519
+ "name": "endDate",
520
+ "attribute": null,
521
+ "description": "End date value.",
522
+ "type": "Date|null",
523
+ "default": null,
524
+ "reflects": false,
525
+ "privacy": "public"
418
526
  },
419
527
  {
420
- "name": "content",
421
- "description": "The drawer content section"
422
- }
423
- ],
424
- "notes": []
425
- },
528
+ "name": "form",
529
+ "attribute": null,
530
+ "description": null,
531
+ "type": null,
532
+ "default": null,
533
+ "reflects": false,
534
+ "privacy": "public"
535
+ },
536
+ {
537
+ "name": "formAssociated",
538
+ "attribute": null,
539
+ "description": null,
540
+ "type": "boolean",
541
+ "default": "true",
542
+ "reflects": false,
543
+ "privacy": "public"
544
+ },
545
+ {
546
+ "name": "name",
547
+ "attribute": "name",
548
+ "description": "Form field name.",
549
+ "type": "String",
550
+ "default": null,
551
+ "reflects": false,
552
+ "privacy": "public"
553
+ },
554
+ {
555
+ "name": "required",
556
+ "attribute": "required",
557
+ "description": "Whether the field is required.",
558
+ "type": "Boolean",
559
+ "default": null,
560
+ "reflects": false,
561
+ "privacy": "public"
562
+ },
563
+ {
564
+ "name": "startDate",
565
+ "attribute": null,
566
+ "description": "Start date value.",
567
+ "type": "Date|null",
568
+ "default": null,
569
+ "reflects": false,
570
+ "privacy": "public"
571
+ },
572
+ {
573
+ "name": "value",
574
+ "attribute": "value",
575
+ "description": "Serialized range value as ISO interval: `YYYY-MM-DD/YYYY-MM-DD`.",
576
+ "type": "String",
577
+ "default": null,
578
+ "reflects": false,
579
+ "privacy": "public"
580
+ }
581
+ ],
582
+ "methods": [
583
+ {
584
+ "name": "addMonths",
585
+ "description": null,
586
+ "parameters": [
587
+ {
588
+ "name": "value",
589
+ "type": null,
590
+ "description": null
591
+ },
592
+ {
593
+ "name": "monthDelta",
594
+ "type": null,
595
+ "description": null
596
+ }
597
+ ],
598
+ "return": null
599
+ },
600
+ {
601
+ "name": "applyDisabledState",
602
+ "description": null,
603
+ "parameters": [],
604
+ "return": null
605
+ },
606
+ {
607
+ "name": "applyRangeSelection",
608
+ "description": null,
609
+ "parameters": [
610
+ {
611
+ "name": "pickedDate",
612
+ "type": null,
613
+ "description": null
614
+ }
615
+ ],
616
+ "return": null
617
+ },
618
+ {
619
+ "name": "bindCalendar",
620
+ "description": null,
621
+ "parameters": [
622
+ {
623
+ "name": "calendar",
624
+ "type": null,
625
+ "description": null
626
+ },
627
+ {
628
+ "name": "side",
629
+ "type": null,
630
+ "description": null
631
+ }
632
+ ],
633
+ "return": null
634
+ },
635
+ {
636
+ "name": "bindEvents",
637
+ "description": null,
638
+ "parameters": [],
639
+ "return": null
640
+ },
641
+ {
642
+ "name": "buildRangeEventsForMonth",
643
+ "description": null,
644
+ "parameters": [
645
+ {
646
+ "name": "year",
647
+ "type": null,
648
+ "description": null
649
+ },
650
+ {
651
+ "name": "month",
652
+ "type": null,
653
+ "description": null
654
+ }
655
+ ],
656
+ "return": null
657
+ },
658
+ {
659
+ "name": "checkValidity",
660
+ "description": null,
661
+ "parameters": [],
662
+ "return": null
663
+ },
664
+ {
665
+ "name": "closePanel",
666
+ "description": null,
667
+ "parameters": [],
668
+ "return": null
669
+ },
670
+ {
671
+ "name": "dispatchRangeChange",
672
+ "description": null,
673
+ "parameters": [],
674
+ "return": null
675
+ },
676
+ {
677
+ "name": "enforceMinimumGap",
678
+ "description": null,
679
+ "parameters": [],
680
+ "return": null
681
+ },
682
+ {
683
+ "name": "ensureCalendarsReady",
684
+ "description": null,
685
+ "parameters": [],
686
+ "return": null
687
+ },
688
+ {
689
+ "name": "formAssociatedCallback",
690
+ "description": null,
691
+ "parameters": [],
692
+ "return": null
693
+ },
694
+ {
695
+ "name": "formatDisplayDate",
696
+ "description": null,
697
+ "parameters": [
698
+ {
699
+ "name": "value",
700
+ "type": null,
701
+ "description": null
702
+ }
703
+ ],
704
+ "return": null
705
+ },
706
+ {
707
+ "name": "formDisabledCallback",
708
+ "description": null,
709
+ "parameters": [
710
+ {
711
+ "name": "disabled",
712
+ "type": null,
713
+ "description": null
714
+ }
715
+ ],
716
+ "return": null
717
+ },
718
+ {
719
+ "name": "formResetCallback",
720
+ "description": null,
721
+ "parameters": [],
722
+ "return": null
723
+ },
724
+ {
725
+ "name": "formStateRestoreCallback",
726
+ "description": null,
727
+ "parameters": [
728
+ {
729
+ "name": "state",
730
+ "type": null,
731
+ "description": null
732
+ }
733
+ ],
734
+ "return": null
735
+ },
736
+ {
737
+ "name": "handleOutsideClick",
738
+ "description": null,
739
+ "parameters": [
740
+ {
741
+ "name": "event",
742
+ "type": null,
743
+ "description": null
744
+ }
745
+ ],
746
+ "return": null
747
+ },
748
+ {
749
+ "name": "isOpen",
750
+ "description": null,
751
+ "parameters": [],
752
+ "return": null
753
+ },
754
+ {
755
+ "name": "isRangeComplete",
756
+ "description": null,
757
+ "parameters": [],
758
+ "return": null
759
+ },
760
+ {
761
+ "name": "openPanel",
762
+ "description": null,
763
+ "parameters": [],
764
+ "return": null
765
+ },
766
+ {
767
+ "name": "parseDate",
768
+ "description": null,
769
+ "parameters": [
770
+ {
771
+ "name": "value",
772
+ "type": null,
773
+ "description": null
774
+ }
775
+ ],
776
+ "return": null
777
+ },
778
+ {
779
+ "name": "parseRangeValue",
780
+ "description": null,
781
+ "parameters": [
782
+ {
783
+ "name": "rawValue",
784
+ "type": null,
785
+ "description": null
786
+ }
787
+ ],
788
+ "return": null
789
+ },
790
+ {
791
+ "name": "positionCalendars",
792
+ "description": null,
793
+ "parameters": [],
794
+ "return": null
795
+ },
796
+ {
797
+ "name": "reflectValueAttribute",
798
+ "description": null,
799
+ "parameters": [],
800
+ "return": null
801
+ },
802
+ {
803
+ "name": "refreshHighlights",
804
+ "description": null,
805
+ "parameters": [],
806
+ "return": null
807
+ },
808
+ {
809
+ "name": "reportValidity",
810
+ "description": null,
811
+ "parameters": [],
812
+ "return": null
813
+ },
814
+ {
815
+ "name": "serializeDate",
816
+ "description": null,
817
+ "parameters": [
818
+ {
819
+ "name": "value",
820
+ "type": null,
821
+ "description": null
822
+ }
823
+ ],
824
+ "return": null
825
+ },
826
+ {
827
+ "name": "setCalendarDate",
828
+ "description": null,
829
+ "parameters": [
830
+ {
831
+ "name": "calendar",
832
+ "type": null,
833
+ "description": null
834
+ },
835
+ {
836
+ "name": "value",
837
+ "type": null,
838
+ "description": null
839
+ }
840
+ ],
841
+ "return": null
842
+ },
843
+ {
844
+ "name": "syncUI",
845
+ "description": null,
846
+ "parameters": [],
847
+ "return": null
848
+ },
849
+ {
850
+ "name": "toDayStart",
851
+ "description": null,
852
+ "parameters": [
853
+ {
854
+ "name": "value",
855
+ "type": null,
856
+ "description": null
857
+ }
858
+ ],
859
+ "return": null
860
+ },
861
+ {
862
+ "name": "togglePanel",
863
+ "description": null,
864
+ "parameters": [],
865
+ "return": null
866
+ },
867
+ {
868
+ "name": "toMonthStart",
869
+ "description": null,
870
+ "parameters": [
871
+ {
872
+ "name": "value",
873
+ "type": null,
874
+ "description": null
875
+ }
876
+ ],
877
+ "return": null
878
+ },
879
+ {
880
+ "name": "updateFormState",
881
+ "description": null,
882
+ "parameters": [],
883
+ "return": null
884
+ }
885
+ ],
886
+ "events": [
887
+ {
888
+ "name": "change",
889
+ "description": "Native-like change event fired alongside `range-change`.",
890
+ "type": "Event"
891
+ },
892
+ {
893
+ "name": "range-change",
894
+ "description": "Fired whenever range selection changes.",
895
+ "type": "CustomEvent"
896
+ }
897
+ ],
898
+ "slots": [],
899
+ "cssParts": [
900
+ {
901
+ "name": "trigger",
902
+ "description": "The button used to open/close the date range panel."
903
+ },
904
+ {
905
+ "name": "panel",
906
+ "description": "The dropdown panel containing calendars and actions."
907
+ }
908
+ ],
909
+ "notes": []
910
+ },
911
+ "pds-drawer": {
912
+ "tag": "pds-drawer",
913
+ "className": "PdsDrawer",
914
+ "displayName": "pds-drawer",
915
+ "storyTitle": "Components/pds-drawer",
916
+ "category": "Components",
917
+ "description": null,
918
+ "docsDescription": "Slide-out panels from any edge",
919
+ "pdsTags": [
920
+ "autodocs",
921
+ "drawer",
922
+ "grouping",
923
+ "interaction",
924
+ "layout",
925
+ "modal",
926
+ "navigation",
927
+ "overlay",
928
+ "panel",
929
+ "pds-drawer",
930
+ "sidebar"
931
+ ],
932
+ "ontology": {
933
+ "id": "pds-drawer",
934
+ "name": "Drawer",
935
+ "description": "Slide-out panel overlay",
936
+ "selectors": [
937
+ "pds-drawer"
938
+ ],
939
+ "tags": [
940
+ "panel",
941
+ "overlay",
942
+ "sidebar"
943
+ ],
944
+ "category": "overlay"
945
+ },
946
+ "stories": [
947
+ {
948
+ "exportName": "Default",
949
+ "name": "Default",
950
+ "id": "components-pds-drawer--default",
951
+ "tags": [],
952
+ "description": null,
953
+ "source": "packages\\pds-storybook\\stories\\components\\PdsDrawer.stories.js"
954
+ }
955
+ ],
956
+ "sourceModule": "public/assets/pds/components/pds-drawer.js",
957
+ "superclass": "HTMLElement",
958
+ "attributes": [
959
+ {
960
+ "name": "open",
961
+ "description": "Controls whether the drawer is open or closed",
962
+ "type": "boolean",
963
+ "default": null,
964
+ "fieldName": "open",
965
+ "property": "open"
966
+ },
967
+ {
968
+ "name": "position",
969
+ "description": "Position of the drawer relative to the viewport",
970
+ "type": "\"bottom\" | \"top\" | \"left\" | \"right\"",
971
+ "default": "\"bottom\"",
972
+ "fieldName": "position",
973
+ "property": "position"
974
+ },
975
+ {
976
+ "name": "drag",
977
+ "description": "Controls drag interaction behavior",
978
+ "type": "\"header\" | \"none\"",
979
+ "default": "\"header\"",
980
+ "fieldName": "drag",
981
+ "property": "drag"
982
+ },
983
+ {
984
+ "name": "max-height",
985
+ "description": "Maximum height for top/bottom positioned drawers (CSS value)",
986
+ "type": "string",
987
+ "default": "\"70vh\"",
988
+ "fieldName": "maxHeight",
989
+ "property": "maxHeight"
990
+ },
991
+ {
992
+ "name": "min-height",
993
+ "description": "Minimum height for top/bottom positioned drawers (CSS value)",
994
+ "type": "string",
995
+ "default": "\"auto\"",
996
+ "fieldName": "minHeight",
997
+ "property": "minHeight"
998
+ },
999
+ {
1000
+ "name": "show-close",
1001
+ "description": "Whether to show the close button in the header",
1002
+ "type": "boolean",
1003
+ "default": "false",
1004
+ "fieldName": "showClose",
1005
+ "property": "showClose"
1006
+ }
1007
+ ],
1008
+ "properties": [
1009
+ {
1010
+ "name": "drag",
1011
+ "attribute": "drag",
1012
+ "description": "Controls drag interaction behavior",
1013
+ "type": "\"header\" | \"none\"",
1014
+ "default": "\"header\"",
1015
+ "reflects": false,
1016
+ "privacy": "public"
1017
+ },
1018
+ {
1019
+ "name": "maxHeight",
1020
+ "attribute": "max-height",
1021
+ "description": "Maximum height for top/bottom positioned drawers (CSS value)",
1022
+ "type": "string",
1023
+ "default": "\"70vh\"",
1024
+ "reflects": false,
1025
+ "privacy": "public"
1026
+ },
1027
+ {
1028
+ "name": "minHeight",
1029
+ "attribute": "min-height",
1030
+ "description": "Minimum height for top/bottom positioned drawers (CSS value)",
1031
+ "type": "string",
1032
+ "default": "\"auto\"",
1033
+ "reflects": false,
1034
+ "privacy": "public"
1035
+ },
1036
+ {
1037
+ "name": "open",
1038
+ "attribute": "open",
1039
+ "description": "Controls whether the drawer is open or closed",
1040
+ "type": "boolean",
1041
+ "default": null,
1042
+ "reflects": false,
1043
+ "privacy": "public"
1044
+ },
1045
+ {
1046
+ "name": "position",
1047
+ "attribute": "position",
1048
+ "description": "Position of the drawer relative to the viewport",
1049
+ "type": "\"bottom\" | \"top\" | \"left\" | \"right\"",
1050
+ "default": "\"bottom\"",
1051
+ "reflects": false,
1052
+ "privacy": "public"
1053
+ },
1054
+ {
1055
+ "name": "showClose",
1056
+ "attribute": "show-close",
1057
+ "description": "Whether to show the close button in the header",
1058
+ "type": "boolean",
1059
+ "default": "false",
1060
+ "reflects": false,
1061
+ "privacy": "public"
1062
+ }
1063
+ ],
1064
+ "methods": [
1065
+ {
1066
+ "name": "clearContent",
1067
+ "description": "Clear drawer content (removes all slotted content)",
1068
+ "parameters": [],
1069
+ "return": null
1070
+ },
1071
+ {
1072
+ "name": "closeDrawer",
1073
+ "description": "Closes the drawer",
1074
+ "parameters": [],
1075
+ "return": null
1076
+ },
1077
+ {
1078
+ "name": "openDrawer",
1079
+ "description": "Opens the drawer",
1080
+ "parameters": [],
1081
+ "return": null
1082
+ },
1083
+ {
1084
+ "name": "setContent",
1085
+ "description": "Set the content of the drawer",
1086
+ "parameters": [
1087
+ {
1088
+ "name": "bodyContent",
1089
+ "type": "any|HTMLElement|string",
1090
+ "description": "Content for the drawer body"
1091
+ },
1092
+ {
1093
+ "name": "headerContent",
1094
+ "type": "any|HTMLElement|string",
1095
+ "description": "Optional header content"
1096
+ }
1097
+ ],
1098
+ "return": "Promise<void>"
1099
+ },
1100
+ {
1101
+ "name": "show",
1102
+ "description": "Configure and open the drawer in one call",
1103
+ "parameters": [
1104
+ {
1105
+ "name": "htmlContent",
1106
+ "type": "any|HTMLElement|string",
1107
+ "description": "The main content to display"
1108
+ },
1109
+ {
1110
+ "name": "options",
1111
+ "type": "@param {any|HTMLElement|string} [options.header] - Header content\n * @param {\"bottom\"|\"top\"|\"left\"|\"right\"} [options.position] - Drawer position\n * @param {string} [options.maxHeight] - Maximum height (CSS value)\n * @param {string} [options.minHeight] - Minimum height (CSS value)\n * @param {boolean} [options.showClose] - Show close button\n * @param {boolean} [options.waitForMedia=true] - Wait for images/videos to load\n * @param {number} [options.mediaTimeout=500] - Media load timeout in ms\n * ",
1112
+ "description": "Configuration options"
1113
+ }
1114
+ ],
1115
+ "return": "Promise<this>"
1116
+ },
1117
+ {
1118
+ "name": "toggleDrawer",
1119
+ "description": "Toggles the drawer open/closed state",
1120
+ "parameters": [],
1121
+ "return": null
1122
+ }
1123
+ ],
1124
+ "events": [
1125
+ {
1126
+ "name": "toggle",
1127
+ "description": "Fired when the drawer opens or closes",
1128
+ "type": null
1129
+ }
1130
+ ],
1131
+ "slots": [
1132
+ {
1133
+ "name": "drawer-header",
1134
+ "description": "Header content for the drawer"
1135
+ },
1136
+ {
1137
+ "name": "drawer-content",
1138
+ "description": "Main content of the drawer"
1139
+ }
1140
+ ],
1141
+ "cssParts": [
1142
+ {
1143
+ "name": "backdrop",
1144
+ "description": "The semi-transparent backdrop overlay"
1145
+ },
1146
+ {
1147
+ "name": "panel",
1148
+ "description": "The drawer panel container"
1149
+ },
1150
+ {
1151
+ "name": "header",
1152
+ "description": "The drawer header section"
1153
+ },
1154
+ {
1155
+ "name": "close-button",
1156
+ "description": "The close button"
1157
+ },
1158
+ {
1159
+ "name": "grab-handle",
1160
+ "description": "The drag handle indicator"
1161
+ },
1162
+ {
1163
+ "name": "content",
1164
+ "description": "The drawer content section"
1165
+ }
1166
+ ],
1167
+ "notes": []
1168
+ },
426
1169
  "pds-fab": {
427
1170
  "tag": "pds-fab",
428
1171
  "className": "PdsFab",
429
1172
  "displayName": "pds-fab",
430
1173
  "storyTitle": "Components/pds-fab",
431
1174
  "category": "Components",
432
- "description": "Floating Action Button (FAB) with expandable satellite actions\n\nFloating Action Button (FAB) with expandable satellite actions",
433
- "docsDescription": "Floating Action Button (FAB) with expandable satellite actions. Perfect for quick access to common actions from anywhere in your app.\n\n### Key Features\n- 📍 **Fixed Positioning** - Always accessible from bottom-right corner\n- 🎯 **Smart Layout** - Automatically calculates optimal satellite positions (2-6 satellites)\n- ⚡ **Smooth Animations** - Spring-based animations with cascade timing\n- ♿ **Accessible** - Full keyboard navigation and ARIA support\n- 🎨 **Customizable** - CSS custom properties for complete theming\n\n### When to Use\n- Mobile-first applications requiring quick actions\n- Dashboard interfaces with frequent actions\n- Content creation tools (compose, upload, share)\n- Multi-step workflows with common entry points\n\n### Best Practices\n- Limit to 2-6 satellite actions (component enforces max 6)\n- Use clear, recognizable icons for satellites\n- Keep labels concise and actionable\n- Consider user",
1175
+ "description": "Floating Action Button (FAB) with expandable satellite actions\n\nFloating Action Button (FAB) with expandable satellite actions",
1176
+ "docsDescription": "Floating Action Button (FAB) with expandable satellite actions. Perfect for quick access to common actions from anywhere in your app.\n\n### Key Features\n- 📍 **Fixed Positioning** - Always accessible from bottom-right corner\n- 🎯 **Smart Layout** - Automatically calculates optimal satellite positions (2-6 satellites)\n- ⚡ **Smooth Animations** - Spring-based animations with cascade timing\n- ♿ **Accessible** - Full keyboard navigation and ARIA support\n- 🎨 **Customizable** - CSS custom properties for complete theming\n\n### When to Use\n- Mobile-first applications requiring quick actions\n- Dashboard interfaces with frequent actions\n- Content creation tools (compose, upload, share)\n- Multi-step workflows with common entry points\n\n### Best Practices\n- Limit to 2-6 satellite actions (component enforces max 6)\n- Use clear, recognizable icons for satellites\n- Keep labels concise and actionable\n- Consider user",
1177
+ "pdsTags": [
1178
+ "action",
1179
+ "actions",
1180
+ "autodocs",
1181
+ "button",
1182
+ "fab",
1183
+ "floating",
1184
+ "floating-action-button",
1185
+ "interaction",
1186
+ "menu",
1187
+ "mobile",
1188
+ "pds-fab"
1189
+ ],
1190
+ "ontology": {
1191
+ "id": "pds-fab",
1192
+ "name": "FAB",
1193
+ "description": "Floating Action Button with expandable satellite actions",
1194
+ "selectors": [
1195
+ "pds-fab"
1196
+ ],
1197
+ "tags": [
1198
+ "button",
1199
+ "action",
1200
+ "floating",
1201
+ "interactive"
1202
+ ],
1203
+ "category": "action"
1204
+ },
1205
+ "stories": [],
1206
+ "sourceModule": "public/assets/pds/components/pds-fab.js",
1207
+ "superclass": "HTMLElement",
1208
+ "attributes": [
1209
+ {
1210
+ "name": "open",
1211
+ "description": "Controls whether the FAB is expanded",
1212
+ "type": "boolean",
1213
+ "default": null,
1214
+ "fieldName": "open",
1215
+ "property": "open"
1216
+ },
1217
+ {
1218
+ "name": "radius",
1219
+ "description": "Distance in pixels from the main FAB to satellites",
1220
+ "type": "number",
1221
+ "default": "100",
1222
+ "fieldName": "radius",
1223
+ "property": "radius"
1224
+ },
1225
+ {
1226
+ "name": "spread",
1227
+ "description": "Arc angle in degrees for satellite distribution",
1228
+ "type": "number",
1229
+ "default": "90",
1230
+ "fieldName": "spread",
1231
+ "property": "spread"
1232
+ },
1233
+ {
1234
+ "name": "start-angle",
1235
+ "description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180° (fly left/up)\r\n- Bottom-left: 315° (fly right/up)\r\n- Top-right: 225° (fly left/down)\r\n- Top-left: 45° (fly right/down)",
1236
+ "type": "number",
1237
+ "default": "180 (or auto-detected)",
1238
+ "fieldName": "startAngle",
1239
+ "property": "startAngle"
1240
+ }
1241
+ ],
1242
+ "properties": [
1243
+ {
1244
+ "name": "open",
1245
+ "attribute": "open",
1246
+ "description": "Controls whether the FAB is expanded",
1247
+ "type": "boolean",
1248
+ "default": null,
1249
+ "reflects": false,
1250
+ "privacy": "public"
1251
+ },
1252
+ {
1253
+ "name": "radius",
1254
+ "attribute": "radius",
1255
+ "description": "Distance in pixels from the main FAB to satellites",
1256
+ "type": "number",
1257
+ "default": "100",
1258
+ "reflects": false,
1259
+ "privacy": "public"
1260
+ },
1261
+ {
1262
+ "name": "satellites",
1263
+ "attribute": null,
1264
+ "description": "Array of satellite button configurations",
1265
+ "type": "Array<{key: string, icon?: string, label?: string, action?: string}>",
1266
+ "default": null,
1267
+ "reflects": false,
1268
+ "privacy": "public"
1269
+ },
1270
+ {
1271
+ "name": "spread",
1272
+ "attribute": "spread",
1273
+ "description": "Arc angle in degrees for satellite distribution",
1274
+ "type": "number",
1275
+ "default": "90",
1276
+ "reflects": false,
1277
+ "privacy": "public"
1278
+ },
1279
+ {
1280
+ "name": "startAngle",
1281
+ "attribute": "start-angle",
1282
+ "description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180° (fly left/up)\r\n- Bottom-left: 315° (fly right/up)\r\n- Top-right: 225° (fly left/down)\r\n- Top-left: 45° (fly right/down)",
1283
+ "type": "number",
1284
+ "default": "180 (or auto-detected)",
1285
+ "reflects": false,
1286
+ "privacy": "public"
1287
+ }
1288
+ ],
1289
+ "methods": [
1290
+ {
1291
+ "name": "attributeChangedCallback",
1292
+ "description": null,
1293
+ "parameters": [
1294
+ {
1295
+ "name": "name",
1296
+ "type": "any",
1297
+ "description": null,
1298
+ "optional": false
1299
+ },
1300
+ {
1301
+ "name": "oldVal",
1302
+ "type": "any",
1303
+ "description": null,
1304
+ "optional": false
1305
+ },
1306
+ {
1307
+ "name": "newVal",
1308
+ "type": "any",
1309
+ "description": null,
1310
+ "optional": false
1311
+ }
1312
+ ],
1313
+ "return": "void"
1314
+ },
1315
+ {
1316
+ "name": "connectedCallback",
1317
+ "description": null,
1318
+ "parameters": [],
1319
+ "return": "void"
1320
+ },
1321
+ {
1322
+ "name": "disconnectedCallback",
1323
+ "description": null,
1324
+ "parameters": [],
1325
+ "return": "void"
1326
+ }
1327
+ ],
1328
+ "events": [
1329
+ {
1330
+ "name": "satellite-click",
1331
+ "description": "Fired when a satellite button is clicked",
1332
+ "type": "CustomEvent"
1333
+ }
1334
+ ],
1335
+ "slots": [
1336
+ {
1337
+ "name": "",
1338
+ "description": "Main FAB button content (typically an icon or avatar)"
1339
+ },
1340
+ {
1341
+ "name": "satellite-{key}",
1342
+ "description": "Override individual satellite button content"
1343
+ }
1344
+ ],
1345
+ "cssParts": [
1346
+ {
1347
+ "name": "fab",
1348
+ "description": "The main FAB button"
1349
+ },
1350
+ {
1351
+ "name": "satellite",
1352
+ "description": "Individual satellite buttons"
1353
+ },
1354
+ {
1355
+ "name": "label",
1356
+ "description": "Satellite button labels"
1357
+ }
1358
+ ],
1359
+ "notes": []
1360
+ },
1361
+ "pds-form": {
1362
+ "tag": "pds-form",
1363
+ "className": "SchemaForm",
1364
+ "displayName": "PDS JSON Schema Form",
1365
+ "storyTitle": "Components/pds-form",
1366
+ "category": "Components",
1367
+ "description": "<pds-form>\n\nForm Actions:\nBy default, the form includes Submit and Reset buttons inside the <form> element.\n\nUsage options:\n1. Default buttons:\n <pds-form .jsonSchema=${schema}></pds-form>\n\n2. Customize labels:\n <pds-form .jsonSchema=${schema} submit-label=\"Save\" reset-label=\"Clear\"></pds-form>\n\n3. Hide reset button:\n <pds-form .jsonSchema=${schema} hide-reset></pds-form>\n\n4. Add extra buttons (slot):\n <pds-form .jsonSchema=${schema}>\n <button type=\"button\" slot=\"actions\"\n\n<pds-form>\n\nForm Actions:\nBy default, the form includes Submit and Reset buttons inside the <form> element.\n\nUsage options:\n1. Default buttons:\n <pds-form .jsonSchema=${schema}></pds-form>\n\n2. Customize labels:\n <pds-form .jsonSchema=${schema} submit-label=\"Save\" reset-label=\"Clear\"></pds-form>\n\n3. Hide reset button:\n <pds-form .jsonSchema=${schema} hide-reset></pds-form>\n\n4. Add extra buttons (slot):\n <pds-form .jsonSchema=${schema}>\n <button type=\"button\" slot=\"actions\"",
1368
+ "docsDescription": "**✨ Recommended for modern applications** - Automatically generate complete forms from [JSON Schema](https://json-schema.org/) definitions.\n\n### Key Features\n- 📝 **Zero boilerplate** - Define form structure in JSON, get a working form with validation\n- ✓ **Built-in validation** - Automatic validation based on schema rules (required, min/max, patterns, etc.)\n- 🔄 **Data binding** - Two-way data binding with form state management\n- 🎨 **PDS styled** - Uses all PDS design tokens automatically\n- 📱 **Responsive** - Mobile-friendly layouts out of the box\n- 🔀 **Conditional logic** - Show/hide/disable fields, computed values\n- 🗂️ **Nested objects** - Support for complex nested data structures\n- 🔧 **Extensible** - Custom field types and validators\n\n### Why Generate Forms from JSON Schema?\nInstead of manually writing HTML for every form field, validation rule, and error message, you define your data schema once and get:\n- Form UI generation\n- Client-side validation\n- Server-side validation (same schema)\n- API documentation\n- Type definitions\n- Database schemas\n\nSee the examples below to get started, or check the [primitive forms](/story/primitives-form-elements--default) for manual form building.",
434
1369
  "pdsTags": [
435
- "action",
436
- "actions",
437
1370
  "autodocs",
438
- "button",
439
- "fab",
440
- "floating",
441
- "floating-action-button",
1371
+ "forms",
1372
+ "input",
442
1373
  "interaction",
443
- "menu",
444
- "mobile",
445
- "pds-fab"
1374
+ "json-schema",
1375
+ "pds-form",
1376
+ "validation"
446
1377
  ],
447
1378
  "ontology": {
448
- "id": "pds-fab",
449
- "name": "FAB",
450
- "description": "Floating Action Button with expandable satellite actions",
1379
+ "id": "pds-form",
1380
+ "name": "JSON Form",
1381
+ "description": "Auto-generated form from JSON Schema",
451
1382
  "selectors": [
452
- "pds-fab"
1383
+ "pds-form"
453
1384
  ],
454
1385
  "tags": [
455
- "button",
456
- "action",
457
- "floating",
458
- "interactive"
1386
+ "form",
1387
+ "schema",
1388
+ "auto-generate"
459
1389
  ],
460
- "category": "action"
1390
+ "category": "form"
461
1391
  },
462
1392
  "stories": [],
463
- "sourceModule": "public/assets/pds/components/pds-fab.js",
464
- "superclass": "HTMLElement",
1393
+ "sourceModule": "public/assets/pds/components/pds-form.js",
1394
+ "superclass": "LitElement",
465
1395
  "attributes": [
466
1396
  {
467
- "name": "open",
468
- "description": "Controls whether the FAB is expanded",
1397
+ "name": "json-schema",
1398
+ "description": "Primary schema input. Provide a JSON Schema object to generate the form layout and validation rules.",
1399
+ "type": "object",
1400
+ "default": "undefined",
1401
+ "fieldName": "jsonSchema",
1402
+ "property": "jsonSchema"
1403
+ },
1404
+ {
1405
+ "name": "ui-schema",
1406
+ "description": "Optional UI overrides keyed by JSON Pointer. Controls layout, widgets, surfaces, dialogs, and per-field hints.",
1407
+ "type": "object",
1408
+ "default": "undefined",
1409
+ "fieldName": "uiSchema",
1410
+ "property": "uiSchema"
1411
+ },
1412
+ {
1413
+ "name": "options",
1414
+ "description": "Toolkit-level options that adjust widget families, layouts, and validation behavior. Supports path-specific overrides.",
1415
+ "type": "object",
1416
+ "default": "undefined",
1417
+ "fieldName": "options",
1418
+ "property": "options"
1419
+ },
1420
+ {
1421
+ "name": "values",
1422
+ "description": "Initial data that pre-populates the generated form. Shape must match the JSON Schema.",
1423
+ "type": "object",
1424
+ "default": "undefined",
1425
+ "fieldName": "values",
1426
+ "property": "values"
1427
+ },
1428
+ {
1429
+ "name": "action",
1430
+ "description": null,
1431
+ "type": "string",
1432
+ "default": null,
1433
+ "fieldName": "action",
1434
+ "property": "action"
1435
+ },
1436
+ {
1437
+ "name": "method",
1438
+ "description": null,
1439
+ "type": "string",
1440
+ "default": "\"post\"",
1441
+ "fieldName": "method",
1442
+ "property": "method"
1443
+ },
1444
+ {
1445
+ "name": "disabled",
1446
+ "description": null,
1447
+ "type": "boolean",
1448
+ "default": null,
1449
+ "fieldName": "disabled",
1450
+ "property": "disabled"
1451
+ },
1452
+ {
1453
+ "name": "hide-actions",
1454
+ "description": null,
1455
+ "type": "boolean",
1456
+ "default": "false",
1457
+ "fieldName": "hideActions",
1458
+ "property": "hideActions"
1459
+ },
1460
+ {
1461
+ "name": "submit-label",
1462
+ "description": null,
1463
+ "type": "string",
1464
+ "default": "\"Submit\"",
1465
+ "fieldName": "submitLabel",
1466
+ "property": "submitLabel"
1467
+ },
1468
+ {
1469
+ "name": "reset-label",
1470
+ "description": null,
1471
+ "type": "string",
1472
+ "default": "\"Reset\"",
1473
+ "fieldName": "resetLabel",
1474
+ "property": "resetLabel"
1475
+ },
1476
+ {
1477
+ "name": "hide-reset",
1478
+ "description": null,
1479
+ "type": "boolean",
1480
+ "default": "false",
1481
+ "fieldName": "hideReset",
1482
+ "property": "hideReset"
1483
+ },
1484
+ {
1485
+ "name": "hide-submit",
1486
+ "description": null,
1487
+ "type": "boolean",
1488
+ "default": null,
1489
+ "fieldName": "hideSubmit",
1490
+ "property": "hideSubmit"
1491
+ },
1492
+ {
1493
+ "name": "hide-legend",
1494
+ "description": null,
1495
+ "type": "boolean",
1496
+ "default": "false",
1497
+ "fieldName": "hideLegend",
1498
+ "property": "hideLegend"
1499
+ }
1500
+ ],
1501
+ "properties": [
1502
+ {
1503
+ "name": "action",
1504
+ "attribute": "action",
1505
+ "description": null,
1506
+ "type": "string",
1507
+ "default": null,
1508
+ "reflects": false,
1509
+ "privacy": "public"
1510
+ },
1511
+ {
1512
+ "name": "disabled",
1513
+ "attribute": "disabled",
1514
+ "description": null,
1515
+ "type": "boolean",
1516
+ "default": null,
1517
+ "reflects": true,
1518
+ "privacy": "public"
1519
+ },
1520
+ {
1521
+ "name": "hideActions",
1522
+ "attribute": "hide-actions",
1523
+ "description": null,
1524
+ "type": "boolean",
1525
+ "default": "false",
1526
+ "reflects": false,
1527
+ "privacy": "public"
1528
+ },
1529
+ {
1530
+ "name": "hideLegend",
1531
+ "attribute": "hide-legend",
1532
+ "description": null,
1533
+ "type": "boolean",
1534
+ "default": "false",
1535
+ "reflects": false,
1536
+ "privacy": "public"
1537
+ },
1538
+ {
1539
+ "name": "hideReset",
1540
+ "attribute": "hide-reset",
1541
+ "description": null,
1542
+ "type": "boolean",
1543
+ "default": "false",
1544
+ "reflects": false,
1545
+ "privacy": "public"
1546
+ },
1547
+ {
1548
+ "name": "hideSubmit",
1549
+ "attribute": "hide-submit",
1550
+ "description": null,
469
1551
  "type": "boolean",
470
1552
  "default": null,
471
- "fieldName": "open",
472
- "property": "open"
1553
+ "reflects": false,
1554
+ "privacy": "public"
473
1555
  },
474
1556
  {
475
- "name": "radius",
476
- "description": "Distance in pixels from the main FAB to satellites",
477
- "type": "number",
478
- "default": "100",
479
- "fieldName": "radius",
480
- "property": "radius"
1557
+ "name": "jsonSchema",
1558
+ "attribute": "json-schema",
1559
+ "description": "Primary schema input. Provide a JSON Schema object to generate the form layout and validation rules.",
1560
+ "type": "JSONSchema7 (object)",
1561
+ "default": "undefined",
1562
+ "reflects": false,
1563
+ "privacy": "public"
481
1564
  },
482
1565
  {
483
- "name": "spread",
484
- "description": "Arc angle in degrees for satellite distribution",
485
- "type": "number",
486
- "default": "90",
487
- "fieldName": "spread",
488
- "property": "spread"
1566
+ "name": "method",
1567
+ "attribute": "method",
1568
+ "description": null,
1569
+ "type": "string",
1570
+ "default": "\"post\"",
1571
+ "reflects": false,
1572
+ "privacy": "public"
489
1573
  },
490
1574
  {
491
- "name": "start-angle",
492
- "description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180° (fly left/up)\r\n- Bottom-left: 315° (fly right/up)\r\n- Top-right: 225° (fly left/down)\r\n- Top-left: 45° (fly right/down)",
493
- "type": "number",
494
- "default": "180 (or auto-detected)",
495
- "fieldName": "startAngle",
496
- "property": "startAngle"
497
- }
498
- ],
499
- "properties": [
1575
+ "name": "options",
1576
+ "attribute": "options",
1577
+ "description": "Toolkit-level options that adjust widget families, layouts, and validation behavior. Supports path-specific overrides.",
1578
+ "type": "formOptions",
1579
+ "default": "undefined",
1580
+ "reflects": false,
1581
+ "privacy": "public"
1582
+ },
500
1583
  {
501
- "name": "open",
502
- "attribute": "open",
503
- "description": "Controls whether the FAB is expanded",
504
- "type": "boolean",
1584
+ "name": "properties",
1585
+ "attribute": null,
1586
+ "description": null,
1587
+ "type": "{\n jsonSchema: {\n type: ObjectConstructor;\n attribute: string;\n };\n uiSchema: {\n type: ObjectConstructor;\n attribute: string;\n };\n options: {\n type: ObjectConstructor;\n };\n values: {\n type: ObjectConstructor;\n };\n action: {\n type: StringConstructor;\n };\n method: {\n type: StringConstructor;\n };\n disabled: {\n type: BooleanConstructor;\n reflect: boolean;\n };\n hideActions: {\n type: BooleanConstructor;\n attribute: string;\n };\n submitLabel: {\n type: StringConstructor;\n attribute: string;\n };\n resetLabel: {\n type: StringConstructor;\n attribute: string;\n };\n hideReset: {\n type: BooleanConstructor;\n attribute: string;\n };\n hideSubmit: {\n type: BooleanConstructor;\n attribute: string;\n };\n hideLegend: {\n type: BooleanConstructor;\n attribute: string;\n };\n }",
505
1588
  "default": null,
506
1589
  "reflects": false,
507
1590
  "privacy": "public"
508
1591
  },
509
1592
  {
510
- "name": "radius",
511
- "attribute": "radius",
512
- "description": "Distance in pixels from the main FAB to satellites",
513
- "type": "number",
514
- "default": "100",
1593
+ "name": "resetLabel",
1594
+ "attribute": "reset-label",
1595
+ "description": null,
1596
+ "type": "string",
1597
+ "default": "\"Reset\"",
515
1598
  "reflects": false,
516
1599
  "privacy": "public"
517
1600
  },
518
1601
  {
519
- "name": "satellites",
520
- "attribute": null,
521
- "description": "Array of satellite button configurations",
522
- "type": "Array<{key: string, icon?: string, label?: string, action?: string}>",
523
- "default": null,
1602
+ "name": "submitLabel",
1603
+ "attribute": "submit-label",
1604
+ "description": null,
1605
+ "type": "string",
1606
+ "default": "\"Submit\"",
524
1607
  "reflects": false,
525
1608
  "privacy": "public"
526
1609
  },
527
1610
  {
528
- "name": "spread",
529
- "attribute": "spread",
530
- "description": "Arc angle in degrees for satellite distribution",
531
- "type": "number",
532
- "default": "90",
1611
+ "name": "uiSchema",
1612
+ "attribute": "ui-schema",
1613
+ "description": "Optional UI overrides keyed by JSON Pointer. Controls layout, widgets, surfaces, dialogs, and per-field hints.",
1614
+ "type": "UISchema",
1615
+ "default": "undefined",
533
1616
  "reflects": false,
534
1617
  "privacy": "public"
535
1618
  },
536
1619
  {
537
- "name": "startAngle",
538
- "attribute": "start-angle",
539
- "description": "Starting angle in degrees (0=right, 90=down, 180=left, 270=up)\r\nIf not specified, the angle is auto-detected based on the FAB's corner position:\r\n- Bottom-right: 180° (fly left/up)\r\n- Bottom-left: 315° (fly right/up)\r\n- Top-right: 225° (fly left/down)\r\n- Top-left: 45° (fly right/down)",
540
- "type": "number",
541
- "default": "180 (or auto-detected)",
1620
+ "name": "values",
1621
+ "attribute": "values",
1622
+ "description": "Initial data that pre-populates the generated form. Shape must match the JSON Schema.",
1623
+ "type": "Record<string, any>",
1624
+ "default": "undefined",
542
1625
  "reflects": false,
543
1626
  "privacy": "public"
544
1627
  }
545
1628
  ],
546
1629
  "methods": [
547
1630
  {
548
- "name": "attributeChangedCallback",
1631
+ "name": "connectedCallback",
1632
+ "description": null,
1633
+ "parameters": [],
1634
+ "return": "void"
1635
+ },
1636
+ {
1637
+ "name": "createRenderRoot",
1638
+ "description": null,
1639
+ "parameters": [],
1640
+ "return": "this"
1641
+ },
1642
+ {
1643
+ "name": "defineRenderer",
549
1644
  "description": null,
550
1645
  "parameters": [
551
1646
  {
552
- "name": "name",
553
- "type": "any",
554
- "description": null,
555
- "optional": false
556
- },
557
- {
558
- "name": "oldVal",
1647
+ "name": "widgetKey",
559
1648
  "type": "any",
560
1649
  "description": null,
561
1650
  "optional": false
562
1651
  },
563
1652
  {
564
- "name": "newVal",
1653
+ "name": "fn",
565
1654
  "type": "any",
566
1655
  "description": null,
567
1656
  "optional": false
@@ -570,320 +1659,354 @@
570
1659
  "return": "void"
571
1660
  },
572
1661
  {
573
- "name": "connectedCallback",
1662
+ "name": "getValuesFlat",
1663
+ "description": null,
1664
+ "parameters": [],
1665
+ "return": "{}"
1666
+ },
1667
+ {
1668
+ "name": "render",
1669
+ "description": null,
1670
+ "parameters": [],
1671
+ "return": "any"
1672
+ },
1673
+ {
1674
+ "name": "reset",
574
1675
  "description": null,
575
1676
  "parameters": [],
576
1677
  "return": "void"
577
1678
  },
578
1679
  {
579
- "name": "disconnectedCallback",
1680
+ "name": "serialize",
1681
+ "description": null,
1682
+ "parameters": [],
1683
+ "return": "{\n json: {};\n formData: FormData;\n }"
1684
+ },
1685
+ {
1686
+ "name": "submit",
580
1687
  "description": null,
581
1688
  "parameters": [],
1689
+ "return": "Promise<any>"
1690
+ },
1691
+ {
1692
+ "name": "useValidator",
1693
+ "description": null,
1694
+ "parameters": [
1695
+ {
1696
+ "name": "fn",
1697
+ "type": "any",
1698
+ "description": null,
1699
+ "optional": false
1700
+ }
1701
+ ],
1702
+ "return": "void"
1703
+ },
1704
+ {
1705
+ "name": "willUpdate",
1706
+ "description": null,
1707
+ "parameters": [
1708
+ {
1709
+ "name": "changed",
1710
+ "type": "any",
1711
+ "description": null,
1712
+ "optional": false
1713
+ }
1714
+ ],
582
1715
  "return": "void"
583
1716
  }
584
1717
  ],
585
1718
  "events": [
586
1719
  {
587
- "name": "satellite-click",
588
- "description": "Fired when a satellite button is clicked",
589
- "type": "CustomEvent"
590
- }
591
- ],
592
- "slots": [
1720
+ "name": "pw:array-add",
1721
+ "type": "CustomEvent<formArrayEventDetail>",
1722
+ "description": "Triggered when an array item is appended. Carries the path and index metadata."
1723
+ },
593
1724
  {
594
- "name": "",
595
- "description": "Main FAB button content (typically an icon or avatar)"
1725
+ "name": "pw:array-remove",
1726
+ "type": "CustomEvent<formArrayEventDetail>",
1727
+ "description": "Triggered when an array item is removed."
596
1728
  },
597
1729
  {
598
- "name": "satellite-{key}",
599
- "description": "Override individual satellite button content"
600
- }
601
- ],
602
- "cssParts": [
1730
+ "name": "pw:array-reorder",
1731
+ "type": "CustomEvent<formArrayEventDetail>",
1732
+ "description": "Triggered when array items are reordered (drag & drop scenarios)."
1733
+ },
603
1734
  {
604
- "name": "fab",
605
- "description": "The main FAB button"
1735
+ "name": "pw:dialog-open",
1736
+ "type": "CustomEvent<formDialogEventDetail>",
1737
+ "description": "Fires before a dialog-driven field opens (e.g. complex editors)."
606
1738
  },
607
1739
  {
608
- "name": "satellite",
609
- "description": "Individual satellite buttons"
1740
+ "name": "pw:dialog-submit",
1741
+ "type": "CustomEvent<formDialogEventDetail>",
1742
+ "description": "Fires when a dialog-driven field is saved."
610
1743
  },
611
1744
  {
612
- "name": "label",
613
- "description": "Satellite button labels"
1745
+ "name": "pw:submit",
1746
+ "type": "CustomEvent<formSubmitDetail>",
1747
+ "description": "Emitted after submission. `detail` includes `{ json, formData, valid, issues }` for server hand-off or additional processing."
1748
+ },
1749
+ {
1750
+ "name": "pw:value-change",
1751
+ "type": "CustomEvent<formValueChangeDetail>",
1752
+ "description": "Live value updates whenever a field changes. `detail.name` contains the JSON Pointer-compatible path."
614
1753
  }
615
1754
  ],
616
- "notes": []
1755
+ "slots": [],
1756
+ "cssParts": [],
1757
+ "notes": [
1758
+ "Typed interfaces for `formOptions`, `UISchema`, and related events live in `src/js/pds.d.ts`.",
1759
+ "The form accepts standard JSON Schema (Draft 7) documents via the `jsonSchema` property. `uiSchema` and `options` fine-tune layout, widgets, and behaviors."
1760
+ ]
617
1761
  },
618
- "pds-form": {
619
- "tag": "pds-form",
620
- "className": "SchemaForm",
621
- "displayName": "PDS JSON Schema Form",
622
- "storyTitle": "Components/pds-form",
1762
+ "pds-icon": {
1763
+ "tag": "pds-icon",
1764
+ "className": "SvgIcon",
1765
+ "displayName": "pds-icon",
1766
+ "storyTitle": "Components/pds-icon",
623
1767
  "category": "Components",
624
- "description": "<pds-form>\n\nForm Actions:\nBy default, the form includes Submit and Reset buttons inside the <form> element.\n\nUsage options:\n1. Default buttons:\n <pds-form .jsonSchema=${schema}></pds-form>\n\n2. Customize labels:\n <pds-form .jsonSchema=${schema} submit-label=\"Save\" reset-label=\"Clear\"></pds-form>\n\n3. Hide reset button:\n <pds-form .jsonSchema=${schema} hide-reset></pds-form>\n\n4. Add extra buttons (slot):\n <pds-form .jsonSchema=${schema}>\n <button type=\"button\" slot=\"actions\"\n\n<pds-form>\n\nForm Actions:\nBy default, the form includes Submit and Reset buttons inside the <form> element.\n\nUsage options:\n1. Default buttons:\n <pds-form .jsonSchema=${schema}></pds-form>\n\n2. Customize labels:\n <pds-form .jsonSchema=${schema} submit-label=\"Save\" reset-label=\"Clear\"></pds-form>\n\n3. Hide reset button:\n <pds-form .jsonSchema=${schema} hide-reset></pds-form>\n\n4. Add extra buttons (slot):\n <pds-form .jsonSchema=${schema}>\n <button type=\"button\" slot=\"actions\"",
625
- "docsDescription": "**✨ Recommended for modern applications** - Automatically generate complete forms from [JSON Schema](https://json-schema.org/) definitions.\n\n### Key Features\n- 📝 **Zero boilerplate** - Define form structure in JSON, get a working form with validation\n- ✓ **Built-in validation** - Automatic validation based on schema rules (required, min/max, patterns, etc.)\n- 🔄 **Data binding** - Two-way data binding with form state management\n- 🎨 **PDS styled** - Uses all PDS design tokens automatically\n- 📱 **Responsive** - Mobile-friendly layouts out of the box\n- 🔀 **Conditional logic** - Show/hide/disable fields, computed values\n- 🗂️ **Nested objects** - Support for complex nested data structures\n- 🔧 **Extensible** - Custom field types and validators\n\n### Why Generate Forms from JSON Schema?\nInstead of manually writing HTML for every form field, validation rule, and error message, you define your data schema once and get:\n- Form UI generation\n- Client-side validation\n- Server-side validation (same schema)\n- API documentation\n- Type definitions\n- Database schemas\n\nSee the examples below to get started, or check the [primitive forms](/story/primitives-form-elements--default) for manual form building.",
1768
+ "description": "SVG Icon Web Component\n\nSVG Icon Web Component",
1769
+ "docsDescription": null,
626
1770
  "pdsTags": [
627
1771
  "autodocs",
628
- "forms",
629
- "input",
630
- "interaction",
631
- "json-schema",
632
- "pds-form",
633
- "validation"
1772
+ "graphic",
1773
+ "icon",
1774
+ "icons",
1775
+ "pds-icon",
1776
+ "phosphor",
1777
+ "sprite",
1778
+ "svg",
1779
+ "symbol"
634
1780
  ],
635
1781
  "ontology": {
636
- "id": "pds-form",
637
- "name": "JSON Form",
638
- "description": "Auto-generated form from JSON Schema",
1782
+ "id": "pds-icon",
1783
+ "name": "Icon",
1784
+ "description": "SVG icon web component",
639
1785
  "selectors": [
640
- "pds-form"
1786
+ "pds-icon"
641
1787
  ],
642
1788
  "tags": [
643
- "form",
644
- "schema",
645
- "auto-generate"
1789
+ "icon",
1790
+ "graphic",
1791
+ "svg"
646
1792
  ],
647
- "category": "form"
1793
+ "category": "media"
648
1794
  },
649
1795
  "stories": [],
650
- "sourceModule": "public/assets/pds/components/pds-form.js",
651
- "superclass": "LitElement",
1796
+ "sourceModule": "public/assets/pds/components/pds-icon.js",
1797
+ "superclass": "HTMLElement",
652
1798
  "attributes": [
653
1799
  {
654
- "name": "json-schema",
655
- "description": "Primary schema input. Provide a JSON Schema object to generate the form layout and validation rules.",
656
- "type": "object",
657
- "default": "undefined",
658
- "fieldName": "jsonSchema",
659
- "property": "jsonSchema"
660
- },
661
- {
662
- "name": "ui-schema",
663
- "description": "Optional UI overrides keyed by JSON Pointer. Controls layout, widgets, surfaces, dialogs, and per-field hints.",
664
- "type": "object",
665
- "default": "undefined",
666
- "fieldName": "uiSchema",
667
- "property": "uiSchema"
668
- },
669
- {
670
- "name": "options",
671
- "description": "Toolkit-level options that adjust widget families, layouts, and validation behavior. Supports path-specific overrides.",
672
- "type": "object",
673
- "default": "undefined",
674
- "fieldName": "options",
675
- "property": "options"
1800
+ "name": "icon",
1801
+ "description": "Icon name from the sprite sheet",
1802
+ "type": "string",
1803
+ "default": null,
1804
+ "fieldName": null
676
1805
  },
677
1806
  {
678
- "name": "values",
679
- "description": "Initial data that pre-populates the generated form. Shape must match the JSON Schema.",
680
- "type": "object",
681
- "default": "undefined",
682
- "fieldName": "values",
683
- "property": "values"
1807
+ "name": "size",
1808
+ "description": "Icon size in pixels or named size (xs, sm, md, lg, xl, 2xl)",
1809
+ "type": "string|number",
1810
+ "default": null,
1811
+ "fieldName": null
684
1812
  },
685
1813
  {
686
- "name": "action",
687
- "description": null,
1814
+ "name": "color",
1815
+ "description": "Icon color (CSS color value, default: currentColor)",
688
1816
  "type": "string",
689
1817
  "default": null,
690
- "fieldName": "action",
691
- "property": "action"
1818
+ "fieldName": null
692
1819
  },
693
1820
  {
694
- "name": "method",
695
- "description": null,
1821
+ "name": "label",
1822
+ "description": "Accessible label for the icon (adds role=\"img\")",
696
1823
  "type": "string",
697
- "default": "\"post\"",
698
- "fieldName": "method",
699
- "property": "method"
1824
+ "default": null,
1825
+ "fieldName": null
700
1826
  },
701
1827
  {
702
- "name": "disabled",
703
- "description": null,
704
- "type": "boolean",
1828
+ "name": "rotate",
1829
+ "description": "Rotation angle in degrees",
1830
+ "type": "number",
705
1831
  "default": null,
706
- "fieldName": "disabled",
707
- "property": "disabled"
1832
+ "fieldName": null
708
1833
  },
709
1834
  {
710
- "name": "hide-actions",
711
- "description": null,
1835
+ "name": "morph",
1836
+ "description": "Morph the icon when the icon name changes",
712
1837
  "type": "boolean",
713
- "default": "false",
714
- "fieldName": "hideActions",
715
- "property": "hideActions"
716
- },
717
- {
718
- "name": "submit-label",
719
- "description": null,
720
- "type": "string",
721
- "default": "\"Submit\"",
722
- "fieldName": "submitLabel",
723
- "property": "submitLabel"
1838
+ "default": null,
1839
+ "fieldName": null
724
1840
  },
725
1841
  {
726
- "name": "reset-label",
727
- "description": null,
1842
+ "name": "sprite",
1843
+ "description": "Override sprite sheet path",
728
1844
  "type": "string",
729
- "default": "\"Reset\"",
730
- "fieldName": "resetLabel",
731
- "property": "resetLabel"
732
- },
733
- {
734
- "name": "hide-reset",
735
- "description": null,
736
- "type": "boolean",
737
- "default": "false",
738
- "fieldName": "hideReset",
739
- "property": "hideReset"
740
- },
741
- {
742
- "name": "hide-submit",
743
- "description": null,
744
- "type": "boolean",
745
1845
  "default": null,
746
- "fieldName": "hideSubmit",
747
- "property": "hideSubmit"
1846
+ "fieldName": null
748
1847
  },
749
1848
  {
750
- "name": "hide-legend",
751
- "description": null,
1849
+ "name": "no-sprite",
1850
+ "description": "Force fallback icon rendering",
752
1851
  "type": "boolean",
753
- "default": "false",
754
- "fieldName": "hideLegend",
755
- "property": "hideLegend"
1852
+ "default": null,
1853
+ "fieldName": null
756
1854
  }
757
1855
  ],
758
1856
  "properties": [
759
1857
  {
760
- "name": "action",
761
- "attribute": "action",
762
- "description": null,
763
- "type": "string",
1858
+ "name": "ensureConfigListeners",
1859
+ "attribute": null,
1860
+ "description": "Ensures one-time config lifecycle listeners so icons re-render when config becomes available.",
1861
+ "type": null,
764
1862
  "default": null,
765
1863
  "reflects": false,
766
1864
  "privacy": "public"
767
1865
  },
768
1866
  {
769
- "name": "disabled",
770
- "attribute": "disabled",
1867
+ "name": "externalIconCache",
1868
+ "attribute": null,
771
1869
  "description": null,
772
- "type": "boolean",
773
- "default": null,
774
- "reflects": true,
1870
+ "type": "Map<any, any>",
1871
+ "default": "new Map()",
1872
+ "reflects": false,
775
1873
  "privacy": "public"
776
1874
  },
777
1875
  {
778
- "name": "hideActions",
779
- "attribute": "hide-actions",
1876
+ "name": "externalIconPromises",
1877
+ "attribute": null,
780
1878
  "description": null,
781
- "type": "boolean",
782
- "default": "false",
1879
+ "type": "Map<any, any>",
1880
+ "default": "new Map()",
783
1881
  "reflects": false,
784
1882
  "privacy": "public"
785
1883
  },
786
1884
  {
787
- "name": "hideLegend",
788
- "attribute": "hide-legend",
1885
+ "name": "externalPathDebugLogged",
1886
+ "attribute": null,
789
1887
  "description": null,
790
- "type": "boolean",
791
- "default": "false",
1888
+ "type": "Set<any>",
1889
+ "default": "new Set()",
792
1890
  "reflects": false,
793
1891
  "privacy": "public"
794
1892
  },
795
1893
  {
796
- "name": "hideReset",
797
- "attribute": "hide-reset",
798
- "description": null,
799
- "type": "boolean",
800
- "default": "false",
1894
+ "name": "getExternalIconCacheKey",
1895
+ "attribute": null,
1896
+ "description": "Build a deterministic cache key for external icon content.",
1897
+ "type": null,
1898
+ "default": null,
801
1899
  "reflects": false,
802
1900
  "privacy": "public"
803
1901
  },
804
1902
  {
805
- "name": "hideSubmit",
806
- "attribute": "hide-submit",
807
- "description": null,
808
- "type": "boolean",
1903
+ "name": "getExternalIconPath",
1904
+ "attribute": null,
1905
+ "description": "Get the external icons path from PDS config or use default",
1906
+ "type": null,
809
1907
  "default": null,
810
1908
  "reflects": false,
811
1909
  "privacy": "public"
812
1910
  },
813
1911
  {
814
- "name": "jsonSchema",
815
- "attribute": "json-schema",
816
- "description": "Primary schema input. Provide a JSON Schema object to generate the form layout and validation rules.",
817
- "type": "JSONSchema7 (object)",
818
- "default": "undefined",
1912
+ "name": "getExternalIconURL",
1913
+ "attribute": null,
1914
+ "description": "Resolve an external icon URL from icon name + base path.",
1915
+ "type": null,
1916
+ "default": null,
819
1917
  "reflects": false,
820
1918
  "privacy": "public"
821
1919
  },
822
1920
  {
823
- "name": "method",
824
- "attribute": "method",
825
- "description": null,
826
- "type": "string",
827
- "default": "\"post\"",
1921
+ "name": "hasConfiguredExternalIconPath",
1922
+ "attribute": null,
1923
+ "description": "Returns true when externalPath is explicitly present in runtime config.",
1924
+ "type": null,
1925
+ "default": null,
828
1926
  "reflects": false,
829
1927
  "privacy": "public"
830
1928
  },
831
1929
  {
832
- "name": "options",
833
- "attribute": "options",
834
- "description": "Toolkit-level options that adjust widget families, layouts, and validation behavior. Supports path-specific overrides.",
835
- "type": "formOptions",
836
- "default": "undefined",
1930
+ "name": "inlineSprites",
1931
+ "attribute": null,
1932
+ "description": null,
1933
+ "type": "Map<any, any>",
1934
+ "default": "new Map()",
837
1935
  "reflects": false,
838
1936
  "privacy": "public"
839
1937
  },
840
1938
  {
841
- "name": "properties",
1939
+ "name": "instances",
842
1940
  "attribute": null,
843
1941
  "description": null,
844
- "type": "{\n jsonSchema: {\n type: ObjectConstructor;\n attribute: string;\n };\n uiSchema: {\n type: ObjectConstructor;\n attribute: string;\n };\n options: {\n type: ObjectConstructor;\n };\n values: {\n type: ObjectConstructor;\n };\n action: {\n type: StringConstructor;\n };\n method: {\n type: StringConstructor;\n };\n disabled: {\n type: BooleanConstructor;\n reflect: boolean;\n };\n hideActions: {\n type: BooleanConstructor;\n attribute: string;\n };\n submitLabel: {\n type: StringConstructor;\n attribute: string;\n };\n resetLabel: {\n type: StringConstructor;\n attribute: string;\n };\n hideReset: {\n type: BooleanConstructor;\n attribute: string;\n };\n hideSubmit: {\n type: BooleanConstructor;\n attribute: string;\n };\n hideLegend: {\n type: BooleanConstructor;\n attribute: string;\n };\n }",
845
- "default": null,
1942
+ "type": "Set<any>",
1943
+ "default": "new Set()",
846
1944
  "reflects": false,
847
1945
  "privacy": "public"
848
1946
  },
849
1947
  {
850
- "name": "resetLabel",
851
- "attribute": "reset-label",
852
- "description": null,
853
- "type": "string",
854
- "default": "\"Reset\"",
1948
+ "name": "isDebugLoggingEnabled",
1949
+ "attribute": null,
1950
+ "description": "Whether verbose icon diagnostics should be logged.",
1951
+ "type": null,
1952
+ "default": null,
855
1953
  "reflects": false,
856
1954
  "privacy": "public"
857
1955
  },
858
1956
  {
859
- "name": "submitLabel",
860
- "attribute": "submit-label",
861
- "description": null,
862
- "type": "string",
863
- "default": "\"Submit\"",
1957
+ "name": "normalizeExternalIconPath",
1958
+ "attribute": null,
1959
+ "description": "Normalize the external icon path to make cache keys and URL joining stable.",
1960
+ "type": null,
1961
+ "default": null,
864
1962
  "reflects": false,
865
1963
  "privacy": "public"
866
1964
  },
867
1965
  {
868
- "name": "uiSchema",
869
- "attribute": "ui-schema",
870
- "description": "Optional UI overrides keyed by JSON Pointer. Controls layout, widgets, surfaces, dialogs, and per-field hints.",
871
- "type": "UISchema",
872
- "default": "undefined",
1966
+ "name": "observedAttributes",
1967
+ "attribute": null,
1968
+ "description": null,
1969
+ "type": "string[]",
1970
+ "default": null,
873
1971
  "reflects": false,
874
1972
  "privacy": "public"
875
1973
  },
876
1974
  {
877
- "name": "values",
878
- "attribute": "values",
879
- "description": "Initial data that pre-populates the generated form. Shape must match the JSON Schema.",
880
- "type": "Record<string, any>",
881
- "default": "undefined",
1975
+ "name": "spritePromises",
1976
+ "attribute": null,
1977
+ "description": null,
1978
+ "type": "Map<any, any>",
1979
+ "default": "new Map()",
882
1980
  "reflects": false,
883
1981
  "privacy": "public"
884
1982
  }
885
1983
  ],
886
1984
  "methods": [
1985
+ {
1986
+ "name": "attributeChangedCallback",
1987
+ "description": null,
1988
+ "parameters": [
1989
+ {
1990
+ "name": "name",
1991
+ "type": "any",
1992
+ "description": null,
1993
+ "optional": false
1994
+ },
1995
+ {
1996
+ "name": "oldValue",
1997
+ "type": "any",
1998
+ "description": null,
1999
+ "optional": false
2000
+ },
2001
+ {
2002
+ "name": "newValue",
2003
+ "type": "any",
2004
+ "description": null,
2005
+ "optional": false
2006
+ }
2007
+ ],
2008
+ "return": "void"
2009
+ },
887
2010
  {
888
2011
  "name": "connectedCallback",
889
2012
  "description": null,
@@ -891,351 +2014,329 @@
891
2014
  "return": "void"
892
2015
  },
893
2016
  {
894
- "name": "createRenderRoot",
2017
+ "name": "disconnectedCallback",
895
2018
  "description": null,
896
2019
  "parameters": [],
897
- "return": "this"
2020
+ "return": "void"
898
2021
  },
899
2022
  {
900
- "name": "defineRenderer",
2023
+ "name": "ensureInlineSprite",
901
2024
  "description": null,
902
2025
  "parameters": [
903
2026
  {
904
- "name": "widgetKey",
2027
+ "name": "spriteURL",
905
2028
  "type": "any",
906
2029
  "description": null,
907
2030
  "optional": false
2031
+ }
2032
+ ],
2033
+ "return": "Promise<any>"
2034
+ },
2035
+ {
2036
+ "name": "fetchExternalIcon",
2037
+ "description": "Fetch an external SVG icon and cache it\n\nFetch an external SVG icon and cache it",
2038
+ "parameters": [
2039
+ {
2040
+ "name": "iconName",
2041
+ "type": "string",
2042
+ "description": "The icon name (without .svg extension)",
2043
+ "optional": false
908
2044
  },
909
2045
  {
910
- "name": "fn",
2046
+ "name": "basePath",
911
2047
  "type": "any",
912
2048
  "description": null,
913
2049
  "optional": false
914
2050
  }
915
2051
  ],
916
- "return": "void"
2052
+ "return": "Promise<boolean>"
917
2053
  },
918
2054
  {
919
- "name": "getValuesFlat",
2055
+ "name": "notifyInstances",
920
2056
  "description": null,
921
2057
  "parameters": [],
922
- "return": "{}"
2058
+ "return": "void"
923
2059
  },
924
2060
  {
925
2061
  "name": "render",
926
2062
  "description": null,
927
2063
  "parameters": [],
928
- "return": "any"
2064
+ "return": "void"
929
2065
  },
930
2066
  {
931
- "name": "reset",
2067
+ "name": "spriteAvailable",
2068
+ "description": "Check if sprite sheet is available\n\nCheck if sprite sheet is available",
2069
+ "parameters": [],
2070
+ "return": "boolean"
2071
+ }
2072
+ ],
2073
+ "events": [],
2074
+ "slots": [],
2075
+ "cssParts": [],
2076
+ "notes": []
2077
+ },
2078
+ "component_tag": {
2079
+ "tag": "component_tag",
2080
+ "className": "PdsLiveTemplateCanvas",
2081
+ "displayName": "Component_tag",
2082
+ "storyTitle": null,
2083
+ "category": null,
2084
+ "description": null,
2085
+ "docsDescription": null,
2086
+ "pdsTags": [],
2087
+ "ontology": null,
2088
+ "stories": [],
2089
+ "sourceModule": "public/assets/pds/components/pds-live-template-canvas.js",
2090
+ "superclass": "HTMLElement",
2091
+ "attributes": [],
2092
+ "properties": [],
2093
+ "methods": [],
2094
+ "events": [
2095
+ {
2096
+ "name": "pds:live-template:inject",
2097
+ "description": null,
2098
+ "type": "CustomEvent"
2099
+ }
2100
+ ],
2101
+ "slots": [],
2102
+ "cssParts": [],
2103
+ "notes": []
2104
+ },
2105
+ "editor_tag": {
2106
+ "tag": "editor_tag",
2107
+ "className": "PdsLiveEdit",
2108
+ "displayName": "Editor_tag",
2109
+ "storyTitle": null,
2110
+ "category": null,
2111
+ "description": null,
2112
+ "docsDescription": null,
2113
+ "pdsTags": [],
2114
+ "ontology": null,
2115
+ "stories": [],
2116
+ "sourceModule": "public/assets/pds/components/pds-live-edit.js",
2117
+ "superclass": "HTMLElement",
2118
+ "attributes": [],
2119
+ "properties": [],
2120
+ "methods": [
2121
+ {
2122
+ "name": "createSharedQuickModeMenuItem",
932
2123
  "description": null,
933
2124
  "parameters": [],
934
- "return": "void"
2125
+ "return": null
935
2126
  },
936
2127
  {
937
- "name": "serialize",
2128
+ "name": "isInteractiveEditingEnabled",
938
2129
  "description": null,
939
2130
  "parameters": [],
940
- "return": "{\n json: {};\n formData: FormData;\n }"
2131
+ "return": null
941
2132
  },
942
2133
  {
943
- "name": "submit",
2134
+ "name": "openDesignSettings",
944
2135
  "description": null,
945
2136
  "parameters": [],
946
- "return": "Promise<any>"
2137
+ "return": null
947
2138
  },
948
2139
  {
949
- "name": "useValidator",
2140
+ "name": "openImportDetailsFromToast",
950
2141
  "description": null,
951
2142
  "parameters": [
952
2143
  {
953
- "name": "fn",
954
- "type": "any",
955
- "description": null,
956
- "optional": false
2144
+ "name": "options",
2145
+ "type": null,
2146
+ "description": null
957
2147
  }
958
2148
  ],
959
- "return": "void"
2149
+ "return": null
960
2150
  },
961
2151
  {
962
- "name": "willUpdate",
2152
+ "name": "resetConfig",
2153
+ "description": null,
2154
+ "parameters": [],
2155
+ "return": null
2156
+ },
2157
+ {
2158
+ "name": "setInteractiveEditingEnabled",
963
2159
  "description": null,
964
2160
  "parameters": [
965
2161
  {
966
- "name": "changed",
967
- "type": "any",
968
- "description": null,
969
- "optional": false
2162
+ "name": "enabled",
2163
+ "type": null,
2164
+ "description": null
970
2165
  }
971
2166
  ],
972
- "return": "void"
2167
+ "return": null
973
2168
  }
974
2169
  ],
975
2170
  "events": [
976
2171
  {
977
- "name": "pw:array-add",
978
- "type": "CustomEvent<formArrayEventDetail>",
979
- "description": "Triggered when an array item is appended. Carries the path and index metadata."
980
- },
981
- {
982
- "name": "pw:array-remove",
983
- "type": "CustomEvent<formArrayEventDetail>",
984
- "description": "Triggered when an array item is removed."
985
- },
986
- {
987
- "name": "pw:array-reorder",
988
- "type": "CustomEvent<formArrayEventDetail>",
989
- "description": "Triggered when array items are reordered (drag & drop scenarios)."
990
- },
991
- {
992
- "name": "pw:dialog-open",
993
- "type": "CustomEvent<formDialogEventDetail>",
994
- "description": "Fires before a dialog-driven field opens (e.g. complex editors)."
995
- },
996
- {
997
- "name": "pw:dialog-submit",
998
- "type": "CustomEvent<formDialogEventDetail>",
999
- "description": "Fires when a dialog-driven field is saved."
1000
- },
1001
- {
1002
- "name": "pw:submit",
1003
- "type": "CustomEvent<formSubmitDetail>",
1004
- "description": "Emitted after submission. `detail` includes `{ json, formData, valid, issues }` for server hand-off or additional processing."
1005
- },
1006
- {
1007
- "name": "pw:value-change",
1008
- "type": "CustomEvent<formValueChangeDetail>",
1009
- "description": "Live value updates whenever a field changes. `detail.name` contains the JSON Pointer-compatible path."
2172
+ "name": "pds:live-edit:disable",
2173
+ "description": null,
2174
+ "type": "CustomEvent"
1010
2175
  }
1011
2176
  ],
1012
2177
  "slots": [],
1013
2178
  "cssParts": [],
1014
- "notes": [
1015
- "Typed interfaces for `formOptions`, `UISchema`, and related events live in `src/js/pds.d.ts`.",
1016
- "The form accepts standard JSON Schema (Draft 7) documents via the `jsonSchema` property. `uiSchema` and `options` fine-tune layout, widgets, and behaviors."
1017
- ]
2179
+ "notes": []
1018
2180
  },
1019
- "pds-icon": {
1020
- "tag": "pds-icon",
1021
- "className": "SvgIcon",
1022
- "displayName": "pds-icon",
1023
- "storyTitle": "Components/pds-icon",
2181
+ "pds-omnibox": {
2182
+ "tag": "pds-omnibox",
2183
+ "className": "PdsOmnibox",
2184
+ "displayName": "pds-omnibox",
2185
+ "storyTitle": "Components/pds-omnibox",
1024
2186
  "category": "Components",
1025
- "description": "SVG Icon Web Component\n\nSVG Icon Web Component",
1026
- "docsDescription": null,
2187
+ "description": null,
2188
+ "docsDescription": "Omnibox search input with PDS styling and form association",
1027
2189
  "pdsTags": [
2190
+ "autocomplete",
1028
2191
  "autodocs",
1029
- "graphic",
1030
- "icon",
1031
- "icons",
1032
- "pds-icon",
1033
- "phosphor",
1034
- "sprite",
1035
- "svg",
1036
- "symbol"
2192
+ "forms",
2193
+ "input",
2194
+ "pds-omnibox",
2195
+ "search"
1037
2196
  ],
1038
- "ontology": {
1039
- "id": "pds-icon",
1040
- "name": "Icon",
1041
- "description": "SVG icon web component",
1042
- "selectors": [
1043
- "pds-icon"
1044
- ],
1045
- "tags": [
1046
- "icon",
1047
- "graphic",
1048
- "svg"
1049
- ],
1050
- "category": "media"
1051
- },
2197
+ "ontology": null,
1052
2198
  "stories": [],
1053
- "sourceModule": "public/assets/pds/components/pds-icon.js",
2199
+ "sourceModule": "public/assets/pds/components/pds-omnibox.js",
1054
2200
  "superclass": "HTMLElement",
1055
2201
  "attributes": [
1056
- {
1057
- "name": "icon",
1058
- "description": "Icon name from the sprite sheet",
1059
- "type": "string",
1060
- "default": null,
1061
- "fieldName": null
1062
- },
1063
- {
1064
- "name": "size",
1065
- "description": "Icon size in pixels or named size (xs, sm, md, lg, xl, 2xl)",
1066
- "type": "string|number",
2202
+ {
2203
+ "name": "name",
2204
+ "description": null,
2205
+ "type": null,
1067
2206
  "default": null,
1068
- "fieldName": null
2207
+ "fieldName": null,
2208
+ "property": "name"
1069
2209
  },
1070
2210
  {
1071
- "name": "color",
1072
- "description": "Icon color (CSS color value, default: currentColor)",
1073
- "type": "string",
2211
+ "name": "placeholder",
2212
+ "description": null,
2213
+ "type": null,
1074
2214
  "default": null,
1075
- "fieldName": null
2215
+ "fieldName": null,
2216
+ "property": "placeholder"
1076
2217
  },
1077
2218
  {
1078
- "name": "label",
1079
- "description": "Accessible label for the icon (adds role=\"img\")",
1080
- "type": "string",
2219
+ "name": "value",
2220
+ "description": null,
2221
+ "type": null,
1081
2222
  "default": null,
1082
- "fieldName": null
2223
+ "fieldName": null,
2224
+ "property": "value"
1083
2225
  },
1084
2226
  {
1085
- "name": "rotate",
1086
- "description": "Rotation angle in degrees",
1087
- "type": "number",
2227
+ "name": "disabled",
2228
+ "description": null,
2229
+ "type": null,
1088
2230
  "default": null,
1089
- "fieldName": null
2231
+ "fieldName": null,
2232
+ "property": "disabled"
1090
2233
  },
1091
2234
  {
1092
- "name": "morph",
1093
- "description": "Morph the icon when the icon name changes",
1094
- "type": "boolean",
2235
+ "name": "required",
2236
+ "description": null,
2237
+ "type": null,
1095
2238
  "default": null,
1096
- "fieldName": null
2239
+ "fieldName": null,
2240
+ "property": "required"
1097
2241
  },
1098
2242
  {
1099
- "name": "sprite",
1100
- "description": "Override sprite sheet path",
1101
- "type": "string",
2243
+ "name": "autocomplete",
2244
+ "description": null,
2245
+ "type": null,
1102
2246
  "default": null,
1103
- "fieldName": null
2247
+ "fieldName": null,
2248
+ "property": "autocomplete"
1104
2249
  },
1105
2250
  {
1106
- "name": "no-sprite",
1107
- "description": "Force fallback icon rendering",
1108
- "type": "boolean",
2251
+ "name": "icon",
2252
+ "description": null,
2253
+ "type": null,
1109
2254
  "default": null,
1110
- "fieldName": null
2255
+ "fieldName": null,
2256
+ "property": "icon"
1111
2257
  }
1112
2258
  ],
1113
2259
  "properties": [
1114
2260
  {
1115
- "name": "ensureConfigListeners",
1116
- "attribute": null,
1117
- "description": "Ensures one-time config lifecycle listeners so icons re-render when config becomes available.",
2261
+ "name": "autocomplete",
2262
+ "attribute": "autocomplete",
2263
+ "description": null,
1118
2264
  "type": null,
1119
2265
  "default": null,
1120
2266
  "reflects": false,
1121
2267
  "privacy": "public"
1122
2268
  },
1123
2269
  {
1124
- "name": "externalIconCache",
1125
- "attribute": null,
2270
+ "name": "disabled",
2271
+ "attribute": "disabled",
1126
2272
  "description": null,
1127
- "type": "Map<any, any>",
1128
- "default": "new Map()",
2273
+ "type": null,
2274
+ "default": null,
1129
2275
  "reflects": false,
1130
2276
  "privacy": "public"
1131
2277
  },
1132
2278
  {
1133
- "name": "externalIconPromises",
2279
+ "name": "formAssociated",
1134
2280
  "attribute": null,
1135
2281
  "description": null,
1136
- "type": "Map<any, any>",
1137
- "default": "new Map()",
2282
+ "type": "boolean",
2283
+ "default": "true",
1138
2284
  "reflects": false,
1139
2285
  "privacy": "public"
1140
2286
  },
1141
2287
  {
1142
- "name": "externalPathDebugLogged",
1143
- "attribute": null,
2288
+ "name": "icon",
2289
+ "attribute": "icon",
1144
2290
  "description": null,
1145
- "type": "Set<any>",
1146
- "default": null,
1147
- "reflects": false,
1148
- "privacy": "public"
1149
- },
1150
- {
1151
- "name": "getExternalIconCacheKey",
1152
- "attribute": null,
1153
- "description": "Build a deterministic cache key for external icon content.",
1154
- "type": null,
1155
- "default": null,
1156
- "reflects": false,
1157
- "privacy": "public"
1158
- },
1159
- {
1160
- "name": "getExternalIconPath",
1161
- "attribute": null,
1162
- "description": "Get the external icons path from PDS config or use default",
1163
2291
  "type": null,
1164
2292
  "default": null,
1165
2293
  "reflects": false,
1166
2294
  "privacy": "public"
1167
2295
  },
1168
2296
  {
1169
- "name": "getExternalIconURL",
1170
- "attribute": null,
1171
- "description": "Resolve an external icon URL from icon name + base path.",
2297
+ "name": "name",
2298
+ "attribute": "name",
2299
+ "description": null,
1172
2300
  "type": null,
1173
2301
  "default": null,
1174
2302
  "reflects": false,
1175
2303
  "privacy": "public"
1176
2304
  },
1177
2305
  {
1178
- "name": "hasConfiguredExternalIconPath",
1179
- "attribute": null,
1180
- "description": "Returns true when externalPath is explicitly present in runtime config.",
2306
+ "name": "placeholder",
2307
+ "attribute": "placeholder",
2308
+ "description": null,
1181
2309
  "type": null,
1182
2310
  "default": null,
1183
2311
  "reflects": false,
1184
2312
  "privacy": "public"
1185
2313
  },
1186
2314
  {
1187
- "name": "inlineSprites",
1188
- "attribute": null,
1189
- "description": null,
1190
- "type": "Map<any, any>",
1191
- "default": "new Map()",
1192
- "reflects": false,
1193
- "privacy": "public"
1194
- },
1195
- {
1196
- "name": "instances",
1197
- "attribute": null,
2315
+ "name": "required",
2316
+ "attribute": "required",
1198
2317
  "description": null,
1199
- "type": "Set<any>",
1200
- "default": "new Set()",
1201
- "reflects": false,
1202
- "privacy": "public"
1203
- },
1204
- {
1205
- "name": "isDebugLoggingEnabled",
1206
- "attribute": null,
1207
- "description": "Whether verbose icon diagnostics should be logged.",
1208
2318
  "type": null,
1209
2319
  "default": null,
1210
2320
  "reflects": false,
1211
2321
  "privacy": "public"
1212
2322
  },
1213
2323
  {
1214
- "name": "normalizeExternalIconPath",
2324
+ "name": "settings",
1215
2325
  "attribute": null,
1216
- "description": "Normalize the external icon path to make cache keys and URL joining stable.",
2326
+ "description": null,
1217
2327
  "type": null,
1218
2328
  "default": null,
1219
2329
  "reflects": false,
1220
2330
  "privacy": "public"
1221
2331
  },
1222
2332
  {
1223
- "name": "observedAttributes",
1224
- "attribute": null,
2333
+ "name": "value",
2334
+ "attribute": "value",
1225
2335
  "description": null,
1226
- "type": "string[]",
2336
+ "type": null,
1227
2337
  "default": null,
1228
2338
  "reflects": false,
1229
2339
  "privacy": "public"
1230
- },
1231
- {
1232
- "name": "spritePromises",
1233
- "attribute": null,
1234
- "description": null,
1235
- "type": "Map<any, any>",
1236
- "default": "new Map()",
1237
- "reflects": false,
1238
- "privacy": "public"
1239
2340
  }
1240
2341
  ],
1241
2342
  "methods": [
@@ -1243,184 +2344,103 @@
1243
2344
  "name": "attributeChangedCallback",
1244
2345
  "description": null,
1245
2346
  "parameters": [
1246
- {
1247
- "name": "name",
1248
- "type": "any",
1249
- "description": null,
1250
- "optional": false
1251
- },
1252
- {
1253
- "name": "oldValue",
1254
- "type": "any",
1255
- "description": null,
1256
- "optional": false
1257
- },
1258
- {
1259
- "name": "newValue",
1260
- "type": "any",
1261
- "description": null,
1262
- "optional": false
1263
- }
1264
- ],
1265
- "return": "void"
1266
- },
1267
- {
1268
- "name": "connectedCallback",
1269
- "description": null,
1270
- "parameters": [],
1271
- "return": "void"
1272
- },
1273
- {
1274
- "name": "disconnectedCallback",
1275
- "description": null,
1276
- "parameters": [],
1277
- "return": "void"
1278
- },
1279
- {
1280
- "name": "ensureInlineSprite",
1281
- "description": null,
1282
- "parameters": [
1283
- {
1284
- "name": "spriteURL",
1285
- "type": "any",
1286
- "description": null,
1287
- "optional": false
1288
- }
1289
- ],
1290
- "return": "Promise<any>"
1291
- },
1292
- {
1293
- "name": "fetchExternalIcon",
1294
- "description": "Fetch an external SVG icon and cache it\n\nFetch an external SVG icon and cache it",
1295
- "parameters": [
1296
- {
1297
- "name": "iconName",
1298
- "type": "string",
1299
- "description": "The icon name (without .svg extension)",
1300
- "optional": false
1301
- }
1302
- ],
1303
- "return": "Promise<boolean>"
1304
- },
1305
- {
1306
- "name": "notifyInstances",
1307
- "description": null,
1308
- "parameters": [],
1309
- "return": "void"
1310
- },
1311
- {
1312
- "name": "render",
1313
- "description": null,
1314
- "parameters": [],
1315
- "return": "void"
1316
- },
1317
- {
1318
- "name": "spriteAvailable",
1319
- "description": "Check if sprite sheet is available\n\nCheck if sprite sheet is available",
1320
- "parameters": [],
1321
- "return": "boolean"
1322
- }
1323
- ],
1324
- "events": [],
1325
- "slots": [],
1326
- "cssParts": [],
1327
- "notes": []
1328
- },
1329
- "component_tag": {
1330
- "tag": "component_tag",
1331
- "className": "PdsLiveTemplateCanvas",
1332
- "displayName": "Component_tag",
1333
- "storyTitle": null,
1334
- "category": null,
1335
- "description": null,
1336
- "docsDescription": null,
1337
- "pdsTags": [],
1338
- "ontology": null,
1339
- "stories": [],
1340
- "sourceModule": "public/assets/pds/components/pds-live-template-canvas.js",
1341
- "superclass": "HTMLElement",
1342
- "attributes": [],
1343
- "properties": [],
1344
- "methods": [],
1345
- "events": [
2347
+ {
2348
+ "name": "name",
2349
+ "type": "any",
2350
+ "description": null,
2351
+ "optional": false
2352
+ },
2353
+ {
2354
+ "name": "oldValue",
2355
+ "type": "any",
2356
+ "description": null,
2357
+ "optional": false
2358
+ },
2359
+ {
2360
+ "name": "newValue",
2361
+ "type": "any",
2362
+ "description": null,
2363
+ "optional": false
2364
+ }
2365
+ ],
2366
+ "return": "void"
2367
+ },
1346
2368
  {
1347
- "name": "pds:live-template:inject",
2369
+ "name": "checkValidity",
1348
2370
  "description": null,
1349
- "type": "CustomEvent"
1350
- }
1351
- ],
1352
- "slots": [],
1353
- "cssParts": [],
1354
- "notes": []
1355
- },
1356
- "editor_tag": {
1357
- "tag": "editor_tag",
1358
- "className": "PdsLiveEdit",
1359
- "displayName": "Editor_tag",
1360
- "storyTitle": null,
1361
- "category": null,
1362
- "description": null,
1363
- "docsDescription": null,
1364
- "pdsTags": [],
1365
- "ontology": null,
1366
- "stories": [],
1367
- "sourceModule": "public/assets/pds/components/pds-live-edit.js",
1368
- "superclass": "HTMLElement",
1369
- "attributes": [],
1370
- "properties": [],
1371
- "methods": [
2371
+ "parameters": [],
2372
+ "return": "any"
2373
+ },
1372
2374
  {
1373
- "name": "createSharedQuickModeMenuItem",
2375
+ "name": "connectedCallback",
1374
2376
  "description": null,
1375
2377
  "parameters": [],
1376
- "return": null
2378
+ "return": "void"
1377
2379
  },
1378
2380
  {
1379
- "name": "isInteractiveEditingEnabled",
2381
+ "name": "disconnectedCallback",
1380
2382
  "description": null,
1381
2383
  "parameters": [],
1382
- "return": null
2384
+ "return": "void"
1383
2385
  },
1384
2386
  {
1385
- "name": "openDesignSettings",
2387
+ "name": "formAssociatedCallback",
1386
2388
  "description": null,
1387
2389
  "parameters": [],
1388
- "return": null
2390
+ "return": "void"
1389
2391
  },
1390
2392
  {
1391
- "name": "openImportDetailsFromToast",
2393
+ "name": "formDisabledCallback",
1392
2394
  "description": null,
1393
2395
  "parameters": [
1394
2396
  {
1395
- "name": "options",
1396
- "type": null,
1397
- "description": null
2397
+ "name": "disabled",
2398
+ "type": "any",
2399
+ "description": null,
2400
+ "optional": false
1398
2401
  }
1399
2402
  ],
1400
- "return": null
2403
+ "return": "void"
1401
2404
  },
1402
2405
  {
1403
- "name": "resetConfig",
2406
+ "name": "formResetCallback",
1404
2407
  "description": null,
1405
2408
  "parameters": [],
1406
- "return": null
2409
+ "return": "void"
1407
2410
  },
1408
2411
  {
1409
- "name": "setInteractiveEditingEnabled",
2412
+ "name": "formStateRestoreCallback",
1410
2413
  "description": null,
1411
2414
  "parameters": [
1412
2415
  {
1413
- "name": "enabled",
1414
- "type": null,
1415
- "description": null
2416
+ "name": "state",
2417
+ "type": "any",
2418
+ "description": null,
2419
+ "optional": false
1416
2420
  }
1417
2421
  ],
1418
- "return": null
2422
+ "return": "void"
2423
+ },
2424
+ {
2425
+ "name": "reportValidity",
2426
+ "description": null,
2427
+ "parameters": [],
2428
+ "return": "any"
1419
2429
  }
1420
2430
  ],
1421
2431
  "events": [
1422
2432
  {
1423
- "name": "pds:live-edit:disable",
2433
+ "name": "change",
2434
+ "description": null,
2435
+ "type": "Event"
2436
+ },
2437
+ {
2438
+ "name": "input",
2439
+ "description": null,
2440
+ "type": "Event"
2441
+ },
2442
+ {
2443
+ "name": "suggestions-updated",
1424
2444
  "description": null,
1425
2445
  "type": "CustomEvent"
1426
2446
  }
@@ -1429,90 +2449,114 @@
1429
2449
  "cssParts": [],
1430
2450
  "notes": []
1431
2451
  },
1432
- "pds-omnibox": {
1433
- "tag": "pds-omnibox",
1434
- "className": "PdsOmnibox",
1435
- "displayName": "pds-omnibox",
1436
- "storyTitle": "Components/pds-omnibox",
2452
+ "pds-rating": {
2453
+ "tag": "pds-rating",
2454
+ "className": "PdsRating",
2455
+ "displayName": "pds-rating",
2456
+ "storyTitle": "Components/pds-rating",
1437
2457
  "category": "Components",
1438
- "description": null,
1439
- "docsDescription": "Omnibox search input with PDS styling and form association",
2458
+ "description": "Star-based rating input that participates in native HTML forms.\n\nStar-based rating input that participates in native HTML forms.",
2459
+ "docsDescription": "Form-associated star rating control with keyboard, pointer, and half-step support.",
1440
2460
  "pdsTags": [
1441
- "autocomplete",
1442
2461
  "autodocs",
1443
- "forms",
2462
+ "form",
1444
2463
  "input",
1445
- "pds-omnibox",
1446
- "search"
2464
+ "pds-rating",
2465
+ "rating",
2466
+ "stars"
1447
2467
  ],
1448
2468
  "ontology": null,
1449
- "stories": [],
1450
- "sourceModule": "public/assets/pds/components/pds-omnibox.js",
1451
- "superclass": "HTMLElement",
1452
- "attributes": [
2469
+ "stories": [
1453
2470
  {
1454
- "name": "name",
2471
+ "exportName": "InForm",
2472
+ "name": "InForm",
2473
+ "id": "components-pds-rating--in-form",
2474
+ "tags": [],
1455
2475
  "description": null,
1456
- "type": null,
1457
- "default": null,
1458
- "fieldName": null,
1459
- "property": "name"
2476
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
1460
2477
  },
1461
2478
  {
1462
- "name": "placeholder",
2479
+ "exportName": "Default",
2480
+ "name": "Interactive Playground",
2481
+ "id": "components-pds-rating--default",
2482
+ "tags": [],
1463
2483
  "description": null,
1464
- "type": null,
2484
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
2485
+ },
2486
+ {
2487
+ "exportName": "States",
2488
+ "name": "States",
2489
+ "id": "components-pds-rating--states",
2490
+ "tags": [],
2491
+ "description": null,
2492
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
2493
+ }
2494
+ ],
2495
+ "sourceModule": "public/assets/pds/components/pds-rating.js",
2496
+ "superclass": "HTMLElement",
2497
+ "attributes": [
2498
+ {
2499
+ "name": "max",
2500
+ "description": "Maximum rating value and rendered star count (minimum 1, default 5)",
2501
+ "type": "number",
1465
2502
  "default": null,
1466
2503
  "fieldName": null,
1467
- "property": "placeholder"
2504
+ "property": "max"
1468
2505
  },
1469
2506
  {
1470
2507
  "name": "value",
1471
- "description": null,
1472
- "type": null,
2508
+ "description": "Current rating value (snapped to 0.5 increments)",
2509
+ "type": "number",
1473
2510
  "default": null,
1474
2511
  "fieldName": null,
1475
2512
  "property": "value"
1476
2513
  },
1477
2514
  {
1478
2515
  "name": "disabled",
1479
- "description": null,
1480
- "type": null,
2516
+ "description": "Disables keyboard/pointer interaction and form submission value",
2517
+ "type": "boolean",
1481
2518
  "default": null,
1482
2519
  "fieldName": null,
1483
2520
  "property": "disabled"
1484
2521
  },
1485
2522
  {
1486
2523
  "name": "required",
1487
- "description": null,
1488
- "type": null,
2524
+ "description": "Marks the rating as required for form validation",
2525
+ "type": "boolean",
1489
2526
  "default": null,
1490
2527
  "fieldName": null,
1491
2528
  "property": "required"
1492
2529
  },
1493
2530
  {
1494
- "name": "autocomplete",
1495
- "description": null,
1496
- "type": null,
2531
+ "name": "readonly",
2532
+ "description": "Makes the rating non-editable while still focusable",
2533
+ "type": "boolean",
2534
+ "default": null,
2535
+ "fieldName": null
2536
+ },
2537
+ {
2538
+ "name": "name",
2539
+ "description": "Form field name used when submitting the rating",
2540
+ "type": "string",
1497
2541
  "default": null,
1498
2542
  "fieldName": null,
1499
- "property": "autocomplete"
2543
+ "property": "name"
1500
2544
  },
1501
2545
  {
1502
- "name": "icon",
1503
- "description": null,
1504
- "type": null,
2546
+ "name": "color",
2547
+ "description": "Optional active star color (CSS color value)",
2548
+ "type": "string",
1505
2549
  "default": null,
1506
2550
  "fieldName": null,
1507
- "property": "icon"
2551
+ "property": "color"
1508
2552
  }
1509
2553
  ],
1510
2554
  "properties": [
1511
2555
  {
1512
- "name": "autocomplete",
1513
- "attribute": "autocomplete",
1514
- "description": null,
1515
- "type": null,
2556
+ "name": "color",
2557
+ "attribute": "color",
2558
+ "description": "Active star color override",
2559
+ "type": "string",
1516
2560
  "default": null,
1517
2561
  "reflects": false,
1518
2562
  "privacy": "public"
@@ -1520,8 +2564,17 @@
1520
2564
  {
1521
2565
  "name": "disabled",
1522
2566
  "attribute": "disabled",
1523
- "description": null,
1524
- "type": null,
2567
+ "description": "Disabled state",
2568
+ "type": "boolean",
2569
+ "default": null,
2570
+ "reflects": false,
2571
+ "privacy": "public"
2572
+ },
2573
+ {
2574
+ "name": "form",
2575
+ "attribute": null,
2576
+ "description": "Associated form element",
2577
+ "type": "HTMLFormElement|null",
1525
2578
  "default": null,
1526
2579
  "reflects": false,
1527
2580
  "privacy": "public"
@@ -1536,10 +2589,28 @@
1536
2589
  "privacy": "public"
1537
2590
  },
1538
2591
  {
1539
- "name": "icon",
1540
- "attribute": "icon",
2592
+ "name": "innerHTML",
2593
+ "attribute": null,
1541
2594
  "description": null,
1542
2595
  "type": null,
2596
+ "default": "`\r\n <style>\r\n :host {\r\n --rating-star-size: var(--spacing-lg);\r\n --rating-star-gap: var(--spacing-2xs);\r\n --rating-star-off: var(--color-text-muted);\r\n --rating-star-on: var(--color-warning-500);\r\n --rating-focus: var(--color-primary-500);\r\n --rating-fill-pct: 0%;\r\n display: inline-block;\r\n inline-size: fit-content;\r\n max-inline-size: 100%;\r\n touch-action: none;\r\n }\r\n\r\n ::slotted(input[type=\"range\"]) {\r\n position: absolute !important;\r\n inset-inline-start: 0 !important;\r\n inset-block-start: 0 !important;\r\n inline-size: 1px !important;\r\n block-size: 1px !important;\r\n min-inline-size: 1px !important;\r\n min-block-size: 1px !important;\r\n margin: -1px !important;\r\n border: 0 !important;\r\n padding: 0 !important;\r\n opacity: 0 !important;\r\n overflow: hidden !important;\r\n clip: rect(0 0 0 0) !important;\r\n clip-path: inset(50%) !important;\r\n white-space: nowrap !important;\r\n appearance: none !important;\r\n -webkit-appearance: none !important;\r\n pointer-events: none !important;\r\n }\r\n\r\n .wrap {\r\n position: relative;\r\n display: inline-grid;\r\n gap: var(--spacing-2xs);\r\n align-items: center;\r\n justify-items: start;\r\n min-block-size: calc(var(--rating-star-size) + var(--spacing-xs));\r\n }\r\n\r\n .interactive {\r\n display: inline-grid;\r\n place-items: center start;\r\n inline-size: 100%;\r\n cursor: pointer;\r\n user-select: none;\r\n -webkit-tap-highlight-color: transparent;\r\n touch-action: pan-x;\r\n }\r\n\r\n :host([disabled]) .interactive,\r\n :host([readonly]) .interactive {\r\n cursor: default;\r\n }\r\n\r\n :host([disabled]) {\r\n opacity: 0.5;\r\n }\r\n\r\n .stars {\r\n display: block;\r\n inline-size: auto;\r\n block-size: var(--rating-star-size);\r\n overflow: visible;\r\n transition: transform 220ms ease, opacity 220ms ease;\r\n }\r\n\r\n :host([data-in-view=\"false\"]) .stars {\r\n opacity: 0;\r\n transform: translateY(var(--spacing-xs)) scale(0.98);\r\n }\r\n\r\n :host([data-in-view=\"true\"]) .stars {\r\n opacity: 1;\r\n transform: translateY(0) scale(1);\r\n }\r\n\r\n input[type=\"range\"] {\r\n position: absolute !important;\r\n inset-inline-start: 0 !important;\r\n inset-block-start: 0 !important;\r\n inline-size: 1px !important;\r\n block-size: 1px !important;\r\n min-inline-size: 1px !important;\r\n min-block-size: 1px !important;\r\n margin: -1px !important;\r\n border: 0 !important;\r\n padding: 0 !important;\r\n opacity: 0 !important;\r\n overflow: hidden !important;\r\n clip: rect(0 0 0 0) !important;\r\n clip-path: inset(50%) !important;\r\n white-space: nowrap !important;\r\n appearance: none !important;\r\n -webkit-appearance: none !important;\r\n pointer-events: none !important;\r\n }\r\n\r\n :host(:focus-within) .interactive {\r\n outline: 2px solid var(--rating-focus);\r\n outline-offset: var(--spacing-3xs);\r\n border-radius: var(--radius-sm);\r\n }\r\n\r\n @media (prefers-reduced-motion: reduce) {\r\n .stars {\r\n transition: none;\r\n }\r\n }\r\n </style>\r\n\r\n <div class=\"wrap\" part=\"control\">\r\n <div class=\"interactive\" part=\"interactive\" aria-hidden=\"true\">\r\n <svg class=\"stars\" part=\"stars\" focusable=\"false\" aria-hidden=\"true\"></svg>\r\n </div>\r\n <slot></slot>\r\n </div>\r\n `",
2597
+ "reflects": false,
2598
+ "privacy": "public"
2599
+ },
2600
+ {
2601
+ "name": "max",
2602
+ "attribute": "max",
2603
+ "description": "Maximum rating value and rendered star count",
2604
+ "type": "number",
2605
+ "default": null,
2606
+ "reflects": false,
2607
+ "privacy": "public"
2608
+ },
2609
+ {
2610
+ "name": "min",
2611
+ "attribute": null,
2612
+ "description": "Minimum rating value (always 0)",
2613
+ "type": "number",
1543
2614
  "default": null,
1544
2615
  "reflects": false,
1545
2616
  "privacy": "public"
@@ -1547,17 +2618,26 @@
1547
2618
  {
1548
2619
  "name": "name",
1549
2620
  "attribute": "name",
1550
- "description": null,
1551
- "type": null,
2621
+ "description": "Form field name",
2622
+ "type": "string",
1552
2623
  "default": null,
1553
2624
  "reflects": false,
1554
2625
  "privacy": "public"
1555
2626
  },
1556
2627
  {
1557
- "name": "placeholder",
1558
- "attribute": "placeholder",
2628
+ "name": "observedAttributes",
2629
+ "attribute": null,
1559
2630
  "description": null,
1560
- "type": null,
2631
+ "type": "string[]",
2632
+ "default": null,
2633
+ "reflects": false,
2634
+ "privacy": "public"
2635
+ },
2636
+ {
2637
+ "name": "readOnly",
2638
+ "attribute": null,
2639
+ "description": "Read-only state",
2640
+ "type": "boolean",
1561
2641
  "default": null,
1562
2642
  "reflects": false,
1563
2643
  "privacy": "public"
@@ -1565,17 +2645,44 @@
1565
2645
  {
1566
2646
  "name": "required",
1567
2647
  "attribute": "required",
1568
- "description": null,
1569
- "type": null,
2648
+ "description": "Required state",
2649
+ "type": "boolean",
1570
2650
  "default": null,
1571
2651
  "reflects": false,
1572
2652
  "privacy": "public"
1573
2653
  },
1574
2654
  {
1575
- "name": "settings",
2655
+ "name": "step",
1576
2656
  "attribute": null,
1577
- "description": null,
1578
- "type": null,
2657
+ "description": "Step size used for keyboard and pointer input (always 0.5)",
2658
+ "type": "number",
2659
+ "default": null,
2660
+ "reflects": false,
2661
+ "privacy": "public"
2662
+ },
2663
+ {
2664
+ "name": "type",
2665
+ "attribute": null,
2666
+ "description": "Form control type (`range`)",
2667
+ "type": "string",
2668
+ "default": null,
2669
+ "reflects": false,
2670
+ "privacy": "public"
2671
+ },
2672
+ {
2673
+ "name": "validationMessage",
2674
+ "attribute": null,
2675
+ "description": "Current validation message",
2676
+ "type": "string",
2677
+ "default": null,
2678
+ "reflects": false,
2679
+ "privacy": "public"
2680
+ },
2681
+ {
2682
+ "name": "validity",
2683
+ "attribute": null,
2684
+ "description": "Current validity state",
2685
+ "type": "ValidityState",
1579
2686
  "default": null,
1580
2687
  "reflects": false,
1581
2688
  "privacy": "public"
@@ -1583,8 +2690,17 @@
1583
2690
  {
1584
2691
  "name": "value",
1585
2692
  "attribute": "value",
1586
- "description": null,
1587
- "type": null,
2693
+ "description": "Current rating value",
2694
+ "type": "number",
2695
+ "default": null,
2696
+ "reflects": false,
2697
+ "privacy": "public"
2698
+ },
2699
+ {
2700
+ "name": "willValidate",
2701
+ "attribute": null,
2702
+ "description": "Whether the element is eligible for validation",
2703
+ "type": "boolean",
1588
2704
  "default": null,
1589
2705
  "reflects": false,
1590
2706
  "privacy": "public"
@@ -1593,23 +2709,23 @@
1593
2709
  "methods": [
1594
2710
  {
1595
2711
  "name": "attributeChangedCallback",
1596
- "description": null,
2712
+ "description": "Reacts to reflected attribute changes and keeps internal state in sync.",
1597
2713
  "parameters": [
1598
2714
  {
1599
2715
  "name": "name",
1600
- "type": "any",
2716
+ "type": "string",
1601
2717
  "description": null,
1602
2718
  "optional": false
1603
2719
  },
1604
2720
  {
1605
2721
  "name": "oldValue",
1606
- "type": "any",
2722
+ "type": "string | null",
1607
2723
  "description": null,
1608
2724
  "optional": false
1609
2725
  },
1610
2726
  {
1611
2727
  "name": "newValue",
1612
- "type": "any",
2728
+ "type": "string | null",
1613
2729
  "description": null,
1614
2730
  "optional": false
1615
2731
  }
@@ -1618,54 +2734,35 @@
1618
2734
  },
1619
2735
  {
1620
2736
  "name": "checkValidity",
1621
- "description": null,
2737
+ "description": "Runs constraint validation.\n\nRuns constraint validation.",
1622
2738
  "parameters": [],
1623
- "return": "any"
2739
+ "return": "boolean"
1624
2740
  },
1625
2741
  {
1626
2742
  "name": "connectedCallback",
1627
- "description": null,
2743
+ "description": "Initializes DOM wiring, syncing, and in-view animation observation.",
1628
2744
  "parameters": [],
1629
2745
  "return": "void"
1630
2746
  },
1631
2747
  {
1632
2748
  "name": "disconnectedCallback",
1633
- "description": null,
1634
- "parameters": [],
1635
- "return": "void"
1636
- },
1637
- {
1638
- "name": "formAssociatedCallback",
1639
- "description": null,
2749
+ "description": "Cleans up listeners and observers.",
1640
2750
  "parameters": [],
1641
2751
  "return": "void"
1642
2752
  },
1643
- {
1644
- "name": "formDisabledCallback",
1645
- "description": null,
1646
- "parameters": [
1647
- {
1648
- "name": "disabled",
1649
- "type": "any",
1650
- "description": null,
1651
- "optional": false
1652
- }
1653
- ],
1654
- "return": "void"
1655
- },
1656
2753
  {
1657
2754
  "name": "formResetCallback",
1658
- "description": null,
2755
+ "description": "Restores default value during parent form reset.\n\nRestores default value during parent form reset.",
1659
2756
  "parameters": [],
1660
2757
  "return": "void"
1661
2758
  },
1662
2759
  {
1663
2760
  "name": "formStateRestoreCallback",
1664
- "description": null,
2761
+ "description": "Restores state from browser session history/form restore.\n\nRestores state from browser session history/form restore.",
1665
2762
  "parameters": [
1666
2763
  {
1667
2764
  "name": "state",
1668
- "type": "any",
2765
+ "type": "string | File | FormData | null",
1669
2766
  "description": null,
1670
2767
  "optional": false
1671
2768
  }
@@ -1674,26 +2771,21 @@
1674
2771
  },
1675
2772
  {
1676
2773
  "name": "reportValidity",
1677
- "description": null,
2774
+ "description": "Runs constraint validation and reports the result to the user agent.\n\nRuns constraint validation and reports the result to the user agent.",
1678
2775
  "parameters": [],
1679
- "return": "any"
2776
+ "return": "boolean"
1680
2777
  }
1681
2778
  ],
1682
2779
  "events": [
1683
2780
  {
1684
2781
  "name": "change",
1685
- "description": null,
2782
+ "description": "Fired after input when the value commit completes",
1686
2783
  "type": "Event"
1687
2784
  },
1688
2785
  {
1689
2786
  "name": "input",
1690
- "description": null,
2787
+ "description": "Fired when the value changes via pointer or keyboard interaction",
1691
2788
  "type": "Event"
1692
- },
1693
- {
1694
- "name": "suggestions-updated",
1695
- "description": null,
1696
- "type": "CustomEvent"
1697
2789
  }
1698
2790
  ],
1699
2791
  "slots": [],
@@ -2496,6 +3588,33 @@
2496
3588
  "superclass": "HTMLElement",
2497
3589
  "attributes": [],
2498
3590
  "properties": [
3591
+ {
3592
+ "name": "activeToastIdsByKey",
3593
+ "attribute": null,
3594
+ "description": null,
3595
+ "type": "Map<any, any>",
3596
+ "default": "new Map()",
3597
+ "reflects": false,
3598
+ "privacy": "public"
3599
+ },
3600
+ {
3601
+ "name": "activeToastKeys",
3602
+ "attribute": null,
3603
+ "description": null,
3604
+ "type": "Set<any>",
3605
+ "default": "new Set()",
3606
+ "reflects": false,
3607
+ "privacy": "public"
3608
+ },
3609
+ {
3610
+ "name": "activeToastKeysById",
3611
+ "attribute": null,
3612
+ "description": null,
3613
+ "type": "Map<any, any>",
3614
+ "default": "new Map()",
3615
+ "reflects": false,
3616
+ "privacy": "public"
3617
+ },
2499
3618
  {
2500
3619
  "name": "toasts",
2501
3620
  "attribute": null,
@@ -3433,6 +4552,7 @@
3433
4552
  ".btn-primary",
3434
4553
  ".btn-secondary",
3435
4554
  ".btn-outline",
4555
+ ".btn-danger",
3436
4556
  ".btn-sm",
3437
4557
  ".btn-xs",
3438
4558
  ".btn-lg",
@@ -4061,6 +5181,7 @@
4061
5181
  ".btn-primary",
4062
5182
  ".btn-secondary",
4063
5183
  ".btn-outline",
5184
+ ".btn-danger",
4064
5185
  ".btn-sm",
4065
5186
  ".btn-xs",
4066
5187
  ".btn-lg",
@@ -4973,6 +6094,7 @@
4973
6094
  "form",
4974
6095
  "btn-primary",
4975
6096
  "btn-secondary",
6097
+ "btn-danger",
4976
6098
  "btn-working",
4977
6099
  "pds-fab",
4978
6100
  "floating"
@@ -5742,7 +6864,7 @@
5742
6864
  "storyTitle": "Components/pds-calendar",
5743
6865
  "category": "Components",
5744
6866
  "name": "pds-calendar",
5745
- "description": "A fully featured calendar component with month navigation, event display, and expandable day views",
6867
+ "description": "A fully featured calendar component with month navigation, event display, and keyboard-accessible date selection",
5746
6868
  "tags": [
5747
6869
  "autodocs",
5748
6870
  "calendar",
@@ -5762,58 +6884,47 @@
5762
6884
  "pds-calendar"
5763
6885
  ]
5764
6886
  },
6887
+ "stories": [],
6888
+ "files": [
6889
+ "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
6890
+ ]
6891
+ },
6892
+ "pds-daterange": {
6893
+ "slug": "pds-daterange",
6894
+ "storyTitle": "Components/pds-daterange",
6895
+ "category": "Components",
6896
+ "name": "pds-daterange",
6897
+ "description": "Form-associated date range picker with compact dual-calendar dropdown and ISO interval value output.",
6898
+ "tags": [
6899
+ "autodocs",
6900
+ "calendar",
6901
+ "date",
6902
+ "form",
6903
+ "pds-daterange",
6904
+ "range",
6905
+ "travel"
6906
+ ],
6907
+ "pdsParameters": {
6908
+ "tags": [
6909
+ "pds-daterange",
6910
+ "date",
6911
+ "range",
6912
+ "calendar",
6913
+ "form"
6914
+ ]
6915
+ },
5765
6916
  "stories": [
5766
6917
  {
5767
6918
  "exportName": "Default",
5768
6919
  "name": "Default",
5769
- "id": "components-pds-calendar--default",
5770
- "tags": [],
5771
- "description": null,
5772
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
5773
- },
5774
- {
5775
- "exportName": "DynamicEvents",
5776
- "name": "DynamicEvents",
5777
- "id": "components-pds-calendar--dynamic-events",
5778
- "tags": [],
5779
- "description": null,
5780
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
5781
- },
5782
- {
5783
- "exportName": "EventTypes",
5784
- "name": "EventTypes",
5785
- "id": "components-pds-calendar--event-types",
6920
+ "id": "components-pds-daterange--default",
5786
6921
  "tags": [],
5787
6922
  "description": null,
5788
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
5789
- },
5790
- {
5791
- "exportName": "FormParticipation",
5792
- "name": "FormParticipation",
5793
- "id": "components-pds-calendar--form-participation",
5794
- "tags": [],
5795
- "description": null,
5796
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
5797
- },
5798
- {
5799
- "exportName": "WithManyEvents",
5800
- "name": "WithManyEvents",
5801
- "id": "components-pds-calendar--with-many-events",
5802
- "tags": [],
5803
- "description": null,
5804
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
5805
- },
5806
- {
5807
- "exportName": "WithSpecificDate",
5808
- "name": "WithSpecificDate",
5809
- "id": "components-pds-calendar--with-specific-date",
5810
- "tags": [],
5811
- "description": null,
5812
- "source": "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
6923
+ "source": "packages\\pds-storybook\\stories\\components\\PdsDaterange.stories.js"
5813
6924
  }
5814
6925
  ],
5815
6926
  "files": [
5816
- "packages\\pds-storybook\\stories\\components\\PdsCalendar.stories.js"
6927
+ "packages\\pds-storybook\\stories\\components\\PdsDaterange.stories.js"
5817
6928
  ]
5818
6929
  },
5819
6930
  "pds-drawer": {
@@ -5898,6 +7009,97 @@
5898
7009
  "packages\\pds-storybook\\stories\\components\\PdsFab.stories.js"
5899
7010
  ]
5900
7011
  },
7012
+ "basics": {
7013
+ "slug": "basics",
7014
+ "storyTitle": "Components/pds-form/Basics",
7015
+ "category": "Components/pds-form",
7016
+ "name": "Basics",
7017
+ "description": null,
7018
+ "tags": [],
7019
+ "pdsParameters": {},
7020
+ "stories": [],
7021
+ "files": [
7022
+ "packages\\pds-storybook\\stories\\components\\PdsForm.Basics.stories.js"
7023
+ ]
7024
+ },
7025
+ "conditional-calculated": {
7026
+ "slug": "conditional-calculated",
7027
+ "storyTitle": "Components/pds-form/Conditional & Calculated",
7028
+ "category": "Components/pds-form",
7029
+ "name": "Conditional & Calculated",
7030
+ "description": null,
7031
+ "tags": [],
7032
+ "pdsParameters": {},
7033
+ "stories": [],
7034
+ "files": [
7035
+ "packages\\pds-storybook\\stories\\components\\PdsForm.ConditionalAndCalculated.stories.js"
7036
+ ]
7037
+ },
7038
+ "custom-content": {
7039
+ "slug": "custom-content",
7040
+ "storyTitle": "Components/pds-form/Custom Content",
7041
+ "category": "Components/pds-form",
7042
+ "name": "Custom Content",
7043
+ "description": null,
7044
+ "tags": [],
7045
+ "pdsParameters": {},
7046
+ "stories": [],
7047
+ "files": [
7048
+ "packages\\pds-storybook\\stories\\components\\PdsForm.CustomContent.stories.js"
7049
+ ]
7050
+ },
7051
+ "dialogs": {
7052
+ "slug": "dialogs",
7053
+ "storyTitle": "Components/pds-form/Dialogs",
7054
+ "category": "Components/pds-form",
7055
+ "name": "Dialogs",
7056
+ "description": null,
7057
+ "tags": [],
7058
+ "pdsParameters": {},
7059
+ "stories": [],
7060
+ "files": [
7061
+ "packages\\pds-storybook\\stories\\components\\PdsForm.Dialogs.stories.js"
7062
+ ]
7063
+ },
7064
+ "layout": {
7065
+ "slug": "layout",
7066
+ "storyTitle": "Components/pds-form/Layout",
7067
+ "category": "Components/pds-form",
7068
+ "name": "Layout",
7069
+ "description": "Complete layout system: Container, Grid, Flex, Stack, and Gap utilities.",
7070
+ "tags": [
7071
+ "alignment",
7072
+ "container",
7073
+ "flex",
7074
+ "gap",
7075
+ "grid",
7076
+ "layout",
7077
+ "spacing",
7078
+ "text",
7079
+ "truncate",
7080
+ "utilities"
7081
+ ],
7082
+ "pdsParameters": {},
7083
+ "stories": [],
7084
+ "files": [
7085
+ "packages\\pds-storybook\\stories\\components\\PdsForm.Layout.stories.js",
7086
+ "packages\\pds-storybook\\stories\\layout\\LayoutOverview.stories.js",
7087
+ "packages\\pds-storybook\\stories\\layout\\LayoutSystem.stories.js"
7088
+ ]
7089
+ },
7090
+ "selection-arrays": {
7091
+ "slug": "selection-arrays",
7092
+ "storyTitle": "Components/pds-form/Selection & Arrays",
7093
+ "category": "Components/pds-form",
7094
+ "name": "Selection & Arrays",
7095
+ "description": null,
7096
+ "tags": [],
7097
+ "pdsParameters": {},
7098
+ "stories": [],
7099
+ "files": [
7100
+ "packages\\pds-storybook\\stories\\components\\PdsForm.SelectionAndArrays.stories.js"
7101
+ ]
7102
+ },
5901
7103
  "pds-form": {
5902
7104
  "slug": "pds-form",
5903
7105
  "storyTitle": "Components/pds-form",
@@ -5990,6 +7192,59 @@
5990
7192
  "packages\\pds-storybook\\stories\\components\\PdsOmnibox.stories.js"
5991
7193
  ]
5992
7194
  },
7195
+ "pds-rating": {
7196
+ "slug": "pds-rating",
7197
+ "storyTitle": "Components/pds-rating",
7198
+ "category": "Components",
7199
+ "name": "pds-rating",
7200
+ "description": "Form-associated star rating control with keyboard, pointer, and half-step support.",
7201
+ "tags": [
7202
+ "autodocs",
7203
+ "form",
7204
+ "input",
7205
+ "pds-rating",
7206
+ "rating",
7207
+ "stars"
7208
+ ],
7209
+ "pdsParameters": {
7210
+ "tags": [
7211
+ "rating",
7212
+ "stars",
7213
+ "form",
7214
+ "input",
7215
+ "pds-rating"
7216
+ ]
7217
+ },
7218
+ "stories": [
7219
+ {
7220
+ "exportName": "InForm",
7221
+ "name": "InForm",
7222
+ "id": "components-pds-rating--in-form",
7223
+ "tags": [],
7224
+ "description": null,
7225
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
7226
+ },
7227
+ {
7228
+ "exportName": "Default",
7229
+ "name": "Interactive Playground",
7230
+ "id": "components-pds-rating--default",
7231
+ "tags": [],
7232
+ "description": null,
7233
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
7234
+ },
7235
+ {
7236
+ "exportName": "States",
7237
+ "name": "States",
7238
+ "id": "components-pds-rating--states",
7239
+ "tags": [],
7240
+ "description": null,
7241
+ "source": "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
7242
+ }
7243
+ ],
7244
+ "files": [
7245
+ "packages\\pds-storybook\\stories\\components\\PdsRating.stories.js"
7246
+ ]
7247
+ },
5993
7248
  "pds-richtext": {
5994
7249
  "slug": "pds-richtext",
5995
7250
  "storyTitle": "Components/pds-richtext",
@@ -6131,6 +7386,25 @@
6131
7386
  "packages\\pds-storybook\\stories\\components\\PdsTabstrip.stories.js"
6132
7387
  ]
6133
7388
  },
7389
+ "pds-tags": {
7390
+ "slug": "pds-tags",
7391
+ "storyTitle": "Components/pds-tags",
7392
+ "category": "Components",
7393
+ "name": "pds-tags",
7394
+ "description": "Compound multi-select built with pds-omnibox. Select/unselect values from suggestions and manage them as tags.",
7395
+ "tags": [
7396
+ "autocomplete",
7397
+ "autodocs",
7398
+ "forms",
7399
+ "multiselect",
7400
+ "pds-tags"
7401
+ ],
7402
+ "pdsParameters": {},
7403
+ "stories": [],
7404
+ "files": [
7405
+ "packages\\pds-storybook\\stories\\components\\PdsTags.stories.js"
7406
+ ]
7407
+ },
6134
7408
  "pds-theme": {
6135
7409
  "slug": "pds-theme",
6136
7410
  "storyTitle": "Components/pds-theme",
@@ -6893,31 +8167,6 @@
6893
8167
  "packages\\pds-storybook\\stories\\GettingStarted.stories.js"
6894
8168
  ]
6895
8169
  },
6896
- "layout": {
6897
- "slug": "layout",
6898
- "storyTitle": "Foundations/Layout",
6899
- "category": "Foundations",
6900
- "name": "Layout",
6901
- "description": "Complete layout system: Container, Grid, Flex, Stack, and Gap utilities.",
6902
- "tags": [
6903
- "alignment",
6904
- "container",
6905
- "flex",
6906
- "gap",
6907
- "grid",
6908
- "layout",
6909
- "spacing",
6910
- "text",
6911
- "truncate",
6912
- "utilities"
6913
- ],
6914
- "pdsParameters": {},
6915
- "stories": [],
6916
- "files": [
6917
- "packages\\pds-storybook\\stories\\layout\\LayoutOverview.stories.js",
6918
- "packages\\pds-storybook\\stories\\layout\\LayoutSystem.stories.js"
6919
- ]
6920
- },
6921
8170
  "border-effects": {
6922
8171
  "slug": "border-effects",
6923
8172
  "storyTitle": "Patterns/Border Effects",
@@ -7011,6 +8260,33 @@
7011
8260
  "packages\\pds-storybook\\stories\\patterns\\Utilities.stories.js"
7012
8261
  ]
7013
8262
  },
8263
+ "articles": {
8264
+ "slug": "articles",
8265
+ "storyTitle": "Primitives/Articles",
8266
+ "category": "Primitives",
8267
+ "name": "Articles",
8268
+ "description": "Long-form content layout pattern using semantic article markup and PDS primitives.",
8269
+ "tags": [
8270
+ "article",
8271
+ "content",
8272
+ "layout",
8273
+ "readability",
8274
+ "typography"
8275
+ ],
8276
+ "pdsParameters": {
8277
+ "tags": [
8278
+ "typography",
8279
+ "content",
8280
+ "article",
8281
+ "layout",
8282
+ "readability"
8283
+ ]
8284
+ },
8285
+ "stories": [],
8286
+ "files": [
8287
+ "packages\\pds-storybook\\stories\\primitives\\ArticleLayout.stories.js"
8288
+ ]
8289
+ },
7014
8290
  "badges-pills": {
7015
8291
  "slug": "badges-pills",
7016
8292
  "storyTitle": "Primitives/Badges & Pills",
@@ -7335,6 +8611,9 @@
7335
8611
  "feedback",
7336
8612
  "notifications",
7337
8613
  "parse",
8614
+ "pds-compiled",
8615
+ "pds-enums",
8616
+ "pds-object",
7338
8617
  "pds-parse",
7339
8618
  "pds-toast",
7340
8619
  "reference",
@@ -7350,17 +8629,9 @@
7350
8629
  "pds-toast"
7351
8630
  ]
7352
8631
  },
7353
- "stories": [
7354
- {
7355
- "exportName": "PDSParse",
7356
- "name": "PDS.parse()",
7357
- "id": "pds-pds-object--pdsparse",
7358
- "tags": [],
7359
- "description": null,
7360
- "source": "packages\\pds-storybook\\stories\\utils\\PdsParse.stories.js"
7361
- }
7362
- ],
8632
+ "stories": [],
7363
8633
  "files": [
8634
+ "packages\\pds-storybook\\stories\\utils\\PdsObjectApi.stories.js",
7364
8635
  "packages\\pds-storybook\\stories\\utils\\PdsParse.stories.js",
7365
8636
  "packages\\pds-storybook\\stories\\utils\\PdsToast.stories.js"
7366
8637
  ]