Files
inneratb/frontend/components/AppFooter.vue
T
ttipo be6156c9d8 feat: 푸터 사업자 정보 갱신 및 회사 정보 상수 분리
- 푸터 상호/CEO/사업자번호/주소/이메일을 신규 정보로 교체, 저작권 문구 추가
- 회사 정보를 shared/constants/company.ts로 분리해 푸터와 JSON-LD에서 공통 사용
- 메인 페이지 Organization 구조화 데이터의 이메일·주소 갱신

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 22:11:34 +09:00

126 lines
2.9 KiB
Vue

<script setup lang="ts">
// 공통 푸터 — 모든 페이지에서 동일하게 사용
import { COMPANY } from '~/shared/constants/company'
</script>
<template>
<footer>
<div class="wrap">
<NuxtLink to="/" class="foot-logo" aria-label="이너탭 홈">
<img src="/images/img-itab.png" alt="innertab" >
</NuxtLink>
<div class="foot-company">
<p class="foot-name"><span class="dot" /> {{ COMPANY.legalNameEn }} ({{ COMPANY.legalName }})</p>
<p>CEO: {{ COMPANY.ceo }}</p>
<p>Business Registration No.: {{ COMPANY.businessRegNo }}</p>
<p>Address: {{ COMPANY.addressEn }}</p>
<!-- 이메일 라벨+주소를 한 묶음(nowrap)으로 두어, 줄바꿈은 라벨 앞에서만 일어나도록 -->
<p><span class="foot-email">Email: <a :href="`mailto:${COMPANY.email}`">{{ COMPANY.email }}</a></span></p>
</div>
<div class="foot-divider" />
<div class="foot-bottom">
<NuxtLink to="/privacy" class="foot-policy">개인정보처리방침</NuxtLink>
<p class="foot-copy">© {{ COMPANY.copyrightYear }} {{ COMPANY.legalNameEn }} All rights reserved.</p>
</div>
</div>
</footer>
</template>
<style scoped>
footer {
border-top: 0.0625rem solid var(--line);
padding: clamp(3rem, 6vw, 4.75rem) 0 clamp(2.5rem, 5vw, 4rem); /* 48~76px / 40~64px */
}
.foot-logo {
display: inline-block;
}
.foot-logo img {
height: 1.875rem; /* 30px */
display: block;
}
.foot-company {
margin-top: 1.625rem; /* 26px */
}
.foot-company .foot-name {
font-size: 0.9375rem; /* 15px */
font-weight: 700;
color: var(--ink);
display: flex;
align-items: center;
gap: 0.4375rem; /* 7px */
}
.foot-company .foot-name .dot {
width: 0.5rem;
height: 0.5rem; /* 8px */
border-radius: 50%;
background: var(--brand);
}
.foot-company p {
font-size: 0.875rem; /* 14px */
color: var(--ink-soft);
line-height: 1.7;
}
/* 이메일 라벨+주소 — 한 줄로 묶어 라벨과 주소가 분리되지 않도록 */
.foot-company .foot-email {
white-space: nowrap;
}
.foot-company p a {
color: inherit;
text-decoration: none;
}
.foot-company p a:hover {
color: var(--brand);
text-decoration: underline;
}
.foot-company p + p {
margin-top: 0.5rem; /* 8px */
}
.foot-company .foot-name + p {
margin-top: 0.875rem; /* 14px */
}
.foot-divider {
height: 0.0625rem; /* 1px */
background: var(--line);
margin: clamp(1.75rem, 3.5vw, 2.75rem) 0 clamp(1.5rem, 3vw, 2.25rem);
}
.foot-bottom {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap; /* 모바일 폭에서 저작권 문구가 다음 줄로 내려가도록 */
gap: 0.75rem 1.25rem; /* 12px / 20px */
}
.foot-policy {
font-size: 0.875rem; /* 14px */
font-weight: 700;
color: var(--ink);
white-space: nowrap;
}
.foot-policy:hover {
color: var(--brand);
}
.foot-copy {
font-size: 0.8125rem; /* 13px */
color: var(--ink-soft);
}
</style>