Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
2fabb23
ci: Setup base repo infrastructure
cutterbl Mar 28, 2024
9b98679
feat(parse): Build initial parser
cutterbl Mar 28, 2024
a657003
docs: Updates to parsing docs
cutterbl Mar 28, 2024
5d859c3
chore: Add more utility functions
cutterbl Mar 28, 2024
a285157
feat: Basic formatter functions
cutterbl May 8, 2024
5e520ec
docs: Add JSDocs function explainers
cutterbl May 8, 2024
169e06d
refactor: update isValidDate return type for improved type safety
bart-krakowski May 29, 2024
75cb7b3
refactor: update isValidDate return type for improved type safety
bart-krakowski May 29, 2024
5dca8d5
refactor: update isValidDate return type for improved type safety
bart-krakowski May 30, 2024
4fb89ec
test: refactor tests for the parse util
bart-krakowski May 30, 2024
b2bbb4d
refactor: types for utils
bart-krakowski May 30, 2024
e9e4be9
revert: isValidDate util
bart-krakowski May 30, 2024
780b2da
Merge branch 'v0' into chore/vitest-config
bart-krakowski May 30, 2024
ae48b69
docs: architecture md file
bart-krakowski May 30, 2024
d64d04a
feat: useCalendar hook
bart-krakowski Jun 1, 2024
28b4304
test: useCalendar tests
bart-krakowski Jun 2, 2024
28f491c
docs: useCalendar hook
bart-krakowski Jun 2, 2024
468dc26
docs: useCalendar hook
bart-krakowski Jun 2, 2024
0b9bdeb
test: useCalendar tests
bart-krakowski Jun 2, 2024
5b6533e
test: useCalendar tests
bart-krakowski Jun 2, 2024
37effd4
test: overlaping events
bart-krakowski Jun 2, 2024
c0e5713
docs: add the choosing-a-date-time-handling-solution adr
bart-krakowski Jun 2, 2024
096f95d
feat(react-time/useCalendar): getCurrentTimeMarkerProps
bart-krakowski Jun 3, 2024
26b0e1e
feat(react-time/useCalendar): getCurrentTimeMarkerProps
bart-krakowski Jun 3, 2024
3cf89c3
feat(react-time/useCalendar): getCurrentTimeMarkerProps
bart-krakowski Jun 3, 2024
4ae3c45
refactor: reducer
bart-krakowski Jun 3, 2024
4009dae
refactor: reducer
bart-krakowski Jun 3, 2024
fa3716a
refactor(useCalendar): types
bart-krakowski Jun 4, 2024
131984b
refactor(useCalendar): types
bart-krakowski Jun 4, 2024
e542934
refactor: useCalendar reducer
bart-krakowski Jun 4, 2024
a149778
refactor: useCalendar reducer
bart-krakowski Jun 5, 2024
28ac64f
refactor: useCalendar reducer
bart-krakowski Jun 5, 2024
dfa353a
feat: add the isToday field
bart-krakowski Jun 5, 2024
8742087
feat: add the isToday field
bart-krakowski Jun 5, 2024
3d6f74a
feat: add the isToday field
bart-krakowski Jun 5, 2024
d93b29d
docs: useCalendar
bart-krakowski Jun 5, 2024
6432973
feat: useCalendar hook
bart-krakowski Jun 5, 2024
75a445a
cd
bart-krakowski Jun 5, 2024
7536efc
feat: useCalendar hook
bart-krakowski Jun 5, 2024
29d20ae
feat: useCalendar hook
bart-krakowski Jun 5, 2024
e37dbf7
feat: useCalendar hook
bart-krakowski Jun 5, 2024
d76ddc1
feat: useCalendar hook
bart-krakowski Jun 5, 2024
f6b6f29
test: useCalendar
bart-krakowski Jun 5, 2024
d9ed5e7
test: useCalendar
bart-krakowski Jun 5, 2024
7b8662b
test: useCalendar
bart-krakowski Jun 5, 2024
be2e360
feat: custom reducer
bart-krakowski Jun 6, 2024
4ccd56b
docs: tsdocs
bart-krakowski Jun 6, 2024
cc59409
docs: tsdocs
bart-krakowski Jun 6, 2024
8d51b58
docs: tsdocs
bart-krakowski Jun 6, 2024
1e71684
refactor: useCalendar
bart-krakowski Jun 6, 2024
e134065
refactor: useCalendar
bart-krakowski Jun 6, 2024
f3f47ed
refactor: useCalendar
bart-krakowski Jun 6, 2024
1ee814a
refactor: change viewMode type
bart-krakowski Jun 9, 2024
c2419de
refactor: change viewMode type
bart-krakowski Jun 9, 2024
215f722
fix: missing days in view
bart-krakowski Jun 9, 2024
0f05c00
refactor: api
bart-krakowski Jun 11, 2024
def6499
refactor: api
bart-krakowski Jun 11, 2024
110e8be
fix: types
bart-krakowski Jun 11, 2024
3333fcb
fix: types
bart-krakowski Jun 11, 2024
492405b
fix: types
bart-krakowski Jun 11, 2024
7bee6b4
fix: types
bart-krakowski Jun 11, 2024
83f0724
docs: useCalendar
bart-krakowski Jun 11, 2024
e4fb70a
docs: useCalendar
bart-krakowski Jun 11, 2024
e598c20
fix: types
bart-krakowski Jun 11, 2024
a9665a7
refactor: add the fillMissingDays argument
bart-krakowski Jun 11, 2024
d9e9b88
refactor: add the fillMissingDays argument
bart-krakowski Jun 11, 2024
fe13c2c
refactor: add the fillMissingDays argument
bart-krakowski Jun 11, 2024
9f99846
refactor: move utilities to the core package
bart-krakowski Jun 11, 2024
93b519a
fix: getCurrentTimeMarkerProps
bart-krakowski Jun 12, 2024
87544e2
docs: update jsdocs
bart-krakowski Jun 12, 2024
b5ae21e
test: useCalendar
bart-krakowski Jun 12, 2024
f5bd2b7
refactor: getCurrentTimeMarkerProps
bart-krakowski Jun 12, 2024
c03128c
feat: calendar core
bart-krakowski Jun 13, 2024
3c48a5e
feat: calendar core
bart-krakowski Jun 13, 2024
6499475
feat: calendar core
bart-krakowski Jun 13, 2024
2ac6065
docs: calendar core
bart-krakowski Jun 13, 2024
a71f5a8
refactor: useCalendar
bart-krakowski Jun 13, 2024
965de14
test: calendar core
bart-krakowski Jun 17, 2024
301d4b8
refactor: useCalendar
bart-krakowski Jun 17, 2024
1324311
refactor: useCalendar
bart-krakowski Jun 17, 2024
042bb13
refactor: useCalendar
bart-krakowski Jun 17, 2024
82c1c87
refactor(useCalendar): types
bart-krakowski Jun 17, 2024
f61a99d
refactor: move calendar-related files to the core directory
bart-krakowski Jun 20, 2024
1465e85
refactor: Update CalendarCoreOptions interface in calendar.ts
bart-krakowski Jun 20, 2024
3f4ef79
test: imports
bart-krakowski Jun 20, 2024
bff5f34
docs: typo
bart-krakowski Jun 20, 2024
57c547e
refactor: DatePickerCore
bart-krakowski Jun 21, 2024
3dc223d
refactor: weekInfoPolyfill
bart-krakowski Jun 23, 2024
2eabee4
refactor: weekInfoPolyfill
bart-krakowski Jun 23, 2024
564c4e7
refactor: weekInfoPolyfill
bart-krakowski Jun 23, 2024
1a5f193
refactor: weekInfoPolyfill
bart-krakowski Jun 24, 2024
3331c17
refactor: date defaults
bart-krakowski Jun 24, 2024
e1f9c12
refactor: date defaults
bart-krakowski Jun 24, 2024
1dfecfb
refactor: date defaults
bart-krakowski Jun 24, 2024
277f416
refactor: types
bart-krakowski Jun 25, 2024
4131b8e
docs: jsdocs
bart-krakowski Jun 25, 2024
b7f67f0
refactor: types
bart-krakowski Jun 25, 2024
4165b20
refactor: types
bart-krakowski Jun 25, 2024
1b71c7e
test: useCalendar
bart-krakowski Jun 25, 2024
604c8bb
refactor: useIsomorphicLayoutEffect
bart-krakowski Jun 25, 2024
6311195
docs: calendar
bart-krakowski Jun 26, 2024
6627c0c
docs: calendar
bart-krakowski Jun 26, 2024
df925d4
refactor: zonedDateTime
bart-krakowski Jun 28, 2024
c65b760
refactor: rename startDate to start and endDate to end
bart-krakowski Jun 28, 2024
18ad00c
refactor: remove the getCurrentTimeMarkerProps method
bart-krakowski Jun 28, 2024
403df99
refactor: weekInfoPolyfill
bart-krakowski Jun 30, 2024
a805131
refactor: add a resources field to event
bart-krakowski Jun 30, 2024
e17f0cd
refactor: add a resources field to event
bart-krakowski Jun 30, 2024
396d629
refactor: add a resources field to event
bart-krakowski Jun 30, 2024
adc9998
refactor: add startOf and endOf helpers
bart-krakowski Jun 30, 2024
31470b4
refactor: remove all the layout specific code
bart-krakowski Jun 30, 2024
16867e8
refactor: update getDaysNames method to accept weekday parameter
bart-krakowski Jul 1, 2024
be68798
refactor: update useCalendar test to mock current date and time
bart-krakowski Jul 1, 2024
c3ba0c9
refactor: update useCalendar test to mock current date and time
bart-krakowski Jul 1, 2024
5afea3e
test: update useCalendar tests
bart-krakowski Jul 1, 2024
15aced5
test: update useCalendar tests
bart-krakowski Jul 1, 2024
eb8b7b7
test: useCalendar
bart-krakowski Jul 1, 2024
4d71196
refactor: update CalendarCore tests to mock current date and time
bart-krakowski Jul 1, 2024
fbbae15
refactor: Update CalendarCore to use destructuring assignment for dat…
bart-krakowski Jul 2, 2024
ce9b924
feat: add the activeDate property
bart-krakowski Jul 2, 2024
66bfe53
refactor: use compare method
bart-krakowski Jul 2, 2024
06f633d
feat: add workWeek unit
bart-krakowski Jul 2, 2024
0c8c868
feat: add workWeek unit
bart-krakowski Jul 2, 2024
4b7ea40
test: tests reorganisation
bart-krakowski Jul 2, 2024
d544348
chore: add the get-week-info-polyfill
bart-krakowski Jul 3, 2024
d090483
feat: getWeekInfo polyfill
bart-krakowski Jul 3, 2024
178aa34
refactor: getEventProps
bart-krakowski Jul 3, 2024
79fdfdd
refactor: getEventProps
bart-krakowski Jul 3, 2024
20fb06d
refactor: Update generateDateRange to accept string inputs
bart-krakowski Jul 3, 2024
8ae1bcd
chore: upgrade polyfill
bart-krakowski Jul 4, 2024
0e974ac
fix: getEventProps
bart-krakowski Jul 4, 2024
85c6a77
fix: getEventProps
bart-krakowski Jul 4, 2024
72d43d4
refactor: update date inputs to accept string format
bart-krakowski Jul 4, 2024
cbc2186
refactor: convert activeDate, currentPeriod to string in useCalendar
bart-krakowski Jul 4, 2024
1f6048e
refactor: startOf and endOf helpers
bart-krakowski Jul 18, 2024
291cfb1
test: calendar core
bart-krakowski Jul 18, 2024
3aa0488
refactor: update useCalendar to accept string inputs for activeDate a…
bart-krakowski Jul 20, 2024
8850d2a
refactor: Update get-week-info-polyfill dependency to version 1.0.6
bart-krakowski Jul 20, 2024
fe67772
refactor: Update startOf and endOf helpers to accept string inputs
bart-krakowski Jul 20, 2024
e17fa79
docs: update architecture
bart-krakowski Jul 24, 2024
de02743
# This is a combination of 6 commits.
bart-krakowski Aug 7, 2024
b693102
docs: readme
bart-krakowski Aug 8, 2024
2c1f648
ci: Updating dependencies and configs
cutterbl Apr 25, 2025
c2b767a
ci: Continue addressing dependency updates
cutterbl Apr 25, 2025
e2c36c4
chore: dependencies update
bart-krakowski Apr 25, 2025
12c8af3
chore: dependencies update
bart-krakowski Apr 25, 2025
c585a30
ci: Copilot NX specific context
cutterbl May 7, 2025
691b3bb
Merge branch 'TanStack:v0' into v0
bart-krakowski May 7, 2025
b489069
chore: resolve conflicts
bart-krakowski Jan 9, 2026
b38caa8
Merge pull request #1 from bart-krakowski/chore/vitest-config
bart-krakowski Jan 9, 2026
6843cc4
docs: architecture
bart-krakowski Jan 9, 2026
6c46b9e
Merge branch 'v0-1-0' into docs/readme
bart-krakowski Jan 9, 2026
24d03e6
docs: readme
bart-krakowski Jan 9, 2026
7dafbf3
docs: adr choosing a date and time handling solution
bart-krakowski Jan 9, 2026
42b842a
fix: parse util
bart-krakowski Jan 9, 2026
9015ee6
fix: parse util
bart-krakowski Jan 9, 2026
ee3b26e
test: parse
bart-krakowski Jan 9, 2026
b081caf
fix: parse util
bart-krakowski Jan 9, 2026
b4e62cc
Merge branch 'v0-1-0' of github.com:bart-krakowski/time into v0-1-0
bart-krakowski Jan 9, 2026
4250b76
chore: resolve conflicts
bart-krakowski Jan 10, 2026
1895a01
chore: resolve conflicts
bart-krakowski Jan 10, 2026
23881aa
chore: resolve conflicts
bart-krakowski Jan 10, 2026
d2a89c7
test: update temporal mocks
bart-krakowski Jan 10, 2026
dc32b51
chore: update the lock file
bart-krakowski Jan 10, 2026
e2b5cb7
fix: lint
bart-krakowski Jan 10, 2026
40f58d3
fix: lint
bart-krakowski Jan 10, 2026
e536094
fix: lint
bart-krakowski Jan 10, 2026
e1785a4
feat: basic example
bart-krakowski Jan 10, 2026
5ad20ac
feat: basic example
bart-krakowski Jan 10, 2026
07ef441
feat: basic example
bart-krakowski Jan 10, 2026
bad6db8
feat: calendar
bart-krakowski Jan 11, 2026
cbfc28a
feat: calendar
bart-krakowski Jan 11, 2026
7bb371c
feat: calendar
bart-krakowski Jan 11, 2026
227a2df
feat: calendar
bart-krakowski Jan 11, 2026
1e7308f
feat: calendar
bart-krakowski Jan 11, 2026
dcbd9ef
feat: calendar
bart-krakowski Jan 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .browserslistrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Browsers we support
Chrome >= 84
Firefox >= 90
Edge >= 84
Safari >= 15
iOS >= 15
opera >= 70
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto eol=lf
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
github: tannerlinsley
71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: '🐛 Bug report'
description: Create a report to help us improve
body:
- type: markdown
attributes:
value: |
Thank you for reporting an issue :pray:.

This issue tracker is for reporting bugs found in `time` (https://github.com/tanstack/time).
If you have a question about how to achieve something and are struggling, please post a question
inside of `time` Discussions tab: https://github.com/tanstack/time/discussions

Before submitting a new bug/issue, please check the links below to see if there is a solution or question posted there already:
- `time` Issues tab: https://github.com/tanstack/time/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc
- `time` closed issues tab: https://github.com/tanstack/time/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aclosed
- `time` Discussions tab: https://github.com/tanstack/time/discussions

The more information you fill in, the better the community can help you.
- type: textarea
id: description
attributes:
label: Describe the bug
description: Provide a clear and concise description of the challenge you are running into.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to Reproduce the Bug or Issue
description: Describe the steps we have to take to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
description: Provide a clear and concise description of what you expected to happen.
placeholder: |
As a user, I expected ___ behavior but i am seeing ___
validations:
required: true
- type: textarea
id: screenshots_or_videos
attributes:
label: Screenshots or Videos
description: |
If applicable, add screenshots or a video to help explain your problem.
For more information on the supported file image/file types and the file size limits, please refer
to the following link: https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/attaching-files
placeholder: |
You can drag your video or image files inside of this editor ↓
- type: textarea
id: platform
attributes:
label: Platform
value: |
- OS: [e.g. macOS, Windows, Linux]
- Browser: [e.g. Chrome, Safari, Firefox]
- Version: [e.g. 91.1]
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional context
description: Add any other context about the problem here.
11 changes: 11 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: 🤔 Feature Requests & Questions
url: https://github.com/tanstack/time/discussions
about: Please ask and answer questions here.
- name: 💬 Community Chat
url: https://discord.gg/mQd7egN
about: A dedicated discord server hosted by Tanner Linsley
- name: 💬 Tanstack Twitter
url: https://twitter.com/tan_stack
about: Stay up to date with new releases of our libraries
58 changes: 58 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: ci

on:
workflow_dispatch:
inputs:
tag:
description: override release tag
required: false
push:
branches: ['main', 'alpha', 'beta']

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true

env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}

jobs:
test-and-publish:
name: Test & Publish
if: github.repository == 'TanStack/time'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: pnpm
- name: Start Nx Agents
run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml"
- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Run Tests
run: pnpm run test:ci --parallel=3
- name: Stop Nx Agents
if: ${{ always() }}
run: npx nx-cloud stop-all-agents
- name: Publish
run: |
git config --global user.name 'Tanner Linsley'
git config --global user.email 'tannerlinsley@users.noreply.github.com'
npm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}"
pnpm run cipublish
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
TAG: ${{ inputs.tag }}
47 changes: 47 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: pr

on:
pull_request:
paths-ignore:
- 'docs/**'
- 'media/**'
- '**/*.md'

concurrency:
group: ${{ github.workflow }}-${{ github.event.number || github.ref }}
cancel-in-progress: true

env:
NX_CLOUD_ACCESS_TOKEN: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}

jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 8
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
cache: pnpm
- name: Start Nx Agents
run: npx nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml"
- name: Install dependencies
run: pnpm install --frozen-lockfile --prefer-offline
- name: Get base and head commits for `nx affected`
uses: nrwl/nx-set-shas@v3
with:
main-branch-name: 'main'
- name: Run Checks
run: pnpm run test:pr --parallel=3
- name: Stop Nx Agents
if: ${{ always() }}
run: npx nx-cloud stop-all-agents
42 changes: 42 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
node_modules
package-lock.json
yarn.lock

# builds
build
coverage
dist

# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.next

npm-debug.log*
yarn-debug.log*
yarn-error.log*
.history
size-plugin.json
stats-hydration.json
stats.json
stats.html
.vscode/settings.json

*.log
.cache
.idea
.nx/cache
.nx/workspace-data
.pnpm-store
.tsup

vite.config.js.timestamp-*
vite.config.ts.timestamp-*
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
prefer-workspace-packages=true
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v18.19.0
4 changes: 4 additions & 0 deletions .nx/workflows/dynamic-changesets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
distribute-on:
small-changeset: 8 linux-medium-js
medium-changeset: 10 linux-medium-js
large-changeset: 12 linux-medium-js
11 changes: 11 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
**/.next
**/.nx/cache
**/.svelte-kit
**/build
**/coverage
**/dist
**/docs
**/codemods/**/__testfixtures__
pnpm-lock.yaml

/.nx/workspace-data
5 changes: 5 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"semi": false,
"singleQuote": true,
"trailingComma": "all"
}
Empty file.
8 changes: 8 additions & 0 deletions .vscode/mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"servers": {
"nx-mcp": {
"type": "sse",
"url": "http://localhost:9811/sse"
}
}
}
81 changes: 81 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
## Overview

`@tanstack/time` is a headless utility library designed to facilitate the creation of time and calendar components across various JavaScript frameworks, including TypeScript/JavaScript, React, Solid, Vue, Svelte, and Angular. This document provides an overview of the architecture and design principles of the library.


## Design Principles

### Headless utilities
The library provides core functionalities without imposing any UI constraints, allowing developers to build custom UI components tailored to their specific needs.

### Framework agnostic
Core logic is implemented in a framework-agnostic manner, ensuring compatibility across multiple frameworks.

### Modular and extensible
The library is designed to be modular, enabling developers to use only the parts they need and extend functionalities when required.

### Type safety
Leveraging TypeScript to provide a strongly typed API, ensuring better developer experience and reducing runtime errors.

### Standards-based
The library uses standards-based core logic, aligning with modern web standards and best practices.
Internationalization and localization
TanStack Time is designed to handle various locales, calendars, and timezones, addressing the complexities of global date and time representation.
Core Modules
### Time utilities
The library provides a set of utilities for working with time, including parsing, formatting, and manipulating time values.

### Calendar utilities
Calendar utilities enable developers to work with calendar-related functionalities, such as date range calculations, month view generation, and event scheduling.

### Date manipulation
Utilities for performing date math, comparisons, grouping, and range operations.
Formatting
Flexible date and time formatting options based on locale, calendar, and timezone.

## Project Structure

The project is structured as follows:
```lua
├── packages # Contains individual packages for different frameworks
│ ├── time # Core logic shared across all packages
│ ├── src # Core logic implementation
│ ├── test # Unit tests
│ ├── {framework}-time # Adapters for specific frameworks (e.g., react-time, vue-time)
├── examples # Example applications demonstrating library usage
├── docs # Documentation files
├── scripts # Build and test scripts
```

The core logic is implemented in the `time` package, which contains the shared functionality across all framework-specific packages. Each framework-specific package (e.g., `react-time`, `vue-time`) contains the necessary adapters to integrate the core logic with the respective framework.


## API Design

The API of @tanstack/time is designed to be intuitive and flexible. It provides a set of core functions that can be easily composed to build complex time and calendar functionalities. The API is consistent across different frameworks, ensuring a seamless developer experience when switching between frameworks.

### Key API features include:

Parsing of RFC 3339 date time strings, epoch time, and Date objects
Formatting based on Intl.DateTimeFormat standards
Date math operations
Comparison and sorting utilities
Grouping and range operations
Timezone and DST handling

## Extensibility
The library is designed to be extensible, allowing developers to add custom functionalities or modify existing ones to suit their requirements. Developers can extend the core logic by creating custom utilities or by composing existing utilities in new ways.

### Temporal API Integration
TanStack Time leverages the upcoming Temporal API, using a polyfill maintained by the TC39 champions until it's fully ratified and implemented by all major browsers. This ensures forward compatibility and access to advanced date and time manipulation features.

### Internationalization
The library is built with internationalization in mind, addressing the complexities of different calendar systems, date formats, and time representations across various cultures and regions.

### Performance Considerations

Memoization is used for formatters to improve performance when repeatedly formatting dates.
The library provides options for working with "simple" date representations (strings or numbers) to facilitate easier memoization in application code.

### Compatibility
While focusing on modern standards, TanStack Time also provides compatibility options for working with legacy date formats and parsing methods, ensuring broad applicability across different project requirements.
Loading