@pstdio/ui 0.6.0 → 0.7.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.
Files changed (87) hide show
  1. package/dist/chat-ui.js +1270 -1080
  2. package/dist/chat-ui.js.map +1 -1
  3. package/dist/components/chat-ui/components/ai-message.d.ts +2 -0
  4. package/dist/components/chat-ui/components/chat-message-list.d.ts +12 -0
  5. package/dist/components/chat-ui/components/chat-panel.d.ts +3 -1
  6. package/dist/components/chat-ui/components/message-action-panel.d.ts +10 -0
  7. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +37 -0
  8. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +18 -0
  9. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +29 -0
  10. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +23 -0
  11. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +30 -0
  12. package/dist/components/code-editor.d.ts +1 -1
  13. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +4 -0
  14. package/dist/components/diff-viewer/diff-card-body.d.ts +34 -0
  15. package/dist/components/diff-viewer/diff-card-content.d.ts +22 -0
  16. package/dist/components/diff-viewer/diff-card-load-state.d.ts +9 -0
  17. package/dist/components/diff-viewer/diff-card.d.ts +43 -0
  18. package/dist/components/diff-viewer/diff-drawer.d.ts +33 -0
  19. package/dist/components/diff-viewer/diff-editor.d.ts +20 -0
  20. package/dist/components/diff-viewer/diff-size.d.ts +14 -0
  21. package/dist/components/diff-viewer/diff-view-adapter.d.ts +27 -0
  22. package/dist/components/diff-viewer/diff-viewer.d.ts +14 -0
  23. package/dist/components/diff-viewer/diff-viewer.store.d.ts +21 -0
  24. package/dist/components/diff-viewer/file-list-panel.d.ts +19 -0
  25. package/dist/components/diff-viewer/index.d.ts +5 -0
  26. package/dist/components/diff-viewer/types.d.ts +13 -0
  27. package/dist/components/integration-card.d.ts +12 -0
  28. package/dist/components/list-row/list-row-menu.d.ts +12 -0
  29. package/dist/components/list-row/list-row.types.d.ts +8 -0
  30. package/dist/components/palette-filter.d.ts +23 -0
  31. package/dist/components/palette-list.d.ts +11 -0
  32. package/dist/components/palette-shortcut.d.ts +4 -0
  33. package/dist/components/palette.d.ts +47 -0
  34. package/dist/components/panel-sidebar-registration-context.d.ts +12 -0
  35. package/dist/components/param-editor-label.d.ts +6 -0
  36. package/dist/components/param-editor.d.ts +2 -2
  37. package/dist/components/param-editor.types.d.ts +6 -1
  38. package/dist/components/performance-panel.d.ts +40 -0
  39. package/dist/components/{folder-picker-dialog.d.ts → repo-picker-dialog.d.ts} +6 -6
  40. package/dist/components/resizable-split-layout.d.ts +20 -0
  41. package/dist/components/resizable-split-layout.handle.d.ts +17 -0
  42. package/dist/components/resource-context-menu.d.ts +1 -0
  43. package/dist/components/session-indicator.d.ts +2 -2
  44. package/dist/components/sidebar/sidebar-header.d.ts +0 -1
  45. package/dist/components/sidebar/sidebar.types.d.ts +7 -1
  46. package/dist/components/simple-card.d.ts +5 -0
  47. package/dist/components/tree-list/tree-list.d.ts +28 -1
  48. package/dist/index.d.ts +18 -8
  49. package/dist/index.js +4356 -2292
  50. package/dist/index.js.map +1 -1
  51. package/dist/radio-DJtQY9po.js +286 -0
  52. package/dist/radio-DJtQY9po.js.map +1 -0
  53. package/dist/style.css +1 -1
  54. package/dist/theme/custom/index.d.ts +2 -0
  55. package/dist/theme/custom/vscode-theme.d.ts +32 -0
  56. package/dist/theme/index.d.ts +2 -1
  57. package/dist/theme/recipes/dialog.d.ts +1 -1
  58. package/dist/theme/recipes/drawer.d.ts +1 -1
  59. package/dist/theme/recipes/menu.d.ts +1 -1
  60. package/dist/theme/recipes/tabs.d.ts +18 -0
  61. package/dist/{theme-0SQvHr1t.js → theme-D-aCJqTf.js} +200 -123
  62. package/dist/theme-D-aCJqTf.js.map +1 -0
  63. package/dist/theme.js +6 -4
  64. package/dist/utils/apply-theme-preference.d.ts +2 -0
  65. package/package.json +4 -1
  66. package/dist/components/app-shell/app-shell.d.ts +0 -1
  67. package/dist/components/app-shell/command-palette.d.ts +0 -16
  68. package/dist/components/app-shell/file-tree.d.ts +0 -7
  69. package/dist/components/app-shell/mock-chat.d.ts +0 -2
  70. package/dist/components/app-shell/mock-data.d.ts +0 -37
  71. package/dist/components/app-shell/pages/project-list-page.d.ts +0 -7
  72. package/dist/components/app-shell/pages/sessions-page.d.ts +0 -6
  73. package/dist/components/app-shell/pages/settings-page.d.ts +0 -5
  74. package/dist/components/app-shell/pages/ticket-details-page.d.ts +0 -7
  75. package/dist/components/app-shell/pages/tickets-page.d.ts +0 -7
  76. package/dist/components/app-shell/pages/workspace-page.d.ts +0 -1
  77. package/dist/components/app-shell/resizable-panel.d.ts +0 -13
  78. package/dist/components/attached-panel.utils.d.ts +0 -6
  79. package/dist/components/diff-card.d.ts +0 -17
  80. package/dist/components/diff-drawer.d.ts +0 -7
  81. package/dist/components/diff-editor.d.ts +0 -11
  82. package/dist/components/diff-view-adapter.d.ts +0 -14
  83. package/dist/components/properties.d.ts +0 -18
  84. package/dist/radio-C42qncrD.js +0 -236
  85. package/dist/radio-C42qncrD.js.map +0 -1
  86. package/dist/theme-0SQvHr1t.js.map +0 -1
  87. /package/dist/components/{diff-bubble.d.ts → diff-viewer/diff-bubble.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ export interface PanelSidebarRegistration {
3
+ open: boolean;
4
+ resizable: boolean;
5
+ width: number;
6
+ minWidth: number;
7
+ maxWidth: number;
8
+ onWidthChange: (width: number) => void;
9
+ onOpenChange: (open: boolean) => void;
10
+ }
11
+ export declare const PanelSidebarRegistrationContext: import('react').Context<Dispatch<SetStateAction<PanelSidebarRegistration | null>> | null>;
12
+ export declare const usePanelSidebarRegistration: (registration: PanelSidebarRegistration) => boolean;
@@ -0,0 +1,6 @@
1
+ interface ParamEditorLabelProps {
2
+ name: string;
3
+ description?: string;
4
+ }
5
+ export declare const ParamEditorLabel: (props: ParamEditorLabelProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -2,8 +2,8 @@ import { InputGroup, Param, ParamValue, ParamValueMap } from './param-editor.typ
2
2
  export interface ParamEditorProps {
3
3
  params?: Param[];
4
4
  groups?: InputGroup[];
5
- defaultValues: ParamValueMap;
6
- onChange: (id: string, value: ParamValue) => void;
5
+ defaultValues?: ParamValueMap;
6
+ onChange?: (id: string, value: ParamValue) => void;
7
7
  readOnly?: boolean;
8
8
  fullWidth?: boolean;
9
9
  }
@@ -1,3 +1,4 @@
1
+ import { ReactNode } from 'react';
1
2
  export interface BaseParam {
2
3
  id: string;
3
4
  name: string;
@@ -36,6 +37,10 @@ export interface ColorParam extends BaseParam {
36
37
  type: "color";
37
38
  defaultValue: string;
38
39
  }
40
+ export interface PropertyParam extends BaseParam {
41
+ type: "property";
42
+ value: ReactNode;
43
+ }
39
44
  export type ObjectDefinition = (NumberParam | TextParam)[];
40
45
  export interface ObjectParam extends BaseParam {
41
46
  type: "object";
@@ -60,7 +65,7 @@ export interface InputGroup {
60
65
  defaultCollapsed?: boolean;
61
66
  }
62
67
  export type ParamValue = number | string | null | ObjectDefinition | Array<number> | Array<string>;
63
- export type Param = NumberParam | TextParam | SelectionParam | DateParam | ColorParam | ObjectParam | ListParam | VectorParam;
68
+ export type Param = NumberParam | TextParam | SelectionParam | DateParam | ColorParam | PropertyParam | ObjectParam | ListParam | VectorParam;
64
69
  export type ParamValueMap = Record<string, ParamValue>;
65
70
  type WithOptionalDefault<T extends {
66
71
  defaultValue: unknown;
@@ -0,0 +1,40 @@
1
+ import { BoxProps } from '@chakra-ui/react';
2
+ type PerformanceFrameRate = {
3
+ value: number | null;
4
+ averageValue: number | null;
5
+ samples: number[];
6
+ startedAtMs: number;
7
+ totalFrames: number;
8
+ };
9
+ export interface PerformanceFrameRateSnapshot {
10
+ framesPerSecond: number | null;
11
+ averageFramesPerSecond: number | null;
12
+ frameRateSamples: number[];
13
+ }
14
+ declare global {
15
+ interface Window {
16
+ __performancePanelFrameRate?: PerformanceFrameRate;
17
+ __performancePanelFrameRateSamplerInstalled?: boolean;
18
+ }
19
+ }
20
+ export interface PerformancePanelMetric {
21
+ label: string;
22
+ value: string;
23
+ }
24
+ interface PerformancePanelProps {
25
+ title?: string;
26
+ subtitle: string;
27
+ badgeLabel: string;
28
+ metrics: PerformancePanelMetric[];
29
+ framesPerSecond?: number | null;
30
+ averageFramesPerSecond?: number | null;
31
+ frameRateSamples?: number[];
32
+ rootProps?: BoxProps;
33
+ testId?: string;
34
+ }
35
+ export declare const formatPerformanceMs: (value: number | null) => string;
36
+ export declare const formatPerformanceFps: (value: number | null) => string;
37
+ export declare const installPerformanceFrameRateSampler: () => void;
38
+ export declare const readPerformanceFrameRateSnapshot: () => PerformanceFrameRateSnapshot;
39
+ export declare const PerformancePanel: (props: PerformancePanelProps) => import("react/jsx-runtime").JSX.Element;
40
+ export {};
@@ -1,15 +1,15 @@
1
- export interface FolderPickerDialogEntry {
1
+ export interface RepoPickerDialogEntry {
2
2
  name: string;
3
3
  path: string;
4
4
  isDirectory: boolean;
5
5
  isGitRepo: boolean;
6
6
  }
7
- interface FolderPickerDialogProps {
7
+ interface RepoPickerDialogProps {
8
8
  open: boolean;
9
9
  title?: string;
10
10
  description?: string;
11
11
  currentPath?: string;
12
- entries: FolderPickerDialogEntry[];
12
+ entries: RepoPickerDialogEntry[];
13
13
  selectedPath?: string | null;
14
14
  selectedPaths?: string[];
15
15
  isLoading?: boolean;
@@ -19,7 +19,7 @@ interface FolderPickerDialogProps {
19
19
  onSelect: () => void;
20
20
  onSelectHomeDirectory: () => void;
21
21
  onSelectParentDirectory: () => void;
22
- onEntryClick: (entry: FolderPickerDialogEntry) => void;
22
+ onEntryClick: (entry: RepoPickerDialogEntry) => void;
23
23
  }
24
- export type { FolderPickerDialogProps };
25
- export declare const FolderPickerDialog: (props: FolderPickerDialogProps) => import("react/jsx-runtime").JSX.Element;
24
+ export type { RepoPickerDialogProps };
25
+ export declare const RepoPickerDialog: (props: RepoPickerDialogProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { FlexProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ import { ResizableSplitSide } from './resizable-split-layout.handle';
4
+ interface ResizableSplitLayoutProps extends Omit<FlexProps, "children" | "onResize"> {
5
+ resizablePanel: ReactNode;
6
+ contentPanel: ReactNode;
7
+ resizableSide?: ResizableSplitSide;
8
+ defaultSizePx?: number;
9
+ minSizePx?: number;
10
+ maxSizePx?: number;
11
+ contentMinSizePx?: number;
12
+ collapsed?: boolean;
13
+ collapsible?: boolean;
14
+ resizeLabel?: string;
15
+ showResizeSeparator?: boolean;
16
+ onSizeChange?: (width: number) => void;
17
+ onCollapsedChange?: (collapsed: boolean) => void;
18
+ }
19
+ export declare const ResizableSplitLayout: (props: ResizableSplitLayoutProps) => import("react/jsx-runtime").JSX.Element;
20
+ export {};
@@ -0,0 +1,17 @@
1
+ import { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';
2
+ export type ResizableSplitSide = "left" | "right";
3
+ interface ResizeHandleProps {
4
+ bounds: {
5
+ minSize: number;
6
+ maxSize: number;
7
+ };
8
+ contentPanelId: string;
9
+ resizablePanelId: string;
10
+ resizeLabel: string;
11
+ resolvedPanelWidth: number;
12
+ showResizeSeparator: boolean;
13
+ onResizeKeyDown: (event: ReactKeyboardEvent<HTMLDivElement>) => void;
14
+ onResizeStart: (event: ReactPointerEvent<HTMLDivElement>) => void;
15
+ }
16
+ export declare const ResizeHandle: (props: ResizeHandleProps) => import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -7,6 +7,7 @@ export interface ResourceContextAction {
7
7
  onClick: () => void;
8
8
  isDisabled?: boolean;
9
9
  icon?: ReactNode;
10
+ endContent?: ReactNode;
10
11
  }
11
12
  interface ResourceContextMenuProps {
12
13
  actions: ResourceContextAction[];
@@ -1,8 +1,8 @@
1
1
  import { Icon } from '@chakra-ui/react';
2
2
  import { ComponentProps } from 'react';
3
- export type SessionCompletionStatus = "in_progress" | "awaiting_input" | "completed" | "failed" | "cancelled" | "disconnected";
3
+ export type SessionCompletionStatus = "in_progress" | "awaiting_input" | "queued" | "completed" | "failed" | "cancelled" | "disconnected";
4
4
  export declare const resolveSessionIndicatorIcon: (status: SessionCompletionStatus | undefined) => import('react').ForwardRefExoticComponent<Omit<import('lucide-react').LucideProps, "ref"> & import('react').RefAttributes<SVGSVGElement>>;
5
- export declare const resolveSessionIndicatorColor: (status: SessionCompletionStatus | undefined) => "fg.muted" | "fg.error" | "fg.warning" | "fg.success";
5
+ export declare const resolveSessionIndicatorColor: (status: SessionCompletionStatus | undefined) => "fg.muted" | "fg.error" | "fg.warning" | "fg.success" | "fg.info";
6
6
  interface SessionIndicatorProps {
7
7
  status?: SessionCompletionStatus;
8
8
  boxSize?: ComponentProps<typeof Icon>["boxSize"];
@@ -1,7 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  interface SidebarHeaderProps {
3
3
  children?: ReactNode;
4
- onClose?: () => void;
5
4
  }
6
5
  export declare const SidebarHeader: (props: SidebarHeaderProps) => import("react/jsx-runtime").JSX.Element;
7
6
  export {};
@@ -14,9 +14,15 @@ export interface SidebarProps {
14
14
  onNavigate?: (event: TreeListNavigateEvent) => void;
15
15
  closable?: boolean;
16
16
  onOpenChange?: (open: boolean) => void;
17
- /** Allow the user to drag the right edge to resize. Defaults to `true`. */
17
+ /** Allow split layouts to resize the sidebar. Defaults to `true`. */
18
18
  resizable?: boolean;
19
19
  defaultWidth?: number;
20
20
  minWidth?: number;
21
21
  maxWidth?: number;
22
+ /**
23
+ * When enabled, the scroll content is virtualized — only nodes near the viewport
24
+ * are mounted. Use for sidebars that may contain hundreds of entries. Requires
25
+ * sections with flat nodes (no expandable children).
26
+ */
27
+ virtualize?: boolean;
22
28
  }
@@ -0,0 +1,5 @@
1
+ import { BoxProps } from '@chakra-ui/react';
2
+ export type SimpleCardProps = BoxProps;
3
+ export declare const SimpleCard: (props: SimpleCardProps) => import("react/jsx-runtime").JSX.Element;
4
+ export type SimpleCardBodyProps = BoxProps;
5
+ export declare const SimpleCardBody: (props: SimpleCardBodyProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,6 @@
1
1
  import { StackProps } from '@chakra-ui/react';
2
- import { TreeListLinkComponent, TreeListNavigateEvent, TreeListSection } from './tree-list.types';
2
+ import { RefObject } from 'react';
3
+ import { TreeListLinkComponent, TreeListNavigateEvent, TreeListNode, TreeListSection } from './tree-list.types';
3
4
  type TreeListRowVariant = "compact" | "tree";
4
5
  interface TreeListProps {
5
6
  sections: TreeListSection[];
@@ -13,6 +14,32 @@ interface TreeListProps {
13
14
  onNavigate?: (event: TreeListNavigateEvent) => void;
14
15
  onToggleSection?: (sectionId: string) => void;
15
16
  onToggleNode?: (nodeId: string) => void;
17
+ /**
18
+ * When set, the tree's rows are virtualized via @tanstack/react-virtual.
19
+ * Requires `scrollRef` to point at the ancestor scroll viewport.
20
+ */
21
+ virtualize?: boolean;
22
+ scrollRef?: RefObject<HTMLDivElement | null>;
16
23
  }
24
+ export type VirtualRow = {
25
+ kind: "section-header";
26
+ key: string;
27
+ sectionId: string;
28
+ section: TreeListSection;
29
+ collapsible: boolean;
30
+ expanded: boolean;
31
+ } | {
32
+ kind: "node";
33
+ key: string;
34
+ sectionId: string;
35
+ node: TreeListNode;
36
+ level: number;
37
+ } | {
38
+ kind: "section-empty";
39
+ key: string;
40
+ sectionId: string;
41
+ emptyState: TreeListSection["emptyState"];
42
+ };
43
+ export declare const buildVirtualRows: (sections: TreeListSection[], expandedSectionIds: string[], expandedNodeIds: string[]) => VirtualRow[];
17
44
  export declare const TreeList: (props: TreeListProps) => import("react/jsx-runtime").JSX.Element;
18
45
  export {};
package/dist/index.d.ts CHANGED
@@ -13,17 +13,17 @@ export { Checkbox } from './components/checkbox';
13
13
  export { CodeDiffEditor, CodeEditor } from './components/code-editor';
14
14
  export { ContentPlaceholder, Label as ContentPlaceholderLabel, } from './components/content-placeholder';
15
15
  export { DeleteConfirmationModal } from './components/delete-confirmation-modal';
16
- export { DiffBubble } from './components/diff-bubble';
17
- export type { Diff } from './components/diff-card';
18
- export { DiffDrawer } from './components/diff-drawer';
16
+ export type { ChangedFilesViewMode, Diff, DiffViewerProps, DiffViewMode, FileIconInfo } from './components/diff-viewer';
17
+ export { DiffDrawer, DiffViewer, useDiffViewerStore } from './components/diff-viewer';
18
+ export { DiffBubble } from './components/diff-viewer/diff-bubble';
19
19
  export type { EmptyStateProps } from './components/empty-state';
20
20
  export { EmptyState } from './components/empty-state';
21
21
  export { ErrorBoundary } from './components/error-boundary';
22
- export type { FolderPickerDialogEntry, FolderPickerDialogProps, } from './components/folder-picker-dialog';
23
- export { FolderPickerDialog } from './components/folder-picker-dialog';
24
22
  export type { HeaderProps, HeaderVariant } from './components/header';
25
23
  export { Header } from './components/header';
26
24
  export { HorizontalMenuStack } from './components/horizontal-menu-stack';
25
+ export type { IntegrationCardProps } from './components/integration-card';
26
+ export { IntegrationCard } from './components/integration-card';
27
27
  export type { ItemSectionProps } from './components/item-section';
28
28
  export { ItemSection } from './components/item-section';
29
29
  export { PanelLayout, PanelSectionLayout } from './components/layout';
@@ -31,10 +31,17 @@ export { ListRow } from './components/list-row/list-row';
31
31
  export type { ListRowAction, ListRowActionContext, ListRowActionMenuItem, ListRowItem, ListRowNavigationIntent, } from './components/list-row/list-row.types';
32
32
  export type { OpenSourceNotice, OpenSourceNoticesScreenProps, } from './components/open-source-notices-screen';
33
33
  export { OpenSourceNoticesScreen } from './components/open-source-notices-screen';
34
- export type { PropertiesProps, PropertyItem } from './components/properties';
35
- export { Properties } from './components/properties';
34
+ export type { FilterPaletteEntriesOptions, PaletteEntry, PaletteEscapeContext, PaletteMode, PaletteProps, PaletteSearchEntry, PaletteState, PaletteStateValue, } from './components/palette';
35
+ export { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries, Palette, } from './components/palette';
36
+ export type { PaletteShortcutBinding } from './components/palette-shortcut';
37
+ export { PaletteShortcut } from './components/palette-shortcut';
38
+ export type { ParamEditorProps } from './components/param-editor';
39
+ export { ParamEditor } from './components/param-editor';
36
40
  export type { RadioProps } from './components/radio';
37
41
  export { Radio, RadioGroup } from './components/radio';
42
+ export type { RepoPickerDialogEntry, RepoPickerDialogProps } from './components/repo-picker-dialog';
43
+ export { RepoPickerDialog } from './components/repo-picker-dialog';
44
+ export { ResizableSplitLayout } from './components/resizable-split-layout';
38
45
  export type { ResourceContextAction } from './components/resource-context-menu';
39
46
  export { ResourceContextMenu } from './components/resource-context-menu';
40
47
  export { ScrollArea } from './components/scroll-area';
@@ -46,6 +53,8 @@ export { Sidebar } from './components/sidebar/sidebar';
46
53
  export { useSidebarStore } from './components/sidebar/sidebar.store';
47
54
  export type { SidebarProps } from './components/sidebar/sidebar.types';
48
55
  export { SidebarProjectMenu } from './components/sidebar/sidebar-project-menu';
56
+ export type { SimpleCardBodyProps, SimpleCardProps } from './components/simple-card';
57
+ export { SimpleCard, SimpleCardBody } from './components/simple-card';
49
58
  export type { SwitchProps } from './components/switch';
50
59
  export { Switch } from './components/switch';
51
60
  export { DisplayMenu } from './components/tickets/display-menu';
@@ -65,7 +74,8 @@ export { TreeList } from './components/tree-list/tree-list';
65
74
  export type { TreeListAction, TreeListActionContext, TreeListActionMenuItem, TreeListLinkComponent, TreeListNavigateEvent, TreeListNavigationIntent, TreeListNode, TreeListSection, } from './components/tree-list/tree-list.types';
66
75
  export type { WorkspaceBadgeProps } from './components/workspace-badge';
67
76
  export { WorkspaceBadge } from './components/workspace-badge';
68
- export { customThemePreferences, monokaiThemePreference, psTheme } from './theme';
77
+ export type { MonacoThemeData, VsCodeColorTheme } from './theme';
78
+ export { createMonacoThemeFromVsCodeTheme, createThemePreferenceFromVsCodeTheme, customThemePreferences, monokaiThemePreference, psTheme, } from './theme';
69
79
  export { applyThemePreference, defaultThemePreferences, getThemePreferenceClassName, getThemePreferenceClassNames, getThemePreferenceMode, isThemePreference, type ThemePreference, type ThemePreferenceMode, type ThemePreferenceOption, type ThemePreferenceTokens, } from './utils/apply-theme-preference';
70
80
  export { getFileTypeIcon } from './utils/get-file-type-icon';
71
81
  export { getInitialThemePreference, ThemePreferenceProvider, useThemePreference, } from './utils/theme-preference';