如何在 Chakra UI 主题中设置原色?

How can I set a primary color in Chakra UI theme?

我想在我的主题中设置主色和次色。js/theme.ts.有什么办法吗?

我习惯于在我的 React 项目中使用 Material UI 组件。 可以在那里设置 'primary' 和 'secondary' 的调色板。

我的意思是这样的:

export const theme = createTheme({
  palette: {
    primary: {
      main: "#7bb9e8"
    },
    secondary: {
      main: "#eb7f7f"
    }
  }
})

您可以customize the theme以任何可能的方式:

import { extendTheme } from "@chakra-ui/react";

const theme = extendTheme({
  colors: {
    primary: {
      main: "#7bb9e8"
    },
    secondary: {
      main: "#eb7f7f"
    }
  }
});

然后把这个主题传给ChakraProvider

//index.js

    <ChakraProvider theme={theme}>
      <App />
    </ChakraProvider>

并且您将能够使用自己的颜色通过 useTheme 挂钩访问主题:

import { useTheme } from "@chakra-ui/react";
...
  const theme = useTheme();
...
<Button bg={theme.colors.primary.main}>Button</Button>

或者全局覆盖组件样式inside the component object

Demo

一旦定义了所有颜色的阴影,就可以将自定义颜色用作组件的 colorSheme:

const theme = extendTheme({
   colors: {
     primary: {
      main: "#7bb9e8",
      50: "#e3f2fd",
      100: "#bbdefb",
      200: "#90caf9",
      300: "#64b5f6",
      400: "#42a5f5",
      500: "#2196f3",
      600: "#1e88e5",
      700: "#1976d2",
      800: "#1565c0",
      900: "#0d47a1"
    }
  }
});

你的组件:

<Button colorScheme="primary">Button</Button>

Demo

根据本节:https://chakra-ui.com/docs/styled-system/theming/customize-theme#using-theme-extensions

您不必到处都通过 color='primary'

只需创建自定义主题,然后将主要颜色设置为默认颜色。

此示例说明如何将青色设置为每个组件的默认颜色。

const theme = extendTheme(
  {
    colors: {
      primary: baseTheme.colors.cyan
    },
    breakpoints,
  },
  withDefaultColorScheme({
    colorScheme: 'primary'
  }),
);

您可以使用 default_dark 属性 设置两种原色变体。它将根据实际颜色模式(light/dark 主题)使用。

import { extendTheme } from '@chakra-ui/react'

const theme = extendTheme({
  initialColorMode: 'light',
  semanticTokens: {
    colors: {
      text: {
        default: '#16161D',
        _dark: '#ade3b8',
      },
      primary: {
        default: '#FF0080',
        _dark: '#fbec8f',
      },
})

export default theme