Revamp chart colors: replace bland cyan/teal with vibrant blue/indigo/amber palette + fix tooltip indicators
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -313,3 +313,27 @@ div[class*="recharts-tooltip"] {
|
|||||||
background-color: hsl(var(--card)) !important;
|
background-color: hsl(var(--card)) !important;
|
||||||
border-color: hsl(var(--border)) !important;
|
border-color: hsl(var(--border)) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Tremor/Recharts tooltip color indicator icons — fix rendering */
|
||||||
|
.recharts-tooltip-wrapper svg.recharts-surface {
|
||||||
|
display: inline-block !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tremor custom tooltip color dots */
|
||||||
|
[class*="tremor"] [role="tooltip"] span[class*="bg-"],
|
||||||
|
[class*="tremor"] [role="tooltip"] span[style*="background"] {
|
||||||
|
border-radius: 2px !important;
|
||||||
|
min-width: 10px !important;
|
||||||
|
min-height: 10px !important;
|
||||||
|
flex-shrink: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Recharts default tooltip icon fix — ensure SVG paths have correct fill */
|
||||||
|
.recharts-default-tooltip .recharts-tooltip-item-list {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.recharts-default-tooltip .recharts-tooltip-item svg {
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -20,31 +20,31 @@ export const BRAND_COLORS = [
|
|||||||
|
|
||||||
// Tremor named colors for chart components
|
// Tremor named colors for chart components
|
||||||
// These are the official Tremor palette names that render correctly
|
// These are the official Tremor palette names that render correctly
|
||||||
export const TREMOR_BRAND = 'cyan' as const
|
export const TREMOR_BRAND = 'blue' as const
|
||||||
export const TREMOR_ACCENT = 'teal' as const
|
export const TREMOR_ACCENT = 'indigo' as const
|
||||||
export const TREMOR_CHART_COLORS = [
|
export const TREMOR_CHART_COLORS = [
|
||||||
'cyan',
|
|
||||||
'teal',
|
|
||||||
'blue',
|
'blue',
|
||||||
'emerald',
|
'emerald',
|
||||||
'amber',
|
'amber',
|
||||||
'violet',
|
'violet',
|
||||||
'rose',
|
'rose',
|
||||||
'indigo',
|
'indigo',
|
||||||
'lime',
|
'sky',
|
||||||
'fuchsia',
|
'fuchsia',
|
||||||
|
'lime',
|
||||||
|
'orange',
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
// Donut / status chart colors (mapped to Tremor names)
|
// Donut / status chart colors (mapped to Tremor names)
|
||||||
export const TREMOR_STATUS_COLORS: Record<string, string> = {
|
export const TREMOR_STATUS_COLORS: Record<string, string> = {
|
||||||
SUBMITTED: 'slate',
|
SUBMITTED: 'sky',
|
||||||
ELIGIBLE: 'cyan',
|
ELIGIBLE: 'blue',
|
||||||
ASSIGNED: 'violet',
|
ASSIGNED: 'violet',
|
||||||
SEMIFINALIST: 'amber',
|
SEMIFINALIST: 'amber',
|
||||||
FINALIST: 'emerald',
|
FINALIST: 'emerald',
|
||||||
REJECTED: 'rose',
|
REJECTED: 'rose',
|
||||||
DRAFT: 'gray',
|
DRAFT: 'gray',
|
||||||
WITHDRAWN: 'neutral',
|
WITHDRAWN: 'slate',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Project status colors — mapped to actual ProjectStatus enum values
|
// Project status colors — mapped to actual ProjectStatus enum values
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export function CriteriaScoresChart({ data }: CriteriaScoresProps) {
|
|||||||
data={chartData}
|
data={chartData}
|
||||||
index="criterion"
|
index="criterion"
|
||||||
categories={['Avg Score']}
|
categories={['Avg Score']}
|
||||||
colors={['teal']}
|
colors={['indigo']}
|
||||||
maxValue={10}
|
maxValue={10}
|
||||||
layout="vertical"
|
layout="vertical"
|
||||||
yAxisWidth={160}
|
yAxisWidth={160}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ export function CrossStageComparisonChart({
|
|||||||
data={baseData}
|
data={baseData}
|
||||||
index="name"
|
index="name"
|
||||||
categories={['Projects']}
|
categories={['Projects']}
|
||||||
colors={['cyan']}
|
colors={['blue']}
|
||||||
showLegend={false}
|
showLegend={false}
|
||||||
yAxisWidth={40}
|
yAxisWidth={40}
|
||||||
className="h-[200px]"
|
className="h-[200px]"
|
||||||
@@ -75,7 +75,7 @@ export function CrossStageComparisonChart({
|
|||||||
data={baseData}
|
data={baseData}
|
||||||
index="name"
|
index="name"
|
||||||
categories={['Evaluations']}
|
categories={['Evaluations']}
|
||||||
colors={['teal']}
|
colors={['violet']}
|
||||||
showLegend={false}
|
showLegend={false}
|
||||||
yAxisWidth={40}
|
yAxisWidth={40}
|
||||||
className="h-[200px]"
|
className="h-[200px]"
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ export function DiversityMetricsChart({ data }: DiversityMetricsProps) {
|
|||||||
data={categoryData}
|
data={categoryData}
|
||||||
index="category"
|
index="category"
|
||||||
categories={['Count']}
|
categories={['Count']}
|
||||||
colors={['cyan']}
|
colors={['indigo']}
|
||||||
layout="horizontal"
|
layout="horizontal"
|
||||||
yAxisWidth={120}
|
yAxisWidth={120}
|
||||||
showLegend={false}
|
showLegend={false}
|
||||||
@@ -160,7 +160,7 @@ export function DiversityMetricsChart({ data }: DiversityMetricsProps) {
|
|||||||
data={oceanIssueData}
|
data={oceanIssueData}
|
||||||
index="issue"
|
index="issue"
|
||||||
categories={['Count']}
|
categories={['Count']}
|
||||||
colors={['teal']}
|
colors={['blue']}
|
||||||
showLegend={false}
|
showLegend={false}
|
||||||
yAxisWidth={40}
|
yAxisWidth={40}
|
||||||
className="h-[400px]"
|
className="h-[400px]"
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export function EvaluationTimelineChart({ data }: EvaluationTimelineProps) {
|
|||||||
data={chartData}
|
data={chartData}
|
||||||
index="date"
|
index="date"
|
||||||
categories={['Cumulative', 'Daily']}
|
categories={['Cumulative', 'Daily']}
|
||||||
colors={['cyan', 'teal']}
|
colors={['indigo', 'amber']}
|
||||||
curveType="monotone"
|
curveType="monotone"
|
||||||
showGradient={true}
|
showGradient={true}
|
||||||
yAxisWidth={50}
|
yAxisWidth={50}
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ export function JurorConsistencyChart({ data }: JurorConsistencyProps) {
|
|||||||
y="Std Deviation"
|
y="Std Deviation"
|
||||||
category="category"
|
category="category"
|
||||||
size="size"
|
size="size"
|
||||||
colors={['cyan', 'rose']}
|
colors={['blue', 'rose']}
|
||||||
className="h-[400px]"
|
className="h-[400px]"
|
||||||
/>
|
/>
|
||||||
<p className="text-xs text-muted-foreground mt-2 text-center">
|
<p className="text-xs text-muted-foreground mt-2 text-center">
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export function JurorWorkloadChart({ data }: JurorWorkloadProps) {
|
|||||||
data={chartData}
|
data={chartData}
|
||||||
index="juror"
|
index="juror"
|
||||||
categories={['Completed', 'Remaining']}
|
categories={['Completed', 'Remaining']}
|
||||||
colors={['cyan', 'gray']}
|
colors={['blue', 'slate']}
|
||||||
layout="horizontal"
|
layout="horizontal"
|
||||||
stack={true}
|
stack={true}
|
||||||
yAxisWidth={160}
|
yAxisWidth={160}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ export function ProjectRankingsChart({
|
|||||||
data={chartData}
|
data={chartData}
|
||||||
index="project"
|
index="project"
|
||||||
categories={['Score']}
|
categories={['Score']}
|
||||||
colors={['teal']}
|
colors={['blue']}
|
||||||
layout="horizontal"
|
layout="horizontal"
|
||||||
yAxisWidth={200}
|
yAxisWidth={200}
|
||||||
maxValue={10}
|
maxValue={10}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export function ScoreDistributionChart({
|
|||||||
data={chartData}
|
data={chartData}
|
||||||
index="score"
|
index="score"
|
||||||
categories={['Count']}
|
categories={['Count']}
|
||||||
colors={['cyan']}
|
colors={['blue']}
|
||||||
yAxisWidth={40}
|
yAxisWidth={40}
|
||||||
showLegend={false}
|
showLegend={false}
|
||||||
className="h-[300px]"
|
className="h-[300px]"
|
||||||
|
|||||||
Reference in New Issue
Block a user