@agent-native/core 0.178.1 → 0.178.2-nightly-20260910195009

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 (48) hide show
  1. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +108 -121
  2. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +87 -220
  3. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +83 -221
  4. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +324 -460
  5. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +57 -247
  6. package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -48
  7. package/corpus/templates/clips/changelog/2026-09-10-open-mcp-connections-in-new-tabs.md +1 -0
  8. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +84 -94
  9. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +1 -1
  10. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +108 -296
  11. package/corpus/templates/design/app/components/layout/Sidebar.tsx +55 -212
  12. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +72 -260
  13. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +143 -362
  14. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +64 -159
  15. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +152 -165
  16. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +82 -207
  17. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +61 -234
  18. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +73 -225
  19. package/dist/automation/index.d.ts +1 -1
  20. package/dist/client/EnvironmentBadge.d.ts +7 -4
  21. package/dist/client/EnvironmentBadge.js +26 -18
  22. package/dist/client/FeedbackButton.js +23 -8
  23. package/dist/client/app-providers.js +1 -1
  24. package/dist/client/auth/AuthPage.js +0 -38
  25. package/dist/client/components/icons/AgentNativeIcon.js +1 -1
  26. package/dist/client/index.d.ts +1 -0
  27. package/dist/client/index.js +1 -0
  28. package/dist/client/ui/AppSidebar.d.ts +15 -0
  29. package/dist/client/ui/AppSidebar.js +34 -0
  30. package/dist/client/ui/index.d.ts +1 -0
  31. package/dist/client/ui/index.js +1 -0
  32. package/dist/collab/awareness.d.ts +2 -2
  33. package/dist/collab/struct-routes.d.ts +1 -1
  34. package/dist/config.d.ts +4 -0
  35. package/dist/config.js +19 -3
  36. package/dist/progress/routes.d.ts +1 -1
  37. package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
  38. package/dist/provider-api/actions/provider-api.d.ts +15 -15
  39. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  40. package/dist/resources/handlers.d.ts +1 -1
  41. package/dist/secrets/routes.d.ts +9 -9
  42. package/dist/server/beta-opt-out-html.js +2 -2
  43. package/dist/templates/chat/app/components/layout/Sidebar.tsx +57 -247
  44. package/dist/vite/client.js +4 -1
  45. package/docs/content/template-clips-anonymous-intake.mdx +7 -5
  46. package/docs/content/template-clips-developers.mdx +1 -1
  47. package/package.json +3 -3
  48. package/src/templates/chat/app/components/layout/Sidebar.tsx +57 -247
@@ -9,9 +9,14 @@ import { usePerAppChatOpen } from "@agent-native/core/client/hooks";
9
9
  import { getBrowserTabId } from "@agent-native/core/client/hooks";
10
10
  import { useT } from "@agent-native/core/client/i18n";
11
11
  import { startWorkspaceProviderOAuth } from "@agent-native/core/client/integrations";
12
- import { openCommandMenu } from "@agent-native/core/client/navigation";
13
12
  import { InvitationBanner, OrgSwitcher } from "@agent-native/core/client/org";
14
- import { FeedbackButton } from "@agent-native/core/client/ui";
13
+ import {
14
+ AgentNativeIcon,
15
+ AppSidebarFooter,
16
+ AppSidebarHeader,
17
+ EnvironmentBadge,
18
+ FeedbackButton,
19
+ } from "@agent-native/core/client/ui";
15
20
  import { SidebarFooterActions } from "@agent-native/toolkit/app-shell";
16
21
  import {
17
22
  isInboxScopedAppLabel,
@@ -532,8 +537,9 @@ function AppLayoutInner({ children }: AppLayoutProps) {
532
537
  (labelsLoading && labels.length === 0) || (settingsLoading && !settings);
533
538
  const [sidebarOpen, setSidebarOpen] = useState(false);
534
539
  const [sidebarPinned, setSidebarPinned] = useState(() => {
535
- if (typeof window === "undefined") return false;
536
- return localStorage.getItem("mail-sidebar-pinned") === "true";
540
+ if (typeof window === "undefined") return true;
541
+ const stored = localStorage.getItem("mail-sidebar-pinned");
542
+ return stored === null ? true : stored === "true";
537
543
  });
538
544
  const [sidebarCollapsed, setSidebarCollapsed] = useState(() => {
539
545
  if (typeof window === "undefined") return false;
@@ -601,26 +607,10 @@ function AppLayoutInner({ children }: AppLayoutProps) {
601
607
  </TooltipContent>
602
608
  </Tooltip>
603
609
  ) : null;
604
- const searchButton = (
605
- <Tooltip>
606
- <TooltipTrigger asChild>
607
- <button
608
- type="button"
609
- onClick={openCommandMenu}
610
- className="flex h-8 w-8 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground"
611
- aria-label={t("mail.search.label")}
612
- >
613
- <IconSearch className="h-4 w-4" />
614
- </button>
615
- </TooltipTrigger>
616
- <TooltipContent side="right">{t("mail.search.label")}</TooltipContent>
617
- </Tooltip>
618
- );
619
610
  const feedbackButton = (
620
611
  <FeedbackButton
621
612
  variant={showCollapsedSidebar ? "icon" : "sidebar"}
622
613
  side="right"
623
- className={showCollapsedSidebar ? "size-8" : "min-w-0"}
624
614
  />
625
615
  );
626
616
 
@@ -1558,7 +1548,6 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1558
1548
  );
1559
1549
  const tabIndex = visibleIndex >= 0 ? visibleIndex : idx;
1560
1550
  const count = getTopBarCount(tab.id);
1561
- const isDragging = dragPinnedId === tab.pinnedId;
1562
1551
  const canDrag = !!tab.pinnedId;
1563
1552
  const showLeft =
1564
1553
  dropIndicator?.tabIndex === tabIndex &&
@@ -1585,14 +1574,6 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1585
1574
  handleTabDragStart(e, tab.pinnedId)
1586
1575
  }
1587
1576
  onDragEnd={handleTabDragEnd}
1588
- className={cn(
1589
- "flex items-center gap-1.5 whitespace-nowrap px-2.5 py-1 text-[13px] select-none",
1590
- tab.isActive
1591
- ? "text-foreground font-semibold"
1592
- : "text-muted-foreground font-medium hover:text-foreground/80",
1593
- isDragging && "opacity-40",
1594
- canDrag && "cursor-grab",
1595
- )}
1596
1577
  >
1597
1578
  {tab.color && (
1598
1579
  <span
@@ -1899,67 +1880,59 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1899
1880
  )}
1900
1881
  <div
1901
1882
  className={cn(
1902
- "flex flex-col overflow-hidden bg-[var(--mail-drawer-surface)] backdrop-blur-2xl transition-[width] duration-200 ease-out",
1903
- showCollapsedSidebar ? "w-12" : "w-64",
1883
+ "agent-layout-left-drawer flex flex-col overflow-hidden border-e border-border bg-sidebar transition-[width] duration-200 ease-out",
1884
+ showCollapsedSidebar ? "w-14" : "w-[260px]",
1904
1885
  sidebarPinned && !isMobile
1905
1886
  ? "absolute start-0 top-12 bottom-0 z-10"
1906
1887
  : "fixed start-0 top-0 bottom-0 z-40",
1907
1888
  )}
1908
1889
  >
1909
- <div
1910
- className={cn(
1911
- "flex h-12 shrink-0 items-center border-b border-border/20",
1912
- showCollapsedSidebar
1913
- ? "justify-center px-1"
1914
- : "justify-between px-4",
1915
- )}
1890
+ <AppSidebarHeader
1891
+ brandName={t("mail.appName")}
1892
+ brandHref="/inbox"
1893
+ collapsed={showCollapsedSidebar}
1916
1894
  >
1917
- {showCollapsedSidebar ? null : (
1918
- <>
1919
- <span className="text-[13px] font-medium text-foreground">
1920
- {t("mail.appName")}
1921
- </span>
1922
- <div className="flex items-center gap-1">
1923
- <Tooltip>
1924
- <TooltipTrigger asChild>
1925
- <button
1926
- type="button"
1927
- onClick={() => {
1928
- if (sidebarPinned) {
1929
- setSidebarPinned(false);
1930
- setSidebarOpen(!isMobile);
1931
- return;
1932
- }
1933
- setSidebarPinned(true);
1934
- setSidebarOpen(true);
1935
- }}
1936
- className={cn(
1937
- "flex h-7 w-7 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground",
1938
- sidebarPinned && "text-foreground bg-accent/50",
1939
- )}
1940
- aria-label={
1941
- sidebarPinned
1942
- ? t("mail.toolbar.unpinSidebar")
1943
- : t("mail.toolbar.pinSidebar")
1895
+ {!showCollapsedSidebar && (
1896
+ <div className="ms-auto flex items-center gap-1">
1897
+ <Tooltip>
1898
+ <TooltipTrigger asChild>
1899
+ <button
1900
+ type="button"
1901
+ onClick={() => {
1902
+ if (sidebarPinned) {
1903
+ setSidebarPinned(false);
1904
+ setSidebarOpen(!isMobile);
1905
+ return;
1944
1906
  }
1945
- >
1946
- {sidebarPinned ? (
1947
- <IconPinnedFilled className="h-4 w-4" />
1948
- ) : (
1949
- <IconPin className="h-4 w-4" />
1950
- )}
1951
- </button>
1952
- </TooltipTrigger>
1953
- <TooltipContent>
1954
- {sidebarPinned
1955
- ? t("mail.toolbar.unpinSidebar")
1956
- : t("mail.toolbar.pinSidebar")}
1957
- </TooltipContent>
1958
- </Tooltip>
1959
- </div>
1960
- </>
1907
+ setSidebarPinned(true);
1908
+ setSidebarOpen(true);
1909
+ }}
1910
+ className={cn(
1911
+ "flex size-7 items-center justify-center rounded text-muted-foreground hover:bg-accent/50 hover:text-foreground",
1912
+ sidebarPinned && "text-foreground bg-accent/50",
1913
+ )}
1914
+ aria-label={
1915
+ sidebarPinned
1916
+ ? t("mail.toolbar.unpinSidebar")
1917
+ : t("mail.toolbar.pinSidebar")
1918
+ }
1919
+ >
1920
+ {sidebarPinned ? (
1921
+ <IconPinnedFilled className="h-4 w-4" />
1922
+ ) : (
1923
+ <IconPin className="h-4 w-4" />
1924
+ )}
1925
+ </button>
1926
+ </TooltipTrigger>
1927
+ <TooltipContent>
1928
+ {sidebarPinned
1929
+ ? t("mail.toolbar.unpinSidebar")
1930
+ : t("mail.toolbar.pinSidebar")}
1931
+ </TooltipContent>
1932
+ </Tooltip>
1933
+ </div>
1961
1934
  )}
1962
- </div>
1935
+ </AppSidebarHeader>
1963
1936
  {showCollapsedSidebar ? (
1964
1937
  <nav className="flex min-h-0 flex-1 flex-col items-center gap-1 overflow-y-auto px-1 py-2">
1965
1938
  {railNavItems.map((item) => {
@@ -1972,8 +1945,9 @@ function AppLayoutInner({ children }: AppLayoutProps) {
1972
1945
  to={item.href}
1973
1946
  aria-label={item.label}
1974
1947
  className={cn(
1975
- "relative flex h-10 w-10 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
1976
- isActive && "bg-accent/60 text-foreground",
1948
+ "relative flex size-9 items-center justify-center rounded-md text-primary transition-colors hover:bg-accent/60 hover:text-primary",
1949
+ isActive &&
1950
+ "bg-primary/10 text-primary hover:bg-primary/10 hover:text-primary",
1977
1951
  )}
1978
1952
  >
1979
1953
  <Icon className="h-4 w-4" />
@@ -2043,7 +2017,7 @@ function AppLayoutInner({ children }: AppLayoutProps) {
2043
2017
  </div>
2044
2018
  )}
2045
2019
 
2046
- <div className="p-4">
2020
+ <div className="px-2 py-3">
2047
2021
  <div className="space-y-0.5">
2048
2022
  {[
2049
2023
  {
@@ -2102,10 +2076,10 @@ function AppLayoutInner({ children }: AppLayoutProps) {
2102
2076
  to={item.href}
2103
2077
  onClick={closeSidebar}
2104
2078
  className={cn(
2105
- "flex items-center justify-between rounded-md px-3 py-2.5 text-[14px] transition-colors min-h-[44px]",
2079
+ "flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
2106
2080
  view === item.id
2107
- ? "bg-accent/60 text-foreground font-medium"
2108
- : "text-foreground/70 hover:bg-accent/30",
2081
+ ? "bg-primary/10 font-medium text-primary"
2082
+ : "text-primary hover:bg-accent/60",
2109
2083
  )}
2110
2084
  >
2111
2085
  <span>{item.label}</span>
@@ -2144,10 +2118,10 @@ function AppLayoutInner({ children }: AppLayoutProps) {
2144
2118
  to={tab.href}
2145
2119
  onClick={closeSidebar}
2146
2120
  className={cn(
2147
- "flex items-center justify-between rounded-md px-3 py-2.5 text-[14px] transition-colors min-h-[44px]",
2121
+ "flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
2148
2122
  tab.isActive
2149
- ? "bg-accent/60 text-foreground font-medium"
2150
- : "text-foreground/70 hover:bg-accent/30",
2123
+ ? "bg-primary/10 font-medium text-primary"
2124
+ : "text-primary hover:bg-accent/60",
2151
2125
  )}
2152
2126
  >
2153
2127
  <span
@@ -2181,43 +2155,46 @@ function AppLayoutInner({ children }: AppLayoutProps) {
2181
2155
  </div>
2182
2156
  </div>
2183
2157
 
2184
- <div className="shrink-0">
2185
- <div className="px-3 py-2 empty:hidden">
2186
- <OrgSwitcher />
2187
- </div>
2188
-
2189
- <div className="flex items-center justify-end gap-1 px-2 py-2">
2190
- <DevDatabaseLink />
2191
- <Tooltip>
2192
- <TooltipTrigger asChild>
2193
- <Link
2194
- to="/settings"
2195
- onClick={closeSidebar}
2196
- aria-label={t("mail.toolbar.settings")}
2197
- className={cn(
2198
- "flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
2199
- location.pathname === "/settings" &&
2200
- "bg-accent/60 text-foreground",
2201
- )}
2202
- >
2203
- <IconSettings className="h-4 w-4" />
2204
- </Link>
2205
- </TooltipTrigger>
2206
- <TooltipContent>
2207
- {t("mail.toolbar.settings")}
2208
- </TooltipContent>
2209
- </Tooltip>
2210
- <ThemeToggle className="h-8 w-8 shrink-0" />
2211
- </div>
2212
- </div>
2158
+ <AppSidebarFooter
2159
+ collapsed={showCollapsedSidebar}
2160
+ collapsible={false}
2161
+ feedback={feedbackButton}
2162
+ orgSwitcher={
2163
+ <OrgSwitcher
2164
+ compact={showCollapsedSidebar}
2165
+ className={cn(
2166
+ "!bg-transparent !text-primary hover:!bg-accent/60 hover:!text-primary",
2167
+ showCollapsedSidebar
2168
+ ? "!size-9 !p-0 [&>svg]:!size-4"
2169
+ : "min-w-0 flex-1",
2170
+ )}
2171
+ />
2172
+ }
2173
+ footerExtras={
2174
+ <>
2175
+ <DevDatabaseLink />
2176
+ <Tooltip>
2177
+ <TooltipTrigger asChild>
2178
+ <Link
2179
+ to="/settings"
2180
+ onClick={closeSidebar}
2181
+ aria-label={t("mail.toolbar.settings")}
2182
+ className="flex size-9 shrink-0 items-center justify-center rounded-md text-primary hover:bg-accent/60 hover:text-primary"
2183
+ >
2184
+ <IconSettings className="size-4" />
2185
+ </Link>
2186
+ </TooltipTrigger>
2187
+ <TooltipContent side="right">
2188
+ {t("mail.toolbar.settings")}
2189
+ </TooltipContent>
2190
+ </Tooltip>
2191
+ <ThemeToggle className="size-9 shrink-0 !bg-transparent text-primary hover:!bg-accent/60 hover:!text-primary" />
2192
+ {collapseButton}
2193
+ </>
2194
+ }
2195
+ />
2213
2196
  </>
2214
2197
  )}
2215
- <SidebarFooterActions
2216
- collapsed={showCollapsedSidebar}
2217
- feedback={feedbackButton}
2218
- search={searchButton}
2219
- collapse={collapseButton}
2220
- />
2221
2198
  </div>
2222
2199
  </>
2223
2200
  )}
@@ -2227,7 +2204,7 @@ function AppLayoutInner({ children }: AppLayoutProps) {
2227
2204
  "flex min-h-0 flex-1 flex-col",
2228
2205
  !isMobile &&
2229
2206
  showSidebar &&
2230
- (showCollapsedSidebar ? "ps-12" : "ps-64"),
2207
+ (showCollapsedSidebar ? "ps-14" : "ps-[260px]"),
2231
2208
  )}
2232
2209
  >
2233
2210
  <InvitationBanner />
@@ -2472,9 +2449,7 @@ function StandardLayout({ children }: AppLayoutProps) {
2472
2449
  <TooltipContent side="right">{t("mail.search.label")}</TooltipContent>
2473
2450
  </Tooltip>
2474
2451
  );
2475
- const feedbackButton = (
2476
- <FeedbackButton variant="sidebar" side="right" className="min-w-0" />
2477
- );
2452
+ const feedbackButton = <FeedbackButton variant="sidebar" side="right" />;
2478
2453
 
2479
2454
  // Extensions (`/extensions` list and `/extensions/:id` viewer) render their own h-12
2480
2455
  // toolbar inside the shared
@@ -2542,13 +2517,29 @@ function StandardLayout({ children }: AppLayoutProps) {
2542
2517
  aria-hidden={!sidebarOpen}
2543
2518
  inert={!sidebarOpen}
2544
2519
  className={cn(
2545
- "fixed start-0 top-0 bottom-0 z-40 flex w-64 flex-col overflow-hidden bg-[var(--mail-drawer-surface)] backdrop-blur-2xl transition-transform duration-200 ease-out motion-reduce:transition-none",
2520
+ "fixed start-0 top-0 bottom-0 z-40 flex w-[260px] flex-col overflow-hidden border-e border-border bg-sidebar transition-transform duration-200 ease-out motion-reduce:transition-none",
2546
2521
  sidebarOpen
2547
2522
  ? "translate-x-0"
2548
2523
  : "pointer-events-none -translate-x-full rtl:translate-x-full",
2549
2524
  )}
2550
2525
  >
2551
- <div className="min-h-0 flex-1 overflow-y-auto p-4">
2526
+ <div className="flex h-14 shrink-0 items-center gap-2 border-b border-border px-4">
2527
+ <Link
2528
+ to="/inbox"
2529
+ onClick={() => setSidebarOpen(false)}
2530
+ className="flex min-w-0 items-center gap-2 rounded text-start outline-none"
2531
+ >
2532
+ <AgentNativeIcon
2533
+ aria-hidden="true"
2534
+ className="h-3.5 w-6 shrink-0 text-primary"
2535
+ />
2536
+ <span className="truncate text-sm font-semibold text-primary">
2537
+ {t("mail.appName")}
2538
+ </span>
2539
+ </Link>
2540
+ <EnvironmentBadge placement="inline" />
2541
+ </div>
2542
+ <div className="min-h-0 flex-1 overflow-y-auto px-2 py-3">
2552
2543
  <div className="space-y-0.5">
2553
2544
  {[
2554
2545
  { id: "inbox", label: t("mail.views.inbox"), href: "/inbox" },
@@ -2595,10 +2586,10 @@ function StandardLayout({ children }: AppLayoutProps) {
2595
2586
  to={item.href}
2596
2587
  onClick={() => setSidebarOpen(false)}
2597
2588
  className={cn(
2598
- "flex items-center justify-between rounded-md px-3 py-2.5 text-[14px] transition-colors min-h-[44px]",
2589
+ "flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
2599
2590
  view === item.id
2600
- ? "bg-accent/60 text-foreground font-medium"
2601
- : "text-foreground/70 hover:bg-accent/30",
2591
+ ? "bg-primary/10 font-medium text-primary"
2592
+ : "text-primary hover:bg-accent/60",
2602
2593
  )}
2603
2594
  >
2604
2595
  <span>{item.label}</span>
@@ -2612,39 +2603,35 @@ function StandardLayout({ children }: AppLayoutProps) {
2612
2603
  </div>
2613
2604
  </div>
2614
2605
 
2615
- <div className="shrink-0">
2616
- <div className="px-3 py-2 empty:hidden">
2617
- <OrgSwitcher />
2618
- </div>
2619
-
2620
- <div className="flex items-center justify-end gap-1 px-2 py-2">
2621
- <DevDatabaseLink />
2622
- <div className="flex shrink-0 items-center gap-0.5">
2623
- <Tooltip>
2624
- <TooltipTrigger asChild>
2625
- <Link
2626
- to="/settings"
2627
- onClick={() => setSidebarOpen(false)}
2628
- aria-label={t("mail.toolbar.settings")}
2629
- className={cn(
2630
- "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent/50 hover:text-foreground",
2631
- location.pathname === "/settings" &&
2632
- "bg-accent/60 text-foreground",
2633
- )}
2634
- >
2635
- <IconSettings className="h-4 w-4" />
2636
- </Link>
2637
- </TooltipTrigger>
2638
- <TooltipContent>{t("mail.toolbar.settings")}</TooltipContent>
2639
- </Tooltip>
2640
- <ThemeToggle className="h-8 w-8 shrink-0" />
2641
- </div>
2642
- </div>
2606
+ <div className="shrink-0 border-t border-border p-2 space-y-1.5">
2643
2607
  <SidebarFooterActions
2644
2608
  feedback={feedbackButton}
2645
2609
  search={searchButton}
2646
2610
  collapse={collapseButton}
2647
2611
  />
2612
+ <div
2613
+ data-sidebar-footer-utilities
2614
+ className="flex items-center gap-0.5"
2615
+ >
2616
+ <OrgSwitcher className="min-w-0 flex-1 !bg-transparent !text-primary hover:!bg-accent/60 hover:!text-primary" />
2617
+ <DevDatabaseLink />
2618
+ <Tooltip>
2619
+ <TooltipTrigger asChild>
2620
+ <Link
2621
+ to="/settings"
2622
+ onClick={() => setSidebarOpen(false)}
2623
+ aria-label={t("mail.toolbar.settings")}
2624
+ className="flex size-9 shrink-0 items-center justify-center rounded-md text-primary hover:bg-accent/60 hover:text-primary"
2625
+ >
2626
+ <IconSettings className="size-4" />
2627
+ </Link>
2628
+ </TooltipTrigger>
2629
+ <TooltipContent side="right">
2630
+ {t("mail.toolbar.settings")}
2631
+ </TooltipContent>
2632
+ </Tooltip>
2633
+ <ThemeToggle className="size-9 shrink-0 !bg-transparent text-primary hover:!bg-accent/60 hover:!text-primary" />
2634
+ </div>
2648
2635
  </div>
2649
2636
  </div>
2650
2637
  </>
@@ -2653,8 +2640,8 @@ function StandardLayout({ children }: AppLayoutProps) {
2653
2640
 
2654
2641
  <main
2655
2642
  className={cn(
2656
- "agent-native-app-main flex flex-1 overflow-hidden",
2657
- sidebarOpen && !isMobile && "ps-64",
2643
+ "min-h-0 flex-1 overflow-hidden transition-[padding] duration-200 ease-out",
2644
+ !isMobile && sidebarOpen && "ps-[260px]",
2658
2645
  )}
2659
2646
  >
2660
2647
  {children}