@ds-mo/ui 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/.build-stamp +1 -1
- package/dist/agent.json +401 -103
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-chip.d.ts +1 -1
- package/dist/angular/ds-chip.js +3 -3
- package/dist/angular/ds-panel-sub-nav.d.ts +15 -0
- package/dist/angular/{ds-tab-group-nav.js → ds-panel-sub-nav.js} +13 -17
- package/dist/angular/ds-tab-group.d.ts +1 -1
- package/dist/angular/ds-tab-group.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -1
- package/dist/angular/proxies.d.ts +1 -1
- package/dist/angular/proxies.js +1 -1
- package/dist/components/ds-app-shell.js +1 -1
- package/dist/components/ds-app-shell.js.map +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-nav.js.map +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card.js +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-loader.js +1 -1
- package/dist/components/ds-loader.js.map +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-pagination.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/{ds-tab-group-nav.d.ts → ds-panel-sub-nav.d.ts} +4 -4
- package/dist/components/ds-panel-sub-nav.js +2 -0
- package/dist/components/ds-panel-sub-nav.js.map +1 -0
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-panel-tools.js.map +1 -1
- package/dist/components/ds-radio-group.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tab-group.js.map +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-tag.js.map +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/{p-BmiNX9Mc.js → p-AIFkzp4M.js} +2 -2
- package/dist/components/p-B8ERbwc9.js +2 -0
- package/dist/components/{p-DhgDNluD.js.map → p-B8ERbwc9.js.map} +1 -1
- package/dist/components/p-BQq26pt9.js.map +1 -1
- package/dist/components/{p-cgo-rgl4.js → p-C7yzdJNM.js} +2 -2
- package/dist/components/{p-9Qu1ls2y.js → p-CGovlfKQ.js} +2 -2
- package/dist/components/{p-DkIbxCpi.js → p-CeyijE0j.js} +2 -2
- package/dist/components/p-DDO5W45N.js +2 -0
- package/dist/components/p-DDO5W45N.js.map +1 -0
- package/dist/components/p-DQy_H_hL.js +2 -0
- package/dist/components/p-DQy_H_hL.js.map +1 -0
- package/dist/components/p-DYotx2VC.js +2 -0
- package/dist/components/{p-B-cWYMqs.js.map → p-DYotx2VC.js.map} +1 -1
- package/dist/components/p-Dh4BBuI3.js +2 -0
- package/dist/components/p-Dh4BBuI3.js.map +1 -0
- package/dist/components/{p-bl7d1jB2.js → p-Dt1oDMJ6.js} +2 -2
- package/dist/components/{p-_OGE_E6L.js → p-KRZefifE.js} +2 -2
- package/dist/components/{p-BeIuJQO9.js → p-Ujv0jqbw.js} +2 -2
- package/dist/components/p-drBA73M_.js.map +1 -1
- package/dist/components/{p-CWd8L7Fk.js → p-qawuX6gT.js} +2 -2
- package/dist/docs/components.json +432 -669
- package/dist/react/components.d.ts +1 -1
- package/dist/react/components.js +1 -1
- package/dist/react/ds-panel-sub-nav.d.ts +12 -0
- package/dist/react/ds-panel-sub-nav.js +12 -0
- package/dist/types/components/BarNav/BarNav.d.ts +10 -4
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +2 -0
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +4 -9
- package/dist/types/components/ButtonUnfilled/index.d.ts +1 -1
- package/dist/types/components/Chip/Chip.d.ts +0 -5
- package/dist/types/components/Chip/index.d.ts +1 -1
- package/dist/types/components/PanelSubNav/PanelSubNav.d.ts +27 -0
- package/dist/types/components/PanelSubNav/panel-sub-nav-types.d.ts +10 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +2 -0
- package/dist/types/components/TabGroup/TabGroup.d.ts +3 -4
- package/dist/types/components/TabGroup/tab-item-utils.d.ts +14 -0
- package/dist/types/components.d.ts +109 -152
- package/package.json +4 -4
- package/dist/angular/ds-tab-group-nav.d.ts +0 -20
- package/dist/components/ds-tab-group-nav.js +0 -2
- package/dist/components/ds-tab-group-nav.js.map +0 -1
- package/dist/components/p-B-cWYMqs.js +0 -2
- package/dist/components/p-CxOQaZ4f.js +0 -2
- package/dist/components/p-CxOQaZ4f.js.map +0 -1
- package/dist/components/p-D5wc8lKR.js +0 -2
- package/dist/components/p-D5wc8lKR.js.map +0 -1
- package/dist/components/p-DPxfMUfH.js +0 -2
- package/dist/components/p-DPxfMUfH.js.map +0 -1
- package/dist/components/p-DhgDNluD.js +0 -2
- package/dist/react/ds-tab-group-nav.d.ts +0 -13
- package/dist/react/ds-tab-group-nav.js +0 -15
- package/dist/types/components/BarNav/bar-nav-dom-utils.d.ts +0 -11
- package/dist/types/components/TabGroupNav/TabGroupNav.d.ts +0 -46
- /package/dist/components/{p-BmiNX9Mc.js.map → p-AIFkzp4M.js.map} +0 -0
- /package/dist/components/{p-cgo-rgl4.js.map → p-C7yzdJNM.js.map} +0 -0
- /package/dist/components/{p-9Qu1ls2y.js.map → p-CGovlfKQ.js.map} +0 -0
- /package/dist/components/{p-DkIbxCpi.js.map → p-CeyijE0j.js.map} +0 -0
- /package/dist/components/{p-bl7d1jB2.js.map → p-Dt1oDMJ6.js.map} +0 -0
- /package/dist/components/{p-_OGE_E6L.js.map → p-KRZefifE.js.map} +0 -0
- /package/dist/components/{p-BeIuJQO9.js.map → p-Ujv0jqbw.js.map} +0 -0
- /package/dist/components/{p-CWd8L7Fk.js.map → p-qawuX6gT.js.map} +0 -0
package/dist/agent.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "
|
|
4
|
+
"packageVersion": "7.0.0",
|
|
5
5
|
"kind": "components",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
],
|
|
291
291
|
"accessibility": [
|
|
292
292
|
"Use concise localized labels for every route section.",
|
|
293
|
-
"Keep section navigation keyboard accessible through
|
|
293
|
+
"Keep section navigation keyboard accessible through BarNav's built-in horizontal roving focus and overflow menu.",
|
|
294
294
|
"Preserve the selected route state when sections move between the visible row and overflow menu.",
|
|
295
295
|
"Use notification dots only as supplemental status and not as the sole indication of important information.",
|
|
296
296
|
"Pass the active PanelNav destination label through heading whenever section tabs are absent or hidden."
|
|
@@ -393,9 +393,9 @@
|
|
|
393
393
|
"@ds-mo/tokens"
|
|
394
394
|
],
|
|
395
395
|
"componentDependencies": [
|
|
396
|
+
"badge",
|
|
396
397
|
"button-unfilled",
|
|
397
398
|
"menu",
|
|
398
|
-
"tab-group-nav",
|
|
399
399
|
"text"
|
|
400
400
|
]
|
|
401
401
|
},
|
|
@@ -404,20 +404,23 @@
|
|
|
404
404
|
"tag": "ds-button-filled",
|
|
405
405
|
"name": "button-filled",
|
|
406
406
|
"title": "ButtonFilled",
|
|
407
|
-
"summary": "
|
|
407
|
+
"summary": "Highest-emphasis command button for the single primary action in a local decision area, with semantic consequence and async progress treatments.",
|
|
408
408
|
"intentStatus": "complete",
|
|
409
409
|
"intent": {
|
|
410
410
|
"audience": "general",
|
|
411
411
|
"status": "stable",
|
|
412
|
-
"summary": "
|
|
412
|
+
"summary": "Highest-emphasis command button for the single primary action in a local decision area, with semantic consequence and async progress treatments.",
|
|
413
413
|
"useWhen": [
|
|
414
|
-
"The user initiates
|
|
415
|
-
"An action
|
|
414
|
+
"The user initiates the single primary command in a local decision area.",
|
|
415
|
+
"An action's consequence requires a matching semantic treatment.",
|
|
416
|
+
"A standalone compact primary action needs an icon-only presentation with an explicit accessible name."
|
|
416
417
|
],
|
|
417
418
|
"avoidWhen": [
|
|
419
|
+
"Another filled action already exists in the same local decision area.",
|
|
418
420
|
"The action is unfilled icon-only shell or navigation chrome.",
|
|
419
421
|
"The element represents navigation rather than a command.",
|
|
420
|
-
"The content is a persistent selected state rather than an action."
|
|
422
|
+
"The content is a persistent selected state rather than an action.",
|
|
423
|
+
"A semantic color would be decorative or merely match the surrounding product area."
|
|
421
424
|
],
|
|
422
425
|
"alternatives": [
|
|
423
426
|
{
|
|
@@ -438,15 +441,31 @@
|
|
|
438
441
|
"accessibility": [
|
|
439
442
|
"Provide an explicit accessible name for icon-only buttons.",
|
|
440
443
|
"Use inactive state only when the action must remain visible but unavailable.",
|
|
441
|
-
"Do not encode the action meaning through color alone."
|
|
444
|
+
"Do not encode the action meaning through color alone.",
|
|
445
|
+
"Loading keeps the action's accessible name and exposes busy state; announce broader operation progress from the owning workflow when users need confirmation.",
|
|
446
|
+
"Use native submit behavior for form submission and handle the form submit event rather than submitting from the button click event."
|
|
442
447
|
],
|
|
443
448
|
"states": [
|
|
444
|
-
"
|
|
445
|
-
"
|
|
449
|
+
"Use only one filled action per local decision area; render all secondary actions with ButtonUnfilled.",
|
|
450
|
+
"Choose brand or neutral for general commands. Reserve positive, negative, warning, and caution for matching action consequences, and AI, guide, or walkthrough for actions that enter those feature experiences.",
|
|
451
|
+
"Contrast serves both surface adaptation and hierarchy, but never permits a second filled action in the same decision area.",
|
|
452
|
+
"Loading prevents duplicate activation without applying inactive opacity.",
|
|
453
|
+
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width."
|
|
446
454
|
],
|
|
447
455
|
"responsiveBehavior": [
|
|
448
456
|
"Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts."
|
|
449
457
|
],
|
|
458
|
+
"frameworkCaveats": {
|
|
459
|
+
"customElements": [
|
|
460
|
+
"For form submission, use the native submit type and listen to the form submit event; use dsClick for non-submit commands."
|
|
461
|
+
],
|
|
462
|
+
"react": [
|
|
463
|
+
"Keep async state in the owner and pass it to the loading state until the command settles."
|
|
464
|
+
],
|
|
465
|
+
"angular": [
|
|
466
|
+
"Keep async state in the owner and pass it to the loading state until the command settles."
|
|
467
|
+
]
|
|
468
|
+
},
|
|
450
469
|
"references": [
|
|
451
470
|
{
|
|
452
471
|
"label": "Storybook examples",
|
|
@@ -476,6 +495,10 @@
|
|
|
476
495
|
"type": "boolean",
|
|
477
496
|
"required": false
|
|
478
497
|
},
|
|
498
|
+
"isLoading": {
|
|
499
|
+
"type": "boolean",
|
|
500
|
+
"required": false
|
|
501
|
+
},
|
|
479
502
|
"label": {
|
|
480
503
|
"type": "string",
|
|
481
504
|
"required": false
|
|
@@ -517,6 +540,7 @@
|
|
|
517
540
|
],
|
|
518
541
|
"componentDependencies": [
|
|
519
542
|
"icon",
|
|
543
|
+
"loader",
|
|
520
544
|
"text"
|
|
521
545
|
]
|
|
522
546
|
},
|
|
@@ -525,9 +549,84 @@
|
|
|
525
549
|
"tag": "ds-button-unfilled",
|
|
526
550
|
"name": "button-unfilled",
|
|
527
551
|
"title": "ButtonUnfilled",
|
|
528
|
-
"summary": "
|
|
529
|
-
"intentStatus": "
|
|
530
|
-
"intent":
|
|
552
|
+
"summary": "Secondary command and compact chrome button with optional persistent toggle state, surface-aware interaction treatment, and async progress.",
|
|
553
|
+
"intentStatus": "complete",
|
|
554
|
+
"intent": {
|
|
555
|
+
"audience": "general",
|
|
556
|
+
"status": "stable",
|
|
557
|
+
"summary": "Secondary command and compact chrome button with optional persistent toggle state, surface-aware interaction treatment, and async progress.",
|
|
558
|
+
"useWhen": [
|
|
559
|
+
"A secondary command accompanies the single filled primary action in a local decision area.",
|
|
560
|
+
"A toolbar, tool rail, overflow area, or shell region needs a compact icon action.",
|
|
561
|
+
"A command represents a persistent toggle or mode whose active state remains meaningful after activation."
|
|
562
|
+
],
|
|
563
|
+
"avoidWhen": [
|
|
564
|
+
"The command is the single primary action in a local decision area; use ButtonFilled instead.",
|
|
565
|
+
"The control selects an application destination or local content panel; use the matching navigation component.",
|
|
566
|
+
"Active styling would only indicate the most recently invoked command or add decorative emphasis.",
|
|
567
|
+
"Surface context would be used to make the action louder or quieter rather than describe its actual parent surface."
|
|
568
|
+
],
|
|
569
|
+
"alternatives": [
|
|
570
|
+
{
|
|
571
|
+
"when": "The command is the single primary action in the decision area.",
|
|
572
|
+
"component": "component:ds-button-filled",
|
|
573
|
+
"reason": "ButtonFilled owns highest-emphasis commands."
|
|
574
|
+
},
|
|
575
|
+
{
|
|
576
|
+
"when": "The choices are persistent application destinations.",
|
|
577
|
+
"component": "component:ds-panel-nav",
|
|
578
|
+
"reason": "PanelNav owns primary route selection and navigation semantics."
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"when": "The choices are transient commands or contextual options.",
|
|
582
|
+
"component": "component:ds-menu",
|
|
583
|
+
"reason": "Menu owns temporary popup collections and their keyboard model."
|
|
584
|
+
}
|
|
585
|
+
],
|
|
586
|
+
"commonlyComposedWith": [
|
|
587
|
+
"component:ds-button-filled",
|
|
588
|
+
"component:ds-menu",
|
|
589
|
+
"component:ds-panel-tools"
|
|
590
|
+
],
|
|
591
|
+
"accessibility": [
|
|
592
|
+
"Provide an explicit accessible name for every icon-only action.",
|
|
593
|
+
"Use active state only for a persistent toggle or mode, and synchronize pressed semantics unless an owning composite exposes the selection state.",
|
|
594
|
+
"Treat notification dots as supplemental unread or status information; never use a dot as the sole state, meaning, or accessible name.",
|
|
595
|
+
"Loading keeps the action's accessible name and exposes busy state; announce broader operation progress from the owning workflow when needed.",
|
|
596
|
+
"Use inactive state only when an unavailable action must remain visible.",
|
|
597
|
+
"For form submission, use native submit behavior and handle the form submit event rather than submitting from the button click event."
|
|
598
|
+
],
|
|
599
|
+
"states": [
|
|
600
|
+
"General content UI keeps the selected interaction fill and border for persistent active state.",
|
|
601
|
+
"Shell, navigation, and tool-rail chrome uses foreground-only active state with no selected fill or border.",
|
|
602
|
+
"The omitted default surface treatment is for primary and secondary parent surfaces and uses the brand-active selected fill; pass faint explicitly on faint surfaces to use the neutral active fill.",
|
|
603
|
+
"Surface context must match the actual parent surface; translucent, inverted, media, and always-dark treatments are reserved for those surfaces.",
|
|
604
|
+
"Loading prevents duplicate activation without applying inactive opacity.",
|
|
605
|
+
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width."
|
|
606
|
+
],
|
|
607
|
+
"responsiveBehavior": [
|
|
608
|
+
"The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants.",
|
|
609
|
+
"Use fill width only when the parent layout requires a full-width secondary action."
|
|
610
|
+
],
|
|
611
|
+
"frameworkCaveats": {
|
|
612
|
+
"customElements": [
|
|
613
|
+
"For form submission, use the native submit type and listen to the form submit event; use dsClick for non-submit commands.",
|
|
614
|
+
"Roving-focus composites own the button's tab-stop placement and selection semantics."
|
|
615
|
+
],
|
|
616
|
+
"react": [
|
|
617
|
+
"Keep active, pressed, and async state synchronized from the owning toolbar or workflow."
|
|
618
|
+
],
|
|
619
|
+
"angular": [
|
|
620
|
+
"Keep active, pressed, and async state synchronized from the owning toolbar or workflow."
|
|
621
|
+
]
|
|
622
|
+
},
|
|
623
|
+
"references": [
|
|
624
|
+
{
|
|
625
|
+
"label": "Storybook examples",
|
|
626
|
+
"path": "src/wc/components/ButtonUnfilled/ButtonUnfilled.stories.ts"
|
|
627
|
+
}
|
|
628
|
+
]
|
|
629
|
+
},
|
|
531
630
|
"api": {
|
|
532
631
|
"props": {
|
|
533
632
|
"activeFill": {
|
|
@@ -542,10 +641,6 @@
|
|
|
542
641
|
"type": "ButtonUnfilledBackground | undefined",
|
|
543
642
|
"required": false
|
|
544
643
|
},
|
|
545
|
-
"backgroundContrast": {
|
|
546
|
-
"type": "ButtonUnfilledOnBackgroundContrast",
|
|
547
|
-
"required": false
|
|
548
|
-
},
|
|
549
644
|
"controls": {
|
|
550
645
|
"type": "string | undefined",
|
|
551
646
|
"required": false
|
|
@@ -582,6 +677,10 @@
|
|
|
582
677
|
"type": "boolean",
|
|
583
678
|
"required": false
|
|
584
679
|
},
|
|
680
|
+
"isLoading": {
|
|
681
|
+
"type": "boolean",
|
|
682
|
+
"required": false
|
|
683
|
+
},
|
|
585
684
|
"label": {
|
|
586
685
|
"type": "string",
|
|
587
686
|
"required": false
|
|
@@ -632,6 +731,7 @@
|
|
|
632
731
|
"componentDependencies": [
|
|
633
732
|
"badge",
|
|
634
733
|
"icon",
|
|
734
|
+
"loader",
|
|
635
735
|
"text"
|
|
636
736
|
]
|
|
637
737
|
},
|
|
@@ -1058,15 +1158,81 @@
|
|
|
1058
1158
|
"tag": "ds-chip",
|
|
1059
1159
|
"name": "chip",
|
|
1060
1160
|
"title": "Chip",
|
|
1061
|
-
"summary": "
|
|
1062
|
-
"intentStatus": "
|
|
1063
|
-
"intent":
|
|
1161
|
+
"summary": "Always-removable metadata value for primary surfaces, with semantic value status and parent-owned removal.",
|
|
1162
|
+
"intentStatus": "complete",
|
|
1163
|
+
"intent": {
|
|
1164
|
+
"audience": "general",
|
|
1165
|
+
"status": "stable",
|
|
1166
|
+
"summary": "Always-removable metadata value for primary surfaces, with semantic value status and parent-owned removal.",
|
|
1167
|
+
"useWhen": [
|
|
1168
|
+
"A user-applied value such as a filter, recipient, or tokenized input entry must remain visible and individually removable.",
|
|
1169
|
+
"A compact metadata value needs a semantic neutral, active, error, or caution status before removal.",
|
|
1170
|
+
"A collection owner can remove the represented value and restore focus after the dismiss action."
|
|
1171
|
+
],
|
|
1172
|
+
"avoidWhen": [
|
|
1173
|
+
"The label is static or not individually removable; use Tag instead.",
|
|
1174
|
+
"The control selects, toggles, or navigates; use the matching button or navigation component.",
|
|
1175
|
+
"The information is a persistent status, count, or unread indicator; use Badge or an appropriate status composition instead.",
|
|
1176
|
+
"The chip would be placed on any surface other than a primary surface."
|
|
1177
|
+
],
|
|
1178
|
+
"alternatives": [
|
|
1179
|
+
{
|
|
1180
|
+
"when": "The metadata label is static and has no dismiss action.",
|
|
1181
|
+
"component": "component:ds-tag",
|
|
1182
|
+
"reason": "Tag owns non-interactive taxonomy and metadata labels."
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
"when": "The compact mark communicates a count, status, or unread indicator.",
|
|
1186
|
+
"component": "component:ds-badge",
|
|
1187
|
+
"reason": "Badge owns supplemental counters and status marks without a dismiss action."
|
|
1188
|
+
},
|
|
1189
|
+
{
|
|
1190
|
+
"when": "The value is a selectable or persistent toggle.",
|
|
1191
|
+
"component": "component:ds-button-unfilled",
|
|
1192
|
+
"reason": "ButtonUnfilled owns command and toggle semantics."
|
|
1193
|
+
}
|
|
1194
|
+
],
|
|
1195
|
+
"commonlyComposedWith": [
|
|
1196
|
+
"component:ds-input",
|
|
1197
|
+
"component:ds-select"
|
|
1198
|
+
],
|
|
1199
|
+
"accessibility": [
|
|
1200
|
+
"Keep the visible label meaningful without relying on semantic color alone.",
|
|
1201
|
+
"Give the dismiss action a name that identifies the represented value.",
|
|
1202
|
+
"After removal, the parent moves focus to the next chip, then the previous chip, or the owning collection or input trigger when no chips remain.",
|
|
1203
|
+
"Inactive chips remain visible while their dismiss action is disabled and removed from keyboard interaction."
|
|
1204
|
+
],
|
|
1205
|
+
"states": [
|
|
1206
|
+
"Semantic state describes the represented value; active does not mean selected or pressed.",
|
|
1207
|
+
"The dismiss action is the chip's only interaction, and the parent owns data mutation after dsRemove.",
|
|
1208
|
+
"Long labels remain on one line and truncate only when the consuming layout supplies a maximum width; otherwise the chip sizes to its content.",
|
|
1209
|
+
"Rounded shape is a visual choice and does not change semantics or interaction.",
|
|
1210
|
+
"Chip is designed only for primary surfaces and has no surface-context API."
|
|
1211
|
+
],
|
|
1212
|
+
"responsiveBehavior": [
|
|
1213
|
+
"The parent chooses chip size and owns wrapping, overflow, and collection condensation.",
|
|
1214
|
+
"Chip does not automatically resize, hide, or collapse its label at responsive breakpoints."
|
|
1215
|
+
],
|
|
1216
|
+
"frameworkCaveats": {
|
|
1217
|
+
"customElements": [
|
|
1218
|
+
"dsRemove has no payload; associate each rendered chip with its owning value and remove that value from the event handler."
|
|
1219
|
+
],
|
|
1220
|
+
"react": [
|
|
1221
|
+
"Use the rendered chip's bound item context in the dsRemove handler, then restore focus after the collection rerenders."
|
|
1222
|
+
],
|
|
1223
|
+
"angular": [
|
|
1224
|
+
"Use the rendered chip's bound item context in the dsRemove handler, then restore focus after the collection rerenders."
|
|
1225
|
+
]
|
|
1226
|
+
},
|
|
1227
|
+
"references": [
|
|
1228
|
+
{
|
|
1229
|
+
"label": "Storybook examples",
|
|
1230
|
+
"path": "src/wc/components/Chip/Chip.stories.ts"
|
|
1231
|
+
}
|
|
1232
|
+
]
|
|
1233
|
+
},
|
|
1064
1234
|
"api": {
|
|
1065
1235
|
"props": {
|
|
1066
|
-
"background": {
|
|
1067
|
-
"type": "ChipBackground | undefined",
|
|
1068
|
-
"required": false
|
|
1069
|
-
},
|
|
1070
1236
|
"isInactive": {
|
|
1071
1237
|
"type": "boolean",
|
|
1072
1238
|
"required": false
|
|
@@ -1079,10 +1245,6 @@
|
|
|
1079
1245
|
"type": "string | number | undefined",
|
|
1080
1246
|
"required": false
|
|
1081
1247
|
},
|
|
1082
|
-
"removable": {
|
|
1083
|
-
"type": "boolean",
|
|
1084
|
-
"required": false
|
|
1085
|
-
},
|
|
1086
1248
|
"removeLabel": {
|
|
1087
1249
|
"type": "string",
|
|
1088
1250
|
"required": false
|
|
@@ -1923,6 +2085,131 @@
|
|
|
1923
2085
|
"tooltip"
|
|
1924
2086
|
]
|
|
1925
2087
|
},
|
|
2088
|
+
{
|
|
2089
|
+
"id": "component:ds-panel-sub-nav",
|
|
2090
|
+
"tag": "ds-panel-sub-nav",
|
|
2091
|
+
"name": "panel-sub-nav",
|
|
2092
|
+
"title": "PanelSubNav",
|
|
2093
|
+
"summary": "Persistent vertical tab navigation for a panel or card side rail, switching adjacent local content with menu-like selected fill and stable text weight.",
|
|
2094
|
+
"intentStatus": "complete",
|
|
2095
|
+
"intent": {
|
|
2096
|
+
"audience": "general",
|
|
2097
|
+
"status": "stable",
|
|
2098
|
+
"summary": "Persistent vertical tab navigation for a panel or card side rail, switching adjacent local content with menu-like selected fill and stable text weight.",
|
|
2099
|
+
"useWhen": [
|
|
2100
|
+
"A panel or card side rail needs a persistent vertical list that switches adjacent local content.",
|
|
2101
|
+
"Each concise text label controls an immediately available tabpanel without changing application routes."
|
|
2102
|
+
],
|
|
2103
|
+
"avoidWhen": [
|
|
2104
|
+
"The navigation is not contained in a panel or card side rail.",
|
|
2105
|
+
"Local views should be arranged horizontally; use TabGroup instead.",
|
|
2106
|
+
"The choices navigate routes in application shell chrome; use PanelNav or BarNav instead.",
|
|
2107
|
+
"The choices are temporary commands or contextual options; use Menu instead.",
|
|
2108
|
+
"Rows need icons, subtext, notification dots, nested levels, or section headers."
|
|
2109
|
+
],
|
|
2110
|
+
"alternatives": [
|
|
2111
|
+
{
|
|
2112
|
+
"when": "Local panel choices fit a horizontal tab row.",
|
|
2113
|
+
"component": "component:ds-tab-group",
|
|
2114
|
+
"reason": "TabGroup is the horizontal local-view counterpart."
|
|
2115
|
+
},
|
|
2116
|
+
{
|
|
2117
|
+
"when": "The choices are primary application destinations.",
|
|
2118
|
+
"component": "component:ds-panel-nav",
|
|
2119
|
+
"reason": "PanelNav owns primary application navigation."
|
|
2120
|
+
},
|
|
2121
|
+
{
|
|
2122
|
+
"when": "The choices are secondary application routes.",
|
|
2123
|
+
"component": "component:ds-bar-nav",
|
|
2124
|
+
"reason": "BarNav owns route sections inside AppShell."
|
|
2125
|
+
},
|
|
2126
|
+
{
|
|
2127
|
+
"when": "The choices are transient actions or options.",
|
|
2128
|
+
"component": "component:ds-menu",
|
|
2129
|
+
"reason": "Menu owns temporary popup collections."
|
|
2130
|
+
}
|
|
2131
|
+
],
|
|
2132
|
+
"commonlyComposedWith": [
|
|
2133
|
+
"component:ds-card",
|
|
2134
|
+
"component:ds-text"
|
|
2135
|
+
],
|
|
2136
|
+
"accessibility": [
|
|
2137
|
+
"Provide an accessible name with aria-label or aria-labelledby.",
|
|
2138
|
+
"Give every item a unique id and the id of its controlled tabpanel.",
|
|
2139
|
+
"Keep each controlled tabpanel labelled by its matching item id.",
|
|
2140
|
+
"Always provide a valid selected item when enabled items exist so exactly one tab and panel are active.",
|
|
2141
|
+
"ArrowUp and ArrowDown move and activate selection; Home and End select the first and last available items.",
|
|
2142
|
+
"Do not use selected text weight as the selection cue; active fill and primary foreground communicate selection."
|
|
2143
|
+
],
|
|
2144
|
+
"states": [
|
|
2145
|
+
"The parent owns the canonical selected value and panel visibility, and should update both from dsChange.",
|
|
2146
|
+
"A missing, empty, or unknown selected value is invalid when enabled items exist; the component does not choose a fallback selection.",
|
|
2147
|
+
"Inactive items remain visible but cannot be focused or selected.",
|
|
2148
|
+
"Selection is singular and follows keyboard focus.",
|
|
2149
|
+
"The omitted default surface treatment is for primary and secondary parent surfaces and uses the brand-active selected fill; pass faint explicitly on faint surfaces to use the neutral active fill.",
|
|
2150
|
+
"Rows contain one text label only and do not express nested navigation or grouped hierarchy."
|
|
2151
|
+
],
|
|
2152
|
+
"responsiveBehavior": [
|
|
2153
|
+
"The component remains vertical at every width.",
|
|
2154
|
+
"The consuming panel owns responsive adaptation and decides whether to reposition or replace the side rail."
|
|
2155
|
+
],
|
|
2156
|
+
"frameworkCaveats": {
|
|
2157
|
+
"customElements": [
|
|
2158
|
+
"Assign items as a JavaScript property because structured arrays are not represented by HTML attributes.",
|
|
2159
|
+
"Keep value synchronized to a valid enabled item and update the controlled panel from dsChange."
|
|
2160
|
+
],
|
|
2161
|
+
"react": [
|
|
2162
|
+
"Pass items as an array through the generated wrapper, keep value controlled, and use onDsChange to synchronize the visible panel."
|
|
2163
|
+
],
|
|
2164
|
+
"angular": [
|
|
2165
|
+
"Bind items and a valid value as properties, and handle dsChange to synchronize the visible panel."
|
|
2166
|
+
]
|
|
2167
|
+
}
|
|
2168
|
+
},
|
|
2169
|
+
"api": {
|
|
2170
|
+
"props": {
|
|
2171
|
+
"ariaLabel": {
|
|
2172
|
+
"type": "string | null",
|
|
2173
|
+
"required": false
|
|
2174
|
+
},
|
|
2175
|
+
"ariaLabelledby": {
|
|
2176
|
+
"type": "string | undefined",
|
|
2177
|
+
"required": false
|
|
2178
|
+
},
|
|
2179
|
+
"background": {
|
|
2180
|
+
"type": "PanelSubNavBackground | undefined",
|
|
2181
|
+
"required": false
|
|
2182
|
+
},
|
|
2183
|
+
"items": {
|
|
2184
|
+
"type": "PanelSubNavItem[]",
|
|
2185
|
+
"required": false
|
|
2186
|
+
},
|
|
2187
|
+
"value": {
|
|
2188
|
+
"type": "string",
|
|
2189
|
+
"required": false
|
|
2190
|
+
}
|
|
2191
|
+
},
|
|
2192
|
+
"events": [
|
|
2193
|
+
{
|
|
2194
|
+
"name": "dsChange",
|
|
2195
|
+
"detail": "string"
|
|
2196
|
+
}
|
|
2197
|
+
],
|
|
2198
|
+
"slots": []
|
|
2199
|
+
},
|
|
2200
|
+
"exports": {
|
|
2201
|
+
"customElement": "ds-panel-sub-nav",
|
|
2202
|
+
"react": "DsPanelSubNav",
|
|
2203
|
+
"angular": "DsPanelSubNav"
|
|
2204
|
+
},
|
|
2205
|
+
"dependencies": [
|
|
2206
|
+
"@ds-mo/ui",
|
|
2207
|
+
"@ds-mo/tokens"
|
|
2208
|
+
],
|
|
2209
|
+
"componentDependencies": [
|
|
2210
|
+
"text"
|
|
2211
|
+
]
|
|
2212
|
+
},
|
|
1926
2213
|
{
|
|
1927
2214
|
"id": "component:ds-panel-tools",
|
|
1928
2215
|
"tag": "ds-panel-tools",
|
|
@@ -2738,66 +3025,91 @@
|
|
|
2738
3025
|
"tag": "ds-tab-group",
|
|
2739
3026
|
"name": "tab-group",
|
|
2740
3027
|
"title": "TabGroup",
|
|
2741
|
-
"summary": "Horizontal or
|
|
2742
|
-
"intentStatus": "
|
|
2743
|
-
"intent":
|
|
2744
|
-
|
|
2745
|
-
"
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
"
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
"
|
|
2755
|
-
|
|
2756
|
-
|
|
3028
|
+
"summary": "Horizontal single-selection tabs for switching adjacent local views or view modes, with uniform label, icon, or icon-label presentation and surface-aware selection.",
|
|
3029
|
+
"intentStatus": "complete",
|
|
3030
|
+
"intent": {
|
|
3031
|
+
"audience": "general",
|
|
3032
|
+
"status": "stable",
|
|
3033
|
+
"summary": "Horizontal single-selection tabs for switching adjacent local views or view modes, with uniform label, icon, or icon-label presentation and surface-aware selection.",
|
|
3034
|
+
"useWhen": [
|
|
3035
|
+
"Adjacent local content views or panels fit in a horizontal tab row.",
|
|
3036
|
+
"A compact horizontal selector switches between equivalent local view modes such as list and grid.",
|
|
3037
|
+
"A tab set needs concise labels, icons, or icon-label content with optional supplemental notification dots."
|
|
3038
|
+
],
|
|
3039
|
+
"avoidWhen": [
|
|
3040
|
+
"The choices navigate application routes; use PanelNav or BarNav instead.",
|
|
3041
|
+
"The choices belong in a vertical panel or card side rail; use PanelSubNav instead.",
|
|
3042
|
+
"The choices are temporary commands or contextual options; use Menu instead.",
|
|
3043
|
+
"The row requires mixed content variants, subtext, nested levels, or multi-row wrapping.",
|
|
3044
|
+
"No enabled tab can remain selected while enabled choices exist."
|
|
3045
|
+
],
|
|
3046
|
+
"alternatives": [
|
|
3047
|
+
{
|
|
3048
|
+
"when": "Local views need persistent vertical side-rail navigation.",
|
|
3049
|
+
"component": "component:ds-panel-sub-nav",
|
|
3050
|
+
"reason": "PanelSubNav owns the vertical local-view keyboard and selection model."
|
|
2757
3051
|
},
|
|
2758
|
-
|
|
2759
|
-
"
|
|
2760
|
-
"
|
|
3052
|
+
{
|
|
3053
|
+
"when": "The choices are primary application destinations.",
|
|
3054
|
+
"component": "component:ds-panel-nav",
|
|
3055
|
+
"reason": "PanelNav owns application route selection in shell navigation."
|
|
2761
3056
|
},
|
|
2762
|
-
|
|
2763
|
-
"
|
|
2764
|
-
"
|
|
3057
|
+
{
|
|
3058
|
+
"when": "The choices are secondary application route sections.",
|
|
3059
|
+
"component": "component:ds-bar-nav",
|
|
3060
|
+
"reason": "BarNav owns route sections, overflow, and shell coordination."
|
|
2765
3061
|
},
|
|
2766
|
-
|
|
2767
|
-
"
|
|
2768
|
-
"
|
|
3062
|
+
{
|
|
3063
|
+
"when": "The choices are transient actions or options.",
|
|
3064
|
+
"component": "component:ds-menu",
|
|
3065
|
+
"reason": "Menu owns temporary popup collections rather than persistent local views."
|
|
2769
3066
|
}
|
|
3067
|
+
],
|
|
3068
|
+
"commonlyComposedWith": [
|
|
3069
|
+
"component:ds-text",
|
|
3070
|
+
"component:ds-icon"
|
|
3071
|
+
],
|
|
3072
|
+
"accessibility": [
|
|
3073
|
+
"Provide an accessible tab-list name with aria-label or aria-labelledby.",
|
|
3074
|
+
"Keep exactly one valid enabled tab selected whenever enabled tabs exist, and keep its controlled view synchronized.",
|
|
3075
|
+
"When tabs control tabpanels, give each tab the id of its panel and label each panel from its tab.",
|
|
3076
|
+
"ArrowLeft and ArrowRight move and activate selection; Home and End select the first and last available tabs.",
|
|
3077
|
+
"Icon-only tabs retain their required text label as the accessible name even though the label is not visible.",
|
|
3078
|
+
"Notification dots are supplemental status only and must never replace a label, state, or accessible name.",
|
|
3079
|
+
"Inactive tabs remain visible but cannot be focused or selected."
|
|
3080
|
+
],
|
|
3081
|
+
"states": [
|
|
3082
|
+
"The parent owns the canonical selected value and adjacent view visibility, and should update both from dsChange.",
|
|
3083
|
+
"A missing, empty, inactive, or unknown selected value is invalid when enabled tabs exist; the component does not choose a fallback selection.",
|
|
3084
|
+
"Selection is singular and follows keyboard focus.",
|
|
3085
|
+
"Use one consistent content variant across every selectable tab in a group.",
|
|
3086
|
+
"Omitted background is for primary and secondary surfaces; pass the faint context explicitly on faint surfaces.",
|
|
3087
|
+
"Only the omitted default context emphasizes visible selected label text and keeps the filled track; explicit faint follows the other surface contexts with a transparent track, stable text weight, surface border, and neutral active fill.",
|
|
3088
|
+
"Dividers visually separate related subsets inside one tab list but do not create nested navigation or independent selection groups."
|
|
3089
|
+
],
|
|
3090
|
+
"responsiveBehavior": [
|
|
3091
|
+
"The component remains a single horizontal row and does not become vertical or wrap.",
|
|
3092
|
+
"The consuming layout owns narrow-width placement and overflow, or replaces the row with a more suitable navigation pattern."
|
|
3093
|
+
],
|
|
3094
|
+
"frameworkCaveats": {
|
|
3095
|
+
"customElements": [
|
|
3096
|
+
"Assign tabs as a JavaScript property because structured arrays are not represented by HTML attributes.",
|
|
3097
|
+
"Use one item variant consistently, keep value synchronized to an enabled item, and update controlled content from dsChange."
|
|
3098
|
+
],
|
|
3099
|
+
"react": [
|
|
3100
|
+
"Pass tabs as an array through the generated wrapper, keep value controlled, and use onDsChange to synchronize the visible view."
|
|
3101
|
+
],
|
|
3102
|
+
"angular": [
|
|
3103
|
+
"Bind tabs and a valid value as properties, and handle dsChange to synchronize the visible view."
|
|
3104
|
+
]
|
|
2770
3105
|
},
|
|
2771
|
-
"
|
|
3106
|
+
"references": [
|
|
2772
3107
|
{
|
|
2773
|
-
"
|
|
2774
|
-
"
|
|
3108
|
+
"label": "Storybook examples",
|
|
3109
|
+
"path": "src/wc/components/TabGroup/TabGroup.stories.ts"
|
|
2775
3110
|
}
|
|
2776
|
-
]
|
|
2777
|
-
"slots": []
|
|
2778
|
-
},
|
|
2779
|
-
"exports": {
|
|
2780
|
-
"customElement": "ds-tab-group",
|
|
2781
|
-
"react": "DsTabGroup",
|
|
2782
|
-
"angular": "DsTabGroup"
|
|
3111
|
+
]
|
|
2783
3112
|
},
|
|
2784
|
-
"dependencies": [
|
|
2785
|
-
"@ds-mo/ui",
|
|
2786
|
-
"@ds-mo/tokens"
|
|
2787
|
-
],
|
|
2788
|
-
"componentDependencies": [
|
|
2789
|
-
"badge",
|
|
2790
|
-
"text"
|
|
2791
|
-
]
|
|
2792
|
-
},
|
|
2793
|
-
{
|
|
2794
|
-
"id": "component:ds-tab-group-nav",
|
|
2795
|
-
"tag": "ds-tab-group-nav",
|
|
2796
|
-
"name": "tab-group-nav",
|
|
2797
|
-
"title": "TabGroupNav",
|
|
2798
|
-
"summary": "Navigation-style tab list for primary and secondary navigation surfaces.",
|
|
2799
|
-
"intentStatus": "migration-pending",
|
|
2800
|
-
"intent": null,
|
|
2801
3113
|
"api": {
|
|
2802
3114
|
"props": {
|
|
2803
3115
|
"ariaLabel": {
|
|
@@ -2809,23 +3121,11 @@
|
|
|
2809
3121
|
"required": false
|
|
2810
3122
|
},
|
|
2811
3123
|
"background": {
|
|
2812
|
-
"type": "
|
|
2813
|
-
"required": false
|
|
2814
|
-
},
|
|
2815
|
-
"orientation": {
|
|
2816
|
-
"type": "'horizontal' | 'vertical'",
|
|
2817
|
-
"required": false
|
|
2818
|
-
},
|
|
2819
|
-
"rovingEnabled": {
|
|
2820
|
-
"type": "boolean",
|
|
2821
|
-
"required": false
|
|
2822
|
-
},
|
|
2823
|
-
"selectionFollowsFocus": {
|
|
2824
|
-
"type": "boolean",
|
|
3124
|
+
"type": "TabBackground | undefined",
|
|
2825
3125
|
"required": false
|
|
2826
3126
|
},
|
|
2827
3127
|
"tabs": {
|
|
2828
|
-
"type": "
|
|
3128
|
+
"type": "TabGroupItem[]",
|
|
2829
3129
|
"required": false
|
|
2830
3130
|
},
|
|
2831
3131
|
"value": {
|
|
@@ -2837,25 +3137,23 @@
|
|
|
2837
3137
|
{
|
|
2838
3138
|
"name": "dsChange",
|
|
2839
3139
|
"detail": "string"
|
|
2840
|
-
},
|
|
2841
|
-
{
|
|
2842
|
-
"name": "dsRovingExit",
|
|
2843
|
-
"detail": "'start' | 'end'"
|
|
2844
3140
|
}
|
|
2845
3141
|
],
|
|
2846
3142
|
"slots": []
|
|
2847
3143
|
},
|
|
2848
3144
|
"exports": {
|
|
2849
|
-
"customElement": "ds-tab-group
|
|
2850
|
-
"react": "
|
|
2851
|
-
"angular": "
|
|
3145
|
+
"customElement": "ds-tab-group",
|
|
3146
|
+
"react": "DsTabGroup",
|
|
3147
|
+
"angular": "DsTabGroup"
|
|
2852
3148
|
},
|
|
2853
3149
|
"dependencies": [
|
|
2854
3150
|
"@ds-mo/ui",
|
|
2855
|
-
"@ds-mo/tokens"
|
|
3151
|
+
"@ds-mo/tokens",
|
|
3152
|
+
"@ds-mo/icons"
|
|
2856
3153
|
],
|
|
2857
3154
|
"componentDependencies": [
|
|
2858
3155
|
"badge",
|
|
3156
|
+
"icon",
|
|
2859
3157
|
"text"
|
|
2860
3158
|
]
|
|
2861
3159
|
},
|