[CLAUDE] FE-User: redesign foundation "nâng màu giữ brand" — gradient/accent/badge bắt mắt hơn
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m24s
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m24s
Anh: giao diện đơn điệu, muốn đẹp + bắt mắt, font/màu đẹp hơn. Hướng anh chốt "nâng màu, giữ nền xanh brand" (eoffice trước). Foundation lan tỏa toàn app, KHÔNG đụng 65 trang lẻ. - index.css: +accent palette teal/amberx/violet/greenx (đặt tên né trùng Tailwind) + utilities .app-gradient-brand / .card-accent / .icon-chip / .stat-value; heading 600->700 đậm hơn; .label-eyebrow brand-600. Brand #1F7DC1 + Be Vietnam Pro GIỮ. - primitives: Button primary/danger gradient nổi bật; Input/Select/Textarea focus-glow mạnh hơn; Label brand-600; Dialog title-bar gradient. variant/size keys STABLE. - shell: Layout stripe dày hơn + logo cap; PageHeader title lớn/đậm + accent bar cao; TopBar gradient hairline; DataTable thead gradient brand chữ trắng. - Dashboard: KPI cards accent + icon chips. - color maps (contract/PE phase + PE display status): -700->-800 đậm chữ, phase nháp tint brand. Visual-only — props/handler/signature nguyên. Build PASS (tsc -b 0 error). a11y: contrast AA + prefers-reduced-motion. fe-admin mirror đợt sau. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@ -79,18 +79,19 @@ export function DataTable<T>({
|
||||
onRowClick,
|
||||
}: Props<T>) {
|
||||
return (
|
||||
// Density-first: rounded-lg + crisp border (no decorative shadow).
|
||||
// rounded-lg + crisp border (no decorative shadow).
|
||||
<div className="overflow-auto rounded-lg border border-slate-200 bg-white">
|
||||
<table className="w-full text-[12px]">
|
||||
{/* thead tint brand — đậm nhận diện hơn slate (anh yêu cầu "trang trí
|
||||
lên 1 tý" 06-11); brand-700 semibold uppercase 11px đạt AA trên nền nhạt. */}
|
||||
<thead className="sticky top-0 z-10 bg-brand-50/60 text-brand-700">
|
||||
<tr className="border-b border-brand-100">
|
||||
{/* 2026-06-16 anh "thead nền màu brand đậm hơn": solid brand gradient +
|
||||
white uppercase — đậm nhận diện rõ rệt (was pale brand-50/60). White
|
||||
on brand-600→700 = >7:1 contrast. */}
|
||||
<thead className="app-gradient-brand sticky top-0 z-10 text-white">
|
||||
<tr>
|
||||
{columns.map(c => (
|
||||
<th
|
||||
key={c.key}
|
||||
className={cn(
|
||||
'px-3 py-2 text-[11px] font-semibold uppercase tracking-wider',
|
||||
'px-3 py-2.5 text-[11px] font-bold uppercase tracking-wider',
|
||||
c.align === 'right' && 'text-right',
|
||||
c.align === 'center' && 'text-center',
|
||||
c.align !== 'right' && c.align !== 'center' && 'text-left',
|
||||
@ -100,7 +101,7 @@ export function DataTable<T>({
|
||||
{c.sortable && onSortChange ? (
|
||||
<button
|
||||
onClick={() => onSortChange(c.key, sortBy === c.key ? !sortDesc : false)}
|
||||
className="inline-flex items-center gap-1 hover:text-slate-900"
|
||||
className="inline-flex items-center gap-1 transition-colors hover:text-white/80"
|
||||
>
|
||||
{c.header}
|
||||
{sortBy === c.key && (sortDesc ? <ChevronDown className="h-3.5 w-3.5" /> : <ChevronUp className="h-3.5 w-3.5" />)}
|
||||
|
||||
Reference in New Issue
Block a user