diff --git a/packages/react/src/LabelGroup/LabelGroup.features.stories.tsx b/packages/react/src/LabelGroup/LabelGroup.features.stories.tsx
index 3b1b6661743..2cdf3076013 100644
--- a/packages/react/src/LabelGroup/LabelGroup.features.stories.tsx
+++ b/packages/react/src/LabelGroup/LabelGroup.features.stories.tsx
@@ -1,8 +1,9 @@
-import styled from 'styled-components'
+import type React from 'react'
import LabelGroup from './LabelGroup'
import type {Meta, StoryFn} from '@storybook/react'
import Token from '../Token/Token'
import Label from '../Label/Label'
+import classes from './LabelGroupStories.module.css'
const meta: Meta = {
title: 'Components/LabelGroup/Features',
@@ -18,13 +19,11 @@ const meta: Meta = {
],
}
-const ResizableContainer = styled.div`
- outline: 1px solid black;
- overflow: auto;
- padding: 0.25rem;
- resize: horizontal;
- width: 600px;
-`
+const ResizableContainer = ({children, ...props}: {children: React.ReactNode}) => (
+
+ {children}
+
+)
export const TruncateAuto: StoryFn = () => (
diff --git a/packages/react/src/LabelGroup/LabelGroup.stories.tsx b/packages/react/src/LabelGroup/LabelGroup.stories.tsx
index ca012013753..5ba40863b77 100644
--- a/packages/react/src/LabelGroup/LabelGroup.stories.tsx
+++ b/packages/react/src/LabelGroup/LabelGroup.stories.tsx
@@ -1,21 +1,20 @@
-import styled from 'styled-components'
+import type React from 'react'
import type {LabelGroupProps} from './LabelGroup'
import LabelGroup from './LabelGroup'
import type {Meta, StoryFn} from '@storybook/react'
import Label from '../Label/Label'
+import classes from './LabelGroupStories.module.css'
const meta: Meta = {
title: 'Components/LabelGroup',
component: LabelGroup,
}
-const ResizableContainer = styled.div`
- outline: 1px solid black;
- overflow: auto;
- padding: 0.25rem;
- resize: horizontal;
- width: 600px;
-`
+const ResizableContainer = ({children, ...props}: {children: React.ReactNode}) => (
+
+ {children}
+
+)
export const Default: StoryFn = () => (
diff --git a/packages/react/src/LabelGroup/LabelGroupStories.module.css b/packages/react/src/LabelGroup/LabelGroupStories.module.css
new file mode 100644
index 00000000000..6acb3a46069
--- /dev/null
+++ b/packages/react/src/LabelGroup/LabelGroupStories.module.css
@@ -0,0 +1,9 @@
+.ResizableContainer {
+ /* stylelint-disable-next-line color-named */
+ outline: 1px solid black;
+ overflow: auto;
+ padding: var(--base-size-4);
+ resize: horizontal;
+ /* stylelint-disable-next-line primer/responsive-widths */
+ width: 600px;
+}
diff --git a/packages/react/src/Text/Text.test.tsx b/packages/react/src/Text/Text.test.tsx
index b8608b084cc..869f404add8 100644
--- a/packages/react/src/Text/Text.test.tsx
+++ b/packages/react/src/Text/Text.test.tsx
@@ -62,7 +62,6 @@ describe('Text', () => {
})
it('respects fontFamily="mono"', () => {
- // styled-components removes the whitespace between font-family values
const mono = theme.fonts.mono.replace(/, /g, ',')
expect(render()).toHaveStyleRule('font-family', mono)
})
diff --git a/packages/react/src/stories/AnchoredPositionStories.module.css b/packages/react/src/stories/AnchoredPositionStories.module.css
new file mode 100644
index 00000000000..a705edd980b
--- /dev/null
+++ b/packages/react/src/stories/AnchoredPositionStories.module.css
@@ -0,0 +1,42 @@
+.Float {
+ position: absolute;
+ border: var(--borderWidth-thin) solid var(--borderColor-default);
+ border-radius: var(--borderRadius-medium);
+ background-color: var(--bgColor-attention-muted);
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ font-size: var(--text-body-size-medium);
+ font-weight: var(--base-text-weight-semibold);
+ padding: var(--base-size-16);
+}
+
+.Anchor {
+ position: absolute;
+ border: var(--borderWidth-thin) solid var(--borderColor-default);
+ border-radius: var(--borderRadius-medium);
+ background-color: var(--bgColor-accent-muted);
+ display: flex;
+ flex-direction: column;
+ text-align: center;
+ font-size: var(--text-body-size-medium);
+ font-weight: var(--base-text-weight-semibold);
+ padding: var(--base-size-16);
+}
+
+.Nav {
+ width: 300px;
+ padding: var(--base-size-16);
+ position: relative;
+ overflow: hidden;
+ border-right: var(--borderWidth-thin) solid var(--borderColor-default);
+}
+
+.Main {
+ display: flex;
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
diff --git a/packages/react/src/stories/FocusTrapStories.module.css b/packages/react/src/stories/FocusTrapStories.module.css
new file mode 100644
index 00000000000..c08cd5f1df0
--- /dev/null
+++ b/packages/react/src/stories/FocusTrapStories.module.css
@@ -0,0 +1,5 @@
+.MarginButton {
+ margin: var(--base-size-8) 0;
+}
+
+/* Helper styles for focus trap visual aids */
diff --git a/packages/react/src/stories/FocusZoneStories.module.css b/packages/react/src/stories/FocusZoneStories.module.css
new file mode 100644
index 00000000000..f25a0d54079
--- /dev/null
+++ b/packages/react/src/stories/FocusZoneStories.module.css
@@ -0,0 +1,3 @@
+.MarginButton {
+ margin: var(--base-size-8);
+}
diff --git a/packages/react/src/stories/ThemeProvider.stories.tsx b/packages/react/src/stories/ThemeProvider.stories.tsx
index dee9bdf4a0f..b9e3cdd7929 100644
--- a/packages/react/src/stories/ThemeProvider.stories.tsx
+++ b/packages/react/src/stories/ThemeProvider.stories.tsx
@@ -1,8 +1,8 @@
import type {Meta, StoryFn} from '@storybook/react'
-import {ThemeProvider, BaseStyles, Box, themeGet, useTheme} from '..'
+import {ThemeProvider, BaseStyles, Box, useTheme} from '..'
import type {ThemeProviderProps} from '../ThemeProvider'
-import {createGlobalStyle} from 'styled-components'
+import './ThemeProviderStories.module.css'
export default {
title: 'Behaviors/ThemeProvider',
@@ -17,12 +17,6 @@ export default {
},
} as Meta
-const GlobalStyle = createGlobalStyle`
- body {
- background-color: ${themeGet('colors.bg.canvas')};
- }
-`
-
function ActiveColorScheme() {
const {colorScheme} = useTheme()
return Active color scheme: {colorScheme}
@@ -31,7 +25,6 @@ function ActiveColorScheme() {
export const Default: StoryFn = args => {
return (
-
@@ -87,7 +80,6 @@ function InverseMode() {
export const Nested: StoryFn = args => {
return (
-
diff --git a/packages/react/src/stories/ThemeProviderStories.module.css b/packages/react/src/stories/ThemeProviderStories.module.css
new file mode 100644
index 00000000000..2461d6ad654
--- /dev/null
+++ b/packages/react/src/stories/ThemeProviderStories.module.css
@@ -0,0 +1,3 @@
+:global(body) {
+ background-color: var(--bgColor-default);
+}
diff --git a/packages/react/src/stories/deprecated/ActionList.stories.tsx b/packages/react/src/stories/deprecated/ActionList.stories.tsx
index f3a5303ab22..b81c9513fe2 100644
--- a/packages/react/src/stories/deprecated/ActionList.stories.tsx
+++ b/packages/react/src/stories/deprecated/ActionList.stories.tsx
@@ -13,13 +13,12 @@ import {
} from '@primer/octicons-react'
import type {Meta} from '@storybook/react'
import React, {forwardRef} from 'react'
-import styled from 'styled-components'
import {Label, ThemeProvider} from '../..'
import {ActionList as _ActionList} from '../../deprecated/ActionList'
import {Header} from '../../deprecated/ActionList/Header'
import BaseStyles from '../../BaseStyles'
-import sx from '../../sx'
import {ReactRouterLikeLink} from '../../__tests__/mocks/ReactRouterLink'
+import classes from './ActionListStories.module.css'
const ActionList = Object.assign(_ActionList, {
Header,
@@ -45,14 +44,16 @@ const meta: Meta = {
}
export default meta
-const ErsatzOverlay = styled.div<{maxWidth?: string}>`
- border-radius: 12px;
- box-shadow:
- 0 1px 3px rgba(0, 0, 0, 0.12),
- 0 8px 24px rgba(149, 157, 165, 0.2);
- overflow: hidden;
- max-width: ${({maxWidth}) => maxWidth || 'none'};
-`
+const ErsatzOverlay = ({maxWidth, children, ...props}: {maxWidth?: string; children: React.ReactNode}) => (
+
+ {children}
+
+)
export function ActionsStory(): JSX.Element {
return (
@@ -152,9 +153,6 @@ export function MultiSelectListStory(): JSX.Element {
MultiSelectListStory.storyName = 'Multi Select'
export function ComplexListInsetVariantStory(): JSX.Element {
- const StyledDiv = styled.div`
- ${sx}
- `
return (
<>
Complex List
@@ -172,9 +170,9 @@ export function ComplexListInsetVariantStory(): JSX.Element {
(
- svg': {fill: 'white'}}}>
+
{LeadingVisual && }
-
+
)}
/>
),
@@ -228,9 +226,6 @@ export function ComplexListInsetVariantStory(): JSX.Element {
ComplexListInsetVariantStory.storyName = 'Complex List — Inset Variant'
export function ComplexListFullVariantStory(): JSX.Element {
- const StyledDiv = styled.div`
- ${sx}
- `
return (
<>
Complex List
@@ -249,9 +244,9 @@ export function ComplexListFullVariantStory(): JSX.Element {
(
- svg': {fill: 'white'}}}>
+
{LeadingVisual && }
-
+
)}
/>
),
diff --git a/packages/react/src/stories/deprecated/ActionListStories.module.css b/packages/react/src/stories/deprecated/ActionListStories.module.css
new file mode 100644
index 00000000000..02f8e972f5f
--- /dev/null
+++ b/packages/react/src/stories/deprecated/ActionListStories.module.css
@@ -0,0 +1,18 @@
+.ErsatzOverlay {
+ border-radius: var(--borderRadius-large);
+ /* stylelint-disable primer/box-shadow */
+ box-shadow:
+ 0 1px 3px rgba(0, 0, 0, 0.12),
+ 0 8px 24px rgba(149, 157, 165, 0.2);
+ /* stylelint-enable primer/box-shadow */
+ overflow: hidden;
+}
+
+.ErsatzOverlay[data-max-width] {
+ max-width: var(--ersatz-overlay-max-width);
+}
+
+.StyledDivWithWhiteFill > svg {
+ /* stylelint-disable-next-line color-named */
+ fill: white;
+}
diff --git a/packages/react/src/stories/deprecated/ActionMenu.stories.tsx b/packages/react/src/stories/deprecated/ActionMenu.stories.tsx
index 572add701ca..f9895115845 100644
--- a/packages/react/src/stories/deprecated/ActionMenu.stories.tsx
+++ b/packages/react/src/stories/deprecated/ActionMenu.stories.tsx
@@ -14,13 +14,13 @@ import {
import type {Meta} from '@storybook/react'
import type React from 'react'
import {useCallback, useState, useRef} from 'react'
-import styled from 'styled-components'
import {ThemeProvider} from '../..'
import type {ActionMenuProps} from '../../deprecated'
import {ActionMenu, ActionList} from '../../deprecated'
import type {ItemProps} from '../../deprecated/ActionList'
import BaseStyles from '../../BaseStyles'
import {Button, type ButtonProps} from '../../Button'
+import classes from './ActionMenuStories.module.css'
const meta: Meta = {
title: 'Deprecated/Components/ActionMenu',
@@ -42,13 +42,11 @@ const meta: Meta = {
}
export default meta
-const ErsatzOverlay = styled.div`
- border-radius: 12px;
- box-shadow:
- 0 1px 3px rgba(0, 0, 0, 0.12),
- 0 8px 24px rgba(149, 157, 165, 0.2);
- padding: 8px;
-`
+const ErsatzOverlay = ({children, ...props}: {children: React.ReactNode}) => (
+
+ {children}
+
+)
export function ActionsStory(): JSX.Element {
const [option, setOption] = useState('Select an option')
diff --git a/packages/react/src/stories/deprecated/ActionMenuStories.module.css b/packages/react/src/stories/deprecated/ActionMenuStories.module.css
new file mode 100644
index 00000000000..4968006ec4c
--- /dev/null
+++ b/packages/react/src/stories/deprecated/ActionMenuStories.module.css
@@ -0,0 +1,8 @@
+/* stylelint-disable primer/box-shadow */
+.ErsatzOverlay {
+ border-radius: var(--borderRadius-large);
+ box-shadow:
+ 0 1px 3px rgba(0, 0, 0, 0.12),
+ 0 8px 24px rgba(149, 157, 165, 0.2);
+ padding: var(--base-size-8);
+}
diff --git a/packages/react/src/stories/useAnchoredPosition.stories.tsx b/packages/react/src/stories/useAnchoredPosition.stories.tsx
index dcc36720fa7..9f19fce0a8d 100644
--- a/packages/react/src/stories/useAnchoredPosition.stories.tsx
+++ b/packages/react/src/stories/useAnchoredPosition.stories.tsx
@@ -2,11 +2,10 @@ import React from 'react'
import type {Meta} from '@storybook/react'
import {BaseStyles, Box, ThemeProvider} from '..'
import {useAnchoredPosition} from '../hooks'
-import styled from 'styled-components'
-import {get} from '../constants'
import type {AnchorSide} from '@primer/behaviors'
import Portal, {registerPortalRoot} from '../Portal'
import {Button} from '../Button'
+import classes from './AnchoredPositionStories.module.css'
export default {
title: 'Hooks/useAnchoredPosition',
@@ -65,30 +64,17 @@ export default {
},
} as Meta
-const Float = styled(Box)`
- position: absolute;
- border: 1px solid ${get('colors.black')};
- border-radius: ${get('radii.2')};
- background-color: ${get('colors.orange.3')};
- display: flex;
- flex-direction: column;
- text-align: center;
- font-size: ${get('fontSizes.3')};
- font-weight: ${get('fontWeights.bold')};
- padding: ${get('space.3')};
-`
-const Anchor = styled(Box)`
- position: absolute;
- border: 1px solid ${get('colors.black')};
- border-radius: ${get('radii.2')};
- background-color: ${get('colors.blue.3')};
- display: flex;
- flex-direction: column;
- text-align: center;
- font-size: ${get('fontSizes.3')};
- font-weight: ${get('fontWeights.bold')};
- padding: ${get('space.3')};
-`
+const Float = ({children, ...props}: React.ComponentProps) => (
+
+ {children}
+
+)
+
+const Anchor = ({children, ...props}: React.ComponentProps) => (
+
+ {children}
+
+)
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const UseAnchoredPosition = (args: any) => {
@@ -239,21 +225,17 @@ export const ComplexAncestry = () => {
)
}
-const Nav = styled('nav')`
- width: 300px;
- padding: ${get('space.3')};
- position: relative;
- overflow: hidden;
- border-right: 1px solid ${get('colors.border.gray')};
-`
-const Main = styled('main')`
- display: flex;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
-`
+const Nav = ({children, ...props}: React.ComponentPropsWithoutRef<'nav'>) => (
+
+)
+
+const Main = ({children, ...props}: React.ComponentPropsWithRef<'main'>) => (
+
+ {children}
+
+)
/*
diff --git a/packages/react/src/stories/useFocusTrap.stories.tsx b/packages/react/src/stories/useFocusTrap.stories.tsx
index ac8273eedbb..dd508175d90 100644
--- a/packages/react/src/stories/useFocusTrap.stories.tsx
+++ b/packages/react/src/stories/useFocusTrap.stories.tsx
@@ -1,10 +1,9 @@
import React, {useCallback, useEffect} from 'react'
import type {Meta} from '@storybook/react'
-import styled, {createGlobalStyle} from 'styled-components'
import {BaseStyles, Box, Button, Flash, Text, ThemeProvider} from '..'
import {useFocusTrap} from '../hooks/useFocusTrap'
-import {themeGet} from '@styled-system/theme-get'
+import classes from './FocusTrapStories.module.css'
export default {
title: 'Hooks/useFocusTrap',
@@ -21,23 +20,28 @@ export default {
],
} as Meta
-// NOTE: the below styles are solely intended as a visual aid for
-// this Storybook story, but they're not recommended for a real site!
-const HelperGlobalStyling = createGlobalStyle`
- *:focus {
- outline: 2px solid ${themeGet('colors.auto.blue.3')} !important;
- }
- [data-focus-trap='active'] {
- background-color: ${themeGet('colors.auto.green.2')}
- }
- [data-focus-trap='suspended'] {
- background-color: ${themeGet('colors.auto.yellow.2')}
- }
-`
+// Helper styles for visual aid in this story
+const HelperGlobalStyling = () => (
+
+)
-const MarginButton = styled(Button)`
- margin: ${themeGet('space.1')} 0;
-`
+const MarginButton = ({children, ...props}: React.ComponentProps) => (
+
+)
export const FocusTrap = () => {
const [trapEnabled, setTrapEnabled] = React.useState(false)
diff --git a/packages/react/src/stories/useFocusZone.stories.tsx b/packages/react/src/stories/useFocusZone.stories.tsx
index f9266de4ef7..7fa559a58f5 100644
--- a/packages/react/src/stories/useFocusZone.stories.tsx
+++ b/packages/react/src/stories/useFocusZone.stories.tsx
@@ -1,14 +1,13 @@
import React, {useCallback, useRef, useState} from 'react'
import type {Meta} from '@storybook/react'
-import styled from 'styled-components'
import {Box, BaseStyles, Flash, theme, ThemeProvider} from '..'
import {Button} from '../Button'
import Link from '../Link'
import {FocusKeys} from '@primer/behaviors'
import type {Direction} from '@primer/behaviors'
-import {themeGet} from '@styled-system/theme-get'
import {useFocusZone} from '../hooks/useFocusZone'
import {useTheme} from '../ThemeProvider'
+import classes from './FocusZoneStories.module.css'
export default {
title: 'Hooks/useFocusZone',
@@ -25,9 +24,11 @@ export default {
],
} as Meta
-const MarginButton = styled(Button)`
- margin: ${themeGet('space.1')};
-`
+const MarginButton = ({children, ...props}: React.ComponentProps) => (
+
+)
export const BasicFocusZone = () => {
// Display each key press in the top-right corner of the page as a visual aid