-
Notifications
You must be signed in to change notification settings - Fork 12
/
App.vue
49 lines (45 loc) · 1.58 KB
/
App.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<script setup>
import Heading from "@/components/Heading.vue";
import Container from "./components/Container.vue";
import { library } from '@fortawesome/fontawesome-svg-core'
import { faCircle, faArrowsLeftRight, faTrash, faDownload } from "@fortawesome/free-solid-svg-icons";
import { onBeforeMount, provide, ref } from "vue";
library.add(faCircle, faArrowsLeftRight, faTrash, faDownload);
const astroid_config = JSON.parse(document.getElementById("astroid-script-options").innerHTML);
const theme = ref('light');
provide('theme', theme);
onBeforeMount(()=>{
const colorMode = getCookie('astroid_colormode');
if (colorMode) {
theme.value = colorMode;
}
})
function updateColorMode(value) {
theme.value = value;
document.getElementById("astroid-html").setAttribute("data-bs-theme", value);
setCookie('astroid_colormode', value, 3)
}
const setCookie = function (name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
const getCookie = function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
</script>
<template>
<Heading :config="astroid_config" @update:ColorMode="updateColorMode" />
<Container :config="astroid_config" />
</template>