diff --git a/.env.example b/.env.example index f6c0f46..d67311f 100644 --- a/.env.example +++ b/.env.example @@ -3,7 +3,7 @@ VITE_APP_TITLE=Генератор QR-кодов # Плашка внизу: бренд, слоган и ссылка VITE_BANNER_BRAND=iQR -VITE_BANNER_SLOGAN=— qr-код без излишеств +VITE_BANNER_SLOGAN=qr-код без излишеств VITE_BANNER_URL=https://github.com/IliaMiheev/iQR # Акцентный цвет (hex, rgb или css-имя) diff --git a/docker-compose.yml b/docker-compose.yml index 076f053..a067643 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,8 +8,8 @@ services: environment: APP_TITLE: "Генератор QR-кодов" BANNER_BRAND: "iQR" - BANNER_SLOGAN: "— qr-код без излишеств" - BANNER_URL: "https://github.com/IliaMiheev/iQR" + BANNER_SLOGAN: "qr-код без излишеств" + BANNER_URL: "https://git.imiheev.online/admin/iQR" ACCENT_COLOR: "#ff4500" DEFAULT_THEME: "dark" restart: unless-stopped diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 74a0c32..f307b7e 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,8 +2,8 @@ set -eu APP_TITLE="${APP_TITLE:-Генератор QR-кодов}" -BANNER_BRAND="${BANNER_BRAND:-iQR}" -BANNER_SLOGAN="${BANNER_SLOGAN:-— qr-код без излишеств}" +BANNER_BRAND="${BANNER_BRAND-iQR}" +BANNER_SLOGAN="${BANNER_SLOGAN-qr-код без излишеств}" BANNER_URL="${BANNER_URL:-https://github.com/IliaMiheev/iQR}" ACCENT_COLOR="${ACCENT_COLOR:-#ff4500}" DEFAULT_THEME="${DEFAULT_THEME:-dark}" @@ -24,7 +24,7 @@ printf ' ─────────────────────── printf ' iQR · готов к работе\n' printf ' ──────────────────────────────────────\n' printf ' Заголовок : %s\n' "$APP_TITLE" -printf ' Бренд : %s %s\n' "$BANNER_BRAND" "$BANNER_SLOGAN" +printf ' Бренд : %s %s\n' "$BANNER_BRAND" — "$BANNER_SLOGAN" printf ' Ссылка : %s\n' "$BANNER_URL" printf ' Акцент : %s\n' "$ACCENT_COLOR" printf ' Тема : %s\n' "$DEFAULT_THEME" diff --git a/src/App.vue b/src/App.vue index c573e57..1e4e6c4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -29,6 +29,12 @@ const statusClass = computed(() => errorColor.value === 'green' ? 'status--success' : 'status--error', ) +const showBanner = computed(() => { + const brand = String(config.bannerBrand ?? '').trim() + const slogan = String(config.bannerSlogan ?? '').trim() + return Boolean(brand && slogan) +}) + function onKeydown(event) { if (event.key === 'Escape' && showModal.value) { closeQrModal() @@ -118,6 +124,7 @@ onUnmounted(() => { { :title="config.bannerBrand" > {{ config.bannerBrand }} - {{ config.bannerSlogan }} + — {{ config.bannerSlogan }} diff --git a/src/config/defaults.js b/src/config/defaults.js index ed219c0..bd25708 100644 --- a/src/config/defaults.js +++ b/src/config/defaults.js @@ -1,7 +1,7 @@ export const defaultConfig = { title: 'Генератор QR-кодов', bannerBrand: 'iQR', - bannerSlogan: '— qr-код без излишеств', + bannerSlogan: 'qr-код без излишеств', bannerUrl: 'https://github.com/IliaMiheev/iQR', accentColor: '#ff4500', defaultTheme: 'dark', diff --git a/src/config/loadConfig.js b/src/config/loadConfig.js index 48a099a..077d838 100644 --- a/src/config/loadConfig.js +++ b/src/config/loadConfig.js @@ -3,14 +3,17 @@ import { defaultConfig, normalizeTheme } from './defaults' function fromBuildEnv() { const env = import.meta.env - return pickDefined({ + const config = pickDefined({ title: env.VITE_APP_TITLE, - bannerBrand: env.VITE_BANNER_BRAND, - bannerSlogan: env.VITE_BANNER_SLOGAN, bannerUrl: env.VITE_BANNER_URL, accentColor: env.VITE_ACCENT_COLOR, defaultTheme: env.VITE_DEFAULT_THEME, }) + + assignIfDefined(config, 'bannerBrand', env.VITE_BANNER_BRAND) + assignIfDefined(config, 'bannerSlogan', env.VITE_BANNER_SLOGAN) + + return config } function pickDefined(source) { @@ -19,6 +22,11 @@ function pickDefined(source) { ) } +function assignIfDefined(target, key, value) { + if (value === undefined) return + target[key] = value +} + export async function loadConfig() { let runtime = {} @@ -45,6 +53,8 @@ export async function loadConfig() { } } + config.bannerBrand = String(config.bannerBrand ?? '').trim() + config.bannerSlogan = String(config.bannerSlogan ?? '').trim() config.defaultTheme = normalizeTheme(config.defaultTheme) return config