packages-theme/console-base-theme/stories/util/generate-code-mixin-reset.ts (71 lines of code) (raw):
import {
ICodeGenerator
} from '../types';
import {
CODE_BEGIN_RESET
} from '../const';
import pushCode from './push-code';
import toCode from './to-code';
import buildCssCode from './build-css-code';
const codeInputReset = `export const mixinInputReset = css\`
border: 1px solid transparent;
box-sizing: border-box;
outline: none;
background-color: transparent;
transition: all ease-in-out 0.3s;
&::placeholder {
font-size: 12px;
font-weight: 200;
${buildCssCode({
attr: 'color',
keys: ['COLOR', 'INPUT_PLACEHOLDER'],
indent: 2
})}
}
&::-ms-clear {
display: none;
}
\`;`;
const codeButtonReset = `
/**
* 对按钮样式进行重置:
*
* 1. 去掉 padding、background、border,定义 outline 以防止丑陋的 Chrome focus outline 样式
* 2. 设置字体(family、颜色、大小、行间距等)继承
* 3. 避免 link hover 的样式干扰
* 4. 定义 disabled 的基础样式
*/
export const mixinButtonReset = css\`
padding: 0;
border: 1px solid transparent;
box-sizing: border-box;
outline: none;
background: none;
line-height: inherit;
cursor: pointer;
font-family: inherit;
font-size: inherit;
text-align: center;
text-decoration: none;
color: inherit;
transition: all ease-out 0.3s;
&:hover,
&:link:hover {
text-decoration: none;
}
&:focus-visible {
outline: 2px dashed \${COLOR.BORDER_ACCENT_HOVER};
}
&[disabled] {
cursor: not-allowed;
}
\`;`;
// 生成 mixin/reset.ts
export default function generateCodeMixinInput(): string {
const generator: ICodeGenerator = {
generator: 'generate-code-mixin-reset',
begin: CODE_BEGIN_RESET
};
pushCode(generator, codeInputReset);
pushCode(generator, codeButtonReset);
return toCode(generator);
}