gitscope
← marzneshin / v0.7.2 / dashboard/src/libs/stats-charts/components/select-date-view.tsx
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/libs/stats-charts/components/select-date-view.tsx · TypeScript
Blame Raw
 1import type { FC, PropsWithChildren } from 'react';
 2import {
 3    RadioGroup,
 4    RadioGroupItem,
 5    Label
 6} from "@marzneshin/common/components";
 7
 8const SelectDateViewItem: FC<PropsWithChildren & { interval: string }> = ({ interval, children }) => (
 9    <div className="flex gap-2 justify-center items-center relative rounded-full py-0.5 px-1 cursor-pointer">
10        <RadioGroupItem
11            value={interval}
12            id={interval}
13            className="sr-only peer"
14        />
15        <Label
16            htmlFor={interval}
17            className="dark:peer-data-[state=checked]:bg-primary-foreground  dark:peer-data-[state=checked]:border-primary peer-data-[state=checked]:border-primary peer-data-[state=checked]:border-1 border-0 peer-data-[state=checked]:text-primary-foreground dark:peer-data-[state=checked]:text-primary peer-data-[state=checked]:bg-primary dark:peer-data-[state=checked]:text-white text-xs rounded-full py-0.5 px-2 transition-colors"
18        >
19            {children}
20        </Label>
21    </div>
22)
23
24export const SelectDateView = (
25    { timeRange, setTimeRange }: { timeRange: string, setTimeRange: (s: string) => void }
26) => {
27    return (
28        <RadioGroup
29            className="bg-muted border flex flex-row rounded-full"
30            value={timeRange}
31            onValueChange={setTimeRange}
32        >
33            <SelectDateViewItem interval="1d"> 24H</SelectDateViewItem>
34            <SelectDateViewItem interval="7d"> 7D</SelectDateViewItem>
35            <SelectDateViewItem interval="30d"> 30D</SelectDateViewItem>
36            <SelectDateViewItem interval="90d"> 3M</SelectDateViewItem>
37        </RadioGroup>
38    )
39};