Meerkit
Meerkit
HomeDocsComponentsAPI
GitHub

Getting Started

5
IntroductionInstallationProject StructureThemingDeployment

CLI

6
CLI Overviewinit & setupstart, stop & openstatus, check, env & logsdbadd, test & update

Core Concepts

5
AuthenticationRoles & PermissionsData ModelLogin LockoutSecurity

Guides

3
Protect a pageAdd a roleCall your own API

Components

24

사용자 화면12

Login FormSignup FormEmail VerificationTerms AgreementGoogle LoginPassword ResetProfile & PasswordNicknameAuth DialogProfile ImageUser AvatarUser Menu

관리자 화면6

Member TableMember DirectoryMember AI UsageMember AI Usage HistoryRole ManagerRole Select

공통5

Address FieldFile DropzoneLoadingDateRoute Guards

AI Components

4
AI Prompt InputThinking IndicatorAPI Key InputVoice

API

6
OverviewHealthAuthUsers · 내 정보Users · 관리자LLM

Reference

2
Hooks & StateFAQ

Theming

Tailwind와 shadcn 위에 얹은 Meerkit 스타일을 설정하고, 쓰지 않을 때 정리하는 방법입니다.

shadcn/ui · ThemingTailwind CSS · Theme variablesTailwind CSS · Custom styles

Meerkit의 스타일은 새로운 스타일 시스템이 아닙니다. Tailwind CSS와 shadcn/ui를 쓰던 방식 그대로 두고, 그 위에 Meerkit의 색·모서리·모션 값을 덧붙인 얇은 레이어입니다. 그래서 Tailwind와 shadcn을 아는 사람은 새로 배울 것이 거의 없습니다.

How it fits together

Tailwind CSS v4     @import "tailwindcss" · @theme inline      유틸리티 클래스(bg-primary 등)를 만든다
 └ shadcn/ui        components.json · src/components/ui        컴포넌트 코드. 색은 의미 이름(primary, card…)으로만 쓴다
    └ Meerkit 토큰  src/meerkit/styles/tokens.css              --mk-* 변수. 값의 단일 출처
       └ Meerkit 화면  src/meerkit/**                           shadcn 컴포넌트를 조합해 만든 로그인·관리자 화면

버튼 하나가 색을 얻는 경로는 다음과 같습니다.

한 줄로 보는 흐름
<Button>                       className="bg-primary"           ← shadcn 컴포넌트
  → Tailwind                   --color-primary                  ← @theme inline
  → Meerkit 토큰               var(--mk-primary)                ← tokens.css
  → 값                         #2a2c3b
  • 컴포넌트는 값을 모르고 의미 이름만 압니다. 그래서 값을 바꿔도 컴포넌트를 고칠 필요가 없습니다.
  • 값은 --mk-* 변수 한 곳에만 있습니다. 바꾸고 싶으면 이 변수만 건드리면 됩니다.
  • shadcn CLI로 새 컴포넌트를 추가해도 같은 의미 이름을 쓰므로 자동으로 Meerkit 색을 따릅니다.

Choose a theme

프로젝트 루트의 meerkit.config.ts에서 고릅니다. 킷 폴더(src/meerkit)는 건드리지 않습니다.

meerkit.config.ts
import { defineMeerkitConfig } from "@/meerkit/define-config";

export default defineMeerkitConfig({
  theme: "meerkit", // "meerkit" | "shadcn"
  motion: true,     // false면 Meerkit 애니메이션을 모두 끈다
});
theme결과이럴 때
"meerkit"Meerkit 기본 스타일 (쿨 그레이 + 포인트 블루, 둥근 모서리, 부드러운 모션)기본 스타일 그대로 쓰거나, 일부 값만 바꿀 때
"shadcn"프로젝트의 shadcn 기본 변수(--background, --primary…)를 그대로 따름이미 shadcn 테마가 있고 Meerkit 색은 쓰고 싶지 않을 때

선택은 루트 <html>의 data-mk-theme 속성으로 반영됩니다. 코드를 지우거나 import를 바꾸지 않아도 됩니다.

Use your own shadcn theme

이미 쓰고 있는 shadcn 테마(globals.css의 --background, --primary 등)를 유지하고 싶다면 theme: "shadcn"으로 바꾸세요. Meerkit 변수가 shadcn 변수를 가리키도록 자동으로 연결됩니다.

Meerkit 변수shadcn 변수비고
--mk-background--background
--mk-foreground--foreground
--mk-card--card
--mk-primary--primary기본 버튼
--mk-muted / --mk-accent--muted / --accent
--mk-border--border
--mk-destructive--destructive
--mk-radius--radius없으면 0.625rem
--mk-surface--backgroundshadcn에 없는 토큰. 입력창 배경
--mk-brand--primaryshadcn에 없는 토큰. 링크, 포커스, 배지
--mk-shadow-softshadow-sm 수준shadcn에 없는 토큰. 카드 그림자
tokens.css는 이 모드에서도 계속 불러와야 합니다. 값만 shadcn 변수로 바뀌고, bg-surface·text-brand 같은 클래스는 그대로 동작합니다.

Change individual values

기본 스타일에서 일부만 바꾸려면 tokens.css를 고치지 말고, globals.css에서 import 아래에 덮어쓰세요. 그래야 킷을 업데이트해도 내 값이 유지됩니다.

app/globals.css
@import "tailwindcss";
@import "../meerkit/styles/tokens.css";

:root {
  --mk-brand: #7c3aed;   /* 포인트 색 */
  --mk-primary: #111827; /* 기본 버튼 */
  --mk-radius: 0.5rem;   /* 모서리 */
}

Tokens

토큰Tailwind 클래스용도기본값
--mk-backgroundbg-background페이지 배경#f3f4f6
--mk-foregroundtext-foreground기본 글자색#1b1d29
--mk-cardbg-card카드 배경#fafafb
--mk-surfacebg-surface입력창, 아웃라인 버튼 배경#ffffff
--mk-primarybg-primary기본 버튼, 어두운 면#2a2c3b
--mk-brandtext-brand포인트 (링크, 포커스, 배지)#2c63fb
--mk-mutedbg-muted보조 배경#eceef1
--mk-accentbg-accent호버, 선택 배경#e9ebef
--mk-borderborder테두리#e3e5ea
--mk-destructivetext-destructive오류, 삭제#d6455d
기본 디자인은 중립 그레이이고, brand 파랑은 링크, 포커스 링, 작은 배지에만 아주 가끔 씁니다. 주 버튼은 어두운 primary입니다.

Dark mode

기본 제공은 라이트 테마뿐입니다. 다크 모드를 추가하려면 같은 --mk-* 변수만 다시 정의하면 되고, 컴포넌트는 고치지 않습니다.

app/globals.css
:root[data-theme="dark"] {
  --mk-background: #0b0c10;
  --mk-foreground: #f2f3f7;
  --mk-card: #14161c;
  --mk-surface: #1a1d25;
  --mk-muted: #1f222b;
  --mk-accent: #262a34;
  --mk-border: #2a2e39;
  --mk-primary: #f2f3f7;
  --mk-primary-foreground: #0b0c10;
}

Radius

--mk-radius 하나로 모든 모서리가 바뀝니다. 작을수록 각지고 클수록 둥글어집니다.

클래스계산
rounded-mdradius − 4px
rounded-lgradius
rounded-xlradius + 4px
rounded-2xlradius + 8px
rounded-3xlradius + 16px

Fonts

기본 글꼴은 Pretendard(한글·영문), 코드는 시스템 모노스페이스입니다. --font-sans와 app/layout.tsx의 스타일시트를 바꾸면 교체됩니다.

Motion

Meerkit의 움직임은 한 가지 원칙을 따릅니다: 항상 부드럽게. 급하게 멈추거나 튕기지 않고, 빠르게 시작해 천천히 감속하며 멈춥니다.

  • 곡선은 --mk-ease 하나만 씁니다 (cubic-bezier(0.22, 1, 0.36, 1)). 닫힐 때만 --mk-ease-in으로 가볍게 빠집니다.
  • 나타날 때는 길게(0.5~0.9초), 사라질 때는 짧게(0.3초 안팎) 합니다.
  • 움직임은 투명도, 아주 작은 이동, 약한 블러만 씁니다. 선형(linear)이나 바운스는 쓰지 않습니다.
클래스동작쓰이는 곳
mk-rise아래에서 블러가 풀리며 올라옴 (0.9s)웰컴 페이지, 문서 본문
mk-fade서서히 나타남 (1.2s)장식 카드
mk-float위아래로 천천히 떠다님 (7s, 반복)장식 카드
mk-swap내용 교체 시 부드럽게 등장 (0.45s)로그인 ↔ 가입 전환, 추가 입력 필드
mk-overlay · mk-dialog열릴 때 0.4~0.55s, 닫힐 때 0.3s로 부드럽게Dialog (Auth Dialog)

모션 끄기

  • meerkit.config.ts에서 motion: false로 설정하면 위 클래스가 모두 꺼집니다.
  • 사용자 OS에서 "동작 줄이기"를 켰다면 설정과 관계없이 자동으로 꺼집니다.

내 컴포넌트에 쓰기

tsx
<section className="mk-rise" style={{ animationDelay: "200ms" }}>
  ...
</section>

Not using the Meerkit style

Meerkit 스타일이 필요 없다면 두 단계로 정리할 수 있습니다.

1단계: 값만 끄기 (권장)

theme: "shadcn"과 motion: false로 바꾸면 코드는 그대로 두고 내 shadcn 테마만 적용됩니다.

2단계: 코드까지 정리하기

Meerkit 전용 토큰과 클래스를 완전히 없애고 싶다면 아래 순서로 정리합니다. 먼저 사용처를 찾으세요.

bash
grep -rnE "bg-brand|text-brand|border-brand|bg-surface|shadow-soft|mk-" src
Meerkit 전용바꿀 표준 shadcn 클래스
bg-surfacebg-background
bg-brand · text-brandbg-primary · text-primary
shadow-softshadow-sm
mk-rise · mk-fade · mk-swap …삭제 (또는 직접 만든 애니메이션)
  1. 위 표대로 클래스를 바꿉니다.
  2. globals.css에서 tokens.css import와 mk-* 키프레임을 지웁니다.
  3. layout.tsx의 data-mk-theme, data-mk-motion 속성을 지웁니다.
  4. 쓰지 않는 화면(welcome/, docs/)은 폴더째 삭제해도 인증 기능에는 영향이 없습니다.

Add a shadcn component

shadcn CLI로 추가한 컴포넌트는 같은 의미 이름을 쓰므로 별도 작업 없이 현재 테마를 따릅니다.

bash
npx shadcn@latest add select
Project StructureDeployment
© Meerkit. All rights reserved.GitHub