@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.
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +108 -121
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +87 -220
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +83 -221
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +324 -460
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +57 -247
- package/corpus/templates/clips/app/components/library/library-layout.tsx +15 -48
- package/corpus/templates/clips/changelog/2026-09-10-open-mcp-connections-in-new-tabs.md +1 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +84 -94
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +1 -1
- package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +108 -296
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +55 -212
- package/corpus/templates/factory/app/components/layout/Sidebar.tsx +72 -260
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +143 -362
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +64 -159
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +152 -165
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +82 -207
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +61 -234
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +73 -225
- package/dist/automation/index.d.ts +1 -1
- package/dist/client/EnvironmentBadge.d.ts +7 -4
- package/dist/client/EnvironmentBadge.js +26 -18
- package/dist/client/FeedbackButton.js +23 -8
- package/dist/client/app-providers.js +1 -1
- package/dist/client/auth/AuthPage.js +0 -38
- package/dist/client/components/icons/AgentNativeIcon.js +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -0
- package/dist/client/ui/AppSidebar.d.ts +15 -0
- package/dist/client/ui/AppSidebar.js +34 -0
- package/dist/client/ui/index.d.ts +1 -0
- package/dist/client/ui/index.js +1 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +19 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +9 -9
- package/dist/provider-api/actions/provider-api.d.ts +15 -15
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/beta-opt-out-html.js +2 -2
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +57 -247
- package/dist/vite/client.js +4 -1
- package/docs/content/template-clips-anonymous-intake.mdx +7 -5
- package/docs/content/template-clips-developers.mdx +1 -1
- package/package.json +3 -3
- 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 {
|
|
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
|
|
536
|
-
|
|
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
|
|
1903
|
-
showCollapsedSidebar ? "w-
|
|
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
|
-
<
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
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
|
|
1918
|
-
|
|
1919
|
-
<
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
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
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
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
|
-
</
|
|
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
|
|
1976
|
-
isActive &&
|
|
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="
|
|
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
|
|
2079
|
+
"flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
|
|
2106
2080
|
view === item.id
|
|
2107
|
-
? "bg-
|
|
2108
|
-
: "text-
|
|
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
|
|
2121
|
+
"flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
|
|
2148
2122
|
tab.isActive
|
|
2149
|
-
? "bg-
|
|
2150
|
-
: "text-
|
|
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
|
-
<
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
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-
|
|
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-
|
|
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="
|
|
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
|
|
2589
|
+
"flex items-center justify-between rounded px-2 py-1.5 text-xs transition-colors",
|
|
2599
2590
|
view === item.id
|
|
2600
|
-
? "bg-
|
|
2601
|
-
: "text-
|
|
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
|
-
"
|
|
2657
|
-
|
|
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}
|