This commit is contained in:
2026-10-07 13:05:01 +09:00
parent 6c7d3cc893
commit 677cb65881
248 changed files with 66226 additions and 30 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<div class="footer-info"> <div class="footer-info">
<h4 class="footer-brand">{{ siteName }}</h4> <h4 class="footer-brand">{{ siteName }}</h4>
<p class="footer-meta"> <p class="footer-meta">
전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 1588-0000<br /> 전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 010-5961-5807<br />
사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br /> 사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br />
주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층 주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층
</p> </p>
+1 -1
View File
@@ -110,7 +110,7 @@
<span v-if="loading">문의 전송 중...</span> <span v-if="loading">문의 전송 중...</span>
<span v-else>문의 보내기</span> <span v-else>문의 보내기</span>
</button> </button>
<a href="tel:1588-0000" class="btn-call"> <a href="tel:010-5961-5807" class="btn-call">
전화로 바로 상담 전화로 바로 상담
</a> </a>
</div> </div>
+1 -1
View File
@@ -22,7 +22,7 @@
</a> </a>
<div class="hero-call-info"> <div class="hero-call-info">
<span class="call-icon"></span> <span class="call-icon"></span>
<span class="call-text">실시간 학습상담 <strong>1588-0000</strong></span> <span class="call-text">실시간 학습상담 <strong>010-5961-5807</strong></span>
</div> </div>
</div> </div>
+2 -2
View File
@@ -3,10 +3,10 @@ version: '3.8'
services: services:
app: app:
build: . build: .
container_name: saesoledu_site2 container_name: aeseo_shop_frontend
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3012:3000" - "80:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- SITE_DOMAIN=https://aeseo.shop - SITE_DOMAIN=https://aeseo.shop
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0284c7"/>
<stop offset="100%" stop-color="#0369a1"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 1단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기초학습</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">개념 이해와 튼튼한 연산 기본기</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#059669"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 2단계</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부방법</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">스스로 이해하는 올바른 학습 원리</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#d97706"/>
<stop offset="100%" stop-color="#b45309"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 3단계</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">숙제검사</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 1:1 오답 점검과 꼼꼼한 피드백</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#7c3aed"/>
<stop offset="100%" stop-color="#6d28d9"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 4단계</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부습관</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 정해진 시간 몰입하는 자기주도력</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#e11d48"/>
<stop offset="100%" stop-color="#be123c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 5단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중등대비</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">중학교 내신 서술형과 심화 선행</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2563eb"/>
<stop offset="100%" stop-color="#1d4ed8"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">실전 시험 대비</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중간고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">학교별 기출 족보 및 서술형 킬러 대비</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+38
View File
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0d9488"/>
<stop offset="100%" stop-color="#0f766e"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">학기말 총정리</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기말고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">전 범위 오답 분석 및 약점 완벽 클리닉</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+42
View File
@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4f46e5"/>
<stop offset="100%" stop-color="#4338ca"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">수능·전국연합</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">모의고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">수능형 사고력 확장 및 시간관리 특훈</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ea580c"/>
<stop offset="100%" stop-color="#c2410c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">서술형·과제</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">수행평가 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">조건 감점 0점화 및 탐구보고서 세특</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#be123c"/>
<stop offset="100%" stop-color="#9f1239"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">1등급 집중공략</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">내신대비 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">관내 교과서·부교재 적중 1:1 맞춤 지도</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -13,5 +13,5 @@
<text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text> <text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text>
<text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text> <text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text>
<rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/> <rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/>
<text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 1588-0909</text> <text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 010-5961-5807</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

+1 -1
View File
@@ -4,7 +4,7 @@
<div class="footer-info"> <div class="footer-info">
<h4 class="footer-brand">{{ siteName }}</h4> <h4 class="footer-brand">{{ siteName }}</h4>
<p class="footer-meta"> <p class="footer-meta">
전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 1588-0000<br /> 전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 010-5961-5807<br />
사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br /> 사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br />
주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층 주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층
</p> </p>
+1 -1
View File
@@ -110,7 +110,7 @@
<span v-if="loading">문의 전송 중...</span> <span v-if="loading">문의 전송 중...</span>
<span v-else>문의 보내기</span> <span v-else>문의 보내기</span>
</button> </button>
<a href="tel:1588-0000" class="btn-call"> <a href="tel:010-5961-5807" class="btn-call">
전화로 바로 상담 전화로 바로 상담
</a> </a>
</div> </div>
+1 -1
View File
@@ -22,7 +22,7 @@
</a> </a>
<div class="hero-call-info"> <div class="hero-call-info">
<span class="call-icon"></span> <span class="call-icon"></span>
<span class="call-text">실시간 학습상담 <strong>1588-0000</strong></span> <span class="call-text">실시간 학습상담 <strong>010-5961-5807</strong></span>
</div> </div>
</div> </div>
+2 -2
View File
@@ -3,10 +3,10 @@ version: '3.8'
services: services:
app: app:
build: . build: .
container_name: technova_site3 container_name: aeseo_site_frontend
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3013:3000" - "80:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- SITE_DOMAIN=https://aeseo.site - SITE_DOMAIN=https://aeseo.site
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0284c7"/>
<stop offset="100%" stop-color="#0369a1"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 1단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기초학습</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">개념 이해와 튼튼한 연산 기본기</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#059669"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 2단계</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부방법</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">스스로 이해하는 올바른 학습 원리</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#d97706"/>
<stop offset="100%" stop-color="#b45309"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 3단계</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">숙제검사</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 1:1 오답 점검과 꼼꼼한 피드백</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#7c3aed"/>
<stop offset="100%" stop-color="#6d28d9"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 4단계</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부습관</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 정해진 시간 몰입하는 자기주도력</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#e11d48"/>
<stop offset="100%" stop-color="#be123c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 5단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중등대비</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">중학교 내신 서술형과 심화 선행</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2563eb"/>
<stop offset="100%" stop-color="#1d4ed8"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">실전 시험 대비</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중간고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">학교별 기출 족보 및 서술형 킬러 대비</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+38
View File
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0d9488"/>
<stop offset="100%" stop-color="#0f766e"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">학기말 총정리</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기말고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">전 범위 오답 분석 및 약점 완벽 클리닉</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+42
View File
@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4f46e5"/>
<stop offset="100%" stop-color="#4338ca"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">수능·전국연합</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">모의고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">수능형 사고력 확장 및 시간관리 특훈</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ea580c"/>
<stop offset="100%" stop-color="#c2410c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">서술형·과제</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">수행평가 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">조건 감점 0점화 및 탐구보고서 세특</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#be123c"/>
<stop offset="100%" stop-color="#9f1239"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">1등급 집중공략</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">내신대비 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">관내 교과서·부교재 적중 1:1 맞춤 지도</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -13,5 +13,5 @@
<text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text> <text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text>
<text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text> <text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text>
<rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/> <rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/>
<text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 1588-0909</text> <text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 010-5961-5807</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

+1 -1
View File
@@ -4,7 +4,7 @@
<div class="footer-info"> <div class="footer-info">
<h4 class="footer-brand">{{ siteName }}</h4> <h4 class="footer-brand">{{ siteName }}</h4>
<p class="footer-meta"> <p class="footer-meta">
전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 1588-0000<br /> 전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 010-5961-5807<br />
사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br /> 사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br />
주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층 주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층
</p> </p>
+1 -1
View File
@@ -110,7 +110,7 @@
<span v-if="loading">문의 전송 중...</span> <span v-if="loading">문의 전송 중...</span>
<span v-else>문의 보내기</span> <span v-else>문의 보내기</span>
</button> </button>
<a href="tel:1588-0000" class="btn-call"> <a href="tel:010-5961-5807" class="btn-call">
전화로 바로 상담 전화로 바로 상담
</a> </a>
</div> </div>
+1 -1
View File
@@ -22,7 +22,7 @@
</a> </a>
<div class="hero-call-info"> <div class="hero-call-info">
<span class="call-icon"></span> <span class="call-icon"></span>
<span class="call-text">실시간 학습상담 <strong>1588-0000</strong></span> <span class="call-text">실시간 학습상담 <strong>010-5961-5807</strong></span>
</div> </div>
</div> </div>
+2 -2
View File
@@ -3,10 +3,10 @@ version: '3.8'
services: services:
app: app:
build: . build: .
container_name: passfinder_site4 container_name: aeseo_store_frontend
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3014:3000" - "80:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- SITE_DOMAIN=https://aeseo.store - SITE_DOMAIN=https://aeseo.store
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0284c7"/>
<stop offset="100%" stop-color="#0369a1"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 1단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기초학습</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">개념 이해와 튼튼한 연산 기본기</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#059669"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 2단계</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부방법</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">스스로 이해하는 올바른 학습 원리</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#d97706"/>
<stop offset="100%" stop-color="#b45309"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 3단계</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">숙제검사</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 1:1 오답 점검과 꼼꼼한 피드백</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#7c3aed"/>
<stop offset="100%" stop-color="#6d28d9"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 4단계</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부습관</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 정해진 시간 몰입하는 자기주도력</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#e11d48"/>
<stop offset="100%" stop-color="#be123c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 5단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중등대비</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">중학교 내신 서술형과 심화 선행</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2563eb"/>
<stop offset="100%" stop-color="#1d4ed8"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">실전 시험 대비</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중간고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">학교별 기출 족보 및 서술형 킬러 대비</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+38
View File
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0d9488"/>
<stop offset="100%" stop-color="#0f766e"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">학기말 총정리</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기말고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">전 범위 오답 분석 및 약점 완벽 클리닉</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+42
View File
@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4f46e5"/>
<stop offset="100%" stop-color="#4338ca"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">수능·전국연합</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">모의고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">수능형 사고력 확장 및 시간관리 특훈</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ea580c"/>
<stop offset="100%" stop-color="#c2410c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">서술형·과제</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">수행평가 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">조건 감점 0점화 및 탐구보고서 세특</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#be123c"/>
<stop offset="100%" stop-color="#9f1239"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">1등급 집중공략</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">내신대비 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">관내 교과서·부교재 적중 1:1 맞춤 지도</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -13,5 +13,5 @@
<text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text> <text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text>
<text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text> <text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text>
<rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/> <rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/>
<text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 1588-0909</text> <text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 010-5961-5807</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

+1 -1
View File
@@ -4,7 +4,7 @@
<div class="footer-info"> <div class="footer-info">
<h4 class="footer-brand">{{ siteName }}</h4> <h4 class="footer-brand">{{ siteName }}</h4>
<p class="footer-meta"> <p class="footer-meta">
전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 1588-0000<br /> 전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 010-5961-5807<br />
사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br /> 사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br />
주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층 주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층
</p> </p>
+1 -1
View File
@@ -110,7 +110,7 @@
<span v-if="loading">문의 전송 중...</span> <span v-if="loading">문의 전송 중...</span>
<span v-else>문의 보내기</span> <span v-else>문의 보내기</span>
</button> </button>
<a href="tel:1588-0000" class="btn-call"> <a href="tel:010-5961-5807" class="btn-call">
전화로 바로 상담 전화로 바로 상담
</a> </a>
</div> </div>
+1 -1
View File
@@ -22,7 +22,7 @@
</a> </a>
<div class="hero-call-info"> <div class="hero-call-info">
<span class="call-icon"></span> <span class="call-icon"></span>
<span class="call-text">실시간 학습상담 <strong>1588-0000</strong></span> <span class="call-text">실시간 학습상담 <strong>010-5961-5807</strong></span>
</div> </div>
</div> </div>
+2 -2
View File
@@ -3,10 +3,10 @@ version: '3.8'
services: services:
app: app:
build: . build: .
container_name: classicuni_site5 container_name: soohyun_cloud_frontend
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3015:3000" - "80:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- SITE_DOMAIN=https://soohyun.cloud - SITE_DOMAIN=https://soohyun.cloud
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0284c7"/>
<stop offset="100%" stop-color="#0369a1"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 1단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기초학습</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">개념 이해와 튼튼한 연산 기본기</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#059669"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 2단계</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부방법</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">스스로 이해하는 올바른 학습 원리</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#d97706"/>
<stop offset="100%" stop-color="#b45309"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 3단계</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">숙제검사</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 1:1 오답 점검과 꼼꼼한 피드백</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#7c3aed"/>
<stop offset="100%" stop-color="#6d28d9"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 4단계</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부습관</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 정해진 시간 몰입하는 자기주도력</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#e11d48"/>
<stop offset="100%" stop-color="#be123c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 5단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중등대비</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">중학교 내신 서술형과 심화 선행</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2563eb"/>
<stop offset="100%" stop-color="#1d4ed8"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">실전 시험 대비</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중간고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">학교별 기출 족보 및 서술형 킬러 대비</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+38
View File
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0d9488"/>
<stop offset="100%" stop-color="#0f766e"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">학기말 총정리</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기말고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">전 범위 오답 분석 및 약점 완벽 클리닉</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+42
View File
@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4f46e5"/>
<stop offset="100%" stop-color="#4338ca"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">수능·전국연합</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">모의고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">수능형 사고력 확장 및 시간관리 특훈</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ea580c"/>
<stop offset="100%" stop-color="#c2410c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">서술형·과제</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">수행평가 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">조건 감점 0점화 및 탐구보고서 세특</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#be123c"/>
<stop offset="100%" stop-color="#9f1239"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">1등급 집중공략</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">내신대비 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">관내 교과서·부교재 적중 1:1 맞춤 지도</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -13,5 +13,5 @@
<text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text> <text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text>
<text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text> <text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text>
<rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/> <rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/>
<text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 1588-0909</text> <text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 010-5961-5807</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

+1 -1
View File
@@ -4,7 +4,7 @@
<div class="footer-info"> <div class="footer-info">
<h4 class="footer-brand">{{ siteName }}</h4> <h4 class="footer-brand">{{ siteName }}</h4>
<p class="footer-meta"> <p class="footer-meta">
전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 1588-0000<br /> 전국 초·중·고 1:1 맞춤 방문과외 및 실시간 화상코칭 서비스 | 대표번호: 010-5961-5807<br />
사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br /> 사업자등록번호: 123-45-67890 | 통신판매업신고: 제2026-서울강남-0123호 | 개인정보관리책임자: 교육연구소<br />
주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층 주소: 서울특별시 강남구 테헤란로 123 에듀빌딩 4층
</p> </p>
+1 -1
View File
@@ -110,7 +110,7 @@
<span v-if="loading">문의 전송 중...</span> <span v-if="loading">문의 전송 중...</span>
<span v-else>문의 보내기</span> <span v-else>문의 보내기</span>
</button> </button>
<a href="tel:1588-0000" class="btn-call"> <a href="tel:010-5961-5807" class="btn-call">
전화로 바로 상담 전화로 바로 상담
</a> </a>
</div> </div>
+1 -1
View File
@@ -22,7 +22,7 @@
</a> </a>
<div class="hero-call-info"> <div class="hero-call-info">
<span class="call-icon"></span> <span class="call-icon"></span>
<span class="call-text">실시간 학습상담 <strong>1588-0000</strong></span> <span class="call-text">실시간 학습상담 <strong>010-5961-5807</strong></span>
</div> </div>
</div> </div>
+2 -2
View File
@@ -3,10 +3,10 @@ version: '3.8'
services: services:
app: app:
build: . build: .
container_name: mindone_site6 container_name: soohyun_store_frontend
restart: unless-stopped restart: unless-stopped
ports: ports:
- "3016:3000" - "80:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- SITE_DOMAIN=https://soohyun.store - SITE_DOMAIN=https://soohyun.store
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0284c7"/>
<stop offset="100%" stop-color="#0369a1"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 1단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기초학습</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">개념 이해와 튼튼한 연산 기본기</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#059669"/>
<stop offset="100%" stop-color="#047857"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 2단계</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부방법</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">스스로 이해하는 올바른 학습 원리</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#d97706"/>
<stop offset="100%" stop-color="#b45309"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 3단계</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">숙제검사</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 1:1 오답 점검과 꼼꼼한 피드백</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#7c3aed"/>
<stop offset="100%" stop-color="#6d28d9"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 4단계</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">공부습관</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">매일 정해진 시간 몰입하는 자기주도력</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#e11d48"/>
<stop offset="100%" stop-color="#be123c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">초등 집중 5단계</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중등대비</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">중학교 내신 서술형과 심화 선행</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#2563eb"/>
<stop offset="100%" stop-color="#1d4ed8"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">실전 시험 대비</text>
<!-- 중앙 아이콘 -->
<g>
<circle cx="250" cy="240" r="60" fill="none" stroke="#ffffff" stroke-width="10"/>
<circle cx="250" cy="240" r="38" fill="none" stroke="#ffffff" stroke-width="8"/>
<circle cx="250" cy="240" r="16" fill="#ffffff"/>
<line x1="250" y1="165" x2="250" y2="185" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="250" y1="295" x2="250" y2="315" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="175" y1="240" x2="195" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<line x1="305" y1="240" x2="325" y2="240" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">중간고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">학교별 기출 족보 및 서술형 킬러 대비</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+38
View File
@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0d9488"/>
<stop offset="100%" stop-color="#0f766e"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">학기말 총정리</text>
<!-- 중앙 아이콘 -->
<g>
<rect x="185" y="180" width="130" height="130" rx="16" fill="none" stroke="#ffffff" stroke-width="10"/>
<path d="M215 245 L238 268 L285 215" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">기말고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">전 범위 오답 분석 및 약점 완벽 클리닉</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

+42
View File
@@ -0,0 +1,42 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#4f46e5"/>
<stop offset="100%" stop-color="#4338ca"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">수능·전국연합</text>
<!-- 중앙 아이콘 -->
<g>
<line x1="170" y1="310" x2="330" y2="310" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<rect x="190" y="245" width="26" height="65" rx="4" fill="#ffffff" opacity="0.6"/>
<rect x="237" y="215" width="26" height="95" rx="4" fill="#ffffff" opacity="0.8"/>
<rect x="284" y="175" width="26" height="135" rx="4" fill="#ffffff"/>
<path d="M195 230 L245 190 L295 155" fill="none" stroke="#fcd34d" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
<polygon points="295,145 310,158 290,165" fill="#fcd34d"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">모의고사 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">수능형 사고력 확장 및 시간관리 특훈</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,38 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#ea580c"/>
<stop offset="100%" stop-color="#c2410c"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">서술형·과제</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M170 200 C210 185 240 185 250 195 C260 185 290 185 330 200 L330 290 C290 275 260 275 250 285 C240 275 210 275 170 290 Z" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/>
<line x1="250" y1="195" x2="250" y2="285" stroke="#ffffff" stroke-width="10" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">수행평가 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">조건 감점 0점화 및 탐구보고서 세특</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500">
<defs>
<linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#be123c"/>
<stop offset="100%" stop-color="#9f1239"/>
</linearGradient>
<radialGradient id="glow" cx="50%" cy="30%" r="50%">
<stop offset="0%" stop-color="#ffffff" stop-opacity="0.25"/>
<stop offset="100%" stop-color="#ffffff" stop-opacity="0"/>
</radialGradient>
</defs>
<!-- 배경 -->
<rect width="500" height="500" rx="32" fill="url(#grad)"/>
<rect width="500" height="500" rx="32" fill="url(#glow)"/>
<!-- 장식 원형 패턴 -->
<circle cx="430" cy="80" r="100" fill="#ffffff" opacity="0.05"/>
<circle cx="70" cy="420" r="80" fill="#ffffff" opacity="0.04"/>
<!-- 상단 뱃지 -->
<rect x="50" y="45" width="140" height="38" rx="19" fill="#ffffff" opacity="0.2"/>
<text x="120" y="70" font-family="'Pretendard', sans-serif" font-size="16" font-weight="700" fill="#ffffff" text-anchor="middle" letter-spacing="-0.3">1등급 집중공략</text>
<!-- 중앙 아이콘 -->
<g>
<path d="M190 190 L310 190 L300 250 C290 280 270 290 250 290 C230 290 210 280 200 250 Z" fill="none" stroke="#ffffff" stroke-width="10" stroke-linejoin="round"/>
<line x1="250" y1="290" x2="250" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<line x1="215" y1="320" x2="285" y2="320" stroke="#ffffff" stroke-width="12" stroke-linecap="round"/>
<path d="M190 205 C170 205 160 220 160 235 C160 250 175 255 195 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
<path d="M310 205 C330 205 340 220 340 235 C340 250 325 255 305 255" fill="none" stroke="#ffffff" stroke-width="8" stroke-linecap="round"/>
</g>
<!-- 하단 텍스트 영역 -->
<text x="250" y="380" font-family="'Pretendard', sans-serif" font-size="34" font-weight="900" fill="#ffffff" text-anchor="middle" letter-spacing="-0.8">내신대비 수학과외</text>
<text x="250" y="420" font-family="'Pretendard', sans-serif" font-size="18" font-weight="600" fill="#ffffff" opacity="0.85" text-anchor="middle" letter-spacing="-0.5">관내 교과서·부교재 적중 1:1 맞춤 지도</text>
<!-- 하단 액션 텍스트 -->
<rect x="175" y="445" width="150" height="28" rx="14" fill="#ffffff" opacity="0.25"/>
<text x="250" y="464" font-family="'Pretendard', sans-serif" font-size="13" font-weight="700" fill="#ffffff" text-anchor="middle">1:1 맞춤 클리닉</text>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -1
View File
@@ -13,5 +13,5 @@
<text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text> <text x="80" y="420" font-family="'Pretendard', sans-serif" font-size="30" font-weight="500" fill="#e0e7ff">국어 · 영어 · 수학 · 과학 · 사회 · 수행평가 세특</text>
<text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text> <text x="80" y="480" font-family="'Pretendard', sans-serif" font-size="28" font-weight="700" fill="#ffffff">전국 568개 동 학교별 기출 족보 완벽 분석</text>
<rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/> <rect x="80" y="530" width="340" height="50" rx="25" fill="#10b981"/>
<text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 1588-0909</text> <text x="250" y="563" font-family="'Pretendard', sans-serif" font-size="24" font-weight="700" fill="#ffffff" text-anchor="middle">1회 무료 상담: 010-5961-5807</text>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

+6
View File
@@ -0,0 +1,6 @@
.nuxt
.output
node_modules
.git
.env
npm-debug.log
+1
View File
@@ -0,0 +1 @@
node_modules
+21
View File
@@ -0,0 +1,21 @@
const inlineConfig = {
"nuxt": {}
}
/** client **/
import { _replaceAppConfig } from '#app/config'
// Vite - webpack is handled directly in #app/config
if (import.meta.dev && !import.meta.nitro && import.meta.hot) {
import.meta.hot.accept((newModule) => {
if (newModule) {
_replaceAppConfig(newModule.default)
}
})
}
/** client-end **/
export default inlineConfig
+256
View File
@@ -0,0 +1,256 @@
import type { DefineComponent, SlotsType } from 'vue'
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
type HydrationStrategies = {
hydrateOnVisible?: IntersectionObserverInit | true
hydrateOnIdle?: number | true
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
hydrateOnMediaQuery?: string
hydrateAfter?: number
hydrateWhen?: boolean
hydrateNever?: true
}
type LazyComponent<T> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
export const AppFooter: typeof import("../components/AppFooter.vue")['default']
export const CoachingSystem: typeof import("../components/CoachingSystem.vue")['default']
export const ConsultForm: typeof import("../components/ConsultForm.vue")['default']
export const FaqAccordion: typeof import("../components/FaqAccordion.vue")['default']
export const HeroBanner: typeof import("../components/HeroBanner.vue")['default']
export const NearbySchools: typeof import("../components/NearbySchools.vue")['default']
export const ProcessGuide: typeof import("../components/ProcessGuide.vue")['default']
export const QuickMetrics: typeof import("../components/QuickMetrics.vue")['default']
export const SubjectMastery: typeof import("../components/SubjectMastery.vue")['default']
export const SuccessStories: typeof import("../components/SuccessStories.vue")['default']
export const TeacherVerification: typeof import("../components/TeacherVerification.vue")['default']
/**
* Displays the welcome screen used by new Nuxt projects.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-welcome
*/
export const NuxtWelcome: typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']
/**
* Renders the selected layout around pages or error content.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-layout
*/
export const NuxtLayout: typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
/**
* Catches client-side errors from its default slot and renders an error slot.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-error-boundary
*/
export const NuxtErrorBoundary: typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
/**
* Renders its default slot only on the client, with an optional server fallback.
*
* @see https://nuxt.com/docs/4.x/api/components/client-only
*/
export const ClientOnly: typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']
/**
* Renders its content only during development.
*
* @see https://nuxt.com/docs/4.x/api/components/dev-only
*/
export const DevOnly: typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']
export const ServerPlaceholder: typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']
/**
* A drop-in replacement for Vue Router's `<RouterLink>` and the HTML `<a>` element.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-link
*/
export const NuxtLink: typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']
/**
* Displays a progress bar during page navigation.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-loading-indicator
*/
export const NuxtLoadingIndicator: typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
/**
* Formats dates and times consistently across server and client using the user's locale.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-time
*/
export const NuxtTime: typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
/**
* Announces route changes to assistive technologies using the current page title.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-route-announcer
*/
export const NuxtRouteAnnouncer: typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
/**
* Announces dynamic content changes to assistive technologies.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-announcer
*/
export const NuxtAnnouncer: typeof import("../node_modules/nuxt/dist/app/components/nuxt-announcer")['default']
/**
* Renders an optimized image through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-img
*/
export const NuxtImg: typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']
/**
* Renders responsive optimized images through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-picture
*/
export const NuxtPicture: typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']
/**
* Renders the current page from the `pages/` directory.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-page
*/
export const NuxtPage: typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']
export const NoScript: typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']
export const Link: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']
export const Base: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']
export const Title: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']
export const Meta: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']
export const Style: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']
export const Head: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']
export const Html: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']
export const Body: typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']
/**
* Renders a non-interactive server component without shipping client-side JavaScript.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-island
*/
export const NuxtIsland: typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']
export const LazyAppFooter: LazyComponent<typeof import("../components/AppFooter.vue")['default']>
export const LazyCoachingSystem: LazyComponent<typeof import("../components/CoachingSystem.vue")['default']>
export const LazyConsultForm: LazyComponent<typeof import("../components/ConsultForm.vue")['default']>
export const LazyFaqAccordion: LazyComponent<typeof import("../components/FaqAccordion.vue")['default']>
export const LazyHeroBanner: LazyComponent<typeof import("../components/HeroBanner.vue")['default']>
export const LazyNearbySchools: LazyComponent<typeof import("../components/NearbySchools.vue")['default']>
export const LazyProcessGuide: LazyComponent<typeof import("../components/ProcessGuide.vue")['default']>
export const LazyQuickMetrics: LazyComponent<typeof import("../components/QuickMetrics.vue")['default']>
export const LazySubjectMastery: LazyComponent<typeof import("../components/SubjectMastery.vue")['default']>
export const LazySuccessStories: LazyComponent<typeof import("../components/SuccessStories.vue")['default']>
export const LazyTeacherVerification: LazyComponent<typeof import("../components/TeacherVerification.vue")['default']>
/**
* Lazy-loaded version of `<NuxtWelcome>`.
*
* Displays the welcome screen used by new Nuxt projects.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-welcome
*/
export const LazyNuxtWelcome: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
/**
* Lazy-loaded version of `<NuxtLayout>`.
*
* Renders the selected layout around pages or error content.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-layout
*/
export const LazyNuxtLayout: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
/**
* Lazy-loaded version of `<NuxtErrorBoundary>`.
*
* Catches client-side errors from its default slot and renders an error slot.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-error-boundary
*/
export const LazyNuxtErrorBoundary: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
/**
* Lazy-loaded version of `<ClientOnly>`.
*
* Renders its default slot only on the client, with an optional server fallback.
*
* @see https://nuxt.com/docs/4.x/api/components/client-only
*/
export const LazyClientOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/client-only")['default']>
/**
* Lazy-loaded version of `<DevOnly>`.
*
* Renders its content only during development.
*
* @see https://nuxt.com/docs/4.x/api/components/dev-only
*/
export const LazyDevOnly: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/dev-only")['default']>
export const LazyServerPlaceholder: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
/**
* Lazy-loaded version of `<NuxtLink>`.
*
* A drop-in replacement for Vue Router's `<RouterLink>` and the HTML `<a>` element.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-link
*/
export const LazyNuxtLink: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
/**
* Lazy-loaded version of `<NuxtLoadingIndicator>`.
*
* Displays a progress bar during page navigation.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-loading-indicator
*/
export const LazyNuxtLoadingIndicator: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
/**
* Lazy-loaded version of `<NuxtTime>`.
*
* Formats dates and times consistently across server and client using the user's locale.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-time
*/
export const LazyNuxtTime: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
/**
* Lazy-loaded version of `<NuxtRouteAnnouncer>`.
*
* Announces route changes to assistive technologies using the current page title.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-route-announcer
*/
export const LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
/**
* Lazy-loaded version of `<NuxtAnnouncer>`.
*
* Announces dynamic content changes to assistive technologies.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-announcer
*/
export const LazyNuxtAnnouncer: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-announcer")['default']>
/**
* Lazy-loaded version of `<NuxtImg>`.
*
* Renders an optimized image through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-img
*/
export const LazyNuxtImg: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']>
/**
* Lazy-loaded version of `<NuxtPicture>`.
*
* Renders responsive optimized images through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-picture
*/
export const LazyNuxtPicture: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']>
/**
* Lazy-loaded version of `<NuxtPage>`.
*
* Renders the current page from the `pages/` directory.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-page
*/
export const LazyNuxtPage: LazyComponent<typeof import("../node_modules/nuxt/dist/pages/runtime/page")['default']>
export const LazyNoScript: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
export const LazyLink: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Link']>
export const LazyBase: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Base']>
export const LazyTitle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Title']>
export const LazyMeta: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Meta']>
export const LazyStyle: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Style']>
export const LazyHead: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Head']>
export const LazyHtml: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Html']>
export const LazyBody: LazyComponent<typeof import("../node_modules/nuxt/dist/head/runtime/components")['Body']>
/**
* Lazy-loaded version of `<NuxtIsland>`.
*
* Renders a non-interactive server component without shipping client-side JavaScript.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-island
*/
export const LazyNuxtIsland: LazyComponent<typeof import("../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
export const componentNames: string[]
+1
View File
@@ -0,0 +1 @@
export declare const $fetch: import('nuxt/app').TypedFetch
+38
View File
@@ -0,0 +1,38 @@
export { useScriptTriggerConsent, useScriptEventPage, useScriptTriggerElement, useScript, useScriptGoogleAnalytics, useScriptPlausibleAnalytics, useScriptCrisp, useScriptClarity, useScriptCloudflareWebAnalytics, useScriptVercelAnalytics, useScriptPostHog, useScriptFathomAnalytics, useScriptMatomoAnalytics, useScriptMixpanelAnalytics, useScriptBingUet, useScriptGoogleTagManager, useScriptGoogleAdsense, useScriptGoogleRecaptcha, useScriptGoogleSignIn, useScriptSegment, useScriptMetaPixel, useScriptXPixel, useScriptTikTokPixel, useScriptIntercom, useScriptHotjar, useScriptStripe, useScriptLemonSqueezy, useScriptVimeoPlayer, useScriptYouTubePlayer, useScriptGoogleMaps, useScriptNpm, useScriptUmamiAnalytics, useScriptSnapchatPixel, useScriptRybbitAnalytics, useScriptDatabuddyAnalytics, useScriptRedditPixel, useScriptPayPal, useScriptGravatar, useScriptAhrefsAnalytics, useScriptLinkedInInsight, useScriptCalendly, useScriptUsercentrics, useScriptSpeedCurve } from '#app/composables/script-stubs';
export { isVue2, isVue3 } from 'vue-demi';
export { defineNuxtLink } from '#app/components/nuxt-link';
export { useNuxtApp, tryUseNuxtApp, defineNuxtPlugin, definePayloadPlugin, useRuntimeConfig, defineAppConfig } from '#app/nuxt';
export { useAppConfig, updateAppConfig } from '#app/config';
export { defineNuxtComponent } from '#app/composables/component';
export { useAsyncData, useLazyAsyncData, useNuxtData, refreshNuxtData, clearNuxtData, createUseAsyncData } from '#app/composables/asyncData';
export { useHydration } from '#app/composables/hydrate';
export { callOnce } from '#app/composables/once';
export { useState, clearNuxtState } from '#app/composables/state';
export { clearError, createError, isNuxtError, showError, useError } from '#app/composables/error';
export { useFetch, useLazyFetch, createUseFetch } from '#app/composables/fetch';
export { defineUseFetchAddon, defineUseAsyncDataAddon, UseFetchAddonOptions, UseAsyncDataAddonOptions } from '#app/composables/addons';
export { $fetch } from '#build/fetch';
export { useCookie, refreshCookie } from '#app/composables/cookie';
export { onPrehydrate, prerenderRoutes, useRequestHeader, useRequestHeaders, useResponseHeader, useRequestEvent, useRequestFetch, setResponseStatus } from '#app/composables/ssr';
export { onNuxtReady } from '#app/composables/ready';
export { preloadComponents, prefetchComponents, preloadRouteComponents } from '#app/composables/preload';
export { abortNavigation, addRouteMiddleware, defineNuxtRouteMiddleware, setPageLayout, navigateTo, useRoute, useRouter } from '#app/composables/router';
export { isPrerendered, loadPayload, preloadPayload, definePayloadReducer, definePayloadReviver } from '#app/composables/payload';
export { useLoadingIndicator } from '#app/composables/loading-indicator';
export { getAppManifest, getRouteRules } from '#app/composables/manifest';
export { reloadNuxtApp } from '#app/composables/chunk';
export { useRequestURL } from '#app/composables/url';
export { usePreviewMode } from '#app/composables/preview';
export { useLayout } from '#app/composables/layout';
export { useRouteAnnouncer } from '#app/composables/route-announcer';
export { useAnnouncer } from '#app/composables/announcer';
export { useRuntimeHook } from '#app/composables/runtime-hook';
export { useHead, useHeadSafe, useServerHeadSafe, useServerHead, useSeoMeta, useServerSeoMeta, injectHead } from '#app/composables/head';
export { onBeforeRouteLeave, onBeforeRouteUpdate, useLink } from 'vue-router';
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect, onWatcherCleanup, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, toValue, useModel, useAttrs, useCssModule, useSlots, useTransitionState, useId, useTemplateRef, useShadowRoot, useCssVars, Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, ShallowRef, VNode, WritableComputedRef } from 'vue';
export { requestIdleCallback, cancelIdleCallback } from '#app/compat/idle-callback';
export { setInterval } from '#app/compat/interval';
export { definePageMeta, PageMeta } from '#app/composables/pages';
export { defineLazyHydrationComponent } from '#app/composables/lazy-hydration';
export { SUBJECTS_MAP, GRADES_LIST, getRegionByDong, getShortSido, getShortRegionName, parseRouteSlug, getAllSubjectsList, getCurriculumBySubject, getPopularRegions, getTotalRegionsCount, RegionInfo, ParsedRouteParams } from '../utils/dataHelper';
export { generateSeoMeta } from '../utils/seoHelper';
+21
View File
@@ -0,0 +1,21 @@
/// <reference types="@nuxt/telemetry" />
/// <reference path="types/nitro-layouts.d.ts" />
/// <reference path="types/builder-env.d.ts" />
/// <reference path="types/plugins.d.ts" />
/// <reference path="types/build.d.ts" />
/// <reference path="types/app.config.d.ts" />
/// <reference path="types/runtime-config.d.ts" />
/// <reference types="nuxt/app" />
/// <reference path="../node_modules/@nuxt/nitro-server/dist/augments.d.mts" />
/// <reference path="types/layouts.d.ts" />
/// <reference types="vue-router" />
/// <reference path="types/middleware.d.ts" />
/// <reference path="types/nitro-middleware.d.ts" />
/// <reference path="types/components.d.ts" />
/// <reference path="imports.d.ts" />
/// <reference path="types/imports.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
/// <reference path="types/nitro-internal-api.d.ts" />
/// <reference path="types/nitro.d.ts" />
export {}
+12
View File
@@ -0,0 +1,12 @@
/// <reference types="@nuxt/telemetry" />
/// <reference path="types/nitro-layouts.d.ts" />
/// <reference path="types/modules.d.ts" />
/// <reference path="types/runtime-config.d.ts" />
/// <reference path="types/shared-app.config.d.ts" />
/// <reference types="nuxt" />
/// <reference path="../node_modules/@nuxt/vite-builder/dist/index.d.mts" />
/// <reference path="../node_modules/@nuxt/nitro-server/dist/augments.d.mts" />
/// <reference path="types/nitro-middleware.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
export {}
+7
View File
@@ -0,0 +1,7 @@
/// <reference path="../node_modules/@nuxt/nitro-server/dist/augments.d.mts" />
/// <reference path="types/runtime-config.d.ts" />
/// <reference path="types/shared-app.config.d.ts" />
/// <reference path="types/shared-imports.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
export {}
+17
View File
@@ -0,0 +1,17 @@
export interface NuxtCustomSchema {
}
export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined>
type _CustomAppConfig = CustomAppConfig
declare module '@nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}
declare module 'nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}
+3
View File
@@ -0,0 +1,3 @@
{
"id": "#"
}
+97
View File
@@ -0,0 +1,97 @@
// generated by fetchdts, strategy table+union, 4 routes
// (3 static, 0 dynamic, 1 wildcard)
import type { AnyHTTPMethod, Endpoint, HTTPMethod, TypedFetchErrorBody, TypedFetchMethods, TypedFetchRequestBody, TypedFetchRequestHeaders, TypedFetchRequestQuery, TypedFetchRequires, TypedFetchResponseBody, TypedFetchResponseHeaders, ValidFetchInput, WildcardParam } from 'nuxt/app'
import type { ServerRoutes } from '@nuxt/schema'
import type { Serialize } from 'nuxt/app'
import type { RequestBodyOf, RequestQueryOf } from '@nuxt/nitro-server/request-types'
type AugmentedServerRoutes = GeneratedServerRoutes & ServerRoutes
export interface GeneratedServerRoutes {
"/__nuxt_error": {
[Endpoint]: Record<HTTPMethod, {
"response": Serialize<Awaited<ReturnType<typeof import("../node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer").default>>>
"body": RequestBodyOf<typeof import("../node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer").default>
"query": RequestQueryOf<typeof import("../node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer").default>
}>
}
"/__nuxt_island": {
[WildcardParam]: {
[Endpoint]: Record<HTTPMethod, {
"response": Serialize<Awaited<ReturnType<typeof import("../#internal/nuxt/island-renderer").default>>>
"body": RequestBodyOf<typeof import("../#internal/nuxt/island-renderer").default>
"query": RequestQueryOf<typeof import("../#internal/nuxt/island-renderer").default>
}>
}
}
"/api": {
"/consult": {
[Endpoint]: {
"POST": {
"response": Serialize<Awaited<ReturnType<typeof import("../server/api/consult.post").default>>>
"body": RequestBodyOf<typeof import("../server/api/consult.post").default>
"query": RequestQueryOf<typeof import("../server/api/consult.post").default>
}
}
}
}
"/sitemap.xml": {
[Endpoint]: Record<HTTPMethod, {
"response": Serialize<Awaited<ReturnType<typeof import("../server/routes/sitemap.xml").default>>>
"body": RequestBodyOf<typeof import("../server/routes/sitemap.xml").default>
"query": RequestQueryOf<typeof import("../server/routes/sitemap.xml").default>
}>
}
}
/**
* Every path whose every segment is known, mapped to the endpoints registered on it.
*
* A fast path rather than the authority: a lookup that misses falls through to the tree, which
* costs nothing, since a path reached through a parameter has to walk either way.
*/
export interface Exact {
"/__nuxt_error": GeneratedServerRoutes["/__nuxt_error"][typeof Endpoint]
"/api/consult": GeneratedServerRoutes["/api"]["/consult"][typeof Endpoint]
"/sitemap.xml": GeneratedServerRoutes["/sitemap.xml"][typeof Endpoint]
}
export type Path =
| "/__nuxt_error"
| `/__nuxt_island/${string}${string}`
| "/__nuxt_island"
| "/api/consult"
| "/sitemap.xml"
/**
* Whether a path resolves, for use in parameter position: `input: T & ValidInput<T, M>`.
*
* Does not consult `Exact`: a lookup where the path is still a type parameter relates a `keyof`
* of every static path once per program, so the table stays where the path is resolved.
*/
export type ValidInput<Path_, Method extends AnyHTTPMethod = 'GET'>
= ValidFetchInput<AugmentedServerRoutes, Path_, Method>
export type Response<Path_, Method extends AnyHTTPMethod = 'GET'>
= Path_ extends keyof Exact
? Uppercase<Method> extends keyof Exact[Path_]
? 'response' extends keyof Exact[Path_][Uppercase<Method>]
? Exact[Path_][Uppercase<Method>]['response']
: unknown
: TypedFetchResponseBody<AugmentedServerRoutes, Path_, Method>
: TypedFetchResponseBody<AugmentedServerRoutes, Path_, Method>
export type Methods<Path_> = TypedFetchMethods<AugmentedServerRoutes, Path_>
export type ResponseHeaders<Path_, Method extends AnyHTTPMethod = 'GET'> = TypedFetchResponseHeaders<AugmentedServerRoutes, Path_, Method>
export type ErrorBody<Path_, Method extends AnyHTTPMethod = 'GET'> = TypedFetchErrorBody<AugmentedServerRoutes, Path_, Method>
export type RequestBody<Path_, Method extends AnyHTTPMethod = 'GET', Fallback = BodyInit | null> = TypedFetchRequestBody<AugmentedServerRoutes, Path_, Method, Fallback>
export type RequestQuery<Path_, Method extends AnyHTTPMethod = 'GET', Fallback = Record<string, unknown>> = TypedFetchRequestQuery<AugmentedServerRoutes, Path_, Method, Fallback>
export type RequestHeaders<Path_, Method extends AnyHTTPMethod = 'GET', Fallback = HeadersInit> = TypedFetchRequestHeaders<AugmentedServerRoutes, Path_, Method, Fallback>
export type Requires<Path_, Method extends AnyHTTPMethod, Field extends 'body' | 'query' | 'headers'> = TypedFetchRequires<AugmentedServerRoutes, Path_, Method, Field>
export type StrictFetchPaths = false
export type RouteTypesEngine = 'internal-api'
+197
View File
@@ -0,0 +1,197 @@
{
"compilerOptions": {
"paths": {
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vite/client": [
"../node_modules/vite/client.d.ts"
],
"defu": [
"../node_modules/defu"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"~": [
".."
],
"~/*": [
"../*"
],
"@": [
".."
],
"@/*": [
"../*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/d92b9815-4046-4fa4-a372-b458b8301dfe.json"
],
"#components": [
"./components.d.ts"
],
"@nuxt/nitro-server/request-types": [
"../node_modules/@nuxt/nitro-server/dist/request-types.d.mts"
],
"nitropack/types": [
"../node_modules/nitropack/types.d.ts"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime.d.ts"
],
"nitropack": [
"../node_modules/nitropack"
],
"h3": [
"../node_modules/h3"
],
"crossws": [
"../node_modules/crossws"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"lib": [
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"libReplacement": false,
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.d.ts",
"../**/*",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../shared/**/*.d.ts",
"../modules/*/shared/**/*.d.ts",
"../layers/*/shared/**/*.d.ts",
"../*.d.ts",
"../layers/*/*.d.ts",
"../**/*.vue",
"../modules/*/runtime/**/*.vue",
"../test/nuxt/**/*.vue",
"../tests/nuxt/**/*.vue",
"../layers/*/app/**/*.vue",
"../layers/*/modules/*/runtime/**/*.vue"
],
"exclude": [
"../../node_modules",
"../dist",
"../.data",
"../server/**/*",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/*.*",
"../layers/*/modules/*/*.*",
"../node_modules/runtime/server",
"../node_modules/dist/runtime/server",
"../node_modules/*.*",
"../node_modules/dist/*.*",
"../.output",
"../server"
],
"vueCompilerOptions": {
"plugins": [
"vue-router/volar/sfc-route-blocks"
]
}
}
+207
View File
@@ -0,0 +1,207 @@
{
"compilerOptions": {
"paths": {
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vite/client": [
"../node_modules/vite/client.d.ts"
],
"defu": [
"../node_modules/defu"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"~": [
".."
],
"~/*": [
"../*"
],
"@": [
".."
],
"@/*": [
"../*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/d92b9815-4046-4fa4-a372-b458b8301dfe.json"
],
"#components": [
"./components.d.ts"
],
"@nuxt/nitro-server/request-types": [
"../node_modules/@nuxt/nitro-server/dist/request-types.d.mts"
],
"nitropack/types": [
"../node_modules/nitropack/types.d.ts"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime.d.ts"
],
"nitropack": [
"../node_modules/nitropack"
],
"h3": [
"../node_modules/h3"
],
"crossws": [
"../node_modules/crossws"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"lib": [
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"libReplacement": false,
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.d.ts",
"../**/*",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../shared/**/*.d.ts",
"../modules/*/shared/**/*.d.ts",
"../layers/*/shared/**/*.d.ts",
"../*.d.ts",
"../layers/*/*.d.ts",
"../**/*.vue",
"../modules/*/runtime/**/*.vue",
"../test/nuxt/**/*.vue",
"../tests/nuxt/**/*.vue",
"../layers/*/app/**/*.vue",
"../layers/*/modules/*/runtime/**/*.vue",
"./nuxt.node.d.ts",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/*.*",
"../layers/*/modules/*/*.*",
"../shared/**/*",
"../modules/*/shared/**/*",
"../layers/*/shared/**/*",
"../node_modules/runtime",
"../node_modules/dist/runtime",
"../shared/**/*.vue",
"../modules/*/shared/**/*.vue",
"../layers/*/shared/**/*.vue",
"../node_modules/runtime/**/*.vue",
"../node_modules/dist/runtime/**/*.vue"
],
"exclude": [
"../node_modules",
"../../node_modules",
"../node_modules/nuxt/node_modules",
"../node_modules/@nuxt/telemetry/node_modules",
"../dist",
"../.data",
"../server/**/*",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../node_modules/runtime/server",
"../node_modules/dist/runtime/server"
],
"vueCompilerOptions": {
"plugins": [
"vue-router/volar/sfc-route-blocks"
]
}
}
+106
View File
@@ -0,0 +1,106 @@
{
"compilerOptions": {
"paths": {
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools/dist/module.d.mts"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema/dist/index.d.mts"
],
"nuxt": [
"../node_modules/nuxt/types.d.mts"
],
"@unhead/vue": [
"../node_modules/@unhead/vue/dist/index.d.ts"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core/dist/runtime-core.d.ts"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts"
],
"vite/client": [
"../node_modules/vite/client.d.ts"
],
"defu": [
"../node_modules/defu/dist/defu.d.mts"
],
"consola": [
"../node_modules/consola/dist/browser.d.mts"
],
"ofetch": [
"../node_modules/ofetch/dist/index.d.mts"
],
"#app/types": [
"../node_modules/nuxt/dist/app/types.d.ts"
],
"nitropack/types": [
"../node_modules/nitropack/types.d.ts"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime.d.ts"
],
"nitropack": [
"../node_modules/nitropack/dist/core/index.d.ts"
],
"h3": [
"../node_modules/h3/dist/index.d.ts"
],
"crossws": [
"../node_modules/crossws/dist/index.d.mts"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.node.d.ts",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/*.*",
"../layers/*/modules/*/*.*",
"../nuxt.schema.*",
"../layers/*/nuxt.schema.*"
],
"exclude": [
"../node_modules",
"../../node_modules",
"../node_modules/nuxt/node_modules",
"../node_modules/@nuxt/telemetry/node_modules",
"../dist",
"../.data",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../server/**/*",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../node_modules/runtime",
"../node_modules/dist/runtime"
]
}
+138
View File
@@ -0,0 +1,138 @@
{
"compilerOptions": {
"forceConsistentCasingInFileNames": true,
"strict": true,
"noEmit": true,
"skipLibCheck": true,
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Bundler",
"allowJs": true,
"resolveJsonModule": true,
"jsx": "preserve",
"allowSyntheticDefaultImports": true,
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
"paths": {
"#imports": [
"../node_modules/.cache/nuxt/.nuxt/types/nitro-imports"
],
"~/*": [
"../*"
],
"@/*": [
"../*"
],
"~~/*": [
"../*"
],
"@@/*": [
"../*"
],
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vite/client": [
"../node_modules/vite/client"
],
"defu": [
"../node_modules/defu"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"nitropack/types": [
"../node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime"
],
"nitropack": [
"../node_modules/nitropack"
],
"h3": [
"../node_modules/h3"
],
"crossws": [
"../node_modules/crossws"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#build": [
"../node_modules/.cache/nuxt/.nuxt"
],
"#build/*": [
"../node_modules/.cache/nuxt/.nuxt/*"
],
"#internal/nuxt/paths": [
"../node_modules/@nuxt/nitro-server/dist/runtime/utils/paths"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables"
],
"#app/island-hash": [
"../node_modules/nuxt/dist/app/island-hash"
],
"#app/island-props": [
"../node_modules/nuxt/dist/app/island-props"
],
"#app/internal/*": [
"../node_modules/nuxt/dist/app/internal/*"
],
"#app/types": [
"../node_modules/nuxt/dist/app/types"
]
},
"lib": [
"esnext",
"webworker",
"dom.iterable"
],
"noUncheckedIndexedAccess": true,
"allowArbitraryExtensions": true,
"allowImportingTsExtensions": true
},
"include": [
"./types/nitro-nuxt.d.ts",
"../node_modules/runtime/server",
"../node_modules/dist/runtime/server",
"../server/**/*",
"../shared/**/*.d.ts",
"../node_modules/.cache/nuxt/.nuxt/types/nitro.d.ts"
],
"exclude": [
"../node_modules",
"../../node_modules",
"../node_modules/nuxt/node_modules",
"../node_modules/@nuxt/telemetry/node_modules",
"../dist"
]
}
+144
View File
@@ -0,0 +1,144 @@
{
"compilerOptions": {
"paths": {
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@nuxt/schema": [
"../node_modules/@nuxt/schema"
],
"nuxt": [
"../node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vite/client": [
"../node_modules/vite/client.d.ts"
],
"defu": [
"../node_modules/defu"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"~": [
".."
],
"~/*": [
"../*"
],
"@": [
".."
],
"@/*": [
"../*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/d92b9815-4046-4fa4-a372-b458b8301dfe.json"
],
"nitropack/types": [
"../node_modules/nitropack/types.d.ts"
],
"nitropack/runtime": [
"../node_modules/nitropack/runtime.d.ts"
],
"nitropack": [
"../node_modules/nitropack"
],
"h3": [
"../node_modules/h3"
],
"crossws": [
"../node_modules/crossws"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.shared.d.ts",
"../shared/**/*",
"../modules/*/shared/**/*",
"../layers/*/shared/**/*",
"../*.d.ts",
"../layers/*/*.d.ts"
],
"exclude": []
}
+37
View File
@@ -0,0 +1,37 @@
import type { AppConfigInput, CustomAppConfig } from 'nuxt/schema'
import type { Defu } from 'defu'
declare global {
const defineAppConfig: <C extends AppConfigInput> (config: C) => C
}
declare const inlineConfig = {
"nuxt": {}
}
type ResolvedAppConfig = Defu<typeof inlineConfig, []>
type IsAny<T> = 0 extends 1 & T ? true : false
type IsMergeable<T> = T extends readonly any[] | ((...args: any[]) => any) ? false : T extends Record<string, any> ? true : false
type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = {
[K in keyof (Resolved & Custom)]: K extends keyof Custom
? unknown extends Custom[K]
? Resolved[K]
: IsAny<Custom[K]> extends true
? Resolved[K]
: IsMergeable<Custom[K]> extends true
? IsMergeable<Resolved[K]> extends true
? MergedAppConfig<Resolved[K], Custom[K]>
: Exclude<Custom[K], undefined>
: Exclude<Custom[K], undefined>
: Resolved[K]
}
declare module 'nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}
declare module '@nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}
+48
View File
@@ -0,0 +1,48 @@
declare module "#build/app-component.mjs";
declare module "#build/app-component";
declare module "#build/nitro.client.mjs";
declare module "#build/nitro.client";
declare module "#build/plugins.client.mjs";
declare module "#build/plugins.client";
declare module "#build/css.mjs";
declare module "#build/css";
declare module "#build/error-component.mjs";
declare module "#build/error-component";
declare module "#build/global-polyfills.mjs";
declare module "#build/global-polyfills";
declare module "#build/island-renderer.mjs";
declare module "#build/island-renderer";
declare module "#build/layouts.mjs";
declare module "#build/layouts";
declare module "#build/middleware.mjs";
declare module "#build/middleware";
declare module "#build/nuxt.config.mjs";
declare module "#build/nuxt.config";
declare module "#build/paths.mjs";
declare module "#build/paths";
declare module "#build/root-component.mjs";
declare module "#build/root-component";
declare module "#build/route-rules.mjs";
declare module "#build/route-rules";
declare module "#build/plugins.server.mjs";
declare module "#build/plugins.server";
declare module "#build/test-component-wrapper.mjs";
declare module "#build/test-component-wrapper";
declare module "#build/routes.mjs";
declare module "#build/routes";
declare module "#build/pages.mjs";
declare module "#build/pages";
declare module "#build/router.options.mjs";
declare module "#build/router.options";
declare module "#build/unhead-options.mjs";
declare module "#build/unhead-options";
declare module "#build/unhead.config.mjs";
declare module "#build/unhead.config";
declare module "#build/components.plugin.mjs";
declare module "#build/components.plugin";
declare module "#build/component-names.mjs";
declare module "#build/component-names";
declare module "#build/components.islands.mjs";
declare module "#build/components.islands";
declare module "#build/component-chunk.mjs";
declare module "#build/component-chunk";
+1
View File
@@ -0,0 +1 @@
import "vite/client";
+261
View File
@@ -0,0 +1,261 @@
import type { DefineComponent, SlotsType } from 'vue'
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
type HydrationStrategies = {
hydrateOnVisible?: IntersectionObserverInit | true
hydrateOnIdle?: number | true
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
hydrateOnMediaQuery?: string
hydrateAfter?: number
hydrateWhen?: boolean
hydrateNever?: true
}
type LazyComponent<T> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
interface _GlobalComponents {
AppFooter: typeof import("../../components/AppFooter.vue")['default']
CoachingSystem: typeof import("../../components/CoachingSystem.vue")['default']
ConsultForm: typeof import("../../components/ConsultForm.vue")['default']
FaqAccordion: typeof import("../../components/FaqAccordion.vue")['default']
HeroBanner: typeof import("../../components/HeroBanner.vue")['default']
NearbySchools: typeof import("../../components/NearbySchools.vue")['default']
ProcessGuide: typeof import("../../components/ProcessGuide.vue")['default']
QuickMetrics: typeof import("../../components/QuickMetrics.vue")['default']
SubjectMastery: typeof import("../../components/SubjectMastery.vue")['default']
SuccessStories: typeof import("../../components/SuccessStories.vue")['default']
TeacherVerification: typeof import("../../components/TeacherVerification.vue")['default']
/**
* Displays the welcome screen used by new Nuxt projects.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-welcome
*/
NuxtWelcome: typeof import("../../node_modules/nuxt/dist/app/components/welcome.vue")['default']
/**
* Renders the selected layout around pages or error content.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-layout
*/
NuxtLayout: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-layout")['default']
/**
* Catches client-side errors from its default slot and renders an error slot.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-error-boundary
*/
NuxtErrorBoundary: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
/**
* Renders its default slot only on the client, with an optional server fallback.
*
* @see https://nuxt.com/docs/4.x/api/components/client-only
*/
ClientOnly: typeof import("../../node_modules/nuxt/dist/app/components/client-only")['default']
/**
* Renders its content only during development.
*
* @see https://nuxt.com/docs/4.x/api/components/dev-only
*/
DevOnly: typeof import("../../node_modules/nuxt/dist/app/components/dev-only")['default']
ServerPlaceholder: typeof import("../../node_modules/nuxt/dist/app/components/server-placeholder")['default']
/**
* A drop-in replacement for Vue Router's `<RouterLink>` and the HTML `<a>` element.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-link
*/
NuxtLink: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-link")['default']
/**
* Displays a progress bar during page navigation.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-loading-indicator
*/
NuxtLoadingIndicator: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
/**
* Formats dates and times consistently across server and client using the user's locale.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-time
*/
NuxtTime: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
/**
* Announces route changes to assistive technologies using the current page title.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-route-announcer
*/
NuxtRouteAnnouncer: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
/**
* Announces dynamic content changes to assistive technologies.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-announcer
*/
NuxtAnnouncer: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-announcer")['default']
/**
* Renders an optimized image through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-img
*/
NuxtImg: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']
/**
* Renders responsive optimized images through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-picture
*/
NuxtPicture: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']
/**
* Renders the current page from the `pages/` directory.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-page
*/
NuxtPage: typeof import("../../node_modules/nuxt/dist/pages/runtime/page")['default']
NoScript: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['NoScript']
Link: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Link']
Base: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Base']
Title: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Title']
Meta: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Meta']
Style: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Style']
Head: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Head']
Html: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Html']
Body: typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Body']
/**
* Renders a non-interactive server component without shipping client-side JavaScript.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-island
*/
NuxtIsland: typeof import("../../node_modules/nuxt/dist/app/components/nuxt-island")['default']
LazyAppFooter: LazyComponent<typeof import("../../components/AppFooter.vue")['default']>
LazyCoachingSystem: LazyComponent<typeof import("../../components/CoachingSystem.vue")['default']>
LazyConsultForm: LazyComponent<typeof import("../../components/ConsultForm.vue")['default']>
LazyFaqAccordion: LazyComponent<typeof import("../../components/FaqAccordion.vue")['default']>
LazyHeroBanner: LazyComponent<typeof import("../../components/HeroBanner.vue")['default']>
LazyNearbySchools: LazyComponent<typeof import("../../components/NearbySchools.vue")['default']>
LazyProcessGuide: LazyComponent<typeof import("../../components/ProcessGuide.vue")['default']>
LazyQuickMetrics: LazyComponent<typeof import("../../components/QuickMetrics.vue")['default']>
LazySubjectMastery: LazyComponent<typeof import("../../components/SubjectMastery.vue")['default']>
LazySuccessStories: LazyComponent<typeof import("../../components/SuccessStories.vue")['default']>
LazyTeacherVerification: LazyComponent<typeof import("../../components/TeacherVerification.vue")['default']>
/**
* Lazy-loaded version of `<NuxtWelcome>`.
*
* Displays the welcome screen used by new Nuxt projects.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-welcome
*/
LazyNuxtWelcome: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/welcome.vue")['default']>
/**
* Lazy-loaded version of `<NuxtLayout>`.
*
* Renders the selected layout around pages or error content.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-layout
*/
LazyNuxtLayout: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
/**
* Lazy-loaded version of `<NuxtErrorBoundary>`.
*
* Catches client-side errors from its default slot and renders an error slot.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-error-boundary
*/
LazyNuxtErrorBoundary: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
/**
* Lazy-loaded version of `<ClientOnly>`.
*
* Renders its default slot only on the client, with an optional server fallback.
*
* @see https://nuxt.com/docs/4.x/api/components/client-only
*/
LazyClientOnly: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/client-only")['default']>
/**
* Lazy-loaded version of `<DevOnly>`.
*
* Renders its content only during development.
*
* @see https://nuxt.com/docs/4.x/api/components/dev-only
*/
LazyDevOnly: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/dev-only")['default']>
LazyServerPlaceholder: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/server-placeholder")['default']>
/**
* Lazy-loaded version of `<NuxtLink>`.
*
* A drop-in replacement for Vue Router's `<RouterLink>` and the HTML `<a>` element.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-link
*/
LazyNuxtLink: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-link")['default']>
/**
* Lazy-loaded version of `<NuxtLoadingIndicator>`.
*
* Displays a progress bar during page navigation.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-loading-indicator
*/
LazyNuxtLoadingIndicator: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
/**
* Lazy-loaded version of `<NuxtTime>`.
*
* Formats dates and times consistently across server and client using the user's locale.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-time
*/
LazyNuxtTime: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
/**
* Lazy-loaded version of `<NuxtRouteAnnouncer>`.
*
* Announces route changes to assistive technologies using the current page title.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-route-announcer
*/
LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
/**
* Lazy-loaded version of `<NuxtAnnouncer>`.
*
* Announces dynamic content changes to assistive technologies.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-announcer
*/
LazyNuxtAnnouncer: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-announcer")['default']>
/**
* Lazy-loaded version of `<NuxtImg>`.
*
* Renders an optimized image through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-img
*/
LazyNuxtImg: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']>
/**
* Lazy-loaded version of `<NuxtPicture>`.
*
* Renders responsive optimized images through the Nuxt Image module.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-picture
*/
LazyNuxtPicture: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']>
/**
* Lazy-loaded version of `<NuxtPage>`.
*
* Renders the current page from the `pages/` directory.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-page
*/
LazyNuxtPage: LazyComponent<typeof import("../../node_modules/nuxt/dist/pages/runtime/page")['default']>
LazyNoScript: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['NoScript']>
LazyLink: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Link']>
LazyBase: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Base']>
LazyTitle: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Title']>
LazyMeta: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Meta']>
LazyStyle: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Style']>
LazyHead: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Head']>
LazyHtml: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Html']>
LazyBody: LazyComponent<typeof import("../../node_modules/nuxt/dist/head/runtime/components")['Body']>
/**
* Lazy-loaded version of `<NuxtIsland>`.
*
* Renders a non-interactive server component without shipping client-side JavaScript.
*
* @see https://nuxt.com/docs/4.x/api/components/nuxt-island
*/
LazyNuxtIsland: LazyComponent<typeof import("../../node_modules/nuxt/dist/app/components/nuxt-island")['default']>
}
declare module 'vue' {
export interface GlobalComponents extends _GlobalComponents { }
}
export {}
+433
View File
@@ -0,0 +1,433 @@
// Generated by auto imports
export {}
declare global {
const $fetch: typeof import('../fetch').$fetch
const GRADES_LIST: typeof import('../../utils/dataHelper').GRADES_LIST
const SUBJECTS_MAP: typeof import('../../utils/dataHelper').SUBJECTS_MAP
const abortNavigation: typeof import('../../node_modules/nuxt/dist/app/composables/router').abortNavigation
const addRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router').addRouteMiddleware
const callOnce: typeof import('../../node_modules/nuxt/dist/app/composables/once').callOnce
const cancelIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback').cancelIdleCallback
const clearError: typeof import('../../node_modules/nuxt/dist/app/composables/error').clearError
const clearNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').clearNuxtData
const clearNuxtState: typeof import('../../node_modules/nuxt/dist/app/composables/state').clearNuxtState
const computed: typeof import('vue').computed
const createError: typeof import('../../node_modules/nuxt/dist/app/composables/error').createError
const createUseAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').createUseAsyncData
const createUseFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch').createUseFetch
const customRef: typeof import('vue').customRef
const defineAppConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt').defineAppConfig
const defineAsyncComponent: typeof import('vue').defineAsyncComponent
const defineComponent: typeof import('vue').defineComponent
const defineLazyHydrationComponent: typeof import('../../node_modules/nuxt/dist/app/composables/lazy-hydration').defineLazyHydrationComponent
const defineNuxtComponent: typeof import('../../node_modules/nuxt/dist/app/composables/component').defineNuxtComponent
const defineNuxtLink: typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link').defineNuxtLink
const defineNuxtPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt').defineNuxtPlugin
const defineNuxtRouteMiddleware: typeof import('../../node_modules/nuxt/dist/app/composables/router').defineNuxtRouteMiddleware
const definePageMeta: typeof import('../../node_modules/nuxt/dist/app/composables/pages').definePageMeta
const definePayloadPlugin: typeof import('../../node_modules/nuxt/dist/app/nuxt').definePayloadPlugin
const definePayloadReducer: typeof import('../../node_modules/nuxt/dist/app/composables/payload').definePayloadReducer
const definePayloadReviver: typeof import('../../node_modules/nuxt/dist/app/composables/payload').definePayloadReviver
const defineUseAsyncDataAddon: typeof import('../../node_modules/nuxt/dist/app/composables/addons').defineUseAsyncDataAddon
const defineUseFetchAddon: typeof import('../../node_modules/nuxt/dist/app/composables/addons').defineUseFetchAddon
const effect: typeof import('vue').effect
const effectScope: typeof import('vue').effectScope
const generateSeoMeta: typeof import('../../utils/seoHelper').generateSeoMeta
const getAllSubjectsList: typeof import('../../utils/dataHelper').getAllSubjectsList
const getAppManifest: typeof import('../../node_modules/nuxt/dist/app/composables/manifest').getAppManifest
const getCurrentInstance: typeof import('vue').getCurrentInstance
const getCurrentScope: typeof import('vue').getCurrentScope
const getCurriculumBySubject: typeof import('../../utils/dataHelper').getCurriculumBySubject
const getPopularRegions: typeof import('../../utils/dataHelper').getPopularRegions
const getRegionByDong: typeof import('../../utils/dataHelper').getRegionByDong
const getRouteRules: typeof import('../../node_modules/nuxt/dist/app/composables/manifest').getRouteRules
const getShortRegionName: typeof import('../../utils/dataHelper').getShortRegionName
const getShortSido: typeof import('../../utils/dataHelper').getShortSido
const getTotalRegionsCount: typeof import('../../utils/dataHelper').getTotalRegionsCount
const h: typeof import('vue').h
const hasInjectionContext: typeof import('vue').hasInjectionContext
const inject: typeof import('vue').inject
const injectHead: typeof import('../../node_modules/nuxt/dist/app/composables/head').injectHead
const isNuxtError: typeof import('../../node_modules/nuxt/dist/app/composables/error').isNuxtError
const isPrerendered: typeof import('../../node_modules/nuxt/dist/app/composables/payload').isPrerendered
const isProxy: typeof import('vue').isProxy
const isReactive: typeof import('vue').isReactive
const isReadonly: typeof import('vue').isReadonly
const isRef: typeof import('vue').isRef
const isShallow: typeof import('vue').isShallow
const isVue2: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi').isVue2
const isVue3: typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi').isVue3
const loadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload').loadPayload
const markRaw: typeof import('vue').markRaw
const navigateTo: typeof import('../../node_modules/nuxt/dist/app/composables/router').navigateTo
const nextTick: typeof import('vue').nextTick
const onActivated: typeof import('vue').onActivated
const onBeforeMount: typeof import('vue').onBeforeMount
const onBeforeRouteLeave: typeof import('vue-router').onBeforeRouteLeave
const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate
const onBeforeUnmount: typeof import('vue').onBeforeUnmount
const onBeforeUpdate: typeof import('vue').onBeforeUpdate
const onDeactivated: typeof import('vue').onDeactivated
const onErrorCaptured: typeof import('vue').onErrorCaptured
const onMounted: typeof import('vue').onMounted
const onNuxtReady: typeof import('../../node_modules/nuxt/dist/app/composables/ready').onNuxtReady
const onPrehydrate: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').onPrehydrate
const onRenderTracked: typeof import('vue').onRenderTracked
const onRenderTriggered: typeof import('vue').onRenderTriggered
const onScopeDispose: typeof import('vue').onScopeDispose
const onServerPrefetch: typeof import('vue').onServerPrefetch
const onUnmounted: typeof import('vue').onUnmounted
const onUpdated: typeof import('vue').onUpdated
const onWatcherCleanup: typeof import('vue').onWatcherCleanup
const parseRouteSlug: typeof import('../../utils/dataHelper').parseRouteSlug
const prefetchComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload').prefetchComponents
const preloadComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload').preloadComponents
const preloadPayload: typeof import('../../node_modules/nuxt/dist/app/composables/payload').preloadPayload
const preloadRouteComponents: typeof import('../../node_modules/nuxt/dist/app/composables/preload').preloadRouteComponents
const prerenderRoutes: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').prerenderRoutes
const provide: typeof import('vue').provide
const proxyRefs: typeof import('vue').proxyRefs
const reactive: typeof import('vue').reactive
const readonly: typeof import('vue').readonly
const ref: typeof import('vue').ref
const refreshCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie').refreshCookie
const refreshNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').refreshNuxtData
const reloadNuxtApp: typeof import('../../node_modules/nuxt/dist/app/composables/chunk').reloadNuxtApp
const requestIdleCallback: typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback').requestIdleCallback
const resolveComponent: typeof import('vue').resolveComponent
const setInterval: typeof import('../../node_modules/nuxt/dist/app/compat/interval').setInterval
const setPageLayout: typeof import('../../node_modules/nuxt/dist/app/composables/router').setPageLayout
const setResponseStatus: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').setResponseStatus
const shallowReactive: typeof import('vue').shallowReactive
const shallowReadonly: typeof import('vue').shallowReadonly
const shallowRef: typeof import('vue').shallowRef
const showError: typeof import('../../node_modules/nuxt/dist/app/composables/error').showError
const toRaw: typeof import('vue').toRaw
const toRef: typeof import('vue').toRef
const toRefs: typeof import('vue').toRefs
const toValue: typeof import('vue').toValue
const triggerRef: typeof import('vue').triggerRef
const tryUseNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt').tryUseNuxtApp
const unref: typeof import('vue').unref
const updateAppConfig: typeof import('../../node_modules/nuxt/dist/app/config').updateAppConfig
const useAnnouncer: typeof import('../../node_modules/nuxt/dist/app/composables/announcer').useAnnouncer
const useAppConfig: typeof import('../../node_modules/nuxt/dist/app/config').useAppConfig
const useAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').useAsyncData
const useAttrs: typeof import('vue').useAttrs
const useCookie: typeof import('../../node_modules/nuxt/dist/app/composables/cookie').useCookie
const useCssModule: typeof import('vue').useCssModule
const useCssVars: typeof import('vue').useCssVars
const useError: typeof import('../../node_modules/nuxt/dist/app/composables/error').useError
const useFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch').useFetch
const useHead: typeof import('../../node_modules/nuxt/dist/app/composables/head').useHead
const useHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head').useHeadSafe
const useHydration: typeof import('../../node_modules/nuxt/dist/app/composables/hydrate').useHydration
const useId: typeof import('vue').useId
const useLayout: typeof import('../../node_modules/nuxt/dist/app/composables/layout').useLayout
const useLazyAsyncData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').useLazyAsyncData
const useLazyFetch: typeof import('../../node_modules/nuxt/dist/app/composables/fetch').useLazyFetch
const useLink: typeof import('vue-router').useLink
const useLoadingIndicator: typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator').useLoadingIndicator
const useModel: typeof import('vue').useModel
const useNuxtApp: typeof import('../../node_modules/nuxt/dist/app/nuxt').useNuxtApp
const useNuxtData: typeof import('../../node_modules/nuxt/dist/app/composables/asyncData').useNuxtData
const usePreviewMode: typeof import('../../node_modules/nuxt/dist/app/composables/preview').usePreviewMode
const useRequestEvent: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').useRequestEvent
const useRequestFetch: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').useRequestFetch
const useRequestHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').useRequestHeader
const useRequestHeaders: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').useRequestHeaders
const useRequestURL: typeof import('../../node_modules/nuxt/dist/app/composables/url').useRequestURL
const useResponseHeader: typeof import('../../node_modules/nuxt/dist/app/composables/ssr').useResponseHeader
const useRoute: typeof import('../../node_modules/nuxt/dist/app/composables/router').useRoute
const useRouteAnnouncer: typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer').useRouteAnnouncer
const useRouter: typeof import('../../node_modules/nuxt/dist/app/composables/router').useRouter
const useRuntimeConfig: typeof import('../../node_modules/nuxt/dist/app/nuxt').useRuntimeConfig
const useRuntimeHook: typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook').useRuntimeHook
const useScript: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScript
const useScriptAhrefsAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptAhrefsAnalytics
const useScriptBingUet: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptBingUet
const useScriptCalendly: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptCalendly
const useScriptClarity: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptClarity
const useScriptCloudflareWebAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptCloudflareWebAnalytics
const useScriptCrisp: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptCrisp
const useScriptDatabuddyAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptDatabuddyAnalytics
const useScriptEventPage: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptEventPage
const useScriptFathomAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptFathomAnalytics
const useScriptGoogleAdsense: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleAdsense
const useScriptGoogleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleAnalytics
const useScriptGoogleMaps: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleMaps
const useScriptGoogleRecaptcha: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleRecaptcha
const useScriptGoogleSignIn: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleSignIn
const useScriptGoogleTagManager: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleTagManager
const useScriptGravatar: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptGravatar
const useScriptHotjar: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptHotjar
const useScriptIntercom: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptIntercom
const useScriptLemonSqueezy: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptLemonSqueezy
const useScriptLinkedInInsight: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptLinkedInInsight
const useScriptMatomoAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptMatomoAnalytics
const useScriptMetaPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptMetaPixel
const useScriptMixpanelAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptMixpanelAnalytics
const useScriptNpm: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptNpm
const useScriptPayPal: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptPayPal
const useScriptPlausibleAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptPlausibleAnalytics
const useScriptPostHog: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptPostHog
const useScriptRedditPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptRedditPixel
const useScriptRybbitAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptRybbitAnalytics
const useScriptSegment: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptSegment
const useScriptSnapchatPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptSnapchatPixel
const useScriptSpeedCurve: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptSpeedCurve
const useScriptStripe: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptStripe
const useScriptTikTokPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptTikTokPixel
const useScriptTriggerConsent: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptTriggerConsent
const useScriptTriggerElement: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptTriggerElement
const useScriptUmamiAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptUmamiAnalytics
const useScriptUsercentrics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptUsercentrics
const useScriptVercelAnalytics: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptVercelAnalytics
const useScriptVimeoPlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptVimeoPlayer
const useScriptXPixel: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptXPixel
const useScriptYouTubePlayer: typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs').useScriptYouTubePlayer
const useSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head').useSeoMeta
const useServerHead: typeof import('../../node_modules/nuxt/dist/app/composables/head').useServerHead
const useServerHeadSafe: typeof import('../../node_modules/nuxt/dist/app/composables/head').useServerHeadSafe
const useServerSeoMeta: typeof import('../../node_modules/nuxt/dist/app/composables/head').useServerSeoMeta
const useShadowRoot: typeof import('vue').useShadowRoot
const useSlots: typeof import('vue').useSlots
const useState: typeof import('../../node_modules/nuxt/dist/app/composables/state').useState
const useTemplateRef: typeof import('vue').useTemplateRef
const useTransitionState: typeof import('vue').useTransitionState
const watch: typeof import('vue').watch
const watchEffect: typeof import('vue').watchEffect
const watchPostEffect: typeof import('vue').watchPostEffect
const watchSyncEffect: typeof import('vue').watchSyncEffect
const withCtx: typeof import('vue').withCtx
const withDirectives: typeof import('vue').withDirectives
const withKeys: typeof import('vue').withKeys
const withMemo: typeof import('vue').withMemo
const withModifiers: typeof import('vue').withModifiers
const withScopeId: typeof import('vue').withScopeId
}
// for type re-export
declare global {
// @ts-ignore
export type { UseFetchAddonOptions, UseAsyncDataAddonOptions } from '../../node_modules/nuxt/dist/app/composables/addons'
import('../../node_modules/nuxt/dist/app/composables/addons')
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, ShallowRef, VNode, WritableComputedRef } from 'vue'
import('vue')
// @ts-ignore
export type { PageMeta } from '../../node_modules/nuxt/dist/app/composables/pages'
import('../../node_modules/nuxt/dist/app/composables/pages')
// @ts-ignore
export type { RegionInfo, ParsedRouteParams } from '../../utils/dataHelper'
import('../../utils/dataHelper')
}
// for vue template auto import
import { UnwrapRef } from 'vue'
declare module 'vue' {
interface ComponentCustomProperties {
readonly $fetch: UnwrapRef<typeof import('../fetch')['$fetch']>
readonly GRADES_LIST: UnwrapRef<typeof import('../../utils/dataHelper')['GRADES_LIST']>
readonly SUBJECTS_MAP: UnwrapRef<typeof import('../../utils/dataHelper')['SUBJECTS_MAP']>
readonly abortNavigation: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['abortNavigation']>
readonly addRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']>
readonly callOnce: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/once')['callOnce']>
readonly cancelIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']>
readonly clearError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['clearError']>
readonly clearNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']>
readonly clearNuxtState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['clearNuxtState']>
readonly computed: UnwrapRef<typeof import('vue')['computed']>
readonly createError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['createError']>
readonly createUseAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['createUseAsyncData']>
readonly createUseFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['createUseFetch']>
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
readonly defineAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineAppConfig']>
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
readonly defineLazyHydrationComponent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/lazy-hydration')['defineLazyHydrationComponent']>
readonly defineNuxtComponent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']>
readonly defineNuxtLink: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']>
readonly defineNuxtPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']>
readonly defineNuxtRouteMiddleware: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']>
readonly definePageMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/pages')['definePageMeta']>
readonly definePayloadPlugin: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']>
readonly definePayloadReducer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']>
readonly definePayloadReviver: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']>
readonly defineUseAsyncDataAddon: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/addons')['defineUseAsyncDataAddon']>
readonly defineUseFetchAddon: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/addons')['defineUseFetchAddon']>
readonly effect: UnwrapRef<typeof import('vue')['effect']>
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
readonly generateSeoMeta: UnwrapRef<typeof import('../../utils/seoHelper')['generateSeoMeta']>
readonly getAllSubjectsList: UnwrapRef<typeof import('../../utils/dataHelper')['getAllSubjectsList']>
readonly getAppManifest: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']>
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
readonly getCurriculumBySubject: UnwrapRef<typeof import('../../utils/dataHelper')['getCurriculumBySubject']>
readonly getPopularRegions: UnwrapRef<typeof import('../../utils/dataHelper')['getPopularRegions']>
readonly getRegionByDong: UnwrapRef<typeof import('../../utils/dataHelper')['getRegionByDong']>
readonly getRouteRules: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']>
readonly getShortRegionName: UnwrapRef<typeof import('../../utils/dataHelper')['getShortRegionName']>
readonly getShortSido: UnwrapRef<typeof import('../../utils/dataHelper')['getShortSido']>
readonly getTotalRegionsCount: UnwrapRef<typeof import('../../utils/dataHelper')['getTotalRegionsCount']>
readonly h: UnwrapRef<typeof import('vue')['h']>
readonly hasInjectionContext: UnwrapRef<typeof import('vue')['hasInjectionContext']>
readonly inject: UnwrapRef<typeof import('vue')['inject']>
readonly injectHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['injectHead']>
readonly isNuxtError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['isNuxtError']>
readonly isPrerendered: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['isPrerendered']>
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
readonly isShallow: UnwrapRef<typeof import('vue')['isShallow']>
readonly isVue2: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']>
readonly isVue3: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']>
readonly loadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['loadPayload']>
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
readonly navigateTo: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['navigateTo']>
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
readonly onNuxtReady: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']>
readonly onPrehydrate: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']>
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
readonly onWatcherCleanup: UnwrapRef<typeof import('vue')['onWatcherCleanup']>
readonly parseRouteSlug: UnwrapRef<typeof import('../../utils/dataHelper')['parseRouteSlug']>
readonly prefetchComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']>
readonly preloadComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadComponents']>
readonly preloadPayload: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/payload')['preloadPayload']>
readonly preloadRouteComponents: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']>
readonly prerenderRoutes: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']>
readonly provide: UnwrapRef<typeof import('vue')['provide']>
readonly proxyRefs: UnwrapRef<typeof import('vue')['proxyRefs']>
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
readonly ref: UnwrapRef<typeof import('vue')['ref']>
readonly refreshCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']>
readonly refreshNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']>
readonly reloadNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']>
readonly requestIdleCallback: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']>
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
readonly setInterval: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/compat/interval')['setInterval']>
readonly setPageLayout: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['setPageLayout']>
readonly setResponseStatus: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']>
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
readonly showError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['showError']>
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
readonly tryUseNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']>
readonly unref: UnwrapRef<typeof import('vue')['unref']>
readonly updateAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['updateAppConfig']>
readonly useAnnouncer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/announcer')['useAnnouncer']>
readonly useAppConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/config')['useAppConfig']>
readonly useAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']>
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
readonly useCookie: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/cookie')['useCookie']>
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
readonly useError: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/error')['useError']>
readonly useFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useFetch']>
readonly useHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHead']>
readonly useHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useHeadSafe']>
readonly useHydration: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/hydrate')['useHydration']>
readonly useId: UnwrapRef<typeof import('vue')['useId']>
readonly useLayout: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/layout')['useLayout']>
readonly useLazyAsyncData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']>
readonly useLazyFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']>
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
readonly useLoadingIndicator: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']>
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
readonly useRequestEvent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']>
readonly useRequestFetch: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']>
readonly useRequestHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']>
readonly useRequestHeaders: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']>
readonly useRequestURL: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/url')['useRequestURL']>
readonly useResponseHeader: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']>
readonly useRoute: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRoute']>
readonly useRouteAnnouncer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']>
readonly useRouter: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/router')['useRouter']>
readonly useRuntimeConfig: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']>
readonly useRuntimeHook: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']>
readonly useScript: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScript']>
readonly useScriptAhrefsAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptAhrefsAnalytics']>
readonly useScriptBingUet: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptBingUet']>
readonly useScriptCalendly: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCalendly']>
readonly useScriptClarity: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']>
readonly useScriptCloudflareWebAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']>
readonly useScriptCrisp: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']>
readonly useScriptDatabuddyAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptDatabuddyAnalytics']>
readonly useScriptEventPage: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']>
readonly useScriptFathomAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']>
readonly useScriptGoogleAdsense: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']>
readonly useScriptGoogleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']>
readonly useScriptGoogleMaps: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']>
readonly useScriptGoogleRecaptcha: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleRecaptcha']>
readonly useScriptGoogleSignIn: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleSignIn']>
readonly useScriptGoogleTagManager: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']>
readonly useScriptGravatar: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGravatar']>
readonly useScriptHotjar: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']>
readonly useScriptIntercom: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']>
readonly useScriptLemonSqueezy: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']>
readonly useScriptLinkedInInsight: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLinkedInInsight']>
readonly useScriptMatomoAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']>
readonly useScriptMetaPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']>
readonly useScriptMixpanelAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMixpanelAnalytics']>
readonly useScriptNpm: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']>
readonly useScriptPayPal: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPayPal']>
readonly useScriptPlausibleAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']>
readonly useScriptPostHog: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPostHog']>
readonly useScriptRedditPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRedditPixel']>
readonly useScriptRybbitAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']>
readonly useScriptSegment: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']>
readonly useScriptSnapchatPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']>
readonly useScriptSpeedCurve: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSpeedCurve']>
readonly useScriptStripe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']>
readonly useScriptTikTokPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTikTokPixel']>
readonly useScriptTriggerConsent: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']>
readonly useScriptTriggerElement: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']>
readonly useScriptUmamiAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']>
readonly useScriptUsercentrics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUsercentrics']>
readonly useScriptVercelAnalytics: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVercelAnalytics']>
readonly useScriptVimeoPlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']>
readonly useScriptXPixel: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']>
readonly useScriptYouTubePlayer: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']>
readonly useSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useSeoMeta']>
readonly useServerHead: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHead']>
readonly useServerHeadSafe: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']>
readonly useServerSeoMeta: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']>
readonly useShadowRoot: UnwrapRef<typeof import('vue')['useShadowRoot']>
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
readonly useState: UnwrapRef<typeof import('../../node_modules/nuxt/dist/app/composables/state')['useState']>
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
readonly useTransitionState: UnwrapRef<typeof import('vue')['useTransitionState']>
readonly watch: UnwrapRef<typeof import('vue')['watch']>
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
readonly withCtx: UnwrapRef<typeof import('vue')['withCtx']>
readonly withDirectives: UnwrapRef<typeof import('vue')['withDirectives']>
readonly withKeys: UnwrapRef<typeof import('vue')['withKeys']>
readonly withMemo: UnwrapRef<typeof import('vue')['withMemo']>
readonly withModifiers: UnwrapRef<typeof import('vue')['withModifiers']>
readonly withScopeId: UnwrapRef<typeof import('vue')['withScopeId']>
}
}
+16
View File
@@ -0,0 +1,16 @@
import type { ComputedRef, MaybeRef } from "vue";
import type { ComponentProps } from "../../node_modules/vue-component-type-helpers/index.js";
declare module 'nuxt/app' {
interface NuxtLayouts {
}
export type LayoutKey = keyof NuxtLayouts extends never ? string : keyof NuxtLayouts
interface PageMeta {
layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false> | {
[K in LayoutKey]: {
name?: MaybeRef<K | false> | ComputedRef<K | false>
props?: NuxtLayouts[K]
}
}[LayoutKey]
}
}
+7
View File
@@ -0,0 +1,7 @@
import type { NavigationGuard } from 'vue-router'
export type MiddlewareKey = never
declare module 'nuxt/app' {
interface PageMeta {
middleware?: MiddlewareKey | NavigationGuard | Array<MiddlewareKey | NavigationGuard>
}
}

Some files were not shown because too many files have changed in this diff Show More