feat: apply Funktechnik Schubert branding
This commit is contained in:
parent
9a648e2ec8
commit
99e8201745
17 changed files with 335 additions and 104 deletions
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
import { useState, type FormEvent } from "react";
|
||||
|
||||
type Errors = Partial<Record<"name" | "email" | "manufacturer" | "model" | "description" | "privacy", string>>;
|
||||
type ErrorField = "name" | "email" | "manufacturer" | "model" | "deviceType" | "description" | "privacy";
|
||||
type Errors = Partial<Record<ErrorField, string>>;
|
||||
|
||||
export default function RepairForm() {
|
||||
const [errors, setErrors] = useState<Errors>({});
|
||||
|
|
@ -19,6 +20,7 @@ export default function RepairForm() {
|
|||
if (!String(form.get("email") ?? "").includes("@")) nextErrors.email = "Bitte geben Sie eine gültige E-Mail-Adresse ein.";
|
||||
if (!String(form.get("manufacturer") ?? "").trim()) nextErrors.manufacturer = "Bitte nennen Sie den Hersteller.";
|
||||
if (!String(form.get("model") ?? "").trim()) nextErrors.model = "Bitte nennen Sie das Modell.";
|
||||
if (!String(form.get("deviceType") ?? "").trim()) nextErrors.deviceType = "Bitte wählen Sie die Geräteart aus.";
|
||||
if (String(form.get("description") ?? "").trim().length < 20) nextErrors.description = "Bitte beschreiben Sie den Fehler mit mindestens 20 Zeichen.";
|
||||
if (form.get("privacy") !== "on") nextErrors.privacy = "Bitte stimmen Sie der Verarbeitung Ihrer Angaben zu.";
|
||||
|
||||
|
|
@ -52,6 +54,23 @@ export default function RepairForm() {
|
|||
<Field label="Modell" name="model" error={errors.model} />
|
||||
<Field label="Seriennummer optional" name="serialNumber" />
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="deviceType">Geräteart</label>
|
||||
<select id="deviceType" name="deviceType" defaultValue="">
|
||||
<option value="">Bitte auswählen</option>
|
||||
<option value="cb-radio">CB-Funkgerät</option>
|
||||
<option value="amateur-radio">Amateurfunkgerät</option>
|
||||
<option value="business-radio">Betriebsfunkgerät</option>
|
||||
<option value="receiver">Empfänger / Scanner</option>
|
||||
<option value="measurement">Messtechnik</option>
|
||||
<option value="other">Sonstige Kommunikationstechnik</option>
|
||||
</select>
|
||||
{errors.deviceType && <span className="error">{errors.deviceType}</span>}
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="accessories">Zubehör vorhanden</label>
|
||||
<textarea id="accessories" name="accessories" placeholder="z. B. Netzteil, Mikrofon, Kabel, Adapter, Antenne oder Bediengerät" />
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="opened">Wurde das Gerät bereits geöffnet?</label>
|
||||
<select id="opened" name="opened" defaultValue="unknown">
|
||||
|
|
@ -62,14 +81,14 @@ export default function RepairForm() {
|
|||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="previousWork">Gibt es Vorarbeiten?</label>
|
||||
<textarea id="previousWork" name="previousWork" placeholder="z. B. Bauteile getauscht, Abgleich versucht, Fremdwerkstatt" />
|
||||
<textarea id="previousWork" name="previousWork" placeholder="z. B. Bauteile getauscht, Abgleich versucht, Reinigung, Messung, Fremdwerkstatt" />
|
||||
</div>
|
||||
<div className="field">
|
||||
<label htmlFor="description">Fehlerbeschreibung</label>
|
||||
<textarea id="description" name="description" placeholder="Bitte Gerät, Fehlerbild und bisherige Beobachtungen beschreiben." />
|
||||
<textarea id="description" name="description" placeholder="Bitte Fehlerbild möglichst konkret beschreiben: tritt der Fehler beim Empfang, Senden, bei Modulation, Frequenz, Anzeige oder Stromversorgung auf?" />
|
||||
{errors.description && <span className="error">{errors.description}</span>}
|
||||
</div>
|
||||
<p className="notice">Datei- und Bild-Upload ist für eine spätere Ausbaustufe vorbereitet. Bitte senden Sie Bilder aktuell erst nach Rückmeldung.</p>
|
||||
<p className="notice">Fotos vom Gerät, Typenschild oder Innenleben können später nach Rückmeldung ergänzt werden. Bitte senden Sie aktuell noch keine Dateien unaufgefordert.</p>
|
||||
<label className="checkbox">
|
||||
<input type="checkbox" name="privacy" />
|
||||
<span>Ich stimme zu, dass meine Angaben zur Bearbeitung der Reparaturanfrage verarbeitet werden.</span>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue