Browse Source

uam 을 utm 으로 변경

remotes/origin/main
김지은 4 weeks ago
parent
commit
95d3674b5c
  1. 19837
      docs/assets/index-C6pK9dKt.js
  2. 2
      docs/assets/index-DjKyXGQM.css
  3. 2
      docs/favicon/favicon.svg
  4. 6
      docs/index.html
  5. 4
      index.html
  6. 2
      public/favicon/favicon.svg
  7. 14
      src/Router.jsx
  8. 2
      src/components/FloatingKeywords.jsx
  9. 6
      src/components/Footer.jsx
  10. 16
      src/components/Header.jsx
  11. 2
      src/components/SubHero.jsx
  12. 54
      src/components/main/MainUam.jsx
  13. 52
      src/components/main/MainUam2.jsx
  14. 36
      src/css/main.css
  15. 6
      src/pages/IntroPage.jsx
  16. 8
      src/pages/MainPage copy 2.jsx
  17. 4
      src/pages/MainPage.jsx
  18. 2
      src/pages/business/RndPage.jsx
  19. 10
      src/pages/company/HistoryPage.jsx
  20. 15
      src/pages/utm/CasePage.jsx
  21. 23
      src/pages/utm/IntroPage.jsx

19837
docs/assets/index-C6pK9dKt.js

File diff suppressed because one or more lines are too long

2
docs/assets/index-DjKyXGQM.css

File diff suppressed because one or more lines are too long

2
docs/favicon/favicon.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

6
docs/index.html

@ -3,9 +3,9 @@
<head>
<meta charset="UTF-8" />
<!-- 기본 SEO 설명: 검색 결과 제목 아래 요약문으로 사용될 수 있음 -->
<meta name="description" content="팔네트웍스는 소프트웨어 개발 및 공급, UTM 및 UAM 항공 솔루션 구축을 수행하는 IT 전문 기업입니다." />
<meta name="description" content="팔네트웍스는 소프트웨어 개발 및 공급, UTM 및 UTM 항공 솔루션 구축을 수행하는 IT 전문 기업입니다." />
<!-- 검색 키워드: 최신 SEO 영향은 크지 않지만 브랜드/서비스 키워드 정리용으로 사용 가능 -->
<meta name="keywords" content="팔네트웍스, PAL Networks, UTM, UAM, 소프트웨어개발, 응용소프트웨어, IT, 관제솔루션, 항공솔루션, 솔루션구축, SI, 네트워크, 항공산업, 공역관리" />
<meta name="keywords" content="팔네트웍스, PAL Networks, UTM, UTM, 소프트웨어개발, 응용소프트웨어, IT, 관제솔루션, 항공솔루션, 솔루션구축, SI, 네트워크, 항공산업, 공역관리" />
<!-- 오픈그래프 제목: 카카오톡, 슬랙, 페이스북 등 링크 공유 시 제목으로 노출 -->
<meta property="og:title" content="팔네트웍스" />
@ -52,7 +52,7 @@
<title>PAL Networks</title>
<script type="module" crossorigin src="/PALNetworks/assets/index-C6pK9dKt.js"></script>
<link rel="stylesheet" crossorigin href="/PALNetworks/assets/index-DjKyXGQM.css">
<link rel="stylesheet" crossorigin href="/PALNetworks/assets/index-DjKyXGQM.css" />
</head>
<body>
<div id="root"></div>

4
index.html

@ -3,9 +3,9 @@
<head>
<meta charset="UTF-8" />
<!-- 기본 SEO 설명: 검색 결과 제목 아래 요약문으로 사용될 수 있음 -->
<meta name="description" content="팔네트웍스는 소프트웨어 개발 및 공급, UTM 및 UAM 항공 솔루션 구축을 수행하는 IT 전문 기업입니다." />
<meta name="description" content="팔네트웍스는 소프트웨어 개발 및 공급, UTM 및 UTM 항공 솔루션 구축을 수행하는 IT 전문 기업입니다." />
<!-- 검색 키워드: 최신 SEO 영향은 크지 않지만 브랜드/서비스 키워드 정리용으로 사용 가능 -->
<meta name="keywords" content="팔네트웍스, PAL Networks, UTM, UAM, 소프트웨어개발, 응용소프트웨어, IT, 관제솔루션, 항공솔루션, 솔루션구축, SI, 네트워크, 항공산업, 공역관리" />
<meta name="keywords" content="팔네트웍스, PAL Networks, UTM, UTM, 소프트웨어개발, 응용소프트웨어, IT, 관제솔루션, 항공솔루션, 솔루션구축, SI, 네트워크, 항공산업, 공역관리" />
<!-- 오픈그래프 제목: 카카오톡, 슬랙, 페이스북 등 링크 공유 시 제목으로 노출 -->
<meta property="og:title" content="팔네트웍스" />

2
public/favicon/favicon.svg

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

14
src/Router.jsx

@ -12,9 +12,9 @@ import CompanyHistoryPage from "./pages/company/HistoryPage";
import CompanyPartnersPage from "./pages/company/PartnersPage";
import CompanyLocationPage from "./pages/company/LocationPage";
// UAM/UATM
import UamIntroPage from "./pages/uam/IntroPage";
import UamCasePage from "./pages/uam/CasePage";
// UTM/UATM
import UTMIntroPage from "./pages/UTM/IntroPage";
import UTMCasePage from "./pages/UTM/CasePage";
// Business
import BusinessSiPage from "./pages/business/SiPage";
@ -51,10 +51,10 @@ function Router() {
<Route path="/company/partners" element={<CompanyPartnersPage />} />
<Route path="/company/location" element={<CompanyLocationPage />} />
{/* UAM/UATM */}
<Route path="/uam" element={<Navigate to="/uam/intro" replace />} />
<Route path="/uam/intro" element={<UamIntroPage />} />
<Route path="/uam/case" element={<UamCasePage />} />
{/* UTM/UATM */}
<Route path="/UTM" element={<Navigate to="/UTM/intro" replace />} />
<Route path="/UTM/intro" element={<UTMIntroPage />} />
<Route path="/UTM/case" element={<UTMCasePage />} />
{/* Business */}
<Route path="/business" element={<Navigate to="/business/si" replace />} />

2
src/components/FloatingKeywords.jsx

@ -3,7 +3,7 @@ import { motion } from "framer-motion";
const KEYWORDS = [
{ text: "UTM", size: 18 },
{ text: "UAM", size: 22 },
{ text: "UTM", size: 22 },
{ text: "UATM", size: 24 },
{ text: "AI System", size: 15 },
{ text: "항공관제", size: 13 },

6
src/components/Footer.jsx

@ -11,10 +11,10 @@ const footerNav = [
],
},
{
title: "UAM/UATM",
title: "UTM/UATM",
items: [
{ label: "소개", to: "/uam/intro" },
{ label: "도입사례", to: "/uam/case" },
{ label: "소개", to: "/UTM/intro" },
{ label: "도입사례", to: "/UTM/case" },
],
},
{

16
src/components/Header.jsx

@ -32,25 +32,25 @@ const menuData = [
},
},
{
key: "uam",
label: "UAM/UATM",
to: "/uam",
panelTitle: "UAM / UATM",
key: "UTM",
label: "UTM/UATM",
to: "/UTM",
panelTitle: "UTM / UATM",
panelDesc: "도심 항공 모빌리티와 통합 항공 교통 관리 기술을 소개합니다.",
sections: [
{
title: "기술 소개",
items: [
{ label: "UAM/UATM 소개", to: "/uam/intro", desc: "도심 항공 모빌리티 핵심 기술" },
{ label: "도입사례", to: "/uam/case", desc: "주요 도입 및 운영 사례" },
{ label: "UTM/UATM 소개", to: "/UTM/intro", desc: "도심 항공 모빌리티 핵심 기술" },
{ label: "도입사례", to: "/UTM/case", desc: "주요 도입 및 운영 사례" },
],
},
],
featured: {
eyebrow: "Advanced Air Mobility",
title: "안전한 하늘길,\n기술로 완성합니다.",
text: "PAL Networks의 UAM·UATM 기술은 도심 상공의 안전 운항과 통합 관제를 실현합니다.",
cta: { label: "UAM/UATM 보기", to: "/uam" },
text: "PAL Networks의 UTM·UATM 기술은 도심 상공의 안전 운항과 통합 관제를 실현합니다.",
cta: { label: "UTM/UATM 보기", to: "/UTM" },
},
},
{

2
src/components/SubHero.jsx

@ -4,7 +4,7 @@ import { motion } from "framer-motion";
const menuMap = {
"/company": { label: "Company" },
"/uam": { label: "UAM / UATM" },
"/UTM": { label: "UTM / UATM" },
"/business": { label: "Business" },
"/solution": { label: "Solution" },
"/contact": { label: "Contact Us" },

54
src/components/main/MainUam.jsx

@ -1,16 +1,16 @@
import { useEffect, useRef } from "react";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import uamImg from "../../../public/images/uam-silver.png";
import UTMImg from "../../../public/images/UTM-silver.png";
gsap.registerPlugin(ScrollTrigger);
function MainUam() {
function MainUTM() {
const sectionRef = useRef(null);
const leftRef = useRef(null);
const rightRef = useRef(null);
const lineRef = useRef([]);
const dotRef = useRef(null);
const uamImageRef = useRef(null);
const UTMImageRef = useRef(null);
const canvasRef = useRef(null);
const isMobile = window.innerWidth <= 768;
@ -51,14 +51,7 @@ function MainUam() {
const steps = 200;
const ampScale = mobile ? 0.35 : 0.5 + scrollP * 0.7;
const pts = Array.from({ length: steps + 1 }, (_, s) => [
(s / steps) * W,
canvas.height * w.yRatio +
Math.sin((s / steps) * Math.PI * w.freq + ts * w.speed + w.phase) *
w.amp *
canvas.height *
ampScale,
]);
const pts = Array.from({ length: steps + 1 }, (_, s) => [(s / steps) * W, canvas.height * w.yRatio + Math.sin((s / steps) * Math.PI * w.freq + ts * w.speed + w.phase) * w.amp * canvas.height * ampScale]);
const alphaCenter = scrollP * (mobile ? 0.12 : 0.18);
const grad = c.createLinearGradient(0, 0, W, 0);
@ -89,14 +82,7 @@ function MainUam() {
const ampScale = mobile ? 0.35 : 0.5 + scrollP * 0.7;
const x = d.t * W;
const y =
canvas.height * d.wave.yRatio +
Math.sin(
d.t * Math.PI * d.wave.freq + ts * d.wave.speed + d.wave.phase,
) *
d.wave.amp *
canvas.height *
ampScale;
const y = canvas.height * d.wave.yRatio + Math.sin(d.t * Math.PI * d.wave.freq + ts * d.wave.speed + d.wave.phase) * d.wave.amp * canvas.height * ampScale;
const edgeFade = Math.sin(d.t * Math.PI);
const alpha = edgeFade * scrollP * 0.45;
if (alpha < 0.01) return;
@ -144,8 +130,8 @@ function MainUam() {
opacity: 0,
scale: 1,
});
gsap.set(".airspace-uam-content", { opacity: 0, y: 36 });
gsap.set(uamImageRef.current, { opacity: 0 });
gsap.set(".airspace-UTM-content", { opacity: 0, y: 36 });
gsap.set(UTMImageRef.current, { opacity: 0 });
const tl = gsap.timeline({
scrollTrigger: {
@ -165,11 +151,7 @@ function MainUam() {
ease: "none",
});
tl.to(
dotRef.current,
{ x: 0, opacity: 1, duration: 0.7, ease: "none" },
"<0.1",
);
tl.to(dotRef.current, { x: 0, opacity: 1, duration: 0.7, ease: "none" }, "<0.1");
tl.to(leftRef.current, { xPercent: -100, duration: 1, ease: "none" });
tl.to(rightRef.current, { xPercent: 0, duration: 1, ease: "none" }, "<");
@ -186,11 +168,7 @@ function MainUam() {
ease: "power2.inOut",
});
tl.to(
[".airspace-uam-content", uamImageRef.current],
{ opacity: 1, y: 0, duration: 0.8, ease: "power2.out" },
"-=0.35",
);
tl.to([".airspace-UTM-content", UTMImageRef.current], { opacity: 1, y: 0, duration: 0.8, ease: "power2.out" }, "-=0.35");
}, sectionRef);
return () => {
@ -211,8 +189,8 @@ function MainUam() {
<h2>드론 하늘길에서</h2>
</div>
<div className="airspace-panel airspace-panel--uam" ref={rightRef}>
<p>UAM SYSTEM</p>
<div className="airspace-panel airspace-panel--UTM" ref={rightRef}>
<p>UTM SYSTEM</p>
<h2>
도심 항공
<span className="airspace-mobile-br"> </span>
@ -233,13 +211,13 @@ function MainUam() {
</div>
<div className="airspace-moving-dot" ref={dotRef}>
<div className="airspace-dot-image" ref={uamImageRef}>
<img src={uamImg} alt="UAM Aircraft" />
<div className="airspace-dot-image" ref={UTMImageRef}>
<img src={UTMImg} alt="UTM Aircraft" />
</div>
</div>
<div className="airspace-uam-content">
<p>UAM NETWORK</p>
<div className="airspace-UTM-content">
<p>UTM NETWORK</p>
<h2>Urban Air Mobility</h2>
<span>
도심 버티포트, 운항 경로, 항공 교통 데이터를 <br />
@ -250,4 +228,4 @@ function MainUam() {
);
}
export default MainUam;
export default MainUTM;

52
src/components/main/MainUam2.jsx

@ -4,7 +4,7 @@ import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
function MainUam() {
function MainUTM() {
const sectionRef = useRef(null);
const overlayRef = useRef(null);
const titleRef = useRef(null);
@ -13,7 +13,7 @@ function MainUam() {
const items = [
{
label: "UAM NETWORK",
label: "UTM NETWORK",
title: "Urban Air Mobility",
desc: "도심 내 버티포트, 운항 경로, 항공 교통 데이터를 연결해 미래형 도심 항공 이동 환경을 구축합니다.",
},
@ -95,49 +95,45 @@ function MainUam() {
}, []);
return (
<section className="main-uam-section" ref={sectionRef}>
<div className="main-uam-screen-wipe" ref={overlayRef}>
<section className="main-UTM-section" ref={sectionRef}>
<div className="main-UTM-screen-wipe" ref={overlayRef}>
<span>FROM UTM</span>
<strong>TO UAM</strong>
<strong>TO UTM</strong>
</div>
<div className="main-uam-bg-grid" />
<div className="main-uam-light main-uam-light--a" />
<div className="main-uam-light main-uam-light--b" />
<div className="main-UTM-bg-grid" />
<div className="main-UTM-light main-UTM-light--a" />
<div className="main-UTM-light main-UTM-light--b" />
<div className="main-uam-inner">
<div className="main-uam-visual">
<div className="main-uam-route main-uam-route--a" />
<div className="main-uam-route main-uam-route--b" />
<div className="main-uam-route main-uam-route--c" />
<div className="main-UTM-inner">
<div className="main-UTM-visual">
<div className="main-UTM-route main-UTM-route--a" />
<div className="main-UTM-route main-UTM-route--b" />
<div className="main-UTM-route main-UTM-route--c" />
<div className="main-uam-node main-uam-node--a">V</div>
<div className="main-uam-node main-uam-node--b">P</div>
<div className="main-uam-node main-uam-node--c">C</div>
<div className="main-UTM-node main-UTM-node--a">V</div>
<div className="main-UTM-node main-UTM-node--b">P</div>
<div className="main-UTM-node main-UTM-node--c">C</div>
<div className="main-uam-vehicle" ref={vehicleRef}>
<div className="main-UTM-vehicle" ref={vehicleRef}>
<span />
</div>
</div>
<div className="main-uam-content" ref={titleRef}>
<p className="main-uam-eyebrow">UAM SYSTEM</p>
<div className="main-UTM-content" ref={titleRef}>
<p className="main-UTM-eyebrow">UTM SYSTEM</p>
<h2>
도심항공교통
<br />
UAM
UTM
</h2>
<p>
드론 관제에서 확장된 하늘길은 이제 도시의 이동 네트워크로
이어집니다. UAM은 버티포트, 항로, 운항 데이터를 하나의 흐름으로
연결합니다.
</p>
<p>드론 관제에서 확장된 하늘길은 이제 도시의 이동 네트워크로 이어집니다. UTM은 버티포트, 항로, 운항 데이터를 하나의 흐름으로 연결합니다.</p>
</div>
<div className="main-uam-panels">
<div className="main-UTM-panels">
{items.map((item, index) => (
<article
className="main-uam-panel"
className="main-UTM-panel"
key={item.label}
ref={(el) => {
panelsRef.current[index] = el;
@ -154,4 +150,4 @@ function MainUam() {
);
}
export default MainUam;
export default MainUTM;

36
src/css/main.css

@ -223,57 +223,57 @@ body{overflow-x:hidden;}
@keyframes utmWaveMove{0%{transform:translateX(-120%);}100%{transform:translateX(120%);}}
/* ─── uam ─── */
/* ─── UTM ─── */
.aurora-canvas {position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
.airspace-panel,
.airspace-lines,
.airspace-moving-dot,
.airspace-uam-content {position: relative; z-index: 1; }
.airspace-UTM-content {position: relative; z-index: 1; }
.airspace-transition-section{position:relative;min-height:100vh;overflow:hidden;background:radial-gradient(circle at 12% 8%,rgba(26,31,94,.04),transparent 30%),radial-gradient(circle at 88% 10%,rgba(26,31,94,.035),transparent 32%),linear-gradient(180deg,#ffffff 0%,#f7f9ff 48%,#ffffff 100%);}
.airspace-transition-section::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.72) 0%,rgba(255,255,255,.24) 20%,rgba(255,255,255,.08) 50%,rgba(255,255,255,.24) 80%,rgba(255,255,255,.72) 100%);pointer-events:none;}
.airspace-panel{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:0 8vw;}
.airspace-panel--utm{background:transparent;}
.airspace-panel--uam{background:radial-gradient(circle at 72% 34%,rgba(112,180,255,.12),transparent 34%),radial-gradient(circle at 42% 78%,rgba(26,31,94,.08),transparent 28%);}
.airspace-panel--UTM{background:radial-gradient(circle at 72% 34%,rgba(112,180,255,.12),transparent 34%),radial-gradient(circle at 42% 78%,rgba(26,31,94,.08),transparent 28%);}
.airspace-panel p{margin:0 0 18px;font-size:12px;font-weight:800;letter-spacing:.26em;color:#1a1f5e;}
.airspace-panel h2{margin:0;max-width:760px;font-size:clamp(48px,6vw,96px);font-weight:800;line-height:.96;letter-spacing:-.08em;color:#0e1120;}
.airspace-lines{position:absolute;inset:0;z-index:5;pointer-events:none;}
.airspace-moving-dot{position:absolute;left:68%;top:49%;z-index:6;width:54px;height:54px;border-radius:50%;background:#1a1f5e;border:1px solid rgba(26,31,94,.14);box-shadow:0 0 0 12px rgba(26,31,94,.06),0 20px 50px rgba(26,31,94,.18);transform-origin:center center;}
.airspace-moving-dot::before{content:"";position:absolute;inset:20px;border-radius:50%;background:#ffffff;opacity:.9;}
.airspace-uam-content{position:absolute;left:8vw;top:50%;transform:translateY(-50%);z-index:20;max-width:760px;color:#ffffff;pointer-events:none;}
.airspace-uam-content p{margin:0 0 18px;font-size:12px;font-weight:800;letter-spacing:.28em;color:rgba(255,255,255,.72);}
.airspace-uam-content h2{margin:0 0 24px;font-size:clamp(54px,7vw,104px);font-weight:800;line-height:.92;letter-spacing:-.07em;color:#ffffff;}
.airspace-uam-content span{display:block;max-width:560px;font-size:18px;line-height:1.8;font-weight:500;color:rgba(255,255,255,.72);}
.airspace-UTM-content{position:absolute;left:8vw;top:50%;transform:translateY(-50%);z-index:20;max-width:760px;color:#ffffff;pointer-events:none;}
.airspace-UTM-content p{margin:0 0 18px;font-size:12px;font-weight:800;letter-spacing:.28em;color:rgba(255,255,255,.72);}
.airspace-UTM-content h2{margin:0 0 24px;font-size:clamp(54px,7vw,104px);font-weight:800;line-height:.92;letter-spacing:-.07em;color:#ffffff;}
.airspace-UTM-content span{display:block;max-width:560px;font-size:18px;line-height:1.8;font-weight:500;color:rgba(255,255,255,.72);}
.airspace-dot-image{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;z-index:2;pointer-events:none;}
.airspace-dot-image img{width:32%;height:32%;object-fit:contain;filter:drop-shadow(0 8px 32px rgba(26,31,94,.28));animation:float-uam 5s ease-in-out infinite;will-change:transform;}
.airspace-dot-image img{width:32%;height:32%;object-fit:contain;filter:drop-shadow(0 8px 32px rgba(26,31,94,.28));animation:float-UTM 5s ease-in-out infinite;will-change:transform;}
.airspace-mobile-br{display:none;}
@media (max-width:768px){
.airspace-moving-dot{left:88%;top:43%;transform:translate(-50%,-50%);}
.airspace-dot-uam{width:110px;}
.airspace-uam-content{left:0;right:0;top:auto;bottom:7%;transform:none;padding:0 6vw;max-width:100%;}
.airspace-uam-content h2{font-size:clamp(38px,10vw,58px);line-height:.95;letter-spacing:-.07em;word-break:keep-all;}
.airspace-uam-content span{font-size:14px;line-height:1.7;word-break:keep-all;}
.airspace-dot-UTM{width:110px;}
.airspace-UTM-content{left:0;right:0;top:auto;bottom:7%;transform:none;padding:0 6vw;max-width:100%;}
.airspace-UTM-content h2{font-size:clamp(38px,10vw,58px);line-height:.95;letter-spacing:-.07em;word-break:keep-all;}
.airspace-UTM-content span{font-size:14px;line-height:1.7;word-break:keep-all;}
.airspace-dot-image img{width: 16px;height:16%}
.airspace-dot-image{transform:translateX(-5%);}
}
@media (min-width:769px) and (max-width:1024px){
.airspace-moving-dot{left:82%;top:50%;transform:translate(-50%,-50%);}
.airspace-dot-uam{width:280px;}
.airspace-uam-content{left:4%;right:auto;top:auto;bottom:10%;transform:none;padding:0 4vw;max-width:60%;}
.airspace-uam-content h2{font-size:clamp(44px,7vw,72px);line-height:.95;letter-spacing:-.07em;word-break:keep-all;}
.airspace-uam-content span{font-size:15px;line-height:1.7;word-break:keep-all;}
.airspace-dot-UTM{width:280px;}
.airspace-UTM-content{left:4%;right:auto;top:auto;bottom:10%;transform:none;padding:0 4vw;max-width:60%;}
.airspace-UTM-content h2{font-size:clamp(44px,7vw,72px);line-height:.95;letter-spacing:-.07em;word-break:keep-all;}
.airspace-UTM-content span{font-size:15px;line-height:1.7;word-break:keep-all;}
.airspace-dot-image img{width:16px;height:auto;}
.airspace-dot-image{transform:translateX(-6%);}
}
@keyframes uamShine{0%,48%{transform:translateX(-120%);opacity:0;}58%{opacity:.75;}76%,100%{transform:translateX(120%);opacity:0;}}
@keyframes float-uam{0%{transform:translateY(0px);}48%{transform:translateY(-1px);}100%{transform:translateY(0px);}}
@keyframes UTMShine{0%,48%{transform:translateX(-120%);opacity:0;}58%{opacity:.75;}76%,100%{transform:translateX(120%);opacity:0;}}
@keyframes float-UTM{0%{transform:translateY(0px);}48%{transform:translateY(-1px);}100%{transform:translateY(0px);}}
/* solution */
.main-solution-section{position:relative;height:100dvh;min-height:100dvh;overflow:hidden;padding:120px 8vw 110px;background:linear-gradient(180deg,#ffffff 0%,#f7f9ff 52%,#ffffff 100%);}

6
src/pages/IntroPage.jsx

@ -3,8 +3,8 @@ function IntroPage() {
<main className="sub-page">
<section className="sub-visual">
<div className="inner">
<h2>UAM/UATM 소개</h2>
<p>Urban Air Mobility &amp; UAM Air Traffic Management</p>
<h2>UTM/UATM 소개</h2>
<p>Urban Air Mobility &amp; UTM Air Traffic Management</p>
</div>
</section>
@ -14,7 +14,7 @@ function IntroPage() {
<p>
안전한 도심 상공 운항과 통합 관제를 실현하는
<br />
PAL Networks의 UAM/UATM 기술을 소개합니다.
PAL Networks의 UTM/UATM 기술을 소개합니다.
</p>
</div>
</section>

8
src/pages/MainPage copy 2.jsx

@ -65,7 +65,7 @@ function MainPage() {
<span className="reveal-text">INTELLIGENT AIRSPACE.</span>
</h1>
<p className="desc">
IBE 솔루션을 넘어 UTM, SWIM, UAM까지.
IBE 솔루션을 넘어 UTM, SWIM, UTM까지.
<br />
우리는 지능형 공역 관리 시스템의 미래를 구축합니다.
</p>
@ -75,7 +75,7 @@ function MainPage() {
</div>
<div className="next-content">
<h2>The Future of UTM & UAM</h2>
<h2>The Future of UTM & UTM</h2>
</div>
</section>
@ -87,8 +87,8 @@ function MainPage() {
</div>
</section>
<section className="content-section info-uam">
<h2>UAM Infrastructure</h2>
<section className="content-section info-UTM">
<h2>UTM Infrastructure</h2>
<p>Building the future of Urban Air Mobility...</p>
</section>
</main>

4
src/pages/MainPage.jsx

@ -1,6 +1,6 @@
import MainVisual from "../components/main/MainVisual";
import MainUtm from "../components/main/MainUtm";
import MainUam from "../components/main/MainUam";
import MainUTM from "../components/main/MainUTM";
import MainSolution from "../components/main/MainSolution";
import MainNews from "../components/main/MainNews";
import MainContact from "../components/main/MainContact";
@ -10,7 +10,7 @@ function MainPage() {
<main className="main-page">
<MainVisual />
<MainUtm />
<MainUam />
<MainUTM />
<MainSolution />
<MainNews />
<MainContact />

2
src/pages/business/RndPage.jsx

@ -21,7 +21,7 @@ function RndPage() {
<div className="sub-content">
<section className="sub-section">
<span className="sub-section-eyebrow sub-fade-in">UAM/UATM 소개</span>
<span className="sub-section-eyebrow sub-fade-in">UTM/UATM 소개</span>
{/* <main className="sub-page">
<section className="sub-visual">
<div className="inner">

10
src/pages/company/HistoryPage.jsx

@ -15,19 +15,19 @@ const HISTORY = {
"2020's": [
{
year: "2025",
items: ["KAC 드론교통관리(UTM) 시스템 구축사업 (한국공항공사)", "항공우주 부트캠프사업단 홈페이지 구축 (청주대학교)", "DIAMOND DA40NG Simulator 구축 (청주대학교)", "UAM 시뮬레이터를 활용한 비행관제 시스템 전시 (부산 벡스코 드론쇼코리아)", "인천 파브(PAV) 기업대상 기업홍보 지원사업 선정 (인천테크노파크)", "파브(PAV) 부품기술개발 지원사업 (인천테크노파크)", "감항인증 전문교육과정 위탁사업 홈페이지 운영 (방위산업청)", "공공용 UTM 시작품 정보공유체계 개발 (한국공항공사)", "IBE 개발 및 안정화 (섬에어)", "기술혁신형 중소기업 이노비즈 취득"],
items: ["KAC 드론교통관리(UTM) 시스템 구축사업 (한국공항공사)", "항공우주 부트캠프사업단 홈페이지 구축 (청주대학교)", "DIAMOND DA40NG Simulator 구축 (청주대학교)", "UTM 시뮬레이터를 활용한 비행관제 시스템 전시 (부산 벡스코 드론쇼코리아)", "인천 파브(PAV) 기업대상 기업홍보 지원사업 선정 (인천테크노파크)", "파브(PAV) 부품기술개발 지원사업 (인천테크노파크)", "감항인증 전문교육과정 위탁사업 홈페이지 운영 (방위산업청)", "공공용 UTM 시작품 정보공유체계 개발 (한국공항공사)", "IBE 개발 및 안정화 (섬에어)", "기술혁신형 중소기업 이노비즈 취득"],
},
{
year: "2024",
items: ["강화도 화개정원 유지보수 (강화군)", "타이드스퀘어 PRIVIA 항공 개발 업무 (타이드스퀘어)", "항공교통데이터시스템 (아이비리더스)", "24년 군 감항인증 전문교육과정 홈페이지 유지보수 (방위사업청)", "HILS 기반 PAV 부품 성능시험 시스템 (인하공업전문대학)", "PAV 원격 모니터링 시스템 (인천테크노파크)", "드론 지형추적비행 매뉴얼 개발 용역 (소방청 국립소방연구소)", "UAM 팀코리아(UTK) 워킹그룹 참여 (국토교통부)", "KAC 드론교통관리(UTM) 시스템 구축사업 (한국공항공사)", "도심항공교통(UAM, AAM등) 관련 사업 분석 위탁용역 (인천테크노파크)"],
items: ["강화도 화개정원 유지보수 (강화군)", "타이드스퀘어 PRIVIA 항공 개발 업무 (타이드스퀘어)", "항공교통데이터시스템 (아이비리더스)", "24년 군 감항인증 전문교육과정 홈페이지 유지보수 (방위사업청)", "HILS 기반 PAV 부품 성능시험 시스템 (인하공업전문대학)", "PAV 원격 모니터링 시스템 (인천테크노파크)", "드론 지형추적비행 매뉴얼 개발 용역 (소방청 국립소방연구소)", "UTM 팀코리아(UTK) 워킹그룹 참여 (국토교통부)", "KAC 드론교통관리(UTM) 시스템 구축사업 (한국공항공사)", "도심항공교통(UTM, AAM등) 관련 사업 분석 위탁용역 (인천테크노파크)"],
},
{
year: "2023",
items: ["섬에어(주) 항공운항 예약시스템 구축", "남원시 드론 실증도시 구축사업 협약 체결 (국토교통부)", "팔네트웍스와 베셀 MOU 체결", "UAM 운항 공역 비행체 감시 기술개발 사전기획 (인천테크노파크)", "블록체인 기반 드론교통관리(UTM) 시스템 정보공유체계 개발 (한국공항공사)", "UAM 컨설팅 (SKT)", "항공모빌리티(PAV) 부품 기술개발 지원사업 (인천테크노파크)", "LAANC/드론/PAV/UAM 비행상황관리 시스템 전시 (서울 ADEX 2023)", "UAM 비행상황관리 시스템 전시 (2023 K-UAM CONFEX)", "PAV GNSS 시뮬레이터 1세트 등 3종 제작 구매 (인하공업전문대)"],
items: ["섬에어(주) 항공운항 예약시스템 구축", "남원시 드론 실증도시 구축사업 협약 체결 (국토교통부)", "팔네트웍스와 베셀 MOU 체결", "UTM 운항 공역 비행체 감시 기술개발 사전기획 (인천테크노파크)", "블록체인 기반 드론교통관리(UTM) 시스템 정보공유체계 개발 (한국공항공사)", "UTM 컨설팅 (SKT)", "항공모빌리티(PAV) 부품 기술개발 지원사업 (인천테크노파크)", "LAANC/드론/PAV/UTM 비행상황관리 시스템 전시 (서울 ADEX 2023)", "UTM 비행상황관리 시스템 전시 (2023 K-UTM CONFEX)", "PAV GNSS 시뮬레이터 1세트 등 3종 제작 구매 (인하공업전문대)"],
},
{
year: "2022",
items: ["현대자동차 QR 코드 출입시스템 운영 및 유지보수 (현대자동차)", "군감항인증전문교육과정위탁사업 (방위산업청)", "항공모빌리티(PAV) 부품 기술개발 (인천테크노파크)", "XR 메타버스 인천이음 프로젝트 활용확산 콘텐츠 개발 (인천테크노파크)", "드론교통관리(UTM) 시스템 설계", "남원시 항공산업(드론·UAM) 클러스터 조성 연구용역", "K-UAM CONFEX 전시회 참가 (무인비행장치 관제시스템)", "남원시 항공산업 업무협약"],
items: ["현대자동차 QR 코드 출입시스템 운영 및 유지보수 (현대자동차)", "군감항인증전문교육과정위탁사업 (방위산업청)", "항공모빌리티(PAV) 부품 기술개발 (인천테크노파크)", "XR 메타버스 인천이음 프로젝트 활용확산 콘텐츠 개발 (인천테크노파크)", "드론교통관리(UTM) 시스템 설계", "남원시 항공산업(드론·UTM) 클러스터 조성 연구용역", "K-UTM CONFEX 전시회 참가 (무인비행장치 관제시스템)", "남원시 항공산업 업무협약"],
},
{
year: "2021",
@ -157,7 +157,7 @@ export default function HistoryPage() {
</em>
</p>
<em className="ht-header-sub">
항공 IT 소프트웨어 개발부터 드론·UAM·UTM 미래 모빌리티까지,
항공 IT 소프트웨어 개발부터 드론·UTM·UTM 미래 모빌리티까지,
<br />
하늘길을 개척해온 팔네트웍스의 10 발자취를 담았습니다.
</em>

15
src/pages/uam/CasePage.jsx → src/pages/utm/CasePage.jsx

@ -3,11 +3,14 @@ import useFadeIn from "../../hooks/useFadeIn";
function CasePage() {
const ref = useFadeIn();
const UTM_NAV = [
{ label: "UTM/UATM 소개", to: "/UTM/intro" },
{ label: "도입사례", to: "/UTM/case" },
];
return (
<article ref={ref}>
<SubHero
label="UAM/UATM"
label="UTM/UATM"
title={
<>
<span style={{ color: "#111" }}>구축 운영</span>
@ -15,8 +18,8 @@ function CasePage() {
<em>도입사례</em>
</>
}
desc="PAL Networks의 UAM/UATM 기술이 적용된 실제 사례를 소개합니다."
// navItems={}
desc="PAL Networks의 UTM/UATM 기술이 적용된 실제 사례를 소개합니다."
navItems={UTM_NAV}
/>
<div className="sub-content">
@ -26,7 +29,7 @@ function CasePage() {
<section className="sub-visual">
<div className="inner">
<h2>도입사례</h2>
<p>UAM/UATM Case Studies</p>
<p>UTM/UATM Case Studies</p>
</div>
</section>
@ -34,7 +37,7 @@ function CasePage() {
<div className="inner">
<h3>주요 도입 운영 사례</h3>
<p>
PAL Networks의 UAM/UATM 기술이 적용된 실제 사례를 소개합니다.
PAL Networks의 UTM/UATM 기술이 적용된 실제 사례를 소개합니다.
</p>
</div>
</section>

23
src/pages/uam/IntroPage.jsx → src/pages/utm/IntroPage.jsx

@ -3,30 +3,33 @@ import useFadeIn from "../../hooks/useFadeIn";
function IntroPage() {
const ref = useFadeIn();
const UTM_NAV = [
{ label: "UTM/UATM 소개", to: "/UTM/intro" },
{ label: "도입사례", to: "/UTM/case" },
];
return (
<article ref={ref}>
<SubHero
label="BUSINESS"
title={
<>
<span style={{ color: "#111" }}>미래 항공 모빌리티</span>
<br />
<em>UAM/UATM</em>
{/* <span style={{ color: "#111" }}> </span>
<br /> */}
<em>UTM/UATM</em>
</>
}
desc="안전한 도심 상공 운항과 통합 관제를 실현하는 PAL Networks의 UAM/UATM 기술을 소개합니다."
// navItems={}
// desc=" PAL Networks UTM/UATM ."
navItems={UTM_NAV}
/>
<div className="sub-content">
<section className="sub-section">
<span className="sub-section-eyebrow sub-fade-in">UAM/UATM 소개</span>
<span className="sub-section-eyebrow sub-fade-in">UTM/UATM 소개</span>
{/* <main className="sub-page">
<section className="sub-visual">
<div className="inner">
<h2>UAM/UATM 소개</h2>
<p>Urban Air Mobility &amp; UAM Air Traffic Management</p>
<h2>UTM/UATM 소개</h2>
<p>Urban Air Mobility &amp; UTM Air Traffic Management</p>
</div>
</section>
@ -36,7 +39,7 @@ function IntroPage() {
<p>
안전한 도심 상공 운항과 통합 관제를 실현하는
<br />
PAL Networks의 UAM/UATM 기술을 소개합니다.
PAL Networks의 UTM/UATM 기술을 소개합니다.
</p>
</div>
</section>
Loading…
Cancel
Save