/* eslint-disable max-statements */ import { type FC, useState, useCallback } from 'react'; import { useIntl } from 'react-intl'; import { useAckee } from '../../../../utils/hooks'; import { Legend, List, ListItem } from '../../../atoms'; import { Switch, type SwitchOption, type SwitchProps, Tooltip, type TooltipProps, } from '../../../molecules'; export type AckeeToggleProps = Omit< SwitchProps, 'defaultValue' | 'isInline' | 'items' | 'name' | 'onSwitch' | 'value' > & Pick; /** * AckeeToggle component * * Render a Toggle component to set reduce motion. */ export const AckeeToggle: FC = ({ direction, ...props }) => { const intl = useIntl(); const [tracking, toggleTracking] = useAckee(); const [isTooltipOpened, setIsTooltipOpened] = useState(false); const ackeeLabel = intl.formatMessage({ defaultMessage: 'Tracking:', description: 'AckeeToggle: select label', id: '0gVlI3', }); const partialLabel = intl.formatMessage({ defaultMessage: 'Partial', description: 'AckeeToggle: partial option name', id: 'tIZYpD', }); const fullLabel = intl.formatMessage({ defaultMessage: 'Full', description: 'AckeeToggle: full option name', id: '5eD6y2', }); const tooltipTitle = intl.formatMessage({ defaultMessage: 'Ackee tracking (analytics)', description: 'AckeeToggle: tooltip title', id: 'nGss/j', }); const tooltipPartial = intl.formatMessage({ defaultMessage: 'Partial includes only page url, views and duration.', description: 'AckeeToggle: tooltip message', id: 'ZB/Aw2', }); const tooltipFull = intl.formatMessage({ defaultMessage: 'Full includes all information from partial as well as information about referrer, operating system, device, browser, screen size and language.', description: 'AckeeToggle: tooltip message', id: '7zDlQo', }); const options = [ { id: 'ackee-full' as const, label: fullLabel, value: 'full' }, { id: 'ackee-partial' as const, label: partialLabel, value: 'partial' }, ] satisfies [SwitchOption, SwitchOption]; const closeTooltip = useCallback(() => { setIsTooltipOpened(false); }, []); const toggleTooltip = useCallback(() => { setIsTooltipOpened((prev) => !prev); }, []); return ( {ackeeLabel}} name="ackee" onSwitch={toggleTracking} tooltip={ {options.map((option) => ( {option.id === 'ackee-full' ? tooltipFull : tooltipPartial} ))} } value={tracking} /> ); };