Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,453 changes: 223 additions & 1,230 deletions frontend/package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion frontend/src/components/AppLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const AppLayout: React.FC = () => {
>
{/* Logo */}
<NavLink className="flex items-center gap-2.5" to="/">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[0_0_20px_rgba(74,240,184,0.3)] bg-linear-to-br from-(--accent) to-(--accent2)">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[var(--accent-glow)] bg-linear-to-br from-(--accent) to-(--accent2)">
P
</div>
<span className="text-lg font-extrabold tracking-tight">
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/components/AppNav.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -200,8 +200,8 @@ const AppNav: React.FC = () => {
className={({ isActive }) =>
`flex items-center gap-1 px-3 py-1.5 rounded-lg text-[11px] font-mono tracking-wide border transition ${
isActive
? 'text-(--accent2) bg-[rgba(124,111,247,0.06)] border-[rgba(124,111,247,0.25)]'
: 'text-(--accent2) bg-[rgba(124,111,247,0.06)] border-[rgba(124,111,247,0.25)] hover:bg-[rgba(124,111,247,0.12)]'
? 'text-(--accent2) bg-[var(--accent2-alpha-06)] border-[var(--accent2-alpha-25)]'
: 'text-(--accent2) bg-[var(--accent2-alpha-06)] border-[var(--accent2-alpha-25)] hover:bg-[var(--accent2-alpha-12)]'
}`
}
onClick={() => setMobileOpen(false)}
Expand Down Expand Up @@ -269,7 +269,7 @@ const AppNav: React.FC = () => {
{/* Mobile menu header */}
<div className="flex items-center justify-between p-4 border-b">
<div className="flex items-center gap-2">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[0_0_20px_rgba(74,240,184,0.3)] bg-linear-to-br from-(--accent) to-(--accent2)">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[var(--accent-glow)] bg-linear-to-br from-(--accent) to-(--accent2)">
P
</div>
<span className="text-lg font-extrabold tracking-tight">
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/DashboardSidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export const DashboardSidebar: React.FC<DashboardSidebarProps> = ({
return (
<aside className="h-full w-64 border-r border-(--border) bg-(--surface) flex flex-col">
<div className="p-6 flex items-center gap-3">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[0_0_20px_rgba(74,240,184,0.3)] bg-linear-to-br from-(--accent) to-(--accent2)">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[var(--accent-glow)] bg-linear-to-br from-(--accent) to-(--accent2)">
P
</div>
<span className="text-xl font-extrabold tracking-tight">
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/components/EmployerLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ export const EmployerLayout: React.FC = () => {
{/* Mobile Top Bar */}
<header className="lg:hidden h-16 px-6 border-b border-(--border) bg-(--bg)/80 backdrop-blur-xl flex items-center justify-between sticky top-0 z-40">
<div className="flex items-center gap-3">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[0_0_20px_rgba(74,240,184,0.3)] bg-linear-to-br from-(--accent) to-(--accent2)">
<div className="w-8 h-8 rounded-lg grid place-items-center font-extrabold text-black text-sm tracking-tight shadow-[var(--accent-glow)] bg-linear-to-br from-(--accent) to-(--accent2)">
P
</div>
<span className="text-xl font-extrabold tracking-tight">
Expand Down
70 changes: 35 additions & 35 deletions frontend/src/components/FeeEstimationPanel.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
.title {
font-size: 1.5rem;
font-weight: 700;
color: #1f2937;
color: var(--text);
margin: 0;
}

Expand All @@ -31,15 +31,15 @@
font-weight: 600;
padding: 0.25rem 0.625rem;
border-radius: 9999px;
background: #ecfdf5;
color: #059669;
background: var(--success-alpha-10);
color: var(--success);
}

.liveDot {
width: 0.5rem;
height: 0.5rem;
border-radius: 50%;
background: #10b981;
background: var(--success);
animation: pulse 1.5s ease-in-out infinite;
}

Expand Down Expand Up @@ -69,22 +69,22 @@

/* ---- Cards ---- */
.card {
background: #ffffff;
border: 1px solid #e5e7eb;
background: var(--surface);
border: 1px solid var(--border);
border-radius: 0.75rem;
padding: 1.25rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
box-shadow: var(--shadow-sm);
transition: box-shadow 0.2s ease;
}

.card:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
box-shadow: var(--shadow-md);
}

.cardTitle {
font-size: 0.875rem;
font-weight: 600;
color: #6b7280;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.05em;
margin: 0 0 1rem;
Expand All @@ -102,25 +102,25 @@
}

.congestionLow {
background: #ecfdf5;
color: #059669;
background: var(--success-alpha-10);
color: var(--success);
}

.congestionModerate {
background: #fef9c3;
color: #b45309;
background: var(--warning-alpha-10);
color: var(--warning);
}

.congestionHigh {
background: #fee2e2;
color: #dc2626;
background: var(--danger-alpha-10);
color: var(--danger);
}

/* ---- Capacity bar ---- */
.capacityBarOuter {
width: 100%;
height: 0.5rem;
background: #f3f4f6;
background: var(--surface-hi);
border-radius: 9999px;
overflow: hidden;
margin-top: 0.75rem;
Expand All @@ -136,7 +136,7 @@
display: flex;
justify-content: space-between;
font-size: 0.75rem;
color: #9ca3af;
color: var(--muted);
margin-top: 0.25rem;
}

Expand All @@ -146,7 +146,7 @@
justify-content: space-between;
align-items: baseline;
padding: 0.5rem 0;
border-bottom: 1px solid #f3f4f6;
border-bottom: 1px solid var(--border);
}

.statRow:last-child {
Expand All @@ -155,19 +155,19 @@

.statLabel {
font-size: 0.8125rem;
color: #6b7280;
color: var(--muted);
}

.statValue {
font-size: 0.875rem;
font-weight: 600;
color: #111827;
color: var(--text);
font-variant-numeric: tabular-nums;
}

.statSub {
font-size: 0.75rem;
color: #9ca3af;
color: var(--muted);
font-weight: 400;
margin-left: 0.25rem;
}
Expand All @@ -180,8 +180,8 @@
gap: 0.75rem;
padding: 1rem 1.25rem;
border-radius: 0.75rem;
background: #fef2f2;
border: 1px solid #fecaca;
background: var(--danger-alpha-10);
border: 1px solid var(--danger-alpha-20);
}

.alertIcon {
Expand All @@ -194,13 +194,13 @@
margin: 0 0 0.25rem;
font-size: 0.875rem;
font-weight: 600;
color: #b91c1c;
color: var(--danger);
}

.alertContent p {
margin: 0;
font-size: 0.8125rem;
color: #dc2626;
color: var(--danger);
line-height: 1.45;
}

Expand All @@ -219,21 +219,21 @@
.batchInput {
width: 7rem;
padding: 0.5rem 0.75rem;
border: 1px solid #d1d5db;
border: 1px solid var(--border);
border-radius: 0.5rem;
font-size: 0.875rem;
outline: none;
transition: border-color 0.15s;
}

.batchInput:focus {
border-color: #6366f1;
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
border-color: var(--accent2);
box-shadow: 0 0 0 3px var(--accent2-alpha-12);
}

.batchBtn {
padding: 0.5rem 1rem;
background: #4f46e5;
background: var(--accent2);
color: #fff;
border: none;
border-radius: 0.5rem;
Expand All @@ -244,7 +244,7 @@
}

.batchBtn:hover {
background: #4338ca;
background: var(--accent2-hover);
}

.batchBtn:disabled {
Expand All @@ -253,14 +253,14 @@
}

.batchResults {
background: #f9fafb;
background: var(--surface-hi);
border-radius: 0.5rem;
padding: 1rem;
}

/* ---- Skeleton loader ---- */
.skeleton {
background: linear-gradient(90deg, #f3f4f6 25%, #e5e7eb 50%, #f3f4f6 75%);
background: linear-gradient(90deg, var(--surface-hi) 25%, var(--border) 50%, var(--surface-hi) 75%);
background-size: 200% 100%;
animation: shimmer 1.5s ease-in-out infinite;
border-radius: 0.375rem;
Expand Down Expand Up @@ -296,14 +296,14 @@
}

.errorCard p {
color: #dc2626;
color: var(--danger);
font-weight: 500;
margin: 0 0 1rem;
}

.retryBtn {
padding: 0.5rem 1.25rem;
background: #ef4444;
background: var(--danger);
color: #fff;
border: none;
border-radius: 0.5rem;
Expand All @@ -313,5 +313,5 @@
}

.retryBtn:hover {
background: #dc2626;
background: var(--danger-hover);
}
6 changes: 3 additions & 3 deletions frontend/src/components/FeeEstimationPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ export const FeeEstimationPanel: React.FC = () => {
};

const capacityBarColor = (usage: number) => {
if (usage < 0.25) return '#10b981';
if (usage < 0.75) return '#f59e0b';
return '#ef4444';
if (usage < 0.25) return 'var(--success)';
if (usage < 0.75) return 'var(--warning)';
return 'var(--danger)';
};

// ---- Render ----
Expand Down
19 changes: 11 additions & 8 deletions frontend/src/components/OnboardingTour.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import React from 'react';
import Joyride, { Step, CallBackProps, STATUS } from 'react-joyride';

const getCssVar = (name: string): string =>
getComputedStyle(document.documentElement).getPropertyValue(name).trim();

const TOUR_STEPS: Step[] = [
{
target: '#tour-welcome',
Expand Down Expand Up @@ -59,16 +62,16 @@ export const OnboardingTour: React.FC<{
callback={handleJoyrideCallback}
styles={{
options: {
primaryColor: '#4AF0B8',
textColor: '#fff',
backgroundColor: '#111827',
arrowColor: '#111827',
primaryColor: getCssVar('--accent'),
textColor: getCssVar('--text'),
backgroundColor: getCssVar('--surface'),
arrowColor: getCssVar('--surface'),
zIndex: 10000,
},
tooltip: {
borderRadius: '12px',
padding: '20px',
border: '1px solid rgba(255,255,255,0.1)',
border: `1px solid ${getCssVar('--border')}`,
boxShadow: '0 20px 40px rgba(0,0,0,0.4)',
},
tooltipContent: {
Expand All @@ -77,19 +80,19 @@ export const OnboardingTour: React.FC<{
lineHeight: '1.5',
},
buttonNext: {
backgroundColor: '#4AF0B8',
backgroundColor: getCssVar('--accent'),
color: '#000',
fontWeight: '800',
borderRadius: '8px',
padding: '10px 20px',
},
buttonBack: {
color: '#9CA3AF',
color: getCssVar('--muted'),
fontWeight: '600',
marginRight: '10px',
},
buttonSkip: {
color: '#9CA3AF',
color: getCssVar('--muted'),
fontSize: '13px',
},
overlay: {
Expand Down
Loading