UI - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: auth screens, error pages и новый канон внешних контуров

This commit is contained in:
DCCONSTRUCTIONS
2026-04-20 10:05:31 +03:00
parent df68c96795
commit c6ace8b9cc
25 changed files with 564 additions and 360 deletions
@@ -17,9 +17,9 @@ type Props = {
};
const TraceabilityCell = ({ label, children }: { label: string; children: ReactNode }) => (
<div className="rounded-md border border-subtle bg-surface-1 p-3">
<div className="nodedc-external-panel p-4">
<div className="text-11 font-medium text-tertiary">{label}</div>
<div className="mt-1 min-h-6 text-13 font-medium text-secondary">{children}</div>
<div className="mt-2 min-h-6 text-13 font-medium text-secondary">{children}</div>
</div>
);
@@ -41,7 +41,7 @@ export const ExternalContoursRequestTraceability = observer(function ExternalCon
const assigneeDetails = issue.assignee_details ?? [];
return (
<div className="rounded-lg border border-subtle bg-surface-2 p-4">
<div className="nodedc-external-section p-5">
<div className="mb-3">
<h5 className="text-body-sm-medium">{t("external_contours_page.traceability.title")}</h5>
<p className="mt-1 text-12 text-tertiary">{t("external_contours_page.traceability.description")}</p>
@@ -73,7 +73,7 @@ export const ExternalContoursRequestTraceability = observer(function ExternalCon
{assigneeDetails.map((assignee) => (
<div key={assignee.id} className="flex items-center gap-2">
<Avatar src={assignee.avatar_url || ""} name={assignee.display_name || t("common.none")} size="sm" showTooltip />
<span className="text-12 font-medium text-secondary">{assignee.display_name}</span>
<span className="text-13 font-medium text-secondary">{assignee.display_name}</span>
</div>
))}
</div>
@@ -90,13 +90,13 @@ export const ExternalContoursRequestTraceability = observer(function ExternalCon
{requestedAt ? renderFormattedDate(requestedAt) : t("common.none")}
</TraceabilityCell>
<TraceabilityCell label={t("external_contours_page.traceability.last_updated")}>
{lastUpdatedAt ? renderFormattedDate(lastUpdatedAt) : t("common.none")}
</TraceabilityCell>
<TraceabilityCell label={t("external_contours_page.traceability.due_date")}>
{dueDate}
</TraceabilityCell>
<TraceabilityCell label={t("external_contours_page.traceability.last_updated")}>
{lastUpdatedAt ? renderFormattedDate(lastUpdatedAt) : t("common.none")}
</TraceabilityCell>
</div>
</div>
);