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];
};