Tesserae UI Components Library

A UI toolkit for building web-based user interfaces in C#, compiled to JavaScript via the Transpose C#-to-JavaScript compiler.

Tesserae is distributed as a .NET Standard UI toolkit on NuGet, compatible with most .NET platforms and project types. The library uses the Transpose compiler to translate C# UI components into JavaScript, so you can build web UIs using standard .NET tools and workflows.


What's in this documentation

  • Get started Install Tesserae from NuGet, set up a project, and learn the styling, layout and routing basics.

  • Core concepts How components are composed, how state flows through them, and how rendering meets the Transpose compiler.

  • The component catalog Every component, grouped below by what you are trying to do — lay a page out, capture a value, navigate, show a collection, float a dialog above the page. Each page carries a live sample and the generated API reference.

  • Extending Tesserae Build your own component, call JavaScript from C#, and wrap a third-party JS library.


Layout

Containers you build a page out of.

Stack

A Stack is a container component that abstracts the implementation of a flexbox to layout its children components. It is useful...

Grid

The Grid component provides a flexible layout container that arranges its child components into a grid structure. It is used pr...

Split View

The SplitView component creates a two-pane container that arranges two child components separated by a draggable splitter. This...

Horizontal Split View

A two-pane horizontal container with a draggable splitter for resizing each pane.

Section Stack

SectionStack is a container component used to organize content into distinct sections presented in a vertical layout. It handle...

Card

The Card component provides a contained surface for displaying related content with a title and content sections.

Accordion

The Accordion contains a list of expanders that can be toggled to reveal more information, useful for organizing content into manageable chunks.

Expander

A single expand / collapse section, with a clickable header that reveals its body content. Used standalone for "show more" affordances, o...

Masonry

The Masonry component arranges its child components in a dynamic, grid-like layout where items are organized into columns of eq...

Horizontal Separator

The HorizontalSeparator component is used to visually separate content into distinct groups with a horizontal rule. It can disp...

BackgroundArea

A full-bleed background container used to host a centered card or hero section, typically as the application shell. Combine it with `Card...

Text & Content

Text, labels and rich content blocks.

Text Block

TextBlock is a display component used to render text in a consistent and customizable manner. It is part of the Components grou...

Label

The Label component is used to provide a descriptive title or identifier for a UI element or group of elements. It is typically...

Inline Label

One small fact on a line of them: an optional mark, followed by optional text

List Item Text

A two-line list item that pairs a bold title with a lighter subtitle, with an optional leading icon in a rounded-square background.

SectionTitle

A heading used to label a section of a form or page, with optional subtitle and trailing actions. Pairs well with [SectionStack](../surfa...

Badge

A compact label component for displaying status, counts, or short tags inline with other content.

MarkdownBlock

Renders Markdown text as sanitized HTML. The component uses the bundled marked and DOMPurify libraries (via the Markdown helper) so...

Code Diff

A rendered unified diff, line-by-line or side-by-side

Keyboard Shortcut

Bind keyboard shortcuts to actions across your application.

Link

Removed. A Button with an href is the link now; this page records what maps to what.

Buttons & Commands

Things the user clicks to make something happen.

Button

The Button component provides an interactive UI element that the user can click to trigger an action. It is an essential compon...

Action Button

The ActionButton component is a composite UI control that combines a display area and an associated action button. It is design...

ToggleButton

A button that maintains a checked state. Created by calling .ToToggle() on an existing Button, so all standard button styling (icons,...

IconToggle

A group of icon buttons of which exactly one is selected at a time, like a segmented control. Each item carries a UIcons glyph, a toolt...

Command Bar

A horizontal toolbar for grouping commands and actions with overflow handling.

Overflow Set

The OverflowSet component is a container designed to manage a set of UI items that may overflow the available display space. It...

Menu

A menu surface composed of clickable items, optional headers, dividers and arbitrarily deep nested submenus. Built on top of the [Popover...

Context Menu

The ContextMenu component displays a contextual pop-up menu that appears relative to a target element or specific screen coordi...

Command Palette

A keyboard-driven command launcher for fast in-app actions.

Inputs

Form controls that capture a value.

Text Box

The TextBox component enables users to input text data in your application. It is designed for use in forms or any area where t...

Text Area

A multi-line text input for longer-form input.

Editable Label

EditableLabel is a UI component that displays text which can be clicked to switch into an inline editing mode. In this mode, us...

Editable Area

EditableArea is an inline editing component for multi-line text. It displays formatted text until the user enters edit mode, then swaps t...

Annotated Text Editor

A specialized editor for annotating text with custom highlights, comments, or marks.

Check Box

The CheckBox component is a UI element used for binary selection, allowing users to toggle between two states: checked and unch...

Toggle

The Toggle component represents a physical switch that allows users to turn a setting on or off. It is ideal for binary operati...

Choice Group

The ChoiceGroup component allows users to select a single option from a set of mutually exclusive choices, similar to a group o...

Option

The Option component represents a single mutually exclusive choice inside a ChoiceGroup. In the public API, the helper method is `Choic...

Dropdown

The Dropdown component renders an interactive list of options with a single visible selected item by default. When a user click...

Picker

Picker is a versatile UI component used for selecting items from a list of suggestions. It provides support for both multi-sele...

TagsInput

A form input that lets the user assemble a list of short string values ("tags" or "chips") by typing them in and confirming each with a d...

Number Picker

The NumberPicker component is a numeric input control that leverages the native HTML number input field. It provides a fluent A...

Slider

The Slider component represents a range input control that allows users to select a numeric value within a specific range. It i...

Steps Slider

A slider variant for selecting from discrete, ordered steps.

Rating

Displays and collects star-based ratings.

Color Picker

The ColorPicker component provides a native browser widget for selecting colors. It is part of the Tesserae UI library's Compon...

Grid Picker

The GridPicker component creates an interactive grid of buttons, where each cell can have multiple states. It is used for build...

File Selector & Drop Area

Pick files from a dialog, or drop them onto a target area.

Date & Time

Calendar, clock and schedule pickers.

Date Picker

The DatePicker is a UI component that allows users to select a date using the native browser date picker widget. As part of the...

DateRangePicker

A composite picker for selecting a contiguous range of dates ("from" → "to"). Internally composed of two DatePicker instances joined by...

Date Time Picker

The DateTimePicker component provides a native browser widget for selecting date and time values. It is designed for situations...

Time Picker

The TimePicker component provides a native browser control for selecting a time. It stores the selected value as a DateTimeOffset and i...

Month Picker

A component for selecting a month from a year view.

Week Picker

A picker for selecting a specific week within a calendar year.

Time Histogram Picker

A time range picker visualized over a histogram of data density.

Cron Editor

A specialized editor for building cron expressions through a guided UI.

Forms & Validation

Binding a form to data, validating it and saving it.

Property Grid

A two-way-bound editing form generated from a typed object's public properties

Questionnaire

An inline question with choice buttons that locks once answered

Validator

The Validator is a utility component designed to orchestrate and centralize the validation of multiple UI elements. It register...

Save Button

A button with built-in state management for save operations (idle, saving, saved, error).

Saving Toast

A toast notification that reflects save operation status with built-in state transitions.

Moving between pages, sections and tabs.

Sidebar

A collapsible side panel for navigation or supplemental content.

Sidebar Separator

A separator used to visually group items in a Sidebar.

Navbar

A top navigation bar for displaying brand, navigation links, and command actions.

Sidenav

A vertical navigation component for primary application navigation.

Pivot

The Pivot component is a tab-based container used to organize and display content panels within a user interface. It allows use...

Segmented Pivot

A pivot using segmented control styling for switching between content panels.

Card Pivot

A pivot variant that displays each tab as a selectable card with associated content.

Pivot Selector

A selector-style pivot for switching between content panels.

Breadcrumb

The Breadcrumb component is used to display a navigational trail, indicating the user's current page within a hierarchical stru...

Text Breadcrumbs

The TextBreadcrumbs component is used as a navigational container that aggregates multiple TextBreadcrumb components. It displa...

Pagination

Controls for navigating through paginated content with page numbers and next/previous actions.

Inline Pagination

The compact “‹ 3 of 7 ›” control, for stepping through a set one at a time

Stepper

A guided multi-step process indicator and navigator.

Lists & Data

Rendering a collection of items.

Items List

ItemsList is a flexible list component designed for displaying small sets of items. It belongs to the Collections group and can...

Details List

DetailsList is a robust component for displaying an information-rich collection of items. It extends the basic List capabilitie...

Details Grid

A bordered table of label/value rows, for the metadata block of a preview

Virtualized List

VirtualizedList is a collection component designed to efficiently render large sets of items by virtualizing the DOM content. I...

Infinite Scrolling List

InfiniteScrollingList is a dynamic component designed to display a paginated list of UI elements that loads additional content ...

Observable Stack

ObservableStack is a container component that manages the display of its child components using a flexbox-inspired layout and a...

Sortable Stack

A Stack whose items can be reordered by drag and drop, reporting the new order.

Tree

A hierarchical tree view for navigating nested data structures.

Timeline

The Timeline component provides a base for rendering vertical timelines. It arranges timeline items and alternates their placem...

Task Board

A kanban-style board for organizing tasks across columns.

Search inputs and the surfaces that show their results.

Search Box

SearchBox provides a dedicated input field for searching through content. It is designed to capture search queries either when ...

Searchable List

The SearchableList component is a generic list container designed to display and filter a collection of items that implement th...

Searchable Grouped List

SearchableGroupedList is a versatile collection component designed to render a list of items that can be grouped and searched. ...

Omni Box

A flexible input field combining search and command palette behaviors.

Omni Result

A search-result row: icon tile, title, excerpt, footer and the full view behind it

Charts & Visualization

Numbers and relationships, drawn.

Charts

Line, area, bar and pie charts drawn from typed series

Sparkline

A compact inline chart for visualizing trends in small spaces.

Metric

Displays a single key metric with optional trend indicators and labels.

Contribution Bar

A stacked horizontal bar showing how weighted segments add up to a total

Uptime

Visualization for uptime status across days, weeks, or other time periods.

Diagram

A flow-chart surface with draggable nodes and auto-routed arrows

Node View

The NodeView component is a powerful utility for rendering interactive node-based flows. It is used to define and display nodes...

Feedback & Status

Progress, notifications, tooltips and empty states.

Message

An inline notification component for displaying success, warning, error, or informational content.

Toast

The Toast component provides short-lived notifications that alert users with important messages, such as success, information, ...

Notification Center

An in-app notification center for collecting and displaying app notifications.

Tippy

Tooltips on any component, wrapping Tippy.js — text, HTML or a component.

Spinner

The Spinner component is a visual indicator that displays an animated circle outline, suggesting that a background process is r...

Progress Indicator

The ProgressIndicator is a UI component used to visually represent the completion status of an operation when the total units o...

Progress Ring

A circular progress indicator showing completion of an operation.

Progress Modal

ProgressModal is a modal dialog component designed for displaying progress information in a blocking UI overlay. It is part of ...

Skeleton

Placeholder loading states that mimic the layout of content being loaded.

Overlays & Dialogs

Surfaces that float above the page.

Dialog

The Dialog component is a modal overlay that is used to display temporary content and gather user confirmation or input. It blo...

Modal

The Modal component provides a temporary overlay window that can be used to display contextual information or gather user input...

Tabbed Modal

A modal dialog organized with tabs for displaying multiple related content sections.

Panel

The Panel component creates a modal or non-modal overlay that presents contextual content, such as forms or informational messa...

Popover

A reusable, anchored overlay surface used to display arbitrary IComponent content next to another component (the anchor). Popovers are...

Float

The Float component is part of the Surfaces group and is designed to create absolute-positioned overlays within other container...

Layer

The Layer component is a technical utility used to render content outside the main DOM tree, appending it at the end of the doc...

Teaching

A coach-mark component for highlighting features and providing in-app tutorials.

Tutorial Modal

The TutorialModal is a surface component used to display a guided tutorial or multi-step process to the user. It provides a str...

AI & Chat

Conversation, tool calls and the context around them.

Chat

A conversational interface for displaying message threads and sending messages.

Context Card

A card describing one piece of context attached to a conversation, and the group that folds several of them behind one summary

ToolCall

Inline tool-call indicator that expands accordion-style to show the associated content. The content component is created lazily the first...

Plan

A component for visualizing structured plans, checklists, or step-by-step processes.

Resource Card

A card variant designed for displaying resource summaries with metadata.

Media & Graphics

Images, avatars and embedded content.

Avatar

The Avatar component represents users with images, initials, and presence indicators.

Pixel Avatar

An animated pixel-art avatar that can perch on another component

Carousel

The Carousel component cycles through a list of items, typically images, in a horizontal sliding fashion.

Image

A responsive image element with optional sizing, fit-mode and lazy-loading support. Use the fluent helpers to set fit behaviour (Cover,...

Pages Stack

A fanning stack of page thumbnails, as the preview rail of a result

Sandbox

An iframe that renders untrusted HTML or external URLs in a locked-down context

Theming & Icons

Colours, gradients, icons and emoji.

Colors

Utilities for working with theme color tokens and palette helpers.

Theme Colors

Switch between light and dark and customise the theme palette via CSS variables.

Color Palette

A picker for selecting colors from a predefined palette.

Gradients

Helpers for creating themed gradients used in backgrounds and surfaces.

Icon

The Icon component renders a visual glyph using either the strongly typed UIcons set or an Emoji. It is useful for reinforcing action...

UIcons

A strongly typed UIcons enum over the bundled UIcons icon set.

Emoji

A strongly typed Emoji enum over the bundled Emoji.css set.

Utilities & Behaviors

Helpers that render little or nothing on their own.

Observables

Lightweight state containers that notify components when a value changes.

Defer

Renders content asynchronously, running the task on first render.

Defer With Progress

Defer initialization of components while showing a progress indicator.

Delta Component

A component that visualizes changes between two values with positive/negative styling.

Gestures

Tap, double-tap, long-press, pan, pinch and rotate recognition on any component.

VisibilitySensor

A component that fires an action when it scrolls into the viewport. Useful for triggering lazy loading, telemetry, infinite-scroll pagina...

Extending Tesserae

The IComponent Interface

The interface every component implements, and the fluent extension methods shared across all of them.

Creating a Component

Build your own component by implementing IComponent or deriving from ComponentBase.

JavaScript Interop

Call JavaScript and browser APIs from C# through the Transpose compiler.

Wrapping a JS Library

Bundle a third-party JavaScript library and wrap it as a Tesserae component.


Who this is for

  • .NET developers building web UIs in C#.
  • Teams using the Transpose compiler to run C# in the browser.
  • Anyone looking for a strongly-typed C# component library for web UIs.

About Tesserae

Tesserae lets you write UI components in C# and compile them to JavaScript using the Transpose toolchain, so the same language can be used across the web application stack. The toolkit focuses on type safety, composability, and a fluent API surface for C# developers.


If you're new here, start with Project Setup, then read Layout & Alignment to build your first Tesserae UI.

© 2026 Curiosity. All rights reserved.