| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- export type ControlPointStyleId = 'classic-ring' | 'solid-dot' | 'double-ring' | 'badge' | 'pulse-core'
- export type CourseLegStyleId = 'classic-leg' | 'dashed-leg' | 'glow-leg' | 'progress-leg'
- export interface ControlPointStyleEntry {
- style: ControlPointStyleId
- colorHex: string
- sizeScale?: number
- accentRingScale?: number
- glowStrength?: number
- labelScale?: number
- labelColorHex?: string
- }
- export interface CourseLegStyleEntry {
- style: CourseLegStyleId
- colorHex: string
- widthScale?: number
- glowStrength?: number
- }
- export interface ScoreBandStyleEntry extends ControlPointStyleEntry {
- min: number
- max: number
- }
- export interface SequentialCourseStyleConfig {
- controls: {
- default: ControlPointStyleEntry
- current: ControlPointStyleEntry
- completed: ControlPointStyleEntry
- skipped: ControlPointStyleEntry
- start: ControlPointStyleEntry
- finish: ControlPointStyleEntry
- }
- legs: {
- default: CourseLegStyleEntry
- completed: CourseLegStyleEntry
- }
- }
- export interface ScoreOCourseStyleConfig {
- controls: {
- default: ControlPointStyleEntry
- focused: ControlPointStyleEntry
- collected: ControlPointStyleEntry
- start: ControlPointStyleEntry
- finish: ControlPointStyleEntry
- scoreBands: ScoreBandStyleEntry[]
- }
- }
- export interface CourseStyleConfig {
- sequential: SequentialCourseStyleConfig
- scoreO: ScoreOCourseStyleConfig
- }
- export const DEFAULT_COURSE_STYLE_CONFIG: CourseStyleConfig = {
- sequential: {
- controls: {
- default: { style: 'classic-ring', colorHex: '#cc006b', sizeScale: 1, labelScale: 1 },
- current: { style: 'pulse-core', colorHex: '#38fff2', sizeScale: 1.08, accentRingScale: 1.28, glowStrength: 0.9, labelScale: 1.08, labelColorHex: '#fff4fb' },
- completed: { style: 'solid-dot', colorHex: '#7e838a', sizeScale: 0.88, labelScale: 0.96 },
- skipped: { style: 'badge', colorHex: '#8a9198', sizeScale: 0.9, accentRingScale: 1.12, labelScale: 0.94 },
- start: { style: 'double-ring', colorHex: '#cc006b', sizeScale: 1.04, accentRingScale: 1.3, labelScale: 1.02 },
- finish: { style: 'double-ring', colorHex: '#cc006b', sizeScale: 1.08, accentRingScale: 1.34, glowStrength: 0.32, labelScale: 1.06, labelColorHex: '#fff4de' },
- },
- legs: {
- default: { style: 'classic-leg', colorHex: '#cc006b', widthScale: 1 },
- completed: { style: 'progress-leg', colorHex: '#7a8088', widthScale: 0.92, glowStrength: 0.24 },
- },
- },
- scoreO: {
- controls: {
- default: { style: 'badge', colorHex: '#cc006b', sizeScale: 0.96, accentRingScale: 1.1, labelScale: 1.02, labelColorHex: '#ffffff' },
- focused: { style: 'badge', colorHex: '#cc006b', sizeScale: 1.1, accentRingScale: 1.34, glowStrength: 0.92, labelScale: 1.08, labelColorHex: '#ffffff' },
- collected: { style: 'badge', colorHex: '#9aa3ad', sizeScale: 0.86, accentRingScale: 1.08, labelScale: 0.94, labelColorHex: '#ffffff' },
- start: { style: 'double-ring', colorHex: '#cc006b', sizeScale: 1.02, accentRingScale: 1.24, labelScale: 1.02 },
- finish: { style: 'double-ring', colorHex: '#cc006b', sizeScale: 1.06, accentRingScale: 1.28, glowStrength: 0.26, labelScale: 1.04, labelColorHex: '#fff4de' },
- scoreBands: [
- { min: 0, max: 19, style: 'badge', colorHex: '#56ccf2', sizeScale: 0.96, accentRingScale: 1.1, labelScale: 1.02, labelColorHex: '#ffffff' },
- { min: 20, max: 49, style: 'badge', colorHex: '#f2c94c', sizeScale: 0.96, accentRingScale: 1.1, labelScale: 1.02, labelColorHex: '#ffffff' },
- { min: 50, max: 999999, style: 'badge', colorHex: '#eb5757', sizeScale: 0.96, accentRingScale: 1.1, glowStrength: 0.72, labelScale: 1.02, labelColorHex: '#ffffff' },
- ],
- },
- },
- }
|