97 lines
2.5 KiB
TypeScript
97 lines
2.5 KiB
TypeScript
import { createApp } from 'vue'
|
|
import { createPinia } from 'pinia'
|
|
import PrimeVue from 'primevue/config'
|
|
import Aura from '@primevue/themes/aura'
|
|
import { definePreset } from '@primevue/themes'
|
|
import ToastService from 'primevue/toastservice'
|
|
import 'primeicons/primeicons.css'
|
|
import './assets/theme.css'
|
|
|
|
import App from './App.vue'
|
|
import router from './router'
|
|
|
|
// Custom TradingView-matched dark theme
|
|
const TradingViewPreset = definePreset(Aura, {
|
|
primitive: {
|
|
// TV green palette built around #089981
|
|
tvgreen: {
|
|
50: '#e6f7f5',
|
|
100: '#b3e8e2',
|
|
200: '#80d9cf',
|
|
300: '#4dcabc',
|
|
400: '#26bfaf',
|
|
500: '#089981',
|
|
600: '#077d69',
|
|
700: '#056153',
|
|
800: '#03453d',
|
|
900: '#022926',
|
|
950: '#011614'
|
|
}
|
|
},
|
|
semantic: {
|
|
primary: {
|
|
50: '{tvgreen.50}',
|
|
100: '{tvgreen.100}',
|
|
200: '{tvgreen.200}',
|
|
300: '{tvgreen.300}',
|
|
400: '{tvgreen.400}',
|
|
500: '{tvgreen.500}',
|
|
600: '{tvgreen.600}',
|
|
700: '{tvgreen.700}',
|
|
800: '{tvgreen.800}',
|
|
900: '{tvgreen.900}',
|
|
950: '{tvgreen.950}'
|
|
},
|
|
colorScheme: {
|
|
dark: {
|
|
// Remap surface scale to TV neutrals.
|
|
// Aura uses surface.950 for deepest bg, surface.700 for borders,
|
|
// surface.900 for content bg, surface.0 for text.
|
|
surface: {
|
|
0: '#ffffff',
|
|
50: '#dbdbdb',
|
|
100: '#b8b8b8',
|
|
200: '#8a8a8a',
|
|
300: '#6d6d6d',
|
|
400: '#4d4d4d',
|
|
500: '#3d3d3d',
|
|
600: '#3d3d3d',
|
|
700: '#2e2e2e', // → content.border.color, splitter gutter
|
|
800: '#1c1c1c', // → hover backgrounds, splitter handle
|
|
900: '#141414', // → content.background, overlays
|
|
950: '#0f0f0f' // → form field backgrounds, deepest bg
|
|
},
|
|
primary: {
|
|
color: '#089981',
|
|
contrastColor: '#0f0f0f',
|
|
hoverColor: '#0aad95',
|
|
activeColor: '#0cc4a8'
|
|
},
|
|
text: {
|
|
color: '#dbdbdb',
|
|
hoverColor: '#dbdbdb',
|
|
mutedColor: '#8a8a8a',
|
|
hoverMutedColor:'#b8b8b8'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
const app = createApp(App)
|
|
|
|
app.use(createPinia())
|
|
app.use(router)
|
|
app.use(PrimeVue, {
|
|
theme: {
|
|
preset: TradingViewPreset,
|
|
options: {
|
|
darkModeSelector: '.dark',
|
|
cssLayer: false
|
|
}
|
|
}
|
|
})
|
|
app.use(ToastService) // for agent ui:notification commands
|
|
|
|
app.mount('#app')
|