Native GJS — the primary target
Real Libadwaita widgets through @girs/adw-1.
This is the reference: the Web and NativeScript ports track its behaviour and
naming. Adw.SwitchRow, Adw.HeaderBar, Adw.NavigationSplitView, …
GJSify ships the Adwaita design system to three targets: native GJS (real Libadwaita), the Web (custom elements + CSS), and NativeScript (real native mobile widgets). This gallery documents each Adwaita component once, toolkit-neutrally, then shows how to build it in all three.
The Web and NativeScript ports share their behaviour — toast queueing, row
selection and clamping, the alert-dialog response model, breakpoint conditions
and the color-scheme observable all live in the headless, platform-free
@gjsify/adwaita-core
package that both compose. Only the rendering differs, so the ports stay in
step with Libadwaita and with each other.
Every page follows the same shape:
Native GJS — the primary target
Real Libadwaita widgets through @girs/adw-1.
This is the reference: the Web and NativeScript ports track its behaviour and
naming. Adw.SwitchRow, Adw.HeaderBar, Adw.NavigationSplitView, …
Web — Adwaita as custom elements
@gjsify/adwaita-web
renders the same widgets as light-DOM custom elements styled by SCSS —
<adw-switch-row>, <adw-header-bar>. No shadow DOM, no runtime framework;
just import it once and write HTML.
NativeScript — real native mobile widgets
@gjsify/adwaita-nativescript
reproduces the Adwaita identity with real NativeScript views (not a
webview) on Android and iOS — AdwSwitchRow, AdwHeaderBar.
The Adwaita Storybook is an interactive
component browser: pick a widget, tweak its controls, and watch every port update
from the same renderer-free story metadata. Run it natively with
gjsify storybook, or try the embedded browser build on that page.