diff --git a/public/images/main_utm_mobile.png b/public/images/main_utm_mobile.png new file mode 100644 index 0000000..9e90094 Binary files /dev/null and b/public/images/main_utm_mobile.png differ diff --git a/src/components/SubHero.jsx b/src/components/SubHero.jsx index 274dde7..96b02b9 100644 --- a/src/components/SubHero.jsx +++ b/src/components/SubHero.jsx @@ -105,7 +105,8 @@ function NetworkGlobe() { const d = Math.sqrt(dx * dx + dy * dy + dz * dz); if (d < 0.55) { const depth = (a.sz + b.sz) * 0.5; - const alpha = Math.max(0, 0.05 + (depth + 1) * 0.1) * (1 - d / 0.55); + const alpha = + Math.max(0, 0.05 + (depth + 1) * 0.1) * (1 - d / 0.55); const aHex = Math.round(Math.min(255, alpha * 255)) .toString(16) .padStart(2, "0"); @@ -134,7 +135,14 @@ function NetworkGlobe() { .toString(16) .padStart(2, "0"); - const glow = ctx.createRadialGradient(n.sx, n.sy, 0, n.sx, n.sy, r * 3.5); + const glow = ctx.createRadialGradient( + n.sx, + n.sy, + 0, + n.sx, + n.sy, + r * 3.5, + ); glow.addColorStop(0, n.color + gHex); glow.addColorStop(1, n.color + "00"); ctx.beginPath(); @@ -172,7 +180,12 @@ function NetworkGlobe() { function TitleLine({ children, delay }) { return ( - + {children} @@ -202,7 +215,9 @@ export default function SubHero({ title, desc, navItems, rightSlot }) { )) : // JSX:
로 나뉜 형태 → 직접 TitleLine 배열로 변환 (() => { - const children = Array.isArray(title.props?.children) ? title.props.children : [title]; + const children = Array.isArray(title.props?.children) + ? title.props.children + : [title]; const lines = []; let current = []; children.forEach((child, i) => { @@ -229,21 +244,39 @@ export default function SubHero({ title, desc, navItems, rightSlot }) {
{/* // 브레드크럼 */} - + - + / - + {menuMap["/" + pathname.split("/")[1]]?.label} {pathname.split("/")[2] && ( <> / - {navItems?.find((n) => n.to === pathname)?.label} + + {navItems?.find((n) => n.to === pathname)?.label} + )} @@ -255,7 +288,11 @@ export default function SubHero({ title, desc, navItems, rightSlot }) { animate={{ opacity: 1, y: 0 }} transition={{ duration: 0.6, - delay: 0.1 + (typeof title === "string" ? title.split("\n").length : 2) * 0.1 + 0.15, + delay: + 0.1 + + (typeof title === "string" ? title.split("\n").length : 2) * + 0.1 + + 0.15, ease: [0.16, 1, 0.3, 1], }} > @@ -265,7 +302,12 @@ export default function SubHero({ title, desc, navItems, rightSlot }) {
{rightSlot && ( - + {rightSlot} )} @@ -273,10 +315,18 @@ export default function SubHero({ title, desc, navItems, rightSlot }) { {navItems?.length > 1 && ( -