Skip to main content

Support dark mode

The widget supports dark theme now.Support switching themes by default following the main app.Support two ways to handle the style of multiple themes (default theme, dark theme).

Using CSS Variables​

Refer to How to use css to configure the widget to support css.Use the css variables formatted in Design tokens provided by the AITable design team in css (different color schemes for different themes).

Using in the style file​

Use as follows.

.list {
color: var(--fc1);
box-shadow: var(--shadowCommonShadow2);
background-color: var(--bgCommonDefault);
}

Debugging with the browser​

In Google Chrome Console css variables will be prompted with a list of tokens corresponding to your current theme.

Choose css variables

Using in inline styles​

You can also use the colorVars object in the component library @apitable/components to automatically adapt the theme, write it with Typescript type hint variables, or of course write the css variables by hand in string format (not recommended).

import { colorVars } from '@apitable/components';

export const HelloWorld = () => {
return (
<span style={{
color: colorVars.textCommonPrimary,
background-color: 'var(--bgCommonDefault)';
}}>
Hello World
</span>
)
}

Customize css variables​

You can customize css variables to fit multiple themes, create a new variables.css file to manage custom css variables:

:root[data-theme="light"] {
--custom-variables: xxx;
}
:root[data-theme="dark"] {
--custom-variables: xxx;
}

ThemeProvider​

Get color variables with hooks​

The widget has been wrapped by default by the ThemeProvider component, which already supports changing themes following the main application theme.Use the useTheme hooks of @apitable/components to get the colors.

import { useTheme } from "@apitable/components";

export const HelloWorld = () => {
const theme = useTheme();
return (
<span style={{ color: theme.color.textCommonPrimary }}>Hello World</span>
);
};

Get theme information​

Information on the current topic can be obtained using useMeta.

import { useMeta } from "@apitable/widget-sdk";

const meta = useMeta();

const theme = meta.theme;