It is UI components library for Cerebro app plugins
This package contains main UI elements that you need to use in your plugin previews:
This component used to build lists with keyboard navigation:
- Arrows and ctrl+j/k used to select next or previous item;
- enter or o used to select item;
- ← and esc used to move selection back to main results list;
import { KeyboardNav, KeyboardNavItem } from 'cerebro-ui'
const Preview = ({ items, onSelect }) => (
<KeyboardNav>
<ul className={styles.list}>
{
items.map(s => (
<KeyboardNavItem key={s} onSelect={() => onSelect(item)}>
{item}
</KeyboardNavItem>
))
}
</ul>
</KeyboardNav>
)
For consistence, it is recommended to use one loading spinner component in all plugins:
import { Loading } from 'cerebro-ui'
const Preview = ({ isLoading }) => (
isLoading ? <Loading /> : <MyPluginPreview />
)
In most cases <Loading />
component is displayed until some promise resolved/rejected. In this case to simplify component code and remove unnecessary state
with loading/loaded flags, <Preload />
component could be used:
import { Preload, Loading } from 'cerebro-ui'
const Preview = (promise) => (
<Preload promise={promise} loader=>{Loading}>
{ (promiseResult) => <YourComponent someProp={promiseResult} /> }
</Preload>
)
import { Button, Checkbox, Select, Text } from 'cerebro-ui/Form'
- Cerebro – main repo for Cerebro app;
- cerebro-tools – package with tools to simplify package creation;
- cerebro-plugin – boilerplate to create cerebro plugins;
MIT © Alexandr Subbotin