Files
Compass/web/components/switch-setting.tsx
2025-08-27 21:30:05 +02:00

43 lines
1.4 KiB
TypeScript

import { Switch } from '@headlessui/react'
import clsx from 'clsx'
import { Tooltip } from 'web/components/widgets/tooltip'
import ShortToggle, { ToggleColorMode } from './widgets/short-toggle'
export const SwitchSetting = (props: {
checked: boolean
onChange: (checked: boolean) => void
label: 'Web' | 'Email' | 'Mobile'
disabled: boolean
colorMode?: ToggleColorMode
}) => {
const { colorMode, checked, onChange, label, disabled } = props
return (
<Switch.Group as="div" className="flex items-center gap-3">
<Tooltip
text={
disabled && label !== 'Mobile'
? `You are opted out of all ${label} notifications. Go to the Opt Out section to undo this setting.`
: disabled && label === 'Mobile'
? `You are opted out of all ${label} notifications. First download the app (Android available now, iOS soon!) and allow notifications. If you've already done so, go to the Opt Out section to undo this setting.`
: ''
}
>
<ShortToggle
colorMode={colorMode}
on={checked}
setOn={onChange}
disabled={disabled}
/>
</Tooltip>
<Switch.Label
className={clsx(
'text-ink-900 text-sm',
disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'
)}
>
{label}
</Switch.Label>
</Switch.Group>
)
}