Nepali Calendar Kit

AD-BS Conversion Library

View on NPM
v1.0 is now live

The Ultimate
Nepali Calendar Kit

Production-ready library for converting between Gregorian (AD) and Nepali (BS) dates. Includes an interactive date picker with full TypeScript support.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

AD ↔ BS Conversion

Seamlessly convert between Gregorian and Nepali calendars with verified accuracy.

Interactive DatePicker

React component for selecting Nepali dates with full customization options.

Flexible Formatting

Multiple formatting options with Nepali numerals and localized month names.

Key Features

Accurate Conversion

Based on verified data since 1943

TypeScript Support

Full type definitions included

Customizable Themes

Control colors, fonts, and styling

Multi-language

English and Nepali support

Core Features

AD to BS & BS to AD

Convert AD (Gregorian) dates to BS (Bikram Sambat) and vice versa with precision.

Multiple Formats

Format dates in YYYY-MM-DD, DD-MM-YYYY, DD/MM/YYYY, and custom configurations.

Localization

Display Nepali dates with numeric, short, or long month names, and Nepali numerals (१, २, ३…).

Nepali DatePicker

React component with powerful theming, accessibility, and localization support built-in.

Fully Typed

First-class TypeScript support for robust development and auto-completion.

Quick Start

1. Getting Started

Install the package and start converting dates in seconds with full type safety.

Installation
npm install @gambhirpoudel/nepali-calendar-kit

Next Steps

Explore each function below to see interactive demos and examples. All functions are fully typed with TypeScript for the best developer experience.

Quick Example

import { adToBs, formatBs }  from "@gambhirpoudel/nepali-calendar-kit";

// Convert AD to BS
const bsDate = adToBs(new Date());

// Format the date
const formatted = formatBs(bsDate, 'YYYY-MM-DD');
console.log(formatted); // "२०८१-०१-२७"
Interactive Converter

2. Date Conversion

Seamlessly bridge the gap between Gregorian and Bikram Sambat calendars.

Result will appear here
Interactive Playground

3. Customizable Component

A fully-featured React component with deep customization for any design system.

Localization
Appearance
Primary Accent
#6366f1
Secondary Glow
#1e1b4b
Live Preview
API Reference

Component Props

Detailed breakdown of all available configuration options for the NepaliDatePicker.

PropertyTypeDefaultDescription
onChange(result: DatePickerResult | null) => voidundefinedCallback when a date is selected
themeThemeundefinedCustom theming options
valuestring""Initial date value
dateLanLanguageCode"en"Language for date numbers
monthLanLanguageCode"en"Language for month names
dayLanLanguageCode"en"Language for day names
yearLanLanguageCode"en"Language for year numbers
Theming Interface

Theme Interface

Deep customization options to perfectly align the component with your application's brand identity.

TypeScript Definition
interface Theme {
  primary?: string;       // Accent color (HEX/HSL)
  primaryLight?: string;  // Hover/Active background
  radius?: string;        // Border radius (e.g. '12px')
  fontFamily?: string;    // Custom font-stack
  shadow?: string;        // Box shadow definition
  inputBg?: string;       // Field background
}
primary#6366f1

The heartbeat of the UI. Applied to selected dates, buttons, and high-impact accents.

radius12px

Controls the architectural feel. Use px for precision or rem for responsive scales.

fontFamily'Inter', sans-serif

Ensures typographic harmony. Defaults to system-ui but accepts any web font.

Object Oriented

NepaliDate API

A first-class, immutable API that mirror's JavaScript's native Date object for the Bikram Sambat calendar.

Instant Initialization
const today = NepaliDate.today();
today.getYear(); // 2082
Flexible Creation
// From AD
new NepaliDate(new Date("2026-01-15"));

// From BS
new NepaliDate({ year: 2082, month: 10, day: 1 });
Formatting Power

// Default format (BS)

today.format(); // "२०८२-१०-०१"

// Custom long format

today.format("DD/MM/YYYY", "long", "short");
// "१२/भदौ/२०८२"

Why NepaliDate?

Provides a familiar interface for developers already comfortable with the JS Date API. It handles edge cases like leap months and historical discrepancies automatically.

Flexible Formatting

Standard Formats

Out-of-the-box support for the most common date patterns used in modern web engineering.

Standard ISO

YYYY-MM-DD

European

DD-MM-YYYY

Slash Delimited

DD/MM/YYYY

Chronological

YYYY/MM/DD
Data Structure

Real-world Examples

See how the library parses and outputs data in different scenarios.

Core Logic

AD to BS Conversion

adToBs(new Date('2002-08-17'));
// Result: { year: 2059, month: 5, day: 1 }

Nepali Numerals

formatBs({ year: 2082, month: 10, day: 1 }, 'DD-MM-YYYY');
// Result: "१-१०-२०८२"
Rich Result Object
const result = {
  bs: '2082-10-29',
  ad: 'Thu Feb 12 2026',
  nepali: '२०८२-१०-२९'
}

The component returns a comprehensive object containing all necessary formats to minimize manual parsing.