• Public
  • Public/Protected
  • All

Namespace @swim/ui


package documentation chat

@swim/ui implements a user interface toolkit for pervasively real-time applications. A unified view hierarchy, with builtin procedural styling and animation, makes it easy for @swim/ui components to uniformly style, animate, and render mixed HTML, SVG, Canvas, and WebGL components. @swim/ui is a part of the @swim/toolkit framework.


The @swim/ui umbrella package depends on, and re-exports, the following component libraries:

  • @swim/angle (npm, doc) – dimensional angle types with unit-aware algebraic operators, conversions, and parsers.
  • @swim/length (npm, doc) – DOM-relative length types with unit-aware algebraic operators, conversions, and parsers.
  • @swim/color (npm, doc) – RGB and HSL color types with color-space-aware operators, conversions, and parsers.
  • @swim/font (npm, doc) – CSS font property types and parsers.
  • @swim/shadow (npm, doc) – CSS box shadow types and parsers.
  • @swim/transform (npm, doc) – CSS and SVG compatible transform types with unit-aware algebraic operators and parsers.
  • @swim/scale (npm, doc) – scale types that map numeric and temporal input domains to interpolated output ranges, with support for continuous domain clamping, domain solving, range unscaling, and interpolation between scales.
  • @swim/transition (npm, doc) – transition types that specify duration, ease, interpolator, and lifecycle callback parameters for tween animations.
  • @swim/animate (npm, doc) – property-managing animator types that efficiently tween values between discrete state changes.
  • @swim/style (npm, doc) – CSS style types and universal style value parser.
  • @swim/render (npm, doc) – renderable graphic types for SVG and Canvas compatible path drawing contexts, and Canvas compatible rendering contexts.
  • @swim/constraint (npm, doc) – incremental solver for systems of linear layout constraints.
  • @swim/view (npm, doc) – unified HTML, SVG, and Canvas view hierarchy, with integrated controller architecture, animated procedural styling, and constraint-based layouts.
  • @swim/shape (npm, doc) – canvas shape views, with animated geometry and style properties.
  • @swim/typeset (npm, doc) – canvas typesetting views, with animated text, layout, font, and style properties.
  • @swim/gesture (npm, doc) – multitouch gesture recognizers, with kinematic surface modeling.

@swim/ui builds on the @swim/core framework; it has no additional dependencies.



For an npm-managed project, npm install @swim/ui to make it a dependency. TypeScript sources will be installed into node_modules/@swim/ui/main. Transpiled JavaScript and TypeScript definition files install into node_modules/@swim/ui/lib/main. And a pre-built UMD script, which bundles all @swim/ui component libraries, can be found in node_modules/@swim/ui/dist/main/swim-ui.js.


Browser applications can load swim-ui.js, along with its swim-core.js dependency, from the SwimOS CDN.

<!-- Development -->
<script src="https://cdn.swimos.org/js/latest/swim-core.js"></script>
<script src="https://cdn.swimos.org/js/latest/swim-ui.js"></script>

<!-- Production -->
<script src="https://cdn.swimos.org/js/latest/swim-core.min.js"></script>
<script src="https://cdn.swimos.org/js/latest/swim-ui.min.js"></script>

Alternatively, the swim-toolkit.js script may be loaded, along with its swim-system.js dependency, from the SwimOS CDN. The swim-toolkit.js script bundles @swim/ui together with all other @swim/toolkit frameworks.

<!-- Development -->
<script src="https://cdn.swimos.org/js/latest/swim-system.js"></script>
<script src="https://cdn.swimos.org/js/latest/swim-toolkit.js"></script>

<!-- Production -->
<script src="https://cdn.swimos.org/js/latest/swim-system.min.js"></script>
<script src="https://cdn.swimos.org/js/latest/swim-toolkit.min.js"></script>



@swim/ui can be imported as an ES6 module from TypeScript and other ES6-compatible environments. All component libraries are re-exported by the umbrella @swim/ui module.

import * as swim from "@swim/ui";


@swim/ui can also be used with CommonJS-compatible module systems. All component libraries are re-exported by the umbrella @swim/ui module.

var swim = require("@swim/ui");


When loaded by a web browser, the swim-ui.js script adds all component library exports to the global swim namespace. The swim-ui.js script requires that swim-core.js has already been loaded.

The swim-toolkit.js script also adds all @swim/ui component library exports to the global swim namespace, making it a drop-in replacement for swim-ui.js when additional @swim/toolkit frameworks are needed.