From dcd1060ec776f05236f93f1a06b4a8a8c67ab700 Mon Sep 17 00:00:00 2001 From: zenn Date: Fri, 22 May 2026 17:05:34 +0900 Subject: [PATCH] =?UTF-8?q?v1.4.6:=20=EC=82=AC=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=A0=80?= =?UTF-8?q?=EC=9E=A5=20=ED=9D=90=EB=A6=84=C2=B7=ED=99=88=20=EC=BB=A4?= =?UTF-8?q?=EB=B2=84=20=EB=9D=BC=EC=9D=B4=ED=8A=B8/=EB=8B=A4=ED=81=AC=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 로고 업로드는 파일 URL만 폼에 반영하고 기타 설정 저장 시 DB에 반영 - 메인 화면 커버 라이트·다크 이미지 필드 추가 및 테마별 HomeHero 교체 - home_cover_dark_image_url 마이그레이션 및 미디어 사용 현황 보정 --- components/site/HomeHero.vue | 57 +++++- components/site/RightSidebar.vue | 2 +- ...33_site_settings_home_cover_dark_image.sql | 2 + docs/changelog.md | 5 + docs/history.md | 4 + docs/map.md | 10 +- docs/spec.md | 19 +- docs/update.md | 7 + pages/admin/settings/index.vue | 184 +++++++++++++----- pages/index.vue | 3 +- server/repositories/content-repository.js | 4 + server/routes/admin/api/settings/logo.post.js | 7 +- server/utils/admin-site-settings-input.js | 1 + server/utils/media-library.js | 28 +++ server/utils/site-settings.js | 1 + 15 files changed, 260 insertions(+), 74 deletions(-) create mode 100644 db/migrations/033_site_settings_home_cover_dark_image.sql diff --git a/components/site/HomeHero.vue b/components/site/HomeHero.vue index d4d7636..888ae7c 100644 --- a/components/site/HomeHero.vue +++ b/components/site/HomeHero.vue @@ -5,6 +5,11 @@ const props = defineProps({ type: String, default: '' }, + /** 다크모드 커버 이미지 URL */ + darkImageUrl: { + type: String, + default: '' + }, /** 오버레이 제목 */ title: { type: String, @@ -19,18 +24,32 @@ const props = defineProps({ /** @type {import('vue').ComputedRef} */ const hasOverlay = computed(() => Boolean(props.title?.trim() || props.text?.trim())) +/** @type {import('vue').ComputedRef} */ +const lightImageUrl = computed(() => props.imageUrl?.trim() || props.darkImageUrl?.trim() || '') +/** @type {import('vue').ComputedRef} */ +const hasDarkImage = computed(() => Boolean(props.imageUrl?.trim() && props.darkImageUrl?.trim())) + + diff --git a/components/site/RightSidebar.vue b/components/site/RightSidebar.vue index 2219e36..bf1d967 100644 --- a/components/site/RightSidebar.vue +++ b/components/site/RightSidebar.vue @@ -56,7 +56,7 @@ const showAboutSection = false