2026-02-23 04:22:33 +07:00
|
|
|
import { RiBrainAi3Line, RiChatAi3Line, RiCommandLine, RiGitBranchLine, RiSettings3Line, RiStackLine, RiBookLine, RiBarChart2Line, RiPlugLine } from '@remixicon/react';
|
2025-12-07 19:32:53 +02:00
|
|
|
import type { ComponentType } from 'react';
|
|
|
|
|
|
2026-02-23 04:22:33 +07:00
|
|
|
export type SidebarSection = 'sessions' | 'agents' | 'commands' | 'skills' | 'mcp' | 'providers' | 'usage' | 'git-identities' | 'settings';
|
2025-12-07 19:32:53 +02:00
|
|
|
|
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
|
|
|
export type IconComponent = ComponentType<any>;
|
|
|
|
|
|
|
|
|
|
export interface SidebarSectionConfig {
|
|
|
|
|
id: SidebarSection;
|
|
|
|
|
label: string;
|
|
|
|
|
description: string;
|
|
|
|
|
icon: IconComponent;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const SIDEBAR_SECTIONS: SidebarSectionConfig[] = [
|
|
|
|
|
{
|
|
|
|
|
id: 'sessions',
|
|
|
|
|
label: 'Sessions',
|
|
|
|
|
description: 'Browse and manage chat sessions scoped to the current directory.',
|
|
|
|
|
icon: RiChatAi3Line,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'agents',
|
|
|
|
|
label: 'Agents',
|
|
|
|
|
description: 'Configure OpenCode agents, prompts, and permissions.',
|
|
|
|
|
icon: RiBrainAi3Line,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'commands',
|
|
|
|
|
label: 'Commands',
|
|
|
|
|
description: 'Create and maintain custom slash commands for OpenCode.',
|
|
|
|
|
icon: RiCommandLine,
|
|
|
|
|
},
|
2025-12-30 15:11:07 +02:00
|
|
|
{
|
|
|
|
|
id: 'skills',
|
|
|
|
|
label: 'Skills',
|
|
|
|
|
description: 'Create reusable instruction files for agents to load on-demand.',
|
|
|
|
|
icon: RiBookLine,
|
|
|
|
|
},
|
2026-02-23 04:22:33 +07:00
|
|
|
{
|
|
|
|
|
id: 'mcp',
|
|
|
|
|
label: 'MCP',
|
|
|
|
|
description: 'Manage Model Context Protocol servers and their configurations.',
|
|
|
|
|
icon: RiPlugLine,
|
|
|
|
|
},
|
2025-12-15 18:11:38 +02:00
|
|
|
{
|
|
|
|
|
id: 'providers',
|
|
|
|
|
label: 'Providers',
|
|
|
|
|
description: 'Configure AI model providers and API credentials.',
|
|
|
|
|
icon: RiStackLine,
|
2026-02-01 13:30:30 -03:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'usage',
|
|
|
|
|
label: 'Usage',
|
|
|
|
|
description: 'Monitor API quota and usage across providers.',
|
|
|
|
|
icon: RiBarChart2Line,
|
2025-12-15 18:11:38 +02:00
|
|
|
},
|
2025-12-07 19:32:53 +02:00
|
|
|
{
|
|
|
|
|
id: 'git-identities',
|
|
|
|
|
label: 'Git Identities',
|
|
|
|
|
description: 'Manage Git profiles with different credentials and SSH keys.',
|
|
|
|
|
icon: RiGitBranchLine,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 'settings',
|
2025-12-28 02:17:09 +02:00
|
|
|
label: 'OpenChamber',
|
|
|
|
|
description: 'OpenChamber app settings: themes, fonts, and preferences.',
|
|
|
|
|
icon: RiSettings3Line,
|
2025-12-07 19:32:53 +02:00
|
|
|
},
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const sidebarSectionLabels = {} as Record<SidebarSection, string>;
|
|
|
|
|
const sidebarSectionDescriptions = {} as Record<SidebarSection, string>;
|
|
|
|
|
const sidebarSectionConfigMap = {} as Record<SidebarSection, SidebarSectionConfig>;
|
|
|
|
|
|
|
|
|
|
SIDEBAR_SECTIONS.forEach((section) => {
|
|
|
|
|
sidebarSectionLabels[section.id] = section.label;
|
|
|
|
|
sidebarSectionDescriptions[section.id] = section.description;
|
|
|
|
|
sidebarSectionConfigMap[section.id] = section;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export const SIDEBAR_SECTION_LABELS = sidebarSectionLabels;
|
|
|
|
|
export const SIDEBAR_SECTION_DESCRIPTIONS = sidebarSectionDescriptions;
|
|
|
|
|
export const SIDEBAR_SECTION_CONFIG_MAP = sidebarSectionConfigMap;
|