diff --git a/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx b/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx new file mode 100644 index 00000000..8a18fd13 --- /dev/null +++ b/tdrive/frontend/src/app/atoms/input/input-checkbox-slider.tsx @@ -0,0 +1,17 @@ +interface CheckboxSliderProps extends React.InputHTMLAttributes { + checked?: boolean; + disabled?: boolean; +} +/** Just classes up a checkbox to look like a slider. Deviates from onChange etc for + * compatibility with `InputHTMLAttributes`, to expose eg. id to use with htmlFor. + */ +export const CheckboxSlider = (props: CheckboxSliderProps) => + ; diff --git a/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx b/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx index 36f624dc..262f8435 100644 --- a/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx +++ b/tdrive/frontend/src/app/atoms/input/stories/checkbox.stories.tsx @@ -2,6 +2,8 @@ import { ComponentStory } from '@storybook/react'; import { useState } from 'react'; import { Checkbox } from '../input-checkbox'; +import { CheckboxSlider } from '../input-checkbox-slider'; +import { Title } from 'app/atoms/text'; export default { title: '@atoms/checkbox', @@ -30,6 +32,14 @@ const Template: ComponentStory = (props: { label: string; disabled: boolean disabled={props.disabled} label={props.label} /> + + CheckboxSlider + + setChecked(!checked)} + checked={checked} + disabled={props.disabled} + /> ); };