diff --git a/src/govoplan_approvals/backend/manifest.py b/src/govoplan_approvals/backend/manifest.py index 7e57858..067f1f7 100644 --- a/src/govoplan_approvals/backend/manifest.py +++ b/src/govoplan_approvals/backend/manifest.py @@ -23,6 +23,7 @@ from govoplan_core.core.modules import ( ModuleManifest, NavItem, PermissionDefinition, + ProductAreaContribution, RoleTemplate, ) from govoplan_core.core.provider_governance import declared_module_architecture @@ -178,6 +179,17 @@ manifest = ModuleManifest( order=37, ), ), + product_areas=( + ProductAreaContribution( + id="work", + module_id=MODULE_ID, + label="i18n:govoplan-core.product_area.work", + icon="list-checks", + description="i18n:govoplan-core.product_area.work_description", + surface_ids=("approvals.nav.approvals", "approvals.route.approvals"), + order=10, + ), + ), view_surfaces=( ViewSurface( id="approvals.navigation", diff --git a/webui/src/styles/approvals.css b/webui/src/styles/approvals.css index 8986865..9aeea0c 100644 --- a/webui/src/styles/approvals.css +++ b/webui/src/styles/approvals.css @@ -1,31 +1,31 @@ .approvals-page { height: 100%; min-height: 0; overflow: hidden; } .approvals-list-panel { display: flex; min-height: 0; flex-direction: column; } .approvals-list-viewport, .approvals-detail-viewport { min-height: 0; flex: 1; } -.approvals-detail header span { color: var(--text-muted, #65717e); } +.approvals-detail header span { color: var(--muted); } .approvals-workspace { display: flex; min-width: 0; min-height: 0; flex-direction: column; } .approvals-workspace > .action-blocker-hint { margin: 12px 16px 0; } .approvals-detail { padding: 16px 20px 28px; } -.approvals-detail header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--border-color, #d8dde3); } +.approvals-detail header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--line); } .approvals-detail header > div:last-child { display: flex; align-items: center; gap: 8px; } .approvals-detail h2, .approvals-detail h3, .approval-editor-heading h3 { margin: 0; font-size: 1rem; letter-spacing: 0; } -.approvals-detail section { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border-color, #d8dde3); } +.approvals-detail section { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); } .approval-chain, .approval-history { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; } -.approval-chain > div, .approval-history > div { display: grid; grid-template-columns: 32px minmax(120px, .6fr) minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 40px; padding: 7px 9px; background: var(--surface-muted, rgba(127,137,147,.08)); } -.approval-chain > div.is-current { border-left: 3px solid var(--accent-color, #36709a); } +.approval-chain > div, .approval-history > div { display: grid; grid-template-columns: 32px minmax(120px, .6fr) minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 40px; padding: 7px 9px; background: var(--surface-muted); } +.approval-chain > div.is-current { border-left: 3px solid var(--data-category-blue); } .approval-chain em { font-size: .8rem; font-style: normal; } .approval-history > div { grid-template-columns: 32px minmax(0, 1fr) auto; } -.approval-history time { color: var(--text-muted, #65717e); font-size: .82rem; } +.approval-history time { color: var(--muted); font-size: .82rem; } .approval-request-dialog, .approval-template-dialog { width: min(1160px, calc(100vw - 32px)); height: min(860px, calc(100vh - 32px)); } .approval-editor { display: flex; min-height: 0; flex-direction: column; gap: 12px; overflow: auto; } .approval-editor-help { display: flex; justify-content: flex-end; } .approval-editor-wide { grid-column: 1 / -1; } .approval-editor-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .approval-step-list { display: flex; flex-direction: column; gap: 8px; } -.approval-step-editor { display: flex; flex-direction: column; gap: 10px; padding: 10px; border: 1px solid var(--border-color, #d8dde3); border-radius: 4px; } +.approval-step-editor { display: flex; flex-direction: column; gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); } .approval-step-heading, .approval-selector-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .approval-step-heading > div { display: flex; align-items: center; gap: 4px; } .approval-step-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 8px; } -.approval-selector-heading { padding-top: 8px; border-top: 1px solid var(--border-color, #d8dde3); } +.approval-selector-heading { padding-top: 8px; border-top: 1px solid var(--line); } .approval-selector-list { display: flex; flex-direction: column; gap: 6px; } .approval-selector-list > div { display: grid; grid-template-columns: 180px minmax(160px, 1fr) minmax(160px, 1fr) 34px; align-items: end; gap: 8px; } .approval-template-history-dialog { width: min(1180px, calc(100vw - 32px)); height: min(820px, calc(100vh - 32px)); }