diff --git a/.changeset/chilly-lemons-promise.md b/.changeset/chilly-lemons-promise.md index 8eea7b9e0d2..c566bd1c66a 100644 --- a/.changeset/chilly-lemons-promise.md +++ b/.changeset/chilly-lemons-promise.md @@ -2,4 +2,4 @@ "@primer/react": major --- -Remove sx from UnderlinePanels +Remove sx from UnderlinePanels \ No newline at end of file diff --git a/.changeset/rude-windows-bathe.md b/.changeset/rude-windows-bathe.md new file mode 100644 index 00000000000..194c1e0afab --- /dev/null +++ b/.changeset/rude-windows-bathe.md @@ -0,0 +1,6 @@ +--- +"@primer/react": patch +"@primer/styled-react": patch +--- + +use UnderlinePanels.Tab, UnderlinePanels.Panel from @primer/react diff --git a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx index 1d7dc2f19c2..5067ae0f922 100644 --- a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx +++ b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx @@ -7,11 +7,17 @@ import React, { type FC, type PropsWithChildren, useEffect, + type ElementType, } from 'react' import {TabContainerElement} from '@github/tab-container-element' import type {IconProps} from '@primer/octicons-react' import {createComponent} from '../../utils/create-component' -import {UnderlineItemList, UnderlineWrapper, UnderlineItem} from '../../internal/components/UnderlineTabbedInterface' +import { + UnderlineItemList, + UnderlineWrapper, + UnderlineItem, + type UnderlineItemProps, +} from '../../internal/components/UnderlineTabbedInterface' import {useId} from '../../hooks' import {invariant} from '../../utils/invariant' import {type SxProp} from '../../sx' @@ -97,21 +103,11 @@ const UnderlinePanels: FC = ({ let panelIndex = 0 const childrenWithProps = Children.map(children, child => { - if ( - isValidElement(child) && - (typeof child.type === 'function' || typeof child.type === 'object') && - 'displayName' in child.type && - child.type.displayName === 'UnderlinePanels.Tab' - ) { + if (isValidElement>(child) && child.type === Tab) { return cloneElement(child, {id: `${parentId}-tab-${tabIndex++}`, loadingCounters, iconsVisible}) } - if ( - isValidElement(child) && - (typeof child.type === 'function' || typeof child.type === 'object') && - 'displayName' in child.type && - child.type.displayName === 'UnderlinePanels.Panel' - ) { + if (isValidElement(child) && child.type === Panel) { const childPanel = child as React.ReactElement return cloneElement(childPanel, {'aria-labelledby': `${parentId}-tab-${panelIndex++}`}) } @@ -119,22 +115,12 @@ const UnderlinePanels: FC = ({ }) const newTabs = Children.toArray(childrenWithProps).filter(child => { - return ( - isValidElement(child) && - (typeof child.type === 'function' || typeof child.type === 'object') && - 'displayName' in child.type && - child.type.displayName === 'UnderlinePanels.Tab' - ) + return isValidElement(child) && child.type === Tab }) - const newTabPanels = Children.toArray(childrenWithProps).filter(child => { - return ( - isValidElement(child) && - (typeof child.type === 'function' || typeof child.type === 'object') && - 'displayName' in child.type && - child.type.displayName === 'UnderlinePanels.Panel' - ) - }) + const newTabPanels = Children.toArray(childrenWithProps).filter( + child => isValidElement(child) && child.type === Panel, + ) setTabs(newTabs) setTabPanels(newTabPanels) diff --git a/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx b/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx index 86ea2df3afd..f43f68c6ec0 100644 --- a/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx +++ b/packages/styled-react/src/__tests__/primer-react-experimental.browser.test.tsx @@ -37,16 +37,4 @@ describe('@primer/react/experimental', () => { ) expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)') }) - - test('UnderlinePanels.Panel supports `sx` prop', () => { - render( - - tab - - panel - - , - ) - expect(window.getComputedStyle(screen.getByTestId('component')).backgroundColor).toBe('rgb(255, 0, 0)') - }) }) diff --git a/packages/styled-react/src/components/UnderlinePanels.tsx b/packages/styled-react/src/components/UnderlinePanels.tsx index 1f5f68eacf1..d310ed39d39 100644 --- a/packages/styled-react/src/components/UnderlinePanels.tsx +++ b/packages/styled-react/src/components/UnderlinePanels.tsx @@ -1,8 +1,8 @@ import { UnderlinePanels as PrimerUnderlinePanels, type UnderlinePanelsProps as PrimerUnderlinePanelsProps, - type UnderlinePanelsPanelProps as PrimerUnderlinePanelsPanelProps, - type UnderlinePanelsTabProps as PrimerUnderlinePanelsTabProps, + type UnderlinePanelsPanelProps, + type UnderlinePanelsTabProps, } from '@primer/react/experimental' import styled from 'styled-components' import {sx, type SxProp} from '../sx' @@ -22,38 +22,9 @@ const UnderlinePanelsImpl = ({as, ...props}: UnderlinePanelsProps) => ( UnderlinePanelsImpl.displayName = 'UnderlinePanels' -type UnderlinePanelsPanelProps = PrimerUnderlinePanelsPanelProps & SxProp - -const StyledUnderlinePanelsPanel = styled(PrimerUnderlinePanels.Panel).withConfig({ - shouldForwardProp: prop => prop !== 'sx', -})` - ${sx} -` - -// @ts-ignore forwardedAs is valid here but I don't know how to fix the typescript error -const UnderlinePanelsPanel = ({as, ...props}: UnderlinePanelsPanelProps) => { - return -} - -UnderlinePanelsPanel.displayName = 'UnderlinePanels.Panel' - -type UnderlinePanelsTabProps = PrimerUnderlinePanelsTabProps & SxProp - -const StyledUnderlinePanelsTab = styled(PrimerUnderlinePanels.Tab).withConfig({ - shouldForwardProp: prop => prop !== 'sx', -})` - ${sx} -` -// @ts-ignore forwardedAs is valid here but I don't know how to fix the typescript error -const UnderlinePanelsTab = ({as, ...props}: UnderlinePanelsTabProps) => ( - -) - -UnderlinePanelsTab.displayName = 'UnderlinePanels.Tab' - const UnderlinePanels = Object.assign(UnderlinePanelsImpl, { - Tab: UnderlinePanelsTab, - Panel: UnderlinePanelsPanel, + Tab: PrimerUnderlinePanels.Tab, + Panel: PrimerUnderlinePanels.Panel, }) export {UnderlinePanels, type UnderlinePanelsProps, type UnderlinePanelsTabProps, type UnderlinePanelsPanelProps} diff --git a/packages/styled-react/src/experimental.tsx b/packages/styled-react/src/experimental.tsx index f120240dc00..65ea374d430 100644 --- a/packages/styled-react/src/experimental.tsx +++ b/packages/styled-react/src/experimental.tsx @@ -1,5 +1,4 @@ export {Dialog, type DialogProps} from './components/Dialog' - export { PageHeader, type PageHeaderProps, @@ -7,6 +6,8 @@ export { type PageHeaderTitleProps, } from './components/PageHeader' +export {Tooltip, type TooltipProps} from './components/Tooltip' + export { UnderlinePanels, type UnderlinePanelsProps, @@ -14,6 +15,4 @@ export { type UnderlinePanelsPanelProps, } from './components/UnderlinePanels' -export {Tooltip, type TooltipProps} from './components/Tooltip' - export {Table} from '@primer/react/experimental'