Fuaran.UI.Renderer.Core
0.39.0
Prefix Reserved
dotnet add package Fuaran.UI.Renderer.Core --version 0.39.0
NuGet\Install-Package Fuaran.UI.Renderer.Core -Version 0.39.0
<PackageReference Include="Fuaran.UI.Renderer.Core" Version="0.39.0" />
<PackageVersion Include="Fuaran.UI.Renderer.Core" Version="0.39.0" />
<PackageReference Include="Fuaran.UI.Renderer.Core" />
paket add Fuaran.UI.Renderer.Core --version 0.39.0
#r "nuget: Fuaran.UI.Renderer.Core, 0.39.0"
#:package Fuaran.UI.Renderer.Core@0.39.0
#addin nuget:?package=Fuaran.UI.Renderer.Core&version=0.39.0
#tool nuget:?package=Fuaran.UI.Renderer.Core&version=0.39.0
Fuaran.UI.Renderer.Core
The emission-agnostic render spine for the Fuaran UI language. This package
holds the parity-critical logic that every Fuaran renderer — the Feliz/React
client renderer (Fuaran.UI.Renderer) and the Feliz.ViewEngine server renderer
(Fuaran.UI.Renderer.Server) — must compute identically, factored out so the
two backends consume one source of truth instead of forking it.
No Feliz, no Fable.React, no React — this is the spine, not a renderer.
Under dotnet build the only package dependency is FSharp.Core (plus the
typed tree, Fuaran.UI). Fable.Core is referenced solely for
Formatting.fs's #if FABLE_COMPILER Intl interop (the browser
locale-formatting path); the .NET build excludes that branch entirely, so the
server renderer consumes a pure-.NET assembly. Same Fable-portable posture as
Fuaran.UI.LayoutObserver. Everything here runs in a pure-.NET context and
transpiles cleanly under Fable.
What's in here
| Module | Role |
|---|---|
Fuaran.UI.Renderer.Sanitize |
Render-time injection-safety floor — ExtraAttributes allowlist, URL-scheme gate, markdown raw-HTML sweep. |
Fuaran.UI.Renderer.Theme |
Semantic class-name vocabulary (nodeClassName / kindClass / toneVar / weightVar / emphasisVar / motionVar) + the Theme → CSS-variable projection + JSON round-trip. |
Fuaran.UI.Renderer.Formatting |
Locale-aware value formatting for Binding.Format (Intl on Fable, System.Globalization fallback on .NET). |
Fuaran.UI.Renderer.BindingResolver |
Resolves a typed Binding<'T> against BindingSources to a Resolution<'T> — the resolution that drives every data-bound component's state-slot dispatch. |
Fuaran.UI.Renderer.Accessibility |
Projects a Node.Accessibility trait to (attr-name, attr-value) pairs (the renderer-neutral aria/role attribute set). |
Fuaran.UI.Renderer.Ids |
Deterministic correlation ids (deterministicCorrelationId) so identical trees render byte-identical output — cache-stable + SSR/hydration-parity-safe — plus a randomCorrelationId escape hatch. |
Namespace-preservation guarantee
The four modules extracted from Fuaran.UI.Renderer (Sanitize, Theme,
Formatting, BindingResolver) keep their original
Fuaran.UI.Renderer.* module names. Fuaran.UI.Renderer takes a package
reference on this assembly, so any consumer that imported
Fuaran.UI.Renderer.Sanitize / .Theme / .Formatting / .BindingResolver
sees no source change — the modules simply live in a different assembly now.
Render.accessibilityAttributes is re-exported from Fuaran.UI.Renderer for
the same reason.
This is the prerequisite extraction (Phase 138) for the Wave 18 SSR + isomorphic hydration work: the server renderer reuses this spine without pulling Fable.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Fable.Core (>= 5.0.0)
- FSharp.Core (>= 10.1.300)
- Fuaran.Core.Column (>= 0.11.0)
- Fuaran.Core.DataFrame (>= 0.11.0)
- Fuaran.Core.Tree (>= 0.11.0)
- Fuaran.Core.Validator (>= 0.11.0)
- Fuaran.Core.Wire (>= 0.11.0)
- Fuaran.UI (>= 0.39.0)
NuGet packages (8)
Showing the top 5 NuGet packages that depend on Fuaran.UI.Renderer.Core:
| Package | Downloads |
|---|---|
|
Fuaran.UI.Charts
Fuaran chart lowering — the render-time Chart → Drawing layout engine (bar / line): a bounded, deterministic ChartSpec + data → canonical Drawing subtree (scales, ticks, axes, gridlines, legend, series geometry). Chart stays a semantic wire kind; this is the reference lowering the other hosts conform to. FSharp.Core + Renderer.Core only, Fable-portable. Apache-2.0 licensed. |
|
|
Fuaran.UI.Renderer
Fuaran renderer – Fable + React + Feliz. Every string-to-DOM seam carries a declared sanitisation posture (SANITIZATION.md states it seam by seam): an allowlisted URL-scheme floor on href/src that also rejects the protocol-relative spellings, a positive character gate on extra-attribute names, and a raw-HTML floor over rendered markdown. Interactive dispatch fails closed – a shipped runtime denies until the host grants, and the permissive posture is reached by name. Apache-2.0 licensed. |
|
|
Fuaran.UI.Renderer.Server
Fuaran server-side renderer — turns a Node tree into an HTML string on plain .NET (no React, no Fable) via Feliz.ViewEngine, for SEO surfaces with no client-runtime requirement. Class + ARIA parity with the Feliz client renderer (shared Fuaran.UI.Renderer.Core spine), and the same declared sanitisation posture (SANITIZATION.md) – with the attribute-name gate re-checked at the emission site, since HTML offers no escape for an illegal character in an attribute name and a string renderer has no library validation to fall back on. Apache-2.0 licensed. |
|
|
Fuaran.UI.ServerDriven
Fuaran server-driven interactivity — the transport-agnostic core for the third client tier (HTMX / LiveView / Blazor-Server-shaped): the closure-free DomPatch + ClientEffect wire vocabularies the generic JS shim applies, the TreeOp→DomPatch lowering, the per-connection driver, and the IFuaranLiveChannel transport seam. Keep the Elmish update loop on the server; ship ~nothing to the browser. No platform-SDK dependency. Apache-2.0 licensed. |
|
|
Fuaran.UI.Giraffe
Fuaran SSR host-integration adapter for Giraffe / ASP.NET (Phase 162). Turns "render this Node tree as a crawlable page" into one HttpHandler call: a typed DocumentShell (title / meta / canonical / OG+Twitter / JSON-LD / stylesheet+script refs) composed around the body fragment Renderer.Server emits, plus a deterministic strong-ETag/304 + render-cache seam (IFuaranRenderCache) for high-fan-out SEO surfaces. Giraffe is isolated to this package — the language tier and Renderer.Server stay Giraffe-free. Apache-2.0 licensed. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.39.0 | 0 | 8/27/2026 |
| 0.35.0 | 125 | 8/24/2026 |
| 0.32.0 | 156 | 8/23/2026 |
| 0.31.0 | 189 | 8/21/2026 |
| 0.30.0 | 170 | 8/21/2026 |
| 0.29.0 | 180 | 8/19/2026 |
| 0.28.0 | 171 | 8/18/2026 |
| 0.27.0 | 159 | 8/18/2026 |
| 0.26.0 | 179 | 8/18/2026 |
| 0.18.0 | 159 | 8/10/2026 |
| 0.15.0 | 152 | 8/9/2026 |
| 0.12.0 | 187 | 7/31/2026 |
| 0.11.0 | 167 | 7/30/2026 |
| 0.10.0 | 222 | 7/29/2026 |
| 0.6.0 | 181 | 7/27/2026 |
| 0.4.0 | 184 | 7/26/2026 |
| 0.3.0 | 195 | 7/24/2026 |