import { useState } from "react"; import type { InspectorServerSettings } from "@inspector/core/mcp/types.js"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { UnconnectedView } from "./UnconnectedView.js"; import { ServerListScreen } from "../../screens/ServerListScreen/ServerListScreen"; import { ServerSettingsModal } from "../../groups/ServerSettingsModal/ServerSettingsModal"; import type { ServerCardProps } from "../../groups/ServerCard/ServerCard"; const meta: Meta = { title: "Views/UnconnectedView", component: UnconnectedView, parameters: { layout: "fullscreen" }, args: { onToggleTheme: fn(), }, }; export default meta; type Story = StoryObj; function makeServerCallbacks(): Pick< ServerCardProps, | "onToggleConnection" | "onServerInfo" | "onSettings" | "onEdit" | "onClone" | "onRemove" > { return { onToggleConnection: fn(), onServerInfo: fn(), onSettings: fn(), onEdit: fn(), onClone: fn(), onRemove: fn(), }; } function makeStdioServer( name: string, version: string, command: string, ): ServerCardProps { return { name, config: { command }, info: { name, version }, connection: { status: "disconnected" }, connectionMode: "Via Proxy", canTestClientFeatures: false, ...makeServerCallbacks(), }; } function makeHttpServer( name: string, version: string, url: string, ): ServerCardProps { return { name, config: { type: "streamable-http", url }, info: { name, version }, connection: { status: "disconnected" }, connectionMode: "Direct", canTestClientFeatures: false, ...makeServerCallbacks(), }; } export const Empty: Story = { args: { children: ( ), }, }; export const WithServers: Story = { args: { children: ( ), }, }; function SettingsModalStory() { const [settings, setSettings] = useState({ connectionMode: "proxy", headers: [ { key: "Authorization", value: "Bearer token-abc-123" }, { key: "X-Request-Id", value: "req-456" }, ], metadata: [{ key: "userId", value: "user-789" }], connectionTimeout: 30000, requestTimeout: 60000, oauthClientId: "my-client-id", oauthClientSecret: "super-secret-value", oauthScopes: "read write", }); return ( ); } export const WithSettingsModal: Story = { render: () => , }; export const ManyServers: Story = { args: { children: ( ), }, };