@streamoid/ui 0.6.53 → 0.6.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  # @streamoid/ui — component router (for AI agents)
2
2
 
3
- 127 components. Full docs for each live beside this file as `<ScName>.md`;
3
+ 128 components. Full docs for each live beside this file as `<ScName>.md`;
4
4
  the same metadata is machine-readable in `components.json`.
5
5
 
6
6
  **How to use this file:** scan for the job you need below, then open only that
@@ -141,6 +141,8 @@ theme-aware (dark on `:root`, light override) — never hardcode a colour.
141
141
  - **`ScInfoPopup`** — use when a label or a table header needs a short explanation, and you want the standard ⓘ affordance next to it.
142
142
  - **`ScMenuOptions`** — use when you need a row in a profile flyout, an account/settings menu, or a kebab/overflow menu.
143
143
  - **`ScModal`** — use when you need a centered dialog that blocks the page — confirm, create/edit form, image preview, invite flow.
144
+ - **`ScNewVersionNotice`** — use when the app is a long-lived SPA tab and a deploy should not wait for the user to happen to reload.
145
+ - also documented here: `useNewVersionAvailable`, `parseVersionManifest`, `shouldPromptForNewVersion`
144
146
  - **`ScPagination`** — use when you have a server-paged table or list and you already hold `page` + `offset` state and a refetch function.
145
147
  - **`ScPopUpMenu`** _(legacy)_ — use when never, in new code.
146
148
  - **`ScProgressBar`** — use when you have a known-percentage operation to show — an upload, a batch render, credits consumed.
@@ -245,6 +247,7 @@ theme-aware (dark on `:root`, light override) — never hardcode a colour.
245
247
  | `ScMobileBottomAction` | `ScButton`, `ScMobileTopNav`, `ScFieldButton`, `ScOnlyIcon` |
246
248
  | `ScMobileTopNav` | `ScHeader`, `ScTableHeader`, `ScSideBarLogoUnit`, `ScMobileBottomAction`, `ScTabSwitcher` |
247
249
  | `ScModal` | `ScDrawer`, `ScInfoPopup`, `ScProfilePopup` |
250
+ | `ScNewVersionNotice` | `ScBadges`, `CreditWarningBanner` |
248
251
  | `ScOnlyIcon` | `ScOnlyField`, `ScButton`, `ScFieldButton`, `ScSidebarIcons` |
249
252
  | `ScPagination` | `ScCounter`, `ScTabs`, `ScOnlyField` |
250
253
  | `ScPairtext` | `ScCheckField`, `ScCheckbox`, `ScRadio`, `ScSelection`, `ScSelectionPill`, `ScMenuOptions` |
@@ -0,0 +1,189 @@
1
+ ---
2
+ component: ScNewVersionNotice
3
+ package: "@streamoid/ui"
4
+ category: overlays
5
+ status: stable
6
+ renders: div
7
+ tags: [deploy, version, reload, notice, portal, toast]
8
+ related: [ScSidebarPopover, ScErrorBoundary]
9
+ do_not_confuse_with: [ScBadges, CreditWarningBanner]
10
+ used_by: [artifax, photogenix, tactix, cxo]
11
+ required_props: [buildId]
12
+ also_exports: [useNewVersionAvailable, parseVersionManifest, shouldPromptForNewVersion]
13
+ ---
14
+
15
+ # New-version notice
16
+
17
+ Tells the user a newer build is deployed and lets them take it. Renders nothing
18
+ until there is something to say, and portals to `<body>` so no host layout has
19
+ to make room for it.
20
+
21
+ ## TL;DR for agents
22
+
23
+ - **Reach for it when:** the app is a long-lived SPA tab and a deploy should not
24
+ wait for the user to happen to reload.
25
+ - **You must pass `buildId`.** It comes from a compile-time define, and every app
26
+ spells it differently (`__BUILD_ID__` in Artifax and Tactix,
27
+ `__PHOTOGENIX_BUILD_ID__` in Photogenix). A library cannot read another
28
+ bundle's define, so there is nothing to infer.
29
+ - Pass `enabled={!import.meta.env.DEV}`. In dev there is nothing to compare
30
+ against: the manifest is emitted by a build-only plugin and the dev server
31
+ rebuilds in place.
32
+ - Want the boolean without the UI? `useNewVersionAvailable({ buildId })`.
33
+
34
+ ```tsx
35
+ <ScNewVersionNotice
36
+ buildId={typeof __BUILD_ID__ === 'string' ? __BUILD_ID__ : ''}
37
+ enabled={!import.meta.env.DEV}
38
+ />
39
+ ```
40
+
41
+ ## 1. How to use it
42
+
43
+ ```tsx
44
+ import { ScNewVersionNotice } from "@streamoid/ui"
45
+
46
+ <ScNewVersionNotice
47
+ buildId={typeof __BUILD_ID__ === 'string' ? __BUILD_ID__ : ''}
48
+ enabled={!import.meta.env.DEV}
49
+ />
50
+ ```
51
+
52
+ | Prop | Default | Notes |
53
+ | --- | --- | --- |
54
+ | `buildId` | — | The id baked into the bundle that is RUNNING. Required in practice: without it the check is disabled. |
55
+ | `manifestUrl` | `/version.json` | Where the DEPLOYED id is published. |
56
+ | `pollIntervalMs` | `300000` | Backstop only; the focus check is the one that matters. |
57
+ | `enabled` | `true` | Pass `!import.meta.env.DEV`. |
58
+ | `title` | `A new version is available` | |
59
+ | `description` | `Refresh to get the latest updates.` | |
60
+ | `refreshLabel` / `dismissLabel` | `Refresh` / `Later` | |
61
+ | `onRefresh` | `window.location.reload()` | Override only to save work first — then still reload. |
62
+ | `testId` | `new-version-notice` | |
63
+
64
+ Want the boolean without the UI: `useNewVersionAvailable({ buildId })`.
65
+
66
+ ## 2. Where to use it
67
+
68
+ Mount it once, high in the tree — beside the router, not inside a route — so it
69
+ survives navigation. It portals to `<body>` and renders `null` until there is
70
+ something to say, so it costs a host nothing to mount early and needs no room
71
+ made for it in any layout.
72
+
73
+ ## 3. When to use it
74
+
75
+ When the app is a long-lived SPA tab and a deploy should not wait for the user
76
+ to happen to reload. Skip it for short-lived surfaces, embedded widgets, and
77
+ anything already inside a host that prompts for it.
78
+
79
+ ## What the host still owns
80
+
81
+
82
+ Two pieces of build plumbing, because they are the host's build:
83
+
84
+ 1. **Emit the manifest.** A Vite plugin writes `version.json` next to the build
85
+ and bakes the same id in as a define:
86
+
87
+ ```ts
88
+ function buildVersionManifest(buildId: string): Plugin {
89
+ return {
90
+ name: 'build-version-manifest',
91
+ apply: 'build',
92
+ generateBundle() {
93
+ this.emitFile({
94
+ type: 'asset',
95
+ fileName: 'version.json',
96
+ source: JSON.stringify({ buildId }, null, 2) + '\n',
97
+ })
98
+ },
99
+ }
100
+ }
101
+ const buildId = process.env.VITE_BUILD_ID?.trim() || String(Date.now())
102
+ ```
103
+
104
+ 2. **Serve it uncached.** This is not a tuning detail — a cached manifest
105
+ reports the version the tab already has, forever, which is exactly what the
106
+ check exists to detect:
107
+
108
+ ```nginx
109
+ location = /version.json {
110
+ add_header Cache-Control "no-store" always;
111
+ try_files $uri =404; # not the SPA fallback: index.html is not JSON
112
+ }
113
+ ```
114
+
115
+ ## Design decisions worth not relitigating
116
+
117
+
118
+ **It asks; it does not reload.** Reloading under someone mid-sentence in a chat,
119
+ mid-upload or mid-form loses their work.
120
+
121
+ **It is persistent, and dismissible.** A notice that disappears after five
122
+ seconds is a notice nobody reads. Dismissing costs nothing, because the next
123
+ full page load picks the new build up anyway.
124
+
125
+ **Not knowing is never grounds to prompt.** Offline, mid-redeploy, a dev bundle
126
+ with no define, `/version.json` answered by the SPA catch-all with `index.html`
127
+ — all normal, none evidence of a newer build. `shouldPromptForNewVersion`
128
+ requires two known ids that differ. Getting this wrong shows the notice to
129
+ everyone, forever, which is worse than never showing it.
130
+
131
+ **It latches.** A build cannot become un-new, and flickering the prompt because
132
+ one poll failed is worse than not showing it.
133
+
134
+ **Polling is deliberately slow (5 min).** The check that matters is the one on
135
+ focus — someone returning to a tab they left open. The interval is a backstop.
136
+
137
+ **The refresh button does not use `--alias-text---icons-onfill`.** That token
138
+ looks right for a label on a filled button and is not: it resolves to the same
139
+ ramp step as the fill, so the label matches the background in *both* themes. It
140
+ cost Artifax a white label on a white card. Use
141
+ `--alias-text---icons-inverse`, which is `--alias-fill-base-base`'s actual
142
+ inverse. A test guards this.
143
+
144
+ ## 4. Why to use it
145
+
146
+ Because this was three copies and a gap. Artifax and Photogenix each shipped a
147
+ `NewVersionNotice` plus a `useNewVersionAvailable`; CXO raises the same message
148
+ on a toast. The three were the same component down to the copy, and differed in
149
+ exactly the ways duplication gets expensive: quote style, the name of the
150
+ build-id global, and whether a `204` was handled — only one of them did. Tactix
151
+ had none at all, so a deployed Tactix tab stayed on its old bundle until someone
152
+ reloaded by chance. Fixing the `onfill` token bug in one app fixed it in one app.
153
+
154
+ ## Gotchas
155
+
156
+ - **`buildId` is not optional in practice.** Omit it and the hook disables
157
+ itself — deliberately, because not knowing which build you are is not evidence
158
+ that a newer one exists. A notice that never appears looks identical to a
159
+ working one, so check the define reaches the bundle.
160
+ - **`/version.json` must not be cached, and must not fall through to the SPA
161
+ catch-all.** A cached manifest reports the version the tab already has,
162
+ forever. `index.html` is not JSON, and the parse failure is swallowed — so
163
+ both mistakes look like "the notice never shows".
164
+ - **Do not reach for `--alias-text---icons-onfill`** on the refresh button. It
165
+ resolves to the same ramp step as the fill, so the label matches the
166
+ background in both themes. Use `--alias-text---icons-inverse`. A test guards
167
+ this.
168
+ - **It latches.** Once true it stays true for the life of the tab.
169
+
170
+ ## In the wild
171
+
172
+ The two local copies this component generalises, both mounted once beside the
173
+ router:
174
+
175
+ ```tsx
176
+ // artifax apps/artifax/src/App.tsx:32
177
+ <NewVersionNotice />
178
+ // photogenix dashboard/client/src/App.tsx:129
179
+ <NewVersionNotice />
180
+ ```
181
+
182
+ Photogenix's copy (`dashboard/client/src/lib/useNewVersionAvailable.ts`) is the
183
+ only one of the three that handled a `204`; that behaviour is kept here.
184
+
185
+ ## Related
186
+
187
+ - `ScSidebarPopover` — the other portaled surface in this package; it owns its
188
+ own card chrome for the same reason this owns its own.
189
+ - `ScErrorBoundary` — the other app-level thing mounted once beside the router.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@streamoid/ui",
3
- "count": 127,
3
+ "count": 128,
4
4
  "components": {
5
5
  "ScAccess": {
6
6
  "doc": "ScAccess.md",
@@ -1688,6 +1688,46 @@
1688
1688
  "alsoExports": [],
1689
1689
  "exported": true
1690
1690
  },
1691
+ "ScNewVersionNotice": {
1692
+ "doc": "ScNewVersionNotice.md",
1693
+ "source": "src/SC-NewVersionNotice",
1694
+ "category": "overlays",
1695
+ "status": "stable",
1696
+ "renders": "div",
1697
+ "summary": "Reach for it when:",
1698
+ "reachForWhen": "the app is a long-lived SPA tab and a deploy should not wait for the user to happen to reload.",
1699
+ "tags": [
1700
+ "deploy",
1701
+ "version",
1702
+ "reload",
1703
+ "notice",
1704
+ "portal",
1705
+ "toast"
1706
+ ],
1707
+ "related": [
1708
+ "ScSidebarPopover",
1709
+ "ScErrorBoundary"
1710
+ ],
1711
+ "doNotConfuseWith": [
1712
+ "ScBadges",
1713
+ "CreditWarningBanner"
1714
+ ],
1715
+ "requiredProps": [
1716
+ "buildId"
1717
+ ],
1718
+ "usedBy": [
1719
+ "artifax",
1720
+ "photogenix",
1721
+ "tactix",
1722
+ "cxo"
1723
+ ],
1724
+ "alsoExports": [
1725
+ "useNewVersionAvailable",
1726
+ "parseVersionManifest",
1727
+ "shouldPromptForNewVersion"
1728
+ ],
1729
+ "exported": true
1730
+ },
1691
1731
  "ScOnlyIcon": {
1692
1732
  "doc": "ScOnlyIcon.md",
1693
1733
  "source": "src/SC-OnlyIcon",
@@ -5001,6 +5041,18 @@
5001
5041
  "documentedIn": "ScStreamoidWordmark",
5002
5042
  "doc": "ScStreamoidWordmark.md"
5003
5043
  },
5044
+ "useNewVersionAvailable": {
5045
+ "documentedIn": "ScNewVersionNotice",
5046
+ "doc": "ScNewVersionNotice.md"
5047
+ },
5048
+ "parseVersionManifest": {
5049
+ "documentedIn": "ScNewVersionNotice",
5050
+ "doc": "ScNewVersionNotice.md"
5051
+ },
5052
+ "shouldPromptForNewVersion": {
5053
+ "documentedIn": "ScNewVersionNotice",
5054
+ "doc": "ScNewVersionNotice.md"
5055
+ },
5004
5056
  "useStreamoidPanelWidth": {
5005
5057
  "documentedIn": "ScPanelResizeHandle",
5006
5058
  "doc": "ScPanelResizeHandle.md"
package/dist/index.d.mts CHANGED
@@ -597,6 +597,80 @@ interface IScMenuOptionsProps extends React.HTMLAttributes<HTMLDivElement> {
597
597
  }
598
598
  declare const ScMenuOptions: ({ icon, version, hover, variant, className, text, ...props }: IScMenuOptionsProps) => React.JSX.Element;
599
599
 
600
+ interface IUseNewVersionAvailableOptions {
601
+ /** The build id baked into the bundle that is RUNNING.
602
+ *
603
+ * The host has to pass this: it comes from a compile-time define, and every
604
+ * app spells it differently (`__BUILD_ID__` in Artifax and Tactix,
605
+ * `__PHOTOGENIX_BUILD_ID__` in Photogenix). A library cannot read another
606
+ * bundle's define, so there is nothing to guess here.
607
+ *
608
+ * Empty or undefined disables the check rather than prompting: not knowing
609
+ * which build you are is not evidence that a newer one exists. */
610
+ buildId?: string;
611
+ /** Where the DEPLOYED build id is published. Defaults to `/version.json`,
612
+ * which is what every Streamoid app's build emits. */
613
+ manifestUrl?: string;
614
+ pollIntervalMs?: number;
615
+ /** Pass `false` in dev. There is nothing to compare against: the manifest is
616
+ * emitted by a build-only plugin, and the dev server rebuilds in place. */
617
+ enabled?: boolean;
618
+ }
619
+ /** The deployed build id out of a `/version.json` body, or `null`.
620
+ *
621
+ * Exported because it is where the surprises live, and a hook is awkward to
622
+ * test: the SPA catch-all can answer this route with `index.html`, a partial
623
+ * deploy can serve `{}`, and a hand-edited manifest can put a number there.
624
+ * None of those are a newer build. */
625
+ declare function parseVersionManifest(body: unknown): string | null;
626
+ /** Whether `deployed` is grounds to prompt someone to reload.
627
+ *
628
+ * Only a KNOWN id that DIFFERS counts. Not knowing which build is deployed,
629
+ * and not knowing which build you are running, are both the normal state —
630
+ * offline, mid-redeploy, a dev server — and neither is evidence of a newer
631
+ * build. Prompting on either would show the notice to everyone, forever. */
632
+ declare function shouldPromptForNewVersion(current: string | null | undefined, deployed: string | null | undefined): boolean;
633
+ /**
634
+ * Whether the server is serving a newer build than this tab is running.
635
+ *
636
+ * Latches once true: a build cannot become un-new, and flickering the prompt
637
+ * because one poll failed would be worse than not showing it.
638
+ *
639
+ * This was three near-identical copies — Artifax's and Photogenix's hooks of
640
+ * this name and CXO's toast — differing only in quote style, the name of the
641
+ * build-id global, and whether they handled a 204. They handle it here.
642
+ */
643
+ declare function useNewVersionAvailable(options?: IUseNewVersionAvailableOptions): boolean;
644
+
645
+ interface IScNewVersionNoticeProps extends IUseNewVersionAvailableOptions {
646
+ title?: ReactNode;
647
+ description?: ReactNode;
648
+ refreshLabel?: ReactNode;
649
+ dismissLabel?: ReactNode;
650
+ /** Defaults to a plain `window.location.reload()`. Override only to save
651
+ * work first — and then still reload. */
652
+ onRefresh?: () => void;
653
+ testId?: string;
654
+ className?: string;
655
+ style?: CSSProperties;
656
+ }
657
+ /**
658
+ * Tell the user a newer build is deployed, and let them take it.
659
+ *
660
+ * DELIBERATELY NOT AUTOMATIC. Reloading under someone mid-sentence in a chat,
661
+ * mid-upload, or mid-form loses their work; every app that does this well asks
662
+ * rather than acts. It is persistent for the same reason — a notice about an
663
+ * update that disappears after five seconds is a notice nobody reads — and
664
+ * dismissible, because the next full page load picks the new version up
665
+ * regardless, so nothing is lost by ignoring it.
666
+ *
667
+ * TOP-RIGHT, because CXO raises this on a `Toaster` pinned there and the rest
668
+ * of the family follows it. Bottom-right puts the same message in a different
669
+ * corner of the same product family, and tends to land on a composer or a
670
+ * grid's controls — which is where someone is working.
671
+ */
672
+ declare function ScNewVersionNotice({ title, description, refreshLabel, dismissLabel, onRefresh, testId, className, style, ...availability }: IScNewVersionNoticeProps): React$1.ReactPortal | null;
673
+
600
674
  interface IScOnlyIconProps extends React.HTMLAttributes<HTMLDivElement> {
601
675
  className?: string;
602
676
  variant?: "default";
@@ -911,7 +985,14 @@ interface ScSidebarWorkspaceTriggerProps {
911
985
  className?: string;
912
986
  style?: CSSProperties;
913
987
  }
914
- declare function ScSidebarWorkspaceTrigger({ workspaceName, workspaceImage, expanded, open, onClick, className, style, }: ScSidebarWorkspaceTriggerProps): JSX.Element;
988
+ /**
989
+ * FORWARDS ITS REF, for the same reason `ScSidebarAppIdentity` does: the
990
+ * workspace popover's caret points HERE, and without a ref every host wraps
991
+ * this in a div to get one. Those wrappers are load-bearing in ways the host
992
+ * has to remember — see the app identity, where one shipped crammed against
993
+ * the footer's left edge.
994
+ */
995
+ declare const ScSidebarWorkspaceTrigger: React$1.ForwardRefExoticComponent<ScSidebarWorkspaceTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
915
996
  interface ScSidebarSearchTriggerProps {
916
997
  expanded: boolean;
917
998
  label?: string;
@@ -930,7 +1011,16 @@ interface ScSidebarAppIdentityProps {
930
1011
  label?: string;
931
1012
  className?: string;
932
1013
  }
933
- declare function ScSidebarAppIdentity({ expanded, product, collapsedLabel, collapsedMark, label, className, }: ScSidebarAppIdentityProps): JSX.Element;
1014
+ /**
1015
+ * FORWARDS ITS REF, so a host can anchor a popover to it directly.
1016
+ *
1017
+ * Without one, a host that needs to point a caret here has to wrap this in a
1018
+ * div — and a bare div inside the footer's row-flex is an ITEM sized to its
1019
+ * content, so the `width: 100%` + `space-between` below resolve against the
1020
+ * wrapper instead of the row and the wordmark and app-grid icon end up crammed
1021
+ * together. That shipped in CXO. The wrapper was never the point; the ref was.
1022
+ */
1023
+ declare const ScSidebarAppIdentity: React$1.ForwardRefExoticComponent<ScSidebarAppIdentityProps & React$1.RefAttributes<HTMLSpanElement>>;
934
1024
  interface ScWorkspaceAccountMenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
935
1025
  workspaceName: string;
936
1026
  workspaceRole?: string;
@@ -2601,4 +2691,4 @@ interface IScProfilePopupProps extends React.HTMLAttributes<HTMLDivElement> {
2601
2691
  */
2602
2692
  declare const ScProfilePopup: React$1.ForwardRefExoticComponent<IScProfilePopupProps & React$1.RefAttributes<HTMLDivElement>>;
2603
2693
 
2604
- export { type AppSidebarAppIdentity, type AppSidebarAssistantCta, type AppSidebarCreditWarning, type AppSidebarHeader, type AppSidebarIconContext, type AppSidebarIconMap, type AppSidebarIconRenderer, type AppSidebarMenuItem, type AppSidebarProfile, type AppSidebarSection, 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 IScAnnotatedError, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSidebarProps, 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 IScCxoWordmarkProps, type IScDefaultCardProps, type IScDrawerProps, type IScErrorBoundaryProps, type IScErrorReport, type IScErrorReporterClient, 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 IScPanelResizeHandleProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScPopoverArrowProps, 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 IScSidebarPopoverProps, 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, PANEL_RESIZE_STEP_PX, type PanelResizeEdge, type PanelResizeGesture, type PanelWidthBounds, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SC_APP_SWITCH_PANEL_WIDTH, SC_WORKSPACE_MENU_WIDTH, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_CHANGELOG_URLS, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, ScAppSidebar, 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, ScCxoWordmark, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScErrorBoundary, type ScErrorReporter, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPanelResizeHandle, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScPopoverArrow, 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, ScSidebarPopover, 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, type StreamoidAnchorRect, type StreamoidAnchoredPopover, type StreamoidAnchoredPopoverArrow, type StreamoidAnchoredPopoverGeometry, type StreamoidAnchoredPopoverPosition, type StreamoidAnchoredPopoverPositionOptions, type StreamoidAppSwitchGroup, type StreamoidAppSwitchOptions, type StreamoidAppSwitchProduct, type StreamoidPanelWidthOptions, type StreamoidPanelWidthState, 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, clampPanelWidth, createStreamoidAppSwitchUtilities, formatStreamoidAppVersion, formatSubAgentLabel, hasCollapsedMark, resolveAnchoredPopoverArrow, resolveAnchoredPopoverPosition, resolvePanelResize, resolvePanelResizeKey, scAppSwitchOrder, scCreatePostHogReporter, scGetErrorRef, streamoidAppSwitchGroups, streamoidAppSwitchTagline, streamoidChangelogUrl, useStreamoidAnchoredPopover, useStreamoidAnchoredPopoverPosition, useStreamoidPanelWidth, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };
2694
+ export { type AppSidebarAppIdentity, type AppSidebarAssistantCta, type AppSidebarCreditWarning, type AppSidebarHeader, type AppSidebarIconContext, type AppSidebarIconMap, type AppSidebarIconRenderer, type AppSidebarMenuItem, type AppSidebarProfile, type AppSidebarSection, 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 IScAnnotatedError, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSidebarProps, 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 IScCxoWordmarkProps, type IScDefaultCardProps, type IScDrawerProps, type IScErrorBoundaryProps, type IScErrorReport, type IScErrorReporterClient, 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 IScNewVersionNoticeProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPanelResizeHandleProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScPopoverArrowProps, 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 IScSidebarPopoverProps, 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 IUseNewVersionAvailableOptions, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, PANEL_RESIZE_STEP_PX, type PanelResizeEdge, type PanelResizeGesture, type PanelWidthBounds, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SC_APP_SWITCH_PANEL_WIDTH, SC_WORKSPACE_MENU_WIDTH, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_CHANGELOG_URLS, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, ScAppSidebar, 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, ScCxoWordmark, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScErrorBoundary, type ScErrorReporter, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScNewVersionNotice, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPanelResizeHandle, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScPopoverArrow, 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, ScSidebarPopover, 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, type StreamoidAnchorRect, type StreamoidAnchoredPopover, type StreamoidAnchoredPopoverArrow, type StreamoidAnchoredPopoverGeometry, type StreamoidAnchoredPopoverPosition, type StreamoidAnchoredPopoverPositionOptions, type StreamoidAppSwitchGroup, type StreamoidAppSwitchOptions, type StreamoidAppSwitchProduct, type StreamoidPanelWidthOptions, type StreamoidPanelWidthState, 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, clampPanelWidth, createStreamoidAppSwitchUtilities, formatStreamoidAppVersion, formatSubAgentLabel, hasCollapsedMark, parseVersionManifest, resolveAnchoredPopoverArrow, resolveAnchoredPopoverPosition, resolvePanelResize, resolvePanelResizeKey, scAppSwitchOrder, scCreatePostHogReporter, scGetErrorRef, shouldPromptForNewVersion, streamoidAppSwitchGroups, streamoidAppSwitchTagline, streamoidChangelogUrl, useNewVersionAvailable, useStreamoidAnchoredPopover, useStreamoidAnchoredPopoverPosition, useStreamoidPanelWidth, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };
package/dist/index.d.ts CHANGED
@@ -597,6 +597,80 @@ interface IScMenuOptionsProps extends React.HTMLAttributes<HTMLDivElement> {
597
597
  }
598
598
  declare const ScMenuOptions: ({ icon, version, hover, variant, className, text, ...props }: IScMenuOptionsProps) => React.JSX.Element;
599
599
 
600
+ interface IUseNewVersionAvailableOptions {
601
+ /** The build id baked into the bundle that is RUNNING.
602
+ *
603
+ * The host has to pass this: it comes from a compile-time define, and every
604
+ * app spells it differently (`__BUILD_ID__` in Artifax and Tactix,
605
+ * `__PHOTOGENIX_BUILD_ID__` in Photogenix). A library cannot read another
606
+ * bundle's define, so there is nothing to guess here.
607
+ *
608
+ * Empty or undefined disables the check rather than prompting: not knowing
609
+ * which build you are is not evidence that a newer one exists. */
610
+ buildId?: string;
611
+ /** Where the DEPLOYED build id is published. Defaults to `/version.json`,
612
+ * which is what every Streamoid app's build emits. */
613
+ manifestUrl?: string;
614
+ pollIntervalMs?: number;
615
+ /** Pass `false` in dev. There is nothing to compare against: the manifest is
616
+ * emitted by a build-only plugin, and the dev server rebuilds in place. */
617
+ enabled?: boolean;
618
+ }
619
+ /** The deployed build id out of a `/version.json` body, or `null`.
620
+ *
621
+ * Exported because it is where the surprises live, and a hook is awkward to
622
+ * test: the SPA catch-all can answer this route with `index.html`, a partial
623
+ * deploy can serve `{}`, and a hand-edited manifest can put a number there.
624
+ * None of those are a newer build. */
625
+ declare function parseVersionManifest(body: unknown): string | null;
626
+ /** Whether `deployed` is grounds to prompt someone to reload.
627
+ *
628
+ * Only a KNOWN id that DIFFERS counts. Not knowing which build is deployed,
629
+ * and not knowing which build you are running, are both the normal state —
630
+ * offline, mid-redeploy, a dev server — and neither is evidence of a newer
631
+ * build. Prompting on either would show the notice to everyone, forever. */
632
+ declare function shouldPromptForNewVersion(current: string | null | undefined, deployed: string | null | undefined): boolean;
633
+ /**
634
+ * Whether the server is serving a newer build than this tab is running.
635
+ *
636
+ * Latches once true: a build cannot become un-new, and flickering the prompt
637
+ * because one poll failed would be worse than not showing it.
638
+ *
639
+ * This was three near-identical copies — Artifax's and Photogenix's hooks of
640
+ * this name and CXO's toast — differing only in quote style, the name of the
641
+ * build-id global, and whether they handled a 204. They handle it here.
642
+ */
643
+ declare function useNewVersionAvailable(options?: IUseNewVersionAvailableOptions): boolean;
644
+
645
+ interface IScNewVersionNoticeProps extends IUseNewVersionAvailableOptions {
646
+ title?: ReactNode;
647
+ description?: ReactNode;
648
+ refreshLabel?: ReactNode;
649
+ dismissLabel?: ReactNode;
650
+ /** Defaults to a plain `window.location.reload()`. Override only to save
651
+ * work first — and then still reload. */
652
+ onRefresh?: () => void;
653
+ testId?: string;
654
+ className?: string;
655
+ style?: CSSProperties;
656
+ }
657
+ /**
658
+ * Tell the user a newer build is deployed, and let them take it.
659
+ *
660
+ * DELIBERATELY NOT AUTOMATIC. Reloading under someone mid-sentence in a chat,
661
+ * mid-upload, or mid-form loses their work; every app that does this well asks
662
+ * rather than acts. It is persistent for the same reason — a notice about an
663
+ * update that disappears after five seconds is a notice nobody reads — and
664
+ * dismissible, because the next full page load picks the new version up
665
+ * regardless, so nothing is lost by ignoring it.
666
+ *
667
+ * TOP-RIGHT, because CXO raises this on a `Toaster` pinned there and the rest
668
+ * of the family follows it. Bottom-right puts the same message in a different
669
+ * corner of the same product family, and tends to land on a composer or a
670
+ * grid's controls — which is where someone is working.
671
+ */
672
+ declare function ScNewVersionNotice({ title, description, refreshLabel, dismissLabel, onRefresh, testId, className, style, ...availability }: IScNewVersionNoticeProps): React$1.ReactPortal | null;
673
+
600
674
  interface IScOnlyIconProps extends React.HTMLAttributes<HTMLDivElement> {
601
675
  className?: string;
602
676
  variant?: "default";
@@ -911,7 +985,14 @@ interface ScSidebarWorkspaceTriggerProps {
911
985
  className?: string;
912
986
  style?: CSSProperties;
913
987
  }
914
- declare function ScSidebarWorkspaceTrigger({ workspaceName, workspaceImage, expanded, open, onClick, className, style, }: ScSidebarWorkspaceTriggerProps): JSX.Element;
988
+ /**
989
+ * FORWARDS ITS REF, for the same reason `ScSidebarAppIdentity` does: the
990
+ * workspace popover's caret points HERE, and without a ref every host wraps
991
+ * this in a div to get one. Those wrappers are load-bearing in ways the host
992
+ * has to remember — see the app identity, where one shipped crammed against
993
+ * the footer's left edge.
994
+ */
995
+ declare const ScSidebarWorkspaceTrigger: React$1.ForwardRefExoticComponent<ScSidebarWorkspaceTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
915
996
  interface ScSidebarSearchTriggerProps {
916
997
  expanded: boolean;
917
998
  label?: string;
@@ -930,7 +1011,16 @@ interface ScSidebarAppIdentityProps {
930
1011
  label?: string;
931
1012
  className?: string;
932
1013
  }
933
- declare function ScSidebarAppIdentity({ expanded, product, collapsedLabel, collapsedMark, label, className, }: ScSidebarAppIdentityProps): JSX.Element;
1014
+ /**
1015
+ * FORWARDS ITS REF, so a host can anchor a popover to it directly.
1016
+ *
1017
+ * Without one, a host that needs to point a caret here has to wrap this in a
1018
+ * div — and a bare div inside the footer's row-flex is an ITEM sized to its
1019
+ * content, so the `width: 100%` + `space-between` below resolve against the
1020
+ * wrapper instead of the row and the wordmark and app-grid icon end up crammed
1021
+ * together. That shipped in CXO. The wrapper was never the point; the ref was.
1022
+ */
1023
+ declare const ScSidebarAppIdentity: React$1.ForwardRefExoticComponent<ScSidebarAppIdentityProps & React$1.RefAttributes<HTMLSpanElement>>;
934
1024
  interface ScWorkspaceAccountMenuProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
935
1025
  workspaceName: string;
936
1026
  workspaceRole?: string;
@@ -2601,4 +2691,4 @@ interface IScProfilePopupProps extends React.HTMLAttributes<HTMLDivElement> {
2601
2691
  */
2602
2692
  declare const ScProfilePopup: React$1.ForwardRefExoticComponent<IScProfilePopupProps & React$1.RefAttributes<HTMLDivElement>>;
2603
2693
 
2604
- export { type AppSidebarAppIdentity, type AppSidebarAssistantCta, type AppSidebarCreditWarning, type AppSidebarHeader, type AppSidebarIconContext, type AppSidebarIconMap, type AppSidebarIconRenderer, type AppSidebarMenuItem, type AppSidebarProfile, type AppSidebarSection, 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 IScAnnotatedError, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSidebarProps, 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 IScCxoWordmarkProps, type IScDefaultCardProps, type IScDrawerProps, type IScErrorBoundaryProps, type IScErrorReport, type IScErrorReporterClient, 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 IScPanelResizeHandleProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScPopoverArrowProps, 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 IScSidebarPopoverProps, 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, PANEL_RESIZE_STEP_PX, type PanelResizeEdge, type PanelResizeGesture, type PanelWidthBounds, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SC_APP_SWITCH_PANEL_WIDTH, SC_WORKSPACE_MENU_WIDTH, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_CHANGELOG_URLS, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, ScAppSidebar, 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, ScCxoWordmark, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScErrorBoundary, type ScErrorReporter, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPanelResizeHandle, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScPopoverArrow, 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, ScSidebarPopover, 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, type StreamoidAnchorRect, type StreamoidAnchoredPopover, type StreamoidAnchoredPopoverArrow, type StreamoidAnchoredPopoverGeometry, type StreamoidAnchoredPopoverPosition, type StreamoidAnchoredPopoverPositionOptions, type StreamoidAppSwitchGroup, type StreamoidAppSwitchOptions, type StreamoidAppSwitchProduct, type StreamoidPanelWidthOptions, type StreamoidPanelWidthState, 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, clampPanelWidth, createStreamoidAppSwitchUtilities, formatStreamoidAppVersion, formatSubAgentLabel, hasCollapsedMark, resolveAnchoredPopoverArrow, resolveAnchoredPopoverPosition, resolvePanelResize, resolvePanelResizeKey, scAppSwitchOrder, scCreatePostHogReporter, scGetErrorRef, streamoidAppSwitchGroups, streamoidAppSwitchTagline, streamoidChangelogUrl, useStreamoidAnchoredPopover, useStreamoidAnchoredPopoverPosition, useStreamoidPanelWidth, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };
2694
+ export { type AppSidebarAppIdentity, type AppSidebarAssistantCta, type AppSidebarCreditWarning, type AppSidebarHeader, type AppSidebarIconContext, type AppSidebarIconMap, type AppSidebarIconRenderer, type AppSidebarMenuItem, type AppSidebarProfile, type AppSidebarSection, 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 IScAnnotatedError, type IScAppCardForCopilotProps, type IScAppCardProps, type IScAppCardV3Props, type IScAppFieldProps, type IScAppListingCardProps, type IScAppSidebarProps, 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 IScCxoWordmarkProps, type IScDefaultCardProps, type IScDrawerProps, type IScErrorBoundaryProps, type IScErrorReport, type IScErrorReporterClient, 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 IScNewVersionNoticeProps, type IScOnlyFieldProps, type IScOnlyIconProps, type IScPaginationProps, type IScPairtextProps, type IScPanelResizeHandleProps, type IScPendingActionProps, type IScPhtogenixInviteProps, type IScPlanCardProps, type IScPlanComparisonProps, type IScPlanDetailsCardMobileProps, type IScPlanDetailsCardProps, type IScPopUpMenuProps, type IScPopoverArrowProps, 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 IScSidebarPopoverProps, 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 IUseNewVersionAvailableOptions, type IcListIconState, InvoiceHistoryMobile, NscWorkspaceSwitch, PANEL_RESIZE_STEP_PX, type PanelResizeEdge, type PanelResizeGesture, type PanelWidthBounds, type PlanComparisonRow, type PlanComparisonSection, type PlanFeatureSection, ProductCollapsedMark, ProductWordmark, SC_APP_SWITCH_PANEL_WIDTH, SC_WORKSPACE_MENU_WIDTH, SIDEBAR_RESIZE_THRESHOLD_PX, STREAMOID_CHANGELOG_URL, STREAMOID_CHANGELOG_URLS, STREAMOID_STATUS_PAGE_URL, ScAccess, ScAppCard, ScAppCardForCopilot, ScAppCardV3, ScAppField, ScAppListingCard, ScAppSidebar, 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, ScCxoWordmark, ScDefaultCard, ScDp, type ScDpProps, ScDrawer, ScErrorBoundary, type ScErrorReporter, ScFieldButton, ScFileField, ScGoogleSignIn, ScGuide, ScHDivider, ScHeader, ScImageField, ScInChatList, ScInChatMessage, ScInfoPopup, ScIntialProfileCover, ScLogoUnit, ScMappingCard, ScMediaApproval, ScMediaSelect, ScMenuOptions, ScMobileBottomAction, ScMobileTopNav, ScModal, ScNewVersionNotice, ScOnlyField, ScOnlyIcon, ScPagination, ScPairtext, ScPanelResizeHandle, ScPendingAction, ScPhtogenixInvite, ScPlanCard, ScPlanComparison, ScPlanDetailsCard, ScPlanDetailsCardMobile, ScPopUpMenu, ScPopoverArrow, 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, ScSidebarPopover, 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, type StreamoidAnchorRect, type StreamoidAnchoredPopover, type StreamoidAnchoredPopoverArrow, type StreamoidAnchoredPopoverGeometry, type StreamoidAnchoredPopoverPosition, type StreamoidAnchoredPopoverPositionOptions, type StreamoidAppSwitchGroup, type StreamoidAppSwitchOptions, type StreamoidAppSwitchProduct, type StreamoidPanelWidthOptions, type StreamoidPanelWidthState, 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, clampPanelWidth, createStreamoidAppSwitchUtilities, formatStreamoidAppVersion, formatSubAgentLabel, hasCollapsedMark, parseVersionManifest, resolveAnchoredPopoverArrow, resolveAnchoredPopoverPosition, resolvePanelResize, resolvePanelResizeKey, scAppSwitchOrder, scCreatePostHogReporter, scGetErrorRef, shouldPromptForNewVersion, streamoidAppSwitchGroups, streamoidAppSwitchTagline, streamoidChangelogUrl, useNewVersionAvailable, useStreamoidAnchoredPopover, useStreamoidAnchoredPopoverPosition, useStreamoidPanelWidth, useStreamoidSidebarPopoverPosition, useStreamoidSidebarPreference, useStreamoidThemePreference };