主题

大约 1 分钟

主题

Chat UIKit SDK UI 组件库内置浅色和深色主题,默认为浅色主题。

  • 浅色主题

img

  • 深色主题

img

使用默认主题,代码如下:

export function App() {
  const palette = usePresetPalette();
  const dark = useDarkTheme(palette);
  const light = useLightTheme(palette);
  const theme = React.useRef("light").current;

  return (
    <Container
      options={{ appKey: "appKey" }}
      palette={palette}
      theme={theme === "light" ? light : dark}
    >
      {/* 添加子组件。 */}
    </Container>
  );
}

主题自定义

主题由 PaletteTheme 组成。

  • Palette:主题的调色板。
  • Theme:通过选择不同的颜色和样式组成明暗默认主题。

主题接口定义如下:

属性类型描述
style主题类型明暗两种类型。
button按钮主题支持自定义样式和大小。
shadow阴影主题支持自定义样式。
cornerRadius边框圆角支持自定义头像、警告框、输入框、消息气泡的圆角。

修改主题颜色

通过 useCreatePalette hook 方法获取自定义颜色的调色板,再通过 useCreateTheme hook 方法创建 Theme 对象使用。

例如:

export function App() {
  const { createPalette } = useCreatePalette({
    colors: {
      primary: 203,
      secondary: 155,
      error: 350,
      neutral: 203,
      neutralSpecial: 220,
    },
  });
  const palette = createPalette();
  const light = useLightTheme(p, "global");

  return (
    <Container options={{ appKey: "appKey" }} palette={palette} theme={light}>
      {/* 添加子组件。 */}
    </Container>
  );
}

修改样式

除了颜色,你还可以修改字体、边框圆角等样式。

export function App() {
  // 通过调色板修改
  const palette = usePresetPalette();
  // 修改边框圆角大小
  palette.cornerRadius.large = 20;
  // 修改标题样式
  palette.fonts.title.large = {
    fontSize: 20,
    fontWeight: "normal",
    lineHeight: 24,
  };

  // 通过主题修改。
  const light = useLightTheme(palette);
  // 修改消息气泡边框圆角大小
  light.cornerRadius.bubble = ["extraSmall"];

  return (
    <Container
      options={{ appKey: "appKey" }}
      palette={palette}
      theme={theme === "light" ? light : dark}
    >
      {/* 添加子组件。 */}
    </Container>
  );
}