@the-portland-company/shell 0.97.1 → 0.98.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.
@@ -78,6 +78,21 @@ declare function RowMenuItem({ onSelect, disabled, danger, className, style, chi
78
78
  children: ReactNode;
79
79
  }): react_jsx_runtime.JSX.Element;
80
80
 
81
+ type VrmVerifiedTier = 'verified' | 'identified' | 'anonymous' | 'stale' | 'inactive';
82
+ declare const VRM_VERIFIED_TOOLTIP = "Politogy has confirmed this is a real, registered voter.";
83
+ declare const VRM_TIER_LABELS: Record<VrmVerifiedTier, string>;
84
+ interface VrmVerifiedBadgeProps {
85
+ /** The person's tier; null draws "Not yet computed". */
86
+ tier: VrmVerifiedTier | null | undefined;
87
+ /** Icon / dot size in px. Default 16 (icon) / 8 (dot). */
88
+ size?: number;
89
+ /** Show the tier name beside the mark. Default true. */
90
+ showLabel?: boolean;
91
+ className?: string;
92
+ style?: CSSProperties;
93
+ }
94
+ declare function VrmVerifiedBadge({ tier, size, showLabel, className, style }: VrmVerifiedBadgeProps): react_jsx_runtime.JSX.Element;
95
+
81
96
  type FormColumnProps = {
82
97
  children: ReactNode;
83
98
  className?: string;
@@ -1288,4 +1303,4 @@ type NavAppShellProps = {
1288
1303
  };
1289
1304
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1290
1305
 
1291
- export { type CreditHealthState as $, AI_CREDITS_STATE_TITLES as A, type BreadcrumbBarProps as B, Card as C, BETA_BANNER_DISMISS_KEY as D, BreadcrumbBar as E, FormColumn as F, CAMPAIGN_FEATURE_AVAILABILITY as G, HeaderTabBar as H, CORE_APP_ORIGIN as I, CORE_BILLING_PATH as J, KNOWN_TAB_GLYPHS as K, CREDIT_TYPE_LABELS as L, CREDIT_TYPE_ORDER as M, type NavItem as N, type CampaignFeatureAvailability as O, type PageHeaderProps as P, type ChromeMe as Q, RowMenu as R, type StandardNavIconKey as S, type TabGlyphComponent as T, type ChromeNotificationAlert as U, type ChromeNotificationImport as V, type ChromeNotificationQuarantine as W, type ChromeNotificationReply as X, type ChromeNotificationsPayload as Y, type ChromeOrgSummary as Z, type CommunicationsFuelStatus as _, AiCreditsState as a, useNavChromeFetcher as a$, type CreditTypeKey as a0, CreditsAction as a1, type CreditsIconState as a2, FuelAction as a3, type FuelChannelStatus as a4, MyProfileAction as a5, NavAppShell as a6, type NavAppShellProps as a7, NavBetaBanner as a8, type NavBetaBannerProps as a9, type ThemePreference as aA, TopBarCountBadge as aB, type TopBarIconTone as aC, TopBarLinkAction as aD, type TopBarLinkActionProps as aE, TopBarPanelArrow as aF, TopBarPopover as aG, TopBarTooltip as aH, TopBarWidgetSlot as aI, buildLineParts as aJ, clearBetaBannerDismissal as aK, creditGaugeRatio as aL, creditStateWord as aM, creditTooltipLine as aN, creditsAriaLabel as aO, creditsIconState as aP, envChipClasses as aQ, isNavItemActive as aR, modeIdFromLabel as aS, resolveOrgLogoUrl as aT, shortEnvLabel as aU, shortUserName as aV, standardPolitogyNav as aW, topBarIconButtonClass as aX, useChromeMe as aY, useChromeOrgs as aZ, useNavChromeDedupedFetch as a_, type NavBrand as aa, NavChromeProvider as ab, NavDisplayAction as ac, type NavLinkProps as ad, type NavLinkedAccount as ae, type NavModeOption as af, type NavOrg as ag, type NavRoleBadge as ah, NavSidebar as ai, type NavSidebarProps as aj, type NavTab as ak, NavTabStrip as al, type NavTabStripProps as am, NavThemeControl as an, NavTopBar as ao, type NavTopBarAction as ap, type NavTopBarProps as aq, type NavUser as ar, NotificationsAction as as, OrganizationSettingsAction as at, PageHeader as au, type PageHeaderMode as av, SPECS_ORIGIN as aw, SpecOverlayAction as ax, type StandardNavOptions as ay, SupportAction as az, type AiCreditsStateKind as b, useThemePreference as b0, type CommsNotification as c, type CommsNotificationKind as d, type HeaderTabBarItem as e, type NotificationsAdapter as f, type NotificationsFeed as g, RowMenuItem as h, type RowMenuPlacement as i, aiCreditsWalletUrl as j, createCommsNotificationsAdapter as k, emptyNotificationsFeed as l, rowMenuPosition as m, normalizeNotificationsFeed as n, type NavIcon as o, type NavBreadcrumb as p, type StandardNavMode as q, resolveTabGlyph as r, type NavLinkComponent as s, type NavChromeFetcher as t, type NavMode as u, type NavUserMenu as v, type NavOrgOption as w, type NavFooterLink as x, type NavFooter as y, type NavDisplayMode as z };
1306
+ export { type ChromeNotificationQuarantine as $, AI_CREDITS_STATE_TITLES as A, type BreadcrumbBarProps as B, Card as C, type NavOrgOption as D, type NavFooterLink as E, FormColumn as F, type NavFooter as G, HeaderTabBar as H, type NavDisplayMode as I, BETA_BANNER_DISMISS_KEY as J, KNOWN_TAB_GLYPHS as K, BreadcrumbBar as L, CAMPAIGN_FEATURE_AVAILABILITY as M, type NavItem as N, CORE_APP_ORIGIN as O, type PageHeaderProps as P, CORE_BILLING_PATH as Q, RowMenu as R, type StandardNavIconKey as S, type TabGlyphComponent as T, CREDIT_TYPE_LABELS as U, VRM_TIER_LABELS as V, CREDIT_TYPE_ORDER as W, type CampaignFeatureAvailability as X, type ChromeMe as Y, type ChromeNotificationAlert as Z, type ChromeNotificationImport as _, AiCreditsState as a, standardPolitogyNav as a$, type ChromeNotificationReply as a0, type ChromeNotificationsPayload as a1, type ChromeOrgSummary as a2, type CommunicationsFuelStatus as a3, type CreditHealthState as a4, type CreditTypeKey as a5, CreditsAction as a6, type CreditsIconState as a7, FuelAction as a8, type FuelChannelStatus as a9, type PageHeaderMode as aA, SPECS_ORIGIN as aB, SpecOverlayAction as aC, type StandardNavOptions as aD, SupportAction as aE, type ThemePreference as aF, TopBarCountBadge as aG, type TopBarIconTone as aH, TopBarLinkAction as aI, type TopBarLinkActionProps as aJ, TopBarPanelArrow as aK, TopBarPopover as aL, TopBarTooltip as aM, TopBarWidgetSlot as aN, buildLineParts as aO, clearBetaBannerDismissal as aP, creditGaugeRatio as aQ, creditStateWord as aR, creditTooltipLine as aS, creditsAriaLabel as aT, creditsIconState as aU, envChipClasses as aV, isNavItemActive as aW, modeIdFromLabel as aX, resolveOrgLogoUrl as aY, shortEnvLabel as aZ, shortUserName as a_, MyProfileAction as aa, NavAppShell as ab, type NavAppShellProps as ac, NavBetaBanner as ad, type NavBetaBannerProps as ae, type NavBrand as af, NavChromeProvider as ag, NavDisplayAction as ah, type NavLinkProps as ai, type NavLinkedAccount as aj, type NavModeOption as ak, type NavOrg as al, type NavRoleBadge as am, NavSidebar as an, type NavSidebarProps as ao, type NavTab as ap, NavTabStrip as aq, type NavTabStripProps as ar, NavThemeControl as as, NavTopBar as at, type NavTopBarAction as au, type NavTopBarProps as av, type NavUser as aw, NotificationsAction as ax, OrganizationSettingsAction as ay, PageHeader as az, type AiCreditsStateKind as b, topBarIconButtonClass as b0, useChromeMe as b1, useChromeOrgs as b2, useNavChromeDedupedFetch as b3, useNavChromeFetcher as b4, useThemePreference as b5, type CommsNotification as c, type CommsNotificationKind as d, type HeaderTabBarItem as e, type NotificationsAdapter as f, type NotificationsFeed as g, RowMenuItem as h, type RowMenuPlacement as i, VRM_VERIFIED_TOOLTIP as j, VrmVerifiedBadge as k, type VrmVerifiedBadgeProps as l, type VrmVerifiedTier as m, aiCreditsWalletUrl as n, createCommsNotificationsAdapter as o, emptyNotificationsFeed as p, normalizeNotificationsFeed as q, resolveTabGlyph as r, rowMenuPosition as s, type NavIcon as t, type NavBreadcrumb as u, type StandardNavMode as v, type NavLinkComponent as w, type NavChromeFetcher as x, type NavMode as y, type NavUserMenu as z };
@@ -78,6 +78,21 @@ declare function RowMenuItem({ onSelect, disabled, danger, className, style, chi
78
78
  children: ReactNode;
79
79
  }): react_jsx_runtime.JSX.Element;
80
80
 
81
+ type VrmVerifiedTier = 'verified' | 'identified' | 'anonymous' | 'stale' | 'inactive';
82
+ declare const VRM_VERIFIED_TOOLTIP = "Politogy has confirmed this is a real, registered voter.";
83
+ declare const VRM_TIER_LABELS: Record<VrmVerifiedTier, string>;
84
+ interface VrmVerifiedBadgeProps {
85
+ /** The person's tier; null draws "Not yet computed". */
86
+ tier: VrmVerifiedTier | null | undefined;
87
+ /** Icon / dot size in px. Default 16 (icon) / 8 (dot). */
88
+ size?: number;
89
+ /** Show the tier name beside the mark. Default true. */
90
+ showLabel?: boolean;
91
+ className?: string;
92
+ style?: CSSProperties;
93
+ }
94
+ declare function VrmVerifiedBadge({ tier, size, showLabel, className, style }: VrmVerifiedBadgeProps): react_jsx_runtime.JSX.Element;
95
+
81
96
  type FormColumnProps = {
82
97
  children: ReactNode;
83
98
  className?: string;
@@ -1288,4 +1303,4 @@ type NavAppShellProps = {
1288
1303
  };
1289
1304
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1290
1305
 
1291
- export { type CreditHealthState as $, AI_CREDITS_STATE_TITLES as A, type BreadcrumbBarProps as B, Card as C, BETA_BANNER_DISMISS_KEY as D, BreadcrumbBar as E, FormColumn as F, CAMPAIGN_FEATURE_AVAILABILITY as G, HeaderTabBar as H, CORE_APP_ORIGIN as I, CORE_BILLING_PATH as J, KNOWN_TAB_GLYPHS as K, CREDIT_TYPE_LABELS as L, CREDIT_TYPE_ORDER as M, type NavItem as N, type CampaignFeatureAvailability as O, type PageHeaderProps as P, type ChromeMe as Q, RowMenu as R, type StandardNavIconKey as S, type TabGlyphComponent as T, type ChromeNotificationAlert as U, type ChromeNotificationImport as V, type ChromeNotificationQuarantine as W, type ChromeNotificationReply as X, type ChromeNotificationsPayload as Y, type ChromeOrgSummary as Z, type CommunicationsFuelStatus as _, AiCreditsState as a, useNavChromeFetcher as a$, type CreditTypeKey as a0, CreditsAction as a1, type CreditsIconState as a2, FuelAction as a3, type FuelChannelStatus as a4, MyProfileAction as a5, NavAppShell as a6, type NavAppShellProps as a7, NavBetaBanner as a8, type NavBetaBannerProps as a9, type ThemePreference as aA, TopBarCountBadge as aB, type TopBarIconTone as aC, TopBarLinkAction as aD, type TopBarLinkActionProps as aE, TopBarPanelArrow as aF, TopBarPopover as aG, TopBarTooltip as aH, TopBarWidgetSlot as aI, buildLineParts as aJ, clearBetaBannerDismissal as aK, creditGaugeRatio as aL, creditStateWord as aM, creditTooltipLine as aN, creditsAriaLabel as aO, creditsIconState as aP, envChipClasses as aQ, isNavItemActive as aR, modeIdFromLabel as aS, resolveOrgLogoUrl as aT, shortEnvLabel as aU, shortUserName as aV, standardPolitogyNav as aW, topBarIconButtonClass as aX, useChromeMe as aY, useChromeOrgs as aZ, useNavChromeDedupedFetch as a_, type NavBrand as aa, NavChromeProvider as ab, NavDisplayAction as ac, type NavLinkProps as ad, type NavLinkedAccount as ae, type NavModeOption as af, type NavOrg as ag, type NavRoleBadge as ah, NavSidebar as ai, type NavSidebarProps as aj, type NavTab as ak, NavTabStrip as al, type NavTabStripProps as am, NavThemeControl as an, NavTopBar as ao, type NavTopBarAction as ap, type NavTopBarProps as aq, type NavUser as ar, NotificationsAction as as, OrganizationSettingsAction as at, PageHeader as au, type PageHeaderMode as av, SPECS_ORIGIN as aw, SpecOverlayAction as ax, type StandardNavOptions as ay, SupportAction as az, type AiCreditsStateKind as b, useThemePreference as b0, type CommsNotification as c, type CommsNotificationKind as d, type HeaderTabBarItem as e, type NotificationsAdapter as f, type NotificationsFeed as g, RowMenuItem as h, type RowMenuPlacement as i, aiCreditsWalletUrl as j, createCommsNotificationsAdapter as k, emptyNotificationsFeed as l, rowMenuPosition as m, normalizeNotificationsFeed as n, type NavIcon as o, type NavBreadcrumb as p, type StandardNavMode as q, resolveTabGlyph as r, type NavLinkComponent as s, type NavChromeFetcher as t, type NavMode as u, type NavUserMenu as v, type NavOrgOption as w, type NavFooterLink as x, type NavFooter as y, type NavDisplayMode as z };
1306
+ export { type ChromeNotificationQuarantine as $, AI_CREDITS_STATE_TITLES as A, type BreadcrumbBarProps as B, Card as C, type NavOrgOption as D, type NavFooterLink as E, FormColumn as F, type NavFooter as G, HeaderTabBar as H, type NavDisplayMode as I, BETA_BANNER_DISMISS_KEY as J, KNOWN_TAB_GLYPHS as K, BreadcrumbBar as L, CAMPAIGN_FEATURE_AVAILABILITY as M, type NavItem as N, CORE_APP_ORIGIN as O, type PageHeaderProps as P, CORE_BILLING_PATH as Q, RowMenu as R, type StandardNavIconKey as S, type TabGlyphComponent as T, CREDIT_TYPE_LABELS as U, VRM_TIER_LABELS as V, CREDIT_TYPE_ORDER as W, type CampaignFeatureAvailability as X, type ChromeMe as Y, type ChromeNotificationAlert as Z, type ChromeNotificationImport as _, AiCreditsState as a, standardPolitogyNav as a$, type ChromeNotificationReply as a0, type ChromeNotificationsPayload as a1, type ChromeOrgSummary as a2, type CommunicationsFuelStatus as a3, type CreditHealthState as a4, type CreditTypeKey as a5, CreditsAction as a6, type CreditsIconState as a7, FuelAction as a8, type FuelChannelStatus as a9, type PageHeaderMode as aA, SPECS_ORIGIN as aB, SpecOverlayAction as aC, type StandardNavOptions as aD, SupportAction as aE, type ThemePreference as aF, TopBarCountBadge as aG, type TopBarIconTone as aH, TopBarLinkAction as aI, type TopBarLinkActionProps as aJ, TopBarPanelArrow as aK, TopBarPopover as aL, TopBarTooltip as aM, TopBarWidgetSlot as aN, buildLineParts as aO, clearBetaBannerDismissal as aP, creditGaugeRatio as aQ, creditStateWord as aR, creditTooltipLine as aS, creditsAriaLabel as aT, creditsIconState as aU, envChipClasses as aV, isNavItemActive as aW, modeIdFromLabel as aX, resolveOrgLogoUrl as aY, shortEnvLabel as aZ, shortUserName as a_, MyProfileAction as aa, NavAppShell as ab, type NavAppShellProps as ac, NavBetaBanner as ad, type NavBetaBannerProps as ae, type NavBrand as af, NavChromeProvider as ag, NavDisplayAction as ah, type NavLinkProps as ai, type NavLinkedAccount as aj, type NavModeOption as ak, type NavOrg as al, type NavRoleBadge as am, NavSidebar as an, type NavSidebarProps as ao, type NavTab as ap, NavTabStrip as aq, type NavTabStripProps as ar, NavThemeControl as as, NavTopBar as at, type NavTopBarAction as au, type NavTopBarProps as av, type NavUser as aw, NotificationsAction as ax, OrganizationSettingsAction as ay, PageHeader as az, type AiCreditsStateKind as b, topBarIconButtonClass as b0, useChromeMe as b1, useChromeOrgs as b2, useNavChromeDedupedFetch as b3, useNavChromeFetcher as b4, useThemePreference as b5, type CommsNotification as c, type CommsNotificationKind as d, type HeaderTabBarItem as e, type NotificationsAdapter as f, type NotificationsFeed as g, RowMenuItem as h, type RowMenuPlacement as i, VRM_VERIFIED_TOOLTIP as j, VrmVerifiedBadge as k, type VrmVerifiedBadgeProps as l, type VrmVerifiedTier as m, aiCreditsWalletUrl as n, createCommsNotificationsAdapter as o, emptyNotificationsFeed as p, normalizeNotificationsFeed as q, resolveTabGlyph as r, rowMenuPosition as s, type NavIcon as t, type NavBreadcrumb as u, type StandardNavMode as v, type NavLinkComponent as w, type NavChromeFetcher as x, type NavMode as y, type NavUserMenu as z };
package/dist/index.cjs CHANGED
@@ -1172,6 +1172,130 @@ function RowMenuItem({
1172
1172
  }
1173
1173
  );
1174
1174
  }
1175
+ function parseCssUrl(value) {
1176
+ if (!value) return null;
1177
+ const m = /^url\(\s*(['"]?)(.*?)\1\s*\)$/i.exec(value.trim());
1178
+ const url = m?.[2]?.trim();
1179
+ return url && /^https:\/\//i.test(url) ? url : null;
1180
+ }
1181
+ function readBrandAsset(kind) {
1182
+ if (typeof document === "undefined") return null;
1183
+ try {
1184
+ return parseCssUrl(
1185
+ window.getComputedStyle(document.documentElement).getPropertyValue(`--asset-${kind}`)
1186
+ );
1187
+ } catch {
1188
+ return null;
1189
+ }
1190
+ }
1191
+ var RETRY_MS = [0, 250, 1e3, 3e3];
1192
+ function useBrandAsset(kind) {
1193
+ const [url, setUrl] = react$1.useState(null);
1194
+ react$1.useEffect(() => {
1195
+ let done = false;
1196
+ const read = () => {
1197
+ if (done) return;
1198
+ const next = readBrandAsset(kind);
1199
+ setUrl((prev) => prev === next ? prev : next);
1200
+ };
1201
+ const links = Array.from(
1202
+ document.querySelectorAll('link[rel="stylesheet"][href*="api/tokens"]')
1203
+ );
1204
+ links.forEach((l) => l.addEventListener("load", read));
1205
+ const timers = RETRY_MS.map((ms) => window.setTimeout(read, ms));
1206
+ read();
1207
+ return () => {
1208
+ done = true;
1209
+ links.forEach((l) => l.removeEventListener("load", read));
1210
+ timers.forEach((t) => window.clearTimeout(t));
1211
+ };
1212
+ }, [kind]);
1213
+ return url;
1214
+ }
1215
+ var VRM_VERIFIED_TOOLTIP = "Politogy has confirmed this is a real, registered voter.";
1216
+ var VRM_TIER_LABELS = {
1217
+ verified: "VRM Verified",
1218
+ identified: "Identified",
1219
+ anonymous: "Anonymous",
1220
+ stale: "Stale",
1221
+ inactive: "Inactive"
1222
+ };
1223
+ var TIER_TOOLTIPS = {
1224
+ verified: VRM_VERIFIED_TOOLTIP,
1225
+ identified: "Identified: we know who this is, but Politogy has not verified them.",
1226
+ anonymous: "Anonymous: nothing identifying has been captured yet.",
1227
+ stale: "Stale: was VRM Verified, but the proof is more than 12 months old.",
1228
+ inactive: "Inactive: the voter file marks this registration inactive or canceled."
1229
+ };
1230
+ var DOT_FALLBACK = {
1231
+ identified: "#a855f7",
1232
+ anonymous: "var(--color-graphite, #2b2b2b)",
1233
+ stale: "#eab308",
1234
+ inactive: "var(--muted, #8a8a8a)"
1235
+ };
1236
+ function VrmVerifiedBadge({ tier, size, showLabel = true, className, style }) {
1237
+ const icon = useBrandAsset("verified-icon");
1238
+ const known = tier && tier in VRM_TIER_LABELS ? tier : null;
1239
+ const label = known ? VRM_TIER_LABELS[known] : "Not yet computed";
1240
+ const title = known ? TIER_TOOLTIPS[known] : "The VRM Verified tier has not been worked out yet.";
1241
+ const iconSize = size ?? 16;
1242
+ const dotSize = size ?? 8;
1243
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1244
+ "span",
1245
+ {
1246
+ "data-vrm-tier": known ?? "none",
1247
+ title,
1248
+ "aria-label": showLabel ? void 0 : label,
1249
+ role: showLabel ? void 0 : "img",
1250
+ className,
1251
+ style: {
1252
+ display: "inline-flex",
1253
+ alignItems: "center",
1254
+ gap: 6,
1255
+ borderRadius: 9999,
1256
+ border: "1px solid var(--line, #e5e5e5)",
1257
+ padding: "2px 10px",
1258
+ fontSize: 12,
1259
+ fontWeight: 600,
1260
+ lineHeight: 1.4,
1261
+ whiteSpace: "nowrap",
1262
+ ...style
1263
+ },
1264
+ children: [
1265
+ known === "verified" ? (
1266
+ // The box is reserved while the Brand sheet loads; nothing stands in.
1267
+ /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, style: { display: "inline-block", width: iconSize, height: iconSize, flexShrink: 0 }, children: icon ? /* @__PURE__ */ jsxRuntime.jsx(
1268
+ "img",
1269
+ {
1270
+ src: icon,
1271
+ alt: "",
1272
+ width: iconSize,
1273
+ height: iconSize,
1274
+ draggable: false,
1275
+ "data-testid": "vrm-verified-icon",
1276
+ style: { display: "block", width: iconSize, height: iconSize }
1277
+ }
1278
+ ) : null })
1279
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
1280
+ "span",
1281
+ {
1282
+ "aria-hidden": true,
1283
+ style: {
1284
+ display: "inline-block",
1285
+ width: dotSize,
1286
+ height: dotSize,
1287
+ borderRadius: 9999,
1288
+ flexShrink: 0,
1289
+ background: known ? `var(--vrm-tier-${known}, ${DOT_FALLBACK[known]})` : "transparent",
1290
+ border: known ? void 0 : "1px dashed var(--muted, #8a8a8a)"
1291
+ }
1292
+ }
1293
+ ),
1294
+ showLabel ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: label }) : null
1295
+ ]
1296
+ }
1297
+ );
1298
+ }
1175
1299
  function FormColumn({ children, className }) {
1176
1300
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-shell-form-column": "", className: clsx5__default.default("w-full max-w-[960px]", className), children });
1177
1301
  }
@@ -1926,24 +2050,6 @@ function BrandIcon({
1926
2050
  }
1927
2051
  );
1928
2052
  }
1929
- function parseCssUrl(value) {
1930
- if (!value) return null;
1931
- const m = /^url\(\s*(['"]?)(.*?)\1\s*\)$/i.exec(value.trim());
1932
- const url = m?.[2]?.trim();
1933
- return url && /^https:\/\//i.test(url) ? url : null;
1934
- }
1935
- function readBrandAsset(kind) {
1936
- if (typeof document === "undefined") return null;
1937
- try {
1938
- return parseCssUrl(
1939
- window.getComputedStyle(document.documentElement).getPropertyValue(`--asset-${kind}`)
1940
- );
1941
- } catch {
1942
- return null;
1943
- }
1944
- }
1945
-
1946
- // src/lib/brandFavicon.ts
1947
2053
  var BRAND_FAVICON_LINK_ID = "politogy-brand-favicon";
1948
2054
  var BRAND_APPLE_ICON_LINK_ID = "politogy-brand-apple-icon";
1949
2055
  function upsertLink(id, rel, href) {
@@ -1966,7 +2072,7 @@ function applyBrandFavicon() {
1966
2072
  if (apple) upsertLink(BRAND_APPLE_ICON_LINK_ID, "apple-touch-icon", apple);
1967
2073
  return true;
1968
2074
  }
1969
- var RETRY_MS = [0, 250, 1e3, 3e3];
2075
+ var RETRY_MS2 = [0, 250, 1e3, 3e3];
1970
2076
  function watchBrandFavicon() {
1971
2077
  if (typeof document === "undefined") return () => {
1972
2078
  };
@@ -1983,7 +2089,7 @@ function watchBrandFavicon() {
1983
2089
  });
1984
2090
  };
1985
2091
  listen();
1986
- const timers = RETRY_MS.map((ms) => window.setTimeout(apply, ms));
2092
+ const timers = RETRY_MS2.map((ms) => window.setTimeout(apply, ms));
1987
2093
  const observer = typeof MutationObserver === "undefined" ? null : new MutationObserver(() => {
1988
2094
  listen();
1989
2095
  apply();
@@ -2326,6 +2432,9 @@ exports.ShellProvider = ShellProvider;
2326
2432
  exports.ShellRoleContext = ShellRoleContext;
2327
2433
  exports.ShellSupportProviderContext = ShellSupportProviderContext;
2328
2434
  exports.SpeculationRulesScript = SpeculationRulesScript;
2435
+ exports.VRM_TIER_LABELS = VRM_TIER_LABELS;
2436
+ exports.VRM_VERIFIED_TOOLTIP = VRM_VERIFIED_TOOLTIP;
2437
+ exports.VrmVerifiedBadge = VrmVerifiedBadge;
2329
2438
  exports.aiCreditsWalletUrl = aiCreditsWalletUrl;
2330
2439
  exports.applyBrandFavicon = applyBrandFavicon;
2331
2440
  exports.buildNavSpeculationRules = buildNavSpeculationRules;