modcomms/frontend/components/AgencyFilterBar.tsx
Vadym Samoilenko 4302b9391a Restyle full application from Barclays to Oliver Agency brand
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>
2026-03-03 10:16:26 +00:00

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>
);
};