@ds-mo/ui 14.22.1 → 14.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +5 -1
  3. package/dist/agent.json +56 -13
  4. package/dist/angular/ds-panel-tools.d.ts +7 -1
  5. package/dist/angular/ds-panel-tools.js +7 -4
  6. package/dist/angular/ds-shell-app.d.ts +7 -1
  7. package/dist/angular/ds-shell-app.js +5 -2
  8. package/dist/angular/ds-shell-tools.d.ts +4 -1
  9. package/dist/angular/ds-shell-tools.js +7 -4
  10. package/dist/components/ds-message-scroller.js +1 -1
  11. package/dist/components/ds-message-scroller.js.map +1 -1
  12. package/dist/components/ds-panel-nav.js +1 -1
  13. package/dist/components/ds-panel-tools.js +1 -1
  14. package/dist/components/ds-shell-app.js +1 -1
  15. package/dist/components/ds-shell-app.js.map +1 -1
  16. package/dist/components/ds-shell-tools.js +1 -1
  17. package/dist/components/p-Bd-Kpekh.js +2 -0
  18. package/dist/components/p-Bd-Kpekh.js.map +1 -0
  19. package/dist/components/{p-DrVA5L25.js → p-BmqnrfTf.js} +2 -2
  20. package/dist/components/p-BmqnrfTf.js.map +1 -0
  21. package/dist/components/p-C13fWp2x.js +2 -0
  22. package/dist/components/p-C13fWp2x.js.map +1 -0
  23. package/dist/docs/components.json +178 -3
  24. package/dist/lib/components/PanelTools/panel-tools-types.d.ts +76 -1
  25. package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
  26. package/dist/lib/shell/index.d.ts +1 -1
  27. package/dist/lib/shell/index.js.map +2 -2
  28. package/dist/mcp-data/registry/agent-activity.json +1 -1
  29. package/dist/mcp-data/registry/agent-questionnaire.json +1 -1
  30. package/dist/mcp-data/registry/agent-response.json +1 -1
  31. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  32. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  33. package/dist/mcp-data/registry/attachment-list.json +1 -1
  34. package/dist/mcp-data/registry/avatar.json +1 -1
  35. package/dist/mcp-data/registry/badge.json +1 -1
  36. package/dist/mcp-data/registry/banner.json +1 -1
  37. package/dist/mcp-data/registry/bar-action.json +1 -1
  38. package/dist/mcp-data/registry/bar-nav.json +1 -1
  39. package/dist/mcp-data/registry/bar-title.json +1 -1
  40. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  41. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  42. package/dist/mcp-data/registry/button-filled.json +1 -1
  43. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  44. package/dist/mcp-data/registry/card-chart.json +1 -1
  45. package/dist/mcp-data/registry/card-overview.json +1 -1
  46. package/dist/mcp-data/registry/card-setting.json +1 -1
  47. package/dist/mcp-data/registry/chart-legend.json +1 -1
  48. package/dist/mcp-data/registry/chart.json +1 -1
  49. package/dist/mcp-data/registry/checkbox.json +1 -1
  50. package/dist/mcp-data/registry/chip.json +1 -1
  51. package/dist/mcp-data/registry/code-block.json +1 -1
  52. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  53. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  54. package/dist/mcp-data/registry/conversation-list.json +1 -1
  55. package/dist/mcp-data/registry/divider.json +1 -1
  56. package/dist/mcp-data/registry/empty-state.json +1 -1
  57. package/dist/mcp-data/registry/field.json +1 -1
  58. package/dist/mcp-data/registry/filter-menu.json +1 -1
  59. package/dist/mcp-data/registry/icon.json +1 -1
  60. package/dist/mcp-data/registry/input.json +1 -1
  61. package/dist/mcp-data/registry/loader.json +1 -1
  62. package/dist/mcp-data/registry/markdown.json +1 -1
  63. package/dist/mcp-data/registry/menu.json +1 -1
  64. package/dist/mcp-data/registry/message-actions.json +1 -1
  65. package/dist/mcp-data/registry/message-bubble.json +1 -1
  66. package/dist/mcp-data/registry/message-composer.json +1 -1
  67. package/dist/mcp-data/registry/message-scroller.json +9 -2
  68. package/dist/mcp-data/registry/message.json +1 -1
  69. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  70. package/dist/mcp-data/registry/mobile-header.json +1 -1
  71. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  72. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  73. package/dist/mcp-data/registry/modal.json +1 -1
  74. package/dist/mcp-data/registry/pagination.json +1 -1
  75. package/dist/mcp-data/registry/panel-nav.json +2 -2
  76. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  77. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  78. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  79. package/dist/mcp-data/registry/panel-tools.json +62 -15
  80. package/dist/mcp-data/registry/paper-texture.json +1 -1
  81. package/dist/mcp-data/registry/radio.json +1 -1
  82. package/dist/mcp-data/registry/registry.json +56 -13
  83. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  84. package/dist/mcp-data/registry/select.json +1 -1
  85. package/dist/mcp-data/registry/shell-app.json +22 -3
  86. package/dist/mcp-data/registry/shell-page.json +1 -1
  87. package/dist/mcp-data/registry/shell-tools.json +39 -6
  88. package/dist/mcp-data/registry/skeleton.json +1 -1
  89. package/dist/mcp-data/registry/slider.json +1 -1
  90. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  91. package/dist/mcp-data/registry/switch.json +1 -1
  92. package/dist/mcp-data/registry/tab-group.json +1 -1
  93. package/dist/mcp-data/registry/table-filter.json +1 -1
  94. package/dist/mcp-data/registry/table-group.json +1 -1
  95. package/dist/mcp-data/registry/table-saved-views.json +1 -1
  96. package/dist/mcp-data/registry/table-search.json +1 -1
  97. package/dist/mcp-data/registry/table-sort.json +1 -1
  98. package/dist/mcp-data/registry/table-toolbar.json +1 -1
  99. package/dist/mcp-data/registry/table.json +1 -1
  100. package/dist/mcp-data/registry/tag.json +1 -1
  101. package/dist/mcp-data/registry/text.json +1 -1
  102. package/dist/mcp-data/registry/toast.json +1 -1
  103. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  104. package/dist/mcp-data/registry/tooltip.json +1 -1
  105. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  106. package/dist/react/ds-panel-tools.d.ts +2 -1
  107. package/dist/react/ds-panel-tools.js +1 -0
  108. package/dist/react/ds-shell-app.d.ts +2 -1
  109. package/dist/react/ds-shell-app.js +1 -0
  110. package/dist/react/ds-shell-tools.d.ts +2 -1
  111. package/dist/react/ds-shell-tools.js +2 -1
  112. package/dist/types/components/MessageScroller/MessageScroller.d.ts +14 -0
  113. package/dist/types/components/MessageScroller/message-scroller-transcript.d.ts +9 -0
  114. package/dist/types/components/PanelNav/PanelNav.d.ts +6 -1
  115. package/dist/types/components/PanelTools/PanelTools.d.ts +17 -1
  116. package/dist/types/components/PanelTools/index.d.ts +1 -1
  117. package/dist/types/components/PanelTools/panel-tools-types.d.ts +76 -1
  118. package/dist/types/components/PanelTools/panel-tools-utils.d.ts +17 -1
  119. package/dist/types/components/ShellApp/ShellApp.d.ts +4 -1
  120. package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
  121. package/dist/types/components/ShellTools/ShellTools.d.ts +5 -1
  122. package/dist/types/components/ShellTools/index.d.ts +1 -1
  123. package/dist/types/components.d.ts +34 -2
  124. package/dist/types/shell/index.d.ts +1 -1
  125. package/dist/vue/ds-panel-tools.js +3 -0
  126. package/dist/vue/ds-shell-app.js +2 -0
  127. package/dist/vue/ds-shell-tools.js +5 -2
  128. package/package.json +3 -3
  129. package/dist/components/p-COFw_fcj.js +0 -2
  130. package/dist/components/p-COFw_fcj.js.map +0 -1
  131. package/dist/components/p-CvHrCyuz.js +0 -2
  132. package/dist/components/p-CvHrCyuz.js.map +0 -1
  133. package/dist/components/p-DrVA5L25.js.map +0 -1
@@ -1 +1 @@
1
- {"schemaVersion":1,"package":"@ds-mo/ui","version":"14.22.1","components":77,"digest":"f3e3c27279561f0bc5f50e768da667395a20dd5d09a88fbdd0526d2eacc0ea3d","completedAt":"2026-08-30T01:47:44.823Z"}
1
+ {"schemaVersion":1,"package":"@ds-mo/ui","version":"14.23.0","components":77,"digest":"2db305df550d826a65e3755c57cc2404e35f4ddd1ea9740d06ac41399959b27d","completedAt":"2026-08-31T23:09:00.789Z"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "14.22.1",
4
+ "packageVersion": "14.23.0",
5
5
  "kind": "patterns",
6
6
  "entries": [
7
7
  {
@@ -204,6 +204,8 @@
204
204
  "ShellApp emits stable navigation and page intent events; it never mutates router history.",
205
205
  "ShellApp owns responsive mode, PanelNav presentation, tool open state, active tool, direct mobile destinations, optional Inbox grouping, Menu state, fullscreen presentation, focus restoration, and breakpoint state preservation.",
206
206
  "Tool products and routed content are instantiated once by the application in named tool-view and default slots; ShellApp changes presentation without recreating those owners.",
207
+ "The application owns rail accessory state, labels, timers, permissions, navigation, and action consequences. ShellApp forwards governed desktop and tablet accessory definitions and intents without changing tool selection or drawer state.",
208
+ "When a transient status group and shortcut group coexist in the same rail region, the application assigns explicit orders for status, decorative boundary, then shortcuts; component behavior never infers grouping from product-specific ids.",
207
209
  "The application owns account menus, tool product data, page actions, and the consequences of every emitted intent event.",
208
210
  "The application owns viewport and theme-color metadata, the dynamic-viewport framework root, and containing document overscroll so body never becomes a second application scroller; ShellApp fills that owner and keeps its existing internal scrollers.",
209
211
  "The application resolves competing global messages to one Banner and owns its actions, controlled open state, orientation for the available shell capacity, dismissal persistence, and removal after exit motion.",
@@ -213,6 +215,7 @@
213
215
  "Render exactly one managed ShellApp and one active routed main landmark.",
214
216
  "Provide visible labels and accessible names in navigation, pageChrome, and tool definitions before passing them to ShellApp.",
215
217
  "Handle ShellApp intent events without replacing focusable owners during responsive or fullscreen transitions.",
218
+ "Pair accessory status indicators with accessible status text and keep decorative accessory boundaries out of the accessibility tree.",
216
219
  "Keep the canonical Agents and Help tools available; expose Activity directly on mobile unless the product explicitly opts into grouped Inbox behavior.",
217
220
  "Do not override browser keyboard chords when enabling shell shortcuts."
218
221
  ],
@@ -224,6 +227,7 @@
224
227
  "Below 768px the application root owns a 100dvh fixed stage with a 100vh fallback while ShellApp continues to fill its owner with height 100%; JavaScript viewport measurement synchronizes only the chrome wash and does not own layout height.",
225
228
  "With viewport-fit=cover, ShellApp consumes the shared top safe-area inset once and MobileBarNav consumes the persistent bottom inset; nested routed, tool, sheet, and consumer headers do not duplicate either inset.",
226
229
  "An optional Banner spans the complete application above desktop navigation, workspace, tools, and mobile global surfaces while remaining below the operating-system top safe area.",
230
+ "Desktop and tablet may render governed direct-action rail accessories. Mobile intentionally omits them, so applications provide equivalent persistent status in the top Banner lane when the product requires it.",
227
231
  "Switching breakpoints changes presentation and inert state without recreating route or tool elements.",
228
232
  "Switching sectionNavigation changes only desktop and tablet chrome; mobile composition, current route, routed content, and tool state remain stable.",
229
233
  "Search, Activity, Messages, and Agents use direct mobile destinations; products may explicitly group review tools under Inbox instead."
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": "14.22.1",
4
+ "packageVersion": "14.23.0",
5
5
  "kind": "components",
6
6
  "entries": [
7
7
  {
@@ -5271,6 +5271,8 @@
5271
5271
  "Wheel, touch, keyboard navigation, selection, and transcript interaction release automatic following; Scroll to latest explicitly restores it.",
5272
5272
  "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.",
5273
5273
  "Opening saved history, message jumps, and prepended history preserve deliberate position.",
5274
+ "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.",
5275
+ "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.",
5274
5276
  "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.",
5275
5277
  "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.",
5276
5278
  "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."
@@ -6780,23 +6782,25 @@
6780
6782
  "tag": "ds-panel-tools",
6781
6783
  "name": "panel-tools",
6782
6784
  "title": "PanelTools",
6783
- "summary": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools, normally assembled by managed ShellApp through ShellTools.",
6785
+ "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.",
6784
6786
  "intentStatus": "complete",
6785
6787
  "intent": {
6786
6788
  "audience": "specialized",
6787
6789
  "status": "stable",
6788
- "summary": "Desktop and tablet utility rail-and-drawer primitive for explicitly defined application-wide tools, normally assembled by managed ShellApp through ShellTools.",
6790
+ "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.",
6789
6791
  "useWhen": [
6790
6792
  "An advanced slotted ShellApp needs the desktop and tablet global-tools primitive directly.",
6791
6793
  "Users need to move between application-wide utilities without losing each tool's in-progress state.",
6792
- "Search, AI conversations, user messages, review stacks, notifications, or help content must remain available alongside route content."
6794
+ "Search, AI conversations, user messages, review stacks, notifications, or help content must remain available alongside route content.",
6795
+ "A persistent desktop or tablet rail needs a generic direct-action status surface or shortcut that must not become a tool drawer."
6793
6796
  ],
6794
6797
  "avoidWhen": [
6795
6798
  "The action is specific to the current page or selected content rather than globally available across the application.",
6796
6799
  "The item navigates to a primary or secondary route; use PanelNav or BarNav instead.",
6797
6800
  "Tool definitions lack stable ids, visible labels, explicit rail placement, or application-owned view content.",
6798
6801
  "Building the mobile tools experience; use ShellTools or managed ShellApp.",
6799
- "PanelTools would be mounted outside the application's single ShellApp."
6802
+ "PanelTools would be mounted outside the application's single ShellApp.",
6803
+ "An application wants unrestricted rail markup that bypasses PanelTools ordering, geometry, focus, overflow, or action semantics."
6800
6804
  ],
6801
6805
  "alternatives": [
6802
6806
  {
@@ -6830,7 +6834,9 @@
6830
6834
  "When the shortcut rail overflows, its labeled body becomes a keyboard-focusable scroll region without changing the rail action order.",
6831
6835
  "Do not trigger global shortcuts while focus is in an editable control.",
6832
6836
  "Use notification dots only as supplemental unread or new-content status and never as the sole status indication.",
6833
- "Explain temporarily inactive tools through an accessible label or adjacent product guidance; omit unauthorized tools entirely."
6837
+ "Explain temporarily inactive tools through an accessible label or adjacent product guidance; omit unauthorized tools entirely.",
6838
+ "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.",
6839
+ "Accessory primary and optional secondary actions participate in the same visual and roving keyboard order as tool actions."
6834
6840
  ],
6835
6841
  "states": [
6836
6842
  "Every tool has a stable explicit id and accessible label. The application filters definitions for authorization and entitlement.",
@@ -6848,6 +6854,11 @@
6848
6854
  "Tool view roots stay transparent so ShellApp's chrome wash remains visible; only explicitly designed child surfaces introduce a fill.",
6849
6855
  "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.",
6850
6856
  "If an active optional tool becomes unavailable, PanelTools closes the drawer, clears activeTool, and emits its deselection.",
6857
+ "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.",
6858
+ "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.",
6859
+ "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.",
6860
+ "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.",
6861
+ "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.",
6851
6862
  "Use isInactive only for a temporarily unavailable visible tool; omit tools the user is not authorized to access.",
6852
6863
  "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.",
6853
6864
  "Rail tooltips are shell-owned and position against the viewport so the narrow tools-lane collision boundary cannot clamp them beyond the viewport edge.",
@@ -6860,22 +6871,23 @@
6860
6871
  "The open drawer reduces main-content width and uses --dimension-panel-width-xs (300px) on every supported desktop and tablet viewport.",
6861
6872
  "ShellApp owns the fixed drawer-width variable; consumers must not hardcode alternate drawer widths.",
6862
6873
  "Below 768px, do not reuse PanelTools directly; ShellTools and managed ShellApp present the same persistent tool owners through mobile chrome.",
6874
+ "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.",
6863
6875
  "Keep named-slot content mounted while tools switch or the drawer closes so users can return to in-progress global work.",
6864
6876
  "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.",
6865
6877
  "Use fixed drawer widths for now; do not add user resizing or width persistence."
6866
6878
  ],
6867
6879
  "frameworkCaveats": {
6868
6880
  "customElements": [
6869
- "Assign items and headers as JavaScript properties and replace their references when collections change.",
6881
+ "Assign items, accessories, and headers as JavaScript properties and replace their references when collections change.",
6870
6882
  "Assign headers as a JavaScript property and replace its object identity whenever an active tool changes title, depth, or actions.",
6871
6883
  "Keep PanelTools mounted at ShellApp scope across route changes and provide each product through its matching named slot."
6872
6884
  ],
6873
6885
  "react": [
6874
- "Pass a stable explicitly ordered item collection through the generated React wrapper and keep named-slot product content mounted at ShellApp scope.",
6886
+ "Pass stable explicitly ordered tool and accessory collections through the generated React wrapper and keep named-slot product content mounted at ShellApp scope.",
6875
6887
  "Use storageKey only for same-browser last-tool continuity; do not persist the open drawer."
6876
6888
  ],
6877
6889
  "angular": [
6878
- "Import DsPanelTools from @ds-mo/ui/angular/ds-panel-tools and bind items as a property.",
6890
+ "Import DsPanelTools from @ds-mo/ui/angular/ds-panel-tools and bind structured tool and accessory collections as properties.",
6879
6891
  "Bind headers as a replaced object and route dsHeaderBack and dsHeaderAction to the active tool owner.",
6880
6892
  "Keep the component in the persistent shell layout rather than recreating it in routed page components."
6881
6893
  ]
@@ -6897,6 +6909,10 @@
6897
6909
  },
6898
6910
  "api": {
6899
6911
  "props": {
6912
+ "accessories": {
6913
+ "type": "PanelToolsRailAccessory[]",
6914
+ "required": false
6915
+ },
6900
6916
  "activeTool": {
6901
6917
  "type": "PanelToolsToolId | ''",
6902
6918
  "required": false
@@ -6955,6 +6971,10 @@
6955
6971
  "name": "dsPresentationChange",
6956
6972
  "detail": "{\n presentation: 'drawer' | 'fullscreen';\n }"
6957
6973
  },
6974
+ {
6975
+ "name": "dsRailAccessoryAction",
6976
+ "detail": "PanelToolsRailAccessoryActionDetail"
6977
+ },
6958
6978
  {
6959
6979
  "name": "dsToolChange",
6960
6980
  "detail": "{\n id: PanelToolsToolId;\n selected: boolean;\n }"
@@ -6970,11 +6990,16 @@
6970
6990
  },
6971
6991
  "dependencies": [
6972
6992
  "@ds-mo/ui",
6973
- "@ds-mo/tokens"
6993
+ "@ds-mo/tokens",
6994
+ "@ds-mo/icons"
6974
6995
  ],
6975
6996
  "componentDependencies": [
6997
+ "badge",
6976
6998
  "button-unfilled",
6999
+ "divider",
7000
+ "icon",
6977
7001
  "panel-tool-header",
7002
+ "text",
6978
7003
  "tooltip"
6979
7004
  ]
6980
7005
  },
@@ -7677,6 +7702,8 @@
7677
7702
  "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.",
7678
7703
  "The application supplies each routed content owner and tool view once. ShellApp changes visibility, inert state, and presentation without recreating those nodes.",
7679
7704
  "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.",
7705
+ "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.",
7706
+ "Consuming applications own accessory state, labels, timers, permissions, navigation, and action consequences; ShellApp owns only managed forwarding and responsive placement.",
7680
7707
  "Use composition=slotted only for advanced application architectures that intentionally own all lower-level chrome wiring.",
7681
7708
  "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.",
7682
7709
  "The application owns gradient preference persistence, cross-tab synchronization, and server or account precedence; ShellApp owns rendering the resolved preset across authenticated routes.",
@@ -7703,6 +7730,7 @@
7703
7730
  "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.",
7704
7731
  "A slotted Banner remains below the top safe-area inset and above routed, navigation, fullscreen-tool, and mobile global-surface presentations.",
7705
7732
  "Mobile global surfaces conceal and inert the routed workspace without unmounting it, preserving nested routes and scroll state.",
7733
+ "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.",
7706
7734
  "Keep PanelNav width, BarNav height, PanelTools chrome, and main-content origin stable except during intentional responsive or collapse transitions.",
7707
7735
  "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.",
7708
7736
  "Paper texture chrome is desktop/tablet-only and follows the fixed viewport phase of the shell chrome; mobile remains a solid primary stage.",
@@ -7838,6 +7866,10 @@
7838
7866
  "name": "dsPresentationChange",
7839
7867
  "detail": "{ presentation: 'drawer' | 'fullscreen' }"
7840
7868
  },
7869
+ {
7870
+ "name": "dsRailAccessoryAction",
7871
+ "detail": "PanelToolsRailAccessoryActionDetail"
7872
+ },
7841
7873
  {
7842
7874
  "name": "dsResponsiveModeChange",
7843
7875
  "detail": "{ mode: ShellResponsiveMode }"
@@ -8087,21 +8119,24 @@
8087
8119
  "accessibility": [
8088
8120
  "Only the active mobile tool view participates in focus or the accessibility tree.",
8089
8121
  "Header Back and application-owned header actions preserve the PanelTools event contract.",
8090
- "A direct Activity destination renders its own named tool view; an explicitly grouped Inbox uses a named label-only TabGroup."
8122
+ "A direct Activity destination renders its own named tool view; an explicitly grouped Inbox uses a named label-only TabGroup.",
8123
+ "Desktop and tablet rail accessories retain PanelTools-owned labels, focus order, decorative-boundary semantics, and direct-action events."
8091
8124
  ],
8092
8125
  "states": [
8093
8126
  "The application owns open and activeTool and replaces headers when tool depth changes.",
8094
8127
  "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.",
8095
8128
  "Stable tool ids own named slots; label, order, rail placement, shortcut, and mobile destination are explicit item data.",
8129
+ "Application-owned rail accessories are forwarded unchanged to PanelTools on desktop and tablet and remain independent from activeTool and open.",
8096
8130
  "Switching responsive mode must not recreate application-owned slotted product elements."
8097
8131
  ],
8098
8132
  "responsiveBehavior": [
8099
8133
  "Desktop and tablet compose PanelTools-compatible rail and drawer chrome.",
8100
- "Mobile renders one centered MobileHeader for every direct tool; explicitly grouped Inbox tools use the large segmented section control."
8134
+ "Mobile renders one centered MobileHeader for every direct tool; explicitly grouped Inbox tools use the large segmented section control.",
8135
+ "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."
8101
8136
  ],
8102
8137
  "frameworkCaveats": {
8103
8138
  "customElements": [
8104
- "Assign items and headers as JavaScript properties and place each persistent owner in its named *-view slot."
8139
+ "Assign items, accessories, and headers as JavaScript properties and place each persistent owner in its named *-view slot."
8105
8140
  ],
8106
8141
  "react": [
8107
8142
  "Keep stable keyed product owner elements in the generated wrapper's named slots."
@@ -8123,6 +8158,10 @@
8123
8158
  },
8124
8159
  "api": {
8125
8160
  "props": {
8161
+ "accessories": {
8162
+ "type": "PanelToolsRailAccessory[]",
8163
+ "required": false
8164
+ },
8126
8165
  "activeTool": {
8127
8166
  "type": "PanelToolsToolId | ''",
8128
8167
  "required": false
@@ -8185,6 +8224,10 @@
8185
8224
  "name": "dsPresentationChange",
8186
8225
  "detail": "{\n presentation: 'drawer' | 'fullscreen';\n }"
8187
8226
  },
8227
+ {
8228
+ "name": "dsRailAccessoryAction",
8229
+ "detail": "PanelToolsRailAccessoryActionDetail"
8230
+ },
8188
8231
  {
8189
8232
  "name": "dsToolChange",
8190
8233
  "detail": "{\n id: PanelToolsToolId;\n selected: boolean;\n }"
@@ -3,6 +3,7 @@ import type { Components } from '@ds-mo/ui/components';
3
3
  import type { DsPanelToolsCustomEvent } from '@ds-mo/ui/components';
4
4
  import type { PanelToolsToolId as IDsPanelToolsPanelToolsToolId } from '@ds-mo/ui/components';
5
5
  import type { PanelToolsHeaderActionDetail as IDsPanelToolsPanelToolsHeaderActionDetail } from '@ds-mo/ui/components';
6
+ import type { PanelToolsRailAccessoryActionDetail as IDsPanelToolsPanelToolsRailAccessoryActionDetail } from '@ds-mo/ui/components';
6
7
  import type { ChromeTransitionDetail as IDsPanelToolsChromeTransitionDetail } from '@ds-mo/ui/components';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class DsPanelTools {
@@ -19,11 +20,12 @@ export declare class DsPanelTools {
19
20
  tool: IDsPanelToolsPanelToolsToolId;
20
21
  }>>;
21
22
  dsHeaderAction: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsPanelToolsHeaderActionDetail>>;
23
+ dsRailAccessoryAction: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsPanelToolsRailAccessoryActionDetail>>;
22
24
  dsChromeTransitionStart: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsChromeTransitionDetail>>;
23
25
  dsChromeTransitionEnd: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsChromeTransitionDetail>>;
24
26
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
25
27
  static ɵfac: i0.ɵɵFactoryDeclaration<DsPanelTools, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<DsPanelTools, "ds-panel-tools", never, { "activeTool": { "alias": "activeTool"; "required": false; }; "fullscreenHeaderMode": { "alias": "fullscreenHeaderMode"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "storageKey": { "alias": "storageKey"; "required": false; }; "toolShortcutsLabel": { "alias": "toolShortcutsLabel"; "required": false; }; "toolsLabel": { "alias": "toolsLabel"; "required": false; }; }, { "dsToolChange": "dsToolChange"; "dsPresentationChange": "dsPresentationChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; "dsChromeTransitionStart": "dsChromeTransitionStart"; "dsChromeTransitionEnd": "dsChromeTransitionEnd"; }, never, ["*"], true, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsPanelTools, "ds-panel-tools", never, { "accessories": { "alias": "accessories"; "required": false; }; "activeTool": { "alias": "activeTool"; "required": false; }; "fullscreenHeaderMode": { "alias": "fullscreenHeaderMode"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "storageKey": { "alias": "storageKey"; "required": false; }; "toolShortcutsLabel": { "alias": "toolShortcutsLabel"; "required": false; }; "toolsLabel": { "alias": "toolsLabel"; "required": false; }; }, { "dsToolChange": "dsToolChange"; "dsPresentationChange": "dsPresentationChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; "dsRailAccessoryAction": "dsRailAccessoryAction"; "dsChromeTransitionStart": "dsChromeTransitionStart"; "dsChromeTransitionEnd": "dsChromeTransitionEnd"; }, never, ["*"], true, never>;
27
29
  }
28
30
  export declare interface DsPanelTools extends Components.DsPanelTools {
29
31
  /**
@@ -49,6 +51,10 @@ export declare interface DsPanelTools extends Components.DsPanelTools {
49
51
  * Requests one application-owned action from the active tool header.
50
52
  */
51
53
  dsHeaderAction: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsPanelToolsHeaderActionDetail>>;
54
+ /**
55
+ * Direct accessory intent. Emitting this event never changes the active tool or drawer.
56
+ */
57
+ dsRailAccessoryAction: EventEmitter<DsPanelToolsCustomEvent<IDsPanelToolsPanelToolsRailAccessoryActionDetail>>;
52
58
  /**
53
59
  * Bubbling lifecycle — `ds-bar-nav` defers overflow checks during drawer motion.
54
60
  */
@@ -17,18 +17,19 @@ let DsPanelTools = class DsPanelTools {
17
17
  this.dsPresentationChange = new EventEmitter();
18
18
  this.dsHeaderBack = new EventEmitter();
19
19
  this.dsHeaderAction = new EventEmitter();
20
+ this.dsRailAccessoryAction = new EventEmitter();
20
21
  this.dsChromeTransitionStart = new EventEmitter();
21
22
  this.dsChromeTransitionEnd = new EventEmitter();
22
23
  c.detach();
23
24
  this.el = r.nativeElement;
24
25
  }
25
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsPanelTools, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
26
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsPanelTools, isStandalone: true, selector: "ds-panel-tools", inputs: { activeTool: "activeTool", fullscreenHeaderMode: "fullscreenHeaderMode", headers: "headers", items: "items", open: "open", presentation: "presentation", storageKey: "storageKey", toolShortcutsLabel: "toolShortcutsLabel", toolsLabel: "toolsLabel" }, outputs: { dsToolChange: "dsToolChange", dsPresentationChange: "dsPresentationChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction", dsChromeTransitionStart: "dsChromeTransitionStart", dsChromeTransitionEnd: "dsChromeTransitionEnd" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsPanelTools, isStandalone: true, selector: "ds-panel-tools", inputs: { accessories: "accessories", activeTool: "activeTool", fullscreenHeaderMode: "fullscreenHeaderMode", headers: "headers", items: "items", open: "open", presentation: "presentation", storageKey: "storageKey", toolShortcutsLabel: "toolShortcutsLabel", toolsLabel: "toolsLabel" }, outputs: { dsToolChange: "dsToolChange", dsPresentationChange: "dsPresentationChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction", dsRailAccessoryAction: "dsRailAccessoryAction", dsChromeTransitionStart: "dsChromeTransitionStart", dsChromeTransitionEnd: "dsChromeTransitionEnd" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
28
  };
28
29
  DsPanelTools = __decorate([
29
30
  ProxyCmp({
30
31
  defineCustomElementFn: defineDsPanelTools,
31
- inputs: ['activeTool', 'fullscreenHeaderMode', 'headers', 'items', 'open', 'presentation', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
32
+ inputs: ['accessories', 'activeTool', 'fullscreenHeaderMode', 'headers', 'items', 'open', 'presentation', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
32
33
  methods: ['activateTool', 'closeDrawer', 'focusHeaderAction']
33
34
  })
34
35
  ], DsPanelTools);
@@ -40,8 +41,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
40
41
  changeDetection: ChangeDetectionStrategy.OnPush,
41
42
  template: '<ng-content></ng-content>',
42
43
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
43
- inputs: ['activeTool', 'fullscreenHeaderMode', 'headers', 'items', 'open', 'presentation', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
44
- outputs: ['dsToolChange', 'dsPresentationChange', 'dsHeaderBack', 'dsHeaderAction', 'dsChromeTransitionStart', 'dsChromeTransitionEnd'],
44
+ inputs: ['accessories', 'activeTool', 'fullscreenHeaderMode', 'headers', 'items', 'open', 'presentation', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
45
+ outputs: ['dsToolChange', 'dsPresentationChange', 'dsHeaderBack', 'dsHeaderAction', 'dsRailAccessoryAction', 'dsChromeTransitionStart', 'dsChromeTransitionEnd'],
45
46
  }]
46
47
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsToolChange: [{
47
48
  type: Output
@@ -51,6 +52,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
51
52
  type: Output
52
53
  }], dsHeaderAction: [{
53
54
  type: Output
55
+ }], dsRailAccessoryAction: [{
56
+ type: Output
54
57
  }], dsChromeTransitionStart: [{
55
58
  type: Output
56
59
  }], dsChromeTransitionEnd: [{
@@ -5,6 +5,7 @@ import type { ShellResponsiveMode as IDsShellAppShellResponsiveMode } from '@ds-
5
5
  import type { PanelNavChildSelectDetail as IDsShellAppPanelNavChildSelectDetail } from '@ds-mo/ui/components';
6
6
  import type { BreadcrumbSelectDetail as IDsShellAppBreadcrumbSelectDetail } from '@ds-mo/ui/components';
7
7
  import type { PanelToolsToolId as IDsShellAppPanelToolsToolId } from '@ds-mo/ui/components';
8
+ import type { PanelToolsRailAccessoryActionDetail as IDsShellAppPanelToolsRailAccessoryActionDetail } from '@ds-mo/ui/components';
8
9
  import type { NavChromeStyle as IDsShellAppNavChromeStyle } from '@ds-mo/ui/components';
9
10
  import type { PanelNavUserActionDetail as IDsShellAppPanelNavUserActionDetail } from '@ds-mo/ui/components';
10
11
  import * as i0 from "@angular/core";
@@ -32,6 +33,7 @@ export declare class DsShellApp {
32
33
  tool: IDsShellAppPanelToolsToolId;
33
34
  id: string;
34
35
  }>>;
36
+ dsRailAccessoryAction: EventEmitter<DsShellAppCustomEvent<IDsShellAppPanelToolsRailAccessoryActionDetail>>;
35
37
  dsPresentationChange: EventEmitter<DsShellAppCustomEvent<{
36
38
  presentation: "drawer" | "fullscreen";
37
39
  }>>;
@@ -40,7 +42,7 @@ export declare class DsShellApp {
40
42
  dsNavUserAction: EventEmitter<DsShellAppCustomEvent<IDsShellAppPanelNavUserActionDetail>>;
41
43
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
42
44
  static ɵfac: i0.ɵɵFactoryDeclaration<DsShellApp, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<DsShellApp, "ds-shell-app", never, { "composition": { "alias": "composition"; "required": false; }; "gradientPreset": { "alias": "gradientPreset"; "required": false; }; "mobileDestination": { "alias": "mobileDestination"; "required": false; }; "mobileSheetNavOpen": { "alias": "mobileSheetNavOpen"; "required": false; }; "navStyle": { "alias": "navStyle"; "required": false; }; "navigation": { "alias": "navigation"; "required": false; }; "pageChrome": { "alias": "pageChrome"; "required": false; }; "paperTexture": { "alias": "paperTexture"; "required": false; }; "sectionNavigation": { "alias": "sectionNavigation"; "required": false; }; "shortcutsEnabled": { "alias": "shortcutsEnabled"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; }, { "dsResponsiveModeChange": "dsResponsiveModeChange"; "dsNavSelect": "dsNavSelect"; "dsTabChange": "dsTabChange"; "dsNavChildSelect": "dsNavChildSelect"; "dsSubsectionChange": "dsSubsectionChange"; "dsPageBack": "dsPageBack"; "dsBreadcrumbSelect": "dsBreadcrumbSelect"; "dsPageAction": "dsPageAction"; "dsToolChange": "dsToolChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; "dsPresentationChange": "dsPresentationChange"; "dsBrowseContextChange": "dsBrowseContextChange"; "dsNavFooterAction": "dsNavFooterAction"; "dsNavUserAction": "dsNavUserAction"; }, never, ["*"], true, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsShellApp, "ds-shell-app", never, { "composition": { "alias": "composition"; "required": false; }; "gradientPreset": { "alias": "gradientPreset"; "required": false; }; "mobileDestination": { "alias": "mobileDestination"; "required": false; }; "mobileSheetNavOpen": { "alias": "mobileSheetNavOpen"; "required": false; }; "navStyle": { "alias": "navStyle"; "required": false; }; "navigation": { "alias": "navigation"; "required": false; }; "pageChrome": { "alias": "pageChrome"; "required": false; }; "paperTexture": { "alias": "paperTexture"; "required": false; }; "sectionNavigation": { "alias": "sectionNavigation"; "required": false; }; "shortcutsEnabled": { "alias": "shortcutsEnabled"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; }, { "dsResponsiveModeChange": "dsResponsiveModeChange"; "dsNavSelect": "dsNavSelect"; "dsTabChange": "dsTabChange"; "dsNavChildSelect": "dsNavChildSelect"; "dsSubsectionChange": "dsSubsectionChange"; "dsPageBack": "dsPageBack"; "dsBreadcrumbSelect": "dsBreadcrumbSelect"; "dsPageAction": "dsPageAction"; "dsToolChange": "dsToolChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; "dsRailAccessoryAction": "dsRailAccessoryAction"; "dsPresentationChange": "dsPresentationChange"; "dsBrowseContextChange": "dsBrowseContextChange"; "dsNavFooterAction": "dsNavFooterAction"; "dsNavUserAction": "dsNavUserAction"; }, never, ["*"], true, never>;
44
46
  }
45
47
  export declare interface DsShellApp extends Components.DsShellApp {
46
48
  /**
@@ -97,6 +99,10 @@ export declare interface DsShellApp extends Components.DsShellApp {
97
99
  tool: IDsShellAppPanelToolsToolId;
98
100
  id: string;
99
101
  }>>;
102
+ /**
103
+ * Managed desktop/tablet rail accessory intent.
104
+ */
105
+ dsRailAccessoryAction: EventEmitter<DsShellAppCustomEvent<IDsShellAppPanelToolsRailAccessoryActionDetail>>;
100
106
  /**
101
107
  * Managed drawer/fullscreen presentation state.
102
108
  */
@@ -24,6 +24,7 @@ let DsShellApp = class DsShellApp {
24
24
  this.dsToolChange = new EventEmitter();
25
25
  this.dsHeaderBack = new EventEmitter();
26
26
  this.dsHeaderAction = new EventEmitter();
27
+ this.dsRailAccessoryAction = new EventEmitter();
27
28
  this.dsPresentationChange = new EventEmitter();
28
29
  this.dsBrowseContextChange = new EventEmitter();
29
30
  this.dsNavFooterAction = new EventEmitter();
@@ -32,7 +33,7 @@ let DsShellApp = class DsShellApp {
32
33
  this.el = r.nativeElement;
33
34
  }
34
35
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsShellApp, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellApp, isStandalone: true, selector: "ds-shell-app", inputs: { composition: "composition", gradientPreset: "gradientPreset", mobileDestination: "mobileDestination", mobileSheetNavOpen: "mobileSheetNavOpen", navStyle: "navStyle", navigation: "navigation", pageChrome: "pageChrome", paperTexture: "paperTexture", sectionNavigation: "sectionNavigation", shortcutsEnabled: "shortcutsEnabled", tools: "tools" }, outputs: { dsResponsiveModeChange: "dsResponsiveModeChange", dsNavSelect: "dsNavSelect", dsTabChange: "dsTabChange", dsNavChildSelect: "dsNavChildSelect", dsSubsectionChange: "dsSubsectionChange", dsPageBack: "dsPageBack", dsBreadcrumbSelect: "dsBreadcrumbSelect", dsPageAction: "dsPageAction", dsToolChange: "dsToolChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction", dsPresentationChange: "dsPresentationChange", dsBrowseContextChange: "dsBrowseContextChange", dsNavFooterAction: "dsNavFooterAction", dsNavUserAction: "dsNavUserAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellApp, isStandalone: true, selector: "ds-shell-app", inputs: { composition: "composition", gradientPreset: "gradientPreset", mobileDestination: "mobileDestination", mobileSheetNavOpen: "mobileSheetNavOpen", navStyle: "navStyle", navigation: "navigation", pageChrome: "pageChrome", paperTexture: "paperTexture", sectionNavigation: "sectionNavigation", shortcutsEnabled: "shortcutsEnabled", tools: "tools" }, outputs: { dsResponsiveModeChange: "dsResponsiveModeChange", dsNavSelect: "dsNavSelect", dsTabChange: "dsTabChange", dsNavChildSelect: "dsNavChildSelect", dsSubsectionChange: "dsSubsectionChange", dsPageBack: "dsPageBack", dsBreadcrumbSelect: "dsBreadcrumbSelect", dsPageAction: "dsPageAction", dsToolChange: "dsToolChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction", dsRailAccessoryAction: "dsRailAccessoryAction", dsPresentationChange: "dsPresentationChange", dsBrowseContextChange: "dsBrowseContextChange", dsNavFooterAction: "dsNavFooterAction", dsNavUserAction: "dsNavUserAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
37
  };
37
38
  DsShellApp = __decorate([
38
39
  ProxyCmp({
@@ -50,7 +51,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
50
51
  template: '<ng-content></ng-content>',
51
52
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
52
53
  inputs: ['composition', 'gradientPreset', 'mobileDestination', 'mobileSheetNavOpen', 'navStyle', 'navigation', 'pageChrome', 'paperTexture', 'sectionNavigation', 'shortcutsEnabled', 'tools'],
53
- outputs: ['dsResponsiveModeChange', 'dsNavSelect', 'dsTabChange', 'dsNavChildSelect', 'dsSubsectionChange', 'dsPageBack', 'dsBreadcrumbSelect', 'dsPageAction', 'dsToolChange', 'dsHeaderBack', 'dsHeaderAction', 'dsPresentationChange', 'dsBrowseContextChange', 'dsNavFooterAction', 'dsNavUserAction'],
54
+ outputs: ['dsResponsiveModeChange', 'dsNavSelect', 'dsTabChange', 'dsNavChildSelect', 'dsSubsectionChange', 'dsPageBack', 'dsBreadcrumbSelect', 'dsPageAction', 'dsToolChange', 'dsHeaderBack', 'dsHeaderAction', 'dsRailAccessoryAction', 'dsPresentationChange', 'dsBrowseContextChange', 'dsNavFooterAction', 'dsNavUserAction'],
54
55
  }]
55
56
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsResponsiveModeChange: [{
56
57
  type: Output
@@ -74,6 +75,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
74
75
  type: Output
75
76
  }], dsHeaderAction: [{
76
77
  type: Output
78
+ }], dsRailAccessoryAction: [{
79
+ type: Output
77
80
  }], dsPresentationChange: [{
78
81
  type: Output
79
82
  }], dsBrowseContextChange: [{
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, ElementRef, NgZone, EventEmitter } from '@angular/co
2
2
  import type { Components } from '@ds-mo/ui/components';
3
3
  import type { DsShellToolsCustomEvent } from '@ds-mo/ui/components';
4
4
  import type { PanelToolsToolId as IDsShellToolsPanelToolsToolId } from '@ds-mo/ui/components';
5
+ import type { PanelToolsRailAccessoryActionDetail as IDsShellToolsPanelToolsRailAccessoryActionDetail } from '@ds-mo/ui/components';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class DsShellTools {
7
8
  protected z: NgZone;
@@ -20,9 +21,10 @@ export declare class DsShellTools {
20
21
  tool: IDsShellToolsPanelToolsToolId;
21
22
  id: string;
22
23
  }>>;
24
+ dsRailAccessoryAction: EventEmitter<DsShellToolsCustomEvent<IDsShellToolsPanelToolsRailAccessoryActionDetail>>;
23
25
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
24
26
  static ɵfac: i0.ɵɵFactoryDeclaration<DsShellTools, never>;
25
- static ɵcmp: i0.ɵɵComponentDeclaration<DsShellTools, "ds-shell-tools", never, { "activeTool": { "alias": "activeTool"; "required": false; }; "fullscreenHeaderMode": { "alias": "fullscreenHeaderMode"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "inboxLabel": { "alias": "inboxLabel"; "required": false; }; "inboxNavigationLabel": { "alias": "inboxNavigationLabel"; "required": false; }; "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "responsiveMode": { "alias": "responsiveMode"; "required": false; }; "storageKey": { "alias": "storageKey"; "required": false; }; "toolShortcutsLabel": { "alias": "toolShortcutsLabel"; "required": false; }; "toolsLabel": { "alias": "toolsLabel"; "required": false; }; }, { "dsToolChange": "dsToolChange"; "dsPresentationChange": "dsPresentationChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; }, never, ["*"], true, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsShellTools, "ds-shell-tools", never, { "accessories": { "alias": "accessories"; "required": false; }; "activeTool": { "alias": "activeTool"; "required": false; }; "fullscreenHeaderMode": { "alias": "fullscreenHeaderMode"; "required": false; }; "headers": { "alias": "headers"; "required": false; }; "inboxLabel": { "alias": "inboxLabel"; "required": false; }; "inboxNavigationLabel": { "alias": "inboxNavigationLabel"; "required": false; }; "items": { "alias": "items"; "required": false; }; "open": { "alias": "open"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "responsiveMode": { "alias": "responsiveMode"; "required": false; }; "storageKey": { "alias": "storageKey"; "required": false; }; "toolShortcutsLabel": { "alias": "toolShortcutsLabel"; "required": false; }; "toolsLabel": { "alias": "toolsLabel"; "required": false; }; }, { "dsToolChange": "dsToolChange"; "dsPresentationChange": "dsPresentationChange"; "dsHeaderBack": "dsHeaderBack"; "dsHeaderAction": "dsHeaderAction"; "dsRailAccessoryAction": "dsRailAccessoryAction"; }, never, ["*"], true, never>;
26
28
  }
27
29
  export declare interface DsShellTools extends Components.DsShellTools {
28
30
  dsToolChange: EventEmitter<DsShellToolsCustomEvent<{
@@ -39,4 +41,5 @@ export declare interface DsShellTools extends Components.DsShellTools {
39
41
  tool: IDsShellToolsPanelToolsToolId;
40
42
  id: string;
41
43
  }>>;
44
+ dsRailAccessoryAction: EventEmitter<DsShellToolsCustomEvent<IDsShellToolsPanelToolsRailAccessoryActionDetail>>;
42
45
  }
@@ -17,16 +17,17 @@ let DsShellTools = class DsShellTools {
17
17
  this.dsPresentationChange = new EventEmitter();
18
18
  this.dsHeaderBack = new EventEmitter();
19
19
  this.dsHeaderAction = new EventEmitter();
20
+ this.dsRailAccessoryAction = new EventEmitter();
20
21
  c.detach();
21
22
  this.el = r.nativeElement;
22
23
  }
23
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsShellTools, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellTools, isStandalone: true, selector: "ds-shell-tools", inputs: { activeTool: "activeTool", fullscreenHeaderMode: "fullscreenHeaderMode", headers: "headers", inboxLabel: "inboxLabel", inboxNavigationLabel: "inboxNavigationLabel", items: "items", open: "open", presentation: "presentation", responsiveMode: "responsiveMode", storageKey: "storageKey", toolShortcutsLabel: "toolShortcutsLabel", toolsLabel: "toolsLabel" }, outputs: { dsToolChange: "dsToolChange", dsPresentationChange: "dsPresentationChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellTools, isStandalone: true, selector: "ds-shell-tools", inputs: { accessories: "accessories", activeTool: "activeTool", fullscreenHeaderMode: "fullscreenHeaderMode", headers: "headers", inboxLabel: "inboxLabel", inboxNavigationLabel: "inboxNavigationLabel", items: "items", open: "open", presentation: "presentation", responsiveMode: "responsiveMode", storageKey: "storageKey", toolShortcutsLabel: "toolShortcutsLabel", toolsLabel: "toolsLabel" }, outputs: { dsToolChange: "dsToolChange", dsPresentationChange: "dsPresentationChange", dsHeaderBack: "dsHeaderBack", dsHeaderAction: "dsHeaderAction", dsRailAccessoryAction: "dsRailAccessoryAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
26
  };
26
27
  DsShellTools = __decorate([
27
28
  ProxyCmp({
28
29
  defineCustomElementFn: defineDsShellTools,
29
- inputs: ['activeTool', 'fullscreenHeaderMode', 'headers', 'inboxLabel', 'inboxNavigationLabel', 'items', 'open', 'presentation', 'responsiveMode', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
30
+ inputs: ['accessories', 'activeTool', 'fullscreenHeaderMode', 'headers', 'inboxLabel', 'inboxNavigationLabel', 'items', 'open', 'presentation', 'responsiveMode', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
30
31
  methods: ['activateTool', 'closeDrawer', 'focusHeaderAction']
31
32
  })
32
33
  ], DsShellTools);
@@ -38,8 +39,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
38
39
  changeDetection: ChangeDetectionStrategy.OnPush,
39
40
  template: '<ng-content></ng-content>',
40
41
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
41
- inputs: ['activeTool', 'fullscreenHeaderMode', 'headers', 'inboxLabel', 'inboxNavigationLabel', 'items', 'open', 'presentation', 'responsiveMode', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
42
- outputs: ['dsToolChange', 'dsPresentationChange', 'dsHeaderBack', 'dsHeaderAction'],
42
+ inputs: ['accessories', 'activeTool', 'fullscreenHeaderMode', 'headers', 'inboxLabel', 'inboxNavigationLabel', 'items', 'open', 'presentation', 'responsiveMode', 'storageKey', 'toolShortcutsLabel', 'toolsLabel'],
43
+ outputs: ['dsToolChange', 'dsPresentationChange', 'dsHeaderBack', 'dsHeaderAction', 'dsRailAccessoryAction'],
43
44
  }]
44
45
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsToolChange: [{
45
46
  type: Output
@@ -49,4 +50,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
49
50
  type: Output
50
51
  }], dsHeaderAction: [{
51
52
  type: Output
53
+ }], dsRailAccessoryAction: [{
54
+ type: Output
52
55
  }] } });