@the-portland-company/shell 0.96.2 → 0.97.1

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/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PageHeaderProps, B as BreadcrumbBarProps, N as NavItem } from './index-DJtKw0Fd.cjs';
2
- export { A as AI_CREDITS_STATE_TITLES, a as AiCreditsState, b as AiCreditsStateKind, C as Card, c as CommsNotification, d as CommsNotificationKind, F as FormColumn, H as HeaderTabBar, e as HeaderTabBarItem, K as KNOWN_TAB_GLYPHS, f as NotificationsAdapter, g as NotificationsFeed, R as RowMenu, h as RowMenuItem, i as RowMenuPlacement, T as TabGlyphComponent, j as aiCreditsWalletUrl, k as createCommsNotificationsAdapter, l as emptyNotificationsFeed, n as normalizeNotificationsFeed, r as resolveTabGlyph, m as rowMenuPosition } from './index-DJtKw0Fd.cjs';
1
+ import { P as PageHeaderProps, B as BreadcrumbBarProps, N as NavItem } from './index-SHcw15A4.cjs';
2
+ export { A as AI_CREDITS_STATE_TITLES, a as AiCreditsState, b as AiCreditsStateKind, C as Card, c as CommsNotification, d as CommsNotificationKind, F as FormColumn, H as HeaderTabBar, e as HeaderTabBarItem, K as KNOWN_TAB_GLYPHS, f as NotificationsAdapter, g as NotificationsFeed, R as RowMenu, h as RowMenuItem, i as RowMenuPlacement, T as TabGlyphComponent, j as aiCreditsWalletUrl, k as createCommsNotificationsAdapter, l as emptyNotificationsFeed, n as normalizeNotificationsFeed, r as resolveTabGlyph, m as rowMenuPosition } from './index-SHcw15A4.cjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode, CSSProperties } from 'react';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { P as PageHeaderProps, B as BreadcrumbBarProps, N as NavItem } from './index-HwDXhFOA.js';
2
- export { A as AI_CREDITS_STATE_TITLES, a as AiCreditsState, b as AiCreditsStateKind, C as Card, c as CommsNotification, d as CommsNotificationKind, F as FormColumn, H as HeaderTabBar, e as HeaderTabBarItem, K as KNOWN_TAB_GLYPHS, f as NotificationsAdapter, g as NotificationsFeed, R as RowMenu, h as RowMenuItem, i as RowMenuPlacement, T as TabGlyphComponent, j as aiCreditsWalletUrl, k as createCommsNotificationsAdapter, l as emptyNotificationsFeed, n as normalizeNotificationsFeed, r as resolveTabGlyph, m as rowMenuPosition } from './index-HwDXhFOA.js';
1
+ import { P as PageHeaderProps, B as BreadcrumbBarProps, N as NavItem } from './index-smsLP_tM.js';
2
+ export { A as AI_CREDITS_STATE_TITLES, a as AiCreditsState, b as AiCreditsStateKind, C as Card, c as CommsNotification, d as CommsNotificationKind, F as FormColumn, H as HeaderTabBar, e as HeaderTabBarItem, K as KNOWN_TAB_GLYPHS, f as NotificationsAdapter, g as NotificationsFeed, R as RowMenu, h as RowMenuItem, i as RowMenuPlacement, T as TabGlyphComponent, j as aiCreditsWalletUrl, k as createCommsNotificationsAdapter, l as emptyNotificationsFeed, n as normalizeNotificationsFeed, r as resolveTabGlyph, m as rowMenuPosition } from './index-smsLP_tM.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import * as react from 'react';
5
5
  import { ReactNode, CSSProperties } from 'react';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { PageHeaderView, warnDeprecated, BreadcrumbBarView } from './chunk-537NZZVP.js';
2
- export { AI_CREDITS_STATE_TITLES, AiCreditsState, Card, FormColumn, HeaderTabBar, KNOWN_TAB_GLYPHS, RowMenu, RowMenuItem, SpeculationRulesScript, aiCreditsWalletUrl, buildNavSpeculationRules, buildSpeculationRules, collectSiblingAppUrls, createCommsNotificationsAdapter, emptyNotificationsFeed, normalizeNotificationsFeed, resolveTabGlyph, rowMenuPosition } from './chunk-537NZZVP.js';
1
+ import { PageHeaderView, warnDeprecated, BreadcrumbBarView } from './chunk-XPTC47TY.js';
2
+ export { AI_CREDITS_STATE_TITLES, AiCreditsState, Card, FormColumn, HeaderTabBar, KNOWN_TAB_GLYPHS, RowMenu, RowMenuItem, SpeculationRulesScript, aiCreditsWalletUrl, buildNavSpeculationRules, buildSpeculationRules, collectSiblingAppUrls, createCommsNotificationsAdapter, emptyNotificationsFeed, normalizeNotificationsFeed, resolveTabGlyph, rowMenuPosition } from './chunk-XPTC47TY.js';
3
3
  import { readResolvedTheme } from './chunk-BHRVZPZ7.js';
4
4
  export { BRAND_APPLE_ICON_LINK_ID, BRAND_FAVICON_LINK_ID, BrandFavicon, applyBrandFavicon, watchBrandFavicon } from './chunk-BMR5WAWH.js';
5
5
  import { extendTheme, ChakraProvider, useColorMode } from '@chakra-ui/react';
package/dist/native.cjs CHANGED
@@ -694,19 +694,26 @@ function TopBarCountBadge({ count }) {
694
694
  }
695
695
  function TopBarTooltip({
696
696
  title,
697
- description
697
+ description,
698
+ align = "center"
698
699
  }) {
700
+ const bodyPosition = align === "end" ? "right-0" : "left-1/2 -translate-x-1/2";
701
+ const arrowPosition = align === "end" ? "" : "left-1/2 -translate-x-1/2";
702
+ const arrowStyle = align === "end" ? { right: "calc(var(--topbar-icon-button-size, 34px) / 2 - 5px)" } : void 0;
699
703
  return /* @__PURE__ */ jsxRuntime.jsxs(
700
704
  "span",
701
705
  {
702
706
  role: "tooltip",
703
- className: "pointer-events-none absolute left-1/2 top-full z-50 mt-2 hidden w-max max-w-56 -translate-x-1/2 flex-col rounded-lg border border-[color:var(--app-btn-tooltip-bg,#2F3136)] bg-[color:var(--app-btn-tooltip-bg,#2F3136)] px-3 py-2 text-left shadow-[var(--shadow-soft)] group-hover/tbtip:flex group-focus-visible/tbtip:flex",
707
+ "data-tooltip-align": align,
708
+ className: `pointer-events-none absolute ${bodyPosition} top-full z-50 mt-2 hidden w-max max-w-56 flex-col rounded-lg border border-[color:var(--app-btn-tooltip-bg,#2F3136)] bg-[color:var(--app-btn-tooltip-bg,#2F3136)] px-3 py-2 text-left shadow-[var(--shadow-soft)] group-hover/tbtip:flex group-focus-visible/tbtip:flex`,
704
709
  children: [
705
710
  /* @__PURE__ */ jsxRuntime.jsx(
706
711
  "span",
707
712
  {
708
713
  "aria-hidden": true,
709
- className: "absolute -top-[5px] left-1/2 h-2.5 w-2.5 -translate-x-1/2 rotate-45 border-l border-t border-[color:var(--app-btn-tooltip-bg,#2F3136)] bg-[color:var(--app-btn-tooltip-bg,#2F3136)]"
714
+ "data-tooltip-arrow": true,
715
+ style: arrowStyle,
716
+ className: `absolute -top-[5px] ${arrowPosition} h-2.5 w-2.5 rotate-45 border-l border-t border-[color:var(--app-btn-tooltip-bg,#2F3136)] bg-[color:var(--app-btn-tooltip-bg,#2F3136)]`
710
717
  }
711
718
  ),
712
719
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-[color:var(--app-btn-tooltip-fg,#FFFFFF)]", children: title }),
@@ -2376,6 +2383,34 @@ function useThemePreference() {
2376
2383
  );
2377
2384
  return { value, setValue };
2378
2385
  }
2386
+ function TopBarLinkAction({ label, description, href, icon: Icon }) {
2387
+ return /* @__PURE__ */ jsxRuntime.jsxs("a", { href, "aria-label": label, className: topBarIconButtonClass(), children: [
2388
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: TOPBAR_GLYPH_SIZE, className: "text-current" }),
2389
+ /* @__PURE__ */ jsxRuntime.jsx(TopBarTooltip, { title: label, description, align: "end" })
2390
+ ] });
2391
+ }
2392
+ function OrganizationSettingsAction({ href }) {
2393
+ return /* @__PURE__ */ jsxRuntime.jsx(
2394
+ TopBarLinkAction,
2395
+ {
2396
+ label: "Organization settings",
2397
+ description: "Users, Brand Kit, modes and billing for this organization.",
2398
+ href,
2399
+ icon: lu.LuSettings
2400
+ }
2401
+ );
2402
+ }
2403
+ function MyProfileAction({ href }) {
2404
+ return /* @__PURE__ */ jsxRuntime.jsx(
2405
+ TopBarLinkAction,
2406
+ {
2407
+ label: "My profile",
2408
+ description: "Your photo, organizations, security and notifications.",
2409
+ href,
2410
+ icon: lu.LuCircleUser
2411
+ }
2412
+ );
2413
+ }
2379
2414
  function FormColumn({ children, className }) {
2380
2415
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-shell-form-column": "", className: clsx4__default.default("w-full max-w-[960px]", className), children });
2381
2416
  }
@@ -3153,13 +3188,14 @@ function standardPolitogyNav(opts) {
3153
3188
  });
3154
3189
  };
3155
3190
  const accountRows = () => [
3156
- { kind: "section", label: "Account" },
3191
+ { kind: "section", label: "Account", railHidden: true },
3157
3192
  // My Profile moved to the Politogy ID account app (auth.politogyvrm.com)
3158
3193
  // with the retirement of app.politogyvrm.com.
3159
- { label: "My profile", icon: icon("circleUser"), href: withOrg(`${AUTH_ORIGIN}my-profile`) },
3194
+ { label: "My profile", icon: icon("circleUser"), href: withOrg(`${AUTH_ORIGIN}my-profile`), railHidden: true },
3160
3195
  {
3161
3196
  label: "Organization settings",
3162
3197
  icon: icon("settings"),
3198
+ railHidden: true,
3163
3199
  // Organization settings moved to the standalone Settings app
3164
3200
  // (settings.politogyvrm.com, Specs/Organization-Settings v12).
3165
3201
  href: withOrg(`${SETTINGS_ORIGIN2}organization-settings`),
@@ -3395,6 +3431,33 @@ function shortEnvLabel(label) {
3395
3431
  if (l === "development") return "dev";
3396
3432
  return l;
3397
3433
  }
3434
+ function buildLineParts(meta) {
3435
+ const version = meta.version ? `v${meta.version.replace(/^v/, "")}` : null;
3436
+ const parsed = meta.commitDate ? new Date(meta.commitDate) : null;
3437
+ const date = parsed && !Number.isNaN(parsed.getTime()) ? parsed.toLocaleDateString(void 0, { month: "short", day: "numeric" }) : null;
3438
+ const line = [version, date].filter(Boolean).join(" \xB7 ");
3439
+ const detail2 = [
3440
+ meta.envLabel ? shortEnvLabel(meta.envLabel) : null,
3441
+ meta.commit ? meta.commit.slice(0, 12) : null,
3442
+ version,
3443
+ date,
3444
+ meta.commitAuthor ? meta.commitAuthor.split(/\s+/)[0] : null
3445
+ ].filter(Boolean).join(" | ");
3446
+ return { line, detail: detail2 };
3447
+ }
3448
+ function ShellBuildLine({ footer, hidden }) {
3449
+ const { line, detail: detail2 } = buildLineParts(footer);
3450
+ if (!line && !detail2) return null;
3451
+ return /* @__PURE__ */ jsxRuntime.jsx(
3452
+ "div",
3453
+ {
3454
+ "data-shell-meta": true,
3455
+ title: detail2,
3456
+ className: `mt-1.5 truncate text-center font-[family-name:var(--font-mono,ui-monospace,monospace)] text-[10px] leading-[1.2] text-[color:var(--sidebar-row-text,rgba(255,255,255,0.66))] ${hidden}`,
3457
+ children: line || detail2
3458
+ }
3459
+ );
3460
+ }
3398
3461
  function envChipClasses(label) {
3399
3462
  const l = label.toLowerCase();
3400
3463
  if (l === "production" || l === "prod")
@@ -3816,7 +3879,7 @@ function NavSidebar({
3816
3879
  ] }),
3817
3880
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-1 flex-col overflow-y-auto px-[10px] py-3", children: /* @__PURE__ */ jsxRuntime.jsxs("nav", { className: "flex flex-col gap-0.5", children: [
3818
3881
  nav.groupLabel ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: `${NAV_EYEBROW_CLASS} px-2 pb-1.5 pt-1 ${rc("max-md:hidden")}`, children: nav.groupLabel }) : null,
3819
- nav.items.map((item, idx) => {
3882
+ nav.items.filter((item) => !item.railHidden).map((item, idx) => {
3820
3883
  if (item.kind === "section") {
3821
3884
  return /* @__PURE__ */ jsxRuntime.jsx(
3822
3885
  NavSectionRow,
@@ -3897,31 +3960,7 @@ function NavSidebar({
3897
3960
  }
3898
3961
  )
3899
3962
  ] }, l.label)) }) : null,
3900
- footer.envLabel || footer.commit || footer.version ? /* @__PURE__ */ jsxRuntime.jsxs(
3901
- "div",
3902
- {
3903
- "data-shell-meta": true,
3904
- className: `mt-1.5 flex flex-col items-center gap-0.5 font-[family-name:var(--font-mono,ui-monospace,monospace)] text-[11px] text-[color:var(--sidebar-meta-text,rgba(255,255,255,0.72))] ${rc("max-md:hidden")}`,
3905
- children: [
3906
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1.5", children: [
3907
- footer.envLabel ? shortEnvLabel(footer.envLabel) : null,
3908
- footer.commit ? footer.commit.slice(-4) : null,
3909
- footer.version ? `v${footer.version.replace(/^v/, "")}` : null
3910
- ].filter((v) => Boolean(v)).map((v, i) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
3911
- i > 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: "|" }) : null,
3912
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: v })
3913
- ] }, i)) }),
3914
- footer.commitDate || footer.commitAuthor ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5", children: [
3915
- footer.commitDate ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: new Date(footer.commitDate).toLocaleDateString(void 0, {
3916
- month: "short",
3917
- day: "numeric"
3918
- }) }) : null,
3919
- footer.commitDate && footer.commitAuthor ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: "|" }) : null,
3920
- footer.commitAuthor ? /* @__PURE__ */ jsxRuntime.jsx("span", { children: footer.commitAuthor.split(/\s+/)[0] }) : null
3921
- ] }) : null
3922
- ]
3923
- }
3924
- ) : null
3963
+ footer.envLabel || footer.commit || footer.version ? /* @__PURE__ */ jsxRuntime.jsx(ShellBuildLine, { footer, hidden: rc("max-md:hidden") }) : null
3925
3964
  ] }) : null
3926
3965
  ]
3927
3966
  }
@@ -4957,6 +4996,7 @@ exports.FormColumn = FormColumn;
4957
4996
  exports.FuelAction = FuelAction;
4958
4997
  exports.HeaderTabBar = HeaderTabBar;
4959
4998
  exports.KNOWN_TAB_GLYPHS = KNOWN_TAB_GLYPHS;
4999
+ exports.MyProfileAction = MyProfileAction;
4960
5000
  exports.NavAppShell = NavAppShell;
4961
5001
  exports.NavBetaBanner = NavBetaBanner;
4962
5002
  exports.NavChromeProvider = NavChromeProvider;
@@ -4966,6 +5006,7 @@ exports.NavTabStrip = NavTabStrip;
4966
5006
  exports.NavThemeControl = NavThemeControl;
4967
5007
  exports.NavTopBar = NavTopBar;
4968
5008
  exports.NotificationsAction = NotificationsAction;
5009
+ exports.OrganizationSettingsAction = OrganizationSettingsAction;
4969
5010
  exports.PageHeader = PageHeader;
4970
5011
  exports.RowMenu = RowMenu;
4971
5012
  exports.RowMenuItem = RowMenuItem;
@@ -4973,12 +5014,14 @@ exports.SPECS_ORIGIN = SPECS_ORIGIN;
4973
5014
  exports.SpecOverlayAction = SpecOverlayAction;
4974
5015
  exports.SupportAction = SupportAction;
4975
5016
  exports.TopBarCountBadge = TopBarCountBadge;
5017
+ exports.TopBarLinkAction = TopBarLinkAction;
4976
5018
  exports.TopBarPanelArrow = TopBarPanelArrow;
4977
5019
  exports.TopBarPopover = TopBarPopover;
4978
5020
  exports.TopBarTooltip = TopBarTooltip;
4979
5021
  exports.TopBarWidgetSlot = TopBarWidgetSlot;
4980
5022
  exports.aiCreditsWalletUrl = aiCreditsWalletUrl;
4981
5023
  exports.applyBrandFavicon = applyBrandFavicon;
5024
+ exports.buildLineParts = buildLineParts;
4982
5025
  exports.clearBetaBannerDismissal = clearBetaBannerDismissal;
4983
5026
  exports.creditGaugeRatio = creditGaugeRatio;
4984
5027
  exports.creditStateWord = creditStateWord;