aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/forms/ackee-toggle.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/molecules/forms/ackee-toggle.tsx')
-rw-r--r--src/components/molecules/forms/ackee-toggle.tsx147
1 files changed, 0 insertions, 147 deletions
diff --git a/src/components/molecules/forms/ackee-toggle.tsx b/src/components/molecules/forms/ackee-toggle.tsx
deleted file mode 100644
index 32949b2..0000000
--- a/src/components/molecules/forms/ackee-toggle.tsx
+++ /dev/null
@@ -1,147 +0,0 @@
-import { FC } from 'react';
-import { useIntl } from 'react-intl';
-import {
- type AckeeOptions,
- useLocalStorage,
- useUpdateAckeeOptions,
-} from '../../../utils/hooks';
-import {
- RadioGroup,
- type RadioGroupCallback,
- type RadioGroupCallbackProps,
- type RadioGroupOption,
- type RadioGroupProps,
-} from './radio-group';
-import { Tooltip, type TooltipProps } from '../modals/tooltip';
-
-export type AckeeToggleProps = Pick<
- RadioGroupProps,
- | 'bodyClassName'
- | 'buttonClassName'
- | 'groupClassName'
- | 'legendClassName'
- | 'legendPosition'
-> & {
- /**
- * Set additional classnames to the toggle wrapper.
- */
- className?: string;
- /**
- * True if motion should be reduced by default.
- */
- defaultValue: AckeeOptions;
- /**
- * The local storage key to save preference.
- */
- storageKey: string;
- /**
- * Set additional classnames to the tooltip wrapper.
- */
- tooltipClassName?: TooltipProps['className'];
-};
-
-/**
- * AckeeToggle component
- *
- * Render a Toggle component to set reduce motion.
- */
-export const AckeeToggle: FC<AckeeToggleProps> = ({
- defaultValue,
- storageKey,
- tooltipClassName,
- ...props
-}) => {
- const intl = useIntl();
- const { value, setValue } = useLocalStorage<AckeeOptions>(
- storageKey,
- defaultValue
- );
- useUpdateAckeeOptions(value);
-
- const ackeeLabel = intl.formatMessage({
- defaultMessage: 'Tracking:',
- description: 'AckeeToggle: select label',
- id: '0gVlI3',
- });
- const tooltipTitle = intl.formatMessage({
- defaultMessage: 'Ackee tracking (analytics)',
- description: 'AckeeToggle: tooltip title',
- id: 'nGss/j',
- });
- const tooltipContent = [
- intl.formatMessage({
- defaultMessage: 'Partial includes only page url, views and duration.',
- description: 'AckeeToggle: tooltip message',
- id: 'ZB/Aw2',
- }),
- 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 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 options: RadioGroupOption[] = [
- {
- id: 'ackee-full',
- label: fullLabel,
- name: 'ackee',
- value: 'full',
- },
- {
- id: 'ackee-partial',
- label: partialLabel,
- name: 'ackee',
- value: 'partial',
- },
- ];
-
- /**
- * Handle change events.
- *
- * @param {RadioGroupCallbackProps} props - An object with choices.
- */
- const handleChange: RadioGroupCallback = ({
- choices,
- updateChoice,
- }: RadioGroupCallbackProps) => {
- let newChoice: AckeeOptions = choices.new as AckeeOptions;
-
- if (choices.new === choices.prev) {
- newChoice = choices.new === 'full' ? 'partial' : 'full';
- updateChoice(newChoice);
- }
-
- setValue(newChoice);
- };
-
- return (
- <RadioGroup
- {...props}
- kind="toggle"
- initialChoice={value}
- legend={ackeeLabel}
- onChange={handleChange}
- options={options}
- Tooltip={
- <Tooltip
- title={tooltipTitle}
- content={tooltipContent}
- icon="?"
- className={tooltipClassName}
- />
- }
- />
- );
-};