@dloizides/ui-nav 1.36.0 → 1.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.38.0
4
+
5
+ - NAV-BRAND-1 D-NAVB-3 "One brand options prop": `NavShell` takes one `brand={{ placement, railWidth, drawerHeader, drawerWidth }}` prop instead of the four 1.37.0 props; `Sidebar.width` removed (the shell sets the rail width through `containerStyle`). The top-bar brand cell carries the top bar background and bottom border, so the header line runs over the rail.
6
+
7
+ ## 1.37.0
8
+
9
+ - NAV-BRAND-1 "Wider sidebar, logo and name in the top bar": `NavShell` gains `brandPlacement`, `sidebarWidth`, `drawerHeader`, `drawerWidth` (defaults = today); `Sidebar.width`; `AppShell.mobileMenu` takes `header` / `width` / `sidebar`. Exports `SIDEBAR_WIDTH_PX`, `NAV_BRAND_DEFAULTS`.
10
+
3
11
  ## 1.35.0
4
12
 
5
13
  - NAV-SCROLL-1 "Opening sidebar groups never hides the items below" (AC-UI-1, AC-UI-2): `Sidebar` items (header slot + list) scroll in a `ScrollView` between the pinned title/search and the pinned footer, with a `theme.colors.surface` fade on each edge that hides items. Inside `MobileDrawer` opening a top-level group closes the other (through `NavAccordionContext`, which `MobileDrawer` provides; no new `Sidebar` prop). `NavExpandableItem` takes optional controlled `expanded` + `onToggle`. No prop changes for existing consumers.
package/README.md CHANGED
@@ -151,6 +151,24 @@ import { NavShell, type NavItem } from '@dloizides/ui-nav';
151
151
  `NavShell` composes existing components, so it stays purely additive — `AppShell`,
152
152
  `NavBar`, and `Sidebar` are unchanged.
153
153
 
154
+ ### Brand position, rail width and phone drawer (`NavShell`, NAV-BRAND-1)
155
+
156
+ One `brand` prop holds every choice; every default (`NAV_BRAND_DEFAULTS`) keeps today's layout.
157
+
158
+ | `brand` field | Values | Default |
159
+ |---|---|---|
160
+ | `placement` | `'sidebar'` (rail top) · `'topbar'` (top-left of the header, >= 768 px, same background and bottom border as the top bar) | `'sidebar'` |
161
+ | `railWidth` | `'default'` 220 · `'sm'` 240 · `'md'` 264 · `'lg'` 288 px (`SIDEBAR_WIDTH_PX`) | `'default'` |
162
+ | `drawerHeader` | `'none'` · `'brand'` (brand once in the open drawer's header, with a close button) | `'none'` |
163
+ | `drawerWidth` | `'default'` (280 px panel + scrim) · `'full'` (whole screen, close button) | `'default'` |
164
+
165
+ ```tsx
166
+ <NavShell layout="side" brand={{ placement: 'topbar', railWidth: 'sm', drawerHeader: 'brand', drawerWidth: 'full' }}
167
+ sideRail={{ items, title, brand: <AppBrand /> }} header={<Topbar ... />} {...rest} />
168
+ ```
169
+
170
+ The brand node is the same `sideRail.brand` in every position; only where it renders changes.
171
+
154
172
  ### Three-tier responsive rail (`AppShell.collapsedSidebar` / `CollapsedRail`)
155
173
 
156
174
  Supply a `collapsedSidebar` (or `NavShell`'s `sideRail.collapsed`) to opt the rail
package/dist/index.d.mts CHANGED
@@ -43,6 +43,25 @@ interface NavItem {
43
43
  */
44
44
  exact?: boolean;
45
45
  }
46
+ /** Where the shell's brand sits on desktop: the rail top (today) or the top-left of the top bar. */
47
+ type BrandPlacement = 'sidebar' | 'topbar';
48
+ /** Named side-rail widths; `default` is today's 220 px. */
49
+ type SidebarWidth = 'default' | 'sm' | 'md' | 'lg';
50
+ /** What the open phone drawer shows in its header: nothing (today) or the brand. */
51
+ type DrawerHeader = 'none' | 'brand';
52
+ /** Phone drawer width: today's fixed panel or the full screen. */
53
+ type DrawerWidth = 'default' | 'full';
54
+ /** Pixel width of each named side-rail width token. */
55
+ declare const SIDEBAR_WIDTH_PX: Readonly<Record<SidebarWidth, number>>;
56
+ /** Fields of NavShell's one `brand` prop; each has a default that keeps today's layout. */
57
+ interface NavBrandOptions {
58
+ placement?: BrandPlacement;
59
+ railWidth?: SidebarWidth;
60
+ drawerHeader?: DrawerHeader;
61
+ drawerWidth?: DrawerWidth;
62
+ }
63
+ /** Defaults of {@link NavBrandOptions}: today's layout. */
64
+ declare const NAV_BRAND_DEFAULTS: Readonly<Required<NavBrandOptions>>;
46
65
 
47
66
  /**
48
67
  * Active-route matching for the nav shells.
@@ -154,7 +173,7 @@ interface SidebarProps {
154
173
  pathname: string;
155
174
  /** Navigation callback — receives a `NavItem.route`. */
156
175
  onNavigate: (route: string) => void;
157
- /** Localized menu title (heading). */
176
+ /** Localized menu title (heading); `null` leaves the slot empty. */
158
177
  title: React.ReactNode;
159
178
  /** Localized accessibility label for the navigation landmark. */
160
179
  regionLabel: string;
@@ -558,6 +577,15 @@ interface DrawerLabels {
558
577
  /** Accessible hint of the scrim (tap to close). */
559
578
  closeHint: string;
560
579
  }
580
+ /** Optional drawer options, passed with the labels through `AppShell.mobileMenu`. */
581
+ interface DrawerOptions {
582
+ /** Shown once in the drawer's header row (with a close button). */
583
+ header?: React.ReactNode;
584
+ /** `full` = the whole screen; default = today's 280 px panel. */
585
+ width?: DrawerWidth;
586
+ /** Drawer content in place of the rail's `sidebar` node. */
587
+ sidebar?: React.ReactNode;
588
+ }
561
589
 
562
590
  /**
563
591
  * Rail responsive mode — the pure (viewport → which rail face) rule behind
@@ -679,12 +707,8 @@ interface AppShellProps {
679
707
  * `{ min: 768, max: 1024 }`. Only consulted when `collapsedSidebar` is supplied.
680
708
  */
681
709
  collapsedRailRange?: CollapsedRailRange;
682
- /**
683
- * Pre-localized labels for the mobile nav drawer (only used in the `sidebar`
684
- * layout, below the breakpoint): the hamburger's open label/hint and the scrim's
685
- * close label/hint. Optional — English defaults apply. NO i18n in this package.
686
- */
687
- mobileMenu?: Partial<DrawerLabels>;
710
+ /** Mobile drawer labels (English defaults) plus optional header brand, width and content. */
711
+ mobileMenu?: Partial<DrawerLabels> & DrawerOptions;
688
712
  /** Banner slot (e.g. verification-pending). */
689
713
  banner?: React.ReactNode;
690
714
  /** Content-width policy. Defaults to full-bleed. */
@@ -846,6 +870,8 @@ interface NavShellSideRail {
846
870
  */
847
871
  type ForwardedShellProps = Omit<AppShellProps, 'header' | 'sidebar' | 'children'>;
848
872
  interface NavShellProps extends ForwardedShellProps {
873
+ /** Brand placement, rail width and phone drawer options; defaults keep today's layout. */
874
+ brand?: NavBrandOptions;
849
875
  /** Which regions to render: a top bar, a side rail, or both. */
850
876
  layout: NavShellLayout;
851
877
  /** Current active route/path — drives active highlighting on both regions. */
@@ -877,7 +903,7 @@ interface NavShellProps extends ForwardedShellProps {
877
903
  sideRail?: NavShellSideRail;
878
904
  children: React.ReactNode;
879
905
  }
880
- declare const NavShell: ({ layout, pathname, onNavigate, regionLabel, navigateHint, topBar, header, sideRail, children, collapsedSidebar: collapsedSidebarProp, collapsedRailRange: collapsedRailRangeProp, ...shellProps }: NavShellProps) => React.ReactElement | null;
906
+ declare const NavShell: ({ layout, pathname, onNavigate, regionLabel, navigateHint, topBar, header, sideRail, children, collapsedSidebar: collapsedSidebarProp, collapsedRailRange: collapsedRailRangeProp, brand, mobileMenu, ...shellProps }: NavShellProps) => React.ReactElement | null;
881
907
 
882
908
  /**
883
909
  * CollapsedRail — the icon-only vertical rail for the intermediate (tablet) tier
@@ -1363,7 +1389,6 @@ declare const HOVER_TINT_OPACITY = 0.06;
1363
1389
  declare const NAV_LINK_GAP = 4;
1364
1390
  declare const navStyles: {
1365
1391
  sidebarContainer: {
1366
- width: number;
1367
1392
  paddingTop: number;
1368
1393
  paddingHorizontal: number;
1369
1394
  borderRightWidth: number;
@@ -1668,4 +1693,4 @@ interface BottomTabBarProps {
1668
1693
  /** Phone tab bar; `tabFeedback` picks the press feedback, `Default` adds no motion. */
1669
1694
  declare const BottomTabBar: ({ items, pathname, onNavigate, tabFeedback, navigateHint, regionLabel, containerStyle, testID, }: BottomTabBarProps) => React.ReactElement;
1670
1695
 
1671
- export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, type AccountPlan, type AccountState, AppShell, type AppShellBackdrop, type AppShellBackdropBand, type AppShellProps, type AppShellWidth, BASE_INDENT, BottomTabBar, type BottomTabBarProps, BrandHomeLink, type BrandHomeLinkProps, BrandMark, type BrandMarkProps, CHEVRON_ICON_SIZE, CollapsedRail, type CollapsedRailProps, type CollapsedRailRange, type CommandItem, CommandPalette, type CommandPaletteLabels, type CommandPaletteProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, type DarkModeControlProps, type DarkModeOption, type DarkModeVariant, HOVER_TINT_OPACITY, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, type NavBarProps, NavExpandableItem, type NavExpandableItemProps, NavHoverFeedback, type NavItem, type NavOrientation, NavOverflowMenu, type NavOverflowMenuProps, type NavProps, NavShell, type NavShellCollapsedRail, type NavShellLayout, type NavShellProps, type NavShellSideRail, type NavShellTopBar, type NavUser, PillNav, type PillNavProps, PillNavVariant, RAIL_FULL_BREAKPOINT, type RailMode, type ResolveRailModeArgs, type SearchAffordance, type ShellMessage, Sidebar, SidebarChevron, type SidebarChevronProps, type SidebarPaletteTriggerConfig, type SidebarProps, SidebarSearch, type SidebarSearchConfig, type SidebarSearchLabels, type SidebarSearchProps, TabFeedback, Topbar, type TopbarAction, type TopbarProps, type TopbarUser, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };
1696
+ export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, type AccountPlan, type AccountState, AppShell, type AppShellBackdrop, type AppShellBackdropBand, type AppShellProps, type AppShellWidth, BASE_INDENT, BottomTabBar, type BottomTabBarProps, BrandHomeLink, type BrandHomeLinkProps, BrandMark, type BrandMarkProps, type BrandPlacement, CHEVRON_ICON_SIZE, CollapsedRail, type CollapsedRailProps, type CollapsedRailRange, type CommandItem, CommandPalette, type CommandPaletteLabels, type CommandPaletteProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, type DarkModeControlProps, type DarkModeOption, type DarkModeVariant, type DrawerHeader, type DrawerOptions, type DrawerWidth, HOVER_TINT_OPACITY, NAV_BRAND_DEFAULTS, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, type NavBarProps, type NavBrandOptions, NavExpandableItem, type NavExpandableItemProps, NavHoverFeedback, type NavItem, type NavOrientation, NavOverflowMenu, type NavOverflowMenuProps, type NavProps, NavShell, type NavShellCollapsedRail, type NavShellLayout, type NavShellProps, type NavShellSideRail, type NavShellTopBar, type NavUser, PillNav, type PillNavProps, PillNavVariant, RAIL_FULL_BREAKPOINT, type RailMode, type ResolveRailModeArgs, SIDEBAR_WIDTH_PX, type SearchAffordance, type ShellMessage, Sidebar, SidebarChevron, type SidebarChevronProps, type SidebarPaletteTriggerConfig, type SidebarProps, SidebarSearch, type SidebarSearchConfig, type SidebarSearchLabels, type SidebarSearchProps, type SidebarWidth, TabFeedback, Topbar, type TopbarAction, type TopbarProps, type TopbarUser, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };
package/dist/index.d.ts CHANGED
@@ -43,6 +43,25 @@ interface NavItem {
43
43
  */
44
44
  exact?: boolean;
45
45
  }
46
+ /** Where the shell's brand sits on desktop: the rail top (today) or the top-left of the top bar. */
47
+ type BrandPlacement = 'sidebar' | 'topbar';
48
+ /** Named side-rail widths; `default` is today's 220 px. */
49
+ type SidebarWidth = 'default' | 'sm' | 'md' | 'lg';
50
+ /** What the open phone drawer shows in its header: nothing (today) or the brand. */
51
+ type DrawerHeader = 'none' | 'brand';
52
+ /** Phone drawer width: today's fixed panel or the full screen. */
53
+ type DrawerWidth = 'default' | 'full';
54
+ /** Pixel width of each named side-rail width token. */
55
+ declare const SIDEBAR_WIDTH_PX: Readonly<Record<SidebarWidth, number>>;
56
+ /** Fields of NavShell's one `brand` prop; each has a default that keeps today's layout. */
57
+ interface NavBrandOptions {
58
+ placement?: BrandPlacement;
59
+ railWidth?: SidebarWidth;
60
+ drawerHeader?: DrawerHeader;
61
+ drawerWidth?: DrawerWidth;
62
+ }
63
+ /** Defaults of {@link NavBrandOptions}: today's layout. */
64
+ declare const NAV_BRAND_DEFAULTS: Readonly<Required<NavBrandOptions>>;
46
65
 
47
66
  /**
48
67
  * Active-route matching for the nav shells.
@@ -154,7 +173,7 @@ interface SidebarProps {
154
173
  pathname: string;
155
174
  /** Navigation callback — receives a `NavItem.route`. */
156
175
  onNavigate: (route: string) => void;
157
- /** Localized menu title (heading). */
176
+ /** Localized menu title (heading); `null` leaves the slot empty. */
158
177
  title: React.ReactNode;
159
178
  /** Localized accessibility label for the navigation landmark. */
160
179
  regionLabel: string;
@@ -558,6 +577,15 @@ interface DrawerLabels {
558
577
  /** Accessible hint of the scrim (tap to close). */
559
578
  closeHint: string;
560
579
  }
580
+ /** Optional drawer options, passed with the labels through `AppShell.mobileMenu`. */
581
+ interface DrawerOptions {
582
+ /** Shown once in the drawer's header row (with a close button). */
583
+ header?: React.ReactNode;
584
+ /** `full` = the whole screen; default = today's 280 px panel. */
585
+ width?: DrawerWidth;
586
+ /** Drawer content in place of the rail's `sidebar` node. */
587
+ sidebar?: React.ReactNode;
588
+ }
561
589
 
562
590
  /**
563
591
  * Rail responsive mode — the pure (viewport → which rail face) rule behind
@@ -679,12 +707,8 @@ interface AppShellProps {
679
707
  * `{ min: 768, max: 1024 }`. Only consulted when `collapsedSidebar` is supplied.
680
708
  */
681
709
  collapsedRailRange?: CollapsedRailRange;
682
- /**
683
- * Pre-localized labels for the mobile nav drawer (only used in the `sidebar`
684
- * layout, below the breakpoint): the hamburger's open label/hint and the scrim's
685
- * close label/hint. Optional — English defaults apply. NO i18n in this package.
686
- */
687
- mobileMenu?: Partial<DrawerLabels>;
710
+ /** Mobile drawer labels (English defaults) plus optional header brand, width and content. */
711
+ mobileMenu?: Partial<DrawerLabels> & DrawerOptions;
688
712
  /** Banner slot (e.g. verification-pending). */
689
713
  banner?: React.ReactNode;
690
714
  /** Content-width policy. Defaults to full-bleed. */
@@ -846,6 +870,8 @@ interface NavShellSideRail {
846
870
  */
847
871
  type ForwardedShellProps = Omit<AppShellProps, 'header' | 'sidebar' | 'children'>;
848
872
  interface NavShellProps extends ForwardedShellProps {
873
+ /** Brand placement, rail width and phone drawer options; defaults keep today's layout. */
874
+ brand?: NavBrandOptions;
849
875
  /** Which regions to render: a top bar, a side rail, or both. */
850
876
  layout: NavShellLayout;
851
877
  /** Current active route/path — drives active highlighting on both regions. */
@@ -877,7 +903,7 @@ interface NavShellProps extends ForwardedShellProps {
877
903
  sideRail?: NavShellSideRail;
878
904
  children: React.ReactNode;
879
905
  }
880
- declare const NavShell: ({ layout, pathname, onNavigate, regionLabel, navigateHint, topBar, header, sideRail, children, collapsedSidebar: collapsedSidebarProp, collapsedRailRange: collapsedRailRangeProp, ...shellProps }: NavShellProps) => React.ReactElement | null;
906
+ declare const NavShell: ({ layout, pathname, onNavigate, regionLabel, navigateHint, topBar, header, sideRail, children, collapsedSidebar: collapsedSidebarProp, collapsedRailRange: collapsedRailRangeProp, brand, mobileMenu, ...shellProps }: NavShellProps) => React.ReactElement | null;
881
907
 
882
908
  /**
883
909
  * CollapsedRail — the icon-only vertical rail for the intermediate (tablet) tier
@@ -1363,7 +1389,6 @@ declare const HOVER_TINT_OPACITY = 0.06;
1363
1389
  declare const NAV_LINK_GAP = 4;
1364
1390
  declare const navStyles: {
1365
1391
  sidebarContainer: {
1366
- width: number;
1367
1392
  paddingTop: number;
1368
1393
  paddingHorizontal: number;
1369
1394
  borderRightWidth: number;
@@ -1668,4 +1693,4 @@ interface BottomTabBarProps {
1668
1693
  /** Phone tab bar; `tabFeedback` picks the press feedback, `Default` adds no motion. */
1669
1694
  declare const BottomTabBar: ({ items, pathname, onNavigate, tabFeedback, navigateHint, regionLabel, containerStyle, testID, }: BottomTabBarProps) => React.ReactElement;
1670
1695
 
1671
- export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, type AccountPlan, type AccountState, AppShell, type AppShellBackdrop, type AppShellBackdropBand, type AppShellProps, type AppShellWidth, BASE_INDENT, BottomTabBar, type BottomTabBarProps, BrandHomeLink, type BrandHomeLinkProps, BrandMark, type BrandMarkProps, CHEVRON_ICON_SIZE, CollapsedRail, type CollapsedRailProps, type CollapsedRailRange, type CommandItem, CommandPalette, type CommandPaletteLabels, type CommandPaletteProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, type DarkModeControlProps, type DarkModeOption, type DarkModeVariant, HOVER_TINT_OPACITY, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, type NavBarProps, NavExpandableItem, type NavExpandableItemProps, NavHoverFeedback, type NavItem, type NavOrientation, NavOverflowMenu, type NavOverflowMenuProps, type NavProps, NavShell, type NavShellCollapsedRail, type NavShellLayout, type NavShellProps, type NavShellSideRail, type NavShellTopBar, type NavUser, PillNav, type PillNavProps, PillNavVariant, RAIL_FULL_BREAKPOINT, type RailMode, type ResolveRailModeArgs, type SearchAffordance, type ShellMessage, Sidebar, SidebarChevron, type SidebarChevronProps, type SidebarPaletteTriggerConfig, type SidebarProps, SidebarSearch, type SidebarSearchConfig, type SidebarSearchLabels, type SidebarSearchProps, TabFeedback, Topbar, type TopbarAction, type TopbarProps, type TopbarUser, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };
1696
+ export { ACTIVE_BORDER_RADIUS, ACTIVE_TINT_OPACITY, APP_SHELL_SUFFIX, type AccountPlan, type AccountState, AppShell, type AppShellBackdrop, type AppShellBackdropBand, type AppShellProps, type AppShellWidth, BASE_INDENT, BottomTabBar, type BottomTabBarProps, BrandHomeLink, type BrandHomeLinkProps, BrandMark, type BrandMarkProps, type BrandPlacement, CHEVRON_ICON_SIZE, CollapsedRail, type CollapsedRailProps, type CollapsedRailRange, type CommandItem, CommandPalette, type CommandPaletteLabels, type CommandPaletteProps, CommandPaletteTrigger, type CommandPaletteTriggerProps, DEFAULT_COLLAPSED_RAIL_MAX, DEFAULT_SEARCH_BREAKPOINT, DarkModeControl, type DarkModeControlProps, type DarkModeOption, type DarkModeVariant, type DrawerHeader, type DrawerOptions, type DrawerWidth, HOVER_TINT_OPACITY, NAV_BRAND_DEFAULTS, NAV_ICON_SIZE, NAV_LINK_GAP, NAV_ROW_RADIUS, NAV_TEST_IDS, Nav, NavBar, type NavBarProps, type NavBrandOptions, NavExpandableItem, type NavExpandableItemProps, NavHoverFeedback, type NavItem, type NavOrientation, NavOverflowMenu, type NavOverflowMenuProps, type NavProps, NavShell, type NavShellCollapsedRail, type NavShellLayout, type NavShellProps, type NavShellSideRail, type NavShellTopBar, type NavUser, PillNav, type PillNavProps, PillNavVariant, RAIL_FULL_BREAKPOINT, type RailMode, type ResolveRailModeArgs, SIDEBAR_WIDTH_PX, type SearchAffordance, type ShellMessage, Sidebar, SidebarChevron, type SidebarChevronProps, type SidebarPaletteTriggerConfig, type SidebarProps, SidebarSearch, type SidebarSearchConfig, type SidebarSearchLabels, type SidebarSearchProps, type SidebarWidth, TabFeedback, Topbar, type TopbarAction, type TopbarProps, type TopbarUser, accessibleNavItems, collapsedRailStyles, darkModeStyles, expandableStyles, filterCommands, filterNavItems, isFilterActive, isRouteActive, navStyles, pillNavStyles, resolveActiveRoute, resolveContentMaxWidth, resolvePillMenuLabel, resolveRailMode, resolveSearchAffordance, roleRoutesToNavItems, searchTokens, useCommandPaletteHotkey, useContentMaxWidth };