@ds-mo/ui 14.23.0 → 14.25.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 (117) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +10 -7
  3. package/dist/agent.json +59 -15
  4. package/dist/angular/ds-bar-title.d.ts +1 -1
  5. package/dist/angular/ds-bar-title.js +3 -3
  6. package/dist/angular/ds-button-filled.d.ts +3 -1
  7. package/dist/angular/ds-button-filled.js +7 -4
  8. package/dist/angular/ds-button-unfilled.d.ts +3 -1
  9. package/dist/angular/ds-button-unfilled.js +7 -4
  10. package/dist/components/ds-agent-questionnaire.js +1 -1
  11. package/dist/components/ds-agent-response.js +1 -1
  12. package/dist/components/ds-banner.js +1 -1
  13. package/dist/components/ds-bar-nav.js +1 -1
  14. package/dist/components/ds-bar-title.js +1 -1
  15. package/dist/components/ds-bar-workflow.js +1 -1
  16. package/dist/components/ds-button-filled.js +1 -1
  17. package/dist/components/ds-button-unfilled.js +1 -1
  18. package/dist/components/ds-card-chart.js +1 -1
  19. package/dist/components/ds-card-setting.js +1 -1
  20. package/dist/components/ds-code-block.js +1 -1
  21. package/dist/components/ds-filter-menu.js +1 -1
  22. package/dist/components/ds-input.js +1 -1
  23. package/dist/components/ds-markdown.js +1 -1
  24. package/dist/components/ds-message-actions.js +1 -1
  25. package/dist/components/ds-message-composer.js +1 -1
  26. package/dist/components/ds-message-scroller.js +1 -1
  27. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  28. package/dist/components/ds-modal.js +1 -1
  29. package/dist/components/ds-pagination.js +1 -1
  30. package/dist/components/ds-panel-nav.js +1 -1
  31. package/dist/components/ds-panel-tool-header.js +1 -1
  32. package/dist/components/ds-panel-tool-search.js +1 -1
  33. package/dist/components/ds-panel-tools.js +1 -1
  34. package/dist/components/ds-select.js +1 -1
  35. package/dist/components/ds-shell-app.js +1 -1
  36. package/dist/components/ds-shell-app.js.map +1 -1
  37. package/dist/components/ds-shell-tools.js +1 -1
  38. package/dist/components/ds-table-filter.js +1 -1
  39. package/dist/components/ds-table-group.js +1 -1
  40. package/dist/components/ds-table-saved-views.js +1 -1
  41. package/dist/components/ds-table-search.js +1 -1
  42. package/dist/components/ds-table-sort.js +1 -1
  43. package/dist/components/ds-table.js +1 -1
  44. package/dist/components/ds-table.js.map +1 -1
  45. package/dist/components/ds-toast.js +1 -1
  46. package/dist/components/p-BR1ayqMU.js +2 -0
  47. package/dist/components/p-BR1ayqMU.js.map +1 -0
  48. package/dist/components/{p-DzVYGJJv.js → p-BSRIF4m8.js} +2 -2
  49. package/dist/components/{p-FitB53eM.js → p-BZlhBJZL.js} +2 -2
  50. package/dist/components/{p-BmqnrfTf.js → p-Bo6uW_8T.js} +2 -2
  51. package/dist/components/{p-BIaHDBfP.js → p-Bq8svcPs.js} +2 -2
  52. package/dist/components/{p-DAFR4U9P.js → p-BqbdABo3.js} +2 -2
  53. package/dist/components/{p-nVv71P3f.js → p-CEXchU5N.js} +2 -2
  54. package/dist/components/p-CEfxLsbX.js +2 -0
  55. package/dist/components/p-CEfxLsbX.js.map +1 -0
  56. package/dist/components/{p-DXbryJHz.js → p-CYMKmJ2s.js} +2 -2
  57. package/dist/components/{p-C13fWp2x.js → p-CZHIkVgj.js} +2 -2
  58. package/dist/components/{p-CL0tECXf.js → p-CZjjDhUl.js} +2 -2
  59. package/dist/components/{p-Bd-Kpekh.js → p-C_FFU6W3.js} +2 -2
  60. package/dist/components/{p-CilwchJH.js → p-CglHiyY2.js} +2 -2
  61. package/dist/components/{p-9M0ak2q_.js → p-DLaN9BPq.js} +2 -2
  62. package/dist/components/{p-CrYJnDev.js → p-DiS5BgLA.js} +2 -2
  63. package/dist/components/{p-DiyO47xX.js → p-PXdvBMXB.js} +2 -2
  64. package/dist/components/{p-7MWaWl8w.js → p-kslioYhf.js} +2 -2
  65. package/dist/components/p-kslioYhf.js.map +1 -0
  66. package/dist/docs/components.json +257 -30
  67. package/dist/lib/components/BarTitle/bar-title-types.d.ts +54 -1
  68. package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +12 -1
  69. package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
  70. package/dist/lib/shell/index.d.ts +1 -0
  71. package/dist/mcp-data/registry/bar-title.json +34 -12
  72. package/dist/mcp-data/registry/button-filled.json +60 -6
  73. package/dist/mcp-data/registry/button-unfilled.json +60 -6
  74. package/dist/mcp-data/registry/registry.json +58 -14
  75. package/dist/mcp-data/registry/shell-app.json +7 -2
  76. package/dist/mcp-data/registry/table.json +3 -3
  77. package/dist/react/ds-button-filled.d.ts +1 -0
  78. package/dist/react/ds-button-filled.js +4 -1
  79. package/dist/react/ds-button-unfilled.d.ts +1 -0
  80. package/dist/react/ds-button-unfilled.js +1 -0
  81. package/dist/styles/table.css +13 -1
  82. package/dist/types/components/BarTitle/BarTitle.d.ts +19 -6
  83. package/dist/types/components/BarTitle/bar-title-actions.d.ts +11 -0
  84. package/dist/types/components/BarTitle/bar-title-types.d.ts +54 -1
  85. package/dist/types/components/BarTitle/index.d.ts +1 -1
  86. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +12 -1
  87. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +12 -1
  88. package/dist/types/components/ShellApp/ShellApp.d.ts +12 -0
  89. package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
  90. package/dist/types/components/Table/Table.d.ts +2 -2
  91. package/dist/types/components/Table/table-row-view.d.ts +2 -1
  92. package/dist/types/components.d.ts +60 -4
  93. package/dist/types/shell/index.d.ts +1 -0
  94. package/dist/types/utils/button-story-foundation.d.ts +2 -0
  95. package/dist/vue/ds-bar-title.js +1 -0
  96. package/dist/vue/ds-button-filled.js +6 -2
  97. package/dist/vue/ds-button-unfilled.js +4 -0
  98. package/package.json +1 -1
  99. package/dist/components/p--68f7nIx.js +0 -2
  100. package/dist/components/p--68f7nIx.js.map +0 -1
  101. package/dist/components/p-7MWaWl8w.js.map +0 -1
  102. package/dist/components/p-BnTPuV3x.js +0 -2
  103. package/dist/components/p-BnTPuV3x.js.map +0 -1
  104. /package/dist/components/{p-DzVYGJJv.js.map → p-BSRIF4m8.js.map} +0 -0
  105. /package/dist/components/{p-FitB53eM.js.map → p-BZlhBJZL.js.map} +0 -0
  106. /package/dist/components/{p-BmqnrfTf.js.map → p-Bo6uW_8T.js.map} +0 -0
  107. /package/dist/components/{p-BIaHDBfP.js.map → p-Bq8svcPs.js.map} +0 -0
  108. /package/dist/components/{p-DAFR4U9P.js.map → p-BqbdABo3.js.map} +0 -0
  109. /package/dist/components/{p-nVv71P3f.js.map → p-CEXchU5N.js.map} +0 -0
  110. /package/dist/components/{p-DXbryJHz.js.map → p-CYMKmJ2s.js.map} +0 -0
  111. /package/dist/components/{p-C13fWp2x.js.map → p-CZHIkVgj.js.map} +0 -0
  112. /package/dist/components/{p-CL0tECXf.js.map → p-CZjjDhUl.js.map} +0 -0
  113. /package/dist/components/{p-Bd-Kpekh.js.map → p-C_FFU6W3.js.map} +0 -0
  114. /package/dist/components/{p-CilwchJH.js.map → p-CglHiyY2.js.map} +0 -0
  115. /package/dist/components/{p-9M0ak2q_.js.map → p-DLaN9BPq.js.map} +0 -0
  116. /package/dist/components/{p-CrYJnDev.js.map → p-DiS5BgLA.js.map} +0 -0
  117. /package/dist/components/{p-DiyO47xX.js.map → p-PXdvBMXB.js.map} +0 -0
@@ -1 +1 @@
1
- {"schemaVersion":1,"package":"@ds-mo/ui","version":"14.23.0","components":77,"digest":"2db305df550d826a65e3755c57cc2404e35f4ddd1ea9740d06ac41399959b27d","completedAt":"2026-08-31T23:09:00.789Z"}
1
+ {"schemaVersion":1,"package":"@ds-mo/ui","version":"14.25.0","components":77,"digest":"f1a7aa473f373792c783db432b2f12160c7403108897991076ee1fc0412b6863","completedAt":"2026-09-02T01:26:05.059Z"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
3
  "package": "@ds-mo/ui",
4
- "packageVersion": "14.23.0",
4
+ "packageVersion": "14.25.0",
5
5
  "kind": "patterns",
6
6
  "entries": [
7
7
  {
@@ -458,7 +458,7 @@
458
458
  "components": [
459
459
  {
460
460
  "component": "component:ds-button-unfilled",
461
- "role": "Provides the visible trigger, popup relationship attributes, and focus target. Carries both shapes, and is the only component that carries the icon-only overflow role.",
461
+ "role": "Provides the visible trigger, popup relationship attributes, focus target, and optional split-menu segment. Carries both menu-button shapes, and is the only component that carries the icon-only overflow role.",
462
462
  "required": true
463
463
  },
464
464
  {
@@ -468,7 +468,7 @@
468
468
  },
469
469
  {
470
470
  "component": "component:ds-button-filled",
471
- "role": "Substitutes for the trigger when the menu belongs to the single primary action in a local decision area, using the label or icon-label shape only.",
471
+ "role": "Substitutes for the trigger when the menu belongs to the single primary action in a local decision area, and supports split mode when the primary command must remain independently available.",
472
472
  "required": false
473
473
  }
474
474
  ],
@@ -478,6 +478,7 @@
478
478
  "An open popup is a transient pressed state, not a selected one. The trigger holds only its pressed wash for the popup's rendered lifecycle from expanded alone, without changing foreground, so never also set isActive to represent an open menu.",
479
479
  "Menu owns popup placement and keyboard navigation; the application never calculates popup coordinates or applies positional CSS.",
480
480
  "On dsSelect from a command or single-selection row, update the selected value, close the Menu, and restore focus to the trigger.",
481
+ "For button split mode, restore focus to the menu segment after a menu choice; the primary segment remains an independent command.",
481
482
  "Switch rows and reorderable rows report dsSelect or dsReorder without closing; replace the items array from those events.",
482
483
  "On dsClose, synchronize the application open state to false."
483
484
  ],
@@ -485,6 +486,7 @@
485
486
  "A button either has a menu or is a menu, and the trigger's variant selects between the two shapes.",
486
487
  "Has a menu: a label or icon-label action that opens a menu. Set hasMenu, which implies aria-haspopup of menu and renders the trailing chevron that communicates the popup. Both button primitives support this shape.",
487
488
  "Is a menu: an icon-only control. Set hasMenu, which adds no chevron, so the glyph must convey the menu alone. Use Ellipses for generic more-options or overflow. Use a specific icon when the menu has a named purpose, such as Table for Customize table. Only ButtonUnfilled carries this shape, because the role is chrome rather than a primary action.",
489
+ "Split mode: set split and menuAriaLabel on either button primitive. The selected variant continues to define the primary segment; the appended ChevronDown segment owns controls, expanded, aria-haspopup, and dsMenuClick.",
488
490
  "Set controls to the Menu id and expanded from the same open state passed to Menu.",
489
491
  "Give an icon-only trigger an accessible name that states the role, such as More options or Customize table, because no visible label or chevron carries it.",
490
492
  "Use haspopup directly instead of hasMenu for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
@@ -653,7 +655,7 @@
653
655
  }
654
656
  ],
655
657
  "stateOwnership": [
656
- "The router owns heading copy, selected section, depth, available actions, content inset, divider visibility, scroll-compaction policy, content surface, route data, and product outcomes.",
658
+ "The router owns heading copy, selected section, depth, ordered available actions, content inset, divider visibility, scroll-compaction policy, content surface, route data, and product outcomes.",
657
659
  "The application replaces pageChrome from completed route state and handles ShellApp page intent events.",
658
660
  "ShellApp owns ShellPage, BarTitle, MobileHeader, the content scroller, sticky presentation, and responsive switching.",
659
661
  "The default slot contains application-owned routed content and is not recreated for header compaction or breakpoint changes.",
@@ -667,6 +669,7 @@
667
669
  ],
668
670
  "responsiveBehavior": [
669
671
  "ShellApp derives the desktop BarTitle and mobile MobileHeader from the same pageChrome object.",
672
+ "Ordered page actions keep icon commands visible on mobile by default and flatten labeled, menu, split, and explicit overflow commands into one ShellApp-owned mobile menu.",
670
673
  "Route-level sections remain pageChrome tabs; subordinate local views use subsections.",
671
674
  "Use contentInset none only for deliberately full-bleed products such as maps and canvases.",
672
675
  "Table pages can retain responsive inline and bottom gutters while tuning their roomy and compact block-start seams; set scrollCompaction false when their roomy title must stay pinned, and let shell capacity continue to compact it for tools or tablet layouts.",
@@ -687,7 +690,7 @@
687
690
  {
688
691
  "path": "drivers-page.ts",
689
692
  "language": "typescript",
690
- "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nconst shell = document.querySelector<HTMLDsShellAppElement>('ds-shell-app')!\nconst pageChrome: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n primaryAction: { id: 'create', label: 'Create driver' },\n}\nshell.pageChrome = pageChrome\nshell.addEventListener('dsTabChange', event => appRouter.navigate(event.detail))\nshell.addEventListener('dsPageAction', event => driverActions.run(event.detail))"
693
+ "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nconst shell = document.querySelector<HTMLDsShellAppElement>('ds-shell-app')!\nconst pageChrome: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n actionItems: [\n { type: 'button', id: 'create', label: 'Create driver', appearance: 'filled' },\n { type: 'overflow', id: 'export', label: 'Export drivers' },\n ],\n}\nshell.pageChrome = pageChrome\nshell.addEventListener('dsTabChange', event => appRouter.navigate(event.detail))\nshell.addEventListener('dsPageAction', event => driverActions.run(event.detail))"
691
694
  }
692
695
  ],
693
696
  "notes": [
@@ -712,7 +715,7 @@
712
715
  {
713
716
  "path": "DriversRoute.tsx",
714
717
  "language": "tsx",
715
- "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nexport const driversPageChrome: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n primaryAction: { id: 'create', label: 'Create driver' },\n}\n\nexport function DriversRoute() {\n return <section aria-label=\"Driver results\">Page content</section>\n}"
718
+ "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nexport const driversPageChrome: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n actionItems: [{ type: 'button', id: 'create', label: 'Create driver', appearance: 'filled' }],\n}\n\nexport function DriversRoute() {\n return <section aria-label=\"Driver results\">Page content</section>\n}"
716
719
  }
717
720
  ],
718
721
  "notes": [
@@ -743,7 +746,7 @@
743
746
  {
744
747
  "path": "drivers-page-chrome.ts",
745
748
  "language": "typescript",
746
- "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nexport const DRIVERS_PAGE_CHROME: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n primaryAction: { id: 'create', label: 'Create driver' },\n}"
749
+ "content": "import type { ShellPageChromeConfig } from '@ds-mo/ui/shell'\n\nexport const DRIVERS_PAGE_CHROME: ShellPageChromeConfig = {\n heading: 'Drivers',\n tabs: [{ id: 'active', label: 'Active' }, { id: 'inactive', label: 'Inactive' }],\n value: 'active',\n actionItems: [{ type: 'button', id: 'create', label: 'Create driver', appearance: 'filled' }],\n}"
747
750
  }
748
751
  ],
749
752
  "notes": [
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.23.0",
4
+ "packageVersion": "14.25.0",
5
5
  "kind": "components",
6
6
  "entries": [
7
7
  {
@@ -1218,17 +1218,17 @@
1218
1218
  "tag": "ds-bar-title",
1219
1219
  "name": "bar-title",
1220
1220
  "title": "BarTitle",
1221
- "summary": "Page-level title chrome with an optional expanded route breadcrumb, compact Back action, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
1221
+ "summary": "Page-level title chrome with route identity, responsive ordered button, icon, menu, split, and overflow actions, plus explicit expanded, compact, or constrained variants.",
1222
1222
  "intentStatus": "complete",
1223
1223
  "intent": {
1224
1224
  "audience": "general",
1225
1225
  "status": "stable",
1226
- "summary": "Page-level title chrome with an optional expanded route breadcrumb, compact Back action, supporting description, inline active-section menu, one primary action, grouped overflow actions, and explicit expanded, compact, or constrained variants.",
1226
+ "summary": "Page-level title chrome with route identity, responsive ordered button, icon, menu, split, and overflow actions, plus explicit expanded, compact, or constrained variants.",
1227
1227
  "useWhen": [
1228
1228
  "A top-level page needs one h1 above its content.",
1229
1229
  "A list or detail page has multiple route-level sections that belong in the inline active-section menu.",
1230
1230
  "A detail page needs route ancestors in expanded presentation and a page-level Back action in compact chrome.",
1231
- "A page needs one primary action plus optional secondary or destructive overflow commands."
1231
+ "A page needs an ordered set of primary, secondary, icon, menu, split, or overflow commands."
1232
1232
  ],
1233
1233
  "avoidWhen": [
1234
1234
  "The title belongs to a PanelTools drawer or fullscreen pane; use PanelToolHeader through PanelTools instead.",
@@ -1272,15 +1272,17 @@
1272
1272
  "Provide ordered breadcrumb items for deeper expanded paths and handle dsBreadcrumbSelect when native href navigation is not used; backLabel remains the single-parent expanded fallback.",
1273
1273
  "Keep value synchronized with the current child route; dsSectionChange returns the selected section id.",
1274
1274
  "Section and overflow triggers expose menu relationships and restore focus after selection or dismissal.",
1275
- "Use one filled primary action in the page decision area and mark destructive overflow actions explicitly."
1275
+ "Use one filled primary action in the page decision area, give icon and menu triggers specific accessible names, and mark destructive overflow actions explicitly.",
1276
+ "Keep every top-level action and nested menu-choice id non-empty and unique; dsAction emits the selected id without adding a parent prefix."
1276
1277
  ],
1277
1278
  "states": [
1278
1279
  "Omitting Back, sections, primaryAction, and actions produces the top-level title-only header.",
1279
1280
  "Two or more selectable sections add the inline section trigger; one section does not render a redundant menu.",
1280
1281
  "Dividers in sections or actions create separate Menu groups without becoming selectable rows.",
1281
- "The overflow trigger uses its bordered treatment whenever the primary action is visible beside it; overflow-only and auto-collapsed-primary presentations keep the trigger borderless.",
1282
+ "The overflow trigger uses its bordered treatment whenever any visible action sits beside it; overflow-only presentations keep the trigger borderless.",
1283
+ "Ordered actions preserve authored order, but only the first eligible filled button, unfilled button, icon button, labeled menu button, or split button renders beside the title. Remaining commands use the shared overflow, whose rows are text-only. Menu choices and overflowed split commands become separate rows and share the same flat action event.",
1282
1284
  "expanded renders the larger heading, optional description, inset divider, and a full-width caption breadcrumb row above the title. The breadcrumb begins after 32px top padding; the following title and right-side actions share one top alignment. Compact renders 48px chrome with the existing icon Back action; constrained uses compact chrome and moves an auto-collapse primary action into overflow.",
1283
- "primaryAction collapse defaults to auto. Use never for exceptional actions whose hierarchy must remain visible in constrained layouts.",
1285
+ "The one visible ordered action collapses by default in constrained presentation. Use never for an exceptional action whose hierarchy must remain visible; explicit overflow actions never leave the shared menu.",
1284
1286
  "showDivider=false removes the bottom divider when the surrounding page composition supplies the boundary; showCompactDivider can independently restore or remove that boundary in compact and constrained variants.",
1285
1287
  "placement=shell-bar is reserved for ShellApp panel section navigation. It remains compact, omits description and breadcrumb presentation, and preserves applicable Back, section, primary, and overflow controls."
1286
1288
  ],
@@ -1290,15 +1292,16 @@
1290
1292
  "ShellApp owns shell-bar placement and always selects compact presentation there; mobile continues to use MobileHeader.",
1291
1293
  "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.",
1292
1294
  "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.",
1293
- "A never-collapse primary action remains visible in constrained mode; the title and section label yield space first."
1295
+ "A never-collapse action remains visible in constrained mode; the title and section label yield space first.",
1296
+ "On mobile, icon commands remain visible by default while labeled buttons, labeled menus, split buttons, and explicit overflow commands become one flat overflow menu derived by ShellApp."
1294
1297
  ],
1295
1298
  "frameworkCaveats": {
1296
1299
  "customElements": [
1297
- "Assign breadcrumbs, sections, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
1300
+ "Assign breadcrumbs, sections, actionItems, primaryAction, and actions as JavaScript properties and replace array or object identities when controlled state changes.",
1298
1301
  "Handle dsBack for compact navigation and dsBreadcrumbSelect for application-owned expanded breadcrumb navigation, update value after dsSectionChange, and execute product commands from dsAction."
1299
1302
  ],
1300
1303
  "react": [
1301
- "Pass breadcrumb, section, and action arrays directly to DsBarTitle and keep value controlled from route state.",
1304
+ "Pass breadcrumb, section, and ordered action arrays directly to DsBarTitle and keep value controlled from route state.",
1302
1305
  "Place DsBarTitle in DsShellPage with slot=header when automatic page behavior is required."
1303
1306
  ],
1304
1307
  "angular": [
@@ -1323,6 +1326,10 @@
1323
1326
  },
1324
1327
  "api": {
1325
1328
  "props": {
1329
+ "actionItems": {
1330
+ "type": "BarTitleActionConfigItem[]",
1331
+ "required": false
1332
+ },
1326
1333
  "actions": {
1327
1334
  "type": "BarTitleActionItem[]",
1328
1335
  "required": false
@@ -1727,7 +1734,8 @@
1727
1734
  "useWhen": [
1728
1735
  "The user initiates the single primary command in a local decision area.",
1729
1736
  "An action's consequence requires a matching semantic treatment.",
1730
- "A standalone compact primary action needs an icon-only presentation with an explicit accessible name."
1737
+ "A standalone compact primary action needs an icon-only presentation with an explicit accessible name.",
1738
+ "The primary command has closely related alternatives and needs split mode without losing its filled intent, contrast, variant, or loading treatment."
1731
1739
  ],
1732
1740
  "avoidWhen": [
1733
1741
  "Another filled action already exists in the same local decision area.",
@@ -1764,6 +1772,7 @@
1764
1772
  ],
1765
1773
  "accessibility": [
1766
1774
  "Provide an explicit accessible name for icon-only buttons.",
1775
+ "In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
1767
1776
  "Set hasMenu when the action opens a Menu; it implies aria-haspopup of menu and renders the trailing chevron. Pass controls with the Menu id and expanded from the same open state given to Menu.",
1768
1777
  "Use haspopup directly for a non-menu popup such as a dialog; that case gets no chevron.",
1769
1778
  "Use inactive state only when the action must remain visible but unavailable.",
@@ -1787,7 +1796,9 @@
1787
1796
  "Visible labels are emphasized by default. Set labelEmphasis to false when a composed surface deliberately needs the button label to match adjacent regular-weight control labels; this does not change the action hierarchy, foreground, icon, or interaction states.",
1788
1797
  "ButtonFilled has no active, pressed, or selected state; a filled action is a command, not a toggle or a persistent selection.",
1789
1798
  "An open popup is a transient pressed state instead. While expanded is true the pressed wash is held for the popup's complete rendered lifecycle and survives hover, so the trigger reads as held open without introducing a selected treatment.",
1790
- "hasMenu supports only the label and icon-label variants. The chevron is what communicates that a menu will open, so an icon-only filled menu button would leave the affordance unstated."
1799
+ "hasMenu supports only the label and icon-label variants. The chevron is what communicates that a menu will open, so an icon-only filled menu button would leave the affordance unstated.",
1800
+ "Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
1801
+ "Split mode keeps both segments flush and uses a tertiary on-background separator. Rounded changes the shared outer radius without separating the segments."
1791
1802
  ],
1792
1803
  "responsiveBehavior": [
1793
1804
  "Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts."
@@ -1876,6 +1887,10 @@
1876
1887
  "type": "boolean",
1877
1888
  "required": false
1878
1889
  },
1890
+ "menuAriaLabel": {
1891
+ "type": "string",
1892
+ "required": false
1893
+ },
1879
1894
  "pressScale": {
1880
1895
  "type": "boolean",
1881
1896
  "required": false
@@ -1888,6 +1903,10 @@
1888
1903
  "type": "ButtonFilledSize",
1889
1904
  "required": false
1890
1905
  },
1906
+ "split": {
1907
+ "type": "boolean",
1908
+ "required": false
1909
+ },
1891
1910
  "type": {
1892
1911
  "type": "'button' | 'submit' | 'reset'",
1893
1912
  "required": false
@@ -1905,6 +1924,10 @@
1905
1924
  {
1906
1925
  "name": "dsClick",
1907
1926
  "detail": "MouseEvent"
1927
+ },
1928
+ {
1929
+ "name": "dsMenuClick",
1930
+ "detail": "MouseEvent"
1908
1931
  }
1909
1932
  ],
1910
1933
  "slots": []
@@ -1942,7 +1965,8 @@
1942
1965
  "A secondary command accompanies the single filled primary action in a local decision area.",
1943
1966
  "A toolbar, tool rail, overflow area, or shell region needs a compact icon action.",
1944
1967
  "A command represents a persistent toggle or mode whose active state remains meaningful after activation.",
1945
- "A row, card, or toolbar needs an overflow or more-options menu; this is the only component that carries that role."
1968
+ "A row, card, or toolbar needs an overflow or more-options menu; this is the only component that carries that role.",
1969
+ "A secondary command has closely related alternatives and needs split mode without losing its border, surface, active, variant, or loading treatment."
1946
1970
  ],
1947
1971
  "avoidWhen": [
1948
1972
  "The command is the single primary action in a local decision area; use ButtonFilled instead.",
@@ -1977,6 +2001,7 @@
1977
2001
  ],
1978
2002
  "accessibility": [
1979
2003
  "Provide an explicit accessible name for every icon-only action.",
2004
+ "In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
1980
2005
  "Set hasMenu when the button triggers a Menu; it implies aria-haspopup of menu. Pass controls with the Menu id and expanded from the same open state given to Menu. Expanded popup triggers hold only the pressed wash while open, without changing their resting foreground; expanded disclosure controls without popup semantics retain the normal resting appearance.",
1981
2006
  "Give an icon-only menu button an accessible name that states the role, such as More options or Customize table, because no visible label or chevron carries it.",
1982
2007
  "Use haspopup directly for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
@@ -2002,7 +2027,9 @@
2002
2027
  "Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
2003
2028
  "hasMenu covers two distinct menu-button shapes and the variant selects between them. With label or icon-label the action has a menu, and a trailing chevron carries the affordance. With icon the button is a menu and no chevron is added.",
2004
2029
  "Because the icon-only shape has no chevron, its glyph must convey the menu on its own. Use Ellipses for a generic more-options or overflow control. Use a specific icon when the menu has a named purpose, such as Table for Customize table.",
2005
- "An open popup is a transient pressed state rather than a selected one. While expanded is true and haspopup or hasMenu identifies a popup, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral."
2030
+ "An open popup is a transient pressed state rather than a selected one. While expanded is true and haspopup or hasMenu identifies a popup, the pressed wash is held for the popup's complete rendered lifecycle and survives hover without promoting foreground or selected fill, including when chrome opts out of selected fills with activeFill set to false. Expanded disclosure buttons without popup semantics remain visually neutral.",
2031
+ "Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick.",
2032
+ "Split mode keeps both segments flush and uses a tertiary surface-aware separator. Bordered mode also preserves the shared outer border; borderless mode limits the separator to the content line height."
2006
2033
  ],
2007
2034
  "responsiveBehavior": [
2008
2035
  "The consuming layout decides when an icon-label action becomes icon-only and must provide an explicit accessible name after changing variants. Table caption Customize is one such layout: below 900px it uses the icon shape while keeping the same neutral resting foreground regardless of the controlled column configuration.",
@@ -2106,6 +2133,10 @@
2106
2133
  "type": "boolean",
2107
2134
  "required": false
2108
2135
  },
2136
+ "menuAriaLabel": {
2137
+ "type": "string",
2138
+ "required": false
2139
+ },
2109
2140
  "pressScale": {
2110
2141
  "type": "boolean",
2111
2142
  "required": false
@@ -2122,6 +2153,10 @@
2122
2153
  "type": "ButtonUnfilledSize",
2123
2154
  "required": false
2124
2155
  },
2156
+ "split": {
2157
+ "type": "boolean",
2158
+ "required": false
2159
+ },
2125
2160
  "type": {
2126
2161
  "type": "'button' | 'submit' | 'reset'",
2127
2162
  "required": false
@@ -2143,6 +2178,10 @@
2143
2178
  {
2144
2179
  "name": "dsClick",
2145
2180
  "detail": "MouseEvent"
2181
+ },
2182
+ {
2183
+ "name": "dsMenuClick",
2184
+ "detail": "MouseEvent"
2146
2185
  }
2147
2186
  ],
2148
2187
  "slots": []
@@ -7695,6 +7734,7 @@
7695
7734
  "Managed composition is the standard. Supply navigation, pageChrome, and tools objects plus named tool-view and default page-content slots.",
7696
7735
  "The application router owns the current route, authorization filtering, Dashboard or Settings context, destination collections, section collections, and localized content labels.",
7697
7736
  "ShellApp renders the lower-level desktop, tablet, and mobile chrome, coordinates layout, gradient alignment, transitions, shortcuts, global surfaces, optional Inbox state, focus restoration, and mobile-stage visibility.",
7737
+ "Desktop and tablet PanelNav and PanelTools width motion is one continuous layout transition: the shell bar or title and routed page must follow the same intermediate lane widths without terminal-state snapping, overlapping chrome, transform scaling, or temporary replacement backgrounds.",
7698
7738
  "The application router owns authorization, current URLs, history, and route execution; ShellApp forwards navigation and page intent events without routing.",
7699
7739
  "sectionNavigation is an application-controlled preference: bar keeps route sections in BarNav, while panel renders them as nested PanelNav children and places compact BarTitle in the shell bar.",
7700
7740
  "Managed ShellApp derives ShellPage desktop header placement from sectionNavigation. Panel mode removes page-local title geometry, restores the standard responsive top gutter, and preserves full-bleed page content without requiring route-specific navigation branches.",
@@ -7711,6 +7751,7 @@
7711
7751
  "Dashboard represents day-to-day operational work while Settings represents administrative and configuration work; route state selects the context.",
7712
7752
  "Replace navigation and pageChrome together from one completed route state.",
7713
7753
  "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.",
7754
+ "Route-owned ordered page actions drive both BarTitle and MobileHeader. ShellApp forwards one flat page-action id and owns the derived mobile overflow menu so routes do not duplicate menu state or choices.",
7714
7755
  "Managed ShellApp keeps the selected desktop section-navigation presentation and ShellPage present and owns page header stickiness and the content scroller.",
7715
7756
  "Route-owned pageChrome independently selects ShellPage contentInset, page-header seams, scroll compaction, expanded and compact header-divider visibility, and contentSurface. ShellApp forwards them while resolving whether desktop title geometry is page-local or shell-bar-owned.",
7716
7757
  "The application filters unauthorized destinations, sections, and tools before passing them into shell components."
@@ -7735,6 +7776,7 @@
7735
7776
  "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.",
7736
7777
  "Paper texture chrome is desktop/tablet-only and follows the fixed viewport phase of the shell chrome; mobile remains a solid primary stage.",
7737
7778
  "Managed page-header capacity follows only the fixed shell breakpoint: roomy on desktop and compact on tablet. Opening PanelTools does not compact or constrain BarTitle.",
7779
+ "Mobile keeps at most the first eligible ordered icon command visible and moves labeled buttons, menu choices, split actions, and explicit overflow commands into one shell-owned text-only page-actions menu.",
7738
7780
  "The bottom bar remains visible at all route and tool depths in the foundation release."
7739
7781
  ],
7740
7782
  "frameworkCaveats": {
@@ -7902,7 +7944,9 @@
7902
7944
  "componentDependencies": [
7903
7945
  "bar-nav",
7904
7946
  "bar-title",
7947
+ "button-filled",
7905
7948
  "button-unfilled",
7949
+ "menu",
7906
7950
  "mobile-bar-nav",
7907
7951
  "mobile-header",
7908
7952
  "mobile-sheet-nav",
@@ -9101,7 +9145,7 @@
9101
9145
  "An active member sort toggles only between ascending and descending; activating a different sortable label moves the one sorting state to that key. Applications may still clear the controlled sort state explicitly. Grouping does not introduce another interactive direction.",
9102
9146
  "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.",
9103
9147
  "Initial loading defaults to ten row-shaped skeletons and preserves row dividers, column dividers, selection lanes, and sticky boundaries. A selectable table renders a checkbox-sized control skeleton in its selection lane so loading geometry matches the real checkbox instead of a generic icon. Each column may declare representative text, multiline text, image, Tag, icon, icon-and-text, action, or intentionally blank loading geometry; the table applies the matching resolved-cell padding and track anatomy so the placeholder row has the same height and rhythm as its data row. Columns without a declaration use one text line, while action columns infer an icon action placeholder. chromeLoading replaces opted-in table-owned caption controls with non-interactive control skeletons in the same slots and at the same dimensions, without changing dataMode or the surrounding caption geometry. Empty and initial error replace only the body with ds-empty-state, using Inbox or ErrorTriangle plus the table heading and body copy. In height-bounded and maxHeight tables that region fills the remaining viewport below the column header; content-sized tables keep a minimum empty-region height. Empty, initial error, load-more, retry, loading-more, and terminal bands remain fixed to the visible table width while data columns scroll horizontally beneath them. Incremental loading retains existing rows and supports automatic sentinel, manual load-more, retry, and terminal states. When grouping is active, each expanded group owns its load band at the end of its member rows; internal group load bands keep their bottom divider, while a terminal group load band yields it to the table edge or footer. The global bottom-of-table loader is not rendered.",
9104
- "dataMode selects the top-level window: infinite appends ungrouped rows through dsLoadMore when hasMore is true, pagination renders the controlled page supplied by the application and emits dsPaginationChange, and virtual recycles row DOM over the full in-memory rows or groups the application already supplied. Infinite mode also covers fixed result sets by leaving hasMore false. In a grouped paginated table, pagination counts and windows only parent groups; each expanded parent can still append its own members through dsGroupLoadMore. Virtual mode does not fetch, ignores hasMore and load bands, and requires a bounded viewport (height, maxHeight, or fitViewport with a definite block size). Without that height it fails visibly instead of mounting every row. The application owns requests, cancellation, cursors, deduplication, slicing, and query identity.",
9148
+ "dataMode selects the top-level window: infinite appends ungrouped rows through dsLoadMore when hasMore is true, pagination renders the controlled page supplied by the application and emits dsPaginationChange, and virtual recycles row DOM over the full in-memory rows or groups the application already supplied. A bounded ungrouped infinite or pagination window with more than 50 supplied rows also recycles visible row DOM internally while preserving its selected data mode, complete supplied-window row count, selection scope, footer, and load behavior. Smaller and grouped non-virtual windows retain their supplied row DOM while deferring off-screen row content with token-aligned intrinsic heights. Infinite mode also covers fixed result sets by leaving hasMore false. In a grouped paginated table, pagination counts and windows only parent groups; each expanded parent can still append its own members through dsGroupLoadMore. Virtual mode does not fetch, ignores hasMore and load bands, and requires a bounded viewport (height, maxHeight, or fitViewport with a definite block size). Without that height it fails visibly instead of mounting every row. The application owns requests, cancellation, cursors, deduplication, slicing, and query identity.",
9105
9149
  "When pagination enables Fit to page on a bounded table, the table proposes the number of complete top-level rows that fit below its column header. Grouped tables count group headers only; member rows never affect capacity. Selecting Fit captures that numeric snapshot. A changed fitIdentity requests one fresh snapshot for a new query shape, while viewport resizing alone does not change the active controlled page size.",
9106
9150
  "Rows opt into complete-row activation with interactive and emit dsRowActivate without owning navigation. Selection paints through the shared selected ::before layer; interactive hover and press paint through the shared ::after layer.",
9107
9151
  "Row selection owns the single sticky start lane. One explicitly sized application column can own the sticky end lane, or the start lane when selection is absent. Each sticky boundary owns one fixed divider and a row-clipped directional shadow that paints into the adjacent scrolling columns only while more inline content remains beyond that edge.",
@@ -12,7 +12,7 @@ export declare class DsBarTitle {
12
12
  dsAction: EventEmitter<DsBarTitleCustomEvent<string>>;
13
13
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<DsBarTitle, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<DsBarTitle, "ds-bar-title", never, { "actions": { "alias": "actions"; "required": false; }; "actionsAriaLabel": { "alias": "actionsAriaLabel"; "required": false; }; "backAriaLabel": { "alias": "backAriaLabel"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "breadcrumbAriaLabel": { "alias": "breadcrumbAriaLabel"; "required": false; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; }; "description": { "alias": "description"; "required": false; }; "heading": { "alias": "heading"; "required": true; }; "placement": { "alias": "placement"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "sectionsAriaLabel": { "alias": "sectionsAriaLabel"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "showCompactDivider": { "alias": "showCompactDivider"; "required": false; }; "showDivider": { "alias": "showDivider"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "dsBack": "dsBack"; "dsBreadcrumbSelect": "dsBreadcrumbSelect"; "dsSectionChange": "dsSectionChange"; "dsAction": "dsAction"; }, never, ["*"], true, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsBarTitle, "ds-bar-title", never, { "actionItems": { "alias": "actionItems"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "actionsAriaLabel": { "alias": "actionsAriaLabel"; "required": false; }; "backAriaLabel": { "alias": "backAriaLabel"; "required": false; }; "backLabel": { "alias": "backLabel"; "required": false; }; "breadcrumbAriaLabel": { "alias": "breadcrumbAriaLabel"; "required": false; }; "breadcrumbs": { "alias": "breadcrumbs"; "required": false; }; "description": { "alias": "description"; "required": false; }; "heading": { "alias": "heading"; "required": true; }; "placement": { "alias": "placement"; "required": false; }; "primaryAction": { "alias": "primaryAction"; "required": false; }; "sections": { "alias": "sections"; "required": false; }; "sectionsAriaLabel": { "alias": "sectionsAriaLabel"; "required": false; }; "showBack": { "alias": "showBack"; "required": false; }; "showCompactDivider": { "alias": "showCompactDivider"; "required": false; }; "showDivider": { "alias": "showDivider"; "required": false; }; "value": { "alias": "value"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; }, { "dsBack": "dsBack"; "dsBreadcrumbSelect": "dsBreadcrumbSelect"; "dsSectionChange": "dsSectionChange"; "dsAction": "dsAction"; }, never, ["*"], true, never>;
16
16
  }
17
17
  export declare interface DsBarTitle extends Components.DsBarTitle {
18
18
  /**
@@ -21,12 +21,12 @@ let DsBarTitle = class DsBarTitle {
21
21
  this.el = r.nativeElement;
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsBarTitle, 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: DsBarTitle, isStandalone: true, selector: "ds-bar-title", inputs: { actions: "actions", actionsAriaLabel: "actionsAriaLabel", backAriaLabel: "backAriaLabel", backLabel: "backLabel", breadcrumbAriaLabel: "breadcrumbAriaLabel", breadcrumbs: "breadcrumbs", description: "description", heading: "heading", placement: "placement", primaryAction: "primaryAction", sections: "sections", sectionsAriaLabel: "sectionsAriaLabel", showBack: "showBack", showCompactDivider: "showCompactDivider", showDivider: "showDivider", value: "value", variant: "variant" }, outputs: { dsBack: "dsBack", dsBreadcrumbSelect: "dsBreadcrumbSelect", dsSectionChange: "dsSectionChange", dsAction: "dsAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsBarTitle, isStandalone: true, selector: "ds-bar-title", inputs: { actionItems: "actionItems", actions: "actions", actionsAriaLabel: "actionsAriaLabel", backAriaLabel: "backAriaLabel", backLabel: "backLabel", breadcrumbAriaLabel: "breadcrumbAriaLabel", breadcrumbs: "breadcrumbs", description: "description", heading: "heading", placement: "placement", primaryAction: "primaryAction", sections: "sections", sectionsAriaLabel: "sectionsAriaLabel", showBack: "showBack", showCompactDivider: "showCompactDivider", showDivider: "showDivider", value: "value", variant: "variant" }, outputs: { dsBack: "dsBack", dsBreadcrumbSelect: "dsBreadcrumbSelect", dsSectionChange: "dsSectionChange", dsAction: "dsAction" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  };
26
26
  DsBarTitle = __decorate([
27
27
  ProxyCmp({
28
28
  defineCustomElementFn: defineDsBarTitle,
29
- inputs: ['actions', 'actionsAriaLabel', 'backAriaLabel', 'backLabel', 'breadcrumbAriaLabel', 'breadcrumbs', 'description', 'heading', 'placement', 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value', 'variant']
29
+ inputs: ['actionItems', 'actions', 'actionsAriaLabel', 'backAriaLabel', 'backLabel', 'breadcrumbAriaLabel', 'breadcrumbs', 'description', 'heading', 'placement', 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value', 'variant']
30
30
  })
31
31
  ], DsBarTitle);
32
32
  export { DsBarTitle };
@@ -37,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
37
37
  changeDetection: ChangeDetectionStrategy.OnPush,
38
38
  template: '<ng-content></ng-content>',
39
39
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
40
- inputs: ['actions', 'actionsAriaLabel', 'backAriaLabel', 'backLabel', 'breadcrumbAriaLabel', 'breadcrumbs', 'description', { name: 'heading', required: true }, 'placement', 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value', 'variant'],
40
+ inputs: ['actionItems', 'actions', 'actionsAriaLabel', 'backAriaLabel', 'backLabel', 'breadcrumbAriaLabel', 'breadcrumbs', 'description', { name: 'heading', required: true }, 'placement', 'primaryAction', 'sections', 'sectionsAriaLabel', 'showBack', 'showCompactDivider', 'showDivider', 'value', 'variant'],
41
41
  outputs: ['dsBack', 'dsBreadcrumbSelect', 'dsSectionChange', 'dsAction'],
42
42
  }]
43
43
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsBack: [{
@@ -6,10 +6,12 @@ export declare class DsButtonFilled {
6
6
  protected z: NgZone;
7
7
  protected el: HTMLDsButtonFilledElement;
8
8
  dsClick: EventEmitter<DsButtonFilledCustomEvent<MouseEvent>>;
9
+ dsMenuClick: EventEmitter<DsButtonFilledCustomEvent<MouseEvent>>;
9
10
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<DsButtonFilled, never>;
11
- static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonFilled, "ds-button-filled", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "contrast": { "alias": "contrast"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "intent": { "alias": "intent"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelEmphasis": { "alias": "labelEmphasis"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; }, never, ["*"], true, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonFilled, "ds-button-filled", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "contrast": { "alias": "contrast"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "intent": { "alias": "intent"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelEmphasis": { "alias": "labelEmphasis"; "required": false; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "split": { "alias": "split"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; "dsMenuClick": "dsMenuClick"; }, never, ["*"], true, never>;
12
13
  }
13
14
  export declare interface DsButtonFilled extends Components.DsButtonFilled {
14
15
  dsClick: EventEmitter<DsButtonFilledCustomEvent<MouseEvent>>;
16
+ dsMenuClick: EventEmitter<DsButtonFilledCustomEvent<MouseEvent>>;
15
17
  }
@@ -14,16 +14,17 @@ let DsButtonFilled = class DsButtonFilled {
14
14
  constructor(c, r, z) {
15
15
  this.z = z;
16
16
  this.dsClick = new EventEmitter();
17
+ this.dsMenuClick = new EventEmitter();
17
18
  c.detach();
18
19
  this.el = r.nativeElement;
19
20
  }
20
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsButtonFilled, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsButtonFilled, isStandalone: true, selector: "ds-button-filled", inputs: { ariaLabel: "ariaLabel", background: "background", contrast: "contrast", controls: "controls", expanded: "expanded", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", intent: "intent", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", labelEmphasis: "labelEmphasis", pressScale: "pressScale", rounded: "rounded", size: "size", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick" }, 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: DsButtonFilled, isStandalone: true, selector: "ds-button-filled", inputs: { ariaLabel: "ariaLabel", background: "background", contrast: "contrast", controls: "controls", expanded: "expanded", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", intent: "intent", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", labelEmphasis: "labelEmphasis", menuAriaLabel: "menuAriaLabel", pressScale: "pressScale", rounded: "rounded", size: "size", split: "split", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick", dsMenuClick: "dsMenuClick" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
22
23
  };
23
24
  DsButtonFilled = __decorate([
24
25
  ProxyCmp({
25
26
  defineCustomElementFn: defineDsButtonFilled,
26
- inputs: ['ariaLabel', 'background', 'contrast', 'controls', 'expanded', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'intent', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'pressScale', 'rounded', 'size', 'type', 'variant', 'width'],
27
+ inputs: ['ariaLabel', 'background', 'contrast', 'controls', 'expanded', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'intent', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'menuAriaLabel', 'pressScale', 'rounded', 'size', 'split', 'type', 'variant', 'width'],
27
28
  methods: ['setFocus']
28
29
  })
29
30
  ], DsButtonFilled);
@@ -35,9 +36,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
35
36
  changeDetection: ChangeDetectionStrategy.OnPush,
36
37
  template: '<ng-content></ng-content>',
37
38
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
38
- inputs: ['ariaLabel', 'background', 'contrast', 'controls', 'expanded', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'intent', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'pressScale', 'rounded', 'size', 'type', 'variant', 'width'],
39
- outputs: ['dsClick'],
39
+ inputs: ['ariaLabel', 'background', 'contrast', 'controls', 'expanded', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'intent', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'menuAriaLabel', 'pressScale', 'rounded', 'size', 'split', 'type', 'variant', 'width'],
40
+ outputs: ['dsClick', 'dsMenuClick'],
40
41
  }]
41
42
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsClick: [{
42
43
  type: Output
44
+ }], dsMenuClick: [{
45
+ type: Output
43
46
  }] } });
@@ -6,12 +6,14 @@ export declare class DsButtonUnfilled {
6
6
  protected z: NgZone;
7
7
  protected el: HTMLDsButtonUnfilledElement;
8
8
  dsClick: EventEmitter<DsButtonUnfilledCustomEvent<MouseEvent>>;
9
+ dsMenuClick: EventEmitter<DsButtonUnfilledCustomEvent<MouseEvent>>;
9
10
  dsChange: EventEmitter<DsButtonUnfilledCustomEvent<boolean>>;
10
11
  constructor(c: ChangeDetectorRef, r: ElementRef, z: NgZone);
11
12
  static ɵfac: i0.ɵɵFactoryDeclaration<DsButtonUnfilled, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonUnfilled, "ds-button-unfilled", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "focusTabIndex": { "alias": "focusTabIndex"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "isActive": { "alias": "isActive"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelEmphasis": { "alias": "labelEmphasis"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "pressed": { "alias": "pressed"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; "dsChange": "dsChange"; }, never, ["*"], true, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<DsButtonUnfilled, "ds-button-unfilled", never, { "activeFill": { "alias": "activeFill"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "background": { "alias": "background"; "required": false; }; "collapseLabel": { "alias": "collapseLabel"; "required": false; }; "controls": { "alias": "controls"; "required": false; }; "dot": { "alias": "dot"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "focusTabIndex": { "alias": "focusTabIndex"; "required": false; }; "hasBorder": { "alias": "hasBorder"; "required": false; }; "hasMenu": { "alias": "hasMenu"; "required": false; }; "haspopup": { "alias": "haspopup"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "insetDepth": { "alias": "insetDepth"; "required": false; }; "isActive": { "alias": "isActive"; "required": false; }; "isInactive": { "alias": "isInactive"; "required": false; }; "isInset": { "alias": "isInset"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelEmphasis": { "alias": "labelEmphasis"; "required": false; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; }; "pressScale": { "alias": "pressScale"; "required": false; }; "pressed": { "alias": "pressed"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "size": { "alias": "size"; "required": false; }; "split": { "alias": "split"; "required": false; }; "type": { "alias": "type"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "dsClick": "dsClick"; "dsMenuClick": "dsMenuClick"; "dsChange": "dsChange"; }, never, ["*"], true, never>;
13
14
  }
14
15
  export declare interface DsButtonUnfilled extends Components.DsButtonUnfilled {
15
16
  dsClick: EventEmitter<DsButtonUnfilledCustomEvent<MouseEvent>>;
17
+ dsMenuClick: EventEmitter<DsButtonUnfilledCustomEvent<MouseEvent>>;
16
18
  dsChange: EventEmitter<DsButtonUnfilledCustomEvent<boolean>>;
17
19
  }
@@ -14,17 +14,18 @@ let DsButtonUnfilled = class DsButtonUnfilled {
14
14
  constructor(c, r, z) {
15
15
  this.z = z;
16
16
  this.dsClick = new EventEmitter();
17
+ this.dsMenuClick = new EventEmitter();
17
18
  this.dsChange = new EventEmitter();
18
19
  c.detach();
19
20
  this.el = r.nativeElement;
20
21
  }
21
22
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: DsButtonUnfilled, 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: DsButtonUnfilled, isStandalone: true, selector: "ds-button-unfilled", inputs: { activeFill: "activeFill", ariaLabel: "ariaLabel", background: "background", collapseLabel: "collapseLabel", controls: "controls", dot: "dot", expanded: "expanded", focusTabIndex: "focusTabIndex", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", isActive: "isActive", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", labelEmphasis: "labelEmphasis", pressScale: "pressScale", pressed: "pressed", rounded: "rounded", size: "size", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick", dsChange: "dsChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: DsButtonUnfilled, isStandalone: true, selector: "ds-button-unfilled", inputs: { activeFill: "activeFill", ariaLabel: "ariaLabel", background: "background", collapseLabel: "collapseLabel", controls: "controls", dot: "dot", expanded: "expanded", focusTabIndex: "focusTabIndex", hasBorder: "hasBorder", hasMenu: "hasMenu", haspopup: "haspopup", icon: "icon", insetDepth: "insetDepth", isActive: "isActive", isInactive: "isInactive", isInset: "isInset", isLoading: "isLoading", label: "label", labelEmphasis: "labelEmphasis", menuAriaLabel: "menuAriaLabel", pressScale: "pressScale", pressed: "pressed", rounded: "rounded", size: "size", split: "split", type: "type", variant: "variant", width: "width" }, outputs: { dsClick: "dsClick", dsMenuClick: "dsMenuClick", dsChange: "dsChange" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
24
  };
24
25
  DsButtonUnfilled = __decorate([
25
26
  ProxyCmp({
26
27
  defineCustomElementFn: defineDsButtonUnfilled,
27
- inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
28
+ inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'menuAriaLabel', 'pressScale', 'pressed', 'rounded', 'size', 'split', 'type', 'variant', 'width'],
28
29
  methods: ['setFocus']
29
30
  })
30
31
  ], DsButtonUnfilled);
@@ -36,11 +37,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
36
37
  changeDetection: ChangeDetectionStrategy.OnPush,
37
38
  template: '<ng-content></ng-content>',
38
39
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
39
- inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'pressScale', 'pressed', 'rounded', 'size', 'type', 'variant', 'width'],
40
- outputs: ['dsClick', 'dsChange'],
40
+ inputs: ['activeFill', 'ariaLabel', 'background', 'collapseLabel', 'controls', 'dot', 'expanded', 'focusTabIndex', 'hasBorder', 'hasMenu', 'haspopup', 'icon', 'insetDepth', 'isActive', 'isInactive', 'isInset', 'isLoading', 'label', 'labelEmphasis', 'menuAriaLabel', 'pressScale', 'pressed', 'rounded', 'size', 'split', 'type', 'variant', 'width'],
41
+ outputs: ['dsClick', 'dsMenuClick', 'dsChange'],
41
42
  }]
42
43
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }], propDecorators: { dsClick: [{
43
44
  type: Output
45
+ }], dsMenuClick: [{
46
+ type: Output
44
47
  }], dsChange: [{
45
48
  type: Output
46
49
  }] } });
@@ -1,2 +1,2 @@
1
- import{A as o,d as s}from"./p-CrYJnDev.js";const r=o;const t=s;export{r as DsAgentQuestionnaire,t as defineCustomElement};
1
+ import{A as o,d as s}from"./p-DiS5BgLA.js";const t=o;const p=s;export{t as DsAgentQuestionnaire,p as defineCustomElement};
2
2
  //# sourceMappingURL=ds-agent-questionnaire.js.map
@@ -1,2 +1,2 @@
1
- import{p as s,H as e,h as t,a,t as o}from"./index.js";import{d as i}from"./p-x5u5Ueli.js";import{d as r}from"./p-CrYJnDev.js";import{d as n}from"./p-BXv6RpoF.js";import{d}from"./p-w9fkkwL2.js";import{d as m}from"./p-B0kSlcaw.js";import{d as c}from"./p-DzPtYdXy.js";import{d as l}from"./p-BnTPuV3x.js";import{d as f}from"./p-7MWaWl8w.js";import{d as u}from"./p-CBymzuOO.js";import{d as p}from"./p-DiyO47xX.js";import{d as b}from"./p-Cea7rROU.js";import{d as k}from"./p-0XTyQNRG.js";import{d as h}from"./p-CilwchJH.js";import{d as g}from"./p-CTH3dSYg.js";import{d as y}from"./p-DI8DUozc.js";import{d as w}from"./p-Cd1JnnVK.js";import{d as E}from"./p-9X_p0bHr.js";const j=()=>`.sc-ds-agent-response-h{display:block;width:100%;--ds-prose-text-max-inline-size:var(--dimension-panel-width-lg);-webkit-user-select:none;user-select:none}.agent-response.sc-ds-agent-response{display:grid;gap:var(--dimension-space-150);min-width:0;width:100%;-webkit-user-select:none;user-select:none}`;const x=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.messageId="";this.author="";this.showAuthor=true;this.timestamp="";this.parts=[];this.renderMode="parts";this.streaming=false;this.metadataVisibility="always"}renderPart(s){switch(s.type){case"markdown":return t("ds-markdown",{key:s.id,content:s.content,streaming:s.state==="streaming"});case"activity":return t("ds-agent-activity",{key:s.id,items:s.items});case"tool":return t("ds-agent-tool-call",{key:s.id,name:s.name,label:s.label,state:s.state,input:s.input,output:s.output,error:s.error});case"attachments":return t("ds-attachment-list",{key:s.id,items:s.items});case"sources":return t("ds-agent-source-list",{key:s.id,items:s.items});case"questionnaire":return t("ds-agent-questionnaire",{key:s.id,requestId:s.requestId,questions:s.questions,answers:s.answers,status:"answered"})}}render(){return t(a,{key:"db10ea33a2fc6e46bcabc1cb26babf169f5b03be"},t("ds-message",{key:"a8eb1fa5758d33f89749b2346673ed58b6b8a89b",messageId:this.messageId,direction:"incoming",author:this.author,showAuthor:this.showAuthor,timestamp:this.timestamp,streaming:this.streaming,metadataVisibility:this.metadataVisibility},t("div",{key:"f5fdc038dff60073e5b48d6c0df1af1fc25a7b6d",class:"agent-response"},this.renderMode==="composed"?t("slot",null):this.parts.map((s=>this.renderPart(s)))),t("slot",{key:"59fdb0bad04a1007969b6fb90d2db24f4829c78c",name:"footer",slot:"footer"}),t("slot",{key:"76dd5a653b78ae66dbb9f2c6e63e1cc14d8964e0",name:"metadata-actions",slot:"metadata-actions"}),t("slot",{key:"a128d8e692dd33d312e7b650778a7eb80f8ac2af",name:"actions",slot:"actions"})))}static get style(){return j()}},[262,"ds-agent-response",{messageId:[1,"message-id"],author:[1],showAuthor:[4,"show-author"],timestamp:[1],parts:[16],renderMode:[1,"render-mode"],streaming:[4],metadataVisibility:[1,"metadata-visibility"]}]);function v(){if(typeof customElements==="undefined"){return}const s=["ds-agent-response","ds-agent-activity","ds-agent-questionnaire","ds-agent-source-list","ds-agent-tool-call","ds-attachment-list","ds-badge","ds-button-filled","ds-button-unfilled","ds-checkbox","ds-code-block","ds-icon","ds-loader","ds-markdown","ds-message","ds-radio","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-agent-response":if(!customElements.get(o(s))){customElements.define(o(s),x)}break;case"ds-agent-activity":if(!customElements.get(o(s))){i()}break;case"ds-agent-questionnaire":if(!customElements.get(o(s))){r()}break;case"ds-agent-source-list":if(!customElements.get(o(s))){n()}break;case"ds-agent-tool-call":if(!customElements.get(o(s))){d()}break;case"ds-attachment-list":if(!customElements.get(o(s))){m()}break;case"ds-badge":if(!customElements.get(o(s))){c()}break;case"ds-button-filled":if(!customElements.get(o(s))){l()}break;case"ds-button-unfilled":if(!customElements.get(o(s))){f()}break;case"ds-checkbox":if(!customElements.get(o(s))){u()}break;case"ds-code-block":if(!customElements.get(o(s))){p()}break;case"ds-icon":if(!customElements.get(o(s))){b()}break;case"ds-loader":if(!customElements.get(o(s))){k()}break;case"ds-markdown":if(!customElements.get(o(s))){h()}break;case"ds-message":if(!customElements.get(o(s))){g()}break;case"ds-radio":if(!customElements.get(o(s))){y()}break;case"ds-text":if(!customElements.get(o(s))){w()}break;case"ds-tooltip":if(!customElements.get(o(s))){E()}break}}))}v();const q=x;const C=v;export{q as DsAgentResponse,C as defineCustomElement};
1
+ import{p as s,H as e,h as t,a,t as o}from"./index.js";import{d as i}from"./p-x5u5Ueli.js";import{d as r}from"./p-DiS5BgLA.js";import{d}from"./p-BXv6RpoF.js";import{d as n}from"./p-w9fkkwL2.js";import{d as m}from"./p-B0kSlcaw.js";import{d as c}from"./p-DzPtYdXy.js";import{d as l}from"./p-BR1ayqMU.js";import{d as f}from"./p-kslioYhf.js";import{d as u}from"./p-CBymzuOO.js";import{d as p}from"./p-PXdvBMXB.js";import{d as b}from"./p-Cea7rROU.js";import{d as k}from"./p-0XTyQNRG.js";import{d as h}from"./p-CglHiyY2.js";import{d as g}from"./p-CTH3dSYg.js";import{d as y}from"./p-DI8DUozc.js";import{d as w}from"./p-Cd1JnnVK.js";import{d as E}from"./p-9X_p0bHr.js";const j=()=>`.sc-ds-agent-response-h{display:block;width:100%;--ds-prose-text-max-inline-size:var(--dimension-panel-width-lg);-webkit-user-select:none;user-select:none}.agent-response.sc-ds-agent-response{display:grid;gap:var(--dimension-space-150);min-width:0;width:100%;-webkit-user-select:none;user-select:none}`;const v=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.messageId="";this.author="";this.showAuthor=true;this.timestamp="";this.parts=[];this.renderMode="parts";this.streaming=false;this.metadataVisibility="always"}renderPart(s){switch(s.type){case"markdown":return t("ds-markdown",{key:s.id,content:s.content,streaming:s.state==="streaming"});case"activity":return t("ds-agent-activity",{key:s.id,items:s.items});case"tool":return t("ds-agent-tool-call",{key:s.id,name:s.name,label:s.label,state:s.state,input:s.input,output:s.output,error:s.error});case"attachments":return t("ds-attachment-list",{key:s.id,items:s.items});case"sources":return t("ds-agent-source-list",{key:s.id,items:s.items});case"questionnaire":return t("ds-agent-questionnaire",{key:s.id,requestId:s.requestId,questions:s.questions,answers:s.answers,status:"answered"})}}render(){return t(a,{key:"db10ea33a2fc6e46bcabc1cb26babf169f5b03be"},t("ds-message",{key:"a8eb1fa5758d33f89749b2346673ed58b6b8a89b",messageId:this.messageId,direction:"incoming",author:this.author,showAuthor:this.showAuthor,timestamp:this.timestamp,streaming:this.streaming,metadataVisibility:this.metadataVisibility},t("div",{key:"f5fdc038dff60073e5b48d6c0df1af1fc25a7b6d",class:"agent-response"},this.renderMode==="composed"?t("slot",null):this.parts.map((s=>this.renderPart(s)))),t("slot",{key:"59fdb0bad04a1007969b6fb90d2db24f4829c78c",name:"footer",slot:"footer"}),t("slot",{key:"76dd5a653b78ae66dbb9f2c6e63e1cc14d8964e0",name:"metadata-actions",slot:"metadata-actions"}),t("slot",{key:"a128d8e692dd33d312e7b650778a7eb80f8ac2af",name:"actions",slot:"actions"})))}static get style(){return j()}},[262,"ds-agent-response",{messageId:[1,"message-id"],author:[1],showAuthor:[4,"show-author"],timestamp:[1],parts:[16],renderMode:[1,"render-mode"],streaming:[4],metadataVisibility:[1,"metadata-visibility"]}]);function x(){if(typeof customElements==="undefined"){return}const s=["ds-agent-response","ds-agent-activity","ds-agent-questionnaire","ds-agent-source-list","ds-agent-tool-call","ds-attachment-list","ds-badge","ds-button-filled","ds-button-unfilled","ds-checkbox","ds-code-block","ds-icon","ds-loader","ds-markdown","ds-message","ds-radio","ds-text","ds-tooltip"];s.forEach((s=>{switch(s){case"ds-agent-response":if(!customElements.get(o(s))){customElements.define(o(s),v)}break;case"ds-agent-activity":if(!customElements.get(o(s))){i()}break;case"ds-agent-questionnaire":if(!customElements.get(o(s))){r()}break;case"ds-agent-source-list":if(!customElements.get(o(s))){d()}break;case"ds-agent-tool-call":if(!customElements.get(o(s))){n()}break;case"ds-attachment-list":if(!customElements.get(o(s))){m()}break;case"ds-badge":if(!customElements.get(o(s))){c()}break;case"ds-button-filled":if(!customElements.get(o(s))){l()}break;case"ds-button-unfilled":if(!customElements.get(o(s))){f()}break;case"ds-checkbox":if(!customElements.get(o(s))){u()}break;case"ds-code-block":if(!customElements.get(o(s))){p()}break;case"ds-icon":if(!customElements.get(o(s))){b()}break;case"ds-loader":if(!customElements.get(o(s))){k()}break;case"ds-markdown":if(!customElements.get(o(s))){h()}break;case"ds-message":if(!customElements.get(o(s))){g()}break;case"ds-radio":if(!customElements.get(o(s))){y()}break;case"ds-text":if(!customElements.get(o(s))){w()}break;case"ds-tooltip":if(!customElements.get(o(s))){E()}break}}))}x();const q=v;const B=x;export{q as DsAgentResponse,B as defineCustomElement};
2
2
  //# sourceMappingURL=ds-agent-response.js.map