From 61817bf4fcb0e4591c31b179b1bb2ac788eaccd3 Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 4 Aug 2026 13:04:24 +0200 Subject: [PATCH 1/3] feat(assets): add assets environment variables Added the environment variables VITE_ASSETS_BUILD_ID for the ID of the used build and VITE_ASSETS_BASE_URL for the base URL of the assets. A script for reading this configuration was also added. --- .env | 16 ++++++++++++++++ src/config/env.js | 22 ++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 .env create mode 100644 src/config/env.js diff --git a/.env b/.env new file mode 100644 index 0000000..64c9e46 --- /dev/null +++ b/.env @@ -0,0 +1,16 @@ +# Copyright 2026 Seekra + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +VITE_ASSETS_BUILD_ID=2026-08-04-76a067e +VITE_ASSETS_BASE_URL=https://assets.seekra.jcloud-services.ddns.net diff --git a/src/config/env.js b/src/config/env.js new file mode 100644 index 0000000..c8418f0 --- /dev/null +++ b/src/config/env.js @@ -0,0 +1,22 @@ +/* +Copyright 2026 Seekra + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +export const getAssetsUrl = function getAssetsUrl () { + return new URL( + `${import.meta.env.VITE_ASSETS_BUILD_ID}/`, + import.meta.env.VITE_ASSETS_BASE_URL + ).href; +}; From 5fdf0490b65ec97c4ad32c019672da639f078ceb Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 4 Aug 2026 14:27:30 +0200 Subject: [PATCH 2/3] feat(fonts): load all fonts specified in font configuration --- src/main.js | 20 ++++++++++++++++++++ src/styles/fonts.json | 1 + 2 files changed, 21 insertions(+) create mode 100644 src/styles/fonts.json diff --git a/src/main.js b/src/main.js index 5274388..90efd54 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +import { getAssetsUrl } from './config/env'; import { createApp } from 'vue' import { createPinia } from 'pinia'; import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'; @@ -25,10 +26,29 @@ import './styles/common.css' import './styles/variables/colors.css' import './styles/variables/dimensions.css'; +import rawFonts from './styles/fonts.json'; import './styles/common.css'; import './styles/variables/colors.css'; (async () => { + const fonts = rawFonts.map((font) => new FontFace( + font.family ?? '', + Array.isArray(font.source) + ? font.source.map( + (source) => `url('${source.url + ? new URL(source.url, getAssetsUrl()).href + : '' + }') format('${source.format ?? ''}')` + ).join(',') + : '', + { + weight: font.weight ?? undefined, + style: font.style ?? undefined + } + )); + await Promise.all(fonts.map((font) => font.load())); + fonts.forEach((font) => document.fonts.add(font)); + await loadLanguage(fallbackLocale); await loadLanguage(getCurrentLanguage()); diff --git a/src/styles/fonts.json b/src/styles/fonts.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/src/styles/fonts.json @@ -0,0 +1 @@ +[] From 26535cad4540129f991b53cb0f186a12e7e2f86a Mon Sep 17 00:00:00 2001 From: Jakob Scheid Date: Tue, 4 Aug 2026 15:22:48 +0200 Subject: [PATCH 3/3] feat(fonts): use Inter --- src/styles/common.css | 1 + src/styles/fonts.json | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/styles/common.css b/src/styles/common.css index 8083675..5c1fddd 100644 --- a/src/styles/common.css +++ b/src/styles/common.css @@ -19,6 +19,7 @@ body { color: var(--dark); margin: 0; font-size: 16px; + font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } .link { diff --git a/src/styles/fonts.json b/src/styles/fonts.json index fe51488..ec03111 100644 --- a/src/styles/fonts.json +++ b/src/styles/fonts.json @@ -1 +1,32 @@ -[] +[ + { + "family": "Inter", + "weight": "100 900", + "style": "normal", + "source": [ + { + "url": "fonts/Inter/Inter-Variable.woff2", + "format": "woff2" + }, + { + "url": "fonts/Inter/Inter-Variable.ttf", + "format": "truetype" + } + ] + }, + { + "family": "Inter", + "weight": "100 900", + "style": "italic", + "source": [ + { + "url": "fonts/Inter/Inter-Italic-Variable.woff2", + "format": "woff2" + }, + { + "url": "fonts/Inter/Inter-Italic-Variable.ttf", + "format": "truetype" + } + ] + } +]