diff --git a/AGENTS.md b/AGENTS.md index 7d196d4a..3395d0e9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -100,9 +100,9 @@ inspector/ // Component.tsx const MessageContainer = Paper.withProps({ variant: 'message' }); ``` -- Theme files vs. Storybook atom components - - **Theme files** (`src/theme/.ts`) and **atom components** (`src/components/atoms/`) serve different purposes and both are needed. +- Theme files vs. Storybook element components + - **Theme files** (`src/theme/.ts`) and **element components** (`src/components/elements/`) serve different purposes and both are needed. - Theme files customize every instance of a Mantine component app-wide — defaults (size, radius), custom variants, and global style overrides. They are applied automatically by `MantineProvider`. - - Atom components add domain-specific semantics on top of Mantine primitives. For example, `AnnotationBadge` maps domain concepts (audience, destructive, longRun) to Mantine's styling primitives (color, variant). Storybook documents these domain components for designers and developers. - - Atom components MUST import from `@mantine/core`, NOT from `src/theme/`. The theme layer is applied transparently by the provider — atoms do not need to know about `Theme` constants. - - NEVER push domain-specific variant logic (e.g., annotation types, transport types) into theme files. Domain variants belong in the atom component that owns those semantics. Theme files are for styling that applies to the Mantine primitive globally. + - Element components add domain-specific semantics on top of Mantine primitives. For example, `AnnotationBadge` maps domain concepts (audience, destructive, longRun) to Mantine's styling primitives (color, variant). Storybook documents these domain components for designers and developers. + - Element components MUST import from `@mantine/core`, NOT from `src/theme/`. The theme layer is applied transparently by the provider — elements do not need to know about `Theme` constants. + - NEVER push domain-specific variant logic (e.g., annotation types, transport types) into theme files. Domain variants belong in the element component that owns those semantics. Theme files are for styling that applies to the Mantine primitive globally. diff --git a/clients/web/src/components/atoms/AnnotationBadge/AnnotationBadge.stories.tsx b/clients/web/src/components/elements/AnnotationBadge/AnnotationBadge.stories.tsx similarity index 95% rename from clients/web/src/components/atoms/AnnotationBadge/AnnotationBadge.stories.tsx rename to clients/web/src/components/elements/AnnotationBadge/AnnotationBadge.stories.tsx index 7226226c..469abc1b 100644 --- a/clients/web/src/components/atoms/AnnotationBadge/AnnotationBadge.stories.tsx +++ b/clients/web/src/components/elements/AnnotationBadge/AnnotationBadge.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { AnnotationBadge } from "./AnnotationBadge"; const meta: Meta = { - title: "Atoms/AnnotationBadge", + title: "Elements/AnnotationBadge", component: AnnotationBadge, }; diff --git a/clients/web/src/components/atoms/AnnotationBadge/AnnotationBadge.tsx b/clients/web/src/components/elements/AnnotationBadge/AnnotationBadge.tsx similarity index 100% rename from clients/web/src/components/atoms/AnnotationBadge/AnnotationBadge.tsx rename to clients/web/src/components/elements/AnnotationBadge/AnnotationBadge.tsx diff --git a/clients/web/src/components/atoms/CapabilityItem/CapabilityItem.stories.tsx b/clients/web/src/components/elements/CapabilityItem/CapabilityItem.stories.tsx similarity index 94% rename from clients/web/src/components/atoms/CapabilityItem/CapabilityItem.stories.tsx rename to clients/web/src/components/elements/CapabilityItem/CapabilityItem.stories.tsx index 0eae839d..19d26ae6 100644 --- a/clients/web/src/components/atoms/CapabilityItem/CapabilityItem.stories.tsx +++ b/clients/web/src/components/elements/CapabilityItem/CapabilityItem.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { CapabilityItem } from "./CapabilityItem"; const meta: Meta = { - title: "Atoms/CapabilityItem", + title: "Elements/CapabilityItem", component: CapabilityItem, }; diff --git a/clients/web/src/components/atoms/CapabilityItem/CapabilityItem.tsx b/clients/web/src/components/elements/CapabilityItem/CapabilityItem.tsx similarity index 100% rename from clients/web/src/components/atoms/CapabilityItem/CapabilityItem.tsx rename to clients/web/src/components/elements/CapabilityItem/CapabilityItem.tsx diff --git a/clients/web/src/components/atoms/ConnectionToggle/ConnectionToggle.stories.tsx b/clients/web/src/components/elements/ConnectionToggle/ConnectionToggle.stories.tsx similarity index 95% rename from clients/web/src/components/atoms/ConnectionToggle/ConnectionToggle.stories.tsx rename to clients/web/src/components/elements/ConnectionToggle/ConnectionToggle.stories.tsx index 4d33ed53..eda50990 100644 --- a/clients/web/src/components/atoms/ConnectionToggle/ConnectionToggle.stories.tsx +++ b/clients/web/src/components/elements/ConnectionToggle/ConnectionToggle.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ConnectionToggle } from "./ConnectionToggle"; const meta: Meta = { - title: "Atoms/ConnectionToggle", + title: "Elements/ConnectionToggle", component: ConnectionToggle, args: { onChange: fn(), diff --git a/clients/web/src/components/atoms/ConnectionToggle/ConnectionToggle.tsx b/clients/web/src/components/elements/ConnectionToggle/ConnectionToggle.tsx similarity index 100% rename from clients/web/src/components/atoms/ConnectionToggle/ConnectionToggle.tsx rename to clients/web/src/components/elements/ConnectionToggle/ConnectionToggle.tsx diff --git a/clients/web/src/components/atoms/ContentViewer/ContentViewer.stories.tsx b/clients/web/src/components/elements/ContentViewer/ContentViewer.stories.tsx similarity index 98% rename from clients/web/src/components/atoms/ContentViewer/ContentViewer.stories.tsx rename to clients/web/src/components/elements/ContentViewer/ContentViewer.stories.tsx index 7ebf68a6..a9dea061 100644 --- a/clients/web/src/components/atoms/ContentViewer/ContentViewer.stories.tsx +++ b/clients/web/src/components/elements/ContentViewer/ContentViewer.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { ContentViewer } from "./ContentViewer"; const meta: Meta = { - title: "Atoms/ContentViewer", + title: "Elements/ContentViewer", component: ContentViewer, }; diff --git a/clients/web/src/components/atoms/ContentViewer/ContentViewer.tsx b/clients/web/src/components/elements/ContentViewer/ContentViewer.tsx similarity index 100% rename from clients/web/src/components/atoms/ContentViewer/ContentViewer.tsx rename to clients/web/src/components/elements/ContentViewer/ContentViewer.tsx diff --git a/clients/web/src/components/atoms/CopyButton/CopyButton.stories.tsx b/clients/web/src/components/elements/CopyButton/CopyButton.stories.tsx similarity index 95% rename from clients/web/src/components/atoms/CopyButton/CopyButton.stories.tsx rename to clients/web/src/components/elements/CopyButton/CopyButton.stories.tsx index 79cf324f..fc6b3bc6 100644 --- a/clients/web/src/components/atoms/CopyButton/CopyButton.stories.tsx +++ b/clients/web/src/components/elements/CopyButton/CopyButton.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { CopyButton } from "./CopyButton"; const meta: Meta = { - title: "Atoms/CopyButton", + title: "Elements/CopyButton", component: CopyButton, }; diff --git a/clients/web/src/components/atoms/CopyButton/CopyButton.tsx b/clients/web/src/components/elements/CopyButton/CopyButton.tsx similarity index 100% rename from clients/web/src/components/atoms/CopyButton/CopyButton.tsx rename to clients/web/src/components/elements/CopyButton/CopyButton.tsx diff --git a/clients/web/src/components/atoms/InlineError/InlineError.stories.tsx b/clients/web/src/components/elements/InlineError/InlineError.stories.tsx similarity index 97% rename from clients/web/src/components/atoms/InlineError/InlineError.stories.tsx rename to clients/web/src/components/elements/InlineError/InlineError.stories.tsx index 18a5decf..60dbac4d 100644 --- a/clients/web/src/components/atoms/InlineError/InlineError.stories.tsx +++ b/clients/web/src/components/elements/InlineError/InlineError.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { InlineError } from "./InlineError"; const meta: Meta = { - title: "Atoms/InlineError", + title: "Elements/InlineError", component: InlineError, }; diff --git a/clients/web/src/components/atoms/InlineError/InlineError.tsx b/clients/web/src/components/elements/InlineError/InlineError.tsx similarity index 100% rename from clients/web/src/components/atoms/InlineError/InlineError.tsx rename to clients/web/src/components/elements/InlineError/InlineError.tsx diff --git a/clients/web/src/components/atoms/ListChangedIndicator/ListChangedIndicator.stories.tsx b/clients/web/src/components/elements/ListChangedIndicator/ListChangedIndicator.stories.tsx similarity index 92% rename from clients/web/src/components/atoms/ListChangedIndicator/ListChangedIndicator.stories.tsx rename to clients/web/src/components/elements/ListChangedIndicator/ListChangedIndicator.stories.tsx index f8094885..0dc410ec 100644 --- a/clients/web/src/components/atoms/ListChangedIndicator/ListChangedIndicator.stories.tsx +++ b/clients/web/src/components/elements/ListChangedIndicator/ListChangedIndicator.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ListChangedIndicator } from "./ListChangedIndicator"; const meta: Meta = { - title: "Atoms/ListChangedIndicator", + title: "Elements/ListChangedIndicator", component: ListChangedIndicator, }; diff --git a/clients/web/src/components/atoms/ListChangedIndicator/ListChangedIndicator.tsx b/clients/web/src/components/elements/ListChangedIndicator/ListChangedIndicator.tsx similarity index 100% rename from clients/web/src/components/atoms/ListChangedIndicator/ListChangedIndicator.tsx rename to clients/web/src/components/elements/ListChangedIndicator/ListChangedIndicator.tsx diff --git a/clients/web/src/components/atoms/LogEntry/LogEntry.stories.tsx b/clients/web/src/components/elements/LogEntry/LogEntry.stories.tsx similarity index 98% rename from clients/web/src/components/atoms/LogEntry/LogEntry.stories.tsx rename to clients/web/src/components/elements/LogEntry/LogEntry.stories.tsx index 39004c5b..eb2d3711 100644 --- a/clients/web/src/components/atoms/LogEntry/LogEntry.stories.tsx +++ b/clients/web/src/components/elements/LogEntry/LogEntry.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { LogEntry } from "./LogEntry"; const meta: Meta = { - title: "Atoms/LogEntry", + title: "Elements/LogEntry", component: LogEntry, }; diff --git a/clients/web/src/components/atoms/LogEntry/LogEntry.tsx b/clients/web/src/components/elements/LogEntry/LogEntry.tsx similarity index 100% rename from clients/web/src/components/atoms/LogEntry/LogEntry.tsx rename to clients/web/src/components/elements/LogEntry/LogEntry.tsx diff --git a/clients/web/src/components/atoms/MessageBubble/MessageBubble.stories.tsx b/clients/web/src/components/elements/MessageBubble/MessageBubble.stories.tsx similarity index 97% rename from clients/web/src/components/atoms/MessageBubble/MessageBubble.stories.tsx rename to clients/web/src/components/elements/MessageBubble/MessageBubble.stories.tsx index ec6ddbe7..dd6b1608 100644 --- a/clients/web/src/components/atoms/MessageBubble/MessageBubble.stories.tsx +++ b/clients/web/src/components/elements/MessageBubble/MessageBubble.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { MessageBubble } from "./MessageBubble"; const meta: Meta = { - title: "Atoms/MessageBubble", + title: "Elements/MessageBubble", component: MessageBubble, }; diff --git a/clients/web/src/components/atoms/MessageBubble/MessageBubble.tsx b/clients/web/src/components/elements/MessageBubble/MessageBubble.tsx similarity index 100% rename from clients/web/src/components/atoms/MessageBubble/MessageBubble.tsx rename to clients/web/src/components/elements/MessageBubble/MessageBubble.tsx diff --git a/clients/web/src/components/atoms/ProgressDisplay/ProgressDisplay.stories.tsx b/clients/web/src/components/elements/ProgressDisplay/ProgressDisplay.stories.tsx similarity index 94% rename from clients/web/src/components/atoms/ProgressDisplay/ProgressDisplay.stories.tsx rename to clients/web/src/components/elements/ProgressDisplay/ProgressDisplay.stories.tsx index b8864cdb..0e8aa20f 100644 --- a/clients/web/src/components/atoms/ProgressDisplay/ProgressDisplay.stories.tsx +++ b/clients/web/src/components/elements/ProgressDisplay/ProgressDisplay.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { ProgressDisplay } from "./ProgressDisplay"; const meta: Meta = { - title: "Atoms/ProgressDisplay", + title: "Elements/ProgressDisplay", component: ProgressDisplay, }; diff --git a/clients/web/src/components/atoms/ProgressDisplay/ProgressDisplay.tsx b/clients/web/src/components/elements/ProgressDisplay/ProgressDisplay.tsx similarity index 100% rename from clients/web/src/components/atoms/ProgressDisplay/ProgressDisplay.tsx rename to clients/web/src/components/elements/ProgressDisplay/ProgressDisplay.tsx diff --git a/clients/web/src/components/atoms/StatusIndicator/StatusIndicator.stories.tsx b/clients/web/src/components/elements/StatusIndicator/StatusIndicator.stories.tsx similarity index 94% rename from clients/web/src/components/atoms/StatusIndicator/StatusIndicator.stories.tsx rename to clients/web/src/components/elements/StatusIndicator/StatusIndicator.stories.tsx index 9980ba83..c50a5e6e 100644 --- a/clients/web/src/components/atoms/StatusIndicator/StatusIndicator.stories.tsx +++ b/clients/web/src/components/elements/StatusIndicator/StatusIndicator.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { StatusIndicator } from "./StatusIndicator"; const meta: Meta = { - title: "Atoms/StatusIndicator", + title: "Elements/StatusIndicator", component: StatusIndicator, }; diff --git a/clients/web/src/components/atoms/StatusIndicator/StatusIndicator.tsx b/clients/web/src/components/elements/StatusIndicator/StatusIndicator.tsx similarity index 100% rename from clients/web/src/components/atoms/StatusIndicator/StatusIndicator.tsx rename to clients/web/src/components/elements/StatusIndicator/StatusIndicator.tsx diff --git a/clients/web/src/components/atoms/SubscribeButton/SubscribeButton.stories.tsx b/clients/web/src/components/elements/SubscribeButton/SubscribeButton.stories.tsx similarity index 92% rename from clients/web/src/components/atoms/SubscribeButton/SubscribeButton.stories.tsx rename to clients/web/src/components/elements/SubscribeButton/SubscribeButton.stories.tsx index c2bbdfdb..f41298c5 100644 --- a/clients/web/src/components/atoms/SubscribeButton/SubscribeButton.stories.tsx +++ b/clients/web/src/components/elements/SubscribeButton/SubscribeButton.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { SubscribeButton } from "./SubscribeButton"; const meta: Meta = { - title: "Atoms/SubscribeButton", + title: "Elements/SubscribeButton", component: SubscribeButton, args: { onToggle: fn(), diff --git a/clients/web/src/components/atoms/SubscribeButton/SubscribeButton.tsx b/clients/web/src/components/elements/SubscribeButton/SubscribeButton.tsx similarity index 100% rename from clients/web/src/components/atoms/SubscribeButton/SubscribeButton.tsx rename to clients/web/src/components/elements/SubscribeButton/SubscribeButton.tsx diff --git a/clients/web/src/components/atoms/TransportBadge/TransportBadge.stories.tsx b/clients/web/src/components/elements/TransportBadge/TransportBadge.stories.tsx similarity index 91% rename from clients/web/src/components/atoms/TransportBadge/TransportBadge.stories.tsx rename to clients/web/src/components/elements/TransportBadge/TransportBadge.stories.tsx index 144f0f69..290c51b0 100644 --- a/clients/web/src/components/atoms/TransportBadge/TransportBadge.stories.tsx +++ b/clients/web/src/components/elements/TransportBadge/TransportBadge.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { TransportBadge } from "./TransportBadge"; const meta: Meta = { - title: "Atoms/TransportBadge", + title: "Elements/TransportBadge", component: TransportBadge, }; diff --git a/clients/web/src/components/atoms/TransportBadge/TransportBadge.tsx b/clients/web/src/components/elements/TransportBadge/TransportBadge.tsx similarity index 100% rename from clients/web/src/components/atoms/TransportBadge/TransportBadge.tsx rename to clients/web/src/components/elements/TransportBadge/TransportBadge.tsx diff --git a/clients/web/src/components/molecules/AddServerMenu/AddServerMenu.stories.tsx b/clients/web/src/components/groups/AddServerMenu/AddServerMenu.stories.tsx similarity index 92% rename from clients/web/src/components/molecules/AddServerMenu/AddServerMenu.stories.tsx rename to clients/web/src/components/groups/AddServerMenu/AddServerMenu.stories.tsx index 358ba43a..1374bda3 100644 --- a/clients/web/src/components/molecules/AddServerMenu/AddServerMenu.stories.tsx +++ b/clients/web/src/components/groups/AddServerMenu/AddServerMenu.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { AddServerMenu } from "./AddServerMenu"; const meta: Meta = { - title: "Molecules/AddServerMenu", + title: "Groups/AddServerMenu", component: AddServerMenu, args: { onAddManually: fn(), diff --git a/clients/web/src/components/molecules/AddServerMenu/AddServerMenu.tsx b/clients/web/src/components/groups/AddServerMenu/AddServerMenu.tsx similarity index 100% rename from clients/web/src/components/molecules/AddServerMenu/AddServerMenu.tsx rename to clients/web/src/components/groups/AddServerMenu/AddServerMenu.tsx diff --git a/clients/web/src/components/molecules/ElicitationFormPanel/ElicitationFormPanel.stories.tsx b/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/ElicitationFormPanel/ElicitationFormPanel.stories.tsx rename to clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.stories.tsx index 0b0d53fb..bcddc0cc 100644 --- a/clients/web/src/components/molecules/ElicitationFormPanel/ElicitationFormPanel.stories.tsx +++ b/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ElicitationFormPanel } from "./ElicitationFormPanel"; const meta: Meta = { - title: "Molecules/ElicitationFormPanel", + title: "Groups/ElicitationFormPanel", component: ElicitationFormPanel, args: { onChange: fn(), diff --git a/clients/web/src/components/molecules/ElicitationFormPanel/ElicitationFormPanel.tsx b/clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx similarity index 100% rename from clients/web/src/components/molecules/ElicitationFormPanel/ElicitationFormPanel.tsx rename to clients/web/src/components/groups/ElicitationFormPanel/ElicitationFormPanel.tsx diff --git a/clients/web/src/components/molecules/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx b/clients/web/src/components/groups/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx similarity index 96% rename from clients/web/src/components/molecules/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx rename to clients/web/src/components/groups/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx index 8ccc49f8..06b15b39 100644 --- a/clients/web/src/components/molecules/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx +++ b/clients/web/src/components/groups/ElicitationUrlPanel/ElicitationUrlPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ElicitationUrlPanel } from "./ElicitationUrlPanel"; const meta: Meta = { - title: "Molecules/ElicitationUrlPanel", + title: "Groups/ElicitationUrlPanel", component: ElicitationUrlPanel, args: { onCopyUrl: fn(), diff --git a/clients/web/src/components/molecules/ElicitationUrlPanel/ElicitationUrlPanel.tsx b/clients/web/src/components/groups/ElicitationUrlPanel/ElicitationUrlPanel.tsx similarity index 100% rename from clients/web/src/components/molecules/ElicitationUrlPanel/ElicitationUrlPanel.tsx rename to clients/web/src/components/groups/ElicitationUrlPanel/ElicitationUrlPanel.tsx diff --git a/clients/web/src/components/molecules/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx b/clients/web/src/components/groups/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx rename to clients/web/src/components/groups/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx index da287ae3..10bc307e 100644 --- a/clients/web/src/components/molecules/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx +++ b/clients/web/src/components/groups/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ExperimentalFeaturesPanel } from "./ExperimentalFeaturesPanel"; const meta: Meta = { - title: "Molecules/ExperimentalFeaturesPanel", + title: "Groups/ExperimentalFeaturesPanel", component: ExperimentalFeaturesPanel, args: { onToggleClientCapability: fn(), diff --git a/clients/web/src/components/molecules/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.tsx b/clients/web/src/components/groups/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.tsx similarity index 100% rename from clients/web/src/components/molecules/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.tsx rename to clients/web/src/components/groups/ExperimentalFeaturesPanel/ExperimentalFeaturesPanel.tsx diff --git a/clients/web/src/components/molecules/HistoryEntry/HistoryEntry.stories.tsx b/clients/web/src/components/groups/HistoryEntry/HistoryEntry.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/HistoryEntry/HistoryEntry.stories.tsx rename to clients/web/src/components/groups/HistoryEntry/HistoryEntry.stories.tsx index 2fdc6394..92fe5138 100644 --- a/clients/web/src/components/molecules/HistoryEntry/HistoryEntry.stories.tsx +++ b/clients/web/src/components/groups/HistoryEntry/HistoryEntry.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { HistoryEntry } from "./HistoryEntry"; const meta: Meta = { - title: "Molecules/HistoryEntry", + title: "Groups/HistoryEntry", component: HistoryEntry, args: { onToggleExpand: fn(), diff --git a/clients/web/src/components/molecules/HistoryEntry/HistoryEntry.tsx b/clients/web/src/components/groups/HistoryEntry/HistoryEntry.tsx similarity index 98% rename from clients/web/src/components/molecules/HistoryEntry/HistoryEntry.tsx rename to clients/web/src/components/groups/HistoryEntry/HistoryEntry.tsx index cfd4d021..7bb471a4 100644 --- a/clients/web/src/components/molecules/HistoryEntry/HistoryEntry.tsx +++ b/clients/web/src/components/groups/HistoryEntry/HistoryEntry.tsx @@ -7,7 +7,7 @@ import { Stack, Text, } from "@mantine/core"; -import { ContentViewer } from "../../atoms/ContentViewer/ContentViewer"; +import { ContentViewer } from "../../elements/ContentViewer/ContentViewer"; export interface HistoryChildEntry { timestamp: string; diff --git a/clients/web/src/components/molecules/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx b/clients/web/src/components/groups/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx similarity index 99% rename from clients/web/src/components/molecules/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx rename to clients/web/src/components/groups/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx index d880d18b..63acd629 100644 --- a/clients/web/src/components/molecules/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx +++ b/clients/web/src/components/groups/ImportServerJsonPanel/ImportServerJsonPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ImportServerJsonPanel } from "./ImportServerJsonPanel"; const meta: Meta = { - title: "Molecules/ImportServerJsonPanel", + title: "Groups/ImportServerJsonPanel", component: ImportServerJsonPanel, args: { onJsonChange: fn(), diff --git a/clients/web/src/components/molecules/ImportServerJsonPanel/ImportServerJsonPanel.tsx b/clients/web/src/components/groups/ImportServerJsonPanel/ImportServerJsonPanel.tsx similarity index 100% rename from clients/web/src/components/molecules/ImportServerJsonPanel/ImportServerJsonPanel.tsx rename to clients/web/src/components/groups/ImportServerJsonPanel/ImportServerJsonPanel.tsx diff --git a/clients/web/src/components/molecules/InlineElicitationRequest/InlineElicitationRequest.stories.tsx b/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.stories.tsx similarity index 96% rename from clients/web/src/components/molecules/InlineElicitationRequest/InlineElicitationRequest.stories.tsx rename to clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.stories.tsx index b2a94be7..a637420b 100644 --- a/clients/web/src/components/molecules/InlineElicitationRequest/InlineElicitationRequest.stories.tsx +++ b/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { InlineElicitationRequest } from "./InlineElicitationRequest"; const meta: Meta = { - title: "Molecules/InlineElicitationRequest", + title: "Groups/InlineElicitationRequest", component: InlineElicitationRequest, args: { message: "Please provide your database connection details.", diff --git a/clients/web/src/components/molecules/InlineElicitationRequest/InlineElicitationRequest.tsx b/clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx similarity index 100% rename from clients/web/src/components/molecules/InlineElicitationRequest/InlineElicitationRequest.tsx rename to clients/web/src/components/groups/InlineElicitationRequest/InlineElicitationRequest.tsx diff --git a/clients/web/src/components/molecules/InlineSamplingRequest/InlineSamplingRequest.stories.tsx b/clients/web/src/components/groups/InlineSamplingRequest/InlineSamplingRequest.stories.tsx similarity index 95% rename from clients/web/src/components/molecules/InlineSamplingRequest/InlineSamplingRequest.stories.tsx rename to clients/web/src/components/groups/InlineSamplingRequest/InlineSamplingRequest.stories.tsx index 41c842d1..8c5e3bf7 100644 --- a/clients/web/src/components/molecules/InlineSamplingRequest/InlineSamplingRequest.stories.tsx +++ b/clients/web/src/components/groups/InlineSamplingRequest/InlineSamplingRequest.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { InlineSamplingRequest } from "./InlineSamplingRequest"; const meta: Meta = { - title: "Molecules/InlineSamplingRequest", + title: "Groups/InlineSamplingRequest", component: InlineSamplingRequest, args: { queuePosition: "1 of 1", diff --git a/clients/web/src/components/molecules/InlineSamplingRequest/InlineSamplingRequest.tsx b/clients/web/src/components/groups/InlineSamplingRequest/InlineSamplingRequest.tsx similarity index 100% rename from clients/web/src/components/molecules/InlineSamplingRequest/InlineSamplingRequest.tsx rename to clients/web/src/components/groups/InlineSamplingRequest/InlineSamplingRequest.tsx diff --git a/clients/web/src/components/molecules/LogControls/LogControls.stories.tsx b/clients/web/src/components/groups/LogControls/LogControls.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/LogControls/LogControls.stories.tsx rename to clients/web/src/components/groups/LogControls/LogControls.stories.tsx index d619da8a..c9b281dc 100644 --- a/clients/web/src/components/molecules/LogControls/LogControls.stories.tsx +++ b/clients/web/src/components/groups/LogControls/LogControls.stories.tsx @@ -14,7 +14,7 @@ const allLevelsVisible: Record = { }; const meta: Meta = { - title: "Molecules/LogControls", + title: "Groups/LogControls", component: LogControls, args: { onSetLevel: fn(), diff --git a/clients/web/src/components/molecules/LogControls/LogControls.tsx b/clients/web/src/components/groups/LogControls/LogControls.tsx similarity index 100% rename from clients/web/src/components/molecules/LogControls/LogControls.tsx rename to clients/web/src/components/groups/LogControls/LogControls.tsx diff --git a/clients/web/src/components/molecules/PendingClientRequests/PendingClientRequests.stories.tsx b/clients/web/src/components/groups/PendingClientRequests/PendingClientRequests.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/PendingClientRequests/PendingClientRequests.stories.tsx rename to clients/web/src/components/groups/PendingClientRequests/PendingClientRequests.stories.tsx index 030fac34..8cdcf0cd 100644 --- a/clients/web/src/components/molecules/PendingClientRequests/PendingClientRequests.stories.tsx +++ b/clients/web/src/components/groups/PendingClientRequests/PendingClientRequests.stories.tsx @@ -5,7 +5,7 @@ import { InlineSamplingRequest } from "../InlineSamplingRequest/InlineSamplingRe import { InlineElicitationRequest } from "../InlineElicitationRequest/InlineElicitationRequest"; const meta: Meta = { - title: "Molecules/PendingClientRequests", + title: "Groups/PendingClientRequests", component: PendingClientRequests, }; diff --git a/clients/web/src/components/molecules/PendingClientRequests/PendingClientRequests.tsx b/clients/web/src/components/groups/PendingClientRequests/PendingClientRequests.tsx similarity index 100% rename from clients/web/src/components/molecules/PendingClientRequests/PendingClientRequests.tsx rename to clients/web/src/components/groups/PendingClientRequests/PendingClientRequests.tsx diff --git a/clients/web/src/components/molecules/PromptArgumentsForm/PromptArgumentsForm.stories.tsx b/clients/web/src/components/groups/PromptArgumentsForm/PromptArgumentsForm.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/PromptArgumentsForm/PromptArgumentsForm.stories.tsx rename to clients/web/src/components/groups/PromptArgumentsForm/PromptArgumentsForm.stories.tsx index af4c27c2..b479669e 100644 --- a/clients/web/src/components/molecules/PromptArgumentsForm/PromptArgumentsForm.stories.tsx +++ b/clients/web/src/components/groups/PromptArgumentsForm/PromptArgumentsForm.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { PromptArgumentsForm } from "./PromptArgumentsForm"; const meta: Meta = { - title: "Molecules/PromptArgumentsForm", + title: "Groups/PromptArgumentsForm", component: PromptArgumentsForm, args: { onSelectPrompt: fn(), diff --git a/clients/web/src/components/molecules/PromptArgumentsForm/PromptArgumentsForm.tsx b/clients/web/src/components/groups/PromptArgumentsForm/PromptArgumentsForm.tsx similarity index 100% rename from clients/web/src/components/molecules/PromptArgumentsForm/PromptArgumentsForm.tsx rename to clients/web/src/components/groups/PromptArgumentsForm/PromptArgumentsForm.tsx diff --git a/clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx b/clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx rename to clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx index 7ca6277c..6aed022a 100644 --- a/clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx +++ b/clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { PromptMessagesDisplay } from "./PromptMessagesDisplay"; const meta: Meta = { - title: "Molecules/PromptMessagesDisplay", + title: "Groups/PromptMessagesDisplay", component: PromptMessagesDisplay, args: {}, }; diff --git a/clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.tsx b/clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.tsx similarity index 94% rename from clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.tsx rename to clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.tsx index dfad1b7f..692f9739 100644 --- a/clients/web/src/components/molecules/PromptMessagesDisplay/PromptMessagesDisplay.tsx +++ b/clients/web/src/components/groups/PromptMessagesDisplay/PromptMessagesDisplay.tsx @@ -1,5 +1,5 @@ import { Button, Group, Stack, Text, Title } from "@mantine/core"; -import { MessageBubble } from "../../atoms/MessageBubble/MessageBubble"; +import { MessageBubble } from "../../elements/MessageBubble/MessageBubble"; export interface PromptMessage { role: string; diff --git a/clients/web/src/components/molecules/ResourceListItem/ResourceListItem.stories.tsx b/clients/web/src/components/groups/ResourceListItem/ResourceListItem.stories.tsx similarity index 93% rename from clients/web/src/components/molecules/ResourceListItem/ResourceListItem.stories.tsx rename to clients/web/src/components/groups/ResourceListItem/ResourceListItem.stories.tsx index e7c46eb8..3adf897c 100644 --- a/clients/web/src/components/molecules/ResourceListItem/ResourceListItem.stories.tsx +++ b/clients/web/src/components/groups/ResourceListItem/ResourceListItem.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ResourceListItem } from "./ResourceListItem"; const meta: Meta = { - title: "Molecules/ResourceListItem", + title: "Groups/ResourceListItem", component: ResourceListItem, args: { onClick: fn(), diff --git a/clients/web/src/components/molecules/ResourceListItem/ResourceListItem.tsx b/clients/web/src/components/groups/ResourceListItem/ResourceListItem.tsx similarity index 100% rename from clients/web/src/components/molecules/ResourceListItem/ResourceListItem.tsx rename to clients/web/src/components/groups/ResourceListItem/ResourceListItem.tsx diff --git a/clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx b/clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx rename to clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx index 3a29c4b7..6a8b52cb 100644 --- a/clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx +++ b/clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ResourcePreviewPanel } from "./ResourcePreviewPanel"; const meta: Meta = { - title: "Molecules/ResourcePreviewPanel", + title: "Groups/ResourcePreviewPanel", component: ResourcePreviewPanel, args: { onSubscribe: fn(), diff --git a/clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.tsx b/clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.tsx similarity index 89% rename from clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.tsx rename to clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.tsx index a243e107..e5b2ebb6 100644 --- a/clients/web/src/components/molecules/ResourcePreviewPanel/ResourcePreviewPanel.tsx +++ b/clients/web/src/components/groups/ResourcePreviewPanel/ResourcePreviewPanel.tsx @@ -1,8 +1,8 @@ import { Flex, Group, Stack, Text, Title } from "@mantine/core"; -import { AnnotationBadge } from "../../atoms/AnnotationBadge/AnnotationBadge"; -import { ContentViewer } from "../../atoms/ContentViewer/ContentViewer"; -import { CopyButton } from "../../atoms/CopyButton/CopyButton"; -import { SubscribeButton } from "../../atoms/SubscribeButton/SubscribeButton"; +import { AnnotationBadge } from "../../elements/AnnotationBadge/AnnotationBadge"; +import { ContentViewer } from "../../elements/ContentViewer/ContentViewer"; +import { CopyButton } from "../../elements/CopyButton/CopyButton"; +import { SubscribeButton } from "../../elements/SubscribeButton/SubscribeButton"; export interface ResourcePreviewPanelProps { uri: string; diff --git a/clients/web/src/components/molecules/ResourceTemplateInput/ResourceTemplateInput.stories.tsx b/clients/web/src/components/groups/ResourceTemplateInput/ResourceTemplateInput.stories.tsx similarity index 94% rename from clients/web/src/components/molecules/ResourceTemplateInput/ResourceTemplateInput.stories.tsx rename to clients/web/src/components/groups/ResourceTemplateInput/ResourceTemplateInput.stories.tsx index e8e2bffa..0d5e78cd 100644 --- a/clients/web/src/components/molecules/ResourceTemplateInput/ResourceTemplateInput.stories.tsx +++ b/clients/web/src/components/groups/ResourceTemplateInput/ResourceTemplateInput.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ResourceTemplateInput } from "./ResourceTemplateInput"; const meta: Meta = { - title: "Molecules/ResourceTemplateInput", + title: "Groups/ResourceTemplateInput", component: ResourceTemplateInput, args: { onVariableChange: fn(), diff --git a/clients/web/src/components/molecules/ResourceTemplateInput/ResourceTemplateInput.tsx b/clients/web/src/components/groups/ResourceTemplateInput/ResourceTemplateInput.tsx similarity index 100% rename from clients/web/src/components/molecules/ResourceTemplateInput/ResourceTemplateInput.tsx rename to clients/web/src/components/groups/ResourceTemplateInput/ResourceTemplateInput.tsx diff --git a/clients/web/src/components/molecules/ResultPanel/ResultPanel.stories.tsx b/clients/web/src/components/groups/ResultPanel/ResultPanel.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/ResultPanel/ResultPanel.stories.tsx rename to clients/web/src/components/groups/ResultPanel/ResultPanel.stories.tsx index 824f399e..aaca03ed 100644 --- a/clients/web/src/components/molecules/ResultPanel/ResultPanel.stories.tsx +++ b/clients/web/src/components/groups/ResultPanel/ResultPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ResultPanel } from "./ResultPanel"; const meta: Meta = { - title: "Molecules/ResultPanel", + title: "Groups/ResultPanel", component: ResultPanel, args: { onClear: fn(), diff --git a/clients/web/src/components/molecules/ResultPanel/ResultPanel.tsx b/clients/web/src/components/groups/ResultPanel/ResultPanel.tsx similarity index 95% rename from clients/web/src/components/molecules/ResultPanel/ResultPanel.tsx rename to clients/web/src/components/groups/ResultPanel/ResultPanel.tsx index 0be55f23..858e9178 100644 --- a/clients/web/src/components/molecules/ResultPanel/ResultPanel.tsx +++ b/clients/web/src/components/groups/ResultPanel/ResultPanel.tsx @@ -1,5 +1,5 @@ import { Button, Group, Stack, Text, Title } from "@mantine/core"; -import { ContentViewer } from "../../atoms/ContentViewer/ContentViewer"; +import { ContentViewer } from "../../elements/ContentViewer/ContentViewer"; export interface ResultContentItem { type: string; diff --git a/clients/web/src/components/molecules/RootsTable/RootsTable.stories.tsx b/clients/web/src/components/groups/RootsTable/RootsTable.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/RootsTable/RootsTable.stories.tsx rename to clients/web/src/components/groups/RootsTable/RootsTable.stories.tsx index 1f071732..cdb7f403 100644 --- a/clients/web/src/components/molecules/RootsTable/RootsTable.stories.tsx +++ b/clients/web/src/components/groups/RootsTable/RootsTable.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { RootsTable } from "./RootsTable"; const meta: Meta = { - title: "Molecules/RootsTable", + title: "Groups/RootsTable", component: RootsTable, args: { onRemoveRoot: fn(), diff --git a/clients/web/src/components/molecules/RootsTable/RootsTable.tsx b/clients/web/src/components/groups/RootsTable/RootsTable.tsx similarity index 100% rename from clients/web/src/components/molecules/RootsTable/RootsTable.tsx rename to clients/web/src/components/groups/RootsTable/RootsTable.tsx diff --git a/clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.stories.tsx b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.stories.tsx rename to clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.stories.tsx index 0bc6918a..d64d1b39 100644 --- a/clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.stories.tsx +++ b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { SamplingRequestPanel } from "./SamplingRequestPanel"; const meta: Meta = { - title: "Molecules/SamplingRequestPanel", + title: "Groups/SamplingRequestPanel", component: SamplingRequestPanel, args: { responseText: "", diff --git a/clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.tsx b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx similarity index 98% rename from clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.tsx rename to clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx index b63bd151..f74cc979 100644 --- a/clients/web/src/components/molecules/SamplingRequestPanel/SamplingRequestPanel.tsx +++ b/clients/web/src/components/groups/SamplingRequestPanel/SamplingRequestPanel.tsx @@ -11,7 +11,7 @@ import { Textarea, Title, } from "@mantine/core"; -import { MessageBubble } from "../../atoms/MessageBubble/MessageBubble"; +import { MessageBubble } from "../../elements/MessageBubble/MessageBubble"; export interface SamplingMessage { role: string; diff --git a/clients/web/src/components/molecules/SchemaForm/SchemaForm.stories.tsx b/clients/web/src/components/groups/SchemaForm/SchemaForm.stories.tsx similarity index 99% rename from clients/web/src/components/molecules/SchemaForm/SchemaForm.stories.tsx rename to clients/web/src/components/groups/SchemaForm/SchemaForm.stories.tsx index 1b0d1251..b98a4b43 100644 --- a/clients/web/src/components/molecules/SchemaForm/SchemaForm.stories.tsx +++ b/clients/web/src/components/groups/SchemaForm/SchemaForm.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { SchemaForm } from "./SchemaForm"; const meta: Meta = { - title: "Molecules/SchemaForm", + title: "Groups/SchemaForm", component: SchemaForm, args: { onChange: fn(), diff --git a/clients/web/src/components/molecules/SchemaForm/SchemaForm.tsx b/clients/web/src/components/groups/SchemaForm/SchemaForm.tsx similarity index 100% rename from clients/web/src/components/molecules/SchemaForm/SchemaForm.tsx rename to clients/web/src/components/groups/SchemaForm/SchemaForm.tsx diff --git a/clients/web/src/components/molecules/ServerCard/ServerCard.stories.tsx b/clients/web/src/components/groups/ServerCard/ServerCard.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/ServerCard/ServerCard.stories.tsx rename to clients/web/src/components/groups/ServerCard/ServerCard.stories.tsx index 5355f092..5fd804f7 100644 --- a/clients/web/src/components/molecules/ServerCard/ServerCard.stories.tsx +++ b/clients/web/src/components/groups/ServerCard/ServerCard.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ServerCard } from "./ServerCard"; const meta: Meta = { - title: "Molecules/ServerCard", + title: "Groups/ServerCard", component: ServerCard, args: { onToggleConnection: fn(), diff --git a/clients/web/src/components/molecules/ServerCard/ServerCard.tsx b/clients/web/src/components/groups/ServerCard/ServerCard.tsx similarity index 91% rename from clients/web/src/components/molecules/ServerCard/ServerCard.tsx rename to clients/web/src/components/groups/ServerCard/ServerCard.tsx index cb0d1e33..d5e7994b 100644 --- a/clients/web/src/components/molecules/ServerCard/ServerCard.tsx +++ b/clients/web/src/components/groups/ServerCard/ServerCard.tsx @@ -1,9 +1,9 @@ import { Badge, Button, Card, Group, Menu, Stack, Text } from "@mantine/core"; -import { StatusIndicator } from "../../atoms/StatusIndicator/StatusIndicator"; -import { TransportBadge } from "../../atoms/TransportBadge/TransportBadge"; -import { ConnectionToggle } from "../../atoms/ConnectionToggle/ConnectionToggle"; -import { ContentViewer } from "../../atoms/ContentViewer/ContentViewer"; -import { InlineError } from "../../atoms/InlineError/InlineError"; +import { StatusIndicator } from "../../elements/StatusIndicator/StatusIndicator"; +import { TransportBadge } from "../../elements/TransportBadge/TransportBadge"; +import { ConnectionToggle } from "../../elements/ConnectionToggle/ConnectionToggle"; +import { ContentViewer } from "../../elements/ContentViewer/ContentViewer"; +import { InlineError } from "../../elements/InlineError/InlineError"; export interface ServerCardProps { name: string; diff --git a/clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.stories.tsx b/clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.stories.tsx rename to clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.stories.tsx index c29b056e..fcec909c 100644 --- a/clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.stories.tsx +++ b/clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.stories.tsx @@ -2,7 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { ServerInfoContent } from "./ServerInfoContent"; const meta: Meta = { - title: "Molecules/ServerInfoContent", + title: "Groups/ServerInfoContent", component: ServerInfoContent, }; diff --git a/clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.tsx b/clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.tsx similarity index 97% rename from clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.tsx rename to clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.tsx index 61d1f484..2cd2a134 100644 --- a/clients/web/src/components/molecules/ServerInfoContent/ServerInfoContent.tsx +++ b/clients/web/src/components/groups/ServerInfoContent/ServerInfoContent.tsx @@ -7,7 +7,7 @@ import { Text, Title, } from "@mantine/core"; -import { CapabilityItem } from "../../atoms/CapabilityItem/CapabilityItem"; +import { CapabilityItem } from "../../elements/CapabilityItem/CapabilityItem"; export interface CapabilityInfo { name: string; diff --git a/clients/web/src/components/molecules/ServerSettingsForm/ServerSettingsForm.stories.tsx b/clients/web/src/components/groups/ServerSettingsForm/ServerSettingsForm.stories.tsx similarity index 97% rename from clients/web/src/components/molecules/ServerSettingsForm/ServerSettingsForm.stories.tsx rename to clients/web/src/components/groups/ServerSettingsForm/ServerSettingsForm.stories.tsx index 6639f9d3..b44d295d 100644 --- a/clients/web/src/components/molecules/ServerSettingsForm/ServerSettingsForm.stories.tsx +++ b/clients/web/src/components/groups/ServerSettingsForm/ServerSettingsForm.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ServerSettingsForm } from "./ServerSettingsForm"; const meta: Meta = { - title: "Molecules/ServerSettingsForm", + title: "Groups/ServerSettingsForm", component: ServerSettingsForm, args: { onConnectionModeChange: fn(), diff --git a/clients/web/src/components/molecules/ServerSettingsForm/ServerSettingsForm.tsx b/clients/web/src/components/groups/ServerSettingsForm/ServerSettingsForm.tsx similarity index 100% rename from clients/web/src/components/molecules/ServerSettingsForm/ServerSettingsForm.tsx rename to clients/web/src/components/groups/ServerSettingsForm/ServerSettingsForm.tsx diff --git a/clients/web/src/components/molecules/TaskCard/TaskCard.stories.tsx b/clients/web/src/components/groups/TaskCard/TaskCard.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/TaskCard/TaskCard.stories.tsx rename to clients/web/src/components/groups/TaskCard/TaskCard.stories.tsx index a622717a..74fc2d7d 100644 --- a/clients/web/src/components/molecules/TaskCard/TaskCard.stories.tsx +++ b/clients/web/src/components/groups/TaskCard/TaskCard.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { TaskCard } from "./TaskCard"; const meta: Meta = { - title: "Molecules/TaskCard", + title: "Groups/TaskCard", component: TaskCard, args: { onViewDetails: fn(), diff --git a/clients/web/src/components/molecules/TaskCard/TaskCard.tsx b/clients/web/src/components/groups/TaskCard/TaskCard.tsx similarity index 97% rename from clients/web/src/components/molecules/TaskCard/TaskCard.tsx rename to clients/web/src/components/groups/TaskCard/TaskCard.tsx index 89311b40..bea68237 100644 --- a/clients/web/src/components/molecules/TaskCard/TaskCard.tsx +++ b/clients/web/src/components/groups/TaskCard/TaskCard.tsx @@ -1,5 +1,5 @@ import { Badge, Button, Card, Group, Stack, Text } from "@mantine/core"; -import { ProgressDisplay } from "../../atoms/ProgressDisplay/ProgressDisplay"; +import { ProgressDisplay } from "../../elements/ProgressDisplay/ProgressDisplay"; export type TaskStatus = | "waiting" diff --git a/clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.stories.tsx b/clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.stories.tsx similarity index 98% rename from clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.stories.tsx rename to clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.stories.tsx index bb286017..559a0a22 100644 --- a/clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.stories.tsx +++ b/clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ToolDetailPanel } from "./ToolDetailPanel"; const meta: Meta = { - title: "Molecules/ToolDetailPanel", + title: "Groups/ToolDetailPanel", component: ToolDetailPanel, args: { onFormChange: fn(), diff --git a/clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.tsx b/clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.tsx similarity index 94% rename from clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.tsx rename to clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.tsx index 69927bab..d0d5ecc5 100644 --- a/clients/web/src/components/molecules/ToolDetailPanel/ToolDetailPanel.tsx +++ b/clients/web/src/components/groups/ToolDetailPanel/ToolDetailPanel.tsx @@ -1,6 +1,6 @@ import { Button, Divider, Group, Stack, Text } from "@mantine/core"; -import { AnnotationBadge } from "../../atoms/AnnotationBadge/AnnotationBadge"; -import { ProgressDisplay } from "../../atoms/ProgressDisplay/ProgressDisplay"; +import { AnnotationBadge } from "../../elements/AnnotationBadge/AnnotationBadge"; +import { ProgressDisplay } from "../../elements/ProgressDisplay/ProgressDisplay"; import { SchemaForm } from "../SchemaForm/SchemaForm"; import type { JsonSchema } from "../SchemaForm/SchemaForm"; diff --git a/clients/web/src/components/molecules/ToolListItem/ToolListItem.stories.tsx b/clients/web/src/components/groups/ToolListItem/ToolListItem.stories.tsx similarity index 95% rename from clients/web/src/components/molecules/ToolListItem/ToolListItem.stories.tsx rename to clients/web/src/components/groups/ToolListItem/ToolListItem.stories.tsx index 78d2e89b..cc3c03b5 100644 --- a/clients/web/src/components/molecules/ToolListItem/ToolListItem.stories.tsx +++ b/clients/web/src/components/groups/ToolListItem/ToolListItem.stories.tsx @@ -3,7 +3,7 @@ import { fn } from "storybook/test"; import { ToolListItem } from "./ToolListItem"; const meta: Meta = { - title: "Molecules/ToolListItem", + title: "Groups/ToolListItem", component: ToolListItem, args: { onClick: fn(), diff --git a/clients/web/src/components/molecules/ToolListItem/ToolListItem.tsx b/clients/web/src/components/groups/ToolListItem/ToolListItem.tsx similarity index 100% rename from clients/web/src/components/molecules/ToolListItem/ToolListItem.tsx rename to clients/web/src/components/groups/ToolListItem/ToolListItem.tsx diff --git a/clients/web/src/components/organisms/HistoryScreen/HistoryScreen.stories.tsx b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx similarity index 96% rename from clients/web/src/components/organisms/HistoryScreen/HistoryScreen.stories.tsx rename to clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx index 7229bbfe..955c55b1 100644 --- a/clients/web/src/components/organisms/HistoryScreen/HistoryScreen.stories.tsx +++ b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.stories.tsx @@ -1,9 +1,10 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { HistoryScreen } from "./HistoryScreen"; -import type { HistoryEntryProps } from "../../molecules/HistoryEntry/HistoryEntry"; +import type { HistoryEntryProps } from "../../groups/HistoryEntry/HistoryEntry"; const meta: Meta = { + title: "Screens/HistoryScreen", component: HistoryScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/HistoryScreen/HistoryScreen.tsx b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx similarity index 95% rename from clients/web/src/components/organisms/HistoryScreen/HistoryScreen.tsx rename to clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx index 6e292e82..3fce13d6 100644 --- a/clients/web/src/components/organisms/HistoryScreen/HistoryScreen.tsx +++ b/clients/web/src/components/screens/HistoryScreen/HistoryScreen.tsx @@ -10,8 +10,8 @@ import { TextInput, Title, } from "@mantine/core"; -import { HistoryEntry } from "../../molecules/HistoryEntry/HistoryEntry"; -import type { HistoryEntryProps } from "../../molecules/HistoryEntry/HistoryEntry"; +import { HistoryEntry } from "../../groups/HistoryEntry/HistoryEntry"; +import type { HistoryEntryProps } from "../../groups/HistoryEntry/HistoryEntry"; export interface HistoryScreenProps { entries: HistoryEntryProps[]; diff --git a/clients/web/src/components/organisms/LoggingScreen/LoggingScreen.stories.tsx b/clients/web/src/components/screens/LoggingScreen/LoggingScreen.stories.tsx similarity index 96% rename from clients/web/src/components/organisms/LoggingScreen/LoggingScreen.stories.tsx rename to clients/web/src/components/screens/LoggingScreen/LoggingScreen.stories.tsx index bf497115..15df86ca 100644 --- a/clients/web/src/components/organisms/LoggingScreen/LoggingScreen.stories.tsx +++ b/clients/web/src/components/screens/LoggingScreen/LoggingScreen.stories.tsx @@ -1,8 +1,8 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { LoggingScreen } from "./LoggingScreen"; -import type { LogControlsProps } from "../../molecules/LogControls/LogControls"; -import type { LogEntryProps, LogLevel } from "../../atoms/LogEntry/LogEntry"; +import type { LogControlsProps } from "../../groups/LogControls/LogControls"; +import type { LogEntryProps, LogLevel } from "../../elements/LogEntry/LogEntry"; function makeControls(): LogControlsProps { return { @@ -27,6 +27,7 @@ function makeControls(): LogControlsProps { } const meta: Meta = { + title: "Screens/LoggingScreen", component: LoggingScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/LoggingScreen/LoggingScreen.tsx b/clients/web/src/components/screens/LoggingScreen/LoggingScreen.tsx similarity index 88% rename from clients/web/src/components/organisms/LoggingScreen/LoggingScreen.tsx rename to clients/web/src/components/screens/LoggingScreen/LoggingScreen.tsx index bd461b6b..d9c4a281 100644 --- a/clients/web/src/components/organisms/LoggingScreen/LoggingScreen.tsx +++ b/clients/web/src/components/screens/LoggingScreen/LoggingScreen.tsx @@ -10,10 +10,10 @@ import { Text, Title, } from "@mantine/core"; -import { LogControls } from "../../molecules/LogControls/LogControls"; -import { LogEntry } from "../../atoms/LogEntry/LogEntry"; -import type { LogControlsProps } from "../../molecules/LogControls/LogControls"; -import type { LogEntryProps } from "../../atoms/LogEntry/LogEntry"; +import { LogControls } from "../../groups/LogControls/LogControls"; +import { LogEntry } from "../../elements/LogEntry/LogEntry"; +import type { LogControlsProps } from "../../groups/LogControls/LogControls"; +import type { LogEntryProps } from "../../elements/LogEntry/LogEntry"; export interface LoggingScreenProps { controls: LogControlsProps; diff --git a/clients/web/src/components/organisms/PromptsScreen/PromptsScreen.stories.tsx b/clients/web/src/components/screens/PromptsScreen/PromptsScreen.stories.tsx similarity index 98% rename from clients/web/src/components/organisms/PromptsScreen/PromptsScreen.stories.tsx rename to clients/web/src/components/screens/PromptsScreen/PromptsScreen.stories.tsx index 24db4d58..9124660e 100644 --- a/clients/web/src/components/organisms/PromptsScreen/PromptsScreen.stories.tsx +++ b/clients/web/src/components/screens/PromptsScreen/PromptsScreen.stories.tsx @@ -3,6 +3,7 @@ import { fn } from "storybook/test"; import { PromptsScreen } from "./PromptsScreen"; const meta: Meta = { + title: "Screens/PromptsScreen", component: PromptsScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/PromptsScreen/PromptsScreen.tsx b/clients/web/src/components/screens/PromptsScreen/PromptsScreen.tsx similarity index 73% rename from clients/web/src/components/organisms/PromptsScreen/PromptsScreen.tsx rename to clients/web/src/components/screens/PromptsScreen/PromptsScreen.tsx index 0b69fcc2..3fe718f8 100644 --- a/clients/web/src/components/organisms/PromptsScreen/PromptsScreen.tsx +++ b/clients/web/src/components/screens/PromptsScreen/PromptsScreen.tsx @@ -1,9 +1,9 @@ import { Card, Container, Grid, Stack, Text } from "@mantine/core"; -import { PromptArgumentsForm } from "../../molecules/PromptArgumentsForm/PromptArgumentsForm"; -import { PromptMessagesDisplay } from "../../molecules/PromptMessagesDisplay/PromptMessagesDisplay"; -import { ListChangedIndicator } from "../../atoms/ListChangedIndicator/ListChangedIndicator"; -import type { PromptArgumentsFormProps } from "../../molecules/PromptArgumentsForm/PromptArgumentsForm"; -import type { PromptMessagesDisplayProps } from "../../molecules/PromptMessagesDisplay/PromptMessagesDisplay"; +import { PromptArgumentsForm } from "../../groups/PromptArgumentsForm/PromptArgumentsForm"; +import { PromptMessagesDisplay } from "../../groups/PromptMessagesDisplay/PromptMessagesDisplay"; +import { ListChangedIndicator } from "../../elements/ListChangedIndicator/ListChangedIndicator"; +import type { PromptArgumentsFormProps } from "../../groups/PromptArgumentsForm/PromptArgumentsForm"; +import type { PromptMessagesDisplayProps } from "../../groups/PromptMessagesDisplay/PromptMessagesDisplay"; export interface PromptsScreenProps { promptForm: PromptArgumentsFormProps; diff --git a/clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.stories.tsx b/clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.stories.tsx similarity index 87% rename from clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.stories.tsx rename to clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.stories.tsx index be87c5e8..9d33e4fe 100644 --- a/clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.stories.tsx +++ b/clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.stories.tsx @@ -1,11 +1,12 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { ResourcesScreen } from "./ResourcesScreen"; -import type { ResourceListItemProps } from "../../molecules/ResourceListItem/ResourceListItem"; -import type { ResourceTemplateInputProps } from "../../molecules/ResourceTemplateInput/ResourceTemplateInput"; -import type { ResourcePreviewPanelProps } from "../../molecules/ResourcePreviewPanel/ResourcePreviewPanel"; +import type { ResourceListItemProps } from "../../groups/ResourceListItem/ResourceListItem"; +import type { ResourceTemplateInputProps } from "../../groups/ResourceTemplateInput/ResourceTemplateInput"; +import type { ResourcePreviewPanelProps } from "../../groups/ResourcePreviewPanel/ResourcePreviewPanel"; const meta: Meta = { + title: "Screens/ResourcesScreen", component: ResourcesScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.tsx b/clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.tsx similarity index 87% rename from clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.tsx rename to clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.tsx index 2873e919..02323a3d 100644 --- a/clients/web/src/components/organisms/ResourcesScreen/ResourcesScreen.tsx +++ b/clients/web/src/components/screens/ResourcesScreen/ResourcesScreen.tsx @@ -8,13 +8,13 @@ import { TextInput, Title, } from "@mantine/core"; -import { ListChangedIndicator } from "../../atoms/ListChangedIndicator/ListChangedIndicator"; -import { ResourceListItem } from "../../molecules/ResourceListItem/ResourceListItem"; -import { ResourcePreviewPanel } from "../../molecules/ResourcePreviewPanel/ResourcePreviewPanel"; -import { ResourceTemplateInput } from "../../molecules/ResourceTemplateInput/ResourceTemplateInput"; -import type { ResourceListItemProps } from "../../molecules/ResourceListItem/ResourceListItem"; -import type { ResourcePreviewPanelProps } from "../../molecules/ResourcePreviewPanel/ResourcePreviewPanel"; -import type { ResourceTemplateInputProps } from "../../molecules/ResourceTemplateInput/ResourceTemplateInput"; +import { ListChangedIndicator } from "../../elements/ListChangedIndicator/ListChangedIndicator"; +import { ResourceListItem } from "../../groups/ResourceListItem/ResourceListItem"; +import { ResourcePreviewPanel } from "../../groups/ResourcePreviewPanel/ResourcePreviewPanel"; +import { ResourceTemplateInput } from "../../groups/ResourceTemplateInput/ResourceTemplateInput"; +import type { ResourceListItemProps } from "../../groups/ResourceListItem/ResourceListItem"; +import type { ResourcePreviewPanelProps } from "../../groups/ResourcePreviewPanel/ResourcePreviewPanel"; +import type { ResourceTemplateInputProps } from "../../groups/ResourceTemplateInput/ResourceTemplateInput"; export interface SubscriptionInfo { name: string; diff --git a/clients/web/src/components/organisms/ServerListScreen/ServerListScreen.stories.tsx b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx similarity index 96% rename from clients/web/src/components/organisms/ServerListScreen/ServerListScreen.stories.tsx rename to clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx index 1d04297a..dbc533c9 100644 --- a/clients/web/src/components/organisms/ServerListScreen/ServerListScreen.stories.tsx +++ b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx @@ -1,9 +1,10 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { ServerListScreen } from "./ServerListScreen"; -import type { ServerCardProps } from "../../molecules/ServerCard/ServerCard"; +import type { ServerCardProps } from "../../groups/ServerCard/ServerCard"; const meta: Meta = { + title: "Screens/ServerListScreen", component: ServerListScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/ServerListScreen/ServerListScreen.tsx b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx similarity index 85% rename from clients/web/src/components/organisms/ServerListScreen/ServerListScreen.tsx rename to clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx index a77f493f..96fb3b52 100644 --- a/clients/web/src/components/organisms/ServerListScreen/ServerListScreen.tsx +++ b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx @@ -1,7 +1,7 @@ import { Container, Group, SimpleGrid, Stack, Text } from "@mantine/core"; -import { ServerCard } from "../../molecules/ServerCard/ServerCard"; -import { AddServerMenu } from "../../molecules/AddServerMenu/AddServerMenu"; -import type { ServerCardProps } from "../../molecules/ServerCard/ServerCard"; +import { ServerCard } from "../../groups/ServerCard/ServerCard"; +import { AddServerMenu } from "../../groups/AddServerMenu/AddServerMenu"; +import type { ServerCardProps } from "../../groups/ServerCard/ServerCard"; export interface ServerListScreenProps { servers: ServerCardProps[]; diff --git a/clients/web/src/components/organisms/TasksScreen/TasksScreen.stories.tsx b/clients/web/src/components/screens/TasksScreen/TasksScreen.stories.tsx similarity index 95% rename from clients/web/src/components/organisms/TasksScreen/TasksScreen.stories.tsx rename to clients/web/src/components/screens/TasksScreen/TasksScreen.stories.tsx index da08c3d4..a922d23a 100644 --- a/clients/web/src/components/organisms/TasksScreen/TasksScreen.stories.tsx +++ b/clients/web/src/components/screens/TasksScreen/TasksScreen.stories.tsx @@ -1,9 +1,10 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { TasksScreen } from "./TasksScreen"; -import type { TaskCardProps } from "../../molecules/TaskCard/TaskCard"; +import type { TaskCardProps } from "../../groups/TaskCard/TaskCard"; const meta: Meta = { + title: "Screens/TasksScreen", component: TasksScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/TasksScreen/TasksScreen.tsx b/clients/web/src/components/screens/TasksScreen/TasksScreen.tsx similarity index 93% rename from clients/web/src/components/organisms/TasksScreen/TasksScreen.tsx rename to clients/web/src/components/screens/TasksScreen/TasksScreen.tsx index 6942bb04..fba4a9b4 100644 --- a/clients/web/src/components/organisms/TasksScreen/TasksScreen.tsx +++ b/clients/web/src/components/screens/TasksScreen/TasksScreen.tsx @@ -7,8 +7,8 @@ import { Text, Title, } from "@mantine/core"; -import { TaskCard } from "../../molecules/TaskCard/TaskCard"; -import type { TaskCardProps } from "../../molecules/TaskCard/TaskCard"; +import { TaskCard } from "../../groups/TaskCard/TaskCard"; +import type { TaskCardProps } from "../../groups/TaskCard/TaskCard"; export interface TasksScreenProps { activeTasks: TaskCardProps[]; diff --git a/clients/web/src/components/organisms/ToolsScreen/ToolsScreen.stories.tsx b/clients/web/src/components/screens/ToolsScreen/ToolsScreen.stories.tsx similarity index 93% rename from clients/web/src/components/organisms/ToolsScreen/ToolsScreen.stories.tsx rename to clients/web/src/components/screens/ToolsScreen/ToolsScreen.stories.tsx index 2edc8c3b..99b2c39f 100644 --- a/clients/web/src/components/organisms/ToolsScreen/ToolsScreen.stories.tsx +++ b/clients/web/src/components/screens/ToolsScreen/ToolsScreen.stories.tsx @@ -1,11 +1,12 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { ToolsScreen } from "./ToolsScreen"; -import type { ToolListItemProps } from "../../molecules/ToolListItem/ToolListItem"; -import type { ToolDetailPanelProps } from "../../molecules/ToolDetailPanel/ToolDetailPanel"; -import type { ResultPanelProps } from "../../molecules/ResultPanel/ResultPanel"; +import type { ToolListItemProps } from "../../groups/ToolListItem/ToolListItem"; +import type { ToolDetailPanelProps } from "../../groups/ToolDetailPanel/ToolDetailPanel"; +import type { ResultPanelProps } from "../../groups/ResultPanel/ResultPanel"; const meta: Meta = { + title: "Screens/ToolsScreen", component: ToolsScreen, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/organisms/ToolsScreen/ToolsScreen.tsx b/clients/web/src/components/screens/ToolsScreen/ToolsScreen.tsx similarity index 80% rename from clients/web/src/components/organisms/ToolsScreen/ToolsScreen.tsx rename to clients/web/src/components/screens/ToolsScreen/ToolsScreen.tsx index 47d8bd33..b6f97322 100644 --- a/clients/web/src/components/organisms/ToolsScreen/ToolsScreen.tsx +++ b/clients/web/src/components/screens/ToolsScreen/ToolsScreen.tsx @@ -7,13 +7,13 @@ import { TextInput, Title, } from "@mantine/core"; -import { ListChangedIndicator } from "../../atoms/ListChangedIndicator/ListChangedIndicator"; -import { ToolListItem } from "../../molecules/ToolListItem/ToolListItem"; -import { ToolDetailPanel } from "../../molecules/ToolDetailPanel/ToolDetailPanel"; -import { ResultPanel } from "../../molecules/ResultPanel/ResultPanel"; -import type { ToolListItemProps } from "../../molecules/ToolListItem/ToolListItem"; -import type { ToolDetailPanelProps } from "../../molecules/ToolDetailPanel/ToolDetailPanel"; -import type { ResultPanelProps } from "../../molecules/ResultPanel/ResultPanel"; +import { ListChangedIndicator } from "../../elements/ListChangedIndicator/ListChangedIndicator"; +import { ToolListItem } from "../../groups/ToolListItem/ToolListItem"; +import { ToolDetailPanel } from "../../groups/ToolDetailPanel/ToolDetailPanel"; +import { ResultPanel } from "../../groups/ResultPanel/ResultPanel"; +import type { ToolListItemProps } from "../../groups/ToolListItem/ToolListItem"; +import type { ToolDetailPanelProps } from "../../groups/ToolDetailPanel/ToolDetailPanel"; +import type { ResultPanelProps } from "../../groups/ResultPanel/ResultPanel"; export interface ToolsScreenProps { tools: ToolListItemProps[]; diff --git a/clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.stories.tsx b/clients/web/src/components/views/ConnectedView/ConnectedLayout.stories.tsx similarity index 95% rename from clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.stories.tsx rename to clients/web/src/components/views/ConnectedView/ConnectedLayout.stories.tsx index a8c3b970..24c163a9 100644 --- a/clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.stories.tsx +++ b/clients/web/src/components/views/ConnectedView/ConnectedLayout.stories.tsx @@ -2,15 +2,15 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { Text } from "@mantine/core"; import { ConnectedLayout } from "./ConnectedLayout"; -import { ToolsScreen } from "../../organisms/ToolsScreen/ToolsScreen"; -import { ResourcesScreen } from "../../organisms/ResourcesScreen/ResourcesScreen"; -import { PromptsScreen } from "../../organisms/PromptsScreen/PromptsScreen"; -import { LoggingScreen } from "../../organisms/LoggingScreen/LoggingScreen"; -import { TasksScreen } from "../../organisms/TasksScreen/TasksScreen"; -import { HistoryScreen } from "../../organisms/HistoryScreen/HistoryScreen"; +import { ToolsScreen } from "../../screens/ToolsScreen/ToolsScreen"; +import { ResourcesScreen } from "../../screens/ResourcesScreen/ResourcesScreen"; +import { PromptsScreen } from "../../screens/PromptsScreen/PromptsScreen"; +import { LoggingScreen } from "../../screens/LoggingScreen/LoggingScreen"; +import { TasksScreen } from "../../screens/TasksScreen/TasksScreen"; +import { HistoryScreen } from "../../screens/HistoryScreen/HistoryScreen"; -import type { LogEntryProps } from "../../atoms/LogEntry/LogEntry"; -import type { LogLevel } from "../../atoms/LogEntry/LogEntry"; +import type { LogEntryProps } from "../../elements/LogEntry/LogEntry"; +import type { LogLevel } from "../../elements/LogEntry/LogEntry"; const allTabs = ["Tools", "Resources", "Prompts", "Logs", "Tasks", "History"]; @@ -148,7 +148,7 @@ const sampleLogEntries: LogEntryProps[] = Array.from({ length: 50 }, (_, i) => { }); const meta: Meta = { - title: "Layouts/ConnectedLayout", + title: "Views/ConnectedView", component: ConnectedLayout, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.tsx b/clients/web/src/components/views/ConnectedView/ConnectedLayout.tsx similarity index 96% rename from clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.tsx rename to clients/web/src/components/views/ConnectedView/ConnectedLayout.tsx index 4a95221d..898520a6 100644 --- a/clients/web/src/components/layouts/ConnectedLayout/ConnectedLayout.tsx +++ b/clients/web/src/components/views/ConnectedView/ConnectedLayout.tsx @@ -9,7 +9,7 @@ import { Text, } from "@mantine/core"; import { useComputedColorScheme } from "@mantine/core"; -import { StatusIndicator } from "../../atoms/StatusIndicator/StatusIndicator"; +import { StatusIndicator } from "../../elements/StatusIndicator/StatusIndicator"; import mcpLogo from "../../../theme/assets/MCP.svg"; import mcpLogoDark from "../../../theme/assets/MCP-dark.svg"; diff --git a/clients/web/src/components/layouts/HomeLayout/HomeLayout.stories.tsx b/clients/web/src/components/views/UnconnectedView/HomeLayout.stories.tsx similarity index 92% rename from clients/web/src/components/layouts/HomeLayout/HomeLayout.stories.tsx rename to clients/web/src/components/views/UnconnectedView/HomeLayout.stories.tsx index 23d327f4..28e4ea59 100644 --- a/clients/web/src/components/layouts/HomeLayout/HomeLayout.stories.tsx +++ b/clients/web/src/components/views/UnconnectedView/HomeLayout.stories.tsx @@ -2,11 +2,11 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { Text } from "@mantine/core"; import { HomeLayout } from "./HomeLayout"; -import { ServerListScreen } from "../../organisms/ServerListScreen/ServerListScreen"; -import type { ServerCardProps } from "../../molecules/ServerCard/ServerCard"; +import { ServerListScreen } from "../../screens/ServerListScreen/ServerListScreen"; +import type { ServerCardProps } from "../../groups/ServerCard/ServerCard"; const meta: Meta = { - title: "Layouts/HomeLayout", + title: "Views/UnconnectedView", component: HomeLayout, parameters: { layout: "fullscreen" }, args: { diff --git a/clients/web/src/components/layouts/HomeLayout/HomeLayout.tsx b/clients/web/src/components/views/UnconnectedView/HomeLayout.tsx similarity index 100% rename from clients/web/src/components/layouts/HomeLayout/HomeLayout.tsx rename to clients/web/src/components/views/UnconnectedView/HomeLayout.tsx diff --git a/specification/v2_ux_components.md b/specification/v2_ux_components.md index 85a5525b..19d33d8e 100644 --- a/specification/v2_ux_components.md +++ b/specification/v2_ux_components.md @@ -39,7 +39,7 @@ Each story appears in a sidebar, and you click through them to visually verify t The typical cycle is: define the component's prop interface (the "model" in your framing), write the component to render based on those props, write stories that exercise various prop combinations (empty states, error states, loading, overflowing content, etc.), and then visually verify in the Storybook UI. You do all of this before the component ever touches real data or lives inside the actual app. -This naturally pushes you toward building bottom-up — atoms first (buttons, inputs, badges), then molecules (form groups, cards), then organisms (full panels, modals). You can't easily skip ahead and build a page-level component first because it would need too many dependencies you haven't isolated yet. +This naturally pushes you toward building bottom-up — elements first (buttons, inputs, badges), then groups (form groups, cards), then screens (full panels, modals). You can't easily skip ahead and build a page-level component first because it would need too many dependencies you haven't isolated yet. ## Disciplines That Keep Logic Out of Components diff --git a/specification/v2_ux_storybook.md b/specification/v2_ux_storybook.md index 616fa38a..41d296da 100644 --- a/specification/v2_ux_storybook.md +++ b/specification/v2_ux_storybook.md @@ -5,14 +5,14 @@ --- -This document defines every presentational component to be built in Storybook using Mantine. Components are organized bottom-up: atoms first, then molecules, then organisms. Each component receives all data and callbacks via props — no store access. +This document defines every presentational component to be built in Storybook using Mantine. Components are organized bottom-up: elements first, then groups, then screens. Each component receives all data and callbacks via props — no store access. ## Table of Contents * [Conventions](#conventions) - * [Tier 1 - Atoms](#tier-1---atoms) - * [Tier 2 - Molecules](#tier-2---molecules) - * [Tier 3 - Organisms](#tier-3---organisms) - * [Tier 4 - Page Layouts](#tier-4---page-layouts) + * [Tier 1 - Elements](#tier-1---elements) + * [Tier 2 - Groups](#tier-2---groups) + * [Tier 3 - Screens](#tier-3---screens) + * [Tier 4 - Page Views](#tier-4---page-views) * [Build Order](#build-order) * [Storybook Configuration](#storybook-configuration) @@ -23,22 +23,22 @@ This document defines every presentational component to be built in Storybook us ### File Structure ``` src/components/ - atoms/ + elements/ StatusIndicator/ StatusIndicator.tsx StatusIndicator.stories.tsx ... - molecules/ + groups/ ServerCard/ ServerCard.tsx ServerCard.stories.tsx ... - organisms/ + screens/ ToolsScreen/ ToolsScreen.tsx ToolsScreen.stories.tsx ... - layouts/ + views/ AppShell/ AppShell.tsx AppShell.stories.tsx @@ -72,7 +72,7 @@ export const Failed: Story = { args: { status: 'failed', retryCount: 3 } }; --- -## Tier 1 - Atoms +## Tier 1 - Elements Small, single-purpose components. Most map directly to a Mantine component with specific props/styling. @@ -270,9 +270,9 @@ Single chat message with role label and content (text, image, or audio). --- -## Tier 2 - Molecules +## Tier 2 - Groups -Composed from atoms. Represent distinct functional units within a screen. +Composed from elements. Represent distinct functional units within a screen. ### 2.1 ServerCard @@ -301,7 +301,7 @@ Server connection card with status, transport, command, and action buttons. | `onTestElicitationUrl` | `() => void` | Test elicitation (URL) | | `onConfigureRoots` | `() => void` | Configure roots | -**Mantine:** `Card` with `Card.Section` dividers. Uses StatusIndicator, TransportBadge, ConnectionToggle, CopyButton, InlineError atoms. `Menu` for "Test Client Features" dropdown. +**Mantine:** `Card` with `Card.Section` dividers. Uses StatusIndicator, TransportBadge, ConnectionToggle, CopyButton, InlineError elements. `Menu` for "Test Client Features" dropdown. **Stories:** Connected, Disconnected, Connecting, Failed, FailedWithError, WithClientFeatures, HttpDirect, LongCommand @@ -465,7 +465,7 @@ Rendered prompt result showing role-labeled messages. | `messages` | `Array<{ role: string; content: string; imageContent?: object; audioContent?: object }>` | Prompt messages | | `onCopy` | `() => void` | Copy messages | -**Mantine:** `Stack` of MessageBubble atoms, `Button` for copy. +**Mantine:** `Stack` of MessageBubble elements, `Button` for copy. **Stories:** SingleMessage, Conversation, WithImage, WithAudio, LongConversation @@ -819,9 +819,9 @@ Container for inline sampling/elicitation requests during tool execution. --- -## Tier 3 - Organisms +## Tier 3 - Screens -Full screen sections composed of molecules. These are the main content areas. +Full screen sections composed of groups. These are the main content areas. ### 3.1 ServerListScreen @@ -963,7 +963,7 @@ Request history list with search, filter, pinned section. --- -## Tier 4 - Page Layouts +## Tier 4 - Page Views ### 4.1 HomeLayout @@ -1008,8 +1008,8 @@ Layout for connected state with navigation bar. Components should be built bottom-up. Within each tier, components can be built in parallel. Dependencies are listed to show what must exist before a component can be composed. -### Phase 1: Foundation (Atoms) -All Tier 1 atoms can be built in parallel. No dependencies on each other. +### Phase 1: Foundation (Elements) +All Tier 1 elements can be built in parallel. No dependencies on each other. 1. StatusIndicator 2. AnnotationBadge @@ -1024,10 +1024,10 @@ All Tier 1 atoms can be built in parallel. No dependencies on each other. 11. InlineError 12. MessageBubble -### Phase 2: Core Molecules -Depends on Phase 1 atoms being complete. +### Phase 2: Core Groups +Depends on Phase 1 elements being complete. -1. **SchemaForm** (2.12) - Critical path, used by many other molecules +1. **SchemaForm** (2.12) - Critical path, used by many other groups 2. **ServerCard** (2.1) - Uses StatusIndicator, TransportBadge, ConnectionToggle, CopyButton, InlineError 3. **AddServerMenu** (2.2) 4. **ToolListItem** (2.3) - Uses AnnotationBadge @@ -1038,7 +1038,7 @@ Depends on Phase 1 atoms being complete. 9. **RootsTable** (2.18) 10. **ServerInfoContent** (2.19) - Uses CapabilityItem -### Phase 3: Dependent Molecules +### Phase 3: Dependent Groups Depends on SchemaForm and Phase 2. 1. **ToolDetailPanel** (2.4) - Uses SchemaForm, AnnotationBadge, ProgressDisplay @@ -1061,8 +1061,8 @@ Depends on Phase 3 panels. 2. **InlineElicitationRequest** (2.24) - Uses SchemaForm 3. **PendingClientRequests** (2.25) - Contains inline requests -### Phase 5: Organisms (Screens) -Depends on all molecules. +### Phase 5: Screens (Screens) +Depends on all groups. 1. **ServerListScreen** (3.1) 2. **ToolsScreen** (3.2) @@ -1072,8 +1072,8 @@ Depends on all molecules. 6. **TasksScreen** (3.6) 7. **HistoryScreen** (3.7) -### Phase 6: Layouts -Depends on organisms. +### Phase 6: Views +Depends on screens. 1. **HomeLayout** (4.1) 2. **ConnectedLayout** (4.2) @@ -1099,8 +1099,8 @@ export const decorators = [ ]; export const parameters = { - layout: 'centered', // atoms/molecules - // layout: 'fullscreen', // organisms/layouts + layout: 'centered', // elements/groups + // layout: 'fullscreen', // screens/views }; ```