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
| Component | Purpose |
|---|---|
Component | Base class — position, size, styling, child tree |
BaseObject | UUID-based identity above Component |
Body | Singleton wrapping document.body; bootstraps the framework |
Window | Floating, draggable, resizable window |
Dialog | Modal dialog with async result |
Tooltip | Singleton hover hint, attach via Tooltip.attach(component, text) |
Popover | Anchored, non-modal floating bubble with arrow tail and dismiss modes |
Notification | Static toast — Notification.show(message, type, duration?) |
AnimatedDropdown | Floating-panel base with shared fade lifecycle |
Buttons
| Component | Purpose |
|---|---|
Button | Standard click button |
ToggleButton | Two-state press button |
RadioButton | Single-selection radio (use with ButtonGroup) |
ButtonGroup | Enforces single selection across radio / toggle buttons |
SpinButton | Up / down arrow paired with a numeric field |
TabCloseButton | Small × button for closeable tabs |
Inputs
| Component | Purpose |
|---|---|
TextField | Single-line text input |
TextArea | Multi-line text input |
PasswordField | Masked text input |
Checkbox | Boolean toggle |
ComboBox | Drop-down selection from a list of Option or a Store |
AutoCompleteField | Text field with type-ahead suggestions |
DateField | Date picker with animated calendar dropdown |
TimeField | Time picker with animated hour/minute dropdown |
DateTimeField | Combined date + time picker with animated dropdown |
NumberSpinner | Number field with up / down spinner |
Slider | Continuous-value slider |
Display
| Component | Purpose |
|---|---|
Text | Standalone text — the default for status, captions, body |
Label | Text tied to a form control via the HTML for attribute |
Header | Title-bar / panel header text |
Image | <img> wrapper |
Glyph | Self-contained icon — SVG or Unicode entry from a curated registry |
IconText | Glyph + standalone Text, horizontal flow |
IconLabel | Glyph + form-control Label, horizontal flow |
FieldSet | Grouped form section with optional Legend |
ProgressBar | Horizontal progress indicator (determinate or indeterminate) |
ProgressSpinner | Circular loading spinner; supports inline and overlay use |
PaginationBar | First / prev / next / last navigation for a paginated Store |
Lists
| Component | Purpose |
|---|---|
List | Single-selection list |
MultiSelectList | Multi-selection list |
ListItem | Item inside a List / MultiSelectList |
BulletedList | <ul>-style bulleted list (style via BulletedListItemStyle) |
NumberedList | <ol>-style numbered list (style via NumberedListItemStyle) |
Option | Item inside a ComboBox |
Menus
| Component | Purpose |
|---|---|
MenuBar | Top-of-window menu bar |
MenuBarButton | A button that opens a menu panel |
Menu | Floating menu — right-click context menu (Menu()) or MenuBar dropdown (Menu(items, onClose)) |
MenuItem | Item inside a menu |
MenuSeparator | Divider 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 VirtualScroller — translate3d positioning plus two custom Scrollbar overlays — with wheel, touch (fling momentum), and keyboard support.
| Component | Purpose |
|---|---|
Table | Top-level container; wires header, body, footer |
Header | Column-header strip (import as TableHeader to avoid collision with component/display) |
Body | Virtual-scrolling row container (import as TableBody) |
FooterRow | Optional summary / footer strip (often aliased to TableFooter) |
Row | Row component, recycled by Body (import as TableRow to avoid collision with layout) |
Column | Per-column metadata (import as TableColumn to avoid collision with layout) |
Cell | Cell base class |
BooleanCell, NumberCell, StringCell, HeaderCell, GlyphCell | Built-in cell types |
CellEditor, BooleanEditor, NumberEditor, StringEditor | Inline editors per cell type |
CellEditorPool | Body-owned registry that shares one editor instance per variant across cells |
CellRenderer, NumberRenderer, StringRenderer | Display renderers per cell type |
Tree
| Component | Purpose |
|---|---|
Tree | Hierarchical view with collapsible nodes and virtual scrolling |
TreeNode | Data 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:
| Component | Purpose |
|---|---|
SplitGutter | Drag handle for the Split layout |
AccordionHeader | Collapsible section header for the Accordion layout |
Scrollbar | Custom vertical or horizontal scrollbar overlay for components that own their scroll state |
VirtualScroller | Shared scroll machinery for transform-based virtual lists (rows container, scrollbars, wheel + touch + momentum) |