11.0.0 • Published 4 months ago

@cloudquery/plugin-config-ui-lib v11.0.0

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
4 months ago

@cloudquery/plugin-config-ui-lib

A comprehensive library for building CloudQuery plugin configuration UIs with minimal effort.

Quick Start

The fastest way to create a new plugin UI is to use the CLI generator:

npx --legacy-peer-deps @cloudquery/plugin-config-ui-lib

This command runs the interactive generator that creates a complete plugin UI project with all necessary files and dependencies.

Generator Features

The generator will prompt you for:

  • Plugin Label: The human-readable name (e.g., "AWS", "GitHub")
  • Plugin Name: The machine-readable name (e.g., "aws", "github")
  • Plugin Kind: Source or destination
  • Plugin Team: Typically "cloudquery" or your organization
  • Plugin Version: The semantic version (e.g., "v1.0.0")
  • Plugin Logo: Path to your logo image (optional but recommended)
  • Table Selection: For source plugins, whether it supports table selection
  • Service Selection: For source plugins, whether it supports service selection
  • Authentication Type: OAuth, token-based, or both
  • Authentication Properties: For token-based auth, what fields are needed
  • Advanced Options: Additional configuration options

After answering these questions, the generator creates a complete UI project in a cloud-config-ui directory with:

  • All necessary configuration files
  • Basic UI components
  • Proper authentication flows
  • Unit test setup
  • Development environment

Core Components

useFormInit hook

Initializes the form with values from CloudQuery:

const { initialValues, initialized, teamName, context, isDisabled } = 
  useFormInit(pluginUiMessageHandler);

PluginContextProvider

The main wrapper component that provides context to all child components:

<PluginContextProvider
  config={config}
  teamName={teamName}
  getTablesData={getTablesData}
  hideStepper={context === 'wizard'} 
  pluginUiMessageHandler={pluginUiMessageHandler}
  initialValues={initialValues}
  isDisabled={isDisabled}
>
  {/* Your plugin UI components */}
</PluginContextProvider>

ConfigUIForm

The main form component that handles the entire UI:

<ConfigUIForm 
  container={container} 
  prepareSubmitValues={prepareSubmitValues} 
/>

Should be rendered only when initialized is true.

useConfig hook

Defines your plugin's configuration structure, including authentication methods, steps, and form fields:

export const useConfig = ({ initialValues }) => ({
  name: 'my-plugin',
  type: 'source',
  label: 'My Plugin',
  docsLink: 'https://hub.cloudquery.io/plugins/source/myteam/my-plugin/latest/docs',
  iconLink: 'images/logo.png',
  auth: [AuthType.OAUTH, AuthType.OTHER],
  steps: [
    {
      title: 'Connect',
      children: [
        // Form sections and components
      ]
    }
  ],
  // Optional guide configuration
  guide: { /* guide configuration */ }
});

UI Components

Form Components

  • ControlTextField: Text input with validation
  • ControlNumberField: Number input with validation
  • ControlSelect: Dropdown selection
  • ControlSwitch: Toggle switch
  • ControlPassword: Password input with visibility toggle
  • ControlCheckbox: Checkbox input

Input Components

  • TableSelector: UI for selecting tables (for source plugins)
  • ServiceSelector: UI for selecting services
  • SecretInput: Secure input for credentials
  • UploadJSON: Component for uploading JSON files
  • MultiAutocomplete: Multiple selection with autocomplete

Customization

Form Structure

You can customize the form by defining sections and components in the useConfig hook:

{
  component: 'section',
  title: 'Authentication',
  children: [
    {
      component: 'control-text-field',
      name: 'api_key',
      label: 'API Key',
      required: true
    }
  ]
}

Conditional Rendering

You can conditionally show sections or fields:

{
  component: 'section',
  title: 'Advanced Settings',
  shouldRender: (values) => values.show_advanced === true,
  children: [/* components */]
}

Custom Validation

Use Yup schemas for validation:

{
  component: 'control-text-field',
  name: 'api_key',
  label: 'API Key',
  schema: yup.string().when('_step', {
    // Only validate on step 1
    is: 1,
    then: (schema) => schema.required('API Key is required')
  })
}

Development

After generating your UI:

cd cloud-config-ui
npm start

This starts a development server where you can test your plugin UI locally.

Testing

The generator includes unit tests:

npm run test

or in watch mode

npm run test:watch

Building for Production

npm run build

This creates optimized production files in the dist directory that can be deployed to CloudQuery.

5.0.0-rc.9

9 months ago

10.0.0

5 months ago

5.0.0-rc.0

9 months ago

5.0.0-rc.1

9 months ago

5.0.0-rc.2

9 months ago

5.0.0-rc.3

9 months ago

5.0.0-rc.4

9 months ago

5.0.0-rc.5

9 months ago

5.0.0-rc.6

9 months ago

5.0.0-rc.7

9 months ago

5.0.0-rc.8

9 months ago

5.0.2

8 months ago

5.0.1

8 months ago

5.0.0

8 months ago

10.0.0-rc.4

5 months ago

10.0.0-rc.3

5 months ago

10.0.0-rc.6

5 months ago

10.0.0-rc.5

5 months ago

10.0.0-rc.8

5 months ago

10.0.0-rc.7

5 months ago

10.0.0-rc.9

5 months ago

10.1.0-rc.0

5 months ago

10.0.0-rc.0

5 months ago

10.1.0-rc.1

5 months ago

10.1.0-rc.2

5 months ago

10.0.0-rc.2

5 months ago

10.0.0-rc.1

5 months ago

7.1.0-rc.0

7 months ago

7.1.0-rc.1

7 months ago

7.1.0-rc.2

7 months ago

7.1.0-rc.3

7 months ago

11.0.0

4 months ago

6.0.1

8 months ago

6.0.0

8 months ago

10.1.0

5 months ago

10.1.1

5 months ago

6.0.2

8 months ago

8.0.0-rc.0

7 months ago

7.1.2-rc.0

7 months ago

8.0.0-rc.1

7 months ago

8.0.0-rc.2

7 months ago

8.1.1-rc.0

5 months ago

7.0.1-rc.4

7 months ago

7.0.1-rc.5

7 months ago

7.0.1-rc.6

7 months ago

5.0.0-rc.10

9 months ago

5.0.0-rc.11

9 months ago

5.0.0-rc.12

8 months ago

5.0.0-rc.13

8 months ago

7.0.1-rc.0

7 months ago

5.0.0-rc.14

8 months ago

7.0.1-rc.1

7 months ago

5.0.0-rc.15

8 months ago

7.0.1-rc.2

7 months ago

7.0.1-rc.3

7 months ago

7.0.0-rc.8

7 months ago

7.0.0-rc.7

7 months ago

7.0.0-rc.4

7 months ago

7.0.0-rc.3

7 months ago

7.0.0-rc.6

7 months ago

7.0.0-rc.5

7 months ago

7.0.0-rc.0

7 months ago

7.0.0-rc.2

7 months ago

7.0.0-rc.1

7 months ago

6.0.0-rc.1

8 months ago

5.0.2-rc.1

8 months ago

6.0.0-rc.0

8 months ago

5.0.2-rc.0

8 months ago

6.0.0-rc.9

8 months ago

10.2.0-rc.3

4 months ago

6.0.0-rc.8

8 months ago

10.2.0-rc.2

4 months ago

6.0.0-rc.7

8 months ago

10.2.0-rc.1

4 months ago

6.0.0-rc.6

8 months ago

10.2.0-rc.0

4 months ago

6.0.0-rc.5

8 months ago

6.0.0-rc.4

8 months ago

6.0.0-rc.3

8 months ago

6.0.0-rc.2

8 months ago

4.2.3-rc.0

11 months ago

4.2.3-rc.1

11 months ago

4.2.3

11 months ago

9.0.0-rc.11

5 months ago

9.0.0-rc.10

5 months ago

9.0.0-rc.13

5 months ago

9.0.0-rc.12

5 months ago

9.0.0-rc.19

5 months ago

9.0.0-rc.18

5 months ago

9.0.0-rc.15

5 months ago

9.0.0-rc.14

5 months ago

9.0.0-rc.17

5 months ago

9.0.0-rc.16

5 months ago

9.2.0-rc.0

5 months ago

9.2.0-rc.1

5 months ago

9.2.0-rc.2

5 months ago

7.0.4-rc.0

7 months ago

9.2.0-rc.3

5 months ago

8.0.1-rc.7

6 months ago

8.0.1-rc.6

6 months ago

8.0.1-rc.5

6 months ago

8.0.1-rc.4

6 months ago

8.0.1-rc.3

6 months ago

8.0.1-rc.2

6 months ago

8.0.1-rc.1

6 months ago

8.0.1-rc.0

6 months ago

9.0.0-rc.22

5 months ago

9.0.0-rc.21

5 months ago

9.0.0-rc.24

5 months ago

9.0.0-rc.23

5 months ago

7.1.1-rc.1

7 months ago

7.1.1-rc.0

7 months ago

6.1.0-rc.19

7 months ago

6.1.0-rc.18

7 months ago

9.0.0-rc.20

5 months ago

6.1.0-rc.17

7 months ago

6.1.0-rc.16

7 months ago

8.1.0

5 months ago

8.1.2

5 months ago

8.1.1

5 months ago

6.1.0-rc.15

7 months ago

6.0.2-rc.1

8 months ago

6.1.0-rc.14

7 months ago

6.0.2-rc.0

8 months ago

6.1.0-rc.13

7 months ago

6.1.0-rc.12

7 months ago

9.0.0-rc.26

5 months ago

6.1.0-rc.11

7 months ago

9.0.0-rc.25

5 months ago

6.1.0-rc.10

7 months ago

6.1.0-rc.29

7 months ago

6.1.0-rc.28

7 months ago

6.1.0-rc.27

7 months ago

6.1.0-rc.26

7 months ago

6.1.0-rc.25

7 months ago

6.1.0-rc.24

7 months ago

6.1.0-rc.23

7 months ago

6.1.0-rc.22

7 months ago

6.1.0-rc.21

7 months ago

6.1.0-rc.20

7 months ago

6.1.0-rc.0

7 months ago

6.1.0-rc.2

7 months ago

6.1.0-rc.1

7 months ago

6.1.0-rc.8

7 months ago

6.1.0-rc.7

7 months ago

6.1.0-rc.9

7 months ago

6.1.0-rc.4

7 months ago

6.1.0-rc.3

7 months ago

6.1.0-rc.6

7 months ago

6.1.0-rc.5

7 months ago

9.0.0

5 months ago

6.1.0-rc.33

7 months ago

6.1.0-rc.32

7 months ago

6.1.0-rc.31

7 months ago

6.1.0-rc.30

7 months ago

7.0.5-rc.0

7 months ago

9.1.0

5 months ago

9.1.0-rc.1

5 months ago

9.1.0-rc.0

5 months ago

9.1.0-rc.3

5 months ago

9.1.0-rc.2

5 months ago

9.1.0-rc.5

5 months ago

9.1.0-rc.4

5 months ago

11.0.0-rc.0

4 months ago

8.1.0-rc.0

5 months ago

8.1.0-rc.1

5 months ago

7.0.5

7 months ago

7.0.0

7 months ago

7.0.4

7 months ago

7.0.3

7 months ago

7.0.2

7 months ago

7.0.1

7 months ago

10.0.0-rc.10

5 months ago

6.0.0-rc.12

8 months ago

6.0.0-rc.11

8 months ago

6.0.0-rc.10

8 months ago

6.0.0-rc.14

8 months ago

6.0.0-rc.13

8 months ago

10.1.1-rc.0

5 months ago

10.1.1-rc.3

5 months ago

10.1.1-rc.2

5 months ago

10.1.1-rc.1

5 months ago

7.0.2-rc.0

7 months ago

7.1.2

7 months ago

7.1.1

7 months ago

7.1.0

7 months ago

8.1.3

5 months ago

9.0.0-rc.7

5 months ago

9.0.0-rc.8

5 months ago

9.0.0-rc.5

5 months ago

9.0.0-rc.6

5 months ago

9.0.0-rc.9

5 months ago

8.0.1

6 months ago

9.0.0-rc.0

5 months ago

8.0.0

7 months ago

9.0.0-rc.3

5 months ago

9.0.0-rc.4

5 months ago

9.0.0-rc.1

5 months ago

9.0.0-rc.2

5 months ago

3.0.0-rc.20

1 year ago

3.0.0-rc.22

1 year ago

3.0.0-rc.21

1 year ago

3.0.3-rc.0

1 year ago

4.2.0-rc.13

1 year ago

4.2.0-rc.1

1 year ago

4.2.0-rc.0

1 year ago

4.2.0-rc.10

1 year ago

4.0.0

1 year ago

4.2.0-rc.11

1 year ago

4.2.0-rc.12

1 year ago

4.2.0-rc.9

1 year ago

4.2.0-rc.8

1 year ago

4.2.0-rc.7

1 year ago

4.2.0-rc.6

1 year ago

4.2.0-rc.5

1 year ago

4.2.0-rc.4

1 year ago

4.2.0-rc.3

1 year ago

4.2.0-rc.2

1 year ago

2.2.1

1 year ago

2.2.0

1 year ago

2.2.2

1 year ago

3.0.4-rc.0

1 year ago

3.0.4-rc.1

1 year ago

3.0.4-rc.2

1 year ago

3.0.4-rc.3

1 year ago

3.0.4-rc.4

1 year ago

3.0.4-rc.5

1 year ago

3.0.4-rc.6

1 year ago

3.0.4-rc.7

1 year ago

3.0.4

1 year ago

3.0.3

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

4.2.1-rc.1

1 year ago

3.0.7

1 year ago

3.0.6

1 year ago

4.2.1-rc.0

1 year ago

3.0.5

1 year ago

4.1.0-rc.9

1 year ago

3.0.0

1 year ago

4.1.0-rc.1

1 year ago

4.1.0-rc.2

1 year ago

4.1.0-rc.3

1 year ago

4.1.0-rc.4

1 year ago

4.1.0-rc.5

1 year ago

4.1.0-rc.6

1 year ago

4.1.0-rc.7

1 year ago

4.1.0-rc.8

1 year ago

4.1.0-rc.0

1 year ago

2.1.2

1 year ago

3.0.0-rc.13

1 year ago

3.0.0-rc.12

1 year ago

3.0.0-rc.15

1 year ago

3.0.0-rc.14

1 year ago

3.0.0-rc.17

1 year ago

3.0.0-rc.16

1 year ago

3.0.0-rc.19

1 year ago

3.0.0-rc.18

1 year ago

3.0.0-rc.2

1 year ago

3.0.0-rc.1

1 year ago

3.0.0-rc.0

1 year ago

3.0.0-rc.6

1 year ago

3.0.0-rc.5

1 year ago

3.0.0-rc.11

1 year ago

3.0.0-rc.4

1 year ago

3.0.0-rc.10

1 year ago

3.0.0-rc.3

1 year ago

3.0.0-rc.9

1 year ago

2.2.1-rc.0

1 year ago

3.0.0-rc.8

1 year ago

3.0.0-rc.7

1 year ago

2.2.1-rc.1

1 year ago

4.1.0-rc.20

1 year ago

2.2.0-rc.10

1 year ago

4.1.0-rc.10

1 year ago

4.1.0-rc.11

1 year ago

4.1.0-rc.12

1 year ago

4.1.0-rc.13

1 year ago

4.1.0-rc.14

1 year ago

4.1.0-rc.15

1 year ago

2.2.0-rc.11

1 year ago

4.1.0-rc.16

1 year ago

4.1.0-rc.17

1 year ago

4.1.0-rc.18

1 year ago

4.1.0-rc.19

1 year ago

3.0.6-rc.1

1 year ago

3.0.6-rc.0

1 year ago

3.0.5-rc.2

1 year ago

3.0.5-rc.1

1 year ago

3.0.5-rc.0

1 year ago

3.0.1-rc.2

1 year ago

3.0.1-rc.0

1 year ago

3.0.1-rc.1

1 year ago

4.2.2

1 year ago

4.2.1

1 year ago

4.2.0

1 year ago

2.2.0-rc.8

1 year ago

2.2.0-rc.9

1 year ago

4.1.0

1 year ago

2.1.1

1 year ago

2.2.0-rc.2

1 year ago

2.2.0-rc.3

1 year ago

2.2.0-rc.0

1 year ago

2.2.0-rc.1

1 year ago

2.2.0-rc.6

1 year ago

2.2.0-rc.7

1 year ago

2.2.0-rc.4

1 year ago

2.2.0-rc.5

1 year ago

2.1.1-rc.0

1 year ago

0.0.77-rc.0

1 year ago

0.0.77-rc.1

1 year ago

2.1.0-rc.2

1 year ago

2.1.0-rc.1

1 year ago

2.1.0-rc.0

1 year ago

2.1.0-rc.6

1 year ago

2.1.0-rc.5

1 year ago

2.1.0-rc.4

1 year ago

2.1.0-rc.3

1 year ago

2.1.0-rc.9

1 year ago

2.1.0-rc.8

1 year ago

2.1.0-rc.7

1 year ago

1.0.0-rc.5

1 year ago

1.0.0-rc.6

1 year ago

1.0.0-rc.3

1 year ago

1.0.0-rc.4

1 year ago

1.0.0-rc.1

1 year ago

1.0.0-rc.2

1 year ago

1.0.0-rc.0

1 year ago

0.0.80-rc.0

1 year ago

0.0.80-rc.1

1 year ago

0.0.80-rc.2

1 year ago

0.0.80-rc.3

1 year ago

2.0.0-rc.11

1 year ago

2.0.0-rc.12

1 year ago

2.0.0-rc.10

1 year ago

0.0.80-rc.8

1 year ago

0.0.80-rc.9

1 year ago

0.0.80-rc.4

1 year ago

0.0.80-rc.5

1 year ago

2.1.0

1 year ago

0.0.80-rc.6

1 year ago

0.0.80-rc.7

1 year ago

0.0.82-rc.0

1 year ago

0.0.82-rc.1

1 year ago

0.0.82-rc.4

1 year ago

0.0.82-rc.5

1 year ago

0.0.82-rc.2

1 year ago

0.0.82-rc.3

1 year ago

0.0.82-rc.8

1 year ago

0.0.82-rc.9

1 year ago

0.0.82-rc.6

1 year ago

0.0.79-rc.2

1 year ago

0.0.82-rc.7

1 year ago

0.0.79-rc.0

1 year ago

0.0.82-rc.10

1 year ago

0.0.79-rc.1

1 year ago

0.0.82-rc.11

1 year ago

0.0.82-rc.12

1 year ago

0.0.82-rc.13

1 year ago

0.0.82-rc.14

1 year ago

0.0.82-rc.15

1 year ago

0.0.82-rc.16

1 year ago

0.0.82-rc.17

1 year ago

0.0.82-rc.18

1 year ago

0.0.82-rc.19

1 year ago

1.0.2-rc.21

1 year ago

1.0.2-rc.3

1 year ago

1.0.2-rc.22

1 year ago

1.0.2-rc.4

1 year ago

1.0.2-rc.5

1 year ago

1.0.2-rc.20

1 year ago

1.0.2-rc.6

1 year ago

1.0.2-rc.0

1 year ago

1.0.2-rc.1

1 year ago

1.0.2-rc.2

1 year ago

1.0.2-rc.25

1 year ago

0.0.80

1 year ago

1.0.2-rc.26

1 year ago

0.0.81

1 year ago

1.0.2-rc.23

1 year ago

1.0.2-rc.24

1 year ago

0.0.82-rc.20

1 year ago

1.0.2-rc.7

1 year ago

1.0.2-rc.8

1 year ago

1.0.2-rc.9

1 year ago

2.0.0

1 year ago

0.0.73

1 year ago

0.0.74

1 year ago

0.0.75

1 year ago

0.0.76

1 year ago

0.0.77

1 year ago

0.0.78

1 year ago

0.0.79

1 year ago

0.0.70

1 year ago

0.0.71

1 year ago

0.0.72

1 year ago

0.0.63

1 year ago

0.0.64

1 year ago

0.0.65

1 year ago

0.0.66

1 year ago

0.0.67

1 year ago

0.0.68

1 year ago

0.0.69

1 year ago

2.1.0-rc.14

1 year ago

1.0.2

1 year ago

2.1.0-rc.15

1 year ago

1.0.1

1 year ago

2.1.0-rc.12

1 year ago

1.0.0

1 year ago

2.1.0-rc.13

1 year ago

2.1.0-rc.10

1 year ago

2.1.0-rc.11

1 year ago

1.0.1-rc.1

1 year ago

1.0.1-rc.0

1 year ago

1.0.1-rc.3

1 year ago

1.0.1-rc.2

1 year ago

1.0.1-rc.4

1 year ago

0.0.76-rc.0

1 year ago

0.0.76-rc.2

1 year ago

0.0.76-rc.1

1 year ago

0.0.76-rc.8

1 year ago

0.0.76-rc.7

1 year ago

0.0.76-rc.4

1 year ago

0.0.76-rc.3

1 year ago

0.0.76-rc.6

1 year ago

0.0.76-rc.5

1 year ago

2.0.0-rc.2

1 year ago

2.0.0-rc.3

1 year ago

2.0.0-rc.4

1 year ago

2.0.0-rc.5

1 year ago

2.0.0-rc.0

1 year ago

2.0.0-rc.1

1 year ago

0.0.78-rc.0

1 year ago

0.0.78-rc.1

1 year ago

2.0.0-rc.6

1 year ago

2.0.0-rc.7

1 year ago

2.0.0-rc.8

1 year ago

2.0.0-rc.9

1 year ago

1.0.2-rc.10

1 year ago

1.0.2-rc.11

1 year ago

1.0.2-rc.18

1 year ago

1.0.2-rc.19

1 year ago

1.0.2-rc.16

1 year ago

1.0.2-rc.17

1 year ago

1.0.2-rc.14

1 year ago

1.0.2-rc.15

1 year ago

1.0.2-rc.12

1 year ago

1.0.2-rc.13

1 year ago

0.0.81-rc.1

1 year ago

0.0.81-rc.0

1 year ago

0.0.62

1 year ago

0.0.61

1 year ago

0.0.59

1 year ago

0.0.58

1 year ago

0.0.57

1 year ago

0.0.56

1 year ago

0.0.55

1 year ago

0.0.54

1 year ago

0.0.53

1 year ago

0.0.52

1 year ago

0.0.50

1 year ago

0.0.49

1 year ago

0.0.48

1 year ago

0.0.47

1 year ago

0.0.46

1 year ago

0.0.45

1 year ago

0.0.44

1 year ago

0.0.43

1 year ago

0.0.42

1 year ago

0.0.41

1 year ago

0.0.40

1 year ago

0.0.38

1 year ago

0.0.37

1 year ago

0.0.36

1 year ago

0.0.35

1 year ago

0.0.34

1 year ago

0.0.33

1 year ago

0.0.32

1 year ago

0.0.31

1 year ago

0.0.30

1 year ago

0.0.29

1 year ago

0.0.28

1 year ago

0.0.27

1 year ago

0.0.26

1 year ago

0.0.25

1 year ago

0.0.24

1 year ago

0.0.23

1 year ago

0.0.22

1 year ago

0.0.21

1 year ago

0.0.20

1 year ago

0.0.19

1 year ago

0.0.18

1 year ago

0.0.16

1 year ago

0.0.15

1 year ago

0.0.14

1 year ago

0.0.13

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago