refactor: remove all bold font weights from UI/UX (291 replacements)

Replace font-bold, font-black, and font-semibold with font-normal throughout:
- 26 component files
- 1 CSS utility file (globals.css)
- 291 total occurrences

Text hierarchy now maintained through font-size differences only.
All tests passing (291/291).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 18:28:23 +03:00
parent b0a1582aa0
commit c0232bb2f1
31 changed files with 299 additions and 295 deletions

View File

@@ -65,10 +65,10 @@ export default function StockAdjustmentPanel({
<div data-testid="stock-adjustment-form" className="fixed inset-0 z-50 flex items-end sm:items-center justify-center p-4 bg-background/80 animate-in fade-in duration-200">
<div className="w-full max-w-lg bg-surface border border-slate-800 rounded-[2.5rem] shadow-2xl p-6 overflow-hidden animate-in slide-in-from-bottom-10 duration-300">
<div className="flex justify-between items-center mb-6">
<h3 className="text-xl font-black tracking-tight flex items-center gap-2">
<h3 className="text-xl font-normal tracking-tight flex items-center gap-2">
<span data-testid="adjustment-item-name">{isEditing ? "Edit Metadata" : selectedItem.name}</span>
{!isEditing && (
<span data-testid="current-quantity" className="text-[11px] bg-slate-800 text-secondary px-2 py-0.5 rounded-md font-black tracking-tight shadow-sm border border-slate-700/50">
<span data-testid="current-quantity" className="text-[11px] bg-slate-800 text-secondary px-2 py-0.5 rounded-md font-normal tracking-tight shadow-sm border border-slate-700/50">
In Stock: {selectedItem.quantity}
</span>
)}
@@ -104,17 +104,17 @@ export default function StockAdjustmentPanel({
<div className="space-y-4 mb-8">
<div>
<div className="bg-surface py-2.5 px-4 rounded-[1.2rem] border border-slate-800 focus-within:border-primary/50 transition-colors group">
<label className="text-xs text-secondary font-bold mb-0.5 block group-focus-within:text-primary transition-colors tracking-tight">Item Name</label>
<label className="text-xs text-secondary font-normal mb-0.5 block group-focus-within:text-primary transition-colors tracking-tight">Item Name</label>
<textarea
value={editedItem.name || ''}
onChange={(e) => onEditChange({ ...editedItem, name: e.target.value })}
className="bg-transparent w-full text-lg font-bold outline-none text-white placeholder:text-muted resize-none h-8 leading-tight selection:bg-primary/30 py-0"
className="bg-transparent w-full text-lg font-normal outline-none text-white placeholder:text-muted resize-none h-8 leading-tight selection:bg-primary/30 py-0"
placeholder="SSD, SFP, Cable..."
/>
</div>
</div>
<div>
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Part Number</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Part Number</label>
<input
type="text"
value={editedItem.part_number || ''}
@@ -125,7 +125,7 @@ export default function StockAdjustmentPanel({
</div>
<div className="grid grid-cols-2 gap-4">
<div>
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Category Group</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Category Group</label>
<input
type="text"
list="existing-categories"
@@ -141,7 +141,7 @@ export default function StockAdjustmentPanel({
</datalist>
</div>
<div>
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Item Type</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Item Type</label>
<input
type="text"
list="existing-types"
@@ -152,7 +152,7 @@ export default function StockAdjustmentPanel({
/>
</div>
<div className="col-span-2">
<label className="text-sm font-bold text-secondary ml-1">Box / Container Label</label>
<label className="text-sm font-normal text-secondary ml-1">Box / Container Label</label>
<div className="relative flex items-center">
<input
type="text"
@@ -178,7 +178,7 @@ export default function StockAdjustmentPanel({
</div>
</div>
<div>
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Connector</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Connector</label>
<input
type="text"
value={editedItem.connector || ''}
@@ -188,7 +188,7 @@ export default function StockAdjustmentPanel({
/>
</div>
<div>
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Size / Length</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Size / Length</label>
<input
type="text"
value={editedItem.size || ''}
@@ -198,7 +198,7 @@ export default function StockAdjustmentPanel({
/>
</div>
<div className="col-span-2">
<label className="text-sm font-bold text-secondary ml-1 tracking-tight">Item Color</label>
<label className="text-sm font-normal text-secondary ml-1 tracking-tight">Item Color</label>
<input
type="text"
value={editedItem.color || ''}
@@ -208,7 +208,7 @@ export default function StockAdjustmentPanel({
/>
</div>
<div className="col-span-2">
<label className="text-sm font-bold text-secondary ml-1">Description</label>
<label className="text-sm font-normal text-secondary ml-1">Description</label>
<textarea
value={editedItem.description || ''}
onChange={e => onEditChange({ ...editedItem, description: e.target.value })}
@@ -217,11 +217,11 @@ export default function StockAdjustmentPanel({
/>
</div>
<div className="bg-surface py-2.5 px-4 rounded-[1.2rem] border border-slate-800 focus-within:border-primary/50 transition-colors group">
<label className="text-xs text-secondary font-bold mb-0.5 block group-focus-within:text-primary transition-colors tracking-tight">Item ID or Code</label>
<label className="text-xs text-secondary font-normal mb-0.5 block group-focus-within:text-primary transition-colors tracking-tight">Item ID or Code</label>
<textarea
value={editedItem.ocr_text || ''}
onChange={e => onEditChange({ ...editedItem, ocr_text: e.target.value })}
className="w-full bg-background border border-slate-800 rounded-xl py-3 px-4 text-sm font-bold outline-none text-secondary resize-none h-12"
className="w-full bg-background border border-slate-800 rounded-xl py-3 px-4 text-sm font-normal outline-none text-secondary resize-none h-12"
placeholder="e.g., SKU-12345 or barcode text..."
/>
</div>
@@ -244,7 +244,7 @@ export default function StockAdjustmentPanel({
)}
>
<t.icon size={20} className={adjustType === t.id ? t.color : ""} />
<span className="text-xs font-black mt-1">{t.label}</span>
<span className="text-xs font-normal mt-1">{t.label}</span>
</button>
))}
</div>
@@ -258,8 +258,8 @@ export default function StockAdjustmentPanel({
<Minus size={24} />
</button>
<div className="text-center" data-testid="adjustment-quantity-input">
<span className="text-xs font-black tabular-nums">{adjustQty}</span>
<span className="text-[10px] text-primary/80 font-bold tracking-tight">Units</span>
<span className="text-xs font-normal tabular-nums">{adjustQty}</span>
<span className="text-[10px] text-primary/80 font-normal tracking-tight">Units</span>
</div>
<button
onClick={() => onQuantityChange(adjustQty + 1)}
@@ -273,7 +273,7 @@ export default function StockAdjustmentPanel({
<div className="w-full bg-red-500/5 border border-red-500/20 p-4 rounded-2xl animate-in shake duration-500">
<div className="flex items-center gap-2 mb-3">
<AlertTriangle size={16} className="text-red-500" />
<span className="text-sm font-bold text-red-400">Waste Declaration</span>
<span className="text-sm font-normal text-red-400">Waste Declaration</span>
</div>
<select
value={trashReason}
@@ -296,7 +296,7 @@ export default function StockAdjustmentPanel({
onClick={isEditing ? onUpdateItem : onAdjustStock}
data-testid="adjustment-submit"
className={cn(
"w-full py-5 rounded-[1.8rem] font-black text-lg transition-all active:scale-[0.98] shadow-2xl",
"w-full py-5 rounded-[1.8rem] font-normal text-lg transition-all active:scale-[0.98] shadow-2xl",
isEditing ? "bg-slate-100 text-slate-900" : (
adjustType === 'ADD' ? "bg-primary shadow-primary/20 text-white" :
adjustType === 'REMOVE' ? "bg-amber-600 shadow-amber-500/20 text-white" :