Sections

Installation

설치할 프레임워크를 고르세요.

요구 사항

요구 사항
이름버전
Node20.11 이상
react19
react-dom19
tailwindcss4.0 이상

@base-ui/react, tailwind-variants는 @pantoia/ui와 함께 설치돼요. init이 @pantoia/ui를 설치하고, 글꼴 패키지 pretendard, @fontsource/jetbrains-mono는 설치할지 물어요. Tabs의 스크롤바 모양은 tailwindcss 4.3부터 적용돼요.

커스터마이징

값을 바꾸거나 새 이름을 더할 때는 전역 CSS의 두 @import 아래에 적어요. 토큰마다 적는 곳은 각 파운데이션 페이지의 추가 가이드에 있어요.

전역 CSS
@import "tailwindcss";@import "@pantoia/ui/tailwind.css";@import "pretendard/dist/web/variable/pretendardvariable-dynamic-subset.css";/* 둥글기, 간격, 글자, 글꼴, 그림자, 곡선 */@theme { --radius-r18: 18px; }/* 색과 그림자 알파. 라이트와 다크에 같은 이름을 적어요 */:root, .light { --pds-bg-brand-solid: #9c63e4; }.dark { --pds-bg-brand-solid: #9c63e4; }/* 전환 시간처럼 모드와 무관한 값 */:root { --dur-state: 120ms; }/* 새 Surface, 새 전환 유틸리티 */@utility raised { @apply bg-bg-panel shadow-s2; }

직접 만드는 컴포넌트도 저장 위치의 tv.ts로 조립하면 className으로 덮어쓰는 동작이 같아져요. 토큰 이름을 더했으면 twMergeConfig의 그룹 목록에도 더하세요.

tv.ts
import { createTV } from 'tailwind-variants'export type { VariantProps } from 'tailwind-variants'export const tv = createTV({  twMergeConfig: {    theme: {      spacing: ['tight', 'stack', 'block', 'section', 'gutter'],      radius: [        'r2', 'r4', 'r6', 'r8', 'r10', 'r12', 'r14', 'r16', 'r20', 'r24',      ],      text: [        'display', 'title', 'section', 'subsection', 'prose', 'value',        'label', 'caption', 'micro',        't10', 't11', 't12', 't13', 't14', 't16', 't18', 't20',        't24', 't28', 't32', 't40', 't48', 't56', 't64',      ],      shadow: ['s1', 's2', 's3'],      ease: ['state', 'enter', 'exit'],    },  },})

업데이트하기

스타일은 패키지를 올리면 바로 바뀌고, 컴포넌트는 다시 추가해야 바뀌어요. --force로 다시 추가하면 직접 고친 줄이 사라지니 diff로 먼저 확인하세요.

sh
npm install @pantoia/ui@latestnpx @pantoia/ui diffnpx @pantoia/ui add button --force

명령어

명령어
이름설명
init [--path <경로>] [--css <경로>]@pantoia/ui를 설치하고 저장 위치와 전역 CSS 파일을 물어 components.json에 저장해요. Claude Code 스킬도 연결해요. 옵션을 주면 저장 위치와 전역 CSS 질문을 건너뛰어요.
add <이름...> [--force]컴포넌트와 함께 필요한 파일을 복사해요. --force를 주면 묻지 않고 덮어써요.
list추가할 수 있는 이름과 함께 추가되는 컴포넌트를 보여 줘요.
diff [이름]복사한 파일을 설치된 패키지의 파일과 비교해요. 이름을 생략하면 추가한 컴포넌트를 모두 비교해요.
터미널
components/ui/button/index.tsx 파일이 이미 있고 내용이 달라요. 덮어쓸까요? (y/N)