diff --git a/apps/admin/src/components/PublicShell.test.ts b/apps/admin/src/components/PublicShell.test.ts index 25acbbd..9e5828f 100644 --- a/apps/admin/src/components/PublicShell.test.ts +++ b/apps/admin/src/components/PublicShell.test.ts @@ -6,7 +6,9 @@ vi.mock('@/components/PublicFooter', () => ({ default: function MockAdminFooter( import PublicShell from './PublicShell' -function childTypes(node: React.ReactElement): string[] { +type WithChildren = { children?: React.ReactNode } + +function childTypes(node: React.ReactElement): string[] { return React.Children.toArray(node.props.children).filter(isValidElement).map((child) => { const type = child.type as any if (typeof type === 'string') return type diff --git a/apps/dashboard/src/app/public-auth-pages.test.ts b/apps/dashboard/src/app/public-auth-pages.test.ts index 7ad59c2..7efd562 100644 --- a/apps/dashboard/src/app/public-auth-pages.test.ts +++ b/apps/dashboard/src/app/public-auth-pages.test.ts @@ -19,10 +19,12 @@ function collectText(node: unknown): string[] { return []; } +type ElementWithHref = { children?: React.ReactNode; href?: string; embedded?: boolean } + function findElement( node: unknown, - predicate: (element: React.ReactElement) => boolean, -): React.ReactElement | null { + predicate: (element: React.ReactElement) => boolean, +): React.ReactElement | null { if (node === null || node === undefined || typeof node === "boolean") return null; if (Array.isArray(node)) { @@ -32,7 +34,7 @@ function findElement( } return null; } - if (!isValidElement<{ children?: React.ReactNode }>(node)) return null; + if (!isValidElement(node)) return null; if (predicate(node)) return node; return findElement(node.props.children, predicate); } diff --git a/apps/dashboard/src/components/layout/PublicShell.test.ts b/apps/dashboard/src/components/layout/PublicShell.test.ts index b353672..4ee4234 100644 --- a/apps/dashboard/src/components/layout/PublicShell.test.ts +++ b/apps/dashboard/src/components/layout/PublicShell.test.ts @@ -6,7 +6,9 @@ vi.mock('@/components/layout/PublicFooter', () => ({ default: function MockPubli import PublicShell from './PublicShell' -function childTypes(node: React.ReactElement): string[] { +type WithChildren = { children?: React.ReactNode } + +function childTypes(node: React.ReactElement): string[] { return React.Children.toArray(node.props.children).filter(isValidElement).map((child) => { const type = child.type as any if (typeof type === 'string') return type @@ -26,7 +28,7 @@ describe('dashboard PublicShell', () => { const shell = PublicShell({ embedded: true, children: React.createElement('main', { id: 'content' }) }) expect(childTypes(shell)).toEqual(['div']) - const contentWrapper = React.Children.toArray(shell.props.children).find(isValidElement) as React.ReactElement + const contentWrapper = React.Children.toArray(shell.props.children).find(isValidElement) as React.ReactElement expect(contentWrapper.props.children).toEqual(React.createElement('main', { id: 'content' })) }) }) diff --git a/apps/dashboard/src/components/ui/StatCard.test.ts b/apps/dashboard/src/components/ui/StatCard.test.ts index 9cac3a6..a0f3a7e 100644 --- a/apps/dashboard/src/components/ui/StatCard.test.ts +++ b/apps/dashboard/src/components/ui/StatCard.test.ts @@ -11,10 +11,12 @@ function collectText(node: unknown): string[] { return [] } -function collectElements(node: unknown): React.ReactElement[] { +type ElementWithClass = { children?: React.ReactNode; className?: string } + +function collectElements(node: unknown): React.ReactElement[] { if (node === null || node === undefined || typeof node === 'boolean') return [] if (Array.isArray(node)) return node.flatMap(collectElements) - if (!isValidElement<{ children?: React.ReactNode }>(node)) return [] + if (!isValidElement(node)) return [] return [node, ...collectElements(node.props.children)] }