@flytedan/flytebot-design-system 0.43.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -317,13 +317,10 @@ interface CollapsibleProps {
317
317
  declare function Collapsible({ title, subtitle, badge, icon, defaultOpen, open, onToggle, children, className, ...rest }: CollapsibleProps): React.JSX.Element;
318
318
 
319
319
  /** A right-side panel for detail and editing without losing the list behind it.
320
- * MP-248: always modal (declares `aria-modal="true"`), so it traps Tab/Shift+Tab inside
321
- * itself and returns focus to its trigger on close, via the design system's shared
322
- * `useFocusTrap` (the same hook Modal uses) — one focus-trap implementation, reused
323
- * rather than hand-rolled a second time. Its own `TrapScope` (see useFocusTrap.ts) lets an
324
- * overlay portaled from inside it (a Menu, a Select) register as still "inside" the trap,
325
- * and it shares Popover's open-order Escape stack so Escape closes only the innermost live
326
- * overlay, never this Drawer out from under one nested inside it. */
320
+ * MP-248: always modal (declares `aria-modal="true"`), so it is a trapping layer in the
321
+ * shared layer stack (kits/layerStack.tsx): Tab/Shift+Tab stay inside it and whatever is
322
+ * opened from inside it, focus returns to its trigger on close, and Escape closes it only
323
+ * when nothing opened from inside it is still open. */
327
324
  interface DrawerProps {
328
325
  open?: boolean;
329
326
  title?: React.ReactNode;
@@ -336,13 +333,11 @@ interface DrawerProps {
336
333
  declare function Drawer({ open, title, onClose, footer, children, className, ...rest }: DrawerProps): React.ReactPortal | null;
337
334
 
338
335
  /** A focused decision on a scrim. Max 560px, 760 with `wide` for data. Escape closes.
339
- * MP-212: traps Tab/Shift+Tab inside the dialog box and returns focus to the opener on
340
- * close, via the design system's shared `useFocusTrap` (the same hook `useResponsiveRail`
341
- * uses) — one focus-trap implementation, reused rather than hand-rolled a second time.
342
- * MP-248: its own `TrapScope` lets an overlay portaled from inside it (a Select's listbox)
343
- * register as still "inside" the trap, and it shares Popover's open-order Escape stack so
344
- * Escape closes only the innermost live overlay, never this Modal out from under one
345
- * nested inside it. */
336
+ * MP-212/MP-248: a trapping layer in the shared layer stack (kits/layerStack.tsx):
337
+ * Tab/Shift+Tab stay inside the dialog box and whatever is opened from inside it, focus
338
+ * returns to the opener on close, and Escape closes it only when nothing opened from inside
339
+ * it is still open. Opened from inside a Drawer (or another Modal), it is that layer's child,
340
+ * so it is the one that traps Tab while it is open. */
346
341
  interface ModalProps {
347
342
  open?: boolean;
348
343
  title?: React.ReactNode;
@@ -568,8 +563,9 @@ declare function Topbar({ crumbs, actions, overflowActions, overflowBreakpoint,
568
563
  * instead through `banner` and `trailingPanel`, or rendered around AppShell entirely.
569
564
  *
570
565
  * `useResponsiveRail` itself (overlay-vs-docked detection, Escape, focus trap/return,
571
- * body scroll lock) is unchanged and still exported on its own — AppShell only owns
572
- * wiring it to a real SidebarNav/Topbar/scrim so no app has to re-wire it by hand.
566
+ * body scroll lock) is still exported on its own — AppShell only owns wiring it to a real
567
+ * SidebarNav/Topbar/scrim so no app has to re-wire it by hand, including providing the
568
+ * rail's layer around SidebarNav so a menu opened in the rail is inside its focus scope.
573
569
  */
574
570
  interface AppShellProps {
575
571
  /** Rendered in SidebarNav's fixed-height brand row (e.g. FlytedeskBrand/FlytedeskMark,
@@ -3497,13 +3493,21 @@ interface ImportanceTagProps {
3497
3493
  showLabel?: boolean;
3498
3494
  size?: "sm" | "md";
3499
3495
  className?: string;
3496
+ /** Paint the tag with the kit's own disabled tokens — the same trio `.fd-btn[disabled]`
3497
+ * uses (`--surface-3`/`--border`/`--text-disabled`) — instead of this level's own
3498
+ * fill/edge/text, and set `aria-disabled` and the `not-allowed` cursor. Never `opacity`,
3499
+ * per the kit's 0.41 rule: a disabled control keeps full-strength, AA-safe colour rather
3500
+ * than fading out. A consumer wrapping the tag in a disabled trigger (e.g. a raw
3501
+ * `<button disabled>`) should pass this through instead of hand-overriding the level's
3502
+ * `--imp-{rank}-*` tokens itself. */
3503
+ disabled?: boolean;
3500
3504
  }
3501
3505
  /**
3502
3506
  * The level itself, as a small tinted tag — glyph plus name in that level's own fill,
3503
3507
  * edge and text tokens. Never colour alone: the name and the icon both carry the level,
3504
3508
  * so the five steps are still distinguishable without colour vision.
3505
3509
  */
3506
- declare function ImportanceTag({ level, showLabel, size, className }: ImportanceTagProps): React.JSX.Element;
3510
+ declare function ImportanceTag({ level, showLabel, size, className, disabled }: ImportanceTagProps): React.JSX.Element;
3507
3511
 
3508
3512
  interface PreferenceCriterion {
3509
3513
  id: string;
@@ -4714,6 +4718,34 @@ interface VersionStore<TState, TDiff = unknown> {
4714
4718
  }
4715
4719
  declare function createVersionStore<TState, TDiff = unknown>(initialState: TState, options?: CreateVersionStoreOptions<TState, TDiff>): VersionStore<TState, TDiff>;
4716
4720
 
4721
+ interface StackedLayerOptions {
4722
+ /** Whether the layer is open. It joins the stack while true. */
4723
+ active: boolean;
4724
+ /** The layer's own root element: what counts as inside it for focus. */
4725
+ containerRef: React.RefObject<HTMLElement | null>;
4726
+ /** A modal layer: while it is the innermost trapping layer, Tab and Shift+Tab stay inside
4727
+ * it and the layers opened from it, and focus moves into it when it opens. */
4728
+ trap?: boolean;
4729
+ /** Called when Escape is pressed while this is the innermost layer. A layer without one
4730
+ * still takes the press, so it never reaches a layer beneath. */
4731
+ onEscape?: () => void;
4732
+ /** When the layer closes while holding focus (or loses focus with its DOM), focus goes back
4733
+ * to the element that held it when the layer opened. Default true. */
4734
+ returnFocus?: boolean;
4735
+ }
4736
+ /** A layer in the stack. Pass it to `StackedLayerProvider` around what the layer renders, so
4737
+ * anything opened from inside belongs to it. */
4738
+ interface StackedLayer {
4739
+ readonly parent: StackedLayer | null;
4740
+ }
4741
+ /** Joins the stack while `active`. Returns the layer, for `StackedLayerProvider`. */
4742
+ declare function useStackedLayer(options: StackedLayerOptions): StackedLayer;
4743
+ /** Makes `layer` the owner of every layer opened from inside `children`, across portals. */
4744
+ declare function StackedLayerProvider({ layer, children }: {
4745
+ layer: StackedLayer;
4746
+ children: React.ReactNode;
4747
+ }): React.ReactElement;
4748
+
4717
4749
  /**
4718
4750
  * MP-214: the responsive-rail behaviour every app-level shell was hand-rolling (and, in
4719
4751
  * sms-app's case, already diverging on — see the SMS-5 architecture-gate review). Owns:
@@ -4723,12 +4755,11 @@ declare function createVersionStore<TState, TDiff = unknown>(initialState: TStat
4723
4755
  * on the same number, since neither reads it from the other);
4724
4756
  * - the rail's open/closed state, forced closed on entry to overlay and forced open on
4725
4757
  * return to docked (matching the desktop-collapse behaviour PlannerShell already had);
4726
- * - Escape-to-close while the overlay is open;
4758
+ * - Escape-to-close while the overlay is open, and a trapping layer in the shared layer stack
4759
+ * (layerStack.tsx) — Tab/Shift+Tab wrap inside the rail and whatever is opened from inside
4760
+ * it, and focus returns to whatever was focused before the overlay opened;
4727
4761
  * - a body scroll lock while the overlay is open, so the page behind a full-height
4728
- * off-canvas rail can't scroll;
4729
- * - a focus trap (Tab/Shift+Tab wrap inside the rail) plus focus return to whatever was
4730
- * focused before the overlay opened — none of which any prior copy of this behaviour
4731
- * implemented.
4762
+ * off-canvas rail can't scroll.
4732
4763
  *
4733
4764
  * `initialOpen`/`onPersist` are the seam for a desktop-only persisted preference (e.g. a
4734
4765
  * `usePref`-backed value) — this hook never persists anything itself, and never reads or
@@ -4755,6 +4786,9 @@ interface UseResponsiveRailResult {
4755
4786
  /** Attach to the rail's root DOM node (e.g. `SidebarNav`'s forwarded ref) — required for
4756
4787
  * the focus trap and initial-focus behaviour while the overlay is open. */
4757
4788
  navRef: React.RefObject<HTMLElement>;
4789
+ /** The rail's layer. Wrap the rail's content in `StackedLayerProvider` with it, so a menu
4790
+ * opened from inside the rail belongs to the rail's focus scope. */
4791
+ layer: StackedLayer;
4758
4792
  /** Flips `open`. Wire directly to `Topbar`'s `onMenu` — works at every width the rail is
4759
4793
  * shown at, docked or overlay, never a no-op. */
4760
4794
  toggle: () => void;
@@ -4767,49 +4801,6 @@ interface UseResponsiveRailResult {
4767
4801
  }
4768
4802
  declare function useResponsiveRail(options?: UseResponsiveRailOptions): UseResponsiveRailResult;
4769
4803
 
4770
- /**
4771
- * MP-248: a trapped container's own DOM subtree is not the only place focus may legitimately
4772
- * be while the trap is active. Every Popover-based overlay (Menu, MenuButton, Select,
4773
- * AppearanceMenu, AccountMenu — anything rendered through `portal()` in Popover.tsx) renders
4774
- * into `document.body`, a DOM SIBLING of a Drawer's `<aside>` or a Modal's box, never a
4775
- * descendant — so `container.contains(activeElement)` can never see it, and the trap's Tab
4776
- * handler used to yank focus back out of it on every Tab press.
4777
- *
4778
- * React context still threads through a portal boundary (only the DOM tree changes, not the
4779
- * component tree), so a `TrapScope` created by whichever Drawer/Modal owns the active trap is
4780
- * threaded down via `TrapScopeProvider`, and anything portaled from inside that subtree —
4781
- * however deep, since nothing re-provides a new scope further down — registers its own
4782
- * rendered root against it. The trap then treats focus inside any registered node as still
4783
- * "inside", exactly like a real DOM descendant would be, without a second trap
4784
- * implementation or a class-name/DOM-attribute sniff.
4785
- */
4786
- interface TrapScope {
4787
- /** Registers `node` as belonging to this scope for as long as the caller keeps it
4788
- * registered; call the returned function to unregister (mirrors an effect cleanup). */
4789
- registerEscapedNode(node: HTMLElement): () => void;
4790
- /** Whether `node` is, or is contained by, any node currently registered in this scope. */
4791
- ownsNode(node: Node): boolean;
4792
- }
4793
- /** Creates one trap's scope. Called once by whatever owns a trapped container (Drawer,
4794
- * Modal) and passed both to `useFocusTrap` and to `TrapScopeProvider` wrapping its own
4795
- * rendered content, so anything portaled from inside that content can join it. */
4796
- declare function useTrapScope(): TrapScope;
4797
- /** Threads `scope` to any descendant that calls `useEscapeTrapRegistration` — including
4798
- * across a `createPortal` boundary, since context follows the component tree, not the DOM
4799
- * tree. Nothing re-provides a scope further down (Popover does not wrap its own content in
4800
- * a new provider), so a Popover opened from inside another Popover opened from inside a
4801
- * Drawer still registers against that same Drawer's scope, however many levels deep. */
4802
- declare function TrapScopeProvider({ scope, children }: {
4803
- scope: TrapScope;
4804
- children: React.ReactNode;
4805
- }): React.ReactElement;
4806
- /** Called by a portaled overlay (Popover) to register its own rendered root as belonging to
4807
- * the nearest enclosing `TrapScope`, while `active`. A no-op when there is no enclosing
4808
- * scope — i.e. the overlay wasn't opened from inside a trapped Drawer/Modal at all, so there
4809
- * is nothing for its focus to escape from in the first place. */
4810
- declare function useEscapeTrapRegistration(nodeRef: React.RefObject<HTMLElement | null>, active: boolean): void;
4811
- declare function useFocusTrap(containerRef: React.RefObject<HTMLElement | null>, active: boolean, scope?: TrapScope): void;
4812
-
4813
4804
  /**
4814
4805
  * MP-221: the "<route> · <app> · Flytedesk" title convention every flytedesk app shell
4815
4806
  * hand-typed per route (sms-app's CampaignAnalytics.tsx, QueryTool.tsx, NotFound.tsx,
@@ -4828,4 +4819,4 @@ declare function formatDocumentTitle(routeTitle: string | undefined | null, appN
4828
4819
  */
4829
4820
  declare function useDocumentTitle(routeTitle: string | undefined | null, appName: string): void;
4830
4821
 
4831
- export { AccountMenu, type AccountMenuLink, type AccountMenuProps, AgentChatPanel, type AgentChatPanelProps, AnchoredPopover, type AnchoredPopoverProps, AnimNum, type AnimNumProps, ApiSpecBrowser, type ApiSpecBrowserProps, type AppEntry, AppShell, type AppShellProps, AppSwitcher, type AppSwitcherProps, AppearanceMenu, type AppearanceMenuProps, type AppearancePrefs, type AppearanceStore, type AppearanceStoreOptions, type Attachment, Avatar, type AvatarProps, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerTone, BarList, type BarListProps, type BarListRow, BudgetReallocator, type BudgetReallocatorProps, Button, type ButtonProps, CHANNELS, CHANNEL_WEIGHTS, CHAT_UNAVAILABLE, Calendar, type CalendarProps, Card, type CardProps, CardRow, type CardRowProps, ChannelContribution, type ChannelContributionChannel, type ChannelContributionProps, ChannelMeta, type ChannelMetaRecord, ChannelTag, type ChannelTagProps, ChannelWeightOf, type ChatAdapter, ChatComposer, type ChatComposerProps, type ChatEngine, type ChatEngineOptions, ChatKit, type ChatMessage, type ChatRenderContext, ChatSessionBar, type ChatSessionBarProps, ChatTranscript, type ChatTranscriptProps, ChatTurn, type ChatTurnProps, Checkbox, type CheckboxProps, type Citation, Citations, type CitationsProps, Clamp, type ClampProps, ClockFace, type ClockFaceProps, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, ComingSoon, type ComingSoonProps, type ContextUsage, type CreateVersionStoreOptions, CsiBadge, type CsiBadgeProps, CsiHero, type CsiHeroProps, CsiMeter, type CsiMeterProps, DEFAULT_PREFS, DEFAULT_STORAGE_KEY, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, type DemoSessionControls, DemoSessionProvider, type DeviceSession, DiffBlock, type DiffBlockProps, DonutChart, type DonutChartProps, type DonutSegment, Drawer, type DrawerProps, Dropzone, DropzoneKit, type DropzoneProps, ENTITY_ROW_METRIC_WIDTH, type EditorTrigger, EmptyState, type EmptyStateProps, type EndpointSpec, EntityRow, type EntityRowAction, type EntityRowContent, type EntityRowMetric, EntityRowMetrics, type EntityRowMetricsProps, type EntityRowProps, FILE_VIEWER_CSV_ROW_LIMIT, FILE_VIEWER_TEXT_LIMIT, FeatureGate, type FeatureGateProps, type FeatureStatus, FileBrowser, type FileBrowserFile, type FileBrowserFolder, type FileBrowserPermissions, type FileBrowserProps, FileChip, type FileChipProps, FileGrid, type FileGridProps, FileKit, FilePickButton, type FilePickButtonProps, type FileRejection, FileStrip, type FileStripProps, FileTile, type FileTileProps, type FileUploadHandler, FileViewer, type FileViewerProps, FilterBar, type FilterBarProps, type FilterDateValue, type FilterField, type FilterFieldDate, type FilterFieldMultiSelect, type FilterFieldOption, type FilterFieldRange, type FilterFieldSelect, type FilterFieldText, type FilterMultiSelectValue, type FilterOperator, type FilterRangeValue, type FilterResolveMatch, type FilterResolveResult, type FilterValidation, type FilterValue, Flag$1 as Flag, type FlagExplanation, type FlagProps, FlytedeskBrand, type FlytedeskBrandProps, FlytedeskMark, type FlytedeskMarkProps, FormatEta, FunnelChart, type FunnelChartProps, type FunnelStep, Gate, GatePending, type GatePendingProps, type GateProps, IMPORTANCE_LEVELS, IconButton, type IconButtonProps, type ImportanceLevel, type ImportanceLevelId, ImportanceTag, type ImportanceTagProps, type ImportanceTokens, Input, type InputProps, type Job, type JobAction, type JobCardStatus, type JobStatus, JobTray, type JobTrayProps, Json, KeyHint, type KeyHintProps, type ListEnvelope, LoadingRegion, type LoadingRegionProps, Markdown, MarkdownEditor, type MarkdownEditorHandle, type MarkdownEditorProps, MarkdownInline, type MarkdownProps, type MentionSource, Menu, MenuButton, type MenuButtonProps, type MenuItem, type MenuProps, MessageBody, type MessageBodyProps, type MessageGroup, Meter, type MeterProps, type MeterSegment, type MeterSegmentInput, MixGap, type MixGapProps, type MixGapRow, MockJobKit, type MockJobStatus, Modal, type ModalProps, ModeSwitch, type ModeSwitchProps, type Model, ModelControls, type ModelControlsProps, NumberInput, type NumberInputProps, POPOVER_BODY_MIN, type Packet, PacketCard, type PacketCardProps, type PacketSchema, type Pager, Pagination, type PaginationProps, PermissionDenied, type PermissionDeniedProps, type PermissionGroup, PermissionHint, type PermissionItem, type Phase, type PhaseStatus, PhasedProgress, type PhasedProgressProps, type Placement, type PollOptions, Popover, type PopoverProps, type PreferenceCriterion, PreferenceMeter, type PreferenceMeterProps, type ProfileFieldDef, type ProfileFieldType, type ProfileNotificationDef, ProfilePage, type ProfilePageProps, ProgressBar, type ProgressBarProps, QueryKit, type QueuedTurn, QuotaRow, type QuotaRowProps, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RelativeTime, type RelativeTimeProps, type RoadmapItem, type RoadmapResult, RoadmapTimeline, type RoadmapTimelineProps, type Role, RunActions, type RunActionsProps, type RunConfig, RuntimeKit, type RuntimeSummary, SaturationDistribution, type SaturationDistributionCampus, type SaturationDistributionProps, ScoreMeter, type ScoreMeterProps, ScreenHead, type ScreenHeadProps, SearchField, type SearchFieldProps, SegmentedControl, type SegmentedControlProps, SegmentedMeter, type SegmentedMeterProps, Select, type SelectOption, type SelectProps, type SendMessageResult, type ServerTable, type Session, type SessionContextValue, type Flag as SessionFlag, SessionKit, SessionProvider, type SessionProviderProps, type SessionRole, type SessionStats, type SessionUser, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SignInContinueAs, SignInPage, type SignInPageProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, type SlashCommand, Slider, type SliderProps, SortMenu, type SortMenuField, type SortMenuProps, type SpecModule, Spinner, type SpinnerProps, StatTile, type StatTileProps, type Step, StepList, type StepListProps, type StreamHandlers, type Suggestion, SurroundSound, type SurroundSoundProps, Switch, type SwitchProps, type TableQuery, Tabs, type TabsProps, Tag, type TagProps, TestModeBar, type TestModeBarProps, type TextScale, Textarea, type TextareaProps, type ThemeMode, ThinkingBlock, type ThinkingBlockProps, type ThreadSummary, TimePicker, type TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, Topbar, type TopbarProps, TranscriptKit, TransferList, type TransferListProps, type TransferListSide, type TransferListSideProps, type TrapScope, TrapScopeProvider, TrendChart, type TrendChartProps, type TrendSeries, type UsageLimit, UseFeatureStatus, type UseResponsiveRailOptions, type UseResponsiveRailResult, UseRuntimeMode, type UseServerTableOptions, type User, VIRTUAL_LIST_BUFFER_ROWS, VIRTUAL_LIST_ROW_GAP, type VersionRecord, type VersionStore, VirtualList, type VirtualListProps, type VirtualLoadedBand, type VirtualWindow, type VoiceHandler, acceptMatches, anyOfFilter, applyPrefs, channelWeightOf, computeNeedMore, computeVirtualWindow, createLocalStorageAppearanceStore, createVersionStore, eqFilter, extensionOf, extractClipboardFiles, filterFiles, formatAbsolute, formatBytes, formatClock, formatDocumentTitle, formatDuration, formatEta, formatRelative, groupMessages, hasModifier, iconForMime, importanceLevel, importanceTokens, installFlytedeskFavicon, isImage, isSystemMessage, jobBucket, languageLabel, loadPrefs, markdownToText, meterFormats, modifierLabel, parseDelimited, pastedTextName, pluralizeUnit, preferenceScore, preferenceSegments, rangeFilter, resolveTheme, revokeAttachment, savePrefs, toAttachment, tokenize, useAppearancePrefs, useChatEngine, useDocumentTitle, useEscapeTrapRegistration, useFeatureStatus, useFocusTrap, usePopoverPosition, useResponsiveRail, useRuntimeMode, useServerTable, useSessionContext, useStagedFiles, useTrapScope, validateFilterValue, visibleMessages };
4822
+ export { AccountMenu, type AccountMenuLink, type AccountMenuProps, AgentChatPanel, type AgentChatPanelProps, AnchoredPopover, type AnchoredPopoverProps, AnimNum, type AnimNumProps, ApiSpecBrowser, type ApiSpecBrowserProps, type AppEntry, AppShell, type AppShellProps, AppSwitcher, type AppSwitcherProps, AppearanceMenu, type AppearanceMenuProps, type AppearancePrefs, type AppearanceStore, type AppearanceStoreOptions, type Attachment, Avatar, type AvatarProps, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerTone, BarList, type BarListProps, type BarListRow, BudgetReallocator, type BudgetReallocatorProps, Button, type ButtonProps, CHANNELS, CHANNEL_WEIGHTS, CHAT_UNAVAILABLE, Calendar, type CalendarProps, Card, type CardProps, CardRow, type CardRowProps, ChannelContribution, type ChannelContributionChannel, type ChannelContributionProps, ChannelMeta, type ChannelMetaRecord, ChannelTag, type ChannelTagProps, ChannelWeightOf, type ChatAdapter, ChatComposer, type ChatComposerProps, type ChatEngine, type ChatEngineOptions, ChatKit, type ChatMessage, type ChatRenderContext, ChatSessionBar, type ChatSessionBarProps, ChatTranscript, type ChatTranscriptProps, ChatTurn, type ChatTurnProps, Checkbox, type CheckboxProps, type Citation, Citations, type CitationsProps, Clamp, type ClampProps, ClockFace, type ClockFaceProps, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, ComingSoon, type ComingSoonProps, type ContextUsage, type CreateVersionStoreOptions, CsiBadge, type CsiBadgeProps, CsiHero, type CsiHeroProps, CsiMeter, type CsiMeterProps, DEFAULT_PREFS, DEFAULT_STORAGE_KEY, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, type DemoSessionControls, DemoSessionProvider, type DeviceSession, DiffBlock, type DiffBlockProps, DonutChart, type DonutChartProps, type DonutSegment, Drawer, type DrawerProps, Dropzone, DropzoneKit, type DropzoneProps, ENTITY_ROW_METRIC_WIDTH, type EditorTrigger, EmptyState, type EmptyStateProps, type EndpointSpec, EntityRow, type EntityRowAction, type EntityRowContent, type EntityRowMetric, EntityRowMetrics, type EntityRowMetricsProps, type EntityRowProps, FILE_VIEWER_CSV_ROW_LIMIT, FILE_VIEWER_TEXT_LIMIT, FeatureGate, type FeatureGateProps, type FeatureStatus, FileBrowser, type FileBrowserFile, type FileBrowserFolder, type FileBrowserPermissions, type FileBrowserProps, FileChip, type FileChipProps, FileGrid, type FileGridProps, FileKit, FilePickButton, type FilePickButtonProps, type FileRejection, FileStrip, type FileStripProps, FileTile, type FileTileProps, type FileUploadHandler, FileViewer, type FileViewerProps, FilterBar, type FilterBarProps, type FilterDateValue, type FilterField, type FilterFieldDate, type FilterFieldMultiSelect, type FilterFieldOption, type FilterFieldRange, type FilterFieldSelect, type FilterFieldText, type FilterMultiSelectValue, type FilterOperator, type FilterRangeValue, type FilterResolveMatch, type FilterResolveResult, type FilterValidation, type FilterValue, Flag$1 as Flag, type FlagExplanation, type FlagProps, FlytedeskBrand, type FlytedeskBrandProps, FlytedeskMark, type FlytedeskMarkProps, FormatEta, FunnelChart, type FunnelChartProps, type FunnelStep, Gate, GatePending, type GatePendingProps, type GateProps, IMPORTANCE_LEVELS, IconButton, type IconButtonProps, type ImportanceLevel, type ImportanceLevelId, ImportanceTag, type ImportanceTagProps, type ImportanceTokens, Input, type InputProps, type Job, type JobAction, type JobCardStatus, type JobStatus, JobTray, type JobTrayProps, Json, KeyHint, type KeyHintProps, type ListEnvelope, LoadingRegion, type LoadingRegionProps, Markdown, MarkdownEditor, type MarkdownEditorHandle, type MarkdownEditorProps, MarkdownInline, type MarkdownProps, type MentionSource, Menu, MenuButton, type MenuButtonProps, type MenuItem, type MenuProps, MessageBody, type MessageBodyProps, type MessageGroup, Meter, type MeterProps, type MeterSegment, type MeterSegmentInput, MixGap, type MixGapProps, type MixGapRow, MockJobKit, type MockJobStatus, Modal, type ModalProps, ModeSwitch, type ModeSwitchProps, type Model, ModelControls, type ModelControlsProps, NumberInput, type NumberInputProps, POPOVER_BODY_MIN, type Packet, PacketCard, type PacketCardProps, type PacketSchema, type Pager, Pagination, type PaginationProps, PermissionDenied, type PermissionDeniedProps, type PermissionGroup, PermissionHint, type PermissionItem, type Phase, type PhaseStatus, PhasedProgress, type PhasedProgressProps, type Placement, type PollOptions, Popover, type PopoverProps, type PreferenceCriterion, PreferenceMeter, type PreferenceMeterProps, type ProfileFieldDef, type ProfileFieldType, type ProfileNotificationDef, ProfilePage, type ProfilePageProps, ProgressBar, type ProgressBarProps, QueryKit, type QueuedTurn, QuotaRow, type QuotaRowProps, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RelativeTime, type RelativeTimeProps, type RoadmapItem, type RoadmapResult, RoadmapTimeline, type RoadmapTimelineProps, type Role, RunActions, type RunActionsProps, type RunConfig, RuntimeKit, type RuntimeSummary, SaturationDistribution, type SaturationDistributionCampus, type SaturationDistributionProps, ScoreMeter, type ScoreMeterProps, ScreenHead, type ScreenHeadProps, SearchField, type SearchFieldProps, SegmentedControl, type SegmentedControlProps, SegmentedMeter, type SegmentedMeterProps, Select, type SelectOption, type SelectProps, type SendMessageResult, type ServerTable, type Session, type SessionContextValue, type Flag as SessionFlag, SessionKit, SessionProvider, type SessionProviderProps, type SessionRole, type SessionStats, type SessionUser, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SignInContinueAs, SignInPage, type SignInPageProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, type SlashCommand, Slider, type SliderProps, SortMenu, type SortMenuField, type SortMenuProps, type SpecModule, Spinner, type SpinnerProps, type StackedLayer, type StackedLayerOptions, StackedLayerProvider, StatTile, type StatTileProps, type Step, StepList, type StepListProps, type StreamHandlers, type Suggestion, SurroundSound, type SurroundSoundProps, Switch, type SwitchProps, type TableQuery, Tabs, type TabsProps, Tag, type TagProps, TestModeBar, type TestModeBarProps, type TextScale, Textarea, type TextareaProps, type ThemeMode, ThinkingBlock, type ThinkingBlockProps, type ThreadSummary, TimePicker, type TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, Topbar, type TopbarProps, TranscriptKit, TransferList, type TransferListProps, type TransferListSide, type TransferListSideProps, TrendChart, type TrendChartProps, type TrendSeries, type UsageLimit, UseFeatureStatus, type UseResponsiveRailOptions, type UseResponsiveRailResult, UseRuntimeMode, type UseServerTableOptions, type User, VIRTUAL_LIST_BUFFER_ROWS, VIRTUAL_LIST_ROW_GAP, type VersionRecord, type VersionStore, VirtualList, type VirtualListProps, type VirtualLoadedBand, type VirtualWindow, type VoiceHandler, acceptMatches, anyOfFilter, applyPrefs, channelWeightOf, computeNeedMore, computeVirtualWindow, createLocalStorageAppearanceStore, createVersionStore, eqFilter, extensionOf, extractClipboardFiles, filterFiles, formatAbsolute, formatBytes, formatClock, formatDocumentTitle, formatDuration, formatEta, formatRelative, groupMessages, hasModifier, iconForMime, importanceLevel, importanceTokens, installFlytedeskFavicon, isImage, isSystemMessage, jobBucket, languageLabel, loadPrefs, markdownToText, meterFormats, modifierLabel, parseDelimited, pastedTextName, pluralizeUnit, preferenceScore, preferenceSegments, rangeFilter, resolveTheme, revokeAttachment, savePrefs, toAttachment, tokenize, useAppearancePrefs, useChatEngine, useDocumentTitle, useFeatureStatus, usePopoverPosition, useResponsiveRail, useRuntimeMode, useServerTable, useSessionContext, useStackedLayer, useStagedFiles, validateFilterValue, visibleMessages };
package/dist/index.d.ts CHANGED
@@ -317,13 +317,10 @@ interface CollapsibleProps {
317
317
  declare function Collapsible({ title, subtitle, badge, icon, defaultOpen, open, onToggle, children, className, ...rest }: CollapsibleProps): React.JSX.Element;
318
318
 
319
319
  /** A right-side panel for detail and editing without losing the list behind it.
320
- * MP-248: always modal (declares `aria-modal="true"`), so it traps Tab/Shift+Tab inside
321
- * itself and returns focus to its trigger on close, via the design system's shared
322
- * `useFocusTrap` (the same hook Modal uses) — one focus-trap implementation, reused
323
- * rather than hand-rolled a second time. Its own `TrapScope` (see useFocusTrap.ts) lets an
324
- * overlay portaled from inside it (a Menu, a Select) register as still "inside" the trap,
325
- * and it shares Popover's open-order Escape stack so Escape closes only the innermost live
326
- * overlay, never this Drawer out from under one nested inside it. */
320
+ * MP-248: always modal (declares `aria-modal="true"`), so it is a trapping layer in the
321
+ * shared layer stack (kits/layerStack.tsx): Tab/Shift+Tab stay inside it and whatever is
322
+ * opened from inside it, focus returns to its trigger on close, and Escape closes it only
323
+ * when nothing opened from inside it is still open. */
327
324
  interface DrawerProps {
328
325
  open?: boolean;
329
326
  title?: React.ReactNode;
@@ -336,13 +333,11 @@ interface DrawerProps {
336
333
  declare function Drawer({ open, title, onClose, footer, children, className, ...rest }: DrawerProps): React.ReactPortal | null;
337
334
 
338
335
  /** A focused decision on a scrim. Max 560px, 760 with `wide` for data. Escape closes.
339
- * MP-212: traps Tab/Shift+Tab inside the dialog box and returns focus to the opener on
340
- * close, via the design system's shared `useFocusTrap` (the same hook `useResponsiveRail`
341
- * uses) — one focus-trap implementation, reused rather than hand-rolled a second time.
342
- * MP-248: its own `TrapScope` lets an overlay portaled from inside it (a Select's listbox)
343
- * register as still "inside" the trap, and it shares Popover's open-order Escape stack so
344
- * Escape closes only the innermost live overlay, never this Modal out from under one
345
- * nested inside it. */
336
+ * MP-212/MP-248: a trapping layer in the shared layer stack (kits/layerStack.tsx):
337
+ * Tab/Shift+Tab stay inside the dialog box and whatever is opened from inside it, focus
338
+ * returns to the opener on close, and Escape closes it only when nothing opened from inside
339
+ * it is still open. Opened from inside a Drawer (or another Modal), it is that layer's child,
340
+ * so it is the one that traps Tab while it is open. */
346
341
  interface ModalProps {
347
342
  open?: boolean;
348
343
  title?: React.ReactNode;
@@ -568,8 +563,9 @@ declare function Topbar({ crumbs, actions, overflowActions, overflowBreakpoint,
568
563
  * instead through `banner` and `trailingPanel`, or rendered around AppShell entirely.
569
564
  *
570
565
  * `useResponsiveRail` itself (overlay-vs-docked detection, Escape, focus trap/return,
571
- * body scroll lock) is unchanged and still exported on its own — AppShell only owns
572
- * wiring it to a real SidebarNav/Topbar/scrim so no app has to re-wire it by hand.
566
+ * body scroll lock) is still exported on its own — AppShell only owns wiring it to a real
567
+ * SidebarNav/Topbar/scrim so no app has to re-wire it by hand, including providing the
568
+ * rail's layer around SidebarNav so a menu opened in the rail is inside its focus scope.
573
569
  */
574
570
  interface AppShellProps {
575
571
  /** Rendered in SidebarNav's fixed-height brand row (e.g. FlytedeskBrand/FlytedeskMark,
@@ -3497,13 +3493,21 @@ interface ImportanceTagProps {
3497
3493
  showLabel?: boolean;
3498
3494
  size?: "sm" | "md";
3499
3495
  className?: string;
3496
+ /** Paint the tag with the kit's own disabled tokens — the same trio `.fd-btn[disabled]`
3497
+ * uses (`--surface-3`/`--border`/`--text-disabled`) — instead of this level's own
3498
+ * fill/edge/text, and set `aria-disabled` and the `not-allowed` cursor. Never `opacity`,
3499
+ * per the kit's 0.41 rule: a disabled control keeps full-strength, AA-safe colour rather
3500
+ * than fading out. A consumer wrapping the tag in a disabled trigger (e.g. a raw
3501
+ * `<button disabled>`) should pass this through instead of hand-overriding the level's
3502
+ * `--imp-{rank}-*` tokens itself. */
3503
+ disabled?: boolean;
3500
3504
  }
3501
3505
  /**
3502
3506
  * The level itself, as a small tinted tag — glyph plus name in that level's own fill,
3503
3507
  * edge and text tokens. Never colour alone: the name and the icon both carry the level,
3504
3508
  * so the five steps are still distinguishable without colour vision.
3505
3509
  */
3506
- declare function ImportanceTag({ level, showLabel, size, className }: ImportanceTagProps): React.JSX.Element;
3510
+ declare function ImportanceTag({ level, showLabel, size, className, disabled }: ImportanceTagProps): React.JSX.Element;
3507
3511
 
3508
3512
  interface PreferenceCriterion {
3509
3513
  id: string;
@@ -4714,6 +4718,34 @@ interface VersionStore<TState, TDiff = unknown> {
4714
4718
  }
4715
4719
  declare function createVersionStore<TState, TDiff = unknown>(initialState: TState, options?: CreateVersionStoreOptions<TState, TDiff>): VersionStore<TState, TDiff>;
4716
4720
 
4721
+ interface StackedLayerOptions {
4722
+ /** Whether the layer is open. It joins the stack while true. */
4723
+ active: boolean;
4724
+ /** The layer's own root element: what counts as inside it for focus. */
4725
+ containerRef: React.RefObject<HTMLElement | null>;
4726
+ /** A modal layer: while it is the innermost trapping layer, Tab and Shift+Tab stay inside
4727
+ * it and the layers opened from it, and focus moves into it when it opens. */
4728
+ trap?: boolean;
4729
+ /** Called when Escape is pressed while this is the innermost layer. A layer without one
4730
+ * still takes the press, so it never reaches a layer beneath. */
4731
+ onEscape?: () => void;
4732
+ /** When the layer closes while holding focus (or loses focus with its DOM), focus goes back
4733
+ * to the element that held it when the layer opened. Default true. */
4734
+ returnFocus?: boolean;
4735
+ }
4736
+ /** A layer in the stack. Pass it to `StackedLayerProvider` around what the layer renders, so
4737
+ * anything opened from inside belongs to it. */
4738
+ interface StackedLayer {
4739
+ readonly parent: StackedLayer | null;
4740
+ }
4741
+ /** Joins the stack while `active`. Returns the layer, for `StackedLayerProvider`. */
4742
+ declare function useStackedLayer(options: StackedLayerOptions): StackedLayer;
4743
+ /** Makes `layer` the owner of every layer opened from inside `children`, across portals. */
4744
+ declare function StackedLayerProvider({ layer, children }: {
4745
+ layer: StackedLayer;
4746
+ children: React.ReactNode;
4747
+ }): React.ReactElement;
4748
+
4717
4749
  /**
4718
4750
  * MP-214: the responsive-rail behaviour every app-level shell was hand-rolling (and, in
4719
4751
  * sms-app's case, already diverging on — see the SMS-5 architecture-gate review). Owns:
@@ -4723,12 +4755,11 @@ declare function createVersionStore<TState, TDiff = unknown>(initialState: TStat
4723
4755
  * on the same number, since neither reads it from the other);
4724
4756
  * - the rail's open/closed state, forced closed on entry to overlay and forced open on
4725
4757
  * return to docked (matching the desktop-collapse behaviour PlannerShell already had);
4726
- * - Escape-to-close while the overlay is open;
4758
+ * - Escape-to-close while the overlay is open, and a trapping layer in the shared layer stack
4759
+ * (layerStack.tsx) — Tab/Shift+Tab wrap inside the rail and whatever is opened from inside
4760
+ * it, and focus returns to whatever was focused before the overlay opened;
4727
4761
  * - a body scroll lock while the overlay is open, so the page behind a full-height
4728
- * off-canvas rail can't scroll;
4729
- * - a focus trap (Tab/Shift+Tab wrap inside the rail) plus focus return to whatever was
4730
- * focused before the overlay opened — none of which any prior copy of this behaviour
4731
- * implemented.
4762
+ * off-canvas rail can't scroll.
4732
4763
  *
4733
4764
  * `initialOpen`/`onPersist` are the seam for a desktop-only persisted preference (e.g. a
4734
4765
  * `usePref`-backed value) — this hook never persists anything itself, and never reads or
@@ -4755,6 +4786,9 @@ interface UseResponsiveRailResult {
4755
4786
  /** Attach to the rail's root DOM node (e.g. `SidebarNav`'s forwarded ref) — required for
4756
4787
  * the focus trap and initial-focus behaviour while the overlay is open. */
4757
4788
  navRef: React.RefObject<HTMLElement>;
4789
+ /** The rail's layer. Wrap the rail's content in `StackedLayerProvider` with it, so a menu
4790
+ * opened from inside the rail belongs to the rail's focus scope. */
4791
+ layer: StackedLayer;
4758
4792
  /** Flips `open`. Wire directly to `Topbar`'s `onMenu` — works at every width the rail is
4759
4793
  * shown at, docked or overlay, never a no-op. */
4760
4794
  toggle: () => void;
@@ -4767,49 +4801,6 @@ interface UseResponsiveRailResult {
4767
4801
  }
4768
4802
  declare function useResponsiveRail(options?: UseResponsiveRailOptions): UseResponsiveRailResult;
4769
4803
 
4770
- /**
4771
- * MP-248: a trapped container's own DOM subtree is not the only place focus may legitimately
4772
- * be while the trap is active. Every Popover-based overlay (Menu, MenuButton, Select,
4773
- * AppearanceMenu, AccountMenu — anything rendered through `portal()` in Popover.tsx) renders
4774
- * into `document.body`, a DOM SIBLING of a Drawer's `<aside>` or a Modal's box, never a
4775
- * descendant — so `container.contains(activeElement)` can never see it, and the trap's Tab
4776
- * handler used to yank focus back out of it on every Tab press.
4777
- *
4778
- * React context still threads through a portal boundary (only the DOM tree changes, not the
4779
- * component tree), so a `TrapScope` created by whichever Drawer/Modal owns the active trap is
4780
- * threaded down via `TrapScopeProvider`, and anything portaled from inside that subtree —
4781
- * however deep, since nothing re-provides a new scope further down — registers its own
4782
- * rendered root against it. The trap then treats focus inside any registered node as still
4783
- * "inside", exactly like a real DOM descendant would be, without a second trap
4784
- * implementation or a class-name/DOM-attribute sniff.
4785
- */
4786
- interface TrapScope {
4787
- /** Registers `node` as belonging to this scope for as long as the caller keeps it
4788
- * registered; call the returned function to unregister (mirrors an effect cleanup). */
4789
- registerEscapedNode(node: HTMLElement): () => void;
4790
- /** Whether `node` is, or is contained by, any node currently registered in this scope. */
4791
- ownsNode(node: Node): boolean;
4792
- }
4793
- /** Creates one trap's scope. Called once by whatever owns a trapped container (Drawer,
4794
- * Modal) and passed both to `useFocusTrap` and to `TrapScopeProvider` wrapping its own
4795
- * rendered content, so anything portaled from inside that content can join it. */
4796
- declare function useTrapScope(): TrapScope;
4797
- /** Threads `scope` to any descendant that calls `useEscapeTrapRegistration` — including
4798
- * across a `createPortal` boundary, since context follows the component tree, not the DOM
4799
- * tree. Nothing re-provides a scope further down (Popover does not wrap its own content in
4800
- * a new provider), so a Popover opened from inside another Popover opened from inside a
4801
- * Drawer still registers against that same Drawer's scope, however many levels deep. */
4802
- declare function TrapScopeProvider({ scope, children }: {
4803
- scope: TrapScope;
4804
- children: React.ReactNode;
4805
- }): React.ReactElement;
4806
- /** Called by a portaled overlay (Popover) to register its own rendered root as belonging to
4807
- * the nearest enclosing `TrapScope`, while `active`. A no-op when there is no enclosing
4808
- * scope — i.e. the overlay wasn't opened from inside a trapped Drawer/Modal at all, so there
4809
- * is nothing for its focus to escape from in the first place. */
4810
- declare function useEscapeTrapRegistration(nodeRef: React.RefObject<HTMLElement | null>, active: boolean): void;
4811
- declare function useFocusTrap(containerRef: React.RefObject<HTMLElement | null>, active: boolean, scope?: TrapScope): void;
4812
-
4813
4804
  /**
4814
4805
  * MP-221: the "<route> · <app> · Flytedesk" title convention every flytedesk app shell
4815
4806
  * hand-typed per route (sms-app's CampaignAnalytics.tsx, QueryTool.tsx, NotFound.tsx,
@@ -4828,4 +4819,4 @@ declare function formatDocumentTitle(routeTitle: string | undefined | null, appN
4828
4819
  */
4829
4820
  declare function useDocumentTitle(routeTitle: string | undefined | null, appName: string): void;
4830
4821
 
4831
- export { AccountMenu, type AccountMenuLink, type AccountMenuProps, AgentChatPanel, type AgentChatPanelProps, AnchoredPopover, type AnchoredPopoverProps, AnimNum, type AnimNumProps, ApiSpecBrowser, type ApiSpecBrowserProps, type AppEntry, AppShell, type AppShellProps, AppSwitcher, type AppSwitcherProps, AppearanceMenu, type AppearanceMenuProps, type AppearancePrefs, type AppearanceStore, type AppearanceStoreOptions, type Attachment, Avatar, type AvatarProps, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerTone, BarList, type BarListProps, type BarListRow, BudgetReallocator, type BudgetReallocatorProps, Button, type ButtonProps, CHANNELS, CHANNEL_WEIGHTS, CHAT_UNAVAILABLE, Calendar, type CalendarProps, Card, type CardProps, CardRow, type CardRowProps, ChannelContribution, type ChannelContributionChannel, type ChannelContributionProps, ChannelMeta, type ChannelMetaRecord, ChannelTag, type ChannelTagProps, ChannelWeightOf, type ChatAdapter, ChatComposer, type ChatComposerProps, type ChatEngine, type ChatEngineOptions, ChatKit, type ChatMessage, type ChatRenderContext, ChatSessionBar, type ChatSessionBarProps, ChatTranscript, type ChatTranscriptProps, ChatTurn, type ChatTurnProps, Checkbox, type CheckboxProps, type Citation, Citations, type CitationsProps, Clamp, type ClampProps, ClockFace, type ClockFaceProps, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, ComingSoon, type ComingSoonProps, type ContextUsage, type CreateVersionStoreOptions, CsiBadge, type CsiBadgeProps, CsiHero, type CsiHeroProps, CsiMeter, type CsiMeterProps, DEFAULT_PREFS, DEFAULT_STORAGE_KEY, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, type DemoSessionControls, DemoSessionProvider, type DeviceSession, DiffBlock, type DiffBlockProps, DonutChart, type DonutChartProps, type DonutSegment, Drawer, type DrawerProps, Dropzone, DropzoneKit, type DropzoneProps, ENTITY_ROW_METRIC_WIDTH, type EditorTrigger, EmptyState, type EmptyStateProps, type EndpointSpec, EntityRow, type EntityRowAction, type EntityRowContent, type EntityRowMetric, EntityRowMetrics, type EntityRowMetricsProps, type EntityRowProps, FILE_VIEWER_CSV_ROW_LIMIT, FILE_VIEWER_TEXT_LIMIT, FeatureGate, type FeatureGateProps, type FeatureStatus, FileBrowser, type FileBrowserFile, type FileBrowserFolder, type FileBrowserPermissions, type FileBrowserProps, FileChip, type FileChipProps, FileGrid, type FileGridProps, FileKit, FilePickButton, type FilePickButtonProps, type FileRejection, FileStrip, type FileStripProps, FileTile, type FileTileProps, type FileUploadHandler, FileViewer, type FileViewerProps, FilterBar, type FilterBarProps, type FilterDateValue, type FilterField, type FilterFieldDate, type FilterFieldMultiSelect, type FilterFieldOption, type FilterFieldRange, type FilterFieldSelect, type FilterFieldText, type FilterMultiSelectValue, type FilterOperator, type FilterRangeValue, type FilterResolveMatch, type FilterResolveResult, type FilterValidation, type FilterValue, Flag$1 as Flag, type FlagExplanation, type FlagProps, FlytedeskBrand, type FlytedeskBrandProps, FlytedeskMark, type FlytedeskMarkProps, FormatEta, FunnelChart, type FunnelChartProps, type FunnelStep, Gate, GatePending, type GatePendingProps, type GateProps, IMPORTANCE_LEVELS, IconButton, type IconButtonProps, type ImportanceLevel, type ImportanceLevelId, ImportanceTag, type ImportanceTagProps, type ImportanceTokens, Input, type InputProps, type Job, type JobAction, type JobCardStatus, type JobStatus, JobTray, type JobTrayProps, Json, KeyHint, type KeyHintProps, type ListEnvelope, LoadingRegion, type LoadingRegionProps, Markdown, MarkdownEditor, type MarkdownEditorHandle, type MarkdownEditorProps, MarkdownInline, type MarkdownProps, type MentionSource, Menu, MenuButton, type MenuButtonProps, type MenuItem, type MenuProps, MessageBody, type MessageBodyProps, type MessageGroup, Meter, type MeterProps, type MeterSegment, type MeterSegmentInput, MixGap, type MixGapProps, type MixGapRow, MockJobKit, type MockJobStatus, Modal, type ModalProps, ModeSwitch, type ModeSwitchProps, type Model, ModelControls, type ModelControlsProps, NumberInput, type NumberInputProps, POPOVER_BODY_MIN, type Packet, PacketCard, type PacketCardProps, type PacketSchema, type Pager, Pagination, type PaginationProps, PermissionDenied, type PermissionDeniedProps, type PermissionGroup, PermissionHint, type PermissionItem, type Phase, type PhaseStatus, PhasedProgress, type PhasedProgressProps, type Placement, type PollOptions, Popover, type PopoverProps, type PreferenceCriterion, PreferenceMeter, type PreferenceMeterProps, type ProfileFieldDef, type ProfileFieldType, type ProfileNotificationDef, ProfilePage, type ProfilePageProps, ProgressBar, type ProgressBarProps, QueryKit, type QueuedTurn, QuotaRow, type QuotaRowProps, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RelativeTime, type RelativeTimeProps, type RoadmapItem, type RoadmapResult, RoadmapTimeline, type RoadmapTimelineProps, type Role, RunActions, type RunActionsProps, type RunConfig, RuntimeKit, type RuntimeSummary, SaturationDistribution, type SaturationDistributionCampus, type SaturationDistributionProps, ScoreMeter, type ScoreMeterProps, ScreenHead, type ScreenHeadProps, SearchField, type SearchFieldProps, SegmentedControl, type SegmentedControlProps, SegmentedMeter, type SegmentedMeterProps, Select, type SelectOption, type SelectProps, type SendMessageResult, type ServerTable, type Session, type SessionContextValue, type Flag as SessionFlag, SessionKit, SessionProvider, type SessionProviderProps, type SessionRole, type SessionStats, type SessionUser, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SignInContinueAs, SignInPage, type SignInPageProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, type SlashCommand, Slider, type SliderProps, SortMenu, type SortMenuField, type SortMenuProps, type SpecModule, Spinner, type SpinnerProps, StatTile, type StatTileProps, type Step, StepList, type StepListProps, type StreamHandlers, type Suggestion, SurroundSound, type SurroundSoundProps, Switch, type SwitchProps, type TableQuery, Tabs, type TabsProps, Tag, type TagProps, TestModeBar, type TestModeBarProps, type TextScale, Textarea, type TextareaProps, type ThemeMode, ThinkingBlock, type ThinkingBlockProps, type ThreadSummary, TimePicker, type TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, Topbar, type TopbarProps, TranscriptKit, TransferList, type TransferListProps, type TransferListSide, type TransferListSideProps, type TrapScope, TrapScopeProvider, TrendChart, type TrendChartProps, type TrendSeries, type UsageLimit, UseFeatureStatus, type UseResponsiveRailOptions, type UseResponsiveRailResult, UseRuntimeMode, type UseServerTableOptions, type User, VIRTUAL_LIST_BUFFER_ROWS, VIRTUAL_LIST_ROW_GAP, type VersionRecord, type VersionStore, VirtualList, type VirtualListProps, type VirtualLoadedBand, type VirtualWindow, type VoiceHandler, acceptMatches, anyOfFilter, applyPrefs, channelWeightOf, computeNeedMore, computeVirtualWindow, createLocalStorageAppearanceStore, createVersionStore, eqFilter, extensionOf, extractClipboardFiles, filterFiles, formatAbsolute, formatBytes, formatClock, formatDocumentTitle, formatDuration, formatEta, formatRelative, groupMessages, hasModifier, iconForMime, importanceLevel, importanceTokens, installFlytedeskFavicon, isImage, isSystemMessage, jobBucket, languageLabel, loadPrefs, markdownToText, meterFormats, modifierLabel, parseDelimited, pastedTextName, pluralizeUnit, preferenceScore, preferenceSegments, rangeFilter, resolveTheme, revokeAttachment, savePrefs, toAttachment, tokenize, useAppearancePrefs, useChatEngine, useDocumentTitle, useEscapeTrapRegistration, useFeatureStatus, useFocusTrap, usePopoverPosition, useResponsiveRail, useRuntimeMode, useServerTable, useSessionContext, useStagedFiles, useTrapScope, validateFilterValue, visibleMessages };
4822
+ export { AccountMenu, type AccountMenuLink, type AccountMenuProps, AgentChatPanel, type AgentChatPanelProps, AnchoredPopover, type AnchoredPopoverProps, AnimNum, type AnimNumProps, ApiSpecBrowser, type ApiSpecBrowserProps, type AppEntry, AppShell, type AppShellProps, AppSwitcher, type AppSwitcherProps, AppearanceMenu, type AppearanceMenuProps, type AppearancePrefs, type AppearanceStore, type AppearanceStoreOptions, type Attachment, Avatar, type AvatarProps, AvatarStack, type AvatarStackProps, Badge, type BadgeProps, Banner, type BannerProps, type BannerTone, BarList, type BarListProps, type BarListRow, BudgetReallocator, type BudgetReallocatorProps, Button, type ButtonProps, CHANNELS, CHANNEL_WEIGHTS, CHAT_UNAVAILABLE, Calendar, type CalendarProps, Card, type CardProps, CardRow, type CardRowProps, ChannelContribution, type ChannelContributionChannel, type ChannelContributionProps, ChannelMeta, type ChannelMetaRecord, ChannelTag, type ChannelTagProps, ChannelWeightOf, type ChatAdapter, ChatComposer, type ChatComposerProps, type ChatEngine, type ChatEngineOptions, ChatKit, type ChatMessage, type ChatRenderContext, ChatSessionBar, type ChatSessionBarProps, ChatTranscript, type ChatTranscriptProps, ChatTurn, type ChatTurnProps, Checkbox, type CheckboxProps, type Citation, Citations, type CitationsProps, Clamp, type ClampProps, ClockFace, type ClockFaceProps, CodeBlock, type CodeBlockProps, Collapsible, type CollapsibleProps, ComingSoon, type ComingSoonProps, type ContextUsage, type CreateVersionStoreOptions, CsiBadge, type CsiBadgeProps, CsiHero, type CsiHeroProps, CsiMeter, type CsiMeterProps, DEFAULT_PREFS, DEFAULT_STORAGE_KEY, DataTable, type DataTableColumn, type DataTableProps, DatePicker, type DatePickerProps, type DemoSessionControls, DemoSessionProvider, type DeviceSession, DiffBlock, type DiffBlockProps, DonutChart, type DonutChartProps, type DonutSegment, Drawer, type DrawerProps, Dropzone, DropzoneKit, type DropzoneProps, ENTITY_ROW_METRIC_WIDTH, type EditorTrigger, EmptyState, type EmptyStateProps, type EndpointSpec, EntityRow, type EntityRowAction, type EntityRowContent, type EntityRowMetric, EntityRowMetrics, type EntityRowMetricsProps, type EntityRowProps, FILE_VIEWER_CSV_ROW_LIMIT, FILE_VIEWER_TEXT_LIMIT, FeatureGate, type FeatureGateProps, type FeatureStatus, FileBrowser, type FileBrowserFile, type FileBrowserFolder, type FileBrowserPermissions, type FileBrowserProps, FileChip, type FileChipProps, FileGrid, type FileGridProps, FileKit, FilePickButton, type FilePickButtonProps, type FileRejection, FileStrip, type FileStripProps, FileTile, type FileTileProps, type FileUploadHandler, FileViewer, type FileViewerProps, FilterBar, type FilterBarProps, type FilterDateValue, type FilterField, type FilterFieldDate, type FilterFieldMultiSelect, type FilterFieldOption, type FilterFieldRange, type FilterFieldSelect, type FilterFieldText, type FilterMultiSelectValue, type FilterOperator, type FilterRangeValue, type FilterResolveMatch, type FilterResolveResult, type FilterValidation, type FilterValue, Flag$1 as Flag, type FlagExplanation, type FlagProps, FlytedeskBrand, type FlytedeskBrandProps, FlytedeskMark, type FlytedeskMarkProps, FormatEta, FunnelChart, type FunnelChartProps, type FunnelStep, Gate, GatePending, type GatePendingProps, type GateProps, IMPORTANCE_LEVELS, IconButton, type IconButtonProps, type ImportanceLevel, type ImportanceLevelId, ImportanceTag, type ImportanceTagProps, type ImportanceTokens, Input, type InputProps, type Job, type JobAction, type JobCardStatus, type JobStatus, JobTray, type JobTrayProps, Json, KeyHint, type KeyHintProps, type ListEnvelope, LoadingRegion, type LoadingRegionProps, Markdown, MarkdownEditor, type MarkdownEditorHandle, type MarkdownEditorProps, MarkdownInline, type MarkdownProps, type MentionSource, Menu, MenuButton, type MenuButtonProps, type MenuItem, type MenuProps, MessageBody, type MessageBodyProps, type MessageGroup, Meter, type MeterProps, type MeterSegment, type MeterSegmentInput, MixGap, type MixGapProps, type MixGapRow, MockJobKit, type MockJobStatus, Modal, type ModalProps, ModeSwitch, type ModeSwitchProps, type Model, ModelControls, type ModelControlsProps, NumberInput, type NumberInputProps, POPOVER_BODY_MIN, type Packet, PacketCard, type PacketCardProps, type PacketSchema, type Pager, Pagination, type PaginationProps, PermissionDenied, type PermissionDeniedProps, type PermissionGroup, PermissionHint, type PermissionItem, type Phase, type PhaseStatus, PhasedProgress, type PhasedProgressProps, type Placement, type PollOptions, Popover, type PopoverProps, type PreferenceCriterion, PreferenceMeter, type PreferenceMeterProps, type ProfileFieldDef, type ProfileFieldType, type ProfileNotificationDef, ProfilePage, type ProfilePageProps, ProgressBar, type ProgressBarProps, QueryKit, type QueuedTurn, QuotaRow, type QuotaRowProps, Radio, type RadioProps, RangeSlider, type RangeSliderProps, RelativeTime, type RelativeTimeProps, type RoadmapItem, type RoadmapResult, RoadmapTimeline, type RoadmapTimelineProps, type Role, RunActions, type RunActionsProps, type RunConfig, RuntimeKit, type RuntimeSummary, SaturationDistribution, type SaturationDistributionCampus, type SaturationDistributionProps, ScoreMeter, type ScoreMeterProps, ScreenHead, type ScreenHeadProps, SearchField, type SearchFieldProps, SegmentedControl, type SegmentedControlProps, SegmentedMeter, type SegmentedMeterProps, Select, type SelectOption, type SelectProps, type SendMessageResult, type ServerTable, type Session, type SessionContextValue, type Flag as SessionFlag, SessionKit, SessionProvider, type SessionProviderProps, type SessionRole, type SessionStats, type SessionUser, SidebarNav, type SidebarNavItem, type SidebarNavProps, type SignInContinueAs, SignInPage, type SignInPageProps, Skeleton, type SkeletonProps, SkeletonText, type SkeletonTextProps, type SlashCommand, Slider, type SliderProps, SortMenu, type SortMenuField, type SortMenuProps, type SpecModule, Spinner, type SpinnerProps, type StackedLayer, type StackedLayerOptions, StackedLayerProvider, StatTile, type StatTileProps, type Step, StepList, type StepListProps, type StreamHandlers, type Suggestion, SurroundSound, type SurroundSoundProps, Switch, type SwitchProps, type TableQuery, Tabs, type TabsProps, Tag, type TagProps, TestModeBar, type TestModeBarProps, type TextScale, Textarea, type TextareaProps, type ThemeMode, ThinkingBlock, type ThinkingBlockProps, type ThreadSummary, TimePicker, type TimePickerProps, Toast, type ToastProps, Tooltip, type TooltipProps, Topbar, type TopbarProps, TranscriptKit, TransferList, type TransferListProps, type TransferListSide, type TransferListSideProps, TrendChart, type TrendChartProps, type TrendSeries, type UsageLimit, UseFeatureStatus, type UseResponsiveRailOptions, type UseResponsiveRailResult, UseRuntimeMode, type UseServerTableOptions, type User, VIRTUAL_LIST_BUFFER_ROWS, VIRTUAL_LIST_ROW_GAP, type VersionRecord, type VersionStore, VirtualList, type VirtualListProps, type VirtualLoadedBand, type VirtualWindow, type VoiceHandler, acceptMatches, anyOfFilter, applyPrefs, channelWeightOf, computeNeedMore, computeVirtualWindow, createLocalStorageAppearanceStore, createVersionStore, eqFilter, extensionOf, extractClipboardFiles, filterFiles, formatAbsolute, formatBytes, formatClock, formatDocumentTitle, formatDuration, formatEta, formatRelative, groupMessages, hasModifier, iconForMime, importanceLevel, importanceTokens, installFlytedeskFavicon, isImage, isSystemMessage, jobBucket, languageLabel, loadPrefs, markdownToText, meterFormats, modifierLabel, parseDelimited, pastedTextName, pluralizeUnit, preferenceScore, preferenceSegments, rangeFilter, resolveTheme, revokeAttachment, savePrefs, toAttachment, tokenize, useAppearancePrefs, useChatEngine, useDocumentTitle, useFeatureStatus, usePopoverPosition, useResponsiveRail, useRuntimeMode, useServerTable, useSessionContext, useStackedLayer, useStagedFiles, validateFilterValue, visibleMessages };