11.0.0 • Published 9 months ago

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

Weekly downloads
-
License
MPL-2.0
Repository
github
Last release
9 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

1 year ago

10.0.0

9 months ago

5.0.0-rc.0

1 year ago

5.0.0-rc.1

1 year ago

5.0.0-rc.2

1 year ago

5.0.0-rc.3

1 year ago

5.0.0-rc.4

1 year ago

5.0.0-rc.5

1 year ago

5.0.0-rc.6

1 year ago

5.0.0-rc.7

1 year ago

5.0.0-rc.8

1 year ago

5.0.2

1 year ago

5.0.1

1 year ago

5.0.0

1 year ago

10.0.0-rc.4

9 months ago

10.0.0-rc.3

9 months ago

10.0.0-rc.6

9 months ago

10.0.0-rc.5

9 months ago

10.0.0-rc.8

9 months ago

10.0.0-rc.7

9 months ago

10.0.0-rc.9

9 months ago

10.1.0-rc.0

9 months ago

10.0.0-rc.0

9 months ago

10.1.0-rc.1

9 months ago

10.1.0-rc.2

9 months ago

10.0.0-rc.2

9 months ago

10.0.0-rc.1

9 months ago

7.1.0-rc.0

11 months ago

7.1.0-rc.1

11 months ago

7.1.0-rc.2

11 months ago

7.1.0-rc.3

11 months ago

11.0.0

9 months ago

6.0.1

12 months ago

6.0.0

12 months ago

10.1.0

9 months ago

10.1.1

9 months ago

6.0.2

12 months ago

8.0.0-rc.0

11 months ago

7.1.2-rc.0

11 months ago

8.0.0-rc.1

11 months ago

8.0.0-rc.2

11 months ago

8.1.1-rc.0

10 months ago

7.0.1-rc.4

11 months ago

7.0.1-rc.5

11 months ago

7.0.1-rc.6

11 months ago

5.0.0-rc.10

1 year ago

5.0.0-rc.11

1 year ago

5.0.0-rc.12

1 year ago

5.0.0-rc.13

1 year ago

7.0.1-rc.0

11 months ago

5.0.0-rc.14

1 year ago

7.0.1-rc.1

11 months ago

5.0.0-rc.15

1 year ago

7.0.1-rc.2

11 months ago

7.0.1-rc.3

11 months ago

7.0.0-rc.8

11 months ago

7.0.0-rc.7

12 months ago

7.0.0-rc.4

12 months ago

7.0.0-rc.3

12 months ago

7.0.0-rc.6

12 months ago

7.0.0-rc.5

12 months ago

7.0.0-rc.0

12 months ago

7.0.0-rc.2

12 months ago

7.0.0-rc.1

12 months ago

6.0.0-rc.1

12 months ago

5.0.2-rc.1

1 year ago

6.0.0-rc.0

12 months ago

5.0.2-rc.0

1 year ago

6.0.0-rc.9

12 months ago

10.2.0-rc.3

9 months ago

6.0.0-rc.8

12 months ago

10.2.0-rc.2

9 months ago

6.0.0-rc.7

12 months ago

10.2.0-rc.1

9 months ago

6.0.0-rc.6

12 months ago

10.2.0-rc.0

9 months ago

6.0.0-rc.5

12 months ago

6.0.0-rc.4

12 months ago

6.0.0-rc.3

12 months ago

6.0.0-rc.2

12 months ago

4.2.3-rc.0

1 year ago

4.2.3-rc.1

1 year ago

4.2.3

1 year ago

9.0.0-rc.11

9 months ago

9.0.0-rc.10

9 months ago

9.0.0-rc.13

9 months ago

9.0.0-rc.12

9 months ago

9.0.0-rc.19

9 months ago

9.0.0-rc.18

9 months ago

9.0.0-rc.15

9 months ago

9.0.0-rc.14

9 months ago

9.0.0-rc.17

9 months ago

9.0.0-rc.16

9 months ago

9.2.0-rc.0

9 months ago

9.2.0-rc.1

9 months ago

9.2.0-rc.2

9 months ago

7.0.4-rc.0

11 months ago

9.2.0-rc.3

9 months ago

8.0.1-rc.7

10 months ago

8.0.1-rc.6

10 months ago

8.0.1-rc.5

10 months ago

8.0.1-rc.4

11 months ago

8.0.1-rc.3

11 months ago

8.0.1-rc.2

11 months ago

8.0.1-rc.1

11 months ago

8.0.1-rc.0

11 months ago

9.0.0-rc.22

9 months ago

9.0.0-rc.21

9 months ago

9.0.0-rc.24

9 months ago

9.0.0-rc.23

9 months ago

7.1.1-rc.1

11 months ago

7.1.1-rc.0

11 months ago

6.1.0-rc.19

12 months ago

6.1.0-rc.18

12 months ago

9.0.0-rc.20

9 months ago

6.1.0-rc.17

12 months ago

6.1.0-rc.16

12 months ago

8.1.0

10 months ago

8.1.2

9 months ago

8.1.1

10 months ago

6.1.0-rc.15

12 months ago

6.0.2-rc.1

12 months ago

6.1.0-rc.14

12 months ago

6.0.2-rc.0

12 months ago

6.1.0-rc.13

12 months ago

6.1.0-rc.12

12 months ago

9.0.0-rc.26

9 months ago

6.1.0-rc.11

12 months ago

9.0.0-rc.25

9 months ago

6.1.0-rc.10

12 months ago

6.1.0-rc.29

12 months ago

6.1.0-rc.28

12 months ago

6.1.0-rc.27

12 months ago

6.1.0-rc.26

12 months ago

6.1.0-rc.25

12 months ago

6.1.0-rc.24

12 months ago

6.1.0-rc.23

12 months ago

6.1.0-rc.22

12 months ago

6.1.0-rc.21

12 months ago

6.1.0-rc.20

12 months ago

6.1.0-rc.0

12 months ago

6.1.0-rc.2

12 months ago

6.1.0-rc.1

12 months ago

6.1.0-rc.8

12 months ago

6.1.0-rc.7

12 months ago

6.1.0-rc.9

12 months ago

6.1.0-rc.4

12 months ago

6.1.0-rc.3

12 months ago

6.1.0-rc.6

12 months ago

6.1.0-rc.5

12 months ago

9.0.0

9 months ago

6.1.0-rc.33

12 months ago

6.1.0-rc.32

12 months ago

6.1.0-rc.31

12 months ago

6.1.0-rc.30

12 months ago

7.0.5-rc.0

11 months ago

9.1.0

9 months ago

9.1.0-rc.1

9 months ago

9.1.0-rc.0

9 months ago

9.1.0-rc.3

9 months ago

9.1.0-rc.2

9 months ago

9.1.0-rc.5

9 months ago

9.1.0-rc.4

9 months ago

11.0.0-rc.0

9 months ago

8.1.0-rc.0

10 months ago

8.1.0-rc.1

10 months ago

7.0.5

11 months ago

7.0.0

12 months ago

7.0.4

11 months ago

7.0.3

11 months ago

7.0.2

11 months ago

7.0.1

11 months ago

10.0.0-rc.10

9 months ago

6.0.0-rc.12

12 months ago

6.0.0-rc.11

12 months ago

6.0.0-rc.10

12 months ago

6.0.0-rc.14

12 months ago

6.0.0-rc.13

12 months ago

10.1.1-rc.0

9 months ago

10.1.1-rc.3

9 months ago

10.1.1-rc.2

9 months ago

10.1.1-rc.1

9 months ago

7.0.2-rc.0

11 months ago

7.1.2

11 months ago

7.1.1

11 months ago

7.1.0

11 months ago

8.1.3

9 months ago

9.0.0-rc.7

9 months ago

9.0.0-rc.8

9 months ago

9.0.0-rc.5

9 months ago

9.0.0-rc.6

9 months ago

9.0.0-rc.9

9 months ago

8.0.1

10 months ago

9.0.0-rc.0

9 months ago

8.0.0

11 months ago

9.0.0-rc.3

9 months ago

9.0.0-rc.4

9 months ago

9.0.0-rc.1

9 months ago

9.0.0-rc.2

9 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

2 years ago

0.0.58

2 years ago

0.0.57

2 years ago

0.0.56

2 years ago

0.0.55

2 years ago

0.0.54

2 years ago

0.0.53

2 years ago

0.0.52

2 years ago

0.0.50

2 years ago

0.0.49

2 years ago

0.0.48

2 years ago

0.0.47

2 years ago

0.0.46

2 years ago

0.0.45

2 years ago

0.0.44

2 years ago

0.0.43

2 years ago

0.0.42

2 years ago

0.0.41

2 years ago

0.0.40

2 years ago

0.0.38

2 years ago

0.0.37

2 years ago

0.0.36

2 years ago

0.0.35

2 years ago

0.0.34

2 years ago

0.0.33

2 years ago

0.0.32

2 years ago

0.0.31

2 years ago

0.0.30

2 years ago

0.0.29

2 years ago

0.0.28

2 years ago

0.0.27

2 years ago

0.0.26

2 years ago

0.0.25

2 years ago

0.0.24

2 years ago

0.0.23

2 years ago

0.0.22

2 years ago

0.0.21

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago