diff --git a/frontend/src/assets/components.css b/frontend/src/assets/components.css index fa8b549..0d76513 100644 --- a/frontend/src/assets/components.css +++ b/frontend/src/assets/components.css @@ -330,3 +330,24 @@ .fs-input::placeholder { color: var(--fs-text-tertiary); } .fs-input:focus { outline: none; box-shadow: var(--fs-focus-ring); } .fs-input:disabled { opacity: var(--fs-disabled-opacity); cursor: not-allowed; } + +/* Page scaffold + feedback text recipes (milestone 302, note 2917): name + families the consumer map showed to be one recipe living in many views. + A view keeps only its deviation as a scoped remainder/override. */ +.page-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; +} +.page-header h1 { margin: 0; } + +.error-msg { color: var(--fs-error); font-size: 0.9rem; } +.state-msg { color: var(--fs-text-tertiary); font-size: 0.9rem; } +.empty-msg { color: var(--fs-text-tertiary); font-size: 0.875rem; } + +.empty-title { font-size: 1rem; font-weight: 500; color: var(--fs-text-secondary); margin: 0 0 0.35rem; } +.empty-sub { font-size: 0.85rem; color: var(--fs-text-tertiary); margin: 0 0 1rem; } + +.required { color: var(--fs-error); } +.field-hint { margin: 0.3rem 0 0; font-size: 0.8rem; color: var(--fs-text-tertiary); } diff --git a/frontend/src/assets/rules-shared.css b/frontend/src/assets/rules-shared.css index 963a32a..9efc62b 100644 --- a/frontend/src/assets/rules-shared.css +++ b/frontend/src/assets/rules-shared.css @@ -12,3 +12,4 @@ font-style: italic; margin: 0 0 0.5rem 0; } +.form-buttons { display: flex; gap: 0.5rem; } diff --git a/frontend/src/components/InceptionCard.vue b/frontend/src/components/InceptionCard.vue index b37699b..e33f842 100644 --- a/frontend/src/components/InceptionCard.vue +++ b/frontend/src/components/InceptionCard.vue @@ -185,5 +185,4 @@ onMounted(load); font-size: 0.9rem; } .inception-actions { display: flex; justify-content: flex-end; margin-top: 0.5rem; } -.error-msg { color: var(--fs-error); font-size: 0.9rem; } diff --git a/frontend/src/components/SystemsSection.vue b/frontend/src/components/SystemsSection.vue index afb4897..6bf72ae 100644 --- a/frontend/src/components/SystemsSection.vue +++ b/frontend/src/components/SystemsSection.vue @@ -484,10 +484,10 @@ async function confirmDelete() { border: 1px dashed var(--fs-border-color); border-radius: var(--fs-radius-lg); } -.empty-title { margin: 0; font-weight: 500; color: var(--fs-text-primary); } -.empty-sub { margin: 0 0 0.5rem; font-size: 0.82rem; color: var(--fs-text-tertiary); max-width: 32ch; } +/* remainders over the shared recipes (components.css, m302) */ +.empty-title { margin: 0; color: var(--fs-text-primary); } +.empty-sub { margin: 0 0 0.5rem; font-size: 0.82rem; max-width: 32ch; } -.error-msg { color: var(--fs-error); font-size: 0.9rem; } /* ── Skeleton ─────────────────────────────────────────────────── */ @keyframes skel-shine { to { background-position: 200% center; } } diff --git a/frontend/src/components/rules/RulebookDetailPane.vue b/frontend/src/components/rules/RulebookDetailPane.vue index ff2b975..77b72e2 100644 --- a/frontend/src/components/rules/RulebookDetailPane.vue +++ b/frontend/src/components/rules/RulebookDetailPane.vue @@ -145,7 +145,6 @@ li:hover { background: var(--fs-surface-hover); } border: 1px solid var(--fs-border-color); border-radius: 6px; padding: 0.5rem; } -.form-buttons { display: flex; gap: 0.5rem; } .subscriptions { margin-top: 2rem; border-top: 1px solid var(--fs-border-color); diff --git a/frontend/src/components/rules/RulebookListPane.vue b/frontend/src/components/rules/RulebookListPane.vue index 972f006..b808c3d 100644 --- a/frontend/src/components/rules/RulebookListPane.vue +++ b/frontend/src/components/rules/RulebookListPane.vue @@ -70,6 +70,5 @@ li:hover { background: var(--fs-surface-hover); } border: 1px solid var(--fs-border-color); border-radius: 6px; padding: 0.5rem; } -.form-buttons { display: flex; gap: 0.5rem; } button { cursor: pointer; } diff --git a/frontend/src/views/DesignSystemsView.vue b/frontend/src/views/DesignSystemsView.vue index 752f51b..68f50a8 100644 --- a/frontend/src/views/DesignSystemsView.vue +++ b/frontend/src/views/DesignSystemsView.vue @@ -557,14 +557,14 @@ function isSelfContainedColour(value: string): boolean {