@streamoid/ui 0.6.20 → 0.6.22

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.
@@ -164,7 +164,7 @@ theme-aware (dark on `:root`, light override) — never hardcode a colour.
164
164
 
165
165
  - **`CreditWarningBanner`** — use when you need the "you're nearly out of credits" nudge in a sidebar rail, in either expanded or collapsed form.
166
166
  - **`ScAppSwitchPanel`** — use when you need the "go to another Streamoid product" list — in `StreamoidSidebar`'s `switchPanel`, or in your own portalled flyout.
167
- - also documented here: `ScAppSwitchRow`
167
+ - also documented here: `ScAppSwitchRow`, `createStreamoidAppSwitchUtilities`, `STREAMOID_CHANGELOG_URL`, `STREAMOID_STATUS_PAGE_URL`
168
168
  - **`ScArtifaxSidebar`** — use when you are working on the Artifax (or Tactix) shell, or you need a sidebar whose sections the user can collapse.
169
169
  - **`ScAskAgentButton`** — use when you need the assistant-panel CTA **outside** a DS sidebar. Inside one, use the sidebar's `assistantCta` prop instead.
170
170
  - also documented here: `ScAskAgentSlot`, `AssistantCta`
@@ -178,8 +178,8 @@ theme-aware (dark on `:root`, light override) — never hardcode a colour.
178
178
  - **`ScSidebarProfile`** _(legacy)_ — use when never. There is no way to pass a real user through it.
179
179
  - **`ScSidebarSwitchMenu`** — use when you're building a "switch to another product" list inside a sidebar and each entry needs a name **and** a subtitle.
180
180
  - **`ScVersion`** _(legacy)_ — use when never. `StreamoidSidebar` renders its own version footer inline from `versionText`.
181
- - **`ScWorkspaceAccountMenu`** — use when building the standard workspace menu opened from the top-left of a Streamoid application sidebar. - Use `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, and `ScSidebarAppIdentity` for the matching constant rail controls. - Use the two preference hooks so theme and expanded/collapsed state survive an app switch across Streamoid subdomains.
182
- - also documented here: `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, `ScSidebarAppIdentity`, `useStreamoidThemePreference`, `useStreamoidSidebarPreference`
181
+ - **`ScWorkspaceAccountMenu`** — use when building the standard workspace menu opened from the top-left of a Streamoid application sidebar. - Use `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, and `ScSidebarAppIdentity` for the matching constant rail controls. - Use the two preference hooks so theme and expanded/collapsed state survive an app switch across Streamoid subdomains. - Use `useStreamoidSidebarPopoverPosition` for the upper-right workspace menu and lower-right app switcher instead of hard-coded host coordinates.
182
+ - also documented here: `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, `ScSidebarAppIdentity`, `useStreamoidThemePreference`, `useStreamoidSidebarPreference`, `useStreamoidSidebarPopoverPosition`
183
183
  - **`StreamoidSidebar`** — use when you are building (or fixing) a desktop app's primary left navigation and you want the same chrome CXO, Photogenix and Catalogix use.
184
184
  - also documented here: `ScSidebarResizeHandle`, `advanceSidebarResizeGesture`, `SIDEBAR_RESIZE_THRESHOLD_PX`
185
185
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  component: ScAppSwitchPanel
3
- also_exports: [ScAppSwitchRow]
3
+ also_exports: [ScAppSwitchRow, createStreamoidAppSwitchUtilities, STREAMOID_CHANGELOG_URL, STREAMOID_STATUS_PAGE_URL]
4
4
  package: "@streamoid/ui"
5
5
  category: sidebar
6
6
  status: stable
@@ -46,6 +46,7 @@ card, no border and no background: the surrounding sidebar or flyout supplies th
46
46
  import {
47
47
  ScAppSwitchPanel,
48
48
  ScAppSwitchRow,
49
+ type ScAppSwitchUtilities,
49
50
  type ScAppSwitchItem,
50
51
  } from "@streamoid/ui";
51
52
  import "@streamoid/ui/dist/index.css"; // once, at your app root
@@ -59,6 +60,11 @@ import "@streamoid/ui/dist/index.css"; // once, at your app root
59
60
  { key: "artifax", name: "Artifax", onSelect: () => open(artifaxUrl) },
60
61
  { key: "photogenix", name: "Photogenix", onSelect: () => open(photogenixUrl) },
61
62
  ]}
63
+ utilities={{
64
+ appVersion: APP_VERSION,
65
+ onClose: () => setAppListOpen(false),
66
+ onHelpAndSupport: openHelp,
67
+ }}
62
68
  />
63
69
  ```
64
70
 
@@ -67,6 +73,8 @@ import "@streamoid/ui/dist/index.css"; // once, at your app root
67
73
  | Prop | Type | Default | Notes |
68
74
  |---|---|---|---|
69
75
  | `apps` | `ScAppSwitchItem[]` | — | **Required.** ⚠️ **Re-sorted internally** into canonical order; unknown products keep their relative order and go last. |
76
+ | `utilities` | `ScAppSwitchUtilities` | – | Adds the standard Changelog + app version, Status Page, and Help and Support rows. |
77
+ | `systemItems` | `ScAppSwitchSystemItem[]` | – | Fully custom utility rows. Overrides `utilities` when supplied. |
70
78
  | `className` | `string` | – | On the root column. |
71
79
  | `style` | `CSSProperties` | – | Merged **after** the base inline styles, so it can override `paddingBottom`. |
72
80
 
@@ -9,14 +9,15 @@ related: [StreamoidSidebar, ScArtifaxSidebar, ScAppSwitchPanel, ScProfilePopup]
9
9
  do_not_confuse_with: [ScProfilePopup, ScWorkspaceSwitcher, ScAppSwitchPanel]
10
10
  used_by: [cxo, artifax, catalogix, photogenix]
11
11
  required_props: [workspaceName, accountName]
12
- also_exports: [ScSidebarWorkspaceTrigger, ScSidebarSearchTrigger, ScSidebarAppIdentity, useStreamoidThemePreference, useStreamoidSidebarPreference]
12
+ also_exports: [ScSidebarWorkspaceTrigger, ScSidebarSearchTrigger, ScSidebarAppIdentity, useStreamoidThemePreference, useStreamoidSidebarPreference, useStreamoidSidebarPopoverPosition]
13
13
  ---
14
14
 
15
15
  # Shared Streamoid sidebar shell
16
16
 
17
17
  `ScWorkspaceAccountMenu` and its companion rail controls keep the constant
18
18
  sidebar chrome identical across Streamoid applications. The host still owns
19
- routes, navigation data, user/workspace data, positioning, and dialogs.
19
+ routes, navigation data, user/workspace data, open state, and dialogs; the
20
+ shared popover-position hook keeps the desktop anchors consistent.
20
21
 
21
22
  ## TL;DR for agents
22
23
 
@@ -26,6 +27,8 @@ routes, navigation data, user/workspace data, positioning, and dialogs.
26
27
  `ScSidebarAppIdentity` for the matching constant rail controls.
27
28
  - Use the two preference hooks so theme and expanded/collapsed state survive an
28
29
  app switch across Streamoid subdomains.
30
+ - Use `useStreamoidSidebarPopoverPosition` for the upper-right workspace menu
31
+ and lower-right app switcher instead of hard-coded host coordinates.
29
32
 
30
33
  ## 1. How to use it
31
34
 
@@ -33,6 +36,7 @@ routes, navigation data, user/workspace data, positioning, and dialogs.
33
36
  import {
34
37
  ScWorkspaceAccountMenu,
35
38
  useStreamoidSidebarPreference,
39
+ useStreamoidSidebarPopoverPosition,
36
40
  useStreamoidThemePreference,
37
41
  } from "@streamoid/ui";
38
42
 
@@ -42,6 +46,14 @@ const sidebar = useStreamoidSidebarPreference({
42
46
  const theme = useStreamoidThemePreference({
43
47
  legacyStorageKeys: ["canvas_theme"],
44
48
  });
49
+ const workspaceMenuPosition = useStreamoidSidebarPopoverPosition(sidebarRef, {
50
+ placement: "top-right",
51
+ width: 320,
52
+ });
53
+ const appSwitcherPosition = useStreamoidSidebarPopoverPosition(sidebarRef, {
54
+ placement: "bottom-right",
55
+ width: 240,
56
+ });
45
57
  ```
46
58
 
47
59
  | Prop | Type | Default | Purpose |
@@ -77,7 +89,8 @@ const theme = useStreamoidThemePreference({
77
89
  ## 2. Where to use it
78
90
 
79
91
  Render the panel beside the top workspace trigger. Render the app identity at
80
- the bottom of the sidebar and open `ScAppSwitchPanel` from that row.
92
+ the bottom of the sidebar and open `ScAppSwitchPanel` from that row. Apply the
93
+ corresponding shared popover-position style to each portalled panel.
81
94
 
82
95
  ## 3. When to use it
83
96
 
@@ -92,8 +105,9 @@ copies of the same shell.
92
105
 
93
106
  ## Gotchas
94
107
 
95
- - The menu is a panel body only; the host owns open state, placement, overlay,
96
- outside-click dismissal, and mobile presentation.
108
+ - The menu is a panel body only; the host owns open state, overlay,
109
+ outside-click dismissal, and mobile presentation. The shared position hook
110
+ owns the desktop anchor and follows sidebar resize changes.
97
111
  - The preference hooks write a parent-domain cookie on `.test.streamoid.com`
98
112
  and `.streamoid.com`. On localhost the cookie is host-only and works across
99
113
  ports.
@@ -160,7 +160,10 @@
160
160
  "artifax"
161
161
  ],
162
162
  "alsoExports": [
163
- "ScAppSwitchRow"
163
+ "ScAppSwitchRow",
164
+ "createStreamoidAppSwitchUtilities",
165
+ "STREAMOID_CHANGELOG_URL",
166
+ "STREAMOID_STATUS_PAGE_URL"
164
167
  ],
165
168
  "exported": true
166
169
  },
@@ -2705,7 +2708,7 @@
2705
2708
  "status": "stable",
2706
2709
  "renders": "div",
2707
2710
  "summary": "Reach for it when:",
2708
- "reachForWhen": "building the standard workspace menu opened from the top-left of a Streamoid application sidebar. - Use `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, and `ScSidebarAppIdentity` for the matching constant rail controls. - Use the two preference hooks so theme and expanded/collapsed state survive an app switch across Streamoid subdomains.",
2711
+ "reachForWhen": "building the standard workspace menu opened from the top-left of a Streamoid application sidebar. - Use `ScSidebarWorkspaceTrigger`, `ScSidebarSearchTrigger`, and `ScSidebarAppIdentity` for the matching constant rail controls. - Use the two preference hooks so theme and expanded/collapsed state survive an app switch across Streamoid subdomains. - Use `useStreamoidSidebarPopoverPosition` for the upper-right workspace menu and lower-right app switcher instead of hard-coded host coordinates.",
2709
2712
  "tags": [
2710
2713
  "sidebar",
2711
2714
  "workspace",
@@ -2740,7 +2743,8 @@
2740
2743
  "ScSidebarSearchTrigger",
2741
2744
  "ScSidebarAppIdentity",
2742
2745
  "useStreamoidThemePreference",
2743
- "useStreamoidSidebarPreference"
2746
+ "useStreamoidSidebarPreference",
2747
+ "useStreamoidSidebarPopoverPosition"
2744
2748
  ],
2745
2749
  "exported": true
2746
2750
  },
@@ -4859,6 +4863,18 @@
4859
4863
  "documentedIn": "ScAppSwitchPanel",
4860
4864
  "doc": "ScAppSwitchPanel.md"
4861
4865
  },
4866
+ "createStreamoidAppSwitchUtilities": {
4867
+ "documentedIn": "ScAppSwitchPanel",
4868
+ "doc": "ScAppSwitchPanel.md"
4869
+ },
4870
+ "STREAMOID_CHANGELOG_URL": {
4871
+ "documentedIn": "ScAppSwitchPanel",
4872
+ "doc": "ScAppSwitchPanel.md"
4873
+ },
4874
+ "STREAMOID_STATUS_PAGE_URL": {
4875
+ "documentedIn": "ScAppSwitchPanel",
4876
+ "doc": "ScAppSwitchPanel.md"
4877
+ },
4862
4878
  "ScAskAgentSlot": {
4863
4879
  "documentedIn": "ScAskAgentButton",
4864
4880
  "doc": "ScAskAgentButton.md"
@@ -4919,6 +4935,10 @@
4919
4935
  "documentedIn": "ScWorkspaceAccountMenu",
4920
4936
  "doc": "ScWorkspaceAccountMenu.md"
4921
4937
  },
4938
+ "useStreamoidSidebarPopoverPosition": {
4939
+ "documentedIn": "ScWorkspaceAccountMenu",
4940
+ "doc": "ScWorkspaceAccountMenu.md"
4941
+ },
4922
4942
  "formatSubAgentLabel": {
4923
4943
  "documentedIn": "ScSubAgent",
4924
4944
  "doc": "ScSubAgent.md"
package/dist/index.css CHANGED
@@ -3932,9 +3932,10 @@
3932
3932
  display: flex;
3933
3933
  flex-direction: column;
3934
3934
  align-items: stretch;
3935
- width: var(--sc-workspace-menu-width, 336px);
3936
- max-height: calc(100vh - 32px);
3935
+ width: min(var(--sc-workspace-menu-width, 336px), calc(100vw - 32px));
3936
+ max-height: calc(100dvh - 80px);
3937
3937
  overflow-y: auto;
3938
+ overscroll-behavior: contain;
3938
3939
  padding: var(--spacing-xl, 12px);
3939
3940
  gap: var(--spacing-lg, 10px);
3940
3941
  border: 0.5px solid var(--alias-border-subtle, #242424);
@@ -4232,6 +4233,37 @@ button.ScSidebarShell_actionRow:hover {
4232
4233
  .ScArtifaxSidebar_profileMain:hover {
4233
4234
  background: var(--alias-fill-neutral-neutral, #1a1a1a);
4234
4235
  }
4236
+ .ScArtifaxSidebar_appIdentityMain {
4237
+ display: flex;
4238
+ flex: 1 1 0;
4239
+ min-width: 0;
4240
+ min-height: 3rem;
4241
+ align-items: center;
4242
+ padding: var(--spacing-md, 0.5rem) var(--spacing-xl, 0.75rem);
4243
+ border: none;
4244
+ border-radius: var(--radius-3xl, 1rem);
4245
+ background: transparent;
4246
+ color: inherit;
4247
+ cursor: pointer;
4248
+ }
4249
+ .ScArtifaxSidebar_appIdentityMain:hover,
4250
+ .ScArtifaxSidebar_appIdentityCollapsed:hover {
4251
+ background: var(--alias-fill-neutral-neutral, #1a1a1a);
4252
+ }
4253
+ .ScArtifaxSidebar_appIdentityCollapsed {
4254
+ display: flex;
4255
+ width: 3rem;
4256
+ height: 3rem;
4257
+ flex-shrink: 0;
4258
+ align-items: center;
4259
+ justify-content: center;
4260
+ padding: var(--spacing-md, 0.5rem);
4261
+ border: none;
4262
+ border-radius: var(--radius-3xl, 1rem);
4263
+ background: transparent;
4264
+ color: inherit;
4265
+ cursor: pointer;
4266
+ }
4235
4267
  .ScArtifaxSidebar_profileRowCollapsed {
4236
4268
  display: flex;
4237
4269
  align-items: center;
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { CSSProperties, HTMLAttributes, ReactNode } from 'react';
2
+ import React__default, { CSSProperties, HTMLAttributes, ReactNode, RefObject } from 'react';
3
3
 
4
4
  interface IScAccessProps {
5
5
  component?: React.JSX.Element;
@@ -68,14 +68,31 @@ interface ScAppSwitchSystemItem {
68
68
  external?: boolean;
69
69
  onSelect: () => void;
70
70
  }
71
+ interface ScAppSwitchUtilities {
72
+ /** Version of the host application, shown beside Changelog. */
73
+ appVersion: string;
74
+ /** Opens the host's help experience (Ask CXO, support panel, or support page). */
75
+ onHelpAndSupport: () => void;
76
+ /** Called before any utility action, normally to close the app switcher. */
77
+ onClose?: () => void;
78
+ changelogUrl?: string;
79
+ statusPageUrl?: string;
80
+ }
71
81
  interface IScAppSwitchPanelProps {
72
82
  apps: ScAppSwitchItem[];
73
83
  systemItems?: ScAppSwitchSystemItem[];
84
+ /** Standard Changelog, Status Page, and Help and Support rows. Prefer this
85
+ * over rebuilding `systemItems` in each Streamoid application. */
86
+ utilities?: ScAppSwitchUtilities;
74
87
  /** Optional section title. Omit it for a compact, divider-only section. */
75
88
  systemLabel?: string;
76
89
  className?: string;
77
90
  style?: CSSProperties;
78
91
  }
92
+ declare const STREAMOID_CHANGELOG_URL = "https://doc.clickup.com/3414296/p/h/3868r-26044/13a22b6f796b2c8";
93
+ declare const STREAMOID_STATUS_PAGE_URL = "https://status.streamoid.com/";
94
+ /** Builds the utility rows shared by every Streamoid app switcher. */
95
+ declare function createStreamoidAppSwitchUtilities(utilities: ScAppSwitchUtilities): ScAppSwitchSystemItem[];
79
96
  /** One switch row: product-only wordmark + the host-supplied subtitle. */
80
97
  declare const ScAppSwitchRow: ({ item, }: {
81
98
  item: ScAppSwitchItem;
@@ -83,7 +100,7 @@ declare const ScAppSwitchRow: ({ item, }: {
83
100
  /** Shared product-switch list — the same across every Streamoid app. The host
84
101
  * passes its product list (current app excluded) and its own logo lives in the
85
102
  * surrounding sidebar; only this content is identical everywhere. */
86
- declare const ScAppSwitchPanel: ({ apps, systemItems, systemLabel, className, style, }: IScAppSwitchPanelProps) => JSX.Element;
103
+ declare const ScAppSwitchPanel: ({ apps, systemItems, utilities, systemLabel, className, style, }: IScAppSwitchPanelProps) => JSX.Element;
87
104
 
88
105
  interface IScBadgesProps {
89
106
  text?: string;
@@ -497,6 +514,12 @@ interface SidebarProfileConfig {
497
514
  avatar?: ReactNode;
498
515
  onClick?: () => void;
499
516
  }
517
+ /** Dedicated footer surface for the current product/app switcher. */
518
+ interface SidebarAppIdentityConfig {
519
+ content: ReactNode;
520
+ onClick?: () => void;
521
+ ariaLabel?: string;
522
+ }
500
523
  interface SidebarIconContext {
501
524
  item: SidebarMenuItemConfig;
502
525
  active: boolean;
@@ -521,6 +544,9 @@ interface StreamoidSidebarProps {
521
544
  expandedLogo?: ReactNode;
522
545
  collapsedLogo?: ReactNode;
523
546
  profile?: SidebarProfileConfig;
547
+ /** Current product identity and app-switcher trigger. This intentionally
548
+ * bypasses the fixed-size profile avatar so wordmarks retain their width. */
549
+ appIdentity?: SidebarAppIdentityConfig;
524
550
  versionText?: string;
525
551
  toggleIcon?: ReactNode | ((expanded: boolean) => ReactNode);
526
552
  /** Footer = profile (flex-1) + a SEPARATE collapse-toggle button beside it,
@@ -553,7 +579,7 @@ interface StreamoidSidebarProps {
553
579
  /** Explicit state override per top item id — takes priority over activeItemId/highlightedItemIds for top items */
554
580
  topItemStates?: Record<string, "default" | "active" | "hover" | "default-highlight" | "default-active">;
555
581
  }
556
- declare function StreamoidSidebar({ expanded, onToggle, resizable, onExpandedChange, config, iconMap, activeItemId, highlightedItemIds, onItemSelect, moreIcon, onMoreClick, expandedLogo, collapsedLogo, profile, versionText, toggleIcon, toggleInProfile, hideFooter, assistantCta, preFooterContent, bodyContent, showBody, switchPanel, switchPanelOpen, onSwitchPanelClose, isMobile, className, style, topItems, topItemStates, }: StreamoidSidebarProps): React$1.JSX.Element;
582
+ declare function StreamoidSidebar({ expanded, onToggle, resizable, onExpandedChange, config, iconMap, activeItemId, highlightedItemIds, onItemSelect, moreIcon, onMoreClick, expandedLogo, collapsedLogo, profile, appIdentity, versionText, toggleIcon, toggleInProfile, hideFooter, assistantCta, preFooterContent, bodyContent, showBody, switchPanel, switchPanelOpen, onSwitchPanelClose, isMobile, className, style, topItems, topItemStates, }: StreamoidSidebarProps): React$1.JSX.Element;
557
583
 
558
584
  declare const SIDEBAR_RESIZE_THRESHOLD_PX = 24;
559
585
  interface SidebarResizeGestureState {
@@ -649,6 +675,33 @@ interface StreamoidSidebarPreferenceState {
649
675
  declare function useStreamoidThemePreference(options?: StreamoidThemePreferenceOptions): StreamoidThemePreferenceState;
650
676
  declare function useStreamoidSidebarPreference(options?: StreamoidSidebarPreferenceOptions): StreamoidSidebarPreferenceState;
651
677
 
678
+ type StreamoidSidebarPopoverPlacement = "top-right" | "bottom-right";
679
+ interface StreamoidSidebarPopoverPositionOptions {
680
+ /** Position the panel beside the top or bottom of the visible sidebar card. */
681
+ placement: StreamoidSidebarPopoverPlacement;
682
+ /** Panel width in pixels. Workspace menus use 320; app switchers use 240. */
683
+ width: number;
684
+ /** Horizontal gap between the sidebar and panel. Defaults to 8px. */
685
+ gap?: number;
686
+ /** Vertical inset from the sidebar card edge. Defaults to 24px. */
687
+ inset?: number;
688
+ }
689
+ type StreamoidSidebarPopoverPosition = CSSProperties & {
690
+ position: "fixed";
691
+ left: number;
692
+ width: number;
693
+ visibility: "hidden" | "visible";
694
+ };
695
+ /**
696
+ * Positions sidebar popovers consistently across Streamoid applications.
697
+ *
698
+ * Pass a ref to any element that contains a Streamoid sidebar. The hook finds
699
+ * the visible sidebar card through `data-streamoid-sidebar-card`, tracks resize
700
+ * changes, and returns fixed-position styles for an upper-right workspace menu
701
+ * or lower-right app switcher. On narrow viewports the panel is kept onscreen.
702
+ */
703
+ declare function useStreamoidSidebarPopoverPosition(sidebarRef: RefObject<HTMLElement | null>, { placement, width, gap, inset, }: StreamoidSidebarPopoverPositionOptions): StreamoidSidebarPopoverPosition;
704
+
652
705
  interface ArtifaxMenuItem {
653
706
  id: string;
654
707
  label: string;
@@ -674,6 +727,12 @@ interface ArtifaxSidebarProfile {
674
727
  avatar?: ReactNode;
675
728
  onClick?: () => void;
676
729
  }
730
+ /** Dedicated footer surface for the current product/app switcher. */
731
+ interface ArtifaxSidebarAppIdentity {
732
+ content: ReactNode;
733
+ onClick?: () => void;
734
+ ariaLabel?: string;
735
+ }
677
736
  interface ArtifaxSidebarCreditWarning {
678
737
  availableCredits: number;
679
738
  remainingPct: number;
@@ -705,6 +764,9 @@ interface IScArtifaxSidebarProps {
705
764
  * (icon-only square) states. */
706
765
  assistantCta?: ArtifaxSidebarAssistantCta | null;
707
766
  profile?: ArtifaxSidebarProfile;
767
+ /** Current product identity and app-switcher trigger. This intentionally
768
+ * bypasses the fixed-size profile avatar so wordmarks retain their width. */
769
+ appIdentity?: ArtifaxSidebarAppIdentity;
708
770
  toggleIcon?: ReactNode | ((expanded: boolean) => ReactNode);
709
771
  /** Hide the legacy footer collapse button when the resize edge is enabled. */
710
772
  hideToggle?: boolean;
@@ -713,7 +775,7 @@ interface IScArtifaxSidebarProps {
713
775
  className?: string;
714
776
  style?: CSSProperties;
715
777
  }
716
- declare const ScArtifaxSidebar: ({ expanded, onToggle, resizable, onExpandedChange, sections, iconMap, activeItemId, onItemSelect, expandedLogo, collapsedLogo, creditWarning, assistantCta, profile, toggleIcon, hideToggle, openSections, onSectionToggle, className, style, }: IScArtifaxSidebarProps) => JSX.Element;
778
+ declare const ScArtifaxSidebar: ({ expanded, onToggle, resizable, onExpandedChange, sections, iconMap, activeItemId, onItemSelect, expandedLogo, collapsedLogo, creditWarning, assistantCta, profile, appIdentity, toggleIcon, hideToggle, openSections, onSectionToggle, className, style, }: IScArtifaxSidebarProps) => JSX.Element;
717
779
 
718
780
  interface CatalogixNavItem {
719
781
  id: string;
@@ -1981,4 +2043,4 @@ interface IScProfilePopupProps extends React.HTMLAttributes<HTMLDivElement> {
1981
2043
  */
1982
2044
  declare const ScProfilePopup: React$1.ForwardRefExoticComponent<IScProfilePopupProps & React$1.RefAttributes<HTMLDivElement>>;
1983
2045
 
1984
- export { type AppcardProduct, type ArtifaxMenuItem, type ArtifaxSection, type ArtifaxSidebarAssistantCta, type ArtifaxSidebarCreditWarning, type ArtifaxSidebarIconContext, type ArtifaxSidebarIconMap, type ArtifaxSidebarIconRenderer, type ArtifaxSidebarProfile, type AssistantCta, type CatalogixNavItem, type CatalogixSidebarCreditWarning, type CatalogixSidebarIconContext, type CatalogixSidebarIconMap, type CatalogixSidebarIconRenderer, type CatalogixSidebarProfile, type CatalogixSwitchApp, CreditWarningBanner, type CreditWarningBannerProps, type DescriptionVisibility, type IInvoiceHistoryMobileProps, type IScAccessProps, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSwitchPanelProps, type IScAppcardLogosProps, type IScArtifaxInviteProps, type IScArtifaxSidebarProps, type IScAskAgentButtonProps, type IScBadgesProps, type IScBeaconProps, type IScBillingHistoryHeaderProps, type IScBillingHistoryTableListProps, type IScBillingLogsTableHeaderProps, type IScBillingLogsTableListProps, type IScBriefCardProps, type IScButtonProps, type IScCalendarDateCompsProps, type IScCalendarProps, type IScCatalogixInviteProps, type IScCatalogixSidebarProps, type IScCatalogixStoreHeaderProps, type IScCatalogixStoreTableListProps, type IScCheckFieldProps, type IScCheckboxProps, type IScCounterProps, type IScCreditsUsageCardMobileProps, type IScCreditsUsageCardProps, type IScCxoCopilotLogoProps, type IScDefaultCardProps, type IScDrawerProps, type IScFieldButtonProps, type IScFileFieldProps, type IScGoogleSignInProps, type IScGuideProps, type IScHDividerProps, type IScHeaderProps, type IScImageFieldProps, type IScInChatListProps, type IScInChatMessageProps, type IScInfoPopupProps, type IScIntialProfileCoverProps, type IScLogoUnitProps, type IScMappingCardProps, type IScMediaApprovalProps, type IScMediaSelectProps, type IScMenuOptionsProps, type IScMobileBottomActionProps, type IScMobileTopNavProps, type IScModalProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScProfileImageUpdateProps, type IScProfileOptionsProps, type IScProfilePopupProps, type IScProfileProps, type IScProfileSettingsCompProps, type IScProfileV2MobileProps, type IScProgressBarProps, type IScQuickPromptProps, type IScRadioProps, type IScReferralCardMobileProps, type IScReferralTableHeaderProps, type IScReferralTableListProps, type IScRoleMobileProps, type IScRoleProps, type IScSelectOption, type IScSelectProps, type IScSelectionListProps, type IScSelectionPillGroupProps, type IScSelectionPillOption, type IScSelectionPillProps, type IScSelectionProps, type IScSettingsNavProps, type IScSettingsTabCompProps, type IScSideBarLogoUnitProps, type IScSidebarIconsProps, type IScSidebarMenuProps, type IScSidebarProfileProps, type IScSidebarProps, type IScSidebarSwitchMenuProps, type IScSliderProps, type IScStoreCardProps, type IScStrLogoProps, type IScStreamoidMascotProps, type IScStreamoidWordmarkProps, type IScSubAgentProps, type IScTabCompProps, type IScTabFieldProps, type IScTabSwitcherProps, type IScTableHeaderProps, type IScTableListMobileProps, type IScTableListProps, type IScTabsProps, type IScTaxonomyPillProps, type IScTextAreaProps, type IScTextFieldProps, type IScThinkingStepIconProps, type IScTodoItem, type IScTodoListProps, type IScToggleSwitchProps, type IScVDividerProps, type IScValueMappingL1Props, type IScVersionProps, type IScWorkspaceCardProps, type IScWorkspaceSettingsMobileProps, type IScWorkspaceSwitchMobileProps, type IScWorkspaceSwitchMobileV2Props, type IUsageHistoryMobileProps, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SIDEBAR_RESIZE_THRESHOLD_PX, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, type ScAppSwitchItem, ScAppSwitchPanel, ScAppSwitchRow, type ScAppSwitchSystemItem, ScAppcardLogos, ScArtifaxInvite, ScArtifaxSidebar, ScAskAgentButton, ScAskAgentSlot, ScBadges, ScBeacon, type ScBeaconTone, ScBillingHistoryHeader, ScBillingHistoryTableList, ScBillingLogsTableHeader, ScBillingLogsTableList, ScBriefCard, ScButton, ScCalendar, ScCalendarDateComps, ScCatalogixInvite, ScCatalogixSidebar, ScCatalogixStoreHeader, ScCatalogixStoreTableList, ScCheckField, ScCheckbox, ScCounter, ScCreditsUsageCard, ScCreditsUsageCardMobile, ScCxoCopilotLogo, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScProfile, ScProfileImageUpdate, ScProfileOptions, ScProfilePopup, type ScProfilePopupThemeMode, ScProfileSettingsComp, ScProfileV2Mobile, ScProgressBar, ScQuickPrompt, ScRadio, ScReferralCardMobile, ScReferralTableHeader, ScReferralTableList, ScRole, ScRoleMobile, ScSelect, ScSelection, ScSelectionList, ScSelectionPill, ScSelectionPillGroup, ScSettingsNav, ScSettingsTabComp, type ScShellThemeMode, ScSideBarLogoUnit, ScSidebar, ScSidebarAppIdentity, type ScSidebarAppIdentityProps, ScSidebarIcons, ScSidebarMenu, ScSidebarProfile, ScSidebarResizeHandle, type ScSidebarResizeHandleProps, ScSidebarSearchTrigger, type ScSidebarSearchTriggerProps, ScSidebarSwitchMenu, ScSidebarWorkspaceTrigger, type ScSidebarWorkspaceTriggerProps, ScSlider, ScStoreCard, ScStrLogo, ScStreamoidMascot, ScStreamoidWordmark, ScSubAgent, type ScTab, ScTabComp, ScTabField, ScTabSwitcher, ScTableHeader, ScTableList, ScTableListMobile, ScTabs, ScTaxonomyPill, ScTextArea, ScTextField, ScThinkingStepIcon, ScTodoList, ScToggleSwitch, ScVDivider, ScValueMappingL1, ScVersion, ScWorkspaceAccountMenu, type ScWorkspaceAccountMenuProps, ScWorkspaceCard, ScWorkspaceSettingsMobile, ScWorkspaceSwitchCard, type ScWorkspaceSwitchCardProps, ScWorkspaceSwitchMobile, ScWorkspaceSwitchMobileV2, type SelectionListState, type SidebarConfig, type SidebarIconContext, type SidebarIconMap, type SidebarIconRenderer, type SidebarMenuItemConfig, type SidebarProduct, type SidebarProfileConfig, type SidebarResizeGestureResult, type SidebarResizeGestureState, type SidebarSectionConfig, StreamoidSidebar, type StreamoidSidebarPreferenceOptions, type StreamoidSidebarPreferenceState, type StreamoidSidebarProps, type StreamoidThemePreferenceOptions, type StreamoidThemePreferenceState, StreamoidWorkspaceSwitcher, type StreamoidWorkspaceSwitcherProps, UsageHistoryMobile, type WorkspaceSwitcherConfig, type WorkspaceSwitcherItem, advanceSidebarResizeGesture, formatSubAgentLabel, hasCollapsedMark, useStreamoidSidebarPreference, useStreamoidThemePreference };
2046
+ export { type AppcardProduct, type ArtifaxMenuItem, type ArtifaxSection, type ArtifaxSidebarAppIdentity, type ArtifaxSidebarAssistantCta, type ArtifaxSidebarCreditWarning, type ArtifaxSidebarIconContext, type ArtifaxSidebarIconMap, type ArtifaxSidebarIconRenderer, type ArtifaxSidebarProfile, type AssistantCta, type CatalogixNavItem, type CatalogixSidebarCreditWarning, type CatalogixSidebarIconContext, type CatalogixSidebarIconMap, type CatalogixSidebarIconRenderer, type CatalogixSidebarProfile, type CatalogixSwitchApp, CreditWarningBanner, type CreditWarningBannerProps, type DescriptionVisibility, type IInvoiceHistoryMobileProps, type IScAccessProps, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSwitchPanelProps, type IScAppcardLogosProps, type IScArtifaxInviteProps, type IScArtifaxSidebarProps, type IScAskAgentButtonProps, type IScBadgesProps, type IScBeaconProps, type IScBillingHistoryHeaderProps, type IScBillingHistoryTableListProps, type IScBillingLogsTableHeaderProps, type IScBillingLogsTableListProps, type IScBriefCardProps, type IScButtonProps, type IScCalendarDateCompsProps, type IScCalendarProps, type IScCatalogixInviteProps, type IScCatalogixSidebarProps, type IScCatalogixStoreHeaderProps, type IScCatalogixStoreTableListProps, type IScCheckFieldProps, type IScCheckboxProps, type IScCounterProps, type IScCreditsUsageCardMobileProps, type IScCreditsUsageCardProps, type IScCxoCopilotLogoProps, type IScDefaultCardProps, type IScDrawerProps, type IScFieldButtonProps, type IScFileFieldProps, type IScGoogleSignInProps, type IScGuideProps, type IScHDividerProps, type IScHeaderProps, type IScImageFieldProps, type IScInChatListProps, type IScInChatMessageProps, type IScInfoPopupProps, type IScIntialProfileCoverProps, type IScLogoUnitProps, type IScMappingCardProps, type IScMediaApprovalProps, type IScMediaSelectProps, type IScMenuOptionsProps, type IScMobileBottomActionProps, type IScMobileTopNavProps, type IScModalProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScProfileImageUpdateProps, type IScProfileOptionsProps, type IScProfilePopupProps, type IScProfileProps, type IScProfileSettingsCompProps, type IScProfileV2MobileProps, type IScProgressBarProps, type IScQuickPromptProps, type IScRadioProps, type IScReferralCardMobileProps, type IScReferralTableHeaderProps, type IScReferralTableListProps, type IScRoleMobileProps, type IScRoleProps, type IScSelectOption, type IScSelectProps, type IScSelectionListProps, type IScSelectionPillGroupProps, type IScSelectionPillOption, type IScSelectionPillProps, type IScSelectionProps, type IScSettingsNavProps, type IScSettingsTabCompProps, type IScSideBarLogoUnitProps, type IScSidebarIconsProps, type IScSidebarMenuProps, type IScSidebarProfileProps, type IScSidebarProps, type IScSidebarSwitchMenuProps, type IScSliderProps, type IScStoreCardProps, type IScStrLogoProps, type IScStreamoidMascotProps, type IScStreamoidWordmarkProps, type IScSubAgentProps, type IScTabCompProps, type IScTabFieldProps, type IScTabSwitcherProps, type IScTableHeaderProps, type IScTableListMobileProps, type IScTableListProps, type IScTabsProps, type IScTaxonomyPillProps, type IScTextAreaProps, type IScTextFieldProps, type IScThinkingStepIconProps, type IScTodoItem, type IScTodoListProps, type IScToggleSwitchProps, type IScVDividerProps, type IScValueMappingL1Props, type IScVersionProps, type IScWorkspaceCardProps, type IScWorkspaceSettingsMobileProps, type IScWorkspaceSwitchMobileProps, type IScWorkspaceSwitchMobileV2Props, type IUsageHistoryMobileProps, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, type ScAppSwitchItem, ScAppSwitchPanel, ScAppSwitchRow, type ScAppSwitchSystemItem, type ScAppSwitchUtilities, ScAppcardLogos, ScArtifaxInvite, ScArtifaxSidebar, ScAskAgentButton, ScAskAgentSlot, ScBadges, ScBeacon, type ScBeaconTone, ScBillingHistoryHeader, ScBillingHistoryTableList, ScBillingLogsTableHeader, ScBillingLogsTableList, ScBriefCard, ScButton, ScCalendar, ScCalendarDateComps, ScCatalogixInvite, ScCatalogixSidebar, ScCatalogixStoreHeader, ScCatalogixStoreTableList, ScCheckField, ScCheckbox, ScCounter, ScCreditsUsageCard, ScCreditsUsageCardMobile, ScCxoCopilotLogo, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScProfile, ScProfileImageUpdate, ScProfileOptions, ScProfilePopup, type ScProfilePopupThemeMode, ScProfileSettingsComp, ScProfileV2Mobile, ScProgressBar, ScQuickPrompt, ScRadio, ScReferralCardMobile, ScReferralTableHeader, ScReferralTableList, ScRole, ScRoleMobile, ScSelect, ScSelection, ScSelectionList, ScSelectionPill, ScSelectionPillGroup, ScSettingsNav, ScSettingsTabComp, type ScShellThemeMode, ScSideBarLogoUnit, ScSidebar, ScSidebarAppIdentity, type ScSidebarAppIdentityProps, ScSidebarIcons, ScSidebarMenu, ScSidebarProfile, ScSidebarResizeHandle, type ScSidebarResizeHandleProps, ScSidebarSearchTrigger, type ScSidebarSearchTriggerProps, ScSidebarSwitchMenu, ScSidebarWorkspaceTrigger, type ScSidebarWorkspaceTriggerProps, ScSlider, ScStoreCard, ScStrLogo, ScStreamoidMascot, ScStreamoidWordmark, ScSubAgent, type ScTab, ScTabComp, ScTabField, ScTabSwitcher, ScTableHeader, ScTableList, ScTableListMobile, ScTabs, ScTaxonomyPill, ScTextArea, ScTextField, ScThinkingStepIcon, ScTodoList, ScToggleSwitch, ScVDivider, ScValueMappingL1, ScVersion, ScWorkspaceAccountMenu, type ScWorkspaceAccountMenuProps, ScWorkspaceCard, ScWorkspaceSettingsMobile, ScWorkspaceSwitchCard, type ScWorkspaceSwitchCardProps, ScWorkspaceSwitchMobile, ScWorkspaceSwitchMobileV2, type SelectionListState, type SidebarAppIdentityConfig, type SidebarConfig, type SidebarIconContext, type SidebarIconMap, type SidebarIconRenderer, type SidebarMenuItemConfig, type SidebarProduct, type SidebarProfileConfig, type SidebarResizeGestureResult, type SidebarResizeGestureState, type SidebarSectionConfig, StreamoidSidebar, type StreamoidSidebarPopoverPlacement, type StreamoidSidebarPopoverPosition, type StreamoidSidebarPopoverPositionOptions, type StreamoidSidebarPreferenceOptions, type StreamoidSidebarPreferenceState, type StreamoidSidebarProps, type StreamoidThemePreferenceOptions, type StreamoidThemePreferenceState, StreamoidWorkspaceSwitcher, type StreamoidWorkspaceSwitcherProps, UsageHistoryMobile, type WorkspaceSwitcherConfig, type WorkspaceSwitcherItem, advanceSidebarResizeGesture, createStreamoidAppSwitchUtilities, formatSubAgentLabel, hasCollapsedMark, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React$1 from 'react';
2
- import React__default, { CSSProperties, HTMLAttributes, ReactNode } from 'react';
2
+ import React__default, { CSSProperties, HTMLAttributes, ReactNode, RefObject } from 'react';
3
3
 
4
4
  interface IScAccessProps {
5
5
  component?: React.JSX.Element;
@@ -68,14 +68,31 @@ interface ScAppSwitchSystemItem {
68
68
  external?: boolean;
69
69
  onSelect: () => void;
70
70
  }
71
+ interface ScAppSwitchUtilities {
72
+ /** Version of the host application, shown beside Changelog. */
73
+ appVersion: string;
74
+ /** Opens the host's help experience (Ask CXO, support panel, or support page). */
75
+ onHelpAndSupport: () => void;
76
+ /** Called before any utility action, normally to close the app switcher. */
77
+ onClose?: () => void;
78
+ changelogUrl?: string;
79
+ statusPageUrl?: string;
80
+ }
71
81
  interface IScAppSwitchPanelProps {
72
82
  apps: ScAppSwitchItem[];
73
83
  systemItems?: ScAppSwitchSystemItem[];
84
+ /** Standard Changelog, Status Page, and Help and Support rows. Prefer this
85
+ * over rebuilding `systemItems` in each Streamoid application. */
86
+ utilities?: ScAppSwitchUtilities;
74
87
  /** Optional section title. Omit it for a compact, divider-only section. */
75
88
  systemLabel?: string;
76
89
  className?: string;
77
90
  style?: CSSProperties;
78
91
  }
92
+ declare const STREAMOID_CHANGELOG_URL = "https://doc.clickup.com/3414296/p/h/3868r-26044/13a22b6f796b2c8";
93
+ declare const STREAMOID_STATUS_PAGE_URL = "https://status.streamoid.com/";
94
+ /** Builds the utility rows shared by every Streamoid app switcher. */
95
+ declare function createStreamoidAppSwitchUtilities(utilities: ScAppSwitchUtilities): ScAppSwitchSystemItem[];
79
96
  /** One switch row: product-only wordmark + the host-supplied subtitle. */
80
97
  declare const ScAppSwitchRow: ({ item, }: {
81
98
  item: ScAppSwitchItem;
@@ -83,7 +100,7 @@ declare const ScAppSwitchRow: ({ item, }: {
83
100
  /** Shared product-switch list — the same across every Streamoid app. The host
84
101
  * passes its product list (current app excluded) and its own logo lives in the
85
102
  * surrounding sidebar; only this content is identical everywhere. */
86
- declare const ScAppSwitchPanel: ({ apps, systemItems, systemLabel, className, style, }: IScAppSwitchPanelProps) => JSX.Element;
103
+ declare const ScAppSwitchPanel: ({ apps, systemItems, utilities, systemLabel, className, style, }: IScAppSwitchPanelProps) => JSX.Element;
87
104
 
88
105
  interface IScBadgesProps {
89
106
  text?: string;
@@ -497,6 +514,12 @@ interface SidebarProfileConfig {
497
514
  avatar?: ReactNode;
498
515
  onClick?: () => void;
499
516
  }
517
+ /** Dedicated footer surface for the current product/app switcher. */
518
+ interface SidebarAppIdentityConfig {
519
+ content: ReactNode;
520
+ onClick?: () => void;
521
+ ariaLabel?: string;
522
+ }
500
523
  interface SidebarIconContext {
501
524
  item: SidebarMenuItemConfig;
502
525
  active: boolean;
@@ -521,6 +544,9 @@ interface StreamoidSidebarProps {
521
544
  expandedLogo?: ReactNode;
522
545
  collapsedLogo?: ReactNode;
523
546
  profile?: SidebarProfileConfig;
547
+ /** Current product identity and app-switcher trigger. This intentionally
548
+ * bypasses the fixed-size profile avatar so wordmarks retain their width. */
549
+ appIdentity?: SidebarAppIdentityConfig;
524
550
  versionText?: string;
525
551
  toggleIcon?: ReactNode | ((expanded: boolean) => ReactNode);
526
552
  /** Footer = profile (flex-1) + a SEPARATE collapse-toggle button beside it,
@@ -553,7 +579,7 @@ interface StreamoidSidebarProps {
553
579
  /** Explicit state override per top item id — takes priority over activeItemId/highlightedItemIds for top items */
554
580
  topItemStates?: Record<string, "default" | "active" | "hover" | "default-highlight" | "default-active">;
555
581
  }
556
- declare function StreamoidSidebar({ expanded, onToggle, resizable, onExpandedChange, config, iconMap, activeItemId, highlightedItemIds, onItemSelect, moreIcon, onMoreClick, expandedLogo, collapsedLogo, profile, versionText, toggleIcon, toggleInProfile, hideFooter, assistantCta, preFooterContent, bodyContent, showBody, switchPanel, switchPanelOpen, onSwitchPanelClose, isMobile, className, style, topItems, topItemStates, }: StreamoidSidebarProps): React$1.JSX.Element;
582
+ declare function StreamoidSidebar({ expanded, onToggle, resizable, onExpandedChange, config, iconMap, activeItemId, highlightedItemIds, onItemSelect, moreIcon, onMoreClick, expandedLogo, collapsedLogo, profile, appIdentity, versionText, toggleIcon, toggleInProfile, hideFooter, assistantCta, preFooterContent, bodyContent, showBody, switchPanel, switchPanelOpen, onSwitchPanelClose, isMobile, className, style, topItems, topItemStates, }: StreamoidSidebarProps): React$1.JSX.Element;
557
583
 
558
584
  declare const SIDEBAR_RESIZE_THRESHOLD_PX = 24;
559
585
  interface SidebarResizeGestureState {
@@ -649,6 +675,33 @@ interface StreamoidSidebarPreferenceState {
649
675
  declare function useStreamoidThemePreference(options?: StreamoidThemePreferenceOptions): StreamoidThemePreferenceState;
650
676
  declare function useStreamoidSidebarPreference(options?: StreamoidSidebarPreferenceOptions): StreamoidSidebarPreferenceState;
651
677
 
678
+ type StreamoidSidebarPopoverPlacement = "top-right" | "bottom-right";
679
+ interface StreamoidSidebarPopoverPositionOptions {
680
+ /** Position the panel beside the top or bottom of the visible sidebar card. */
681
+ placement: StreamoidSidebarPopoverPlacement;
682
+ /** Panel width in pixels. Workspace menus use 320; app switchers use 240. */
683
+ width: number;
684
+ /** Horizontal gap between the sidebar and panel. Defaults to 8px. */
685
+ gap?: number;
686
+ /** Vertical inset from the sidebar card edge. Defaults to 24px. */
687
+ inset?: number;
688
+ }
689
+ type StreamoidSidebarPopoverPosition = CSSProperties & {
690
+ position: "fixed";
691
+ left: number;
692
+ width: number;
693
+ visibility: "hidden" | "visible";
694
+ };
695
+ /**
696
+ * Positions sidebar popovers consistently across Streamoid applications.
697
+ *
698
+ * Pass a ref to any element that contains a Streamoid sidebar. The hook finds
699
+ * the visible sidebar card through `data-streamoid-sidebar-card`, tracks resize
700
+ * changes, and returns fixed-position styles for an upper-right workspace menu
701
+ * or lower-right app switcher. On narrow viewports the panel is kept onscreen.
702
+ */
703
+ declare function useStreamoidSidebarPopoverPosition(sidebarRef: RefObject<HTMLElement | null>, { placement, width, gap, inset, }: StreamoidSidebarPopoverPositionOptions): StreamoidSidebarPopoverPosition;
704
+
652
705
  interface ArtifaxMenuItem {
653
706
  id: string;
654
707
  label: string;
@@ -674,6 +727,12 @@ interface ArtifaxSidebarProfile {
674
727
  avatar?: ReactNode;
675
728
  onClick?: () => void;
676
729
  }
730
+ /** Dedicated footer surface for the current product/app switcher. */
731
+ interface ArtifaxSidebarAppIdentity {
732
+ content: ReactNode;
733
+ onClick?: () => void;
734
+ ariaLabel?: string;
735
+ }
677
736
  interface ArtifaxSidebarCreditWarning {
678
737
  availableCredits: number;
679
738
  remainingPct: number;
@@ -705,6 +764,9 @@ interface IScArtifaxSidebarProps {
705
764
  * (icon-only square) states. */
706
765
  assistantCta?: ArtifaxSidebarAssistantCta | null;
707
766
  profile?: ArtifaxSidebarProfile;
767
+ /** Current product identity and app-switcher trigger. This intentionally
768
+ * bypasses the fixed-size profile avatar so wordmarks retain their width. */
769
+ appIdentity?: ArtifaxSidebarAppIdentity;
708
770
  toggleIcon?: ReactNode | ((expanded: boolean) => ReactNode);
709
771
  /** Hide the legacy footer collapse button when the resize edge is enabled. */
710
772
  hideToggle?: boolean;
@@ -713,7 +775,7 @@ interface IScArtifaxSidebarProps {
713
775
  className?: string;
714
776
  style?: CSSProperties;
715
777
  }
716
- declare const ScArtifaxSidebar: ({ expanded, onToggle, resizable, onExpandedChange, sections, iconMap, activeItemId, onItemSelect, expandedLogo, collapsedLogo, creditWarning, assistantCta, profile, toggleIcon, hideToggle, openSections, onSectionToggle, className, style, }: IScArtifaxSidebarProps) => JSX.Element;
778
+ declare const ScArtifaxSidebar: ({ expanded, onToggle, resizable, onExpandedChange, sections, iconMap, activeItemId, onItemSelect, expandedLogo, collapsedLogo, creditWarning, assistantCta, profile, appIdentity, toggleIcon, hideToggle, openSections, onSectionToggle, className, style, }: IScArtifaxSidebarProps) => JSX.Element;
717
779
 
718
780
  interface CatalogixNavItem {
719
781
  id: string;
@@ -1981,4 +2043,4 @@ interface IScProfilePopupProps extends React.HTMLAttributes<HTMLDivElement> {
1981
2043
  */
1982
2044
  declare const ScProfilePopup: React$1.ForwardRefExoticComponent<IScProfilePopupProps & React$1.RefAttributes<HTMLDivElement>>;
1983
2045
 
1984
- export { type AppcardProduct, type ArtifaxMenuItem, type ArtifaxSection, type ArtifaxSidebarAssistantCta, type ArtifaxSidebarCreditWarning, type ArtifaxSidebarIconContext, type ArtifaxSidebarIconMap, type ArtifaxSidebarIconRenderer, type ArtifaxSidebarProfile, type AssistantCta, type CatalogixNavItem, type CatalogixSidebarCreditWarning, type CatalogixSidebarIconContext, type CatalogixSidebarIconMap, type CatalogixSidebarIconRenderer, type CatalogixSidebarProfile, type CatalogixSwitchApp, CreditWarningBanner, type CreditWarningBannerProps, type DescriptionVisibility, type IInvoiceHistoryMobileProps, type IScAccessProps, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSwitchPanelProps, type IScAppcardLogosProps, type IScArtifaxInviteProps, type IScArtifaxSidebarProps, type IScAskAgentButtonProps, type IScBadgesProps, type IScBeaconProps, type IScBillingHistoryHeaderProps, type IScBillingHistoryTableListProps, type IScBillingLogsTableHeaderProps, type IScBillingLogsTableListProps, type IScBriefCardProps, type IScButtonProps, type IScCalendarDateCompsProps, type IScCalendarProps, type IScCatalogixInviteProps, type IScCatalogixSidebarProps, type IScCatalogixStoreHeaderProps, type IScCatalogixStoreTableListProps, type IScCheckFieldProps, type IScCheckboxProps, type IScCounterProps, type IScCreditsUsageCardMobileProps, type IScCreditsUsageCardProps, type IScCxoCopilotLogoProps, type IScDefaultCardProps, type IScDrawerProps, type IScFieldButtonProps, type IScFileFieldProps, type IScGoogleSignInProps, type IScGuideProps, type IScHDividerProps, type IScHeaderProps, type IScImageFieldProps, type IScInChatListProps, type IScInChatMessageProps, type IScInfoPopupProps, type IScIntialProfileCoverProps, type IScLogoUnitProps, type IScMappingCardProps, type IScMediaApprovalProps, type IScMediaSelectProps, type IScMenuOptionsProps, type IScMobileBottomActionProps, type IScMobileTopNavProps, type IScModalProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScProfileImageUpdateProps, type IScProfileOptionsProps, type IScProfilePopupProps, type IScProfileProps, type IScProfileSettingsCompProps, type IScProfileV2MobileProps, type IScProgressBarProps, type IScQuickPromptProps, type IScRadioProps, type IScReferralCardMobileProps, type IScReferralTableHeaderProps, type IScReferralTableListProps, type IScRoleMobileProps, type IScRoleProps, type IScSelectOption, type IScSelectProps, type IScSelectionListProps, type IScSelectionPillGroupProps, type IScSelectionPillOption, type IScSelectionPillProps, type IScSelectionProps, type IScSettingsNavProps, type IScSettingsTabCompProps, type IScSideBarLogoUnitProps, type IScSidebarIconsProps, type IScSidebarMenuProps, type IScSidebarProfileProps, type IScSidebarProps, type IScSidebarSwitchMenuProps, type IScSliderProps, type IScStoreCardProps, type IScStrLogoProps, type IScStreamoidMascotProps, type IScStreamoidWordmarkProps, type IScSubAgentProps, type IScTabCompProps, type IScTabFieldProps, type IScTabSwitcherProps, type IScTableHeaderProps, type IScTableListMobileProps, type IScTableListProps, type IScTabsProps, type IScTaxonomyPillProps, type IScTextAreaProps, type IScTextFieldProps, type IScThinkingStepIconProps, type IScTodoItem, type IScTodoListProps, type IScToggleSwitchProps, type IScVDividerProps, type IScValueMappingL1Props, type IScVersionProps, type IScWorkspaceCardProps, type IScWorkspaceSettingsMobileProps, type IScWorkspaceSwitchMobileProps, type IScWorkspaceSwitchMobileV2Props, type IUsageHistoryMobileProps, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SIDEBAR_RESIZE_THRESHOLD_PX, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, type ScAppSwitchItem, ScAppSwitchPanel, ScAppSwitchRow, type ScAppSwitchSystemItem, ScAppcardLogos, ScArtifaxInvite, ScArtifaxSidebar, ScAskAgentButton, ScAskAgentSlot, ScBadges, ScBeacon, type ScBeaconTone, ScBillingHistoryHeader, ScBillingHistoryTableList, ScBillingLogsTableHeader, ScBillingLogsTableList, ScBriefCard, ScButton, ScCalendar, ScCalendarDateComps, ScCatalogixInvite, ScCatalogixSidebar, ScCatalogixStoreHeader, ScCatalogixStoreTableList, ScCheckField, ScCheckbox, ScCounter, ScCreditsUsageCard, ScCreditsUsageCardMobile, ScCxoCopilotLogo, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScProfile, ScProfileImageUpdate, ScProfileOptions, ScProfilePopup, type ScProfilePopupThemeMode, ScProfileSettingsComp, ScProfileV2Mobile, ScProgressBar, ScQuickPrompt, ScRadio, ScReferralCardMobile, ScReferralTableHeader, ScReferralTableList, ScRole, ScRoleMobile, ScSelect, ScSelection, ScSelectionList, ScSelectionPill, ScSelectionPillGroup, ScSettingsNav, ScSettingsTabComp, type ScShellThemeMode, ScSideBarLogoUnit, ScSidebar, ScSidebarAppIdentity, type ScSidebarAppIdentityProps, ScSidebarIcons, ScSidebarMenu, ScSidebarProfile, ScSidebarResizeHandle, type ScSidebarResizeHandleProps, ScSidebarSearchTrigger, type ScSidebarSearchTriggerProps, ScSidebarSwitchMenu, ScSidebarWorkspaceTrigger, type ScSidebarWorkspaceTriggerProps, ScSlider, ScStoreCard, ScStrLogo, ScStreamoidMascot, ScStreamoidWordmark, ScSubAgent, type ScTab, ScTabComp, ScTabField, ScTabSwitcher, ScTableHeader, ScTableList, ScTableListMobile, ScTabs, ScTaxonomyPill, ScTextArea, ScTextField, ScThinkingStepIcon, ScTodoList, ScToggleSwitch, ScVDivider, ScValueMappingL1, ScVersion, ScWorkspaceAccountMenu, type ScWorkspaceAccountMenuProps, ScWorkspaceCard, ScWorkspaceSettingsMobile, ScWorkspaceSwitchCard, type ScWorkspaceSwitchCardProps, ScWorkspaceSwitchMobile, ScWorkspaceSwitchMobileV2, type SelectionListState, type SidebarConfig, type SidebarIconContext, type SidebarIconMap, type SidebarIconRenderer, type SidebarMenuItemConfig, type SidebarProduct, type SidebarProfileConfig, type SidebarResizeGestureResult, type SidebarResizeGestureState, type SidebarSectionConfig, StreamoidSidebar, type StreamoidSidebarPreferenceOptions, type StreamoidSidebarPreferenceState, type StreamoidSidebarProps, type StreamoidThemePreferenceOptions, type StreamoidThemePreferenceState, StreamoidWorkspaceSwitcher, type StreamoidWorkspaceSwitcherProps, UsageHistoryMobile, type WorkspaceSwitcherConfig, type WorkspaceSwitcherItem, advanceSidebarResizeGesture, formatSubAgentLabel, hasCollapsedMark, useStreamoidSidebarPreference, useStreamoidThemePreference };
2046
+ export { type AppcardProduct, type ArtifaxMenuItem, type ArtifaxSection, type ArtifaxSidebarAppIdentity, type ArtifaxSidebarAssistantCta, type ArtifaxSidebarCreditWarning, type ArtifaxSidebarIconContext, type ArtifaxSidebarIconMap, type ArtifaxSidebarIconRenderer, type ArtifaxSidebarProfile, type AssistantCta, type CatalogixNavItem, type CatalogixSidebarCreditWarning, type CatalogixSidebarIconContext, type CatalogixSidebarIconMap, type CatalogixSidebarIconRenderer, type CatalogixSidebarProfile, type CatalogixSwitchApp, CreditWarningBanner, type CreditWarningBannerProps, type DescriptionVisibility, type IInvoiceHistoryMobileProps, type IScAccessProps, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSwitchPanelProps, type IScAppcardLogosProps, type IScArtifaxInviteProps, type IScArtifaxSidebarProps, type IScAskAgentButtonProps, type IScBadgesProps, type IScBeaconProps, type IScBillingHistoryHeaderProps, type IScBillingHistoryTableListProps, type IScBillingLogsTableHeaderProps, type IScBillingLogsTableListProps, type IScBriefCardProps, type IScButtonProps, type IScCalendarDateCompsProps, type IScCalendarProps, type IScCatalogixInviteProps, type IScCatalogixSidebarProps, type IScCatalogixStoreHeaderProps, type IScCatalogixStoreTableListProps, type IScCheckFieldProps, type IScCheckboxProps, type IScCounterProps, type IScCreditsUsageCardMobileProps, type IScCreditsUsageCardProps, type IScCxoCopilotLogoProps, type IScDefaultCardProps, type IScDrawerProps, type IScFieldButtonProps, type IScFileFieldProps, type IScGoogleSignInProps, type IScGuideProps, type IScHDividerProps, type IScHeaderProps, type IScImageFieldProps, type IScInChatListProps, type IScInChatMessageProps, type IScInfoPopupProps, type IScIntialProfileCoverProps, type IScLogoUnitProps, type IScMappingCardProps, type IScMediaApprovalProps, type IScMediaSelectProps, type IScMenuOptionsProps, type IScMobileBottomActionProps, type IScMobileTopNavProps, type IScModalProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScProfileImageUpdateProps, type IScProfileOptionsProps, type IScProfilePopupProps, type IScProfileProps, type IScProfileSettingsCompProps, type IScProfileV2MobileProps, type IScProgressBarProps, type IScQuickPromptProps, type IScRadioProps, type IScReferralCardMobileProps, type IScReferralTableHeaderProps, type IScReferralTableListProps, type IScRoleMobileProps, type IScRoleProps, type IScSelectOption, type IScSelectProps, type IScSelectionListProps, type IScSelectionPillGroupProps, type IScSelectionPillOption, type IScSelectionPillProps, type IScSelectionProps, type IScSettingsNavProps, type IScSettingsTabCompProps, type IScSideBarLogoUnitProps, type IScSidebarIconsProps, type IScSidebarMenuProps, type IScSidebarProfileProps, type IScSidebarProps, type IScSidebarSwitchMenuProps, type IScSliderProps, type IScStoreCardProps, type IScStrLogoProps, type IScStreamoidMascotProps, type IScStreamoidWordmarkProps, type IScSubAgentProps, type IScTabCompProps, type IScTabFieldProps, type IScTabSwitcherProps, type IScTableHeaderProps, type IScTableListMobileProps, type IScTableListProps, type IScTabsProps, type IScTaxonomyPillProps, type IScTextAreaProps, type IScTextFieldProps, type IScThinkingStepIconProps, type IScTodoItem, type IScTodoListProps, type IScToggleSwitchProps, type IScVDividerProps, type IScValueMappingL1Props, type IScVersionProps, type IScWorkspaceCardProps, type IScWorkspaceSettingsMobileProps, type IScWorkspaceSwitchMobileProps, type IScWorkspaceSwitchMobileV2Props, type IUsageHistoryMobileProps, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, type ScAppSwitchItem, ScAppSwitchPanel, ScAppSwitchRow, type ScAppSwitchSystemItem, type ScAppSwitchUtilities, ScAppcardLogos, ScArtifaxInvite, ScArtifaxSidebar, ScAskAgentButton, ScAskAgentSlot, ScBadges, ScBeacon, type ScBeaconTone, ScBillingHistoryHeader, ScBillingHistoryTableList, ScBillingLogsTableHeader, ScBillingLogsTableList, ScBriefCard, ScButton, ScCalendar, ScCalendarDateComps, ScCatalogixInvite, ScCatalogixSidebar, ScCatalogixStoreHeader, ScCatalogixStoreTableList, ScCheckField, ScCheckbox, ScCounter, ScCreditsUsageCard, ScCreditsUsageCardMobile, ScCxoCopilotLogo, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScProfile, ScProfileImageUpdate, ScProfileOptions, ScProfilePopup, type ScProfilePopupThemeMode, ScProfileSettingsComp, ScProfileV2Mobile, ScProgressBar, ScQuickPrompt, ScRadio, ScReferralCardMobile, ScReferralTableHeader, ScReferralTableList, ScRole, ScRoleMobile, ScSelect, ScSelection, ScSelectionList, ScSelectionPill, ScSelectionPillGroup, ScSettingsNav, ScSettingsTabComp, type ScShellThemeMode, ScSideBarLogoUnit, ScSidebar, ScSidebarAppIdentity, type ScSidebarAppIdentityProps, ScSidebarIcons, ScSidebarMenu, ScSidebarProfile, ScSidebarResizeHandle, type ScSidebarResizeHandleProps, ScSidebarSearchTrigger, type ScSidebarSearchTriggerProps, ScSidebarSwitchMenu, ScSidebarWorkspaceTrigger, type ScSidebarWorkspaceTriggerProps, ScSlider, ScStoreCard, ScStrLogo, ScStreamoidMascot, ScStreamoidWordmark, ScSubAgent, type ScTab, ScTabComp, ScTabField, ScTabSwitcher, ScTableHeader, ScTableList, ScTableListMobile, ScTabs, ScTaxonomyPill, ScTextArea, ScTextField, ScThinkingStepIcon, ScTodoList, ScToggleSwitch, ScVDivider, ScValueMappingL1, ScVersion, ScWorkspaceAccountMenu, type ScWorkspaceAccountMenuProps, ScWorkspaceCard, ScWorkspaceSettingsMobile, ScWorkspaceSwitchCard, type ScWorkspaceSwitchCardProps, ScWorkspaceSwitchMobile, ScWorkspaceSwitchMobileV2, type SelectionListState, type SidebarAppIdentityConfig, type SidebarConfig, type SidebarIconContext, type SidebarIconMap, type SidebarIconRenderer, type SidebarMenuItemConfig, type SidebarProduct, type SidebarProfileConfig, type SidebarResizeGestureResult, type SidebarResizeGestureState, type SidebarSectionConfig, StreamoidSidebar, type StreamoidSidebarPopoverPlacement, type StreamoidSidebarPopoverPosition, type StreamoidSidebarPopoverPositionOptions, type StreamoidSidebarPreferenceOptions, type StreamoidSidebarPreferenceState, type StreamoidSidebarProps, type StreamoidThemePreferenceOptions, type StreamoidThemePreferenceState, StreamoidWorkspaceSwitcher, type StreamoidWorkspaceSwitcherProps, UsageHistoryMobile, type WorkspaceSwitcherConfig, type WorkspaceSwitcherItem, advanceSidebarResizeGesture, createStreamoidAppSwitchUtilities, formatSubAgentLabel, hasCollapsedMark, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };