Skip to content

Commit

Permalink
πŸ’„ 톡합검색 λ””μžμΈ 반영 (#142)
Browse files Browse the repository at this point in the history
* feat: 톡합검색 λ””μžμΈ 반영

* fix: NewsRow 이미지 fill -> cover

* fix: λŒ€λΆ„λ₯˜μ—μ„œ navbar dot이 ν‘œμ‹œλ˜μ§€ μ•ŠλŠ” 문제

* refactor: page -> segmentNode μˆ˜μ •

* fix: λŒ€λΆ„λ₯˜ νŽ˜μ΄μ§€ λ²ˆμ—­ 적용

* refactor: api ν΄λ”μ˜ server actionλ“€ action ν΄λ”λ‘œ 이동

* refactor: component 폴더 κ°„λž΅ν™”

* design: ν•™λΆ€ μ†Œκ°œ λ””μžμΈ 반영

* design: ν•™λΆ€μž₯ 인사말 μˆ˜μ •, μ—°ν˜ 이미지 ꡐ체

* design: 쑸업생 μ§„λ‘œ λ””μžμΈ 반영

* design: μ†Œκ°œνƒ­ λ””μžμΈ 반영

* design: μ†Œμ‹ λΆ€λΆ„ λ””μžμΈ 반영
  • Loading branch information
yeolyi authored Mar 2, 2024
1 parent 5e55315 commit dcd09e8
Show file tree
Hide file tree
Showing 181 changed files with 953 additions and 987 deletions.
5 changes: 2 additions & 3 deletions actions/newsActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import { revalidateTag } from 'next/cache';
import { redirect } from 'next/navigation';

import { deleteNews } from '@/apis/newsServer';

import { news } from '@/types/page';
import { deleteNews } from '@/actions/newsServer';

import { getPath } from '@/utils/page';
import { news } from '@/utils/segmentNode';

const newsPath = getPath(news);

Expand Down
2 changes: 1 addition & 1 deletion apis/newsServer.ts β†’ actions/newsServer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { News, NewsPreviewList } from '@/types/news';
import { PostSearchQueryParams } from '@/types/post';

import { deleteRequest, getRequest } from './serverIndex';
import { deleteRequest, getRequest } from '../apis/serverIndex';

const newsPath = '/news';

Expand Down
5 changes: 2 additions & 3 deletions actions/noticeActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import { revalidateTag } from 'next/cache';
import { redirect } from 'next/navigation';

import { batchDeleteNotice, batchUnpinNotice, deleteNotice } from '@/apis/noticeServer';

import { notice } from '@/types/page';
import { batchDeleteNotice, batchUnpinNotice, deleteNotice } from '@/actions/noticeServer';

import { getPath } from '@/utils/page';
import { notice } from '@/utils/segmentNode';

const noticePath = getPath(notice);

Expand Down
2 changes: 1 addition & 1 deletion apis/noticeServer.ts β†’ actions/noticeServer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { NoticePreviewList, Notice } from '@/types/notice';
import { PostSearchQueryParams } from '@/types/post';

import { deleteRequest, getRequest, patchRequest } from './serverIndex';
import { deleteRequest, getRequest, patchRequest } from '../apis/serverIndex';

const noticePath = '/notice';

Expand Down
2 changes: 1 addition & 1 deletion apis/reservation.ts β†’ actions/reservation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { cookies } from 'next/dist/client/components/headers';

import { Reservation, ReservationPostBody, ReservationPreview } from '@/types/reservation';

import { deleteRequest, getRequest, postRequest } from '.';
import { deleteRequest, getRequest, postRequest } from '../apis';

const reservationPath = '/reservation';

Expand Down
5 changes: 2 additions & 3 deletions actions/seminarActions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
import { revalidateTag } from 'next/cache';
import { redirect } from 'next/navigation';

import { deleteSeminar } from '@/apis/seminarServer';

import { seminar } from '@/types/page';
import { deleteSeminar } from '@/actions/seminarServer';

import { getPath } from '@/utils/page';
import { seminar } from '@/utils/segmentNode';

const seminarPath = getPath(seminar);

Expand Down
2 changes: 1 addition & 1 deletion apis/seminarServer.ts β†’ actions/seminarServer.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { PostSearchQueryParams } from '@/types/post';
import { SeminarList, Seminar } from '@/types/seminar';

import { deleteRequest, getRequest } from './serverIndex';
import { deleteRequest, getRequest } from '../apis/serverIndex';

const seminarPath = '/seminar';

Expand Down
6 changes: 3 additions & 3 deletions apis/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ export const deleteRequest = async (url: string, init?: RequestInit) => {
};

export const checkError = (response: Response) => {
if (!response.ok) {
throw new NetworkError(response.status);
}
if (response.ok) return;

throw new NetworkError(response.status);
};

export class NetworkError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions apis/search.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { NewsSearchResult, NoticeSearchResult } from '@/types/search';

import { getRequest } from '.';

export const getNoticeSearch = (params: {
Expand Down
2 changes: 1 addition & 1 deletion apis/seminar.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { PATCHSeminarBody, POSTSeminarBody, Seminar, SeminarList } from '@/types/seminar';
import { PATCHSeminarBody, POSTSeminarBody } from '@/types/seminar';

import { patchRequest, postRequest } from '.';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export default function DirectionsDetails({ direction }: { direction: Direction
return (
<div>
<DirectionsTitle name={direction.name} />
<HTMLViewer htmlContent={direction.description} margin="ml-2.5" />
<HTMLViewer htmlContent={direction.description} className="ml-2.5" />
</div>
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { Link } from '@/navigation';

import { staff } from '@/types/page';

import { getPath } from '@/utils/page';
import { staff } from '@/utils/segmentNode';

const staffPath = getPath(staff);

export default function LocationGuide() {
return (
<p className="text-sm leading-6 mb-8">
<p className="text-md leading-[200%] mb-8">
μ»΄ν“¨ν„°κ³΅ν•™λΆ€λŠ” μ„œμšΈλŒ€ν•™κ΅ κ΄€μ•… 301동(신곡학관1)에 μžˆμŠ΅λ‹ˆλ‹€.
<br />
μ£Όμ†Œ: 08826 μ„œμšΈνŠΉλ³„μ‹œ 관악ꡬ κ΄€μ•…λ‘œ 1 μ„œμšΈλŒ€ν•™κ΅ κ³΅κ³ΌλŒ€ν•™ 컴퓨터곡학뢀 ν–‰μ •μ‹€(301동 316호)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { useEffect, useRef } from 'react';

declare global {
interface Window {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
kakao: any;
}
}
Expand Down
10 changes: 5 additions & 5 deletions app/[locale]/about/directions/page.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import { getDirections } from '@/apis/about';

import DirectionsDetails from '@/app/[locale]/about/directions/DirectionsDetails';
import LocationGuide from '@/app/[locale]/about/directions/LocationGuide';
import LocationMap from '@/app/[locale]/about/directions/LocationMap';

import SelectionList from '@/components/common/selection/SelectionList';
import DirectionsDetails from '@/components/directions/DirectionsDetails';
import LocationGuide from '@/components/directions/LocationGuide';
import LocationMap from '@/components/directions/LocationMap';
import PageLayout from '@/components/layout/pageLayout/PageLayout';

import { directions } from '@/types/page';

import { findSelectedItem } from '@/utils/findSelectedItem';
import { getPath } from '@/utils/page';
import { directions } from '@/utils/segmentNode';

interface DirectionsPageProps {
searchParams: { selected?: string };
Expand Down
65 changes: 65 additions & 0 deletions app/[locale]/about/facilities/FacilitiesList.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
import Image from 'next/image';

import Distance from '@/public/image/about/distance.svg';

import { Facilities } from '@/types/about';

import HTMLViewer from '../../../../components/editor/HTMLViewer';

export default function FacilitesList({ facilities }: { facilities: Facilities }) {
return (
<div className="flex flex-col">
{facilities.facilitiesList.map((post, index) => (
<FacilitiesRow
key={index}
name={post.name}
description={post.description}
location={post.location}
imageURL={post.imageURL}
border={index !== 0}
/>
))}
</div>
);
}

export interface FacilitiesRowProps {
name: string;
description: string;
location: string;
imageURL: string;
border: boolean;
}

function FacilitiesRow({ name, description, location, imageURL, border }: FacilitiesRowProps) {
return (
<article
className={`text-neutral-700 flex py-[1.2rem] flex-row items-start justify-between break-all ${
border ? 'border-t-[1px] border-neutral-200' : undefined
}`}
>
<div className="flex flex-col w-[35.5rem]">
<h3 className="text-neutral-800 text-base font-noto font-bold mb-[.69rem] leading-5">
{name}
</h3>
<HTMLViewer htmlContent={description} />
<div className="flex items-center gap-[0.12rem]">
<Distance />
<p className="text-md leading-[1.63rem] translate-x-[-2px]">{location}</p>
</div>
</div>

<FacilitiesRowImage imageURL={imageURL} />
</article>
);
}

function FacilitiesRowImage({ imageURL }: { imageURL: string }) {
const src = `/image/facilities/${imageURL}-color.png`;

return (
<div className="w-60 h-40 relative">
<Image alt="λŒ€ν‘œ 이미지" src={src} fill sizes="10rem" />
</div>
);
}
3 changes: 2 additions & 1 deletion app/[locale]/about/facilities/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { getFacilities } from '@/apis/about';

import FacilitesList from '@/components/facilities/FacilitiesList';
import FacilitesList from '@/app/[locale]/about/facilities/FacilitiesList';

import PageLayout from '@/components/layout/pageLayout/PageLayout';

export default async function FacilitiesPage() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { careerStatCols, careerStatRows } from '@/data/objects';

import { FutureCareers } from '@/types/about';

import Dropdown from '../common/Dropdown';
import Dropdown from '../../../../components/common/form/Dropdown';

export default function CareerStat({ stat }: { stat: FutureCareers['stat'] }) {
const [selectedCareerStatIndex, setSelectedCareerStatIndex] = useState(0);
Expand All @@ -21,7 +21,7 @@ export default function CareerStat({ stat }: { stat: FutureCareers['stat'] }) {
onClick={setSelectedCareerStatIndex}
/>
</div>
<div className="w-[21.3rem] h-[13.1rem] flex flex-col text-xs font-normal justify-stretch border-y-[1px] border-y-neutral-300 mb-9">
<div className="w-[21.3rem] h-[14rem] flex flex-col text-xs font-normal justify-stretch border-y-[1px] border-y-neutral-300 mb-9">
<StatTableHeader />
{stat[2021 - selectedCareerStatIndex].map((arr, index) => (
<StatTableHeaderRow key={index} rowName={careerStatRows[index]} values={arr} />
Expand All @@ -37,7 +37,7 @@ function StatTableHeader() {
<div className="flex-1" />
{careerStatCols.map((colName) => (
<div key={colName} className="flex justify-center items-center w-[5rem]">
<p>{colName}</p>
<p className="text-sm">{colName}</p>
</div>
))}
</div>
Expand All @@ -47,9 +47,11 @@ function StatTableHeader() {
function StatTableHeaderRow({ rowName, values }: { rowName: string; values: number[] }) {
return (
<div className={`flex flex-1 flex-row border-b border-neutral-200 last:border-0`}>
<div className="flex w-[6.25rem] bg-neutral-100 justify-center items-center">{rowName}</div>
<div className="flex w-[6.25rem] bg-neutral-100 justify-center items-center text-sm">
{rowName}
</div>
{values.map((value, index) => (
<div key={index} className="flex flex-1 justify-center items-center">
<div key={index} className="flex flex-1 justify-center items-center text-md">
{value}
</div>
))}
Expand Down
9 changes: 5 additions & 4 deletions app/[locale]/about/future-careers/page.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { getFutureCareeres } from '@/apis/about';

import CareerStat from '@/components/futureCareers/CareerStat';
import CareerStat from '@/app/[locale]/about/future-careers/CareerStat';

import PageLayout from '@/components/layout/pageLayout/PageLayout';

import { FutureCareers } from '@/types/about';
Expand All @@ -9,7 +10,7 @@ export default async function GreetingsPage() {
const { description, stat, companies } = await getFutureCareeres();
return (
<PageLayout titleType="big" titleMargin="mb-[2.31rem]">
<p className="text-sm font-normal leading-[1.625rem] mb-9 break-keep whitespace-pre-wrap">
<p className="text-md font-normal leading-[1.625rem] mb-9 break-keep whitespace-pre-wrap">
{description}
</p>
<CareerStat stat={stat} />
Expand All @@ -24,7 +25,7 @@ function CareerCompanies({ companies }: { companies: FutureCareers['companies']
<h3 className="text-base font-noto font-bold leading-[1.625rem] mb-[0.8rem]">
쑸업생 μ°½μ—… κΈ°μ—…
</h3>
<div className="text-xs font-normal border-y-[1px] border-neutral-200 inline-block">
<div className="text-sm font-normal border-y-[1px] border-neutral-200 inline-block">
<CompanyTableHeader />
<ol>
{companies.map((company, index) => (
Expand All @@ -36,7 +37,7 @@ function CareerCompanies({ companies }: { companies: FutureCareers['companies']
);
}

const TABLE_COLUMN_SIZE = ['w-12', 'w-[12.5rem]', 'w-80', 'w-20'];
const TABLE_COLUMN_SIZE = ['w-[3.5rem]', 'w-[12.5rem]', 'w-80', 'w-20'];

function CompanyTableHeader() {
return (
Expand Down
23 changes: 15 additions & 8 deletions app/[locale]/about/greetings/page.tsx

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion app/[locale]/about/history/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import history_image from '@/public/image/history_image.png';
import history_image from '@/public/image/about/history.png';

import { getHistory } from '@/apis/about';

Expand Down
51 changes: 42 additions & 9 deletions app/[locale]/about/overview/page.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,52 @@
import { getOverview } from '@/apis/about';
import Image from 'next/image';

import brochure1 from '@/public/image/about/brochure1.png';
import brochure2 from '@/public/image/about/brochure2.png';

import Attachment from '@/components/common/Attachments';
import HTMLViewer from '@/components/editor/HTMLViewer';
import PageLayout from '@/components/layout/pageLayout/PageLayout';

// ν•™λΆ€ μ†Œκ°œ νŽ˜μ΄μ§€ - ν•™λΆ€μž₯ 인삿말 νŽ˜μ΄μ§€μ˜ ν˜•μ‹μ΄ 동일
// 두 κ³³μ—μ„œλ§Œ κ²Ήμ³μ„œ λ”°λ‘œ μ»΄ν¬λ„ŒνŠΈν™”ν•˜μ§€ μ•ŠμŒ
export default async function OverviewPage() {
const response = await getOverview();

return (
<PageLayout titleType="big" titleMargin="mb-9">
<HTMLViewer
htmlContent={response.description}
topRightContent={{ type: 'image', width: 320, height: 213, url: response.imageURL }}
/>
<Attachment files={[response.attachment]} />
<PageLayout titleType="big" titleMargin="mb-9" bodyStyle={{ padding: 0 }}>
<div className="flex gap-10 bg-neutral-100 py-10 pl-[6.25rem] pr-[22rem] items-start">
<HTMLViewer htmlContent={description} className="w-[37.5rem] shrink-0" />
<Image
src="https://cse-dev-waffle.bacchus.io/sites/default/files/styles/medium-larger/public/node--page/301302.jpg?itok=96k1IsL0"
alt="학ꡐ μ „κ²½"
width={320}
height={213}
/>
</div>
<div className="pt-10 pl-[6.25rem] pb-[7.88rem]">
<h2 className="text-base font-semibold mb-6">ν•™λΆ€ μ†Œκ°œ μ±…μž</h2>
<div className="flex gap-6 mb-10">
<Image src={brochure1.src} width={227} height={320} alt="μ†Œκ°œ μ±…μž" />
<Image src={brochure2.src} width={227} height={320} alt="μ†Œκ°œ μ±…μž" />
</div>
<Attachment files={[attachment]} />
</div>
</PageLayout>
);
}

const description = `
<p>
컴퓨터곡학은 정보화 μ‚¬νšŒλ‘œμ˜ 이행에 μžˆμ–΄ ν•„μˆ˜μ μ΄κ³  핡심적인 ν•™λ¬ΈμœΌλ‘œμ„œ, μ„±λŠ₯이 μš°μˆ˜ν•œ 컴퓨터λ₯Ό 섀계 μ œμž‘ν•˜κ³  운영 및 μ‘μš©μ— ν•„μš”ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜μ—¬, μ‚°μ—… μ „λ°˜μ—μ„œ 이λ₯Ό ν™œμš©ν•  수 있게 ν•˜λŠ” 학문이닀. 컴퓨터곡학은 이둠적인 μΈ‘λ©΄μ—μ„œμ˜ 기반 기술 연ꡬ와 이λ₯Ό μ‹€μƒν™œμ— 직접 μ‘μš©ν•  수 μžˆλŠ” μ‘μš© 연ꡬλ₯Ό μΆ”κ΅¬ν•˜κ³  μžˆλ‹€. ν˜„λŒ€μ˜ λͺ¨λ“  산업듀은 점차 κ·Έ λ³΅μž‘λ„κ°€ 증가함에 따라 컴퓨터λ₯Ό ν†΅ν•œ 문제 해결을 μ‹œλ„ν•˜κ³  μžˆλ‹€. 컴퓨터곡학은 μ΄λŸ¬ν•œ μœ΅ν•©μ , 톡섭적 사고와 연ꡬλ₯Ό μ£Όλ„ν•˜κ³  있으며, 이λ₯Ό 톡해 μ‚°μ—… μ „λ°˜μ— 걸쳐 영ν–₯λ ₯을 ν™•λŒ€ν•˜κ³  μžˆλ‹€.
<br/>
<br/>
컴퓨터 λΆ„μ•Όμ˜ ꡐ윑 및 연ꡬ λ‚΄μš©μ€ 곡학 및 κ³Όν•™μ˜ 기초 지식을 λ°”νƒ•μœΌλ‘œ ν•œ 논리적 좔리 및 독창적 사고λ ₯을 μš”ν•œλ‹€. 컴퓨터 μ†Œν”„νŠΈμ›¨μ–΄ 및 ν•˜λ“œμ›¨μ–΄λŠ” 맀우 κΈ΄λ°€ν•œ 유기적 연관을 κ°–κΈ° λ•Œλ¬Έμ— ν•˜λ“œμ›¨μ–΄μ™€ μ†Œν”„νŠΈμ›¨μ–΄μ— κ΄€ν•œ μ „λ¬Έ 지식을 ν•¨κ»˜ κ³΅λΆ€ν•˜λ©° 이λ₯Ό λ°”νƒ•μœΌλ‘œ 컴퓨터 ꡬ쑰, 운영체제, λ°μ΄νƒ€λ² μ΄μŠ€, ν”„λ‘œκ·Έλž˜λ°μ–Έμ–΄, 컴퓨터 톡신, 컴퓨터 μ΄μš©μ„€κ³„, 인곡지λŠ₯, μ•Œκ³ λ¦¬μ¦˜, μžμ—°μ–Έμ–΄μ²˜λ¦¬, λ©€ν‹°λ―Έλ””μ–΄μ‹œμŠ€ν…œ, 객체지ν–₯μ‹œμŠ€ν…œ, λΆ„μ‚°μ‹œμŠ€ν…œ, μ‹€μ‹œκ°„μ‹œμŠ€ν…œ 등에 κ΄€ν•œ μ „λ¬Έ 지식을 μŠ΅λ“ν•˜κ³  μƒˆλ‘œμš΄ 이둠 정립 및 μ‹€ν—˜ 연ꡬλ₯Ό μˆ˜ν–‰ν•œλ‹€.
<br/>
<br/>
컴퓨터 산업은 λŒ€ν‘œμ μΈ 기술 및 λ‘λ‡Œ μ§‘μ•½ν˜• μ‚°μ—…μœΌλ‘œμ„œ κ΅­μ±… μ‚°μ—…μ˜ ν•˜λ‚˜λ‘œ μ§€μ •λ˜μ–΄ ꡭ가적인 μ°¨μ›μ—μ„œ 지원, μœ‘μ„±λ˜κ³  μžˆλ‹€. 미래λ₯Ό 선도할 AI 기술 개발, κ³ μ„±λŠ₯ 컴퓨터 개발, μ°¨μ„ΈλŒ€ 인터넷 및 톡신 기술 개발, 인간 μΉœν™”μ  지λŠ₯ν˜• μ†Œν”„νŠΈμ›¨μ–΄ 기술 λ“± μƒˆλ‘œμš΄ 컴퓨터 기술이 μ‚°μ—… μ „λ°˜μ— 걸쳐 역할을 μ¦λŒ€ν•˜κ³  μžˆλ‹€. 이에 따라, 컴퓨터 고급전문인λ ₯에 λŒ€ν•œ μ‚°μ—…κ³„μ˜ μˆ˜μš”λŠ” κΈ‰κ²©νžˆ μ¦κ°€ν•˜κ³  있으며, μ„œμšΈλŒ€ν•™κ΅ μ»΄ν“¨ν„°κ³΅ν•™λΆ€λŠ” 첨단 컴퓨터 기술 연ꡬ와 이λ₯Ό ν†΅ν•œ 인λ ₯ μ–‘μ„±μ˜ ꡬ심체가 되고자 λ…Έλ ₯ν•˜κ³  μžˆλ‹€.
</p>
`;

const attachment = {
name: 'CSE_Brochure.pdf',
url: 'https://cse.snu.ac.kr/sites/default/files/node--page/CSE_Brochure.pdf',
bytes: 281500,
};
7 changes: 6 additions & 1 deletion app/[locale]/about/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
import MajorCategoryPageLayout from '@/components/layout/pageLayout/MajorCategoryPageLayout';

export default async function AboutPage() {
return <MajorCategoryPageLayout subtitle="About CSE" />;
return (
<MajorCategoryPageLayout
subtitle="About CSE"
description="컴퓨터 산업은 λŒ€ν‘œμ μΈ 기술 및 λ‘λ‡Œ μ§‘μ•½ν˜• μ‚°μ—…μœΌλ‘œμ„œ κ΅­μ±… μ‚°μ—…μ˜ ν•˜λ‚˜λ‘œ μ§€μ •λ˜μ–΄ ꡭ가적인 μ°¨μ›μ—μ„œ 지원, μœ‘μ„±λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 미래λ₯Ό 선도할 AI 기술 개발, κ³ μ„±λŠ₯ 컴퓨터 개발, μ°¨μ„ΈλŒ€ 인터넷 및 톡신 기술 개발, 인간 μΉœν™”μ  지λŠ₯ν˜• μ†Œν”„νŠΈμ›¨μ–΄ 기술 λ“± μƒˆλ‘œμš΄ 컴퓨터 기술이 μ‚°μ—… μ „λ°˜μ— 걸쳐 역할을 μ¦λŒ€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이에 따라, 컴퓨터 고급전문인λ ₯에 λŒ€ν•œ μ‚°μ—…κ³„μ˜ μˆ˜μš”λŠ” κΈ‰κ²©νžˆ μ¦κ°€ν•˜κ³  있으며, μ„œμšΈλŒ€ν•™κ΅ μ»΄ν“¨ν„°κ³΅ν•™λΆ€λŠ” 첨단 컴퓨터 기술 연ꡬ와 이λ₯Ό ν†΅ν•œ 인λ ₯ μ–‘μ„±μ˜ ꡬ심체가 되고자 λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€."
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default function ClubDetails({ club }: { club: Club }) {
topRightContent={
club.imageURL ? { type: 'image', width: 320, height: 200, url: club.imageURL } : undefined
}
margin="ml-2.5"
className="ml-2.5"
/>
</div>
);
Expand Down
Loading

0 comments on commit dcd09e8

Please sign in to comment.