feat(journey-editor): add i18n keys, error codes, and interlude CSS tokens
All 30+ journey_* message keys added to de/en/es.json. Four new ErrorCode values for journey item operations wired into errors.ts + getErrorMessage(). Interlude CSS primitives (--c-interlude-bg/border/label) defined for light and dark themes so JourneyItemRow can reference them via semantic aliases. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -47,9 +47,13 @@ export type ErrorCode =
|
||||
| 'DUPLICATE_RELATIONSHIP'
|
||||
| 'GESCHICHTE_NOT_FOUND'
|
||||
| 'JOURNEY_ITEM_NOT_FOUND'
|
||||
| 'JOURNEY_ITEM_NOT_IN_JOURNEY'
|
||||
| 'JOURNEY_ITEM_POSITION_CONFLICT'
|
||||
| 'JOURNEY_AT_CAPACITY'
|
||||
| 'JOURNEY_NOTE_TOO_LONG'
|
||||
| 'JOURNEY_DOCUMENT_ALREADY_ADDED'
|
||||
| 'GESCHICHTE_TYPE_MISMATCH'
|
||||
| 'GESCHICHTE_TYPE_IMMUTABLE'
|
||||
| 'INVALID_CREDENTIALS'
|
||||
| 'SESSION_EXPIRED'
|
||||
| 'MISSING_CREDENTIALS'
|
||||
@@ -170,12 +174,20 @@ export function getErrorMessage(code: ErrorCode | string | undefined): string {
|
||||
return m.error_geschichte_not_found();
|
||||
case 'JOURNEY_ITEM_NOT_FOUND':
|
||||
return m.error_journey_item_not_found();
|
||||
case 'JOURNEY_ITEM_NOT_IN_JOURNEY':
|
||||
return m.error_journey_item_not_in_journey();
|
||||
case 'JOURNEY_ITEM_POSITION_CONFLICT':
|
||||
return m.error_journey_item_position_conflict();
|
||||
case 'JOURNEY_AT_CAPACITY':
|
||||
return m.error_journey_at_capacity();
|
||||
case 'JOURNEY_NOTE_TOO_LONG':
|
||||
return m.error_journey_note_too_long();
|
||||
case 'JOURNEY_DOCUMENT_ALREADY_ADDED':
|
||||
return m.error_journey_document_already_added();
|
||||
case 'GESCHICHTE_TYPE_MISMATCH':
|
||||
return m.error_geschichte_type_mismatch();
|
||||
case 'GESCHICHTE_TYPE_IMMUTABLE':
|
||||
return m.error_geschichte_type_immutable();
|
||||
case 'INVALID_CREDENTIALS':
|
||||
return m.error_invalid_credentials();
|
||||
case 'SESSION_EXPIRED':
|
||||
|
||||
@@ -82,6 +82,11 @@
|
||||
--color-journey: var(--c-journey-text);
|
||||
--color-journey-border: var(--c-journey-border);
|
||||
|
||||
/* Interlude row — neutral surface with left accent border; ZWISCHENTEXT label */
|
||||
--color-interlude-bg: var(--c-interlude-bg);
|
||||
--color-interlude-border: var(--c-interlude-border);
|
||||
--color-interlude-label: var(--c-interlude-label);
|
||||
|
||||
/* Static brand tokens (not themed) */
|
||||
--color-brand-navy: var(--palette-navy);
|
||||
--color-brand-mint: var(--palette-mint);
|
||||
@@ -139,6 +144,11 @@
|
||||
--c-journey-text: #7a3f0e;
|
||||
--c-journey-border: #f0c99a;
|
||||
|
||||
/* Interlude (Zwischentext) — neutral warm surface with left accent border */
|
||||
--c-interlude-bg: #f5f4f0;
|
||||
--c-interlude-border: #a1dcd8;
|
||||
--c-interlude-label: #6b7280;
|
||||
|
||||
/* Tag color tokens — decorative dot colors on tag chips */
|
||||
--c-tag-sage: #5a8a6a;
|
||||
--c-tag-sienna: #a0522d;
|
||||
@@ -263,6 +273,11 @@
|
||||
--c-journey-bg: #3a2a1a;
|
||||
--c-journey-text: #e8862a;
|
||||
--c-journey-border: #7a4a1e;
|
||||
|
||||
/* Interlude (Zwischentext) — KEEP IN SYNC with :root[data-theme='dark'] */
|
||||
--c-interlude-bg: #151c22;
|
||||
--c-interlude-border: #00c7b1;
|
||||
--c-interlude-label: #8b97a5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,6 +358,11 @@
|
||||
--c-journey-bg: #3a2a1a;
|
||||
--c-journey-text: #e8862a;
|
||||
--c-journey-border: #7a4a1e;
|
||||
|
||||
/* Interlude (Zwischentext) — KEEP IN SYNC with the @media block above */
|
||||
--c-interlude-bg: #151c22;
|
||||
--c-interlude-border: #00c7b1;
|
||||
--c-interlude-label: #8b97a5;
|
||||
}
|
||||
|
||||
/* ─── 6. Icon inversion — De Gruyter icons are black SVGs loaded as <img> ──── */
|
||||
|
||||
Reference in New Issue
Block a user