forked from Mirrors/elk
feat(settings): show default font size
This commit is contained in:
parent
40481c91e8
commit
55236dac98
6 changed files with 10 additions and 6 deletions
|
@ -1,4 +1,5 @@
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { DEFAULT_FONT_SIZE } from '~/constants'
|
||||||
import type { FontSize } from '~/types'
|
import type { FontSize } from '~/types'
|
||||||
|
|
||||||
const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as FontSize[]
|
const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as FontSize[]
|
||||||
|
@ -8,7 +9,7 @@ const fontSize = useFontSizeRef()
|
||||||
<template>
|
<template>
|
||||||
<select v-model="fontSize">
|
<select v-model="fontSize">
|
||||||
<option v-for="size in sizes" :key="size" :value="size" :selected="fontSize === size">
|
<option v-for="size in sizes" :key="size" :value="size" :selected="fontSize === size">
|
||||||
{{ size }}
|
{{ `${size}${size === DEFAULT_FONT_SIZE ? $t('settings.interface.default') : ''}` }}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -2,6 +2,7 @@ export const APP_NAME = 'Elk'
|
||||||
|
|
||||||
export const DEFAULT_POST_CHARS_LIMIT = 500
|
export const DEFAULT_POST_CHARS_LIMIT = 500
|
||||||
export const DEFAULT_SERVER = 'mas.to'
|
export const DEFAULT_SERVER = 'mas.to'
|
||||||
|
export const DEFAULT_FONT_SIZE = 'md'
|
||||||
|
|
||||||
export const STORAGE_KEY_DRAFTS = 'elk-drafts'
|
export const STORAGE_KEY_DRAFTS = 'elk-drafts'
|
||||||
export const STORAGE_KEY_USERS = 'elk-users'
|
export const STORAGE_KEY_USERS = 'elk-users'
|
||||||
|
|
|
@ -226,6 +226,7 @@
|
||||||
"interface": {
|
"interface": {
|
||||||
"color_mode": "Color Mode",
|
"color_mode": "Color Mode",
|
||||||
"dark_mode": "Dark Mode",
|
"dark_mode": "Dark Mode",
|
||||||
|
"default": " (default)",
|
||||||
"font_size": "Font Size",
|
"font_size": "Font Size",
|
||||||
"label": "Interface",
|
"label": "Interface",
|
||||||
"light_mode": "Light Mode"
|
"light_mode": "Light Mode"
|
||||||
|
|
|
@ -226,6 +226,7 @@
|
||||||
"interface": {
|
"interface": {
|
||||||
"color_mode": "Color Mode",
|
"color_mode": "Color Mode",
|
||||||
"dark_mode": "Dark Mode",
|
"dark_mode": "Dark Mode",
|
||||||
|
"default": " (default)",
|
||||||
"font_size": "Font Size",
|
"font_size": "Font Size",
|
||||||
"label": "Interface",
|
"label": "Interface",
|
||||||
"light_mode": "Light Mode"
|
"light_mode": "Light Mode"
|
||||||
|
|
|
@ -226,6 +226,7 @@
|
||||||
"interface": {
|
"interface": {
|
||||||
"color_mode": "颜色",
|
"color_mode": "颜色",
|
||||||
"dark_mode": "暗色模式",
|
"dark_mode": "暗色模式",
|
||||||
|
"default": "(默认)",
|
||||||
"font_size": "字号",
|
"font_size": "字号",
|
||||||
"label": "外观",
|
"label": "外观",
|
||||||
"light_mode": "亮色模式"
|
"light_mode": "亮色模式"
|
||||||
|
|
|
@ -1,23 +1,22 @@
|
||||||
import type { FontSize } from '~/types'
|
import type { FontSize } from '~/types'
|
||||||
import { InjectionKeyFontSize } from '~/constants/symbols'
|
import { InjectionKeyFontSize } from '~/constants/symbols'
|
||||||
import { COOKIE_KEY_FONT_SIZE, COOKIE_MAX_AGE } from '~/constants'
|
import { COOKIE_KEY_FONT_SIZE, COOKIE_MAX_AGE, DEFAULT_FONT_SIZE } from '~/constants'
|
||||||
import { fontSizeMap } from '~/constants/options'
|
import { fontSizeMap } from '~/constants/options'
|
||||||
|
|
||||||
export default defineNuxtPlugin((nuxt) => {
|
export default defineNuxtPlugin((nuxt) => {
|
||||||
const DEFAULT = 'md'
|
const cookieFontSize = useCookie<FontSize>(COOKIE_KEY_FONT_SIZE, { default: () => DEFAULT_FONT_SIZE, maxAge: COOKIE_MAX_AGE })
|
||||||
const cookieFontSize = useCookie<FontSize>(COOKIE_KEY_FONT_SIZE, { default: () => DEFAULT, maxAge: COOKIE_MAX_AGE })
|
|
||||||
nuxt.vueApp.provide(InjectionKeyFontSize, cookieFontSize)
|
nuxt.vueApp.provide(InjectionKeyFontSize, cookieFontSize)
|
||||||
|
|
||||||
if (!process.server) {
|
if (!process.server) {
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
document.documentElement.style.setProperty('--font-size', fontSizeMap[cookieFontSize.value || DEFAULT])
|
document.documentElement.style.setProperty('--font-size', fontSizeMap[cookieFontSize.value || DEFAULT_FONT_SIZE])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
useHead({
|
useHead({
|
||||||
style: [
|
style: [
|
||||||
{
|
{
|
||||||
innerHTML: `:root { --font-size: ${fontSizeMap[cookieFontSize.value || DEFAULT]}; }`,
|
innerHTML: `:root { --font-size: ${fontSizeMap[cookieFontSize.value || DEFAULT_FONT_SIZE]}; }`,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue