@the-portland-company/shell 0.63.0 → 0.65.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/dist/app-chrome.cjs +302 -264
- package/dist/app-chrome.cjs.map +1 -1
- package/dist/app-chrome.js +3 -3
- package/dist/app-chrome.js.map +1 -1
- package/dist/chrome.css +23 -95
- package/dist/{chunk-U4RZPZET.js → chunk-JHIFJZ73.js} +9 -16
- package/dist/chunk-JHIFJZ73.js.map +1 -0
- package/dist/{chunk-2SF25TVU.js → chunk-XK2LWTHJ.js} +291 -246
- package/dist/chunk-XK2LWTHJ.js.map +1 -0
- package/dist/index.cjs +5 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/native.cjs +301 -263
- package/dist/native.cjs.map +1 -1
- package/dist/native.d.cts +21 -1
- package/dist/native.d.ts +21 -1
- package/dist/native.js +2 -2
- package/dist/theme-preference.cjs +7 -14
- package/dist/theme-preference.cjs.map +1 -1
- package/dist/theme-preference.d.cts +3 -1
- package/dist/theme-preference.d.ts +3 -1
- package/dist/theme-preference.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2SF25TVU.js.map +0 -1
- package/dist/chunk-U4RZPZET.js.map +0 -1
package/dist/app-chrome.cjs
CHANGED
|
@@ -131,20 +131,13 @@ function clearPendingThemeChoice() {
|
|
|
131
131
|
writeSharedCookie(THEME_PENDING_COOKIE, "", 0);
|
|
132
132
|
}
|
|
133
133
|
function resolveTheme(pref) {
|
|
134
|
-
|
|
135
|
-
try {
|
|
136
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
137
|
-
} catch {
|
|
138
|
-
return "light";
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return pref;
|
|
134
|
+
return "light";
|
|
142
135
|
}
|
|
143
136
|
function applyThemePreference(pref) {
|
|
144
137
|
if (typeof document === "undefined") return;
|
|
145
|
-
const resolved = resolveTheme(
|
|
138
|
+
const resolved = resolveTheme();
|
|
146
139
|
const d = document.documentElement;
|
|
147
|
-
d.classList.
|
|
140
|
+
d.classList.remove("dark");
|
|
148
141
|
try {
|
|
149
142
|
d.style.colorScheme = resolved;
|
|
150
143
|
} catch {
|
|
@@ -159,11 +152,11 @@ var ls=null;try{ls=localStorage.getItem(KEY);}catch(e){}
|
|
|
159
152
|
var pref=cookie||ls||"system";
|
|
160
153
|
if(VALID.indexOf(pref)===-1)pref="system";
|
|
161
154
|
if(cookie&&cookie!==ls){try{localStorage.setItem(KEY,cookie);}catch(e){}}
|
|
162
|
-
|
|
163
|
-
|
|
155
|
+
// Dark Mode retired platform-wide 2026-09-21 \u2014 always light, and strip any
|
|
156
|
+
// stale dark class a pre-retirement cookie/localStorage value left behind.
|
|
164
157
|
var d=document.documentElement;
|
|
165
|
-
|
|
166
|
-
try{d.style.colorScheme=
|
|
158
|
+
d.classList.remove("dark");
|
|
159
|
+
try{d.style.colorScheme="light";}catch(e){}
|
|
167
160
|
}catch(e){}})();`;
|
|
168
161
|
var CORE_APP_ORIGIN = "https://app.politogyvrm.com";
|
|
169
162
|
var CORE_BILLING_PATH = "/organization-settings/subscription-billing/text-email";
|
|
@@ -1744,7 +1737,7 @@ function useThemePreference() {
|
|
|
1744
1737
|
}
|
|
1745
1738
|
const pref = cookie ?? (isThemePreference(ls) ? ls : null) ?? "system";
|
|
1746
1739
|
setValueState(pref);
|
|
1747
|
-
applyThemePreference(
|
|
1740
|
+
applyThemePreference();
|
|
1748
1741
|
}, []);
|
|
1749
1742
|
const meCtx = react.useContext(NavChromeContext);
|
|
1750
1743
|
react.useEffect(() => {
|
|
@@ -1753,7 +1746,7 @@ function useThemePreference() {
|
|
|
1753
1746
|
if (pending) {
|
|
1754
1747
|
if (meCtx?.me) reconciled.current = true;
|
|
1755
1748
|
setValueState(pending);
|
|
1756
|
-
applyThemePreference(
|
|
1749
|
+
applyThemePreference();
|
|
1757
1750
|
writeThemeCookie(pending);
|
|
1758
1751
|
try {
|
|
1759
1752
|
localStorage.setItem(THEME_STORAGE_KEY, pending);
|
|
@@ -1772,7 +1765,7 @@ function useThemePreference() {
|
|
|
1772
1765
|
if (isThemePreference(pref)) {
|
|
1773
1766
|
reconciled.current = true;
|
|
1774
1767
|
setValueState(pref);
|
|
1775
|
-
applyThemePreference(
|
|
1768
|
+
applyThemePreference();
|
|
1776
1769
|
writeThemeCookie(pref);
|
|
1777
1770
|
try {
|
|
1778
1771
|
localStorage.setItem(THEME_STORAGE_KEY, pref);
|
|
@@ -1791,7 +1784,7 @@ function useThemePreference() {
|
|
|
1791
1784
|
const cookie = readThemeCookie();
|
|
1792
1785
|
if (cookie) {
|
|
1793
1786
|
setValueState((prev) => {
|
|
1794
|
-
if (cookie !== prev) applyThemePreference(
|
|
1787
|
+
if (cookie !== prev) applyThemePreference();
|
|
1795
1788
|
return cookie;
|
|
1796
1789
|
});
|
|
1797
1790
|
}
|
|
@@ -1813,14 +1806,14 @@ function useThemePreference() {
|
|
|
1813
1806
|
} catch {
|
|
1814
1807
|
return;
|
|
1815
1808
|
}
|
|
1816
|
-
const onChange = () => applyThemePreference(
|
|
1809
|
+
const onChange = () => applyThemePreference();
|
|
1817
1810
|
mq.addEventListener("change", onChange);
|
|
1818
1811
|
return () => mq.removeEventListener("change", onChange);
|
|
1819
1812
|
}, [value]);
|
|
1820
1813
|
const setValue = react.useCallback(
|
|
1821
1814
|
(next) => {
|
|
1822
1815
|
setValueState(next);
|
|
1823
|
-
applyThemePreference(
|
|
1816
|
+
applyThemePreference();
|
|
1824
1817
|
writeThemeCookie(next);
|
|
1825
1818
|
try {
|
|
1826
1819
|
localStorage.setItem(THEME_STORAGE_KEY, next);
|
|
@@ -2295,10 +2288,7 @@ function NavSidebar({
|
|
|
2295
2288
|
),
|
|
2296
2289
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-1 flex-col overflow-y-auto px-4 pb-2", children: [
|
|
2297
2290
|
org ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-3", children: [
|
|
2298
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2299
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--sidebar-text-muted,var(--muted))]", children: "Organization" }),
|
|
2300
|
-
org.id && !org.loading ? /* @__PURE__ */ jsxRuntime.jsx(OrgIdCopyButton, { id: org.id }) : null
|
|
2301
|
-
] }),
|
|
2291
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 flex items-center justify-between px-1", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--sidebar-text-muted,var(--muted))]", children: "Organization" }) }),
|
|
2302
2292
|
org.loading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center gap-2.5 rounded-md border border-[color:var(--line)] bg-[color:var(--panel-elevated)] px-2.5 py-2 shadow-sm", children: [
|
|
2303
2293
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2304
2294
|
"span",
|
|
@@ -2326,14 +2316,17 @@ function NavSidebar({
|
|
|
2326
2316
|
children: orgLogoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: orgLogoSrc, alt: "", className: "h-full w-full object-cover" }) : (org.name ?? "Org").slice(0, 2).toUpperCase()
|
|
2327
2317
|
}
|
|
2328
2318
|
),
|
|
2329
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2319
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col", children: [
|
|
2320
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2321
|
+
"span",
|
|
2322
|
+
{
|
|
2323
|
+
title: org.name ?? void 0,
|
|
2324
|
+
className: "truncate text-sm font-semibold",
|
|
2325
|
+
children: org.name ?? "No organizations"
|
|
2326
|
+
}
|
|
2327
|
+
),
|
|
2328
|
+
org.id && !org.loading ? /* @__PURE__ */ jsxRuntime.jsx(OrgIdCopyButton, { id: org.id }) : null
|
|
2329
|
+
] })
|
|
2337
2330
|
] }),
|
|
2338
2331
|
/* @__PURE__ */ jsxRuntime.jsx(ChevronDown, {})
|
|
2339
2332
|
] }),
|
|
@@ -2416,59 +2409,51 @@ function NavSidebar({
|
|
|
2416
2409
|
children: orgLogoSrc ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: orgLogoSrc, alt: "", className: "h-full w-full object-cover" }) : (org.name ?? "Org").slice(0, 2).toUpperCase()
|
|
2417
2410
|
}
|
|
2418
2411
|
),
|
|
2419
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2412
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col", children: [
|
|
2413
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2414
|
+
"span",
|
|
2415
|
+
{
|
|
2416
|
+
title: org.name ?? void 0,
|
|
2417
|
+
className: "truncate text-sm font-semibold",
|
|
2418
|
+
children: org.name ?? "No organizations"
|
|
2419
|
+
}
|
|
2420
|
+
),
|
|
2421
|
+
org.id && !org.loading ? /* @__PURE__ */ jsxRuntime.jsx(OrgIdCopyButton, { id: org.id }) : null
|
|
2422
|
+
] })
|
|
2420
2423
|
] }),
|
|
2421
2424
|
/* @__PURE__ */ jsxRuntime.jsx(ChevronDown, {})
|
|
2422
2425
|
]
|
|
2423
2426
|
}
|
|
2424
2427
|
)
|
|
2425
2428
|
] }) : null,
|
|
2426
|
-
mode ? /* @__PURE__ */ jsxRuntime.
|
|
2427
|
-
/* @__PURE__ */ jsxRuntime.
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2429
|
+
mode ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4", children: [
|
|
2430
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center gap-2 rounded-md bg-[color:var(--panel-elevated)] p-1", children: (mode.options && mode.options.length > 0 ? mode.options : [{ id: mode.label, label: mode.label, icon: ModeIcon }]).map(
|
|
2431
|
+
(opt) => {
|
|
2432
|
+
const selected = opt.label === mode.label;
|
|
2433
|
+
const OptIcon = opt.icon;
|
|
2434
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2435
|
+
"button",
|
|
2436
|
+
{
|
|
2437
|
+
type: "button",
|
|
2438
|
+
title: opt.label,
|
|
2439
|
+
"aria-label": opt.label,
|
|
2440
|
+
"aria-current": selected ? "true" : void 0,
|
|
2441
|
+
onClick: () => {
|
|
2442
|
+
if (!selected) mode.onSelect?.(opt.id);
|
|
2443
|
+
},
|
|
2444
|
+
disabled: !mode.onSelect && !selected,
|
|
2445
|
+
className: [
|
|
2446
|
+
"flex h-9 flex-1 items-center justify-center rounded transition",
|
|
2447
|
+
selected ? "bg-[color:var(--mode-accent,var(--color-accent))] text-[color:var(--mode-on-accent,white)] shadow-sm" : "text-[color:var(--sidebar-text-muted,var(--muted))] hover:bg-[color:var(--panel)] hover:text-[color:var(--sidebar-text,var(--foreground))]"
|
|
2448
|
+
].join(" "),
|
|
2449
|
+
children: OptIcon ? /* @__PURE__ */ jsxRuntime.jsx(OptIcon, { size: 16, className: "shrink-0" }) : null
|
|
2444
2450
|
},
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
OptIcon ? /* @__PURE__ */ jsxRuntime.jsx(OptIcon, { size: 15, className: "shrink-0 text-current" }) : null,
|
|
2452
|
-
opt.label
|
|
2453
|
-
]
|
|
2454
|
-
},
|
|
2455
|
-
opt.id
|
|
2456
|
-
);
|
|
2457
|
-
}) })
|
|
2458
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2459
|
-
"button",
|
|
2460
|
-
{
|
|
2461
|
-
type: "button",
|
|
2462
|
-
className: "flex w-full items-center justify-between gap-2 rounded-md bg-[color:var(--mode-accent,var(--color-accent))] px-2.5 py-2 text-[color:var(--mode-on-accent,white)] shadow-sm",
|
|
2463
|
-
children: [
|
|
2464
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2.5", children: [
|
|
2465
|
-
ModeIcon ? /* @__PURE__ */ jsxRuntime.jsx(ModeIcon, { size: 16, className: "shrink-0" }) : null,
|
|
2466
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold tracking-[-0.01em]", children: mode.label })
|
|
2467
|
-
] }),
|
|
2468
|
-
/* @__PURE__ */ jsxRuntime.jsx(ChevronDown, {})
|
|
2469
|
-
]
|
|
2470
|
-
}
|
|
2471
|
-
) }) : null,
|
|
2451
|
+
opt.id
|
|
2452
|
+
);
|
|
2453
|
+
}
|
|
2454
|
+
) }),
|
|
2455
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-center text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--sidebar-text-muted,var(--muted))]", children: mode.label })
|
|
2456
|
+
] }) : null,
|
|
2472
2457
|
/* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex flex-col gap-1", children: [
|
|
2473
2458
|
nav.groupLabel ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "px-2 pb-1 text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--sidebar-text-muted,var(--muted))]", children: nav.groupLabel }) : null,
|
|
2474
2459
|
nav.items.map((item, idx) => {
|
|
@@ -2549,7 +2534,7 @@ function NavSidebar({
|
|
|
2549
2534
|
}
|
|
2550
2535
|
)
|
|
2551
2536
|
] }, l.label)) }) : null,
|
|
2552
|
-
footer.envLabel ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2537
|
+
footer.envLabel && footer.envLabel.trim().toLowerCase() !== "production" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2553
2538
|
"div",
|
|
2554
2539
|
{
|
|
2555
2540
|
"data-shell-meta": true,
|
|
@@ -2616,6 +2601,27 @@ function HamburgerIcon() {
|
|
|
2616
2601
|
}
|
|
2617
2602
|
);
|
|
2618
2603
|
}
|
|
2604
|
+
function SearchIcon({ className } = {}) {
|
|
2605
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2606
|
+
"svg",
|
|
2607
|
+
{
|
|
2608
|
+
width: 16,
|
|
2609
|
+
height: 16,
|
|
2610
|
+
viewBox: "0 0 24 24",
|
|
2611
|
+
fill: "none",
|
|
2612
|
+
stroke: "currentColor",
|
|
2613
|
+
strokeWidth: 2,
|
|
2614
|
+
strokeLinecap: "round",
|
|
2615
|
+
strokeLinejoin: "round",
|
|
2616
|
+
className,
|
|
2617
|
+
"aria-hidden": "true",
|
|
2618
|
+
children: [
|
|
2619
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "11", cy: "11", r: "7" }),
|
|
2620
|
+
/* @__PURE__ */ jsxRuntime.jsx("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })
|
|
2621
|
+
]
|
|
2622
|
+
}
|
|
2623
|
+
);
|
|
2624
|
+
}
|
|
2619
2625
|
function CloseIcon() {
|
|
2620
2626
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2621
2627
|
"svg",
|
|
@@ -2910,214 +2916,231 @@ function NavTopBar({
|
|
|
2910
2916
|
actions,
|
|
2911
2917
|
themeToggle,
|
|
2912
2918
|
onOpenNav,
|
|
2913
|
-
navOpen
|
|
2919
|
+
navOpen,
|
|
2920
|
+
search,
|
|
2921
|
+
buildNotes
|
|
2914
2922
|
}) {
|
|
2915
2923
|
const rawName = user?.name?.trim() || "";
|
|
2916
2924
|
const hasRealName = rawName.length > 0 && !rawName.includes("@");
|
|
2917
2925
|
const displayName = hasRealName ? formatFirstLast(rawName) : user?.email ?? "Signed in";
|
|
2918
2926
|
const initials = (hasRealName ? rawName : user?.email ?? "P").slice(0, 2).toUpperCase();
|
|
2919
2927
|
const secondary = hasRealName ? user?.email || [user?.tier, user?.role].filter(Boolean).join(" \xB7 ") || "member" : [user?.tier, user?.role].filter(Boolean).join(" \xB7 ") || "member";
|
|
2920
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
type: "button",
|
|
2925
|
-
onClick: onOpenNav,
|
|
2926
|
-
"aria-label": "Open menu",
|
|
2927
|
-
"aria-expanded": navOpen ?? false,
|
|
2928
|
-
"aria-controls": "politogy-nav-drawer",
|
|
2929
|
-
className: `${topBarIconButtonClass("default")} mr-3 shrink-0 lg:hidden lg:mr-0`,
|
|
2930
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(HamburgerIcon, {})
|
|
2931
|
-
}
|
|
2932
|
-
) : null,
|
|
2933
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
2934
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2935
|
-
"h1",
|
|
2928
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-0 z-20", children: [
|
|
2929
|
+
/* @__PURE__ */ jsxRuntime.jsxs("header", { className: "flex h-[var(--topbar-height,60px)] items-center justify-between gap-4 border-b border-[color:var(--line)] bg-[color:var(--panel)] px-[var(--topbar-padding-x,20px)]", children: [
|
|
2930
|
+
onOpenNav ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2931
|
+
"button",
|
|
2936
2932
|
{
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2933
|
+
type: "button",
|
|
2934
|
+
onClick: onOpenNav,
|
|
2935
|
+
"aria-label": "Open menu",
|
|
2936
|
+
"aria-expanded": navOpen ?? false,
|
|
2937
|
+
"aria-controls": "politogy-nav-drawer",
|
|
2938
|
+
className: `${topBarIconButtonClass("default")} mr-1 shrink-0 lg:hidden`,
|
|
2939
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(HamburgerIcon, {})
|
|
2940
2940
|
}
|
|
2941
|
-
),
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
"
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
"
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
]
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
TopBarTooltip,
|
|
2985
|
-
{
|
|
2986
|
-
title: "My Account",
|
|
2987
|
-
description: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2988
|
-
hasRealName ? rawName : user?.email ?? "Signed in",
|
|
2989
|
-
user?.email ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2990
|
-
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
2991
|
-
user.email
|
|
2992
|
-
] }) : null,
|
|
2993
|
-
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
2994
|
-
"Profile, organizations, appearance and sign out."
|
|
2995
|
-
] })
|
|
2996
|
-
}
|
|
2997
|
-
) })
|
|
2998
|
-
] }),
|
|
2999
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute right-0 z-30 mt-2 flex max-h-[calc(100vh-5rem)] w-72 flex-col overflow-hidden rounded-xl border border-[color:var(--line)] bg-[color:var(--panel-elevated)] py-1 shadow-[var(--shadow-soft)]", children: [
|
|
3000
|
-
/* @__PURE__ */ jsxRuntime.jsx(TopBarPanelArrow, {}),
|
|
3001
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain", children: [
|
|
3002
|
-
userMenu?.myProfileHref ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3003
|
-
"a",
|
|
2941
|
+
) : null,
|
|
2942
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { className: "relative flex w-[320px] max-w-full shrink-0 items-center", children: [
|
|
2943
|
+
/* @__PURE__ */ jsxRuntime.jsx(SearchIcon, { className: "pointer-events-none absolute left-3 h-4 w-4 text-[color:var(--muted)]" }),
|
|
2944
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2945
|
+
"input",
|
|
2946
|
+
{
|
|
2947
|
+
type: "search",
|
|
2948
|
+
placeholder: search?.placeholder ?? "Search",
|
|
2949
|
+
value: search?.value,
|
|
2950
|
+
onChange: search?.onChange ? (e) => search.onChange?.(e.target.value) : void 0,
|
|
2951
|
+
onKeyDown: search?.onSubmit ? (e) => {
|
|
2952
|
+
if (e.key === "Enter") search.onSubmit?.(e.target.value);
|
|
2953
|
+
} : void 0,
|
|
2954
|
+
readOnly: !search?.onChange,
|
|
2955
|
+
className: "w-full rounded-md border border-[color:var(--line)] bg-[color:var(--panel-elevated)] py-1.5 pl-9 pr-10 text-sm text-[color:var(--foreground)] placeholder:text-[color:var(--muted)] focus:outline-none focus:ring-2 focus:ring-[color:var(--color-accent)]"
|
|
2956
|
+
}
|
|
2957
|
+
),
|
|
2958
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2959
|
+
"kbd",
|
|
2960
|
+
{
|
|
2961
|
+
"aria-hidden": true,
|
|
2962
|
+
className: "pointer-events-none absolute right-2.5 rounded border border-[color:var(--line)] px-1 py-0.5 text-[10px] font-medium text-[color:var(--muted)]",
|
|
2963
|
+
children: "/"
|
|
2964
|
+
}
|
|
2965
|
+
)
|
|
2966
|
+
] }),
|
|
2967
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative ml-auto flex shrink-0 items-center gap-[var(--topbar-icon-gap,8px)]", children: [
|
|
2968
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2969
|
+
"button",
|
|
2970
|
+
{
|
|
2971
|
+
type: "button",
|
|
2972
|
+
onClick: buildNotes?.onOpen,
|
|
2973
|
+
className: "shrink-0 rounded-md px-2 py-1.5 text-sm font-medium text-[color:var(--muted)] transition hover:bg-[color:var(--panel-elevated)] hover:text-[color:var(--foreground)]",
|
|
2974
|
+
children: buildNotes?.label ?? "Build notes"
|
|
2975
|
+
}
|
|
2976
|
+
),
|
|
2977
|
+
actionsList && actionsList.length > 0 ? actionsList.map((action) => /* @__PURE__ */ jsxRuntime.jsx(NavTopBarActionButton, { action }, action.key)) : null,
|
|
2978
|
+
actions,
|
|
2979
|
+
themeToggle,
|
|
2980
|
+
/* @__PURE__ */ jsxRuntime.jsxs("details", { "data-nav-details": true, className: "group/acct relative", children: [
|
|
2981
|
+
/* @__PURE__ */ jsxRuntime.jsxs("summary", { className: "group/tbtip relative flex cursor-pointer list-none items-center gap-2.5 rounded-full py-1 pl-1 pr-2 transition hover:bg-[color:var(--panel-elevated)] [&::-webkit-details-marker]:hidden", children: [
|
|
2982
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-[var(--topbar-icon-button-size,32px)] w-[var(--topbar-icon-button-size,32px)] items-center justify-center overflow-hidden rounded-full bg-[color:var(--color-accent)] text-xs font-bold text-white", children: user?.avatarUrl || user?.memojiUrl ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2983
|
+
"img",
|
|
3004
2984
|
{
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
/* @__PURE__ */ jsxRuntime.jsx(ProfileIcon, {}),
|
|
3009
|
-
"My Profile"
|
|
3010
|
-
]
|
|
2985
|
+
src: user.avatarUrl || user.memojiUrl,
|
|
2986
|
+
alt: "",
|
|
2987
|
+
className: "h-full w-full object-cover"
|
|
3011
2988
|
}
|
|
3012
|
-
) :
|
|
3013
|
-
|
|
3014
|
-
"
|
|
2989
|
+
) : initials }),
|
|
2990
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "hidden flex-col leading-tight md:flex", children: [
|
|
2991
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-semibold text-[color:var(--foreground)]", children: displayName }),
|
|
2992
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-[color:var(--muted)]", children: secondary })
|
|
2993
|
+
] }),
|
|
2994
|
+
/* @__PURE__ */ jsxRuntime.jsx(ChevronDown, {}),
|
|
2995
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "group-open/acct:hidden", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2996
|
+
TopBarTooltip,
|
|
3015
2997
|
{
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
/* @__PURE__ */ jsxRuntime.
|
|
3020
|
-
|
|
3021
|
-
|
|
2998
|
+
title: "My Account",
|
|
2999
|
+
description: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3000
|
+
hasRealName ? rawName : user?.email ?? "Signed in",
|
|
3001
|
+
user?.email ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
3002
|
+
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
3003
|
+
user.email
|
|
3004
|
+
] }) : null,
|
|
3005
|
+
/* @__PURE__ */ jsxRuntime.jsx("br", {}),
|
|
3006
|
+
"Profile, organizations, appearance and sign out."
|
|
3007
|
+
] })
|
|
3022
3008
|
}
|
|
3023
|
-
)
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3034
|
-
|
|
3035
|
-
|
|
3036
|
-
|
|
3037
|
-
|
|
3038
|
-
|
|
3009
|
+
) })
|
|
3010
|
+
] }),
|
|
3011
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute right-0 z-30 mt-2 flex max-h-[calc(100vh-5rem)] w-72 flex-col overflow-hidden rounded-xl border border-[color:var(--line)] bg-[color:var(--panel-elevated)] py-1 shadow-[var(--shadow-soft)]", children: [
|
|
3012
|
+
/* @__PURE__ */ jsxRuntime.jsx(TopBarPanelArrow, {}),
|
|
3013
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain", children: [
|
|
3014
|
+
userMenu?.myProfileHref ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3015
|
+
"a",
|
|
3016
|
+
{
|
|
3017
|
+
href: safeHref(userMenu.myProfileHref),
|
|
3018
|
+
className: "flex w-full items-center gap-2.5 px-4 py-2.5 text-left text-sm font-medium text-[color:var(--foreground)] hover:bg-[color:var(--panel)]",
|
|
3019
|
+
children: [
|
|
3020
|
+
/* @__PURE__ */ jsxRuntime.jsx(ProfileIcon, {}),
|
|
3021
|
+
"My Profile"
|
|
3022
|
+
]
|
|
3023
|
+
}
|
|
3024
|
+
) : null,
|
|
3025
|
+
userMenu?.organizationSettingsHref ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3026
|
+
"a",
|
|
3027
|
+
{
|
|
3028
|
+
href: safeHref(userMenu.organizationSettingsHref),
|
|
3029
|
+
className: "flex w-full items-center gap-2.5 border-t border-[color:var(--line)] px-4 py-2.5 text-left text-sm font-medium text-[color:var(--foreground)] hover:bg-[color:var(--panel)]",
|
|
3030
|
+
children: [
|
|
3031
|
+
/* @__PURE__ */ jsxRuntime.jsx(BriefcaseIcon, {}),
|
|
3032
|
+
"Organization Settings"
|
|
3033
|
+
]
|
|
3034
|
+
}
|
|
3035
|
+
) : null,
|
|
3036
|
+
userMenu?.roles && userMenu.roles.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-[color:var(--line)] px-4 py-3", children: [
|
|
3037
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--muted)]", children: "Roles & Organizations" }),
|
|
3038
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1.5", children: userMenu.roles.map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex flex-wrap items-center gap-1.5 text-sm", children: [
|
|
3039
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-md bg-[color:var(--panel)] px-2 py-0.5 text-xs font-bold uppercase tracking-wide text-[color:var(--foreground)]", children: r.role }),
|
|
3040
|
+
r.orgName ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-[color:var(--muted)]", children: [
|
|
3041
|
+
"in ",
|
|
3042
|
+
r.orgName
|
|
3043
|
+
] }) : null
|
|
3044
|
+
] }, `${r.role}-${i}`)) })
|
|
3045
|
+
] }) : null,
|
|
3046
|
+
userMenu?.accounts && userMenu.accounts.length > 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-t border-[color:var(--line)] px-4 py-3", children: [
|
|
3047
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-[11px] font-semibold uppercase tracking-[0.08em] text-[color:var(--muted)]", children: "Accounts" }),
|
|
3048
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "flex flex-col gap-1", children: userMenu.accounts.map((a) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center gap-2.5", children: [
|
|
3049
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3050
|
+
"button",
|
|
3051
|
+
{
|
|
3052
|
+
type: "button",
|
|
3053
|
+
onClick: () => {
|
|
3054
|
+
if (!a.active) userMenu.onSwitchAccount?.(a.id);
|
|
3055
|
+
},
|
|
3056
|
+
className: "flex min-w-0 flex-1 items-center gap-2.5 rounded-lg px-1 py-1 text-left hover:bg-[color:var(--panel)]",
|
|
3057
|
+
children: [
|
|
3058
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-8 w-8 shrink-0 items-center justify-center overflow-hidden rounded-full bg-[color:var(--color-accent)] text-[11px] font-bold text-white", children: a.avatarUrl ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: a.avatarUrl, alt: "", className: "h-full w-full object-cover" }) : (a.name ?? a.email ?? "?").slice(0, 2).toUpperCase() }),
|
|
3059
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 flex-col leading-tight", children: [
|
|
3060
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3061
|
+
"span",
|
|
3062
|
+
{
|
|
3063
|
+
className: [
|
|
3064
|
+
"truncate text-sm font-semibold",
|
|
3065
|
+
a.active ? "text-[color:var(--color-accent)]" : "text-[color:var(--foreground)]"
|
|
3066
|
+
].join(" "),
|
|
3067
|
+
children: a.name ?? a.email ?? a.id.slice(0, 8)
|
|
3068
|
+
}
|
|
3069
|
+
),
|
|
3070
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-[color:var(--muted)]", children: a.active ? "Active" : a.email ?? "" })
|
|
3071
|
+
] })
|
|
3072
|
+
]
|
|
3073
|
+
}
|
|
3074
|
+
),
|
|
3075
|
+
!a.active && userMenu.onRemoveAccount ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3076
|
+
"button",
|
|
3077
|
+
{
|
|
3078
|
+
type: "button",
|
|
3079
|
+
"aria-label": `Remove ${a.name ?? a.email ?? "account"}`,
|
|
3080
|
+
onClick: () => userMenu.onRemoveAccount?.(a.id),
|
|
3081
|
+
className: "shrink-0 rounded p-1 text-[color:var(--color-accent)] hover:bg-[color:var(--panel)]",
|
|
3082
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(TrashIcon, {})
|
|
3083
|
+
}
|
|
3084
|
+
) : null
|
|
3085
|
+
] }, a.id)) }),
|
|
3086
|
+
userMenu.addAccountHref || userMenu.onAddAccount ? userMenu.addAccountHref ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3087
|
+
"a",
|
|
3039
3088
|
{
|
|
3040
|
-
|
|
3041
|
-
|
|
3042
|
-
if (!a.active) userMenu.onSwitchAccount?.(a.id);
|
|
3043
|
-
},
|
|
3044
|
-
className: "flex min-w-0 flex-1 items-center gap-2.5 rounded-lg px-1 py-1 text-left hover:bg-[color:var(--panel)]",
|
|
3089
|
+
href: safeHref(userMenu.addAccountHref),
|
|
3090
|
+
className: "mt-1.5 flex items-center gap-2.5 rounded-lg px-1 py-1.5 text-sm font-semibold text-[color:var(--color-accent)] hover:bg-[color:var(--panel)]",
|
|
3045
3091
|
children: [
|
|
3046
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3047
|
-
|
|
3048
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3049
|
-
"span",
|
|
3050
|
-
{
|
|
3051
|
-
className: [
|
|
3052
|
-
"truncate text-sm font-semibold",
|
|
3053
|
-
a.active ? "text-[color:var(--color-accent)]" : "text-[color:var(--foreground)]"
|
|
3054
|
-
].join(" "),
|
|
3055
|
-
children: a.name ?? a.email ?? a.id.slice(0, 8)
|
|
3056
|
-
}
|
|
3057
|
-
),
|
|
3058
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-[color:var(--muted)]", children: a.active ? "Active" : a.email ?? "" })
|
|
3059
|
-
] })
|
|
3092
|
+
/* @__PURE__ */ jsxRuntime.jsx(AddUserIcon, {}),
|
|
3093
|
+
"Add Account"
|
|
3060
3094
|
]
|
|
3061
3095
|
}
|
|
3062
|
-
)
|
|
3063
|
-
!a.active && userMenu.onRemoveAccount ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
3096
|
+
) : /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3064
3097
|
"button",
|
|
3065
3098
|
{
|
|
3066
3099
|
type: "button",
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3100
|
+
onClick: userMenu.onAddAccount,
|
|
3101
|
+
className: "mt-1.5 flex w-full items-center gap-2.5 rounded-lg px-1 py-1.5 text-left text-sm font-semibold text-[color:var(--color-accent)] hover:bg-[color:var(--panel)]",
|
|
3102
|
+
children: [
|
|
3103
|
+
/* @__PURE__ */ jsxRuntime.jsx(AddUserIcon, {}),
|
|
3104
|
+
"Add Account"
|
|
3105
|
+
]
|
|
3071
3106
|
}
|
|
3072
3107
|
) : null
|
|
3073
|
-
] }
|
|
3074
|
-
userMenu
|
|
3075
|
-
|
|
3108
|
+
] }) : null,
|
|
3109
|
+
userMenu?.theme ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-[color:var(--line)]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3110
|
+
NavThemeControl,
|
|
3076
3111
|
{
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
children: [
|
|
3080
|
-
/* @__PURE__ */ jsxRuntime.jsx(AddUserIcon, {}),
|
|
3081
|
-
"Add Account"
|
|
3082
|
-
]
|
|
3112
|
+
value: userMenu.theme.value,
|
|
3113
|
+
onChange: userMenu.theme.onChange
|
|
3083
3114
|
}
|
|
3084
|
-
) :
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
onClick: userMenu.onAddAccount,
|
|
3089
|
-
className: "mt-1.5 flex w-full items-center gap-2.5 rounded-lg px-1 py-1.5 text-left text-sm font-semibold text-[color:var(--color-accent)] hover:bg-[color:var(--panel)]",
|
|
3090
|
-
children: [
|
|
3091
|
-
/* @__PURE__ */ jsxRuntime.jsx(AddUserIcon, {}),
|
|
3092
|
-
"Add Account"
|
|
3093
|
-
]
|
|
3094
|
-
}
|
|
3095
|
-
) : null
|
|
3096
|
-
] }) : null,
|
|
3097
|
-
userMenu?.theme ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "border-t border-[color:var(--line)]", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3098
|
-
NavThemeControl,
|
|
3115
|
+
) }) : null
|
|
3116
|
+
] }),
|
|
3117
|
+
onSignOut ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3118
|
+
"button",
|
|
3099
3119
|
{
|
|
3100
|
-
|
|
3101
|
-
|
|
3120
|
+
type: "button",
|
|
3121
|
+
onClick: onSignOut,
|
|
3122
|
+
className: "flex w-full shrink-0 items-center gap-2.5 border-t border-[color:var(--line)] px-4 py-2.5 text-left text-sm font-medium text-[color:var(--foreground)] hover:bg-[color:var(--panel)] hover:text-[color:var(--color-accent)]",
|
|
3123
|
+
children: [
|
|
3124
|
+
/* @__PURE__ */ jsxRuntime.jsx(SignOutIcon, {}),
|
|
3125
|
+
"Sign out"
|
|
3126
|
+
]
|
|
3102
3127
|
}
|
|
3103
|
-
)
|
|
3104
|
-
] })
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
!hasRealName && user ? /* @__PURE__ */ jsxRuntime.jsx(NamePromptBubble, { profileHref: userMenu?.myProfileHref }) : null
|
|
3120
|
-
] })
|
|
3128
|
+
) : null
|
|
3129
|
+
] })
|
|
3130
|
+
] }),
|
|
3131
|
+
!hasRealName && user ? /* @__PURE__ */ jsxRuntime.jsx(NamePromptBubble, { profileHref: userMenu?.myProfileHref }) : null
|
|
3132
|
+
] })
|
|
3133
|
+
] }),
|
|
3134
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3135
|
+
"div",
|
|
3136
|
+
{
|
|
3137
|
+
"aria-hidden": true,
|
|
3138
|
+
className: "h-[3px] w-full shrink-0",
|
|
3139
|
+
style: {
|
|
3140
|
+
background: "var(--chrome-gradient, linear-gradient(to right, #007BFF, #A54B7A, #E63946))"
|
|
3141
|
+
}
|
|
3142
|
+
}
|
|
3143
|
+
)
|
|
3121
3144
|
] });
|
|
3122
3145
|
}
|
|
3123
3146
|
function NamePromptBubble({ profileHref }) {
|
|
@@ -3381,7 +3404,22 @@ function NavAppShell({
|
|
|
3381
3404
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "lg:pl-[240px]", children: [
|
|
3382
3405
|
/* @__PURE__ */ jsxRuntime.jsx(NavTopBar, { ...topBar, onOpenNav: () => setNavOpen(true), navOpen }),
|
|
3383
3406
|
betaBanner ? /* @__PURE__ */ jsxRuntime.jsx(NavBetaBanner, { ...betaBanner }) : null,
|
|
3384
|
-
|
|
3407
|
+
topBar.title ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "px-6 pt-7 text-xl font-semibold text-[color:var(--foreground)]", children: topBar.title }) : null,
|
|
3408
|
+
contentWrapper === "bare" ? /* @__PURE__ */ jsxRuntime.jsx("div", { "data-shell-content": "", className: topBar.title ? "mt-[22px]" : void 0, children }) : (
|
|
3409
|
+
// Claude Design: "a rounded, inset frame on a light-grey page
|
|
3410
|
+
// background" — the shell owns the page background and the
|
|
3411
|
+
// gutter; it does not draw a hard border/box around the content
|
|
3412
|
+
// (that reads as a second frame on top of the page header). An
|
|
3413
|
+
// app's own cards are its own furniture and stay app-owned.
|
|
3414
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3415
|
+
"main",
|
|
3416
|
+
{
|
|
3417
|
+
"data-shell-content": "",
|
|
3418
|
+
className: `min-h-[calc(100vh-63px)] bg-[color:var(--chrome-page-bg,#F4F5F7)] px-6 ${topBar.title ? "pb-7 pt-[22px]" : "py-7"}`,
|
|
3419
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto max-w-7xl", children })
|
|
3420
|
+
}
|
|
3421
|
+
)
|
|
3422
|
+
)
|
|
3385
3423
|
] })
|
|
3386
3424
|
]
|
|
3387
3425
|
}
|
|
@@ -4314,7 +4352,7 @@ function FrameBody({
|
|
|
4314
4352
|
footer,
|
|
4315
4353
|
linkComponent
|
|
4316
4354
|
},
|
|
4317
|
-
betaBanner: meta.beta ===
|
|
4355
|
+
betaBanner: meta.beta === true ? {} : void 0,
|
|
4318
4356
|
modeId: appMode,
|
|
4319
4357
|
contentWrapper: core?.contentWrapper ?? granted("contentWrapper"),
|
|
4320
4358
|
topBar: {
|