Plugin API

A plugin is just a JavaScript object that has the following properties:

Key

Type

Required

Description

name

string

yes

Name of the plugin.

key

string

no

This property is used as an ID throughout the system.

description

string

no

Plugin description.

version

string

no

Plugin version.

categories

string[]

no

icon

DynamicIconProps

no

These are props of the DynamicIcon component. This value can also be a thunk, i.e. a function that should return the props object. This function receives BlueBase context as param.

enabled

boolean

no

(Default = true) Flag to check if a plugin is enabled.

filters

FilterNestedCollection

no

components

ComponentCollection

no

themes

ThemeCollection

no

defaultConfigs

ConfigCollection

no

Plugin Categories

Categories are used in plugin listing pages. Currently, we recognise the following kind of plugins, but a developer may define his own category as well.

Key

Description

app

A plugin that is a sub-app in the system. This applies that when BlueBase is used as a bigger platform, and different features are represented as individuals apps inside the platform.

store

A plugin that provides a state store functionality. i.e. Redux.

router

A plugin that provides routing mechanism. i.e. react-router or React Navigation.

logging

A plugin that provides integration with a logging service. i.e. Sentry.

theme

A plugin that provides a single or multiple themes.

analytics

A plugin that provides integration with a logging service. i.e. Google Analytics.

Example

import { createPlugin } from '@bluebase/core';

export const ExamplePlugin = createPlugin({

    key: 'example',
    name: 'Example Plugin',
    description: 'This is just an example plugin.',
    version: '1.0.0',
    categories: ['theme', 'app'],

    icon: () => ({
        type: 'icon',
        name: 'rocket',
    }),

    defaultConfigs: {
        'plugin.example.foo': 'bar'
    },

    // ... any components come here
    components: [{
        key: 'Logo',
        value: import('./Logo')
    }],

    // ... add other configs, i.e. themes, filters, etc
});

Last updated

Was this helpful?