All Projects → operasoftware → toolkit

operasoftware / toolkit

Licence: Apache-2.0 license
Opera Web UI Toolkit

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to toolkit

Awesome Ui Component Library
Curated list of framework component libraries for UI styles/toolkit
Stars: ✭ 702 (+3410%)
Mutual labels:  components, toolkit
Smart-Inspector
Fluent re-take on Unity Inspector UX. Packed with QoL improvements.
Stars: ✭ 680 (+3300%)
Mutual labels:  components, toolkit
Elenext
A Vue.js 3.0 UI Toolkit for Web, Elenext by Vue 3.0
Stars: ✭ 63 (+215%)
Mutual labels:  components, toolkit
Blueprint
A React-based UI toolkit for the web
Stars: ✭ 18,376 (+91780%)
Mutual labels:  components, toolkit
Chat Ui Kit React
Build your own chat UI with React components in few minutes. Chat UI Kit from chatscope is an open source UI toolkit for developing web chat applications.
Stars: ✭ 131 (+555%)
Mutual labels:  components, toolkit
framestack
Tools, Frameworks & Libraries to help you build your projects ✨
Stars: ✭ 27 (+35%)
Mutual labels:  toolkit
ipc-toolkit
A set of reusable functions to integrate IPC into an existing simulation.
Stars: ✭ 84 (+320%)
Mutual labels:  toolkit
v-svg-icons
Svg icons for VueJS.
Stars: ✭ 36 (+80%)
Mutual labels:  components
foss-apps
a list of 100+ awesome open source android apps 📱
Stars: ✭ 289 (+1345%)
Mutual labels:  apps
tailwind-css-components
Tailwind CSS Components - Free and Open-Source Tailwind Components | AppSeed
Stars: ✭ 56 (+180%)
Mutual labels:  components
antd-pro-toolkit
🐜ant design pro toolkit.
Stars: ✭ 13 (-35%)
Mutual labels:  toolkit
taroify
Taroify 是移动端组件库 Vant 的 Taro 版本,两者基于相同的视觉规范,提供一致的 API 接口,助力开发者快速搭建小程序应用。
Stars: ✭ 420 (+2000%)
Mutual labels:  components
hyperapp-styled-components
styled-components for hyperapp in under 3kb
Stars: ✭ 17 (-15%)
Mutual labels:  components
tiny-svg
A minimal toolbelt for builing fast SVG-based applications
Stars: ✭ 34 (+70%)
Mutual labels:  toolkit
design-system
The Baloise Design System consists of reusable components and a clearly defined visual style, that can be assembled together to build any number of applications.
Stars: ✭ 40 (+100%)
Mutual labels:  components
snabberb
A simple component view framework for Ruby Opal based on Snabbdom
Stars: ✭ 41 (+105%)
Mutual labels:  components
crx3
Node.js module to create CRX3 files (web extension package v3 format) for Chromium, Google Chrome and Opera browsers.
Stars: ✭ 39 (+95%)
Mutual labels:  opera
components
Reusable React components used by HospitalRun
Stars: ✭ 109 (+445%)
Mutual labels:  components
wexond-ui
List of reusable React components following Wexond design patterns
Stars: ✭ 24 (+20%)
Mutual labels:  components
amplify-ui
A multi-framework Design System to provide a solid foundation for building UI!
Stars: ✭ 487 (+2335%)
Mutual labels:  components

opera-toolkit

Opera Toolkit is a UI library created for rendering Opera Desktop browser's internal Web pages. It allows to build the user interface natively by utilising the engine's latest features.

Why?

All JavaScript frameworks are intended for rendering Web pages which work across a variety of browsers with diversified support for latest HTML5+ features. That results in compromises and requires a number of techniques to make this possible - transpilation, polyfills, external live-reload servers to name a few.

A solution dedicated for a single browser asks for a different approach, an attempt to use as many tools provided by the browser itself as possible. Support for async/await, object spread and other syntactic sugar allows to write nifty code without any need of transpilation. Native templating system makes possible to describe rendered DOM elements and components with arrays and objects. Single execution environment pushes away the worries of browser compatibility issues. DevTools workspaces provide built-in live reload system, neither external tools nor constant builds and browser restarts are necessary.

Design principles

  • native - take advantage of the latest Chromium engine features,
  • modular - define each component, reducer, service as a separate module,
  • dynamic - build in discovery service, lazy-load modules for flexibility or preload for performance,
  • fast - utilise virtual DOM, minimise the number of DOM modifications, benchmark all operations to ensure high performance,
  • simple - no millions of callbacks and events, utilise one-way model-to-view binding and unidirectional data flow,
  • encapsulated - isolate apps as Web components, reduce usage of global variables to bare minimum,
  • deterministic - do not worry about race conditions, let the framework control the asynchronous operations properly,
  • testable - unit test all your components with little effort,
  • debuggable - easily inspect your apps, use live reload, instrumentation and time saving debug tools.

Web Apps

Toolkit renders Web Apps as a composition of Web Components encapsulated within custom elements. Web Components manage their own state, use isolated stylesheets, provide rendering context with Commands API and support plugins.

Toolkit also encourages functional programming by utilizing pure functions and pure components. These components always generate the same template when given the same props object.

const Square = props => [
  'section',
  {
    class: 'square',
    style: {
      backgroundColor: props.color,
      height: [props.size, 'px'],
      width: [props.size, 'px'],
    },
  },
];

There is no transpilation phase, the sources are directly used by the browser in the form of ES modules.

State management

Instead of using the centralized state, as in Redux, Web Component manages only the view model that is necessary to render the particular fragment of the UI it is responsible for.

There is no need to traverse and clone complex data structures in order to amend the state. By design Web Components are small, single-purpose nestable apps. Their state is based on the props received from the parent. They can fetch the additional data asynchronously and handle the data changes themselves. The ancestor Web Components are not involved when not interested in that data.

Web Components use commands to make a transition between one state and another.

Read more about the Commands API.

Templating

Toolkit uses Bragi templates, which allow to express HTML nodes with pure JavaScript code, using only objects, arrays and primitive types.

Find out more about Bragi templates

Examples

Here are a few conceptual examples of Web Components

Build

To build a single-script, production version of Toolkit with no external dependencies just run:

npm run release

Demo

A simple demo in both debug and release mode:

npm run demo

The debug mode uses the logger plugin showing all executed commands, patches applied on the DOM and time taken on each operation.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].