@pstdio/ui 0.5.2 → 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 (118) hide show
  1. package/dist/{MermaidComponent-DDCxR-Gs.js → MermaidComponent-D7Baqkwx.js} +2 -2
  2. package/dist/{MermaidComponent-DDCxR-Gs.js.map → MermaidComponent-D7Baqkwx.js.map} +1 -1
  3. package/dist/chat-ui.js +1272 -1080
  4. package/dist/chat-ui.js.map +1 -1
  5. package/dist/components/activity/activity-avatar.d.ts +9 -0
  6. package/dist/components/activity/activity-comment.d.ts +19 -0
  7. package/dist/components/activity/activity-composer.d.ts +18 -0
  8. package/dist/components/activity/activity-event.d.ts +12 -0
  9. package/dist/components/activity/activity-root.d.ts +15 -0
  10. package/dist/components/activity/activity-timeline.d.ts +6 -0
  11. package/dist/components/activity/activity.types.d.ts +5 -0
  12. package/dist/components/activity/index.d.ts +25 -0
  13. package/dist/components/chat-ui/components/ai-conversation.d.ts +4 -4
  14. package/dist/components/chat-ui/components/ai-message.d.ts +2 -0
  15. package/dist/components/chat-ui/components/chat-message-list.d.ts +12 -0
  16. package/dist/components/chat-ui/components/chat-panel.d.ts +3 -1
  17. package/dist/components/chat-ui/components/message-action-panel.d.ts +10 -0
  18. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +37 -0
  19. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +18 -0
  20. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +29 -0
  21. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +23 -0
  22. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +30 -0
  23. package/dist/components/code-editor.d.ts +1 -1
  24. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +4 -0
  25. package/dist/components/diff-viewer/diff-card-body.d.ts +34 -0
  26. package/dist/components/diff-viewer/diff-card-content.d.ts +22 -0
  27. package/dist/components/diff-viewer/diff-card-load-state.d.ts +9 -0
  28. package/dist/components/diff-viewer/diff-card.d.ts +43 -0
  29. package/dist/components/diff-viewer/diff-drawer.d.ts +33 -0
  30. package/dist/components/diff-viewer/diff-editor.d.ts +20 -0
  31. package/dist/components/diff-viewer/diff-size.d.ts +14 -0
  32. package/dist/components/diff-viewer/diff-view-adapter.d.ts +27 -0
  33. package/dist/components/diff-viewer/diff-viewer.d.ts +14 -0
  34. package/dist/components/diff-viewer/diff-viewer.store.d.ts +21 -0
  35. package/dist/components/diff-viewer/file-list-panel.d.ts +19 -0
  36. package/dist/components/diff-viewer/index.d.ts +5 -0
  37. package/dist/components/diff-viewer/types.d.ts +13 -0
  38. package/dist/components/integration-card.d.ts +12 -0
  39. package/dist/components/list-row/list-row-menu.d.ts +12 -0
  40. package/dist/components/list-row/list-row.types.d.ts +8 -0
  41. package/dist/components/palette-filter.d.ts +23 -0
  42. package/dist/components/palette-list.d.ts +11 -0
  43. package/dist/components/palette-shortcut.d.ts +4 -0
  44. package/dist/components/palette.d.ts +47 -0
  45. package/dist/components/panel-sidebar-registration-context.d.ts +12 -0
  46. package/dist/components/param-editor-label.d.ts +6 -0
  47. package/dist/components/param-editor.d.ts +2 -2
  48. package/dist/components/param-editor.types.d.ts +6 -1
  49. package/dist/components/performance-panel.d.ts +40 -0
  50. package/dist/components/{folder-picker-dialog.d.ts → repo-picker-dialog.d.ts} +6 -6
  51. package/dist/components/resizable-split-layout.d.ts +20 -0
  52. package/dist/components/resizable-split-layout.handle.d.ts +17 -0
  53. package/dist/components/resource-context-menu.d.ts +1 -0
  54. package/dist/components/rich-text/shared/editor-config.d.ts +1 -0
  55. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +16 -0
  56. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +2 -0
  57. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +3 -0
  58. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +18 -0
  59. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +1 -0
  60. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +2 -0
  61. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
  62. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +3 -0
  63. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +1 -0
  64. package/dist/components/session-indicator.d.ts +2 -2
  65. package/dist/components/sidebar/sidebar-header.d.ts +0 -1
  66. package/dist/components/sidebar/sidebar.types.d.ts +7 -1
  67. package/dist/components/simple-card.d.ts +5 -0
  68. package/dist/components/tree-list/tree-list.d.ts +28 -1
  69. package/dist/index.d.ts +20 -8
  70. package/dist/index.js +4771 -2446
  71. package/dist/index.js.map +1 -1
  72. package/dist/radio-DJtQY9po.js +286 -0
  73. package/dist/radio-DJtQY9po.js.map +1 -0
  74. package/dist/{rich-message-DeJwzVeV.js → rich-message-33DPxuWJ.js} +502 -464
  75. package/dist/rich-message-33DPxuWJ.js.map +1 -0
  76. package/dist/rich-text.js +738 -414
  77. package/dist/rich-text.js.map +1 -1
  78. package/dist/style.css +1 -1
  79. package/dist/theme/custom/index.d.ts +2 -0
  80. package/dist/theme/custom/vscode-theme.d.ts +32 -0
  81. package/dist/theme/index.d.ts +2 -1
  82. package/dist/theme/recipes/alert.d.ts +1 -1
  83. package/dist/theme/recipes/dialog.d.ts +1 -1
  84. package/dist/theme/recipes/drawer.d.ts +1 -1
  85. package/dist/theme/recipes/menu.d.ts +1 -1
  86. package/dist/theme/recipes/popover.d.ts +1 -1
  87. package/dist/theme/recipes/tabs.d.ts +18 -0
  88. package/dist/theme/tokens/borders.d.ts +6 -24
  89. package/dist/theme/tokens/colors.d.ts +168 -168
  90. package/dist/theme/tokens/shadows.d.ts +5 -5
  91. package/dist/{theme-Dq4r3aRE.js → theme-D-aCJqTf.js} +295 -236
  92. package/dist/theme-D-aCJqTf.js.map +1 -0
  93. package/dist/theme.js +6 -4
  94. package/dist/utils/apply-theme-preference.d.ts +2 -0
  95. package/package.json +4 -1
  96. package/dist/components/app-shell/app-shell.d.ts +0 -1
  97. package/dist/components/app-shell/command-palette.d.ts +0 -16
  98. package/dist/components/app-shell/file-tree.d.ts +0 -7
  99. package/dist/components/app-shell/mock-chat.d.ts +0 -2
  100. package/dist/components/app-shell/mock-data.d.ts +0 -37
  101. package/dist/components/app-shell/pages/project-list-page.d.ts +0 -7
  102. package/dist/components/app-shell/pages/sessions-page.d.ts +0 -6
  103. package/dist/components/app-shell/pages/settings-page.d.ts +0 -5
  104. package/dist/components/app-shell/pages/ticket-details-page.d.ts +0 -7
  105. package/dist/components/app-shell/pages/tickets-page.d.ts +0 -7
  106. package/dist/components/app-shell/pages/workspace-page.d.ts +0 -1
  107. package/dist/components/app-shell/resizable-panel.d.ts +0 -13
  108. package/dist/components/attached-panel.utils.d.ts +0 -6
  109. package/dist/components/diff-card.d.ts +0 -17
  110. package/dist/components/diff-drawer.d.ts +0 -7
  111. package/dist/components/diff-editor.d.ts +0 -11
  112. package/dist/components/diff-view-adapter.d.ts +0 -14
  113. package/dist/components/properties.d.ts +0 -18
  114. package/dist/radio-C42qncrD.js +0 -236
  115. package/dist/radio-C42qncrD.js.map +0 -1
  116. package/dist/rich-message-DeJwzVeV.js.map +0 -1
  117. package/dist/theme-Dq4r3aRE.js.map +0 -1
  118. /package/dist/components/{diff-bubble.d.ts → diff-viewer/diff-bubble.d.ts} +0 -0
@@ -0,0 +1,5 @@
1
+ export type { Diff } from './diff-card';
2
+ export { DiffDrawer } from './diff-drawer';
3
+ export { DiffViewer, type DiffViewerProps } from './diff-viewer';
4
+ export { useDiffViewerStore } from './diff-viewer.store';
5
+ export type { ChangedFilesViewMode, DiffViewMode, FileIconInfo } from './types';
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ export type ChangedFilesViewMode = "nested" | "flat";
3
+ export type DiffViewMode = "unified" | "split";
4
+ export interface ChangedFileTreeNode {
5
+ id: string;
6
+ name: string;
7
+ type: "folder" | "file";
8
+ children?: ChangedFileTreeNode[];
9
+ }
10
+ export interface FileIconInfo {
11
+ icon: ReactNode;
12
+ color: string;
13
+ }
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ export interface IntegrationCardProps {
3
+ icon: ReactNode;
4
+ name: string;
5
+ description: string;
6
+ id: string;
7
+ version?: string;
8
+ category?: string;
9
+ active?: boolean;
10
+ actionLabel?: string;
11
+ }
12
+ export declare const IntegrationCard: (props: IntegrationCardProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { ReactElement } from 'react';
2
+ import { ListRowActionMenuItem, ListRowMenuPlacement } from './list-row.types';
3
+ interface ListRowMenuProps {
4
+ items: ListRowActionMenuItem[];
5
+ open: boolean;
6
+ placement?: ListRowMenuPlacement;
7
+ children: ReactElement;
8
+ onOpenChange: (open: boolean) => void;
9
+ onSelect: (item: ListRowActionMenuItem) => void;
10
+ }
11
+ export declare const ListRowMenu: (props: ListRowMenuProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -16,12 +16,16 @@ export interface ListRowActionMenuItem {
16
16
  size?: number | string;
17
17
  }>;
18
18
  disabled?: boolean;
19
+ /** Trailing content rendered after the label. Use for Kbd shortcuts, counts, or badges. */
20
+ endContent?: ReactNode;
19
21
  onAction?: () => void;
20
22
  }
21
23
  export interface ListRowAction {
22
24
  id: string;
23
25
  label: string;
24
26
  icon?: ReactNode;
27
+ /** Tooltip shown when the action button is hovered or focused. Can include label + Kbd hint. */
28
+ tooltip?: ReactNode;
25
29
  searchPlaceholder?: string;
26
30
  emptyMenuLabel?: string;
27
31
  menuItems?: ListRowActionMenuItem[];
@@ -29,6 +33,7 @@ export interface ListRowAction {
29
33
  }
30
34
  export type ListRowVariant = "default" | "compact" | "tree";
31
35
  export type ListRowTone = "default" | "danger";
36
+ export type ListRowMenuPlacement = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "right" | "right-start" | "right-end" | "left" | "left-start" | "left-end";
32
37
  export interface ListRowItem {
33
38
  id?: string;
34
39
  label: ReactNode;
@@ -51,6 +56,9 @@ export interface ListRowItem {
51
56
  href?: string;
52
57
  navigationIntent?: ListRowNavigationIntent;
53
58
  onActivate?: () => void;
59
+ /** Left-click menu opened from the row surface. */
60
+ menuItems?: ListRowActionMenuItem[];
61
+ menuPlacement?: ListRowMenuPlacement;
54
62
  contextMenuItems?: ListRowActionMenuItem[];
55
63
  actions?: ListRowAction[];
56
64
  children?: ListRowItem[];
@@ -0,0 +1,23 @@
1
+ import { ReactNode } from 'react';
2
+ export declare const DEFAULT_PALETTE_ASSET_LIMIT = 48;
3
+ export interface PaletteSearchEntry {
4
+ id: string;
5
+ mode?: string;
6
+ label: ReactNode;
7
+ searchText?: string;
8
+ secondaryLabel?: ReactNode;
9
+ assetType?: string;
10
+ }
11
+ export interface PaletteMode {
12
+ id: string;
13
+ inputPrefix?: string;
14
+ }
15
+ export interface FilterPaletteEntriesOptions {
16
+ query: string;
17
+ mode?: string;
18
+ getEffectiveQuery?: (query: string) => string;
19
+ defaultAssetLimit?: number;
20
+ }
21
+ export declare const resolvePaletteMode: (query: string, modes?: readonly PaletteMode[], fallbackMode?: string) => string;
22
+ export declare const getPaletteEffectiveQuery: (query: string, modes?: readonly PaletteMode[], modeId?: string) => string;
23
+ export declare const filterPaletteEntries: <T extends PaletteSearchEntry>(entries: T[], options: FilterPaletteEntriesOptions) => T[];
@@ -0,0 +1,11 @@
1
+ import { RefObject } from 'react';
2
+ import { PaletteEntry } from './palette';
3
+ interface PaletteListProps<T extends PaletteEntry> {
4
+ entries: T[];
5
+ activeIndex: number;
6
+ emptyLabel: string;
7
+ onHover: (index: number) => void;
8
+ scrollRef: RefObject<HTMLDivElement | null>;
9
+ }
10
+ export declare const PaletteList: <T extends PaletteEntry>(props: PaletteListProps<T>) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,4 @@
1
+ export type PaletteShortcutBinding = string | string[];
2
+ export declare const PaletteShortcut: (props: {
3
+ binding: PaletteShortcutBinding;
4
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,47 @@
1
+ import { ReactNode, SetStateAction } from 'react';
2
+ import { DEFAULT_PALETTE_ASSET_LIMIT, FilterPaletteEntriesOptions, filterPaletteEntries, PaletteMode, PaletteSearchEntry } from './palette-filter';
3
+ export type { FilterPaletteEntriesOptions, PaletteMode, PaletteSearchEntry };
4
+ export { DEFAULT_PALETTE_ASSET_LIMIT, filterPaletteEntries };
5
+ export interface PaletteEntry extends PaletteSearchEntry {
6
+ description?: ReactNode;
7
+ icon?: ReactNode;
8
+ shortcut?: ReactNode;
9
+ endContent?: ReactNode;
10
+ group?: string;
11
+ isSelected?: boolean;
12
+ onActivate: () => void;
13
+ }
14
+ export interface PaletteState<T extends PaletteEntry> {
15
+ query: string;
16
+ mode?: string;
17
+ activeIndex: number;
18
+ entries: T[];
19
+ }
20
+ export interface PaletteEscapeContext<T extends PaletteEntry> extends PaletteState<T> {
21
+ activeEntry: T | null;
22
+ entryCount: number;
23
+ setQuery: (query: string) => void;
24
+ setActiveIndex: (index: SetStateAction<number>) => void;
25
+ runActiveEntry: () => void;
26
+ closePalette: () => void;
27
+ }
28
+ export type PaletteStateValue<T extends PaletteEntry, TValue> = TValue | ((state: PaletteState<T>) => TValue);
29
+ export interface PaletteProps<T extends PaletteEntry = PaletteEntry> {
30
+ open: boolean;
31
+ entries: T[];
32
+ initialQuery?: string;
33
+ initialActiveIndex?: number;
34
+ mode?: string;
35
+ modes?: PaletteMode[];
36
+ resetKey?: string;
37
+ inputIcon?: PaletteStateValue<T, ReactNode>;
38
+ placeholder?: PaletteStateValue<T, string>;
39
+ emptyLabel?: string;
40
+ footerStart?: ReactNode;
41
+ footerEnd?: ReactNode;
42
+ filterEntries?: (entries: T[], query: string, mode?: string) => T[];
43
+ onActiveEntryChange?: (entry: T | null, index: number) => void;
44
+ onClose: () => void;
45
+ onEscape?: (ctx: PaletteEscapeContext<T>) => boolean | undefined;
46
+ }
47
+ export declare const Palette: <T extends PaletteEntry>(props: PaletteProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -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,4 +1,5 @@
1
1
  import { Klass, LexicalNode } from 'lexical';
2
2
  export declare const editorNodes: Array<Klass<LexicalNode>>;
3
+ export declare const baseEditorTransformers: import('@lexical/markdown').Transformer[];
3
4
  export declare const editorTransformers: import('@lexical/markdown').Transformer[];
4
5
  export declare const editorTheme: import('lexical').EditorThemeClasses;
@@ -0,0 +1,16 @@
1
+ import { LexicalEditor } from 'lexical';
2
+ import { BlockType } from './resolve-block-type';
3
+ interface FloatingToolbarButtonsProps {
4
+ editor: LexicalEditor;
5
+ blockType: BlockType;
6
+ isBold: boolean;
7
+ isItalic: boolean;
8
+ isUnderline: boolean;
9
+ isLink: boolean;
10
+ formatHeading: (headingSize: "h1" | "h2" | "h3") => void;
11
+ formatList: (type: "bullet" | "number" | "check") => void;
12
+ formatCodeBlock: () => void;
13
+ insertLink: () => void;
14
+ }
15
+ export declare function FloatingToolbarButtons(props: FloatingToolbarButtonsProps): import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,2 @@
1
+ import { LexicalCommand } from 'lexical';
2
+ export declare const TOGGLE_LINK_EDIT_MODE_COMMAND: LexicalCommand<boolean>;
@@ -0,0 +1,3 @@
1
+ export { TOGGLE_LINK_EDIT_MODE_COMMAND } from './commands';
2
+ export { default as LinkEditorPlugin } from './LinkEditorPlugin';
3
+ export { default as LinkPlugin } from './LinkPlugin';
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ interface LinkEditorContentProps {
3
+ isActive: boolean;
4
+ isLinkEditMode: boolean;
5
+ editedLinkUrl: string;
6
+ editedLinkUrlIsValid: boolean;
7
+ linkUrl: string;
8
+ href: string;
9
+ inputRef: React.RefObject<HTMLInputElement | null>;
10
+ onEditedLinkUrlChange: (url: string) => void;
11
+ onInputKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
12
+ onClose: () => void;
13
+ onSubmit: () => void;
14
+ onEdit: () => void;
15
+ onRemove: () => void;
16
+ }
17
+ export declare function LinkEditorContent(props: LinkEditorContentProps): import("react/jsx-runtime").JSX.Element | null;
18
+ export {};
@@ -0,0 +1 @@
1
+ export declare function shouldCancelLinkEdit(isLinkEditMode: boolean, isLink: boolean, linkUrl: string): boolean;
@@ -0,0 +1,2 @@
1
+ import { RangeSelection } from 'lexical';
2
+ export declare function getSelectionLinkUrl(selection: RangeSelection): string;
@@ -1 +1 @@
1
- export declare function setFloatingElemPos(targetRect: DOMRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, verticalGap?: number, horizontalOffset?: number): void;
1
+ export declare function setFloatingElemPos(targetRect: DOMRect | null, floatingElem: HTMLElement, anchorElem: HTMLElement, verticalGap?: number, horizontalOffset?: number, placement?: "above" | "legacy"): void;
@@ -0,0 +1,3 @@
1
+ import { editorTransformers } from '../editor-config';
2
+ export { editorTransformers };
3
+ export declare function createHeadlessEditor(): import('lexical').LexicalEditor;
@@ -3,6 +3,7 @@ import { TextNode } from 'lexical';
3
3
  export declare const TABLE: ElementTransformer;
4
4
  export declare const UNDERLINE_INS_TAG: TextMatchTransformer;
5
5
  export declare const UNDERLINE_U_TAG: TextMatchTransformer;
6
+ export declare const LINK: TextMatchTransformer;
6
7
  export declare const BARE_URL: TextMatchTransformer;
7
8
  export declare const TRANSFORMERS_EXTENDED: (Readonly<{
8
9
  dependencies: Array<import('lexical').Klass<import('lexical').LexicalNode>>;
@@ -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
@@ -1,4 +1,6 @@
1
1
  export { ChakraProvider } from '@chakra-ui/react';
2
+ export type { ActivityActor, ActivityAvatarProps, ActivityCommentProps, ActivityComposerProps, ActivityEventProps, ActivityFeedProps, ActivityHeaderProps, ActivityReplyProps, ActivityRootProps, ActivityTimelineProps, } from './components/activity';
3
+ export { Activity, ActivityAvatar, ActivityComment, ActivityComposer, ActivityEvent, ActivityFeed, ActivityHeader, ActivityReply, ActivityRoot, ActivityTimeline, } from './components/activity';
2
4
  export type { AlertProps } from './components/alert';
3
5
  export { AlertMessage } from './components/alert';
4
6
  export { AttachedPanel } from './components/attached-panel';
@@ -11,17 +13,17 @@ export { Checkbox } from './components/checkbox';
11
13
  export { CodeDiffEditor, CodeEditor } from './components/code-editor';
12
14
  export { ContentPlaceholder, Label as ContentPlaceholderLabel, } from './components/content-placeholder';
13
15
  export { DeleteConfirmationModal } from './components/delete-confirmation-modal';
14
- export { DiffBubble } from './components/diff-bubble';
15
- export type { Diff } from './components/diff-card';
16
- 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';
17
19
  export type { EmptyStateProps } from './components/empty-state';
18
20
  export { EmptyState } from './components/empty-state';
19
21
  export { ErrorBoundary } from './components/error-boundary';
20
- export type { FolderPickerDialogEntry, FolderPickerDialogProps, } from './components/folder-picker-dialog';
21
- export { FolderPickerDialog } from './components/folder-picker-dialog';
22
22
  export type { HeaderProps, HeaderVariant } from './components/header';
23
23
  export { Header } from './components/header';
24
24
  export { HorizontalMenuStack } from './components/horizontal-menu-stack';
25
+ export type { IntegrationCardProps } from './components/integration-card';
26
+ export { IntegrationCard } from './components/integration-card';
25
27
  export type { ItemSectionProps } from './components/item-section';
26
28
  export { ItemSection } from './components/item-section';
27
29
  export { PanelLayout, PanelSectionLayout } from './components/layout';
@@ -29,10 +31,17 @@ export { ListRow } from './components/list-row/list-row';
29
31
  export type { ListRowAction, ListRowActionContext, ListRowActionMenuItem, ListRowItem, ListRowNavigationIntent, } from './components/list-row/list-row.types';
30
32
  export type { OpenSourceNotice, OpenSourceNoticesScreenProps, } from './components/open-source-notices-screen';
31
33
  export { OpenSourceNoticesScreen } from './components/open-source-notices-screen';
32
- export type { PropertiesProps, PropertyItem } from './components/properties';
33
- 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';
34
40
  export type { RadioProps } from './components/radio';
35
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';
36
45
  export type { ResourceContextAction } from './components/resource-context-menu';
37
46
  export { ResourceContextMenu } from './components/resource-context-menu';
38
47
  export { ScrollArea } from './components/scroll-area';
@@ -44,6 +53,8 @@ export { Sidebar } from './components/sidebar/sidebar';
44
53
  export { useSidebarStore } from './components/sidebar/sidebar.store';
45
54
  export type { SidebarProps } from './components/sidebar/sidebar.types';
46
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';
47
58
  export type { SwitchProps } from './components/switch';
48
59
  export { Switch } from './components/switch';
49
60
  export { DisplayMenu } from './components/tickets/display-menu';
@@ -63,7 +74,8 @@ export { TreeList } from './components/tree-list/tree-list';
63
74
  export type { TreeListAction, TreeListActionContext, TreeListActionMenuItem, TreeListLinkComponent, TreeListNavigateEvent, TreeListNavigationIntent, TreeListNode, TreeListSection, } from './components/tree-list/tree-list.types';
64
75
  export type { WorkspaceBadgeProps } from './components/workspace-badge';
65
76
  export { WorkspaceBadge } from './components/workspace-badge';
66
- export { customThemePreferences, monokaiThemePreference, psTheme } from './theme';
77
+ export type { MonacoThemeData, VsCodeColorTheme } from './theme';
78
+ export { createMonacoThemeFromVsCodeTheme, createThemePreferenceFromVsCodeTheme, customThemePreferences, monokaiThemePreference, psTheme, } from './theme';
67
79
  export { applyThemePreference, defaultThemePreferences, getThemePreferenceClassName, getThemePreferenceClassNames, getThemePreferenceMode, isThemePreference, type ThemePreference, type ThemePreferenceMode, type ThemePreferenceOption, type ThemePreferenceTokens, } from './utils/apply-theme-preference';
68
80
  export { getFileTypeIcon } from './utils/get-file-type-icon';
69
81
  export { getInitialThemePreference, ThemePreferenceProvider, useThemePreference, } from './utils/theme-preference';