feat: Implement backend API and basic frontend structure

Adds initial backend API endpoints for fetching users and attendances, including basic filtering. Sets up the frontend routing with a layout component and includes placeholder pages for dashboard, users, and login. Refactors the README for local development setup.
This commit is contained in:
farelos
2026-02-23 10:36:00 -03:00
parent 0cf4fb92d7
commit 3250ad7537
26 changed files with 2947 additions and 8 deletions

View File

@@ -0,0 +1,49 @@
import React from 'react';
import { Calendar } from 'lucide-react';
import { DateRange } from '../types';
interface DateRangePickerProps {
dateRange: DateRange;
onChange: (range: DateRange) => void;
}
export const DateRangePicker: React.FC<DateRangePickerProps> = ({ dateRange, onChange }) => {
const formatDateForInput = (date: Date) => {
return date.toISOString().split('T')[0];
};
const handleStartChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const newStart = new Date(e.target.value);
if (!isNaN(newStart.getTime())) {
onChange({ ...dateRange, start: newStart });
}
};
const handleEndChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const newEnd = new Date(e.target.value);
if (!isNaN(newEnd.getTime())) {
onChange({ ...dateRange, end: newEnd });
}
};
return (
<div className="flex items-center gap-2 bg-white border border-slate-200 px-3 py-2 rounded-lg shadow-sm hover:border-slate-300 transition-colors">
<Calendar size={16} className="text-slate-500 shrink-0" />
<div className="flex items-center gap-2 text-sm">
<input
type="date"
value={formatDateForInput(dateRange.start)}
onChange={handleStartChange}
className="bg-transparent text-slate-700 font-medium outline-none cursor-pointer w-28 md:w-auto"
/>
<span className="text-slate-400">até</span>
<input
type="date"
value={formatDateForInput(dateRange.end)}
onChange={handleEndChange}
className="bg-transparent text-slate-700 font-medium outline-none cursor-pointer w-28 md:w-auto"
/>
</div>
</div>
);
};