diff --git a/packages/pigment-css-react/src/Box.d.ts b/packages/pigment-css-react/src/Box.d.ts index 2e0e8efc..1ad12b0b 100644 --- a/packages/pigment-css-react/src/Box.d.ts +++ b/packages/pigment-css-react/src/Box.d.ts @@ -7,7 +7,7 @@ export type PolymorphicComponentProps< AsTarget extends React.ElementType | undefined, AsTargetProps extends object = AsTarget extends React.ElementType ? React.ComponentPropsWithRef - : BaseDefaultProps, + : React.HTMLAttributes, > = NoInfer, 'as' | 'component'>> & { /** * The component used for the root node. @@ -37,6 +37,6 @@ export interface PolymorphicComponent ): React.JSX.Element; } -declare const Box: PolymorphicComponent<{}>; +declare const Box: PolymorphicComponent>; export default Box; diff --git a/packages/pigment-css-react/src/Container.d.ts b/packages/pigment-css-react/src/Container.d.ts index a8478ef6..d6a8d3bd 100644 --- a/packages/pigment-css-react/src/Container.d.ts +++ b/packages/pigment-css-react/src/Container.d.ts @@ -24,6 +24,8 @@ type ContainerBaseProps = { maxWidth?: Breakpoint | false; }; -declare const Container: PolymorphicComponent; +declare const Container: PolymorphicComponent< + ContainerBaseProps & React.DetailsHTMLAttributes +>; export default Container; diff --git a/packages/pigment-css-react/src/Grid.d.ts b/packages/pigment-css-react/src/Grid.d.ts index a00626b4..fe223a15 100644 --- a/packages/pigment-css-react/src/Grid.d.ts +++ b/packages/pigment-css-react/src/Grid.d.ts @@ -18,6 +18,8 @@ type GridBaseProps = { wrap?: 'nowrap' | 'wrap' | 'wrap-reverse'; }; -declare const Grid: PolymorphicComponent; +declare const Grid: PolymorphicComponent< + GridBaseProps & React.DetailsHTMLAttributes +>; export default Grid; diff --git a/packages/pigment-css-react/src/Hidden.d.ts b/packages/pigment-css-react/src/Hidden.d.ts index 7305ce44..7946382a 100644 --- a/packages/pigment-css-react/src/Hidden.d.ts +++ b/packages/pigment-css-react/src/Hidden.d.ts @@ -13,6 +13,8 @@ interface HiddenBaseProps extends HiddenUp, HiddenDown { only?: Breakpoint | Breakpoint[]; } -declare const Hidden: PolymorphicComponent; +declare const Hidden: PolymorphicComponent< + HiddenBaseProps & React.DetailsHTMLAttributes +>; export default Hidden; diff --git a/packages/pigment-css-react/src/Stack.d.ts b/packages/pigment-css-react/src/Stack.d.ts index 15fe2c77..a4480514 100644 --- a/packages/pigment-css-react/src/Stack.d.ts +++ b/packages/pigment-css-react/src/Stack.d.ts @@ -12,6 +12,8 @@ type StackBaseProps = { className?: string; }; -declare const Stack: PolymorphicComponent; +declare const Stack: PolymorphicComponent< + StackBaseProps & React.DetailsHTMLAttributes +>; export default Stack; diff --git a/packages/pigment-css-react/src/index.spec.ts b/packages/pigment-css-react/src/index.spec.ts index 18a45c97..51bf77cc 100644 --- a/packages/pigment-css-react/src/index.spec.ts +++ b/packages/pigment-css-react/src/index.spec.ts @@ -44,12 +44,12 @@ styled.div(({ theme }) => ({ })); sx({ color: 'red' }); -sx(({ theme }) => ({ +sx((theme) => ({ color: theme.palette.primary.main, })); sx([ { color: 'red' }, - ({ theme }) => ({ + (theme) => ({ color: theme.palette.primary.main, }), ]); @@ -57,7 +57,7 @@ const foo = true; sx([ true && { color: 'red' }, foo - ? ({ theme }) => ({ + ? (theme) => ({ color: theme.palette.primary.main, }) : { diff --git a/packages/pigment-css-react/src/sx.d.ts b/packages/pigment-css-react/src/sx.d.ts index 8f49a4ae..d9a19a42 100644 --- a/packages/pigment-css-react/src/sx.d.ts +++ b/packages/pigment-css-react/src/sx.d.ts @@ -1,6 +1,9 @@ import type { CSSObjectNoCallback } from './base'; import type { ThemeArgs } from './theme'; -export type SxProp = CSSObjectNoCallback | ((themeArgs: ThemeArgs) => CSSObjectNoCallback); +export type SxProp = + | CSSObjectNoCallback + | ((themeArgs: ThemeArgs['theme']) => CSSObjectNoCallback) + | ReadonlyArray CSSObjectNoCallback)>; export default function sx(arg: SxProp | Array, componentClass?: string): string; diff --git a/packages/pigment-css-react/tests/Box.spec.tsx b/packages/pigment-css-react/tests/Box.spec.tsx index 8b28efe6..dd9ca54e 100644 --- a/packages/pigment-css-react/tests/Box.spec.tsx +++ b/packages/pigment-css-react/tests/Box.spec.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { Box } from '@pigment-css/react/Box'; +import Box from '../src/Box'; export function App() { return ( @@ -13,7 +13,7 @@ export function App() { Dialog {/* @ts-expect-error */} - + Dialog 2 diff --git a/packages/pigment-css-react/tests/Container.spec.tsx b/packages/pigment-css-react/tests/Container.spec.tsx new file mode 100644 index 00000000..52582cbf --- /dev/null +++ b/packages/pigment-css-react/tests/Container.spec.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import Container from '../src/Container'; + +; + +; diff --git a/packages/pigment-css-react/tests/Grid.spec.tsx b/packages/pigment-css-react/tests/Grid.spec.tsx new file mode 100644 index 00000000..0405ffb0 --- /dev/null +++ b/packages/pigment-css-react/tests/Grid.spec.tsx @@ -0,0 +1,6 @@ +import * as React from 'react'; +import Grid from '../src/Grid'; + +; + +; diff --git a/packages/pigment-css-react/tests/Hidden.spec.tsx b/packages/pigment-css-react/tests/Hidden.spec.tsx new file mode 100644 index 00000000..f3f20565 --- /dev/null +++ b/packages/pigment-css-react/tests/Hidden.spec.tsx @@ -0,0 +1,10 @@ +import * as React from 'react'; +import Hidden from '../src/Hidden'; + +; + +; diff --git a/packages/pigment-css-react/tests/Stack.spec.tsx b/packages/pigment-css-react/tests/Stack.spec.tsx index 92929c27..2d0f7e27 100644 --- a/packages/pigment-css-react/tests/Stack.spec.tsx +++ b/packages/pigment-css-react/tests/Stack.spec.tsx @@ -1,7 +1,12 @@ import * as React from 'react'; import Stack from '../src/Stack'; +; + +; + ({ + color: theme.palette.primary.main, +}); + +const sx3: SxProp = [{ color: 'red' }, { backgroundColor: 'blue', color: 'white' }]; + +const test = true; +const sx4: SxProp = [ + test ? { color: 'red' } : { backgroundColor: 'blue', color: 'white' }, + (theme) => ({ + border: `1px solid ${theme.palette.primary.main}`, + }), +];