# greepar/staticlink.avalonia architecture

> Architecture diagram of the GitHub repository greepar/staticlink.avalonia, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/greepar/staticlink.avalonia
- Repository: https://github.com/greepar/staticlink.avalonia

## Overview

StaticLink.Avalonia provides NuGet packages that supply static native graphics libraries for Avalonia NativeAOT publishing, plus an optional macOS Avalonia-native package. The main workflow is an Avalonia application referencing the matching graphics package, then publishing for a supported runtime identifier with NativeAOT. macOS applications can additionally reference the Avalonia-version-matched native package; its module initializer performs a defensive AppKit font warmup. The README documents platform and renderer constraints. Package build-transitive behavior is represented at its directory level because those target files were not sampled.

Main entry points: [`NuGet/StaticGraphics/StaticLink.Avalonia.csproj`](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/StaticLink.Avalonia.csproj) (Static graphics package), [`NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj`](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj) (Avalonia native package), [`NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs`](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs) (Font warmup), [`NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.props`](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.props) (Graphics props)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_packages["NuGet packages"]
  node_graphics["Static graphics package"]
  node_native["Avalonia native package"]
end

subgraph group_integration["Build integration"]
  node_graphics_props["Graphics props"]
  node_graphics_targets["Graphics targets"]
  node_native_props["Native props"]
  node_native_targets["Native targets"]
end

subgraph group_macos["macOS startup"]
  node_font_warmup["Font warmup"]
end

node_developer(("Application developer"))
node_app["Avalonia application"]
node_publish["NativeAOT publish"]
node_avalonia["Avalonia and SkiaSharp"]
node_macos["macOS AppKit"]

node_developer -->|"builds with"| node_app
node_app -->|"references"| node_graphics
node_app -.->|"optionally references"| node_native
node_publish -->|"imports"| node_graphics_props
node_publish -->|"executes"| node_graphics_targets
node_publish -.->|"optionally imports"| node_native_props
node_publish -.->|"optionally executes"| node_native_targets
node_graphics -->|"supports"| node_avalonia
node_native -->|"includes"| node_font_warmup
node_font_warmup -->|"calls Objective-C runtime"| node_macos

click node_graphics "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/StaticLink.Avalonia.csproj"
click node_graphics_props "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.props"
click node_graphics_targets "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.targets"
click node_native "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj"
click node_native_props "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.props"
click node_native_targets "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.targets"
click node_font_warmup "https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_graphics,node_native toneBlue
class node_graphics_props,node_graphics_targets,node_native_props,node_native_targets toneAmber
class node_font_warmup toneMint
class node_developer,node_app,node_publish,node_avalonia,node_macos toneIndigo
```

## Components

### NuGet packages

- [Static graphics package](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/StaticLink.Avalonia.csproj): `NuGet/StaticGraphics/StaticLink.Avalonia.csproj`
- [Avalonia native package](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj): `NuGet/AvaloniaNative/StaticLink.Avalonia.Native.csproj`

### Build integration

- [Graphics props](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.props): `NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.props`
- [Graphics targets](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.targets): `NuGet/StaticGraphics/buildTransitive/StaticLink.Avalonia.targets`
- [Native props](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.props): `NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.props`
- [Native targets](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.targets): `NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.targets`

### macOS startup

- [Font warmup](https://github.com/greepar/staticlink.avalonia/blob/main/NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs): `NuGet/AvaloniaNative/buildTransitive/StaticLink.Avalonia.Native.MacOSFontWarmup.cs`

### Other components

- **Application developer**
- **Avalonia application**
- **NativeAOT publish**
- **Avalonia and SkiaSharp**
- **macOS AppKit**

## Connections

- Application developer → Avalonia application: builds with
- Avalonia application → Static graphics package: references
- Avalonia application → Avalonia native package: optionally references
- NativeAOT publish → Graphics props: imports
- NativeAOT publish → Graphics targets: executes
- NativeAOT publish → Native props: optionally imports
- NativeAOT publish → Native targets: optionally executes
- Static graphics package → Avalonia and SkiaSharp: supports
- Avalonia native package → Font warmup: includes
- Font warmup → macOS AppKit: calls Objective-C runtime
