Redesign: Modals (#40191)

This commit is contained in:
Echo
2026-08-19 12:33:42 +00:00
committed by GitHub
parent c2d8dbbc1b
commit cb82dfddff
4 changed files with 212 additions and 4 deletions

View File

@@ -38,7 +38,7 @@ type ElementRef<As extends ElementType> =
* Merge additional props with intrinsic/element props for `as`.
* Additional props win on conflicts.
*/
type PolymorphicProps<
type OldPolymorphicProps<
As extends ElementType,
AdditionalProps extends object = object,
> = AdditionalProps &
@@ -52,7 +52,9 @@ type PolymorphicWithRef<
DefaultAs extends ElementType,
AdditionalProps extends object = object,
> = <As extends ElementType = DefaultAs>(
props: PolymorphicProps<As, AdditionalProps> & { ref?: Ref<ElementRef<As>> },
props: OldPolymorphicProps<As, AdditionalProps> & {
ref?: Ref<ElementRef<As>>;
},
) => ReactElement | null;
/**
@@ -64,12 +66,22 @@ type PolyRefFunction = <
>(
render: ForwardRefRenderFunction<
ElementRef<DefaultAs>,
PolymorphicProps<DefaultAs, AdditionalProps>
OldPolymorphicProps<DefaultAs, AdditionalProps>
>,
) => PolymorphicWithRef<DefaultAs, AdditionalProps> &
ForwardRefExoticComponent<PolymorphicProps<DefaultAs, AdditionalProps>>;
ForwardRefExoticComponent<OldPolymorphicProps<DefaultAs, AdditionalProps>>;
/**
* Polymorphic `forwardRef` function.
*/
export const polymorphicForwardRef = forwardRef as PolyRefFunction;
// Use this for modern React 19 props
export type PolymorphicProps<
AdditionalProps extends object,
As extends React.ElementType,
> = {
as?: As;
} & Omit<React.ComponentPropsWithoutRef<As>, keyof AdditionalProps | 'as'> &
AdditionalProps;