mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
* refactor: unify backend and frontend servers * refactor: correct paths for openapi & drizzle * refactor: move api-client to client * fix: drizzle paths * chore: fix linting issues * fix: form reset issue
32 lines
948 B
TypeScript
32 lines
948 B
TypeScript
import { cn } from "~/client/lib/utils";
|
|
import { Switch } from "./ui/switch";
|
|
|
|
type Props = {
|
|
isOn: boolean;
|
|
toggle: (v: boolean) => void;
|
|
enabledLabel: string;
|
|
disabledLabel: string;
|
|
disabled?: boolean;
|
|
};
|
|
|
|
export const OnOff = ({ isOn, toggle, enabledLabel, disabledLabel, disabled }: Props) => {
|
|
return (
|
|
<div
|
|
className={cn(
|
|
"flex items-center gap-2 rounded-full border px-3 py-1.5 text-xs font-semibold uppercase tracking-wide transition-colors",
|
|
isOn
|
|
? "border-emerald-200 bg-emerald-50 text-emerald-700 dark:border-emerald-500/40 dark:bg-emerald-500/10 dark:text-emerald-200"
|
|
: "border-muted bg-muted/40 text-muted-foreground dark:border-muted/60 dark:bg-muted/10",
|
|
)}
|
|
>
|
|
<span>{isOn ? enabledLabel : disabledLabel}</span>
|
|
<Switch
|
|
disabled={disabled}
|
|
checked={isOn}
|
|
onCheckedChange={toggle}
|
|
aria-label={isOn ? `Toggle ${enabledLabel}` : `Toggle ${disabledLabel}`}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|