@ds-mo/ui 13.11.0 → 13.12.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 (120) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +6 -3
  3. package/dist/agent.json +306 -16
  4. package/dist/angular/ds-mobile-header.d.ts +1 -1
  5. package/dist/angular/ds-mobile-header.js +3 -3
  6. package/dist/angular/ds-shell-page.d.ts +1 -1
  7. package/dist/angular/ds-shell-page.js +3 -3
  8. package/dist/angular/ds-tab-group.d.ts +1 -1
  9. package/dist/angular/ds-tab-group.js +3 -3
  10. package/dist/angular/ds-table.d.ts +28 -0
  11. package/dist/angular/ds-table.js +54 -0
  12. package/dist/angular/ds-tag.d.ts +1 -1
  13. package/dist/angular/ds-tag.js +3 -3
  14. package/dist/angular/index.d.ts +1 -1
  15. package/dist/angular/index.js +1 -0
  16. package/dist/angular/proxies.d.ts +1 -0
  17. package/dist/angular/proxies.js +1 -0
  18. package/dist/components/ds-bar-nav.js +1 -1
  19. package/dist/components/ds-bar-title.js +1 -1
  20. package/dist/components/ds-bar-workflow.js +1 -1
  21. package/dist/components/ds-bar-workflow.js.map +1 -1
  22. package/dist/components/ds-card-overview.js +1 -1
  23. package/dist/components/ds-menu.js +1 -1
  24. package/dist/components/ds-mobile-header.js +1 -1
  25. package/dist/components/ds-mobile-section-switcher.js +1 -1
  26. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  27. package/dist/components/ds-modal.js +1 -1
  28. package/dist/components/ds-panel-sub-nav.js +1 -1
  29. package/dist/components/ds-radio.js +1 -1
  30. package/dist/components/ds-scroll-overlay.js +1 -1
  31. package/dist/components/ds-scroll-overlay.js.map +1 -1
  32. package/dist/components/ds-select.js +1 -1
  33. package/dist/components/ds-shell-app.js +1 -1
  34. package/dist/components/ds-shell-app.js.map +1 -1
  35. package/dist/components/ds-shell-page.js +1 -1
  36. package/dist/components/ds-shell-tools.js +1 -1
  37. package/dist/components/ds-skeleton.js +1 -1
  38. package/dist/components/ds-slider.js +1 -1
  39. package/dist/components/ds-switch.js +1 -1
  40. package/dist/components/ds-tab-group.js +1 -1
  41. package/dist/components/ds-table.d.ts +11 -0
  42. package/dist/components/ds-table.js +2 -0
  43. package/dist/components/ds-table.js.map +1 -0
  44. package/dist/components/ds-tag.js +1 -1
  45. package/dist/components/ds-tag.js.map +1 -1
  46. package/dist/components/ds-toast.js +1 -1
  47. package/dist/components/ds-typing-indicator.js +1 -1
  48. package/dist/components/index.d.ts +30 -0
  49. package/dist/components/p-BFXN4ioL.js +2 -0
  50. package/dist/components/p-BFXN4ioL.js.map +1 -0
  51. package/dist/components/{p-DgglLVCj.js → p-BYre-ZDg.js} +2 -2
  52. package/dist/components/p-B_eqa09C.js +2 -0
  53. package/dist/components/p-B_eqa09C.js.map +1 -0
  54. package/dist/components/{p-BnGJrBPG.js → p-Bj7KrXzw.js} +2 -2
  55. package/dist/components/p-BxJurXEn.js +2 -0
  56. package/dist/components/p-BxJurXEn.js.map +1 -0
  57. package/dist/components/{p-Dg9qiMDa.js → p-C9StMCWg.js} +2 -2
  58. package/dist/components/p-CE82aQZr.js +2 -0
  59. package/dist/components/p-CE82aQZr.js.map +1 -0
  60. package/dist/components/p-CFNG0K3m.js +2 -0
  61. package/dist/components/p-CFNG0K3m.js.map +1 -0
  62. package/dist/components/{p-BQ7Nzx9A.js → p-Ch5yT3UA.js} +2 -2
  63. package/dist/components/{p-DJGdoPMG.js → p-DKftz0O8.js} +2 -2
  64. package/dist/components/p-DxygUurH.js +2 -0
  65. package/dist/components/p-DxygUurH.js.map +1 -0
  66. package/dist/components/{p-DCN04sgt.js → p-x9jO4lZ7.js} +2 -2
  67. package/dist/components/{p-DCN04sgt.js.map → p-x9jO4lZ7.js.map} +1 -1
  68. package/dist/docs/components.json +1567 -74
  69. package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +3 -2
  70. package/dist/lib/components/ShellApp/shell-app-types.d.ts +4 -1
  71. package/dist/lib/components/ShellPage/shell-page-types.d.ts +5 -0
  72. package/dist/lib/shell/index.d.ts +1 -0
  73. package/dist/mcp-data/registry/bar-title.json +2 -1
  74. package/dist/mcp-data/registry/card-overview.json +1 -1
  75. package/dist/mcp-data/registry/mobile-header.json +48 -10
  76. package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
  77. package/dist/mcp-data/registry/registry.json +308 -15
  78. package/dist/mcp-data/registry/shell-app.json +6 -3
  79. package/dist/mcp-data/registry/shell-page.json +32 -8
  80. package/dist/mcp-data/registry/shell-tools.json +4 -4
  81. package/dist/mcp-data/registry/tab-group.json +22 -2
  82. package/dist/mcp-data/registry/table.json +758 -0
  83. package/dist/mcp-data/registry/tag.json +22 -3
  84. package/dist/react/components.d.ts +1 -0
  85. package/dist/react/components.js +1 -0
  86. package/dist/react/ds-table.d.ts +16 -0
  87. package/dist/react/ds-table.js +18 -0
  88. package/dist/styles/table.css +677 -0
  89. package/dist/types/components/MobileHeader/MobileHeader.d.ts +8 -3
  90. package/dist/types/components/MobileHeader/index.d.ts +1 -1
  91. package/dist/types/components/MobileHeader/mobile-header-types.d.ts +3 -2
  92. package/dist/types/components/ShellApp/ShellApp.d.ts +8 -0
  93. package/dist/types/components/ShellApp/shell-app-types.d.ts +4 -1
  94. package/dist/types/components/ShellPage/ShellPage.d.ts +3 -1
  95. package/dist/types/components/ShellPage/index.d.ts +1 -1
  96. package/dist/types/components/ShellPage/shell-page-types.d.ts +1 -0
  97. package/dist/types/components/TabGroup/TabGroup.d.ts +3 -0
  98. package/dist/types/components/Table/Table.d.ts +115 -0
  99. package/dist/types/components/Table/index.d.ts +2 -0
  100. package/dist/types/components/Table/table-model.d.ts +29 -0
  101. package/dist/types/components/Table/table-types.d.ts +178 -0
  102. package/dist/types/components/Tag/Tag.d.ts +2 -0
  103. package/dist/types/components.d.ts +406 -8
  104. package/dist/types/shell/index.d.ts +1 -0
  105. package/package.json +3 -2
  106. package/dist/components/p-B_nHX-BW.js +0 -2
  107. package/dist/components/p-B_nHX-BW.js.map +0 -1
  108. package/dist/components/p-CVmtbj-6.js +0 -2
  109. package/dist/components/p-CVmtbj-6.js.map +0 -1
  110. package/dist/components/p-DW9p068S.js +0 -2
  111. package/dist/components/p-DW9p068S.js.map +0 -1
  112. package/dist/components/p-Xftomzsv.js +0 -2
  113. package/dist/components/p-Xftomzsv.js.map +0 -1
  114. package/dist/components/p-iyiOFsws.js +0 -2
  115. package/dist/components/p-iyiOFsws.js.map +0 -1
  116. /package/dist/components/{p-DgglLVCj.js.map → p-BYre-ZDg.js.map} +0 -0
  117. /package/dist/components/{p-BnGJrBPG.js.map → p-Bj7KrXzw.js.map} +0 -0
  118. /package/dist/components/{p-Dg9qiMDa.js.map → p-C9StMCWg.js.map} +0 -0
  119. /package/dist/components/{p-BQ7Nzx9A.js.map → p-Ch5yT3UA.js.map} +0 -0
  120. /package/dist/components/{p-DJGdoPMG.js.map → p-DKftz0O8.js.map} +0 -0
@@ -1 +1 @@
1
- {"schemaVersion":1,"package":"@ds-mo/ui","version":"13.11.0","components":65,"digest":"a5531f1a6ad36f653a4d1dc8544ccc063e5cb13d55e8c7e99c0386a38835dffe","completedAt":"2026-08-07T00:59:37.127Z"}
1
+ {"schemaVersion":1,"package":"@ds-mo/ui","version":"13.12.0","components":66,"digest":"8aa9f3a30662a6f2b90d68ba52dd64ef92e9654e72f41860eadc554328f2dae0","completedAt":"2026-08-09T04:41:22.713Z"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "13.11.0",
4
+ "packageVersion": "13.12.0",
5
5
  "kind": "patterns",
6
6
  "entries": [
7
7
  {
@@ -520,7 +520,7 @@
520
520
  "status": "stable",
521
521
  "summary": "Supply route-owned page chrome and content to managed ShellApp, which composes ShellPage, BarTitle, and MobileHeader without duplicate page state.",
522
522
  "useWhen": [
523
- "A standard authenticated route needs a shared heading, sections, depth, actions, sticky compaction, and content inset.",
523
+ "A standard authenticated route needs a shared heading, sections, depth, actions, sticky compaction, content inset, and page canvas surface.",
524
524
  "The routed page must keep one content owner while desktop and mobile header presentations differ."
525
525
  ],
526
526
  "avoidWhen": [
@@ -551,7 +551,7 @@
551
551
  }
552
552
  ],
553
553
  "stateOwnership": [
554
- "The router owns heading copy, selected section, depth, available actions, route data, and product outcomes.",
554
+ "The router owns heading copy, selected section, depth, available actions, content inset, content surface, route data, and product outcomes.",
555
555
  "The application replaces pageChrome from completed route state and handles ShellApp page intent events.",
556
556
  "ShellApp owns ShellPage, BarTitle, MobileHeader, the content scroller, sticky presentation, and responsive switching.",
557
557
  "The default slot contains application-owned routed content and is not recreated for header compaction or breakpoint changes.",
@@ -567,6 +567,9 @@
567
567
  "ShellApp derives the desktop BarTitle and mobile MobileHeader from the same pageChrome object.",
568
568
  "Route-level sections remain pageChrome tabs; subordinate local views use subsections.",
569
569
  "Use contentInset none only for deliberately full-bleed products such as maps and canvases.",
570
+ "Choose contentSurface independently: primary and secondary canvases both support default responsive gutters or full-bleed content.",
571
+ "Desktop and tablet BarTitle presentations match a secondary page canvas across expanded, compact, and constrained variants; the separate mobile header remains primary.",
572
+ "ShellPage keeps its scroll-compaction spacer on the selected content surface so the routed canvas remains continuous.",
570
573
  "The routed content owner remains mounted while header presentation compacts or changes breakpoint."
571
574
  ],
572
575
  "implementations": {
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": "13.11.0",
4
+ "packageVersion": "13.12.0",
5
5
  "kind": "components",
6
6
  "entries": [
7
7
  {
@@ -997,6 +997,7 @@
997
997
  "responsiveBehavior": [
998
998
  "BarTitle does not observe viewport, shell, scroll, or container state. Its owner selects an explicit variant.",
999
999
  "ShellPage is the standard owner for automatic expanded, compact, and constrained selection.",
1000
+ "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.",
1000
1001
  "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.",
1001
1002
  "A never-collapse primary action remains visible in constrained mode; the title and section label yield space first."
1002
1003
  ],
@@ -1987,7 +1988,7 @@
1987
1988
  "Omit score to render a centered Score unavailable cell with a tertiary border and no score fill. Set scoreErrorMessage to replace that copy while the measures remain readable.",
1988
1989
  "Loading replaces the score and measures with skeletons and does not alter the slotted period control. When measures are already supplied, their count preserves the resolved grid shape; otherwise five measure placeholders join the score in the standard six-cell grid.",
1989
1990
  "At most seven measures are shown. Keep larger collections outside the summary bar rather than turning it into a dense dashboard.",
1990
- "The period and filter controls are slotted rather than owned. Use the period slot when the current range is selectable; otherwise periodLabel supplies fixed current copy in the same md control-frame and label-inset anatomy. Use the filter slot for the application-owned comparison-window control. Slotted Selects use hasBorder false so the 48px bar owns their surrounding boundary.",
1991
+ "The period and filter controls are slotted rather than owned. Use the period slot when the current range is selectable; otherwise periodLabel supplies fixed current copy in the same md control-frame and label-inset anatomy. Use the filter slot for the application-owned comparison-window control. Slotted Selects use hasBorder false so the 48px bar owns their surrounding boundary and allowClear false because both controls always require one selected reporting period.",
1991
1992
  "A numeric safety score infers fair from 0–50, good from 51–80, and excellent from 81–100. The level can be supplied explicitly when the displayed value is not numeric. The deprecated band field is ignored.",
1992
1993
  "The safety score is the first grid cell and uses the same track, 8px outer inset, 6px inner padding, dividers, and responsive behavior as metric cells. The display value removes 8px from both block edges of its line box so it does not increase the shared row height. Score remains nonselectable and excluded from metric roving focus.",
1993
1994
  "During page-controlled scroll collapse, the component preserves its expanded flow height and stationary reporting bar while the metric grid moves and clips beneath it. Elevation remains fitted to the visible surface.",
@@ -4749,6 +4750,7 @@
4749
4750
  ],
4750
4751
  "commonlyComposedWith": [
4751
4752
  "component:ds-mobile-section-switcher",
4753
+ "component:ds-tab-group",
4752
4754
  "component:ds-shell-page",
4753
4755
  "component:ds-shell-tools"
4754
4756
  ],
@@ -4757,19 +4759,19 @@
4757
4759
  ],
4758
4760
  "accessibility": [
4759
4761
  "Static screens render a real h1 or h2 according to headingLevel.",
4760
- "Section-switching screens expose an equivalent semantic heading alongside the accessible popup trigger.",
4762
+ "Section-switching screens expose an equivalent semantic heading alongside the accessible popup trigger or named segmented TabGroup.",
4761
4763
  "Subsections use a separately named navigation landmark and never replace the semantic page identity.",
4762
4764
  "Leading and trailing slotted icon actions retain their own accessible names and tooltips."
4763
4765
  ],
4764
4766
  "states": [
4765
4767
  "Without multiple sections the center renders heading.",
4766
- "With multiple sections the center renders the controlled MobileSectionSwitcher.",
4768
+ "With multiple sections the center renders the controlled MobileSectionSwitcher by default or an explicitly requested segmented TabGroup.",
4767
4769
  "Optional subsections render in a second row and emit dsSubsectionChange without changing the primary section.",
4768
4770
  "Sections represent peer destinations at the current navigation level; subsections represent local views beneath the selected page or detail identity.",
4769
4771
  "Brand tone changes surface and foreground without changing geometry or interaction ownership."
4770
4772
  ],
4771
4773
  "responsiveBehavior": [
4772
- "The primary 48px lane is dedicated to the below-768px presentation; optional subsections add one subordinate 48px lane.",
4774
+ "The primary 56px lane matches the Mobile Sheet Nav header and Mobile Bar Nav; optional subsections add one subordinate 48px lane.",
4773
4775
  "Equal flexible side lanes keep the center mathematically aligned when actions are asymmetric."
4774
4776
  ],
4775
4777
  "references": [
@@ -4790,13 +4792,21 @@
4790
4792
  "required": false
4791
4793
  },
4792
4794
  "sections": {
4793
- "type": "TabItem[]",
4795
+ "type": "TabGroupItem[]",
4794
4796
  "required": false
4795
4797
  },
4796
4798
  "sectionsAriaLabel": {
4797
4799
  "type": "string",
4798
4800
  "required": false
4799
4801
  },
4802
+ "sectionsPresentation": {
4803
+ "type": "MobileHeaderSectionsPresentation",
4804
+ "required": false
4805
+ },
4806
+ "sectionsSize": {
4807
+ "type": "TabGroupSize",
4808
+ "required": false
4809
+ },
4800
4810
  "subsections": {
4801
4811
  "type": "TabItem[]",
4802
4812
  "required": false
@@ -4841,6 +4851,7 @@
4841
4851
  ],
4842
4852
  "componentDependencies": [
4843
4853
  "mobile-section-switcher",
4854
+ "tab-group",
4844
4855
  "text"
4845
4856
  ]
4846
4857
  },
@@ -4962,7 +4973,7 @@
4962
4973
  ],
4963
4974
  "responsiveBehavior": [
4964
4975
  "The pane fills the mobile content stage while the bottom bar remains available.",
4965
- "The sheet header and scrollable navigation body each use the shared 8px chrome inset; large destination controls retain their independent 40px density.",
4976
+ "The sheet header and scrollable navigation body each use the shared 8px chrome inset; the context TabGroup and primary controls share a 40px height and 24px icon scale.",
4966
4977
  "Dashboard and Settings preserve their supplied visual groups with an 8px gap between destinations inside a section and a 32px gap between sections."
4967
4978
  ],
4968
4979
  "references": [
@@ -6587,6 +6598,7 @@
6587
6598
  "Replace navigation and pageChrome together from one completed route state.",
6588
6599
  "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.",
6589
6600
  "Managed ShellApp keeps BarNav and ShellPage presentations present and owns page header stickiness and the content scroller.",
6601
+ "Route-owned pageChrome selects ShellPage contentInset and contentSurface independently; ShellApp forwards both without making page-specific layout or surface decisions.",
6590
6602
  "The application filters unauthorized destinations, sections, and tools before passing them into shell components."
6591
6603
  ],
6592
6604
  "responsiveBehavior": [
@@ -6594,6 +6606,8 @@
6594
6606
  "On desktop, PanelNav defaults expanded, permits user collapse or expansion, and respects the locally persisted desktop preference.",
6595
6607
  "On tablet, ShellApp keeps PanelNav permanently collapsed and prevents user expansion without overwriting the desktop preference.",
6596
6608
  "On mobile, ShellApp hides and inerts desktop chrome, uses a solid primary stage, and composes MobileHeader, MobileSheetNav, ShellTools, and the persistent MobileBarNav around the same application-owned content.",
6609
+ "Opening MobileSheetNav temporarily overlays the active routed page or global tool; closing it without selecting an area restores that same destination and its nested state.",
6610
+ "When a suspended mobile document returns to the foreground, ShellApp refreshes the complete stage paint layer without remounting routed content or tool owners.",
6597
6611
  "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.",
6598
6612
  "A slotted Banner remains below the top safe-area inset and above routed, navigation, fullscreen-tool, and mobile global-surface presentations.",
6599
6613
  "Mobile global surfaces conceal and inert the routed workspace without unmounting it, preserving nested routes and scroll state.",
@@ -6760,17 +6774,18 @@
6760
6774
  "tag": "ds-shell-page",
6761
6775
  "name": "shell-page",
6762
6776
  "title": "ShellPage",
6763
- "summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
6777
+ "summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and independent page-content inset and canvas surface without creating a nested scroll container.",
6764
6778
  "intentStatus": "complete",
6765
6779
  "intent": {
6766
6780
  "audience": "general",
6767
6781
  "status": "stable",
6768
- "summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and optional page-content inset without creating a nested scroll container.",
6782
+ "summary": "The standard routed-page boundary inside ShellApp, owning sticky BarTitle or BarWorkflow placement, application-supplied BarTitle capacity, stable scroll compaction, and independent page-content inset and canvas surface without creating a nested scroll container.",
6769
6783
  "useWhen": [
6770
6784
  "Rendering a standard routed page inside ShellApp's default content region.",
6771
6785
  "BarTitle should expand at a roomy page top, compact after scroll, or use constrained action layout when the application shell reports reduced capacity.",
6772
6786
  "BarWorkflow needs sticky page-level placement while remaining compact.",
6773
- "Pages need consistent content gutters with an explicit full-bleed option."
6787
+ "Pages need consistent content gutters with an explicit full-bleed option.",
6788
+ "The page canvas surrounding routed content must use either the primary or secondary application surface."
6774
6789
  ],
6775
6790
  "avoidWhen": [
6776
6791
  "Building authentication, onboarding, public, modal, drawer, or intentionally focused fullscreen layouts outside the standard ShellApp page region.",
@@ -6809,6 +6824,8 @@
6809
6824
  "headerPresentation=auto selects the matching header variant from headerCapacity and scroll position.",
6810
6825
  "expanded, compact, and constrained are explicit overrides for exceptional layouts and deterministic examples.",
6811
6826
  "contentInset=default supplies standard page gutters; none permits maps, canvases, and other full-bleed content.",
6827
+ "contentSurface=primary keeps the standard page canvas; secondary paints both the inset gutter and the canvas beneath routed content. Desktop and tablet BarTitle chrome matches that canvas in expanded, compact, and constrained presentations; MobileHeader remains primary.",
6828
+ "contentInset and contentSurface are independent: either surface supports standard responsive gutters or a full-bleed page-owned layout.",
6812
6829
  "The header slot accepts one desktop BarTitle or BarWorkflow; mobile-header accepts the corresponding MobileHeader presentation. The default slot owns router output and all page product content."
6813
6830
  ],
6814
6831
  "responsiveBehavior": [
@@ -6817,7 +6834,10 @@
6817
6834
  "A ShellPage-managed BarTitle remains concealed until headerCapacity is available and its rendered variant matches the resolved presentation, preventing a default-variant flash during route activation.",
6818
6835
  "responsiveMode=mobile hides and inerts the desktop header, exposes mobile-header, and disables desktop scroll-compaction geometry.",
6819
6836
  "Update headerCapacity synchronously with shell layout state so opening tools or crossing application breakpoints cannot briefly render the wrong presentation.",
6820
- "The default content inset is 32px in desktop mode and 16px in tablet and mobile modes, while preserving the larger bottom scroll space.",
6837
+ "The default content inset is balanced on every side: 32px in desktop mode and 16px in tablet and mobile modes.",
6838
+ "The selected content surface persists unchanged across desktop, tablet, and mobile modes.",
6839
+ "On a secondary desktop or tablet page, BarTitle matches the page canvas across capacity and scroll-driven variant changes; the separate mobile-header presentation remains primary.",
6840
+ "The flow-preservation spacer follows contentSurface so compacting a secondary page cannot expose a primary strip before its content.",
6821
6841
  "On roomy pages, the expanded header scrolls upward until its title and action row reaches the compact row position, while its bottom divider progressively extends from the expanded inset to edge-to-edge; it then snaps variants without moving that shared visual anchor.",
6822
6842
  "Scroll compaction preserves the expanded page flow offset so content never jumps beneath the sticky header.",
6823
6843
  "ShellPage relies on ShellApp's content scroller and never introduces nested scrolling.",
@@ -6830,7 +6850,7 @@
6830
6850
  ],
6831
6851
  "react": [
6832
6852
  "Render the desktop header with slot=header and DsMobileHeader with slot=mobile-header inside DsShellPage.",
6833
- "Use contentInset none only for deliberately full-bleed page products."
6853
+ "Use contentInset none only for deliberately full-bleed page products, and choose contentSurface independently from the page's spacing model."
6834
6854
  ],
6835
6855
  "angular": [
6836
6856
  "Import the generated standalone DsShellPage adapter with the desktop header and DsMobileHeader, preserve both header slots, and place router-outlet in the default slot.",
@@ -6858,6 +6878,10 @@
6858
6878
  "type": "ShellPageContentInset",
6859
6879
  "required": false
6860
6880
  },
6881
+ "contentSurface": {
6882
+ "type": "ShellPageContentSurface",
6883
+ "required": false
6884
+ },
6861
6885
  "headerCapacity": {
6862
6886
  "type": "ShellPageCapacity",
6863
6887
  "required": false
@@ -6914,7 +6938,7 @@
6914
6938
  "component:ds-shell-app",
6915
6939
  "component:ds-panel-tool-header",
6916
6940
  "component:ds-mobile-header",
6917
- "component:ds-mobile-section-switcher",
6941
+ "component:ds-tab-group",
6918
6942
  "component:ds-mobile-bar-nav"
6919
6943
  ],
6920
6944
  "patterns": [
@@ -6923,7 +6947,7 @@
6923
6947
  "accessibility": [
6924
6948
  "Only the active mobile tool view participates in focus or the accessibility tree.",
6925
6949
  "Header Back and application-owned header actions preserve the PanelTools event contract.",
6926
- "Inbox uses the MobileSectionSwitcher popup trigger for Stacks and Activity and never relies on a gesture-only interaction; Messages remains a direct mobile destination."
6950
+ "Mobile Inbox uses a named label-only TabGroup for Stacks and Activity; Messages remains a direct mobile destination."
6927
6951
  ],
6928
6952
  "states": [
6929
6953
  "The application owns open and activeTool and replaces headers when tool depth changes.",
@@ -6933,7 +6957,7 @@
6933
6957
  ],
6934
6958
  "responsiveBehavior": [
6935
6959
  "Desktop and tablet compose PanelTools-compatible rail and drawer chrome.",
6936
- "Mobile renders one centered MobileHeader for every tool; Stacks and Activity use Inbox section titles, while Messages remains a direct tool destination."
6960
+ "Mobile renders one centered MobileHeader for every tool; Stacks and Activity use the large segmented Inbox control, while Messages remains a direct tool destination."
6937
6961
  ],
6938
6962
  "frameworkCaveats": {
6939
6963
  "customElements": [
@@ -7734,6 +7758,7 @@
7734
7758
  "The parent owns the canonical selected value and adjacent view visibility, and should update both from dsChange.",
7735
7759
  "A missing, empty, inactive, or unknown selected value is invalid when enabled tabs exist; the component does not choose a fallback selection.",
7736
7760
  "Selection is singular and follows keyboard focus.",
7761
+ "Small, medium, and large use the shared 24px, 32px, and 40px control-density recipes for the outer track. Each segment uses the same-size inset recipe at 20px, 28px, and 36px while preserving that density's typography, icon, gap, and label metrics.",
7737
7762
  "Use one consistent content variant across every selectable tab in a group.",
7738
7763
  "Omitted background is for primary and secondary surfaces; pass the faint context explicitly on faint surfaces.",
7739
7764
  "Only the omitted default context emphasizes visible selected label text and keeps the filled track; explicit faint follows the other surface contexts with a transparent track, stable text weight, surface border, and neutral active fill.",
@@ -7741,6 +7766,7 @@
7741
7766
  ],
7742
7767
  "responsiveBehavior": [
7743
7768
  "The component remains a single horizontal row and does not become vertical or wrap.",
7769
+ "Use the large size when a mobile composition aligns the group with 40px shell controls; size does not change automatically at a breakpoint.",
7744
7770
  "The consuming layout owns narrow-width placement and overflow, or replaces the row with a more suitable navigation pattern."
7745
7771
  ],
7746
7772
  "frameworkCaveats": {
@@ -7776,6 +7802,10 @@
7776
7802
  "type": "TabBackground | undefined",
7777
7803
  "required": false
7778
7804
  },
7805
+ "size": {
7806
+ "type": "TabGroupSize",
7807
+ "required": false
7808
+ },
7779
7809
  "tabs": {
7780
7810
  "type": "TabGroupItem[]",
7781
7811
  "required": false
@@ -7809,6 +7839,261 @@
7809
7839
  "text"
7810
7840
  ]
7811
7841
  },
7842
+ {
7843
+ "id": "component:ds-table",
7844
+ "tag": "ds-table",
7845
+ "name": "table",
7846
+ "title": "Table",
7847
+ "summary": "Semantic, controlled data table with durable visual primitives for cell geometry, column geometry, grouping, sorting, multi-selection, sticky overflow, and incremental loading.",
7848
+ "intentStatus": "complete",
7849
+ "intent": {
7850
+ "audience": "general",
7851
+ "status": "experimental",
7852
+ "summary": "Semantic, controlled data table with durable visual primitives for cell geometry, column geometry, grouping, sorting, multi-selection, sticky overflow, and incremental loading.",
7853
+ "useWhen": [
7854
+ "A structured dataset needs native row and column relationships, optional one-level grouping, or comparable values across records.",
7855
+ "An application needs controlled sorting, loaded-row selection, or lazy loading while retaining ownership of the data query and transformations.",
7856
+ "A product table needs a token-backed recipe whose individual header, group, row, cell, selection, state, and load-more layers remain easy to restyle."
7857
+ ],
7858
+ "avoidWhen": [
7859
+ "Content is primarily editorial prose; use semantic product-owned markup with the prose recipe instead.",
7860
+ "A small label/value set reads more clearly as a list, description list, or card.",
7861
+ "The interface requires tree-grid behavior, nested grouping, inline cell editing, row reordering, column pinning, or virtualization; those are outside this first contract.",
7862
+ "The application expects the component to fetch, paginate, sort, group, or mutate records internally."
7863
+ ],
7864
+ "commonlyComposedWith": [
7865
+ "component:ds-empty-state",
7866
+ "component:ds-skeleton",
7867
+ "component:ds-loader",
7868
+ "component:ds-button-unfilled",
7869
+ "component:ds-tag",
7870
+ "component:ds-icon"
7871
+ ],
7872
+ "accessibility": [
7873
+ "The rendered structure uses a native table, caption, column headers, row groups, and data cells; keep the caption non-empty even when it is visually hidden.",
7874
+ "Sorting controls remain buttons inside column headers. Member-row sort uses aria-sort, while independent group order is described by the grouped header control.",
7875
+ "Selection controls expose checkbox semantics and explicit row names; select-all affects selectable loaded rows only and preserves selected identities outside the loaded window.",
7876
+ "Scrollable table regions become keyboard focusable and named only when overflow exists.",
7877
+ "Incremental loading, newly appended row counts, failures, and end-of-results transitions are announced through a polite status region without replacing visible state."
7878
+ ],
7879
+ "states": [
7880
+ "Columns, rows, groups, grouping, sorting, selected row IDs, and lazy-loading state are controlled inputs. Events communicate intent and never mutate those inputs.",
7881
+ "Grouping supports one level. The application supplies ordered groups and ordered member rows; group order and member-row sort are independent controls.",
7882
+ "An active member sort toggles only between ascending and descending; activating a different sortable label moves sorting to that key. Applications may still clear the controlled sort state explicitly. The grouped column toggles ascending and descending group order without clearing member sort.",
7883
+ "Compound headers can expose multiple related labels with independent sort keys. Each label owns only its content-width interaction target while the active direction remains in the column's alignment-aware sort lane.",
7884
+ "Initial loading uses row-shaped skeletons. Empty and initial error states remain inside the table. Incremental loading retains existing rows and supports automatic sentinel, manual load-more, retry, and terminal states.",
7885
+ "Lazy loading replaces pagination. The application owns requests, cancellation, cursors, deduplication, appended records, and query identity; loadIdentity resets the component request guard.",
7886
+ "Cells accept scalar content, standard primary-and-secondary or dual-primary text primitives, declarative Tag, icon-only, 16:9 Image, or ButtonUnfilled Action content, or explicit Empty and Blank absence values. Single-track text, selection, tag-only, icon-only, Action, Empty, and Blank cells resolve a 40px base contract while multi-track cells grow downward. Action cells primarily use an icon-only Ellipses treatment, render a 24px small ButtonUnfilled inside 8px padding, default to unbordered, and emit row, column, and action identities through dsCellAction. Image cells render a 52px-high bordered preview inside 6px outer padding, establishing a 64px row, and fall back to an accessible placeholder when no source is supplied. Empty means the data applies but has no value and renders an em dash with localized assistive text; Blank means the data is not applicable and renders no content. Nullish values remain backward-compatible Empty values. Stable type and variant hooks keep every cell family independently styleable.",
7887
+ "The public @ds-mo/ui/table.css export is the authoritative zero-specificity visual recipe. Override its --ds-table-* properties or target its stable element classes for product-specific styling."
7888
+ ],
7889
+ "responsiveBehavior": [
7890
+ "The table keeps native semantics at narrow widths and scrolls horizontally instead of transforming into cards.",
7891
+ "Explicit column sizes establish the horizontal overflow width; unsized columns share remaining space.",
7892
+ "Prefer the named xs through xl column sizes, which resolve through TokoMo's table-column width tokens; numeric pixel sizes remain an escape hatch for exceptional application-owned widths.",
7893
+ "Column headers use one 32px geometry. Body rows use a 40px single-track minimum; cell-specific outer padding and track geometry align text, selection, Tag, icon, Action, Empty, Blank, and Image primitives while additional tracks grow downward.",
7894
+ "Long content truncates by default and can opt into wrapping at the column or cell level."
7895
+ ],
7896
+ "frameworkCaveats": {
7897
+ "customElements": [
7898
+ "Assign columns, rows, groups, grouping, sort, and selectedRowIds through JavaScript properties rather than HTML attribute strings.",
7899
+ "Replace controlled property values in response to dsSortChange, dsGroupingChange, dsSelectionChange, and dsLoadMore."
7900
+ ],
7901
+ "react": [
7902
+ "Pass new array and state-object references when the controlled data or query state changes.",
7903
+ "Apply emitted sort, grouping, selection, action, or loading detail to application state and perform data transformations in the owning layer."
7904
+ ],
7905
+ "angular": [
7906
+ "Bind complex table inputs as properties and update the controlled values from the corresponding output events.",
7907
+ "Keep server cursor, query lifecycle, and cell-action handling in the owning service or container."
7908
+ ]
7909
+ },
7910
+ "references": [
7911
+ {
7912
+ "label": "Storybook review matrix",
7913
+ "path": "src/wc/components/Table/Table.stories.ts"
7914
+ },
7915
+ {
7916
+ "label": "Public visual recipe",
7917
+ "path": "src/wc/styles/table.css"
7918
+ }
7919
+ ]
7920
+ },
7921
+ "api": {
7922
+ "props": {
7923
+ "caption": {
7924
+ "type": "string",
7925
+ "required": true
7926
+ },
7927
+ "captionVisibility": {
7928
+ "type": "TableCaptionVisibility",
7929
+ "required": false
7930
+ },
7931
+ "columns": {
7932
+ "type": "TableColumn[]",
7933
+ "required": false
7934
+ },
7935
+ "emptyBody": {
7936
+ "type": "string",
7937
+ "required": false
7938
+ },
7939
+ "emptyCellLabel": {
7940
+ "type": "string",
7941
+ "required": false
7942
+ },
7943
+ "emptyHeading": {
7944
+ "type": "string",
7945
+ "required": false
7946
+ },
7947
+ "endOfResultsLabel": {
7948
+ "type": "string",
7949
+ "required": false
7950
+ },
7951
+ "error": {
7952
+ "type": "boolean",
7953
+ "required": false
7954
+ },
7955
+ "errorBody": {
7956
+ "type": "string",
7957
+ "required": false
7958
+ },
7959
+ "errorHeading": {
7960
+ "type": "string",
7961
+ "required": false
7962
+ },
7963
+ "grouping": {
7964
+ "type": "TableGroupingState | null",
7965
+ "required": false
7966
+ },
7967
+ "groups": {
7968
+ "type": "TableGroup[]",
7969
+ "required": false
7970
+ },
7971
+ "hasMore": {
7972
+ "type": "boolean",
7973
+ "required": false
7974
+ },
7975
+ "lazyLoading": {
7976
+ "type": "boolean",
7977
+ "required": false
7978
+ },
7979
+ "loadIdentity": {
7980
+ "type": "string | number",
7981
+ "required": false
7982
+ },
7983
+ "loadMoreError": {
7984
+ "type": "string | undefined",
7985
+ "required": false
7986
+ },
7987
+ "loadMoreLabel": {
7988
+ "type": "string",
7989
+ "required": false
7990
+ },
7991
+ "loadMoreMode": {
7992
+ "type": "TableLoadMoreMode",
7993
+ "required": false
7994
+ },
7995
+ "loadMoreThreshold": {
7996
+ "type": "number",
7997
+ "required": false
7998
+ },
7999
+ "loading": {
8000
+ "type": "boolean",
8001
+ "required": false
8002
+ },
8003
+ "loadingMore": {
8004
+ "type": "boolean",
8005
+ "required": false
8006
+ },
8007
+ "loadingMoreLabel": {
8008
+ "type": "string",
8009
+ "required": false
8010
+ },
8011
+ "maxHeight": {
8012
+ "type": "string | number | undefined",
8013
+ "required": false
8014
+ },
8015
+ "retryLabel": {
8016
+ "type": "string",
8017
+ "required": false
8018
+ },
8019
+ "rows": {
8020
+ "type": "TableRow[]",
8021
+ "required": false
8022
+ },
8023
+ "rowsLoadedLabel": {
8024
+ "type": "string",
8025
+ "required": false
8026
+ },
8027
+ "scrollLabel": {
8028
+ "type": "string | undefined",
8029
+ "required": false
8030
+ },
8031
+ "selectedRowIds": {
8032
+ "type": "string[]",
8033
+ "required": false
8034
+ },
8035
+ "selectionMode": {
8036
+ "type": "TableSelectionMode",
8037
+ "required": false
8038
+ },
8039
+ "skeletonRows": {
8040
+ "type": "number",
8041
+ "required": false
8042
+ },
8043
+ "sort": {
8044
+ "type": "TableSortState | null",
8045
+ "required": false
8046
+ },
8047
+ "stickyHeader": {
8048
+ "type": "boolean",
8049
+ "required": false
8050
+ }
8051
+ },
8052
+ "events": [
8053
+ {
8054
+ "name": "dsCellAction",
8055
+ "detail": "TableCellActionDetail"
8056
+ },
8057
+ {
8058
+ "name": "dsGroupingChange",
8059
+ "detail": "TableGroupingChangeDetail"
8060
+ },
8061
+ {
8062
+ "name": "dsLoadMore",
8063
+ "detail": "TableLoadMoreDetail"
8064
+ },
8065
+ {
8066
+ "name": "dsSelectionChange",
8067
+ "detail": "TableSelectionChangeDetail"
8068
+ },
8069
+ {
8070
+ "name": "dsSortChange",
8071
+ "detail": "TableSortChangeDetail"
8072
+ }
8073
+ ],
8074
+ "slots": []
8075
+ },
8076
+ "exports": {
8077
+ "customElement": "ds-table",
8078
+ "react": "DsTable",
8079
+ "angular": "DsTable"
8080
+ },
8081
+ "dependencies": [
8082
+ "@ds-mo/ui",
8083
+ "@ds-mo/tokens",
8084
+ "@ds-mo/icons"
8085
+ ],
8086
+ "componentDependencies": [
8087
+ "button-unfilled",
8088
+ "checkbox",
8089
+ "empty-state",
8090
+ "icon",
8091
+ "loader",
8092
+ "skeleton",
8093
+ "tag",
8094
+ "text"
8095
+ ]
8096
+ },
7812
8097
  {
7813
8098
  "id": "component:ds-tag",
7814
8099
  "tag": "ds-tag",
@@ -7869,12 +8154,13 @@
7869
8154
  "Warning signals higher urgency or risk than caution, which asks for attention before a possible issue.",
7870
8155
  "Contrast changes visual prominence without changing semantic intent or parent surface context.",
7871
8156
  "Rounded is an optional visual style with no semantic difference.",
8157
+ "isInset opts into reduced outer geometry only when Tag is nested inside a control of the same density; semantic styling, typography, icons, gaps, radius, and interaction remain unchanged.",
7872
8158
  "Labels stay on one line and truncate only when the owner supplies a maximum width.",
7873
8159
  "Omitted interactive renders static metadata with no focus, event, or suffix. Interactive adds the fixed ChevronUpDown suffix and emits dsClick without toggling expanded internally.",
7874
8160
  "isInactive disables only the interactive button and applies the shared inactive treatment."
7875
8161
  ],
7876
8162
  "responsiveBehavior": [
7877
- "The owner selects md, sm, or xs density to match its local layout and owns collection wrapping, overflow, and condensation.",
8163
+ "The owner selects md, sm, or xs density to match its local layout and owns collection wrapping, overflow, and condensation. Use isInset only for same-density control nesting.",
7878
8164
  "Tag does not change size or behavior automatically at breakpoints."
7879
8165
  ],
7880
8166
  "frameworkCaveats": {
@@ -7925,6 +8211,10 @@
7925
8211
  "type": "boolean",
7926
8212
  "required": false
7927
8213
  },
8214
+ "isInset": {
8215
+ "type": "boolean",
8216
+ "required": false
8217
+ },
7928
8218
  "label": {
7929
8219
  "type": "string",
7930
8220
  "required": true
@@ -9,7 +9,7 @@ export declare class DsMobileHeader {
9
9
  dsSubsectionChange: EventEmitter<DsMobileHeaderCustomEvent<string>>;
10
10
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<DsMobileHeader, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<DsMobileHeader, "ds-mobile-header", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "sectionsAriaLabel": { "alias": "sectionsAriaLabel"; "required": false; }; "subsections": { "alias": "subsections"; "required": false; }; "subsectionsAriaLabel": { "alias": "subsectionsAriaLabel"; "required": false; }; "subvalue": { "alias": "subvalue"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "dsSectionChange": "dsSectionChange"; "dsSubsectionChange": "dsSubsectionChange"; }, never, ["*"], true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsMobileHeader, "ds-mobile-header", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "sectionsAriaLabel": { "alias": "sectionsAriaLabel"; "required": false; }; "sectionsPresentation": { "alias": "sectionsPresentation"; "required": false; }; "sectionsSize": { "alias": "sectionsSize"; "required": false; }; "subsections": { "alias": "subsections"; "required": false; }; "subsectionsAriaLabel": { "alias": "subsectionsAriaLabel"; "required": false; }; "subvalue": { "alias": "subvalue"; "required": false; }; "tone": { "alias": "tone"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "dsSectionChange": "dsSectionChange"; "dsSubsectionChange": "dsSubsectionChange"; }, never, ["*"], true, never>;
13
13
  }
14
14
  export declare interface DsMobileHeader extends Components.DsMobileHeader {
15
15
  /**
@@ -19,12 +19,12 @@ let DsMobileHeader = class DsMobileHeader {
19
19
  this.el = r.nativeElement;
20
20
  }
21
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsMobileHeader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsMobileHeader, isStandalone: true, selector: "ds-mobile-header", inputs: { heading: "heading", headingLevel: "headingLevel", sections: "sections", sectionsAriaLabel: "sectionsAriaLabel", subsections: "subsections", subsectionsAriaLabel: "subsectionsAriaLabel", subvalue: "subvalue", tone: "tone", value: "value" }, outputs: { dsSectionChange: "dsSectionChange", dsSubsectionChange: "dsSubsectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsMobileHeader, isStandalone: true, selector: "ds-mobile-header", inputs: { heading: "heading", headingLevel: "headingLevel", sections: "sections", sectionsAriaLabel: "sectionsAriaLabel", sectionsPresentation: "sectionsPresentation", sectionsSize: "sectionsSize", subsections: "subsections", subsectionsAriaLabel: "subsectionsAriaLabel", subvalue: "subvalue", tone: "tone", value: "value" }, outputs: { dsSectionChange: "dsSectionChange", dsSubsectionChange: "dsSubsectionChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
23
  };
24
24
  DsMobileHeader = __decorate([
25
25
  ProxyCmp({
26
26
  defineCustomElementFn: defineDsMobileHeader,
27
- inputs: ['heading', 'headingLevel', 'sections', 'sectionsAriaLabel', 'subsections', 'subsectionsAriaLabel', 'subvalue', 'tone', 'value']
27
+ inputs: ['heading', 'headingLevel', 'sections', 'sectionsAriaLabel', 'sectionsPresentation', 'sectionsSize', 'subsections', 'subsectionsAriaLabel', 'subvalue', 'tone', 'value']
28
28
  })
29
29
  ], DsMobileHeader);
30
30
  export { DsMobileHeader };
@@ -35,7 +35,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
35
35
  changeDetection: ChangeDetectionStrategy.OnPush,
36
36
  template: '<ng-content></ng-content>',
37
37
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
38
- inputs: ['heading', 'headingLevel', 'sections', 'sectionsAriaLabel', 'subsections', 'subsectionsAriaLabel', 'subvalue', 'tone', 'value'],
38
+ inputs: ['heading', 'headingLevel', 'sections', 'sectionsAriaLabel', 'sectionsPresentation', 'sectionsSize', 'subsections', 'subsectionsAriaLabel', 'subvalue', 'tone', 'value'],
39
39
  outputs: ['dsSectionChange', 'dsSubsectionChange'],
40
40
  }]
41
41
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsSectionChange: [{
@@ -6,7 +6,7 @@ export declare class DsShellPage {
6
6
  protected el: HTMLDsShellPageElement;
7
7
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<DsShellPage, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<DsShellPage, "ds-shell-page", never, { "contentInset": { "alias": "contentInset"; "required": false; }; "headerCapacity": { "alias": "headerCapacity"; "required": false; }; "headerPresentation": { "alias": "headerPresentation"; "required": false; }; "responsiveMode": { "alias": "responsiveMode"; "required": false; }; }, {}, never, ["*"], true, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsShellPage, "ds-shell-page", never, { "contentInset": { "alias": "contentInset"; "required": false; }; "contentSurface": { "alias": "contentSurface"; "required": false; }; "headerCapacity": { "alias": "headerCapacity"; "required": false; }; "headerPresentation": { "alias": "headerPresentation"; "required": false; }; "responsiveMode": { "alias": "responsiveMode"; "required": false; }; }, {}, never, ["*"], true, never>;
10
10
  }
11
11
  export declare interface DsShellPage extends Components.DsShellPage {
12
12
  }
@@ -17,12 +17,12 @@ let DsShellPage = class DsShellPage {
17
17
  this.el = r.nativeElement;
18
18
  }
19
19
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsShellPage, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
20
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellPage, isStandalone: true, selector: "ds-shell-page", inputs: { contentInset: "contentInset", headerCapacity: "headerCapacity", headerPresentation: "headerPresentation", responsiveMode: "responsiveMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsShellPage, isStandalone: true, selector: "ds-shell-page", inputs: { contentInset: "contentInset", contentSurface: "contentSurface", headerCapacity: "headerCapacity", headerPresentation: "headerPresentation", responsiveMode: "responsiveMode" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
21
21
  };
22
22
  DsShellPage = __decorate([
23
23
  ProxyCmp({
24
24
  defineCustomElementFn: defineDsShellPage,
25
- inputs: ['contentInset', 'headerCapacity', 'headerPresentation', 'responsiveMode']
25
+ inputs: ['contentInset', 'contentSurface', 'headerCapacity', 'headerPresentation', 'responsiveMode']
26
26
  })
27
27
  ], DsShellPage);
28
28
  export { DsShellPage };
@@ -33,6 +33,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
33
33
  changeDetection: ChangeDetectionStrategy.OnPush,
34
34
  template: '<ng-content></ng-content>',
35
35
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
36
- inputs: ['contentInset', 'headerCapacity', 'headerPresentation', 'responsiveMode'],
36
+ inputs: ['contentInset', 'contentSurface', 'headerCapacity', 'headerPresentation', 'responsiveMode'],
37
37
  }]
38
38
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }] });