All Projects → freshOS → Komponents Deprecated

freshOS / Komponents Deprecated

Licence: mit
📦 React-inspired UIKit Components - ⚠️ Deprecated

Programming Languages

swift
15916 projects
declarative
70 projects

Projects that are alternatives of or similar to Komponents Deprecated

Gomponents
Declarative view components in Go, that can render to HTML5.
Stars: ✭ 49 (-75.74%)
Mutual labels:  declarative-ui, component, ui-components
React Native Wormhole
⚛️ 🌌 Inter-dimensional Portals for React Native. 👽 🖖
Stars: ✭ 133 (-34.16%)
Mutual labels:  render, component
React Step Progress Bar
A library to create stunning progress bars and steps in React 🌡
Stars: ✭ 140 (-30.69%)
Mutual labels:  component, ui-components
Styled Bootstrap
💅🏻 A styled-component implementation of Bootstrap
Stars: ✭ 154 (-23.76%)
Mutual labels:  uikit, ui-components
Flamesui
A css-based web components.
Stars: ✭ 133 (-34.16%)
Mutual labels:  uikit, ui-components
Paper Kit 2 Angular
Free Bootstrap 4 UI Kit for Angular 2+
Stars: ✭ 133 (-34.16%)
Mutual labels:  uikit, ui-components
Bekcurvetabbar
Full Customizable Tabbar with IBInspectables
Stars: ✭ 144 (-28.71%)
Mutual labels:  component, ui-components
React Virgin
The react-native UI Kit you've been looking for.
Stars: ✭ 1,523 (+653.96%)
Mutual labels:  uikit, ui-components
Collectionviewslantedlayout
A CollectionView Layout displaying a slanted cells
Stars: ✭ 2,029 (+904.46%)
Mutual labels:  uikit, ui-components
React Native Pull To Refresh
The Pull-To-Refresh component for React Native (iOS/Android)
Stars: ✭ 166 (-17.82%)
Mutual labels:  component, ui-components
Light dark toggle
An awesome flutter app which artistically animates light and dark mode 😍
Stars: ✭ 175 (-13.37%)
Mutual labels:  uikit, ui-components
Pbtreeview
An UITreeView implementation from UITableView that Apple missed in its UIKit framework. And it is in pure Swift.
Stars: ✭ 128 (-36.63%)
Mutual labels:  uikit, ui-components
Components
MobileUI was created thinking of making your hybrid application faster and smaller since you only install what you are really going to use for UI.
Stars: ✭ 125 (-38.12%)
Mutual labels:  uikit, ui-components
Centroui
CentroUI is a library for building user interfaces for WebVR
Stars: ✭ 135 (-33.17%)
Mutual labels:  uikit, ui-components
Ct Material Kit Pro
Premium Bootstrap 4 UI Kit based on Google's Material Design
Stars: ✭ 123 (-39.11%)
Mutual labels:  uikit, ui-components
Material
A lightweight Material Design library for Angular based on Google's Material Components for the Web.
Stars: ✭ 143 (-29.21%)
Mutual labels:  uikit, ui-components
Boomerang Free Bootstrap Ui Kit
Boomerang is a high quality UI Kit built on top of the well known Bootstrap 4 Framework. This theme was designed as its own extended version of Bootstrap with multiple functionalities and controls added, extended color palette and beautiful typography.
Stars: ✭ 196 (-2.97%)
Mutual labels:  uikit, ui-components
React Multi Select
A Multi Select component built with and for React
Stars: ✭ 111 (-45.05%)
Mutual labels:  component, ui-components
Ka Table
Lightweight MIT React Table component for both TS and JS with Sorting, Filtering, Grouping, Virtualization, Editing and many more
Stars: ✭ 117 (-42.08%)
Mutual labels:  component, ui-components
Calendar Ios
Calendar View
Stars: ✭ 154 (-23.76%)
Mutual labels:  uikit, ui-components

Komponents

⚠️ Swift UI is out so this is now deprecated in favor of the official alternative. This will no longer be maintained. This was a fun experiment 😎

Komponents

Language: Swift 3 Platform: iOS 9+ Carthage compatible Cocoapods compatible Build Status codebeat badge License: MIT Release version

Komponents is a Swift framework for building component-oriented interfaces.
Because it's unfair to need javascript to enjoy Components ! 😎

Komponents
🔶 Pure Swift (no JS, no XML)
🎨 Declarative Api
💉 Hot Reload with injectionForXcode
⚙️ Diff algorithm running in background
🏗 Can be used Incrementally in your App
🕸 No external Dependencies

Demo

Building a Loading screen with Hot reload 🎩

class LoadingVC: UIViewController, StatelessComponent {

    override func loadView() { loadComponent() }

    func render() -> Tree {
        return
            View([
                HorizontalStack(layout: .center, [
                    Label("Loading..."), ActivityIndicatorView(.gray)
                ])
            ])
    }
}

This is all we need to render a loading view !

Getting Started

New to components? Fear not! Facebook's React guide is a gold mine of information to get you started :)

The easiest way to get started and feel the power of Komponents is to take a look at the example project KomponentsExample.xcodeproj and play around !

For an even better experience, we strongly recommend enabling Hot reload

Examples

You can learn how, like React, Komponents tries to be smart about what it rerenders when the state changes in Patching section.

You can find more detailed information and guides in the Wiki

Installation

Komponents can be installed Manually, via Carthage, Cocoapods or Swift Package Manager.
Detailed installation steps in the wiki here

Contributors

YannickDot, S4cha, YOU ?!
We'd love to hear what you think so don't hesitate to reach out through an issue or via twitter @sachadso

License

Komponents is released under the MIT license. See LICENSE for details.

Inspiration

Facebook's React, ComponentKit, Preact, Vue.js AlexDrone's render, Angular...

Other great libraries

We're not the first to tackle the great endeavor of swift components and here are some other very cool projects :

⚠️ v 0.2 🏗

Please be aware that this is still very experimental 🔬.
The actual api can and will change.
This is not battle-tested and we advise you against using this in Appstore Apps (for now)

Declarative Styling via Props 🎨

Applying styles directly on the UIKit elements was super handy in v0.1 but came with major strings attached. Indeed, the styles blocks in the nodes could only be called on the main thread, because UIKit is meant to be accessed from the UI Thread (for the most part). Also, in order to compare styles, we needed to create a duplicate UIKit element (heavy) and look for differences on it.

That's where Props come in!

The idea is to have a Props layer, aka a structure that defines an element's style, that is Equatable. Being equatable, it becomes trivial to compare two buttons styles. For instance, you can just write :
let styleIsTheSame = (button.props == newButton.props)

Being Value-typed, it is also safe to process the diff in background !

Could we get all this goodness for free? Of course not, welcome to engineering. The major drawback is that we have to bridge every UIKit element property to its corresponding Props struct.

However the properties supported can only get better with time classic escape hatch through refs will always be accessible to access UIkit elements if a property is not yet supported.

This is worth it!

A dead-simple declarative layout 📐

The coming version is switching from Autolayout (and Stevia) to a declarative layout.
The new layout system is based on a super simple Layout struct, that, combined with classic StackViews enables 99.9% of layout cases. It is a value type, meaning it will be thread safe and thus enable comparison in a background thread :)

Diffing on the virtual DOM. 🚀

With elements, styling, and layout purely declarative, Value-Type and Equatable, we can now safely put all the heavy duty stuff off to a background thread !!!

In v0.2, the diffing algorithm (also known as reconciliation) will run on the virtual DOM, on a background thread and only schedule UI changes on the UI thread. 🎉

Backers

Like the project? Offer coffee or support us with a monthly donation and help us continue our activities :)

Sponsors

Become a sponsor and get your logo on our README on Github with a link to your site :)

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].