# @elabs-ai/components-process > Process mining and event-log analysis: process map, variants, cases, conformance — composes flow/charts/data. Import from `@elabs-ai/components-process`. Part of brand-ui — see the root `llms.txt` for routing. ## Components - AbstractionControls - ACTIVITY_COLOR_SLOTS - ACTIVITY_OTHER_TOKEN - CASE_TABLE_COLUMN_LABEL_KEYS - CaseTable - CaseTimeline — One process case as a timeline: each activity as a bar with its duration and the waiting time between activities, for a case drill-down. - CompareKpiStrip - CompareSide - CONFORMANCE_OVERLAY_DEFAULT_METRIC - CONFORMANCE_STATE_DEFAULT_LABELS - CONFORMANCE_STATE_ENCODING - CONFORMANCE_STATES - ConformanceLegend - ConformanceOverlay - ConformanceStateMark - CongestionHeat - DEFAULT_LAYOUT_DEBOUNCE_MS - DIFF_STATE_TOKEN - DOTTED_CHART_DEFAULT_LABELS - DOTTED_CHART_DOT_RADIUS - DottedChart - EMPTY_PROCESS_GRAPH - EMPTY_PROCESS_MAP_HOVER - GHOST_OPACITY - HAPPY_PATH_EDITOR_DEFAULT_LABELS - HappyPathEditor - HappyPathEditorContext - HappyPathStepNode - MetricLayerSwitch - OBJECT_CENTRIC_MAP_DEFAULT_LABELS - OBJECT_TYPE_ABSTRACTION_DEFAULT_LABELS - PERFORMANCE_SPECTRUM_DEFAULT_BIN_SIZE - PERFORMANCE_SPECTRUM_DEFAULT_LABELS - PERFORMANCE_SPECTRUM_ROW_HEIGHT - PERFORMANCE_SPECTRUM_SEGMENT_LIMIT - PerformanceSpectrum - PROCESS_FILTER_INTENT_KINDS - PROCESS_FILTER_INTENT_LABELS - PROCESS_FILTER_INTENT_MESSAGE_KEYS - PROCESS_MAP_EDGE_SCALE_GROUP - PROCESS_MAP_LEGIBLE_ZOOM - PROCESS_MAP_NODE_MOTION_CLASS - PROCESS_REPLAY_DEFAULT_LABELS - PROCESS_REPLAY_DEFAULT_METRIC - PROCESS_SELECTION_STATE_MESSAGE_KEYS - ProcessActivityNode — One activity on the process map: a FlowNode carrying the metric value, a meter bar, start/end role and a rework tally. - avoid: Registering it directly as a React Flow node type outside `ProcessMap` — it reads the map's hover/selection context and expects `buildProcessMapModel`'s node data. - avoid: Dropping the printed value and keeping only the fill saturation — saturation is the third channel, never the first. - avoid: Hand-rolling a focus ring on it — it composes `FlowNode`, which already owns the compound indicator and the `ring-2 ring-ring` selection ring. - ProcessCompare - ProcessFilterBar - ProcessKpiStrip - ProcessMap — Directly-follows process map: activities as nodes, transitions as edges, both painted from one metric choice, with an accessible table twin. - avoid: Encoding the metric in colour alone — an edge carries its reading as stroke WIDTH and a printed label pill before it carries it as hue, and a node prints its value beside the meter bar. A greyscale render must still be readable (WCAG 1.4.1). - avoid: Reaching for raw `ReactFlow`/`Panel`/`Handle` to add canvas furniture — the map is a composition of flow's CanvasShell; an overlay is an absolutely-positioned sibling, and a missing primitive is a `@elabs-ai/components-flow` change. - avoid: Re-deriving the numbers for a table, an export or a tooltip — `tableView` and the canvas render from the SAME model, which is what stops the two from disagreeing. - avoid: Passing a raw event log on every render — pass `graph` from `discoverGraph` (or memoize the log) so a metric switch never re-runs discovery or the dagre layout. - ProcessMapEdgeKeyContext - ProcessMapHoverContext - ProcessReplay - ProcessReplayTokensContext - ProcessTransitionEdge — One directly-follows relation on the process map: a weighted edge whose width, printed pill and SHAPE (dashed back-edge, closed self-loop) carry the metric. - avoid: Writing a pixel width into `data.weight` — it is the RAW metric value, and `@elabs-ai/components-flow`'s `computeEdgeWeightScale` owns the min-max into `DEFAULT_EDGE_WIDTH_RANGE`. - avoid: Suppressing the label pill on a dense map — width alone is a colour-adjacent single channel, and the pill is what makes the reading recoverable. - avoid: Distinguishing a back-edge or a self-loop by hue — the shape (dash pattern, closed arc) is the cue that survives greyscale. - REPLAY_PLAYBACK_MS - REPLAY_SPEEDS - ReplayControls - VARIANT_EXPLORER_COLUMNS - VARIANT_EXPLORER_DEFAULT_LABELS - VARIANT_EXPLORER_ROW_HEIGHT - VariantExplorer - VIOLATION_LIST_DEFAULT_LABELS - ViolationList ## Hooks - useHappyPathEditor - useProcessExplorer - useProcessLayout - useProcessMapEdgeKeys - useProcessMapHover - useProcessReplayEdgeTokens - useReplayTimeFormatter ## Subpath exports - ACTIVITY_COLOR_SLOTS (`@elabs-ai/components-process/core` · component) - ACTIVITY_OTHER_TOKEN (`@elabs-ai/components-process/core` · component) - BPI_2012_ACTIVITIES (`@elabs-ai/components-process/core` · component) - BPI_2012_SUBSET_EPOCH (`@elabs-ai/components-process/core` · component) - DEFAULT_LIFECYCLE_VALUES (`@elabs-ai/components-process/core` · component) - DEVIATION_TYPES (`@elabs-ai/components-process/core` · component) - DURATION_SAMPLE_CAP (`@elabs-ai/components-process/core` · component) - DURATION_UNIT_MS (`@elabs-ai/components-process/core` · component) - DurationSampler (`@elabs-ai/components-process/core` · component) - EDGE_KEY_SEPARATOR (`@elabs-ai/components-process/core` · component) - EMPTY_DURATION_STATS (`@elabs-ai/components-process/core` · component) - OCEL_EVENT_ID_ATTRIBUTE (`@elabs-ai/components-process/core` · component) - OCEL_OBJECT_REFS_ATTRIBUTE (`@elabs-ai/components-process/core` · component) - REPLAY_MAX_FRAMES (`@elabs-ai/components-process/core` · component) - REPLAY_TARGET_FRAMES (`@elabs-ai/components-process/core` · component) - REPLAY_TOKEN_RADIUS_RANGE (`@elabs-ai/components-process/core` · component) - SYNTHETIC_ACTIVITIES (`@elabs-ai/components-process/core` · component) - SYNTHETIC_LOG_EPOCH (`@elabs-ai/components-process/core` · component) - TRIM_FRACTION (`@elabs-ai/components-process/core` · component) - VARIANT_KEY_SEPARATOR (`@elabs-ai/components-process/core` · component)