{"_id":"@danyi1212/time-range-picker","_rev":"2-b75a425f50d5dc9d540e02a7309ae625","name":"@danyi1212/time-range-picker","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@danyi1212/time-range-picker","version":"0.1.0","license":"MIT","_id":"@danyi1212/time-range-picker@0.1.0","maintainers":[{"name":"danyi1212","email":"dan@danyi.io"}],"homepage":"https://github.com/danyi1212/time-range-picker-component#readme","bugs":{"url":"https://github.com/danyi1212/time-range-picker-component/issues"},"dist":{"shasum":"c929c83b2489d6693cfaf562ea31a1f4e28b32da","tarball":"https://registry.npmjs.org/@danyi1212/time-range-picker/-/time-range-picker-0.1.0.tgz","fileCount":16,"integrity":"sha512-AKLWN4dLGDm8bAZIrd7hvlFJOtzl/thlsNFItkiNhmda70EZVUoW4qjJdZ4WGUIuKEoZC5Su9ROiZxjBQOCjig==","signatures":[{"sig":"MEQCID9U6VYNH9mL8JzaYG/KhOji0rgd7/ASBt51b5Xx0NJ0AiAn6GSAQEuYsRB2Mst7I7pGEOjeBmHN4WwdhNmoO6nqEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197863},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./time-range":{"types":"./dist/time-range.d.ts","import":"./dist/time-range.js"},"./time-range-picker":{"types":"./dist/time-range-picker.d.ts","import":"./dist/time-range-picker.js"}},"gitHead":"53d7cafc5b587588f4b23898ff2fe9bfd201913c","private":false,"scripts":{"test":"vitest run","build":"tsup","prepack":"pnpm build && pnpm build:registry","test:ui":"vitest --ui","typecheck":"tsc --noEmit","test:watch":"vitest","build:registry":"tsx scripts/build-registry.ts"},"_npmUser":{"name":"danyi1212","email":"dan@danyi.io"},"repository":{"url":"git+https://github.com/danyi1212/time-range-picker-component.git","type":"git","directory":"packages/time-range-picker"},"_npmVersion":"10.9.2","directories":{},"sideEffects":false,"_nodeVersion":"22.3.0","dependencies":{"clsx":"^2.1.1","cmdk":"^1.1.1","date-fns":"^4.1.0","chrono-node":"^2.7.7","lucide-react":"^0.564.0","tailwind-merge":"^3.3.1","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-popover":"^1.1.14","@radix-ui/react-tooltip":"^1.2.8","class-variance-authority":"^0.7.1"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jsdom":"^26.1.0","react":"^19.2.4","vitest":"^3.2.4","react-dom":"^19.2.4","@vitest/ui":"^3.2.4","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^14.6.1"},"peerDependencies":{"react":">=18","react-dom":">=18","tailwindcss":">=4"},"_npmOperationalInternal":{"tmp":"tmp/time-range-picker_0.1.0_1775424738043_0.6536745650119875","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@danyi1212/time-range-picker","version":"0.1.1","private":false,"homepage":"https://time-range-picker-component.vercel.app/","bugs":{"url":"https://github.com/danyi1212/time-range-picker/issues"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/danyi1212/time-range-picker.git","directory":"packages/time-range-picker"},"type":"module","sideEffects":false,"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./time-range-picker":{"types":"./dist/time-range-picker.d.ts","import":"./dist/time-range-picker.js"},"./time-range":{"types":"./dist/time-range.d.ts","import":"./dist/time-range.js"}},"publishConfig":{"access":"public","provenance":true},"dependencies":{"@radix-ui/react-popover":"^1.1.14","@radix-ui/react-slot":"^1.2.4","@radix-ui/react-tooltip":"^1.2.8","chrono-node":"^2.7.7","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cmdk":"^1.1.1","date-fns":"^4.1.0","lucide-react":"^0.564.0","tailwind-merge":"^3.3.1"},"devDependencies":{"@testing-library/jest-dom":"^6.6.3","@testing-library/react":"^16.3.0","@testing-library/user-event":"^14.6.1","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitest/ui":"^3.2.4","jsdom":"^26.1.0","react":"^19.2.4","react-dom":"^19.2.4","tsx":"^4.21.0","vitest":"^3.2.4"},"peerDependencies":{"react":">=18","react-dom":">=18","tailwindcss":">=4"},"scripts":{"build":"tsup","test":"vitest run","test:watch":"vitest","test:ui":"vitest --ui","typecheck":"tsc --noEmit","build:registry":"tsx scripts/build-registry.ts"},"_id":"@danyi1212/time-range-picker@0.1.1","description":"A React time range picker with natural language parsing, preset ranges, and utility helpers for working with relative and absolute ranges.","_integrity":"sha512-Yv2aiZzgT/wWM07lHyxDJrGZ+AdXTPyM/kzX78uCQj1Yj5C51wzafwU/qMRk2otZIhwPiDT++QEvogUHUdUbRA==","_resolved":"/tmp/3f02d85d237485f3b18d8148ab2b332e/danyi1212-time-range-picker-0.1.1.tgz","_from":"file:danyi1212-time-range-picker-0.1.1.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-Yv2aiZzgT/wWM07lHyxDJrGZ+AdXTPyM/kzX78uCQj1Yj5C51wzafwU/qMRk2otZIhwPiDT++QEvogUHUdUbRA==","shasum":"61093ca2589045e4023fc5ed451b199c376e0ba5","tarball":"https://registry.npmjs.org/@danyi1212/time-range-picker/-/time-range-picker-0.1.1.tgz","fileCount":18,"unpackedSize":201858,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@danyi1212%2ftime-range-picker@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC3krGw9lk5a8Fd3FGTXc4OYwQt3glZEHFLa/QtwhU0sQIgP+0kz0CYSV1cQZDqodhPMvfEyMh68WKGTCy8c7nyu/8="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e0f76d9b-41e7-4fe5-8017-1976da65cf6e"}},"directories":{},"maintainers":[{"name":"danyi1212","email":"dan@danyi.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/time-range-picker_0.1.1_1775426967527_0.669897379669582"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-05T21:32:17.972Z","modified":"2026-04-05T22:09:27.990Z","0.1.0":"2026-04-05T21:32:18.173Z","0.1.1":"2026-04-05T22:09:27.689Z"},"bugs":{"url":"https://github.com/danyi1212/time-range-picker/issues"},"license":"MIT","homepage":"https://time-range-picker-component.vercel.app/","repository":{"type":"git","url":"git+https://github.com/danyi1212/time-range-picker.git","directory":"packages/time-range-picker"},"maintainers":[{"name":"danyi1212","email":"dan@danyi.io"}],"readme":"# @danyi1212/time-range-picker\n\nA React time range picker with natural language parsing, preset ranges, and\nutility helpers for working with relative and absolute ranges.\n\nLive preview: https://time-range-picker-component.vercel.app/\n\n## Features\n\n- Natural language parsing for inputs like `past 3 hours`, `last friday`, or\n  `Mar 1 - Mar 15`\n- Shortcut syntax such as `3h`, `30m`, `7d`, `2w`, and `1mo`\n- Built-in presets for common ranges like today, yesterday, this week, and last\n  month\n- Inline controls to shift ranges backward and forward or pause live ranges\n- 12h and 24h clock support\n- Utility exports for parsing, formatting, shifting, and resolving ranges\n\n## Installation\n\n```bash\nnpm install @danyi1212/time-range-picker date-fns chrono-node lucide-react\n```\n\nPeer dependencies:\n\n- `react >= 18`\n- `react-dom >= 18`\n- `tailwindcss >= 4`\n\nThis package uses Radix UI primitives and Tailwind-based styling.\n\n## Usage\n\n```tsx\nimport { useState } from \"react\";\nimport { enGB } from \"date-fns/locale\";\nimport { TimeRangePicker, type TimeRange } from \"@danyi1212/time-range-picker\";\n\nexport function Example() {\n  const [range, setRange] = useState<TimeRange | null>(null);\n\n  return (\n    <TimeRangePicker\n      value={range}\n      onChange={setRange}\n      clockFormat=\"24h\"\n      locale={enGB}\n      weekStartsOn={1}\n      labels={{ now: \"live\" }}\n      placeholder=\"Search time range...\"\n    />\n  );\n}\n```\n\n## Exports\n\nFrom `@danyi1212/time-range-picker`:\n\n- `TimeRangePicker`\n- `DEFAULT_TIME_RANGE_EXAMPLES`\n- `parseTimeRange`\n- `resolveTimeRange`\n- `formatDuration`\n- `formatRangeDisplay`\n- `formatInputDisplay`\n- `formatPresetHint`\n- `getPresets`\n- `getFilteredPresets`\n\nFrom `@danyi1212/time-range-picker/time-range`:\n\n- `resolveTimeRangeToIso`\n- `getTimeRangeStart`\n- `getTimeRangeEnd`\n- `getTimeRangeDurationMs`\n- `getTimeRangeDuration`\n- `pauseTimeRange`\n- `canShiftTimeRangeForward`\n- `shiftTimeRange`\n- `isLiveTimeRange`\n- `isStaticTimeRange`\n\n## Example Utilities\n\n```ts\nimport { parseTimeRange } from \"@danyi1212/time-range-picker\";\n\nconst range = parseTimeRange(\"past 3 hours\", new Date(), {\n  clockFormat: \"24h\",\n});\n```\n\n```ts\nimport { shiftTimeRange } from \"@danyi1212/time-range-picker/time-range\";\n\nconst previousWindow = shiftTimeRange(range, \"backward\");\n```\n\n## Types\n\nThe package exports these types from the root entrypoint:\n\n- `TimeRangePickerProps`\n- `TimeRangePickerControlLabels`\n- `TimeRange`\n- `TimeRangePreset`\n- `ClockFormat`\n- `RelativeDuration`\n- `RelativeDurationUnit`\n- `TimeRangeOptions`\n- `TimeRangeLabels`\n- `TimeRangeFormatPatterns`\n\nAnd these types from `@danyi1212/time-range-picker/time-range`:\n\n- `LiveRangeDetails`\n- `StaticTimeRange`\n- `LiveTimeRange`\n- `ResolvedTimeRange`\n\n## Links\n\n- Live preview: https://time-range-picker-component.vercel.app/\n- Source: https://github.com/danyi1212/time-range-picker\n- shadcn registry entry:\n  https://raw.githubusercontent.com/danyi1212/time-range-picker/main/packages/time-range-picker/registry/time-range-picker.json\n","readmeFilename":"README.md","description":"A React time range picker with natural language parsing, preset ranges, and utility helpers for working with relative and absolute ranges."}