Vanilla Calendar Pro: A Lightweight, No-Fuss Date Picker
If you've ever tried to add a date picker to a project without pulling in a massive library or framework-specific component, you know the struggle. You either get something bloated, something ugly, or something that breaks as soon as you try to style it.
Enter Vanilla Calendar Pro — a tiny, dependency-free date picker that just works. It's written in TypeScript, it has zero dependencies, and it's built for people who like to keep their bundle small and their code clean.
What It Does
Vanilla Calendar Pro is a simple date picker you can drop into any web project — React, Vue, Svelte, plain HTML, or even a server-rendered app. It supports single date selection, date ranges, and multiple dates. It handles localization, custom CSS, and disabled dates. And it does all of this without relying on jQuery, moment.js, or any other third-party library.
The API is straightforward. You initialize it with a target element and some options, and it just works. The styling is clean and modern by default, but you can override every visual aspect with your own CSS or by passing a custom theme object.
Why It's Cool
The best part about this tool is what it doesn't have. No dependencies. No heavy abstractions. No hidden complexity. It's a thin layer of vanilla JavaScript that knows how to render a calendar and handle clicks.
It also comes with full TypeScript support out of the box. That means you get autocompletion, type checking, and clear error messages when you misconfigure something. The author has put serious thought into making the API intuitive — for example, you can pass a function to compute what dates should be disabled, which is way more flexible than a simple array of dates.
Another nice touch: it's fully accessible. Keyboard navigation works, screen readers can parse it, and the markup is semantic. That's surprisingly rare in the date picker world.
How to Try It
You can install it via npm or yarn:
npm install vanilla-calendar-pro
# or
yarn add vanilla-calendar-pro
Or grab the minified build from the repository's dist folder and drop it into your HTML directly.
Here's a minimal example to get you started:
import VanillaCalendar from 'vanilla-calendar-pro';
import 'vanilla-calendar-pro/styles.css';
const calendar = new VanillaCalendar('#my-calendar', {
settings: {
selection: {
day: true,
},
},
});
calendar.init();
That's it. No wrappers. No extra setup. The demo page in the repo also has plenty of live examples to play with.
Final Thoughts
If you're tired of fighting with date pickers that insist on being part of your framework or that add 50KB of useless code to your bundle, Vanilla Calendar Pro is a breath of fresh air. It's small, it's clean, and it does exactly what you need — nothing more, nothing less.
For side projects, internal tools, or production apps where you want fine control, this is a solid choice. The TypeScript support alone makes it worth a look if you're working in a typed environment. Give it a spin — you might just end up replacing whatever you're using now.
Found this useful? Follow us at @githubprojects for more developer tools and open source highlights.