Skip to content
project-blincPublic

About

Blinc Typescript SDK For Native UI Applications

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

blinc_ts

Framework agnostic TypeScript SDK for native UI rendering, layout and reactivity. Use it directly from TypeScript or JavaScript, or connect a framework to its primitives. Components and styling belong to the TypeScript layer.

The blinc_ts wiki, running in a native window

Get started

The wiki is the guide. It is a Blinc app: a native window of pages, each with live examples beside the source that makes them, so you use a part before you read how it is made. It covers writing an adapter for any framework, the elements and behaviours the host provides, styling and motion, and the Base UI parts.

npm ci
npm run build:native   # once, and after native changes; needs a Rust toolchain
npm run wiki

Before build:native, place blinc_abi, x-idl, xgpu and xwindow beside this repository, as the contributor setup describes. npm run wiki builds the SDK and the adapters, then opens the window.

  • Pick a page in the navigation. Each example has a Preview, which is live (press it, type in it), and a Source tab with the code behind it.
  • The switch at the top right changes the colour scheme, and the header stays where it is as a page scrolls.
  • The pages and their examples are adapters/wiki/pages.tsx and adapters/wiki/examples/. Add an example there and run npm run wiki again to see it.
  • No display? npm run test:adapters draws every page offscreen to .blinc/wiki/.

Development

Requires Node.js 22.13+.

npm ci
npm run check
npm run dev

The headless Vite example demonstrates HMR. Edit examples/hmr/app.ts to replace the UI scope while keeping its host alive. The native example opens a real window and preserves its window and GPU device through accepted updates.

Current status

Rendering and layout. Owned layout trees, native reactivity, scene encoding, text and images, and a native scene renderer with gradients, clipping, shadows, filters, masks, blur and liquid glass, custom GPU canvases, native scene windows and TypeScript shaders. Native rendering is tested on macOS with Metal and in CI on Linux with software Vulkan, under X11 and Wayland.

A host for any framework. The host interface is a document-like tree an adapter creates, edits and listens to. CSS is parsed and applied in Rust (the cascade, colours, gradients, glass, transforms, filters, masks, clip paths, backgrounds from images, transitions, keyframes and layout animation), with themes and a user-agent stylesheet. The host gives elements their behaviour, so an adapter gets it too: lists, links and labels, forms with validity, inputs, selects, dialogs, tables, text fields with selection, undo and an input method, an inline text flow, scrolling, a top layer for popovers and tooltips, and images decoded off the main thread.

Adapters and components. Two reference adapters are in adapters/, outside the SDK: a JSX runtime with signals, control flow and owners, and a Vue renderer. Base UI parts (toggles, tabs, accordions, tooltips, popovers, dialogs) are built on the first, and the wiki above is built from them.

Tooling. Vite HMR that keeps the native window and GPU device through accepted updates, compile-time CSS, and offscreen visual and motion inspection: filmstrips, trails, pixel and geometry diffs, and per-element curve sheets.

Not yet. A published package (the commands here are for contributors), an accessibility tree, a 2D canvas context and a select with multiple. The package is private, and comparative framework measurements remain in progress; full-scene benchmarks cover text lists, image cards and layered glass.

Architecture

Layer Responsibility
blinc_abi Native graph, layout, text, display lists and hit testing
x-idl Shared API model and generated runtime bindings
xgpu GPU resources and execution
xwindow Windows, input and platform events
TypeScript Renderer orchestration, CSS, themes, motion and components
TypeGPU Typed shaders compiled to WGSL

See architecture, Vite and HMR, code conventions, and performance.

Apache-2.0.

About

Blinc Typescript SDK For Native UI Applications

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages