From 9b26bad524637264739a4c66b411dc2a6a0d00cd Mon Sep 17 00:00:00 2001 From: Gabriel Dugny Date: Fri, 9 Jan 2026 18:30:54 +0100 Subject: [PATCH] chore: remove variants for now Signed-off-by: Gabriel Dugny --- docs-ui/src/content/toggle-button-group.mdx | 8 +- .../src/content/toggle-button-group.props.ts | 57 +++----- docs-ui/src/content/toggle-button.mdx | 12 +- docs-ui/src/content/toggle-button.props.ts | 23 +-- .../ToggleButton/ToggleButton.module.css | 77 +++------- .../ToggleButton/ToggleButton.stories.tsx | 32 ++--- .../components/ToggleButton/ToggleButton.tsx | 1 - .../src/components/ToggleButton/definition.ts | 1 - .../ui/src/components/ToggleButton/types.ts | 4 - .../ToggleButtonGroup.module.css | 4 - .../ToggleButtonGroup.stories.tsx | 132 +++--------------- .../ToggleButtonGroup/ToggleButtonGroup.tsx | 40 ++++-- .../src/components/ToggleButtonGroup/types.ts | 1 + 13 files changed, 107 insertions(+), 285 deletions(-) diff --git a/docs-ui/src/content/toggle-button-group.mdx b/docs-ui/src/content/toggle-button-group.mdx index cc9110189c..19034f0ac5 100644 --- a/docs-ui/src/content/toggle-button-group.mdx +++ b/docs-ui/src/content/toggle-button-group.mdx @@ -11,7 +11,7 @@ import { toggleButtonGroupDisallowEmptySnippet, toggleButtonGroupIconsSnippet, toggleButtonGroupIconsOnlySnippet, - toggleButtonGroupVariantsSnippet, + toggleButtonGroupSurfacesSnippet, } from './toggle-button-group.props'; import { ToggleButtonGroupSnippet } from '@/snippets/stories-snippets'; import { PageTitle } from '@/components/PageTitle'; @@ -41,14 +41,14 @@ import { ToggleButtonGroupDefinition } from '../utils/definitions'; ## Examples -### Variants +### Surfaces } - code={toggleButtonGroupVariantsSnippet} + preview={} + code={toggleButtonGroupSurfacesSnippet} /> ### Single Selection diff --git a/docs-ui/src/content/toggle-button-group.props.ts b/docs-ui/src/content/toggle-button-group.props.ts index 63fdd2afd3..d1c9c915dc 100644 --- a/docs-ui/src/content/toggle-button-group.props.ts +++ b/docs-ui/src/content/toggle-button-group.props.ts @@ -74,19 +74,14 @@ export const toggleButtonGroupIconsOnlySnippet = ` `; -export const toggleButtonGroupVariantsSnippet = ` +export const toggleButtonGroupSurfacesSnippet = ` Default - Primary 1 - Option 2 - Option 3 - - - Secondary 1 - Option 2 - Option 3 + Option 1 + Option 2 + Option 3 @@ -94,14 +89,9 @@ export const toggleButtonGroupVariantsSnippet = ` - Primary 1 - Option 2 - Option 3 - - - Secondary 1 - Option 2 - Option 3 + Option 1 + Option 2 + Option 3 @@ -109,14 +99,9 @@ export const toggleButtonGroupVariantsSnippet = ` - Primary 1 - Option 2 - Option 3 - - - Secondary 1 - Option 2 - Option 3 + Option 1 + Option 2 + Option 3 @@ -124,14 +109,9 @@ export const toggleButtonGroupVariantsSnippet = ` - Primary 1 - Option 2 - Option 3 - - - Secondary 1 - Option 2 - Option 3 + Option 1 + Option 2 + Option 3 @@ -139,14 +119,9 @@ export const toggleButtonGroupVariantsSnippet = ` - Primary 1 - Option 2 - Option 3 - - - Secondary 1 - Option 2 - Option 3 + Option 1 + Option 2 + Option 3 diff --git a/docs-ui/src/content/toggle-button.mdx b/docs-ui/src/content/toggle-button.mdx index 48afdededc..593d97b02a 100644 --- a/docs-ui/src/content/toggle-button.mdx +++ b/docs-ui/src/content/toggle-button.mdx @@ -5,7 +5,7 @@ import { ToggleButtonSnippet } from '@/snippets/stories-snippets'; import { toggleButtonPropDefs, toggleButtonUsageSnippet, - toggleButtonVariantsSnippet, + toggleButtonSurfacesSnippet, toggleButtonSizesSnippet, toggleButtonIconsSnippet, toggleButtonDisabledSnippet, @@ -24,8 +24,8 @@ import { ToggleButtonDefinition } from '../utils/definitions'; } - code={toggleButtonVariantsSnippet} + preview={} + code={toggleButtonUsageSnippet} /> ## Usage @@ -38,14 +38,14 @@ import { ToggleButtonDefinition } from '../utils/definitions'; ## Examples -### Variants +### Surfaces } - code={toggleButtonVariantsSnippet} + preview={} + code={toggleButtonSurfacesSnippet} /> ### Sizes diff --git a/docs-ui/src/content/toggle-button.props.ts b/docs-ui/src/content/toggle-button.props.ts index 596b7af71b..9df1a24791 100644 --- a/docs-ui/src/content/toggle-button.props.ts +++ b/docs-ui/src/content/toggle-button.props.ts @@ -5,12 +5,6 @@ import { } from '@/utils/propDefs'; export const toggleButtonPropDefs: Record = { - variant: { - type: 'enum', - values: ['primary', 'secondary'], - default: 'primary', - responsive: true, - }, size: { type: 'enum', values: ['small', 'medium'], @@ -38,40 +32,35 @@ export const toggleButtonUsageSnippet = `import { ToggleButton } from '@backstag Toggle`; -export const toggleButtonVariantsSnippet = ` +export const toggleButtonSurfacesSnippet = ` Default - Primary - Secondary + Toggle On Surface 0 - Primary - Secondary + Toggle On Surface 1 - Primary - Secondary + Toggle On Surface 2 - Primary - Secondary + Toggle On Surface 3 - Primary - Secondary + Toggle `; diff --git a/packages/ui/src/components/ToggleButton/ToggleButton.module.css b/packages/ui/src/components/ToggleButton/ToggleButton.module.css index f11c8bac45..e23c4d53eb 100644 --- a/packages/ui/src/components/ToggleButton/ToggleButton.module.css +++ b/packages/ui/src/components/ToggleButton/ToggleButton.module.css @@ -33,72 +33,32 @@ cursor: pointer; transition: background-color 150ms ease, box-shadow 150ms ease, color 150ms ease, transform 100ms ease; - } - .bui-ToggleButton[data-variant='secondary'] { - background-color: var(--bui-bg-neutral-on-surface-0); - color: var(--bui-fg-primary); - box-shadow: none; - - &[data-hovered]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-0-hover); + &[data-selected], + &[data-pressed] { + background: var(--bui-bg-solid); + color: var(--bui-fg-solid); } - &[data-pressed]:not([data-disabled]), - &[data-selected]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-0-pressed); + &:not([data-selected])[data-hovered] { + background: var(--bui-bg-surface-2); } - &[data-on-surface='1'] { - background-color: var(--bui-bg-neutral-on-surface-1); - - &[data-hovered]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-1-hover); - } - - &[data-pressed]:not([data-disabled]), - &[data-selected]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-1-pressed); - } + &[data-disabled] { + background: var(--bui-bg-neutral-on-surface-0-disabled); + color: var(--bui-fg-disabled); } - &[data-on-surface='2'] { - background-color: var(--bui-bg-neutral-on-surface-2); - - &[data-hovered]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-2-hover); - } - - &[data-pressed]:not([data-disabled]), - &[data-selected]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-2-pressed); - } + &[data-disabled][data-hovered] { + background: var(--bui-bg-neutral-on-surface-0-disabled); } - &[data-on-surface='3'] { - background-color: var(--bui-bg-neutral-on-surface-3); - - &[data-hovered]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-3-hover); - } - - &[data-pressed]:not([data-disabled]), - &[data-selected]:not([data-disabled]) { - background-color: var(--bui-bg-neutral-on-surface-3-pressed); - } + &[data-disabled][data-selected] { + background: var(--bui-bg-solid-disabled); + color: var(--bui-fg-disabled); } } - .bui-ToggleButton[data-variant='primary'][data-selected], - .bui-ToggleButton[data-variant='primary'][data-pressed] { - background: var(--bui-bg-solid); - color: var(--bui-fg-solid); - } - - .bui-ToggleButton[data-variant='primary']:not([data-selected])[data-hovered] { - background: var(--bui-bg-surface-2); - } - .bui-ToggleButton[data-focus-visible] { outline: none; box-shadow: inset 0 0 0 2px var(--bui-ring); @@ -106,15 +66,16 @@ .bui-ToggleButton[data-disabled] { cursor: not-allowed; - color: var(--bui-fg-disabled); - background: var(--bui-bg-neutral-on-surface-0-disabled); - box-shadow: inset 0 0 0 1px var(--bui-border-disabled); } - .bui-ToggleButton[data-pressed]:not([data-disabled]) { + .bui-ToggleButton[data-pressed] { transform: scale(0.98); } + .bui-ToggleButton[data-disabled][data-pressed] { + transform: none; + } + .bui-ToggleButton[data-size='small'] { height: 2rem; font-size: var(--bui-font-size-3); diff --git a/packages/ui/src/components/ToggleButton/ToggleButton.stories.tsx b/packages/ui/src/components/ToggleButton/ToggleButton.stories.tsx index 36fa774ab5..f4be5cb46b 100644 --- a/packages/ui/src/components/ToggleButton/ToggleButton.stories.tsx +++ b/packages/ui/src/components/ToggleButton/ToggleButton.stories.tsx @@ -37,10 +37,6 @@ const meta = preview.meta({ control: 'select', options: ['small', 'medium'], }, - variant: { - control: 'select', - options: ['primary', 'secondary'], - }, }, }); @@ -50,13 +46,13 @@ export const Default = meta.story({ }, }); -export const Variants = meta.story({ +export const Surfaces = meta.story({ args: { children: 'Toggle', }, parameters: { argTypes: { - variant: { + size: { control: false, }, }, @@ -66,36 +62,31 @@ export const Variants = meta.story({ Default - Primary - Secondary + Toggle On Surface 0 - Primary - Secondary + Toggle On Surface 1 - Primary - Secondary + Toggle On Surface 2 - Primary - Secondary + Toggle On Surface 3 - Primary - Secondary + Toggle @@ -176,13 +167,8 @@ export const MixedIcons = meta.story({ export const Disabled = meta.story({ render: () => ( - - Primary - - - Secondary - - + Disabled + Selected diff --git a/packages/ui/src/components/ToggleButton/ToggleButton.tsx b/packages/ui/src/components/ToggleButton/ToggleButton.tsx index 211ff03b6d..dd11554621 100644 --- a/packages/ui/src/components/ToggleButton/ToggleButton.tsx +++ b/packages/ui/src/components/ToggleButton/ToggleButton.tsx @@ -30,7 +30,6 @@ export const ToggleButton = forwardRef( ToggleButtonDefinition, { size: 'small', - variant: 'primary', ...props, }, ); diff --git a/packages/ui/src/components/ToggleButton/definition.ts b/packages/ui/src/components/ToggleButton/definition.ts index 78e026eed8..98c22fef35 100644 --- a/packages/ui/src/components/ToggleButton/definition.ts +++ b/packages/ui/src/components/ToggleButton/definition.ts @@ -27,6 +27,5 @@ export const ToggleButtonDefinition = { }, dataAttributes: { size: ['small', 'medium'] as const, - variant: ['primary', 'secondary'] as const, }, } as const satisfies ComponentDefinition; diff --git a/packages/ui/src/components/ToggleButton/types.ts b/packages/ui/src/components/ToggleButton/types.ts index bf6c08f521..aba31e4f25 100644 --- a/packages/ui/src/components/ToggleButton/types.ts +++ b/packages/ui/src/components/ToggleButton/types.ts @@ -26,10 +26,6 @@ import type { Responsive, Surface } from '../../types'; */ export interface ToggleButtonProps extends AriaToggleButtonProps { size?: 'small' | 'medium' | Partial>; - variant?: - | 'primary' - | 'secondary' - | Partial>; iconStart?: ReactElement; iconEnd?: ReactElement; children?: ReactNode; diff --git a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.module.css b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.module.css index 173679f64b..36309ad9dd 100644 --- a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.module.css +++ b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.module.css @@ -39,10 +39,6 @@ border: 0; } - .bui-ToggleButtonGroup :global(.bui-ToggleButton)[data-variant='secondary'] { - box-shadow: none; - } - /* Horizontal radius rules (default orientation) */ .bui-ToggleButtonGroup:not([data-orientation='vertical']) > :global(.bui-ToggleButton) { diff --git a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.stories.tsx b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.stories.tsx index f023757cca..70f3810a49 100644 --- a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.stories.tsx +++ b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.stories.tsx @@ -72,7 +72,7 @@ export const MultipleSelection = meta.story({ ), }); -export const Variants = meta.story({ +export const Surfaces = meta.story({ args: { selectionMode: 'single', defaultSelectedKeys: ['option1'], @@ -93,29 +93,9 @@ export const Variants = meta.story({ selectionMode="single" defaultSelectedKeys={['option1']} > - - Primary 1 - - - Option 2 - - - Option 3 - - - - - Secondary 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 @@ -126,29 +106,9 @@ export const Variants = meta.story({ selectionMode="single" defaultSelectedKeys={['option1']} > - - Primary 1 - - - Option 2 - - - Option 3 - - - - - Secondary 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 @@ -159,29 +119,9 @@ export const Variants = meta.story({ selectionMode="single" defaultSelectedKeys={['option1']} > - - Primary 1 - - - Option 2 - - - Option 3 - - - - - Secondary 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 @@ -192,29 +132,9 @@ export const Variants = meta.story({ selectionMode="single" defaultSelectedKeys={['option1']} > - - Primary 1 - - - Option 2 - - - Option 3 - - - - - Secondary 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 @@ -225,29 +145,9 @@ export const Variants = meta.story({ selectionMode="single" defaultSelectedKeys={['option1']} > - - Primary 1 - - - Option 2 - - - Option 3 - - - - - Secondary 1 - - - Option 2 - - - Option 3 - + Option 1 + Option 2 + Option 3 diff --git a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.tsx b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.tsx index 8e536f4406..908b5881dc 100644 --- a/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.tsx +++ b/packages/ui/src/components/ToggleButtonGroup/ToggleButtonGroup.tsx @@ -15,12 +15,28 @@ */ import clsx from 'clsx'; -import { forwardRef, Ref } from 'react'; +import { forwardRef, Ref, createContext, useContext } from 'react'; import { ToggleButtonGroup as AriaToggleButtonGroup } from 'react-aria-components'; import type { ToggleButtonGroupProps } from './types'; import { useStyles } from '../../hooks/useStyles'; import { ToggleButtonGroupDefinition } from './definition'; import styles from './ToggleButtonGroup.module.css'; +import type { Breakpoint } from '../..'; + +/** @internal */ +export interface ToggleButtonGroupContextValue {} + +const ToggleButtonGroupContext = createContext< + ToggleButtonGroupContextValue | undefined +>(undefined); + +/** + * Hook to access the ToggleButtonGroup context. + * @internal + */ +export const useToggleButtonGroupContext = () => { + return useContext(ToggleButtonGroupContext); +}; /** @public */ export const ToggleButtonGroup = forwardRef( @@ -41,16 +57,20 @@ export const ToggleButtonGroup = forwardRef( } = cleanedProps; const resolvedOrientation = dataAttributes['data-orientation']; + const contextValue: ToggleButtonGroupContextValue = {}; + return ( - - {children} - + + + {children} + + ); }, ); diff --git a/packages/ui/src/components/ToggleButtonGroup/types.ts b/packages/ui/src/components/ToggleButtonGroup/types.ts index 16ca11d482..e01b9afda0 100644 --- a/packages/ui/src/components/ToggleButtonGroup/types.ts +++ b/packages/ui/src/components/ToggleButtonGroup/types.ts @@ -16,6 +16,7 @@ import type { ToggleButtonGroupProps as AriaToggleButtonGroupProps } from 'react-aria-components'; import { Responsive } from '../../types'; +import type { Breakpoint } from '../..'; /** @public */ export interface ToggleButtonGroupProps