diff --git a/packages/core/src/components/Toggle/MockToggle.module.scss b/packages/core/src/components/Toggle/MockToggle.module.scss index 03089c28fb..08cc63bedc 100644 --- a/packages/core/src/components/Toggle/MockToggle.module.scss +++ b/packages/core/src/components/Toggle/MockToggle.module.scss @@ -5,8 +5,8 @@ transition: background-color var(--motion-productive-medium) var(--motion-timing-transition); margin: 0 var(--spacing-small); position: relative; - height: 24px; - width: 41px; + height: var(--toggle-height); + width: var(--toggle-width); cursor: pointer; border-radius: 100px !important; @@ -14,8 +14,8 @@ background-color: var(--primary-background-color); content: " "; position: absolute; - width: 18px; - height: 18px; + width: var(--circle-size); + height: var(--circle-size); border-radius: 50%; top: calc(50% - 18px / 2); transition: left var(--motion-productive-medium) var(--motion-timing-transition); @@ -39,4 +39,27 @@ opacity: var(--disabled-component-opacity); cursor: not-allowed; } + + &.medium { + --toggle-width: 41px; + --toggle-height: 24px; + &::after { + --circle-size: 18px; + } + } + + &.small { + --toggle-width: 28px; + --toggle-height: 16px; + &::after { + --circle-size: 12px; + top: calc(50% - 6px); + left: 14px; + } + &.notSelected { + &::after { + left: 2px; + } + } + } } diff --git a/packages/core/src/components/Toggle/MockToggle.tsx b/packages/core/src/components/Toggle/MockToggle.tsx index a2bac9abed..39c1203d95 100644 --- a/packages/core/src/components/Toggle/MockToggle.tsx +++ b/packages/core/src/components/Toggle/MockToggle.tsx @@ -5,6 +5,8 @@ import VibeComponentProps from "../../types/VibeComponentProps"; import styles from "./MockToggle.module.scss"; import { getTestId } from "../../tests/test-ids-utils"; import { ComponentDefaultTestId } from "../../tests/constants"; +import { Sizes } from "./Toggle.types"; +import { getStyle } from "../../helpers/typesciptCssModulesHelper"; export interface MockToggleProps extends VibeComponentProps { areLabelsHidden?: boolean; @@ -13,6 +15,7 @@ export interface MockToggleProps extends VibeComponentProps { onOverrideText?: string; selectedClassName?: string; disabled: boolean; + size?: Sizes; } export const MockToggle: FC = ({ @@ -22,12 +25,13 @@ export const MockToggle: FC = ({ onOverrideText, className, selectedClassName, - disabled + disabled, + size = "medium" }) => ( <> {areLabelsHidden ? null : {offOverrideText}}
= forwardRef( @@ -55,6 +57,7 @@ const Toggle: VibeComponent = forwardRef( areLabelsHidden = false, onOverrideText = "On", offOverrideText = "Off", + size = "medium", "data-testid": dataTestId }, ref @@ -87,6 +90,7 @@ const Toggle: VibeComponent = forwardRef( disabled={overrideDisabled} className={overrideClassName} selectedClassName={toggleSelectedClassName} + size={size} /> ); diff --git a/packages/core/src/components/Toggle/Toggle.types.ts b/packages/core/src/components/Toggle/Toggle.types.ts new file mode 100644 index 0000000000..b40db28e93 --- /dev/null +++ b/packages/core/src/components/Toggle/Toggle.types.ts @@ -0,0 +1 @@ +export type Sizes = "small" | "medium"; diff --git a/packages/core/src/components/Toggle/__stories__/Toggle.mdx b/packages/core/src/components/Toggle/__stories__/Toggle.mdx index be4bd823b7..74e2ebb528 100644 --- a/packages/core/src/components/Toggle/__stories__/Toggle.mdx +++ b/packages/core/src/components/Toggle/__stories__/Toggle.mdx @@ -55,6 +55,12 @@ Allow users to turn an single option on or off. They are usually used to activat +### Size + +Toggle appear in 2 sizes: small and medium. + + + ### Disabled diff --git a/packages/core/src/components/Toggle/__stories__/Toggle.stories.scss b/packages/core/src/components/Toggle/__stories__/Toggle.stories.scss index 2567b81289..cfbaa4902f 100644 --- a/packages/core/src/components/Toggle/__stories__/Toggle.stories.scss +++ b/packages/core/src/components/Toggle/__stories__/Toggle.stories.scss @@ -10,6 +10,6 @@ display: flex; align-items: center; justify-content: center; - column-gap: 25px; + column-gap: 30px; } } diff --git a/packages/core/src/components/Toggle/__stories__/Toggle.stories.tsx b/packages/core/src/components/Toggle/__stories__/Toggle.stories.tsx index 18782b8723..ac55b57fdf 100644 --- a/packages/core/src/components/Toggle/__stories__/Toggle.stories.tsx +++ b/packages/core/src/components/Toggle/__stories__/Toggle.stories.tsx @@ -50,6 +50,22 @@ export const States: Story = { } }; +export const Size: Story = { + render: () => ( + + + + + ), + parameters: { + docs: { + liveEdit: { + scope: { MultipleStoryElementsWrapper } + } + } + } +}; + export const Disabled: Story = { render: () => ( diff --git a/packages/core/src/components/Toggle/__tests__/__snapshots__/Toggle.snapshot.test.js.snap b/packages/core/src/components/Toggle/__tests__/__snapshots__/Toggle.snapshot.test.js.snap index df92ee423c..875aa73c10 100644 --- a/packages/core/src/components/Toggle/__tests__/__snapshots__/Toggle.snapshot.test.js.snap +++ b/packages/core/src/components/Toggle/__tests__/__snapshots__/Toggle.snapshot.test.js.snap @@ -22,7 +22,7 @@ exports[`Toggle renders correctly renders correctly when disabled 1`] = `