DOCUMENTATION Docs Powered by Fuzor Docs

Zag catalogue

Fuzor integrates every one of the 51 packages in Zag's machine catalogue at version 1.44.0, including the async-list utility and table of contents. The Zag packages are MIT licensed; their dependencies retain their own licenses, including Apache-2.0 for @internationalized/date. Each has a Fuzor DOM adapter and official fuzor-* root/part tags. Context and nested menus use the menu adapter; linear/circular progress use the progress adapter; single/range sliders use the slider adapter. These variants are not separate upstream packages.

All 51 adapters now use audited private-machine checkpoint contracts: finite states (including nested states), durable context, original defaults and durable refs. Browser resources reconnect to existing DOM. Delays retain deadlines, nested menus relink by stable identity, and async requests resume their loading intent. Use await runtime.dehydrateAsync() to include file bytes in a checkpoint that will move to another document; synchronous checkpoints retain files in their owning document. Restoration documents the resource and transport contract.

Live examples

These examples use the shared adapters with precompiled native parts and deferred activation.

Checkbox

Number input

Pagination

Password visibility

Steps

Step 1: Choose a project.

Range slider

Allowed range

Radio group

Output format

Toggle

Emphasis

Rating

Usefulness

Register or defer

defineAll() from fuzor/ui/client registers the full catalogue. For a specific component, import its register* function from fuzor/ui/components/<name>. For deferred loading, mark an existing root with data-fuzor-ui="<name>", give it a stable ID, and let resumeUi(document) activate its module on interaction. The docs runtime already owns that scope; do not create a second owner in a docs page.

Native buttons, inputs, labels, SVG and canvas parts preserve their browser semantics. Parts can be authored as data-part="thumb" or <fuzor-slider-thumb>. Use native form controls for hidden-input parts.

Shared configuration

configureUi is exported from fuzor/ui/client and fuzor/ui/engine. Configure before activation. The shared Web Components also expose .configuration, .configure(options), .state, .read(property) and .call(method, ...args). A DOM adapter obtained from enhance<Name>(root) has the same behavior methods. Backend interpreters are kept private.

props accepts initial component options, callbacks and collections. parts supplies arguments for parameterized parts. Options such as collection constructors and date/color parsers are re-exported by the corresponding Fuzor component module. Closures and collections stay in memory; checkpoints contain validated JSON public state.

import { configureUi } from "fuzor/ui/engine";
import { enhanceSlider } from "fuzor/ui/components/slider";
const root = document.getElementById("volume")!;
configureUi(root, {
  props: { defaultValue: [20, 80], min: 0, max: 100 },
  parts: {
    thumb: (_element, index) => ({ index }),
    "hidden-input": (_element, index) => ({ index, name: "volume" }),
  },
});
const slider = enhanceSlider(root);
slider.call("setValue", [30, 70]);
slider.destroy();

Simple arguments such as data-index="0", data-value="alpha" and data-ui-props='{"index":0}' are read from the part and its nearest item owner. Root data-ui-props supplies JSON-only component options. Complex objects such as a date, file, tree node or color channel should use configureUi. Async list requires a load function; tree/cascade components require a correctly shaped collection for nonempty trees.

Shared adapters emit ui:state-change with { component, state }. Public state is stored in Effect Atom checkpoints and reconnected to the existing DOM during activation. The named methods depend on the component, such as setValue, setPage, setOpen, setChecked and setPressed; unknown methods fail explicitly.

Coverage

Tests cover every declared finite state in the 42 added machines through an Effect Atom JSON round-trip, without replaying initialization. Deadline tests cover delayed transitions and timer disposal. Production SPA/MPA tests checkpoint and reactivate every added adapter, retain DOM identity, suspend an active slider drag, and restore file bytes after reload. Additional tests cover pending requests, original form-reset defaults and nested menu graphs. These tests qualify the checkpoint contracts; they do not enumerate every visual configuration or application callback.

ComponentRoot tagAdapter / checkpoint
Accordionfuzor-accordionDedicated / private machine
Angle Sliderfuzor-angle-sliderShared / private machine
Async Listfuzor-async-listShared / private machine
Avatarfuzor-avatarShared / private machine
Carouselfuzor-carouselShared / private machine
Cascade Selectfuzor-cascade-selectShared / private machine
Checkboxfuzor-checkboxShared / private machine
Clipboardfuzor-clipboardShared / private machine
Collapsiblefuzor-collapsibleDedicated / private machine
Color Pickerfuzor-color-pickerShared / private machine
Comboboxfuzor-comboboxShared / private machine
Date Inputfuzor-date-inputShared / private machine
Date Pickerfuzor-date-pickerShared / private machine
Dialogfuzor-dialogDedicated / private machine
Drawerfuzor-drawerShared / private machine
Editablefuzor-editableShared / private machine
File Uploadfuzor-file-uploadShared / private machine
Floating Panelfuzor-floating-panelShared / private machine
Hover Cardfuzor-hover-cardShared / private machine
Image Cropperfuzor-image-cropperShared / private machine
Listboxfuzor-listboxShared / private machine
Marqueefuzor-marqueeShared / private machine
Menufuzor-menuDedicated / private machine
Navigation Menufuzor-navigation-menuShared / private machine
Number Inputfuzor-number-inputShared / private machine
Paginationfuzor-paginationShared / private machine
Password Inputfuzor-password-inputShared / private machine
Pin Inputfuzor-pin-inputShared / private machine
Popoverfuzor-popoverDedicated / private machine
Presencefuzor-presenceShared / private machine
Progressfuzor-progressShared / private machine
Qr Codefuzor-qr-codeShared / private machine
Radio Groupfuzor-radio-groupShared / private machine
Rating Groupfuzor-rating-groupShared / private machine
Scroll Areafuzor-scroll-areaShared / private machine
Selectfuzor-selectDedicated / private machine
Signature Padfuzor-signature-padShared / private machine
Sliderfuzor-sliderShared / private machine
Splitterfuzor-splitterShared / private machine
Stepsfuzor-stepsShared / private machine
Switchfuzor-switchDedicated / private machine
Tabsfuzor-tabsDedicated / private machine
Tags Inputfuzor-tags-inputShared / private machine
Timerfuzor-timerShared / private machine
Toastfuzor-toastShared / private machine
Tocfuzor-tocShared / private machine
Toggle Groupfuzor-toggle-groupShared / private machine
Togglefuzor-toggleShared / private machine
Tooltipfuzor-tooltipDedicated / private machine
Tourfuzor-tourShared / private machine
Tree Viewfuzor-tree-viewShared / private machine

Accordion

Import: fuzor/ui/components/accordion. Root: <fuzor-accordion>.

Parts: item, item-content, item-indicator, item-trigger.

Angle Slider

Import: fuzor/ui/components/angle-slider. Root: <fuzor-angle-slider>.

Parts: label, hidden-input, control, thumb, value-text, marker-group, marker.

Async List

Import: fuzor/ui/components/async-list. Root: <fuzor-async-list>.

Parts: programmatic utility; no generated DOM part getters.

Avatar

Import: fuzor/ui/components/avatar. Root: <fuzor-avatar>.

Parts: image, fallback.

Import: fuzor/ui/components/carousel. Root: <fuzor-carousel>.

Parts: item-group, item, control, prev-trigger, next-trigger, indicator-group, indicator, autoplay-trigger, progress-text.

Cascade Select

Import: fuzor/ui/components/cascade-select. Root: <fuzor-cascade-select>.

Parts: label, control, trigger, clear-trigger, positioner, content, list, indicator, item, item-text, item-indicator, value-text, hidden-input.

Checkbox

Import: fuzor/ui/components/checkbox. Root: <fuzor-checkbox>.

Parts: label, control, indicator, hidden-input.

Clipboard

Import: fuzor/ui/components/clipboard. Root: <fuzor-clipboard>.

Parts: label, control, input, trigger, indicator.

Collapsible

Import: fuzor/ui/components/collapsible. Root: <fuzor-collapsible>.

Parts: content, trigger, indicator.

Color Picker

Import: fuzor/ui/components/color-picker. Root: <fuzor-color-picker>.

Parts: label, control, trigger, positioner, content, value-text, area, area-background, area-thumb, transparency-grid, channel-slider, channel-slider-track, channel-slider-label, channel-slider-value-text, channel-slider-thumb, channel-input, hidden-input, eye-dropper-trigger, swatch-group, swatch-trigger, swatch-indicator, swatch, format-trigger, format-select.

Combobox

Import: fuzor/ui/components/combobox. Root: <fuzor-combobox>.

Parts: label, control, positioner, input, trigger, content, list, clear-trigger, item, item-text, item-indicator, item-group, item-group-label.

Date Input

Import: fuzor/ui/components/date-input. Root: <fuzor-date-input>.

Parts: label, control, segment-group, segment, hidden-input.

Date Picker

Import: fuzor/ui/components/date-picker. Root: <fuzor-date-picker>.

Parts: label, control, range-text, content, table, table-head, table-header, table-body, table-row, week-number-header-cell, week-number-cell, day-table-cell, day-table-cell-trigger, month-table-cell, month-table-cell-trigger, year-table-cell, year-table-cell-trigger, next-trigger, prev-trigger, clear-trigger, trigger, view, view-trigger, view-control, input, month-select, year-select, positioner, preset-trigger.

Dialog

Import: fuzor/ui/components/dialog. Root: <fuzor-dialog>.

Parts: trigger, backdrop, positioner, content, title, description, close-trigger.

Drawer

Import: fuzor/ui/components/drawer. Root: <fuzor-drawer>.

Parts: positioner, content, title, description, trigger, backdrop, grabber, grabber-indicator, close-trigger, swipe-area.

Editable

Import: fuzor/ui/components/editable. Root: <fuzor-editable>.

Parts: area, label, input, preview, edit-trigger, control, submit-trigger, cancel-trigger.

File Upload

Import: fuzor/ui/components/file-upload. Root: <fuzor-file-upload>.

Parts: dropzone, trigger, hidden-input, item-group, item, item-name, item-size-text, item-preview, item-preview-image, item-delete-trigger, label, clear-trigger.

Floating Panel

Import: fuzor/ui/components/floating-panel. Root: <fuzor-floating-panel>.

Parts: trigger, positioner, content, close-trigger, stage-trigger, resize-trigger, drag-trigger, control, title, header, body.

Hover Card

Import: fuzor/ui/components/hover-card. Root: <fuzor-hover-card>.

Parts: arrow, arrow-tip, trigger, positioner, content.

Image Cropper

Import: fuzor/ui/components/image-cropper. Root: <fuzor-image-cropper>.

Parts: viewport, image, selection, handle, grid.

Listbox

Import: fuzor/ui/components/listbox. Root: <fuzor-listbox>.

Parts: input, label, value-text, item, item-text, item-indicator, item-group-label, item-group, content.

Marquee

Import: fuzor/ui/components/marquee. Root: <fuzor-marquee>.

Parts: viewport, content, edge, item.

Import: fuzor/ui/components/menu. Root: <fuzor-menu>.

Parts: option-item, item, context-trigger, trigger-item, trigger, indicator, positioner, arrow, arrow-tip, content, separator, item-indicator, item-text, item-group-label, item-group.

Import: fuzor/ui/components/navigation-menu. Root: <fuzor-navigation-menu>.

Parts: list, item, indicator, arrow, trigger, trigger-proxy, viewport-proxy, link, content, viewport-positioner, viewport, item-indicator.

Number Input

Import: fuzor/ui/components/number-input. Root: <fuzor-number-input>.

Parts: label, control, value-text, input, decrement-trigger, increment-trigger, scrubber.

Pagination

Import: fuzor/ui/components/pagination. Root: <fuzor-pagination>.

Parts: ellipsis, item, prev-trigger, first-trigger, next-trigger, last-trigger.

Password Input

Import: fuzor/ui/components/password-input. Root: <fuzor-password-input>.

Parts: label, input, visibility-trigger, indicator, control.

Pin Input

Import: fuzor/ui/components/pin-input. Root: <fuzor-pin-input>.

Parts: label, hidden-input, control, input.

Popover

Import: fuzor/ui/components/popover. Root: <fuzor-popover>.

Parts: arrow, arrow-tip, anchor, trigger, indicator, positioner, content, title, description, close-trigger.

Presence

Import: fuzor/ui/components/presence. Root: <fuzor-presence>.

Parts: programmatic utility; no generated DOM part getters.

Progress

Import: fuzor/ui/components/progress. Root: <fuzor-progress>.

Parts: circle, label, value-text, track, range, circle-track, circle-range, view.

Qr Code

Import: fuzor/ui/components/qr-code. Root: <fuzor-qr-code>.

Parts: frame, pattern, overlay, download-trigger.

Radio Group

Import: fuzor/ui/components/radio-group. Root: <fuzor-radio-group>.

Parts: label, item, item-text, item-control, item-hidden-input, indicator.

Rating Group

Import: fuzor/ui/components/rating-group. Root: <fuzor-rating-group>.

Parts: hidden-input, label, control, item.

Scroll Area

Import: fuzor/ui/components/scroll-area. Root: <fuzor-scroll-area>.

Parts: viewport, content, scrollbar, thumb, corner.

Select

Import: fuzor/ui/components/select. Root: <fuzor-select>.

Parts: label, control, value-text, trigger, indicator, item, item-text, item-indicator, item-group-label, item-group, clear-trigger, hidden-select, positioner, content, list.

Signature Pad

Import: fuzor/ui/components/signature-pad. Root: <fuzor-signature-pad>.

Parts: label, control, segment, segment-path, guide, clear-trigger, hidden-input.

Slider

Import: fuzor/ui/components/slider. Root: <fuzor-slider>.

Parts: label, value-text, track, thumb, hidden-input, range, control, marker-group, marker, dragging-indicator.

Splitter

Import: fuzor/ui/components/splitter. Root: <fuzor-splitter>.

Parts: panel, resize-trigger.

Steps

Import: fuzor/ui/components/steps. Root: <fuzor-steps>.

Parts: list, item, trigger, content, indicator, separator, next-trigger, prev-trigger, progress.

Switch

Import: fuzor/ui/components/switch. Root: <fuzor-switch>.

Parts: label, thumb, control, hidden-input.

Tabs

Import: fuzor/ui/components/tabs. Root: <fuzor-tabs>.

Parts: list, trigger, content, indicator.

Tags Input

Import: fuzor/ui/components/tags-input. Root: <fuzor-tags-input>.

Parts: label, control, input, hidden-input, item, item-preview, item-text, item-input, item-delete-trigger, clear-trigger.

Timer

Import: fuzor/ui/components/timer. Root: <fuzor-timer>.

Parts: area, control, item, item-label, item-value, separator, action-trigger.

Toast

Import: fuzor/ui/components/toast. Root: <fuzor-toast>.

Parts: ghost-before, ghost-after, title, description, action-trigger, close-trigger.

Toc

Import: fuzor/ui/components/toc. Root: <fuzor-toc>.

Parts: title, list, item, link, indicator.

Toggle Group

Import: fuzor/ui/components/toggle-group. Root: <fuzor-toggle-group>.

Parts: item.

Toggle

Import: fuzor/ui/components/toggle. Root: <fuzor-toggle>.

Parts: indicator.

Tooltip

Import: fuzor/ui/components/tooltip. Root: <fuzor-tooltip>.

Parts: trigger, arrow, arrow-tip, positioner, content.

Tour

Import: fuzor/ui/components/tour. Root: <fuzor-tour>.

Parts: backdrop, spotlight, progress-text, positioner, arrow, arrow-tip, content, title, description, close-trigger, action-trigger.

Tree View

Import: fuzor/ui/components/tree-view. Root: <fuzor-tree-view>.

Parts: label, tree, item, item-text, item-indicator, branch, branch-indicator, branch-trigger, branch-control, branch-text, branch-content, branch-indent-guide, node-checkbox, node-rename-input.

Built with Fuzor Back to top ↑
On this page Back to top ↑