Replace entire Barclays colour palette (navy #1A2142, lime #C3FB5A, violet #7A0FF9) with Oliver brand tokens: black #1A1A1A, gold #FFCB05, orange #FF5C00, azure #0487B6, sky #5DF5EA, grey #EFEFEF, green #09821F. - Switch font from Inter/Barclays Effra to Arial (system font) - Add new Oliver logo asset (BAR-ModComms-logo-v4.png) - Sidebar: black background, new logo, azure active state - Hero: orange "Intelligent Review" text, hide AI-Powered tagline - Hide ChecksOverview on Home page per Oliver design - Toast notification: orange background with black text - All tables: sky headers, alternating white/grey rows - Campaign badges: gold "In Progress", green "Completed" - Analytics: grey KPI cards, sky accent on Key Insight, oliver trend colours - All buttons: azure fill, pill-shaped (rounded-full) - All tabs/toggles/dropdowns: azure accent colour - Update HTML title to "Mod Comms - Intelligent Review" - Default border radius set to 10px Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
import React, { useState, useEffect } from 'react';
|
|
import apiService from '../services/apiService';
|
|
import type { AgencyResponse } from '../services/apiService';
|
|
import { ChevronDownIcon } from './icons/ChevronDownIcon';
|
|
|
|
interface AgencyFilterBarProps {
|
|
selectedAgencyId: string | null;
|
|
onAgencyChange: (agencyId: string | null) => void;
|
|
}
|
|
|
|
export const AgencyFilterBar: React.FC<AgencyFilterBarProps> = ({ selectedAgencyId, onAgencyChange }) => {
|
|
const [agencies, setAgencies] = useState<AgencyResponse[]>([]);
|
|
|
|
useEffect(() => {
|
|
const loadAgencies = async () => {
|
|
try {
|
|
const data = await apiService.getAgencies();
|
|
setAgencies(data);
|
|
} catch (err) {
|
|
console.error('Failed to load agencies for filter:', err);
|
|
}
|
|
};
|
|
loadAgencies();
|
|
}, []);
|
|
|
|
return (
|
|
<div className="bg-white border-b border-grey-300 px-6 py-3 flex items-center gap-3 flex-shrink-0">
|
|
<label className="text-sm font-medium text-oliver-black whitespace-nowrap">
|
|
Filter by Agency:
|
|
</label>
|
|
<div className="relative max-w-xs">
|
|
<select
|
|
value={selectedAgencyId || ''}
|
|
onChange={(e) => onAgencyChange(e.target.value || null)}
|
|
className="bg-white border-2 border-oliver-azure text-oliver-black py-1.5 pl-3 pr-8 rounded-[10px] text-sm focus:outline-none focus:ring-2 focus:ring-oliver-azure appearance-none min-w-[200px]"
|
|
>
|
|
<option value="">All Agencies</option>
|
|
{agencies.map(a => (
|
|
<option key={a.id} value={a.id}>{a.name}</option>
|
|
))}
|
|
</select>
|
|
<ChevronDownIcon className="absolute right-2 top-1/2 -translate-y-1/2 h-3 w-3 text-oliver-azure pointer-events-none" />
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|