@ds-mo/ui 15.7.0 → 15.8.1

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 (191) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +7 -2
  4. package/dist/angular/ds-table.d.ts +10 -1
  5. package/dist/angular/ds-table.js +5 -2
  6. package/dist/components/ds-agent-activity.js +1 -1
  7. package/dist/components/ds-agent-questionnaire.js +1 -1
  8. package/dist/components/ds-agent-response.js +1 -1
  9. package/dist/components/ds-agent-source-list.js +1 -1
  10. package/dist/components/ds-agent-tool-call.js +1 -1
  11. package/dist/components/ds-attachment-list.js +1 -1
  12. package/dist/components/ds-avatar.js +1 -1
  13. package/dist/components/ds-avatar.js.map +1 -1
  14. package/dist/components/ds-banner.js +1 -1
  15. package/dist/components/ds-bar-action.js +1 -1
  16. package/dist/components/ds-bar-action.js.map +1 -1
  17. package/dist/components/ds-bar-nav.js +1 -1
  18. package/dist/components/ds-bar-page-title.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-button-filled.js +1 -1
  23. package/dist/components/ds-button-inverted.js +1 -1
  24. package/dist/components/ds-button-unfilled.js +1 -1
  25. package/dist/components/ds-calendar.js +1 -1
  26. package/dist/components/ds-card-action-center.js +1 -1
  27. package/dist/components/ds-card-chart.js +1 -1
  28. package/dist/components/ds-card-navigation.js +1 -1
  29. package/dist/components/ds-card-setting.js +1 -1
  30. package/dist/components/ds-chart.js +1 -1
  31. package/dist/components/ds-chip.js +1 -1
  32. package/dist/components/ds-code-block.js +1 -1
  33. package/dist/components/ds-conversation-list-item.js +1 -1
  34. package/dist/components/ds-conversation-list-item.js.map +1 -1
  35. package/dist/components/ds-data-customize.js +1 -1
  36. package/dist/components/ds-data-filter.js +1 -1
  37. package/dist/components/ds-data-group.js +1 -1
  38. package/dist/components/ds-data-preferences.js +1 -1
  39. package/dist/components/ds-data-preferences.js.map +1 -1
  40. package/dist/components/ds-data-saved-views.js +1 -1
  41. package/dist/components/ds-data-search.js +1 -1
  42. package/dist/components/ds-data-search.js.map +1 -1
  43. package/dist/components/ds-data-sort.js +1 -1
  44. package/dist/components/ds-empty-state.js +1 -1
  45. package/dist/components/ds-filter-menu.js +1 -1
  46. package/dist/components/ds-icon.js +1 -1
  47. package/dist/components/ds-input-date.js +1 -1
  48. package/dist/components/ds-input-time.js +1 -1
  49. package/dist/components/ds-input.js +1 -1
  50. package/dist/components/ds-map-entity-marker.js +1 -1
  51. package/dist/components/ds-markdown.js +1 -1
  52. package/dist/components/ds-menu.js +1 -1
  53. package/dist/components/ds-message-actions.js +1 -1
  54. package/dist/components/ds-message-composer.js +1 -1
  55. package/dist/components/ds-message-scroller.js +1 -1
  56. package/dist/components/ds-mobile-bar-nav.js +1 -1
  57. package/dist/components/ds-mobile-header.js +1 -1
  58. package/dist/components/ds-mobile-section-switcher.js +1 -1
  59. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  60. package/dist/components/ds-modal.js +1 -1
  61. package/dist/components/ds-navigation-tab-group.js +1 -1
  62. package/dist/components/ds-pagination.js +1 -1
  63. package/dist/components/ds-panel-nav.js +1 -1
  64. package/dist/components/ds-panel-tool-header.js +1 -1
  65. package/dist/components/ds-panel-tool-search.js +1 -1
  66. package/dist/components/ds-panel-tool-search.js.map +1 -1
  67. package/dist/components/ds-panel-tools.js +1 -1
  68. package/dist/components/ds-select-toggle.js +1 -1
  69. package/dist/components/ds-select.js +1 -1
  70. package/dist/components/ds-shell-app.js +1 -1
  71. package/dist/components/ds-shell-app.js.map +1 -1
  72. package/dist/components/ds-shell-tools.js +1 -1
  73. package/dist/components/ds-tab-group.js +1 -1
  74. package/dist/components/ds-table.js +1 -1
  75. package/dist/components/ds-table.js.map +1 -1
  76. package/dist/components/ds-tag.js +1 -1
  77. package/dist/components/ds-toast.js +1 -1
  78. package/dist/components/ds-tooltip-chart.js +1 -1
  79. package/dist/components/{p-DKvHBXwn.js → p-B1dnisok.js} +2 -2
  80. package/dist/components/p-B7EfrM6C.js +2 -0
  81. package/dist/components/{p-CLqqb0Jp.js.map → p-B7EfrM6C.js.map} +1 -1
  82. package/dist/components/{p-CgC4SM5b.js → p-B9ZhRwE3.js} +2 -2
  83. package/dist/components/{p-DGrSro-o.js → p-BAcdqJaa.js} +2 -2
  84. package/dist/components/{p-4sBUSsqs.js → p-BREDkBUv.js} +2 -2
  85. package/dist/components/{p-pPtjNRqC.js → p-BVsVUnAw.js} +2 -2
  86. package/dist/components/p-BVsVUnAw.js.map +1 -0
  87. package/dist/components/{p-CKSJwSWd.js → p-BWnL2SWn.js} +2 -2
  88. package/dist/components/{p-CqAC2IQO.js → p-BcmJBzB6.js} +2 -2
  89. package/dist/components/p-BjD1eFx6.js +2 -0
  90. package/dist/components/{p-CHyxUWqL.js.map → p-BjD1eFx6.js.map} +1 -1
  91. package/dist/components/{p-AGqUGzNZ.js → p-Bjm-Rk_x.js} +2 -2
  92. package/dist/components/{p-UBQ5O7B-.js → p-Bls48_RF.js} +2 -2
  93. package/dist/components/{p-oBpjD9OA.js → p-BqZWKYsS.js} +2 -2
  94. package/dist/components/p-C4YUkrr0.js +2 -0
  95. package/dist/components/{p-LJXiEPw1.js.map → p-C4YUkrr0.js.map} +1 -1
  96. package/dist/components/p-C62g3d5y.js +2 -0
  97. package/dist/components/{p-CRhoeCC8.js.map → p-C62g3d5y.js.map} +1 -1
  98. package/dist/components/p-C6EXrs1S.js +2 -0
  99. package/dist/components/{p-CvIHBa8S.js.map → p-C6EXrs1S.js.map} +1 -1
  100. package/dist/components/p-CCoJ7CBB.js +2 -0
  101. package/dist/components/{p-BKyE025p.js.map → p-CCoJ7CBB.js.map} +1 -1
  102. package/dist/components/p-CG4vPDhg.js +2 -0
  103. package/dist/components/{p-DmgDVoDb.js.map → p-CG4vPDhg.js.map} +1 -1
  104. package/dist/components/p-CJSIvfpo.js +2 -0
  105. package/dist/components/{p-C0L-VnSr.js.map → p-CJSIvfpo.js.map} +1 -1
  106. package/dist/components/p-CJuc20pQ.js +2 -0
  107. package/dist/components/p-CJuc20pQ.js.map +1 -0
  108. package/dist/components/{p-dSNHIJz6.js → p-CWAeg9jl.js} +2 -2
  109. package/dist/components/{p-BwNW5nqj.js → p-CantpOo3.js} +2 -2
  110. package/dist/components/p-D-TeAVxE.js +2 -0
  111. package/dist/components/{p-Ct2KQHF4.js.map → p-D-TeAVxE.js.map} +1 -1
  112. package/dist/components/{p-DiPqdcD4.js → p-D3JCih82.js} +2 -2
  113. package/dist/components/p-DHpcv_Os.js +2 -0
  114. package/dist/components/{p-BPDo1eQV.js.map → p-DHpcv_Os.js.map} +1 -1
  115. package/dist/components/{p-D_xZ5SFL.js → p-DWXpMWIp.js} +2 -2
  116. package/dist/components/{p-Dyjs8_Cl.js → p-DagrkX2v.js} +2 -2
  117. package/dist/components/{p-D62yUMhr.js → p-DcMbWqTd.js} +2 -2
  118. package/dist/components/{p-g2OUK8Z0.js → p-DiyL2sI5.js} +2 -2
  119. package/dist/components/p-Dvw7N7TH.js +2 -0
  120. package/dist/components/{p-D9l0QBgN.js.map → p-Dvw7N7TH.js.map} +1 -1
  121. package/dist/components/{p-v9Nhw5yM.js → p-IfsszNF0.js} +2 -2
  122. package/dist/components/p-QU4czL2k.js +2 -0
  123. package/dist/components/p-QU4czL2k.js.map +1 -0
  124. package/dist/components/{p-CCsxoztj.js → p-SXaH5TeC.js} +2 -2
  125. package/dist/components/{p-CCsxoztj.js.map → p-SXaH5TeC.js.map} +1 -1
  126. package/dist/components/p-Tf6odBOV.js +2 -0
  127. package/dist/components/{p-CXB_T13u.js.map → p-Tf6odBOV.js.map} +1 -1
  128. package/dist/components/p-UWU23pbX.js +2 -0
  129. package/dist/components/{p-Cs8Gq-PZ.js.map → p-UWU23pbX.js.map} +1 -1
  130. package/dist/components/p-YFjXYN8s.js +2 -0
  131. package/dist/components/{p-DdNJPBCS.js.map → p-YFjXYN8s.js.map} +1 -1
  132. package/dist/components/{p-pJ6gbwSa.js → p-kL4EOsx5.js} +2 -2
  133. package/dist/components/{p-BjBFJ2dd.js → p-topqlGsI.js} +2 -2
  134. package/dist/components/{p-Bdp2V6-c.js → p-zopMP2ze.js} +2 -2
  135. package/dist/components/{p-Bdp2V6-c.js.map → p-zopMP2ze.js.map} +1 -1
  136. package/dist/docs/components.json +15 -1
  137. package/dist/lib/shell/index.js.map +2 -2
  138. package/dist/lib/shell/shell-responsive.d.ts +2 -0
  139. package/dist/mcp-data/registry/data-preferences.json +1 -1
  140. package/dist/mcp-data/registry/data-sort.json +1 -1
  141. package/dist/mcp-data/registry/registry.json +6 -1
  142. package/dist/mcp-data/registry/shell-app.json +2 -1
  143. package/dist/mcp-data/registry/table.json +19 -3
  144. package/dist/react/ds-table.d.ts +3 -0
  145. package/dist/react/ds-table.js +1 -0
  146. package/dist/styles/table.css +8 -0
  147. package/dist/types/components/ShellApp/ShellApp.d.ts +1 -0
  148. package/dist/types/components/Table/Table.d.ts +5 -0
  149. package/dist/types/components/Table/table-viewport-fit-controller.d.ts +3 -0
  150. package/dist/types/components.d.ts +5 -0
  151. package/dist/types/shell/shell-responsive.d.ts +2 -0
  152. package/dist/vue/ds-table.js +2 -0
  153. package/package.json +1 -1
  154. package/dist/components/p-BKyE025p.js +0 -2
  155. package/dist/components/p-BPDo1eQV.js +0 -2
  156. package/dist/components/p-C0L-VnSr.js +0 -2
  157. package/dist/components/p-CHyxUWqL.js +0 -2
  158. package/dist/components/p-CLqqb0Jp.js +0 -2
  159. package/dist/components/p-CRhoeCC8.js +0 -2
  160. package/dist/components/p-CXB_T13u.js +0 -2
  161. package/dist/components/p-CgGcgMjs.js +0 -2
  162. package/dist/components/p-CgGcgMjs.js.map +0 -1
  163. package/dist/components/p-Cs8Gq-PZ.js +0 -2
  164. package/dist/components/p-Ct2KQHF4.js +0 -2
  165. package/dist/components/p-CvIHBa8S.js +0 -2
  166. package/dist/components/p-D9l0QBgN.js +0 -2
  167. package/dist/components/p-DdNJPBCS.js +0 -2
  168. package/dist/components/p-DlCLfwP4.js +0 -2
  169. package/dist/components/p-DlCLfwP4.js.map +0 -1
  170. package/dist/components/p-DmgDVoDb.js +0 -2
  171. package/dist/components/p-LJXiEPw1.js +0 -2
  172. package/dist/components/p-pPtjNRqC.js.map +0 -1
  173. /package/dist/components/{p-DKvHBXwn.js.map → p-B1dnisok.js.map} +0 -0
  174. /package/dist/components/{p-CgC4SM5b.js.map → p-B9ZhRwE3.js.map} +0 -0
  175. /package/dist/components/{p-DGrSro-o.js.map → p-BAcdqJaa.js.map} +0 -0
  176. /package/dist/components/{p-4sBUSsqs.js.map → p-BREDkBUv.js.map} +0 -0
  177. /package/dist/components/{p-CKSJwSWd.js.map → p-BWnL2SWn.js.map} +0 -0
  178. /package/dist/components/{p-CqAC2IQO.js.map → p-BcmJBzB6.js.map} +0 -0
  179. /package/dist/components/{p-AGqUGzNZ.js.map → p-Bjm-Rk_x.js.map} +0 -0
  180. /package/dist/components/{p-UBQ5O7B-.js.map → p-Bls48_RF.js.map} +0 -0
  181. /package/dist/components/{p-oBpjD9OA.js.map → p-BqZWKYsS.js.map} +0 -0
  182. /package/dist/components/{p-dSNHIJz6.js.map → p-CWAeg9jl.js.map} +0 -0
  183. /package/dist/components/{p-BwNW5nqj.js.map → p-CantpOo3.js.map} +0 -0
  184. /package/dist/components/{p-DiPqdcD4.js.map → p-D3JCih82.js.map} +0 -0
  185. /package/dist/components/{p-D_xZ5SFL.js.map → p-DWXpMWIp.js.map} +0 -0
  186. /package/dist/components/{p-Dyjs8_Cl.js.map → p-DagrkX2v.js.map} +0 -0
  187. /package/dist/components/{p-D62yUMhr.js.map → p-DcMbWqTd.js.map} +0 -0
  188. /package/dist/components/{p-g2OUK8Z0.js.map → p-DiyL2sI5.js.map} +0 -0
  189. /package/dist/components/{p-v9Nhw5yM.js.map → p-IfsszNF0.js.map} +0 -0
  190. /package/dist/components/{p-pJ6gbwSa.js.map → p-kL4EOsx5.js.map} +0 -0
  191. /package/dist/components/{p-BjBFJ2dd.js.map → p-topqlGsI.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["deriveBarNavValueFromUrl","path","basePath","tabs","value","hideTabs","startsWith","remainder","slice","length","seg","split","selectableTabs","getSelectableTabs","id","tab","find","t","shouldResyncBarNavProps","resolvedTabs","barNavCss","BarNav","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","navStyle","currentUrl","moreTabsLabel","urlDerivedValue","hideTabsForDetailRoute","tabsCollapsed","menuOpen","menuTriggerActive","tabLayoutCommitted","visibleTabs","overflowTabs","menuInitialFocusVisible","overflowRovingFocused","focusedTabId","headerEl","triggerEl","menuEl","visibleTabListEl","probeTabListEl","resizeObserver","hasLoaded","connectionTasks","ConnectionTasks","el","isConnected","intrinsicWidthRetryCount","tabLayoutPendingFrames","panelNavTransition","ChromeTransitionGate","panelToolsTransition","overflowCoalescer","createRafCoalescer","updateTabsCollapsed","chromeTransitionShell","committedSection","pendingSection","onChromeTransitionStart","event","source","readChromeTransitionSource","enter","phase","readChromeTransitionPhase","onChromeTransitionEnd","exit","isActive","scheduleOverflowCheck","handleOverflowFocus","handleOverflowBlur","effectiveValue","renderedSelectableTabs","hasOverflowTabs","syncFocusedTabId","preferred","some","isInactive","first","digestTabsConfig","map","isTabDivider","join","resetTabOverflowLayout","onHostPropsChange","applyHostProps","onSelectionChange","syncMenuSections","onMenuOpenChange","open","onTabsCollapsedChange","collapsed","prevCollapsed","frame","undefined","microtask","focusVisibleSelectedTab","componentWillLoad","connectedCallback","connectResources","componentDidLoad","syncHostPropsIfNeeded","scheduleDeferredHostPropSync","setupOverflowObserver","bindChromeTransitionListeners","componentDidRender","chromeOverflowPaused","syncMenuAnchor","disconnectedCallback","cancel","disconnect","unbindChromeTransitionListeners","shell","closest","addEventListener","CHROME_TRANSITION_START","CHROME_TRANSITION_END","removeEventListener","syncValueFromUrl","remaining","HOST_PROP_SYNC_BUDGET","tick","ResizeObserver","observe","schedule","getLeftZoneAvailableWidth","headerStyle","getComputedStyle","horizontalPadding","parseFloat","paddingLeft","paddingRight","Math","max","clientWidth","getTabsIntrinsicWidth","scrollWidth","getHeaderGap","style","columnGap","gap","getOverflowTriggerReserveWidth","getBoundingClientRect","width","getProbeTabMetrics","tabList","children","Array","from","itemWidths","child","itemGap","childrenWidth","reduce","sum","gapWidth","listExtraWidth","setOverflowTabLayout","nextCollapsed","visibleChanged","overflowChanged","scheduleIntrinsicWidthRetry","INTRINSIC_WIDTH_RETRY_MAX","forceTabLayoutCommit","fallbackCollapsed","metrics","intrinsicWidth","TAB_LAYOUT_COMMIT_MAX_FRAMES","shouldCollapse","tabsOverflowContainer","OVERFLOW_HYSTERESIS_PX","visibleCount","visibleTabCountForWidth","trimTrailingDividers","anchor","handleMenuSelect","e","detail","selectTab","String","handleMenuClose","handleMenuAfterClose","incomingTabs","nextBasePath","sectionChanged","tabsConfigChanged","sections","tabsToOverflowMenuSections","dsTabChange","emit","querySelector","focus","preventScroll","focusVisibleTab","focusLastVisibleTab","last","reverse","findEnabledVisibleTab","step","index","handleTabKeyDown","targetId","target","getAttribute","focusedId","key","focused","preventDefault","currentIndex","findIndex","nextIndex","setFocus","reversedIndex","toggleTabMenu","options","minWidth","focusVisible","handleTriggerKeyDown","renderTabList","probe","h","role","class","heading","ref","next","onKeyDown","onFocusin","isSelected","type","panelId","disabled","tabIndex","onClick","onFocus","dot","as","variant","emphasis","color","label","hasRing","render","sectionReady","hasTabs","tabGroupKey","renderedTabs","Host","inert","lineTruncation","wrap","icon","activeFill","hasBorder","background","focusTabIndex","haspopup","expanded","surfaceOpen","onDsClick","onFocusout","side","align","sideOffset","initialFocusVisible","onDsSelect","onDsClose","onDsAfterClose"],"sources":["src/wc/components/BarNav/bar-nav-utils.ts","src/wc/components/BarNav/BarNav.css?tag=ds-bar-nav&encapsulation=scoped","src/wc/components/BarNav/BarNav.tsx"],"sourcesContent":["import { getSelectableTabs } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\n\nexport interface BarNavUrlState {\n /** Tab id derived from the URL, or empty when none applies. */\n value: string;\n /** When true, tabs should be hidden (e.g. non-tab child routes like detail pages). */\n hideTabs: boolean;\n}\n\n/** Derive BarNav tab selection from `currentUrl` relative to `basePath`.\n * Mirrors motive-webapp-lab `resolveBarNavState` tab-selection semantics. */\nexport function deriveBarNavValueFromUrl(\n path: string,\n basePath: string,\n tabs: BarNavTab[]\n): BarNavUrlState {\n if (!path || !basePath) {\n return { value: '', hideTabs: false };\n }\n\n if (path !== basePath && !path.startsWith(`${basePath}/`)) {\n return { value: '', hideTabs: false };\n }\n\n const remainder = path.slice(basePath.length);\n const seg = remainder.startsWith('/') ? remainder.slice(1).split('/')[0] : '';\n const selectableTabs = getSelectableTabs(tabs);\n\n if (!seg) {\n return { value: selectableTabs[0]?.id ?? '', hideTabs: false };\n }\n\n const tab = selectableTabs.find(t => t.id === seg);\n if (tab) {\n return { value: tab.id, hideTabs: false };\n }\n\n return { value: '', hideTabs: true };\n}\n\n/** True when host array props have data but resolved internal state is still empty. */\nexport function shouldResyncBarNavProps(resolvedTabs: BarNavTab[], tabs: BarNavTab[]): boolean {\n return resolvedTabs.length === 0 && (tabs?.length ?? 0) > 0;\n}\n","@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n}\n\n.bar-nav {\n position: relative;\n height: var(--dimension-size-600);\n border-bottom: var(--dimension-stroke-width-012) solid var(--_bar-nav-border);\n background-color: var(--_bar-nav-bg);\n color: var(--_bar-nav-fg-primary);\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-3),\n border-color var(--effect-motion-short-3),\n color var(--effect-motion-short-3);\n isolation: isolate;\n /* Default Chrome — ShellApp owns the shared base surface. */\n --_bar-nav-bg: var(--color-chrome-background-theme);\n --_bar-nav-border: var(--color-chrome-border-tertiary);\n --_bar-nav-fg-primary: var(--color-chrome-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-chrome-foreground-secondary);\n --_bar-nav-hover: var(--color-chrome-interaction-hover);\n --_bar-nav-pressed: var(--color-chrome-interaction-pressed);\n --_bar-nav-focus: var(--color-chrome-interaction-focus);\n --_bar-nav-dot: var(--color-chrome-foreground-theme);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Style slots — both route contexts use the shared Chrome token family. */\n.bar-nav--dashboard,\n.bar-nav--settings {\n --_bar-nav-bg: var(--color-chrome-background-theme);\n --_bar-nav-border: var(--color-chrome-border-tertiary);\n --_bar-nav-fg-primary: var(--color-chrome-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-chrome-foreground-secondary);\n --_bar-nav-hover: var(--color-chrome-interaction-hover);\n --_bar-nav-pressed: var(--color-chrome-interaction-pressed);\n --_bar-nav-focus: var(--color-chrome-interaction-focus);\n --_bar-nav-dot: var(--color-chrome-foreground-theme);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* ShellApp owns the shared base + wash — bar is a transparent frame in every preset. */\n:host-context(ds-shell-app) .bar-nav {\n background-color: transparent;\n}\n\n.bar-nav > :not(.bar-nav__tabs-probe) {\n position: relative;\n z-index: 3;\n}\n\n/* Overflow — keep fitting tabs visible and pin the overflow trigger to the far edge. */\n.bar-nav--tabs-collapsed {\n display: flex;\n gap: var(--dimension-space-100);\n align-items: center;\n}\n\n/* Expanded tabs — consume full header width */\n.bar-nav__left {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n width: 0;\n display: flex;\n align-items: center;\n}\n\n.bar-nav__tabs-visible {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n/* Unconstrained width so intrinsic tab row width is measurable while collapsed */\n.bar-nav__tabs-probe {\n position: absolute;\n left: 0;\n top: 0;\n visibility: hidden;\n pointer-events: none;\n overflow: visible;\n width: max-content;\n max-width: none;\n z-index: -1;\n}\n\n.bar-nav__tabs-probe > div {\n width: max-content;\n}\n\n.bar-nav__tab-list {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n position: relative;\n width: max-content;\n}\n\n.bar-nav__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n box-sizing: border-box;\n border: none;\n border-radius: var(--ds-control-radius);\n background-color: transparent;\n color: var(--_bar-nav-fg-secondary);\n cursor: default;\n position: relative;\n flex-shrink: 0;\n -webkit-user-select: none;\n user-select: none;\n transition: color var(--effect-motion-short-2);\n}\n\n.bar-nav__tab::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--ds-control-radius);\n background: transparent;\n pointer-events: none;\n cursor: inherit;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .bar-nav__tab:hover::after {\n background: var(--_bar-nav-hover);\n }\n}\n\n.bar-nav__tab:active::after {\n background: var(--_bar-nav-pressed);\n}\n\n.bar-nav__tab--selected {\n color: var(--_bar-nav-fg-primary);\n}\n\n.bar-nav__tab-label {\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n}\n\n.bar-nav__tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-space-100);\n height: var(--ds-control-height);\n padding-block: var(--ds-control-padding-inline);\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider-line {\n width: var(--dimension-stroke-width-012);\n align-self: stretch;\n background-color: var(--_bar-nav-border);\n}\n\n/* In-flow placeholder while measuring overflow — avoids layout jump; hidden from view/accessibility. */\n.bar-nav__tabs-pending {\n flex: 1;\n min-width: 0;\n height: var(--ds-control-height);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Overflow trigger — compact icon button aligned to the right edge. */\n.bar-nav__overflow-trigger {\n margin-left: auto;\n}\n\n/* Fallback heading when no tabs — matches a single (selected) tab so the area\n name shares the tab label's type token, color, height and horizontal inset.\n Inset = tab button padding (space-075, 6px) + label inset (space-025, 2px).\n Color comes from ds-text color=\"primary\"; beat Text's inline-box display. */\nds-text.bar-nav__heading {\n display: inline-flex;\n align-items: center;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n -webkit-user-select: none;\n user-select: none;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n State,\n h,\n Host,\n} from '@stencil/core';\nimport type { NavChromeStyle } from '../../shell/nav-chrome';\nimport { ConnectionTasks } from '../../utils/connection-tasks';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport { getSelectableTabs, isTabDivider, type TabItemTab } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\nimport { deriveBarNavValueFromUrl, shouldResyncBarNavProps } from './bar-nav-utils';\nimport {\n tabsOverflowContainer,\n tabsToOverflowMenuSections,\n trimTrailingDividers,\n visibleTabCountForWidth,\n} from './bar-nav-tabs-menu-utils';\nimport {\n CHROME_TRANSITION_END,\n CHROME_TRANSITION_START,\n ChromeTransitionGate,\n createRafCoalescer,\n readChromeTransitionSource,\n readChromeTransitionPhase,\n} from '../../shell/chrome-transition';\n\n@Component({\n tag: 'ds-bar-nav',\n styleUrl: 'BarNav.css',\n scoped: true,\n})\nexport class BarNav {\n /** Style slot: `dashboard` or `settings`. Colors match for now. */\n @Prop({ attribute: 'nav-style', reflect: true }) navStyle: NavChromeStyle = 'dashboard';\n\n @Element() el!: HTMLElement;\n\n /**\n * Tab items for the left section.\n * Set via JS property: `el.tabs = [...]`. Replace the array reference to update.\n */\n @Prop() tabs: BarNavTab[] = [];\n\n /** ID of the currently active tab. Overridden when `currentUrl` + `basePath` are set. */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Fallback heading shown when no tabs are provided.\n * When tabs are present the heading is hidden.\n */\n @Prop() heading: string | undefined;\n\n /** Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`. */\n @Prop() basePath: string = '';\n\n /** Current route URL. When set with `basePath`, the active tab is derived automatically. */\n @Prop() currentUrl: string = '';\n @Prop() moreTabsLabel: string = 'More tabs';\n\n /** Emitted when the active tab changes. Detail = tab id. */\n @Event() dsTabChange!: EventEmitter<string>;\n\n @State() private resolvedTabs: BarNavTab[] = [];\n @State() private urlDerivedValue: string = '';\n @State() private hideTabsForDetailRoute = false;\n @State() private tabsCollapsed = false;\n @State() private menuOpen = false;\n @State() private menuTriggerActive = false;\n /** When false, defer showing expanded tabs or the collapsed trigger until intrinsic width is measured (avoids a one-frame flash of the full tab row on narrow viewports). */\n @State() private tabLayoutCommitted = false;\n @State() private visibleTabs: BarNavTab[] = [];\n @State() private overflowTabs: BarNavTab[] = [];\n @State() private menuInitialFocusVisible = false;\n @State() private overflowRovingFocused = false;\n @State() private focusedTabId = '';\n\n private static readonly HOST_PROP_SYNC_BUDGET = 8;\n private static readonly INTRINSIC_WIDTH_RETRY_MAX = 3;\n private static readonly TAB_LAYOUT_COMMIT_MAX_FRAMES = 16;\n private static readonly OVERFLOW_HYSTERESIS_PX = 8;\n\n private headerEl: HTMLElement | null = null;\n private triggerEl: (HTMLElement & { setFocus?: () => Promise<void> }) | null = null;\n private menuEl: HTMLDsMenuElement | null = null;\n private visibleTabListEl: HTMLElement | null = null;\n private probeTabListEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private hasLoaded = false;\n private readonly connectionTasks = new ConnectionTasks(() => this.el.isConnected);\n private intrinsicWidthRetryCount = 0;\n private tabLayoutPendingFrames = 0;\n private readonly panelNavTransition = new ChromeTransitionGate();\n private readonly panelToolsTransition = new ChromeTransitionGate();\n private readonly overflowCoalescer = createRafCoalescer(() => {\n this.updateTabsCollapsed();\n });\n private chromeTransitionShell: HTMLElement | null = null;\n /** Matches `basePath` once tabs + URL are reconciled for the active section. */\n @State() private committedSection = '';\n /** Section waiting for URL + tabs to catch up after a cross-area navigation. */\n @State() private pendingSection = '';\n\n private get effectiveValue(): string {\n if (this.currentUrl && this.basePath) {\n return this.urlDerivedValue;\n }\n return this.value;\n }\n\n private get renderedSelectableTabs(): TabItemTab[] {\n const tabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n return getSelectableTabs(tabs);\n }\n\n private get hasOverflowTabs(): boolean {\n return this.tabLayoutCommitted && this.tabsCollapsed && this.overflowTabs.length > 0;\n }\n\n private syncFocusedTabId(preferred: string, tabs: TabItemTab[]) {\n if (tabs.some(tab => tab.id === preferred && !tab.isInactive)) {\n this.focusedTabId = preferred;\n return;\n }\n const first = tabs.find(tab => !tab.isInactive);\n this.focusedTabId = first?.id ?? '';\n }\n\n private digestTabsConfig(tabs: BarNavTab[]): string {\n return tabs.map(t => (isTabDivider(t) ? '|' : t.id)).join(',');\n }\n\n private resetTabOverflowLayout() {\n this.tabLayoutCommitted = false;\n this.tabsCollapsed = false;\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.visibleTabs = [];\n this.overflowTabs = [];\n }\n\n @Watch('tabs')\n @Watch('currentUrl')\n @Watch('basePath')\n onHostPropsChange() {\n this.applyHostProps();\n }\n\n @Watch('value')\n @Watch('urlDerivedValue')\n onSelectionChange() {\n this.syncFocusedTabId(this.effectiveValue, this.renderedSelectableTabs);\n this.syncMenuSections();\n this.scheduleOverflowCheck();\n }\n\n @Watch('menuOpen')\n onMenuOpenChange(open: boolean) {\n if (this.menuEl) {\n this.menuEl.open = open;\n }\n }\n\n @Watch('tabsCollapsed')\n onTabsCollapsedChange(collapsed: boolean, prevCollapsed: boolean | undefined) {\n if (!collapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.menuEl = null;\n }\n this.scheduleOverflowCheck();\n if (collapsed) {\n this.connectionTasks.frame(() => {\n this.scheduleOverflowCheck();\n });\n }\n if (collapsed || prevCollapsed === undefined || prevCollapsed === collapsed) return;\n this.connectionTasks.frame(() => this.scheduleOverflowCheck());\n this.connectionTasks.microtask(() => this.focusVisibleSelectedTab());\n }\n\n componentWillLoad() {\n this.applyHostProps();\n this.syncFocusedTabId(this.effectiveValue, getSelectableTabs(this.resolvedTabs));\n }\n\n connectedCallback() {\n if (this.hasLoaded) this.connectResources();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.connectResources();\n }\n\n private connectResources() {\n if (!this.el.isConnected) return;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.syncHostPropsIfNeeded();\n this.scheduleDeferredHostPropSync();\n this.setupOverflowObserver();\n this.bindChromeTransitionListeners();\n this.scheduleOverflowCheck();\n }\n\n componentDidRender() {\n if (this.chromeOverflowPaused()) {\n this.syncMenuAnchor();\n return;\n }\n this.scheduleOverflowCheck();\n this.syncMenuAnchor();\n }\n\n disconnectedCallback() {\n this.connectionTasks.cancel();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.overflowCoalescer.cancel();\n this.unbindChromeTransitionListeners();\n this.panelNavTransition.exit();\n this.panelToolsTransition.exit();\n }\n\n private bindChromeTransitionListeners() {\n this.unbindChromeTransitionListeners();\n const shell = this.el.closest<HTMLElement>('ds-shell-app');\n if (!shell) return;\n this.chromeTransitionShell = shell;\n shell.addEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n shell.addEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n }\n\n private unbindChromeTransitionListeners() {\n if (!this.chromeTransitionShell) return;\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_START,\n this.onChromeTransitionStart\n );\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_END,\n this.onChromeTransitionEnd\n );\n this.chromeTransitionShell = null;\n }\n\n private onChromeTransitionStart = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.enter();\n return;\n }\n if (source === 'panel-tools') {\n const phase = readChromeTransitionPhase(event) ?? 'opening';\n if (phase === 'closing') {\n this.panelToolsTransition.enter();\n }\n }\n };\n\n private chromeOverflowPaused(): boolean {\n return this.panelNavTransition.isActive || this.panelToolsTransition.isActive;\n }\n\n private onChromeTransitionEnd = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.exit();\n if (!this.panelNavTransition.isActive) {\n this.scheduleOverflowCheck();\n }\n return;\n }\n if (source === 'panel-tools') {\n this.panelToolsTransition.exit();\n this.scheduleOverflowCheck();\n }\n };\n\n /** Re-resolve props assigned by the host after componentWillLoad (Angular ngAfterViewInit). */\n private syncHostPropsIfNeeded() {\n if (shouldResyncBarNavProps(this.resolvedTabs, this.tabs)) {\n this.applyHostProps();\n } else if (this.currentUrl && this.basePath) {\n this.syncValueFromUrl();\n }\n }\n\n /** Poll across animation frames — host props may land without triggering @Watch. */\n private scheduleDeferredHostPropSync() {\n let remaining = BarNav.HOST_PROP_SYNC_BUDGET;\n const tick = () => {\n this.syncHostPropsIfNeeded();\n if (--remaining > 0) {\n this.connectionTasks.frame(tick);\n }\n };\n this.connectionTasks.microtask(tick);\n }\n\n private setupOverflowObserver() {\n if (typeof ResizeObserver === 'undefined' || !this.headerEl) return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chromeOverflowPaused()) return;\n this.scheduleOverflowCheck();\n });\n this.resizeObserver.observe(this.headerEl);\n }\n\n private scheduleOverflowCheck() {\n if (!this.el.isConnected || this.chromeOverflowPaused()) return;\n this.overflowCoalescer.schedule();\n }\n\n /** Width available for the tab row or collapsed trigger. */\n private getLeftZoneAvailableWidth(): number {\n if (!this.headerEl) return 0;\n\n const headerStyle = getComputedStyle(this.headerEl);\n const horizontalPadding =\n (parseFloat(headerStyle.paddingLeft) || 0) + (parseFloat(headerStyle.paddingRight) || 0);\n\n return Math.max(0, this.headerEl.clientWidth - horizontalPadding);\n }\n\n private getTabsIntrinsicWidth(): number {\n return this.probeTabListEl?.scrollWidth ?? 0;\n }\n\n private getHeaderGap(): number {\n if (!this.headerEl) return 0;\n const style = getComputedStyle(this.headerEl);\n return parseFloat(style.columnGap || style.gap) || 0;\n }\n\n private getOverflowTriggerReserveWidth(): number {\n if (!this.triggerEl) {\n return 40;\n }\n return this.triggerEl.getBoundingClientRect().width + this.getHeaderGap();\n }\n\n private getProbeTabMetrics(): {\n itemWidths: number[];\n itemGap: number;\n listExtraWidth: number;\n } | null {\n const tabList = this.probeTabListEl;\n if (!tabList) return null;\n\n const children = Array.from(tabList.children) as HTMLElement[];\n const itemWidths = children.map(child => child.getBoundingClientRect().width);\n if (itemWidths.length === 0 || itemWidths.some(width => width === 0)) return null;\n\n const style = getComputedStyle(tabList);\n const itemGap = parseFloat(style.columnGap || style.gap) || 0;\n const childrenWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n const gapWidth = itemGap * Math.max(0, itemWidths.length - 1);\n const listExtraWidth = Math.max(0, tabList.scrollWidth - childrenWidth - gapWidth);\n\n return { itemWidths, itemGap, listExtraWidth };\n }\n\n private setOverflowTabLayout(visibleTabs: BarNavTab[], overflowTabs: BarNavTab[]) {\n const nextCollapsed = overflowTabs.length > 0;\n const visibleChanged =\n this.digestTabsConfig(visibleTabs) !== this.digestTabsConfig(this.visibleTabs);\n const overflowChanged =\n this.digestTabsConfig(overflowTabs) !== this.digestTabsConfig(this.overflowTabs);\n\n if (visibleChanged) {\n this.visibleTabs = visibleTabs;\n }\n if (overflowChanged) {\n this.overflowTabs = overflowTabs;\n }\n if (nextCollapsed !== this.tabsCollapsed) {\n this.tabsCollapsed = nextCollapsed;\n if (!nextCollapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n }\n }\n this.syncFocusedTabId(\n this.effectiveValue,\n getSelectableTabs(nextCollapsed ? visibleTabs : this.resolvedTabs)\n );\n }\n\n private scheduleIntrinsicWidthRetry() {\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) return;\n this.intrinsicWidthRetryCount++;\n this.connectionTasks.frame(() => this.scheduleOverflowCheck());\n }\n\n private forceTabLayoutCommit(fallbackCollapsed: boolean) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.setOverflowTabLayout(\n fallbackCollapsed ? [] : this.resolvedTabs,\n fallbackCollapsed ? this.resolvedTabs : []\n );\n this.tabLayoutCommitted = true;\n }\n\n private updateTabsCollapsed() {\n if (!this.el.isConnected || this.chromeOverflowPaused()) return;\n if (!this.headerEl || this.resolvedTabs.length === 0 || this.hideTabsForDetailRoute) {\n if (this.tabsCollapsed) {\n this.setOverflowTabLayout([], []);\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.tabLayoutCommitted = true;\n return;\n }\n\n const metrics = this.getProbeTabMetrics();\n const intrinsicWidth = this.getTabsIntrinsicWidth();\n if (!metrics || intrinsicWidth === 0) {\n this.tabLayoutPendingFrames += 1;\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) {\n this.forceTabLayoutCommit(false);\n } else if (this.tabLayoutPendingFrames >= BarNav.TAB_LAYOUT_COMMIT_MAX_FRAMES) {\n this.forceTabLayoutCommit(false);\n } else {\n this.scheduleIntrinsicWidthRetry();\n }\n return;\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n\n const shouldCollapse = tabsOverflowContainer(\n intrinsicWidth,\n this.getLeftZoneAvailableWidth(),\n this.tabsCollapsed,\n BarNav.OVERFLOW_HYSTERESIS_PX\n );\n\n if (!shouldCollapse) {\n this.setOverflowTabLayout(this.resolvedTabs, []);\n this.tabLayoutCommitted = true;\n return;\n }\n\n const visibleCount = visibleTabCountForWidth(\n metrics.itemWidths,\n this.getLeftZoneAvailableWidth(),\n this.getOverflowTriggerReserveWidth(),\n metrics.itemGap,\n metrics.listExtraWidth\n );\n const visibleTabs = trimTrailingDividers(this.resolvedTabs.slice(0, visibleCount));\n const overflowTabs = this.resolvedTabs.slice(visibleTabs.length);\n this.setOverflowTabLayout(visibleTabs, overflowTabs);\n this.tabLayoutCommitted = true;\n }\n\n private syncMenuAnchor() {\n if (!this.menuEl || !this.triggerEl || !this.hasOverflowTabs) return;\n this.menuEl.anchor = this.triggerEl;\n this.syncMenuSections();\n }\n\n private handleMenuSelect(e: Event) {\n const detail = (e as CustomEvent<MenuItemData>).detail;\n if (detail?.value !== undefined) {\n this.selectTab(String(detail.value));\n }\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuClose() {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuAfterClose() {\n if (!this.menuOpen) this.menuTriggerActive = false;\n }\n\n /** Batch tabs/basePath/currentUrl updates so URL derivation never runs with a mixed section. */\n private incomingTabs(): BarNavTab[] {\n return this.tabs ?? [];\n }\n\n private applyHostProps() {\n const nextBasePath = this.basePath;\n const sectionChanged =\n nextBasePath !== '' && this.committedSection !== '' && nextBasePath !== this.committedSection;\n\n if (sectionChanged) {\n this.urlDerivedValue = '';\n this.committedSection = '';\n this.pendingSection = nextBasePath;\n this.resolvedTabs = [];\n this.resetTabOverflowLayout();\n return;\n }\n\n if (this.pendingSection) {\n if (!nextBasePath || nextBasePath !== this.pendingSection) {\n return;\n }\n if (!this.currentUrl.startsWith(this.pendingSection)) {\n return;\n }\n const tabs = this.incomingTabs();\n if (tabs.length === 0) {\n return;\n }\n this.pendingSection = '';\n }\n\n const tabs = this.incomingTabs();\n const tabsConfigChanged =\n this.digestTabsConfig(tabs) !== this.digestTabsConfig(this.resolvedTabs);\n\n this.resolvedTabs = tabs;\n this.syncValueFromUrl();\n this.committedSection = nextBasePath;\n if (tabsConfigChanged) {\n this.resetTabOverflowLayout();\n }\n this.scheduleOverflowCheck();\n }\n\n private syncMenuSections() {\n if (!this.menuEl) return;\n this.menuEl.sections = tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue);\n }\n\n private syncValueFromUrl() {\n const tabs = this.incomingTabs();\n\n if (!this.currentUrl || !this.basePath) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n if (!this.currentUrl.startsWith(this.basePath)) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n const { value, hideTabs } = deriveBarNavValueFromUrl(this.currentUrl, this.basePath, tabs);\n this.urlDerivedValue = value;\n this.hideTabsForDetailRoute = hideTabs;\n }\n\n private selectTab(id: string) {\n this.value = id;\n this.dsTabChange.emit(id);\n }\n\n /** Move focus to the selected tab in the visible tab group (after expand). */\n private focusVisibleSelectedTab() {\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${this.effectiveValue}\"]`\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusVisibleTab(id: string) {\n this.focusedTabId = id;\n const tab = this.visibleTabListEl?.querySelector(`[data-tab-id=\"${id}\"]`) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusLastVisibleTab() {\n const last = [...this.renderedSelectableTabs].reverse().find(tab => !tab.isInactive);\n if (last) this.focusVisibleTab(last.id);\n }\n\n private findEnabledVisibleTab(from: number, step: 1 | -1): number | null {\n const tabs = this.renderedSelectableTabs;\n for (let index = from + step; index >= 0 && index < tabs.length; index += step) {\n if (!tabs[index]?.isInactive) return index;\n }\n return null;\n }\n\n private handleTabKeyDown(e: KeyboardEvent) {\n const tabs = this.renderedSelectableTabs;\n if (!tabs.length) return;\n const targetId = (e.target as HTMLElement | null)?.getAttribute('data-tab-id');\n const focusedId = targetId ?? this.focusedTabId;\n\n if (e.key === 'Enter' || e.key === ' ') {\n const focused = tabs.find(tab => tab.id === focusedId);\n if (!focused || focused.isInactive) return;\n e.preventDefault();\n this.selectTab(focused.id);\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab.id === focusedId);\n if (currentIndex < 0) return;\n\n let nextIndex: number | null;\n if (e.key === 'ArrowRight') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, 1);\n if (nextIndex === null && this.hasOverflowTabs) {\n e.preventDefault();\n this.overflowRovingFocused = true;\n void this.triggerEl?.setFocus?.();\n return;\n }\n } else if (e.key === 'ArrowLeft') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, -1);\n } else if (e.key === 'Home') {\n nextIndex = tabs.findIndex(tab => !tab.isInactive);\n } else if (e.key === 'End') {\n const reversedIndex = [...tabs].reverse().findIndex(tab => !tab.isInactive);\n nextIndex = reversedIndex < 0 ? null : tabs.length - 1 - reversedIndex;\n } else {\n return;\n }\n\n if (nextIndex === null || nextIndex < 0 || nextIndex === currentIndex) return;\n e.preventDefault();\n this.focusVisibleTab(tabs[nextIndex].id);\n }\n\n private toggleTabMenu(options?: { focusVisible?: boolean }) {\n if (this.menuOpen) {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n return;\n }\n\n if (this.menuEl && this.triggerEl) {\n this.menuEl.anchor = this.triggerEl;\n this.menuEl.minWidth = '';\n this.syncMenuSections();\n }\n\n this.menuInitialFocusVisible = options?.focusVisible ?? false;\n this.menuTriggerActive = true;\n this.menuOpen = true;\n }\n\n private handleOverflowFocus = () => {\n this.overflowRovingFocused = true;\n };\n\n private handleOverflowBlur = () => {\n this.overflowRovingFocused = false;\n };\n\n private handleTriggerKeyDown(e: KeyboardEvent) {\n if (!this.hasOverflowTabs) return;\n\n if (!this.menuOpen) {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.overflowRovingFocused = false;\n this.focusLastVisibleTab();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.toggleTabMenu({ focusVisible: true });\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n void this.triggerEl?.setFocus?.();\n }\n }\n\n private renderTabList(tabs: BarNavTab[], probe: boolean) {\n return (\n <div\n role=\"tablist\"\n class=\"bar-nav__tab-list\"\n aria-label={this.heading}\n ref={el => {\n if (probe) {\n const next = (el as HTMLElement) ?? null;\n if (next === this.probeTabListEl) return;\n this.probeTabListEl = next;\n if (next) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.scheduleOverflowCheck();\n }\n } else {\n this.visibleTabListEl = (el as HTMLElement) ?? null;\n }\n }}\n onKeyDown={probe ? undefined : (e: KeyboardEvent) => this.handleTabKeyDown(e)}\n onFocusin={\n probe\n ? undefined\n : () => {\n this.overflowRovingFocused = false;\n }\n }\n >\n {tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div class=\"bar-nav__tab-divider\" key={`divider-${index}`} aria-hidden=\"true\">\n <div class=\"bar-nav__tab-divider-line\" />\n </div>\n );\n }\n\n const isSelected = tab.id === this.effectiveValue;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n 'bar-nav__tab': true,\n 'bar-nav__tab--selected': isSelected,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill--on-chrome': true,\n 'ds-control-inactive': !!tab.isInactive,\n }}\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={tab.isInactive ? 'true' : undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.isInactive}\n tabIndex={\n !probe && !this.overflowRovingFocused && tab.id === this.focusedTabId ? 0 : -1\n }\n onClick={() => !probe && !tab.isInactive && this.selectTab(tab.id)}\n onFocus={() => {\n if (!probe) this.focusedTabId = tab.id;\n }}\n >\n <span\n class={{\n 'bar-nav__tab-label': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': !!tab.dot,\n 'bar-nav__tab-label--dot': !!tab.dot,\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis={isSelected} color=\"inherit\">\n {tab.label}\n </ds-text>\n {tab.dot && (\n <ds-badge\n class=\"bar-nav__tab-dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n style={{ '--_badge-bg': 'var(--_bar-nav-dot)' }}\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n\n render() {\n // Section gating only applies when `basePath` is set (SPA section sync).\n // Tabs without a base path must still render — otherwise a single-tab bar\n // (or any non-routed tabs) silently falls through to an empty header.\n const sectionReady = this.basePath === '' || this.committedSection === this.basePath;\n const hasTabs = sectionReady && this.resolvedTabs.length > 0 && !this.hideTabsForDetailRoute;\n const tabGroupKey = this.basePath || 'no-section';\n const renderedTabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n\n return (\n <Host>\n <header\n class={{\n 'bar-nav': true,\n 'ds-control--md': true,\n 'ds-chrome-row': true,\n 'ds-chrome-space--md': true,\n 'ds-interaction-fill--on-chrome': true,\n 'bar-nav--dashboard': this.navStyle === 'dashboard',\n 'bar-nav--settings': this.navStyle === 'settings',\n 'bar-nav--tabs-collapsed': hasTabs && this.hasOverflowTabs,\n }}\n ref={el => {\n this.headerEl = el as HTMLElement;\n if (el && !this.resizeObserver) {\n this.setupOverflowObserver();\n }\n }}\n >\n {hasTabs && (\n <div class=\"bar-nav__tabs-probe\" aria-hidden=\"true\" inert>\n <div key={`probe-${tabGroupKey}`}>{this.renderTabList(this.resolvedTabs, true)}</div>\n </div>\n )}\n\n {hasTabs && this.tabLayoutCommitted && renderedTabs.length > 0 && (\n <div class=\"bar-nav__left\">\n <div key={`visible-${tabGroupKey}`} class=\"bar-nav__tabs-visible\">\n {this.renderTabList(renderedTabs, false)}\n </div>\n </div>\n )}\n\n {hasTabs && !this.tabLayoutCommitted && (\n <div class=\"bar-nav__tabs-pending\" aria-hidden=\"true\" />\n )}\n\n {!hasTabs && this.heading && (\n <ds-text\n class=\"bar-nav__heading\"\n lineTruncation={1}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n wrap=\"nowrap\"\n >\n {this.heading}\n </ds-text>\n )}\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-button-unfilled\n variant=\"icon\"\n class={{\n 'bar-nav__overflow-trigger': true,\n }}\n icon=\"ChevronDown\"\n activeFill={false}\n hasBorder={false}\n background=\"chrome\"\n focusTabIndex={this.overflowRovingFocused ? 0 : -1}\n ref={(el?: HTMLDsButtonUnfilledElement) => {\n this.triggerEl = (el as HTMLElement & { setFocus?: () => Promise<void> }) ?? null;\n }}\n haspopup=\"menu\"\n expanded={this.menuOpen}\n surfaceOpen={this.menuTriggerActive}\n aria-label={this.moreTabsLabel}\n onDsClick={() => this.toggleTabMenu({ focusVisible: false })}\n onFocusin={this.handleOverflowFocus}\n onFocusout={this.handleOverflowBlur}\n onKeyDown={(e: KeyboardEvent) => this.handleTriggerKeyDown(e)}\n />\n )}\n </header>\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-menu\n ref={el => {\n this.menuEl = (el as HTMLDsMenuElement) ?? null;\n }}\n open={this.menuOpen}\n sections={tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue)}\n side=\"bottom\"\n align=\"end\"\n sideOffset=\"calc(var(--dimension-space-100) + var(--dimension-space-050))\"\n initialFocusVisible={this.menuInitialFocusVisible}\n onDsSelect={(e: Event) => this.handleMenuSelect(e)}\n onDsClose={() => this.handleMenuClose()}\n onDsAfterClose={() => this.handleMenuAfterClose()}\n />\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["deriveBarNavValueFromUrl","path","basePath","tabs","value","hideTabs","startsWith","remainder","slice","length","seg","split","selectableTabs","getSelectableTabs","id","tab","find","t","shouldResyncBarNavProps","resolvedTabs","barNavCss","BarNav","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","navStyle","currentUrl","moreTabsLabel","urlDerivedValue","hideTabsForDetailRoute","tabsCollapsed","menuOpen","menuTriggerActive","tabLayoutCommitted","visibleTabs","overflowTabs","menuInitialFocusVisible","overflowRovingFocused","focusedTabId","headerEl","triggerEl","menuEl","visibleTabListEl","probeTabListEl","resizeObserver","hasLoaded","connectionTasks","ConnectionTasks","el","isConnected","intrinsicWidthRetryCount","tabLayoutPendingFrames","panelNavTransition","ChromeTransitionGate","panelToolsTransition","overflowCoalescer","createRafCoalescer","updateTabsCollapsed","chromeTransitionShell","committedSection","pendingSection","onChromeTransitionStart","event","source","readChromeTransitionSource","enter","phase","readChromeTransitionPhase","onChromeTransitionEnd","exit","isActive","scheduleOverflowCheck","handleOverflowFocus","handleOverflowBlur","effectiveValue","renderedSelectableTabs","hasOverflowTabs","syncFocusedTabId","preferred","some","isInactive","first","digestTabsConfig","map","isTabDivider","join","resetTabOverflowLayout","onHostPropsChange","applyHostProps","onSelectionChange","syncMenuSections","onMenuOpenChange","open","onTabsCollapsedChange","collapsed","prevCollapsed","frame","undefined","microtask","focusVisibleSelectedTab","componentWillLoad","connectedCallback","connectResources","componentDidLoad","syncHostPropsIfNeeded","scheduleDeferredHostPropSync","setupOverflowObserver","bindChromeTransitionListeners","componentDidRender","chromeOverflowPaused","syncMenuAnchor","disconnectedCallback","cancel","disconnect","unbindChromeTransitionListeners","shell","closest","addEventListener","CHROME_TRANSITION_START","CHROME_TRANSITION_END","removeEventListener","syncValueFromUrl","remaining","HOST_PROP_SYNC_BUDGET","tick","ResizeObserver","observe","schedule","getLeftZoneAvailableWidth","headerStyle","getComputedStyle","horizontalPadding","parseFloat","paddingLeft","paddingRight","Math","max","clientWidth","getTabsIntrinsicWidth","scrollWidth","getHeaderGap","style","columnGap","gap","getOverflowTriggerReserveWidth","getBoundingClientRect","width","getProbeTabMetrics","tabList","children","Array","from","itemWidths","child","itemGap","childrenWidth","reduce","sum","gapWidth","listExtraWidth","setOverflowTabLayout","nextCollapsed","visibleChanged","overflowChanged","scheduleIntrinsicWidthRetry","INTRINSIC_WIDTH_RETRY_MAX","forceTabLayoutCommit","fallbackCollapsed","metrics","intrinsicWidth","TAB_LAYOUT_COMMIT_MAX_FRAMES","shouldCollapse","tabsOverflowContainer","OVERFLOW_HYSTERESIS_PX","visibleCount","visibleTabCountForWidth","trimTrailingDividers","anchor","handleMenuSelect","e","detail","selectTab","String","handleMenuClose","handleMenuAfterClose","incomingTabs","nextBasePath","sectionChanged","tabsConfigChanged","sections","tabsToOverflowMenuSections","dsTabChange","emit","querySelector","focus","preventScroll","focusVisibleTab","focusLastVisibleTab","last","reverse","findEnabledVisibleTab","step","index","handleTabKeyDown","targetId","target","getAttribute","focusedId","key","focused","preventDefault","currentIndex","findIndex","nextIndex","setFocus","reversedIndex","toggleTabMenu","options","minWidth","focusVisible","handleTriggerKeyDown","renderTabList","probe","h","role","class","heading","ref","next","onKeyDown","onFocusin","isSelected","type","panelId","disabled","tabIndex","onClick","onFocus","dot","as","variant","emphasis","color","label","hasRing","render","sectionReady","hasTabs","tabGroupKey","renderedTabs","Host","inert","lineTruncation","wrap","icon","activeFill","hasBorder","background","focusTabIndex","haspopup","expanded","surfaceOpen","onDsClick","onFocusout","side","align","sideOffset","initialFocusVisible","onDsSelect","onDsClose","onDsAfterClose"],"sources":["src/wc/components/BarNav/bar-nav-utils.ts","src/wc/components/BarNav/BarNav.css?tag=ds-bar-nav&encapsulation=scoped","src/wc/components/BarNav/BarNav.tsx"],"sourcesContent":["import { getSelectableTabs } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\n\nexport interface BarNavUrlState {\n /** Tab id derived from the URL, or empty when none applies. */\n value: string;\n /** When true, tabs should be hidden (e.g. non-tab child routes like detail pages). */\n hideTabs: boolean;\n}\n\n/** Derive BarNav tab selection from `currentUrl` relative to `basePath`.\n * Mirrors motive-webapp-lab `resolveBarNavState` tab-selection semantics. */\nexport function deriveBarNavValueFromUrl(\n path: string,\n basePath: string,\n tabs: BarNavTab[]\n): BarNavUrlState {\n if (!path || !basePath) {\n return { value: '', hideTabs: false };\n }\n\n if (path !== basePath && !path.startsWith(`${basePath}/`)) {\n return { value: '', hideTabs: false };\n }\n\n const remainder = path.slice(basePath.length);\n const seg = remainder.startsWith('/') ? remainder.slice(1).split('/')[0] : '';\n const selectableTabs = getSelectableTabs(tabs);\n\n if (!seg) {\n return { value: selectableTabs[0]?.id ?? '', hideTabs: false };\n }\n\n const tab = selectableTabs.find(t => t.id === seg);\n if (tab) {\n return { value: tab.id, hideTabs: false };\n }\n\n return { value: '', hideTabs: true };\n}\n\n/** True when host array props have data but resolved internal state is still empty. */\nexport function shouldResyncBarNavProps(resolvedTabs: BarNavTab[], tabs: BarNavTab[]): boolean {\n return resolvedTabs.length === 0 && (tabs?.length ?? 0) > 0;\n}\n","@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n}\n\n.bar-nav {\n position: relative;\n height: var(--dimension-size-600);\n border-bottom: var(--dimension-stroke-width-012) solid var(--_bar-nav-border);\n background-color: var(--_bar-nav-bg);\n color: var(--_bar-nav-fg-primary);\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-3),\n border-color var(--effect-motion-short-3),\n color var(--effect-motion-short-3);\n isolation: isolate;\n /* Default Chrome — ShellApp owns the shared base surface. */\n --_bar-nav-bg: var(--color-chrome-background-theme);\n --_bar-nav-border: var(--color-chrome-border-tertiary);\n --_bar-nav-fg-primary: var(--color-chrome-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-chrome-foreground-secondary);\n --_bar-nav-hover: var(--color-chrome-interaction-hover);\n --_bar-nav-pressed: var(--color-chrome-interaction-pressed);\n --_bar-nav-focus: var(--color-chrome-interaction-focus);\n --_bar-nav-dot: var(--color-chrome-foreground-theme);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* Style slots — both route contexts use the shared Chrome token family. */\n.bar-nav--dashboard,\n.bar-nav--settings {\n --_bar-nav-bg: var(--color-chrome-background-theme);\n --_bar-nav-border: var(--color-chrome-border-tertiary);\n --_bar-nav-fg-primary: var(--color-chrome-foreground-primary);\n --_bar-nav-fg-secondary: var(--color-chrome-foreground-secondary);\n --_bar-nav-hover: var(--color-chrome-interaction-hover);\n --_bar-nav-pressed: var(--color-chrome-interaction-pressed);\n --_bar-nav-focus: var(--color-chrome-interaction-focus);\n --_bar-nav-dot: var(--color-chrome-foreground-theme);\n --ds-interaction-hover: var(--_bar-nav-hover);\n --ds-interaction-pressed: var(--_bar-nav-pressed);\n --ds-focus-ring-color: var(--_bar-nav-focus);\n}\n\n/* ShellApp owns the shared base + wash — bar is a transparent frame in every preset. */\n:host-context(ds-shell-app) .bar-nav {\n background-color: transparent;\n}\n\n.bar-nav > :not(.bar-nav__tabs-probe) {\n position: relative;\n z-index: 3;\n}\n\n/* Overflow — keep fitting tabs visible and pin the overflow trigger to the far edge. */\n.bar-nav--tabs-collapsed {\n display: flex;\n gap: var(--dimension-space-100);\n align-items: center;\n}\n\n/* Expanded tabs — consume full header width */\n.bar-nav__left {\n position: relative;\n flex: 1 1 0%;\n min-width: 0;\n width: 0;\n display: flex;\n align-items: center;\n}\n\n.bar-nav__tabs-visible {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n/* Unconstrained width so intrinsic tab row width is measurable while collapsed */\n.bar-nav__tabs-probe {\n position: absolute;\n left: 0;\n top: 0;\n visibility: hidden;\n pointer-events: none;\n overflow: visible;\n width: max-content;\n max-width: none;\n z-index: -1;\n}\n\n.bar-nav__tabs-probe > div {\n width: max-content;\n}\n\n.bar-nav__tab-list {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n position: relative;\n width: max-content;\n}\n\n.bar-nav__tab {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n box-sizing: border-box;\n border: none;\n border-radius: var(--ds-control-radius);\n background-color: transparent;\n color: var(--_bar-nav-fg-secondary);\n cursor: default;\n position: relative;\n flex-shrink: 0;\n -webkit-user-select: none;\n user-select: none;\n transition: color var(--effect-motion-short-2);\n}\n\n.bar-nav__tab::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: var(--ds-control-radius);\n background: transparent;\n pointer-events: none;\n cursor: inherit;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .bar-nav__tab:hover::after {\n background: var(--_bar-nav-hover);\n }\n}\n\n.bar-nav__tab:active::after {\n background: var(--_bar-nav-pressed);\n}\n\n.bar-nav__tab--selected {\n color: var(--_bar-nav-fg-primary);\n}\n\n.bar-nav__tab-label {\n display: inline-flex;\n align-items: center;\n white-space: nowrap;\n}\n\n.bar-nav__tab-divider {\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--dimension-space-100);\n height: var(--ds-control-height);\n padding-block: var(--ds-control-padding-inline);\n flex-shrink: 0;\n pointer-events: none;\n}\n\n.bar-nav__tab-divider-line {\n width: var(--dimension-stroke-width-012);\n align-self: stretch;\n background-color: var(--_bar-nav-border);\n}\n\n/* In-flow placeholder while measuring overflow — avoids layout jump; hidden from view/accessibility. */\n.bar-nav__tabs-pending {\n flex: 1;\n min-width: 0;\n height: var(--ds-control-height);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* Overflow trigger — compact icon button aligned to the right edge. */\n.bar-nav__overflow-trigger {\n margin-left: auto;\n}\n\n/* Fallback heading when no tabs — matches a single (selected) tab so the area\n name shares the tab label's type token, color, height and horizontal inset.\n Inset = tab button padding (space-075, 6px) + label inset (space-025, 2px).\n Color comes from ds-text color=\"primary\"; beat Text's inline-box display. */\nds-text.bar-nav__heading {\n display: inline-flex;\n align-items: center;\n height: var(--ds-control-height);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n -webkit-user-select: none;\n user-select: none;\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n Watch,\n State,\n h,\n Host,\n} from '@stencil/core';\nimport type { NavChromeStyle } from '../../shell/nav-chrome';\nimport { ConnectionTasks } from '../../utils/connection-tasks';\nimport type { MenuItemData } from '../Menu/menu-types';\nimport { getSelectableTabs, isTabDivider, type TabItemTab } from '../TabGroup/tab-item-utils';\nimport type { BarNavTab } from './bar-nav-types';\nimport { deriveBarNavValueFromUrl, shouldResyncBarNavProps } from './bar-nav-utils';\nimport {\n tabsOverflowContainer,\n tabsToOverflowMenuSections,\n trimTrailingDividers,\n visibleTabCountForWidth,\n} from './bar-nav-tabs-menu-utils';\nimport {\n CHROME_TRANSITION_END,\n CHROME_TRANSITION_START,\n ChromeTransitionGate,\n createRafCoalescer,\n readChromeTransitionSource,\n readChromeTransitionPhase,\n} from '../../shell/chrome-transition';\n\n@Component({\n tag: 'ds-bar-nav',\n styleUrl: 'BarNav.css',\n scoped: true,\n})\nexport class BarNav {\n /** Style slot: `dashboard` or `settings`. Colors match for now. */\n @Prop({ attribute: 'nav-style', reflect: true }) navStyle: NavChromeStyle = 'dashboard';\n\n @Element() el!: HTMLElement;\n\n /**\n * Tab items for the left section.\n * Set via JS property: `el.tabs = [...]`. Replace the array reference to update.\n */\n @Prop() tabs: BarNavTab[] = [];\n\n /** ID of the currently active tab. Overridden when `currentUrl` + `basePath` are set. */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * Fallback heading shown when no tabs are provided.\n * When tabs are present the heading is hidden.\n */\n @Prop() heading: string | undefined;\n\n /** Section base path (e.g. `/dashboard/safety`). Used with `currentUrl` to derive `value`. */\n @Prop() basePath: string = '';\n\n /** Current route URL. When set with `basePath`, the active tab is derived automatically. */\n @Prop() currentUrl: string = '';\n @Prop() moreTabsLabel: string = 'More tabs';\n\n /** Emitted when the active tab changes. Detail = tab id. */\n @Event() dsTabChange!: EventEmitter<string>;\n\n @State() private resolvedTabs: BarNavTab[] = [];\n @State() private urlDerivedValue: string = '';\n @State() private hideTabsForDetailRoute = false;\n @State() private tabsCollapsed = false;\n @State() private menuOpen = false;\n @State() private menuTriggerActive = false;\n /** When false, defer showing expanded tabs or the collapsed trigger until intrinsic width is measured (avoids a one-frame flash of the full tab row on narrow viewports). */\n @State() private tabLayoutCommitted = false;\n @State() private visibleTabs: BarNavTab[] = [];\n @State() private overflowTabs: BarNavTab[] = [];\n @State() private menuInitialFocusVisible = false;\n @State() private overflowRovingFocused = false;\n @State() private focusedTabId = '';\n\n private static readonly HOST_PROP_SYNC_BUDGET = 8;\n private static readonly INTRINSIC_WIDTH_RETRY_MAX = 3;\n private static readonly TAB_LAYOUT_COMMIT_MAX_FRAMES = 16;\n private static readonly OVERFLOW_HYSTERESIS_PX = 8;\n\n private headerEl: HTMLElement | null = null;\n private triggerEl: (HTMLElement & { setFocus?: () => Promise<void> }) | null = null;\n private menuEl: HTMLDsMenuElement | null = null;\n private visibleTabListEl: HTMLElement | null = null;\n private probeTabListEl: HTMLElement | null = null;\n private resizeObserver: ResizeObserver | null = null;\n private hasLoaded = false;\n private readonly connectionTasks = new ConnectionTasks(() => this.el.isConnected);\n private intrinsicWidthRetryCount = 0;\n private tabLayoutPendingFrames = 0;\n private readonly panelNavTransition = new ChromeTransitionGate();\n private readonly panelToolsTransition = new ChromeTransitionGate();\n private readonly overflowCoalescer = createRafCoalescer(() => {\n this.updateTabsCollapsed();\n });\n private chromeTransitionShell: HTMLElement | null = null;\n /** Matches `basePath` once tabs + URL are reconciled for the active section. */\n @State() private committedSection = '';\n /** Section waiting for URL + tabs to catch up after a cross-area navigation. */\n @State() private pendingSection = '';\n\n private get effectiveValue(): string {\n if (this.currentUrl && this.basePath) {\n return this.urlDerivedValue;\n }\n return this.value;\n }\n\n private get renderedSelectableTabs(): TabItemTab[] {\n const tabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n return getSelectableTabs(tabs);\n }\n\n private get hasOverflowTabs(): boolean {\n return this.tabLayoutCommitted && this.tabsCollapsed && this.overflowTabs.length > 0;\n }\n\n private syncFocusedTabId(preferred: string, tabs: TabItemTab[]) {\n if (tabs.some(tab => tab.id === preferred && !tab.isInactive)) {\n this.focusedTabId = preferred;\n return;\n }\n const first = tabs.find(tab => !tab.isInactive);\n this.focusedTabId = first?.id ?? '';\n }\n\n private digestTabsConfig(tabs: BarNavTab[]): string {\n return tabs.map(t => (isTabDivider(t) ? '|' : t.id)).join(',');\n }\n\n private resetTabOverflowLayout() {\n this.tabLayoutCommitted = false;\n this.tabsCollapsed = false;\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.visibleTabs = [];\n this.overflowTabs = [];\n }\n\n @Watch('tabs')\n @Watch('currentUrl')\n @Watch('basePath')\n onHostPropsChange() {\n this.applyHostProps();\n }\n\n @Watch('value')\n @Watch('urlDerivedValue')\n onSelectionChange() {\n this.syncFocusedTabId(this.effectiveValue, this.renderedSelectableTabs);\n this.syncMenuSections();\n this.scheduleOverflowCheck();\n }\n\n @Watch('menuOpen')\n onMenuOpenChange(open: boolean) {\n if (this.menuEl) {\n this.menuEl.open = open;\n }\n }\n\n @Watch('tabsCollapsed')\n onTabsCollapsedChange(collapsed: boolean, prevCollapsed: boolean | undefined) {\n if (!collapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n this.menuInitialFocusVisible = false;\n this.menuEl = null;\n }\n this.scheduleOverflowCheck();\n if (collapsed) {\n this.connectionTasks.frame(() => {\n this.scheduleOverflowCheck();\n });\n }\n if (collapsed || prevCollapsed === undefined || prevCollapsed === collapsed) return;\n this.connectionTasks.frame(() => this.scheduleOverflowCheck());\n this.connectionTasks.microtask(() => this.focusVisibleSelectedTab());\n }\n\n componentWillLoad() {\n this.applyHostProps();\n this.syncFocusedTabId(this.effectiveValue, getSelectableTabs(this.resolvedTabs));\n }\n\n connectedCallback() {\n if (this.hasLoaded) this.connectResources();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.connectResources();\n }\n\n private connectResources() {\n if (!this.el.isConnected) return;\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.syncHostPropsIfNeeded();\n this.scheduleDeferredHostPropSync();\n this.setupOverflowObserver();\n this.bindChromeTransitionListeners();\n this.scheduleOverflowCheck();\n }\n\n componentDidRender() {\n if (this.chromeOverflowPaused()) {\n this.syncMenuAnchor();\n return;\n }\n this.scheduleOverflowCheck();\n this.syncMenuAnchor();\n }\n\n disconnectedCallback() {\n this.connectionTasks.cancel();\n this.resizeObserver?.disconnect();\n this.resizeObserver = null;\n this.overflowCoalescer.cancel();\n this.unbindChromeTransitionListeners();\n this.panelNavTransition.exit();\n this.panelToolsTransition.exit();\n }\n\n private bindChromeTransitionListeners() {\n this.unbindChromeTransitionListeners();\n const shell = this.el.closest<HTMLElement>('ds-shell-app');\n if (!shell) return;\n this.chromeTransitionShell = shell;\n shell.addEventListener(CHROME_TRANSITION_START, this.onChromeTransitionStart);\n shell.addEventListener(CHROME_TRANSITION_END, this.onChromeTransitionEnd);\n }\n\n private unbindChromeTransitionListeners() {\n if (!this.chromeTransitionShell) return;\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_START,\n this.onChromeTransitionStart\n );\n this.chromeTransitionShell.removeEventListener(\n CHROME_TRANSITION_END,\n this.onChromeTransitionEnd\n );\n this.chromeTransitionShell = null;\n }\n\n private onChromeTransitionStart = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.enter();\n return;\n }\n if (source === 'panel-tools') {\n const phase = readChromeTransitionPhase(event) ?? 'opening';\n if (phase === 'closing') {\n this.panelToolsTransition.enter();\n }\n }\n };\n\n private chromeOverflowPaused(): boolean {\n return this.panelNavTransition.isActive || this.panelToolsTransition.isActive;\n }\n\n private onChromeTransitionEnd = (event: Event) => {\n const source = readChromeTransitionSource(event);\n if (source === 'panel-nav') {\n this.panelNavTransition.exit();\n if (!this.panelNavTransition.isActive) {\n this.scheduleOverflowCheck();\n }\n return;\n }\n if (source === 'panel-tools') {\n this.panelToolsTransition.exit();\n this.scheduleOverflowCheck();\n }\n };\n\n /** Re-resolve props assigned by the host after componentWillLoad (Angular ngAfterViewInit). */\n private syncHostPropsIfNeeded() {\n if (shouldResyncBarNavProps(this.resolvedTabs, this.tabs)) {\n this.applyHostProps();\n } else if (this.currentUrl && this.basePath) {\n this.syncValueFromUrl();\n }\n }\n\n /** Poll across animation frames — host props may land without triggering @Watch. */\n private scheduleDeferredHostPropSync() {\n let remaining = BarNav.HOST_PROP_SYNC_BUDGET;\n const tick = () => {\n this.syncHostPropsIfNeeded();\n if (--remaining > 0) {\n this.connectionTasks.frame(tick);\n }\n };\n this.connectionTasks.microtask(tick);\n }\n\n private setupOverflowObserver() {\n if (typeof ResizeObserver === 'undefined' || !this.headerEl) return;\n this.resizeObserver?.disconnect();\n this.resizeObserver = new ResizeObserver(() => {\n if (this.chromeOverflowPaused()) return;\n this.scheduleOverflowCheck();\n });\n this.resizeObserver.observe(this.headerEl);\n }\n\n private scheduleOverflowCheck() {\n if (!this.el.isConnected || this.chromeOverflowPaused()) return;\n this.overflowCoalescer.schedule();\n }\n\n /** Width available for the tab row or collapsed trigger. */\n private getLeftZoneAvailableWidth(): number {\n if (!this.headerEl) return 0;\n\n const headerStyle = getComputedStyle(this.headerEl);\n const horizontalPadding =\n (parseFloat(headerStyle.paddingLeft) || 0) + (parseFloat(headerStyle.paddingRight) || 0);\n\n return Math.max(0, this.headerEl.clientWidth - horizontalPadding);\n }\n\n private getTabsIntrinsicWidth(): number {\n return this.probeTabListEl?.scrollWidth ?? 0;\n }\n\n private getHeaderGap(): number {\n if (!this.headerEl) return 0;\n const style = getComputedStyle(this.headerEl);\n return parseFloat(style.columnGap || style.gap) || 0;\n }\n\n private getOverflowTriggerReserveWidth(): number {\n if (!this.triggerEl) {\n return 40;\n }\n return this.triggerEl.getBoundingClientRect().width + this.getHeaderGap();\n }\n\n private getProbeTabMetrics(): {\n itemWidths: number[];\n itemGap: number;\n listExtraWidth: number;\n } | null {\n const tabList = this.probeTabListEl;\n if (!tabList) return null;\n\n const children = Array.from(tabList.children) as HTMLElement[];\n const itemWidths = children.map(child => child.getBoundingClientRect().width);\n if (itemWidths.length === 0 || itemWidths.some(width => width === 0)) return null;\n\n const style = getComputedStyle(tabList);\n const itemGap = parseFloat(style.columnGap || style.gap) || 0;\n const childrenWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n const gapWidth = itemGap * Math.max(0, itemWidths.length - 1);\n const listExtraWidth = Math.max(0, tabList.scrollWidth - childrenWidth - gapWidth);\n\n return { itemWidths, itemGap, listExtraWidth };\n }\n\n private setOverflowTabLayout(visibleTabs: BarNavTab[], overflowTabs: BarNavTab[]) {\n const nextCollapsed = overflowTabs.length > 0;\n const visibleChanged =\n this.digestTabsConfig(visibleTabs) !== this.digestTabsConfig(this.visibleTabs);\n const overflowChanged =\n this.digestTabsConfig(overflowTabs) !== this.digestTabsConfig(this.overflowTabs);\n\n if (visibleChanged) {\n this.visibleTabs = visibleTabs;\n }\n if (overflowChanged) {\n this.overflowTabs = overflowTabs;\n }\n if (nextCollapsed !== this.tabsCollapsed) {\n this.tabsCollapsed = nextCollapsed;\n if (!nextCollapsed) {\n this.menuOpen = false;\n this.menuTriggerActive = false;\n }\n }\n this.syncFocusedTabId(\n this.effectiveValue,\n getSelectableTabs(nextCollapsed ? visibleTabs : this.resolvedTabs)\n );\n }\n\n private scheduleIntrinsicWidthRetry() {\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) return;\n this.intrinsicWidthRetryCount++;\n this.connectionTasks.frame(() => this.scheduleOverflowCheck());\n }\n\n private forceTabLayoutCommit(fallbackCollapsed: boolean) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.setOverflowTabLayout(\n fallbackCollapsed ? [] : this.resolvedTabs,\n fallbackCollapsed ? this.resolvedTabs : []\n );\n this.tabLayoutCommitted = true;\n }\n\n private updateTabsCollapsed() {\n if (!this.el.isConnected || this.chromeOverflowPaused()) return;\n if (!this.headerEl || this.resolvedTabs.length === 0 || this.hideTabsForDetailRoute) {\n if (this.tabsCollapsed) {\n this.setOverflowTabLayout([], []);\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.tabLayoutCommitted = true;\n return;\n }\n\n const metrics = this.getProbeTabMetrics();\n const intrinsicWidth = this.getTabsIntrinsicWidth();\n if (!metrics || intrinsicWidth === 0) {\n this.tabLayoutPendingFrames += 1;\n if (this.intrinsicWidthRetryCount >= BarNav.INTRINSIC_WIDTH_RETRY_MAX) {\n this.forceTabLayoutCommit(false);\n } else if (this.tabLayoutPendingFrames >= BarNav.TAB_LAYOUT_COMMIT_MAX_FRAMES) {\n this.forceTabLayoutCommit(false);\n } else {\n this.scheduleIntrinsicWidthRetry();\n }\n return;\n }\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n\n const shouldCollapse = tabsOverflowContainer(\n intrinsicWidth,\n this.getLeftZoneAvailableWidth(),\n this.tabsCollapsed,\n BarNav.OVERFLOW_HYSTERESIS_PX\n );\n\n if (!shouldCollapse) {\n this.setOverflowTabLayout(this.resolvedTabs, []);\n this.tabLayoutCommitted = true;\n return;\n }\n\n const visibleCount = visibleTabCountForWidth(\n metrics.itemWidths,\n this.getLeftZoneAvailableWidth(),\n this.getOverflowTriggerReserveWidth(),\n metrics.itemGap,\n metrics.listExtraWidth\n );\n const visibleTabs = trimTrailingDividers(this.resolvedTabs.slice(0, visibleCount));\n const overflowTabs = this.resolvedTabs.slice(visibleTabs.length);\n this.setOverflowTabLayout(visibleTabs, overflowTabs);\n this.tabLayoutCommitted = true;\n }\n\n private syncMenuAnchor() {\n if (!this.menuEl || !this.triggerEl || !this.hasOverflowTabs) return;\n this.menuEl.anchor = this.triggerEl;\n this.syncMenuSections();\n }\n\n private handleMenuSelect(e: Event) {\n const detail = (e as CustomEvent<MenuItemData>).detail;\n if (detail?.value !== undefined) {\n this.selectTab(String(detail.value));\n }\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuClose() {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n }\n\n private handleMenuAfterClose() {\n if (!this.menuOpen) this.menuTriggerActive = false;\n }\n\n /** Batch tabs/basePath/currentUrl updates so URL derivation never runs with a mixed section. */\n private incomingTabs(): BarNavTab[] {\n return this.tabs ?? [];\n }\n\n private applyHostProps() {\n const nextBasePath = this.basePath;\n const sectionChanged =\n nextBasePath !== '' && this.committedSection !== '' && nextBasePath !== this.committedSection;\n\n if (sectionChanged) {\n this.urlDerivedValue = '';\n this.committedSection = '';\n this.pendingSection = nextBasePath;\n this.resolvedTabs = [];\n this.resetTabOverflowLayout();\n return;\n }\n\n if (this.pendingSection) {\n if (!nextBasePath || nextBasePath !== this.pendingSection) {\n return;\n }\n if (!this.currentUrl.startsWith(this.pendingSection)) {\n return;\n }\n const tabs = this.incomingTabs();\n if (tabs.length === 0) {\n return;\n }\n this.pendingSection = '';\n }\n\n const tabs = this.incomingTabs();\n const tabsConfigChanged =\n this.digestTabsConfig(tabs) !== this.digestTabsConfig(this.resolvedTabs);\n\n this.resolvedTabs = tabs;\n this.syncValueFromUrl();\n this.committedSection = nextBasePath;\n if (tabsConfigChanged) {\n this.resetTabOverflowLayout();\n }\n this.scheduleOverflowCheck();\n }\n\n private syncMenuSections() {\n if (!this.menuEl) return;\n this.menuEl.sections = tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue);\n }\n\n private syncValueFromUrl() {\n const tabs = this.incomingTabs();\n\n if (!this.currentUrl || !this.basePath) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n if (!this.currentUrl.startsWith(this.basePath)) {\n this.urlDerivedValue = '';\n this.hideTabsForDetailRoute = false;\n return;\n }\n\n const { value, hideTabs } = deriveBarNavValueFromUrl(this.currentUrl, this.basePath, tabs);\n this.urlDerivedValue = value;\n this.hideTabsForDetailRoute = hideTabs;\n }\n\n private selectTab(id: string) {\n this.value = id;\n this.dsTabChange.emit(id);\n }\n\n /** Move focus to the selected tab in the visible tab group (after expand). */\n private focusVisibleSelectedTab() {\n const tab = this.visibleTabListEl?.querySelector(\n `[data-tab-id=\"${this.effectiveValue}\"]`\n ) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusVisibleTab(id: string) {\n this.focusedTabId = id;\n const tab = this.visibleTabListEl?.querySelector(`[data-tab-id=\"${id}\"]`) as HTMLElement | null;\n tab?.focus({ preventScroll: true });\n }\n\n private focusLastVisibleTab() {\n const last = [...this.renderedSelectableTabs].reverse().find(tab => !tab.isInactive);\n if (last) this.focusVisibleTab(last.id);\n }\n\n private findEnabledVisibleTab(from: number, step: 1 | -1): number | null {\n const tabs = this.renderedSelectableTabs;\n for (let index = from + step; index >= 0 && index < tabs.length; index += step) {\n if (!tabs[index]?.isInactive) return index;\n }\n return null;\n }\n\n private handleTabKeyDown(e: KeyboardEvent) {\n const tabs = this.renderedSelectableTabs;\n if (!tabs.length) return;\n const targetId = (e.target as HTMLElement | null)?.getAttribute('data-tab-id');\n const focusedId = targetId ?? this.focusedTabId;\n\n if (e.key === 'Enter' || e.key === ' ') {\n const focused = tabs.find(tab => tab.id === focusedId);\n if (!focused || focused.isInactive) return;\n e.preventDefault();\n this.selectTab(focused.id);\n return;\n }\n\n const currentIndex = tabs.findIndex(tab => tab.id === focusedId);\n if (currentIndex < 0) return;\n\n let nextIndex: number | null;\n if (e.key === 'ArrowRight') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, 1);\n if (nextIndex === null && this.hasOverflowTabs) {\n e.preventDefault();\n this.overflowRovingFocused = true;\n void this.triggerEl?.setFocus?.();\n return;\n }\n } else if (e.key === 'ArrowLeft') {\n nextIndex = this.findEnabledVisibleTab(currentIndex, -1);\n } else if (e.key === 'Home') {\n nextIndex = tabs.findIndex(tab => !tab.isInactive);\n } else if (e.key === 'End') {\n const reversedIndex = [...tabs].reverse().findIndex(tab => !tab.isInactive);\n nextIndex = reversedIndex < 0 ? null : tabs.length - 1 - reversedIndex;\n } else {\n return;\n }\n\n if (nextIndex === null || nextIndex < 0 || nextIndex === currentIndex) return;\n e.preventDefault();\n this.focusVisibleTab(tabs[nextIndex].id);\n }\n\n private toggleTabMenu(options?: { focusVisible?: boolean }) {\n if (this.menuOpen) {\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n return;\n }\n\n if (this.menuEl && this.triggerEl) {\n this.menuEl.anchor = this.triggerEl;\n this.menuEl.minWidth = '';\n this.syncMenuSections();\n }\n\n this.menuInitialFocusVisible = options?.focusVisible ?? false;\n this.menuTriggerActive = true;\n this.menuOpen = true;\n }\n\n private handleOverflowFocus = () => {\n this.overflowRovingFocused = true;\n };\n\n private handleOverflowBlur = () => {\n this.overflowRovingFocused = false;\n };\n\n private handleTriggerKeyDown(e: KeyboardEvent) {\n if (!this.hasOverflowTabs) return;\n\n if (!this.menuOpen) {\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n this.overflowRovingFocused = false;\n this.focusLastVisibleTab();\n return;\n }\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.toggleTabMenu({ focusVisible: true });\n }\n return;\n }\n\n if (e.key === 'Escape') {\n e.preventDefault();\n this.menuOpen = false;\n this.menuInitialFocusVisible = false;\n void this.triggerEl?.setFocus?.();\n }\n }\n\n private renderTabList(tabs: BarNavTab[], probe: boolean) {\n return (\n <div\n role=\"tablist\"\n class=\"bar-nav__tab-list\"\n aria-label={this.heading}\n ref={el => {\n if (probe) {\n const next = (el as HTMLElement) ?? null;\n if (next === this.probeTabListEl) return;\n this.probeTabListEl = next;\n if (next) {\n this.intrinsicWidthRetryCount = 0;\n this.tabLayoutPendingFrames = 0;\n this.scheduleOverflowCheck();\n }\n } else {\n this.visibleTabListEl = (el as HTMLElement) ?? null;\n }\n }}\n onKeyDown={probe ? undefined : (e: KeyboardEvent) => this.handleTabKeyDown(e)}\n onFocusin={\n probe\n ? undefined\n : () => {\n this.overflowRovingFocused = false;\n }\n }\n >\n {tabs.map((tab, index) => {\n if (isTabDivider(tab)) {\n return (\n <div class=\"bar-nav__tab-divider\" key={`divider-${index}`} aria-hidden=\"true\">\n <div class=\"bar-nav__tab-divider-line\" />\n </div>\n );\n }\n\n const isSelected = tab.id === this.effectiveValue;\n return (\n <button\n key={tab.id}\n type=\"button\"\n role=\"tab\"\n data-tab-id={tab.id}\n class={{\n 'bar-nav__tab': true,\n 'bar-nav__tab--selected': isSelected,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill--on-chrome': true,\n 'ds-control-inactive': !!tab.isInactive,\n }}\n aria-selected={isSelected ? 'true' : 'false'}\n aria-disabled={tab.isInactive ? 'true' : undefined}\n aria-controls={tab.panelId ?? undefined}\n disabled={tab.isInactive}\n tabIndex={\n !probe && !this.overflowRovingFocused && tab.id === this.focusedTabId ? 0 : -1\n }\n onClick={() => !probe && !tab.isInactive && this.selectTab(tab.id)}\n onFocus={() => {\n if (!probe) this.focusedTabId = tab.id;\n }}\n >\n <span\n class={{\n 'bar-nav__tab-label': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': !!tab.dot,\n 'bar-nav__tab-label--dot': !!tab.dot,\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis={isSelected} color=\"inherit\">\n {tab.label}\n </ds-text>\n {tab.dot && (\n <ds-badge\n class=\"bar-nav__tab-dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n style={{ '--_badge-bg': 'var(--_bar-nav-dot)' }}\n />\n )}\n </span>\n </button>\n );\n })}\n </div>\n );\n }\n\n render() {\n // Section gating only applies when `basePath` is set (SPA section sync).\n // Tabs without a base path must still render — otherwise a single-tab bar\n // (or any non-routed tabs) silently falls through to an empty header.\n const sectionReady = this.basePath === '' || this.committedSection === this.basePath;\n const hasTabs = sectionReady && this.resolvedTabs.length > 0 && !this.hideTabsForDetailRoute;\n const tabGroupKey = this.basePath || 'no-section';\n const renderedTabs = this.hasOverflowTabs ? this.visibleTabs : this.resolvedTabs;\n\n return (\n <Host>\n <header\n class={{\n 'bar-nav': true,\n 'ds-control--md': true,\n 'ds-chrome-row': true,\n 'ds-chrome-space--md': true,\n 'ds-interaction-fill--on-chrome': true,\n 'bar-nav--dashboard': this.navStyle === 'dashboard',\n 'bar-nav--settings': this.navStyle === 'settings',\n 'bar-nav--tabs-collapsed': hasTabs && this.hasOverflowTabs,\n }}\n ref={el => {\n this.headerEl = el as HTMLElement;\n if (el && !this.resizeObserver) {\n this.setupOverflowObserver();\n }\n }}\n >\n {hasTabs && (\n <div class=\"bar-nav__tabs-probe\" aria-hidden=\"true\" inert>\n <div key={`probe-${tabGroupKey}`}>{this.renderTabList(this.resolvedTabs, true)}</div>\n </div>\n )}\n\n {hasTabs && this.tabLayoutCommitted && renderedTabs.length > 0 && (\n <div class=\"bar-nav__left\">\n <div key={`visible-${tabGroupKey}`} class=\"bar-nav__tabs-visible\">\n {this.renderTabList(renderedTabs, false)}\n </div>\n </div>\n )}\n\n {hasTabs && !this.tabLayoutCommitted && (\n <div class=\"bar-nav__tabs-pending\" aria-hidden=\"true\" />\n )}\n\n {!hasTabs && this.heading && (\n <ds-text\n class=\"bar-nav__heading\"\n lineTruncation={1}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n wrap=\"nowrap\"\n >\n {this.heading}\n </ds-text>\n )}\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-button-unfilled\n variant=\"icon\"\n class={{\n 'bar-nav__overflow-trigger': true,\n }}\n icon=\"ChevronDown\"\n activeFill={false}\n hasBorder={false}\n background=\"chrome\"\n focusTabIndex={this.overflowRovingFocused ? 0 : -1}\n ref={(el?: HTMLDsButtonUnfilledElement) => {\n this.triggerEl = (el as HTMLElement & { setFocus?: () => Promise<void> }) ?? null;\n }}\n haspopup=\"menu\"\n expanded={this.menuOpen}\n surfaceOpen={this.menuTriggerActive}\n aria-label={this.moreTabsLabel}\n onDsClick={() => this.toggleTabMenu({ focusVisible: false })}\n onFocusin={this.handleOverflowFocus}\n onFocusout={this.handleOverflowBlur}\n onKeyDown={(e: KeyboardEvent) => this.handleTriggerKeyDown(e)}\n />\n )}\n </header>\n\n {hasTabs && this.hasOverflowTabs && (\n <ds-menu\n ref={el => {\n this.menuEl = (el as HTMLDsMenuElement) ?? null;\n }}\n open={this.menuOpen}\n sections={tabsToOverflowMenuSections(this.overflowTabs, this.effectiveValue)}\n side=\"bottom\"\n align=\"end\"\n sideOffset=\"calc(var(--dimension-space-100) + var(--dimension-space-050))\"\n initialFocusVisible={this.menuInitialFocusVisible}\n onDsSelect={(e: Event) => this.handleMenuSelect(e)}\n onDsClose={() => this.handleMenuClose()}\n onDsAfterClose={() => this.handleMenuAfterClose()}\n />\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{p as e,H as n,c as a,h as i,a as s,t}from"./index.js";import{b as o}from"./p-B0uO3-Dp.js";import{C as r}from"./p-DlsjHRU3.js";import{r as d,p as l,a as c,d as v,s as p,f as h,b as f}from"./p-CqW2eyiF.js";import{c as u}from"./p-CeXf9-X3.js";import{r as m}from"./p-CbrDF2gA.js";import{d as g}from"./p-BWJb2rih.js";import{d as b}from"./p-kL4EOsx5.js";import{d as _}from"./p-BVsVUnAw.js";import{d as x}from"./p-0XTyQNRG.js";import{d as y}from"./p-DHpcv_Os.js";import{d as w}from"./p-eKnJNQtL.js";import{d as k}from"./p-C2e7BkNn.js";import{d as C}from"./p-BWnL2SWn.js";import{d as z}from"./p-BbvAWFJA.js";import{d as I}from"./p-BJf49edB.js";function A(e){const n=Array.isArray(e.edges)?e.edges:[e.edges];const a={"scroll-edge-fade":true,"scroll-edge-fade--scroll-aware":e.scrollAware===true,"scroll-edge-fade--hidden":e.hidden===true};for(const e of n){a[`scroll-edge-fade--${e}`]=true}const{atEnd:i}=e;if(i===true){a["scroll-edge-fade--at-end"]=true}else if(i&&typeof i==="object"){for(const e of n){if(i[e]){a[`scroll-edge-fade--${e}-at-edge`]=true}}}return a}const S={side:"right",align:"end",anchorAlignment:"choice-cell",sideOffset:"calc(var(--dimension-space-100) + var(--dimension-space-050))",alignOffset:0};const E={side:"right",align:"start",anchorAlignment:"choice-cell",sideOffset:"calc(var(--dimension-space-100) + var(--dimension-space-050))",alignOffset:0};const D="data-nav-style";function N(e){if(e==="dashboard"||e==="settings")return e;return undefined}function j(e,n,a){const i=N(n);if(i)return i;const s=typeof document!=="undefined"?document.documentElement.getAttribute(D):null;const t=N(s);if(t)return t;return e}function R(e,n){return e!==n}const L="ds-panel-nav-user-menu-anchor";const F=()=>`@property --ds-scroll-edge-fade-top{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-bottom{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-left{syntax:'<length-percentage>';inherits:false;initial-value:0px}@property --ds-scroll-edge-fade-right{syntax:'<length-percentage>';inherits:false;initial-value:0px}@keyframes ds-scroll-edge-fade-reveal-top{from{--ds-scroll-edge-fade-top:0px}to{--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top)}}@keyframes ds-scroll-edge-fade-reveal-bottom{from{--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom)}to{--ds-scroll-edge-fade-bottom:0px}}@keyframes ds-scroll-edge-fade-reveal-left{from{--ds-scroll-edge-fade-left:0px}to{--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left)}}@keyframes ds-scroll-edge-fade-reveal-right{from{--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right)}to{--ds-scroll-edge-fade-right:0px}}.scroll-edge-fade.sc-ds-panel-nav{--ds-scroll-edge-fade-size:var(--dimension-size-600);--ds-scroll-edge-fade-reveal-distance:var(--dimension-size-800);--ds-scroll-edge-fade-target-top:0px;--ds-scroll-edge-fade-target-bottom:0px;--ds-scroll-edge-fade-target-left:0px;--ds-scroll-edge-fade-target-right:0px;--ds-scroll-edge-fade-top:var(--ds-scroll-edge-fade-target-top);--ds-scroll-edge-fade-bottom:var(--ds-scroll-edge-fade-target-bottom);--ds-scroll-edge-fade-left:var(--ds-scroll-edge-fade-target-left);--ds-scroll-edge-fade-right:var(--ds-scroll-edge-fade-target-right);--ds-scroll-edge-fade-block-mask:linear-gradient( to bottom, transparent 0, #000 var(--ds-scroll-edge-fade-top), #000 calc(100% - var(--ds-scroll-edge-fade-bottom)), transparent 100% );--ds-scroll-edge-fade-inline-mask:linear-gradient( to right, transparent 0, #000 var(--ds-scroll-edge-fade-left), #000 calc(100% - var(--ds-scroll-edge-fade-right)), transparent 100% );-webkit-mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);mask-image:var(--ds-scroll-edge-fade-block-mask), var(--ds-scroll-edge-fade-inline-mask);-webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.scroll-edge-fade--top.sc-ds-panel-nav{--ds-scroll-edge-fade-target-top:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--bottom.sc-ds-panel-nav{--ds-scroll-edge-fade-target-bottom:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--left.sc-ds-panel-nav{--ds-scroll-edge-fade-target-left:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--right.sc-ds-panel-nav{--ds-scroll-edge-fade-target-right:var(--ds-scroll-edge-fade-size)}.scroll-edge-fade--top-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-top:0px}.scroll-edge-fade--bottom-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-bottom:0px}.scroll-edge-fade--left-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-left:0px}.scroll-edge-fade--right-at-edge.sc-ds-panel-nav{--ds-scroll-edge-fade-target-right:0px}@supports (animation-timeline: scroll()){.scroll-edge-fade--scroll-aware.sc-ds-panel-nav{animation-name:ds-scroll-edge-fade-reveal-top, ds-scroll-edge-fade-reveal-bottom, ds-scroll-edge-fade-reveal-left, ds-scroll-edge-fade-reveal-right;animation-duration:1ms;animation-timing-function:ease-in-out;animation-fill-mode:both;animation-timeline:scroll(self y), scroll(self y), scroll(self x), scroll(self x);animation-range:0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%, 0 var(--ds-scroll-edge-fade-reveal-distance), calc(100% - var(--ds-scroll-edge-fade-reveal-distance)) 100%}@media (prefers-reduced-motion: reduce){.scroll-edge-fade--scroll-aware.sc-ds-panel-nav{animation:none}}}.scroll-edge-fade--at-end.sc-ds-panel-nav,.scroll-edge-fade--hidden.sc-ds-panel-nav{-webkit-mask-image:none;mask-image:none}.scroll-edge-fade--block-window.sc-ds-panel-nav{--ds-scroll-edge-fade-window-start:100%;--ds-scroll-edge-fade-window-end:100%;-webkit-mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );mask-image:linear-gradient( to bottom, #000 0, #000 var(--ds-scroll-edge-fade-window-start), transparent var(--ds-scroll-edge-fade-window-end) );-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}`;const T=()=>`.sc-ds-panel-nav-h,.sc-ds-panel-nav:where(.ds-table),.sc-ds-panel-nav:where(.tooltip-popup),.sc-ds-panel-nav:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-panel-nav,.ds-control--lg.sc-ds-panel-nav-h,.ds-control--md.sc-ds-panel-nav-h,.ds-control--md.sc-ds-panel-nav,.ds-control--sm.sc-ds-panel-nav-h,.ds-control--sm.sc-ds-panel-nav,.ds-control--xs.sc-ds-panel-nav-h,.ds-control--xs.sc-ds-panel-nav{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-panel-nav-h,.ds-control--lg.sc-ds-panel-nav{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-panel-nav-h,.ds-control--md.sc-ds-panel-nav{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-panel-nav-h,.ds-control--sm.sc-ds-panel-nav{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-panel-nav-h,.ds-control--xs.sc-ds-panel-nav{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-chrome-space--sm.sc-ds-panel-nav-h,.ds-chrome-space--sm.sc-ds-panel-nav{--ds-chrome-padding:var(--ds-chrome-space-sm-padding, var(--dimension-space-050));--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-panel-nav-h,.ds-chrome-space--md.sc-ds-panel-nav{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-panel-nav-h,.ds-chrome-space--lg.sc-ds-panel-nav{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-panel-nav-h,.ds-chrome-row.sc-ds-panel-nav,.ds-chrome-column.sc-ds-panel-nav-h,.ds-chrome-column.sc-ds-panel-nav,.ds-chrome-grid.sc-ds-panel-nav-h,.ds-chrome-grid.sc-ds-panel-nav{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-panel-nav-h,.ds-chrome-row.sc-ds-panel-nav{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-panel-nav-h,.ds-chrome-column.sc-ds-panel-nav{flex-direction:column}.ds-chrome-grid.sc-ds-panel-nav-h,.ds-chrome-grid.sc-ds-panel-nav{display:grid;align-items:center}@media (forced-colors: active){.sc-ds-panel-nav:root,.sc-ds-panel-nav-h,.ds-forced-colors-scope.sc-ds-panel-nav{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-panel-nav-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-panel-nav-h,.ds-focus-ring.sc-ds-panel-nav,.ds-focus-ring-inset.sc-ds-panel-nav-h,.ds-focus-ring-inset.sc-ds-panel-nav{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-panel-nav-h:focus-visible,.ds-focus-ring.sc-ds-panel-nav:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-panel-nav-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-panel-nav{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-panel-nav-h:focus-visible,.ds-focus-ring-inset.sc-ds-panel-nav:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-panel-nav-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-panel-nav:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-panel-nav::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-panel-nav-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-panel-nav:root,.sc-ds-panel-nav-h,.ds-forced-colors-scope.sc-ds-panel-nav{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-panel-nav-h,.ds-interaction-fill.sc-ds-panel-nav{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-panel-nav-h::before,.ds-interaction-fill.sc-ds-panel-nav::before,.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-panel-nav-h::before,.ds-interaction-fill.sc-ds-panel-nav::before{z-index:1}.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-panel-nav-h,.ds-interaction-fill--bordered.sc-ds-panel-nav{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-panel-nav-h::before,.ds-interaction-fill--selected.sc-ds-panel-nav::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-panel-nav-h,.ds-interaction-fill--selected.sc-ds-panel-nav{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-panel-nav-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-panel-nav:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-panel-nav-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-panel-nav:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-panel-nav-h::after,.ds-interaction-fill--grouped.sc-ds-panel-nav::after,.ds-interaction-fill--grouped.sc-ds-panel-nav-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-panel-nav:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-panel-nav-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-panel-nav:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-panel-nav-h,.ds-interaction-fill--grouped.sc-ds-panel-nav{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-panel-nav-h>.ds-interaction-fill__content.sc-ds-panel-nav,.ds-interaction-fill.sc-ds-panel-nav>.ds-interaction-fill__content.sc-ds-panel-nav,.ds-interaction-fill__content.sc-ds-panel-nav{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-panel-nav-h,.ds-interaction-fill--on-faint.sc-ds-panel-nav{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-panel-nav-h,.ds-interaction-fill--on-medium.sc-ds-panel-nav{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-panel-nav-h,.ds-interaction-fill--on-bold.sc-ds-panel-nav{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-panel-nav-h,.ds-interaction-fill--on-strong.sc-ds-panel-nav{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-panel-nav-h,.ds-interaction-fill--on-translucent.sc-ds-panel-nav{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-panel-nav-h,.ds-interaction-fill--on-inverted.sc-ds-panel-nav{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-panel-nav-h,.ds-interaction-fill--on-media.sc-ds-panel-nav{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-panel-nav-h,.ds-interaction-fill--on-always-dark.sc-ds-panel-nav{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-chrome.sc-ds-panel-nav-h,.ds-interaction-fill--on-chrome.sc-ds-panel-nav{--ds-interaction-hover:var(--color-chrome-interaction-hover);--ds-interaction-pressed:var(--color-chrome-interaction-pressed);--ds-interaction-active:var(--color-chrome-interaction-active);--ds-focus-ring-color:var(--color-chrome-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-panel-nav-h,.ds-interaction-fill--on-navigation.sc-ds-panel-nav{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-panel-nav-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-panel-nav:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-panel-nav-h::after,.ds-interaction-fill.sc-ds-panel-nav::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--surface-open.sc-ds-panel-nav-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-panel-nav:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-panel-nav-h::before,.ds-interaction-fill--selected.sc-ds-panel-nav::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-panel-nav-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-panel-nav:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.ds-scrollbar-hidden.sc-ds-panel-nav-h,.ds-scrollbar-hidden.sc-ds-panel-nav{scrollbar-width:none}.ds-scrollbar-hidden.sc-ds-panel-nav-h::-webkit-scrollbar,.ds-scrollbar-hidden.sc-ds-panel-nav::-webkit-scrollbar{display:none}.ds-nav-disclosure.sc-ds-panel-nav,.ds-nav-disclosure-divider.sc-ds-panel-nav{--ds-nav-disclosure-duration:calc( var(--effect-animation-duration-short-3) * 2 + var(--effect-animation-duration-short-2) );--ds-nav-disclosure-wait:calc( var(--effect-animation-duration-short-3) + var(--effect-animation-duration-short-1) );--ds-nav-disclosure-fade:var(--ds-nav-disclosure-duration);--ds-nav-disclosure-stagger:var(--effect-animation-duration-short-1)}.ds-nav-disclosure.sc-ds-panel-nav{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-in-out) var(--ds-nav-disclosure-wait)}.ds-nav-disclosure--open.sc-ds-panel-nav{grid-template-rows:1fr;transition-delay:var(--effect-animation-duration-instant)}.ds-nav-disclosure.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{opacity:0;pointer-events:none;transition:opacity var(--ds-nav-disclosure-fade) var(--effect-animation-easing-ease-out) calc(var(--ds-nav-disclosure-reverse-index) * var(--ds-nav-disclosure-stagger)), color var(--effect-motion-short-1)}.ds-nav-disclosure--open.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{opacity:1;pointer-events:auto;transition-delay:calc( var(--ds-nav-disclosure-wait) + var(--ds-nav-disclosure-index) * var(--ds-nav-disclosure-stagger) ), var(--effect-animation-duration-instant)}.ds-nav-disclosure-divider.sc-ds-panel-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-in-out) var(--ds-nav-disclosure-wait), opacity var(--ds-nav-disclosure-duration) var(--effect-animation-easing-ease-out)}.ds-nav-disclosure-divider--open.sc-ds-panel-nav{grid-template-rows:1fr;opacity:1;transition-delay:var(--effect-animation-duration-instant), var(--effect-animation-duration-instant)}.ds-nav-disclosure-divider__clip.sc-ds-panel-nav{min-height:0;overflow:hidden}@media (prefers-reduced-motion: reduce){.ds-nav-disclosure.sc-ds-panel-nav,.ds-nav-disclosure-divider.sc-ds-panel-nav,.ds-nav-disclosure.sc-ds-panel-nav .ds-nav-disclosure__item.sc-ds-panel-nav{transition-duration:var(--effect-animation-duration-instant) !important;transition-delay:var(--effect-animation-duration-instant) !important}}.panel-nav.sc-ds-panel-nav{--_nav-width:var(--dimension-panel-width-2xs);--_nav-width-collapsed:var(--dimension-size-600);--_nav-item-height:var(--dimension-size-400, 32px);--_nav-padding-x:var(--dimension-space-100, 8px);--_nav-padding-y:var(--dimension-space-100, 8px);--_nav-footer-btn-w:calc( var(--dimension-space-075, 6px) * 2 + var(--dimension-iconography-md, 20px) );--_nav-speed:var(--ds-panel-nav-speed, 1);--_nav-expand-dur:calc(var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms));--_nav-expand-motion:var(--_nav-expand-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-label-fade-dur:calc(var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms));--_nav-label-fade-motion:var(--_nav-label-fade-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-label-fade-out-dur:calc( var(--_nav-speed) * var(--effect-animation-duration-medium-1, 300ms) );--_nav-label-fade-out-motion:var(--_nav-label-fade-out-dur) var(--effect-animation-easing-ease-in-out, ease);--_nav-bg:var(--color-chrome-background-theme);--_nav-border:var(--color-chrome-border-tertiary);--_nav-divider:var(--color-chrome-divider);--_nav-fg-primary:var(--color-chrome-foreground-primary);--_nav-fg-secondary:var(--color-chrome-foreground-secondary);--_nav-fg-tertiary:var(--color-chrome-foreground-tertiary);--_nav-hover:var(--color-chrome-interaction-hover);--_nav-pressed:var(--color-chrome-interaction-pressed);--_nav-focus:var(--color-chrome-interaction-focus);--_nav-dot:var(--color-chrome-foreground-theme);--ds-interaction-hover:var(--_nav-hover);--ds-interaction-pressed:var(--_nav-pressed);--ds-focus-ring-color:var(--_nav-focus)}ds-shell-app.sc-ds-panel-nav-h .panel-nav.sc-ds-panel-nav,ds-shell-app .sc-ds-panel-nav-h .panel-nav.sc-ds-panel-nav{background-color:transparent}.panel-nav--dashboard.sc-ds-panel-nav,.panel-nav--settings.sc-ds-panel-nav{--_nav-bg:var(--color-chrome-background-theme);--_nav-border:var(--color-chrome-border-tertiary);--_nav-divider:var(--color-chrome-divider);--_nav-fg-primary:var(--color-chrome-foreground-primary);--_nav-fg-secondary:var(--color-chrome-foreground-secondary);--_nav-fg-tertiary:var(--color-chrome-foreground-tertiary);--_nav-hover:var(--color-chrome-interaction-hover);--_nav-pressed:var(--color-chrome-interaction-pressed);--_nav-focus:var(--color-chrome-interaction-focus);--_nav-dot:var(--color-chrome-foreground-theme);--ds-interaction-hover:var(--_nav-hover);--ds-interaction-pressed:var(--_nav-pressed);--ds-focus-ring-color:var(--_nav-focus)}.panel-nav.sc-ds-panel-nav{display:flex;flex-direction:column;position:relative;width:var(--_nav-width);min-width:var(--_nav-width);height:100%;background-color:var(--_nav-bg);border-right:var(--dimension-stroke-width-012, 1px) solid var(--_nav-border);box-sizing:border-box;overflow:visible;transition:width var(--_nav-expand-motion), min-width var(--_nav-expand-motion), background-color var(--effect-motion-short-3, 200ms ease), border-color var(--effect-motion-short-3, 200ms ease);font-family:var(--typography-font-family-ui, system-ui);isolation:isolate}.panel-nav__header.sc-ds-panel-nav,.panel-nav__body.sc-ds-panel-nav,.panel-nav__footer.sc-ds-panel-nav{position:relative;z-index:3}.panel-nav--collapsed.sc-ds-panel-nav{width:var(--_nav-width-collapsed);min-width:var(--_nav-width-collapsed)}.panel-nav__header.sc-ds-panel-nav{height:var(--dimension-size-600, 48px);flex-shrink:0;border-bottom:var(--dimension-stroke-width-012, 1px) solid var(--_nav-divider);transition:border-color var(--effect-motion-short-3, 200ms ease)}.panel-nav__header-btn.sc-ds-panel-nav{all:unset;position:relative;z-index:0;display:flex;align-items:center;justify-content:center;padding:var(--dimension-space-075, 6px);border-radius:var(--ds-control-radius, var(--dimension-radius-025, 2px));cursor:default;color:var(--_nav-fg-primary);flex-shrink:0;box-sizing:border-box;transition:color var(--effect-motion-short-3, 200ms ease)}.panel-nav--breakpoint-locked.sc-ds-panel-nav .panel-nav__header-btn.sc-ds-panel-nav{cursor:default}.panel-nav__header-logo.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;position:relative;z-index:2;opacity:1}.panel-nav__m-mark.sc-ds-panel-nav{width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);display:block}.panel-nav__header-toggle.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;position:absolute;inset:0;z-index:2;opacity:0;pointer-events:none}@media (hover: hover) and (pointer: fine){.panel-nav.sc-ds-panel-nav:not(.panel-nav--breakpoint-locked) .panel-nav__header-btn.sc-ds-panel-nav:hover .panel-nav__header-logo.sc-ds-panel-nav{opacity:0}.panel-nav.sc-ds-panel-nav:not(.panel-nav--breakpoint-locked) .panel-nav__header-btn.sc-ds-panel-nav:hover .panel-nav__header-toggle.sc-ds-panel-nav{opacity:1}}.panel-nav__body.sc-ds-panel-nav{flex:1;overflow-y:auto;overflow-x:hidden}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__body.sc-ds-panel-nav{padding-inline-end:calc(var(--_nav-padding-x) - var(--dimension-stroke-width-012))}.panel-nav__sections.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-200, 16px);width:100%}.panel-nav__group.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-050, 4px)}.panel-nav__branch.sc-ds-panel-nav{display:flex;flex-direction:column}.panel-nav__branch-divider-line.sc-ds-panel-nav{display:block;height:var(--dimension-stroke-width-012);margin-inline:var(--dimension-space-075);background:var(--_nav-divider)}.panel-nav__branch-divider--before.sc-ds-panel-nav .panel-nav__branch-divider-line.sc-ds-panel-nav{margin-block:var(--dimension-space-050) var(--dimension-space-100)}.panel-nav__branch-divider--after.sc-ds-panel-nav .panel-nav__branch-divider-line.sc-ds-panel-nav{margin-block:var(--dimension-space-100) var(--dimension-space-050)}.panel-nav__children-accordion.sc-ds-panel-nav,.panel-nav__branch-divider.sc-ds-panel-nav{--ds-nav-disclosure-duration:var( --_panel-nav-nested-section-duration, calc(var(--effect-animation-duration-short-3) * 2 + var(--effect-animation-duration-short-2)) );--ds-nav-disclosure-wait:var( --_panel-nav-nested-transition-wait, calc(var(--effect-animation-duration-short-3) + var(--effect-animation-duration-short-1)) );--ds-nav-disclosure-fade:var( --_panel-nav-nested-child-fade-duration, var(--ds-nav-disclosure-duration) );--ds-nav-disclosure-stagger:var( --_panel-nav-nested-child-stagger, var(--effect-animation-duration-short-1) )}.panel-nav__children.sc-ds-panel-nav{display:flex;flex-direction:column;gap:var(--dimension-space-050, 4px);min-height:0;overflow:hidden}.panel-nav__children.sc-ds-panel-nav>.panel-nav__child.sc-ds-panel-nav:first-child{margin-block-start:var(--dimension-space-050, 4px)}ds-text.panel-nav__group-label.sc-ds-panel-nav{display:flex;align-items:center;box-sizing:border-box;text-transform:uppercase;color:var(--_nav-fg-secondary);user-select:none;height:var(--dimension-size-300, 24px);padding:0 calc(var(--dimension-space-075, 6px) + var(--ds-control-label-inset));white-space:nowrap;overflow:hidden;max-height:var(--dimension-size-300, 24px);opacity:1;transition:opacity var(--_nav-label-fade-motion) 0ms, max-height var(--_nav-label-fade-motion) 0ms, padding var(--_nav-label-fade-motion) 0ms, color var(--effect-motion-short-3, 200ms ease)}.panel-nav__item.sc-ds-panel-nav{all:unset;position:relative;z-index:0;display:flex;align-items:center;gap:var(--dimension-space-050, 4px);padding:0 var(--dimension-space-075, 6px);height:var(--dimension-size-400, 32px);border-radius:var(--ds-control-radius, var(--dimension-radius-025, 2px));cursor:default;color:var(--_nav-fg-secondary);box-sizing:border-box;width:100%;user-select:none;transition:color var(--effect-motion-short-1, 50ms ease-in-out)}.panel-nav__item--active.sc-ds-panel-nav{color:var(--_nav-fg-primary)}.panel-nav__parent--muted.sc-ds-panel-nav{color:var(--_nav-fg-secondary)}.panel-nav__child.sc-ds-panel-nav{flex:0 0 var(--_nav-item-height);padding-inline-start:calc( var(--dimension-space-075, 6px) + var(--dimension-iconography-md) + var(--dimension-space-050) )}.panel-nav__children-accordion.sc-ds-panel-nav:not(.panel-nav__children-accordion--open) .panel-nav__child.sc-ds-panel-nav{color:var(--_nav-fg-secondary)}.panel-nav__child-dot.sc-ds-panel-nav{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;flex:0 0 var(--dimension-iconography-md);width:var(--dimension-iconography-md);height:var(--dimension-iconography-md)}.panel-nav__child--inactive.sc-ds-panel-nav{color:var(--_nav-fg-tertiary)}.panel-nav__child--inactive.sc-ds-panel-nav::after{display:none}.panel-nav__item-icon.sc-ds-panel-nav{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);position:relative;z-index:2}.panel-nav__item-label.sc-ds-panel-nav{position:relative;z-index:2;flex:1;min-width:0;height:var(--typography-lineheight-md, 20px);opacity:1;mask-image:linear-gradient(to right, black 50%, transparent 100%);-webkit-mask-image:linear-gradient(to right, black 50%, transparent 100%);mask-size:200% 100%;-webkit-mask-size:200% 100%;mask-position:0% 0;-webkit-mask-position:0% 0;transition:opacity var(--_nav-label-fade-motion) 0ms, mask-position var(--_nav-label-fade-motion) 0ms, -webkit-mask-position var(--_nav-label-fade-motion) 0ms}.panel-nav__item-label-text.sc-ds-panel-nav{padding:0 var(--ds-control-label-inset)}.panel-nav__item-dot-box.sc-ds-panel-nav{position:absolute;z-index:2;right:var(--dimension-space-075, 6px);top:var(--dimension-space-075, 6px);display:flex;align-items:center;justify-content:center;width:var(--dimension-iconography-md, 20px);height:var(--dimension-iconography-md, 20px);pointer-events:none}.panel-nav__item-dot.sc-ds-panel-nav{transition:transform var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__item-dot.sc-ds-panel-nav{transform:translate( calc(var(--dimension-space-075, 6px) + var(--dimension-stroke-width-012, 1px)), calc(0px - var(--dimension-space-075, 6px) - var(--dimension-stroke-width-012, 1px)) )}.panel-nav--animating.sc-ds-panel-nav .panel-nav__item-label.sc-ds-panel-nav{text-overflow:clip}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__item-label.sc-ds-panel-nav{opacity:0;pointer-events:none;text-overflow:clip;mask-position:100% 0;-webkit-mask-position:100% 0;transition:opacity var(--_nav-label-fade-out-motion) 0ms, mask-position var(--_nav-label-fade-out-motion) 0ms, -webkit-mask-position var(--_nav-label-fade-out-motion) 0ms}.panel-nav--collapsed.panel-nav--animating.sc-ds-panel-nav .panel-nav__children-accordion.sc-ds-panel-nav{transition-duration:var(--_nav-expand-dur);transition-delay:var(--effect-animation-duration-instant)}.panel-nav--animating.sc-ds-panel-nav .panel-nav__branch-divider.sc-ds-panel-nav{transition-duration:var(--_nav-expand-dur), var(--_nav-expand-dur);transition-delay:var(--effect-animation-duration-instant), var(--effect-animation-duration-instant)}.panel-nav--collapsed.sc-ds-panel-nav:not(.panel-nav--animating) .panel-nav__children.sc-ds-panel-nav{display:none}.panel-nav--collapsed.sc-ds-panel-nav ds-text.panel-nav__group-label.sc-ds-panel-nav{opacity:0;max-height:0;padding:0 calc(var(--dimension-space-075, 6px) + var(--ds-control-label-inset));pointer-events:none;transition:opacity var(--_nav-label-fade-out-motion) 0ms, max-height var(--_nav-label-fade-out-motion) 0ms, padding var(--_nav-label-fade-out-motion) 0ms, color var(--effect-motion-short-3, 200ms ease)}.panel-nav__footer.sc-ds-panel-nav{position:relative;flex-shrink:0;height:calc(var(--_nav-padding-y) * 2 + var(--_nav-item-height));transition:height var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer.sc-ds-panel-nav{height:calc( var(--_nav-padding-y) * 2 + var(--_nav-item-height) * 2 + var(--dimension-space-050, 4px) )}.panel-nav__footer-btn.sc-ds-panel-nav{position:absolute;left:var(--_nav-padding-x);top:var(--_nav-padding-y)}.panel-nav__footer-user.sc-ds-panel-nav{position:absolute;left:calc(var(--_nav-padding-x) + var(--_nav-footer-btn-w) + var(--dimension-space-100, 8px));right:var(--_nav-padding-x);top:var(--_nav-padding-y);width:auto;min-width:0;transition:left var(--_nav-expand-motion), right var(--_nav-expand-motion), top var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user.sc-ds-panel-nav{left:var(--_nav-padding-x);right:calc(100% - var(--_nav-padding-x) - var(--_nav-item-height));top:calc(var(--_nav-padding-y) + var(--_nav-item-height) + var(--dimension-space-050, 4px))}.panel-nav__footer-user-label.sc-ds-panel-nav{text-align:right;position:absolute;left:var(--dimension-space-075, 6px);right:calc( var(--dimension-space-075, 6px) + var(--dimension-iconography-md, 20px) + var(--dimension-space-050, 4px) );top:50%;transform:translateY(-50%);flex:none;height:var(--typography-lineheight-md, 20px);mask-image:none;-webkit-mask-image:none;transition:opacity var(--_nav-label-fade-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user-label.sc-ds-panel-nav{opacity:0;pointer-events:none;mask-position:0% 0;-webkit-mask-position:0% 0}.panel-nav__footer-user-icon.sc-ds-panel-nav{position:absolute;left:calc(100% - var(--dimension-iconography-md, 20px) - var(--dimension-space-075, 6px));top:0;bottom:0;height:auto;display:flex;align-items:center;justify-content:center;transition:left var(--_nav-expand-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-user-icon.sc-ds-panel-nav{left:var(--dimension-space-075, 6px)}.panel-nav__footer-icon-expanded.sc-ds-panel-nav,.panel-nav__footer-icon-collapsed.sc-ds-panel-nav{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.panel-nav__footer-icon-expanded.sc-ds-panel-nav{opacity:1;transition:opacity var(--_nav-label-fade-motion)}.panel-nav__footer-icon-collapsed.sc-ds-panel-nav{opacity:0;transition:opacity var(--_nav-label-fade-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-icon-expanded.sc-ds-panel-nav{opacity:0;transition:opacity var(--_nav-label-fade-out-motion)}.panel-nav--collapsed.sc-ds-panel-nav .panel-nav__footer-icon-collapsed.sc-ds-panel-nav{opacity:1;transition:opacity var(--_nav-label-fade-out-motion)}ds-text.panel-nav__user-initial.sc-ds-panel-nav,ds-text.panel-nav__user-initial.ds-text--caption.sc-ds-panel-nav{position:absolute;top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%, -50%);display:block;width:max-content;max-width:none;min-width:0;text-align:center;color:inherit;pointer-events:none}.panel-nav__resize-handle.sc-ds-panel-nav{position:absolute;top:0;right:var(--dimension-space-n050, -4px);bottom:0;width:var(--dimension-space-100, 8px);z-index:20;cursor:ew-resize;touch-action:none;background:transparent}.panel-nav__resize-handle.sc-ds-panel-nav::before{content:'';position:absolute;inset:0;background:rgba(0, 0, 0, 0.001)}.panel-nav__resize-handle.sc-ds-panel-nav::after{content:'';position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);width:var(--dimension-stroke-width-025, 2px);background:var(--color-chrome-foreground-primary);opacity:0;pointer-events:none;transition:opacity var(--effect-motion-short-2, 100ms ease-in-out)}.panel-nav__resize-handle--overlay.sc-ds-panel-nav::after{opacity:1}@media (prefers-reduced-motion: reduce){.panel-nav.sc-ds-panel-nav,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav::before,.panel-nav.sc-ds-panel-nav *.sc-ds-panel-nav::after,.panel-nav__resize-handle.sc-ds-panel-nav,.panel-nav__resize-handle.sc-ds-panel-nav::before,.panel-nav__resize-handle.sc-ds-panel-nav::after{transition-duration:var(--effect-animation-duration-instant) !important;animation-duration:var(--effect-animation-duration-instant) !important;transition-delay:var(--effect-animation-duration-instant) !important}}`;let B=0;const O=e(class e extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.dsNavSelect=a(this,"dsNavSelect",7);this.dsNavChildSelect=a(this,"dsNavChildSelect",7);this.dsNavToggle=a(this,"dsNavToggle",7);this.dsChromeTransitionStart=a(this,"dsChromeTransitionStart",7);this.dsChromeTransitionEnd=a(this,"dsChromeTransitionEnd",7);this.dsNavFooterAction=a(this,"dsNavFooterAction",7);this.dsNavUserAction=a(this,"dsNavUserAction",7);this.instanceId=B++;this.navStyle="dashboard";this.disableViewTransition=false;this.groups="[]";this.presentation="flat";this.routerMode="anchor";this.activeId="";this.activeChildId="";this.collapsed=false;this.breakpoint=0;this.storageKey="";this.currentUrl="";this.userName="";this.userInitial="";this.dashboardLabel="Dashboard";this.settingsLabel="Settings";this.accountLabel="Account";this.accountMenuExpanded=false;this.dashboardNavigationLabel="Dashboard navigation";this.settingsNavigationLabel="Settings navigation";this.expandNavigationLabel="Expand navigation";this.collapseNavigationLabel="Collapse navigation";this.navigationItemsLabel="Navigation items";this.renderedStyle="dashboard";this.parsedGroups=[];this.isAnimating=false;this.rovingIndex=0;this.viewportNarrow=false;this.urlDerivedActiveId="";this.urlDerivedActiveChildId="";this.bodyScrollable=false;this.expandedParentId="";this.inlineChildrenExpansionReady=true;this.flyoutParentId="";this.flyoutOpen=false;this.flyoutInitialFocusVisible=false;this.transitionFallbackTimer=null;this.initialRenderComplete=false;this.hasLoaded=false;this.connectionTasks=new r((()=>this.el.isConnected));this.transitionShell=null;this.inlineChildrenExpansionFrame=null;this.isDragging=false;this.dragStartX=0;this.didSnap=false;this.lastDeltaX=0;this.edgeOverlayTimer=null;this.showEdgeOverlay=false;this.closeFlyout=()=>{this.flyoutOpen=false;this.flyoutInitialFocusVisible=false};this.handleFlyoutAfterClose=()=>{if(!this.flyoutOpen)this.flyoutParentId=""};this.handleFlyoutSelect=e=>{const n=this.getAllItems().find((e=>e.id===this.flyoutParentId));const a=n?.children?.find((n=>n.id===e.detail?.value));if(!n||!a)return;this.emitChildSelect(n,a);this.followFlyoutAnchor(a);this.closeFlyout()}}get effectiveActiveId(){return this.urlDerivedActiveId||this.activeId}get effectiveActiveChildId(){return this.urlDerivedActiveChildId||this.activeChildId}get collapsedPresentation(){return this.collapsed||this.viewportNarrow}get effectiveDisableViewTransition(){return d(this.disableViewTransition,this.el.getAttribute("disable-view-transition"))}onCollapsedChange(e,n){if(n===undefined||!this.initialRenderComplete)return;this.stageInlineChildrenExpansion(n&&!e&&!this.viewportNarrow&&this.presentation==="nested");this.flyoutParentId="";this.flyoutOpen=false;this.syncExpandedParent();this.rovingIndex=this.getFirstRovingIndex();this.startCollapseAnimation()}onViewportNarrowChange(e,n){if(n===undefined||!this.initialRenderComplete)return;this.stageInlineChildrenExpansion(n&&!e&&!this.collapsed&&this.presentation==="nested");this.flyoutParentId="";this.flyoutOpen=false;if(e||this.rovingIndex>this.getVisibleRovingEntries().length){this.rovingIndex=this.getFirstRovingIndex()}this.startCollapseAnimation()}onBreakpointChange(){this.disconnectResizeObserver();if(this.el.isConnected){this.viewportNarrow=this.isViewportNarrow();if(this.effectiveBreakpoint()>0)this.connectResizeObserver()}}onGroupsChange(e){this.parsedGroups=l(e);this.rovingIndex=0;this.syncActiveFromUrl();this.syncExpandedParent()}onPresentationChange(){this.stageInlineChildrenExpansion(false);this.flyoutParentId="";this.flyoutOpen=false;this.syncExpandedParent();this.rovingIndex=this.getFirstRovingIndex()}onActiveIdChange(){this.syncExpandedParent()}onCurrentUrlChange(){this.syncActiveFromUrl()}onNavStyleChange(e){this.renderedStyle=e}componentWillLoad(){this.renderedStyle=j(this.navStyle,this.el.getAttribute("nav-style"));this.viewportNarrow=this.isViewportNarrow();if(this.storageKey){try{const e=localStorage.getItem(this.storageKey);if(e!==null)this.collapsed=e==="true"}catch{}}this.onGroupsChange(this.groups);this.syncActiveFromUrl()}connectedCallback(){if(this.hasLoaded)this.connectResources()}componentDidLoad(){this.hasLoaded=true;this.connectResources()}connectResources(){if(!this.el.isConnected)return;this.syncHostPropsIfNeeded();this.viewportNarrow=this.isViewportNarrow();this.syncExpandedParent();this.rovingIndex=this.getFirstRovingIndex();this.scheduleDeferredHostPropSync();if(this.effectiveBreakpoint()>0)this.connectResizeObserver();this.connectScrollRegionObserver();this.updateBodyScrollable();this.initialRenderComplete=true}componentDidRender(){if(!this.el.isConnected)return;this.updateBodyScrollable();this.scheduleInlineChildrenExpansion()}disconnectedCallback(){this.connectionTasks.cancel();this.initialRenderComplete=false;this.disconnectResizeObserver();this.disconnectScrollRegionObserver();this.clearInlineChildrenExpansionFrame();this.finishCollapseAnimation(this.el.querySelector(".panel-nav"));this.clearEdgeOverlayTimer();this.clearResizeDrag();this.stageInlineChildrenExpansion(false);this.flyoutParentId="";this.flyoutOpen=false}startCollapseAnimation(){if(!this.el.isConnected||this.isAnimating)return;this.isAnimating=true;this.transitionShell=this.el.closest("ds-shell-app");this.dsChromeTransitionStart.emit({source:"panel-nav"});const e=this.el.querySelector(".panel-nav");this.clearCollapseAnimationCompletion(e);this.transitionCompletionHandler=n=>{if(n.target===e&&(n.propertyName==="width"||n.propertyName==="min-width")){this.finishCollapseAnimation(e)}};e?.addEventListener("transitionend",this.transitionCompletionHandler);e?.addEventListener("transitioncancel",this.transitionCompletionHandler);this.connectionTasks.frame((()=>{this.connectionTasks.frame((()=>{if(!this.isAnimating)return;if(!e){this.finishCollapseAnimation(e);return}const n=c(getComputedStyle(e));if(n<=0){this.finishCollapseAnimation(e);return}this.transitionFallbackTimer=window.setTimeout((()=>{this.finishCollapseAnimation(e)}),n)}))}))}stageInlineChildrenExpansion(e){this.clearInlineChildrenExpansionFrame();this.inlineChildrenExpansionReady=!e}scheduleInlineChildrenExpansion(){if(!this.el.isConnected||this.inlineChildrenExpansionReady||this.collapsedPresentation)return;this.clearInlineChildrenExpansionFrame();this.inlineChildrenExpansionFrame=this.connectionTasks.frame((()=>{this.inlineChildrenExpansionFrame=null;if(this.collapsedPresentation)return;this.el.querySelector(".panel-nav__children-accordion")?.getBoundingClientRect();this.inlineChildrenExpansionReady=true}))??null}clearInlineChildrenExpansionFrame(){if(this.inlineChildrenExpansionFrame===null)return;this.connectionTasks.cancelFrame(this.inlineChildrenExpansionFrame);this.inlineChildrenExpansionFrame=null}finishCollapseAnimation(e){const n=this.isAnimating;const a=this.transitionShell;this.transitionShell=null;this.clearCollapseAnimationCompletion(e);if(!n)return;this.isAnimating=false;if(a&&this.el.closest("ds-shell-app")!==a){a.dispatchEvent(new CustomEvent(o,{detail:{source:"panel-nav"},bubbles:true,composed:true}))}else{this.dsChromeTransitionEnd.emit({source:"panel-nav"})}}clearCollapseAnimationCompletion(e){if(this.transitionCompletionHandler){e?.removeEventListener("transitionend",this.transitionCompletionHandler);e?.removeEventListener("transitioncancel",this.transitionCompletionHandler);this.transitionCompletionHandler=undefined}if(this.transitionFallbackTimer!==null){window.clearTimeout(this.transitionFallbackTimer);this.transitionFallbackTimer=null}}effectiveBreakpoint(){if(this.breakpoint>0)return this.breakpoint;const e=Number(this.el.getAttribute("breakpoint")??0);return Number.isFinite(e)&&e>0?e:0}isViewportNarrow(){const e=this.effectiveBreakpoint();return typeof window!=="undefined"&&e>0&&window.innerWidth<e}connectResizeObserver(){this.disconnectResizeObserver();this.viewportNarrow=this.isViewportNarrow();this.resizeObserver=new ResizeObserver((()=>{this.viewportNarrow=this.isViewportNarrow()}));this.resizeObserver.observe(document.documentElement)}disconnectResizeObserver(){this.resizeObserver?.disconnect();this.resizeObserver=undefined}connectScrollRegionObserver(){this.disconnectScrollRegionObserver();if(!this.bodyEl||typeof ResizeObserver==="undefined")return;this.scrollRegionObserver=new ResizeObserver((()=>this.updateBodyScrollable()));this.scrollRegionObserver.observe(this.bodyEl)}disconnectScrollRegionObserver(){this.scrollRegionObserver?.disconnect();this.scrollRegionObserver=undefined}updateBodyScrollable(){if(!this.el.isConnected)return;const e=Boolean(this.bodyEl&&this.bodyEl.scrollHeight>this.bodyEl.clientHeight+1);if(e!==this.bodyScrollable)this.bodyScrollable=e}syncActiveFromUrl(){if(!this.currentUrl){this.urlDerivedActiveId="";this.urlDerivedActiveChildId="";return}const e=v(this.currentUrl,this.getAllItems());this.urlDerivedActiveId=e.parentId;this.urlDerivedActiveChildId=e.childId}syncExpandedParent(){const e=this.getAllItems().find((e=>e.id===this.effectiveActiveId));this.expandedParentId=this.presentation==="nested"&&e?.children?.length?e.id:""}syncHostPropsIfNeeded(){if(R(this.renderedStyle,this.navStyle)){this.renderedStyle=this.navStyle}if(p(this.parsedGroups,this.groups)){this.onGroupsChange(this.groups)}else if(this.currentUrl){this.syncActiveFromUrl()}}scheduleDeferredHostPropSync(){let n=e.HOST_PROP_SYNC_BUDGET;const a=()=>{this.syncHostPropsIfNeeded();if(--n>0){this.connectionTasks.frame(a)}};this.connectionTasks.microtask(a)}applyToggle(e){if(this.viewportNarrow)return;this.collapsed=e;if(this.storageKey){try{localStorage.setItem(this.storageKey,String(e))}catch{}}this.dsNavToggle.emit(e)}getAllItems(){return this.parsedGroups.flatMap((e=>e.items))}getVisibleRovingEntries(){return this.getAllItems().flatMap((e=>{const n={kind:"parent",item:e};if(this.presentation!=="nested"||this.collapsedPresentation||e.id!==this.expandedParentId||!e.children?.length){return[n]}return[n,...e.children.filter((e=>!e.isInactive)).map((n=>({kind:"child",parent:e,child:n})))]}))}getFirstRovingIndex(){return this.viewportNarrow?1:0}getFooterRovingIndex(){return 1+this.getVisibleRovingEntries().length}getUserRovingIndex(){return this.getFooterRovingIndex()+1}getRovingElement(e){const n=this.getVisibleRovingEntries().length;if(e===0){return this.viewportNarrow?null:this.el.querySelector(".panel-nav__header-btn")}if(e>=1&&e<=n){const n=this.el.querySelectorAll(".panel-nav__body [data-panel-nav-roving]");return n[e-1]??null}if(e===this.getFooterRovingIndex()){return this.el.querySelector(".panel-nav__footer-btn .button-unfilled")}if(e===this.getUserRovingIndex()){return this.el.querySelector(".panel-nav__footer-user")}return null}focusRovingAt(e){this.rovingIndex=e;this.getRovingElement(e)?.focus({preventScroll:true})}activateRovingIndex(e,n=false){const a=this.getVisibleRovingEntries();const i=a.length;if(e===0){this.handleToggle();return}if(e>=1&&e<=i){const i=a[e-1];if(!i)return;if(i.kind==="child"){this.emitChildSelect(i.parent,i.child)}else if(i.item.children?.length){this.activateParent(i.item,n)}else{this.handleItemClick(i.item.id)}return}if(e===this.getFooterRovingIndex()){this.handleFooterAction();return}if(e===this.getUserRovingIndex()){const e=this.el.querySelector(`#${L}`);if(e)this.dsNavUserAction.emit({anchor:e,menuPlacement:S})}}handleRovingKeyDown(e,n){if(e.key==="Enter"||e.key===" "){e.preventDefault();this.activateRovingIndex(n,true);return}const a=this.getFooterRovingIndex();const i=this.getUserRovingIndex();const s=this.getFirstRovingIndex();let t;switch(e.key){case"ArrowDown":if(n===i)return;if(n===a)t=i;else t=n+1;break;case"ArrowUp":if(n===s)return;if(n===i)t=a;else if(n===a)t=a-1;else t=n-1;break;case"ArrowRight":if(n===a)t=i;else return;break;case"ArrowLeft":if(n===i)t=a;else return;break;case"Home":e.preventDefault();t=s;break;case"End":e.preventDefault();t=i;break;default:return}if(t===undefined||t===n)return;e.preventDefault();this.focusRovingAt(t)}handleItemClick(e){this.dsNavSelect.emit(e)}emitChildSelect(e,n){if(n.isInactive)return;this.dsNavChildSelect.emit({parentId:e.id,childId:n.id,href:n.href})}followFlyoutAnchor(e){const n=m(e.href);if(this.routerMode!=="anchor"||!n)return;const a=this.el.ownerDocument.createElement("a");a.href=n;a.hidden=true;this.el.append(a);a.click();a.remove()}activateParent(e,n=false){if(this.presentation==="nested"){this.expandedParentId=e.id;if(this.collapsedPresentation){if(this.flyoutParentId===e.id&&this.flyoutOpen){this.closeFlyout();return}this.flyoutInitialFocusVisible=n;this.flyoutParentId=e.id;this.flyoutOpen=true;return}}const a=h(e.children);if(a)this.emitChildSelect(e,a)}parentAnchorId(e){return`panel-nav-parent-${this.instanceId}-${e.replace(/[^a-zA-Z0-9_-]/g,"-")}`}childListId(e){return`panel-nav-children-${this.instanceId}-${e.replace(/[^a-zA-Z0-9_-]/g,"-")}`}handleToggle(){const e=f(this.collapsed,this.viewportNarrow);if(e!==null)this.applyToggle(e)}async toggleCollapsed(){this.handleToggle()}handleFooterAction(){this.dsNavFooterAction.emit()}handleUserAction(e){const n=e.currentTarget;this.dsNavUserAction.emit({anchor:n,menuPlacement:S})}clearEdgeOverlayTimer(){if(this.edgeOverlayTimer!==null){window.clearTimeout(this.edgeOverlayTimer);this.edgeOverlayTimer=null}}handleResizeHandleMouseEnter(){this.clearEdgeOverlayTimer();if(u()){this.showEdgeOverlay=true;return}this.edgeOverlayTimer=window.setTimeout((()=>{this.showEdgeOverlay=true;this.edgeOverlayTimer=null}),500)}handleResizeHandleMouseLeave(){if(this.isDragging)return;this.clearEdgeOverlayTimer();this.showEdgeOverlay=false}handleResizeHandleMouseDown(e){e.preventDefault();e.stopPropagation();const n=this.collapsed||this.viewportNarrow;this.isDragging=true;this.dragStartX=e.clientX;this.didSnap=false;this.lastDeltaX=0;this.clearEdgeOverlayTimer();this.showEdgeOverlay=false;this.dragBodyStyle={cursor:document.body.style.cursor,userSelect:document.body.style.userSelect};document.body.style.cursor="ew-resize";document.body.style.userSelect="none";const a=e=>{const a=e.clientX-this.dragStartX;this.lastDeltaX=Math.abs(a);if(this.didSnap)return;if(!n&&a<-8){this.applyToggle(true);this.didSnap=true}else if(n&&a>8){this.applyToggle(false);this.didSnap=true}};const i=()=>{if(!this.didSnap&&this.lastDeltaX<3){this.applyToggle(!n)}this.clearResizeDrag()};this.globalMouseMoveHandler=a;this.globalMouseUpHandler=i;window.addEventListener("mousemove",a);window.addEventListener("mouseup",i)}clearResizeDrag(){if(this.globalMouseMoveHandler)window.removeEventListener("mousemove",this.globalMouseMoveHandler);if(this.globalMouseUpHandler)window.removeEventListener("mouseup",this.globalMouseUpHandler);this.globalMouseMoveHandler=undefined;this.globalMouseUpHandler=undefined;this.isDragging=false;this.showEdgeOverlay=false;if(this.dragBodyStyle){document.body.style.cursor=this.dragBodyStyle.cursor;document.body.style.userSelect=this.dragBodyStyle.userSelect;this.dragBodyStyle=undefined}}renderFooterAction(e){const n=e?this.settingsLabel:this.dashboardLabel;return i("ds-tooltip",{label:n,side:"right",size:"sm"},i("ds-button-unfilled",{variant:"icon",class:"panel-nav__footer-btn",icon:e?"Gear":"Dashboard",activeFill:false,hasBorder:false,background:"chrome",focusTabIndex:this.rovingIndex===this.getFooterRovingIndex()?0:-1,"aria-label":n,onDsClick:()=>this.handleFooterAction(),onKeyDown:e=>this.handleRovingKeyDown(e,this.getFooterRovingIndex()),onFocusin:()=>{this.rovingIndex=this.getFooterRovingIndex()}}))}renderFooterUser(e,n,a){const s=e?this.accountLabel:"";const t=i("button",{type:"button",id:L,class:{"panel-nav__item":true,"panel-nav__footer-user":true,"panel-nav__footer-user--menu-expanded":this.accountMenuExpanded,"ds-interaction-fill--surface-open":this.accountMenuSurfaceOpen??this.accountMenuExpanded,"ds-focus-ring-inset":true,"ds-interaction-fill":true,"ds-interaction-fill--on-chrome":true},tabIndex:this.rovingIndex===this.getUserRovingIndex()?0:-1,"aria-label":this.accountLabel,"aria-haspopup":"menu","aria-expanded":String(this.accountMenuExpanded),onClick:e=>this.handleUserAction(e),onKeyDown:e=>this.handleRovingKeyDown(e,this.getUserRovingIndex()),onFocus:()=>{this.rovingIndex=this.getUserRovingIndex()}},i("ds-text",{class:"panel-nav__item-label panel-nav__footer-user-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},n),i("span",{class:"panel-nav__item-icon panel-nav__footer-user-icon","aria-hidden":"true"},i("span",{class:"panel-nav__footer-icon-expanded"},i("ds-icon",{name:"ChevronUpDown",size:"md",color:"inherit"})),i("span",{class:"panel-nav__footer-icon-collapsed"},i("ds-icon",{name:"Circle",size:"md",color:"inherit"}),i("ds-text",{class:"panel-nav__user-initial",as:"span",variant:"text-caption",emphasis:true,align:"center",color:"inherit"},a))));return i("ds-tooltip",{label:s,side:"right",size:"sm"},t)}renderParentItem(e,n,a){const s=e.id===this.effectiveActiveId;const t=(e.children?.length??0)>0;const o=this.presentation==="nested"&&t;const r=o?a?this.flyoutParentId===e.id:this.expandedParentId===e.id:false;const d=[i("span",{class:"panel-nav__item-icon"},i("ds-icon",{name:e.icon,size:"md",color:"inherit"})),i("ds-text",{class:"panel-nav__item-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:s,color:"inherit",lineTruncation:1},e.label),e.dot&&i("span",{class:"panel-nav__item-dot-box","aria-hidden":"true"},i("ds-badge",{class:"panel-nav__item-dot",variant:"dot",hasRing:a,label:"",style:{"--_badge-bg":"var(--_nav-dot)"}}))];const l={id:o?this.parentAnchorId(e.id):undefined,class:{"panel-nav__item":true,"panel-nav__parent":o,"panel-nav__parent--expanded":r,"panel-nav__parent--flyout-active":a&&this.flyoutParentId===e.id,"ds-interaction-fill--surface-open":a&&this.flyoutParentId===e.id,"panel-nav__parent--muted":this.presentation==="nested"&&!a&&this.expandedParentId!==""&&this.expandedParentId!==e.id,"panel-nav__item--active":s,"ds-focus-ring-inset":true,"ds-interaction-fill":true,"ds-interaction-fill--on-chrome":true},"aria-current":!o&&s?"page":undefined,"aria-expanded":o?String(r):undefined,"aria-controls":o&&r?this.childListId(e.id):undefined,"aria-haspopup":o&&a?"menu":undefined,"data-panel-nav-roving":"",tabIndex:n===this.rovingIndex?0:-1,onClick:n=>t?this.activateParent(e,n.detail===0):this.handleItemClick(e.id),onKeyDown:e=>this.handleRovingKeyDown(e,n),onFocus:()=>{this.rovingIndex=n}};const c=m(t?h(e.children)?.href:e.href);const v=this.routerMode==="anchor"&&c&&!(o&&a);const p=v?i("a",{...l,href:c},d):i("button",{...l,type:"button"},d);return i("ds-tooltip",{label:a?e.label:"",side:"right",size:"sm"},p)}renderChildItem(e,n,a,s,t){const o=e.id===this.effectiveActiveId&&n.id===this.effectiveActiveChildId;const r=n.isInactive===true;const d=[i("ds-text",{class:"panel-nav__item-label panel-nav__item-label-text ds-control--md",as:"span",variant:"text-body-medium",emphasis:o,color:"inherit",lineTruncation:1},n.label),n.dot&&i("span",{class:"panel-nav__child-dot","aria-hidden":"true"},i("ds-badge",{variant:"dot",background:"var(--_nav-bg)",label:"",style:{"--_badge-bg":"var(--_nav-dot)"}}))];const l={class:{"panel-nav__item":true,"panel-nav__child":true,"ds-nav-disclosure__item":true,"panel-nav__child--active":o,"panel-nav__child--inactive":r,"panel-nav__item--active":o,"ds-focus-ring-inset":!r,"ds-interaction-fill":!r,"ds-interaction-fill--on-chrome":!r},"aria-current":o?"page":undefined,"aria-disabled":r?"true":undefined,"data-panel-nav-roving":r||a===undefined?undefined:"",style:{"--_panel-nav-child-index":String(s),"--_panel-nav-child-reverse-index":String(t),"--ds-nav-disclosure-index":String(s),"--ds-nav-disclosure-reverse-index":String(t)},tabIndex:!r&&a===this.rovingIndex?0:-1,onClick:()=>this.emitChildSelect(e,n),onKeyDown:e=>a===undefined?undefined:this.handleRovingKeyDown(e,a),onFocus:()=>{if(a!==undefined)this.rovingIndex=a}};const c=m(n.href);const v=!r&&this.routerMode==="anchor"&&c;return v?i("a",{...l,href:c},d):i("button",{...l,type:"button",disabled:r},d)}renderFlyout(){const e=this.getAllItems().find((e=>e.id===this.flyoutParentId));if(!e?.children?.length)return null;return i("ds-menu",{id:this.childListId(e.id),open:this.flyoutOpen,side:E.side,align:E.align,anchorAlignment:E.anchorAlignment,sideOffset:E.sideOffset,alignOffset:E.alignOffset,anchorId:this.parentAnchorId(e.id),selectionMode:"single",menuLabel:`${e.label} sections`,initialFocusVisible:this.flyoutInitialFocusVisible,sections:[{items:e.children.map((n=>({label:n.label,value:n.id,dot:n.dot,isInactive:n.isInactive,isSelected:e.id===this.effectiveActiveId&&n.id===this.effectiveActiveChildId})))}],onDsSelect:this.handleFlyoutSelect,onDsClose:this.closeFlyout,onDsAfterClose:this.handleFlyoutAfterClose})}render(){const e=this.renderedStyle;const n=e==="dashboard";const a=this.navStyle==="dashboard";const t=this.collapsed||this.viewportNarrow;const{userName:o,userInitial:r}=this;const d={"panel-nav":true,"ds-control--md":true,"panel-nav--dashboard":a,"panel-nav--settings":!a,"panel-nav--collapsed":t,"panel-nav--breakpoint-locked":this.viewportNarrow,"panel-nav--animating":this.isAnimating};return i(s,{key:"aeb99024b9c307f53d359cf1107105be26792410",style:{display:"block",position:"relative"}},i("nav",{key:"596b7c7a42e75024d44d144954c750b4b0141f20",class:d,"aria-label":n?this.dashboardNavigationLabel:this.settingsNavigationLabel},i("div",{key:"e178d7acd54b859a992a18f31de3475986a21f08",class:"panel-nav__header ds-chrome-row ds-chrome-space--md"},i("button",{key:"a66ec32b204b392d6570ceba77726d1e811551cb",type:"button",class:"panel-nav__header-btn ds-focus-ring-inset ds-interaction-fill ds-interaction-fill--on-chrome",disabled:this.viewportNarrow,tabIndex:!this.viewportNarrow&&this.rovingIndex===0?0:-1,onClick:()=>this.handleToggle(),onKeyDown:e=>this.handleRovingKeyDown(e,0),onFocus:()=>{this.rovingIndex=0},"aria-label":t?this.expandNavigationLabel:this.collapseNavigationLabel,"aria-expanded":t?"false":"true"},i("span",{key:"2581830a367c8594ab33c6e2a984971389f636ff",class:"panel-nav__header-logo","aria-hidden":"true"},i("svg",{key:"0b3d8920e69f96fa5b8f02a632f526e48040e9ed",class:"panel-nav__m-mark",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",focusable:"false","aria-hidden":"true"},i("path",{key:"449ee4f920d2563bbfd28a80686b4f20b5f8219e",d:"M11.1159 4.31537H7.67021L2.53401 13.0703H0V15.6875H4.02716L8.24319 8.49978V15.6846H11.6342L15.8289 8.47829V15.6846H18.7122V4.3125H15.2559L11.1159 11.3648V4.31537Z",fill:"currentColor"}))),i("span",{key:"a6fc20dcf39781bf059418d3d3542c3b26322145",class:"panel-nav__header-toggle","aria-hidden":"true"},i("ds-icon",{key:"073febac28f42fcc1d96a0c35551ab63d489a972",name:t?"LeftExpandB":"LeftCollapseB",size:"md",color:"inherit"})))),i("div",{key:"69d543d673c5db9f18d63c5fa967292b0f5caee5",class:{"panel-nav__body":true,"ds-chrome-column":true,"ds-chrome-space--md":true,"ds-scrollbar-hidden":true,"ds-focus-ring":this.bodyScrollable,...A({edges:"bottom"})},ref:e=>{const n=e??undefined;if(n===this.bodyEl)return;this.bodyEl=n;this.connectScrollRegionObserver()},role:this.bodyScrollable?"region":undefined,"aria-label":this.bodyScrollable?this.navigationItemsLabel:undefined,tabIndex:this.bodyScrollable?0:undefined},i("div",{key:"74ced8fdd20dc8ec1119cf5564ce22551b21a0bb",class:"panel-nav__sections"},(()=>{let e=1;return this.parsedGroups.map((n=>i("div",{class:"panel-nav__group",key:n.id??n.label},n.label&&i("ds-text",{class:"panel-nav__group-label ds-control--md",as:"span",variant:"text-caption",emphasis:true,color:"inherit"},n.label),n.items.map(((a,s)=>{const o=e++;const r=!t&&this.inlineChildrenExpansionReady&&a.id===this.expandedParentId&&(a.children?.length??0)>0;const d=n.items.length>1;const l=d&&s>0;const c=d&&s<n.items.length-1;const v=r&&d;const p=this.presentation==="nested"&&(!t||this.isAnimating)&&(a.children?.length??0)>0;const h=p?a.children?.map(((n,i)=>{const s=!r||n.isInactive?undefined:e++;return this.renderChildItem(a,n,s,i,(a.children?.length??0)-i-1)})):null;return i("div",{class:"panel-nav__branch",key:a.id},l?i("div",{key:`${a.id}-divider-before`,class:{"panel-nav__branch-divider":true,"panel-nav__branch-divider--before":true,"panel-nav__branch-divider--open":v,"ds-nav-disclosure-divider":true,"ds-nav-disclosure-divider--open":v},"aria-hidden":"true"},i("div",{class:"panel-nav__branch-divider-clip ds-nav-disclosure-divider__clip"},i("span",{class:"panel-nav__branch-divider-line"}))):null,this.renderParentItem(a,o,t),p?i("div",{key:`${a.id}-children`,class:{"panel-nav__children-accordion":true,"panel-nav__children-accordion--open":r,"ds-nav-disclosure":true,"ds-nav-disclosure--open":r},"aria-hidden":r?undefined:"true",inert:r?undefined:true},i("div",{id:this.childListId(a.id),class:"panel-nav__children",role:"group","aria-labelledby":this.parentAnchorId(a.id)},h)):null,c?i("div",{key:`${a.id}-divider-after`,class:{"panel-nav__branch-divider":true,"panel-nav__branch-divider--after":true,"panel-nav__branch-divider--open":v,"ds-nav-disclosure-divider":true,"ds-nav-disclosure-divider--open":v},"aria-hidden":"true"},i("div",{class:"panel-nav__branch-divider-clip ds-nav-disclosure-divider__clip"},i("span",{class:"panel-nav__branch-divider-line"}))):null)})))))})())),i("div",{key:"ef4f29b93ce338734023adc60041d7d878404e21",class:"panel-nav__footer"},this.renderFooterAction(n),this.renderFooterUser(t,o,r))),this.renderFlyout(),!this.viewportNarrow&&i("div",{key:"551cd2a07b53b459365f5829d25ecf6679b52b80",class:{"panel-nav__resize-handle":true,"panel-nav__resize-handle--overlay":this.showEdgeOverlay},onMouseEnter:()=>this.handleResizeHandleMouseEnter(),onMouseLeave:()=>this.handleResizeHandleMouseLeave(),onMouseDown:e=>this.handleResizeHandleMouseDown(e),"aria-hidden":"true"}))}get el(){return this}static get watchers(){return{collapsed:[{onCollapsedChange:0}],viewportNarrow:[{onViewportNarrowChange:0}],breakpoint:[{onBreakpointChange:0}],groups:[{onGroupsChange:0}],presentation:[{onPresentationChange:0}],activeId:[{onActiveIdChange:0}],activeChildId:[{onActiveIdChange:0}],urlDerivedActiveId:[{onActiveIdChange:0}],urlDerivedActiveChildId:[{onActiveIdChange:0}],currentUrl:[{onCurrentUrlChange:0}],navStyle:[{onNavStyleChange:0}]}}static get style(){return F()+T()}},[2,"ds-panel-nav",{navStyle:[513,"nav-style"],disableViewTransition:[4,"disable-view-transition"],groups:[1],presentation:[513],routerMode:[1,"router-mode"],activeId:[1,"active-id"],activeChildId:[1,"active-child-id"],collapsed:[1028],breakpoint:[2],storageKey:[1,"storage-key"],currentUrl:[1,"current-url"],userName:[1,"user-name"],userInitial:[1,"user-initial"],dashboardLabel:[1,"dashboard-label"],settingsLabel:[1,"settings-label"],accountLabel:[1,"account-label"],accountMenuExpanded:[4,"account-menu-expanded"],accountMenuSurfaceOpen:[4,"account-menu-surface-open"],dashboardNavigationLabel:[1,"dashboard-navigation-label"],settingsNavigationLabel:[1,"settings-navigation-label"],expandNavigationLabel:[1,"expand-navigation-label"],collapseNavigationLabel:[1,"collapse-navigation-label"],navigationItemsLabel:[1,"navigation-items-label"],renderedStyle:[32],parsedGroups:[32],isAnimating:[32],rovingIndex:[32],viewportNarrow:[32],urlDerivedActiveId:[32],urlDerivedActiveChildId:[32],bodyScrollable:[32],expandedParentId:[32],inlineChildrenExpansionReady:[32],flyoutParentId:[32],flyoutOpen:[32],flyoutInitialFocusVisible:[32],showEdgeOverlay:[32],toggleCollapsed:[64]},undefined,{collapsed:[{onCollapsedChange:0}],viewportNarrow:[{onViewportNarrowChange:0}],breakpoint:[{onBreakpointChange:0}],groups:[{onGroupsChange:0}],presentation:[{onPresentationChange:0}],activeId:[{onActiveIdChange:0}],activeChildId:[{onActiveIdChange:0}],urlDerivedActiveId:[{onActiveIdChange:0}],urlDerivedActiveChildId:[{onActiveIdChange:0}],currentUrl:[{onCurrentUrlChange:0}],navStyle:[{onNavStyleChange:0}]}]);O.HOST_PROP_SYNC_BUDGET=8;function H(){if(typeof customElements==="undefined"){return}const e=["ds-panel-nav","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-panel-nav":if(!customElements.get(t(e))){customElements.define(t(e),O)}break;case"ds-badge":if(!customElements.get(t(e))){g()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){b()}break;case"ds-icon":if(!customElements.get(t(e))){_()}break;case"ds-loader":if(!customElements.get(t(e))){x()}break;case"ds-menu":if(!customElements.get(t(e))){y()}break;case"ds-swatch-picker":if(!customElements.get(t(e))){w()}break;case"ds-switch":if(!customElements.get(t(e))){k()}break;case"ds-tag":if(!customElements.get(t(e))){C()}break;case"ds-text":if(!customElements.get(t(e))){z()}break;case"ds-tooltip":if(!customElements.get(t(e))){I()}break}}))}H();export{O as P,H as d};
2
+ //# sourceMappingURL=p-C6EXrs1S.js.map