Skip to content

Releases: uhyo/funstack-ui

0.1.0-alpha.2

0.1.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@uhyo uhyo released this 17 Oct 14:29

What's Changed

Features

  • Add the Select component: a real <select> progressively enhanced with customizable select (appearance: base-select). Parts: Root, Trigger, Value (<selectedcontent>), Option, Group / GroupLabel, Separator. Its valueAction runs in a transition, shows the optimistic value, and works with forms (including form reset) and server rendering / hydration.
  • Add the Combobox component, following the WAI-ARIA APG pattern: an <input role="combobox"> with a listbox in a popover="auto" popup and aria-activedescendant focus.
    • Typing goes through the urgent inputValueChangeAction. Results are deferred and expose data-stale / aria-busy.
    • A Status part inside the List marks loading.
    • Result counts are announced in English by default, and you can override the text with announce.
    • Other options: autoHighlight, and a hidden form input when name is set.
  • Export the UrgentChangeAction type.

Full Changelog: 0.1.0-alpha.1...0.1.0-alpha.2

0.1.0-alpha.1

0.1.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@uhyo uhyo released this 17 Oct 10:06

What's Changed

Features

  • Add the Popover component: <dialog popover="auto"> driven by invoker commands (commandfor), with CSS anchor positioning, browser-owned light dismiss, and Popover.Close running an action before closing.
  • Add the Menu component, an APG menu button on the Popover API: Item, CheckboxItem, RadioGroup / RadioItem, Group / GroupLabel, Separator and submenus (SubmenuTrigger). Item actions run in a transition and the menu closes after the action settles. Includes keyboard navigation, typeahead, RTL-aware submenu keys and hover intent.
  • Add the CheckboxGroup component: a <fieldset> group with valueAction, native required while nothing is checked, and a tri-state Parent checkbox.
  • Popover.Close, Dialog.Close and Menu.Item share one action trigger. A rejection from a superseded action now reaches the Error Boundary, and a close whose action settles after the user re-opened the surface is dropped.

Fixes

  • Tabs: the experimental focusgroup prop now detects support through the focusGroup IDL attribute and uses the browser's native arrow-key handling (#43).
  • Dialog: a pending Dialog.Close no longer closes a dialog that was dismissed and re-opened in the meantime, including JS-free/native opens.

Full Changelog: 0.1.0-alpha.0...0.1.0-alpha.1

0.1.0-alpha.0

0.1.0-alpha.0 Pre-release
Pre-release

Choose a tag to compare

@uhyo uhyo released this 17 Oct 04:17

The first alpha of FUNSTACK UI, a headless React UI library and the first Async React-native UI library: Suspense-native, transition-by-default, action props instead of event handlers, <ViewTransition> built in, and modern HTML/CSS first.

npm install @funstack/ui@alpha

Requires React >=19.3. Docs: https://ui.funstack.work

Components

  • Toggle: a pressed/unpressed button with pressedChangeAction, optimistic state and pending state.
  • Tabs: roving-focus tabs with valueChangeAction. Panels use hidden="until-found", so find-in-page reveals them.
  • Accordion: built on <details>/<summary>. Works without JavaScript (Server Component friendly) and supports async expand actions.
  • Tooltip: built on the Popover API (popover="hint"), CSS anchor positioning and interestfor.
  • Dialog: built on native <dialog>, modal or non-modal, with light dismiss. Dialog.Form can close on settle, and nested confirm dialogs are supported.
  • Switch, Checkbox (including indeterminate), RadioGroup: native inputs with action props, optimistic and pending state, and full form participation (submission, reset, required).

Highlights

  • Every change goes through an action prop run inside a transition, and pending state is exposed as data attributes and render state.
  • Server Functions can be passed directly as action props.
  • An opt-in transition prop adds a <ViewTransition> boundary.
  • Tested in Chromium, Firefox and WebKit.

This is an experimental alpha, so APIs may change in any release.