feat(ui): implement 'Twilight Velvet' dark theme and fix visibility issues

- Add 'Twilight Velvet' color palette to globals.css with OKLCH values
- Update SettingsPage headers, cards, and dialogs to use semantic theme variables
- Update HistoryCard, HistoryFeed, and DraftContent to support dark mode
- Update ProviderSelector and ProviderList to use custom card background (#2A2A3D)
- Add ThemeToggle component with improved visibility
- Ensure consistent use of 'bg-card', 'text-foreground', and 'text-muted-foreground'
This commit is contained in:
Max
2026-01-27 11:03:55 +07:00
parent e9e6fadb1d
commit 9b79856827
49 changed files with 2411 additions and 878 deletions

View File

@@ -1,8 +1,12 @@
import { test as base } from '@playwright/test';
import { UserFactory } from './factories/user-factory';
import { test as base, BrowserContext } from '@playwright/test';
import { UserFactory } from '../factories/user.factory';
type TestFixtures = {
userFactory: UserFactory;
offlineControl: {
goOffline: (context: BrowserContext) => Promise<void>;
goOnline: (context: BrowserContext) => Promise<void>;
};
};
export const test = base.extend<TestFixtures>({
@@ -11,6 +15,24 @@ export const test = base.extend<TestFixtures>({
await use(factory);
await factory.cleanup();
},
offlineControl: async ({ }, use) => {
const offlineFixture = {
goOffline: async (context: BrowserContext) => {
await context.setOffline(true);
for (const page of context.pages()) {
// Dispatch event to simulate navigator.onLine behavior changes in app
await page.evaluate(() => window.dispatchEvent(new Event('offline'))).catch(() => { });
}
},
goOnline: async (context: BrowserContext) => {
await context.setOffline(false);
for (const page of context.pages()) {
await page.evaluate(() => window.dispatchEvent(new Event('online'))).catch(() => { });
}
},
};
await use(offlineFixture);
},
});
export { expect } from '@playwright/test';