diff --git a/.changeset/few-rocks-run.md b/.changeset/few-rocks-run.md new file mode 100644 index 00000000000..4a4276a6e9f --- /dev/null +++ b/.changeset/few-rocks-run.md @@ -0,0 +1,5 @@ +--- +'@primer/react': patch +--- + +Fixes type errors that appeared during v36 development. Likely caused by Button updates diff --git a/src/Token/TokenBase.tsx b/src/Token/TokenBase.tsx index 366a51edc04..a0ae3688b43 100644 --- a/src/Token/TokenBase.tsx +++ b/src/Token/TokenBase.tsx @@ -128,22 +128,25 @@ const StyledTokenBase = styled.span< ${sx} ` -const TokenBase = React.forwardRef(({onRemove, onKeyDown, id, size = defaultTokenSize, ...rest}, forwardedRef) => { - return ( - ) => { - onKeyDown && onKeyDown(event) +const TokenBase = React.forwardRef( + ({onRemove, onKeyDown, id, size = defaultTokenSize, ...rest}, forwardedRef) => { + return ( + ) => { + onKeyDown && onKeyDown(event) - if ((event.key === 'Backspace' || event.key === 'Delete') && onRemove) { - onRemove() - } - }} - id={id?.toString()} - size={size} - {...rest} - ref={forwardedRef} - /> - ) -}) as PolymorphicForwardRefComponent<'span' | 'a' | 'button', TokenBaseProps & SxProp> + if ((event.key === 'Backspace' || event.key === 'Delete') && onRemove) { + onRemove() + } + }} + id={id?.toString()} + size={size} + {...rest} + // @ts-expect-error TokenBase wants Anchor, Button, and Span refs + ref={forwardedRef} + /> + ) + }, +) as PolymorphicForwardRefComponent<'span' | 'a' | 'button', TokenBaseProps & SxProp> export default TokenBase diff --git a/src/drafts/Button2/Button.dev.stories.tsx b/src/drafts/Button2/Button.dev.stories.tsx index 94f06efa15c..472e4063b26 100644 --- a/src/drafts/Button2/Button.dev.stories.tsx +++ b/src/drafts/Button2/Button.dev.stories.tsx @@ -1,6 +1,6 @@ import {SearchIcon, TriangleDownIcon, EyeIcon} from '@primer/octicons-react' import React from 'react' -import {Button} from '.' +import {Button2 as Button} from '.' export default { title: 'Drafts/Components/Button/DevOnly', diff --git a/src/drafts/Button2/Button.features.stories.tsx b/src/drafts/Button2/Button.features.stories.tsx index 79014edda13..ab0fce76123 100644 --- a/src/drafts/Button2/Button.features.stories.tsx +++ b/src/drafts/Button2/Button.features.stories.tsx @@ -1,6 +1,6 @@ import {EyeIcon, TriangleDownIcon, HeartIcon} from '@primer/octicons-react' import React, {useState} from 'react' -import {Button} from '.' +import {Button2 as Button} from '.' export default { title: 'Drafts/Components/Button/Features', diff --git a/src/drafts/Button2/Button.stories.tsx b/src/drafts/Button2/Button.stories.tsx index deed09867fb..32a841e66c4 100644 --- a/src/drafts/Button2/Button.stories.tsx +++ b/src/drafts/Button2/Button.stories.tsx @@ -1,7 +1,7 @@ import React from 'react' import {EyeClosedIcon, EyeIcon, SearchIcon, TriangleDownIcon, XIcon, HeartIcon} from '@primer/octicons-react' import {Meta, StoryFn} from '@storybook/react' -import {Button} from '.' +import {Button2 as Button} from '.' import {OcticonArgType} from '../../utils/story-helpers' export default { diff --git a/src/drafts/Button2/index.ts b/src/drafts/Button2/index.ts index 254d7bf77d2..5bebc2d158b 100644 --- a/src/drafts/Button2/index.ts +++ b/src/drafts/Button2/index.ts @@ -2,6 +2,6 @@ import {ButtonComponent} from './Button' import {Counter} from './ButtonCounter' export type {ButtonProps, IconButtonProps} from './types' -export const Button = Object.assign(ButtonComponent, { +export const Button2 = Object.assign(ButtonComponent, { Counter, }) diff --git a/src/drafts/Button2/types.ts b/src/drafts/Button2/types.ts index 7c92531816b..30c7a2ba555 100644 --- a/src/drafts/Button2/types.ts +++ b/src/drafts/Button2/types.ts @@ -20,7 +20,7 @@ type ButtonA11yProps = export type ButtonBaseProps = { /** - * Determine's the styles on a button one of 'default' | 'primary' | 'invisible' | 'danger' + * Determine's the styles on a button one of 'default' | 'primary' | 'invisible' | 'danger' | 'outline' */ variant?: VariantType /** diff --git a/src/drafts/MarkdownEditor/Footer.tsx b/src/drafts/MarkdownEditor/Footer.tsx index 3b23623c843..a621df3b5aa 100644 --- a/src/drafts/MarkdownEditor/Footer.tsx +++ b/src/drafts/MarkdownEditor/Footer.tsx @@ -1,7 +1,8 @@ import React, {memo, forwardRef, useContext} from 'react' import {AlertIcon, ImageIcon, MarkdownIcon} from '@primer/octicons-react' -import {Spinner, Button, ButtonProps, LinkButton, Box, Text} from '../..' +import {Spinner, LinkButton, Box, Text} from '../..' +import {Button, ButtonProps} from '../../Button' import {MarkdownEditorContext} from './_MarkdownEditorContext' import {useSlots} from '../../hooks/useSlots' diff --git a/src/drafts/MarkdownEditor/MarkdownEditor.stories.tsx b/src/drafts/MarkdownEditor/MarkdownEditor.stories.tsx index ecfcca7871e..31794e23a16 100644 --- a/src/drafts/MarkdownEditor/MarkdownEditor.stories.tsx +++ b/src/drafts/MarkdownEditor/MarkdownEditor.stories.tsx @@ -342,7 +342,7 @@ export const CustomFooter = ({ Add Button diff --git a/src/drafts/MarkdownEditor/_MarkdownEditorContext.ts b/src/drafts/MarkdownEditor/_MarkdownEditorContext.ts index 7758233e96c..70a71bf7f39 100644 --- a/src/drafts/MarkdownEditor/_MarkdownEditorContext.ts +++ b/src/drafts/MarkdownEditor/_MarkdownEditorContext.ts @@ -1,6 +1,6 @@ import {createContext, RefObject} from 'react' import {FormattingTools} from './_FormattingTools' -import {ButtonProps} from '../Button2' +import {ButtonProps} from '../../Button' // For performance, the properties in context MUST NOT be values that change often - every time // any of the properties change, all components including memoized ones will be re-rendered diff --git a/src/drafts/index.ts b/src/drafts/index.ts index 0d9bdf21ca6..728b1368ba2 100644 --- a/src/drafts/index.ts +++ b/src/drafts/index.ts @@ -54,4 +54,4 @@ export * from '../SplitPageLayout' // CSS Experiment export * from './CSSComponent' -export * from './Button2' +// export * from './Button2' diff --git a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx index fa8b9ab47ba..18c8e8376aa 100644 --- a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx +++ b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx @@ -7,6 +7,7 @@ import {useSSRSafeId} from '../../../utils/ssr' import CheckboxOrRadioGroupCaption from './CheckboxOrRadioGroupCaption' import CheckboxOrRadioGroupLabel from './CheckboxOrRadioGroupLabel' import CheckboxOrRadioGroupValidation from './CheckboxOrRadioGroupValidation' +import CheckboxOrRadioGroupContext from './CheckboxOrRadioGroupContext' import VisuallyHidden from '../../../_VisuallyHidden' import {useSlots} from '../../../hooks/useSlots' import {SxProp} from '../../../sx' @@ -31,13 +32,6 @@ export type CheckboxOrRadioGroupProps = { required?: boolean } & SxProp -export type CheckboxOrRadioGroupContext = { - validationMessageId?: string - captionId?: string -} & CheckboxOrRadioGroupProps - -export const CheckboxOrRadioGroupContext = React.createContext({}) - const Body = styled.div` display: flex; flex-direction: column; diff --git a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.tsx b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.tsx index bab1bad56dd..2406775f139 100644 --- a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.tsx +++ b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupCaption.tsx @@ -1,7 +1,7 @@ import React from 'react' import Text from '../../../Text' import {SxProp} from '../../../sx' -import {CheckboxOrRadioGroupContext} from './CheckboxOrRadioGroup' +import CheckboxOrRadioGroupContext from './CheckboxOrRadioGroupContext' const CheckboxOrRadioGroupCaption: React.FC> = ({children, sx}) => { const {disabled, captionId} = React.useContext(CheckboxOrRadioGroupContext) diff --git a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupContext.tsx b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupContext.tsx new file mode 100644 index 00000000000..2c52f3b10fa --- /dev/null +++ b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupContext.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import {CheckboxOrRadioGroupProps} from './CheckboxOrRadioGroup' + +export type CheckboxOrRadioGroupContext = { + validationMessageId?: string + captionId?: string +} & CheckboxOrRadioGroupProps + +const CheckboxOrRadioGroupContext = React.createContext({}) + +export default CheckboxOrRadioGroupContext diff --git a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.tsx b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.tsx index 6d2067a4385..cfa47df4e67 100644 --- a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.tsx +++ b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupLabel.tsx @@ -2,7 +2,7 @@ import React from 'react' import Box from '../../../Box' import VisuallyHidden from '../../../_VisuallyHidden' import {SxProp} from '../../../sx' -import {CheckboxOrRadioGroupContext} from './CheckboxOrRadioGroup' +import CheckboxOrRadioGroupContext from './CheckboxOrRadioGroupContext' export type CheckboxOrRadioGroupLabelProps = { /** diff --git a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.tsx b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.tsx index 2a23adb47a9..3a350c32360 100644 --- a/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.tsx +++ b/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroupValidation.tsx @@ -2,7 +2,7 @@ import React from 'react' import InputValidation from '../InputValidation' import {SxProp} from '../../../sx' import {FormValidationStatus} from '../../../utils/types/FormValidationStatus' -import {CheckboxOrRadioGroupContext} from './CheckboxOrRadioGroup' +import CheckboxOrRadioGroupContext from './CheckboxOrRadioGroupContext' export type CheckboxOrRadioGroupValidationProps = { /** Changes the visual style to match the validation status */ diff --git a/src/internal/components/CheckboxOrRadioGroup/index.ts b/src/internal/components/CheckboxOrRadioGroup/index.ts index 0a399acd807..06b176e89ce 100644 --- a/src/internal/components/CheckboxOrRadioGroup/index.ts +++ b/src/internal/components/CheckboxOrRadioGroup/index.ts @@ -1,2 +1,3 @@ -export {default, CheckboxOrRadioGroupContext} from './CheckboxOrRadioGroup' +export {default} from './CheckboxOrRadioGroup' export type {CheckboxOrRadioGroupProps} from './CheckboxOrRadioGroup' +export {default as CheckboxOrRadioGroupContext} from './CheckboxOrRadioGroupContext'