aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/organisms/forms
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-05-31 19:40:23 +0200
committerArmand Philippot <git@armandphilippot.com>2022-06-01 22:32:09 +0200
commit8320b1d39ea6402c32e907dbb35082efc6af9f5a (patch)
treeb5ee9586a4ec91aa15c92dcb513b551716fd4416 /src/components/organisms/forms
parent994ad1bec193b2d1a6e0d38d6ef3f3d2bd66c3ea (diff)
chore: replace the toggle component
Diffstat (limited to 'src/components/organisms/forms')
-rw-r--r--src/components/organisms/forms/settings-form.module.scss69
-rw-r--r--src/components/organisms/forms/settings-form.stories.tsx6
-rw-r--r--src/components/organisms/forms/settings-form.test.tsx6
-rw-r--r--src/components/organisms/forms/settings-form.tsx21
4 files changed, 81 insertions, 21 deletions
diff --git a/src/components/organisms/forms/settings-form.module.scss b/src/components/organisms/forms/settings-form.module.scss
index a05c60c..6174304 100644
--- a/src/components/organisms/forms/settings-form.module.scss
+++ b/src/components/organisms/forms/settings-form.module.scss
@@ -1,26 +1,77 @@
@use "@styles/abstracts/mixins" as mix;
-.label {
- margin-right: auto;
-}
+.wrapper {
+ display: flex;
+ flex-flow: row wrap;
+ align-items: flex-start;
+ align-content: flex-start;
-.setting,
-.label--select {
@include mix.media("screen") {
- @include mix.dimensions(null, "2xs") {
+ @include mix.dimensions(null, "2xs", "height") {
+ gap: var(--spacing-md);
font-size: var(--font-size-sm);
}
+ }
- @include mix.dimensions(null, "2xs", "height") {
- font-size: var(--font-size-sm);
+ .label {
+ @include mix.media("screen") {
+ @include mix.dimensions(null, "2xs", "height") {
+ font-size: var(--font-size-sm);
+
+ &:not(.label--select) {
+ float: none;
+ margin: 0 auto;
+ }
+ }
+ }
+
+ &.label--select {
+ @include mix.media("screen") {
+ @include mix.dimensions("2xs", null, "height") {
+ margin: 0 auto 0 0;
+ }
+ }
+ }
+ }
+
+ .tooltip {
+ @include mix.media("screen") {
+ @include mix.dimensions(null, "2xs") {
+ font-size: var(--font-size-sm);
+ }
}
}
}
.items {
+ margin: var(--spacing-2xs) 0;
+
+ @include mix.media("screen") {
+ @include mix.dimensions(null, "2xs", "height") {
+ display: flex;
+ flex-flow: column wrap;
+ width: fit-content;
+
+ &:last-of-type {
+ flex: 0 0 100%;
+ margin: 0;
+ }
+ }
+ }
+}
+
+.setting {
+ &--select {
+ flex: 0 0 100%;
+ }
+}
+
+.group {
+ margin-left: auto;
+
@include mix.media("screen") {
@include mix.dimensions(null, "2xs", "height") {
- margin: var(--spacing-2xs) 0;
+ margin: auto;
}
}
}
diff --git a/src/components/organisms/forms/settings-form.stories.tsx b/src/components/organisms/forms/settings-form.stories.tsx
index 70e1844..ceb08c7 100644
--- a/src/components/organisms/forms/settings-form.stories.tsx
+++ b/src/components/organisms/forms/settings-form.stories.tsx
@@ -1,3 +1,5 @@
+import { storageKey as ackeeStorageKey } from '@components/molecules/forms/ackee-select.fixture';
+import { storageKey as motionStorageKey } from '@components/molecules/forms/motion-toggle.fixture';
import { ComponentMeta, ComponentStory } from '@storybook/react';
import SettingsForm from './settings-form';
@@ -65,3 +67,7 @@ const Template: ComponentStory<typeof SettingsForm> = (args) => (
* Form Stories - Settings
*/
export const Settings = Template.bind({});
+Settings.args = {
+ ackeeStorageKey,
+ motionStorageKey,
+};
diff --git a/src/components/organisms/forms/settings-form.test.tsx b/src/components/organisms/forms/settings-form.test.tsx
index 43d546e..90a2751 100644
--- a/src/components/organisms/forms/settings-form.test.tsx
+++ b/src/components/organisms/forms/settings-form.test.tsx
@@ -25,7 +25,7 @@ describe('SettingsForm', () => {
/>
);
expect(
- screen.getByRole('checkbox', { name: /^Theme:/i })
+ screen.getByRole('radiogroup', { name: /^Theme:/i })
).toBeInTheDocument();
});
@@ -37,7 +37,7 @@ describe('SettingsForm', () => {
/>
);
expect(
- screen.getByRole('checkbox', { name: /^Code blocks:/i })
+ screen.getByRole('radiogroup', { name: /^Code blocks:/i })
).toBeInTheDocument();
});
@@ -49,7 +49,7 @@ describe('SettingsForm', () => {
/>
);
expect(
- screen.getByRole('checkbox', { name: /^Animations:/i })
+ screen.getByRole('radiogroup', { name: /^Animations:/i })
).toBeInTheDocument();
});
diff --git a/src/components/organisms/forms/settings-form.tsx b/src/components/organisms/forms/settings-form.tsx
index 9c2cd2c..9dc0e90 100644
--- a/src/components/organisms/forms/settings-form.tsx
+++ b/src/components/organisms/forms/settings-form.tsx
@@ -3,7 +3,7 @@ import AckeeSelect, {
type AckeeSelectProps,
} from '@components/molecules/forms/ackee-select';
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';
@@ -37,25 +37,28 @@ 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
+ groupClassName={styles.group}
+ legendClassName={styles.label}
+ />
<PrismThemeToggle
- className={styles.setting}
- labelClassName={styles.label}
+ groupClassName={styles.group}
+ legendClassName={styles.label}
/>
<MotionToggle
- className={styles.setting}
- labelClassName={styles.label}
+ defaultValue="on"
+ groupClassName={styles.group}
+ legendClassName={styles.label}
storageKey={motionStorageKey}
- value={false}
/>
<AckeeSelect
- className={styles.setting}
initialValue="full"
labelClassName={`${styles.label} ${styles['label--select']}`}
- tooltipClassName={tooltipClassName}
+ tooltipClassName={`${styles.tooltip} ${tooltipClassName}`}
storageKey={ackeeStorageKey}
/>
</Form>