summaryrefslogtreecommitdiffstats
path: root/src/components/organisms/forms/settings-form.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-06-01 22:37:56 +0200
committerGitHub <noreply@github.com>2022-06-01 22:37:56 +0200
commit0a33a4658d848fe056715c6da053763407845b2a (patch)
tree7c679e54ba4bbadaf0a59bbde780f5742e3b875d /src/components/organisms/forms/settings-form.tsx
parent97031a86ca38890e60ecec79828498b7bb13cbfa (diff)
parent6be20422494e3806fba3d1c5ad5c3e98bd6e67e5 (diff)
chore(a11y): improve website settings accessibility (#17)
The previous switch buttons (using checkbox) was not a11y compliant. So I change my approach to use radio buttons and to clearly separate the two different states. I also convert the Ackee select setting to improve consistency between settings.
Diffstat (limited to 'src/components/organisms/forms/settings-form.tsx')
-rw-r--r--src/components/organisms/forms/settings-form.tsx42
1 files changed, 25 insertions, 17 deletions
diff --git a/src/components/organisms/forms/settings-form.tsx b/src/components/organisms/forms/settings-form.tsx
index 9c2cd2c..5d915a8 100644
--- a/src/components/organisms/forms/settings-form.tsx
+++ b/src/components/organisms/forms/settings-form.tsx
@@ -1,9 +1,9 @@
import Form from '@components/atoms/forms/form';
-import AckeeSelect, {
- type AckeeSelectProps,
-} from '@components/molecules/forms/ackee-select';
+import AckeeToggle, {
+ type AckeeToggleProps,
+} from '@components/molecules/forms/ackee-toggle';
import MotionToggle, {
- MotionToggleProps,
+ type MotionToggleProps,
} from '@components/molecules/forms/motion-toggle';
import PrismThemeToggle from '@components/molecules/forms/prism-theme-toggle';
import ThemeToggle from '@components/molecules/forms/theme-toggle';
@@ -11,11 +11,11 @@ import { FC } from 'react';
import { useIntl } from 'react-intl';
import styles from './settings-form.module.scss';
-export type SettingsFormProps = Pick<AckeeSelectProps, 'tooltipClassName'> & {
+export type SettingsFormProps = Pick<AckeeToggleProps, 'tooltipClassName'> & {
/**
* The local storage key for Ackee settings.
*/
- ackeeStorageKey: AckeeSelectProps['storageKey'];
+ ackeeStorageKey: AckeeToggleProps['storageKey'];
/**
* The local storage key for Reduce motion settings.
*/
@@ -37,26 +37,34 @@ const SettingsForm: FC<SettingsFormProps> = ({
return (
<Form
aria-label={ariaLabel}
+ className={styles.wrapper}
itemsClassName={styles.items}
onSubmit={() => null}
>
- <ThemeToggle className={styles.setting} labelClassName={styles.label} />
+ <ThemeToggle
+ bodyClassName={styles.fieldset__body}
+ groupClassName={styles.group}
+ legendClassName={styles.label}
+ />
<PrismThemeToggle
- className={styles.setting}
- labelClassName={styles.label}
+ bodyClassName={styles.fieldset__body}
+ groupClassName={styles.group}
+ legendClassName={styles.label}
/>
<MotionToggle
- className={styles.setting}
- labelClassName={styles.label}
+ defaultValue="on"
+ bodyClassName={styles.fieldset__body}
+ groupClassName={styles.group}
+ legendClassName={styles.label}
storageKey={motionStorageKey}
- value={false}
/>
- <AckeeSelect
- className={styles.setting}
- initialValue="full"
- labelClassName={`${styles.label} ${styles['label--select']}`}
- tooltipClassName={tooltipClassName}
+ <AckeeToggle
+ defaultValue="full"
+ bodyClassName={styles.fieldset__body}
+ groupClassName={`${styles.group} ${styles['group--ackee']}`}
+ legendClassName={`${styles.label} ${styles['label--ackee']}`}
storageKey={ackeeStorageKey}
+ tooltipClassName={`${styles.tooltip} ${tooltipClassName}`}
/>
</Form>
);