@mycrm-ui/components Calendar 기본 사용 LLM 가이드
이 문서는 Calendar를 월간 달력 grid와 단일 날짜 선택 UI로 사용할 때 참고한다.
언제 사용하나
year,month로 특정 월을 렌더링한다.selectedDate와onDateSelect로 단일 날짜 선택을 제어한다.markedDates로 날짜 하단 dot marker를 표시한다.- 선택된 날짜와 같은 날짜의 marker metadata를 호출 화면으로 전달한다.
Date,yyyyMMdd,yyyy-MM-dd,yyyy.MM.dd입력값을 섞어 받아야 한다.
핵심 import
import { Calendar } from "@mycrm-ui/components";
import type {
CalendarDateSelectValue,
CalendarMarkedDate,
} from "@mycrm-ui/components";최소 예시
import { useState } from "react";
import { Calendar } from "@mycrm-ui/components";
import type {
CalendarDateSelectValue,
CalendarMarkedDate,
} from "@mycrm-ui/components";
const markedDates: CalendarMarkedDate[] = [
{ date: "2026-09-10", color: "#2563eb", meta: { label: "상담 예약" } },
{ date: "2026-09-20", color: "#dc2626", meta: { label: "창립5주년행사" } },
{ date: "2026-09-20", color: "#16a34a", meta: { label: "VIP 미팅" } },
];
export function BasicCalendar() {
const [selectedDate, setSelectedDate] =
useState<CalendarDateSelectValue | null>("2026-09-10");
const [events, setEvents] = useState<unknown[]>([]);
return (
<Calendar
year={2026}
month={9}
selectedDate={selectedDate}
weekdayLabelType="ko"
weekStartsOn={1}
markedDates={markedDates}
dateSelectValueType="yyyy-MM-dd"
onDateSelect={(date, markers) => {
setSelectedDate(date);
setEvents(markers.map((marker) => marker.meta ?? marker.date));
}}
/>
);
}주요 props
year: 렌더링할 연도. 정수여야 한다.month: 렌더링할 월.1~12값이어야 한다.selectionMode: 기본값은"single"이다.selectedDate: single 모드의 controlled 선택값이다.onDateSelect: 날짜 선택 시 호출된다. 첫 번째 인자는 선택 날짜, 두 번째 인자는 해당 날짜의 marker 목록이다.dateSelectValueType: 콜백 반환 포맷이다."date","yyyyMMdd","yyyy-MM-dd","yyyy.MM.dd"를 지원한다. Calendar 기본값은"date"다.weekdayLabelType:"en"또는"ko"요일 라벨을 사용한다. 기본값은"en"이다.weekStartsOn:0은 일요일 시작,1은 월요일 시작이다. 기본값은0이다.markedDates: 날짜별 dot marker 목록이다. 같은 날짜에 여러 marker를 줄 수 있다.showAdjacentMonthDays: 이전/다음 달 날짜 표시 여부다. 기본값은true다.
구현 규칙
Calendar는 월 이동 버튼이나 헤더를 내장하지 않는다. 월 변경 UI는 호출 화면에서 만든다.showAdjacentMonthDays=true여도 현재 월이 아닌 날짜는 선택 대상이 아니다.- 같은 날짜에 marker가 여러 개 있으면 dot도 여러 개 표시되고, 선택 콜백의
markers배열에도 모두 전달된다. - 날짜 입력은
Date,yyyyMMdd,yyyy-MM-dd,yyyy.MM.dd를 지원한다. - invalid date 문자열은 선택값 비교나 marker 매칭에서 유효한 날짜로 취급하지 않는다.
LLM 구현 체크리스트
- 달력만 필요하면
Calendar를 사용한다. - input, trigger, popover, clear 버튼, form hidden input이 필요하면
DatePicker를 사용한다. - 선택 콜백 반환 타입이 문자열이어야 하면
dateSelectValueType을 명시한다. - 업무 이벤트를 함께 반환해야 하면
markedDates[].meta에 원본 데이터를 넣는다.