Skip to content

Components

Every UI element extends Component — see the mental model for the architectural foundation.

This page is a flat catalog. Per-component documentation lives in the API reference until dedicated pages land.

Core

ComponentPurpose
ComponentBase class — position, size, styling, child tree
BaseObjectUUID-based identity above Component
BodySingleton wrapping document.body; bootstraps the framework
WindowFloating, draggable, resizable window
DialogModal dialog with async result
TooltipSingleton hover hint, attach via Tooltip.attach(component, text)
PopoverAnchored, non-modal floating bubble with arrow tail and dismiss modes
NotificationStatic toast — Notification.show(message, type, duration?)
AnimatedDropdownFloating-panel base with shared fade lifecycle

Buttons

ComponentPurpose
ButtonStandard click button
ToggleButtonTwo-state press button
RadioButtonSingle-selection radio (use with ButtonGroup)
ButtonGroupEnforces single selection across radio / toggle buttons
SpinButtonUp / down arrow paired with a numeric field
TabCloseButtonSmall × button for closeable tabs

Inputs

ComponentPurpose
TextFieldSingle-line text input
TextAreaMulti-line text input
PasswordFieldMasked text input
CheckboxBoolean toggle
ComboBoxDrop-down selection from a list of Option or a Store
AutoCompleteFieldText field with type-ahead suggestions
DateFieldDate picker with animated calendar dropdown
TimeFieldTime picker with animated hour/minute dropdown
DateTimeFieldCombined date + time picker with animated dropdown
NumberSpinnerNumber field with up / down spinner
SliderContinuous-value slider

Display

ComponentPurpose
TextStandalone text — the default for status, captions, body
LabelText tied to a form control via the HTML for attribute
HeaderTitle-bar / panel header text
Image<img> wrapper
GlyphSelf-contained icon — SVG or Unicode entry from a curated registry
IconTextGlyph + standalone Text, horizontal flow
IconLabelGlyph + form-control Label, horizontal flow
FieldSetGrouped form section with optional Legend
ProgressBarHorizontal progress indicator (determinate or indeterminate)
ProgressSpinnerCircular loading spinner; supports inline and overlay use
PaginationBarFirst / prev / next / last navigation for a paginated Store

Lists

ComponentPurpose
ListSingle-selection list
MultiSelectListMulti-selection list
ListItemItem inside a List / MultiSelectList
BulletedList<ul>-style bulleted list (style via BulletedListItemStyle)
NumberedList<ol>-style numbered list (style via NumberedListItemStyle)
OptionItem inside a ComboBox
ComponentPurpose
MenuBarTop-of-window menu bar
MenuBarButtonA button that opens a menu panel
MenuFloating menu — right-click context menu (Menu()) or MenuBar dropdown (Menu(items, onClose))
MenuItemItem inside a menu
MenuSeparatorDivider line in a menu

Table

A Table ties columns to a Store and renders rows via virtual scrolling. The body keeps only visible rows + a small buffer in the DOM at any time. Scrolling is delegated to a VirtualScrollertranslate3d positioning plus two custom Scrollbar overlays — with wheel, touch (fling momentum), and keyboard support.

ComponentPurpose
TableTop-level container; wires header, body, footer
HeaderColumn-header strip (import as TableHeader to avoid collision with component/display)
BodyVirtual-scrolling row container (import as TableBody)
FooterRowOptional summary / footer strip (often aliased to TableFooter)
RowRow component, recycled by Body (import as TableRow to avoid collision with layout)
ColumnPer-column metadata (import as TableColumn to avoid collision with layout)
CellCell base class
BooleanCell, NumberCell, StringCell, HeaderCell, GlyphCellBuilt-in cell types
CellEditor, BooleanEditor, NumberEditor, StringEditorInline editors per cell type
CellEditorPoolBody-owned registry that shares one editor instance per variant across cells
CellRenderer, NumberRenderer, StringRendererDisplay renderers per cell type

Tree

ComponentPurpose
TreeHierarchical view with collapsible nodes and virtual scrolling
TreeNodeData interface: { label, children? }
typescript
import { Tree } from '@jimka/typescript-ui/component/tree';
const tree = Tree();
tree.setNodes([
    { label: 'Fruits', children: [
        { label: 'Apple' },
        { label: 'Banana' },
    ] },
    { label: 'Vegetables' },
]);

Layout primitives

These components are usually internal but are publicly exposed in case you need them:

ComponentPurpose
SplitGutterDrag handle for the Split layout
AccordionHeaderCollapsible section header for the Accordion layout
ScrollbarCustom vertical or horizontal scrollbar overlay for components that own their scroll state
VirtualScrollerShared scroll machinery for transform-based virtual lists (rows container, scrollbars, wheel + touch + momentum)