TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A React 19 calendar built on the Temporal API. Time handles dates, time zones, navigation, calendar state, fast event lookups, and saving changes. Your events stay in the shape your app already uses. Week, day, month, year, and agenda views come as shadcn/ui-style source that you copy into your app and own.
Status: release candidate. The packages are on npm as a release candidate for 1.0.0. The API can still change before 1.0.0 if the release candidate turns up problems.
pnpm add @moltenship/calendar react react-dom
You need React 19, a runtime with Temporal (Node.js 26+; a polyfill in browsers without it), and
TypeScript 6+ with "lib": ["ESNext"].
The smallest calendar, with a hand-written view. The Quick start uses the built-in views instead.
import {
createCalendar,
defineCalendarView,
defineEventAdapter,
plainDateInterval,
} from "@moltenship/calendar";
interface Meeting {
id: string;
title: string;
start: Temporal.Instant;
end: Temporal.Instant;
}
const eventAdapter = defineEventAdapter<Meeting>()({
getId: (meeting) => meeting.id,
getTitle: (meeting) => meeting.title,
getInterval: (meeting) => ({ kind: "timed", start: meeting.start, end: meeting.end }),
getResourceIds: () => [],
});
// A minimal view: the meetings on the visible day.
const dayView = defineCalendarView({
name: "day",
strategy: {
getRange: (date) => plainDateInterval(date, date.add({ days: 1 })),
navigate: (date, delta) => date.add({ days: delta }),
getTitle: (range, { locale }) => range.start.toLocaleString(locale, { dateStyle: "full" }),
project: ({ snapshot, instantRange }) => snapshot.queryTimed(instantRange),
},
Renderer: ({ projection }) => (
<ul>
{projection.map((meeting) => (
<li key={meeting.id}>{meeting.title}</li>
))}
</ul>
),
});
const Calendar = createCalendar<Meeting>()({ eventAdapter, views: [dayView] });
export function MeetingCalendar({ meetings }: { meetings: readonly Meeting[] }) {
return (
<Calendar.Root
events={meetings}
defaultAnchorDate={Temporal.PlainDate.from("2026-10-08")}
defaultTimeZone="Europe/Berlin"
locale="en-US"
weekRules={{ firstDay: 1, minimalDays: 4, weekend: [6, 7] }}
>
<Calendar.PreviousTrigger>Previous</Calendar.PreviousTrigger>
<Calendar.Title />
<Calendar.NextTrigger>Next</Calendar.NextTrigger>
<Calendar.ActiveView />
</Calendar.Root>
);
}
Read the docs at time.molten.sh. Good places to start:
The live demo is a Google Calendar-style app built from
the same views. Its source is in apps/demo.
To work on the docs, run vp run dev and edit the MDX in
apps/showcase/content/docs. Start the demo with
vp run demo#dev.
The repository uses the Vite+ toolchain (vp) and Node.js 26.
vp install # install dependencies
vp check # format, lint, and type-check
vp test # run the tests
vp run ready # everything CI runs
vp run ready:full # the release gate
architecture.md is the design the project is building toward.docs/adr records individual design decisions.docs/internal has contributor notes: quality gates, package layout,
benchmarks, and verification records.CHANGELOG.md has 1.0.0-rc.1's.MIT. @moltenship/ics also bundles Unicode CLDR data under the Unicode License v3, so
it's MIT AND Unicode-3.0; see its
THIRD-PARTY-NOTICES.md.