GitHub - fc-micro-frontends/career-up at step5
/* career-up/packages/ui-kit/src/global.css */
:root {
--white: #fff;
--system-gray-60-a20: rgb(140 140 140/0.2);
}
body {
font-family: Arial, Helvetica, sans-serif;
margin: 0;
padding: 0;
background-color: #f4f2ee;
}
➜ pnpm build
➜ pnpm dev
// career-up/apps/shell/src/bootstrap.tsx
import React from "react";
import { createRoot } from "react-dom/client";
import App from "./App";
import "@career-up/ui-kit/index.css";
**import "./index.css";**
createRoot(document.getElementById("app")!).render(<App />);
/* career-up/apps/shell/src/index.css */
.global-nav {
background-color: var(--white);
left: 0;
position: fixed;
top: 0;
width: 100vw;
z-index: 105;
border-bottom: 1px solid var(--system-gray-60-a20);
}
.global-nav-content {
align-items: center;
display: flex;
margin: 0 auto;
min-height: 100%;
width: 1128px;
}
.global-nav-logo {
height: 30px;
display: flex;
align-items: center;
gap: 16px;
font-size: 17px;
text-decoration: none;
color: black;
}
.global-nav-nav {
margin-left: auto;
min-height: 52px;
}
.global-nav-items {
display: flex;
flex-wrap: nowrap;
list-style-type: none;
opacity: 1;
margin: 0;
}
.global-nav-item {
display: flex;
align-items: center;
}
.global-nav-link {
align-items: center;
background: transparent;
cursor: pointer;
display: flex;
flex-direction: column;
font-size: 1.2rem;
font-weight: 400;
justify-content: center;
text-align: center;
min-height: 51px;
min-width: 80px;
position: relative;
text-decoration: none;
color: rgb(0 0 0/0.6);
border-bottom: 2px solid white;
}
.global-nav-link.active {
color: rgb(0 0 0/0.9);
border-bottom: 2px solid rgb(0 0 0/0.9);
}
.global-nav-link-text {
font-size: 13px;
}
.global-container {
padding-top: 53px;
}
// career-up/apps/shell/src/constants/prefix.ts
export const appPostingPrefix = "posting";
export const appPostingBasename = `/${appPostingPrefix}`;
export const appNetworkPrefix = "network";
export const appNetworkBasename = `/${appNetworkPrefix}`;
export const appEduPrefix = "edu";
export const appEduBasename = `/${appEduPrefix}`;
export const appJobPrefix = "job";
export const appJobBasename = `/${appJobPrefix}`;
// career-up/apps/shell/src/components/layout.tsx
import React from "react";
import { Link, NavLink, Outlet } from "react-router-dom";
import {
appEduBasename,
appJobBasename,
appNetworkBasename,
appPostingBasename,
} from "../constants/prefix";
import { Icon } from "@career-up/ui-kit";
const Layout = () => {
return (
<div>
<header className="global-nav">
<div className="global-nav-content">
<Link className="global-nav-logo" to="/">
<svg
data-v-62b4fdfc=""
width="30"
height="30"
viewBox="0 0 76 76"
fill="none"
xmlns="<http://www.w3.org/2000/svg>"
>
<g data-v-62b4fdfc="" clipPath="url(#clip0_2879_347)">
<path
data-v-62b4fdfc=""
d="M75.461 37.722a.219.219 0 00.327-.19C75.575 16.805 58.702.069 37.928.069a37.617 37.617 0 00-18.58 4.88.22.22 0 000 .38L75.46 37.722zM5.328 19.347a.22.22 0 00-.38 0 37.617 37.617 0 00-4.88 18.58c0 20.775 16.737 37.64 37.458 37.86a.219.219 0 00.19-.326L5.327 19.347zM12.326 12.47l35.666 61.776a.22.22 0 00.25.099c12.616-3.568 22.543-13.495 26.11-26.11a.22.22 0 00-.098-.25L12.47 12.324c-.09-.052-.197.054-.144.145z"
fill="#FC1C49"
></path>
</g>
<defs data-v-62b4fdfc="">
<clipPath data-v-62b4fdfc="" id="clip0_2879_347">
<path
data-v-62b4fdfc=""
fill="#fff"
d="M0 0h500v75.901H0z"
></path>
</clipPath>
</defs>
</svg>
<span>Career Up</span>
</Link>
<nav className="global-nav-nav">
<ul className="global-nav-items">
<li className="global-nav-item">
<NavLink
className="global-nav-link"
to={`${appPostingBasename}`}
>
<Icon.Home />
<span className="global-nav-link-text">홈</span>
</NavLink>
</li>
<li className="global-nav-item">
<NavLink
className="global-nav-link"
to={`${appNetworkBasename}`}
>
<Icon.UserFriends />
<span className="global-nav-link-text">인맥</span>
</NavLink>
</li>
<li className="global-nav-item">
<NavLink className="global-nav-link" to={`${appEduBasename}`}>
<Icon.LaptopCode />
<span className="global-nav-link-text">교육</span>
</NavLink>
</li>
<li className="global-nav-item">
<NavLink className="global-nav-link" to={`${appJobBasename}`}>
<Icon.Briefcase />
<span className="global-nav-link-text">채용공고</span>
</NavLink>
</li>
</ul>
</nav>
</div>
</header>
<div className="global-container">
<Outlet />
</div>
</div>
);
};
export default Layout;