refactor: extract CSS modules for session/settings and delete styles.css (Task 2.3)

- Create InstanceList.module.css, AppShell.module.css, SettingsTabLayout.module.css
- Create CommitPanel.module.css, FileViewer.module.css
- Create page CSS files: sessions, repo-workspace, dashboard, projects,
  git-history, ssh-keys, settings
- Update components to import and use CSS modules
- Delete monolithic styles.css (2,255 lines)
- Update main.tsx to import page CSS and new modules

Quality gates: tsc (pass), eslint (pass), build (pass)
Refs: repo-restructure Task 2.3
This commit is contained in:
Developer
2026-06-02 21:09:57 +00:00
parent c8c490eb2b
commit cccf4379d8
27 changed files with 2146 additions and 3388 deletions
+12 -11
View File
@@ -13,6 +13,7 @@ import {
startInstance,
stopInstance,
} from "../api/sessions";
import styles from "./features/session/InstanceList.module.css";
const API_BASE_URL =
import.meta.env.VITE_API_BASE_URL ?? "http://localhost:8000";
@@ -186,8 +187,8 @@ export const InstanceList = ({
};
return (
<div className="instance-list">
<div className="instance-list-header">
<div className={styles.instanceList}>
<div className={styles.instanceListHeader}>
<h3>Tool Instances</h3>
<button
className="secondary-button small"
@@ -206,30 +207,30 @@ export const InstanceList = ({
) : instances.length === 0 ? (
<p className="muted">No instances yet. Launch a tool to get started.</p>
) : (
<div className="instance-grid">
<div className={styles.instanceGrid}>
{instances.map((instance) => (
<div key={instance.id} className="instance-card">
<div className="instance-info">
<div className="instance-name">
<div key={instance.id} className={styles.instanceCard}>
<div className={styles.instanceInfo}>
<div className={styles.instanceName}>
{instance.display_name ||
instance.tool_type_name ||
"Unnamed Instance"}
</div>
<div className="instance-meta">
<div className={styles.instanceMeta}>
<span
className="status-dot"
className={styles.statusDot}
style={{ backgroundColor: getStatusColor(instance.status) }}
/>
{instance.status}
{isTunnelUnhealthy(instance) && (
<span className="error-badge" title="Tunnel unreachable">
<span className={styles.errorBadge} title="Tunnel unreachable">
<Icon name="warning" size="sm" />
tunnel error
</span>
)}
</div>
</div>
<div className="instance-actions">
<div className={styles.instanceActions}>
{instance.status === "running" &&
instance.url &&
instance.tool_type_interfaces.includes("web") && (
@@ -286,7 +287,7 @@ export const InstanceList = ({
{instance.status === "running" && (
<>
{stopConfirmId === instance.id ? (
<div className="inline-confirm">
<div className={styles.inlineConfirm}>
<span>Stop?</span>
<button
className="ghost-button small danger-text"