diff --git a/packages/component-generator/src/createComponents.tsx b/packages/component-generator/src/createComponents.tsx index e8049b3..f38c2b4 100644 --- a/packages/component-generator/src/createComponents.tsx +++ b/packages/component-generator/src/createComponents.tsx @@ -32,7 +32,7 @@ export function createComponents< if (hasKey(settings, prop)) { dict[prop] = isConfigBase ? generateComponent(base, setting) - : createFC(base, setting); + : createFC(base, setting); dict[prop].displayName = prop; } return dict; @@ -45,12 +45,17 @@ export function createComponents< export function createBaseComponent< Config = any, ThemeType = any, - Props = Record + Props = Record, + Element = HTMLDivElement >(base): ComponentsRecord { const dict = {} as ComponentsRecord; if (isPlainObject(base)) { - dict.Base = createStyledComponent(base); + dict.Base = createStyledComponent< + Props, + ThemeType, + AllHTMLAttributes + >(base); } return dict; @@ -61,12 +66,12 @@ export function generateComponent< Props = Record, Element = HTMLDivElement >(base, setting) { - return createStyledComponent({ + return createStyledComponent>({ ...base, styles: { ...base.styles, ...setting }, attrs: { ...base.attrs, ...setting.attrs } || {}, element: !!setting.as ? setting.as : base.element - } as StyledComponentConfig, AllHTMLAttributes, ThemeType>); + } as StyledComponentConfig, ThemeType, AllHTMLAttributes>); } /* eslint-disable @typescript-eslint/no-explicit-any */ diff --git a/packages/component-generator/src/typings.ts b/packages/component-generator/src/typings.ts index 6eafce5..a3aad0b 100644 --- a/packages/component-generator/src/typings.ts +++ b/packages/component-generator/src/typings.ts @@ -60,9 +60,7 @@ export type CSSPseudos = { [K in CSS.Pseudos]?: CSSObjectWithScale }; export type StyledSystemCSSObject = CSSObjectWithScale & CSSPseudos; export type ComponentsRecord = { - [key in keyof Dict | 'Base']: React.FC< - Props & BaseProps & Variant - >; + [key in keyof Dict | 'Base']: React.FC>; }; export type Settings = { diff --git a/packages/text-input/index.stories.tsx b/packages/text-input/index.stories.tsx index 763cb54..6c2a650 100644 --- a/packages/text-input/index.stories.tsx +++ b/packages/text-input/index.stories.tsx @@ -23,14 +23,25 @@ const inputs = { } }; +type BasicUsageProps = { + disabled?: boolean; + placeholder?: string; + onBlur?: () => void; +}; + const { Base: InputText, InputSearch, InputUrl } = createTextInputs< - typeof inputs.components + typeof inputs.components, + BasicUsageProps >(inputs.base, inputs.components); export function BasicUsage() { + const onBlur = (text: string) => () => { + console.log('Blur', text); + }; + return ( <> - + diff --git a/packages/text-input/src/createTextInputs.tsx b/packages/text-input/src/createTextInputs.tsx index 0647165..1854d95 100644 --- a/packages/text-input/src/createTextInputs.tsx +++ b/packages/text-input/src/createTextInputs.tsx @@ -1,9 +1,9 @@ -import React, { AllHTMLAttributes } from 'react'; +import { AllHTMLAttributes } from 'react'; import { createComponents, + ComponentsRecord, Settings, - StyledComponentConfig, - Variant + StyledComponentConfig } from '@artifak/component-generator'; /* eslint-disable @typescript-eslint/no-explicit-any */ @@ -15,7 +15,7 @@ export function createTextInputs< >( base: StyledComponentConfig>, settings: Settings -): { [key in keyof Config | 'Base']: React.FC> } { +): ComponentsRecord { return createComponents( { element: 'input',