Align admin theme with Tamagui v2
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-03 22:40:16 +01:00
parent 4f910b2d2a
commit 0535f63b40
7 changed files with 121 additions and 48 deletions

View File

@@ -0,0 +1,60 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { render, screen } from '@testing-library/react';
import { TamaguiProvider, Theme } from 'tamagui';
import { useTheme } from '@tamagui/core';
import tamaguiConfig from '../../../../../tamagui.config';
import { useAdminTheme } from '../theme';
const ThemeProbe = () => {
const adminTheme = useAdminTheme();
const theme = useTheme();
return (
<div
data-testid="probe"
data-admin-bg={adminTheme.background}
data-theme-bg={String(theme.background?.val ?? '')}
data-admin-text={adminTheme.text}
data-theme-text={String(theme.color?.val ?? '')}
/>
);
};
const renderWithTheme = (name: 'light' | 'dark') =>
render(
<TamaguiProvider config={tamaguiConfig} defaultTheme={name}>
<Theme name={name}>
<ThemeProbe />
</Theme>
</TamaguiProvider>
);
describe('useAdminTheme', () => {
it('tracks Tamagui theme values across light and dark modes', () => {
const { rerender } = renderWithTheme('light');
const probe = screen.getByTestId('probe');
const lightAdminBg = probe.getAttribute('data-admin-bg');
const lightThemeBg = probe.getAttribute('data-theme-bg');
const lightAdminText = probe.getAttribute('data-admin-text');
const lightThemeText = probe.getAttribute('data-theme-text');
expect(lightAdminBg).toBe(lightThemeBg);
expect(lightAdminText).toBe(lightThemeText);
rerender(
<TamaguiProvider config={tamaguiConfig} defaultTheme="dark">
<Theme name="dark">
<ThemeProbe />
</Theme>
</TamaguiProvider>
);
const darkProbe = screen.getByTestId('probe');
const darkAdminBg = darkProbe.getAttribute('data-admin-bg');
const darkThemeBg = darkProbe.getAttribute('data-theme-bg');
expect(darkAdminBg).toBe(darkThemeBg);
expect(darkAdminBg).not.toBe(lightAdminBg);
});
});