@pstdio/ui 0.5.1 → 0.6.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 (92) hide show
  1. package/dist/{MermaidComponent-x3aKzNXm.js → MermaidComponent-D7Baqkwx.js} +2 -2
  2. package/dist/{MermaidComponent-x3aKzNXm.js.map → MermaidComponent-D7Baqkwx.js.map} +1 -1
  3. package/dist/chat-ui.js +744 -726
  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/app-shell/app-shell.d.ts +1 -0
  14. package/dist/components/app-shell/command-palette.d.ts +16 -0
  15. package/dist/components/app-shell/file-tree.d.ts +7 -0
  16. package/dist/components/app-shell/mock-chat.d.ts +2 -0
  17. package/dist/components/app-shell/mock-data.d.ts +37 -0
  18. package/dist/components/app-shell/pages/project-list-page.d.ts +7 -0
  19. package/dist/components/app-shell/pages/sessions-page.d.ts +6 -0
  20. package/dist/components/app-shell/pages/settings-page.d.ts +5 -0
  21. package/dist/components/app-shell/pages/ticket-details-page.d.ts +7 -0
  22. package/dist/components/app-shell/pages/tickets-page.d.ts +7 -0
  23. package/dist/components/app-shell/pages/workspace-page.d.ts +1 -0
  24. package/dist/components/app-shell/resizable-panel.d.ts +13 -0
  25. package/dist/components/chat-ui/components/ai-conversation.d.ts +4 -4
  26. package/dist/components/chat-ui/components/ai-message.d.ts +7 -5
  27. package/dist/components/chat-ui/components/chat-input.d.ts +1 -0
  28. package/dist/components/chat-ui/components/chat-panel.d.ts +1 -0
  29. package/dist/components/chat-ui/mocks/library/index.d.ts +10 -0
  30. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +2 -2
  31. package/dist/components/chat-ui/tool-rendering/shared.d.ts +1 -1
  32. package/dist/components/content-placeholder.d.ts +1 -0
  33. package/dist/components/header.d.ts +7 -0
  34. package/dist/components/list-row/list-row-actions.d.ts +10 -0
  35. package/dist/components/list-row/list-row.d.ts +2 -0
  36. package/dist/components/list-row/list-row.types.d.ts +85 -0
  37. package/dist/components/{sidebar-tree → list-row}/searchable-action-menu.d.ts +2 -2
  38. package/dist/components/panel-header.constants.d.ts +1 -1
  39. package/dist/components/resource-context-menu.d.ts +1 -2
  40. package/dist/components/rich-text/shared/editor-config.d.ts +1 -0
  41. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +16 -0
  42. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +2 -0
  43. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +3 -0
  44. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +18 -0
  45. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +1 -0
  46. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +2 -0
  47. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +1 -1
  48. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +3 -0
  49. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +1 -0
  50. package/dist/components/sidebar/sidebar-project-menu.d.ts +0 -3
  51. package/dist/components/sidebar/sidebar.store.d.ts +2 -0
  52. package/dist/components/sidebar/sidebar.types.d.ts +10 -4
  53. package/dist/components/tickets/tickets-workspace.d.ts +1 -0
  54. package/dist/components/tree-list/tree-list.d.ts +18 -0
  55. package/dist/components/tree-list/tree-list.types.d.ts +29 -0
  56. package/dist/index.d.ts +10 -5
  57. package/dist/index.js +2697 -2343
  58. package/dist/index.js.map +1 -1
  59. package/dist/{rich-message-CoXTd5kw.js → rich-message-33DPxuWJ.js} +502 -464
  60. package/dist/rich-message-33DPxuWJ.js.map +1 -0
  61. package/dist/rich-text.js +738 -414
  62. package/dist/rich-text.js.map +1 -1
  63. package/dist/style.css +1 -1
  64. package/dist/theme/custom/index.d.ts +3 -0
  65. package/dist/theme/custom/monokai.json.d.ts +80 -0
  66. package/dist/theme/index.d.ts +1 -0
  67. package/dist/theme/primitives/colors.d.ts +6 -0
  68. package/dist/theme/recipes/alert.d.ts +1 -1
  69. package/dist/theme/recipes/button.d.ts +28 -0
  70. package/dist/theme/recipes/dialog.d.ts +1 -1
  71. package/dist/theme/recipes/drawer.d.ts +1 -1
  72. package/dist/theme/recipes/kbd.d.ts +41 -0
  73. package/dist/theme/recipes/menu.d.ts +1 -1
  74. package/dist/theme/recipes/popover.d.ts +1 -1
  75. package/dist/theme/tokens/borders.d.ts +6 -24
  76. package/dist/theme/tokens/colors.d.ts +180 -168
  77. package/dist/theme/tokens/shadows.d.ts +5 -5
  78. package/dist/{theme-BLGUwVOD.js → theme-0SQvHr1t.js} +331 -243
  79. package/dist/theme-0SQvHr1t.js.map +1 -0
  80. package/dist/theme.js +4 -2
  81. package/dist/utils/apply-theme-preference.d.ts +20 -2
  82. package/dist/utils/theme-preference.d.ts +4 -2
  83. package/package.json +1 -2
  84. package/dist/components/drawer-inline.d.ts +0 -24
  85. package/dist/components/file-selector.d.ts +0 -12
  86. package/dist/components/menu-item.d.ts +0 -42
  87. package/dist/components/pstdio-logo.d.ts +0 -2
  88. package/dist/components/sidebar-tree/sidebar-node-content.d.ts +0 -9
  89. package/dist/components/sidebar-tree/sidebar-tree.d.ts +0 -13
  90. package/dist/components/sidebar-tree/sidebar-tree.types.d.ts +0 -68
  91. package/dist/rich-message-CoXTd5kw.js.map +0 -1
  92. package/dist/theme-BLGUwVOD.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ import { ActivityActor } from './activity.types';
3
+ export interface ActivityAvatarProps {
4
+ actor?: ActivityActor;
5
+ icon?: ReactNode;
6
+ color?: string;
7
+ background?: string;
8
+ }
9
+ export declare const ActivityAvatar: (props: ActivityAvatarProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { HTMLChakraProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ import { ActivityActor } from './activity.types';
4
+ export interface ActivityCommentProps extends Omit<HTMLChakraProps<"article">, "title"> {
5
+ actor: ActivityActor;
6
+ timestamp?: ReactNode;
7
+ actions?: ReactNode;
8
+ replies?: ReactNode;
9
+ composer?: ReactNode;
10
+ children: ReactNode;
11
+ }
12
+ export interface ActivityReplyProps extends Omit<HTMLChakraProps<"div">, "title"> {
13
+ actor: ActivityActor;
14
+ timestamp?: ReactNode;
15
+ actions?: ReactNode;
16
+ children: ReactNode;
17
+ }
18
+ export declare const ActivityReply: (props: ActivityReplyProps) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const ActivityComment: (props: ActivityCommentProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { HTMLChakraProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ import { ActivityActor } from './activity.types';
4
+ export interface ActivityComposerProps extends Omit<HTMLChakraProps<"form">, "onChange" | "onSubmit"> {
5
+ actor?: ActivityActor;
6
+ value?: string;
7
+ defaultValue?: string;
8
+ placeholder?: string;
9
+ variant?: "standalone" | "inline";
10
+ minRows?: number;
11
+ attachLabel?: string;
12
+ submitLabel?: string;
13
+ actions?: ReactNode;
14
+ onAttach?: () => void;
15
+ onChange?: (value: string) => void;
16
+ onSubmit?: (value: string) => void;
17
+ }
18
+ export declare const ActivityComposer: (props: ActivityComposerProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { TimelineItemProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ import { ActivityActor } from './activity.types';
4
+ export interface ActivityEventProps extends Omit<TimelineItemProps, "title"> {
5
+ actor?: ActivityActor;
6
+ icon?: ReactNode;
7
+ iconColor?: string;
8
+ iconBackground?: string;
9
+ timestamp?: ReactNode;
10
+ children: ReactNode;
11
+ }
12
+ export declare const ActivityEvent: (props: ActivityEventProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,15 @@
1
+ import { StackProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ export interface ActivityRootProps extends StackProps {
4
+ children: ReactNode;
5
+ }
6
+ export interface ActivityHeaderProps extends Omit<StackProps, "title"> {
7
+ title?: ReactNode;
8
+ actions?: ReactNode;
9
+ }
10
+ export interface ActivityFeedProps extends StackProps {
11
+ children: ReactNode;
12
+ }
13
+ export declare const ActivityRoot: (props: ActivityRootProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare const ActivityHeader: (props: ActivityHeaderProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const ActivityFeed: (props: ActivityFeedProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { TimelineRootProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ export interface ActivityTimelineProps extends TimelineRootProps {
4
+ children: ReactNode;
5
+ }
6
+ export declare const ActivityTimeline: (props: ActivityTimelineProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export interface ActivityActor {
2
+ name: string;
3
+ avatarSrc?: string;
4
+ avatarAlt?: string;
5
+ }
@@ -0,0 +1,25 @@
1
+ import { ActivityAvatar } from './activity-avatar';
2
+ import { ActivityComment, ActivityReply } from './activity-comment';
3
+ import { ActivityComposer } from './activity-composer';
4
+ import { ActivityEvent } from './activity-event';
5
+ import { ActivityFeed, ActivityHeader, ActivityRoot } from './activity-root';
6
+ import { ActivityTimeline } from './activity-timeline';
7
+ export type { ActivityActor } from './activity.types';
8
+ export type { ActivityAvatarProps } from './activity-avatar';
9
+ export type { ActivityCommentProps, ActivityReplyProps } from './activity-comment';
10
+ export type { ActivityComposerProps } from './activity-composer';
11
+ export type { ActivityEventProps } from './activity-event';
12
+ export type { ActivityFeedProps, ActivityHeaderProps, ActivityRootProps } from './activity-root';
13
+ export type { ActivityTimelineProps } from './activity-timeline';
14
+ export { ActivityAvatar, ActivityComment, ActivityComposer, ActivityEvent, ActivityFeed, ActivityHeader, ActivityReply, ActivityRoot, ActivityTimeline, };
15
+ export declare const Activity: {
16
+ Root: (props: import('./activity-root').ActivityRootProps) => import("react/jsx-runtime").JSX.Element;
17
+ Header: (props: import('./activity-root').ActivityHeaderProps) => import("react/jsx-runtime").JSX.Element;
18
+ Feed: (props: import('./activity-root').ActivityFeedProps) => import("react/jsx-runtime").JSX.Element;
19
+ Timeline: (props: import('./activity-timeline').ActivityTimelineProps) => import("react/jsx-runtime").JSX.Element;
20
+ Event: (props: import('./activity-event').ActivityEventProps) => import("react/jsx-runtime").JSX.Element;
21
+ Comment: (props: import('./activity-comment').ActivityCommentProps) => import("react/jsx-runtime").JSX.Element;
22
+ Reply: (props: import('./activity-comment').ActivityReplyProps) => import("react/jsx-runtime").JSX.Element;
23
+ Composer: (props: import('./activity-composer').ActivityComposerProps) => import("react/jsx-runtime").JSX.Element;
24
+ Avatar: (props: import('./activity-avatar').ActivityAvatarProps) => import("react/jsx-runtime").JSX.Element;
25
+ };
@@ -0,0 +1 @@
1
+ export declare const AppShell: () => import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,16 @@
1
+ import { WorkspaceTicket } from '../tickets/types';
2
+ export interface CommandPaletteHandlers {
3
+ onOpenTickets: () => void;
4
+ onOpenSessions: () => void;
5
+ onOpenProjectSettings: () => void;
6
+ onOpenGlobalSettings: () => void;
7
+ onOpenProjects: () => void;
8
+ onSelectTicket: (ticket: WorkspaceTicket) => void;
9
+ onSelectSession: (sessionId: string) => void;
10
+ }
11
+ interface CommandPaletteProps extends CommandPaletteHandlers {
12
+ open: boolean;
13
+ onClose: () => void;
14
+ }
15
+ export declare const CommandPalette: (props: CommandPaletteProps) => import("react/jsx-runtime").JSX.Element;
16
+ export {};
@@ -0,0 +1,7 @@
1
+ interface FileTreeProps {
2
+ paths: string[];
3
+ selectedPath: string | null;
4
+ onSelectPath: (path: string) => void;
5
+ }
6
+ export declare const FileTree: (props: FileTreeProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,2 @@
1
+ import { SessionMessage } from '../chat-ui/components/message-types';
2
+ export declare const mockChatMessages: SessionMessage[];
@@ -0,0 +1,37 @@
1
+ import { Diff } from '../diff-card';
2
+ import { WorkspaceTagDefinition, WorkspaceTicket } from '../tickets/types';
3
+ export interface MockProject {
4
+ id: string;
5
+ name: string;
6
+ repoPath: string;
7
+ description: string;
8
+ }
9
+ export interface MockSession {
10
+ id: string;
11
+ title: string;
12
+ preview: string;
13
+ status: "in_progress" | "awaiting_input" | "completed" | "failed";
14
+ updatedAt: string;
15
+ }
16
+ export declare const mockProjects: MockProject[];
17
+ export declare const mockTagDefinitions: WorkspaceTagDefinition[];
18
+ export declare const mockTickets: WorkspaceTicket[];
19
+ export declare const mockTicketDescription = "## Goal\n\nMirror the dashboard surface inside Storybook so design and engineering can review whole-page composition without booting the app.\n\n## Notes\n\n- Use mock data only \u2014 no async loading.\n- Sidebar navigation should switch between pages.\n- All pages share the same shell.";
20
+ export declare const mockSessions: MockSession[];
21
+ export interface MockWorkspace {
22
+ id: string;
23
+ shorthand: string;
24
+ ticketId: string;
25
+ branch: string;
26
+ status: "in_progress" | "completed" | "failed";
27
+ }
28
+ export declare const mockWorkspaces: MockWorkspace[];
29
+ export declare const mockDiffs: Diff[];
30
+ export interface MockCheck {
31
+ id: string;
32
+ name: string;
33
+ status: "passed" | "failed" | "running";
34
+ duration: string;
35
+ details: string;
36
+ }
37
+ export declare const mockChecks: MockCheck[];
@@ -0,0 +1,7 @@
1
+ import { MockProject } from '../mock-data';
2
+ interface ProjectListPageProps {
3
+ onSelectProject: (project: MockProject) => void;
4
+ onOpenSettings: () => void;
5
+ }
6
+ export declare const ProjectListPage: (props: ProjectListPageProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ interface SessionsPageProps {
2
+ selectedSessionId: string | null;
3
+ onSelectSession: (sessionId: string) => void;
4
+ }
5
+ export declare const SessionsPage: (props: SessionsPageProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,5 @@
1
+ interface SettingsPageProps {
2
+ scope: "global" | "project";
3
+ }
4
+ export declare const SettingsPage: (props: SettingsPageProps) => import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,7 @@
1
+ import { WorkspaceTicket } from '../../tickets/types';
2
+ interface TicketDetailsPageProps {
3
+ ticket: WorkspaceTicket;
4
+ onOpenWorkspace: (workspaceShorthand: string) => void;
5
+ }
6
+ export declare const TicketDetailsPage: (props: TicketDetailsPageProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { WorkspaceTicket } from '../../tickets/types';
2
+ export declare const TICKETS_STORAGE_KEY = "app-shell-tickets";
3
+ interface TicketsPageProps {
4
+ onSelectTicket: (ticket: WorkspaceTicket) => void;
5
+ }
6
+ export declare const TicketsPage: (props: TicketsPageProps) => import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1 @@
1
+ export declare const WorkspacePage: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import { FlexProps } from '@chakra-ui/react';
2
+ import { ReactNode } from 'react';
3
+ interface ResizablePanelProps extends Omit<FlexProps, "children"> {
4
+ children: ReactNode;
5
+ defaultWidth?: number;
6
+ minWidth?: number;
7
+ maxWidth?: number;
8
+ handleSide?: "left" | "right";
9
+ ariaLabel?: string;
10
+ onWidthChange?: (width: number) => void;
11
+ }
12
+ export declare const ResizablePanel: (props: ResizablePanelProps) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -9,13 +9,13 @@ export declare const conversationRootDefaultProps: {
9
9
  readonly role: "log";
10
10
  };
11
11
  export declare const ConversationRoot: import('@chakra-ui/react').ChakraComponent<import('react').ElementType, {
12
- title?: string | undefined | undefined;
13
12
  color?: string | undefined | undefined;
14
13
  translate?: "yes" | "no" | undefined | undefined;
15
14
  content?: string | undefined | undefined;
16
15
  resize?: import('use-stick-to-bottom').Animation | undefined;
17
16
  slot?: string | undefined | undefined;
18
17
  style?: import('react').CSSProperties | undefined;
18
+ title?: string | undefined | undefined;
19
19
  defaultChecked?: boolean | undefined | undefined;
20
20
  defaultValue?: string | number | readonly string[] | undefined;
21
21
  suppressContentEditableWarning?: boolean | undefined | undefined;
@@ -24,7 +24,7 @@ export declare const ConversationRoot: import('@chakra-ui/react').ChakraComponen
24
24
  autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
25
25
  autoFocus?: boolean | undefined | undefined;
26
26
  className?: string | undefined | undefined;
27
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
27
+ contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
28
28
  contextMenu?: string | undefined | undefined;
29
29
  dir?: string | undefined | undefined;
30
30
  draggable?: (boolean | "true" | "false") | undefined;
@@ -309,13 +309,13 @@ export declare const conversationScrollButtonContainerDefaultProps: {
309
309
  export declare const ConversationScrollButton: (props: ConversationScrollButtonProps) => false | import("react/jsx-runtime").JSX.Element;
310
310
  export declare const ChatPrimitives: {
311
311
  readonly Root: import('@chakra-ui/react').ChakraComponent<import('react').ElementType, {
312
- title?: string | undefined | undefined;
313
312
  color?: string | undefined | undefined;
314
313
  translate?: "yes" | "no" | undefined | undefined;
315
314
  content?: string | undefined | undefined;
316
315
  resize?: import('use-stick-to-bottom').Animation | undefined;
317
316
  slot?: string | undefined | undefined;
318
317
  style?: import('react').CSSProperties | undefined;
318
+ title?: string | undefined | undefined;
319
319
  defaultChecked?: boolean | undefined | undefined;
320
320
  defaultValue?: string | number | readonly string[] | undefined;
321
321
  suppressContentEditableWarning?: boolean | undefined | undefined;
@@ -324,7 +324,7 @@ export declare const ChatPrimitives: {
324
324
  autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
325
325
  autoFocus?: boolean | undefined | undefined;
326
326
  className?: string | undefined | undefined;
327
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
327
+ contentEditable?: "inherit" | (boolean | "true" | "false") | "plaintext-only" | undefined;
328
328
  contextMenu?: string | undefined | undefined;
329
329
  dir?: string | undefined | undefined;
330
330
  draggable?: (boolean | "true" | "false") | undefined;
@@ -7,13 +7,14 @@ declare const recipe: import('@chakra-ui/react').SlotRecipeDefinition<"content"
7
7
  flexDirection: "row";
8
8
  };
9
9
  content: {
10
- border: "1px solid";
10
+ borderTopWidth: "1px";
11
+ borderBottomWidth: "1px";
11
12
  borderColor: "border.muted";
12
13
  bg: "bg.subtle";
13
14
  px: "xs";
14
15
  py: "xs";
15
16
  width: "full";
16
- borderBottomRightRadius: number;
17
+ borderRadius: "0";
17
18
  };
18
19
  };
19
20
  assistant: {
@@ -24,6 +25,7 @@ declare const recipe: import('@chakra-ui/react').SlotRecipeDefinition<"content"
24
25
  };
25
26
  content: {
26
27
  width: "full";
28
+ px: "xs";
27
29
  };
28
30
  };
29
31
  developer: {
@@ -58,17 +60,17 @@ declare const recipe: import('@chakra-ui/react').SlotRecipeDefinition<"content"
58
60
  shape: {
59
61
  rounded: {
60
62
  content: {
61
- rounded: "xs";
63
+ rounded: "0";
62
64
  };
63
65
  };
64
66
  pill: {
65
67
  content: {
66
- rounded: "full";
68
+ rounded: "0";
67
69
  };
68
70
  };
69
71
  square: {
70
72
  content: {
71
- rounded: "none";
73
+ rounded: "0";
72
74
  };
73
75
  };
74
76
  };
@@ -14,6 +14,7 @@ interface ChatInputProps {
14
14
  actions?: ReactNode;
15
15
  attachedToTop?: boolean;
16
16
  questionPrompt?: ChatInputQuestionPrompt;
17
+ autoFocus?: boolean;
17
18
  }
18
19
  export declare const ChatInput: (props: ChatInputProps) => import("react/jsx-runtime").JSX.Element;
19
20
  export {};
@@ -23,6 +23,7 @@ interface ChatPanelProps {
23
23
  workspaceInitializing?: boolean;
24
24
  inputDisabled?: boolean;
25
25
  chatInputQuestionPrompt?: ChatInputQuestionPrompt;
26
+ chatInputAutoFocus?: boolean;
26
27
  }
27
28
  export declare const ChatPanel: (props: ChatPanelProps) => import("react/jsx-runtime").JSX.Element;
28
29
  export {};
@@ -0,0 +1,10 @@
1
+ import { AgentId, SessionMessage } from '../../agent-types';
2
+ export type ConversationFixture = {
3
+ id: string;
4
+ agent: AgentId;
5
+ label: string;
6
+ description: string;
7
+ messages: SessionMessage[];
8
+ };
9
+ export declare const fixtures: ConversationFixture[];
10
+ export declare const fixturesById: Map<string, ConversationFixture>;
@@ -5,7 +5,7 @@ export declare const buildTimelineDocFromInvocations: (invocations: ToolPart[],
5
5
  items: (import('../components/timeline').Item | {
6
6
  indicator: {
7
7
  readonly type: "icon";
8
- readonly icon: "search" | "dot" | "file" | "shell" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "danger" | "browser" | "question" | "todo" | "terminal";
8
+ readonly icon: "search" | "dot" | "file" | "shell" | "danger" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "browser" | "question" | "todo" | "terminal";
9
9
  };
10
10
  title: TitleSegment[];
11
11
  blocks: Block[];
@@ -15,7 +15,7 @@ export declare const createToolTimelineBuilder: (toolRenderers: ToolRenderersMap
15
15
  items: (import('../components/timeline').Item | {
16
16
  indicator: {
17
17
  readonly type: "icon";
18
- readonly icon: "search" | "dot" | "file" | "shell" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "danger" | "browser" | "question" | "todo" | "terminal";
18
+ readonly icon: "search" | "dot" | "file" | "shell" | "danger" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "browser" | "question" | "todo" | "terminal";
19
19
  };
20
20
  title: TitleSegment[];
21
21
  blocks: Block[];
@@ -15,7 +15,7 @@ export declare const getStateLabel: (invocation: ToolPart) => string | null;
15
15
  export declare const isErrorState: (invocation: ToolPart) => boolean;
16
16
  export declare const buildIndicator: (invocation: ToolPart) => {
17
17
  readonly type: "icon";
18
- readonly icon: "search" | "dot" | "file" | "shell" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "danger" | "browser" | "question" | "todo" | "terminal";
18
+ readonly icon: "search" | "dot" | "file" | "shell" | "danger" | "patch" | "ls" | "read_file" | "write_file" | "delete_file" | "upload_files" | "download_file" | "move_file" | "browser" | "question" | "todo" | "terminal";
19
19
  };
20
20
  export declare const buildBaseTitle: (invocation: ToolPart, detail?: string, labelOverride?: string) => TitleSegment[];
21
21
  export declare const getInputObject: (invocation: ToolPart) => Record<string, unknown> | null;
@@ -1,5 +1,6 @@
1
1
  import { BoxProps, TextProps } from '@chakra-ui/react';
2
2
  export interface ContentPlaceholderProps extends BoxProps {
3
3
  }
4
+ export declare const contentPlaceholderBackgroundImage = "url(\"data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.2' fillRule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E\")";
4
5
  export declare const ContentPlaceholder: (props: ContentPlaceholderProps) => import("react/jsx-runtime").JSX.Element;
5
6
  export declare const Label: (props: TextProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { StackProps } from '@chakra-ui/react';
2
+ import * as React from "react";
3
+ export type HeaderVariant = "main" | "narrow" | "input";
4
+ export interface HeaderProps extends Omit<StackProps, "variant"> {
5
+ variant?: HeaderVariant;
6
+ }
7
+ export declare const Header: React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,10 @@
1
+ import { ListRowAction } from './list-row.types';
2
+ interface RowActionsProps {
3
+ actions: ListRowAction[];
4
+ context: {
5
+ sectionId?: string;
6
+ nodeId?: string;
7
+ };
8
+ }
9
+ export declare const RowActions: (props: RowActionsProps) => import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import { ListRowProps } from './list-row.types';
2
+ export declare const ListRow: import('react').ForwardRefExoticComponent<ListRowProps & import('react').RefAttributes<HTMLElement>>;
@@ -0,0 +1,85 @@
1
+ import { chakra, IconProps } from '@chakra-ui/react';
2
+ import { ComponentPropsWithoutRef, ComponentType, DragEvent as ReactDragEvent, MouseEvent as ReactMouseEvent, ReactNode, PointerEvent as ReactPointerEvent } from 'react';
3
+ export interface ListRowNavigationIntent {
4
+ id?: string;
5
+ payload?: unknown;
6
+ }
7
+ export interface ListRowActionContext {
8
+ sectionId?: string;
9
+ nodeId?: string;
10
+ }
11
+ export interface ListRowActionMenuItem {
12
+ id: string;
13
+ label: string;
14
+ description?: string;
15
+ icon?: ReactNode | ComponentType<{
16
+ size?: number | string;
17
+ }>;
18
+ disabled?: boolean;
19
+ onAction?: () => void;
20
+ }
21
+ export interface ListRowAction {
22
+ id: string;
23
+ label: string;
24
+ icon?: ReactNode;
25
+ searchPlaceholder?: string;
26
+ emptyMenuLabel?: string;
27
+ menuItems?: ListRowActionMenuItem[];
28
+ onAction?: (context: ListRowActionContext) => void;
29
+ }
30
+ export type ListRowVariant = "default" | "compact" | "tree";
31
+ export type ListRowTone = "default" | "danger";
32
+ export interface ListRowItem {
33
+ id?: string;
34
+ label: ReactNode;
35
+ description?: ReactNode;
36
+ icon?: ReactNode;
37
+ iconColor?: IconProps["color"];
38
+ indicator?: {
39
+ icon: ReactNode;
40
+ color?: IconProps["color"];
41
+ tooltip?: string | null;
42
+ };
43
+ /** Custom content rendered on the right, before any hover actions. Use for Kbd shortcuts, counts, or badges. */
44
+ endContent?: ReactNode;
45
+ /** Tooltip shown on hover. Can be a string or ReactNode (e.g. Kbd shortcut hint). */
46
+ tooltip?: ReactNode;
47
+ disabled?: boolean;
48
+ /** Force chevron rendering even when children is empty (e.g. lazy-loaded folders). */
49
+ isContainer?: boolean;
50
+ isNavigable?: boolean;
51
+ href?: string;
52
+ navigationIntent?: ListRowNavigationIntent;
53
+ onActivate?: () => void;
54
+ contextMenuItems?: ListRowActionMenuItem[];
55
+ actions?: ListRowAction[];
56
+ children?: ListRowItem[];
57
+ }
58
+ type ListRowRootProps = ComponentPropsWithoutRef<typeof chakra.div>;
59
+ export interface ListRowProps extends ListRowItem, Omit<ListRowRootProps, "as" | "asChild" | "children" | "draggable" | "onClick" | "onDragEnd" | "onDragOver" | "onDragStart" | "onDrop" | "onPointerMove" | keyof ListRowItem> {
60
+ depth?: number;
61
+ isSelected?: boolean;
62
+ isExpanded?: boolean;
63
+ showExpandToggle?: boolean;
64
+ variant?: ListRowVariant;
65
+ tone?: ListRowTone;
66
+ /** Wrap content into a single child element. Used for `<Menu.Item asChild><ListRow asChild>…</ListRow></Menu.Item>` and link components. */
67
+ asChild?: boolean;
68
+ onToggleExpand?: () => void;
69
+ onClick?: (event: ReactMouseEvent<HTMLElement>) => void;
70
+ onPointerMove?: (event: ReactPointerEvent<HTMLElement>) => void;
71
+ draggable?: boolean;
72
+ onDragStart?: (event: ReactDragEvent<HTMLElement>) => void;
73
+ onDragOver?: (event: ReactDragEvent<HTMLElement>) => void;
74
+ onDragEnd?: (event: ReactDragEvent<HTMLElement>) => void;
75
+ onDrop?: (event: ReactDragEvent<HTMLElement>) => void;
76
+ }
77
+ export interface RowContentProps {
78
+ item: ListRowItem;
79
+ isExpanded: boolean;
80
+ showChevron: boolean;
81
+ isDisabled: boolean;
82
+ variant: ListRowVariant;
83
+ tone: ListRowTone;
84
+ }
85
+ export {};
@@ -1,6 +1,6 @@
1
- import { SidebarAction } from './sidebar-tree.types';
1
+ import { ListRowAction } from './list-row.types';
2
2
  interface SearchableActionMenuProps {
3
- action: SidebarAction;
3
+ action: ListRowAction;
4
4
  }
5
5
  export declare const SearchableActionMenu: (props: SearchableActionMenuProps) => import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -1 +1 @@
1
- export declare const PANEL_HEADER_HEIGHT = "2.5625rem";
1
+ export declare const PANEL_HEADER_HEIGHT = "2.5rem";
@@ -1,13 +1,12 @@
1
1
  import { Menu } from '@chakra-ui/react';
2
2
  import { ComponentProps, ReactNode } from 'react';
3
- import { MenuItem } from './menu-item';
4
3
  type MenuRootProps = ComponentProps<typeof Menu.Root>;
5
4
  export interface ResourceContextAction {
6
5
  key: string;
7
6
  label: string;
8
7
  onClick: () => void;
9
8
  isDisabled?: boolean;
10
- icon?: ComponentProps<typeof MenuItem>["leftIcon"];
9
+ icon?: ReactNode;
11
10
  }
12
11
  interface ResourceContextMenuProps {
13
12
  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;