@ds-mo/ui 14.22.2 → 14.24.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/dist/.package-ready.json +1 -1
- package/dist/agent-patterns.json +14 -7
- package/dist/agent.json +112 -26
- package/dist/angular/ds-bar-title.d.ts +1 -1
- package/dist/angular/ds-bar-title.js +3 -3
- package/dist/angular/ds-button-filled.d.ts +3 -1
- package/dist/angular/ds-button-filled.js +7 -4
- package/dist/angular/ds-button-unfilled.d.ts +3 -1
- package/dist/angular/ds-button-unfilled.js +7 -4
- package/dist/angular/ds-panel-tools.d.ts +7 -1
- package/dist/angular/ds-panel-tools.js +7 -4
- package/dist/angular/ds-shell-app.d.ts +7 -1
- package/dist/angular/ds-shell-app.js +5 -2
- package/dist/angular/ds-shell-tools.d.ts +4 -1
- package/dist/angular/ds-shell-tools.js +7 -4
- package/dist/components/ds-agent-questionnaire.js +1 -1
- package/dist/components/ds-agent-response.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-title.js +1 -1
- package/dist/components/ds-bar-workflow.js +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-chart.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-filter-menu.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-message-actions.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message-scroller.js.map +1 -1
- package/dist/components/ds-mobile-sheet-nav.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-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-table-filter.js +1 -1
- package/dist/components/ds-table-group.js +1 -1
- package/dist/components/ds-table-saved-views.js +1 -1
- package/dist/components/ds-table-search.js +1 -1
- package/dist/components/ds-table-sort.js +1 -1
- package/dist/components/ds-table.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/p-BR1ayqMU.js +2 -0
- package/dist/components/p-BR1ayqMU.js.map +1 -0
- package/dist/components/{p-DzVYGJJv.js → p-BSRIF4m8.js} +2 -2
- package/dist/components/{p-FitB53eM.js → p-BZlhBJZL.js} +2 -2
- package/dist/components/{p-BmqnrfTf.js → p-Bo6uW_8T.js} +2 -2
- package/dist/components/{p-BIaHDBfP.js → p-Bq8svcPs.js} +2 -2
- package/dist/components/{p-DAFR4U9P.js → p-BqbdABo3.js} +2 -2
- package/dist/components/{p-nVv71P3f.js → p-CEXchU5N.js} +2 -2
- package/dist/components/p-CEfxLsbX.js +2 -0
- package/dist/components/p-CEfxLsbX.js.map +1 -0
- package/dist/components/{p-DXbryJHz.js → p-CYMKmJ2s.js} +2 -2
- package/dist/components/p-CZHIkVgj.js +2 -0
- package/dist/components/p-CZHIkVgj.js.map +1 -0
- package/dist/components/{p-CL0tECXf.js → p-CZjjDhUl.js} +2 -2
- package/dist/components/p-C_FFU6W3.js +2 -0
- package/dist/components/p-C_FFU6W3.js.map +1 -0
- package/dist/components/{p-CilwchJH.js → p-CglHiyY2.js} +2 -2
- package/dist/components/{p-9M0ak2q_.js → p-DLaN9BPq.js} +2 -2
- package/dist/components/{p-CrYJnDev.js → p-DiS5BgLA.js} +2 -2
- package/dist/components/{p-DiyO47xX.js → p-PXdvBMXB.js} +2 -2
- package/dist/components/{p-7MWaWl8w.js → p-kslioYhf.js} +2 -2
- package/dist/components/p-kslioYhf.js.map +1 -0
- package/dist/docs/components.json +434 -32
- package/dist/lib/components/BarTitle/bar-title-types.d.ts +54 -1
- package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +12 -1
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +6 -2
- package/dist/lib/shell/index.d.ts +2 -1
- package/dist/lib/shell/index.js.map +2 -2
- package/dist/mcp-data/registry/agent-activity.json +1 -1
- package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/banner.json +1 -1
- package/dist/mcp-data/registry/bar-action.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +1 -1
- package/dist/mcp-data/registry/bar-title.json +35 -13
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +61 -7
- package/dist/mcp-data/registry/button-unfilled.json +61 -7
- package/dist/mcp-data/registry/card-chart.json +1 -1
- package/dist/mcp-data/registry/card-overview.json +1 -1
- package/dist/mcp-data/registry/card-setting.json +1 -1
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart.json +1 -1
- package/dist/mcp-data/registry/checkbox.json +1 -1
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +1 -1
- package/dist/mcp-data/registry/filter-menu.json +1 -1
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +1 -1
- package/dist/mcp-data/registry/message-actions.json +1 -1
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +9 -2
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -1
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/pagination.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +1 -1
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +62 -15
- package/dist/mcp-data/registry/paper-texture.json +1 -1
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +112 -26
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +1 -1
- package/dist/mcp-data/registry/shell-app.json +26 -3
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +39 -6
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +1 -1
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/table-filter.json +1 -1
- package/dist/mcp-data/registry/table-group.json +1 -1
- package/dist/mcp-data/registry/table-saved-views.json +1 -1
- package/dist/mcp-data/registry/table-search.json +1 -1
- package/dist/mcp-data/registry/table-sort.json +1 -1
- package/dist/mcp-data/registry/table-toolbar.json +1 -1
- package/dist/mcp-data/registry/table.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-chart.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/ds-button-filled.d.ts +1 -0
- package/dist/react/ds-button-filled.js +4 -1
- package/dist/react/ds-button-unfilled.d.ts +1 -0
- package/dist/react/ds-button-unfilled.js +1 -0
- package/dist/react/ds-panel-tools.d.ts +2 -1
- package/dist/react/ds-panel-tools.js +1 -0
- package/dist/react/ds-shell-app.d.ts +2 -1
- package/dist/react/ds-shell-app.js +1 -0
- package/dist/react/ds-shell-tools.d.ts +2 -1
- package/dist/react/ds-shell-tools.js +2 -1
- package/dist/types/components/BarTitle/BarTitle.d.ts +19 -6
- package/dist/types/components/BarTitle/bar-title-actions.d.ts +11 -0
- package/dist/types/components/BarTitle/bar-title-types.d.ts +54 -1
- package/dist/types/components/BarTitle/index.d.ts +1 -1
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +12 -1
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +12 -1
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +14 -0
- package/dist/types/components/MessageScroller/message-scroller-transcript.d.ts +9 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +17 -1
- package/dist/types/components/PanelTools/index.d.ts +1 -1
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +76 -1
- package/dist/types/components/PanelTools/panel-tools-utils.d.ts +17 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +16 -1
- package/dist/types/components/ShellApp/shell-app-types.d.ts +6 -2
- package/dist/types/components/ShellTools/ShellTools.d.ts +5 -1
- package/dist/types/components/ShellTools/index.d.ts +1 -1
- package/dist/types/components.d.ts +94 -6
- package/dist/types/shell/index.d.ts +2 -1
- package/dist/types/utils/button-story-foundation.d.ts +2 -0
- package/dist/vue/ds-bar-title.js +1 -0
- package/dist/vue/ds-button-filled.js +6 -2
- package/dist/vue/ds-button-unfilled.js +4 -0
- package/dist/vue/ds-panel-tools.js +3 -0
- package/dist/vue/ds-shell-app.js +2 -0
- package/dist/vue/ds-shell-tools.js +5 -2
- package/package.json +3 -3
- package/dist/components/p--68f7nIx.js +0 -2
- package/dist/components/p--68f7nIx.js.map +0 -1
- package/dist/components/p-7MWaWl8w.js.map +0 -1
- package/dist/components/p-BnTPuV3x.js +0 -2
- package/dist/components/p-BnTPuV3x.js.map +0 -1
- package/dist/components/p-COFw_fcj.js +0 -2
- package/dist/components/p-COFw_fcj.js.map +0 -1
- package/dist/components/p-CvHrCyuz.js +0 -2
- package/dist/components/p-CvHrCyuz.js.map +0 -1
- /package/dist/components/{p-DzVYGJJv.js.map → p-BSRIF4m8.js.map} +0 -0
- /package/dist/components/{p-FitB53eM.js.map → p-BZlhBJZL.js.map} +0 -0
- /package/dist/components/{p-BmqnrfTf.js.map → p-Bo6uW_8T.js.map} +0 -0
- /package/dist/components/{p-BIaHDBfP.js.map → p-Bq8svcPs.js.map} +0 -0
- /package/dist/components/{p-DAFR4U9P.js.map → p-BqbdABo3.js.map} +0 -0
- /package/dist/components/{p-nVv71P3f.js.map → p-CEXchU5N.js.map} +0 -0
- /package/dist/components/{p-DXbryJHz.js.map → p-CYMKmJ2s.js.map} +0 -0
- /package/dist/components/{p-CL0tECXf.js.map → p-CZjjDhUl.js.map} +0 -0
- /package/dist/components/{p-CilwchJH.js.map → p-CglHiyY2.js.map} +0 -0
- /package/dist/components/{p-9M0ak2q_.js.map → p-DLaN9BPq.js.map} +0 -0
- /package/dist/components/{p-CrYJnDev.js.map → p-DiS5BgLA.js.map} +0 -0
- /package/dist/components/{p-DiyO47xX.js.map → p-PXdvBMXB.js.map} +0 -0
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"themeSetup": "Set data-theme=\"dark\" on <html> for dark mode. Light is default.",
|
|
13
13
|
"peerDependencies": {
|
|
14
14
|
"required": [
|
|
15
|
-
"@ds-mo/tokens ^6.5.
|
|
15
|
+
"@ds-mo/tokens ^6.5.1",
|
|
16
16
|
"@ds-mo/icons ^7.0.0"
|
|
17
17
|
],
|
|
18
18
|
"optional": [],
|
|
@@ -1265,7 +1265,7 @@
|
|
|
1265
1265
|
{
|
|
1266
1266
|
"name": "bar-title",
|
|
1267
1267
|
"title": "BarTitle",
|
|
1268
|
-
"description": "Page-level title chrome with
|
|
1268
|
+
"description": "Page-level title chrome with route identity, responsive ordered button, icon, menu, split, and overflow actions, plus explicit expanded, compact, or constrained variants.",
|
|
1269
1269
|
"type": "registry:ui",
|
|
1270
1270
|
"meta": {
|
|
1271
1271
|
"library": "@ds-mo/ui",
|
|
@@ -1276,12 +1276,12 @@
|
|
|
1276
1276
|
"intent": {
|
|
1277
1277
|
"audience": "general",
|
|
1278
1278
|
"status": "stable",
|
|
1279
|
-
"summary": "Page-level title chrome with
|
|
1279
|
+
"summary": "Page-level title chrome with route identity, responsive ordered button, icon, menu, split, and overflow actions, plus explicit expanded, compact, or constrained variants.",
|
|
1280
1280
|
"useWhen": [
|
|
1281
1281
|
"A top-level page needs one h1 above its content.",
|
|
1282
1282
|
"A list or detail page has multiple route-level sections that belong in the inline active-section menu.",
|
|
1283
1283
|
"A detail page needs route ancestors in expanded presentation and a page-level Back action in compact chrome.",
|
|
1284
|
-
"A page needs
|
|
1284
|
+
"A page needs an ordered set of primary, secondary, icon, menu, split, or overflow commands."
|
|
1285
1285
|
],
|
|
1286
1286
|
"avoidWhen": [
|
|
1287
1287
|
"The title belongs to a PanelTools drawer or fullscreen pane; use PanelToolHeader through PanelTools instead.",
|
|
@@ -1325,15 +1325,17 @@
|
|
|
1325
1325
|
"Provide ordered breadcrumb items for deeper expanded paths and handle dsBreadcrumbSelect when native href navigation is not used; backLabel remains the single-parent expanded fallback.",
|
|
1326
1326
|
"Keep value synchronized with the current child route; dsSectionChange returns the selected section id.",
|
|
1327
1327
|
"Section and overflow triggers expose menu relationships and restore focus after selection or dismissal.",
|
|
1328
|
-
"Use one filled primary action in the page decision area and mark destructive overflow actions explicitly."
|
|
1328
|
+
"Use one filled primary action in the page decision area, give icon and menu triggers specific accessible names, and mark destructive overflow actions explicitly.",
|
|
1329
|
+
"Keep every top-level action and nested menu-choice id non-empty and unique; dsAction emits the selected id without adding a parent prefix."
|
|
1329
1330
|
],
|
|
1330
1331
|
"states": [
|
|
1331
1332
|
"Omitting Back, sections, primaryAction, and actions produces the top-level title-only header.",
|
|
1332
1333
|
"Two or more selectable sections add the inline section trigger; one section does not render a redundant menu.",
|
|
1333
1334
|
"Dividers in sections or actions create separate Menu groups without becoming selectable rows.",
|
|
1334
|
-
"The overflow trigger uses its bordered treatment whenever
|
|
1335
|
+
"The overflow trigger uses its bordered treatment whenever any visible action sits beside it; overflow-only presentations keep the trigger borderless.",
|
|
1336
|
+
"Ordered actions preserve authored order, but only the first eligible filled button, unfilled button, icon button, labeled menu button, or split button renders beside the title. Remaining commands use the shared overflow, whose rows are text-only. Menu choices and overflowed split commands become separate rows and share the same flat action event.",
|
|
1335
1337
|
"expanded renders the larger heading, optional description, inset divider, and a full-width caption breadcrumb row above the title. The breadcrumb begins after 32px top padding; the following title and right-side actions share one top alignment. Compact renders 48px chrome with the existing icon Back action; constrained uses compact chrome and moves an auto-collapse primary action into overflow.",
|
|
1336
|
-
"
|
|
1338
|
+
"The one visible ordered action collapses by default in constrained presentation. Use never for an exceptional action whose hierarchy must remain visible; explicit overflow actions never leave the shared menu.",
|
|
1337
1339
|
"showDivider=false removes the bottom divider when the surrounding page composition supplies the boundary; showCompactDivider can independently restore or remove that boundary in compact and constrained variants.",
|
|
1338
1340
|
"placement=shell-bar is reserved for ShellApp panel section navigation. It remains compact, omits description and breadcrumb presentation, and preserves applicable Back, section, primary, and overflow controls."
|
|
1339
1341
|
],
|
|
@@ -1343,15 +1345,16 @@
|
|
|
1343
1345
|
"ShellApp owns shell-bar placement and always selects compact presentation there; mobile continues to use MobileHeader.",
|
|
1344
1346
|
"When ShellPage owns BarTitle on a secondary desktop or tablet page, its expanded, compact, and constrained presentations all match that canvas; the separate MobileHeader component remains primary.",
|
|
1345
1347
|
"Compact titles use the shared compact-header geometry and md control inset so top-level headings align with BarNav and inline Back geometry aligns with PanelToolHeader. Long headings and section labels truncate independently while Back and action controls retain complete hit targets and accessible names.",
|
|
1346
|
-
"A never-collapse
|
|
1348
|
+
"A never-collapse action remains visible in constrained mode; the title and section label yield space first.",
|
|
1349
|
+
"On mobile, icon commands remain visible by default while labeled buttons, labeled menus, split buttons, and explicit overflow commands become one flat overflow menu derived by ShellApp."
|
|
1347
1350
|
],
|
|
1348
1351
|
"frameworkCaveats": {
|
|
1349
1352
|
"customElements": [
|
|
1350
|
-
"Assign breadcrumbs, sections, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
|
|
1353
|
+
"Assign breadcrumbs, sections, actionItems, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
|
|
1351
1354
|
"Handle dsBack for compact navigation and dsBreadcrumbSelect for application-owned expanded breadcrumb navigation, update value after dsSectionChange, and execute product commands from dsAction."
|
|
1352
1355
|
],
|
|
1353
1356
|
"react": [
|
|
1354
|
-
"Pass breadcrumb, section, and action arrays directly to DsBarTitle and keep value controlled from route state.",
|
|
1357
|
+
"Pass breadcrumb, section, and ordered action arrays directly to DsBarTitle and keep value controlled from route state.",
|
|
1355
1358
|
"Place DsBarTitle in DsShellPage with slot=header when automatic page behavior is required."
|
|
1356
1359
|
],
|
|
1357
1360
|
"angular": [
|
|
@@ -1375,6 +1378,10 @@
|
|
|
1375
1378
|
]
|
|
1376
1379
|
},
|
|
1377
1380
|
"props": {
|
|
1381
|
+
"actionItems": {
|
|
1382
|
+
"type": "BarTitleActionConfigItem[]",
|
|
1383
|
+
"required": false
|
|
1384
|
+
},
|
|
1378
1385
|
"actions": {
|
|
1379
1386
|
"type": "BarTitleActionItem[]",
|
|
1380
1387
|
"required": false
|
|
@@ -1789,7 +1796,8 @@
|
|
|
1789
1796
|
"useWhen": [
|
|
1790
1797
|
"The user initiates the single primary command in a local decision area.",
|
|
1791
1798
|
"An action's consequence requires a matching semantic treatment.",
|
|
1792
|
-
"A standalone compact primary action needs an icon-only presentation with an explicit accessible name."
|
|
1799
|
+
"A standalone compact primary action needs an icon-only presentation with an explicit accessible name.",
|
|
1800
|
+
"The primary command has closely related alternatives and needs split mode without losing its filled intent, contrast, variant, or loading treatment."
|
|
1793
1801
|
],
|
|
1794
1802
|
"avoidWhen": [
|
|
1795
1803
|
"Another filled action already exists in the same local decision area.",
|
|
@@ -1826,6 +1834,7 @@
|
|
|
1826
1834
|
],
|
|
1827
1835
|
"accessibility": [
|
|
1828
1836
|
"Provide an explicit accessible name for icon-only buttons.",
|
|
1837
|
+
"In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
|
|
1829
1838
|
"Set hasMenu when the action opens a Menu; it implies aria-haspopup of menu and renders the trailing chevron. Pass controls with the Menu id and expanded from the same open state given to Menu.",
|
|
1830
1839
|
"Use haspopup directly for a non-menu popup such as a dialog; that case gets no chevron.",
|
|
1831
1840
|
"Use inactive state only when the action must remain visible but unavailable.",
|
|
@@ -1849,7 +1858,9 @@
|
|
|
1849
1858
|
"Visible labels are emphasized by default. Set labelEmphasis to false when a composed surface deliberately needs the button label to match adjacent regular-weight control labels; this does not change the action hierarchy, foreground, icon, or interaction states.",
|
|
1850
1859
|
"ButtonFilled has no active, pressed, or selected state; a filled action is a command, not a toggle or a persistent selection.",
|
|
1851
1860
|
"An open popup is a transient pressed state instead. While expanded is true the pressed wash is held for the popup's complete rendered lifecycle and survives hover, so the trigger reads as held open without introducing a selected treatment.",
|
|
1852
|
-
"hasMenu supports only the label and icon-label variants. The chevron is what communicates that a menu will open, so an icon-only filled menu button would leave the affordance unstated."
|
|
1861
|
+
"hasMenu supports only the label and icon-label variants. The chevron is what communicates that a menu will open, so an icon-only filled menu button would leave the affordance unstated.",
|
|
1862
|
+
"Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
|
|
1863
|
+
"Split mode keeps both segments flush and uses a tertiary on-background separator. Rounded changes the shared outer radius without separating the segments."
|
|
1853
1864
|
],
|
|
1854
1865
|
"responsiveBehavior": [
|
|
1855
1866
|
"Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts."
|
|
@@ -1937,6 +1948,10 @@
|
|
|
1937
1948
|
"type": "boolean",
|
|
1938
1949
|
"required": false
|
|
1939
1950
|
},
|
|
1951
|
+
"menuAriaLabel": {
|
|
1952
|
+
"type": "string",
|
|
1953
|
+
"required": false
|
|
1954
|
+
},
|
|
1940
1955
|
"pressScale": {
|
|
1941
1956
|
"type": "boolean",
|
|
1942
1957
|
"required": false
|
|
@@ -1949,6 +1964,10 @@
|
|
|
1949
1964
|
"type": "ButtonFilledSize",
|
|
1950
1965
|
"required": false
|
|
1951
1966
|
},
|
|
1967
|
+
"split": {
|
|
1968
|
+
"type": "boolean",
|
|
1969
|
+
"required": false
|
|
1970
|
+
},
|
|
1952
1971
|
"type": {
|
|
1953
1972
|
"type": "'button' | 'submit' | 'reset'",
|
|
1954
1973
|
"required": false
|
|
@@ -1966,6 +1985,10 @@
|
|
|
1966
1985
|
{
|
|
1967
1986
|
"name": "dsClick",
|
|
1968
1987
|
"detail": "MouseEvent"
|
|
1988
|
+
},
|
|
1989
|
+
{
|
|
1990
|
+
"name": "dsMenuClick",
|
|
1991
|
+
"detail": "MouseEvent"
|
|
1969
1992
|
}
|
|
1970
1993
|
],
|
|
1971
1994
|
"slots": [],
|
|
@@ -2007,7 +2030,8 @@
|
|
|
2007
2030
|
"A secondary command accompanies the single filled primary action in a local decision area.",
|
|
2008
2031
|
"A toolbar, tool rail, overflow area, or shell region needs a compact icon action.",
|
|
2009
2032
|
"A command represents a persistent toggle or mode whose active state remains meaningful after activation.",
|
|
2010
|
-
"A row, card, or toolbar needs an overflow or more-options menu; this is the only component that carries that role."
|
|
2033
|
+
"A row, card, or toolbar needs an overflow or more-options menu; this is the only component that carries that role.",
|
|
2034
|
+
"A secondary command has closely related alternatives and needs split mode without losing its border, surface, active, variant, or loading treatment."
|
|
2011
2035
|
],
|
|
2012
2036
|
"avoidWhen": [
|
|
2013
2037
|
"The command is the single primary action in a local decision area; use ButtonFilled instead.",
|
|
@@ -2042,6 +2066,7 @@
|
|
|
2042
2066
|
],
|
|
2043
2067
|
"accessibility": [
|
|
2044
2068
|
"Provide an explicit accessible name for every icon-only action.",
|
|
2069
|
+
"In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
|
|
2045
2070
|
"Set hasMenu when the button triggers a Menu; it implies aria-haspopup of menu. Pass controls with the Menu id and expanded from the same open state given to Menu. Expanded popup triggers hold only the pressed wash while open, without changing their resting foreground; expanded disclosure controls without popup semantics retain the normal resting appearance.",
|
|
2046
2071
|
"Give an icon-only menu button an accessible name that states the role, such as More options or Customize table, because no visible label or chevron carries it.",
|
|
2047
2072
|
"Use haspopup directly for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
|
|
@@ -2067,7 +2092,9 @@
|
|
|
2067
2092
|
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
|
|
2068
2093
|
"hasMenu covers two distinct menu-button shapes and the variant selects between them. With label or icon-label the action has a menu, and a trailing chevron carries the affordance. With icon the button is a menu and no chevron is added.",
|
|
2069
2094
|
"Because the icon-only shape has no chevron, its glyph must convey the menu on its own. Use Ellipses for a generic more-options or overflow control. Use a specific icon when the menu has a named purpose, such as Table for Customize table.",
|
|
2070
|
-
"An open popup is a transient pressed state rather than a selected one. While expanded is true and haspopup or hasMenu identifies a popup, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral."
|
|
2095
|
+
"An open popup is a transient pressed state rather than a selected one. While expanded is true and haspopup or hasMenu identifies a popup, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral.",
|
|
2096
|
+
"Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
|
|
2097
|
+
"Split mode keeps both segments flush and uses a tertiary surface-aware separator. Bordered mode also preserves the shared outer border; borderless mode limits the separator to the content line height."
|
|
2071
2098
|
],
|
|
2072
2099
|
"responsiveBehavior": [
|
|
2073
2100
|
"The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants. Table caption Customize is one such layout: below 900px it uses the icon shape while keeping the same neutral resting foreground regardless of the controlled column configuration.",
|
|
@@ -2170,6 +2197,10 @@
|
|
|
2170
2197
|
"type": "boolean",
|
|
2171
2198
|
"required": false
|
|
2172
2199
|
},
|
|
2200
|
+
"menuAriaLabel": {
|
|
2201
|
+
"type": "string",
|
|
2202
|
+
"required": false
|
|
2203
|
+
},
|
|
2173
2204
|
"pressScale": {
|
|
2174
2205
|
"type": "boolean",
|
|
2175
2206
|
"required": false
|
|
@@ -2186,6 +2217,10 @@
|
|
|
2186
2217
|
"type": "ButtonUnfilledSize",
|
|
2187
2218
|
"required": false
|
|
2188
2219
|
},
|
|
2220
|
+
"split": {
|
|
2221
|
+
"type": "boolean",
|
|
2222
|
+
"required": false
|
|
2223
|
+
},
|
|
2189
2224
|
"type": {
|
|
2190
2225
|
"type": "'button' | 'submit' | 'reset'",
|
|
2191
2226
|
"required": false
|
|
@@ -2207,6 +2242,10 @@
|
|
|
2207
2242
|
{
|
|
2208
2243
|
"name": "dsClick",
|
|
2209
2244
|
"detail": "MouseEvent"
|
|
2245
|
+
},
|
|
2246
|
+
{
|
|
2247
|
+
"name": "dsMenuClick",
|
|
2248
|
+
"detail": "MouseEvent"
|
|
2210
2249
|
}
|
|
2211
2250
|
],
|
|
2212
2251
|
"slots": [],
|
|
@@ -5411,6 +5450,8 @@
|
|
|
5411
5450
|
"Wheel, touch, keyboard navigation, selection, and transcript interaction release automatic following; Scroll to latest explicitly restores it.",
|
|
5412
5451
|
"A newly appended outgoing Message marked scroll-anchor starts a turn near the top with the configurable previous-turn peek; mutations inside existing messages and prepended history do not re-anchor.",
|
|
5413
5452
|
"Opening saved history, message jumps, and prepended history preserve deliberate position.",
|
|
5453
|
+
"When a persistent scroller receives a cleared or wholly replaced transcript, it releases internal references to the previous message elements, invalidates their pending anchor work, and treats the replacement as a new baseline at defaultPosition rather than as an appended turn.",
|
|
5454
|
+
"MessageScroller bounds its internal element tracking to the currently rendered transcript. The application still owns transcript data and must cap or window the rendered message collection when conversation history can grow without limit.",
|
|
5414
5455
|
"The scroll-to-latest action is absent at the live edge, appears only after the reader moves away, and disappears again after returning to the newest message.",
|
|
5415
5456
|
"Scroll to latest uses the shared md control-elevation wrapper with a pointer-transparent top highlight, preserving its transparent backdrop blur and borderless unfilled action while the press-scale modifier moves the complete elevated surface.",
|
|
5416
5457
|
"Place a pending human-input surface in interaction and a composer container with 8px padding on every side in overlay; the shared scroll-overlay controller measures them as one stack, tracks every growth step, reserves matching transcript clearance, begins the fade before the stack, and keeps scroll-to-latest above it."
|
|
@@ -6947,7 +6988,7 @@
|
|
|
6947
6988
|
{
|
|
6948
6989
|
"name": "panel-tools",
|
|
6949
6990
|
"title": "PanelTools",
|
|
6950
|
-
"description": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools, normally assembled by managed ShellApp through ShellTools.",
|
|
6991
|
+
"description": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools and governed application-owned rail accessories, normally assembled by managed ShellApp through ShellTools.",
|
|
6951
6992
|
"type": "registry:ui",
|
|
6952
6993
|
"meta": {
|
|
6953
6994
|
"library": "@ds-mo/ui",
|
|
@@ -6958,18 +6999,20 @@
|
|
|
6958
6999
|
"intent": {
|
|
6959
7000
|
"audience": "specialized",
|
|
6960
7001
|
"status": "stable",
|
|
6961
|
-
"summary": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools, normally assembled by managed ShellApp through ShellTools.",
|
|
7002
|
+
"summary": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools and governed application-owned rail accessories, normally assembled by managed ShellApp through ShellTools.",
|
|
6962
7003
|
"useWhen": [
|
|
6963
7004
|
"An advanced slotted ShellApp needs the desktop and tablet global-tools primitive directly.",
|
|
6964
7005
|
"Users need to move between application-wide utilities without losing each tool's in-progress state.",
|
|
6965
|
-
"Search, AI conversations, user messages, review stacks, notifications, or help content must remain available alongside route content."
|
|
7006
|
+
"Search, AI conversations, user messages, review stacks, notifications, or help content must remain available alongside route content.",
|
|
7007
|
+
"A persistent desktop or tablet rail needs a generic direct-action status surface or shortcut that must not become a tool drawer."
|
|
6966
7008
|
],
|
|
6967
7009
|
"avoidWhen": [
|
|
6968
7010
|
"The action is specific to the current page or selected content rather than globally available across the application.",
|
|
6969
7011
|
"The item navigates to a primary or secondary route; use PanelNav or BarNav instead.",
|
|
6970
7012
|
"Tool definitions lack stable ids, visible labels, explicit rail placement, or application-owned view content.",
|
|
6971
7013
|
"Building the mobile tools experience; use ShellTools or managed ShellApp.",
|
|
6972
|
-
"PanelTools would be mounted outside the application's single ShellApp."
|
|
7014
|
+
"PanelTools would be mounted outside the application's single ShellApp.",
|
|
7015
|
+
"An application wants unrestricted rail markup that bypasses PanelTools ordering, geometry, focus, overflow, or action semantics."
|
|
6973
7016
|
],
|
|
6974
7017
|
"alternatives": [
|
|
6975
7018
|
{
|
|
@@ -7003,7 +7046,9 @@
|
|
|
7003
7046
|
"When the shortcut rail overflows, its labeled body becomes a keyboard-focusable scroll region without changing the rail action order.",
|
|
7004
7047
|
"Do not trigger global shortcuts while focus is in an editable control.",
|
|
7005
7048
|
"Use notification dots only as supplemental unread or new-content status and never as the sole status indication.",
|
|
7006
|
-
"Explain temporarily inactive tools through an accessible label or adjacent product guidance; omit unauthorized tools entirely."
|
|
7049
|
+
"Explain temporarily inactive tools through an accessible label or adjacent product guidance; omit unauthorized tools entirely.",
|
|
7050
|
+
"Give each interactive accessory a localized action label. Every transient surface requires short status text so its active or positive state is not color-only; shortcut notification dots remain supplemental and decorative accessory boundaries remain hidden from assistive technology.",
|
|
7051
|
+
"Accessory primary and optional secondary actions participate in the same visual and roving keyboard order as tool actions."
|
|
7007
7052
|
],
|
|
7008
7053
|
"states": [
|
|
7009
7054
|
"Every tool has a stable explicit id and accessible label. The application filters definitions for authorization and entitlement.",
|
|
@@ -7021,6 +7066,11 @@
|
|
|
7021
7066
|
"Tool view roots stay transparent so ShellApp's chrome wash remains visible; only explicitly designed child surfaces introduce a fill.",
|
|
7022
7067
|
"Tools with search compose ds-panel-tool-search immediately below the shared header. Its 48px row always contains the md search control and must not be reduced to sm or xs.",
|
|
7023
7068
|
"If an active optional tool becomes unavailable, PanelTools closes the drawer, clears activeTool, and emits its deselection.",
|
|
7069
|
+
"Application-owned accessories are direct intents rather than tools. Activating one never selects a tool, changes activeTool, opens or closes the drawer, or changes mounted tool-view identity.",
|
|
7070
|
+
"Accessory definitions use stable ids, explicit regions, and explicit order. The governed transient recipe is a 32px by 64px half-radius bold surface with 4px padding: a bordered 24px primary visual above an optional unbordered rounded 24px secondary icon action, separated by 8px. It requires accessible status text, supports active-brand or positive semantic tone, and never renders a notification dot.",
|
|
7071
|
+
"The governed shortcut recipe is one standard-height action: a transparent 24px initial orb with a secondary token border centered in a 32px sizing frame, one or two caption-emphasis initials, an optional ds-badge notification dot aligned exactly with standard tool dots, circular hover and press paint, and no selected state or secondary control.",
|
|
7072
|
+
"When transient status and shortcut groups coexist in one rail region, assign explicit orders that place the transient status first, then a decorative divider, then the shortcuts. Do not infer this grouping from application-specific ids.",
|
|
7073
|
+
"Adding, removing, or reordering accessories preserves a surviving focused action when possible and moves focus to the nearest surviving rail action when the focused accessory is removed.",
|
|
7024
7074
|
"Use isInactive only for a temporarily unavailable visible tool; omit tools the user is not authorized to access.",
|
|
7025
7075
|
"Rail actions disable physical press scaling so notification-dot halos remain aligned to the shell gradient; hover and pressed washes continue to paint above the dot and halo.",
|
|
7026
7076
|
"Rail tooltips are shell-owned and position against the viewport so the narrow tools-lane collision boundary cannot clamp them beyond the viewport edge.",
|
|
@@ -7033,22 +7083,23 @@
|
|
|
7033
7083
|
"The open drawer reduces main-content width and uses --dimension-panel-width-xs (300px) on every supported desktop and tablet viewport.",
|
|
7034
7084
|
"ShellApp owns the fixed drawer-width variable; consumers must not hardcode alternate drawer widths.",
|
|
7035
7085
|
"Below 768px, do not reuse PanelTools directly; ShellTools and managed ShellApp present the same persistent tool owners through mobile chrome.",
|
|
7086
|
+
"Rail accessories are intentionally desktop and tablet only. Consuming applications provide equivalent persistent mobile status through ShellApp's top banner or status region rather than converting an accessory into a tool view.",
|
|
7036
7087
|
"Keep named-slot content mounted while tools switch or the drawer closes so users can return to in-progress global work.",
|
|
7037
7088
|
"Conversation products may use fullscreenHeaderMode split for a 300px history rail beside a flexible detail pane, each with its own canonical header; the application owns that internal split layout.",
|
|
7038
7089
|
"Use fixed drawer widths for now; do not add user resizing or width persistence."
|
|
7039
7090
|
],
|
|
7040
7091
|
"frameworkCaveats": {
|
|
7041
7092
|
"customElements": [
|
|
7042
|
-
"Assign items and headers as JavaScript properties and replace their references when collections change.",
|
|
7093
|
+
"Assign items, accessories, and headers as JavaScript properties and replace their references when collections change.",
|
|
7043
7094
|
"Assign headers as a JavaScript property and replace its object identity whenever an active tool changes title, depth, or actions.",
|
|
7044
7095
|
"Keep PanelTools mounted at ShellApp scope across route changes and provide each product through its matching named slot."
|
|
7045
7096
|
],
|
|
7046
7097
|
"react": [
|
|
7047
|
-
"Pass
|
|
7098
|
+
"Pass stable explicitly ordered tool and accessory collections through the generated React wrapper and keep named-slot product content mounted at ShellApp scope.",
|
|
7048
7099
|
"Use storageKey only for same-browser last-tool continuity; do not persist the open drawer."
|
|
7049
7100
|
],
|
|
7050
7101
|
"angular": [
|
|
7051
|
-
"Import DsPanelTools from @ds-mo/ui/angular/ds-panel-tools and bind
|
|
7102
|
+
"Import DsPanelTools from @ds-mo/ui/angular/ds-panel-tools and bind structured tool and accessory collections as properties.",
|
|
7052
7103
|
"Bind headers as a replaced object and route dsHeaderBack and dsHeaderAction to the active tool owner.",
|
|
7053
7104
|
"Keep the component in the persistent shell layout rather than recreating it in routed page components."
|
|
7054
7105
|
]
|
|
@@ -7069,6 +7120,10 @@
|
|
|
7069
7120
|
]
|
|
7070
7121
|
},
|
|
7071
7122
|
"props": {
|
|
7123
|
+
"accessories": {
|
|
7124
|
+
"type": "PanelToolsRailAccessory[]",
|
|
7125
|
+
"required": false
|
|
7126
|
+
},
|
|
7072
7127
|
"activeTool": {
|
|
7073
7128
|
"type": "PanelToolsToolId | ''",
|
|
7074
7129
|
"required": false
|
|
@@ -7127,6 +7182,10 @@
|
|
|
7127
7182
|
"name": "dsPresentationChange",
|
|
7128
7183
|
"detail": "{\n presentation: 'drawer' | 'fullscreen';\n }"
|
|
7129
7184
|
},
|
|
7185
|
+
{
|
|
7186
|
+
"name": "dsRailAccessoryAction",
|
|
7187
|
+
"detail": "PanelToolsRailAccessoryActionDetail"
|
|
7188
|
+
},
|
|
7130
7189
|
{
|
|
7131
7190
|
"name": "dsToolChange",
|
|
7132
7191
|
"detail": "{\n id: PanelToolsToolId;\n selected: boolean;\n }"
|
|
@@ -7142,11 +7201,16 @@
|
|
|
7142
7201
|
},
|
|
7143
7202
|
"dependencies": [
|
|
7144
7203
|
"@ds-mo/ui",
|
|
7145
|
-
"@ds-mo/tokens"
|
|
7204
|
+
"@ds-mo/tokens",
|
|
7205
|
+
"@ds-mo/icons"
|
|
7146
7206
|
],
|
|
7147
7207
|
"registryDependencies": [
|
|
7208
|
+
"badge",
|
|
7148
7209
|
"button-unfilled",
|
|
7210
|
+
"divider",
|
|
7211
|
+
"icon",
|
|
7149
7212
|
"panel-tool-header",
|
|
7213
|
+
"text",
|
|
7150
7214
|
"tooltip"
|
|
7151
7215
|
]
|
|
7152
7216
|
},
|
|
@@ -7865,6 +7929,8 @@
|
|
|
7865
7929
|
"In panel mode, supply the same route sections as children on their PanelNav parent and handle dsNavChildSelect as structured parent, child, and href navigation intent.",
|
|
7866
7930
|
"The application supplies each routed content owner and tool view once. ShellApp changes visibility, inert state, and presentation without recreating those nodes.",
|
|
7867
7931
|
"The optional banner slot accepts one application-owned ds-banner above the complete shell row. The application owns its open state, orientation for the current shell capacity, action consequences, dismissal persistence, and resolution when several messages compete.",
|
|
7932
|
+
"Managed tools may include governed desktop and tablet rail accessories for transient status or direct shortcuts. ShellApp forwards their intents without changing the selected tool, drawer state, or mounted tool views.",
|
|
7933
|
+
"Consuming applications own accessory state, labels, timers, permissions, navigation, and action consequences; ShellApp owns only managed forwarding and responsive placement.",
|
|
7868
7934
|
"Use composition=slotted only for advanced application architectures that intentionally own all lower-level chrome wiring.",
|
|
7869
7935
|
"Set gradientPreset to the single resolved global chrome preference: neutral by default, none for solid chrome, or cool, neutral, warm, and fresh for token-based washes.",
|
|
7870
7936
|
"The application owns gradient preference persistence, cross-tab synchronization, and server or account precedence; ShellApp owns rendering the resolved preset across authenticated routes.",
|
|
@@ -7872,6 +7938,7 @@
|
|
|
7872
7938
|
"Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
|
|
7873
7939
|
"Replace navigation and pageChrome together from one completed route state.",
|
|
7874
7940
|
"When pageChrome.showBack marks a detail depth, mobile chrome keeps the page heading as its identity and presents only local subsections; peer route tabs remain in desktop BarNav rather than replacing the detail heading.",
|
|
7941
|
+
"Route-owned ordered page actions drive both BarTitle and MobileHeader. ShellApp forwards one flat page-action id and owns the derived mobile overflow menu so routes do not duplicate menu state or choices.",
|
|
7875
7942
|
"Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
|
|
7876
7943
|
"Route-owned pageChrome independently selects ShellPage contentInset, page-header seams, scroll compaction, expanded and compact header-divider visibility, and contentSurface. ShellApp forwards them while resolving whether desktop title geometry is page-local or shell-bar-owned.",
|
|
7877
7944
|
"The application filters unauthorized destinations, sections, and tools before passing them into shell components."
|
|
@@ -7891,10 +7958,12 @@
|
|
|
7891
7958
|
"When the application enables viewport-fit=cover, ShellApp reserves the shared top safe-area inset once for the complete mobile stage; nested routed, sheet, and tool headers must not add a second top inset.",
|
|
7892
7959
|
"A slotted Banner remains below the top safe-area inset and above routed, navigation, fullscreen-tool, and mobile global-surface presentations.",
|
|
7893
7960
|
"Mobile global surfaces conceal and inert the routed workspace without unmounting it, preserving nested routes and scroll state.",
|
|
7961
|
+
"Managed rail accessories are intentionally omitted below 768px. Applications that need equivalent persistent mobile status provide it through the top banner or status region; ShellApp does not convert rail accessories into mobile tool views.",
|
|
7894
7962
|
"Keep PanelNav width, BarNav height, PanelTools chrome, and main-content origin stable except during intentional responsive or collapse transitions.",
|
|
7895
7963
|
"The routed content cell and tools cell expose separate anchored-overlay collision boundaries, so top-layer menus and tooltips remain above local clipping without crossing into neighboring shell lanes. Full-screen modal overlays remain viewport-owned.",
|
|
7896
7964
|
"Paper texture chrome is desktop/tablet-only and follows the fixed viewport phase of the shell chrome; mobile remains a solid primary stage.",
|
|
7897
7965
|
"Managed page-header capacity follows only the fixed shell breakpoint: roomy on desktop and compact on tablet. Opening PanelTools does not compact or constrain BarTitle.",
|
|
7966
|
+
"Mobile keeps at most the first eligible ordered icon command visible and moves labeled buttons, menu choices, split actions, and explicit overflow commands into one shell-owned text-only page-actions menu.",
|
|
7898
7967
|
"The bottom bar remains visible at all route and tool depths in the foundation release."
|
|
7899
7968
|
],
|
|
7900
7969
|
"frameworkCaveats": {
|
|
@@ -8025,6 +8094,10 @@
|
|
|
8025
8094
|
"name": "dsPresentationChange",
|
|
8026
8095
|
"detail": "{ presentation: 'drawer' | 'fullscreen' }"
|
|
8027
8096
|
},
|
|
8097
|
+
{
|
|
8098
|
+
"name": "dsRailAccessoryAction",
|
|
8099
|
+
"detail": "PanelToolsRailAccessoryActionDetail"
|
|
8100
|
+
},
|
|
8028
8101
|
{
|
|
8029
8102
|
"name": "dsResponsiveModeChange",
|
|
8030
8103
|
"detail": "{ mode: ShellResponsiveMode }"
|
|
@@ -8057,7 +8130,9 @@
|
|
|
8057
8130
|
"registryDependencies": [
|
|
8058
8131
|
"bar-nav",
|
|
8059
8132
|
"bar-title",
|
|
8133
|
+
"button-filled",
|
|
8060
8134
|
"button-unfilled",
|
|
8135
|
+
"menu",
|
|
8061
8136
|
"mobile-bar-nav",
|
|
8062
8137
|
"mobile-header",
|
|
8063
8138
|
"mobile-sheet-nav",
|
|
@@ -8281,21 +8356,24 @@
|
|
|
8281
8356
|
"accessibility": [
|
|
8282
8357
|
"Only the active mobile tool view participates in focus or the accessibility tree.",
|
|
8283
8358
|
"Header Back and application-owned header actions preserve the PanelTools event contract.",
|
|
8284
|
-
"A direct Activity destination renders its own named tool view; an explicitly grouped Inbox uses a named label-only TabGroup."
|
|
8359
|
+
"A direct Activity destination renders its own named tool view; an explicitly grouped Inbox uses a named label-only TabGroup.",
|
|
8360
|
+
"Desktop and tablet rail accessories retain PanelTools-owned labels, focus order, decorative-boundary semantics, and direct-action events."
|
|
8285
8361
|
],
|
|
8286
8362
|
"states": [
|
|
8287
8363
|
"The application owns open and activeTool and replaces headers when tool depth changes.",
|
|
8288
8364
|
"Items with mobileDestination inbox map to one mobile Inbox destination while retaining the actual active tool id; the canonical recipe exposes Activity directly and keeps Inbox grouping opt-in.",
|
|
8289
8365
|
"Stable tool ids own named slots; label, order, rail placement, shortcut, and mobile destination are explicit item data.",
|
|
8366
|
+
"Application-owned rail accessories are forwarded unchanged to PanelTools on desktop and tablet and remain independent from activeTool and open.",
|
|
8290
8367
|
"Switching responsive mode must not recreate application-owned slotted product elements."
|
|
8291
8368
|
],
|
|
8292
8369
|
"responsiveBehavior": [
|
|
8293
8370
|
"Desktop and tablet compose PanelTools-compatible rail and drawer chrome.",
|
|
8294
|
-
"Mobile renders one centered MobileHeader for every direct tool; explicitly grouped Inbox tools use the large segmented section control."
|
|
8371
|
+
"Mobile renders one centered MobileHeader for every direct tool; explicitly grouped Inbox tools use the large segmented section control.",
|
|
8372
|
+
"Mobile intentionally omits desktop and tablet rail accessories instead of promoting them into tool views. Applications provide an equivalent persistent mobile status surface through ShellApp's top banner or status region."
|
|
8295
8373
|
],
|
|
8296
8374
|
"frameworkCaveats": {
|
|
8297
8375
|
"customElements": [
|
|
8298
|
-
"Assign items and headers as JavaScript properties and place each persistent owner in its named *-view slot."
|
|
8376
|
+
"Assign items, accessories, and headers as JavaScript properties and place each persistent owner in its named *-view slot."
|
|
8299
8377
|
],
|
|
8300
8378
|
"react": [
|
|
8301
8379
|
"Keep stable keyed product owner elements in the generated wrapper's named slots."
|
|
@@ -8316,6 +8394,10 @@
|
|
|
8316
8394
|
]
|
|
8317
8395
|
},
|
|
8318
8396
|
"props": {
|
|
8397
|
+
"accessories": {
|
|
8398
|
+
"type": "PanelToolsRailAccessory[]",
|
|
8399
|
+
"required": false
|
|
8400
|
+
},
|
|
8319
8401
|
"activeTool": {
|
|
8320
8402
|
"type": "PanelToolsToolId | ''",
|
|
8321
8403
|
"required": false
|
|
@@ -8378,6 +8460,10 @@
|
|
|
8378
8460
|
"name": "dsPresentationChange",
|
|
8379
8461
|
"detail": "{\n presentation: 'drawer' | 'fullscreen';\n }"
|
|
8380
8462
|
},
|
|
8463
|
+
{
|
|
8464
|
+
"name": "dsRailAccessoryAction",
|
|
8465
|
+
"detail": "PanelToolsRailAccessoryActionDetail"
|
|
8466
|
+
},
|
|
8381
8467
|
{
|
|
8382
8468
|
"name": "dsToolChange",
|
|
8383
8469
|
"detail": "{\n id: PanelToolsToolId;\n selected: boolean;\n }"
|
|
@@ -941,7 +941,7 @@
|
|
|
941
941
|
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: boundary, options, sections.",
|
|
942
942
|
"peerDependencies": {
|
|
943
943
|
"required": [
|
|
944
|
-
"@ds-mo/tokens ^6.5.
|
|
944
|
+
"@ds-mo/tokens ^6.5.1",
|
|
945
945
|
"@ds-mo/icons ^7.0.0"
|
|
946
946
|
],
|
|
947
947
|
"frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
|