{"_id":"@codersuraz/nepali-datepicker","name":"@codersuraz/nepali-datepicker","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@codersuraz/nepali-datepicker","version":"1.0.0","description":"Headless, framework-agnostic Nepali (BS) date picker with a rich manipulation API and framework adapters.","author":{"name":"codersuraz"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/codersuraz/nepali-datepicker.git"},"bugs":{"url":"https://github.com/codersuraz/nepali-datepicker/issues"},"homepage":"https://github.com/codersuraz/nepali-datepicker#readme","publishConfig":{"access":"public"},"type":"module","main":"./dist/nepali-datepicker.cjs.js","module":"./dist/nepali-datepicker.esm.js","exports":{".":{"import":"./dist/nepali-datepicker.esm.js","require":"./dist/nepali-datepicker.cjs.js"},"./react":{"import":"./dist/adapters/react.esm.js"},"./vue":{"import":"./dist/adapters/vue.esm.js"},"./svelte":{"import":"./dist/adapters/svelte.esm.js"},"./dist/material.css":"./dist/material.css"},"sideEffects":["./dist/material.css"],"keywords":["nepali","bikram-sambat","BS","datepicker","headless","calendar","nepal"],"devDependencies":{"rollup":"^4","vitest":"^1"},"scripts":{"build":"rollup -c","test":"vitest run"},"_id":"@codersuraz/nepali-datepicker@1.0.0","gitHead":"d148e62b3745e783fc378a16dddf0f4db3bfdecc","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-bLTEktbse2fr5uiX8RX+fLOWLTMc9mWZ2GYzUa23sKwJ51hvb99JJtjRxTr1Ip5u1+gcFXuC7IvExseTooeVcg==","shasum":"5558ce5d08fb63aa65656c34ce6b529e2d7a827b","tarball":"https://registry.npmjs.org/@codersuraz/nepali-datepicker/-/nepali-datepicker-1.0.0.tgz","fileCount":9,"unpackedSize":260419,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYCqsAwEUWWIRspzE4cnEvCg3Sgl98Yd6TeYzg8zI1sAIgI4z62HTrOH+MCWTBlunXZrYfMn58WbqSzkO8i0pLNO4="}]},"_npmUser":{"name":"codersuraz","email":"codersuraz@gmail.com"},"directories":{},"maintainers":[{"name":"codersuraz","email":"codersuraz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nepali-datepicker_1.0.0_1773247633230_0.43424784527081295"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T16:47:13.166Z","1.0.0":"2026-03-11T16:47:13.445Z","modified":"2026-03-11T16:47:13.684Z"},"maintainers":[{"name":"codersuraz","email":"codersuraz@gmail.com"}],"description":"Headless, framework-agnostic Nepali (BS) date picker with a rich manipulation API and framework adapters.","homepage":"https://github.com/codersuraz/nepali-datepicker#readme","keywords":["nepali","bikram-sambat","BS","datepicker","headless","calendar","nepal"],"repository":{"type":"git","url":"git+https://github.com/codersuraz/nepali-datepicker.git"},"author":{"name":"codersuraz"},"bugs":{"url":"https://github.com/codersuraz/nepali-datepicker/issues"},"license":"MIT","readme":"# @codersuraz/nepali-datepicker\r\n\r\nHeadless, framework-agnostic Nepali (BS) date picker with a rich manipulation API, range selection, and optional Material Design-inspired styles.\r\n\r\n**[🌐 Official Documentation & Live Demos](https://surajkhanal.github.io/nepali-datepicker)**\r\n\r\n## Features\r\n\r\n- Bikram Sambat (BS) support for 2000–2100 with AD conversion\r\n- Immutable `NepaliDate` API inspired by Moment.js / Carbon\r\n- Headless calendar engine and range engine\r\n- Vanilla / React / Vue 3 / Svelte adapters\r\n- Optional Material stylesheet and inline SVG icons\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @codersuraz/nepali-datepicker\r\n```\r\n\r\n## Usage\r\n\r\n### Vanilla\r\n\r\n```js\r\nimport { createPicker, NepaliDate } from '@codersuraz/nepali-datepicker';\r\nimport '@codersuraz/nepali-datepicker/dist/material.css';\r\n\r\nconst picker = createPicker(document.getElementById('my-picker'), {\r\n  locale: 'np',\r\n  defaultDate: NepaliDate.today(),\r\n  minDate: NepaliDate.parse('2080-01-01'),\r\n  maxDate: NepaliDate.parse('2085-12-30'),\r\n  onChange: (date) => console.log(date.format('YYYY MMMM DD', 'np')),\r\n});\r\n```\r\n\r\n### Range Picker\r\n\r\n```js\r\nconst rangePicker = createPicker(container, {\r\n  range: true,\r\n  locale: 'en',\r\n  minRange: 2,\r\n  maxRange: 30,\r\n  onRangeChange: ({ start, end }) => {\r\n    console.log(`${start.format()} → ${end.format()}`);\r\n    console.log(`Duration: ${start.diff(end, 'day')} days`);\r\n  },\r\n});\r\n```\r\n\r\n### React\r\n\r\n```jsx\r\nimport { useNepaliDatePicker } from '@codersuraz/nepali-datepicker/react';\r\n\r\nfunction MyPicker() {\r\n  const { state, selectDate, goToPrevMonth, goToNextMonth } =\r\n    useNepaliDatePicker({ locale: 'en' });\r\n\r\n  return (\r\n    <div className=\"my-calendar\">\r\n      <button onClick={goToPrevMonth}>‹</button>\r\n      <span>{state.viewYear} / {state.viewMonth}</span>\r\n      <button onClick={goToNextMonth}>›</button>\r\n      <div className=\"grid\">\r\n        {state.weeks.flat().map((cell, i) =>\r\n          cell ? (\r\n            <button\r\n              key={i}\r\n              onClick={() => selectDate(cell.date)}\r\n              className={cell.isSelected ? 'selected' : ''}\r\n              disabled={cell.isDisabled}\r\n            >\r\n              {cell.label}\r\n            </button>\r\n          ) : <span key={i} />\r\n        )}\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n```\r\n\r\n### Vue 3\r\n\r\n```js\r\nimport { useNepaliDatePicker } from '@codersuraz/nepali-datepicker/vue';\r\n\r\nconst { state, selectDate } = useNepaliDatePicker({ locale: 'np' });\r\n```\r\n\r\n### Svelte\r\n\r\n```js\r\nimport { createNepaliPickerStore } from '@codersuraz/nepali-datepicker/svelte';\r\n\r\nconst picker = createNepaliPickerStore({ locale: 'en' });\r\n```\r\n\r\n## API\r\n\r\n### NepaliDate\r\n\r\n- `new NepaliDate(year, month, day)`\r\n- `NepaliDate.fromAD(date)`\r\n- `NepaliDate.parse(str, formatStr, locale)`\r\n- `NepaliDate.today()`\r\n- `NepaliDate.fromTimestamp(ms)`\r\n\r\nGetters: `year`, `month`, `day`, `weekDay`, `quarter`, `dayOfYear`, `weekOfYear`, `daysInMonth`, `daysInYear`, `isLeapYear`\r\n\r\nConversion: `toAD()`, `toObject()`, `toTimestamp()`, `format(formatStr, locale)`\r\n\r\nArithmetic: `add`, `subtract`, `startOf`, `endOf`, plus `addDays`, `addMonths`, `addYears`, `subtractDays`, `subtractMonths`, `subtractYears`\r\n\r\nComparison: `isBefore`, `isAfter`, `isSame`, `isBetween`, `isToday`, `isWeekend`, `isValid`, `diff`\r\n\r\nMutation: `clone`, `set(field, value)`\r\n\r\n### CalendarEngine\r\n\r\nConstructor options:\r\n\r\n- `value`, `defaultDate`, `minDate`, `maxDate`\r\n- `locale` (`'en' | 'np'`)\r\n- `weekStartsOn` (`0 | 1`)\r\n- `disabledDays`, `disabledDates`\r\n- `onChange`, `onMonthChange`\r\n\r\nMethods:\r\n\r\n- `getState()`\r\n- `goToPrevMonth`, `goToNextMonth`, `goToPrevYear`, `goToNextYear`\r\n- `goToMonth(year, month)`, `goToToday()`, `setViewMode(mode)`\r\n- `selectDate(nepaliDate)`, `clearSelection()`, `setValue(nepaliDate)`\r\n- `subscribe(listener)`, `destroy()`\r\n\r\n### RangePicker\r\n\r\nExtends `CalendarEngine` with:\r\n\r\n- `startDate`, `endDate`, `hoverDate`, `selectionPhase`\r\n- `hoverDate(date)`, `setRange(start, end)`, `clearRange()`, `swapIfInverted()`\r\n\r\n## Styling\r\n\r\nOptional Material stylesheet:\r\n\r\n```js\r\nimport '@codersuraz/nepali-datepicker/dist/material.css';\r\n```\r\n\r\n## Data Source\r\n\r\nBS calendar data is derived from Government of Nepal calendar publications (via the `nepali-datetime` dataset). Supported range is 2000–2100 BS.\r\n\r\n## Build\r\n\r\n```bash\r\nnpm run build\r\nnpm test\r\n```\r\n\r\n","readmeFilename":"README.md","_rev":"1-84b1fa64d3cf7587ec636600885c12f8"}