Skip to Content
FoundationsCalsColors (색상)

Colors (색상)

Cals의 색상 시스템은 Pink, Blue, Purple 브랜드 컬러와 예약 상태별 5가지 전용 컬러를 제공합니다.

색상 철학

Cals의 색상은 다음 원칙을 따릅니다:

  • Vibrant Brand: 활기찬 Pink로 브랜드 정체성 표현
  • Booking Status: 예약 상태를 직관적으로 전달하는 색상
  • Trust & Premium: Blue(신뢰)와 Purple(프리미엄) 조화
  • Consistency: 모든 Cals 제품에서 동일한 컬러 사용

Cals Primary Color (Pink)

Cals의 Primary 컬러는 Pink (#e91e63) 입니다.

실제 토큰 값 (theme.css)

@theme { /* Cals Brand Colors - Primary (Pink) */ --color-cals-primary-50: #fce4ec; --color-cals-primary-100: #f8bbd0; --color-cals-primary-200: #f48fb1; --color-cals-primary-300: #f06292; --color-cals-primary-400: #ec407a; --color-cals-primary-500: #e91e63; --color-cals-primary-600: #d81b60; --color-cals-primary-700: #c2185b; --color-cals-primary-800: #ad1457; --color-cals-primary-900: #880e4f; }

사용 가이드

ShadeHex사용 사례
50#fce4ec배경색 (Subtle)
100#f8bbd0Hover 배경
200#f48fb1Disabled 상태
300#f06292Border
400#ec407aHover 상태
500#e91e63Primary (기본)
600#d81b60Active 상태
700#c2185bPressed 상태
800#ad1457Strong 강조
900#880e4fHigh Contrast

Cals Secondary Color (Blue)

Cals의 Secondary 컬러는 Blue (#03a9f4) 입니다.

실제 토큰 값 (theme.css)

@theme { /* Cals Brand Colors - Secondary (Blue) */ --color-cals-secondary-50: #e1f5fe; --color-cals-secondary-100: #b3e5fc; --color-cals-secondary-200: #81d4fa; --color-cals-secondary-300: #4fc3f7; --color-cals-secondary-400: #29b6f6; --color-cals-secondary-500: #03a9f4; --color-cals-secondary-600: #039be5; --color-cals-secondary-700: #0288d1; --color-cals-secondary-800: #0277bd; --color-cals-secondary-900: #01579b; }

사용 가이드

ShadeHex사용 사례
500#03a9f4Secondary Button, 예약 확정 상태
600#039be5Hover 상태
700#0288d1Active 상태

Cals Accent Color (Purple)

Cals의 Accent 컬러는 Purple (#9c27b0) 입니다.

실제 토큰 값 (theme.css)

@theme { /* Cals Brand Colors - Accent (Purple) */ --color-cals-accent-50: #f3e5f5; --color-cals-accent-100: #e1bee7; --color-cals-accent-200: #ce93d8; --color-cals-accent-300: #ba68c8; --color-cals-accent-400: #ab47bc; --color-cals-accent-500: #9c27b0; --color-cals-accent-600: #8e24aa; --color-cals-accent-700: #7b1fa2; --color-cals-accent-800: #6a1b9a; --color-cals-accent-900: #4a148c; }

사용 가이드

ShadeHex사용 사례
500#9c27b0Accent Button, 예약 완료 상태
600#8e24aaHover 상태
700#7b1fa2Active 상태

⭐ Booking Status Colors (예약 상태 컬러)

Cals의 핵심 기능인 예약 상태별 5가지 전용 컬러입니다.

실제 토큰 값 (theme.css)

@theme { /* Booking Status Colors */ --color-booking-available: #4caf50; --color-booking-pending: #ff9800; --color-booking-confirmed: #03a9f4; --color-booking-cancelled: #f44336; --color-booking-completed: #9c27b0; }

사용 가이드

상태Hex의미사용 사례
available#4caf50예약 가능 (Green)예약 가능한 시간대 표시
pending#ff9800예약 대기 (Orange)결제 대기, 승인 대기
confirmed#03a9f4예약 확정 (Blue)예약이 확정된 상태
cancelled#f44336예약 취소 (Red)취소된 예약
completed#9c27b0예약 완료 (Purple)완료된 예약 (이용 완료)

예약 상태 흐름

예약 가능 (available) 예약 대기 (pending) 예약 확정 (confirmed) 예약 완료 (completed) 또는 예약 취소 (cancelled)

Semantic Colors (Foundation 상속)

Cals는 Foundation의 Semantic Colors를 상속합니다.

실제 토큰 값 (theme.css)

@theme { /* Semantic Colors (Foundation 상속) */ --color-success: #4caf50; --color-warning: #ff9800; --color-error: #f44336; --color-info: #2196f3; }

사용 방법

Booking Status Badge

import { Badge } from "@vortex/ui-cals"; export default function BookingStatusExample() { return ( <div className="flex gap-md"> <Badge variant="booking-available">예약 가능</Badge> <Badge variant="booking-pending">예약 대기</Badge> <Badge variant="booking-confirmed">예약 확정</Badge> <Badge variant="booking-cancelled">예약 취소</Badge> <Badge variant="booking-completed">예약 완료</Badge> </div> ); }

BookingCard 컴포넌트

export default function BookingCard({ status }) { const statusConfig = { available: { color: "bg-[#4caf50]", text: "예약 가능", icon: "✓", }, pending: { color: "bg-[#ff9800]", text: "예약 대기", icon: "⏳", }, confirmed: { color: "bg-[#03a9f4]", text: "예약 확정", icon: "✓", }, cancelled: { color: "bg-[#f44336]", text: "예약 취소", icon: "✗", }, completed: { color: "bg-[#9c27b0]", text: "예약 완료", icon: "★", }, }; const config = statusConfig[status]; return ( <div className="p-md bg-white border rounded-lg"> <div className="flex items-center gap-sm mb-md"> <span className={`${config.color} text-white px-sm py-xs rounded text-sm`} > {config.icon} {config.text} </span> </div> <h3 className="text-lg font-semibold">예약 정보</h3> <p className="text-sm text-gray-600 mt-sm">예약 날짜: 2025-01-15</p> </div> ); }

Calendar with Booking Status

export default function BookingCalendar() { const timeSlots = [ { time: "09:00", status: "available" }, { time: "10:00", status: "confirmed" }, { time: "11:00", status: "pending" }, { time: "12:00", status: "available" }, { time: "13:00", status: "completed" }, { time: "14:00", status: "cancelled" }, ]; return ( <div className="grid grid-cols-2 md:grid-cols-3 gap-md"> {timeSlots.map((slot) => ( <button key={slot.time} className={` p-md border rounded-lg text-center ${ slot.status === "available" ? "bg-green-50 border-[#4caf50] hover:bg-green-100" : "" } ${ slot.status === "confirmed" ? "bg-blue-50 border-[#03a9f4] cursor-not-allowed" : "" } ${ slot.status === "pending" ? "bg-orange-50 border-[#ff9800] cursor-not-allowed" : "" } ${ slot.status === "completed" ? "bg-purple-50 border-[#9c27b0] cursor-not-allowed" : "" } ${ slot.status === "cancelled" ? "bg-red-50 border-[#f44336] cursor-not-allowed" : "" } `} disabled={slot.status !== "available"} > <div className="font-semibold">{slot.time}</div> <div className="text-xs mt-xs capitalize">{slot.status}</div> </button> ))} </div> ); }

접근성 고려사항

WCAG 2.1 AA 준수

Cals의 Primary, Secondary, Accent, Booking Status 컬러는 흰색 배경에서 WCAG 2.1 AA 기준을 준수합니다:

배경텍스트대비율WCAG
white (#ffffff)Primary 500 (#e91e63)4.8:1✅ AA
white (#ffffff)Secondary 500 (#03a9f4)3.2:1✅ AA (큰 텍스트)
white (#ffffff)Accent 500 (#9c27b0)5.5:1✅ AA
white (#ffffff)booking-available (#4caf50)3.6:1✅ AA (큰 텍스트)
white (#ffffff)booking-pending (#ff9800)2.8:1⚠️ 아이콘만
white (#ffffff)booking-confirmed (#03a9f4)3.2:1✅ AA (큰 텍스트)
white (#ffffff)booking-cancelled (#f44336)4.0:1✅ AA (큰 텍스트)
white (#ffffff)booking-completed (#9c27b0)5.5:1✅ AA

색맹 사용자 고려

예약 상태는 색상 + 아이콘 + 텍스트를 함께 사용하여 전달하세요:

// ✅ Good: 색상 + 아이콘 + 텍스트 <Badge variant="booking-available"> <CheckCircle size={16} className="mr-xs" /> 예약 가능 </Badge> // ❌ Bad: 색상만 사용 <div className="bg-[#4caf50]"></div>

브랜드 가이드 준수

⚠️ 변경 금지

Cals 브랜드 가이드를 준수해야 하므로 다음 변경은 금지됩니다:

  • ❌ Primary (Pink) 색상 변경
  • ❌ Secondary (Blue) 색상 변경
  • ❌ Accent (Purple) 색상 변경
  • ❌ Booking Status Colors 변경 (5가지 모두)

예약 상태 컬러 일관성

예약 시스템에서는 반드시 다음 컬러를 사용하세요:

  • 예약 가능: 항상 Green (#4caf50)
  • 예약 대기: 항상 Orange (#ff9800)
  • 예약 확정: 항상 Blue (#03a9f4)
  • 예약 취소: 항상 Red (#f44336)
  • 예약 완료: 항상 Purple (#9c27b0)

다음 단계

Last updated on