diff --git a/admin-compliance/app/sdk/iace/[projectId]/interview/_components/FormFields.tsx b/admin-compliance/app/sdk/iace/[projectId]/interview/_components/FormFields.tsx new file mode 100644 index 0000000..c2734b4 --- /dev/null +++ b/admin-compliance/app/sdk/iace/[projectId]/interview/_components/FormFields.tsx @@ -0,0 +1,125 @@ +'use client' + +interface TextInputProps { + label: string + value: string + onChange: (value: string) => void + placeholder?: string + helpText?: string + disabled?: boolean +} + +export function TextInput({ label, value, onChange, placeholder, helpText, disabled }: TextInputProps) { + return ( +
{helpText}
} + onChange(e.target.value)} + placeholder={placeholder} + disabled={disabled} + className="w-full px-3 py-2 border border-gray-200 dark:border-gray-600 rounded-lg text-sm bg-white dark:bg-gray-700 text-gray-900 dark:text-white placeholder-gray-400 focus:ring-2 focus:ring-purple-500 focus:border-purple-500 disabled:bg-gray-50 dark:disabled:bg-gray-800 disabled:text-gray-400" + /> +{helpText}
} +{helpText}
} + +{helpText}
} ++ Dokumentieren Sie alle vernuenftigerweise vorhersehbaren Fehlanwendungen gemaess ISO 12100 Abschnitt 5.4. Beruecksichtigen Sie dabei reflexartiges Verhalten, mangelnde Konzentration und Verhaltensweisen nach dem Grundsatz des geringsten Widerstandes. +
+| Maschinentyp: | {project.machine_type || '-'} |
| Hersteller: | {project.manufacturer || '-'} |
| Projektstatus: | {project.status} |
| Erstelldatum: | {formatDate(project.created_at)} |
| Letzte Aktualisierung: | {formatDate(project.updated_at)} |
| Vollstaendigkeit: | {project.completeness_pct}% |
| Maschinenbezeichnung | {project.machine_name} |
| Maschinentyp | {project.machine_type || '-'} |
| Hersteller | {project.manufacturer || '-'} |
| Anzahl Komponenten | {project.component_count} |
| Anzahl Gefaehrdungen | {project.hazard_count} |
| Anzahl Massnahmen | {project.mitigation_count} |
| Nummer | Titel | Abschnitte / Grund |
|---|---|---|
| {ns.norm.number} | +{ns.norm.title_de} | +{ns.reason} | +
Keine Normenvorschlaege vorhanden.
+ )} +| Nr. | +Komponente | +Gefaehrdung | +Kategorie | +Szenario | +Lebensphase | +Risiko | +
|---|---|---|---|---|---|---|
| {i + 1} | +{h.component_name || '-'} | +{h.name} | +{CATEGORY_LABELS[h.category] || h.category} | +{h.possible_harm || h.trigger_event || '-'} | +{h.lifecycle_phase || '-'} | ++ {riskLevelLabel(h.risk_level)} + | +
| Nr. | +Gefaehrdung | +S | +E | +P | +RPZ | +SIL | +PL | +Risiko | +Akzeptabel | +
|---|---|---|---|---|---|---|---|---|---|
| {i + 1} | +{h.name} | +{h.severity} | +{h.exposure} | +{h.probability} | +{r} | +{sil} | +{pl} | +{riskLevelLabel(h.risk_level)} | ++ {acceptable ? 'Ja' : 'Nein'} + | +
+ Gesamt: {mitigations.length} Massnahmen + (Design: {byDesign.length}, Schutz: {byProtection.length}, Information: {byInfo.length}) +
+| Nr. | +Massnahme | +Typ | +Zugeordnete Gefaehrdungen | +Status | +
|---|---|---|---|---|
| {i + 1} | +{m.title} | +{REDUCTION_LABELS[m.reduction_type] || m.reduction_type} | +{m.linked_hazard_names?.join(', ') || '-'} | ++ + {STATUS_LABELS[m.status] || m.status} + + | +
| Regulation | +Artikel | +Titel | +Schwere | +Grund | +
|---|---|---|---|---|
| {t.regulation} | +{t.article} | +{t.title} | ++ + {t.severity === 'high' ? 'HOCH' : t.severity === 'medium' ? 'MITTEL' : 'NIEDRIG'} + + | +{t.reason} | +
| Risikostufe | +Anzahl | +
|---|---|
| {String(label)} | +{String(count)} | +
{openMitigations.length} von {mitigations.length} Massnahmen noch nicht verifiziert.
+0 ? '#dc2626' : '#16a34a' }}> + {highRiskCount > 0 + ? `Es bestehen ${highRiskCount} Gefaehrdungen mit hohem/kritischem Risiko. Massnahmen muessen umgesetzt und verifiziert werden, bevor die Maschine in Verkehr gebracht werden darf.` + : openMitigations.length > 0 + ? 'Alle identifizierten Risiken liegen im akzeptablen Bereich. Offene Massnahmen sollten zeitnah abgeschlossen und verifiziert werden.' + : 'Alle Risiken liegen im akzeptablen Bereich und alle Massnahmen sind verifiziert. Die Maschine kann in Verkehr gebracht werden.'} +
+