@the-portland-company/shell 0.76.18 → 0.78.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.
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { S as StandardNavIconKey, f as NavIcon, N as NavItem, g as NavBreadcrumb, h as StandardNavMode, i as NavLinkComponent, j as NavChromeFetcher, k as NavMode, l as NavUserMenu, m as NavOrgOption, b as NotificationsAdapter, o as NavFooter, p as NavDisplayMode } from './index-Cu5frXRQ.cjs';
3
+ import { S as StandardNavIconKey, f as NavIcon, N as NavItem, g as NavBreadcrumb, h as StandardNavMode, i as NavLinkComponent, j as NavChromeFetcher, k as NavMode, l as NavUserMenu, m as NavOrgOption, b as NotificationsAdapter, o as NavFooter, p as NavDisplayMode } from './index-fydj5EU2.cjs';
4
4
  import './theme-preference.cjs';
5
5
 
6
6
  /**
@@ -89,7 +89,7 @@ type LoadingScreenProps = {
89
89
  declare function LoadingScreen({ bootProgress, syntheticReady, visible, onExitComplete, }: LoadingScreenProps): react_jsx_runtime.JSX.Element | null;
90
90
 
91
91
  /** Every app that renders the shared chrome. Keyed by its subdomain. */
92
- type PolitogyAppKey = 'vrm' | 'contacts' | 'forms' | 'surveys' | 'polls' | 'petitions' | 'dashboard' | 'settings' | 'email' | 'a2p' | 'phonebank' | 'canvass' | 'signs' | 'ctas';
92
+ type PolitogyAppKey = 'vrm' | 'contacts' | 'forms' | 'surveys' | 'polls' | 'petitions' | 'dashboard' | 'settings' | 'battleground' | 'districts' | 'email' | 'a2p' | 'phonebank' | 'canvass' | 'signs' | 'ctas';
93
93
  /**
94
94
  * The operating Mode an app is scoped to, if any. It drives two things,
95
95
  * BOTH derived here from app identity so no app passes chrome config:
@@ -201,7 +201,7 @@ type PolitogyFrameData = {
201
201
  count?: string | number | null;
202
202
  };
203
203
  /**
204
- * Top-level standard-nav rows to omit, by label (e.g. `['Polls', 'CTAs']`).
204
+ * Top-level standard-nav rows to omit, by label (e.g. `['Forms', 'Surveys']`).
205
205
  * The Specs/Contacts design rail shows exactly Dashboard · Contacts · Email
206
206
  * broadcast · SMS/MMS blast / Calls to action · Forms · Surveys / My profile
207
207
  * · Organization settings. Default: nothing hidden.
@@ -501,8 +501,8 @@ declare function useChromeIdentity(fallback?: {
501
501
 
502
502
  /**
503
503
  * The My Account menu config — profile/org links into VRM core, real roles
504
- * from the user's core organizations, the signed-in account, and the shared
505
- * Light/System/Dark theme control (auth-derived, cross-app).
504
+ * from the user's core organizations and the signed-in account. No theme
505
+ * control: the product is light only (Reference/UI-Platform).
506
506
  */
507
507
  declare function useChromeUserMenu({ userId, userName, email, }: {
508
508
  userId: string;
@@ -1,6 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
- import { S as StandardNavIconKey, f as NavIcon, N as NavItem, g as NavBreadcrumb, h as StandardNavMode, i as NavLinkComponent, j as NavChromeFetcher, k as NavMode, l as NavUserMenu, m as NavOrgOption, b as NotificationsAdapter, o as NavFooter, p as NavDisplayMode } from './index-DJ3qBzfQ.js';
3
+ import { S as StandardNavIconKey, f as NavIcon, N as NavItem, g as NavBreadcrumb, h as StandardNavMode, i as NavLinkComponent, j as NavChromeFetcher, k as NavMode, l as NavUserMenu, m as NavOrgOption, b as NotificationsAdapter, o as NavFooter, p as NavDisplayMode } from './index-KGYMc_1i.js';
4
4
  import './theme-preference.js';
5
5
 
6
6
  /**
@@ -89,7 +89,7 @@ type LoadingScreenProps = {
89
89
  declare function LoadingScreen({ bootProgress, syntheticReady, visible, onExitComplete, }: LoadingScreenProps): react_jsx_runtime.JSX.Element | null;
90
90
 
91
91
  /** Every app that renders the shared chrome. Keyed by its subdomain. */
92
- type PolitogyAppKey = 'vrm' | 'contacts' | 'forms' | 'surveys' | 'polls' | 'petitions' | 'dashboard' | 'settings' | 'email' | 'a2p' | 'phonebank' | 'canvass' | 'signs' | 'ctas';
92
+ type PolitogyAppKey = 'vrm' | 'contacts' | 'forms' | 'surveys' | 'polls' | 'petitions' | 'dashboard' | 'settings' | 'battleground' | 'districts' | 'email' | 'a2p' | 'phonebank' | 'canvass' | 'signs' | 'ctas';
93
93
  /**
94
94
  * The operating Mode an app is scoped to, if any. It drives two things,
95
95
  * BOTH derived here from app identity so no app passes chrome config:
@@ -201,7 +201,7 @@ type PolitogyFrameData = {
201
201
  count?: string | number | null;
202
202
  };
203
203
  /**
204
- * Top-level standard-nav rows to omit, by label (e.g. `['Polls', 'CTAs']`).
204
+ * Top-level standard-nav rows to omit, by label (e.g. `['Forms', 'Surveys']`).
205
205
  * The Specs/Contacts design rail shows exactly Dashboard · Contacts · Email
206
206
  * broadcast · SMS/MMS blast / Calls to action · Forms · Surveys / My profile
207
207
  * · Organization settings. Default: nothing hidden.
@@ -501,8 +501,8 @@ declare function useChromeIdentity(fallback?: {
501
501
 
502
502
  /**
503
503
  * The My Account menu config — profile/org links into VRM core, real roles
504
- * from the user's core organizations, the signed-in account, and the shared
505
- * Light/System/Dark theme control (auth-derived, cross-app).
504
+ * from the user's core organizations and the signed-in account. No theme
505
+ * control: the product is light only (Reference/UI-Platform).
506
506
  */
507
507
  declare function useChromeUserMenu({ userId, userName, email, }: {
508
508
  userId: string;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { broadcastLogout, watchLogout } from './chunk-LL6LSJAH.js';
3
- import { clearBetaBannerDismissal, standardPolitogyNav, standardNavIcons, isNavItemActive, NavAppShell } from './chunk-GGM4AD43.js';
4
- export { standardNavIcons } from './chunk-GGM4AD43.js';
5
- import { warnDeprecated, NavChromeProvider, TopBarWidgetSlot, FuelAction, SpecOverlayAction, NotificationsAction, SupportAction, useChromeMe, useThemePreference, useNavChromeDedupedFetch, useChromeOrgs, useNavChromeFetcher } from './chunk-TUK2IEL5.js';
3
+ import { clearBetaBannerDismissal, standardPolitogyNav, standardNavIcons, isNavItemActive, NavAppShell } from './chunk-FUEIKJLN.js';
4
+ export { standardNavIcons } from './chunk-FUEIKJLN.js';
5
+ import { warnDeprecated, NavChromeProvider, TopBarWidgetSlot, FuelAction, SpecOverlayAction, NotificationsAction, SupportAction, useChromeMe, useNavChromeDedupedFetch, useChromeOrgs, useNavChromeFetcher } from './chunk-TUK2IEL5.js';
6
6
  import './chunk-BHRVZPZ7.js';
7
7
  import { NAV_DISPLAY_DEFAULT, resolveNavDisplay, writeNavDisplayLocal, writeNavDisplayCookie, isNavDisplayPreference, NAV_DISPLAY_STORAGE_KEY, readNavDisplayCookie } from './chunk-7YVJ7HQG.js';
8
8
  import { readOrgSelectorFromUrl, matchOrgSelector, isOrgId, switchActiveOrg, ACTIVE_ORG_QUERY_PARAM, ORG_ID_QUERY_PARAM, orgIdTail, syncOrgIdInUrl, writeActiveOrgCookie, resolveActiveOrg, readActiveOrgCookie } from './chunk-FBUF7LUE.js';
@@ -538,11 +538,23 @@ var POLITOGY_APPS = {
538
538
  polls: { title: "Polls", origin: "https://polls.politogyvrm.com", storagePrefix: "polls", mode: "campaign", grants: ["title"] },
539
539
  ctas: { title: "CTAs", origin: "https://ctas.politogyvrm.com", storagePrefix: "ctas", grants: ["title"] },
540
540
  // V2 apps that replace retired app.politogyvrm.com pages (Reference/
541
- // UI-Platform v42 "Retirement of app.politogyvrm.com"). Dashboard hosts the
542
- // Relationship Dashboard + Campaign Battleground/District data/Campaigns
543
- // (Specs/Relationship-Dashboard); Settings hosts org settings & billing
544
- // (Specs/Organization-Settings).
541
+ // UI-Platform v42 "Retirement of app.politogyvrm.com"). Dashboard is the
542
+ // Relationship Dashboard, the Relationship Mode landing page, and nothing
543
+ // else (Specs/Relationship-Dashboard §1A "Relationship Mode only"); Settings
544
+ // hosts org settings & billing (Specs/Organization-Settings).
545
545
  dashboard: { title: "Dashboard", origin: "https://dashboard.politogyvrm.com", storagePrefix: "dashboard" },
546
+ // Battleground (the Campaign Mode landing page) and District Data are
547
+ // Campaign Mode features, each its own app (Specs/Left-Navigation §9.2;
548
+ // Reference/UI-Platform, decided 2026-10-12). They are never rendered with
549
+ // `app="dashboard"`: that frame is the Relationship rail, which is how they
550
+ // came to show inside Relationship Mode. Their hosts are decided
551
+ // (UI-Platform, 2026-10-12): battleground.politogyvrm.com and
552
+ // districts.politogyvrm.com. Neither is live yet, so the pages are still
553
+ // served from the dashboard deployment and the origin below is that host.
554
+ // When a host goes live, change its origin here and its row's href in
555
+ // standardNav in the same release.
556
+ battleground: { title: "Battleground", origin: "https://dashboard.politogyvrm.com", storagePrefix: "battleground", mode: "campaign" },
557
+ districts: { title: "District Data", origin: "https://dashboard.politogyvrm.com", storagePrefix: "districts", mode: "campaign" },
546
558
  settings: { title: "Settings", origin: "https://settings.politogyvrm.com", storagePrefix: "settings" },
547
559
  petitions: {
548
560
  title: "Petitions",
@@ -1404,7 +1416,6 @@ function useChromeUserMenu({
1404
1416
  email
1405
1417
  }) {
1406
1418
  const state = useChromeState();
1407
- const theme = useThemePreference();
1408
1419
  const activeOrg = state?.orgs.find((o) => o.id === state.orgId) ?? null;
1409
1420
  const orgSuffix = activeOrg ? `?org=${activeOrg.id}` : "";
1410
1421
  const coreBase = getCoreBaseUrl();
@@ -1415,7 +1426,9 @@ function useChromeUserMenu({
1415
1426
  roles: (state?.orgs ?? []).filter((o) => o.rawRole || o.role).map((o) => ({ role: o.rawRole ?? o.role, orgName: o.name })),
1416
1427
  accounts: [{ id: userId, name: userName, email, avatarUrl: null, active: true }],
1417
1428
  addAccountHref: `${coreBase}/my-profile#accounts`,
1418
- theme: { value: theme.value, onChange: theme.setValue },
1429
+ // No theme control: the product is light only (Reference/UI-Platform
1430
+ // "Theme — light only"; shell 0.73.0 stopped applying dark). The account
1431
+ // menu rendered an "Appearance" radio with one option until 0.77.0.
1419
1432
  navDisplay: state ? { value: state.navDisplay, onChange: state.setNavDisplay } : void 0
1420
1433
  };
1421
1434
  }