diff --git a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html index dcbe73a..304dfe3 100644 --- a/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html +++ b/plugins/ms-ai-architect/playground/ms-ai-architect-playground.html @@ -185,6 +185,15 @@ ikke skubber innhold utenfor viewport. */ .recommendation-card__body { overflow-wrap: anywhere; word-break: break-word; } + /* v1.14.0 sesjon 3: layout-utilities for risk-rapporter (renderDpia, renderSecurity, renderRos). + Speiler Anthropic-ref ros-lier-scenario. Hoist til DS i v1.15.0 hvis andre plugins trenger samme. */ + .ros-layout { display: grid; grid-template-columns: 1fr 320px; gap: var(--space-6); align-items: start; margin-block: var(--space-5); } + .summary-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--space-5); align-items: start; margin-block: var(--space-5); } + @media (max-width: 980px) { .ros-layout, .summary-grid { grid-template-columns: 1fr; } } + .findings-section, .small-multiples-section { margin-block: var(--space-5); } + .findings-section > h3, .small-multiples-section > h3 { margin: 0 0 var(--space-3); font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); } + .findings__items--standalone { list-style: none; margin: 0; padding: 0; border: 1px solid var(--color-border-subtle); border-radius: var(--radius-lg); background: var(--color-surface); overflow: hidden; } + /* v1.13.1 fix (B7): .report-meta er ikke definert i vendored DS — vi bruker
som outer-wrapper i flere rendrere. Browser- defaults for
    gir uforutsigbare indents (Forpliktelser-bullet- @@ -209,12 +218,11 @@ /* v1.13.1 fix (B12, B13, B15): defensive block-layout for sibling-rapport- seksjoner som kan ha overflow-issues mot foregående grid-elementer (.small-multiples, .kanban-board, .mat-ladder). Sikrer eksplisitt - block-flow + clear så de ikke leker grid-celler eller flyter. */ - .top-risks, + block-flow + clear så de ikke leker grid-celler eller flyter. + v1.14.0 sesjon 3: .top-risks fjernet (ligger nå i .card med riktig DS block-flow). */ .suppressed-panel, .phase-detail, .aiact-timeline, - .small-multiples + .top-risks, .kanban-board + .report-meta, .mat-ladder + .phase-detail, .phase-detail + .phase-detail { display: block; clear: both; width: 100%; } @@ -3327,9 +3335,11 @@ } function renderFindingsBlock(findings, label) { - // v1.13.0 fix (B1): DS' .findings er grid 360px+1fr (list+detail-panel). - // Vi har bare list-kolonnen; bruk
    som outer - // for å beholde findings__list-strukturen uten å bli klemt til 360px. + // v1.14.0 sesjon 3: refaktorert fra .report-meta-band-aid til standalone + // findings-section. DS' .findings er grid 360px+1fr (list+detail-panel) — + // siden vi ikke har detail-panel, bruker vi en standalone container med + // .findings__items--standalone-modifier som styles lokalt. + if (!findings || !findings.length) return ''; const items = findings.map(function (f) { return '
  • ' + '' + @@ -3338,14 +3348,9 @@ 'Lokasjon: ' + escapeHtml(f.location || '—') + ' · Severity: ' + escapeHtml(f.severity || '—') + '' + '
  • '; }).join(''); - return '
    ' + - '

    ' + escapeHtml(label) + '

    ' + - '
    ' + - '
    ' + - '
    ' + escapeHtml(label) + '' + findings.length + '
    ' + - '
      ' + items + '
    ' + - '
    ' + - '
    ' + + return '
    ' + + '

    ' + escapeHtml(label) + '

    ' + + '
      ' + items + '
    ' + '
    '; } @@ -3671,7 +3676,12 @@ } function renderDpia(data, slot) { - const matrixHtml = renderMatrixHtml(data, 5); + // v1.14.0 sesjon 3: matrix wrappet i .card med h2 for visuell separasjon + // fra residual-pair og threats-tabell (per Anthropic-ref ros-lier-pattern). + const matrixHtml = '
    ' + + '

    5×5 Risikomatrise

    ' + + renderMatrixHtml(data, 5) + + '
    '; const threatsHtml = renderThreatsTable(data.threats); const rp = data.residualPair; let residualHtml = ''; @@ -3735,34 +3745,51 @@ if (n >= 4) return 'medium'; return 'low'; }; - const matrixHtml = renderMatrixHtml(data, 6); - const radarHtml = renderRadarSvg(data.dimensions || []); - // C7 small-multiples per OWASP-kategori (driver: categoryGrades). + // v1.14.0 sesjon 3: matrix + radar i .ros-layout (1fr 320px) per Anthropic-ref + // ros-lier-scenario. Matrix står i .card, radar i