'use client';
import { useId, type ReactNode } from 'react';
import { cn } from './cn';
import { Switch } from './switch';
export function Field({
label,
hint,
className,
children,
}: {
label?: string;
hint?: string;
className?: string;
children: ReactNode;
}) {
return (
{label ?
: null}
{children}
{hint ?
{hint}
: null}
);
}
export function ToggleRow({
label,
description,
checked,
onChange,
disabled = false,
right,
variant = 'card',
}: {
label: string;
description: string;
checked: boolean;
onChange: (checked: boolean) => void;
disabled?: boolean;
right?: ReactNode;
variant?: 'card' | 'flat';
}) {
const labelId = useId();
const descId = useId();
const rowClass =
variant === 'flat'
? 'px-0.5 pt-1 pb-2 border-b border-line-soft last:border-b-0 transition-colors duration-fast ease-standard'
: 'rounded-md border border-line bg-surface px-2.5 py-1.5 transition-colors duration-fast ease-standard';
const handleTextToggle = () => {
if (!disabled) onChange(!checked);
};
return (
{label}
{description}
{right ?
{right}
: null}
);
}
export function CheckItem({
label,
checked,
onChange,
disabled = false,
}: {
label: string;
checked: boolean;
onChange: (checked: boolean) => void;
disabled?: boolean;
}) {
const labelId = useId();
const handleTextToggle = () => {
if (!disabled) onChange(!checked);
};
return (
{label}
);
}