mirror of
https://github.com/AgentSeal/codeburn.git
synced 2026-04-28 06:59:37 +00:00
refactor: share provider presentation metadata
This commit is contained in:
parent
eb3737f756
commit
563f9c4f1b
3 changed files with 58 additions and 22 deletions
|
|
@ -14,6 +14,7 @@ import { createTerminalProgressReporter } from './parse-progress.js'
|
|||
import { CompareView } from './compare.js'
|
||||
import { getPlanUsageOrNull, type PlanUsage } from './plan-usage.js'
|
||||
import { planDisplayName } from './plans.js'
|
||||
import { providerColor, providerLabel } from './provider-colors.js'
|
||||
import { join } from 'path'
|
||||
|
||||
type Period = 'today' | 'week' | '30days' | 'month' | 'all'
|
||||
|
|
@ -56,15 +57,6 @@ const PANEL_COLORS = {
|
|||
bash: '#F5A05B',
|
||||
}
|
||||
|
||||
const PROVIDER_COLORS: Record<string, string> = {
|
||||
claude: '#FF8C42',
|
||||
codex: '#5BF5A0',
|
||||
cursor: '#00B4D8',
|
||||
opencode: '#A78BFA',
|
||||
pi: '#F472B6',
|
||||
all: '#FF8C42',
|
||||
}
|
||||
|
||||
const CATEGORY_COLORS: Record<TaskCategory, string> = {
|
||||
coding: '#5B9EF5',
|
||||
debugging: '#F55B5B',
|
||||
|
|
@ -490,16 +482,6 @@ function BashBreakdown({ projects, pw, bw }: { projects: ProjectSummary[]; pw: n
|
|||
)
|
||||
}
|
||||
|
||||
const PROVIDER_DISPLAY_NAMES: Record<string, string> = {
|
||||
all: 'All',
|
||||
claude: 'Claude',
|
||||
codex: 'Codex',
|
||||
cursor: 'Cursor',
|
||||
opencode: 'OpenCode',
|
||||
pi: 'Pi',
|
||||
}
|
||||
function getProviderDisplayName(name: string): string { return PROVIDER_DISPLAY_NAMES[name] ?? name }
|
||||
|
||||
function PeriodTabs({ active, providerName, showProvider }: { active: Period; providerName?: string; showProvider?: boolean }) {
|
||||
return (
|
||||
<Box justifyContent="space-between" paddingX={1}>
|
||||
|
|
@ -510,9 +492,7 @@ function PeriodTabs({ active, providerName, showProvider }: { active: Period; pr
|
|||
</Text>
|
||||
))}
|
||||
</Box>
|
||||
{showProvider && providerName && (
|
||||
<Box><Text color={DIM}>| </Text><Text color={ORANGE} bold>[p]</Text><Text bold color={PROVIDER_COLORS[providerName] ?? ORANGE}> {getProviderDisplayName(providerName)}</Text></Box>
|
||||
)}
|
||||
{showProvider && providerName && <Box><Text color={DIM}>| </Text><Text color={ORANGE} bold>[p]</Text><Text bold color={providerColor(providerName)}> {providerLabel(providerName)}</Text></Box>}
|
||||
</Box>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
27
src/provider-colors.ts
Normal file
27
src/provider-colors.ts
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
export const PROVIDER_COLORS: Record<string, string> = {
|
||||
all: '#FF8C42',
|
||||
claude: '#FF8C42',
|
||||
codex: '#5BF5A0',
|
||||
cursor: '#00B4D8',
|
||||
opencode: '#A78BFA',
|
||||
pi: '#F472B6',
|
||||
copilot: '#6495ED',
|
||||
}
|
||||
|
||||
const PROVIDER_LABELS: Record<string, string> = {
|
||||
all: 'All',
|
||||
claude: 'Claude',
|
||||
codex: 'Codex',
|
||||
cursor: 'Cursor',
|
||||
opencode: 'OpenCode',
|
||||
pi: 'Pi',
|
||||
copilot: 'Copilot',
|
||||
}
|
||||
|
||||
export function providerLabel(name: string): string {
|
||||
return PROVIDER_LABELS[name] ?? name
|
||||
}
|
||||
|
||||
export function providerColor(name: string): string {
|
||||
return PROVIDER_COLORS[name] ?? '#CCCCCC'
|
||||
}
|
||||
29
tests/provider-colors.test.ts
Normal file
29
tests/provider-colors.test.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { describe, it, expect } from 'vitest'
|
||||
|
||||
import { PROVIDER_COLORS, providerColor, providerLabel } from '../src/provider-colors.js'
|
||||
|
||||
describe('provider presentation metadata', () => {
|
||||
it('exports the shared provider palette', () => {
|
||||
expect(PROVIDER_COLORS).toEqual({
|
||||
all: '#FF8C42',
|
||||
claude: '#FF8C42',
|
||||
codex: '#5BF5A0',
|
||||
cursor: '#00B4D8',
|
||||
opencode: '#A78BFA',
|
||||
pi: '#F472B6',
|
||||
copilot: '#6495ED',
|
||||
})
|
||||
})
|
||||
|
||||
it('maps provider names to labels', () => {
|
||||
expect(providerLabel('all')).toBe('All')
|
||||
expect(providerLabel('opencode')).toBe('OpenCode')
|
||||
expect(providerLabel('unknown')).toBe('unknown')
|
||||
})
|
||||
|
||||
it('maps provider names to colors with a neutral fallback', () => {
|
||||
expect(providerColor('all')).toBe('#FF8C42')
|
||||
expect(providerColor('opencode')).toBe('#A78BFA')
|
||||
expect(providerColor('unknown')).toBe('#CCCCCC')
|
||||
})
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue