diff --git a/packages/web/package.json b/packages/web/package.json
index 65de8c5..ce07b5d 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -20,6 +20,7 @@
"@mui/material": "5.15.12",
"@mui/material-nextjs": "5.15.11",
"@tanstack/react-query": "^5.28.4",
+ "@tanstack/react-table": "^8.20.5",
"axios": "^1.6.7",
"axios-mock-adapter": "^1.22.0",
"classnames": "^2.3.2",
diff --git a/packages/web/src/app/page.tsx b/packages/web/src/app/page.tsx
index 539821c..50bab0b 100644
--- a/packages/web/src/app/page.tsx
+++ b/packages/web/src/app/page.tsx
@@ -1,4 +1,6 @@
"use client";
-const Home = () =>
Welcome to SPARCS Students!
;
+import MainPageMainFrame from "../features/landing/frames/MainFrame";
+
+const Home = () => ;
export default Home;
diff --git a/packages/web/src/common/components/Buttons/TextButton.tsx b/packages/web/src/common/components/Buttons/TextButton.tsx
index 2bac887..4995150 100644
--- a/packages/web/src/common/components/Buttons/TextButton.tsx
+++ b/packages/web/src/common/components/Buttons/TextButton.tsx
@@ -9,13 +9,14 @@ const StyledTextButton = styled.button`
background: none;
border: none;
color: ${({ theme, disabled }) =>
- disabled ? theme.colors.GRAY[100] : theme.colors.PRIMARY};
+ disabled ? theme.colors.GRAY[100] : theme.colors.WHITE};
cursor: ${({ disabled }) => (disabled ? "not-allowed" : "pointer")};
font-size: 16px;
line-height: 20px;
- font-weight: ${({ theme }) => theme.fonts.WEIGHT.MEDIUM};
+ font-weight: ${({ theme }) => theme.fonts.WEIGHT.REGULAR};
font-family: ${({ theme }) => theme.fonts.FAMILY.PRETENDARD};
text-decoration: underline;
+ flex-shrink: 0;
`;
interface TextButtonProps {
diff --git a/packages/web/src/common/components/Table/TableCell.tsx b/packages/web/src/common/components/Table/TableCell.tsx
index 9d03900..361cf13 100644
--- a/packages/web/src/common/components/Table/TableCell.tsx
+++ b/packages/web/src/common/components/Table/TableCell.tsx
@@ -18,13 +18,13 @@ const CommonCellWrapper = styled.div<{
width: ${({ width }) => (typeof width === "number" ? `${width}px` : width)};
min-width: ${({ minWidth }) => `${minWidth}px`};
display: flex;
- justify-content: center;
- align-items: center;
- height: 48px;
- padding: 12px 8px;
+ justify-content: flex-start;
+ align-items: flex-start;
+ height: 40px;
+ padding: 8px 20px;
font-family: ${({ theme }) => theme.fonts.FAMILY.PRETENDARD};
background-color: ${({ theme, isHeader }) =>
- isHeader ? theme.colors.PRIMARY : "transparent"};
+ isHeader ? theme.colors.GREEN[600] : "transparent"};
`;
const CellText = styled.div<{ isGray: boolean }>`
@@ -41,6 +41,7 @@ const CellText = styled.div<{ isGray: boolean }>`
const HeaderInner = styled.div`
font-weight: ${({ theme }) => theme.fonts.WEIGHT.MEDIUM};
color: ${({ theme }) => theme.colors.WHITE};
+ width: 100%;
`;
const SortWrapper = styled.div`
@@ -54,7 +55,7 @@ const SortWrapper = styled.div`
const TableCell: React.FC = ({
type,
children,
- width = "150px",
+ width = "567px",
minWidth = 100,
}) => {
const isHeader = type === "Header" || type === "HeaderSort";
diff --git "a/packages/web/src/features/landing/components/\bSingleColumnTable.tsx" "b/packages/web/src/features/landing/components/\bSingleColumnTable.tsx"
new file mode 100644
index 0000000..087b457
--- /dev/null
+++ "b/packages/web/src/features/landing/components/\bSingleColumnTable.tsx"
@@ -0,0 +1,80 @@
+import React from "react";
+import styled from "styled-components";
+import TableCell from "@sparcs-students/web/common/components/Table/TableCell";
+import { Typography } from "@mui/material";
+import TextButton from "@sparcs-students/web/common/components/Buttons/TextButton";
+
+interface TableRowData {
+ id: string;
+ contents: string;
+}
+
+const data: TableRowData[] = [
+ { id: "1", contents: "첫 번째 내용" },
+ { id: "2", contents: "두 번째 내용" },
+ { id: "3", contents: "세 번째 내용" },
+];
+
+const TableWrapper = styled.div`
+ width: 100%;
+ max-width: 567px;
+ border-radius: 4px;
+ overflow: hidden;
+`;
+
+const HeaderWrapper = styled.div`
+ width: 100%;
+ align-self: stretch;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+`;
+
+const ContentsWrapper = styled.div`
+ width: 100%;
+ height: 100%;
+ display: flex;
+ justify-content: flex-start;
+`;
+
+const TableRow = styled.div`
+ display: flex;
+ cursor: pointer;
+ border-bottom: 2px solid ${({ theme }) => theme.colors.GRAY[100]};
+ border-left: 2px solid ${({ theme }) => theme.colors.GRAY[100]};
+ border-right: 2px solid ${({ theme }) => theme.colors.GRAY[100]};
+ &:first-child {
+ border-bottom: none;
+ border-left: 2px solid ${({ theme }) => theme.colors.GREEN[600]};
+ border-right: 2px solid ${({ theme }) => theme.colors.GREEN[600]};
+ cursor: none;
+ }
+ &:last-child {
+ border-bottom-left-radius: 3px;
+ border-bottom-right-radius: 3px;
+ }
+`;
+
+const SingleColumnTable: React.FC = () => (
+
+
+
+
+
+ 안건지/회의록
+
+
+
+
+
+ {data.map(row => (
+
+
+ {row.contents}
+
+
+ ))}
+
+);
+
+export default SingleColumnTable;
diff --git a/packages/web/src/features/landing/frames/MainFrame.tsx b/packages/web/src/features/landing/frames/MainFrame.tsx
new file mode 100644
index 0000000..1f1f359
--- /dev/null
+++ b/packages/web/src/features/landing/frames/MainFrame.tsx
@@ -0,0 +1,56 @@
+"use client";
+
+import React from "react";
+import styled from "styled-components";
+
+import colors from "@sparcs-students/web/styles/themes/colors";
+import Typography from "@sparcs-students/web/common/components/Typography";
+import SingleColumnTable from "../components/\bSingleColumnTable";
+
+const VerticalWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ height: 100%;
+ gap: 20px;
+`;
+
+const TableWrapper = styled.div`
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ height: 100%;
+ gap: 80px;
+`;
+
+const MainPageWrapper = styled.div`
+ height: 300px;
+`;
+
+const PageTitleWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+`;
+
+const StyledSpan = styled.span`
+ color: ${colors.PRIMARY};
+ font-weight: ${({ theme }) => theme.fonts.WEIGHT.SEMIBOLD};
+`;
+
+const MainPageMainFrame: React.FC = () => (
+
+
+
+ KAIST 4천 학우의 생활에 필요한 서비스를{" "}
+ 한곳에.
+
+
+
+
+
+
+
+
+);
+
+export default MainPageMainFrame;