From 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b Mon Sep 17 00:00:00 2001 From: Fuwn <50817549+Fuwn@users.noreply.github.com> Date: Sat, 24 Jan 2026 13:09:50 +0000 Subject: Initial commit Created from https://vercel.com/new --- src/components/hooks/useDateRange.ts | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/components/hooks/useDateRange.ts (limited to 'src/components/hooks/useDateRange.ts') diff --git a/src/components/hooks/useDateRange.ts b/src/components/hooks/useDateRange.ts new file mode 100644 index 0000000..755f36e --- /dev/null +++ b/src/components/hooks/useDateRange.ts @@ -0,0 +1,37 @@ +import { useMemo } from 'react'; +import { useLocale } from '@/components/hooks/useLocale'; +import { useNavigation } from '@/components/hooks/useNavigation'; +import { DATE_RANGE_CONFIG, DEFAULT_DATE_RANGE_VALUE } from '@/lib/constants'; +import { getCompareDate, getOffsetDateRange, parseDateRange } from '@/lib/date'; +import { getItem } from '@/lib/storage'; + +export function useDateRange(options: { ignoreOffset?: boolean; timezone?: string } = {}) { + const { + query: { date = '', offset = 0, compare = 'prev' }, + } = useNavigation(); + const { locale } = useLocale(); + + const dateRange = useMemo(() => { + const dateRangeObject = parseDateRange( + date || getItem(DATE_RANGE_CONFIG) || DEFAULT_DATE_RANGE_VALUE, + locale, + options.timezone, + ); + + return !options.ignoreOffset && offset + ? getOffsetDateRange(dateRangeObject, +offset) + : dateRangeObject; + }, [date, offset, options]); + + const dateCompare = getCompareDate(compare, dateRange.startDate, dateRange.endDate); + + return { + date, + offset, + compare, + isAllTime: date.endsWith(`:all`), + isCustomRange: date.startsWith('range:'), + dateRange, + dateCompare, + }; +} -- cgit v1.2.3