diff --git a/src/client/components/CandidateCard.tsx b/src/client/components/CandidateCard.tsx index c35efa4..86df439 100644 --- a/src/client/components/CandidateCard.tsx +++ b/src/client/components/CandidateCard.tsx @@ -46,7 +46,7 @@ export function CandidateCard({ openExternalLink(productUrl); } }} - className="absolute top-2 right-2 z-10 w-6 h-6 flex items-center justify-center rounded-full bg-gray-100/80 text-gray-400 hover:bg-blue-100 hover:text-blue-500 opacity-0 group-hover:opacity-100 transition-all cursor-pointer" + className="absolute top-2 right-2 z-10 w-6 h-6 flex items-center justify-center rounded-full bg-gray-100/80 text-gray-400 hover:bg-gray-200 hover:text-gray-600 opacity-0 group-hover:opacity-100 transition-all cursor-pointer" title="Open product link" >
{weightGrams != null && ( - + {formatWeight(weightGrams)} )} {priceCents != null && ( - + {formatPrice(priceCents)} )} @@ -109,7 +109,7 @@ export function CandidateCard({ diff --git a/src/client/components/CandidateForm.tsx b/src/client/components/CandidateForm.tsx index 6a2ac11..a96077f 100644 --- a/src/client/components/CandidateForm.tsx +++ b/src/client/components/CandidateForm.tsx @@ -152,7 +152,7 @@ export function CandidateForm({ type="text" value={form.name} onChange={(e) => setForm((f) => ({ ...f, name: e.target.value }))} - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent" placeholder="e.g. Osprey Talon 22" /> {errors.name && ( @@ -177,7 +177,7 @@ export function CandidateForm({ onChange={(e) => setForm((f) => ({ ...f, weightGrams: e.target.value })) } - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent" placeholder="e.g. 680" /> {errors.weightGrams && ( @@ -202,7 +202,7 @@ export function CandidateForm({ onChange={(e) => setForm((f) => ({ ...f, priceDollars: e.target.value })) } - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent" placeholder="e.g. 129.99" /> {errors.priceDollars && ( @@ -234,7 +234,7 @@ export function CandidateForm({ value={form.notes} onChange={(e) => setForm((f) => ({ ...f, notes: e.target.value }))} rows={3} - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent resize-none" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent resize-none" placeholder="Any additional notes..." />
@@ -254,7 +254,7 @@ export function CandidateForm({ onChange={(e) => setForm((f) => ({ ...f, productUrl: e.target.value })) } - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent" placeholder="https://..." /> {errors.productUrl && ( @@ -267,7 +267,7 @@ export function CandidateForm({ diff --git a/src/client/components/CategoryPicker.tsx b/src/client/components/CategoryPicker.tsx index 9d60f7a..095493c 100644 --- a/src/client/components/CategoryPicker.tsx +++ b/src/client/components/CategoryPicker.tsx @@ -169,7 +169,7 @@ export function CategoryPicker({ value, onChange }: CategoryPickerProps) { setInputValue(""); }} onKeyDown={handleKeyDown} - className={`w-full py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent ${ + className={`w-full py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent ${ !isOpen && selectedCategory ? "pl-8 pr-3" : "px-3" }`} /> @@ -187,7 +187,7 @@ export function CategoryPicker({ value, onChange }: CategoryPickerProps) { aria-selected={cat.id === value} className={`px-3 py-2 text-sm cursor-pointer flex items-center gap-1.5 ${ i === highlightIndex - ? "bg-blue-50 text-blue-900" + ? "bg-gray-100 text-gray-900" : "hover:bg-gray-50" } ${cat.id === value ? "font-medium" : ""}`} onClick={() => handleSelect(cat.id)} @@ -207,7 +207,7 @@ export function CategoryPicker({ value, onChange }: CategoryPickerProps) { aria-selected={false} className={`px-3 py-2 text-sm cursor-pointer border-t border-gray-100 ${ highlightIndex === filtered.length - ? "bg-blue-50 text-blue-900" + ? "bg-gray-100 text-gray-900" : "hover:bg-gray-50 text-gray-600" }`} onClick={handleStartCreate} @@ -231,7 +231,7 @@ export function CategoryPicker({ value, onChange }: CategoryPickerProps) { type="button" onClick={handleConfirmCreate} disabled={createCategory.isPending} - className="text-xs font-medium text-blue-600 hover:text-blue-800 disabled:opacity-50" + className="text-xs font-medium text-gray-600 hover:text-gray-800 disabled:opacity-50" > {createCategory.isPending ? "..." : "Create"} diff --git a/src/client/components/CreateThreadModal.tsx b/src/client/components/CreateThreadModal.tsx index 1933ce6..8c1c058 100644 --- a/src/client/components/CreateThreadModal.tsx +++ b/src/client/components/CreateThreadModal.tsx @@ -93,7 +93,7 @@ export function CreateThreadModal() { value={name} onChange={(e) => setName(e.target.value)} placeholder="e.g. Lightweight sleeping bag" - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent" /> @@ -108,7 +108,7 @@ export function CreateThreadModal() { id="thread-category" value={categoryId ?? ""} onChange={(e) => setCategoryId(Number(e.target.value))} - className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent bg-white" + className="w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-gray-400 focus:border-transparent bg-white" > {categories?.map((cat) => (