Ultimate Next.js Course 강의를 보면서 공부한 것들을 작성한 글입니다.
npx shadcn-ui@latest init
Which style would you like to use? › Default/NewYork
Which color would you like to use as base color? › Slate/...여러 색상 있음
Do you want to use CSS variables for colors? › no / yes
npx shadcn-ui@latest add button avatar //...등등 필요한 것들 입력한다
입력 후 components 폴더 내부 ui 폴더에 해당 파일들이 생성된다. 일반적으로 ui 폴더에 넣어서 관리하는 걸로 보인다.
shadcn - themes 에 들어가면 원하는 테마를 선택하고 바로 코드를 사용할 수 있어 굉장히 편했다.
lib/utils.ts 파일에 있는 cn 함수는 주로 클래스 네임을 결합하고 조건부로 클래스를 추가하기 위한 유틸리티 함수
클래스를 동적으로 조작하여 조건에 따라 클래스를 추가하거나 제거
classnames 라이브러리와 유사. 간단한 조건부 클래스 네임 결합 로직을 구현
lib > utils.ts
clsx: 조건부로 클래스 네임 결합. false나 undefined 값을 필터링하고, 단순 문자열과 객체 형식을 결합하여 유효한 클래스 네임 문자열을 반환한다.
twMerge: 이름에서 알 수 있듯이 Tailwind CSS 클래스 네임을 병합한다. 중복된 클래스를 병합하여 최종 클래스 네임을 생성한다.
import { cn } from "@/lib/utils";
export default function ExampleComponent({ isActive }: { isActive: boolean }) {
return (
<div className={cn("text-lg", isActive && "text-center", "text-blue-500")}>
Hello, World!
</div>
);
}