diff --git a/.changeset/twelve-sloths-flow.md b/.changeset/twelve-sloths-flow.md new file mode 100644 index 00000000000..0e5b130179b --- /dev/null +++ b/.changeset/twelve-sloths-flow.md @@ -0,0 +1,5 @@ +--- +'@primer/react': major +--- + +Remove support for `sx` from `Header` diff --git a/packages/react/src/Header/Header.dev.stories.tsx b/packages/react/src/Header/Header.dev.stories.tsx index 9115c13ab0f..e7154cb81cd 100644 --- a/packages/react/src/Header/Header.dev.stories.tsx +++ b/packages/react/src/Header/Header.dev.stories.tsx @@ -3,7 +3,6 @@ import {MarkGithubIcon} from '@primer/octicons-react' import Header from './Header' import Avatar from '../Avatar' -import Octicon from '../Octicon' import classes from './Header.dev.module.css' @@ -16,7 +15,7 @@ export const WithCss = () => (
- + GitHub @@ -26,33 +25,3 @@ export const WithCss = () => (
) - -export const WithSx = () => ( -
- - - - GitHub - - - Menu - - - -
-) - -export const WithSxAndCSS = () => ( -
- - - - GitHub - - - Menu - - - -
-) diff --git a/packages/react/src/Header/Header.docs.json b/packages/react/src/Header/Header.docs.json index a0447281267..2a1c52fddcf 100644 --- a/packages/react/src/Header/Header.docs.json +++ b/packages/react/src/Header/Header.docs.json @@ -5,13 +5,7 @@ "a11yReviewed": "2025-01-08", "stories": [], "importPath": "@primer/react", - "props": [ - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true - } - ], + "props": [], "subcomponents": [ { "name": "Header.Item", @@ -21,11 +15,6 @@ "type": "string", "defaultValue": "", "description": "Stretches item to fill the available space" - }, - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true } ] }, @@ -42,11 +31,6 @@ "name": "as", "type": "React.ElementType", "defaultValue": "\"a\"" - }, - { - "name": "sx", - "type": "SystemStyleObject", - "deprecated": true } ], "passthrough": { diff --git a/packages/react/src/Header/Header.features.stories.module.css b/packages/react/src/Header/Header.features.stories.module.css new file mode 100644 index 00000000000..0c315bb2312 --- /dev/null +++ b/packages/react/src/Header/Header.features.stories.module.css @@ -0,0 +1,12 @@ +.Logo { + /* stylelint-disable-next-line primer/typography */ + font-size: var(--base-size-16); +} + +.Icon { + margin-right: var(--base-size-8); +} + +.LastItem { + margin-right: 0; +} diff --git a/packages/react/src/Header/Header.features.stories.tsx b/packages/react/src/Header/Header.features.stories.tsx index 474938ffc1b..e2c9439580d 100644 --- a/packages/react/src/Header/Header.features.stories.tsx +++ b/packages/react/src/Header/Header.features.stories.tsx @@ -1,9 +1,8 @@ import type {Meta} from '@storybook/react-vite' - -import Header from './Header' -import Avatar from '../Avatar' -import Octicon from '../Octicon' import {MarkGithubIcon} from '@primer/octicons-react' +import Avatar from '../Avatar' +import Header from './Header' +import classes from './Header.features.stories.module.css' export default { title: 'Components/Header/Features', @@ -14,7 +13,7 @@ export const WithFullSizeItem = () => (
Item 1 Item 2 - Item 3 + Item 3
) @@ -35,8 +34,8 @@ export const WithLinks = () => ( export const WithManyItems = () => (
- - + + GitHub @@ -50,7 +49,7 @@ export const WithManyItems = () => ( Item Item Item - +
diff --git a/packages/react/src/Header/Header.stories.module.css b/packages/react/src/Header/Header.stories.module.css new file mode 100644 index 00000000000..2780e57e5f9 --- /dev/null +++ b/packages/react/src/Header/Header.stories.module.css @@ -0,0 +1,12 @@ +.HeaderLink { + /* stylelint-disable-next-line primer/typography */ + font-size: var(--base-size-16); +} + +.AvatarContainer { + margin-right: 0; +} + +.Icon { + margin-right: var(--base-size-8); +} diff --git a/packages/react/src/Header/Header.stories.tsx b/packages/react/src/Header/Header.stories.tsx index 60ab44cd3da..28cff229a04 100644 --- a/packages/react/src/Header/Header.stories.tsx +++ b/packages/react/src/Header/Header.stories.tsx @@ -1,9 +1,8 @@ import type {Meta, StoryFn} from '@storybook/react-vite' import {MarkGithubIcon} from '@primer/octicons-react' - import Header from './Header' import Avatar from '../Avatar' -import Octicon from '../Octicon' +import classes from './Header.stories.module.css' export default { title: 'Components/Header', @@ -13,13 +12,13 @@ export default { export const Default = () => (
- - + + GitHub Menu - +
@@ -28,13 +27,13 @@ export const Default = () => ( export const Playground: StoryFn = args => (
- - + + GitHub Menu - +
diff --git a/packages/react/src/Header/Header.tsx b/packages/react/src/Header/Header.tsx index 4b03a14d4bd..531938db66d 100644 --- a/packages/react/src/Header/Header.tsx +++ b/packages/react/src/Header/Header.tsx @@ -1,23 +1,21 @@ import type {Location, Pathname} from 'history' -import type {SxProp} from '../sx' import React from 'react' import {clsx} from 'clsx' import classes from './Header.module.css' import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic' -import {BoxWithFallback} from '../internal/components/BoxWithFallback' -export type HeaderProps = React.ComponentProps<'header'> & SxProp & {as?: React.ElementType} -export type HeaderItemProps = React.ComponentProps<'div'> & SxProp & {full?: boolean} -export type HeaderLinkProps = React.ComponentProps<'a'> & SxProp & {to?: Location | Pathname; as?: React.ElementType} +export type HeaderProps = React.ComponentProps<'header'> & {as?: React.ElementType} +export type HeaderItemProps = React.ComponentProps<'div'> & {full?: boolean} +export type HeaderLinkProps = React.ComponentProps<'a'> & {to?: Location | Pathname; as?: React.ElementType} const Header = React.forwardRef(function Header( - {children, className, as = 'header', ...rest}, + {as: BaseComponent = 'header', children, className, ...rest}, forwardRef, ) { return ( - + {children} - + ) }) as PolymorphicForwardRefComponent<'header', HeaderProps> @@ -28,22 +26,22 @@ const HeaderItem = React.forwardRef(function He forwardRef, ) { return ( - +
{children} - +
) }) HeaderItem.displayName = 'Header.Item' const HeaderLink = React.forwardRef(function HeaderLink( - {children, className, as = 'a', ...rest}, + {children, className, as: BaseComponent = 'a', ...rest}, forwardRef, ) { return ( - + {children} - + ) }) diff --git a/packages/styled-react/rollup.config.js b/packages/styled-react/rollup.config.js index 3d8bd571154..f9a5266988b 100644 --- a/packages/styled-react/rollup.config.js +++ b/packages/styled-react/rollup.config.js @@ -21,7 +21,7 @@ export default defineConfig({ tsconfig: 'tsconfig.build.json', }), babel({ - presets: ['@babel/preset-typescript', '@babel/preset-react'], + presets: ['@babel/preset-typescript', ['@babel/preset-react', {runtime: 'automatic'}]], extensions: ['.ts', '.tsx'], babelHelpers: 'bundled', }), diff --git a/packages/styled-react/src/components/Box.tsx b/packages/styled-react/src/components/Box.tsx new file mode 100644 index 00000000000..3694e3b630c --- /dev/null +++ b/packages/styled-react/src/components/Box.tsx @@ -0,0 +1 @@ +export {Box, type BoxProps} from '@primer/react' diff --git a/packages/styled-react/src/components/Header.tsx b/packages/styled-react/src/components/Header.tsx new file mode 100644 index 00000000000..b7266645a53 --- /dev/null +++ b/packages/styled-react/src/components/Header.tsx @@ -0,0 +1,33 @@ +import { + type HeaderProps as PrimerHeaderProps, + type HeaderItemProps as PrimerHeaderItemProps, + type HeaderLinkProps as PrimerHeaderLinkProps, + Header as PrimerHeader, +} from '@primer/react' +import {forwardRef} from 'react' +import {Box} from './Box' +import type {ForwardRefComponent} from '../polymorphic' +import type {SxProp} from '../sx' + +type HeaderProps = PrimerHeaderProps & SxProp + +const HeaderImpl = forwardRef(function Header(props, ref) { + return +}) as ForwardRefComponent<'header', HeaderProps> + +type HeaderItemProps = PrimerHeaderItemProps & SxProp + +const HeaderItem = forwardRef(function HeaderItem(props, ref) { + return +}) + +const HeaderLink = forwardRef(function HeaderLink(props, ref) { + return +}) + +const Header = Object.assign(HeaderImpl, { + Item: HeaderItem, + Link: HeaderLink, +}) + +export {Header, type HeaderProps} diff --git a/packages/styled-react/src/index.tsx b/packages/styled-react/src/index.tsx index b576248e2e6..7b4860980c6 100644 --- a/packages/styled-react/src/index.tsx +++ b/packages/styled-react/src/index.tsx @@ -189,6 +189,8 @@ const UnderlineNav = Object.assign(UnderlineNavImpl, { Item: UnderlineNavItem, }) +export {Header, type HeaderProps} from './components/Header' + export {Flash} from './components/Flash' export { @@ -217,7 +219,6 @@ export { Details, Dialog, FormControl, - Header, Heading, IconButton, Label,