9f0bd87c40
- Projectenpagina met pipeline (standaard) en tabelweergave, filters op status, Rikx Ronde en zoeken - Projectpagina in stappen: Project plan (velden uit de Rikx-aanvraag) en Rikx calculatie achter een schuif, live berekend volgens de rekenmethode - Rikx rondes beheren (label, Rikx waarde, Rikx prijs) en koppelen aan projecten - Oranje Rikx-menubalk met menu per module, gedeeld door alle pagina's - Oude offerte-tabellen opgeruimd: leeg wordt verwijderd, met data hernoemd naar legacy_* - CLAUDE.md bijgewerkt naar de huidige stand Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.7 KiB
TypeScript
36 lines
1.7 KiB
TypeScript
import type { RikxRonde } from "../../lib/db";
|
||
|
||
const inputClass =
|
||
"h-10 rounded-lg border border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 px-3 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-rikx-orange";
|
||
const labelClass = "text-sm font-medium text-zinc-700 dark:text-zinc-300";
|
||
|
||
export const RONDE_ERRORS: Record<string, string> = {
|
||
missing: "Vul een ronde label in.",
|
||
invalid: "Rikx waarde en Rikx prijs mogen niet negatief zijn.",
|
||
label: "Er bestaat al een ronde met dit label.",
|
||
};
|
||
|
||
// Gedeelde velden voor toevoegen en bewerken van een Rikx Ronde.
|
||
export function RondeFields({ ronde }: { ronde?: RikxRonde }) {
|
||
return (
|
||
<>
|
||
<label className="flex flex-col gap-1">
|
||
<span className={labelClass}>
|
||
Ronde label<span className="text-red-500 ml-1">*</span>
|
||
</span>
|
||
<input name="label" required defaultValue={ronde?.label} placeholder="Rikx Ronde 5 – Rotterdam" className={inputClass} />
|
||
</label>
|
||
<label className="flex flex-col gap-1">
|
||
<span className={labelClass}>Rikx waarde</span>
|
||
<input name="rikx_waarde" type="number" min={0} step="any" defaultValue={ronde?.rikx_waarde ?? ""} className={inputClass} />
|
||
<span className="text-xs text-zinc-500">Kosten/impact van het 75%-ste project in de ronde.</span>
|
||
</label>
|
||
<label className="flex flex-col gap-1">
|
||
<span className={labelClass}>Rikx prijs (€)</span>
|
||
<input name="rikx_prijs" type="number" min={0} step="0.01" defaultValue={ronde?.rikx_prijs ?? ""} className={inputClass} />
|
||
<span className="text-xs text-zinc-500">Leeg laten = Rikx waarde / 10.</span>
|
||
</label>
|
||
</>
|
||
);
|
||
}
|