@anthusai/papyrus 5.43.0-next.13 → 5.43.0-next.15
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/bin/papyrus-app.mjs
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
2
3
|
import { sync } from "../src/sync.mjs";
|
|
3
4
|
|
|
4
5
|
const [command, ...rest] = process.argv.slice(2);
|
|
5
6
|
if (command === "sync") {
|
|
6
7
|
sync();
|
|
8
|
+
} else if (command === "brand" && rest[0] === "diff") {
|
|
9
|
+
const { brandDiff } = await import("../src/brand.mjs");
|
|
10
|
+
const flag = rest.indexOf("--papyrus");
|
|
11
|
+
const checkout = flag === -1 ? undefined : rest[flag + 1];
|
|
12
|
+
try {
|
|
13
|
+
process.exit(brandDiff({ id: rest[1], checkout: checkout && path.resolve(checkout) }).drifted ? 1 : 0);
|
|
14
|
+
} catch (error) {
|
|
15
|
+
console.error(error.message);
|
|
16
|
+
process.exit(2);
|
|
17
|
+
}
|
|
7
18
|
} else if (command === "videoml-bundle") {
|
|
8
19
|
const preview = rest.includes("--preview");
|
|
9
20
|
const { buildBrowserBundle } = await import("../scripts/videoml/build-browser-bundle.mjs");
|
|
@@ -15,6 +26,6 @@ if (command === "sync") {
|
|
|
15
26
|
process.exit(1);
|
|
16
27
|
}
|
|
17
28
|
} else {
|
|
18
|
-
console.error("Usage: papyrus-app sync | papyrus-app videoml-bundle [--preview]");
|
|
29
|
+
console.error("Usage: papyrus-app sync | papyrus-app brand diff <brand-id> [--papyrus <checkout>] | papyrus-app videoml-bundle [--preview]");
|
|
19
30
|
process.exit(command ? 1 : 0);
|
|
20
31
|
}
|
|
@@ -143,6 +143,8 @@ export function NewsroomOpsShell({ activeTab, appTitle, backHref = "/", backLabe
|
|
|
143
143
|
media.addEventListener("change", change);
|
|
144
144
|
return () => { document.removeEventListener("focusin", remember); media.removeEventListener("change", change); cancelAnimationFrame(frame); };
|
|
145
145
|
}, []);
|
|
146
|
+
// The mobile top bar prefers the brand's compact mark, then scales the full logo; the serif title is the no-logo fallback.
|
|
147
|
+
const MastheadLogo = SITE_BRAND.components?.NewsroomLogoCompact ?? SITE_BRAND.components?.NewsroomLogo;
|
|
146
148
|
const activePath = browserPathToInternalNewsroomPath(pathname ?? "/newsroom");
|
|
147
149
|
const sidebarToggleLabel = collapsed ? "Expand sidebar" : "Collapse sidebar";
|
|
148
150
|
const sidebarToggle = <button type="button" className="organizer-toggle" title={sidebarToggleLabel}
|
|
@@ -162,7 +164,7 @@ export function NewsroomOpsShell({ activeTab, appTitle, backHref = "/", backLabe
|
|
|
162
164
|
<div className="organizer-workspace">
|
|
163
165
|
<header className="organizer-topbar" data-newsroom-ops-topbar>
|
|
164
166
|
{showNavigation && collapsed && sidebarToggle}
|
|
165
|
-
<Link className="organizer-masthead" href={backHref} title={backLabel}>{appTitle}</Link>
|
|
167
|
+
<Link className="organizer-masthead" href={backHref} title={backLabel}>{MastheadLogo ? <MastheadLogo className="organizer-masthead-logo" /> : appTitle}</Link>
|
|
166
168
|
<h1 data-newsroom-ops-title>{pageTitle}</h1><OrganizerSearch demo={demo} /><div className="organizer-header-actions">{headerActions}</div><Account placement="header" />
|
|
167
169
|
</header>
|
|
168
170
|
<main className="organizer-main">{demo && !session?.shell.dashboard?.realDataPreview && <p className="organizer-demo-notice">Demo workspace · synthetic examples</p>}{children}</main>
|
|
@@ -18,6 +18,7 @@ body:has(.newsroom-organizer)>[data-staging-banner]{flex-shrink:0}
|
|
|
18
18
|
.organizer-workspace{display:flex;flex-direction:column;min-height:0;min-width:0;overflow:hidden;padding:0 16px}
|
|
19
19
|
.organizer-topbar{height:48px;min-height:48px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--org-line)}
|
|
20
20
|
.organizer-masthead{font:900 28px var(--font-wordmark),Georgia,serif;white-space:nowrap;max-width:30vw;overflow:hidden;text-overflow:ellipsis}
|
|
21
|
+
.organizer-masthead-logo{display:block;height:24px;width:auto;max-width:36vw;overflow:visible}
|
|
21
22
|
.organizer-topbar h1{font:400 12px var(--kb-theme-ui-font);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}
|
|
22
23
|
.organizer-toggle{display:flex;align-items:center;justify-content:center;width:36px;min-height:36px;padding:0;border:1px solid var(--org-line);flex-shrink:0}
|
|
23
24
|
.organizer-sidebar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.organizer-sidebar-head .organizer-brand{flex:1;min-width:0}
|
package/lib/site-brand.ts
CHANGED
|
@@ -26,6 +26,8 @@ export type SiteBrandId = string;
|
|
|
26
26
|
export type SiteBrandComponents = {
|
|
27
27
|
/** The mark shown at the top of the newsroom CMS sidebar in place of the app title. */
|
|
28
28
|
NewsroomLogo?: ComponentType<{ className?: string }>;
|
|
29
|
+
/** A compact mark for the mobile newsroom top bar. Without it the bar scales down `NewsroomLogo`. */
|
|
30
|
+
NewsroomLogoCompact?: ComponentType<{ className?: string }>;
|
|
29
31
|
PictogramFigure?: ComponentType<PictogramFigureProps>;
|
|
30
32
|
BlogPageBackground?: ComponentType<BlogPageBackgroundProps>;
|
|
31
33
|
};
|
package/package.json
CHANGED
package/routes.manifest.json
CHANGED