/** biome-ignore-all lint/correctness/useUniqueElementIds: component is only rendered once */ import { Trans, useLingui } from "@lingui/react/macro" import { LanguagesIcon, LoaderCircleIcon, SaveIcon } from "lucide-react" import { useState } from "react" import { useStore } from "@nanostores/react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Separator } from "@/components/ui/separator" import Slider from "@/components/ui/slider" import { HourFormat, Unit } from "@/lib/enums" import { dynamicActivate } from "@/lib/i18n" import languages from "@/lib/languages" import { $userSettings } from "@/lib/stores" import { chartTimeData, currentHour12 } from "@/lib/utils" import type { UserSettings } from "@/types" import { saveSettings } from "./layout" export default function SettingsProfilePage({ userSettings }: { userSettings: UserSettings }) { const [isLoading, setIsLoading] = useState(false) const { i18n } = useLingui() const currentUserSettings = useStore($userSettings) const layoutWidth = currentUserSettings.layoutWidth ?? 1480 async function handleSubmit(e: React.FormEvent) { e.preventDefault() setIsLoading(true) const formData = new FormData(e.target as HTMLFormElement) const data = Object.fromEntries(formData) as Partial await saveSettings(data) setIsLoading(false) } return (

General

Change general application options.

Language

Want to help improve our translations? Check{" "} Crowdin {" "} for details.

Layout width

$userSettings.setKey("layoutWidth", val[0])} min={1000} max={2000} step={10} className="w-full mb-1" />

Chart options

Adjust display options for charts.

Unit preferences

Change display units for metrics.

Warning thresholds

Set percentage thresholds for meter colors.

) }