UI Components

This directory contains documentation for the StellaOps Angular UI components.

Evidence-Weighted Score (EWS) Components

The EWS component suite provides visual representations of vulnerability scores based on evidence-weighted analysis.

Core Components

ComponentPurposeLocation
ScorePillCompact score display with bucket coloringshared/components/score/
ScoreBreakdownPopoverDetailed score breakdown with dimensionsshared/components/score/
ScoreBadgeEvidence flag badges (live-signal, proven-path, etc.)shared/components/score/
ScoreHistoryChartTimeline visualization of score changesshared/components/score/

Feature Components

ComponentPurposeLocation
FindingsListFindings table with EWS integrationfeatures/findings/
BulkTriageViewBulk triage interface with bucket summariesfeatures/findings/

Score Buckets

All EWS components use a consistent bucket system:

BucketScore RangeColorPriority
Act Now90-100Red (#DC2626)Critical - Immediate action required
Schedule Next70-89Amber (#D97706)High - Schedule for next sprint
Investigate40-69Blue (#2563EB)Medium - Investigate when possible
Watchlist0-39Gray (#6B7280)Low - Monitor for changes

Evidence Flags

Findings can have special flags indicating evidence quality:

FlagIconColorDescription
live-signalSignal waveGreenActive runtime signals detected
proven-pathCheckmarkBlueVerified reachability path confirmed
vendor-naStrikethroughGrayVendor marked as not affected
speculativeQuestion markOrangeEvidence is speculative/unconfirmed
anchored[A]VioletScore anchored with DSSE/Rekor attestation
hard-fail[!]RedPolicy hard-fail triggered

Witness Visualization Components

Sprint: SPRINT_20260118_020_FE_witness_visualization

The witness visualization component suite provides UI for runtime witness display, static vs runtime path comparison, and witness gate results in release promotion flows.

Components

ComponentPurposeLocation
WitnessStatusChipStatus badge showing witness state (witnessed/unwitnessed/stale/failed)shared/domain/witness-status-chip/
WitnessComparisonSide-by-side static vs runtime path comparisonshared/components/witness-comparison/
UnwitnessedAdvisoryAdvisory panel for paths without witnessesshared/components/unwitnessed-advisory/
GateSummaryPanelExtended gate summary with witness metricsshared/domain/gate-summary-panel/

Witness States

StateBadge ColorDescription
witnessedGreenPath confirmed by runtime observation
unwitnessedYellowPath not yet observed at runtime
staleOrangeWitness data is outdated
failedRedWitness verification failed

Usage

import {
  WitnessStatusChipComponent,
  WitnessComparisonComponent,
  UnwitnessedAdvisoryComponent,
  GateSummaryPanelComponent,
} from '@app/shared/domain';
<!-- Witness Status Chip -->
<app-witness-status-chip [status]="'witnessed'" [showCount]="true" />

<!-- Witness Comparison -->
<app-witness-comparison [data]="comparisonData" (stepClick)="onStepClick($event)" />

<!-- Unwitnessed Advisory -->
<app-unwitnessed-advisory [data]="advisoryData" (createTestTask)="onCreateTask($event)" />

See witness-visualization.md for full documentation.


Grey Queue Components (withdrawn)

Withdrawn 2026-10-08 (SPRINT_20261007_011 CCP-023). Originally added by SPRINT_20260112_011_FE_policy_unknowns_queue_integration.

GreyQueuePanelComponent, GreyQueueDashboardComponent and DeterminizationReviewComponent read /api/v1/policy/unknowns, which no host maps, and offered triage, escalate and resolve actions without an owner. They are frozen under src/__Obsoleted/Web/StellaOps.Web/CCP-023/ and are not part of the build; do not import or reintroduce them. The Console Unknowns pages (/security/unknowns, /security/unknowns/:unknownId) read the read-only Scanner unknowns registry instead; see docs/UI_GUIDE.md#unknowns.

The shared determinization components under shared/components/determinization/ (observation-state chip, uncertainty indicator, guardrails badge, decay progress) are unaffected.

Quick Start

Import Components

// Score components
import {
  ScorePillComponent,
  ScoreBreakdownPopoverComponent,
  ScoreBadgeComponent,
  ScoreHistoryChartComponent,
} from '@app/shared/components/score';

// Findings components
import {
  FindingsListComponent,
  BulkTriageViewComponent,
} from '@app/features/findings';

Basic Usage

<!-- Display a score pill -->
<stella-score-pill [score]="78" size="md" />

<!-- Display score badges -->
<stella-score-badge type="live-signal" />
<stella-score-badge type="proven-path" />

<!-- Full findings list with scoring -->
<app-findings-list
  [findings]="findings"
  (findingSelect)="onFindingSelect($event)"
/>

Storybook

Interactive examples and documentation are available in Storybook:

cd src/Web/StellaOps.Web
npm run storybook

Navigate to:

Design Tokens

Score colors are defined as CSS custom properties. See design-tokens.md for the full token reference.

Accessibility

All components follow WCAG 2.1 AA guidelines: