From da10f1795a472c662aab3c2cd9ce6dbde9978a6c Mon Sep 17 00:00:00 2001 From: GUARDiA AutoDeploy Date: Wed, 3 Jun 2026 20:04:20 +0900 Subject: [PATCH] =?UTF-8?q?feat(icons):=20=ED=99=88=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=A0=84=EC=B2=B4=20=EB=9D=BC=EC=9D=B8=20SVG=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=20=EC=A0=81=EC=9A=A9=20[auto-sync]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package-lock.json | 10 ++ frontend/package.json | 23 ++-- frontend/src/components/Icons.jsx | 121 ++++++++++++++++++++++ frontend/src/components/layout/Footer.jsx | 22 ++++ frontend/src/pages/Company.jsx | 23 ++-- frontend/src/pages/Contact.jsx | 9 +- frontend/src/pages/GuardiaDetail.jsx | 21 ++-- frontend/src/pages/Recruit.jsx | 25 ++--- 8 files changed, 206 insertions(+), 48 deletions(-) create mode 100644 frontend/src/components/Icons.jsx diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 6641d05..923b577 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,6 +12,7 @@ "react": "^18.3.1", "react-countup": "^6.5.3", "react-dom": "^18.3.1", + "react-icons": "^5.6.0", "react-intersection-observer": "^9.10.3", "react-router-dom": "^6.23.1", "react-scroll": "^1.9.0", @@ -1901,6 +1902,15 @@ "react": "^18.3.1" } }, + "node_modules/react-icons": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.6.0.tgz", + "integrity": "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==", + "license": "MIT", + "peerDependencies": { + "react": "*" + } + }, "node_modules/react-intersection-observer": { "version": "9.16.0", "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-9.16.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 07a25ea..6fdbba3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,24 +3,25 @@ "version": "1.0.0", "private": true, "scripts": { - "dev": "vite", + "dev": "vite", "build": "vite build", "preview": "vite preview" }, "dependencies": { - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^6.23.1", - "axios": "^1.7.2", - "swiper": "^11.1.4", + "axios": "^1.7.2", + "react": "^18.3.1", + "react-countup": "^6.5.3", + "react-dom": "^18.3.1", + "react-icons": "^5.6.0", "react-intersection-observer": "^9.10.3", - "react-countup": "^6.5.3", - "react-scroll": "^1.9.0" + "react-router-dom": "^6.23.1", + "react-scroll": "^1.9.0", + "swiper": "^11.1.4" }, "devDependencies": { - "@types/react": "^18.3.3", - "@types/react-dom": "^18.3.0", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.0", - "vite": "^5.2.11" + "vite": "^5.2.11" } } diff --git a/frontend/src/components/Icons.jsx b/frontend/src/components/Icons.jsx new file mode 100644 index 0000000..6cd6a0b --- /dev/null +++ b/frontend/src/components/Icons.jsx @@ -0,0 +1,121 @@ +/** + * ZioInfo 라인 아이콘 라이브러리 — 모두 직접 그린 SVG + * stroke 기반, strokeLinecap/Join=round, fill=none + */ + +const D = { size: 22, sw: 1.8 }; + +const Ico = ({ size = D.size, color = 'currentColor', sw = D.sw, children, ...p }) => ( + + {children} + +); + +/* ── 회사/조직 ── */ +export const IconBuilding = p => ; +export const IconUser = p => ; +export const IconUsers = p => ; +export const IconCEO = p => ; +export const IconTeam = p => ; + +/* ── 연락처 ── */ +export const IconPhone = p => ; +export const IconEmail = p => ; +export const IconMapPin = p => ; +export const IconClock = p => ; +export const IconFax = p => ; + +/* ── 핵심 가치 ── */ +export const IconTarget = p => ; +export const IconRocket = p => ; +export const IconHandshake= p => ; +export const IconLeaf = p => ; +export const IconTrophy = p => ; +export const IconStar = p => ; +export const IconAward = p => ; + +/* ── AI / 기술 ── */ +export const IconAI = p => ; +export const IconBrain = p => ; +export const IconNetwork = p => ; +export const IconCode = p => ; +export const IconZap = p => ; +export const IconCpu = p => ; + +/* ── 인프라/서버 ── */ +export const IconServer = p => ; +export const IconCloud = p => ; +export const IconDatabase = p => ; +export const IconHardDrive= p => ; +export const IconGlobe = p => ; + +/* ── 보안 ── */ +export const IconShield = p => ; +export const IconLock = p => ; +export const IconKey = p => ; +export const IconEye = p => ; + +/* ── 문서/콘텐츠 ── */ +export const IconFileText = p => ; +export const IconClipboard= p => ; +export const IconBook = p => ; +export const IconNewspaper= p => ; +export const IconDownload = p => ; + +/* ── 분석/차트 ── */ +export const IconBarChart = p => ; +export const IconTrendUp = p => ; +export const IconPieChart = p => ; +export const IconActivity = p => ; + +/* ── 비즈니스 ── */ +export const IconBriefcase= p => ; +export const IconMoney = p => ; +export const IconShake = p => ; +export const IconGift = p => ; + +/* ── UI/인터페이스 ── */ +export const IconSearch = p => ; +export const IconMenu = p => ; +export const IconX = p => ; +export const IconCheck = p => ; +export const IconCheckCircle = p => ; +export const IconArrowRight = p => ; +export const IconArrowDown = p => ; +export const IconChevronDown = p => ; +export const IconExternal = p => ; +export const IconPlus = p => ; +export const IconSettings = p => ; + +/* ── 채용/복리후생 ── */ +export const IconHome = p => ; +export const IconGradCap = p => ; +export const IconHospital = p => ; +export const IconUtensils = p => ; +export const IconParty = p => ; +export const IconCelebrate= p => ; +export const IconLaptop = p => ; + +/* ── 솔루션/제품 ── */ +export const IconPuzzle = p => ; +export const IconLayers = p => ; +export const IconGovt = p => ; +export const IconMobile = p => ; +export const IconPalette = p => ; +export const IconWrench = p => ; +export const IconLink = p => ; +export const IconShuffle = p => ; + +/* ── 채팅/메시지 ── */ +export const IconMessage = p => ; +export const IconMic = p => ; +export const IconSend = p => ; + +/* ── 기타 ── */ +export const IconBulb = p => ; +export const IconFlag = p => ; +export const IconBolt = p => ; +export const IconFire = p => ; +export const IconGithub = p => ; +export const IconCopyright= p => ; diff --git a/frontend/src/components/layout/Footer.jsx b/frontend/src/components/layout/Footer.jsx index 940a4a6..17ccfd1 100644 --- a/frontend/src/components/layout/Footer.jsx +++ b/frontend/src/components/layout/Footer.jsx @@ -1,6 +1,7 @@ import React from 'react'; import { Link } from 'react-router-dom'; import './Footer.css'; +import { IconPhone, IconEmail, IconMapPin, IconFax, IconGlobe, IconShield, IconCheckCircle } from '../Icons'; const FOOTER_MENUS = [ { @@ -60,17 +61,38 @@ export default function Footer() {
{v.desc}