@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.
@@ -300,9 +300,19 @@ declare function TopBarCountBadge({ count }: {
300
300
  * Pure CSS (group-hover) so it works on <a>, <button> and <summary> triggers.
301
301
  * The trigger must carry `group/tbtip relative` (topBarIconButtonClass does).
302
302
  */
303
- declare function TopBarTooltip({ title, description, }: {
303
+ declare function TopBarTooltip({ title, description, align, }: {
304
304
  title: string;
305
305
  description?: ReactNode;
306
+ /**
307
+ * `center` (default): the body is centered under the trigger.
308
+ * `end`: the body's right edge lines up with the trigger's right edge, so a
309
+ * control at the right end of the top bar (Organization settings, My profile)
310
+ * keeps its tooltip on screen. The arrow stays on the trigger's center either
311
+ * way (Brand guideline "Tooltips point at their trigger"). Measured
312
+ * 2026-11-05 at 1547px: the centered 224px body ran 75px past the viewport
313
+ * for My profile and 35px for Organization settings.
314
+ */
315
+ align?: 'center' | 'end';
306
316
  }): react_jsx_runtime.JSX.Element;
307
317
  /**
308
318
  * The up-pointing arrow every top-bar panel renders, anchored under its
@@ -579,6 +589,23 @@ declare function useThemePreference(): {
579
589
  value: ThemePreference;
580
590
  setValue: (next: ThemePreference) => void;
581
591
  };
592
+ type TopBarLinkActionProps = {
593
+ /** Accessible name and tooltip title. */
594
+ label: string;
595
+ /** One-line callout under the title in the tooltip. */
596
+ description: string;
597
+ href: string;
598
+ icon: NavIconLike;
599
+ };
600
+ declare function TopBarLinkAction({ label, description, href, icon: Icon }: TopBarLinkActionProps): react_jsx_runtime.JSX.Element;
601
+ /** Organization settings for the active org (Settings app, `org_id` tail). */
602
+ declare function OrganizationSettingsAction({ href }: {
603
+ href: string;
604
+ }): react_jsx_runtime.JSX.Element;
605
+ /** The user's Politogy ID profile (Left-Navigation §9.4), for the active org. */
606
+ declare function MyProfileAction({ href }: {
607
+ href: string;
608
+ }): react_jsx_runtime.JSX.Element;
582
609
 
583
610
  /** Page header for apps with no react-router. Same view as the main entry. */
584
611
  declare function PageHeader(props: PageHeaderProps): react_jsx_runtime.JSX.Element;
@@ -760,6 +787,12 @@ type NavItem = {
760
787
  * rows on a lighter panel and support both `href` links and `onClick` actions.
761
788
  */
762
789
  children?: NavItem[];
790
+ /**
791
+ * Kept in the tree (breadcrumbs, active-row matching, prefetch rules) but
792
+ * not drawn in the left bar. Ben 2026-11-04: My profile and Organization
793
+ * settings moved to the top bar, so the ACCOUNT section is rail-hidden.
794
+ */
795
+ railHidden?: boolean;
763
796
  };
764
797
  type NavLinkProps = {
765
798
  href: string;
@@ -781,6 +814,25 @@ declare function modeIdFromLabel(label: string | undefined): string | undefined;
781
814
  declare function shortUserName(name: string): string;
782
815
  /** Short environment name for the rail's build line ("prod", "staging", "local"). */
783
816
  declare function shortEnvLabel(label: string): string;
817
+ /**
818
+ * The left-bar build line (Left-Navigation §10, UI-Platform → Debug info;
819
+ * decided 2026-11-05, Ben): ONE quiet line, `v<version> · <Mon D>`, 10px mono
820
+ * in the inactive-row gray (`--sidebar-row-text`: 66% white, #F0CFD2 on the
821
+ * Campaign rail; the dimmest rail gray that clears 4.5:1 on both rails). The
822
+ * full build info (env, commit, version, date, author) is the hover title, so
823
+ * it stays one hover away for the team. Replaces the two rows
824
+ * `env | commit | version` / `date | author` until the Debug info button ships.
825
+ */
826
+ declare function buildLineParts(meta: {
827
+ envLabel?: string;
828
+ version?: string;
829
+ commit?: string;
830
+ commitDate?: string;
831
+ commitAuthor?: string;
832
+ }): {
833
+ line: string;
834
+ detail: string;
835
+ };
784
836
  declare function envChipClasses(label: string): string;
785
837
  type NavBrand = {
786
838
  /** Where the logo links to. Defaults to "/". */
@@ -1236,4 +1288,4 @@ type NavAppShellProps = {
1236
1288
  };
1237
1289
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1238
1290
 
1239
- 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, type CreditTypeKey as a0, CreditsAction as a1, type CreditsIconState as a2, FuelAction as a3, type FuelChannelStatus as a4, NavAppShell as a5, type NavAppShellProps as a6, NavBetaBanner as a7, type NavBetaBannerProps as a8, type NavBrand as a9, type TopBarIconTone as aA, TopBarPanelArrow as aB, TopBarPopover as aC, TopBarTooltip as aD, TopBarWidgetSlot as aE, clearBetaBannerDismissal as aF, creditGaugeRatio as aG, creditStateWord as aH, creditTooltipLine as aI, creditsAriaLabel as aJ, creditsIconState as aK, envChipClasses as aL, isNavItemActive as aM, modeIdFromLabel as aN, resolveOrgLogoUrl as aO, shortEnvLabel as aP, shortUserName as aQ, standardPolitogyNav as aR, topBarIconButtonClass as aS, useChromeMe as aT, useChromeOrgs as aU, useNavChromeDedupedFetch as aV, useNavChromeFetcher as aW, useThemePreference as aX, NavChromeProvider as aa, NavDisplayAction as ab, type NavLinkProps as ac, type NavLinkedAccount as ad, type NavModeOption as ae, type NavOrg as af, type NavRoleBadge as ag, NavSidebar as ah, type NavSidebarProps as ai, type NavTab as aj, NavTabStrip as ak, type NavTabStripProps as al, NavThemeControl as am, NavTopBar as an, type NavTopBarAction as ao, type NavTopBarProps as ap, type NavUser as aq, NotificationsAction as ar, PageHeader as as, type PageHeaderMode as at, SPECS_ORIGIN as au, SpecOverlayAction as av, type StandardNavOptions as aw, SupportAction as ax, type ThemePreference as ay, TopBarCountBadge as az, type AiCreditsStateKind as b, 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 };
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 };
@@ -300,9 +300,19 @@ declare function TopBarCountBadge({ count }: {
300
300
  * Pure CSS (group-hover) so it works on <a>, <button> and <summary> triggers.
301
301
  * The trigger must carry `group/tbtip relative` (topBarIconButtonClass does).
302
302
  */
303
- declare function TopBarTooltip({ title, description, }: {
303
+ declare function TopBarTooltip({ title, description, align, }: {
304
304
  title: string;
305
305
  description?: ReactNode;
306
+ /**
307
+ * `center` (default): the body is centered under the trigger.
308
+ * `end`: the body's right edge lines up with the trigger's right edge, so a
309
+ * control at the right end of the top bar (Organization settings, My profile)
310
+ * keeps its tooltip on screen. The arrow stays on the trigger's center either
311
+ * way (Brand guideline "Tooltips point at their trigger"). Measured
312
+ * 2026-11-05 at 1547px: the centered 224px body ran 75px past the viewport
313
+ * for My profile and 35px for Organization settings.
314
+ */
315
+ align?: 'center' | 'end';
306
316
  }): react_jsx_runtime.JSX.Element;
307
317
  /**
308
318
  * The up-pointing arrow every top-bar panel renders, anchored under its
@@ -579,6 +589,23 @@ declare function useThemePreference(): {
579
589
  value: ThemePreference;
580
590
  setValue: (next: ThemePreference) => void;
581
591
  };
592
+ type TopBarLinkActionProps = {
593
+ /** Accessible name and tooltip title. */
594
+ label: string;
595
+ /** One-line callout under the title in the tooltip. */
596
+ description: string;
597
+ href: string;
598
+ icon: NavIconLike;
599
+ };
600
+ declare function TopBarLinkAction({ label, description, href, icon: Icon }: TopBarLinkActionProps): react_jsx_runtime.JSX.Element;
601
+ /** Organization settings for the active org (Settings app, `org_id` tail). */
602
+ declare function OrganizationSettingsAction({ href }: {
603
+ href: string;
604
+ }): react_jsx_runtime.JSX.Element;
605
+ /** The user's Politogy ID profile (Left-Navigation §9.4), for the active org. */
606
+ declare function MyProfileAction({ href }: {
607
+ href: string;
608
+ }): react_jsx_runtime.JSX.Element;
582
609
 
583
610
  /** Page header for apps with no react-router. Same view as the main entry. */
584
611
  declare function PageHeader(props: PageHeaderProps): react_jsx_runtime.JSX.Element;
@@ -760,6 +787,12 @@ type NavItem = {
760
787
  * rows on a lighter panel and support both `href` links and `onClick` actions.
761
788
  */
762
789
  children?: NavItem[];
790
+ /**
791
+ * Kept in the tree (breadcrumbs, active-row matching, prefetch rules) but
792
+ * not drawn in the left bar. Ben 2026-11-04: My profile and Organization
793
+ * settings moved to the top bar, so the ACCOUNT section is rail-hidden.
794
+ */
795
+ railHidden?: boolean;
763
796
  };
764
797
  type NavLinkProps = {
765
798
  href: string;
@@ -781,6 +814,25 @@ declare function modeIdFromLabel(label: string | undefined): string | undefined;
781
814
  declare function shortUserName(name: string): string;
782
815
  /** Short environment name for the rail's build line ("prod", "staging", "local"). */
783
816
  declare function shortEnvLabel(label: string): string;
817
+ /**
818
+ * The left-bar build line (Left-Navigation §10, UI-Platform → Debug info;
819
+ * decided 2026-11-05, Ben): ONE quiet line, `v<version> · <Mon D>`, 10px mono
820
+ * in the inactive-row gray (`--sidebar-row-text`: 66% white, #F0CFD2 on the
821
+ * Campaign rail; the dimmest rail gray that clears 4.5:1 on both rails). The
822
+ * full build info (env, commit, version, date, author) is the hover title, so
823
+ * it stays one hover away for the team. Replaces the two rows
824
+ * `env | commit | version` / `date | author` until the Debug info button ships.
825
+ */
826
+ declare function buildLineParts(meta: {
827
+ envLabel?: string;
828
+ version?: string;
829
+ commit?: string;
830
+ commitDate?: string;
831
+ commitAuthor?: string;
832
+ }): {
833
+ line: string;
834
+ detail: string;
835
+ };
784
836
  declare function envChipClasses(label: string): string;
785
837
  type NavBrand = {
786
838
  /** Where the logo links to. Defaults to "/". */
@@ -1236,4 +1288,4 @@ type NavAppShellProps = {
1236
1288
  };
1237
1289
  declare function NavAppShell({ sidebar, topBar, betaBanner, contentWrapper, accountMenuPlacement, modeId, children, }: NavAppShellProps): react_jsx_runtime.JSX.Element;
1238
1290
 
1239
- 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, type CreditTypeKey as a0, CreditsAction as a1, type CreditsIconState as a2, FuelAction as a3, type FuelChannelStatus as a4, NavAppShell as a5, type NavAppShellProps as a6, NavBetaBanner as a7, type NavBetaBannerProps as a8, type NavBrand as a9, type TopBarIconTone as aA, TopBarPanelArrow as aB, TopBarPopover as aC, TopBarTooltip as aD, TopBarWidgetSlot as aE, clearBetaBannerDismissal as aF, creditGaugeRatio as aG, creditStateWord as aH, creditTooltipLine as aI, creditsAriaLabel as aJ, creditsIconState as aK, envChipClasses as aL, isNavItemActive as aM, modeIdFromLabel as aN, resolveOrgLogoUrl as aO, shortEnvLabel as aP, shortUserName as aQ, standardPolitogyNav as aR, topBarIconButtonClass as aS, useChromeMe as aT, useChromeOrgs as aU, useNavChromeDedupedFetch as aV, useNavChromeFetcher as aW, useThemePreference as aX, NavChromeProvider as aa, NavDisplayAction as ab, type NavLinkProps as ac, type NavLinkedAccount as ad, type NavModeOption as ae, type NavOrg as af, type NavRoleBadge as ag, NavSidebar as ah, type NavSidebarProps as ai, type NavTab as aj, NavTabStrip as ak, type NavTabStripProps as al, NavThemeControl as am, NavTopBar as an, type NavTopBarAction as ao, type NavTopBarProps as ap, type NavUser as aq, NotificationsAction as ar, PageHeader as as, type PageHeaderMode as at, SPECS_ORIGIN as au, SpecOverlayAction as av, type StandardNavOptions as aw, SupportAction as ax, type ThemePreference as ay, TopBarCountBadge as az, type AiCreditsStateKind as b, 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 };
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 };
package/dist/index.cjs CHANGED
@@ -1463,19 +1463,26 @@ try{d.setAttribute("data-theme",dark?"dark":"light");d.style.colorScheme=dark?"d
1463
1463
  }catch(e){}})();`;
1464
1464
  function TopBarTooltip({
1465
1465
  title,
1466
- description
1466
+ description,
1467
+ align = "center"
1467
1468
  }) {
1469
+ const bodyPosition = align === "end" ? "right-0" : "left-1/2 -translate-x-1/2";
1470
+ const arrowPosition = align === "end" ? "" : "left-1/2 -translate-x-1/2";
1471
+ const arrowStyle = align === "end" ? { right: "calc(var(--topbar-icon-button-size, 34px) / 2 - 5px)" } : void 0;
1468
1472
  return /* @__PURE__ */ jsxRuntime.jsxs(
1469
1473
  "span",
1470
1474
  {
1471
1475
  role: "tooltip",
1472
- 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",
1476
+ "data-tooltip-align": align,
1477
+ 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`,
1473
1478
  children: [
1474
1479
  /* @__PURE__ */ jsxRuntime.jsx(
1475
1480
  "span",
1476
1481
  {
1477
1482
  "aria-hidden": true,
1478
- 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)]"
1483
+ "data-tooltip-arrow": true,
1484
+ style: arrowStyle,
1485
+ 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)]`
1479
1486
  }
1480
1487
  ),
1481
1488
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold text-[color:var(--app-btn-tooltip-fg,#FFFFFF)]", children: title }),