mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2026-01-08 00:14:07 +08:00
Merge branch 'master' into patch-1
This commit is contained in:
commit
a424275958
13 changed files with 120 additions and 40 deletions
2
functions/package-lock.json
generated
2
functions/package-lock.json
generated
|
|
@ -2858,7 +2858,7 @@
|
|||
}
|
||||
},
|
||||
"websocket-extensions": {
|
||||
"version": "0.1.4",
|
||||
"version": ">=0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
|
||||
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
|
||||
},
|
||||
|
|
|
|||
2
package-lock.json
generated
2
package-lock.json
generated
|
|
@ -4232,7 +4232,7 @@
|
|||
}
|
||||
},
|
||||
"websocket-extensions": {
|
||||
"version": "0.1.3",
|
||||
"version": ">=0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
|
||||
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
|
||||
},
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<meta name="name" content="Monkey Type">
|
||||
<meta name="image" content="https://monkey-type.com/mtsocial_large.png">
|
||||
<meta name="description" content="A super customisable, minimalistic typing test.">
|
||||
<meta name="keywords" content="typing, test, typing-test, typing test, monkey-type, monkeytype, monkey, type, miodec, wpm">
|
||||
<meta name="keywords" content="typing, test, typing-test, typing test, monkey-type, monkeytype, monkey type, monkey-types, monkey types, types, monkey, type, miodec, wpm, words per minute, typing website, minimalistic, custom typing test, customizable, customisable, themes, random words, smooth caret, smooth, new, new typing site, new typing website">
|
||||
<meta name="author" content="Miodec">
|
||||
<meta property="og:title" content="Monkey Type">
|
||||
<meta property="og:url" content="https://monkey-type.com/">
|
||||
|
|
@ -44,8 +44,7 @@
|
|||
<div id="resultEditTagsPanelWrapper" class="hidden">
|
||||
<div id="resultEditTagsPanel" resultid="">
|
||||
<div class="buttons">
|
||||
<div class="button tag">asdf</div>
|
||||
<div class="button active tag">asdf</div>
|
||||
|
||||
</div>
|
||||
<div class="button confirmButton"><i class="fas fa-check"></i></div>
|
||||
</div>
|
||||
|
|
@ -714,17 +713,17 @@
|
|||
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
|
||||
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script> -->
|
||||
<script src="js/chart.js"></script>
|
||||
<script src="js/chartjs-plugin-trendline.js?v=19"></script>
|
||||
<script src="js/chartjs-plugin-trendline.js?v=20"></script>
|
||||
<script src="js/chartjs-plugin-annotation.js"></script>
|
||||
<script src="js/html2canvas.js"></script>
|
||||
<script src="js/words.js?v=19"></script>
|
||||
<script src="js/layouts.js?v=19"></script>
|
||||
<script src="js/db.js?v=19"></script>
|
||||
<script src="js/userconfig.js?v=19"></script>
|
||||
<script src="js/commandline.js?v=19"></script>
|
||||
<script src="js/settings.js?v=19"></script>
|
||||
<script src="js/account.js?v=19"></script>
|
||||
<script src="js/script.js?v=19"></script>
|
||||
<script src="js/words.js?v=20"></script>
|
||||
<script src="js/layouts.js?v=20"></script>
|
||||
<script src="js/db.js?v=20"></script>
|
||||
<script src="js/userconfig.js?v=20"></script>
|
||||
<script src="js/commandline.js?v=20"></script>
|
||||
<script src="js/settings.js?v=20"></script>
|
||||
<script src="js/account.js?v=20"></script>
|
||||
<script src="js/script.js?v=20"></script>
|
||||
|
||||
|
||||
</html>
|
||||
|
|
@ -886,12 +886,14 @@ function hideResultEditTagsPanel(){
|
|||
}
|
||||
|
||||
$(document).on('click','.pageAccount .group.history #resultEditTags',f => {
|
||||
let resultid = $(f.target).parents('span').attr('resultid');
|
||||
let tags = $(f.target).parents('span').attr('tags');
|
||||
$("#resultEditTagsPanel").attr('resultid',resultid);
|
||||
$("#resultEditTagsPanel").attr('tags',tags);
|
||||
updateActiveResultEditTagsPanelButtons(JSON.parse(tags));
|
||||
showResultEditTagsPanel();
|
||||
if(dbSnapshot.tags.length > 0){
|
||||
let resultid = $(f.target).parents('span').attr('resultid');
|
||||
let tags = $(f.target).parents('span').attr('tags');
|
||||
$("#resultEditTagsPanel").attr('resultid',resultid);
|
||||
$("#resultEditTagsPanel").attr('tags',tags);
|
||||
updateActiveResultEditTagsPanelButtons(JSON.parse(tags));
|
||||
showResultEditTagsPanel();
|
||||
}
|
||||
})
|
||||
|
||||
$(document).on('click','#resultEditTagsPanelWrapper .button.tag',f => {
|
||||
|
|
|
|||
|
|
@ -27,5 +27,12 @@ const layouts = {
|
|||
"aA","sS","hH","tT","gG","yY","nN","eE","oO","iI","'\"",
|
||||
"zZ","xX","mM","cC","vV","kK","lL",",<",".>","/?",
|
||||
" "
|
||||
],
|
||||
turkishf: [
|
||||
"*+","1!","2\"","3^","4$","5%","6&","7'","8(","9)","0=","/?","-_",
|
||||
"fF","gG","ğĞ","ıI","oO","dD","rR","nN","hH","pP","qQ","wW","xX",
|
||||
"uU","iİ","eE","aA","üÜ","tT","kK","mM","lL","yY","şŞ",
|
||||
"jJ","öÖ","vV","cC","çÇ","zZ","sS","bB",".:",",;",
|
||||
" "
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,28 @@ const editTag = firebase.functions().httpsCallable('editTag');
|
|||
const removeTag = firebase.functions().httpsCallable('removeTag');
|
||||
const updateResultTags = firebase.functions().httpsCallable('updateResultTags');
|
||||
|
||||
function smooth(arr, windowSize, getter = (value) => value, setter) {
|
||||
const get = getter
|
||||
const result = []
|
||||
|
||||
for (let i = 0; i < arr.length; i += 1) {
|
||||
const leftOffeset = i - windowSize
|
||||
const from = leftOffeset >= 0 ? leftOffeset : 0
|
||||
const to = i + windowSize + 1
|
||||
|
||||
let count = 0
|
||||
let sum = 0
|
||||
for (let j = from; j < to && j < arr.length; j += 1) {
|
||||
sum += get(arr[j])
|
||||
count += 1
|
||||
}
|
||||
|
||||
result[i] = setter ? setter(arr[i], sum / count) : sum / count
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
function showNotification(text, time) {
|
||||
let noti = $(".notification");
|
||||
noti.text(text);
|
||||
|
|
@ -675,7 +697,7 @@ function showResult(difficultyFailed = false) {
|
|||
let testtime = roundedToFixed(stats.time,1);
|
||||
$("#result .stats .wpm .bottom").text(Math.round(stats.wpm));
|
||||
$("#result .stats .raw .bottom").text(Math.round(stats.wpmRaw));
|
||||
$("#result .stats .acc .bottom").text(Math.round(stats.acc) + "%");
|
||||
$("#result .stats .acc .bottom").text(Math.floor(stats.acc) + "%");
|
||||
$("#result .stats .key .bottom").text(stats.correctChars + stats.spaces + "/" + stats.incorrectChars);
|
||||
$("#result .stats .time .bottom").text(testtime+'s');
|
||||
|
||||
|
|
@ -700,8 +722,7 @@ function showResult(difficultyFailed = false) {
|
|||
// $("#result .stats .time").removeClass('hidden');
|
||||
// $("#result .stats .time .bottom").text(roundedToFixed(stats.time,1)+'s');
|
||||
}
|
||||
|
||||
let pbVal = 0;
|
||||
|
||||
|
||||
if (firebase.auth().currentUser != null) {
|
||||
$("#result .loginTip").addClass('hidden');
|
||||
|
|
@ -773,6 +794,9 @@ function showResult(difficultyFailed = false) {
|
|||
}
|
||||
localPb = true;
|
||||
}
|
||||
wpmOverTimeChart.options.annotation.annotations[0].value = d2;
|
||||
wpmOverTimeChart.options.annotation.annotations[0].label.content = "PB: "+ d2;
|
||||
wpmOverTimeChart.update();
|
||||
})
|
||||
})
|
||||
|
||||
|
|
@ -791,7 +815,7 @@ function showResult(difficultyFailed = false) {
|
|||
if(e.data === 2){
|
||||
//new pb
|
||||
if(!localPb){
|
||||
showNotification('Local PB data is out of sync! Refresh the page to resync it or contact Miodec on Discord.',15000);
|
||||
showNotification('Local PB data is out of sync! Resyncing.',5000);
|
||||
}
|
||||
db_saveLocalPB(config.mode,mode2,config.punctuation,config.language,config.difficulty,stats.wpm);
|
||||
}else{
|
||||
|
|
@ -911,10 +935,15 @@ function showResult(difficultyFailed = false) {
|
|||
|
||||
wpmOverTimeChart.data.labels = labels;
|
||||
|
||||
let rawWpmPerSecond = keypressPerSecond.map(f => Math.round((f/5)*60));
|
||||
|
||||
rawWpmPerSecond = smooth(rawWpmPerSecond,1);
|
||||
|
||||
|
||||
wpmOverTimeChart.data.datasets[0].borderColor = mainColor;
|
||||
wpmOverTimeChart.data.datasets[0].data = wpmHistory;
|
||||
wpmOverTimeChart.data.datasets[1].borderColor = subColor;
|
||||
wpmOverTimeChart.data.datasets[1].data = rawHistory;
|
||||
wpmOverTimeChart.data.datasets[1].data = rawWpmPerSecond;
|
||||
|
||||
wpmOverTimeChart.options.annotation.annotations[0].borderColor = subColor;
|
||||
wpmOverTimeChart.options.annotation.annotations[0].label.backgroundColor = subColor;
|
||||
|
|
@ -922,12 +951,15 @@ function showResult(difficultyFailed = false) {
|
|||
|
||||
|
||||
|
||||
let maxVal = 0;
|
||||
rawHistory.forEach(raw =>{
|
||||
if(raw >= maxVal){
|
||||
maxVal = raw;
|
||||
}
|
||||
})
|
||||
// let maxVal = 0;
|
||||
// rawWpmPerSecond.forEach(raw =>{
|
||||
// if(raw >= maxVal){
|
||||
// maxVal = raw;
|
||||
// }
|
||||
// })
|
||||
|
||||
let maxVal = Math.max(...[Math.max(...rawWpmPerSecond),Math.max(...wpmHistory)]);
|
||||
|
||||
wpmOverTimeChart.options.scales.yAxes[0].ticks.max = maxVal;
|
||||
wpmOverTimeChart.options.scales.yAxes[1].ticks.max = maxVal;
|
||||
|
||||
|
|
@ -1052,7 +1084,7 @@ function restartTest(withSameWordset = false) {
|
|||
clearIntervals();
|
||||
$("#restartTestButton").css('opacity', 1);
|
||||
if ($("#commandLineWrapper").hasClass('hidden')) focusWords();
|
||||
wpmOverTimeChart.options.annotation.annotations[0].value = "-20";
|
||||
wpmOverTimeChart.options.annotation.annotations[0].value = "-30";
|
||||
wpmOverTimeChart.update();
|
||||
|
||||
|
||||
|
|
@ -1486,6 +1518,7 @@ function tagsEdit(){
|
|||
name: inputVal,
|
||||
id: e.data.id
|
||||
})
|
||||
updateResultEditTagsPanelButtons();
|
||||
updateSettingsPage();
|
||||
updateFilterTags();
|
||||
}else if(status === -1){
|
||||
|
|
@ -1506,6 +1539,7 @@ function tagsEdit(){
|
|||
tag.name = inputVal;
|
||||
}
|
||||
})
|
||||
updateResultEditTagsPanelButtons();
|
||||
updateSettingsPage();
|
||||
updateFilterTags();
|
||||
}else if(status === -1){
|
||||
|
|
@ -1526,6 +1560,7 @@ function tagsEdit(){
|
|||
dbSnapshot.tags.splice(index, 1);
|
||||
}
|
||||
})
|
||||
updateResultEditTagsPanelButtons();
|
||||
updateSettingsPage();
|
||||
updateFilterTags();
|
||||
updateActiveTags();
|
||||
|
|
@ -1823,7 +1858,7 @@ $(document).keydown((event) => {
|
|||
}
|
||||
compareInput(currentWordIndex,currentInput,!config.blindMode);
|
||||
}
|
||||
currentKeypressCount++;
|
||||
// currentKeypressCount++;
|
||||
updateCaretPosition();
|
||||
}
|
||||
//space
|
||||
|
|
@ -1867,6 +1902,7 @@ $(document).keydown((event) => {
|
|||
currentWordIndex++;
|
||||
updateActiveElement();
|
||||
updateCaretPosition();
|
||||
currentKeypressCount++;
|
||||
} else {
|
||||
inputHistory.push(currentInput);
|
||||
highlightBadWord(currentWordIndex,!config.blindMode)
|
||||
|
|
@ -1887,6 +1923,7 @@ $(document).keydown((event) => {
|
|||
}
|
||||
updateActiveElement();
|
||||
updateCaretPosition();
|
||||
currentKeypressCount++;
|
||||
}
|
||||
if (config.mode === "words" || config.mode === "custom") {
|
||||
updateTimer();
|
||||
|
|
@ -2091,7 +2128,7 @@ let wpmOverTimeChart = new Chart(ctx, {
|
|||
type: 'line',
|
||||
mode: 'horizontal',
|
||||
scaleID: 'wpm',
|
||||
value: '-20',
|
||||
value: '-30',
|
||||
borderColor: 'red',
|
||||
borderWidth: 1,
|
||||
borderDash: [2,2],
|
||||
|
|
@ -2127,7 +2164,7 @@ let wpmOverTimeChart = new Chart(ctx, {
|
|||
// Text to display in label - default is null. Provide an array to display values on a new line
|
||||
content: "PB",
|
||||
|
||||
},
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,4 +14,5 @@ const words = {
|
|||
portuguese: ["nem","José","de","nova","local","nada","têm","as","dinheiro","qual","você","maior","dias","depois","mundo","por","especial","bem","onde","rio","plano","quando","são","grande","sempre","sistema","porque","dia","cerca","essa","mas","ano","às","dois","ter","sobre","esporte","muito","sem","equipe","me","no","eles","podem","nacional","vai","quatro","seja","esta","sul","pelos","todos","será","há","a","mil","além","hoje","só","qualquer","ontem","em","estava","os","sendo","um","brasileira","pode","mesmo","tempo","preços","exemplo","apenas","vida","país","cada","diz","real","assim","ela","segundo","da","com","faz","suas","também","do","forma","já","grupo","disse","cotidiano","antes","era","milhões","eu","folha","Fernando","melhor","estado","e","todo","isso","dos","ao","Carlos","programa","três","estão","foram","alguns","parte","fazer","presidente","trabalho","final","nos","para","Paulo","cidade","partir","mais","número","outro","à","candidato","está","ele","processo","novo","na","contra","como","polícia","entre","casa","vez","empresa","pouco","afirmou","jogo","durante","após","aos","desde","empresas","foi","banco","quem","página","anos","duas","não","pela","sua","ser","é","pelo","o","esse","mês","Brasil","deve","ainda","pessoas","primeiro","caso","agora","outra","outros","semana","se","até","primeira","tinha","uma","po","este","governo","editoria","mercado","que","lei","tem","menos","seus","acordo","ou","seu","das","reportagem","tudo"],
|
||||
bahasa: ["adalah","akan","aku","anak","anda","apa","atau","ayah","baca","bagaimana","bagian","bahkan","bahwa","baik","bapak","beberapa","belajar","berarti","berbeda","bermain","besar","bicara","bisa","cahaya","cara","cari","dan","dari","dengan","di","dia","dimana","dua","hati","hidup","ibu","ingin","ini","itu","jika","kalimat","kami","kanan","kapan","kata","kecil","kembali","kerja","kiri","kita","kota","kurang","lebih","melakukan","melalui","membaca","membuat","memiliki","menjadi","menulis","mereka","milik","muda","naik","nama","oleh","orang","pada","pergi","pohon","pria","rendah","rumah","sangat","satu","saya","sebab","sebagai","sebelum","sebuah","sekolah","setelah","setiap","siapa","suara","taman","tanaman","tapi","tempat","tetapi","tidak","tiga","tinggi","tua","turun","udara","untuk","waktu","wanita","yang"],
|
||||
turkish: ["bir", "ve", "olmak", "bu", "için", "o", "ben", "demek", "çok", "yapmak", "ne", "gibi", "daha", "almak", "var", "kendi", "gelmek", "ile", "vermek", "ama", "sonra", "kadar", "yer", "en", "insan", "değil", "her", "istemek", "yıl", "çıkmak", "görmek", "gün", "biz", "gitmek", "iş", "şey", "ara", "ki", "bilmek", "el", "zaman", "ya", "çocuk", "iki", "bakmak", "çalışmak", "içinde", "büyük", "yok", "başlamak", "yol", "kalmak", "neden", "siz", "konu", "yapılmak", "iyi", "kadın", "ev", "ise", "diye", "bulunmak", "söylemek", "göz", "gerekmek", "dünya", "baş", "durum", "yan", "geçmek", "sen", "onlar", "yeni", "önce", "başka", "hâl", "orta", "su", "girmek", "ülke", "yemek", "hiç", "bile", "nasıl", "bütün", "karşı", "bulmak", "böyle", "yaşamak", "düşünmek", "aynı", "iç", "ancak", "kişi", "bunlar", "veya", "ilk", "göre", "ön", "son", "biri", "şekil", "önemli", "yüz", "hem", "göstermek", "etmek", "alt", "getirmek", "kullanmak", "çünkü", "taraf", "şimdi", "adam", "onun", "diğer", "artık", "üzerinde", "ses", "hep", "doğru", "durmak", "kız", "tüm", "çekmek", "konuşmak", "para", "anlamak", "anne", "az", "bazı", "baba", "hayat", "sadece", "küçük", "fazla", "bilgi", "an", "sormak", "bunun", "öyle", "yine", "sağlamak", "sonuç", "kullanılmak", "dış", "ad", "yani", "süre", "dönmek", "açmak", "oturmak", "anlatmak", "bırakmak", "hemen", "saat", "yaş", "sorun", "devlet", "sahip", "sıra", "yazmak", "yüzde", "ay", "atmak", "tutmak", "bunu", "olay", "düşmek", "duymak", "söz", "güzel", "sevmek", "biraz", "zor", "çıkarmak", "şu", "koymak", "tek", "sistem", "birlikte", "verilmek", "kim", "alınmak", "genç", "kapı", "kitap", "üzerine", "burada", "gece", "alan", "birbiri", "işte", "beklemek", "uzun", "hiçbir", "bugün", "dönem", "arkadaş", "ürün", "aile", "üç", "okumak", "erkek", "herkes", "güç", "belki", "gerçek", "tam", "ilgili", "ilişki", "çevre", "eski", "aramak", "yaşam", "halk", "yakın", "sokak", "bey", "tarih", "özellik", "bölüm", "özel", "akıl", "kimse", "pek", "eğer", "gerek", "özellikle", "anlam", "yüksek", "banka", "kez", "ayak", "taşımak", "geri", "toplum", "araç", "madde", "tür", "karar", "görülmek", "hava", "sayı", "farklı", "grup", "oda", "biçim", "oluşmak", "haber", "ayrıca", "gelen", "birkaç", "soru", "arka", "kazanmak", "yazı", "okul", "açık", "öğrenmek", "sürmek", "dil", "şirket", "kaynak", "bitmek", "program", "devam etmek", "hareket", "renk", "açılmak", "hak", "inanmak", "çalışma", "açı", "parça", "gazete", "oluşturmak", "tabi", "değer", "tanımak", "yapı", "doktor", "gelir", "görev", "amaç", "bölge", "film", "üzere", "müşteri", "zaten", "telefon", "eğitim", "deniz", "ikinci", "kalkmak", "hatta", "etki", "gelişmek", "geçen"]
|
||||
hungarian: ["lapát", "vödör", "fuss", "játék", "nap", "hold", "éjszaka", "reggel", "délután", "címke", "ugrás", "kosár", "kosárlabda", "eszik", "csokoládé", "palacsinta", "labda", "teniszlabda", "denevér", "fejlesztő", "busz", "pilóta", "desszert", "egér", "kutya", "macska", "ital", "villa", "kanál", "kés", "táska", "iskola", "ceruza", "szín", "ebéd", "reggeli", "vacsora", "falatozás", "pénztárca", "fürdőszoba", "mosogató", "kád", "zuhany", "kazán", "mosógép", "mosó", "szárítógép", "száraz", "lány", "fiú", "férfi", "női", "ők", "őket", "csinál", "bor", "víz", "kávé", "sör", "nehéz", "könnyű", "csúnya", "gyönyörű", "szép", "rossz", "jó", "nagy", "kicsi", "bocsánat", "szívesen", "köszönöm", "igen", "nem", "viszontlátásra", "viszlát", "szia", "szervusz", "káröröm", "ordít", "csendes", "hangos", "elmosolyodik", "bezzeg", "megcsörget", "ügyeskedő", "rosszarcú", "meghazudtol", "szöszmötöl"],
|
||||
};
|
||||
|
|
|
|||
2
public/robots.txt
Normal file
2
public/robots.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
User-agent: *
|
||||
Disallow:
|
||||
|
|
@ -51,8 +51,8 @@
|
|||
},
|
||||
{
|
||||
"name": "rgb",
|
||||
"bgColor": "#111",
|
||||
"textColor": "#eee"
|
||||
"bgColor": "linear-gradient(to left, indigo, blue, green, yellow, orange, red);",
|
||||
"textColor": "#fff"
|
||||
},
|
||||
{
|
||||
"name": "oblivion",
|
||||
|
|
@ -198,5 +198,15 @@
|
|||
"name": "matrix",
|
||||
"bgColor": "#000000",
|
||||
"textColor": "#15ff00"
|
||||
},
|
||||
{
|
||||
"name": "olive",
|
||||
"bgColor": "#e9e5cc",
|
||||
"textColor": "#92946f"
|
||||
},
|
||||
{
|
||||
"name": "strawberry",
|
||||
"bgColor": "#e53c58",
|
||||
"textColor": "#fcfcf8"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
--bg-color: #2d2e30;
|
||||
--main-color: #65d2cd;
|
||||
--caret-color: #65d2cd;
|
||||
--sub-color: #7e8389;
|
||||
--sub-color: #54585c;
|
||||
--text-color: #e3e6eb;
|
||||
--error-color: #d36a7b;
|
||||
--error-extra-color: #994154;
|
||||
|
|
|
|||
11
public/themes/olive.css
Normal file
11
public/themes/olive.css
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
:root {
|
||||
--bg-color: #e9e5cc;
|
||||
--caret-color: #92946f;
|
||||
--main-color: #92946f;
|
||||
--sub-color: #b7b39e;
|
||||
--text-color: #373731;
|
||||
--error-color: #cf2f2f;
|
||||
--error-extra-color: #a22929;
|
||||
--extra-error-color: #cf2f2f;
|
||||
--extra-error-extra-color: #a22929;
|
||||
}
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
--bg-color: #181818;
|
||||
--main-color: #17b8bd;
|
||||
--caret-color: #17b8bd;
|
||||
--sub-color: #484848;
|
||||
--sub-color: #53565a;
|
||||
--text-color: #e5f4f4;
|
||||
--error-color: #da3333;
|
||||
--error-extra-color: #791717;
|
||||
|
|
|
|||
11
public/themes/strawberry.css
Normal file
11
public/themes/strawberry.css
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
:root {
|
||||
--bg-color: #f37f83;
|
||||
--main-color: #fcfcf8;
|
||||
--caret-color: #fcfcf8;
|
||||
--sub-color: #e53c58;
|
||||
--text-color: #fcfcf8;
|
||||
--error-color: #fcd23f;
|
||||
--error-extra-color: #d7ae1e;
|
||||
--extra-error-color: #fcd23f;
|
||||
--extra-error-extra-color: #d7ae1e;
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue