Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/luffyZh/dynamic-antd-theme

๐ŸŒˆ A simple plugin to dynamic change ant-design theme whether less or css.
https://github.com/luffyZh/dynamic-antd-theme

ant-design antd css dynamic theme

Last synced: about 1 month ago
JSON representation

๐ŸŒˆ A simple plugin to dynamic change ant-design theme whether less or css.

Awesome Lists containing this project

README

        

![](./dynamic-antd-theme.png)

[![build-passing](https://img.shields.io/badge/build-passing-brightgreen)](https://dynamic-antd-theme-luffyzh.vercel.app/)
![release](https://badgen.net/github/release/luffyZh/dynamic-antd-theme/stable)

A simple plugin to dynamic change [ant-design](https://ant.design) theme whether less or css.

English | [็ฎ€ไฝ“ไธญๆ–‡](./README_zh_CN.md)

> Ant Design V5 has very convenient's ability to support the dynamic change theme, so the warehouse is no longer maintained, relevant document reference: https://ant.design/docs/react/customize-theme-cn.

**This project was initially targeted at 'ant-design', that means it's used in the React project. However, the core style was also applicable to 'ant-design-vue' || 'ant-design-angular'. In addition, for the convenience of one-key and auto use, the color-picker was also packaged into the project, resulting in too large a volume of the project. Aiming at this problem, I develope a new minor version โ€”โ€” [mini-dynamic-antd-theme](https://github.com/luffyZh/mini-dynamic-antd-theme).**

## ๐Ÿ  HomePage
[Dynamic-Antd-Theme-Demo](https://dynamic-antd-theme.luffyzh.now.sh/)

## ๐ŸŒ Browser Support

| ![Chrome](https://imgur.com/3C4iKO0.png) | ![Edge](https://imgur.com/vMcaXaw.png) | ![Firefox](https://imgur.com/ihXsdDO.png) | ![IE](https://raw.github.com/alrra/browser-logos/master/src/archive/internet-explorer_9-11/internet-explorer_9-11_64x64.png) | ![Safari](https://imgur.com/ENbaWUu.png) |
| --- | --- | --- | --- | --- |
| Chrome 39.0+ โœ” | Edge 12.0+ โœ” | Firefox 30.0+ โœ” | IE 11+ โœ” | Safari 9.1+ โœ” |

## ๐Ÿ“ฆ Install

`npm install dynamic-antd-theme` or `yarn add dynamic-antd-theme`

## ๐Ÿ”จ Usage

The best usage of the dynamic-antd-theme is in the common compnent (Layout/Header etc...) of your application.

```
// Layout.js
...
import DynamicAntdTheme from 'dynamic-antd-theme';
...


Change antd theme:

```

## โœจ Props

| Props | Type | Default | Description |
| ---------- | ------ | --------------------- | ------------ |
| primaryColor | String | #1890d5 | your antd initial @primary-color |
| storageName | String | custom-antd-primary-color | the name that is saved in the localStorage |
| style | Object | null | you can custom the component style simply |
| placement | String | bottomRight | change the color-picker position, `bottom, bottomRight, right, topRight, top, topLeft, left, bottomLeft`|
| themeChangeCallback | Func | null | you can do something use themeColor when themeColor changed. |
| customCss | String | '' | you can define custom css effect any element. |

### How to use the primaryColors in customCss?

You can do this using the following four variables๏ผˆjust like scss๏ผ‰๏ผš

- $primary-color
- $primary-hover-color
- $primary-active-color
- $primary-shadow-color

```
const customCss = `
.ant-btn {
font-family: fantasy;
}
.custom-title {
color: $primary-color;
}
.custom-title:hover {
color: $primary-hover-color;
cursor: pointer;
}
#custom-id {
color: $primary-shadow-color;
}
`;
```

## ๐ŸŒž Export
| export | Description |
| ---------- | ------------ |
| default | The component |
| changeAntdTheme | `param: (color, options)`, change the antd theme. The options specific attributes are as follows๏ผš - `storageName`: This can be configured to set storageName when not using picker . - `customCss`: custom Css |

## ๐ŸŒฐ More Example

### Basic Use

```

function themeChangeCallback (color) {
document.getElementById('my-header-bar').style.backgroundColor = color;
}

```

### Define Custom CSS
```
// define custom css
const customCss = `
.ant-btn {
font-family: fantasy;
}
.custom-title {
color: $primary-color;
}
.custom-title:hover {
color: $primary-hover-color;
cursor: pointer;
}
#custom-id {
color: $primary-shadow-color;
}
`;

```
The effects as flow:

![](./custom-css.gif)

### No Color-Picker

> If u don't need the `color-picker`๏ผŒ[mini-dynamic-antd-theme](https://github.com/luffyZh/mini-dynamic-antd-theme) is more suitable for you.

```
import { generateThemeColor, changeAntdTheme } from 'dynamic-antd-theme';
...

{
const color = 'blue';
changeAntdTheme(color);
}
}
>Change Theme
```

## โš ๏ธ Attention

**This solution is easy to use, so it is prone to problems. We hope you can give us timely feedback. For example, if there is a problem with any component, we will fix the updated version as soon as possible.**

- The current version requires your antd version to be lower than v3.19.0

> The antd version is higher than v3.19.0 you can also use it, if have some problems remember give me an issue.

- ...Plugin versions are updated from time to time based on antd (new antd components are updated)

## ๐Ÿ”— Changelogs
[CHANGELOG](./docs/CHANGELOG.md)

## ๐ŸŽ Follow-Up Plan

- More custom type: `border-color`, `border-radius`, etc.

> If you're interested in this repository, Fork/PR/Issue all are welcome.