From 31aed40308d7717a1b5415821ffaf73325f4ff58 Mon Sep 17 00:00:00 2001 From: Kjell Tore Guttormsen Date: Mon, 4 May 2026 16:46:40 +0200 Subject: [PATCH] =?UTF-8?q?feat(ms-ai-architect):=20v1.11.0=20Sesjon=202?= =?UTF-8?q?=20=E2=80=94=20design-system=20100%-adoption=20(Fase=204-6)=20[?= =?UTF-8?q?skip-docs]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migrerer alle 6 PARALLEL CSS-navn i playground HTML til DS-konvensjon: - .topbar* -> .app-header* (DS components.css) - .residual-pair* -> .pair-before-after* (DS components-tier3.css; data-severity -> BEM modifier) - .command-card* -> .card + .card__* (DS base.css + tier3-supplement; outer + 4 sub-elementer) - .catalog-card* -> .card + .card__* (samme; outer + 7 sub-elementer) - .screen-tabs/.screen-tab/.screen -> .tab-list/.tab/.tab-panel (DS tier3-supplement; data-active="..." -> [hidden]-attr) - .pyramide-desc* -> .stack-sm + .pyramide-tier-detail* (DS tier3-supplement section 22+23) Trimmer plugin-local @@ -1716,25 +1641,27 @@ scheduleRender(); } - // Topbar — gjenbrukes på home, catalog, project. Onboarding viser ingen topbar + // App-header — gjenbrukes på home, catalog, project. Onboarding viser ingen header // (full-fokus førstegangs-flyt). Eksport/import-knapper wires opp til // __exportState/__importState fra Step 3. function renderTopbar(crumb) { const orgName = (store.state.shared.organization && store.state.shared.organization.name) || ''; - const crumbHtml = (orgName || crumb) - ? '' + (orgName ? escapeHtml(orgName) : '') + (orgName && crumb ? ' · ' : '') + (crumb || '') + '' + const breadcrumbInner = (orgName ? escapeHtml(orgName) : '') + (orgName && crumb ? ' · ' : '') + (crumb || ''); + const breadcrumbHtml = breadcrumbInner + ? '' : ''; const currentTheme = document.documentElement.getAttribute('data-theme') === 'light' ? 'light' : 'dark'; const themeLabel = currentTheme === 'light' ? 'Lys' : 'Mørk'; const themeNext = currentTheme === 'light' ? 'mørk' : 'lys'; return ( - '
' + - '
' + - '' + + '
' + + '
' + + '' + 'ms-ai-architect' + - crumbHtml + '
' + - '' + + '
' + '
' ); } @@ -1901,15 +1828,18 @@ { label: 'AKTIVE RAPPORTER', value: activeReportCount } ] }, - tracksHtml + - '
' + - '
' + - '

Mine prosjekter

' + - '' + - '
' + - projectListHtml + - (projects.length > 0 ? '
' : '') + - '
' + '
' + + tracksHtml + + '
' + + 'PROSJEKTER · ' + projects.length + ' av ' + projects.length + '' + + '
' + + '

Mine prosjekter

' + + '' + + '
' + + projectListHtml + + (projects.length > 0 ? '
' : '') + + '
' + + '
' ); root.innerHTML = ( @@ -2093,13 +2023,27 @@ // ---- Sub-card rendering ---- function renderCommandSubCard(cmd, projectId) { + // Sev-modifier: hvis rapporten er parsed, mappe verdict til DS card--severity-{level}. + // Plugin-domain-verdicts (go/block/approved/...) → severity-band (positive/critical/medium). + const project = findProject(projectId); + const report = project && project.reports && project.reports[cmd.id]; + const verdict = report && report.parsed && report.parsed.verdict + ? String(report.parsed.verdict).toLowerCase() : ''; + const sevMap = { + 'go': 'positive', 'approved': 'positive', 'allow': 'positive', + 'go-with-conditions': 'medium', 'warning': 'medium', + 'block': 'critical', 'failed': 'critical' + }; + const sevModifier = sevMap[verdict] || ''; + const sevClass = sevModifier ? ' card--severity-' + sevModifier : ''; + const titleHtml = ( - '
' + + '
' + '
' + - '

' + escapeHtml(cmd.label) + '

' + - '

' + escapeHtml(cmd.description) + '

' + + '

' + escapeHtml(cmd.label) + '

' + + '

' + escapeHtml(cmd.description) + '

' + '
' + - '/architect:' + escapeHtml(cmd.id) + '' + + '/architect:' + escapeHtml(cmd.id) + '' + '
' ); @@ -2126,7 +2070,7 @@ '
' ); return ( - '
' + + '
' + titleHtml + formZone + toolNotice + @@ -2156,7 +2100,7 @@ ); return ( - '
' + + '
' + titleHtml + formZone + pasteZone + @@ -2188,7 +2132,7 @@ '' ); - // Screen-tabs (A4 Tier 3): Oversikt / Rapporter / Kontekst / Eksport. + // Tab-list (DS): Oversikt / Rapporter / Kontekst / Eksport. // Sesjon 2: Rapporter er primær; andre er stub-skjermer som fylles ut // i Sesjon 3-6. const SCREENS = [ @@ -2197,10 +2141,10 @@ { id: 'kontekst', label: 'Kontekst' }, { id: 'eksport', label: 'Eksport' } ]; - const screenTabsHtml = '
' @@ -2428,11 +2374,13 @@ { label: 'SKILLS', value: 5 } ] }, - '
' + - '' + - '' + countText + '' + - '
' + - '
' + renderCatalogGroupsHtml() + '
' + '
' + + '
' + + '' + + '' + countText + '' + + '
' + + '
' + renderCatalogGroupsHtml() + '
' + + '
' ); root.innerHTML = ( renderTopbar('Katalog') + @@ -2473,8 +2421,8 @@ ''; }).join(''); - const tierDescsHtml = '
' + tiers.map(function (t) { + const tierDescsHtml = '
' + tiers.map(function (t) { const open = (t.id === activeTier) ? ' open' : ''; - return '
' + + return '
' + '' + escapeHtml(t.label) + '' + - '

' + escapeHtml(t.desc) + '

' + + '
' + escapeHtml(t.desc) + '
' + '
'; }).join('') + '
'; @@ -3652,19 +3600,19 @@ }; const sevBefore = rp.before.score != null ? sevFor(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevFor(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -3736,19 +3684,19 @@ }; const sevBefore = rp.before.score != null ? sevForScore(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevForScore(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -3806,19 +3754,19 @@ }; const sevBefore = rp.before.score != null ? sevForScore(rp.before.score) : ''; const sevAfter = rp.after.score != null ? sevForScore(rp.after.score) : ''; - const attrBefore = sevBefore ? ' data-severity="' + sevBefore + '"' : ''; - const attrAfter = sevAfter ? ' data-severity="' + sevAfter + '"' : ''; - residualHtml = '
' + - '
' + - 'FØR TILTAK' + - '' + escapeHtml(labelOf(rp.before)) + '' + - 'Sannsynlighet × konsekvens' + + const cellBefore = 'pair-before-after__cell' + (sevBefore ? ' pair-before-after__cell--severity-' + sevBefore : ''); + const cellAfter = 'pair-before-after__cell' + (sevAfter ? ' pair-before-after__cell--severity-' + sevAfter : ''); + residualHtml = '
' + + '
' + + 'FØR TILTAK' + + '' + escapeHtml(labelOf(rp.before)) + '' + + 'Sannsynlighet × konsekvens' + '
' + - '' + - '
' + - 'ETTER TILTAK' + - '' + escapeHtml(labelOf(rp.after)) + '' + - 'Restrisiko' + + '' + + '
' + + 'ETTER TILTAK' + + '' + escapeHtml(labelOf(rp.after)) + '' + + 'Restrisiko' + '
' + '
'; } @@ -4354,8 +4302,8 @@ } return '
' + escapeHtml(txt).replace(/\n/g, '
') + '
'; }; - const tabsNavHtml = tabs.length ? '