diff --git a/semcore/accordion/src/Accordion.internal.type.ts b/semcore/accordion/src/Accordion.internal.type.ts deleted file mode 100644 index f371955070..0000000000 --- a/semcore/accordion/src/Accordion.internal.type.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { AccordionItemProps, AccordionProps } from './Accordion.type'; - -export type AccordionItemPropsInternal = { - use: AccordionProps['use']; - $handleInteraction: (value: AccordionItemProps['value']) => void; -}; - -export type AccordionCollapsePropsInternal = { - selected: boolean; -}; - -export type AccordionItemTogglePropsInternal = { - use: AccordionProps['use']; -}; diff --git a/semcore/accordion/src/Accordion.tsx b/semcore/accordion/src/Accordion.tsx index 6b8603621b..4cba1ac64e 100644 --- a/semcore/accordion/src/Accordion.tsx +++ b/semcore/accordion/src/Accordion.tsx @@ -8,11 +8,6 @@ import ChevronRightM from '@semcore/icon/ChevronRight/m'; import { Text } from '@semcore/typography'; import React from 'react'; -import type { - AccordionCollapsePropsInternal, - AccordionItemPropsInternal, - AccordionItemTogglePropsInternal, -} from './Accordion.internal.type'; import type { AccordionCollapseProps, AccordionComponent, @@ -82,8 +77,12 @@ class RootAccordion extends Component; } } - -export class RootItem extends Component { +export class RootItem extends Component< + AccordionItemProps, + typeof RootItem.enhance, + {}, + Intergalactic.InternalTypings.InferPropsFromRoot +> { static displayName = 'Item'; static style = style; static enhance = [uniqueIDEnhancement()] as const; @@ -142,7 +141,12 @@ export class RootItem extends Component { +class Toggle extends Component< + AccordionItemToggleProps, + never, + {}, + Intergalactic.InternalTypings.InferPropsFromRoot +> { toggleRef = React.createRef(); handleKeyDown = (event: React.KeyboardEvent) => { @@ -163,13 +167,7 @@ class Toggle extends Component, + , ); } } @@ -190,7 +188,7 @@ function ToggleButton(props: IRootComponentProps) { ); } -function Collapse(props: AccordionCollapseProps & AccordionCollapsePropsInternal) { +function Collapse(props: AccordionCollapseProps & Intergalactic.InternalTypings.InferPropsFromRoot) { const { selected } = props; const visible = selected; diff --git a/semcore/core/src/core-types/Component.ts b/semcore/core/src/core-types/Component.ts index b625ae1a7f..5274afc5a5 100644 --- a/semcore/core/src/core-types/Component.ts +++ b/semcore/core/src/core-types/Component.ts @@ -112,6 +112,10 @@ export namespace Intergalactic { /** @private */ // eslint-disable-next-line @typescript-eslint/no-namespace export namespace InternalTypings { + export type InferPropsFromRoot< + Root extends new (...args: any) => any, + Child extends string, + > = InstanceType[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record; export type PartialRequired = Omit & { [key in K]-?: T[key]; };