refactor: update UserDetailPage styles and introduce avatar gradient utility
- Refactored role metadata styles in UserDetailPage for consistency with design tokens. - Replaced hardcoded avatar colors with a utility function to generate gradients based on user ID. - Improved InfoCard component styles for better hover effects and accessibility. - Removed deprecated color classes and adjusted background gradients for various components. - Updated theme token tests to reflect the removal of deferred files and ensure compliance with design standards. - Added new avatarColors utility file to manage avatar gradient definitions.
This commit is contained in:
@@ -9,18 +9,11 @@ import { describe, expect, it } from 'vitest';
|
||||
|
||||
const ROOT = join(__dirname, '..');
|
||||
|
||||
/** فاز ۳ — هنوز جفت slate/gray + dark: دارند؛ کار میکنند ولی از design-system منحرفاند. */
|
||||
const DEFERRED = [
|
||||
'pages/DoctorDetailPage.tsx',
|
||||
'pages/UserDetailPage.tsx',
|
||||
'components/schedule/ScheduleSection.tsx',
|
||||
];
|
||||
|
||||
/** رنگهای عمداً ثابت: دادهٔ کاربر یا پوششی که در هر دو تم یکسان است. */
|
||||
const INTENTIONAL = [
|
||||
'pages/TagsSettingsPage.tsx', // TAG_COLORS — پالت انتخابی کاربر برای برچسب
|
||||
'components/ImageCropModal.tsx', // bg-black/50 — اسکریم مودال، مثل .overlay
|
||||
'stores/uiStore.ts', // BrandFixed — هیوی نارنجی عمداً hex ثابت است
|
||||
'lib/avatarColors.ts', // گرادیان تزئینی آواتار، در هر دو تم یکسان
|
||||
];
|
||||
|
||||
const HEX = /#[0-9a-fA-F]{3,8}\b/;
|
||||
@@ -42,12 +35,16 @@ function sourceFiles(): string[] {
|
||||
return out;
|
||||
}
|
||||
|
||||
/** کامنتها و fallbackهای `var(--x, #hex)` رنگِ رندرشده نیستند. */
|
||||
/**
|
||||
* کامنتها و fallbackهای `var(--x, #hex)` رنگِ رندرشده نیستند؛ `bg-black/NN` هم
|
||||
* اسکریم است و عمداً در هر دو تم یکسان میماند (مثل `.overlay` در styles.css).
|
||||
*/
|
||||
function strip(src: string): string {
|
||||
return src
|
||||
.replace(/\/\*[\s\S]*?\*\//g, '')
|
||||
.replace(/(^|[^:])\/\/.*$/gm, '$1')
|
||||
.replace(/var\(\s*--[a-z0-9-]+\s*,[^)]*\)/gi, 'var(--token)');
|
||||
.replace(/var\(\s*--[a-z0-9-]+\s*,[^)]*\)/gi, 'var(--token)')
|
||||
.replace(/\bbg-black\/\d+/g, '');
|
||||
}
|
||||
|
||||
describe('theme tokens', () => {
|
||||
@@ -69,14 +66,14 @@ describe('theme tokens', () => {
|
||||
|
||||
it('فایلهای پاکشده hex ثابت ندارند', () => {
|
||||
const offenders = files
|
||||
.filter((f) => ![...DEFERRED, ...INTENTIONAL].includes(f))
|
||||
.filter((f) => !INTENTIONAL.includes(f))
|
||||
.filter((f) => HEX.test(strip(readFileSync(join(ROOT, f), 'utf8'))));
|
||||
expect(offenders).toEqual([]);
|
||||
});
|
||||
|
||||
it('فایلهای پاکشده کلاس پالت Tailwind ندارند', () => {
|
||||
const offenders = files
|
||||
.filter((f) => ![...DEFERRED, ...INTENTIONAL].includes(f))
|
||||
.filter((f) => !INTENTIONAL.includes(f))
|
||||
.filter((f) => PALETTE_UTIL.test(strip(readFileSync(join(ROOT, f), 'utf8'))));
|
||||
expect(offenders).toEqual([]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user