react-calendar-byhja - v0.1.2
    Preparing search index...

    react-calendar-byhja - v0.1.2

    πŸ“… React Calendar Library

    Vite + React + TypeScript + vanilla-extract 기반으둜 μ œμž‘λœ μž¬μ‚¬μš© κ°€λŠ₯ν•œ μΊ˜λ¦°λ” λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€.
    λ‚ μ§œ 단일 선택(DatePicker)κ³Ό λ‚ μ§œ λ²”μœ„ 선택(RangePicker)을 μ§€μ›ν•˜λ©°, λ‹€μ–‘ν•œ μ»€μŠ€ν„°λ§ˆμ΄μ§•μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.


    • 두 κ°€μ§€ λͺ¨λ“œ 지원
      • βœ… DatePicker β†’ 단일 λ‚ μ§œ 선택
      • βœ… RangePicker β†’ λ‚ μ§œ λ²”μœ„ 선택 (μ‹œμž‘μΌ ~ μ’…λ£ŒμΌ)
    • 좜λ ₯ 방식 선택
      • λ“œλ‘­λ‹€μš΄(default)
      • λͺ¨λ‹¬
    • λ²”μœ„ 선택 κ³ κΈ‰ κΈ°λŠ₯
      • μ‹œμž‘μΌ κΈ°μ€€ threshold (μ’…λ£ŒμΌ μ΅œλŒ€ 선택 κ°€λŠ₯일 μ œν•œ)
      • μ‹œμž‘μΌκ³Ό μ’…λ£ŒμΌ ꡬ간은 λ‹€λ₯Έ 배경색/μŠ€νƒ€μΌ 적용 κ°€λŠ₯
      • μ‹œμž‘μΌ 클릭 ν›„ ν˜Έλ²„ μ‹œ λ‚ μ§œ ꡬ간 ν•˜μ΄λΌμ΄νŠΈ
    • λ‹€κ΅­μ–΄ 지원
      • μ›”/μš”μΌ, RangePicker/DatePicker λ²„νŠΌ ν…μŠ€νŠΈ(확인/μ·¨μ†Œ) λͺ¨λ‘ locale 기반
      • κΈ°λ³Έ: μ˜μ–΄(en), ν•œκ΅­μ–΄(ko), 숫자(number)
      • μΆ”κ°€: 일본어(ja), 쀑ꡭ어(zh), ν”„λž‘μŠ€μ–΄(fr), 독일어(de), μŠ€νŽ˜μΈμ–΄(es), μ΄νƒˆλ¦¬μ•„μ–΄(it), λŸ¬μ‹œμ•„μ–΄(ru), 포λ₯΄νˆ¬κ°ˆμ–΄(pt)
      • locale prop으둜 전체 UI μ–Έμ–΄ 선택 κ°€λŠ₯
    • 포맷 μ»€μŠ€ν„°λ§ˆμ΄μ§•
      • λ‚ μ§œ ν‘œμ‹œ ν˜•μ‹ κΈ°λ³Έκ°’: YYYY.MM.DD
      • props.format 으둜 μ›ν•˜λŠ” 포맷 μ§€μ • κ°€λŠ₯
    • μ»€μŠ€ν…€ μ•„μ΄μ½˜ 지원
      • κΈ°λ³Έκ°’: react-icons/ai의 달λ ₯ μ•„μ΄μ½˜
      • μ›ν•˜λŠ” SVG μ»΄ν¬λ„ŒνŠΈ ꡐ체 κ°€λŠ₯
    • μ ‘κ·Όμ„±(ARIA) 지원
      • ν‚€λ³΄λ“œ μ ‘κ·Ό 및 μŠ€ν¬λ¦°λ¦¬λ” μΉœν™”μ 
    • μŠ€νƒ€μΌλ§
      • vanilla-extract 기반
      • theme prop 으둜 선택 색상/λ°°κ²½/λΌμš΄λ“œκ°’ μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€λŠ₯

    # μ„€μΉ˜
    yarn add your-calendar-lib
    # λ˜λŠ”
    npm install your-calendar-lib
    • DatePicker (단일 λ‚ μ§œ 선택)
    import { DatePicker } from "your-calendar-lib";

    export default function App() {
    return (
    <DatePicker
    onChange={(date) => console.log("μ„ νƒν•œ λ‚ μ§œ:", date)}
    displayMode="dropdown" // λ˜λŠ” "modal"
    monthFormat="ko" // "en" | "ko" | "number"
    format="YYYY/MM/DD"
    />
    );
    }

    • RangePicker (λ‚ μ§œ λ²”μœ„ 선택)
    import { RangePicker } from "your-calendar-lib";

    export default function App() {
    return (
    <RangePicker
    onChange={({ startDate, endDate }) =>
    console.log("μ„ νƒν•œ ꡬ간:", startDate, endDate)
    }
    separator="~" // λ˜λŠ” "-"
    displayMode="modal"
    monthFormat="en"
    threshold={30} // μ‹œμž‘μΌ κΈ°μ€€ μ΅œλŒ€ 30μΌκΉŒμ§€λ§Œ 선택 κ°€λŠ₯
    />
    );
    }

    <RangePicker
    locale="ja" // 일본어
    monthFormat="ja"
    onChange={({ startDate, endDate }) => console.log(startDate, endDate)}
    />

    <DatePicker
    locale="zh" // 쀑ꡭ어
    monthFormat="zh"
    onChange={(date) => console.log(date)}
    />

    theme prop을 톡해 μ„ νƒλœ λ‚ μ§œ 및 κ΅¬κ°„μ˜ μŠ€νƒ€μΌμ„ λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    <DatePicker
    theme={{
    daySelectedBg: "#007bff",
    daySelectedColor: "#fff",
    daySelectedRadius: "50%",
    rangeBg: "#cce5ff",
    rangeColor: "#004085",
    }}
    />

    src/
     β”œβ”€β”€ components/
     β”‚   β”œβ”€β”€ Calendar/
     β”‚   β”‚   β”œβ”€β”€ Calendar.css.ts
     β”‚   β”‚   β”œβ”€β”€ Calendar.tsx
     β”‚   β”‚   β”œβ”€β”€ CalendarBody.tsx
     β”‚   β”‚   β”œβ”€β”€ CalendarHeader.tsx
     β”‚   β”‚   β”œβ”€β”€ CalendarYearPanel.tsx
     β”‚   β”œβ”€β”€ DatePicker/
     β”‚   β”‚   β”œβ”€β”€ DatePicker.css.ts
     β”‚   β”‚   β”œβ”€β”€ DatePicker.tsx
     β”‚   β”œβ”€β”€ RangePicker/
     β”‚   β”‚   β”œβ”€β”€ RangePicker.css.ts
     β”‚   β”‚   β”œβ”€β”€ RangePicker.tsx
     β”œβ”€β”€ hooks/
     β”‚   β”œβ”€β”€ useCalendar.ts
     β”‚   β”œβ”€β”€ useOutsideClick.ts
     β”‚   β”œβ”€β”€ useRangeSelect.ts
     β”œβ”€β”€ types/
     β”‚   └── calendar.type.ts
     β”œβ”€β”€ utils/
     β”‚   β”œβ”€β”€ date.ts
     β”‚   β”œβ”€β”€ format.ts
     β”‚   β”œβ”€β”€ helpers.ts
     β”‚   β”œβ”€β”€ locale.ts
     β”œβ”€β”€ index.ts       # 라이브러리 μ§„μž…μ 
     β”œβ”€β”€ main.tsx       # 개발/ν…ŒμŠ€νŠΈμš©
     β”œβ”€β”€ App.tsx        # ν…ŒμŠ€νŠΈ νŽ˜μ΄μ§€
    

    # 개발 μ„œλ²„ μ‹€ν–‰
    yarn dev

    # λΉŒλ“œ
    yarn build

    # λΉŒλ“œ κ²°κ³Ό 확인 (예: dist/ 폴더)

    • 닀쀑 λ‚ μ§œ 선택 지원
    • ν‚€λ³΄λ“œ λ‚΄λΉ„κ²Œμ΄μ…˜ κ°•ν™”
    • ν…ŒμŠ€νŠΈ μ½”λ“œ (Vitest, Stotybook)