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>
22 lines
846 B
TypeScript
22 lines
846 B
TypeScript
import { forwardRef, type InputHTMLAttributes } from 'react'
|
|
import { cn } from '@/lib/cn'
|
|
|
|
type Props = InputHTMLAttributes<HTMLInputElement>
|
|
|
|
export const Input = forwardRef<HTMLInputElement, Props>(({ className, ...props }, ref) => (
|
|
<input
|
|
ref={ref}
|
|
className={cn(
|
|
// Compact (~34px) rounded-lg. 2026-06-16: stronger brand focus glow
|
|
// (border brand-500 + ring /25) so the active field reads clearly.
|
|
'h-8 w-full rounded-lg border border-slate-300 bg-white px-3 py-1.5 text-sm text-slate-900',
|
|
'placeholder:text-slate-400',
|
|
'transition-[border-color,box-shadow] focus-visible:border-brand-500 focus-visible:ring-2 focus-visible:ring-brand-500/25',
|
|
'disabled:cursor-not-allowed disabled:bg-slate-50 disabled:opacity-70',
|
|
className,
|
|
)}
|
|
{...props}
|
|
/>
|
|
))
|
|
Input.displayName = 'Input'
|