import { h, Html } from 'lib/rx' import * as icons from 'lib/icons' import * as L from 'lib/loadable' export function columns(xs: Array): Html { return h('div', { className: 'g-Columns' }, xs) } export function loading(): Html { return h('div', { className: 'g-Loading' }, icons.spinner() ) } export function error(message: string): Html { return h('div', { className: 'g-Error' }, message ) } export function loadable(loadable: L.Loadable, view: (t: T) => Html): Html { switch (loadable.key) { case 'INIT': return undefined case 'LOADING': return loading() case 'LOADED': return view(loadable.value) case 'FAILURE': return error(loadable.error) } }