์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

<1> ๊ฐ„๋‹จํ•œ ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ nextjs, react

์ฃผ์˜ ๐Ÿฑ 2024. 4. 5. 18:43
728x90
๋ฐ˜์‘ํ˜•

https://ui.shadcn.com/์—์„œ ์„ค์น˜

https://ui.shadcn.com/docs/installation/next

 

Next.js

Install and configure Next.js.

ui.shadcn.com

 

vscode extension ์„ค์น˜  - ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋กœ ์ฝ”๋“œ ์ž‘์„ฑ ๊ฐ€๋Šฅ 

 

(auth)ํด๋”์— sign-in . sign-upํด๋” ์ถ”๊ฐ€

(root) meeting [id] - dynamic routes (์ฐธ๊ณ : https://nextjs.org/docs/pages/building-your-application/routing/dynamic-routes)

            (home) page.tsx, layout.tsx

 

extension์„ค์น˜

1. ES7+ React/Redux/React-Native snippets

์˜ˆ๋ฅผ๋“ค์–ด, layout.tsx์—์„œ rafce ์ž…๋ ฅ ํ›„ ์—”ํ„ฐ์‹œ 

import React from 'react'

const layout = () => {
return (
<div>layout</div>
)
}

export default layout

 

2. tailwind css intellgence - ์ž๋™์™„์„ฑ

 
<section className="flex min-h-screen flex-1 flex-col px-6 pb-6 pt-28 max-md:pb-14 sm:px-14">
<div className='w-full'>
{children}
</div>
 
</section>
 
 

์›ํ•˜๋Š” ์ƒ‰์ƒ์œผ๋กœ ๋ฐฐ๊ฒฝ ์ง€์ •ํ•˜๊ธฐ 

tailwind.config.ts์—์„œ extend { colors { dark :{1:#267356, 2:'#125678' }์ด๋Ÿฐ์‹์œผ๋กœ ์ง€์ • ํ›„, 

RootLayout์œผ๋กœ ์™€์„œ

export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className={'${inter.className} bg-dark-2'}>{children}</body>
</html>
);
}

bg-dark-2

์ด๋Ÿฐ์‹์œผ๋กœ ์ž‘์„ฑ


๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ”, ์‚ฌ์ด๋“œ๋ฐ” ์ฒ˜๋ฆฌ

components/ui Navbar.tsx , Sidebar.tsx

๋ฐ˜๋ณต๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” constantsํด๋” ๋งŒ๋“ค์–ด์„œ ์ฒ˜๋ฆฌ

constants/index.ts ์—์„œ ์จ์ฃผ๊ณ  ๋งˆ์ง€๋ง‰์— export

export const sidebarLinks =[
{
label:'Home',
imgUrl: 'icons/home.svg',
route:'/',
},
{
label:'Upcoming',
imgUrl: 'icons/upcoming.svg',
route:'/upcoming',
},
{
label:'Previous',
imgUrl: 'icons/previous.svg',
route:'/previous',
},
{
label:'Recordings',
imgUrl: 'icons/Video.svg',
route:'/recordings',
},
{
label:'Personal Room',
imgUrl: 'icons/add-personal.svg',
route:'/personal-room',
},
 
]

๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š”

import { sidebarLinks } from '@/constants/Index'
 

const Sidebar = () => {
const pathname = usePathname();
return (
<section className='sticky left-0 top-0 flex h-screen w-fit flex-col
justify-between bg-dark-1 p-6 pt-28 text-white max-sm:hidden lg:w-[264px]'>
<div className='flex flex- flex-col gap-6'>
{sidebarLinks.map((link) => {
const isActive = pathname === link.route || pathname.startsWith(link.route);
//
 

 

 

๋ชจ๋ฅด๋Š” Css ์—ฌ๊ธฐ์— ๊ฒ€์ƒ‰ํ•˜๊ธฐ

https://tailwindcss.com/

 

 

  * VSCode์—์„œ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด Ctrl+Shift+L

 

๋ฐ˜์‘ํ˜•