# NexusIcon

- File ID: file:q8opk3:nexusicon-razor
- Path: NexusReader.UI.Shared/Components/Atoms/NexusIcon.razor
- Role: ui-component
- Layer: frontend

## Purpose

Razor UI component that renders an SVG icon by name; maps a string Name to concrete SVG paths and exposes common component parameters (Size, Class, AdditionalAttributes).

## Key Details

Rendering is entirely switch-driven on a normalized Name value; supports attribute passthrough and CSS/size customization; default fallback circle ensures a visible SVG if the name is unrecognized.

## Symbols

- NexusIcon: Razor UI component that renders an SVG icon by name; maps a string Name to concrete SVG paths and exposes common component parameters (Size, Class, AdditionalAttributes).
- Render (Razor template / component render): Renders an <svg> element and selects SVG child elements based on the lowercase Name parameter; merges additional attributes into the svg element.
- NexusIcon (component parameters): Component parameter definitions that control which icon is rendered and how (size, css class, extra attributes).

## Dependencies

- No resolved dependencies.

## Calls

- No resolved calls.

## Coverage

- Symbols: 3
- Executable symbols: 1
- Executable symbols with control flow: 1
- Grounded edges: 3
- Unresolved references: 0
- Control-flow fragments: 1
- Unresolved jumps: 0
- Unsupported constructs: 0
- Control-flow coverage: 100%
- Required diagrams: 2
- Generated diagrams: 3

## Control Flow Fragments

- Render (Razor template / component render): 20 nodes, 23 edges, 0 jumps, 0 unsupported constructs

## Diagrams

### NexusIcon Neighborhood

```mermaid
flowchart LR
    class_rzlm6n_nexusicon("NexusIcon")
    file_q8opk3_nexusicon_razor("NexusIcon")
    method_viikop_render_razor_template_component_render[["Render (Razor template / component render)"]]
    type_1wz8rxq_nexusicon_component_parameters[/"NexusIcon (component parameters)"/]
```

### NexusIcon Execution Overview

```mermaid
flowchart TD
    class_rzlm6n_nexusicon("NexusIcon")
    method_viikop_render_razor_template_component_render[["Render (Razor template / component render)"]]
    class_rzlm6n_nexusicon -->|contains| method_viikop_render_razor_template_component_render
```

### Render (Razor template / component render)() Control Flow

_Warnings: diagram method_viikop_render_razor_template_component_render__fragment_diagram exceeds preferred complexity thresholds (20 nodes, 23 edges)._

```mermaid
---
config:
  flowchart:
    defaultRenderer: "elk"
---
flowchart TD
    method_viikop_render_razor_template_component_render__action_1_attribute_merge_1__linear("Merge AdditionalAttributes into svg element via @attributes")
    method_viikop_render_razor_template_component_render__action_1_parameter_usage_1__linear("Use Size parameter for svg width/height")
    method_viikop_render_razor_template_component_render__action_2_branch_2__condition{"Name.ToLowerInvariant() matches specific icon keys"}
    method_viikop_render_razor_template_component_render__action_2_branch_2__false("map (lines 8-12)")
    method_viikop_render_razor_template_component_render__action_2_branch_2__merge("merge")
    method_viikop_render_razor_template_component_render__action_2_branch_2__true("home (lines 4-7)")
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__case_0("case")
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch{"Name.ToLowerInvariant()"}
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch_merge("merge")
    method_viikop_render_razor_template_component_render__action_2_transformation_2__linear("Normalize Name for matching")
    method_viikop_render_razor_template_component_render__action_89_fallback_89__condition{"Default icon fallback"}
    method_viikop_render_razor_template_component_render__action_89_fallback_89__false("false")
    method_viikop_render_razor_template_component_render__action_89_fallback_89__merge("merge")
    method_viikop_render_razor_template_component_render__action_89_fallback_89__true("true")
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__condition{"Falls back to alternate path"}
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__false("otherwise")
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__merge("merge")
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__true("fallback")
    method_viikop_render_razor_template_component_render__entry(["Render (Razor template / component render) entry"])
    method_viikop_render_razor_template_component_render__implicit_return(["return"])
    method_viikop_render_razor_template_component_render__action_1_attribute_merge_1__linear -->|next| method_viikop_render_razor_template_component_render__action_2_branch_2__condition
    method_viikop_render_razor_template_component_render__action_1_parameter_usage_1__linear -->|next| method_viikop_render_razor_template_component_render__action_1_attribute_merge_1__linear
    method_viikop_render_razor_template_component_render__action_1_parameter_usage_1__linear -->|next| method_viikop_render_razor_template_component_render__action_1_parameter_usage_1__linear
    method_viikop_render_razor_template_component_render__action_2_branch_2__condition -->|map lines 8-12| method_viikop_render_razor_template_component_render__action_2_branch_2__false
    method_viikop_render_razor_template_component_render__action_2_branch_2__condition -->|home lines 4-7| method_viikop_render_razor_template_component_render__action_2_branch_2__true
    method_viikop_render_razor_template_component_render__action_2_branch_2__false -->|next| method_viikop_render_razor_template_component_render__action_2_branch_2__merge
    method_viikop_render_razor_template_component_render__action_2_branch_2__merge -->|next| method_viikop_render_razor_template_component_render__action_2_transformation_2__linear
    method_viikop_render_razor_template_component_render__action_2_branch_2__true -->|next| method_viikop_render_razor_template_component_render__action_2_branch_2__merge
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__case_0 -->|next| method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch_merge
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch -->|case| method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__case_0
    method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch_merge -->|fallback| method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__condition
    method_viikop_render_razor_template_component_render__action_2_transformation_2__linear -->|next| method_viikop_render_razor_template_component_render__action_2_render_razor_template_component_render_switch_2_0__switch
    method_viikop_render_razor_template_component_render__action_89_fallback_89__condition -->|false| method_viikop_render_razor_template_component_render__action_89_fallback_89__false
    method_viikop_render_razor_template_component_render__action_89_fallback_89__condition -->|true| method_viikop_render_razor_template_component_render__action_89_fallback_89__true
    method_viikop_render_razor_template_component_render__action_89_fallback_89__false -->|next| method_viikop_render_razor_template_component_render__action_89_fallback_89__merge
    method_viikop_render_razor_template_component_render__action_89_fallback_89__merge -->|return| method_viikop_render_razor_template_component_render__implicit_return
    method_viikop_render_razor_template_component_render__action_89_fallback_89__true -->|next| method_viikop_render_razor_template_component_render__action_89_fallback_89__merge
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__condition -->|otherwise| method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__false
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__condition -->|fallback| method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__true
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__false -->|next| method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__merge
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__merge -->|fallback| method_viikop_render_razor_template_component_render__action_89_fallback_89__condition
    method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__true -->|next| method_viikop_render_razor_template_component_render__action_89_render_razor_template_component_render_fallback_89_1__merge
    method_viikop_render_razor_template_component_render__entry -->|next| method_viikop_render_razor_template_component_render__action_1_parameter_usage_1__linear
```

## Diagram Validation

- Status: warn
- Warning: control-flow: diagram method_viikop_render_razor_template_component_render__fragment_diagram exceeds preferred complexity thresholds (20 nodes, 23 edges).
