diff --git a/components/color-picker/ColorPicker.jsx b/components/color-picker/ColorPicker.jsx deleted file mode 100644 index 66b6c3673..000000000 --- a/components/color-picker/ColorPicker.jsx +++ /dev/null @@ -1,210 +0,0 @@ -/* eslint-disable */ -import PropTypes from '../_util/vue-types'; -import { defaultConfigProvider } from '../config-provider'; -import BaseMixin from '../_util/BaseMixin'; -import Pickr from '@simonwep/pickr/dist/pickr.es5.min'; -import Icon from '../icon'; -import LocaleReceiver from '../locale-provider/LocaleReceiver'; -import enUS from './locale/en_US'; -import debounce from 'lodash-es/debounce'; - -import { getOptionProps, findDOMNode } from '../_util/props-util'; -let colors = '#194d33'; -export default { - name: 'AColorPicker', - mixins: [BaseMixin], - inject: { - configProvider: { default: () => defaultConfigProvider }, - }, - model: { - prop: 'value', - event: 'change.value', //为了支持v-model直接返回颜色字符串 所以用了自定义的事件,与pickr自带change事件进行区分 - }, - props: { - prefixCls: String, - defaultValue: String, //默认值 - config: PropTypes.object, //pickr配置 - value: String, //颜色值 - locale: PropTypes.object, //双语包 - colorRounded: Number, //颜色数值保留几位小数 - size: PropTypes.oneOf(['default', 'small', 'large']).def('default'), //尺寸 - getPopupContainer: Function, //指定渲染容器 - disabled: { type: Boolean, default: false }, //是否禁用 - format: String, //颜色格式设置 - alpha: { type: Boolean, default: false }, //是否开启透明通道 - hue: { type: Boolean, default: true }, //是否开启色彩预选 - }, - - data() { - return { - colors, - myOpen: false, - pickr: null, - i18n: enUS, - }; - }, - watch: { - 'configProvider.locale.ColorPicker': { - handler(val) { - if (this.locale) return; - this.i18n = val; - this.reInitialize(); - }, - }, - locale(val) { - this.i18n = val.ColorPicker || val.lang; - this.reInitialize(); - }, - value(val) { - this.setColor(val); - }, - disabled(val) { - this.pickr[val ? 'disable' : 'enable'](); - }, - config: { - handler() { - this.reInitialize(); - }, - deep: true, - }, - format(val) { - const type = val.toLocaleUpperCase(); - let res = this.pickr.setColorRepresentation(type); - if (res) { - this.pickr.applyColor(); - } else { - throw new TypeError('format was invalid'); - } - }, - }, - mounted() { - if (this.locale) { - this.i18n = this.locale.ColorPicker || this.locale.lang; - } - this.createPickr(); - this.eventsBinding(); - }, - unmounted() { - this.pickr.destroyAndRemove(); - }, - methods: { - reInitialize() { - this.pickr.destroyAndRemove(); - const dom = document.createElement('div'); - dom.id = 'color-picker' + this._uid; - const box = findDOMNode(this).querySelector('#color-picker-box' + this._uid); - box.appendChild(dom); - this.createPickr(); - this.eventsBinding(); - }, - setColor: debounce(function (val) { - this.pickr.setColor(val); - }, 1000), - eventsBinding() { - const pickrEvents = [ - 'init', - 'hide', - 'show', - 'save', - 'clear', - 'change', - 'changestop', - 'cancel', - 'swatchselect', - ]; - Object.keys(this.$listeners).forEach(event => { - pickrEvents.includes(event) && this.pickr.on(event, this.$listeners[event]); - }); - }, - createPickr() { - const { getPopupContainer } = getOptionProps(this); - const { getPopupContainer: getContextPopupContainer } = this.configProvider; - const container = getPopupContainer || getContextPopupContainer; - this.pickr = Pickr.create( - Object.assign( - { - el: '#color-picker' + this._uid, - container: (container && container(findDOMNode(this))) || document.body, - theme: 'monolith', // or 'monolith', or 'nano' - default: this.value || this.defaultValue || null, // 有默认颜色pickr才可以获取到_representation - components: { - // Main components - preview: true, - opacity: this.alpha, - hue: this.hue, - // Input / output Options - interaction: { - hex: true, - rgba: true, - input: true, - clear: true, - save: true, - }, - }, - }, - this.config, - { i18n: this.i18n }, - ), - ) - .on('save', (color, instance) => { - if (color) { - let _representation = instance._representation || 'HEXA'; - color = color['to' + _representation]().toString(this.colorRounded || 0); - } - this.$emit('change.value', color || ''); - }) - .on('hide', () => { - this.setState({ myOpen: false }); - }); - }, - handleOpenChange() { - const open = !this.myOpen; - this.setState({ myOpen: open }); - this.pickr[open ? 'show' : 'hide'](); - this.$emit('openChange', open); - }, - getDefaultLocale() { - const result = { - ...enUS, - ...this.$props.locale, - }; - result.lang = { - ...result.lang, - ...(this.$props.locale || {}).lang, - }; - return result; - }, - renderColorPicker() { - const { prefixCls: customizePrefixCls } = this.$props; - const { getPrefixCls } = this.configProvider; - const prefixCls = getPrefixCls('color-picker', customizePrefixCls); - const { disabled } = getOptionProps(this); - const classString = { - [prefixCls]: true, - [`${prefixCls}-open`]: this.myOpen, - [`${prefixCls}-lg`]: this.size === 'large', - [`${prefixCls}-sm`]: this.size === 'small', - [`${prefixCls}-disabled`]: this.disabled, - }; - return ( -
-
-
-
-
- -
-
- ); - }, - }, - render() { - return ( - - ); - }, -}; diff --git a/components/color-picker/__tests__/__snapshots__/index.test.js.snap b/components/color-picker/__tests__/__snapshots__/index.test.js.snap deleted file mode 100644 index 488cb5ecf..000000000 --- a/components/color-picker/__tests__/__snapshots__/index.test.js.snap +++ /dev/null @@ -1,337 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`ColorPicker prop locale should works 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; - -exports[`ColorPicker save event should works 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; - -exports[`ColorPicker should support default value 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; - -exports[`ColorPicker should support disabled 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; - -exports[`ColorPicker should support format 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; - -exports[`ColorPicker should support v-model 1`] = ` -
-
-
-
- - - - -
-
-
-
-
-
- -
-
- -
-
-
-
- -
-
-
-
- - -
- -
- -
- - - - - - - - - - - -
-
-
-`; diff --git a/components/color-picker/__tests__/index.test.js b/components/color-picker/__tests__/index.test.js deleted file mode 100644 index 1ad6a1d03..000000000 --- a/components/color-picker/__tests__/index.test.js +++ /dev/null @@ -1,155 +0,0 @@ -import { mount } from '@vue/test-utils'; -import ColorPicker from '..'; -import { asyncExpect } from '../../../tests/utils'; -describe('ColorPicker', () => { - xit('should support default value', async () => { - const wrapper = mount( - { - render() { - return p}>; - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.unmount(); - }, 1000); - }); - xit('should support v-model', async () => { - let color = 'rgba(10, 10, 10, 1)'; - const wrapper = mount( - { - data() { - return { - color, - }; - }, - render() { - return p}>; - }, - mounted() { - this.color = 'rgba(110, 120, 130, 1)'; - }, - }, - { sync: false, attachTo: 'body' }, - ); - - await asyncExpect(() => { - expect(wrapper.html()).toMatchSnapshot(); - wrapper.unmount(); - }, 1000); - }); - xit('should support disabled', async () => { - const wrapper = mount( - { - data() { - return { - disabled: false, - }; - }, - render() { - return p}>; - }, - mounted() { - this.disabled = true; - }, - }, - { sync: false, attachTo: 'body' }, - ); - - await asyncExpect(async () => { - expect(wrapper.html()).toMatchSnapshot(); - await asyncExpect(() => { - wrapper.unmount(); - }); - }, 1000); - }); - xit('should support format', async () => { - const wrapper = mount( - { - data() { - return { - format: 'RGBA', - }; - }, - render() { - return p}>; - }, - mounted() { - this.format = 'HEX'; - }, - }, - { sync: false, attachTo: 'body' }, - ); - - await asyncExpect(async () => { - expect(wrapper.html()).toMatchSnapshot(); - await asyncExpect(() => { - wrapper.unmount(); - }); - }, 1000); - }); - xit('prop locale should works', async () => { - const wrapper = mount( - { - data() { - return { - locale: { - lang: { - 'btn:save': 'セーブ', - 'btn:cancel': 'キャンセル', - 'btn:clear': '晴れ', - }, - }, - }; - }, - render() { - return ( - p} /> - ); - }, - mounted() { - this.locale = { - lang: { - 'btn:save': '1セーブ', - 'btn:cancel': '1キャンセル', - 'btn:clear': '1晴れ', - }, - }; - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(async () => { - expect(wrapper.html()).toMatchSnapshot(); - await asyncExpect(() => { - wrapper.unmount(); - }); - }, 1000); - }); - xit('save event should works', async () => { - const wrapper = mount( - { - render() { - return ( - p} onSave={this.save} /> - ); - }, - methods: { - save(val) { - return val; - }, - }, - }, - { sync: false, attachTo: 'body' }, - ); - await asyncExpect(async () => { - wrapper.find('.pcr-save').trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - await asyncExpect(() => { - wrapper.unmount(); - }); - }, 1000); - }); -}); diff --git a/components/color-picker/demo/alpha.md b/components/color-picker/demo/alpha.md deleted file mode 100644 index 181412876..000000000 --- a/components/color-picker/demo/alpha.md +++ /dev/null @@ -1,24 +0,0 @@ - -#### 透明度 -开启属性 `alpha`,可以选择带 Alpha 通道的颜色。 - - - -#### Alpha -Set the property `alpha` true, to select a color with alpha channel. - - -```vue - - -``` diff --git a/components/color-picker/demo/basic.md b/components/color-picker/demo/basic.md deleted file mode 100644 index 1f25f7136..000000000 --- a/components/color-picker/demo/basic.md +++ /dev/null @@ -1,34 +0,0 @@ - -#### 基础用法 -基本用法,可以使用 v-model 实现数据的双向绑定。 - - - -#### Basic -Basic usage. You can use v-model to enable a two-way bingding on data. - - -```vue - - -``` diff --git a/components/color-picker/demo/colors.md b/components/color-picker/demo/colors.md deleted file mode 100644 index 5609088c3..000000000 --- a/components/color-picker/demo/colors.md +++ /dev/null @@ -1,44 +0,0 @@ - -#### 颜色预设 -可以通过`config.swatches`设置,来自定义预设颜色 -更多配置 - - - -#### Color Presets -Set `config.swatches ` to customize the default color presets. -More config settings - - -```vue - - -``` diff --git a/components/color-picker/demo/hue.md b/components/color-picker/demo/hue.md deleted file mode 100644 index 4d4bd2c1b..000000000 --- a/components/color-picker/demo/hue.md +++ /dev/null @@ -1,24 +0,0 @@ - -#### 色彩 -设置属性 `hue` 为 false,可以禁用色彩选项。 - - - -#### Hue -Set property `hue` to false, can hide hue slider. - - -```vue - - -``` diff --git a/components/color-picker/demo/size.md b/components/color-picker/demo/size.md deleted file mode 100644 index 469d428c0..000000000 --- a/components/color-picker/demo/size.md +++ /dev/null @@ -1,36 +0,0 @@ - -#### 尺寸 -选择器有三种尺寸:大、默认(中)、小。 - - - -#### Size -There are three size of ColorPicker: large, medium(default), small. - - -```vue - - -``` diff --git a/components/color-picker/index.en-US.md b/components/color-picker/index.en-US.md deleted file mode 100644 index 99e345b59..000000000 --- a/components/color-picker/index.en-US.md +++ /dev/null @@ -1,27 +0,0 @@ -## API - -| Property | Description | Type | Default | -| --- | --- | --- | --- | -| colorRounded | precision of color | number | 0 | -| config | pickr config | [pickr options](https://github.com/Simonwep/pickr) | - | -| defaultValue | default color | string | - | -| disabled | whether disabled picker | boolean | false | -| format | Color format | 'HEXA' \|'RGBA' \|'HSVA' \|'HSLA' \|'CMYK' | 'HEXA' | -| getPopupContainer | to set the container of the floating layer, while the default is to create a div element in body | Function(triggerNode) | () => document.body | -| locale | locale package | [default setting](https://github.com/vueComponent/ant-design-vue/blob/main/components/color-picker/locale) | - | -| size | size of pickr | 'large'\|'small'\|'default' | 'default' | -| value | color value | string | - | - -### Event - -| Event | Description | Arguments | -| --- | --- | --- | -| `cancel` | User clicked the cancel button (return to previous color). | `PickrInstance` | -| `change` | Color has changed (but not saved). Also fired on `swatchselect` | `HSVaColorObject, PickrInstance` | -| `changestop` | User stopped to change the color | `PickrInstance` | -| `clear` | User cleared the color. | `PickrInstance` | -| `hide` | Pickr got closed | `PickrInstance` | -| `init` | Initialization done - pickr can be used | `PickrInstance` | -| `save` | User clicked the save / clear button. Also fired on clear with `null` as color. | `HSVaColorObject or null, PickrInstance` | -| `show` | Pickr got opened | `PickrInstance` | -| `swatchselect` | User clicked one of the swatches | `HSVaColorObject, PickrInstance` | diff --git a/components/color-picker/index.js b/components/color-picker/index.js deleted file mode 100644 index 3bf52f607..000000000 --- a/components/color-picker/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import ColorPicker from './ColorPicker'; -/* istanbul ignore next */ -ColorPicker.install = function (app) { - app.component(ColorPicker.name, ColorPicker); - return app; -}; - -export default ColorPicker; diff --git a/components/color-picker/index.zh-CN.md b/components/color-picker/index.zh-CN.md deleted file mode 100644 index 2bee7391e..000000000 --- a/components/color-picker/index.zh-CN.md +++ /dev/null @@ -1,27 +0,0 @@ -## API - -| 参数 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| colorRounded | 颜色数值精度 | number | 0 | -| config | pickr 配置项 | [pickr options](https://github.com/Simonwep/pickr) | - | -| defaultValue | 默认颜色 | string | - | -| disabled | 是否禁用 | boolean | false | -| format | 定义返回的颜色格式 | 'HEXA' \|'RGBA' \|'HSVA' \|'HSLA' \|'CMYK' | 'HEXA' | -| getPopupContainer | 浮层渲染父节点,默认渲染到 body 上 | Function(triggerNode) | () => document.body | -| locale | 语言包 | [默认配置](https://github.com/vueComponent/ant-design-vue/blob/main/components/color-picker/locale) | - | -| size | 取色器尺寸 | 'large'\|'small'\|'default' | 'default' | -| value | 颜色值 | string | - | - -### 事件 - -| 事件名称 | 说明 | 回调参数 | -| --- | --- | --- | -| `cancel` | 用户点击取消时(颜色返回至上个颜色) | `PickrInstance` | -| `change` | 颜色值发生变更时(非保存).`swatchselect`也会触发 | `HSVaColorObject, PickrInstance` | -| `changestop` | 用户不再改变颜色时 | `PickrInstance` | -| `clear` | 清空颜色时 | `PickrInstance` | -| `hide` | Pickr 关闭时 | `PickrInstance` | -| `init` | 初始化完成,可以使用 pickr | `PickrInstance` | -| `save` | 用户点击保存/清空按钮时 | `HSVaColorObject or null, PickrInstance` | -| `show` | Pickr 开启时 | `PickrInstance` | -| `swatchselect` | 用户切换了色板 | `HSVaColorObject, PickrInstance` | diff --git a/components/color-picker/locale/en_US.js b/components/color-picker/locale/en_US.js deleted file mode 100644 index d8f2854de..000000000 --- a/components/color-picker/locale/en_US.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'btn:save': 'Save', - 'btn:cancel': 'Cancel', - 'btn:clear': 'Clear', -}; diff --git a/components/color-picker/locale/ku_KU.js b/components/color-picker/locale/ku_KU.js deleted file mode 100644 index 6da0dccd1..000000000 --- a/components/color-picker/locale/ku_KU.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'btn:save': 'پاشکەوت کردن', - 'btn:cancel': 'هەڵوەشاندنەوە', - 'btn:clear': 'پاککردنەوە', -}; diff --git a/components/color-picker/locale/zh_CN.js b/components/color-picker/locale/zh_CN.js deleted file mode 100644 index 74117e2c7..000000000 --- a/components/color-picker/locale/zh_CN.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'btn:save': '保存', - 'btn:cancel': '取消', - 'btn:clear': '清除', -}; diff --git a/components/color-picker/locale/zh_TW.js b/components/color-picker/locale/zh_TW.js deleted file mode 100644 index 74117e2c7..000000000 --- a/components/color-picker/locale/zh_TW.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'btn:save': '保存', - 'btn:cancel': '取消', - 'btn:clear': '清除', -}; diff --git a/components/color-picker/style/index.tsx b/components/color-picker/style/index.tsx deleted file mode 100644 index 934b4e144..000000000 --- a/components/color-picker/style/index.tsx +++ /dev/null @@ -1,2 +0,0 @@ -// TODO -import '../../style/index.less'; diff --git a/components/config-provider/context.ts b/components/config-provider/context.ts index 431605eb8..ba314c7b2 100644 --- a/components/config-provider/context.ts +++ b/components/config-provider/context.ts @@ -155,3 +155,11 @@ export const defaultConfigProvider: ConfigProviderInnerProps = { }, iconPrefixCls: computed(() => defaultIconPrefixCls), }; + +export const useConfigContextInject = () => { + return inject(configProviderKey, defaultConfigProvider); +}; + +export const useConfigContextProvider = (props: ConfigProviderInnerProps) => { + return provide(configProviderKey, props); +}; diff --git a/components/config-provider/index.tsx b/components/config-provider/index.tsx index 13e847d94..3f9ae3b01 100644 --- a/components/config-provider/index.tsx +++ b/components/config-provider/index.tsx @@ -1,5 +1,5 @@ import type { App, Plugin, WatchStopHandle } from 'vue'; -import { inject, computed, reactive, provide, defineComponent, watchEffect } from 'vue'; +import { computed, reactive, defineComponent, watchEffect } from 'vue'; import defaultRenderEmpty from './renderEmpty'; import type { RenderEmptyHandler } from './renderEmpty'; import type { Locale } from '../locale-provider'; @@ -15,16 +15,20 @@ import defaultLocale from '../locale/en_US'; import type { ValidateMessages } from '../form/interface'; import useStyle from './style'; import useTheme from './hooks/useTheme'; +import defaultSeedToken from '../theme/themes/seed'; import type { ConfigProviderInnerProps, ConfigProviderProps, Theme } from './context'; import { - defaultConfigProvider, - configProviderKey, + useConfigContextProvider, + useConfigContextInject, configProviderProps, useProvideGlobalForm, defaultIconPrefixCls, } from './context'; import { useProviderSize } from './SizeContext'; import { useProviderDisabled } from './DisabledContext'; +import { createTheme } from '../_util/cssinjs'; +import { useDesignTokenProvider } from '../theme/internal'; +import { toReactive } from '../_util/toReactive'; export type { ConfigProviderProps, @@ -124,7 +128,7 @@ const ConfigProvider = defineComponent({ inheritAttrs: false, props: configProviderProps(), setup(props, { slots }) { - const parentContext = inject(configProviderKey, defaultConfigProvider); + const parentContext = useConfigContextInject(); const getPrefixCls = (suffixCls?: string, customizePrefixCls?: string) => { const { prefixCls = 'ant' } = props; if (customizePrefixCls) return customizePrefixCls; @@ -210,6 +214,26 @@ const ConfigProvider = defineComponent({ componentDisabled, transformCellText: computed(() => props.transformCellText), }; + + // ================================ Dynamic theme ================================ + const memoTheme = computed(() => { + const { algorithm, token, ...rest } = mergedTheme.value || {}; + const themeObj = + algorithm && (!Array.isArray(algorithm) || algorithm.length > 0) + ? createTheme(algorithm) + : undefined; + + return { + ...rest, + theme: themeObj, + + token: { + ...defaultSeedToken, + ...token, + }, + }; + }); + useDesignTokenProvider(toReactive(memoTheme)); const validateMessagesRef = computed(() => { // Additional Form provider let validateMessages: ValidateMessages = {}; @@ -225,8 +249,7 @@ const ConfigProvider = defineComponent({ } return validateMessages; }); - - provide(configProviderKey, configProvider); + useConfigContextProvider(configProvider); useProvideGlobalForm({ validateMessages: validateMessagesRef }); useProviderSize(componentSize); useProviderDisabled(componentDisabled); diff --git a/components/menu/style/index.ts b/components/menu/style/index.ts index 815dc26bd..c54a756d2 100644 --- a/components/menu/style/index.ts +++ b/components/menu/style/index.ts @@ -434,12 +434,12 @@ const getBaseStyle: GenerateStyle = token => { }; // ============================== Export ============================== -export default (prefixCls: Ref, injectStyle: Ref): UseComponentStyleResult => { +export default (prefixCls: Ref, injectStyle?: Ref): UseComponentStyleResult => { const useOriginHook = genComponentStyleHook( 'Menu', (token, { overrideComponentToken }) => { // Dropdown will handle menu style self. We do not need to handle this. - if (injectStyle.value === false) { + if (injectStyle?.value === false) { return []; } diff --git a/components/style/color/bezierEasing.less b/components/style/color/bezierEasing.less deleted file mode 100644 index f53ffb368..000000000 --- a/components/style/color/bezierEasing.less +++ /dev/null @@ -1,110 +0,0 @@ -/* stylelint-disable */ -.bezierEasingMixin() { -@functions: ~`(function() { - var NEWTON_ITERATIONS = 4; - var NEWTON_MIN_SLOPE = 0.001; - var SUBDIVISION_PRECISION = 0.0000001; - var SUBDIVISION_MAX_ITERATIONS = 10; - - var kSplineTableSize = 11; - var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); - - var float32ArraySupported = typeof Float32Array === 'function'; - - function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } - function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } - function C (aA1) { return 3.0 * aA1; } - - // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. - function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } - - // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. - function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } - - function binarySubdivide (aX, aA, aB, mX1, mX2) { - var currentX, currentT, i = 0; - do { - currentT = aA + (aB - aA) / 2.0; - currentX = calcBezier(currentT, mX1, mX2) - aX; - if (currentX > 0.0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); - return currentT; - } - - function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) { - for (var i = 0; i < NEWTON_ITERATIONS; ++i) { - var currentSlope = getSlope(aGuessT, mX1, mX2); - if (currentSlope === 0.0) { - return aGuessT; - } - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - return aGuessT; - } - - var BezierEasing = function (mX1, mY1, mX2, mY2) { - if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { - throw new Error('bezier x values must be in [0, 1] range'); - } - - // Precompute samples table - var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); - if (mX1 !== mY1 || mX2 !== mY2) { - for (var i = 0; i < kSplineTableSize; ++i) { - sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); - } - } - - function getTForX (aX) { - var intervalStart = 0.0; - var currentSample = 1; - var lastSample = kSplineTableSize - 1; - - for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - --currentSample; - - // Interpolate to provide an initial guess for t - var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); - var guessForT = intervalStart + dist * kSampleStepSize; - - var initialSlope = getSlope(guessForT, mX1, mX2); - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT, mX1, mX2); - } else if (initialSlope === 0.0) { - return guessForT; - } else { - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); - } - } - - return function BezierEasing (x) { - if (mX1 === mY1 && mX2 === mY2) { - return x; // linear - } - // Because JavaScript number are imprecise, we should guarantee the extremes are right. - if (x === 0) { - return 0; - } - if (x === 1) { - return 1; - } - return calcBezier(getTForX(x), mY1, mY2); - }; - }; - - this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18); - // less 3 requires a return - return ''; -})()`; -} -// It is hacky way to make this function will be compiled preferentially by less -// resolve error: `ReferenceError: colorPalette is not defined` -// https://github.com/ant-design/ant-motion/issues/44 -.bezierEasingMixin(); diff --git a/components/style/color/colorPalette.less b/components/style/color/colorPalette.less deleted file mode 100644 index f3e175d82..000000000 --- a/components/style/color/colorPalette.less +++ /dev/null @@ -1,81 +0,0 @@ -/* stylelint-disable no-duplicate-selectors */ -@import "bezierEasing"; -@import "tinyColor"; - -// We create a very complex algorithm which take the place of original tint/shade color system -// to make sure no one can understand it 👻 -// and create an entire color palette magicly by inputing just a single primary color. -// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin -.colorPaletteMixin() { -@functions: ~`(function() { - var hueStep = 2; - var saturationStep = 0.16; - var saturationStep2 = 0.05; - var brightnessStep1 = 0.05; - var brightnessStep2 = 0.15; - var lightColorCount = 5; - var darkColorCount = 4; - - var getHue = function(hsv, i, isLight) { - var hue; - if (hsv.h >= 60 && hsv.h <= 240) { - hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i; - } else { - hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i; - } - if (hue < 0) { - hue += 360; - } else if (hue >= 360) { - hue -= 360; - } - return Math.round(hue); - }; - var getSaturation = function(hsv, i, isLight) { - var saturation; - if (isLight) { - saturation = hsv.s - saturationStep * i; - } else if (i === darkColorCount) { - saturation = hsv.s + saturationStep; - } else { - saturation = hsv.s + saturationStep2 * i; - } - if (saturation > 1) { - saturation = 1; - } - if (isLight && i === lightColorCount && saturation > 0.1) { - saturation = 0.1; - } - if (saturation < 0.06) { - saturation = 0.06; - } - return Number(saturation.toFixed(2)); - }; - var getValue = function(hsv, i, isLight) { - var value; - if (isLight) { - value = hsv.v + brightnessStep1 * i; - }else{ - value = hsv.v - brightnessStep2 * i - } - if (value > 1) { - value = 1; - } - return Number(value.toFixed(2)) - }; - - this.colorPalette = function(color, index) { - var isLight = index <= 6; - var hsv = tinycolor(color).toHsv(); - var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1; - return tinycolor({ - h: getHue(hsv, i, isLight), - s: getSaturation(hsv, i, isLight), - v: getValue(hsv, i, isLight), - }).toHexString(); - }; -})()`; -} -// It is hacky way to make this function will be compiled preferentially by less -// resolve error: `ReferenceError: colorPalette is not defined` -// https://github.com/ant-design/ant-motion/issues/44 -.colorPaletteMixin(); diff --git a/components/style/color/colors.less b/components/style/color/colors.less deleted file mode 100644 index 51540bf45..000000000 --- a/components/style/color/colors.less +++ /dev/null @@ -1,162 +0,0 @@ -@import 'colorPalette'; - -// color palettes -@blue-base: #1890ff; -@blue-1: color(~`colorPalette('@{blue-6}', 1) `); -@blue-2: color(~`colorPalette('@{blue-6}', 2) `); -@blue-3: color(~`colorPalette('@{blue-6}', 3) `); -@blue-4: color(~`colorPalette('@{blue-6}', 4) `); -@blue-5: color(~`colorPalette('@{blue-6}', 5) `); -@blue-6: @blue-base; -@blue-7: color(~`colorPalette('@{blue-6}', 7) `); -@blue-8: color(~`colorPalette('@{blue-6}', 8) `); -@blue-9: color(~`colorPalette('@{blue-6}', 9) `); -@blue-10: color(~`colorPalette('@{blue-6}', 10) `); - -@purple-base: #722ed1; -@purple-1: color(~`colorPalette('@{purple-6}', 1) `); -@purple-2: color(~`colorPalette('@{purple-6}', 2) `); -@purple-3: color(~`colorPalette('@{purple-6}', 3) `); -@purple-4: color(~`colorPalette('@{purple-6}', 4) `); -@purple-5: color(~`colorPalette('@{purple-6}', 5) `); -@purple-6: @purple-base; -@purple-7: color(~`colorPalette('@{purple-6}', 7) `); -@purple-8: color(~`colorPalette('@{purple-6}', 8) `); -@purple-9: color(~`colorPalette('@{purple-6}', 9) `); -@purple-10: color(~`colorPalette('@{purple-6}', 10) `); - -@cyan-base: #13c2c2; -@cyan-1: color(~`colorPalette('@{cyan-6}', 1) `); -@cyan-2: color(~`colorPalette('@{cyan-6}', 2) `); -@cyan-3: color(~`colorPalette('@{cyan-6}', 3) `); -@cyan-4: color(~`colorPalette('@{cyan-6}', 4) `); -@cyan-5: color(~`colorPalette('@{cyan-6}', 5) `); -@cyan-6: @cyan-base; -@cyan-7: color(~`colorPalette('@{cyan-6}', 7) `); -@cyan-8: color(~`colorPalette('@{cyan-6}', 8) `); -@cyan-9: color(~`colorPalette('@{cyan-6}', 9) `); -@cyan-10: color(~`colorPalette('@{cyan-6}', 10) `); - -@green-base: #52c41a; -@green-1: color(~`colorPalette('@{green-6}', 1) `); -@green-2: color(~`colorPalette('@{green-6}', 2) `); -@green-3: color(~`colorPalette('@{green-6}', 3) `); -@green-4: color(~`colorPalette('@{green-6}', 4) `); -@green-5: color(~`colorPalette('@{green-6}', 5) `); -@green-6: @green-base; -@green-7: color(~`colorPalette('@{green-6}', 7) `); -@green-8: color(~`colorPalette('@{green-6}', 8) `); -@green-9: color(~`colorPalette('@{green-6}', 9) `); -@green-10: color(~`colorPalette('@{green-6}', 10) `); - -@magenta-base: #eb2f96; -@magenta-1: color(~`colorPalette('@{magenta-6}', 1) `); -@magenta-2: color(~`colorPalette('@{magenta-6}', 2) `); -@magenta-3: color(~`colorPalette('@{magenta-6}', 3) `); -@magenta-4: color(~`colorPalette('@{magenta-6}', 4) `); -@magenta-5: color(~`colorPalette('@{magenta-6}', 5) `); -@magenta-6: @magenta-base; -@magenta-7: color(~`colorPalette('@{magenta-6}', 7) `); -@magenta-8: color(~`colorPalette('@{magenta-6}', 8) `); -@magenta-9: color(~`colorPalette('@{magenta-6}', 9) `); -@magenta-10: color(~`colorPalette('@{magenta-6}', 10) `); - -// alias of magenta -@pink-base: #eb2f96; -@pink-1: color(~`colorPalette('@{pink-6}', 1) `); -@pink-2: color(~`colorPalette('@{pink-6}', 2) `); -@pink-3: color(~`colorPalette('@{pink-6}', 3) `); -@pink-4: color(~`colorPalette('@{pink-6}', 4) `); -@pink-5: color(~`colorPalette('@{pink-6}', 5) `); -@pink-6: @pink-base; -@pink-7: color(~`colorPalette('@{pink-6}', 7) `); -@pink-8: color(~`colorPalette('@{pink-6}', 8) `); -@pink-9: color(~`colorPalette('@{pink-6}', 9) `); -@pink-10: color(~`colorPalette('@{pink-6}', 10) `); - -@red-base: #f5222d; -@red-1: color(~`colorPalette('@{red-6}', 1) `); -@red-2: color(~`colorPalette('@{red-6}', 2) `); -@red-3: color(~`colorPalette('@{red-6}', 3) `); -@red-4: color(~`colorPalette('@{red-6}', 4) `); -@red-5: color(~`colorPalette('@{red-6}', 5) `); -@red-6: @red-base; -@red-7: color(~`colorPalette('@{red-6}', 7) `); -@red-8: color(~`colorPalette('@{red-6}', 8) `); -@red-9: color(~`colorPalette('@{red-6}', 9) `); -@red-10: color(~`colorPalette('@{red-6}', 10) `); - -@orange-base: #fa8c16; -@orange-1: color(~`colorPalette('@{orange-6}', 1) `); -@orange-2: color(~`colorPalette('@{orange-6}', 2) `); -@orange-3: color(~`colorPalette('@{orange-6}', 3) `); -@orange-4: color(~`colorPalette('@{orange-6}', 4) `); -@orange-5: color(~`colorPalette('@{orange-6}', 5) `); -@orange-6: @orange-base; -@orange-7: color(~`colorPalette('@{orange-6}', 7) `); -@orange-8: color(~`colorPalette('@{orange-6}', 8) `); -@orange-9: color(~`colorPalette('@{orange-6}', 9) `); -@orange-10: color(~`colorPalette('@{orange-6}', 10) `); - -@yellow-base: #fadb14; -@yellow-1: color(~`colorPalette('@{yellow-6}', 1) `); -@yellow-2: color(~`colorPalette('@{yellow-6}', 2) `); -@yellow-3: color(~`colorPalette('@{yellow-6}', 3) `); -@yellow-4: color(~`colorPalette('@{yellow-6}', 4) `); -@yellow-5: color(~`colorPalette('@{yellow-6}', 5) `); -@yellow-6: @yellow-base; -@yellow-7: color(~`colorPalette('@{yellow-6}', 7) `); -@yellow-8: color(~`colorPalette('@{yellow-6}', 8) `); -@yellow-9: color(~`colorPalette('@{yellow-6}', 9) `); -@yellow-10: color(~`colorPalette('@{yellow-6}', 10) `); - -@volcano-base: #fa541c; -@volcano-1: color(~`colorPalette('@{volcano-6}', 1) `); -@volcano-2: color(~`colorPalette('@{volcano-6}', 2) `); -@volcano-3: color(~`colorPalette('@{volcano-6}', 3) `); -@volcano-4: color(~`colorPalette('@{volcano-6}', 4) `); -@volcano-5: color(~`colorPalette('@{volcano-6}', 5) `); -@volcano-6: @volcano-base; -@volcano-7: color(~`colorPalette('@{volcano-6}', 7) `); -@volcano-8: color(~`colorPalette('@{volcano-6}', 8) `); -@volcano-9: color(~`colorPalette('@{volcano-6}', 9) `); -@volcano-10: color(~`colorPalette('@{volcano-6}', 10) `); - -@geekblue-base: #2f54eb; -@geekblue-1: color(~`colorPalette('@{geekblue-6}', 1) `); -@geekblue-2: color(~`colorPalette('@{geekblue-6}', 2) `); -@geekblue-3: color(~`colorPalette('@{geekblue-6}', 3) `); -@geekblue-4: color(~`colorPalette('@{geekblue-6}', 4) `); -@geekblue-5: color(~`colorPalette('@{geekblue-6}', 5) `); -@geekblue-6: @geekblue-base; -@geekblue-7: color(~`colorPalette('@{geekblue-6}', 7) `); -@geekblue-8: color(~`colorPalette('@{geekblue-6}', 8) `); -@geekblue-9: color(~`colorPalette('@{geekblue-6}', 9) `); -@geekblue-10: color(~`colorPalette('@{geekblue-6}', 10) `); - -@lime-base: #a0d911; -@lime-1: color(~`colorPalette('@{lime-6}', 1) `); -@lime-2: color(~`colorPalette('@{lime-6}', 2) `); -@lime-3: color(~`colorPalette('@{lime-6}', 3) `); -@lime-4: color(~`colorPalette('@{lime-6}', 4) `); -@lime-5: color(~`colorPalette('@{lime-6}', 5) `); -@lime-6: @lime-base; -@lime-7: color(~`colorPalette('@{lime-6}', 7) `); -@lime-8: color(~`colorPalette('@{lime-6}', 8) `); -@lime-9: color(~`colorPalette('@{lime-6}', 9) `); -@lime-10: color(~`colorPalette('@{lime-6}', 10) `); - -@gold-base: #faad14; -@gold-1: color(~`colorPalette('@{gold-6}', 1) `); -@gold-2: color(~`colorPalette('@{gold-6}', 2) `); -@gold-3: color(~`colorPalette('@{gold-6}', 3) `); -@gold-4: color(~`colorPalette('@{gold-6}', 4) `); -@gold-5: color(~`colorPalette('@{gold-6}', 5) `); -@gold-6: @gold-base; -@gold-7: color(~`colorPalette('@{gold-6}', 7) `); -@gold-8: color(~`colorPalette('@{gold-6}', 8) `); -@gold-9: color(~`colorPalette('@{gold-6}', 9) `); -@gold-10: color(~`colorPalette('@{gold-6}', 10) `); - -@preset-colors: pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue, - purple; diff --git a/components/style/color/tinyColor.less b/components/style/color/tinyColor.less deleted file mode 100644 index e576c7868..000000000 --- a/components/style/color/tinyColor.less +++ /dev/null @@ -1,1184 +0,0 @@ -/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ -.tinyColorMixin() { -@functions: ~`(function() { -// TinyColor v1.4.1 -// https://github.com/bgrins/TinyColor -// 2016-07-07, Brian Grinstead, MIT License -var trimLeft = /^\s+/, - trimRight = /\s+$/, - tinyCounter = 0, - mathRound = Math.round, - mathMin = Math.min, - mathMax = Math.max, - mathRandom = Math.random; - -function tinycolor (color, opts) { - - color = (color) ? color : ''; - opts = opts || { }; - - // If input is already a tinycolor, return itself - if (color instanceof tinycolor) { - return color; - } - // If we are called as a function, call using new instead - if (!(this instanceof tinycolor)) { - return new tinycolor(color, opts); - } - - var rgb = inputToRGB(color); - this._originalInput = color, - this._r = rgb.r, - this._g = rgb.g, - this._b = rgb.b, - this._a = rgb.a, - this._roundA = mathRound(100*this._a) / 100, - this._format = opts.format || rgb.format; - this._gradientType = opts.gradientType; - - // Don't let the range of [0,255] come back in [0,1]. - // Potentially lose a little bit of precision here, but will fix issues where - // .5 gets interpreted as half of the total, instead of half of 1 - // If it was supposed to be 128, this was already taken care of by inputToRgb - if (this._r < 1) { this._r = mathRound(this._r); } - if (this._g < 1) { this._g = mathRound(this._g); } - if (this._b < 1) { this._b = mathRound(this._b); } - - this._ok = rgb.ok; - this._tc_id = tinyCounter++; -} - -tinycolor.prototype = { - isDark: function() { - return this.getBrightness() < 128; - }, - isLight: function() { - return !this.isDark(); - }, - isValid: function() { - return this._ok; - }, - getOriginalInput: function() { - return this._originalInput; - }, - getFormat: function() { - return this._format; - }, - getAlpha: function() { - return this._a; - }, - getBrightness: function() { - //http://www.w3.org/TR/AERT#color-contrast - var rgb = this.toRgb(); - return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; - }, - getLuminance: function() { - //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef - var rgb = this.toRgb(); - var RsRGB, GsRGB, BsRGB, R, G, B; - RsRGB = rgb.r/255; - GsRGB = rgb.g/255; - BsRGB = rgb.b/255; - - if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} - if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} - if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} - return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); - }, - setAlpha: function(value) { - this._a = boundAlpha(value); - this._roundA = mathRound(100*this._a) / 100; - return this; - }, - toHsv: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; - }, - toHsvString: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); - return (this._a == 1) ? - "hsv(" + h + ", " + s + "%, " + v + "%)" : - "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; - }, - toHsl: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; - }, - toHslString: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); - return (this._a == 1) ? - "hsl(" + h + ", " + s + "%, " + l + "%)" : - "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; - }, - toHex: function(allow3Char) { - return rgbToHex(this._r, this._g, this._b, allow3Char); - }, - toHexString: function(allow3Char) { - return '#' + this.toHex(allow3Char); - }, - toHex8: function(allow4Char) { - return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); - }, - toHex8String: function(allow4Char) { - return '#' + this.toHex8(allow4Char); - }, - toRgb: function() { - return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; - }, - toRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : - "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; - }, - toPercentageRgb: function() { - return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; - }, - toPercentageRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : - "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; - }, - toName: function() { - if (this._a === 0) { - return "transparent"; - } - - if (this._a < 1) { - return false; - } - - return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; - }, - toFilter: function(secondColor) { - var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); - var secondHex8String = hex8String; - var gradientType = this._gradientType ? "GradientType = 1, " : ""; - - if (secondColor) { - var s = tinycolor(secondColor); - secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); - } - - return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; - }, - toString: function(format) { - var formatSet = !!format; - format = format || this._format; - - var formattedString = false; - var hasAlpha = this._a < 1 && this._a >= 0; - var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); - - if (needsAlphaFormat) { - // Special case for "transparent", all other non-alpha formats - // will return rgba when there is transparency. - if (format === "name" && this._a === 0) { - return this.toName(); - } - return this.toRgbString(); - } - if (format === "rgb") { - formattedString = this.toRgbString(); - } - if (format === "prgb") { - formattedString = this.toPercentageRgbString(); - } - if (format === "hex" || format === "hex6") { - formattedString = this.toHexString(); - } - if (format === "hex3") { - formattedString = this.toHexString(true); - } - if (format === "hex4") { - formattedString = this.toHex8String(true); - } - if (format === "hex8") { - formattedString = this.toHex8String(); - } - if (format === "name") { - formattedString = this.toName(); - } - if (format === "hsl") { - formattedString = this.toHslString(); - } - if (format === "hsv") { - formattedString = this.toHsvString(); - } - - return formattedString || this.toHexString(); - }, - clone: function() { - return tinycolor(this.toString()); - }, - - _applyModification: function(fn, args) { - var color = fn.apply(null, [this].concat([].slice.call(args))); - this._r = color._r; - this._g = color._g; - this._b = color._b; - this.setAlpha(color._a); - return this; - }, - lighten: function() { - return this._applyModification(lighten, arguments); - }, - brighten: function() { - return this._applyModification(brighten, arguments); - }, - darken: function() { - return this._applyModification(darken, arguments); - }, - desaturate: function() { - return this._applyModification(desaturate, arguments); - }, - saturate: function() { - return this._applyModification(saturate, arguments); - }, - greyscale: function() { - return this._applyModification(greyscale, arguments); - }, - spin: function() { - return this._applyModification(spin, arguments); - }, - - _applyCombination: function(fn, args) { - return fn.apply(null, [this].concat([].slice.call(args))); - }, - analogous: function() { - return this._applyCombination(analogous, arguments); - }, - complement: function() { - return this._applyCombination(complement, arguments); - }, - monochromatic: function() { - return this._applyCombination(monochromatic, arguments); - }, - splitcomplement: function() { - return this._applyCombination(splitcomplement, arguments); - }, - triad: function() { - return this._applyCombination(triad, arguments); - }, - tetrad: function() { - return this._applyCombination(tetrad, arguments); - } -}; - -// If input is an object, force 1 into "1.0" to handle ratios properly -// String input requires "1.0" as input, so 1 will be treated as 1 -tinycolor.fromRatio = function(color, opts) { - if (typeof color == "object") { - var newColor = {}; - for (var i in color) { - if (color.hasOwnProperty(i)) { - if (i === "a") { - newColor[i] = color[i]; - } - else { - newColor[i] = convertToPercentage(color[i]); - } - } - } - color = newColor; - } - - return tinycolor(color, opts); -}; - -// Given a string or object, convert that input to RGB -// Possible string inputs: -// -// "red" -// "#f00" or "f00" -// "#ff0000" or "ff0000" -// "#ff000000" or "ff000000" -// "rgb 255 0 0" or "rgb (255, 0, 0)" -// "rgb 1.0 0 0" or "rgb (1, 0, 0)" -// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" -// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" -// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" -// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" -// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" -// -function inputToRGB(color) { - - var rgb = { r: 0, g: 0, b: 0 }; - var a = 1; - var s = null; - var v = null; - var l = null; - var ok = false; - var format = false; - - if (typeof color == "string") { - color = stringInputToObject(color); - } - - if (typeof color == "object") { - if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { - rgb = rgbToRgb(color.r, color.g, color.b); - ok = true; - format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; - } - else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { - s = convertToPercentage(color.s); - v = convertToPercentage(color.v); - rgb = hsvToRgb(color.h, s, v); - ok = true; - format = "hsv"; - } - else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { - s = convertToPercentage(color.s); - l = convertToPercentage(color.l); - rgb = hslToRgb(color.h, s, l); - ok = true; - format = "hsl"; - } - - if (color.hasOwnProperty("a")) { - a = color.a; - } - } - - a = boundAlpha(a); - - return { - ok: ok, - format: color.format || format, - r: mathMin(255, mathMax(rgb.r, 0)), - g: mathMin(255, mathMax(rgb.g, 0)), - b: mathMin(255, mathMax(rgb.b, 0)), - a: a - }; -} - -// Conversion Functions -// -------------------- - -// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from: -// - -// rgbToRgb -// Handle bounds / percentage checking to conform to CSS color spec -// -// *Assumes:* r, g, b in [0, 255] or [0, 1] -// *Returns:* { r, g, b } in [0, 255] -function rgbToRgb(r, g, b){ - return { - r: bound01(r, 255) * 255, - g: bound01(g, 255) * 255, - b: bound01(b, 255) * 255 - }; -} - -// rgbToHsl -// Converts an RGB color value to HSL. -// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] -// *Returns:* { h, s, l } in [0,1] -function rgbToHsl(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, l = (max + min) / 2; - - if(max == min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - - h /= 6; - } - - return { h: h, s: s, l: l }; -} - -// hslToRgb -// Converts an HSL color value to RGB. -// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] -// *Returns:* { r, g, b } in the set [0, 255] -function hslToRgb(h, s, l) { - var r, g, b; - - h = bound01(h, 360); - s = bound01(s, 100); - l = bound01(l, 100); - - function hue2rgb(p, q, t) { - if(t < 0) t += 1; - if(t > 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - } - - if(s === 0) { - r = g = b = l; // achromatic - } - else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return { r: r * 255, g: g * 255, b: b * 255 }; -} - -// rgbToHsv -// Converts an RGB color value to HSV -// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] -// *Returns:* { h, s, v } in [0,1] -function rgbToHsv(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, v = max; - - var d = max - min; - s = max === 0 ? 0 : d / max; - - if(max == min) { - h = 0; // achromatic - } - else { - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - return { h: h, s: s, v: v }; -} - -// hsvToRgb -// Converts an HSV color value to RGB. -// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] -// *Returns:* { r, g, b } in the set [0, 255] - function hsvToRgb(h, s, v) { - - h = bound01(h, 360) * 6; - s = bound01(s, 100); - v = bound01(v, 100); - - var i = Math.floor(h), - f = h - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s), - mod = i % 6, - r = [v, q, p, p, t, v][mod], - g = [t, v, v, q, p, p][mod], - b = [p, p, t, v, v, q][mod]; - - return { r: r * 255, g: g * 255, b: b * 255 }; -} - -// rgbToHex -// Converts an RGB color to hex -// Assumes r, g, and b are contained in the set [0, 255] -// Returns a 3 or 6 character hex -function rgbToHex(r, g, b, allow3Char) { - - var hex = [ - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - // Return a 3 character hex if possible - if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { - return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); - } - - return hex.join(""); -} - -// rgbaToHex -// Converts an RGBA color plus alpha transparency to hex -// Assumes r, g, b are contained in the set [0, 255] and -// a in [0, 1]. Returns a 4 or 8 character rgba hex -function rgbaToHex(r, g, b, a, allow4Char) { - - var hex = [ - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)), - pad2(convertDecimalToHex(a)) - ]; - - // Return a 4 character hex if possible - if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { - return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); - } - - return hex.join(""); -} - -// rgbaToArgbHex -// Converts an RGBA color to an ARGB Hex8 string -// Rarely used, but required for "toFilter()" -function rgbaToArgbHex(r, g, b, a) { - - var hex = [ - pad2(convertDecimalToHex(a)), - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - return hex.join(""); -} - -// equals -// Can be called with any tinycolor input -tinycolor.equals = function (color1, color2) { - if (!color1 || !color2) { return false; } - return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); -}; - -tinycolor.random = function() { - return tinycolor.fromRatio({ - r: mathRandom(), - g: mathRandom(), - b: mathRandom() - }); -}; - -// Modification Functions -// ---------------------- -// Thanks to less.js for some of the basics here -// - -function desaturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s -= amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); -} - -function saturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s += amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); -} - -function greyscale(color) { - return tinycolor(color).desaturate(100); -} - -function lighten (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l += amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); -} - -function brighten(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var rgb = tinycolor(color).toRgb(); - rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); - rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); - rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); - return tinycolor(rgb); -} - -function darken (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l -= amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); -} - -// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. -// Values outside of this range will be wrapped into this range. -function spin(color, amount) { - var hsl = tinycolor(color).toHsl(); - var hue = (hsl.h + amount) % 360; - hsl.h = hue < 0 ? 360 + hue : hue; - return tinycolor(hsl); -} - -// Combination Functions -// --------------------- -// Thanks to jQuery xColor for some of the ideas behind these -// - -function complement(color) { - var hsl = tinycolor(color).toHsl(); - hsl.h = (hsl.h + 180) % 360; - return tinycolor(hsl); -} - -function triad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) - ]; -} - -function tetrad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) - ]; -} - -function splitcomplement(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), - tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) - ]; -} - -function analogous(color, results, slices) { - results = results || 6; - slices = slices || 30; - - var hsl = tinycolor(color).toHsl(); - var part = 360 / slices; - var ret = [tinycolor(color)]; - - for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { - hsl.h = (hsl.h + part) % 360; - ret.push(tinycolor(hsl)); - } - return ret; -} - -function monochromatic(color, results) { - results = results || 6; - var hsv = tinycolor(color).toHsv(); - var h = hsv.h, s = hsv.s, v = hsv.v; - var ret = []; - var modification = 1 / results; - - while (results--) { - ret.push(tinycolor({ h: h, s: s, v: v})); - v = (v + modification) % 1; - } - - return ret; -} - -// Utility Functions -// --------------------- - -tinycolor.mix = function(color1, color2, amount) { - amount = (amount === 0) ? 0 : (amount || 50); - - var rgb1 = tinycolor(color1).toRgb(); - var rgb2 = tinycolor(color2).toRgb(); - - var p = amount / 100; - - var rgba = { - r: ((rgb2.r - rgb1.r) * p) + rgb1.r, - g: ((rgb2.g - rgb1.g) * p) + rgb1.g, - b: ((rgb2.b - rgb1.b) * p) + rgb1.b, - a: ((rgb2.a - rgb1.a) * p) + rgb1.a - }; - - return tinycolor(rgba); -}; - -// Readability Functions -// --------------------- -// false -// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false -tinycolor.isReadable = function(color1, color2, wcag2) { - var readability = tinycolor.readability(color1, color2); - var wcag2Parms, out; - - out = false; - - wcag2Parms = validateWCAG2Parms(wcag2); - switch (wcag2Parms.level + wcag2Parms.size) { - case "AAsmall": - case "AAAlarge": - out = readability >= 4.5; - break; - case "AAlarge": - out = readability >= 3; - break; - case "AAAsmall": - out = readability >= 7; - break; - } - return out; - -}; - -// mostReadable -// Given a base color and a list of possible foreground or background -// colors for that base, returns the most readable color. -// Optionally returns Black or White if the most readable color is unreadable. -// *Example* -// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" -// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" -// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" -// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" -tinycolor.mostReadable = function(baseColor, colorList, args) { - var bestColor = null; - var bestScore = 0; - var readability; - var includeFallbackColors, level, size ; - args = args || {}; - includeFallbackColors = args.includeFallbackColors ; - level = args.level; - size = args.size; - - for (var i= 0; i < colorList.length ; i++) { - readability = tinycolor.readability(baseColor, colorList[i]); - if (readability > bestScore) { - bestScore = readability; - bestColor = tinycolor(colorList[i]); - } - } - - if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { - return bestColor; - } - else { - args.includeFallbackColors=false; - return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); - } -}; - -// Big List of Colors -// ------------------ -// -var names = tinycolor.names = { - aliceblue: "f0f8ff", - antiquewhite: "faebd7", - aqua: "0ff", - aquamarine: "7fffd4", - azure: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "000", - blanchedalmond: "ffebcd", - blue: "00f", - blueviolet: "8a2be2", - brown: "a52a2a", - burlywood: "deb887", - burntsienna: "ea7e5d", - cadetblue: "5f9ea0", - chartreuse: "7fff00", - chocolate: "d2691e", - coral: "ff7f50", - cornflowerblue: "6495ed", - cornsilk: "fff8dc", - crimson: "dc143c", - cyan: "0ff", - darkblue: "00008b", - darkcyan: "008b8b", - darkgoldenrod: "b8860b", - darkgray: "a9a9a9", - darkgreen: "006400", - darkgrey: "a9a9a9", - darkkhaki: "bdb76b", - darkmagenta: "8b008b", - darkolivegreen: "556b2f", - darkorange: "ff8c00", - darkorchid: "9932cc", - darkred: "8b0000", - darksalmon: "e9967a", - darkseagreen: "8fbc8f", - darkslateblue: "483d8b", - darkslategray: "2f4f4f", - darkslategrey: "2f4f4f", - darkturquoise: "00ced1", - darkviolet: "9400d3", - deeppink: "ff1493", - deepskyblue: "00bfff", - dimgray: "696969", - dimgrey: "696969", - dodgerblue: "1e90ff", - firebrick: "b22222", - floralwhite: "fffaf0", - forestgreen: "228b22", - fuchsia: "f0f", - gainsboro: "dcdcdc", - ghostwhite: "f8f8ff", - gold: "ffd700", - goldenrod: "daa520", - gray: "808080", - green: "008000", - greenyellow: "adff2f", - grey: "808080", - honeydew: "f0fff0", - hotpink: "ff69b4", - indianred: "cd5c5c", - indigo: "4b0082", - ivory: "fffff0", - khaki: "f0e68c", - lavender: "e6e6fa", - lavenderblush: "fff0f5", - lawngreen: "7cfc00", - lemonchiffon: "fffacd", - lightblue: "add8e6", - lightcoral: "f08080", - lightcyan: "e0ffff", - lightgoldenrodyellow: "fafad2", - lightgray: "d3d3d3", - lightgreen: "90ee90", - lightgrey: "d3d3d3", - lightpink: "ffb6c1", - lightsalmon: "ffa07a", - lightseagreen: "20b2aa", - lightskyblue: "87cefa", - lightslategray: "789", - lightslategrey: "789", - lightsteelblue: "b0c4de", - lightyellow: "ffffe0", - lime: "0f0", - limegreen: "32cd32", - linen: "faf0e6", - magenta: "f0f", - maroon: "800000", - mediumaquamarine: "66cdaa", - mediumblue: "0000cd", - mediumorchid: "ba55d3", - mediumpurple: "9370db", - mediumseagreen: "3cb371", - mediumslateblue: "7b68ee", - mediumspringgreen: "00fa9a", - mediumturquoise: "48d1cc", - mediumvioletred: "c71585", - midnightblue: "191970", - mintcream: "f5fffa", - mistyrose: "ffe4e1", - moccasin: "ffe4b5", - navajowhite: "ffdead", - navy: "000080", - oldlace: "fdf5e6", - olive: "808000", - olivedrab: "6b8e23", - orange: "ffa500", - orangered: "ff4500", - orchid: "da70d6", - palegoldenrod: "eee8aa", - palegreen: "98fb98", - paleturquoise: "afeeee", - palevioletred: "db7093", - papayawhip: "ffefd5", - peachpuff: "ffdab9", - peru: "cd853f", - pink: "ffc0cb", - plum: "dda0dd", - powderblue: "b0e0e6", - purple: "800080", - rebeccapurple: "663399", - red: "f00", - rosybrown: "bc8f8f", - royalblue: "4169e1", - saddlebrown: "8b4513", - salmon: "fa8072", - sandybrown: "f4a460", - seagreen: "2e8b57", - seashell: "fff5ee", - sienna: "a0522d", - silver: "c0c0c0", - skyblue: "87ceeb", - slateblue: "6a5acd", - slategray: "708090", - slategrey: "708090", - snow: "fffafa", - springgreen: "00ff7f", - steelblue: "4682b4", - tan: "d2b48c", - teal: "008080", - thistle: "d8bfd8", - tomato: "ff6347", - turquoise: "40e0d0", - violet: "ee82ee", - wheat: "f5deb3", - white: "fff", - whitesmoke: "f5f5f5", - yellow: "ff0", - yellowgreen: "9acd32" -}; - -// Make it easy to access colors via hexNames[hex] -var hexNames = tinycolor.hexNames = flip(names); - -// Utilities -// --------- - -// { 'name1': 'val1' } becomes { 'val1': 'name1' } -function flip(o) { - var flipped = { }; - for (var i in o) { - if (o.hasOwnProperty(i)) { - flipped[o[i]] = i; - } - } - return flipped; -} - -// Return a valid alpha value [0,1] with all invalid values being set to 1 -function boundAlpha(a) { - a = parseFloat(a); - - if (isNaN(a) || a < 0 || a > 1) { - a = 1; - } - - return a; -} - -// Take input from [0, n] and return it as [0, 1] -function bound01(n, max) { - if (isOnePointZero(n)) { n = "100%"; } - - var processPercent = isPercentage(n); - n = mathMin(max, mathMax(0, parseFloat(n))); - - // Automatically convert percentage into number - if (processPercent) { - n = parseInt(n * max, 10) / 100; - } - - // Handle floating point rounding errors - if ((Math.abs(n - max) < 0.000001)) { - return 1; - } - - // Convert into [0, 1] range if it isn't already - return (n % max) / parseFloat(max); -} - -// Force a number between 0 and 1 -function clamp01(val) { - return mathMin(1, mathMax(0, val)); -} - -// Parse a base-16 hex value into a base-10 integer -function parseIntFromHex(val) { - return parseInt(val, 16); -} - -// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 -// -function isOnePointZero(n) { - return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; -} - -// Check to see if string passed in is a percentage -function isPercentage(n) { - return typeof n === "string" && n.indexOf('%') != -1; -} - -// Force a hex value to have 2 characters -function pad2(c) { - return c.length == 1 ? '0' + c : '' + c; -} - -// Replace a decimal with it's percentage value -function convertToPercentage(n) { - if (n <= 1) { - n = (n * 100) + "%"; - } - - return n; -} - -// Converts a decimal to a hex value -function convertDecimalToHex(d) { - return Math.round(parseFloat(d) * 255).toString(16); -} -// Converts a hex value to a decimal -function convertHexToDecimal(h) { - return (parseIntFromHex(h) / 255); -} - -var matchers = (function() { - - // - var CSS_INTEGER = "[-\\+]?\\d+%?"; - - // - var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; - - // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. - var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; - - // Actual matching. - // Parentheses and commas are optional, but not required. - // Whitespace can take the place of commas or opening paren - var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - - return { - CSS_UNIT: new RegExp(CSS_UNIT), - rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), - rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), - hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), - hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), - hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), - hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), - hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, - hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, - hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, - hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ - }; -})(); - -// isValidCSSUnit -// Take in a single string / number and check to see if it looks like a CSS unit -// (see matchers above for definition). -function isValidCSSUnit(color) { - return !!matchers.CSS_UNIT.exec(color); -} - -// stringInputToObject -// Permissive string parsing. Take in a number of formats, and output an object -// based on detected format. Returns { r, g, b } or { h, s, l } or { h, s, v} -function stringInputToObject(color) { - - color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase(); - var named = false; - if (names[color]) { - color = names[color]; - named = true; - } - else if (color == 'transparent') { - return { r: 0, g: 0, b: 0, a: 0, format: "name" }; - } - - // Try to match string input using regular expressions. - // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] - // Just return an object and let the conversion functions handle that. - // This way the result will be the same whether the tinycolor is initialized with string or object. - var match; - if ((match = matchers.rgb.exec(color))) { - return { r: match[1], g: match[2], b: match[3] }; - } - if ((match = matchers.rgba.exec(color))) { - return { r: match[1], g: match[2], b: match[3], a: match[4] }; - } - if ((match = matchers.hsl.exec(color))) { - return { h: match[1], s: match[2], l: match[3] }; - } - if ((match = matchers.hsla.exec(color))) { - return { h: match[1], s: match[2], l: match[3], a: match[4] }; - } - if ((match = matchers.hsv.exec(color))) { - return { h: match[1], s: match[2], v: match[3] }; - } - if ((match = matchers.hsva.exec(color))) { - return { h: match[1], s: match[2], v: match[3], a: match[4] }; - } - if ((match = matchers.hex8.exec(color))) { - return { - r: parseIntFromHex(match[1]), - g: parseIntFromHex(match[2]), - b: parseIntFromHex(match[3]), - a: convertHexToDecimal(match[4]), - format: named ? "name" : "hex8" - }; - } - if ((match = matchers.hex6.exec(color))) { - return { - r: parseIntFromHex(match[1]), - g: parseIntFromHex(match[2]), - b: parseIntFromHex(match[3]), - format: named ? "name" : "hex" - }; - } - if ((match = matchers.hex4.exec(color))) { - return { - r: parseIntFromHex(match[1] + '' + match[1]), - g: parseIntFromHex(match[2] + '' + match[2]), - b: parseIntFromHex(match[3] + '' + match[3]), - a: convertHexToDecimal(match[4] + '' + match[4]), - format: named ? "name" : "hex8" - }; - } - if ((match = matchers.hex3.exec(color))) { - return { - r: parseIntFromHex(match[1] + '' + match[1]), - g: parseIntFromHex(match[2] + '' + match[2]), - b: parseIntFromHex(match[3] + '' + match[3]), - format: named ? "name" : "hex" - }; - } - - return false; -} - -function validateWCAG2Parms(parms) { - // return valid WCAG2 parms for isReadable. - // If input parms are invalid, return {"level":"AA", "size":"small"} - var level, size; - parms = parms || {"level":"AA", "size":"small"}; - level = (parms.level || "AA").toUpperCase(); - size = (parms.size || "small").toLowerCase(); - if (level !== "AA" && level !== "AAA") { - level = "AA"; - } - if (size !== "small" && size !== "large") { - size = "small"; - } - return {"level":level, "size":size}; -} - -this.tinycolor = tinycolor; - -})()`; -} -// It is hacky way to make this function will be compiled preferentially by less -// resolve error: `ReferenceError: colorPalette is not defined` -// https://github.com/ant-design/ant-motion/issues/44 -.tinyColorMixin(); diff --git a/components/style/compact.less b/components/style/compact.less deleted file mode 100644 index ef0008ba3..000000000 --- a/components/style/compact.less +++ /dev/null @@ -1,4 +0,0 @@ -@root-entry-name: default; - -@import './themes/compact.less'; -@import './core/index'; diff --git a/components/style/core/base.less b/components/style/core/base.less deleted file mode 100644 index a704c5512..000000000 --- a/components/style/core/base.less +++ /dev/null @@ -1,10 +0,0 @@ -// Config global less under antd -[class^=~'@{ant-prefix}-'], -[class*=~' @{ant-prefix}-'] { - // remove the clear button of a text input control in IE10+ - &::-ms-clear, - input::-ms-clear, - input::-ms-reveal { - display: none; - } -} diff --git a/components/style/core/global.less b/components/style/core/global.less deleted file mode 100644 index cb26cce38..000000000 --- a/components/style/core/global.less +++ /dev/null @@ -1,491 +0,0 @@ -/* stylelint-disable property-no-vendor-prefix, at-rule-no-vendor-prefix */ - -// Reboot -// -// Normalization of HTML elements, manually forked from Normalize.css to remove -// styles targeting irrelevant browsers while applying new styles. -// -// Normalize is licensed MIT. https://github.com/necolas/normalize.css - -// HTML & Body reset -@{html-selector}, -body { - .square(100%); -} - -// remove the clear button of a text input control in IE10+ -input::-ms-clear, -input::-ms-reveal { - display: none; -} - -// Document -// -// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. -// 2. Change the default font family in all browsers. -// 3. Correct the line height in all browsers. -// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS. -// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so -// we force a non-overlapping, non-auto-hiding scrollbar to counteract. -// 6. Change the default tap highlight to be completely transparent in iOS. - -*, -*::before, -*::after { - box-sizing: border-box; // 1 -} - -@{html-selector} { - font-family: sans-serif; // 2 - line-height: 1.15; // 3 - -webkit-text-size-adjust: 100%; // 4 - -ms-text-size-adjust: 100%; // 4 - -ms-overflow-style: scrollbar; // 5 - -webkit-tap-highlight-color: fade(@black, 0%); // 6 -} - -// IE10+ doesn't honor `` in some cases. -@-ms-viewport { - width: device-width; -} - -// Body -// -// 1. remove the margin in all browsers. -// 2. As a best practice, apply a default `body-background`. - -body { - margin: 0; // 1 - color: @text-color; - font-size: @font-size-base; - font-family: @font-family; - font-variant: @font-variant-base; - line-height: @line-height-base; - background-color: @body-background; // 2 - font-feature-settings: @font-feature-settings-base; -} - -// Suppress the focus outline on elements that cannot be accessed via keyboard. -// This prevents an unwanted focus outline from appearing around elements that -// might still respond to pointer events. -// -// Credit: https://github.com/suitcss/base -[tabindex='-1']:focus { - outline: none !important; -} - -// Content grouping -// -// 1. Add the correct box sizing in Firefox. -// 2. Show the overflow in Edge and IE. - -hr { - box-sizing: content-box; // 1 - height: 0; // 1 - overflow: visible; // 2 -} - -// -// Typography -// - -// remove top margins from headings -// -// By default, `

`-`

` all receive top and bottom margins. We nuke the top -// margin for easier control within type scales as it avoids margin collapsing. -h1, -h2, -h3, -h4, -h5, -h6 { - margin-top: 0; - margin-bottom: 0.5em; - color: @heading-color; - font-weight: 500; -} - -// Reset margins on paragraphs -// -// Similarly, the top margin on `

`s get reset. However, we also reset the -// bottom margin to use `em` units instead of `em`. -p { - margin-top: 0; - margin-bottom: 1em; -} - -// Abbreviations -// -// 1. remove the bottom border in Firefox 39-. -// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. -// 3. Add explicit cursor to indicate changed behavior. -// 4. Duplicate behavior to the data-* attribute for our tooltip plugin - -abbr[title], -abbr[data-original-title] { - // 4 - text-decoration: underline; // 2 - text-decoration: underline dotted; // 2 - border-bottom: 0; // 1 - cursor: help; // 3 -} - -address { - margin-bottom: 1em; - font-style: normal; - line-height: inherit; -} - -input[type='text'], -input[type='password'], -input[type='number'], -textarea { - -webkit-appearance: none; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1em; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 500; -} - -dd { - margin-bottom: 0.5em; - margin-left: 0; // Undo browser default -} - -blockquote { - margin: 0 0 1em; -} - -dfn { - font-style: italic; // Add the correct font style in Android 4.3- -} - -b, -strong { - font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari -} - -small { - font-size: 80%; // Add the correct font size in all browsers -} - -// -// Prevent `sub` and `sup` elements from affecting the line height in -// all browsers. -// - -sub, -sup { - position: relative; - font-size: 75%; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -// -// Links -// - -a { - color: @link-color; - text-decoration: @link-decoration; - background-color: transparent; // remove the gray background on active links in IE 10. - outline: none; - cursor: pointer; - transition: color 0.3s; - -webkit-text-decoration-skip: objects; // remove gaps in links underline in iOS 8+ and Safari 8+. - - &:hover { - color: @link-hover-color; - } - - &:active { - color: @link-active-color; - } - - &:active, - &:hover { - text-decoration: @link-hover-decoration; - outline: 0; - } - - // https://github.com/ant-design/ant-design/issues/22503 - &:focus { - text-decoration: @link-focus-decoration; - outline: @link-focus-outline; - } - - &[disabled] { - color: @disabled-color; - cursor: not-allowed; - } -} - -// -// Code -// - -pre, -code, -kbd, -samp { - font-size: 1em; // Correct the odd `em` font sizing in all browsers. - font-family: @code-family; -} - -pre { - // remove browser default top margin - margin-top: 0; - // Reset browser default of `1em` to use `em`s - margin-bottom: 1em; - // Don't allow content to break outside - overflow: auto; -} - -// -// Figures -// -figure { - // Apply a consistent margin strategy (matches our type styles). - margin: 0 0 1em; -} - -// -// Images and content -// - -img { - vertical-align: middle; - border-style: none; // remove the border on images inside links in IE 10-. -} - -// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property. -// -// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11 -// DON'T remove the click delay when `` is present. -// However, they DO support emoving the click delay via `touch-action: manipulation`. -// See: -// * https://getbootstrap.com/docs/4.0/content/reboot/#click-delay-optimization-for-touch -// * http://caniuse.com/#feat=css-touch-action -// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay - -a, -area, -button, -[role='button'], -input:not([type='range']), -label, -select, -summary, -textarea { - touch-action: manipulation; -} - -// -// Tables -// - -table { - border-collapse: collapse; // Prevent double borders -} - -caption { - padding-top: 0.75em; - padding-bottom: 0.3em; - color: @text-color-secondary; - text-align: left; - caption-side: bottom; -} - -// -// Forms -// - -input, -button, -select, -optgroup, -textarea { - margin: 0; // remove the margin in Firefox and Safari - color: inherit; - font-size: inherit; - font-family: inherit; - line-height: inherit; -} - -button, -input { - overflow: visible; // Show the overflow in Edge -} - -button, -select { - text-transform: none; // remove the inheritance of text transform in Firefox -} - -// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` -// controls in Android 4. -// 2. Correct the inability to style clickable types in iOS and Safari. -button, -@{html-selector} [type="button"], /* 1 */ -[type="reset"], -[type="submit"] { - -webkit-appearance: button; // 2 -} - -// remove inner border and padding from Firefox, but don't restore the outline like Normalize. -button::-moz-focus-inner, -[type='button']::-moz-focus-inner, -[type='reset']::-moz-focus-inner, -[type='submit']::-moz-focus-inner { - padding: 0; - border-style: none; -} - -input[type='radio'], -input[type='checkbox'] { - box-sizing: border-box; // 1. Add the correct box sizing in IE 10- - padding: 0; // 2. remove the padding in IE 10- -} - -input[type='date'], -input[type='time'], -input[type='datetime-local'], -input[type='month'] { - // remove the default appearance of temporal inputs to avoid a Mobile Safari - // bug where setting a custom line-height prevents text from being vertically - // centered within the input. - // See https://bugs.webkit.org/show_bug.cgi?id=139848 - // and https://github.com/twbs/bootstrap/issues/11266 - -webkit-appearance: listbox; -} - -textarea { - overflow: auto; // remove the default vertical scrollbar in IE. - // Textareas should really only resize vertically so they don't break their (horizontal) containers. - resize: vertical; -} - -fieldset { - // Browsers set a default `min-width: min-content;` on fieldsets, - // unlike e.g. `

`s, which have `min-width: 0;` by default. - // So we reset that to ensure fieldsets behave more like a standard block element. - // See https://github.com/twbs/bootstrap/issues/12359 - // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements - min-width: 0; - margin: 0; - // Reset the default outline behavior of fieldsets so they don't affect page layout. - padding: 0; - border: 0; -} - -// 1. Correct the text wrapping in Edge and IE. -// 2. Correct the color inheritance from `fieldset` elements in IE. -legend { - display: block; - width: 100%; - max-width: 100%; // 1 - margin-bottom: 0.5em; - padding: 0; - color: inherit; // 2 - font-size: 1.5em; - line-height: inherit; - white-space: normal; // 1 -} - -progress { - vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera. -} - -// Correct the cursor style of incement and decement buttons in Chrome. -[type='number']::-webkit-inner-spin-button, -[type='number']::-webkit-outer-spin-button { - height: auto; -} - -[type='search'] { - // This overrides the extra rounded corners on search inputs in iOS so that our - // `.form-control` class can properly style them. Note that this cannot simply - // be added to `.form-control` as it's not specific enough. For details, see - // https://github.com/twbs/bootstrap/issues/11586. - outline-offset: -2px; // 2. Correct the outline style in Safari. - -webkit-appearance: none; -} - -// -// remove the inner padding and cancel buttons in Chrome and Safari on macOS. -// - -[type='search']::-webkit-search-cancel-button, -[type='search']::-webkit-search-decoration { - -webkit-appearance: none; -} - -// -// 1. Correct the inability to style clickable types in iOS and Safari. -// 2. Change font properties to `inherit` in Safari. -// - -::-webkit-file-upload-button { - font: inherit; // 2 - -webkit-appearance: button; // 1 -} - -// -// Correct element displays -// - -output { - display: inline-block; -} - -summary { - display: list-item; // Add the correct display in all browsers -} - -template { - display: none; // Add the correct display in IE -} - -// Always hide an element with the `hidden` HTML attribute (from PureCSS). -// Needed for proper display in IE 10-. -[hidden] { - display: none !important; -} - -mark { - padding: 0.2em; - background-color: @yellow-1; -} - -::selection { - color: @text-color-inverse; - background: @text-selection-bg; -} - -// Utility classes -.clearfix { - .clearfix(); -} diff --git a/components/style/core/iconfont.less b/components/style/core/iconfont.less deleted file mode 100644 index f257f569c..000000000 --- a/components/style/core/iconfont.less +++ /dev/null @@ -1,25 +0,0 @@ -@import '../themes/index'; -@import '../mixins/iconfont'; - -.@{iconfont-css-prefix} { - .iconfont-mixin(); - - // https://github.com/ant-design/ant-design/issues/33703 - & > & { - line-height: 0; - vertical-align: 0; - } - - &[tabindex] { - cursor: pointer; - } -} - -.@{iconfont-css-prefix}-spin::before { - display: inline-block; - animation: loadingCircle 1s infinite linear; -} -.@{iconfont-css-prefix}-spin { - display: inline-block; - animation: loadingCircle 1s infinite linear; -} diff --git a/components/style/core/index.less b/components/style/core/index.less deleted file mode 100644 index c493947e8..000000000 --- a/components/style/core/index.less +++ /dev/null @@ -1,5 +0,0 @@ -@import '../mixins/index'; -@import 'base'; -@import 'global'; -@import 'iconfont'; -@import 'motion'; diff --git a/components/style/core/motion.less b/components/style/core/motion.less deleted file mode 100644 index 286d50eba..000000000 --- a/components/style/core/motion.less +++ /dev/null @@ -1,22 +0,0 @@ -// @import '../mixins/motion'; This has moved to theme/xxx inside. -@import 'motion/fade'; -@import 'motion/move'; -@import 'motion/other'; -@import 'motion/slide'; -@import 'motion/zoom'; - -// For common/openAnimation -.ant-motion-collapse-legacy { - overflow: hidden; - - &-active { - transition: height @animation-duration-base @ease-in-out, - opacity @animation-duration-base @ease-in-out !important; - } -} - -.ant-motion-collapse { - overflow: hidden; - transition: height @animation-duration-base @ease-in-out, - opacity @animation-duration-base @ease-in-out !important; -} diff --git a/components/style/core/motion/fade.less b/components/style/core/motion/fade.less deleted file mode 100644 index 26fe0fd4e..000000000 --- a/components/style/core/motion/fade.less +++ /dev/null @@ -1,44 +0,0 @@ -.fade-motion(@className, @keyframeName) { - @name: ~'@{ant-prefix}-@{className}'; - .make-motion(@name, @keyframeName); - .@{name}-enter, - .@{name}-appear { - opacity: 0; - animation-timing-function: linear; - } - .@{name}-leave { - animation-timing-function: linear; - } - - .make-motion(@className, @keyframeName); - .@{className}-enter, - .@{className}-appear { - opacity: 0; - animation-timing-function: linear; - } - .@{className}-leave { - animation-timing-function: linear; - } -} - -.fade-motion(fade, antFade); - -@keyframes antFadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@keyframes antFadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} diff --git a/components/style/core/motion/move.less b/components/style/core/motion/move.less deleted file mode 100644 index c9758a743..000000000 --- a/components/style/core/motion/move.less +++ /dev/null @@ -1,139 +0,0 @@ -.move-motion(@className, @keyframeName) { - @name: ~'@{ant-prefix}-@{className}'; - .make-motion(@name, @keyframeName); - .@{name}-enter, - .@{name}-appear { - opacity: 0; - animation-timing-function: @ease-out-circ; - } - .@{name}-leave { - animation-timing-function: @ease-in-circ; - } - - .make-motion(@className, @keyframeName); - .@{className}-enter, - .@{className}-appear { - opacity: 0; - animation-timing-function: @ease-out-circ; - } - .@{className}-leave { - animation-timing-function: @ease-in-circ; - } -} - -.move-motion(move-up, antMoveUp); -.move-motion(move-down, antMoveDown); -.move-motion(move-left, antMoveLeft); -.move-motion(move-right, antMoveRight); - -@keyframes antMoveDownIn { - 0% { - transform: translateY(100%); - transform-origin: 0 0; - opacity: 0; - } - - 100% { - transform: translateY(0%); - transform-origin: 0 0; - opacity: 1; - } -} - -@keyframes antMoveDownOut { - 0% { - transform: translateY(0%); - transform-origin: 0 0; - opacity: 1; - } - - 100% { - transform: translateY(100%); - transform-origin: 0 0; - opacity: 0; - } -} - -@keyframes antMoveLeftIn { - 0% { - transform: translateX(-100%); - transform-origin: 0 0; - opacity: 0; - } - - 100% { - transform: translateX(0%); - transform-origin: 0 0; - opacity: 1; - } -} - -@keyframes antMoveLeftOut { - 0% { - transform: translateX(0%); - transform-origin: 0 0; - opacity: 1; - } - - 100% { - transform: translateX(-100%); - transform-origin: 0 0; - opacity: 0; - } -} - -@keyframes antMoveRightIn { - 0% { - transform: translateX(100%); - transform-origin: 0 0; - opacity: 0; - } - - 100% { - transform: translateX(0%); - transform-origin: 0 0; - opacity: 1; - } -} - -@keyframes antMoveRightOut { - 0% { - transform: translateX(0%); - transform-origin: 0 0; - opacity: 1; - } - - 100% { - transform: translateX(100%); - transform-origin: 0 0; - opacity: 0; - } -} - -@keyframes antMoveUpIn { - 0% { - transform: translateY(-100%); - transform-origin: 0 0; - opacity: 0; - } - - 100% { - transform: translateY(0%); - transform-origin: 0 0; - opacity: 1; - } -} - -@keyframes antMoveUpOut { - 0% { - transform: translateY(0%); - transform-origin: 0 0; - opacity: 1; - } - - 100% { - transform: translateY(-100%); - transform-origin: 0 0; - opacity: 0; - } -} diff --git a/components/style/core/motion/other.less b/components/style/core/motion/other.less deleted file mode 100644 index d1a25494e..000000000 --- a/components/style/core/motion/other.less +++ /dev/null @@ -1,51 +0,0 @@ -@keyframes loadingCircle { - 100% { - transform: rotate(360deg); - } -} - -@click-animating-true: ~"[@{ant-prefix}-click-animating='true']"; -@click-animating-with-extra-node-true: ~"[@{ant-prefix}-click-animating-without-extra-node='true']"; - -@{click-animating-true}, -@{click-animating-with-extra-node-true} { - position: relative; -} - -html { - --antd-wave-shadow-color: @primary-color; - --scroll-bar: 0; -} - -@click-animating-with-extra-node-true-after: ~'@{click-animating-with-extra-node-true}::after'; - -@{click-animating-with-extra-node-true-after}, -.@{ant-prefix}-click-animating-node { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; - border-radius: inherit; - box-shadow: 0 0 0 0 @primary-color; - box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); - opacity: 0.2; - animation: fadeEffect 2s @ease-out-circ, waveEffect 0.4s @ease-out-circ; - animation-fill-mode: forwards; - content: ''; - pointer-events: none; -} - -@keyframes waveEffect { - 100% { - box-shadow: 0 0 0 @primary-color; - box-shadow: 0 0 0 @wave-animation-width var(--antd-wave-shadow-color); - } -} - -@keyframes fadeEffect { - 100% { - opacity: 0; - } -} diff --git a/components/style/core/motion/slide.less b/components/style/core/motion/slide.less deleted file mode 100644 index 89e141a97..000000000 --- a/components/style/core/motion/slide.less +++ /dev/null @@ -1,147 +0,0 @@ -.slide-motion(@className, @keyframeName) { - @name: ~'@{ant-prefix}-@{className}'; - .make-motion(@name, @keyframeName); - .@{name}-enter, - .@{name}-appear { - opacity: 0; - animation-timing-function: @ease-out-quint; - } - .@{name}-leave { - animation-timing-function: @ease-in-quint; - } -} - -.slide-motion-legacy(@className, @keyframeName) { - @name: ~'@{className}'; - .make-motion(@name, @keyframeName); - .@{name}-enter, - .@{name}-appear { - opacity: 0; - animation-timing-function: @ease-out-quint; - } - .@{name}-leave { - animation-timing-function: @ease-in-quint; - } -} - -.slide-motion-legacy(slide-up, antSlideUp); -.slide-motion-legacy(slide-down, antSlideDown); -.slide-motion-legacy(slide-left, antSlideLeft); -.slide-motion-legacy(slide-right, antSlideRight); - -.slide-motion(slide-up, antSlideUp); -.slide-motion(slide-down, antSlideDown); -.slide-motion(slide-left, antSlideLeft); -.slide-motion(slide-right, antSlideRight); - -@keyframes antSlideUpIn { - 0% { - transform: scaleY(0.8); - transform-origin: 0% 0%; - opacity: 0; - } - - 100% { - transform: scaleY(1); - transform-origin: 0% 0%; - opacity: 1; - } -} - -@keyframes antSlideUpOut { - 0% { - transform: scaleY(1); - transform-origin: 0% 0%; - opacity: 1; - } - - 100% { - transform: scaleY(0.8); - transform-origin: 0% 0%; - opacity: 0; - } -} - -@keyframes antSlideDownIn { - 0% { - transform: scaleY(0.8); - transform-origin: 100% 100%; - opacity: 0; - } - - 100% { - transform: scaleY(1); - transform-origin: 100% 100%; - opacity: 1; - } -} - -@keyframes antSlideDownOut { - 0% { - transform: scaleY(1); - transform-origin: 100% 100%; - opacity: 1; - } - - 100% { - transform: scaleY(0.8); - transform-origin: 100% 100%; - opacity: 0; - } -} - -@keyframes antSlideLeftIn { - 0% { - transform: scaleX(0.8); - transform-origin: 0% 0%; - opacity: 0; - } - - 100% { - transform: scaleX(1); - transform-origin: 0% 0%; - opacity: 1; - } -} - -@keyframes antSlideLeftOut { - 0% { - transform: scaleX(1); - transform-origin: 0% 0%; - opacity: 1; - } - - 100% { - transform: scaleX(0.8); - transform-origin: 0% 0%; - opacity: 0; - } -} - -@keyframes antSlideRightIn { - 0% { - transform: scaleX(0.8); - transform-origin: 100% 0%; - opacity: 0; - } - - 100% { - transform: scaleX(1); - transform-origin: 100% 0%; - opacity: 1; - } -} - -@keyframes antSlideRightOut { - 0% { - transform: scaleX(1); - transform-origin: 100% 0%; - opacity: 1; - } - - 100% { - transform: scaleX(0.8); - transform-origin: 100% 0%; - opacity: 0; - } -} diff --git a/components/style/core/motion/zoom.less b/components/style/core/motion/zoom.less deleted file mode 100644 index c14475c23..000000000 --- a/components/style/core/motion/zoom.less +++ /dev/null @@ -1,193 +0,0 @@ -.zoom-motion(@className, @keyframeName, @duration: @animation-duration-base) { - @name: ~'@{ant-prefix}-@{className}'; - .make-motion(@name, @keyframeName, @duration); - .@{name}-enter, - .@{name}-appear { - transform: scale(0); // need this by yiminghe - opacity: 0; - animation-timing-function: @ease-out-circ; - - &-prepare { - transform: none; - } - } - .@{name}-leave { - animation-timing-function: @ease-in-out-circ; - } - - .make-motion(@className, @keyframeName, @duration); - .@{className}-enter, - .@{className}-appear { - transform: scale(0); // need this by yiminghe - opacity: 0; - animation-timing-function: @ease-out-circ; - &-prepare { - transform: none; - } - } - .@{className}-leave { - animation-timing-function: @ease-in-out-circ; - } -} - -// For Modal, Select choosen item -.zoom-motion(zoom, antZoom); -// For Popover, Popconfirm, Dropdown -.zoom-motion(zoom-big, antZoomBig); -// For Tooltip -.zoom-motion(zoom-big-fast, antZoomBig, @animation-duration-fast); - -.zoom-motion(zoom-up, antZoomUp); -.zoom-motion(zoom-down, antZoomDown); -.zoom-motion(zoom-left, antZoomLeft); -.zoom-motion(zoom-right, antZoomRight); - -@keyframes antZoomIn { - 0% { - transform: scale(0.2); - opacity: 0; - } - - 100% { - transform: scale(1); - opacity: 1; - } -} - -@keyframes antZoomOut { - 0% { - transform: scale(1); - } - - 100% { - transform: scale(0.2); - opacity: 0; - } -} - -@keyframes antZoomBigIn { - 0% { - transform: scale(0.8); - opacity: 0; - } - - 100% { - transform: scale(1); - opacity: 1; - } -} - -@keyframes antZoomBigOut { - 0% { - transform: scale(1); - } - - 100% { - transform: scale(0.8); - opacity: 0; - } -} - -@keyframes antZoomUpIn { - 0% { - transform: scale(0.8); - transform-origin: 50% 0%; - opacity: 0; - } - - 100% { - transform: scale(1); - transform-origin: 50% 0%; - } -} - -@keyframes antZoomUpOut { - 0% { - transform: scale(1); - transform-origin: 50% 0%; - } - - 100% { - transform: scale(0.8); - transform-origin: 50% 0%; - opacity: 0; - } -} - -@keyframes antZoomLeftIn { - 0% { - transform: scale(0.8); - transform-origin: 0% 50%; - opacity: 0; - } - - 100% { - transform: scale(1); - transform-origin: 0% 50%; - } -} - -@keyframes antZoomLeftOut { - 0% { - transform: scale(1); - transform-origin: 0% 50%; - } - - 100% { - transform: scale(0.8); - transform-origin: 0% 50%; - opacity: 0; - } -} - -@keyframes antZoomRightIn { - 0% { - transform: scale(0.8); - transform-origin: 100% 50%; - opacity: 0; - } - - 100% { - transform: scale(1); - transform-origin: 100% 50%; - } -} - -@keyframes antZoomRightOut { - 0% { - transform: scale(1); - transform-origin: 100% 50%; - } - - 100% { - transform: scale(0.8); - transform-origin: 100% 50%; - opacity: 0; - } -} - -@keyframes antZoomDownIn { - 0% { - transform: scale(0.8); - transform-origin: 50% 100%; - opacity: 0; - } - - 100% { - transform: scale(1); - transform-origin: 50% 100%; - } -} - -@keyframes antZoomDownOut { - 0% { - transform: scale(1); - transform-origin: 50% 100%; - } - - 100% { - transform: scale(0.8); - transform-origin: 50% 100%; - opacity: 0; - } -} diff --git a/components/style/dark.less b/components/style/dark.less deleted file mode 100644 index 12a37313e..000000000 --- a/components/style/dark.less +++ /dev/null @@ -1,4 +0,0 @@ -@root-entry-name: default; - -@import './themes/dark.less'; -@import './core/index'; diff --git a/components/style/default.less b/components/style/default.less deleted file mode 100644 index ecec08453..000000000 --- a/components/style/default.less +++ /dev/null @@ -1,4 +0,0 @@ -// This is same as `index.less` but given `root-entry-name` for `dist/antd.less` usage -@root-entry-name: default; - -@import './index'; diff --git a/components/style/index.less b/components/style/index.less deleted file mode 100644 index 04efa3b47..000000000 --- a/components/style/index.less +++ /dev/null @@ -1,2 +0,0 @@ -@import './themes/index'; -@import './core/index'; diff --git a/components/style/index.tsx b/components/style/index.tsx deleted file mode 100644 index d74e52ee9..000000000 --- a/components/style/index.tsx +++ /dev/null @@ -1 +0,0 @@ -import './index.less'; diff --git a/components/style/mixins/box.less b/components/style/mixins/box.less deleted file mode 100644 index 4bd3ffad7..000000000 --- a/components/style/mixins/box.less +++ /dev/null @@ -1,7 +0,0 @@ -.box(@position: absolute) { - position: @position; - top: 0; - right: 0; - bottom: 0; - left: 0; -} diff --git a/components/style/mixins/clearfix.less b/components/style/mixins/clearfix.less deleted file mode 100644 index 07e89f801..000000000 --- a/components/style/mixins/clearfix.less +++ /dev/null @@ -1,16 +0,0 @@ -// mixins for clearfix -// ------------------------ -.clearfix() { - // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229 - &::before { - display: table; - content: ''; - } - - &::after { - // https://github.com/ant-design/ant-design/issues/21864 - display: table; - clear: both; - content: ''; - } -} diff --git a/components/style/mixins/compatibility.less b/components/style/mixins/compatibility.less deleted file mode 100644 index c5fb0dbc2..000000000 --- a/components/style/mixins/compatibility.less +++ /dev/null @@ -1,19 +0,0 @@ -// Compatibility for browsers. - -// Placeholder text -.placeholder(@color: @input-placeholder-color) { - // Firefox - /* stylelint-disable-next-line selector-no-vendor-prefix */ - &::-moz-placeholder { - opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526 - } - - &::placeholder { - color: @color; - user-select: none; // https://github.com/ant-design/ant-design/pull/32639 - } - - &:placeholder-shown { - text-overflow: ellipsis; - } -} diff --git a/components/style/mixins/customize.less b/components/style/mixins/customize.less deleted file mode 100644 index 6f6fc1864..000000000 --- a/components/style/mixins/customize.less +++ /dev/null @@ -1,181 +0,0 @@ -// customize dark components background in popover containers(like Modal, Drawer, Card, Popover, Popconfirm, Notification, ...) -// for dark theme -.popover-customize-bg(@containerClass, @background: @popover-background, @prefix: @ant-prefix) - when - (@theme = dark) { - @picker-prefix-cls: ~'@{prefix}-picker'; - @slider-prefix-cls: ~'@{prefix}-slider'; - @anchor-prefix-cls: ~'@{prefix}-anchor'; - @collapse-prefix-cls: ~'@{prefix}-collapse'; - @tab-prefix-cls: ~'@{prefix}-tabs'; - @timeline-prefix-cls: ~'@{prefix}-timeline'; - @tree-prefix-cls: ~'@{prefix}-tree'; - @card-prefix-cls: ~'@{prefix}-card'; - @badge-prefix-cls: ~'@{prefix}-badge'; - @transfer-prefix-cls: ~'@{prefix}-transfer'; - @calendar-prefix-cls: ~'@{prefix}-picker-calendar'; - @calendar-picker-prefix-cls: ~'@{prefix}-picker'; - @table-prefix-cls: ~'@{prefix}-table'; - - @popover-border: @border-width-base @border-style-base @popover-customize-border-color; - - .@{containerClass} { - .@{picker-prefix-cls}-clear, - .@{slider-prefix-cls}-handle, - .@{anchor-prefix-cls}-wrapper, - .@{collapse-prefix-cls}-content, - .@{timeline-prefix-cls}-item-head, - .@{card-prefix-cls} { - background-color: @background; - } - - .@{transfer-prefix-cls} { - &-list { - &-header { - background: @background; - border-bottom: @popover-border; - } - &-content-item:not(.@{transfer-prefix-cls}-list-content-item-disabled):hover { - background-color: @item-hover-bg; - } - } - } - - tr.@{table-prefix-cls}-expanded-row { - &, - &:hover { - > td { - background: #272727; - } - } - } - .@{table-prefix-cls}.@{table-prefix-cls}-small { - thead { - > tr { - > th { - background-color: @background; - border-bottom: @popover-border; - } - } - } - } - .@{table-prefix-cls} { - background-color: @background; - .@{table-prefix-cls}-row-expand-icon { - border: @popover-border; - } - - tfoot { - > tr { - > th, - > td { - border-bottom: @popover-border; - } - } - } - - thead { - > tr { - > th { - background-color: #272727; - border-bottom: @popover-border; - } - } - } - - tbody { - > tr { - > td { - border-bottom: @popover-border; - &.@{table-prefix-cls}-cell-fix-left, - &.@{table-prefix-cls}-cell-fix-right { - background-color: @background; - } - } - &.@{table-prefix-cls}-row:hover { - > td { - background: @table-header-sort-active-bg; - } - } - } - } - &.@{table-prefix-cls}-bordered { - .@{table-prefix-cls}-title { - border: @popover-border; - } - - // ============================= Cell ============================= - thead > tr > th, - tbody > tr > td, - tfoot > tr > th, - tfoot > tr > td { - border-right: @popover-border; - } - - // Fixed right should provides additional border - .@{table-prefix-cls}-cell-fix-right-first::after { - border-right: @popover-border; - } - - // ============================ Header ============================ - table > { - thead { - > tr:not(:last-child) > th { - border-bottom: @border-width-base @border-style-base @border-color-split; - } - } - } - - // =========================== Content ============================ - .@{table-prefix-cls}-container { - border: @popover-border; - } - - // ========================== Expandable ========================== - .@{table-prefix-cls}-expanded-row-fixed { - &::after { - border-right: @popover-border; - } - } - - .@{table-prefix-cls}-footer { - border: @popover-border; - } - } - .@{table-prefix-cls}-filter-trigger-container-open { - background-color: #525252; - } - } - - .@{calendar-prefix-cls}-full { - background-color: @background; - .@{calendar-picker-prefix-cls}-panel { - background-color: @background; - .@{calendar-prefix-cls}-date { - border-top: 2px solid @popover-customize-border-color; - } - } - } - - .@{tab-prefix-cls} { - &.@{tab-prefix-cls}-card .@{tab-prefix-cls}-card-bar .@{tab-prefix-cls}-tab-active { - background-color: @background; - border-bottom: @border-width-base solid @background; - } - } - - .@{badge-prefix-cls} { - &-count { - box-shadow: 0 0 0 1px @background; - } - } - - .@{tree-prefix-cls} { - &-show-line { - .@{tree-prefix-cls}-switcher { - background: @background; - } - } - } - } -} diff --git a/components/style/mixins/iconfont.less b/components/style/mixins/iconfont.less deleted file mode 100644 index dd32dd73a..000000000 --- a/components/style/mixins/iconfont.less +++ /dev/null @@ -1,28 +0,0 @@ -.iconfont-mixin() { - display: inline-block; - color: @icon-color; - font-style: normal; - line-height: 0; - text-align: center; - text-transform: none; - vertical-align: -0.125em; // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 - text-rendering: optimizelegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - - > * { - line-height: 1; - } - - svg { - display: inline-block; - } - - &::before { - display: none; // dont display old icon. - } - - & &-icon { - display: block; - } -} diff --git a/components/style/mixins/index.less b/components/style/mixins/index.less deleted file mode 100644 index 1da375ec4..000000000 --- a/components/style/mixins/index.less +++ /dev/null @@ -1,14 +0,0 @@ -// Mixins -// -------------------------------------------------- -@import 'size'; -@import 'compatibility'; -@import 'clearfix'; -@import 'iconfont'; -@import 'typography'; -@import 'customize'; -@import 'box'; -@import 'modal-mask'; -@import 'motion'; -@import 'reset'; -@import 'operation-unit'; -@import 'rounded-arrow'; diff --git a/components/style/mixins/modal-mask.less b/components/style/mixins/modal-mask.less deleted file mode 100644 index 344bb020f..000000000 --- a/components/style/mixins/modal-mask.less +++ /dev/null @@ -1,31 +0,0 @@ -@import 'box'; - -.modal-mask() { - pointer-events: none; - - &.@{ant-prefix}-zoom-enter, - &.@{ant-prefix}-zoom-appear { - transform: none; // reset scale avoid mousePosition bug - opacity: 0; - animation-duration: @animation-duration-slow; - user-select: none; // https://github.com/ant-design/ant-design/issues/11777 - } - - &-mask { - .box(fixed); - z-index: @zindex-modal-mask; - height: 100%; - background-color: @modal-mask-bg; - - &-hidden { - display: none; - } - } - - &-wrap { - .box(fixed); - overflow: auto; - outline: 0; - -webkit-overflow-scrolling: touch; - } -} diff --git a/components/style/mixins/motion.less b/components/style/mixins/motion.less deleted file mode 100644 index 1e1535000..000000000 --- a/components/style/mixins/motion.less +++ /dev/null @@ -1,33 +0,0 @@ -.motion-common(@duration: @animation-duration-base) { - animation-duration: @duration; - animation-fill-mode: both; -} - -.motion-common-leave(@duration: @animation-duration-base) { - animation-duration: @duration; - animation-fill-mode: both; -} - -.make-motion(@className, @keyframeName, @duration: @animation-duration-base) { - .@{className}-enter, - .@{className}-appear { - .motion-common(@duration); - - animation-play-state: paused; - } - .@{className}-leave { - .motion-common-leave(@duration); - - animation-play-state: paused; - } - .@{className}-enter.@{className}-enter-active, - .@{className}-appear.@{className}-appear-active { - animation-name: ~'@{keyframeName}In'; - animation-play-state: running; - } - .@{className}-leave.@{className}-leave-active { - animation-name: ~'@{keyframeName}Out'; - animation-play-state: running; - pointer-events: none; - } -} diff --git a/components/style/mixins/operation-unit.less b/components/style/mixins/operation-unit.less deleted file mode 100644 index 2dc85bf11..000000000 --- a/components/style/mixins/operation-unit.less +++ /dev/null @@ -1,16 +0,0 @@ -.operation-unit() { - color: @link-color; - text-decoration: none; - outline: none; - cursor: pointer; - transition: color 0.3s; - - &:focus, - &:hover { - color: @link-hover-color; - } - - &:active { - color: @link-active-color; - } -} diff --git a/components/style/mixins/reset.less b/components/style/mixins/reset.less deleted file mode 100644 index 905c16e24..000000000 --- a/components/style/mixins/reset.less +++ /dev/null @@ -1,11 +0,0 @@ -.reset-component() { - box-sizing: border-box; - margin: 0; - padding: 0; - color: @text-color; - font-size: @font-size-base; - font-variant: @font-variant-base; - line-height: @line-height-base; - list-style: none; - font-feature-settings: @font-feature-settings-base; -} diff --git a/components/style/mixins/rounded-arrow.less b/components/style/mixins/rounded-arrow.less deleted file mode 100644 index 96503d4b2..000000000 --- a/components/style/mixins/rounded-arrow.less +++ /dev/null @@ -1,43 +0,0 @@ -.roundedArrow(@width, @outer-radius, @bg-color: var(--antd-arrow-background-color)) { - @corner-height: unit(((@outer-radius) * (1 - 1 / sqrt(2)))); - - @width-without-unit: unit(@width); - @outer-radius-without-unit: unit(@outer-radius); - @inner-radius-without-unit: unit(@arrow-border-radius); - - @a-x: @width-without-unit - @corner-height; - @a-y: 2 * @width-without-unit + @corner-height; - @b-x: @a-x + @outer-radius-without-unit * (1 / sqrt(2)); - @b-y: 2 * @width-without-unit; - @c-x: 2 * @width-without-unit - @inner-radius-without-unit; - @c-y: 2 * @width-without-unit; - @d-x: 2 * @width-without-unit; - @d-y: 2 * @width-without-unit - @inner-radius-without-unit; - @e-x: 2 * @width-without-unit; - @e-y: @f-y + @outer-radius-without-unit * (1 / sqrt(2)); - @f-x: 2 * @width-without-unit + @corner-height; - @f-y: @width-without-unit - @corner-height; - @g-x: @f-x - 1; - @g-y: @f-y; - @h-x: @a-x; - @h-y: @a-y - 1; - - border-radius: 0 0 @arrow-border-radius; - pointer-events: none; - - &::before { - position: absolute; - top: -@width; - left: -@width; - width: @width * 3; - height: @width * 3; - background: @bg-color; - // Hack firefox: https://github.com/ant-design/ant-design/pull/33710#issuecomment-1015287825 - background-repeat: no-repeat; - background-position: ceil(-@width + 1px) ceil(-@width + 1px); - content: ''; - clip-path: path( - 'M @{a-x} @{a-y} A @{outer-radius-without-unit} @{outer-radius-without-unit} 0 0 1 @{b-x} @{b-y} L @{c-x} @{c-y} A @{inner-radius-without-unit} @{inner-radius-without-unit} 0 0 0 @{d-x} @{d-y} L @{e-x} @{e-y} A @{outer-radius-without-unit} @{outer-radius-without-unit} 0 0 1 @{f-x} @{f-y} L @{g-x} @{g-y} L @{h-x} @{h-y} Z' - ); - } -} diff --git a/components/style/mixins/size.less b/components/style/mixins/size.less deleted file mode 100644 index a8be65089..000000000 --- a/components/style/mixins/size.less +++ /dev/null @@ -1,10 +0,0 @@ -// Sizing shortcuts - -.size(@width; @height) { - width: @width; - height: @height; -} - -.square(@size) { - .size(@size; @size); -} diff --git a/components/style/mixins/typography.less b/components/style/mixins/typography.less deleted file mode 100644 index 71a4d39b0..000000000 --- a/components/style/mixins/typography.less +++ /dev/null @@ -1,58 +0,0 @@ -// =============== Common =============== -.typography-paragraph() { - margin-bottom: 1em; -} - -.typography-title(@fontSize; @fontWeight; @lineHeight; @headingColor; @headingMarginBottom;) { - margin-bottom: @headingMarginBottom; - color: @headingColor; - font-weight: @fontWeight; - font-size: @fontSize; - line-height: @lineHeight; -} - -.typography-title-1() { - .typography-title( - @heading-1-size, - @typography-title-font-weight, - 1.23, - @heading-color, - @typography-title-margin-bottom - ); -} -.typography-title-2() { - .typography-title( - @heading-2-size, - @typography-title-font-weight, - 1.35, - @heading-color, - @typography-title-margin-bottom - ); -} -.typography-title-3() { - .typography-title( - @heading-3-size, - @typography-title-font-weight, - 1.35, - @heading-color, - @typography-title-margin-bottom - ); -} -.typography-title-4() { - .typography-title( - @heading-4-size, - @typography-title-font-weight, - 1.4, - @heading-color, - @typography-title-margin-bottom - ); -} -.typography-title-5() { - .typography-title( - @heading-5-size, - @typography-title-font-weight, - 1.5, - @heading-color, - @typography-title-margin-bottom - ); -} diff --git a/components/style/themes/compact.less b/components/style/themes/compact.less deleted file mode 100644 index 913ec9a55..000000000 --- a/components/style/themes/compact.less +++ /dev/null @@ -1,295 +0,0 @@ -@import './default.less'; - -@line-height-base: 1.66667; -@mode: compact; -@font-size-base: 12px; -@font-size-lg: @font-size-base + 2px; - -// default paddings -@default-padding-lg: 24px; // containers -@default-padding-md: 16px; // small containers and buttons -@default-padding-sm: 12px; // Form controls and items -@default-padding-xs: 8px; // small items -@default-padding-xss: 4px; // more small - -// vertical paddings -@padding-lg: 16px; // containers -@padding-md: 8px; // small containers and buttons -@padding-sm: 8px; // Form controls and items -@padding-xs: 4px; // small items -@padding-xss: 0px; // more small - -// vertical padding for all form controls -@control-padding-horizontal: @padding-sm; -@control-padding-horizontal-sm: @default-padding-xs; - -// vertical margins -@margin-lg: 16px; // containers -@margin-md: 8px; // small containers and buttons -@margin-sm: 8px; // Form controls and items -@margin-xs: 4px; // small items -@margin-xss: 0px; // more small - -// height rules -@height-base: 28px; -@height-lg: 32px; -@height-sm: 22px; - -// Button -// --- -@btn-padding-horizontal-base: @default-padding-sm - 1px; -@btn-padding-horizontal-lg: @btn-padding-horizontal-base; -@btn-padding-horizontal-sm: @default-padding-xs - 1px; -@btn-square-only-icon-size-lg: 16px; -@btn-square-only-icon-size: 14px; -@btn-square-only-icon-size-sm: 12px; - -// Breadcrumb -// --- -@breadcrumb-font-size: @font-size-base; -@breadcrumb-icon-font-size: @font-size-base; - -//Dropdown -@dropdown-line-height: 18px; - -// Menu -@menu-item-padding: 0 12px; -@menu-horizontal-line-height: 38px; -@menu-inline-toplevel-item-height: 32px; -@menu-item-height: 32px; -@menu-item-vertical-margin: 0px; -@menu-item-boundary-margin: 0px; -@menu-icon-margin-right: 8px; - -// Checkbox -@checkbox-size: 14px; -@checkbox-group-item-margin-right: 6px; - -// picker -@picker-panel-cell-height: 22px; -@picker-panel-cell-width: 32px; -@picker-text-height: 32px; -@picker-time-panel-cell-height: 24px; -@picker-panel-without-time-cell-height: 48px; - -// Form -// --- -@form-item-margin-bottom: 16px; -@form-vertical-label-padding: 0 0 4px; - -// Rate -// --- -@rate-star-size: 16px; - -// Radio -// --- -@radio-size: 14px; -@radio-wrapper-margin-right: 6px; - -// Switch -// --- -@switch-height: 20px; -@switch-sm-height: 14px; -@switch-min-width: 40px; -@switch-sm-min-width: 24px; -@switch-inner-margin-min: 4px; -@switch-inner-margin-max: 22px; - -// Slider -// --- -@slider-handle-size: 12px; -@slider-handle-margin-top: -4px; - -// Input -// --- -@input-padding-vertical-base: round( - max( - (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - - @border-width-base, - 2px - ) -); -@input-padding-horizontal-lg: 11px; - -// PageHeader -// --- -@page-header-padding: 16px; -@page-header-padding-vertical: 8px; -@page-header-heading-title: 16px; -@page-header-heading-sub-title: 12px; -@page-header-tabs-tab-font-size: 14px; - -// Pagination -// --- -@pagination-mini-options-size-changer-top: 1px; -@pagination-item-size-sm: 22px; - -// Cascader -// ---- -@cascader-dropdown-line-height: @dropdown-line-height; - -// Select -// --- -@select-dropdown-height: @height-base; -@select-single-item-height-lg: 32px; -@select-multiple-item-height: @input-height-base - max(@input-padding-vertical-base, 4) * 2; // Normal 24px -@select-multiple-item-height-lg: 24px; -@select-multiple-item-spacing-half: 3px; - -// Tree -// --- -@tree-title-height: 20px; - -// Transfer -// --- -@transfer-item-padding-vertical: 3px; -@transfer-list-search-icon-top: 8px; -@transfer-header-height: 36px; - -// Comment -// --- -@comment-actions-margin-bottom: 0px; -@comment-actions-margin-top: @margin-xs; -@comment-content-detail-p-margin-bottom: 0px; - -// Steps -// --- -@steps-icon-size: 24px; -@steps-icon-custom-size: 20px; -@steps-icon-custom-font-size: 20px; -@steps-icon-custom-top: 2px; -@steps-icon-margin: 2px 8px 2px 0; -@steps-icon-font-size: @font-size-base; -@steps-dot-top: 4px; -@steps-icon-top: 0px; -@steps-small-icon-size: 20px; -@steps-vertical-icon-width: 12px; -@steps-vertical-tail-width: 12px; -@steps-vertical-tail-width-sm: 10px; -// Collapse -// --- -//@collapse-header-padding-extra: 32px; -@collapse-content-padding: @padding-md @padding-lg; - -// List -// --- -@list-item-meta-description-font-size: @font-size-sm; -@list-item-padding-sm: 4px 12px; -@list-item-padding-lg: 12px 16px; - -// Drawer -// --- -@drawer-header-padding: 11px @padding-lg; -@drawer-footer-padding-vertical: @padding-sm; -@drawer-footer-padding-horizontal: @padding-sm; -@drawer-header-close-size: 44px; - -// Modal -// -- -@modal-header-padding: 11px @modal-header-padding-horizontal; -@modal-footer-padding-vertical: @padding-sm; -@modal-header-close-size: 44px; -@modal-confirm-body-padding: 24px 24px 16px; - -// Message -// --- -@message-notice-content-padding: 8px 16px; - -// popover -// -- -@popover-min-height: 28px; -@popover-padding-horizontal: @default-padding-sm; - -// Card -// --- -@card-padding-base: 16px; -@card-head-height: 36px; -@card-head-font-size: @card-head-font-size-sm; -@card-head-padding: 8.5px; -@card-padding-base: 12px; -@card-padding-base-sm: @card-padding-base; -@card-head-height-sm: 30px; -@card-head-padding-sm: 6px; -@card-actions-li-margin: 4px 0; -@card-head-tabs-margin-bottom: -9px; - -// Table -// --- -@table-padding-vertical: 12px; -@table-padding-horizontal: 8px; -@table-padding-vertical-md: 8px; -@table-padding-horizontal-md: 8px; -@table-padding-vertical-sm: 4px; -@table-padding-horizontal-sm: 4px; -@table-selection-column-width: 32px; - -// Statistic -// --- -@statistic-content-font-size: 20px; - -// Alert -// --- -@alert-with-description-no-icon-padding-vertical: 7px; -@alert-with-description-padding-vertical: 11px; -@alert-icon-top: 7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); -@alert-with-description-icon-size: 20px; - -// Skeleton -// --- -@skeleton-paragraph-margin-top: 20px; -@skeleton-paragraph-li-margin-top: 12px; -@skeleton-paragraph-li-height: 14px; -@skeleton-title-height: 14px; -@skeleton-title-paragraph-margin-top: 20px; - -// Descriptions -@descriptions-title-margin-bottom: 8px; -@descriptions-default-padding: 12px @padding-lg; -@descriptions-item-padding-bottom: @padding-xs; - -// Avatar -// --- -@avatar-size-base: 28px; -@avatar-size-lg: 32px; -@avatar-size-sm: 22px; -@avatar-font-size-base: 16px; -@avatar-font-size-lg: 20px; -@avatar-font-size-sm: 12px; - -// Badge -// --- -@badge-height: 18px; - -// Tag -// --- -@tag-line-height: 18px; - -// Notification -// --- -@notification-padding-vertical: 12px; -@notification-padding-horizontal: 16px; - -// Result -// --- -@result-title-font-size: 20px; -@result-icon-font-size: 64px; -@result-extra-margin: 24px 0 0 0; - -// Anchor -// --- -@anchor-link-top: 4px; -@anchor-link-left: 16px; -@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; - -// Tabs -// --- -@tabs-card-horizontal-padding: 4px @padding-md; - -// Progress -// --- -@progress-circle-text-font-size: 0.833333em; - -// Image -// --- -@image-size-base: 48px; -@image-font-size-base: 24px; diff --git a/components/style/themes/dark.less b/components/style/themes/dark.less deleted file mode 100644 index 4cfda904b..000000000 --- a/components/style/themes/dark.less +++ /dev/null @@ -1,457 +0,0 @@ -@import './default.less'; - -@theme: dark; -// color palettes -@blue-1: mix(color(~`colorPalette('@{blue-base}', 8) `), @component-background, 15%); -@blue-2: mix(color(~`colorPalette('@{blue-base}', 7) `), @component-background, 25%); -@blue-3: mix(@blue-base, @component-background, 30%); -@blue-4: mix(@blue-base, @component-background, 45%); -@blue-5: mix(@blue-base, @component-background, 65%); -@blue-6: mix(@blue-base, @component-background, 85%); -@blue-7: mix(color(~`colorPalette('@{blue-base}', 5) `), @component-background, 90%); -@blue-8: mix(color(~`colorPalette('@{blue-base}', 4) `), @component-background, 95%); -@blue-9: mix(color(~`colorPalette('@{blue-base}', 3) `), @component-background, 97%); -@blue-10: mix(color(~`colorPalette('@{blue-base}', 2) `), @component-background, 98%); - -@purple-1: mix(color(~`colorPalette('@{purple-base}', 8) `), @component-background, 15%); -@purple-2: mix(color(~`colorPalette('@{purple-base}', 7) `), @component-background, 25%); -@purple-3: mix(@purple-base, @component-background, 30%); -@purple-4: mix(@purple-base, @component-background, 45%); -@purple-5: mix(@purple-base, @component-background, 65%); -@purple-6: mix(@purple-base, @component-background, 85%); -@purple-7: mix(color(~`colorPalette('@{purple-base}', 5) `), @component-background, 90%); -@purple-8: mix(color(~`colorPalette('@{purple-base}', 4) `), @component-background, 95%); -@purple-9: mix(color(~`colorPalette('@{purple-base}', 3) `), @component-background, 97%); -@purple-10: mix(color(~`colorPalette('@{purple-base}', 2) `), @component-background, 98%); - -@cyan-1: mix(color(~`colorPalette('@{cyan-base}', 8) `), @component-background, 15%); -@cyan-2: mix(color(~`colorPalette('@{cyan-base}', 7) `), @component-background, 25%); -@cyan-3: mix(@cyan-base, @component-background, 30%); -@cyan-4: mix(@cyan-base, @component-background, 45%); -@cyan-5: mix(@cyan-base, @component-background, 65%); -@cyan-6: mix(@cyan-base, @component-background, 85%); -@cyan-7: mix(color(~`colorPalette('@{cyan-base}', 5) `), @component-background, 90%); -@cyan-8: mix(color(~`colorPalette('@{cyan-base}', 4) `), @component-background, 95%); -@cyan-9: mix(color(~`colorPalette('@{cyan-base}', 3) `), @component-background, 97%); -@cyan-10: mix(color(~`colorPalette('@{cyan-base}', 2) `), @component-background, 98%); - -@green-1: mix(color(~`colorPalette('@{green-base}', 8) `), @component-background, 15%); -@green-2: mix(color(~`colorPalette('@{green-base}', 7) `), @component-background, 25%); -@green-3: mix(@green-base, @component-background, 30%); -@green-4: mix(@green-base, @component-background, 45%); -@green-5: mix(@green-base, @component-background, 65%); -@green-6: mix(@green-base, @component-background, 85%); -@green-7: mix(color(~`colorPalette('@{green-base}', 5) `), @component-background, 90%); -@green-8: mix(color(~`colorPalette('@{green-base}', 4) `), @component-background, 95%); -@green-9: mix(color(~`colorPalette('@{green-base}', 3) `), @component-background, 97%); -@green-10: mix(color(~`colorPalette('@{green-base}', 2) `), @component-background, 98%); - -@magenta-1: mix(color(~`colorPalette('@{magenta-base}', 8) `), @component-background, 15%); -@magenta-2: mix(color(~`colorPalette('@{magenta-base}', 7) `), @component-background, 25%); -@magenta-3: mix(@magenta-base, @component-background, 30%); -@magenta-4: mix(@magenta-base, @component-background, 45%); -@magenta-5: mix(@magenta-base, @component-background, 65%); -@magenta-6: mix(@magenta-base, @component-background, 85%); -@magenta-7: mix(color(~`colorPalette('@{magenta-base}', 5) `), @component-background, 90%); -@magenta-8: mix(color(~`colorPalette('@{magenta-base}', 4) `), @component-background, 95%); -@magenta-9: mix(color(~`colorPalette('@{magenta-base}', 3) `), @component-background, 97%); -@magenta-10: mix(color(~`colorPalette('@{magenta-base}', 2) `), @component-background, 98%); - -@pink-1: mix(color(~`colorPalette('@{pink-base}', 8) `), @component-background, 15%); -@pink-2: mix(color(~`colorPalette('@{pink-base}', 7) `), @component-background, 25%); -@pink-3: mix(@pink-base, @component-background, 30%); -@pink-4: mix(@pink-base, @component-background, 45%); -@pink-5: mix(@pink-base, @component-background, 65%); -@pink-6: mix(@pink-base, @component-background, 85%); -@pink-7: mix(color(~`colorPalette('@{pink-base}', 5) `), @component-background, 90%); -@pink-8: mix(color(~`colorPalette('@{pink-base}', 4) `), @component-background, 95%); -@pink-9: mix(color(~`colorPalette('@{pink-base}', 3) `), @component-background, 97%); -@pink-10: mix(color(~`colorPalette('@{pink-base}', 2) `), @component-background, 98%); - -@red-1: mix(color(~`colorPalette('@{red-base}', 8) `), @component-background, 15%); -@red-2: mix(color(~`colorPalette('@{red-base}', 7) `), @component-background, 25%); -@red-3: mix(@red-base, @component-background, 30%); -@red-4: mix(@red-base, @component-background, 45%); -@red-5: mix(@red-base, @component-background, 65%); -@red-6: mix(@red-base, @component-background, 85%); -@red-7: mix(color(~`colorPalette('@{red-base}', 5) `), @component-background, 90%); -@red-8: mix(color(~`colorPalette('@{red-base}', 4) `), @component-background, 95%); -@red-9: mix(color(~`colorPalette('@{red-base}', 3) `), @component-background, 97%); -@red-10: mix(color(~`colorPalette('@{red-base}', 2) `), @component-background, 98%); - -@orange-1: mix(color(~`colorPalette('@{orange-base}', 8) `), @component-background, 15%); -@orange-2: mix(color(~`colorPalette('@{orange-base}', 7) `), @component-background, 25%); -@orange-3: mix(@orange-base, @component-background, 30%); -@orange-4: mix(@orange-base, @component-background, 45%); -@orange-5: mix(@orange-base, @component-background, 65%); -@orange-6: mix(@orange-base, @component-background, 85%); -@orange-7: mix(color(~`colorPalette('@{orange-base}', 5) `), @component-background, 90%); -@orange-8: mix(color(~`colorPalette('@{orange-base}', 4) `), @component-background, 95%); -@orange-9: mix(color(~`colorPalette('@{orange-base}', 3) `), @component-background, 97%); -@orange-10: mix(color(~`colorPalette('@{orange-base}', 2) `), @component-background, 98%); - -@yellow-1: mix(color(~`colorPalette('@{yellow-base}', 8) `), @component-background, 15%); -@yellow-2: mix(color(~`colorPalette('@{yellow-base}', 7) `), @component-background, 25%); -@yellow-3: mix(@yellow-base, @component-background, 30%); -@yellow-4: mix(@yellow-base, @component-background, 45%); -@yellow-5: mix(@yellow-base, @component-background, 65%); -@yellow-6: mix(@yellow-base, @component-background, 85%); -@yellow-7: mix(color(~`colorPalette('@{yellow-base}', 5) `), @component-background, 90%); -@yellow-8: mix(color(~`colorPalette('@{yellow-base}', 4) `), @component-background, 95%); -@yellow-9: mix(color(~`colorPalette('@{yellow-base}', 3) `), @component-background, 97%); -@yellow-10: mix(color(~`colorPalette('@{yellow-base}', 2) `), @component-background, 98%); - -@volcano-1: mix(color(~`colorPalette('@{volcano-base}', 8) `), @component-background, 15%); -@volcano-2: mix(color(~`colorPalette('@{volcano-base}', 7) `), @component-background, 25%); -@volcano-3: mix(@volcano-base, @component-background, 30%); -@volcano-4: mix(@volcano-base, @component-background, 45%); -@volcano-5: mix(@volcano-base, @component-background, 65%); -@volcano-6: mix(@volcano-base, @component-background, 85%); -@volcano-7: mix(color(~`colorPalette('@{volcano-base}', 5) `), @component-background, 90%); -@volcano-8: mix(color(~`colorPalette('@{volcano-base}', 4) `), @component-background, 95%); -@volcano-9: mix(color(~`colorPalette('@{volcano-base}', 3) `), @component-background, 97%); -@volcano-10: mix(color(~`colorPalette('@{volcano-base}', 2) `), @component-background, 98%); - -@geekblue-1: mix(color(~`colorPalette('@{geekblue-base}', 8) `), @component-background, 15%); -@geekblue-2: mix(color(~`colorPalette('@{geekblue-base}', 7) `), @component-background, 25%); -@geekblue-3: mix(@geekblue-base, @component-background, 30%); -@geekblue-4: mix(@geekblue-base, @component-background, 45%); -@geekblue-5: mix(@geekblue-base, @component-background, 65%); -@geekblue-6: mix(@geekblue-base, @component-background, 85%); -@geekblue-7: mix(color(~`colorPalette('@{geekblue-base}', 5) `), @component-background, 90%); -@geekblue-8: mix(color(~`colorPalette('@{geekblue-base}', 4) `), @component-background, 95%); -@geekblue-9: mix(color(~`colorPalette('@{geekblue-base}', 3) `), @component-background, 97%); -@geekblue-10: mix(color(~`colorPalette('@{geekblue-base}', 2) `), @component-background, 98%); - -@lime-1: mix(color(~`colorPalette('@{lime-base}', 8) `), @component-background, 15%); -@lime-2: mix(color(~`colorPalette('@{lime-base}', 7) `), @component-background, 25%); -@lime-3: mix(@lime-base, @component-background, 30%); -@lime-4: mix(@lime-base, @component-background, 45%); -@lime-5: mix(@lime-base, @component-background, 65%); -@lime-6: mix(@lime-base, @component-background, 85%); -@lime-7: mix(color(~`colorPalette('@{lime-base}', 5) `), @component-background, 90%); -@lime-8: mix(color(~`colorPalette('@{lime-base}', 4) `), @component-background, 95%); -@lime-9: mix(color(~`colorPalette('@{lime-base}', 3) `), @component-background, 97%); -@lime-10: mix(color(~`colorPalette('@{lime-base}', 2) `), @component-background, 98%); - -@gold-1: mix(color(~`colorPalette('@{gold-base}', 8) `), @component-background, 15%); -@gold-2: mix(color(~`colorPalette('@{gold-base}', 7) `), @component-background, 25%); -@gold-3: mix(@gold-base, @component-background, 30%); -@gold-4: mix(@gold-base, @component-background, 45%); -@gold-5: mix(@gold-base, @component-background, 65%); -@gold-6: mix(@gold-base, @component-background, 85%); -@gold-7: mix(color(~`colorPalette('@{gold-base}', 5) `), @component-background, 90%); -@gold-8: mix(color(~`colorPalette('@{gold-base}', 4) `), @component-background, 95%); -@gold-9: mix(color(~`colorPalette('@{gold-base}', 3) `), @component-background, 97%); -@gold-10: mix(color(~`colorPalette('@{gold-base}', 2) `), @component-background, 98%); - -// Color used by default to control hover and active backgrounds and for -// alert info backgrounds. -@primary-1: mix(color(~`colorPalette('@{primary-color}', 8) `), @component-background, 15%); -@primary-2: mix(color(~`colorPalette('@{primary-color}', 7) `), @component-background, 25%); -@primary-3: mix(@primary-color, @component-background, 30%); -@primary-4: mix(@primary-color, @component-background, 45%); -@primary-5: mix(@primary-color, @component-background, 65%); -@primary-6: @primary-color; -@primary-7: mix(color(~`colorPalette('@{primary-color}', 5) `), @component-background, 90%); -@primary-8: mix(color(~`colorPalette('@{primary-color}', 4) `), @component-background, 95%); -@primary-9: mix(color(~`colorPalette('@{primary-color}', 3) `), @component-background, 97%); -@primary-10: mix(color(~`colorPalette('@{primary-color}', 2) `), @component-background, 98%); - -// Layer background -@popover-background: #1f1f1f; -@popover-customize-border-color: #3a3a3a; -@body-background: @black; -@component-background: #141414; - -@text-color: fade(@white, 85%); -@text-color-secondary: fade(@white, 45%); -@text-color-inverse: @white; -@icon-color-hover: fade(@white, 75%); -@heading-color: fade(@white, 85%); - -// The background colors for active and hover states for things like -// list items or table cells. -@item-active-bg: @primary-1; -@item-hover-bg: fade(@white, 8%); - -// Border color -@border-color-base: #434343; // base border outline a component -@border-color-split: #303030; // split border inside a component - -@background-color-light: fade(@white, 4%); // background of header and selected item -@background-color-base: fade(@white, 8%); // Default grey background color - -// Disabled states -@disabled-color: fade(@white, 30%); -@disabled-bg: @background-color-base; -@disabled-color-dark: fade(@white, 30%); - -// Tree -// --- -@tree-bg: transparent; - -// List -// --- -@list-customize-card-bg: transparent; - -// Shadow -// --- -@shadow-color: rgba(0, 0, 0, 0.45); -@shadow-color-inverse: @component-background; -@box-shadow-base: @shadow-2; -@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), 0 -9px 28px 0 rgba(0, 0, 0, 0.2), - 0 -12px 48px 16px rgba(0, 0, 0, 0.12); -@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.32), 0 9px 28px 0 rgba(0, 0, 0, 0.2), - 0 12px 48px 16px rgba(0, 0, 0, 0.12); -@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.32), 9px 0 28px 0 rgba(0, 0, 0, 0.2), - 12px 0 48px 16px rgba(0, 0, 0, 0.12); -@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), - 0 9px 28px 8px rgba(0, 0, 0, 0.2); - -// Buttons -// --- -@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); -@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -@btn-default-bg: transparent; - -@btn-default-ghost-color: @text-color; -@btn-default-ghost-border: fade(@white, 25%); - -@btn-text-hover-bg: rgba(255, 255, 255, 0.03); - -// Checkbox -// --- -@checkbox-check-bg: transparent; - -// Descriptions -// --- -@descriptions-bg: @background-color-light; - -// Divider -// --- -@divider-color: rgba(255, 255, 255, 12%); - -// Modal -// --- -@modal-header-bg: @popover-background; -@modal-header-border-color-split: @border-color-split; -@modal-content-bg: @popover-background; -@modal-footer-border-color-split: @border-color-split; - -// Radio -// --- -@radio-solid-checked-color: @white; -@radio-dot-disabled-color: fade(@white, 20%); - -// Radio buttons -// --- -@radio-disabled-button-checked-bg: fade(@white, 20%); -@radio-disabled-button-checked-color: @disabled-color; - -// Layout -// --- -@layout-body-background: @body-background; -@layout-header-background: @popover-background; -@layout-trigger-background: #262626; - -// Input -// --- -@input-bg: transparent; -@input-placeholder-color: fade(@white, 30%); -@input-icon-color: fade(@white, 30%); -@input-number-handler-active-bg: @item-hover-bg; -@input-icon-hover-color: fade(@white, 85%); - -// Select -// --- -@select-background: transparent; -@select-dropdown-bg: @popover-background; -@select-clear-background: @component-background; -@select-selection-item-bg: fade(@white, 8); -@select-selection-item-border-color: @border-color-split; -@select-multiple-disabled-background: @component-background; -@select-multiple-item-disabled-color: #595959; -@select-multiple-item-disabled-border-color: @popover-background; - -// Cascader -// --- -@cascader-bg: transparent; -@cascader-menu-bg: @popover-background; -@cascader-menu-border-color-split: @border-color-split; - -// Tooltip -// --- -// Tooltip background color -@tooltip-bg: #434343; - -// Menu -// --- -// dark theme -@menu-dark-inline-submenu-bg: @component-background; -@menu-dark-bg: @popover-background; -@menu-popup-bg: @popover-background; - -// Message -// --- -@message-notice-content-bg: @popover-background; - -// Notification -@notification-bg: @popover-background; - -// LINK -@link-hover-color: @primary-5; -@link-active-color: @primary-7; - -// Table -// -- -@table-header-bg: #1d1d1d; -@table-body-sort-bg: fade(@white, 1%); -@table-row-hover-bg: #262626; -@table-header-cell-split-color: fade(@white, 8%); -@table-header-sort-bg: #262626; -@table-header-filter-active-bg: #434343; -@table-header-sort-active-bg: #303030; -@table-fixed-header-sort-active-bg: #222; -@table-filter-btns-bg: @popover-background; -@table-expanded-row-bg: @table-header-bg; -@table-filter-dropdown-bg: @popover-background; -@table-expand-icon-bg: transparent; - -// Tag -// --- -@info-color-deprecated-bg: @primary-1; -@info-color-deprecated-border: @primary-3; -@success-color-deprecated-bg: @green-1; -@success-color-deprecated-border: @green-3; -@warning-color-deprecated-bg: @orange-1; -@warning-color-deprecated-border: @orange-3; -@error-color-deprecated-bg: @red-1; -@error-color-deprecated-border: @red-3; - -// TimePicker -// --- -@picker-basic-cell-hover-with-range-color: darken(@primary-color, 35%); -@picker-basic-cell-disabled-bg: #303030; -@picker-border-color: @border-color-split; -@picker-bg: transparent; -@picker-date-hover-range-border-color: darken(@primary-color, 20%); - -// Dropdown -// --- -@dropdown-menu-bg: @popover-background; -@dropdown-menu-submenu-disabled-bg: transparent; - -// Steps -// --- -@steps-nav-arrow-color: fade(@white, 20%); -@steps-background: transparent; - -// Avatar -// --- -@avatar-bg: fade(@white, 30%); - -// Progress -// --- -@progress-steps-item-bg: fade(@white, 8%); - -// Calendar -// --- -@calendar-bg: @popover-background; -@calendar-input-bg: @calendar-bg; -@calendar-border-color: transparent; -@calendar-full-bg: @component-background; - -// Badge -// --- -@badge-text-color: @white; - -// Popover -@popover-bg: @popover-background; - -// Drawer -@drawer-bg: @popover-background; - -// Card -// --- -@card-actions-background: @component-background; -@card-skeleton-bg: #303030; -@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), - 0 5px 12px 4px rgba(0, 0, 0, 0.36); - -// Transfer -// --- -@transfer-item-hover-bg: #262626; - -// Comment -// --- -@comment-bg: transparent; -@comment-author-time-color: fade(@white, 30%); -@comment-action-hover-color: fade(@white, 65%); - -// Rate -// --- -@rate-star-bg: fade(@white, 12%); - -// Switch -// --- -@switch-bg: @white; - -// Pagination -// --- -@pagination-item-bg: transparent; -@pagination-item-bg-active: transparent; -@pagination-item-link-bg: transparent; -@pagination-item-disabled-bg-active: fade(@white, 25%); -@pagination-item-disabled-color-active: @black; -@pagination-item-input-bg: @pagination-item-bg; - -// PageHeader -// --- -@page-header-back-color: @icon-color; -@page-header-ghost-bg: transparent; - -// Slider -// --- -@slider-rail-background-color: #262626; -@slider-rail-background-color-hover: @border-color-base; -@slider-dot-border-color: @border-color-split; -@slider-dot-border-color-active: @primary-4; - -// Skeleton -// --- -@skeleton-to-color: fade(@white, 16%); - -// Alert -// --- -@alert-success-border-color: @green-3; -@alert-success-bg-color: @green-1; -@alert-success-icon-color: @success-color; -@alert-info-border-color: @primary-3; -@alert-info-bg-color: @primary-1; -@alert-info-icon-color: @info-color; -@alert-warning-border-color: @gold-3; -@alert-warning-bg-color: @gold-1; -@alert-warning-icon-color: @warning-color; -@alert-error-border-color: @red-3; -@alert-error-bg-color: @red-1; -@alert-error-icon-color: @error-color; - -// Timeline -// --- -@timeline-color: @border-color-split; -@timeline-dot-color: @primary-color; - -// Mentions -// --- -@mentions-dropdown-bg: @popover-background; - -// Segmented -// --- -@segmented-bg: fade(@black, 25%); -@segmented-hover-bg: fade(@black, 45%); -@segmented-selected-bg: #333333; -@segmented-label-color: fade(@white, 65%); -@segmented-label-hover-color: fade(@white, 85%); diff --git a/components/style/themes/default.less b/components/style/themes/default.less deleted file mode 100644 index 0546a8da9..000000000 --- a/components/style/themes/default.less +++ /dev/null @@ -1,1084 +0,0 @@ -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -@import '../color/colors'; - -@theme: default; - -// The prefix to use on all css classes from ant. -@ant-prefix: ant; - -// An override for the html selector for theme prefixes -@html-selector: html; - -// [CSS-VARIABLE-REPLACE-BEGIN: html-variables] -// [CSS-VARIABLE-REPLACE-END: html-variables] - -// -------- Colors ----------- -// >>> Primary -@primary-color: @blue-6; -@primary-color-hover: color(~`colorPalette('@{primary-color}', 5) `); -@primary-color-active: color(~`colorPalette('@{primary-color}', 7) `); -@primary-color-outline: fade(@primary-color, @outline-fade); - -@processing-color: @blue-6; - -// >>> Info -@info-color: @primary-color; -@info-color-deprecated-bg: color(~`colorPalette('@{info-color}', 1) `); -@info-color-deprecated-border: color(~`colorPalette('@{info-color}', 3) `); - -// >>> Success -@success-color: @green-6; -@success-color-hover: color(~`colorPalette('@{success-color}', 5) `); -@success-color-active: color(~`colorPalette('@{success-color}', 7) `); -@success-color-outline: fade(@success-color, @outline-fade); -@success-color-deprecated-bg: color(~`colorPalette('@{success-color}', 1) `); -@success-color-deprecated-border: color(~`colorPalette('@{success-color}', 3) `); - -// >>> Warning -@warning-color: @gold-6; -@warning-color-hover: color(~`colorPalette('@{warning-color}', 5) `); -@warning-color-active: color(~`colorPalette('@{warning-color}', 7) `); -@warning-color-outline: fade(@warning-color, @outline-fade); -@warning-color-deprecated-bg: color(~`colorPalette('@{warning-color}', 1) `); -@warning-color-deprecated-border: color(~`colorPalette('@{warning-color}', 3) `); - -// >>> Error -@error-color: @red-5; -@error-color-hover: color(~`colorPalette('@{error-color}', 5) `); -@error-color-active: color(~`colorPalette('@{error-color}', 7) `); -@error-color-outline: fade(@error-color, @outline-fade); -@error-color-deprecated-bg: color(~`colorPalette('@{error-color}', 1) `); -@error-color-deprecated-border: color(~`colorPalette('@{error-color}', 3) `); - -@highlight-color: @red-5; -@normal-color: #d9d9d9; -@white: #fff; -@black: #000; - -// Color used by default to control hover and active backgrounds and for -// alert info backgrounds. -@primary-1: color(~`colorPalette('@{primary-color}', 1) `); // replace tint(@primary-color, 90%) -@primary-2: color(~`colorPalette('@{primary-color}', 2) `); // replace tint(@primary-color, 80%) -@primary-3: color(~`colorPalette('@{primary-color}', 3) `); // unused -@primary-4: color(~`colorPalette('@{primary-color}', 4) `); // unused -@primary-5: color( - ~`colorPalette('@{primary-color}', 5) ` -); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) -@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color -@primary-7: color(~`colorPalette('@{primary-color}', 7) `); // replace shade(@primary-color, 5%) -@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused -@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused -@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused - -// Base Scaffolding Variables -// --- - -// Background color for `` -@body-background: #fff; -// Base background color for most components -@component-background: #fff; -// Popover background color -@popover-background: @component-background; -@popover-customize-border-color: @border-color-split; -@font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, - 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', - 'Noto Color Emoji'; -@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; -@text-color: fade(@black, 85%); -@text-color-secondary: fade(@black, 45%); -@text-color-inverse: @white; -@icon-color: inherit; -@icon-color-hover: fade(@black, 75%); -@heading-color: fade(@black, 85%); -@text-color-dark: fade(@white, 85%); -@text-color-secondary-dark: fade(@white, 65%); -@text-selection-bg: @primary-color; -@font-variant-base: tabular-nums; -@font-feature-settings-base: 'tnum'; -@font-size-base: 14px; -@font-size-lg: @font-size-base + 2px; -@font-size-sm: 12px; -@heading-1-size: ceil(@font-size-base * 2.71); -@heading-2-size: ceil(@font-size-base * 2.14); -@heading-3-size: ceil(@font-size-base * 1.71); -@heading-4-size: ceil(@font-size-base * 1.42); -@heading-5-size: ceil(@font-size-base * 1.14); -// https://github.com/ant-design/ant-design/issues/20210 -@line-height-base: 1.5715; -@border-radius-base: 2px; -@border-radius-sm: @border-radius-base; - -// control border -@control-border-radius: @border-radius-base; - -// arrow border -@arrow-border-radius: 2px; - -// vertical paddings -@padding-lg: 24px; // containers -@padding-md: 16px; // small containers and buttons -@padding-sm: 12px; // Form controls and items -@padding-xs: 8px; // small items -@padding-xss: 4px; // more small - -// vertical padding for all form controls -@control-padding-horizontal: @padding-sm; -@control-padding-horizontal-sm: @padding-xs; - -// vertical margins -@margin-lg: 24px; // containers -@margin-md: 16px; // small containers and buttons -@margin-sm: 12px; // Form controls and items -@margin-xs: 8px; // small items -@margin-xss: 4px; // more small - -// height rules -@height-base: 32px; -@height-lg: 40px; -@height-sm: 24px; - -// The background colors for active and hover states for things like -// list items or table cells. -@item-active-bg: @primary-1; -@item-hover-bg: #f5f5f5; - -// ICONFONT -@iconfont-css-prefix: anticon; - -// LINK -@link-color: @primary-color; -@link-hover-color: color(~`colorPalette('@{link-color}', 5) `); -@link-active-color: color(~`colorPalette('@{link-color}', 7) `); -@link-decoration: none; -@link-hover-decoration: none; -@link-focus-decoration: none; -@link-focus-outline: 0; - -// Animation -@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); -@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); -@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); -@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); -@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); -@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); -@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); -@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); -@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); -@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); -@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); -@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); -@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); -@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); - -// Border color -@border-color-base: hsv(0, 0, 85%); // base border outline a component -@border-color-split: hsv(0, 0, 94%); // split border inside a component -@border-color-inverse: @white; -@border-width-base: 1px; // width of the border for a component -@border-style-base: solid; // style of a components border - -// Outline -@outline-blur-size: 0; -@outline-width: 2px; -@outline-color: @primary-color; // No use anymore -@outline-fade: 20%; - -@background-color-light: hsv(0, 0, 98%); // background of header and selected item -@background-color-base: hsv(0, 0, 96%); // Default grey background color - -// Disabled states -@disabled-color: fade(#000, 25%); -@disabled-bg: @background-color-base; -@disabled-active-bg: tint(@black, 90%); -@disabled-color-dark: fade(#fff, 35%); - -// Shadow -@shadow-color: rgba(0, 0, 0, 0.15); -@shadow-color-inverse: @component-background; -@box-shadow-base: @shadow-2; -@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), - 0 -12px 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), - 0 12px 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), - -12px 0 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), - 12px 0 48px 16px rgba(0, 0, 0, 0.03); -@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), - 0 9px 28px 8px rgba(0, 0, 0, 0.05); - -// Buttons -@btn-font-weight: 400; -@btn-border-radius-base: @border-radius-base; -@btn-border-radius-sm: @border-radius-base; -@btn-border-width: @border-width-base; -@btn-border-style: @border-style-base; -@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); -@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -@btn-primary-color: #fff; -@btn-primary-bg: @primary-color; - -@btn-default-color: @text-color; -@btn-default-bg: @component-background; -@btn-default-border: @border-color-base; - -@btn-danger-color: #fff; -@btn-danger-bg: @error-color; -@btn-danger-border: @error-color; - -@btn-disable-color: @disabled-color; -@btn-disable-bg: @disabled-bg; -@btn-disable-border: @border-color-base; - -@btn-default-ghost-color: @component-background; -@btn-default-ghost-bg: transparent; -@btn-default-ghost-border: @component-background; - -@btn-font-size-lg: @font-size-lg; -@btn-font-size-sm: @font-size-base; -@btn-padding-horizontal-base: @padding-md - 1px; -@btn-padding-horizontal-lg: @btn-padding-horizontal-base; -@btn-padding-horizontal-sm: @padding-xs - 1px; - -@btn-height-base: @height-base; -@btn-height-lg: @height-lg; -@btn-height-sm: @height-sm; - -@btn-line-height: @line-height-base; - -@btn-circle-size: @btn-height-base; -@btn-circle-size-lg: @btn-height-lg; -@btn-circle-size-sm: @btn-height-sm; - -@btn-square-size: @btn-height-base; -@btn-square-size-lg: @btn-height-lg; -@btn-square-size-sm: @btn-height-sm; -@btn-square-only-icon-size: @font-size-base + 2px; -@btn-square-only-icon-size-sm: @font-size-base; -@btn-square-only-icon-size-lg: @btn-font-size-lg + 2px; - -@btn-group-border: @primary-5; - -@btn-link-hover-bg: transparent; -@btn-text-hover-bg: rgba(0, 0, 0, 0.018); - -// Checkbox -@checkbox-size: 16px; -@checkbox-color: @primary-color; -@checkbox-check-color: #fff; -@checkbox-check-bg: @checkbox-check-color; -@checkbox-border-width: @border-width-base; -@checkbox-border-radius: @border-radius-base; -@checkbox-group-item-margin-right: 8px; - -// Descriptions -@descriptions-bg: #fafafa; -@descriptions-title-margin-bottom: 20px; -@descriptions-default-padding: @padding-md @padding-lg; -@descriptions-middle-padding: @padding-sm @padding-lg; -@descriptions-small-padding: @padding-xs @padding-md; -@descriptions-item-padding-bottom: @padding-md; -@descriptions-item-trailing-colon: true; -@descriptions-item-label-colon-margin-right: 8px; -@descriptions-item-label-colon-margin-left: 2px; -@descriptions-extra-color: @text-color; - -// Divider -@divider-text-padding: 1em; -@divider-orientation-margin: 5%; -@divider-color: rgba(0, 0, 0, 6%); -@divider-vertical-gutter: 8px; -@divider-horizontal-gutter: 24px; - -// Dropdown -@dropdown-selected-color: @primary-color; -@dropdown-menu-submenu-disabled-bg: @component-background; -@dropdown-selected-bg: @item-active-bg; - -// Empty -@empty-font-size: @font-size-base; - -// Radio -@radio-size: 16px; -@radio-top: 0.2em; -@radio-border-width: 1px; -@radio-dot-size: @radio-size - 8px; -@radio-dot-color: @primary-color; -@radio-dot-disabled-color: fade(@black, 20%); -@radio-solid-checked-color: @component-background; - -// Radio buttons -@radio-button-bg: @btn-default-bg; -@radio-button-checked-bg: @btn-default-bg; -@radio-button-color: @btn-default-color; -@radio-button-hover-color: @primary-5; -@radio-button-active-color: @primary-7; -@radio-button-padding-horizontal: @padding-md - 1px; -@radio-disabled-button-checked-bg: @disabled-active-bg; -@radio-disabled-button-checked-color: @disabled-color; -@radio-wrapper-margin-right: 8px; - -// Media queries breakpoints -// @screen-xs and @screen-xs-min is not used in Grid -// smallest break point is @screen-md -@screen-xs: 480px; -@screen-xs-min: @screen-xs; -// 👆 Extra small screen / phone - -// 👇 Small screen / tablet -@screen-sm: 576px; -@screen-sm-min: @screen-sm; - -// Medium screen / desktop -@screen-md: 768px; -@screen-md-min: @screen-md; - -// Large screen / wide desktop -@screen-lg: 992px; -@screen-lg-min: @screen-lg; - -// Extra large screen / full hd -@screen-xl: 1200px; -@screen-xl-min: @screen-xl; - -// Extra extra large screen / large desktop -@screen-xxl: 1600px; -@screen-xxl-min: @screen-xxl; -@screen-xxxl: 2000px; -@screen-xxxl-min: @screen-xxxl; - -// provide a maximum -@screen-xs-max: (@screen-sm-min - 1px); -@screen-sm-max: (@screen-md-min - 1px); -@screen-md-max: (@screen-lg-min - 1px); -@screen-lg-max: (@screen-xl-min - 1px); -@screen-xl-max: (@screen-xxl-min - 1px); -@screen-xxl-max: (@screen-xxxl-min - 1px); - -// Grid system -@grid-columns: 24; - -// Layout -@layout-body-background: #f0f2f5; -@layout-header-background: #001529; -@layout-header-height: 64px; -@layout-header-padding: 0 50px; -@layout-header-color: @text-color; -@layout-footer-padding: 24px 50px; -@layout-footer-background: @layout-body-background; -@layout-sider-background: @layout-header-background; -@layout-trigger-height: 48px; -@layout-trigger-background: #002140; -@layout-trigger-color: #fff; -@layout-zero-trigger-width: 36px; -@layout-zero-trigger-height: 42px; -// Layout light theme -@layout-sider-background-light: #fff; -@layout-trigger-background-light: #fff; -@layout-trigger-color-light: @text-color; - -// z-index list, order by `z-index` -@zindex-badge: auto; -@zindex-table-fixed: 2; -@zindex-affix: 10; -@zindex-back-top: 10; -@zindex-picker-panel: 10; -@zindex-popup-close: 10; -@zindex-modal: 1000; -@zindex-modal-mask: 1000; -@zindex-message: 1010; -@zindex-notification: 1010; -@zindex-popover: 1030; -@zindex-dropdown: 1050; -@zindex-picker: 1050; -@zindex-popoconfirm: 1060; -@zindex-tooltip: 1070; -@zindex-image: 1080; - -// Animation -@animation-duration-slow: 0.3s; // Modal -@animation-duration-base: 0.2s; -@animation-duration-fast: 0.1s; // Tooltip - -//CollapsePanel -@collapse-panel-border-radius: @border-radius-base; - -//Dropdown -@dropdown-menu-bg: @component-background; -@dropdown-vertical-padding: 5px; -@dropdown-edge-child-vertical-padding: 4px; -@dropdown-font-size: @font-size-base; -@dropdown-line-height: 22px; - -// Form -// --- -@label-required-color: @highlight-color; -@label-color: @heading-color; -@form-warning-input-bg: @input-bg; -@form-item-margin-bottom: 24px; -@form-item-trailing-colon: true; -@form-vertical-label-padding: 0 0 8px; -@form-vertical-label-margin: 0; -@form-item-label-font-size: @font-size-base; -@form-item-label-height: @input-height-base; -@form-item-label-colon-margin-right: 8px; -@form-item-label-colon-margin-left: 2px; -@form-error-input-bg: @input-bg; - -// Input -// --- -@input-height-base: @height-base; -@input-height-lg: @height-lg; -@input-height-sm: @height-sm; -@input-padding-horizontal: @control-padding-horizontal - 1px; -@input-padding-horizontal-base: @input-padding-horizontal; -@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px; -@input-padding-horizontal-lg: @input-padding-horizontal; -@input-padding-vertical-base: max( - (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - - @border-width-base, - 3px -); -@input-padding-vertical-sm: max( - (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) - - @border-width-base, - 0 -); -@input-padding-vertical-lg: ( - ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10 - ) - @border-width-base; -@input-placeholder-color: hsv(0, 0, 75%); -@input-color: @text-color; -@input-icon-color: @input-color; -@input-border-color: @border-color-base; -@input-bg: @component-background; -@input-number-hover-border-color: @input-hover-border-color; -@input-number-handler-active-bg: #f4f4f4; -@input-number-handler-hover-bg: @primary-5; -@input-number-handler-bg: @component-background; -@input-number-handler-border-color: @border-color-base; -@input-addon-bg: @background-color-light; -@input-hover-border-color: @primary-5; -@input-disabled-bg: @disabled-bg; -@input-outline-offset: 0 0; -@input-icon-hover-color: fade(@black, 85%); -@input-disabled-color: @disabled-color; - -// Mentions -// --- -@mentions-dropdown-bg: @component-background; -@mentions-dropdown-menu-item-hover-bg: @mentions-dropdown-bg; - -// Select -// --- -@select-border-color: @border-color-base; -@select-item-selected-color: @text-color; -@select-item-selected-font-weight: 600; -@select-dropdown-bg: @component-background; -@select-item-selected-bg: @primary-1; -@select-item-active-bg: @item-hover-bg; -@select-dropdown-vertical-padding: @dropdown-vertical-padding; -@select-dropdown-font-size: @dropdown-font-size; -@select-dropdown-line-height: @dropdown-line-height; -@select-dropdown-height: 32px; -@select-background: @component-background; -@select-clear-background: @select-background; -@select-selection-item-bg: @background-color-base; -@select-selection-item-border-color: @border-color-split; -@select-single-item-height-lg: 40px; -@select-multiple-item-height: @input-height-base - @input-padding-vertical-base * 2; // Normal 24px -@select-multiple-item-height-lg: 32px; -@select-multiple-item-spacing-half: ceil((@input-padding-vertical-base / 2)); -@select-multiple-disabled-background: @input-disabled-bg; -@select-multiple-item-disabled-color: #bfbfbf; -@select-multiple-item-disabled-border-color: @select-border-color; - -// Cascader -// --- -@cascader-bg: @component-background; -@cascader-item-selected-bg: @primary-1; -@cascader-menu-bg: @component-background; -@cascader-menu-border-color-split: @border-color-split; - -// Cascader -// ---- -@cascader-dropdown-vertical-padding: @dropdown-vertical-padding; -@cascader-dropdown-edge-child-vertical-padding: @dropdown-edge-child-vertical-padding; -@cascader-dropdown-font-size: @dropdown-font-size; -@cascader-dropdown-line-height: @dropdown-line-height; - -// Anchor -// --- -@anchor-bg: transparent; -@anchor-border-color: @border-color-split; -@anchor-link-top: 4px; -@anchor-link-left: 16px; -@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; - -// Tooltip -// --- -// Tooltip max width -@tooltip-max-width: 250px; -// Tooltip text color -@tooltip-color: #fff; -// Tooltip background color -@tooltip-bg: rgba(0, 0, 0, 0.75); -// Tooltip arrow width -@tooltip-arrow-width: 8px * sqrt(2); -// Tooltip distance with trigger -@tooltip-distance: @tooltip-arrow-width - 1px + 4px; -// Tooltip arrow color -@tooltip-arrow-color: @tooltip-bg; -@tooltip-border-radius: @border-radius-base; - -// Popover -// --- -// Popover body background color -@popover-bg: @component-background; -// Popover text color -@popover-color: @text-color; -// Popover maximum width -@popover-min-width: 177px; -@popover-min-height: 32px; -// Popover arrow width -@popover-arrow-width: @tooltip-arrow-width; -// Popover arrow color -@popover-arrow-color: @popover-bg; -// Popover outer arrow width -// Popover outer arrow color -@popover-arrow-outer-color: @popover-bg; -// Popover distance with trigger -@popover-distance: @popover-arrow-width + 4px; -@popover-padding-horizontal: @padding-md; - -// Modal -// -- -@modal-header-padding-vertical: @padding-md; -@modal-header-padding-horizontal: @padding-lg; -@modal-body-padding: @padding-lg; -@modal-header-bg: @component-background; -@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; -@modal-header-border-width: @border-width-base; -@modal-header-border-style: @border-style-base; -@modal-header-title-line-height: 22px; -@modal-header-title-font-size: @font-size-lg; -@modal-header-border-color-split: @border-color-split; -@modal-header-close-size: 56px; -@modal-content-bg: @component-background; -@modal-heading-color: @heading-color; -@modal-close-color: @text-color-secondary; -@modal-footer-bg: transparent; -@modal-footer-border-color-split: @border-color-split; -@modal-footer-border-style: @border-style-base; -@modal-footer-padding-vertical: 10px; -@modal-footer-padding-horizontal: 16px; -@modal-footer-border-width: @border-width-base; -@modal-mask-bg: fade(@black, 45%); -@modal-confirm-body-padding: 32px 32px 24px; -@modal-confirm-title-font-size: @font-size-lg; - -// Progress -// -- -@progress-default-color: @processing-color; -@progress-remaining-color: @background-color-base; -@progress-info-text-color: @progress-text-color; -@progress-radius: 100px; -@progress-steps-item-bg: #f3f3f3; -@progress-text-font-size: 1em; -@progress-text-color: @text-color; // This is for circle text color, should be renamed better -@progress-circle-text-font-size: 1em; -// Menu -// --- -@menu-inline-toplevel-item-height: 40px; -@menu-item-height: 40px; -@menu-item-group-height: @line-height-base; -@menu-collapsed-width: 80px; -@menu-bg: @component-background; -@menu-popup-bg: @component-background; -@menu-item-color: @text-color; -@menu-inline-submenu-bg: @background-color-light; -@menu-highlight-color: @primary-color; -@menu-highlight-danger-color: @error-color; -@menu-item-active-bg: @primary-1; -@menu-item-active-danger-bg: @red-1; -@menu-item-active-border-width: 3px; -@menu-item-group-title-color: @text-color-secondary; -@menu-item-vertical-margin: 4px; -@menu-item-font-size: @font-size-base; -@menu-item-boundary-margin: 8px; -@menu-item-padding-horizontal: 20px; -@menu-item-padding: 0 @menu-item-padding-horizontal; -@menu-horizontal-line-height: 46px; -@menu-icon-margin-right: 10px; -@menu-icon-size: @menu-item-font-size; -@menu-icon-size-lg: @font-size-lg; -@menu-item-group-title-font-size: @menu-item-font-size; - -// dark theme -@menu-dark-color: @text-color-secondary-dark; -@menu-dark-danger-color: @error-color; -@menu-dark-bg: @layout-header-background; -@menu-dark-arrow-color: #fff; -@menu-dark-inline-submenu-bg: #000c17; -@menu-dark-highlight-color: #fff; -@menu-dark-item-active-bg: @primary-color; -@menu-dark-item-active-danger-bg: @error-color; -@menu-dark-selected-item-icon-color: @white; -@menu-dark-selected-item-text-color: @white; -@menu-dark-item-hover-bg: transparent; -// Spin -// --- -@spin-dot-size-sm: 14px; -@spin-dot-size: 20px; -@spin-dot-size-lg: 32px; - -// Table -// -- -@table-bg: @component-background; -@table-header-bg: @background-color-light; -@table-header-color: @heading-color; -@table-header-sort-bg: @background-color-base; -@table-body-sort-bg: #fafafa; -@table-row-hover-bg: @background-color-light; -@table-selected-row-color: inherit; -@table-selected-row-bg: @primary-1; -@table-body-selected-sort-bg: @table-selected-row-bg; -@table-selected-row-hover-bg: darken(@table-selected-row-bg, 2%); -@table-expanded-row-bg: #fbfbfb; -@table-padding-vertical: 16px; -@table-padding-horizontal: 16px; -@table-padding-vertical-md: (@table-padding-vertical * 3 / 4); -@table-padding-horizontal-md: (@table-padding-horizontal / 2); -@table-padding-vertical-sm: (@table-padding-vertical / 2); -@table-padding-horizontal-sm: (@table-padding-horizontal / 2); -@table-border-color: @border-color-split; -@table-border-radius-base: @border-radius-base; -@table-footer-bg: @background-color-light; -@table-footer-color: @heading-color; -@table-header-bg-sm: @table-header-bg; -@table-font-size: @font-size-base; -@table-font-size-md: @table-font-size; -@table-font-size-sm: @table-font-size; -@table-header-cell-split-color: rgba(0, 0, 0, 0.06); -// Sorter -// Legacy: `table-header-sort-active-bg` is used for hover not real active -@table-header-sort-active-bg: rgba(0, 0, 0, 0.04); -@table-fixed-header-sort-active-bg: hsv(0, 0, 96%); - -// Filter -@table-header-filter-active-bg: rgba(0, 0, 0, 0.04); -@table-filter-btns-bg: inherit; -@table-filter-dropdown-bg: @component-background; -@table-expand-icon-bg: @component-background; -@table-selection-column-width: 32px; -// Sticky -@table-sticky-scroll-bar-bg: fade(#000, 35%); -@table-sticky-scroll-bar-radius: 4px; - -// Tag -// -- -@tag-border-radius: @border-radius-base; -@tag-default-bg: @background-color-light; -@tag-default-color: @text-color; -@tag-font-size: @font-size-sm; -@tag-line-height: 20px; - -// TimePicker -// --- -@picker-bg: @component-background; -@picker-basic-cell-hover-color: @item-hover-bg; -@picker-basic-cell-active-with-range-color: @primary-1; -@picker-basic-cell-hover-with-range-color: lighten(@primary-color, 35%); -@picker-basic-cell-disabled-bg: rgba(0, 0, 0, 0.04); -@picker-border-color: @border-color-split; -@picker-date-hover-range-border-color: lighten(@primary-color, 20%); -@picker-date-hover-range-color: @picker-basic-cell-hover-with-range-color; -@picker-time-panel-column-width: 56px; -@picker-time-panel-column-height: 224px; -@picker-time-panel-cell-height: 28px; -@picker-panel-cell-height: 24px; -@picker-panel-cell-width: 36px; -@picker-text-height: 40px; -@picker-panel-without-time-cell-height: 66px; - -// Calendar -// --- -@calendar-bg: @component-background; -@calendar-input-bg: @input-bg; -@calendar-border-color: @border-color-inverse; -@calendar-item-active-bg: @item-active-bg; -@calendar-column-active-bg: fade(@calendar-item-active-bg, 20%); -@calendar-full-bg: @calendar-bg; -@calendar-full-panel-bg: @calendar-full-bg; - -// Carousel -// --- -@carousel-dot-width: 16px; -@carousel-dot-height: 3px; -@carousel-dot-active-width: 24px; - -// Badge -// --- -@badge-height: 20px; -@badge-height-sm: 14px; -@badge-dot-size: 6px; -@badge-font-size: @font-size-sm; -@badge-font-size-sm: @font-size-sm; -@badge-font-weight: normal; -@badge-status-size: 6px; -@badge-text-color: @component-background; -@badge-color: @highlight-color; - -// Rate -// --- -@rate-star-color: @yellow-6; -@rate-star-bg: @border-color-split; -@rate-star-size: 20px; -@rate-star-hover-scale: scale(1.1); - -// Card -// --- -@card-head-color: @heading-color; -@card-head-background: transparent; -@card-head-font-size: @font-size-lg; -@card-head-font-size-sm: @font-size-base; -@card-head-padding: 16px; -@card-head-padding-sm: (@card-head-padding / 2); -@card-head-height: 48px; -@card-head-height-sm: 36px; -@card-inner-head-padding: 12px; -@card-padding-base: 24px; -@card-padding-base-sm: (@card-padding-base / 2); -@card-actions-background: @component-background; -@card-actions-li-margin: 12px 0; -@card-skeleton-bg: #cfd8dc; -@card-background: @component-background; -@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), - 0 5px 12px 4px rgba(0, 0, 0, 0.09); -@card-radius: @border-radius-base; -@card-head-tabs-margin-bottom: -17px; -@card-head-extra-color: @text-color; - -// Comment -// --- -@comment-bg: inherit; -@comment-padding-base: @padding-md 0; -@comment-nest-indent: 44px; -@comment-font-size-base: @font-size-base; -@comment-font-size-sm: @font-size-sm; -@comment-author-name-color: @text-color-secondary; -@comment-author-time-color: #ccc; -@comment-action-color: @text-color-secondary; -@comment-action-hover-color: #595959; -@comment-actions-margin-bottom: inherit; -@comment-actions-margin-top: @margin-sm; -@comment-content-detail-p-margin-bottom: inherit; - -// Tabs -// --- -@tabs-card-head-background: @background-color-light; -@tabs-card-height: 40px; -@tabs-card-active-color: @primary-color; -@tabs-card-horizontal-padding: ( - (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2 - ) - @border-width-base @padding-md; -@tabs-card-horizontal-padding-sm: 6px @padding-md; -@tabs-card-horizontal-padding-lg: 7px @padding-md 6px; -@tabs-title-font-size: @font-size-base; -@tabs-title-font-size-lg: @font-size-lg; -@tabs-title-font-size-sm: @font-size-base; -@tabs-ink-bar-color: @primary-color; -@tabs-bar-margin: 0 0 @margin-md 0; -@tabs-horizontal-gutter: 32px; -@tabs-horizontal-margin: 0 0 0 @tabs-horizontal-gutter; -@tabs-horizontal-margin-rtl: 0 0 0 32px; -@tabs-horizontal-padding: @padding-sm 0; -@tabs-horizontal-padding-lg: @padding-md 0; -@tabs-horizontal-padding-sm: @padding-xs 0; -@tabs-vertical-padding: @padding-xs @padding-lg; -@tabs-vertical-margin: @margin-md 0 0 0; -@tabs-scrolling-size: 32px; -@tabs-highlight-color: @primary-color; -@tabs-hover-color: @primary-5; -@tabs-active-color: @primary-7; -@tabs-card-gutter: 2px; -@tabs-card-tab-active-border-top: 2px solid transparent; - -// BackTop -// --- -@back-top-color: #fff; -@back-top-bg: @text-color-secondary; -@back-top-hover-bg: @text-color; - -// Avatar -// --- -@avatar-size-base: 32px; -@avatar-size-lg: 40px; -@avatar-size-sm: 24px; -@avatar-font-size-base: 18px; -@avatar-font-size-lg: 24px; -@avatar-font-size-sm: 14px; -@avatar-bg: #ccc; -@avatar-color: #fff; -@avatar-border-radius: @border-radius-base; -@avatar-group-overlapping: -8px; -@avatar-group-space: 3px; -@avatar-group-border-color: #fff; - -// Switch -// --- -@switch-height: 22px; -@switch-sm-height: 16px; -@switch-min-width: 44px; -@switch-sm-min-width: 28px; -@switch-disabled-opacity: 0.4; -@switch-color: @primary-color; -@switch-bg: @component-background; -@switch-shadow-color: fade(#00230b, 20%); -@switch-padding: 2px; -@switch-inner-margin-min: ceil(@switch-height * 0.3); -@switch-inner-margin-max: ceil(@switch-height * 1.1); -@switch-sm-inner-margin-min: ceil(@switch-sm-height * 0.3); -@switch-sm-inner-margin-max: ceil(@switch-sm-height * 1.1); - -// Pagination -// --- -@pagination-item-bg: @component-background; -@pagination-item-size: @height-base; -@pagination-item-size-sm: 24px; -@pagination-font-family: @font-family; -@pagination-font-weight-active: 500; -@pagination-item-bg-active: @component-background; -@pagination-item-link-bg: @component-background; -@pagination-item-disabled-color-active: @disabled-color; -@pagination-item-disabled-bg-active: @disabled-active-bg; -@pagination-item-input-bg: @component-background; -@pagination-mini-options-size-changer-top: 0px; - -// PageHeader -// --- -@page-header-padding: @padding-lg; -@page-header-padding-vertical: @padding-md; -@page-header-padding-breadcrumb: @padding-sm; -@page-header-content-padding-vertical: @padding-sm; -@page-header-back-color: #000; -@page-header-ghost-bg: inherit; -@page-header-heading-title: @heading-4-size; -@page-header-heading-sub-title: 14px; -@page-header-tabs-tab-font-size: 16px; - -// Breadcrumb -// --- -@breadcrumb-base-color: @text-color-secondary; -@breadcrumb-last-item-color: @text-color; -@breadcrumb-font-size: @font-size-base; -@breadcrumb-icon-font-size: @font-size-base; -@breadcrumb-link-color: @text-color-secondary; -@breadcrumb-link-color-hover: @text-color; -@breadcrumb-separator-color: @text-color-secondary; -@breadcrumb-separator-margin: 0 @padding-xs; - -// Slider -// --- -@slider-margin: 10px 6px 10px; -@slider-rail-background-color: @background-color-base; -@slider-rail-background-color-hover: #e1e1e1; -@slider-track-background-color: @primary-3; -@slider-track-background-color-hover: @primary-4; -@slider-handle-border-width: 2px; -@slider-handle-background-color: @component-background; -@slider-handle-color: @primary-3; -@slider-handle-color-hover: @primary-4; -@slider-handle-color-focus: tint(@primary-color, 20%); -@slider-handle-color-focus-shadow: fade(@primary-color, 12%); -@slider-handle-color-tooltip-open: @primary-color; -@slider-handle-size: 14px; -@slider-handle-margin-top: -5px; -@slider-handle-shadow: 0; -@slider-dot-border-color: @border-color-split; -@slider-dot-border-color-active: tint(@primary-color, 50%); -@slider-disabled-color: @disabled-color; -@slider-disabled-background-color: @component-background; - -// Tree -// --- -@tree-bg: @component-background; -@tree-title-height: 24px; -@tree-child-padding: 18px; -@tree-directory-selected-color: #fff; -@tree-directory-selected-bg: @primary-color; -@tree-node-hover-bg: @item-hover-bg; -@tree-node-selected-bg: @primary-2; - -// Collapse -// --- -@collapse-header-padding: @padding-sm @padding-md; -@collapse-header-padding-extra: 40px; -@collapse-header-bg: @background-color-light; -@collapse-content-padding: @padding-md; -@collapse-content-bg: @component-background; -@collapse-header-arrow-left: 16px; - -// Skeleton -// --- -@skeleton-color: rgba(190, 190, 190, 0.2); -@skeleton-to-color: shade(@skeleton-color, 5%); -@skeleton-paragraph-margin-top: 28px; -@skeleton-paragraph-li-margin-top: @margin-md; -@skeleton-paragraph-li-height: 16px; -@skeleton-title-height: 16px; -@skeleton-title-paragraph-margin-top: @margin-lg; - -// Transfer -// --- -@transfer-header-height: 40px; -@transfer-item-height: @height-base; -@transfer-disabled-bg: @disabled-bg; -@transfer-list-height: 200px; -@transfer-item-hover-bg: @item-hover-bg; -@transfer-item-selected-hover-bg: darken(@item-active-bg, 2%); -@transfer-item-padding-vertical: 6px; -@transfer-list-search-icon-top: 12px; - -// Message -// --- -@message-notice-content-padding: 10px 16px; -@message-notice-content-bg: @component-background; -// Motion -// --- -@wave-animation-width: 6px; - -// Alert -// --- -@alert-success-border-color: ~`colorPalette('@{success-color}', 3) `; -@alert-success-bg-color: ~`colorPalette('@{success-color}', 1) `; -@alert-success-icon-color: @success-color; -@alert-info-border-color: ~`colorPalette('@{info-color}', 3) `; -@alert-info-bg-color: ~`colorPalette('@{info-color}', 1) `; -@alert-info-icon-color: @info-color; -@alert-warning-border-color: ~`colorPalette('@{warning-color}', 3) `; -@alert-warning-bg-color: ~`colorPalette('@{warning-color}', 1) `; -@alert-warning-icon-color: @warning-color; -@alert-error-border-color: ~`colorPalette('@{error-color}', 3) `; -@alert-error-bg-color: ~`colorPalette('@{error-color}', 1) `; -@alert-error-icon-color: @error-color; -@alert-message-color: @heading-color; -@alert-text-color: @text-color; -@alert-close-color: @text-color-secondary; -@alert-close-hover-color: @icon-color-hover; -@alert-no-icon-padding-vertical: @padding-xs; -@alert-with-description-no-icon-padding-vertical: @padding-md - 1px; -@alert-with-description-padding-vertical: @padding-md - 1px; -@alert-with-description-padding: @alert-with-description-padding-vertical 15px - @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size; -@alert-icon-top: 8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); -@alert-with-description-icon-size: 24px; - -// List -// --- -@list-header-background: transparent; -@list-footer-background: transparent; -@list-empty-text-padding: @padding-md; -@list-item-padding: @padding-sm 0; -@list-item-padding-sm: @padding-xs @padding-md; -@list-item-padding-lg: 16px 24px; -@list-item-meta-margin-bottom: @padding-md; -@list-item-meta-avatar-margin-right: @padding-md; -@list-item-meta-title-margin-bottom: @padding-sm; -@list-customize-card-bg: @component-background; -@list-item-meta-description-font-size: @font-size-base; - -// Statistic -// --- -@statistic-title-font-size: @font-size-base; -@statistic-content-font-size: 24px; -@statistic-unit-font-size: 24px; -@statistic-font-family: @font-family; - -// Drawer -// --- -@drawer-header-padding: @padding-md @padding-lg; -@drawer-body-padding: @padding-lg; -@drawer-bg: @component-background; -@drawer-footer-padding-vertical: @modal-footer-padding-vertical; -@drawer-footer-padding-horizontal: @modal-footer-padding-horizontal; -@drawer-header-close-size: 56px; -@drawer-title-font-size: @font-size-lg; -@drawer-title-line-height: 22px; - -// Timeline -// --- -@timeline-width: 2px; -@timeline-color: @border-color-split; -@timeline-dot-border-width: 2px; -@timeline-dot-color: @primary-color; -@timeline-dot-bg: @component-background; -@timeline-item-padding-bottom: 20px; - -// Typography -// --- -@typography-title-font-weight: 600; -@typography-title-margin-top: 1.2em; -@typography-title-margin-bottom: 0.5em; - -// Upload -// --- -@upload-actions-color: @text-color-secondary; - -// Steps -// --- -@process-tail-color: @border-color-split; -@steps-nav-arrow-color: fade(@black, 25%); -@steps-background: @component-background; -@steps-icon-size: 32px; -@steps-icon-custom-size: @steps-icon-size; -@steps-icon-custom-top: 0px; -@steps-icon-custom-font-size: 24px; -@steps-icon-top: -0.5px; -@steps-icon-font-size: @font-size-lg; -@steps-icon-margin: 0 8px 0 0; -@steps-title-line-height: @height-base; -@steps-small-icon-size: 24px; -@steps-small-icon-margin: 0 8px 0 0; -@steps-dot-size: 8px; -@steps-dot-top: 2px; -@steps-current-dot-size: 10px; -@steps-description-max-width: 140px; -@steps-nav-content-max-width: auto; -@steps-vertical-icon-width: 16px; -@steps-vertical-tail-width: 16px; -@steps-vertical-tail-width-sm: 12px; - -// Notification -// --- -@notification-bg: @component-background; -@notification-padding-vertical: 16px; -@notification-padding-horizontal: 24px; - -// Result -// --- -@result-title-font-size: 24px; -@result-subtitle-font-size: @font-size-base; -@result-icon-font-size: 72px; -@result-extra-margin: 24px 0 0 0; - -// Image -// --- -@image-size-base: 48px; -@image-font-size-base: 24px; -@image-bg: #f5f5f5; -@image-color: #fff; -@image-mask-font-size: 16px; -@image-preview-operation-size: 18px; -@image-preview-operation-color: @text-color-dark; -@image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%); - -// Segmented -// --- -@segmented-bg: fade(@black, 4%); -@segmented-hover-bg: fade(@black, 6%); -@segmented-selected-bg: @white; -@segmented-label-color: fade(@black, 65%); -@segmented-label-hover-color: #262626; diff --git a/components/style/themes/index.less b/components/style/themes/index.less deleted file mode 100644 index fd29f584c..000000000 --- a/components/style/themes/index.less +++ /dev/null @@ -1,7 +0,0 @@ -// Default using variable as entry to support site variable version -// This will be replaced in webpack bundle -// @root-entry-name: variable; - -// @import './default.less'; -// @import './variable.less'; -@import './@{root-entry-name}.less'; diff --git a/components/style/themes/variable.less b/components/style/themes/variable.less deleted file mode 100644 index 0691fde06..000000000 --- a/components/style/themes/variable.less +++ /dev/null @@ -1,1139 +0,0 @@ -/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ -@import '../color/colors'; - -@theme: variable; - -// The prefix to use on all css classes from ant. -@ant-prefix: ant; - -// An override for the html selector for theme prefixes -@html-selector: html; - -@base-primary: @blue-6; - -@{html-selector} { - // ========= Primary Color ========= - --@{ant-prefix}-primary-color: @base-primary; - --@{ant-prefix}-primary-color-hover: color(~`colorPalette('@{base-primary}', 5) `); - --@{ant-prefix}-primary-color-active: color(~`colorPalette('@{base-primary}', 7) `); - --@{ant-prefix}-primary-color-outline: fade(@base-primary, @outline-fade); - - // Legacy - @legacy-primary-1: color(~`colorPalette('@{base-primary}', 1) `); - - --@{ant-prefix}-primary-1: @legacy-primary-1; - --@{ant-prefix}-primary-2: color(~`colorPalette('@{base-primary}', 2) `); - --@{ant-prefix}-primary-3: color(~`colorPalette('@{base-primary}', 3) `); - --@{ant-prefix}-primary-4: color(~`colorPalette('@{base-primary}', 4) `); - --@{ant-prefix}-primary-5: color(~`colorPalette('@{base-primary}', 5) `); - --@{ant-prefix}-primary-6: @base-primary; - --@{ant-prefix}-primary-7: color(~`colorPalette('@{base-primary}', 7) `); - - // Deprecated - --@{ant-prefix}-primary-color-deprecated-pure: ~''; - --@{ant-prefix}-primary-color-deprecated-l-35: lighten(@base-primary, 35%); - --@{ant-prefix}-primary-color-deprecated-l-20: lighten(@base-primary, 20%); - --@{ant-prefix}-primary-color-deprecated-t-20: tint(@base-primary, 20%); - --@{ant-prefix}-primary-color-deprecated-t-50: tint(@base-primary, 50%); - --@{ant-prefix}-primary-color-deprecated-f-12: fade(@base-primary, 12%); - --@{ant-prefix}-primary-color-active-deprecated-f-30: fade(@legacy-primary-1, 30%); - --@{ant-prefix}-primary-color-active-deprecated-d-02: darken(@legacy-primary-1, 2%); - - // ========= Success Color ========= - --@{ant-prefix}-success-color: @green-6; - --@{ant-prefix}-success-color-hover: color(~`colorPalette('@{green-6}', 5) `); - --@{ant-prefix}-success-color-active: color(~`colorPalette('@{green-6}', 7) `); - --@{ant-prefix}-success-color-outline: fade(@green-6, @outline-fade); - --@{ant-prefix}-success-color-deprecated-bg: ~`colorPalette('@{green-6}', 1) `; - --@{ant-prefix}-success-color-deprecated-border: ~`colorPalette('@{green-6}', 3) `; - - // ========== Error Color ========== - --@{ant-prefix}-error-color: @red-5; - --@{ant-prefix}-error-color-hover: color(~`colorPalette('@{red-5}', 5) `); - --@{ant-prefix}-error-color-active: color(~`colorPalette('@{red-5}', 7) `); - --@{ant-prefix}-error-color-outline: fade(@red-5, @outline-fade); - --@{ant-prefix}-error-color-deprecated-bg: ~`colorPalette('@{red-5}', 1) `; - --@{ant-prefix}-error-color-deprecated-border: ~`colorPalette('@{red-5}', 3) `; - - // ========= Warning Color ========= - --@{ant-prefix}-warning-color: @gold-6; - --@{ant-prefix}-warning-color-hover: color(~`colorPalette('@{gold-6}', 5) `); - --@{ant-prefix}-warning-color-active: color(~`colorPalette('@{gold-6}', 7) `); - --@{ant-prefix}-warning-color-outline: fade(@gold-6, @outline-fade); - --@{ant-prefix}-warning-color-deprecated-bg: ~`colorPalette('@{gold-6}', 1) `; - --@{ant-prefix}-warning-color-deprecated-border: ~`colorPalette('@{gold-6}', 3) `; - - // ========== Info Color =========== - --@{ant-prefix}-info-color: @base-primary; - --@{ant-prefix}-info-color-deprecated-bg: ~`colorPalette('@{base-primary}', 1) `; - --@{ant-prefix}-info-color-deprecated-border: ~`colorPalette('@{base-primary}', 3) `; -} - -// -------- Colors ----------- -// >>> Primary -@primary-color: ~'var(--@{ant-prefix}-primary-color)'; -@primary-color-hover: ~'var(--@{ant-prefix}-primary-color-hover)'; -@primary-color-active: ~'var(--@{ant-prefix}-primary-color-active)'; -@primary-color-outline: ~'var(--@{ant-prefix}-primary-color-outline)'; - -@processing-color: @primary-color; - -// >>> Info -@info-color: ~'var(--@{ant-prefix}-info-color)'; -@info-color-deprecated-bg: ~'var(--@{ant-prefix}-info-color-deprecated-bg)'; -@info-color-deprecated-border: ~'var(--@{ant-prefix}-info-color-deprecated-border)'; - -// >>> Success -@success-color: ~'var(--@{ant-prefix}-success-color)'; -@success-color-hover: ~'var(--@{ant-prefix}-success-color-hover)'; -@success-color-active: ~'var(--@{ant-prefix}-success-color-active)'; -@success-color-outline: ~'var(--@{ant-prefix}-success-color-outline)'; -@success-color-deprecated-bg: ~'var(--@{ant-prefix}-success-color-deprecated-bg)'; -@success-color-deprecated-border: ~'var(--@{ant-prefix}-success-color-deprecated-border)'; - -// >>> Warning -@warning-color: ~'var(--@{ant-prefix}-warning-color)'; -@warning-color-hover: ~'var(--@{ant-prefix}-warning-color-hover)'; -@warning-color-active: ~'var(--@{ant-prefix}-warning-color-active)'; -@warning-color-outline: ~'var(--@{ant-prefix}-warning-color-outline)'; -@warning-color-deprecated-bg: ~'var(--@{ant-prefix}-warning-color-deprecated-bg)'; -@warning-color-deprecated-border: ~'var(--@{ant-prefix}-warning-color-deprecated-border)'; - -// >>> Error -@error-color: ~'var(--@{ant-prefix}-error-color)'; -@error-color-hover: ~'var(--@{ant-prefix}-error-color-hover)'; -@error-color-active: ~'var(--@{ant-prefix}-error-color-active)'; -@error-color-outline: ~'var(--@{ant-prefix}-error-color-outline)'; -@error-color-deprecated-bg: ~'var(--@{ant-prefix}-error-color-deprecated-bg)'; -@error-color-deprecated-border: ~'var(--@{ant-prefix}-error-color-deprecated-border)'; - -@highlight-color: @red-5; -@normal-color: #d9d9d9; -@white: #fff; -@black: #000; - -// Color used by default to control hover and active backgrounds and for -// alert info backgrounds. -@primary-1: ~'var(--@{ant-prefix}-primary-1)'; // replace tint(@primary-color, 90%) -@primary-2: ~'var(--@{ant-prefix}-primary-2)'; // replace tint(@primary-color, 80%) -@primary-3: ~'var(--@{ant-prefix}-primary-3)'; // unused -@primary-4: ~'var(--@{ant-prefix}-primary-4)'; // unused -@primary-5: ~'var(--@{ant-prefix}-primary-5)'; // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) -@primary-6: ~'var(--@{ant-prefix}-primary-6)'; // color used to control the text color of active buttons, don't use, use @primary-color -@primary-7: ~'var(--@{ant-prefix}-primary-7)'; // replace shade(@primary-color, 5%) -@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused -@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused -@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused - -// Base Scaffolding Variables -// --- - -// Background color for `` -@body-background: #fff; -// Base background color for most components -@component-background: #fff; -// Popover background color -@popover-background: @component-background; -@popover-customize-border-color: @border-color-split; -@font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, - 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', - 'Noto Color Emoji'; -@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; -@text-color: fade(@black, 85%); -@text-color-secondary: fade(@black, 45%); -@text-color-inverse: @white; -@icon-color: inherit; -@icon-color-hover: fade(@black, 75%); -@heading-color: fade(@black, 85%); -@text-color-dark: fade(@white, 85%); -@text-color-secondary-dark: fade(@white, 65%); -@text-selection-bg: @primary-color; -@font-variant-base: tabular-nums; -@font-feature-settings-base: 'tnum'; -@font-size-base: 14px; -@font-size-lg: @font-size-base + 2px; -@font-size-sm: 12px; -@heading-1-size: ceil(@font-size-base * 2.71); -@heading-2-size: ceil(@font-size-base * 2.14); -@heading-3-size: ceil(@font-size-base * 1.71); -@heading-4-size: ceil(@font-size-base * 1.42); -@heading-5-size: ceil(@font-size-base * 1.14); -// https://github.com/ant-design/ant-design/issues/20210 -@line-height-base: 1.5715; -@border-radius-base: 2px; -@border-radius-sm: @border-radius-base; - -// control border -@control-border-radius: @border-radius-base; - -// arrow border -@arrow-border-radius: @border-radius-sm; - -// vertical paddings -@padding-lg: 24px; // containers -@padding-md: 16px; // small containers and buttons -@padding-sm: 12px; // Form controls and items -@padding-xs: 8px; // small items -@padding-xss: 4px; // more small - -// vertical padding for all form controls -@control-padding-horizontal: @padding-sm; -@control-padding-horizontal-sm: @padding-xs; - -// vertical margins -@margin-lg: 24px; // containers -@margin-md: 16px; // small containers and buttons -@margin-sm: 12px; // Form controls and items -@margin-xs: 8px; // small items -@margin-xss: 4px; // more small - -// height rules -@height-base: 32px; -@height-lg: 40px; -@height-sm: 24px; - -// The background colors for active and hover states for things like -// list items or table cells. -@item-active-bg: @primary-1; -@item-hover-bg: #f5f5f5; - -// ICONFONT -@iconfont-css-prefix: anticon; - -// LINK -@link-color: @primary-color; -@link-hover-color: @primary-color-hover; -@link-active-color: @primary-color-active; -@link-decoration: none; -@link-hover-decoration: none; -@link-focus-decoration: none; -@link-focus-outline: 0; - -// Animation -@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); -@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); -@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); -@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); -@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); -@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); -@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); -@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); -@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); -@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); -@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); -@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); -@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); -@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); - -// Border color -@border-color-base: hsv(0, 0, 85%); // base border outline a component -@border-color-split: rgba(0, 0, 0, 0.06); // split border inside a component -@border-color-inverse: @white; -@border-width-base: 1px; // width of the border for a component -@border-style-base: solid; // style of a components border - -// Outline -@outline-blur-size: 0; -@outline-width: 2px; -@outline-color: @primary-color; // No use anymore -@outline-fade: 20%; - -@background-color-light: hsv(0, 0, 98%); // background of header and selected item -@background-color-base: hsv(0, 0, 96%); // Default grey background color - -// Disabled states -@disabled-color: fade(#000, 25%); -@disabled-bg: @background-color-base; -@disabled-active-bg: tint(@black, 90%); -@disabled-color-dark: fade(#fff, 35%); - -// Shadow -@shadow-color: rgba(0, 0, 0, 0.15); -@shadow-color-inverse: @component-background; -@box-shadow-base: @shadow-2; -@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), - 0 -12px 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), - 0 12px 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), - -12px 0 48px 16px rgba(0, 0, 0, 0.03); -@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), - 12px 0 48px 16px rgba(0, 0, 0, 0.03); -@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), - 0 9px 28px 8px rgba(0, 0, 0, 0.05); - -// Buttons -@btn-font-weight: 400; -@btn-border-radius-base: @border-radius-base; -@btn-border-radius-sm: @border-radius-base; -@btn-border-width: @border-width-base; -@btn-border-style: @border-style-base; -@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); -@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); -@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); - -@btn-primary-color: #fff; -@btn-primary-bg: @primary-color; - -@btn-default-color: @text-color; -@btn-default-bg: @component-background; -@btn-default-border: @border-color-base; - -@btn-danger-color: #fff; -@btn-danger-bg: @error-color; -@btn-danger-border: @error-color; - -@btn-disable-color: @disabled-color; -@btn-disable-bg: @disabled-bg; -@btn-disable-border: @border-color-base; - -@btn-default-ghost-color: @component-background; -@btn-default-ghost-bg: transparent; -@btn-default-ghost-border: @component-background; - -@btn-font-size-lg: @font-size-lg; -@btn-font-size-sm: @font-size-base; -@btn-padding-horizontal-base: @padding-md - 1px; -@btn-padding-horizontal-lg: @btn-padding-horizontal-base; -@btn-padding-horizontal-sm: @padding-xs - 1px; - -@btn-height-base: @height-base; -@btn-height-lg: @height-lg; -@btn-height-sm: @height-sm; - -@btn-line-height: @line-height-base; - -@btn-circle-size: @btn-height-base; -@btn-circle-size-lg: @btn-height-lg; -@btn-circle-size-sm: @btn-height-sm; - -@btn-square-size: @btn-height-base; -@btn-square-size-lg: @btn-height-lg; -@btn-square-size-sm: @btn-height-sm; -@btn-square-only-icon-size: @font-size-base + 2px; -@btn-square-only-icon-size-sm: @font-size-base; -@btn-square-only-icon-size-lg: @btn-font-size-lg + 2px; - -@btn-group-border: @primary-5; - -@btn-link-hover-bg: transparent; -@btn-text-hover-bg: rgba(0, 0, 0, 0.018); - -// Checkbox -@checkbox-size: 16px; -@checkbox-color: @primary-color; -@checkbox-check-color: #fff; -@checkbox-check-bg: @checkbox-check-color; -@checkbox-border-width: @border-width-base; -@checkbox-border-radius: @border-radius-base; -@checkbox-group-item-margin-right: 8px; - -// Descriptions -@descriptions-bg: #fafafa; -@descriptions-title-margin-bottom: 20px; -@descriptions-default-padding: @padding-md @padding-lg; -@descriptions-middle-padding: @padding-sm @padding-lg; -@descriptions-small-padding: @padding-xs @padding-md; -@descriptions-item-padding-bottom: @padding-md; -@descriptions-item-trailing-colon: true; -@descriptions-item-label-colon-margin-right: 8px; -@descriptions-item-label-colon-margin-left: 2px; -@descriptions-extra-color: @text-color; - -// Divider -@divider-text-padding: 1em; -@divider-orientation-margin: 5%; -@divider-color: rgba(0, 0, 0, 6%); -@divider-vertical-gutter: 8px; -@divider-horizontal-gutter: 24px; - -// Dropdown -@dropdown-selected-color: @primary-color; -@dropdown-menu-submenu-disabled-bg: @component-background; -@dropdown-selected-bg: @item-active-bg; - -// Empty -@empty-font-size: @font-size-base; - -// Radio -@radio-size: 16px; -@radio-top: 0.2em; -@radio-border-width: 1px; -@radio-dot-size: @radio-size - 8px; -@radio-dot-color: @primary-color; -@radio-dot-disabled-color: fade(@black, 20%); -@radio-solid-checked-color: @component-background; - -// Radio buttons -@radio-button-bg: @btn-default-bg; -@radio-button-checked-bg: @btn-default-bg; -@radio-button-color: @btn-default-color; -@radio-button-hover-color: @primary-5; -@radio-button-active-color: @primary-7; -@radio-button-padding-horizontal: @padding-md - 1px; -@radio-disabled-button-checked-bg: @disabled-active-bg; -@radio-disabled-button-checked-color: @disabled-color; -@radio-wrapper-margin-right: 8px; - -// Media queries breakpoints -// @screen-xs and @screen-xs-min is not used in Grid -// smallest break point is @screen-md -@screen-xs: 480px; -@screen-xs-min: @screen-xs; -// 👆 Extra small screen / phone - -// 👇 Small screen / tablet -@screen-sm: 576px; -@screen-sm-min: @screen-sm; - -// Medium screen / desktop -@screen-md: 768px; -@screen-md-min: @screen-md; - -// Large screen / wide desktop -@screen-lg: 992px; -@screen-lg-min: @screen-lg; - -// Extra large screen / full hd -@screen-xl: 1200px; -@screen-xl-min: @screen-xl; - -// Extra extra large screen / large desktop -@screen-xxl: 1600px; -@screen-xxl-min: @screen-xxl; -@screen-xxxl: 2000px; -@screen-xxxl-min: @screen-xxxl; - -// provide a maximum -@screen-xs-max: (@screen-sm-min - 1px); -@screen-sm-max: (@screen-md-min - 1px); -@screen-md-max: (@screen-lg-min - 1px); -@screen-lg-max: (@screen-xl-min - 1px); -@screen-xl-max: (@screen-xxl-min - 1px); -@screen-xxl-max: (@screen-xxxl-min - 1px); - -// Grid system -@grid-columns: 24; - -// Layout -@layout-body-background: #f0f2f5; -@layout-header-background: #001529; -@layout-header-height: 64px; -@layout-header-padding: 0 50px; -@layout-header-color: @text-color; -@layout-footer-padding: 24px 50px; -@layout-footer-background: @layout-body-background; -@layout-sider-background: @layout-header-background; -@layout-trigger-height: 48px; -@layout-trigger-background: #002140; -@layout-trigger-color: #fff; -@layout-zero-trigger-width: 36px; -@layout-zero-trigger-height: 42px; -// Layout light theme -@layout-sider-background-light: #fff; -@layout-trigger-background-light: #fff; -@layout-trigger-color-light: @text-color; - -// z-index list, order by `z-index` -@zindex-badge: auto; -@zindex-table-fixed: 2; -@zindex-affix: 10; -@zindex-back-top: 10; -@zindex-picker-panel: 10; -@zindex-popup-close: 10; -@zindex-modal: 1000; -@zindex-modal-mask: 1000; -@zindex-message: 1010; -@zindex-notification: 1010; -@zindex-popover: 1030; -@zindex-dropdown: 1050; -@zindex-picker: 1050; -@zindex-popoconfirm: 1060; -@zindex-tooltip: 1070; -@zindex-image: 1080; - -// Animation -@animation-duration-slow: 0.3s; // Modal -@animation-duration-base: 0.2s; -@animation-duration-fast: 0.1s; // Tooltip - -//CollapsePanel -@collapse-panel-border-radius: @border-radius-base; - -//Dropdown -@dropdown-menu-bg: @component-background; -@dropdown-vertical-padding: 5px; -@dropdown-edge-child-vertical-padding: 4px; -@dropdown-font-size: @font-size-base; -@dropdown-line-height: 22px; - -// Form -// --- -@label-required-color: @highlight-color; -@label-color: @heading-color; -@form-warning-input-bg: @input-bg; -@form-item-margin-bottom: 24px; -@form-item-trailing-colon: true; -@form-vertical-label-padding: 0 0 8px; -@form-vertical-label-margin: 0; -@form-item-label-font-size: @font-size-base; -@form-item-label-height: @input-height-base; -@form-item-label-colon-margin-right: 8px; -@form-item-label-colon-margin-left: 2px; -@form-error-input-bg: @input-bg; - -// Input -// --- -@input-height-base: @height-base; -@input-height-lg: @height-lg; -@input-height-sm: @height-sm; -@input-padding-horizontal: @control-padding-horizontal - 1px; -@input-padding-horizontal-base: @input-padding-horizontal; -@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px; -@input-padding-horizontal-lg: @input-padding-horizontal; -@input-padding-vertical-base: max( - (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - - @border-width-base, - 3px -); -@input-padding-vertical-sm: max( - (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) - - @border-width-base, - 0 -); -@input-padding-vertical-lg: ( - ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10 - ) - @border-width-base; -@input-placeholder-color: hsv(0, 0, 75%); -@input-color: @text-color; -@input-icon-color: @input-color; -@input-border-color: @border-color-base; -@input-bg: @component-background; -@input-number-hover-border-color: @input-hover-border-color; -@input-number-handler-active-bg: #f4f4f4; -@input-number-handler-hover-bg: @primary-5; -@input-number-handler-bg: @component-background; -@input-number-handler-border-color: @border-color-base; -@input-addon-bg: @background-color-light; -@input-hover-border-color: @primary-5; -@input-disabled-bg: @disabled-bg; -@input-outline-offset: 0 0; -@input-icon-hover-color: fade(@black, 85%); -@input-disabled-color: @disabled-color; - -// Mentions -// --- -@mentions-dropdown-bg: @component-background; -@mentions-dropdown-menu-item-hover-bg: @mentions-dropdown-bg; - -// Select -// --- -@select-border-color: @border-color-base; -@select-item-selected-color: @text-color; -@select-item-selected-font-weight: 600; -@select-dropdown-bg: @component-background; -@select-item-selected-bg: @primary-1; -@select-item-active-bg: @item-hover-bg; -@select-dropdown-vertical-padding: @dropdown-vertical-padding; -@select-dropdown-font-size: @dropdown-font-size; -@select-dropdown-line-height: @dropdown-line-height; -@select-dropdown-height: 32px; -@select-background: @component-background; -@select-clear-background: @select-background; -@select-selection-item-bg: @background-color-base; -@select-selection-item-border-color: @border-color-split; -@select-single-item-height-lg: 40px; -@select-multiple-item-height: @input-height-base - @input-padding-vertical-base * 2; // Normal 24px -@select-multiple-item-height-lg: 32px; -@select-multiple-item-spacing-half: ceil((@input-padding-vertical-base / 2)); -@select-multiple-disabled-background: @input-disabled-bg; -@select-multiple-item-disabled-color: #bfbfbf; -@select-multiple-item-disabled-border-color: @select-border-color; - -// Cascader -// --- -@cascader-bg: @component-background; -@cascader-item-selected-bg: @primary-1; -@cascader-menu-bg: @component-background; -@cascader-menu-border-color-split: @border-color-split; - -// Cascader -// ---- -@cascader-dropdown-vertical-padding: @dropdown-vertical-padding; -@cascader-dropdown-edge-child-vertical-padding: @dropdown-edge-child-vertical-padding; -@cascader-dropdown-font-size: @dropdown-font-size; -@cascader-dropdown-line-height: @dropdown-line-height; - -// Anchor -// --- -@anchor-bg: transparent; -@anchor-border-color: @border-color-split; -@anchor-link-top: 4px; -@anchor-link-left: 16px; -@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; - -// Tooltip -// --- -// Tooltip max width -@tooltip-max-width: 250px; -// Tooltip text color -@tooltip-color: #fff; -// Tooltip background color -@tooltip-bg: rgba(0, 0, 0, 0.75); -// Tooltip arrow width -@tooltip-arrow-width: 8px * sqrt(2); -// Tooltip distance with trigger -@tooltip-distance: @tooltip-arrow-width - 1px + 4px; -// Tooltip arrow color -@tooltip-arrow-color: @tooltip-bg; -@tooltip-border-radius: @border-radius-base; - -// Popover -// --- -// Popover body background color -@popover-bg: @component-background; -// Popover text color -@popover-color: @text-color; -// Popover maximum width -@popover-min-width: 177px; -@popover-min-height: 32px; -// Popover arrow width -@popover-arrow-width: @tooltip-arrow-width; -// Popover arrow color -@popover-arrow-color: @popover-bg; -// Popover outer arrow width -// Popover outer arrow color -@popover-arrow-outer-color: @popover-bg; -// Popover distance with trigger -@popover-distance: @popover-arrow-width + 4px; -@popover-padding-horizontal: @padding-md; - -// Modal -// -- -@modal-header-padding-vertical: @padding-md; -@modal-header-padding-horizontal: @padding-lg; -@modal-body-padding: @padding-lg; -@modal-header-bg: @component-background; -@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; -@modal-header-border-width: @border-width-base; -@modal-header-border-style: @border-style-base; -@modal-header-title-line-height: 22px; -@modal-header-title-font-size: @font-size-lg; -@modal-header-border-color-split: @border-color-split; -@modal-header-close-size: 56px; -@modal-content-bg: @component-background; -@modal-heading-color: @heading-color; -@modal-close-color: @text-color-secondary; -@modal-footer-bg: transparent; -@modal-footer-border-color-split: @border-color-split; -@modal-footer-border-style: @border-style-base; -@modal-footer-padding-vertical: 10px; -@modal-footer-padding-horizontal: 16px; -@modal-footer-border-width: @border-width-base; -@modal-mask-bg: fade(@black, 45%); -@modal-confirm-body-padding: 32px 32px 24px; -@modal-confirm-title-font-size: @font-size-lg; - -// Progress -// -- -@progress-default-color: @processing-color; -@progress-remaining-color: rgba(0, 0, 0, 0.04); -@progress-info-text-color: @progress-text-color; -@progress-radius: 100px; -@progress-steps-item-bg: #f3f3f3; -@progress-text-font-size: 1em; -@progress-text-color: @text-color; // This is for circle text color, should be renamed better -@progress-circle-text-font-size: 1em; -// Menu -// --- -@menu-inline-toplevel-item-height: 40px; -@menu-item-height: 40px; -@menu-item-group-height: @line-height-base; -@menu-collapsed-width: 80px; -@menu-bg: @component-background; -@menu-popup-bg: @component-background; -@menu-item-color: @text-color; -@menu-inline-submenu-bg: @background-color-light; -@menu-highlight-color: @primary-color; -@menu-highlight-danger-color: @error-color; -@menu-item-active-bg: @primary-1; -@menu-item-active-danger-bg: @red-1; -@menu-item-active-border-width: 3px; -@menu-item-group-title-color: @text-color-secondary; -@menu-item-vertical-margin: 4px; -@menu-item-font-size: @font-size-base; -@menu-item-boundary-margin: 8px; -@menu-item-padding-horizontal: 20px; -@menu-item-padding: 0 @menu-item-padding-horizontal; -@menu-horizontal-line-height: 46px; -@menu-icon-margin-right: 10px; -@menu-icon-size: @menu-item-font-size; -@menu-icon-size-lg: @font-size-lg; -@menu-item-group-title-font-size: @menu-item-font-size; - -// dark theme -@menu-dark-color: @text-color-secondary-dark; -@menu-dark-danger-color: @error-color; -@menu-dark-bg: @layout-header-background; -@menu-dark-arrow-color: #fff; -@menu-dark-inline-submenu-bg: #000c17; -@menu-dark-highlight-color: #fff; -@menu-dark-item-active-bg: @primary-color; -@menu-dark-item-active-danger-bg: @error-color; -@menu-dark-selected-item-icon-color: @white; -@menu-dark-selected-item-text-color: @white; -@menu-dark-item-hover-bg: transparent; -// Spin -// --- -@spin-dot-size-sm: 14px; -@spin-dot-size: 20px; -@spin-dot-size-lg: 32px; - -// Table -// -- -@table-bg: @component-background; -@table-header-bg: @background-color-light; -@table-header-color: @heading-color; -@table-header-sort-bg: @background-color-base; -@table-body-sort-bg: #fafafa; -@table-row-hover-bg: @background-color-light; -@table-selected-row-color: inherit; -@table-selected-row-bg: @primary-1; -@table-body-selected-sort-bg: @table-selected-row-bg; -@table-selected-row-hover-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'; -@table-expanded-row-bg: #fbfbfb; -@table-padding-vertical: 16px; -@table-padding-horizontal: 16px; -@table-padding-vertical-md: (@table-padding-vertical * 3 / 4); -@table-padding-horizontal-md: (@table-padding-horizontal / 2); -@table-padding-vertical-sm: (@table-padding-vertical / 2); -@table-padding-horizontal-sm: (@table-padding-horizontal / 2); -@table-border-color: @border-color-split; -@table-border-radius-base: @border-radius-base; -@table-footer-bg: @background-color-light; -@table-footer-color: @heading-color; -@table-header-bg-sm: @table-header-bg; -@table-font-size: @font-size-base; -@table-font-size-md: @table-font-size; -@table-font-size-sm: @table-font-size; -@table-header-cell-split-color: rgba(0, 0, 0, 0.06); -// Sorter -// Legacy: `table-header-sort-active-bg` is used for hover not real active -@table-header-sort-active-bg: rgba(0, 0, 0, 0.04); -@table-fixed-header-sort-active-bg: hsv(0, 0, 96%); - -// Filter -@table-header-filter-active-bg: rgba(0, 0, 0, 0.04); -@table-filter-btns-bg: inherit; -@table-filter-dropdown-bg: @component-background; -@table-expand-icon-bg: @component-background; -@table-selection-column-width: 32px; -// Sticky -@table-sticky-scroll-bar-bg: fade(#000, 35%); -@table-sticky-scroll-bar-radius: 4px; - -// Tag -// -- -@tag-border-radius: @border-radius-base; -@tag-default-bg: @background-color-light; -@tag-default-color: @text-color; -@tag-font-size: @font-size-sm; -@tag-line-height: 20px; - -// TimePicker -// --- -@picker-bg: @component-background; -@picker-basic-cell-hover-color: @item-hover-bg; -@picker-basic-cell-active-with-range-color: @primary-1; -@picker-basic-cell-hover-with-range-color: ~'var(--@{ant-prefix}-primary-color-deprecated-l-35)'; -@picker-basic-cell-disabled-bg: rgba(0, 0, 0, 0.04); -@picker-border-color: @border-color-split; -@picker-date-hover-range-border-color: ~'var(--@{ant-prefix}-primary-color-deprecated-l-20)'; -@picker-date-hover-range-color: @picker-basic-cell-hover-with-range-color; -@picker-time-panel-column-width: 56px; -@picker-time-panel-column-height: 224px; -@picker-time-panel-cell-height: 28px; -@picker-panel-cell-height: 24px; -@picker-panel-cell-width: 36px; -@picker-text-height: 40px; -@picker-panel-without-time-cell-height: 66px; - -// Calendar -// --- -@calendar-bg: @component-background; -@calendar-input-bg: @input-bg; -@calendar-border-color: @border-color-inverse; -@calendar-item-active-bg: @item-active-bg; -@calendar-column-active-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-f-30)'; -@calendar-full-bg: @calendar-bg; -@calendar-full-panel-bg: @calendar-full-bg; - -// Carousel -// --- -@carousel-dot-width: 16px; -@carousel-dot-height: 3px; -@carousel-dot-active-width: 24px; - -// Badge -// --- -@badge-height: 20px; -@badge-height-sm: 14px; -@badge-dot-size: 6px; -@badge-font-size: @font-size-sm; -@badge-font-size-sm: @font-size-sm; -@badge-font-weight: normal; -@badge-status-size: 6px; -@badge-text-color: @component-background; -@badge-color: @highlight-color; - -// Rate -// --- -@rate-star-color: @yellow-6; -@rate-star-bg: @border-color-split; -@rate-star-size: 20px; -@rate-star-hover-scale: scale(1.1); - -// Card -// --- -@card-head-color: @heading-color; -@card-head-background: transparent; -@card-head-font-size: @font-size-lg; -@card-head-font-size-sm: @font-size-base; -@card-head-padding: 16px; -@card-head-padding-sm: (@card-head-padding / 2); -@card-head-height: 48px; -@card-head-height-sm: 36px; -@card-inner-head-padding: 12px; -@card-padding-base: 24px; -@card-padding-base-sm: (@card-padding-base / 2); -@card-actions-background: @component-background; -@card-actions-li-margin: 12px 0; -@card-skeleton-bg: #cfd8dc; -@card-background: @component-background; -@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), - 0 5px 12px 4px rgba(0, 0, 0, 0.09); -@card-radius: @border-radius-base; -@card-head-tabs-margin-bottom: -17px; -@card-head-extra-color: @text-color; - -// Comment -// --- -@comment-bg: inherit; -@comment-padding-base: @padding-md 0; -@comment-nest-indent: 44px; -@comment-font-size-base: @font-size-base; -@comment-font-size-sm: @font-size-sm; -@comment-author-name-color: @text-color-secondary; -@comment-author-time-color: #ccc; -@comment-action-color: @text-color-secondary; -@comment-action-hover-color: #595959; -@comment-actions-margin-bottom: inherit; -@comment-actions-margin-top: @margin-sm; -@comment-content-detail-p-margin-bottom: inherit; - -// Tabs -// --- -@tabs-card-head-background: @background-color-light; -@tabs-card-height: 40px; -@tabs-card-active-color: @primary-color; -@tabs-card-horizontal-padding: ( - (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2 - ) - @border-width-base @padding-md; -@tabs-card-horizontal-padding-sm: 6px @padding-md; -@tabs-card-horizontal-padding-lg: 7px @padding-md 6px; -@tabs-title-font-size: @font-size-base; -@tabs-title-font-size-lg: @font-size-lg; -@tabs-title-font-size-sm: @font-size-base; -@tabs-ink-bar-color: @primary-color; -@tabs-bar-margin: 0 0 @margin-md 0; -@tabs-horizontal-gutter: 32px; -@tabs-horizontal-margin: 0 0 0 @tabs-horizontal-gutter; -@tabs-horizontal-margin-rtl: 0 0 0 32px; -@tabs-horizontal-padding: @padding-sm 0; -@tabs-horizontal-padding-lg: @padding-md 0; -@tabs-horizontal-padding-sm: @padding-xs 0; -@tabs-vertical-padding: @padding-xs @padding-lg; -@tabs-vertical-margin: @margin-md 0 0 0; -@tabs-scrolling-size: 32px; -@tabs-highlight-color: @primary-color; -@tabs-hover-color: @primary-5; -@tabs-active-color: @primary-7; -@tabs-card-gutter: 2px; -@tabs-card-tab-active-border-top: 2px solid transparent; - -// BackTop -// --- -@back-top-color: #fff; -@back-top-bg: @text-color-secondary; -@back-top-hover-bg: @text-color; - -// Avatar -// --- -@avatar-size-base: 32px; -@avatar-size-lg: 40px; -@avatar-size-sm: 24px; -@avatar-font-size-base: 18px; -@avatar-font-size-lg: 24px; -@avatar-font-size-sm: 14px; -@avatar-bg: #ccc; -@avatar-color: #fff; -@avatar-border-radius: @border-radius-base; -@avatar-group-overlapping: -8px; -@avatar-group-space: 3px; -@avatar-group-border-color: #fff; - -// Switch -// --- -@switch-height: 22px; -@switch-sm-height: 16px; -@switch-min-width: 44px; -@switch-sm-min-width: 28px; -@switch-disabled-opacity: 0.4; -@switch-color: @primary-color; -@switch-bg: @component-background; -@switch-shadow-color: fade(#00230b, 20%); -@switch-padding: 2px; -@switch-inner-margin-min: ceil(@switch-height * 0.3); -@switch-inner-margin-max: ceil(@switch-height * 1.1); -@switch-sm-inner-margin-min: ceil(@switch-sm-height * 0.3); -@switch-sm-inner-margin-max: ceil(@switch-sm-height * 1.1); - -// Pagination -// --- -@pagination-item-bg: @component-background; -@pagination-item-size: @height-base; -@pagination-item-size-sm: 24px; -@pagination-font-family: @font-family; -@pagination-font-weight-active: 500; -@pagination-item-bg-active: @component-background; -@pagination-item-link-bg: @component-background; -@pagination-item-disabled-color-active: @disabled-color; -@pagination-item-disabled-bg-active: @disabled-active-bg; -@pagination-item-input-bg: @component-background; -@pagination-mini-options-size-changer-top: 0px; - -// PageHeader -// --- -@page-header-padding: @padding-lg; -@page-header-padding-vertical: @padding-md; -@page-header-padding-breadcrumb: @padding-sm; -@page-header-content-padding-vertical: @padding-sm; -@page-header-back-color: #000; -@page-header-ghost-bg: inherit; -@page-header-heading-title: @heading-4-size; -@page-header-heading-sub-title: 14px; -@page-header-tabs-tab-font-size: 16px; - -// Breadcrumb -// --- -@breadcrumb-base-color: @text-color-secondary; -@breadcrumb-last-item-color: @text-color; -@breadcrumb-font-size: @font-size-base; -@breadcrumb-icon-font-size: @font-size-base; -@breadcrumb-link-color: @text-color-secondary; -@breadcrumb-link-color-hover: @text-color; -@breadcrumb-separator-color: @text-color-secondary; -@breadcrumb-separator-margin: 0 @padding-xs; - -// Slider -// --- -@slider-margin: 10px 6px 10px; -@slider-rail-background-color: @background-color-base; -@slider-rail-background-color-hover: #e1e1e1; -@slider-track-background-color: @primary-3; -@slider-track-background-color-hover: @primary-4; -@slider-handle-border-width: 2px; -@slider-handle-background-color: @component-background; -@slider-handle-color: @primary-3; -@slider-handle-color-hover: @primary-4; -@slider-handle-color-focus: ~'var(--@{ant-prefix}-primary-color-deprecated-t-20)'; -@slider-handle-color-focus-shadow: ~'var(--@{ant-prefix}-primary-color-deprecated-f-12)'; -@slider-handle-color-tooltip-open: @primary-color; -@slider-handle-size: 14px; -@slider-handle-margin-top: -5px; -@slider-handle-shadow: 0; -@slider-dot-border-color: @border-color-split; -@slider-dot-border-color-active: ~'var(--@{ant-prefix}-primary-color-deprecated-t-50)'; -@slider-disabled-color: @disabled-color; -@slider-disabled-background-color: @component-background; - -// Tree -// --- -@tree-bg: @component-background; -@tree-title-height: 24px; -@tree-child-padding: 18px; -@tree-directory-selected-color: #fff; -@tree-directory-selected-bg: @primary-color; -@tree-node-hover-bg: @item-hover-bg; -@tree-node-selected-bg: @primary-2; - -// Collapse -// --- -@collapse-header-padding: @padding-sm @padding-md; -@collapse-header-padding-extra: 40px; -@collapse-header-bg: @background-color-light; -@collapse-content-padding: @padding-md; -@collapse-content-bg: @component-background; -@collapse-header-arrow-left: 16px; - -// Skeleton -// --- -@skeleton-color: rgba(190, 190, 190, 0.2); -@skeleton-to-color: shade(@skeleton-color, 5%); -@skeleton-paragraph-margin-top: 28px; -@skeleton-paragraph-li-margin-top: @margin-md; -@skeleton-paragraph-li-height: 16px; -@skeleton-title-height: 16px; -@skeleton-title-paragraph-margin-top: @margin-lg; - -// Transfer -// --- -@transfer-header-height: 40px; -@transfer-item-height: @height-base; -@transfer-disabled-bg: @disabled-bg; -@transfer-list-height: 200px; -@transfer-item-hover-bg: @item-hover-bg; -@transfer-item-selected-hover-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'; -@transfer-item-padding-vertical: 6px; -@transfer-list-search-icon-top: 12px; - -// Message -// --- -@message-notice-content-padding: 10px 16px; -@message-notice-content-bg: @component-background; -// Motion -// --- -@wave-animation-width: 6px; - -// Alert -// --- -@alert-success-border-color: @success-color-deprecated-border; -@alert-success-bg-color: @success-color-deprecated-bg; -@alert-success-icon-color: @success-color; -@alert-info-border-color: @info-color-deprecated-border; -@alert-info-bg-color: @info-color-deprecated-bg; -@alert-info-icon-color: @info-color; -@alert-warning-border-color: @warning-color-deprecated-border; -@alert-warning-bg-color: @warning-color-deprecated-bg; -@alert-warning-icon-color: @warning-color; -@alert-error-border-color: @error-color-deprecated-border; -@alert-error-bg-color: @error-color-deprecated-bg; -@alert-error-icon-color: @error-color; -@alert-message-color: @heading-color; -@alert-text-color: @text-color; -@alert-close-color: @text-color-secondary; -@alert-close-hover-color: @icon-color-hover; -@alert-no-icon-padding-vertical: @padding-xs; -@alert-with-description-no-icon-padding-vertical: @padding-md - 1px; -@alert-with-description-padding-vertical: @padding-md - 1px; -@alert-with-description-padding: @alert-with-description-padding-vertical 15px - @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size; -@alert-icon-top: 8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); -@alert-with-description-icon-size: 24px; - -// List -// --- -@list-header-background: transparent; -@list-footer-background: transparent; -@list-empty-text-padding: @padding-md; -@list-item-padding: @padding-sm 0; -@list-item-padding-sm: @padding-xs @padding-md; -@list-item-padding-lg: 16px 24px; -@list-item-meta-margin-bottom: @padding-md; -@list-item-meta-avatar-margin-right: @padding-md; -@list-item-meta-title-margin-bottom: @padding-sm; -@list-customize-card-bg: @component-background; -@list-item-meta-description-font-size: @font-size-base; - -// Statistic -// --- -@statistic-title-font-size: @font-size-base; -@statistic-content-font-size: 24px; -@statistic-unit-font-size: 24px; -@statistic-font-family: @font-family; - -// Drawer -// --- -@drawer-header-padding: @padding-md @padding-lg; -@drawer-body-padding: @padding-lg; -@drawer-bg: @component-background; -@drawer-footer-padding-vertical: @modal-footer-padding-vertical; -@drawer-footer-padding-horizontal: @modal-footer-padding-horizontal; -@drawer-header-close-size: 56px; -@drawer-title-font-size: @font-size-lg; -@drawer-title-line-height: 22px; - -// Timeline -// --- -@timeline-width: 2px; -@timeline-color: @border-color-split; -@timeline-dot-border-width: 2px; -@timeline-dot-color: @primary-color; -@timeline-dot-bg: @component-background; -@timeline-item-padding-bottom: 20px; - -// Typography -// --- -@typography-title-font-weight: 600; -@typography-title-margin-top: 1.2em; -@typography-title-margin-bottom: 0.5em; - -// Upload -// --- -@upload-actions-color: @text-color-secondary; - -// Steps -// --- -@process-tail-color: @border-color-split; -@steps-nav-arrow-color: fade(@black, 25%); -@steps-background: @component-background; -@steps-icon-size: 32px; -@steps-icon-custom-size: @steps-icon-size; -@steps-icon-custom-top: 0px; -@steps-icon-custom-font-size: 24px; -@steps-icon-top: -0.5px; -@steps-icon-font-size: @font-size-lg; -@steps-icon-margin: 0 8px 0 0; -@steps-title-line-height: @height-base; -@steps-small-icon-size: 24px; -@steps-small-icon-margin: 0 8px 0 0; -@steps-dot-size: 8px; -@steps-dot-top: 2px; -@steps-current-dot-size: 10px; -@steps-description-max-width: 140px; -@steps-nav-content-max-width: auto; -@steps-vertical-icon-width: 16px; -@steps-vertical-tail-width: 16px; -@steps-vertical-tail-width-sm: 12px; - -// Notification -// --- -@notification-bg: @component-background; -@notification-padding-vertical: 16px; -@notification-padding-horizontal: 24px; - -// Result -// --- -@result-title-font-size: 24px; -@result-subtitle-font-size: @font-size-base; -@result-icon-font-size: 72px; -@result-extra-margin: 24px 0 0 0; - -// Image -// --- -@image-size-base: 48px; -@image-font-size-base: 24px; -@image-bg: #f5f5f5; -@image-color: #fff; -@image-mask-font-size: 16px; -@image-preview-operation-size: 18px; -@image-preview-operation-color: @text-color-dark; -@image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%); - -// Segmented -// --- -@segmented-bg: fade(@black, 4%); -@segmented-hover-bg: fade(@black, 6%); -@segmented-selected-bg: @white; -@segmented-label-color: fade(@black, 65%); -@segmented-label-hover-color: #262626; diff --git a/components/style/variable.less b/components/style/variable.less deleted file mode 100644 index 6c702934c..000000000 --- a/components/style/variable.less +++ /dev/null @@ -1,4 +0,0 @@ -@root-entry-name: variable; - -@import './themes/variable.less'; -@import './core/index';