Skip to content

Commit 35247bb

Browse files
committed
fix: typing in button
1 parent e21a3db commit 35247bb

File tree

2 files changed

+33
-8
lines changed

2 files changed

+33
-8
lines changed

example/storybook/stories/components/Wrapper.tsx

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ const myTheme = extendTheme({
2323
},
2424
components: {
2525
Button: {
26+
variants: {
27+
myBtn: {
28+
padding: 10,
29+
},
30+
myNewButton: ({ myPadding }: { myPadding: number }) => {
31+
return {
32+
padding: myPadding,
33+
};
34+
},
35+
},
36+
},
37+
Box: {
2638
variants: {
2739
myBtn: {
2840
padding: 10,
@@ -74,8 +86,14 @@ function MyWrapper({ children }: any) {
7486
export function RenderTestButton() {
7587
const [state, setState] = React.useState(1);
7688
return (
77-
<Box style={{ position: 'absolute', top: 10, left: 20 }}>
78-
<Button title={state.toString()} onPress={() => setState(state + 1)} />
89+
<Box style={{ position: 'absolute', top: 10, left: 20 }} m={2} bg="red.100">
90+
<Button
91+
title={state.toString()}
92+
onPress={() => setState(state + 1)}
93+
isCustom={true}
94+
variant="myNewButton"
95+
myPadding={1}
96+
/>
7997
</Box>
8098
);
8199
}

src/components/types/utils.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Leaves } from '../../theme/base/types';
2-
import type { ITheme } from '../../theme';
2+
import type { ComponentTheme, ITheme } from '../../theme';
33
import type { ResponsiveValue } from './responsiveValue';
44

55
export type VariantType<
@@ -52,8 +52,15 @@ type CustomPropType<T extends keyof ITheme['components'], Key> = Extract<
5252
Pick<ParameterType<T, Key>, keyof ParameterType<T, Key>>
5353
>;
5454

55-
export type CustomProps<T extends keyof ITheme['components']> =
56-
| CustomPropType<T, 'variants'>
57-
| CustomPropType<T, 'baseStyle'>
58-
| CustomPropType<T, 'sizes'>
59-
| CustomPropType<T, 'defaultProps'>;
55+
// export type CustomProps<T extends keyof ITheme['components']> =
56+
// | CustomPropType<T, 'variants'>
57+
// | CustomPropType<T, 'baseStyle'>
58+
// | CustomPropType<T, 'sizes'>
59+
// | CustomPropType<T, 'defaultProps'>;
60+
61+
export type CustomProps<T extends keyof ITheme['components']> = Exclude<
62+
{
63+
[Key in keyof ComponentTheme]: CustomPropType<T, Key>;
64+
}[keyof ComponentTheme],
65+
undefined
66+
>;

0 commit comments

Comments
 (0)