@cloudquery/cloud-ui
Version:
Plugin configuration UI connector for CloudQuery Cloud App
179 lines (122 loc) • 4.06 kB
Markdown
# @cloudquery/cloud-ui
Cloud UI for CloudQuery Cloud App.
## Description
`@cloudquery/cloud-ui` is a library that provides various UI components and utilities that are used in CloudQuery Cloud App.
## Installation
To install the library, you can use npm:
```bash
npm install @cloudquery/cloud-ui
```
## Documentation
### Components
#### TableSelector
This component is used to select one or multiple tables from a list of plugin tables.
```tsx
import { TableSelector } from '@cloudquery/cloud-ui';
const tableList = []; // List of plugin tables
const [value, setValue] = React.useState({});
const callbacks = React.useRef([]);
const subscribeToTablesValueChange = React.useCallback((callback) => {
callbacks.current.push(callback);
return () => {
callbacks.current = callbacks.current.filter((cb) => cb !== callback);
};
}, []);
const handleChange = React.useCallback((value) => {
setValue(value);
callbacks.forEach((callback) => callback(value));
}, []);
const App = () => (
<TableSelector
subscribeToTablesValueChange={subscribeToTablesValueChange}
value={value}
onChange={handleChange}
tableList={tableList}
/>
);
```
#### FormFieldGroup
This component is used to visually wrap one or more form fields.
```tsx
import { FormFieldGroup } from '@cloudquery/cloud-ui';
import TextField from '@mui/material/TextField';
const App = () => {
return (
<FormFieldGroup>
<TextField />
</FormFieldGroup>
)
}
```
### Theme
#### createThemeOptions
The `createThemeOptions` function is a function that returns the theme options for the theme that can be passed to the `createTheme` Material-UI function.
```ts
export function createThemeOptions(): ThemeOptions
```
Example:
```tsx
import { createThemeOptions } from '@cloudquery/cloud-ui';
import createMuiTheme from '@mui/material/styles/createTheme';
const themeOptions = createThemeOptions();
const theme = createMuiTheme(themeOptions);
const App = () => {
return (
<ThemeProvider theme={theme}>
{/* your app code */}
</ThemeProvider>
)
}
```
#### Breakpoints
The `breakpoints` object is an object that contains the breakpoint values for the theme.
```ts
export const breakpoints: Record<keyof BreakpointOverrides, number>
```
#### Colors
The `colors` object is an object that contains the color options for the theme.
```ts
export const colors: {
neutral: PaletteColor
primary: PaletteColor
secondary: PaletteColor
error: PaletteColor
warning: PaletteColor
info: PaletteColor
success: PaletteColor
}
```
#### createThemePaletteOptions
The `createThemePaletteOptions` function is a function that returns the palette options for the theme.
```ts
export function createThemePaletteOptions(): PaletteOptions
```
#### createThemeTypographyOptions
The `createThemeTypographyOptions` function is a function that returns the typography options for the theme.
```ts
export function createThemeTypographyOptions(): TypographyOptions
```
#### createThemeShadows
The `createThemeShadows` function is a function that returns the shadow options for the theme.
```ts
export function createThemeShadows(): Shadows
```
#### createThemeComponents
The `createThemeComponents` function is a function that returns the component options for the theme.
It requires `paletteOptions` and `typographyOptions` as parameters that should satisfy the return type of `createThemePaletteOptions` and `createThemeTypographyOptions` respectively.
```ts
export function createThemeComponents({ paletteOptions, typographyOptions }: {
paletteOptions: ReturnType<typeof createThemePaletteOptions>;
typographyOptions: TypographyOptions;
}): Components
```
## Development
### Building the Library
To build the library, run:
```bash
npm run build
```
## Contributing
If you encounter any issues or have feature requests, please feel free to open an issue on the [GitHub repository](https://github.com/cloudquery/cloud-ui/issues).
## License
This project is licensed under the [Mozilla Public License.](LICENSE).