NGToolsAdmin/common/theme.scss

294 lines
6.2 KiB
SCSS
Raw Normal View History

2024-09-13 08:39:31 +00:00
@import '@/uni.scss';
$theme-map: ();
$primary-key: 'primary';
$success-key: 'success';
$warn-key: 'warn';
$warning-key: 'warning';
$error-key: 'error';
@mixin themeify {
@each $theme-name, $theme-map in $themes {
$theme-map: $theme-map !global;
[data-theme='#{inspect($theme-name)}'] {
@content;
}
}
}
@function getTheme($key) {
@return map-get($theme-map, $key);
}
@mixin uni-button($button-type) {
$button-type-color: getTheme(#{$button-type + '-color'});
uni-button,
button {
&[type='#{$button-type}'] {
background-color: $button-type-color;
&[disabled] {
background-color: opacify($button-type-color, 0.6);
}
&[plain] {
color: $button-type-color;
border-color: $button-type-color;
background-color: transparent;
}
&[loading] {
background-color: $button-type-color;
&[plain] {
color: $button-type-color;
}
}
&.button-hover {
$hover-color: darken(
$color: $button-type-color,
$amount: 10%
);
background-color: $hover-color;
&[plain] {
color: $hover-color;
border-color: $hover-color;
background-color: transparent;
}
}
}
}
}
@mixin uni-switch {
$primary-color: getTheme(#{$primary-key + '-color'});
.uni-switch-input.uni-switch-input-checked {
background-color: $primary-color !important;
border-color: $primary-color !important;
}
}
@mixin uni-ui-checkbox {
$primary-color: getTheme(#{$primary-key + '-color'});
.checklist-box {
&.is-checked {
.checkbox__inner {
border-color: $primary-color !important;
background-color: $primary-color !important;
}
.radio__inner {
border-color: $primary-color !important;
.radio__inner-icon {
background-color: $primary-color !important;
}
}
.checklist-text {
color: $primary-color !important;
}
}
.checkbox__inner:hover {
border-color: $primary-color !important;
}
}
}
@mixin uni-ui-easyinput {
$primary-color: getTheme(#{$primary-key + '-color'});
$error-color: getTheme(#{$error-key + '-color'});
.uni-easyinput {
&.uni-easyinput-error {
color: $error-color !important;
}
.uni-easyinput__content {
&.is-focused {
&.is-input-border {
border-color: $primary-color !important;
}
.uni-icons {
color: $primary-color !important;
}
}
}
}
}
@mixin uni-menu {
$primary-color: getTheme(#{$primary-key + '-color'});
// 左侧菜单
.uni-nav-menu {
.uni-menu-item.is-active {
color: $primary-color;
}
}
// 修改密码
.navbar-menu {
.menu-item.hover-highlight:hover {
color: $primary-color;
}
}
}
@mixin uni-table {
$primary-color: getTheme(#{$primary-key + '-color'});
.uni-table {
.link-btn-color {
color: $primary-color;
}
.uni-table-checkbox {
.checkbox__inner {
&.checkbox--indeterminate,
&.is-checked {
border-color: $primary-color;
background-color: $primary-color;
}
}
.checkbox__inner:hover {
border-color: $primary-color;
}
}
.uni-table-th-content {
.arrow-box {
.arrow.active ::after {
background-color: $primary-color;
}
}
}
// 表格头部搜索按钮
.opera-area {
.btn.btn-submit {
background-color: $primary-color;
}
}
.dropdown-btn {
.icon-search.active {
.icon-search-0 {
border-color: $primary-color;
}
.icon-search-1 {
background-color: $primary-color;
}
}
.icon-calendar.active {
.icon-calendar-0 {
border-color: $primary-color;
}
.icon-calendar-1 {
background-color: $primary-color;
}
}
}
.uni-icons.uni-stat-edit--btn {
color: $primary-color !important;
}
}
.uni-pagination {
.uni-pagination__num-current .page--active {
background-color: $primary-color !important;
}
}
}
@mixin uni-picker {
$primary-color: getTheme(#{$primary-key + '-color'});
.uni-picker-select {
.uni-picker-item.selected {
color: $primary-color;
}
}
}
@mixin uni-calendar {
$primary-color: getTheme(#{$primary-key + '-color'});
.uni-calendar__button-text {
color: $primary-color;
}
.uni-datetime-picker--btn {
background-color: $primary-color;
}
.uni-calendar-item--multiple {
.uni-calendar-item--before-checked,
.uni-calendar-item--after-checked {
background-color: $primary-color;
}
}
.uni-calendar-item__weeks-box {
.uni-calendar-item--checked {
background-color: $primary-color;
}
&-text {
color: darken($color: $primary-color, $amount: 40%);
}
}
}
@mixin uni-popup {
$primary-color: getTheme(#{$primary-key + '-color'});
.uni-popup-dialog {
.uni-button-color {
color: $primary-color;
}
}
}
@mixin uni-tag($tag-type) {
$tag-type-color: getTheme(#{$tag-type + '-color'});
.uni-tag {
&--#{$tag-type} {
&--inverted {
background-color: #fff !important;
color: $tag-type-color !important;
}
background-color: $tag-type-color !important;
border-color: $tag-type-color !important;
}
}
}
body {
@at-root {
@include themeify {
$primary-color: getTheme(#{$primary-key + '-color'});
// 组件
@include uni-button($primary-key);
@include uni-button($warn-key);
@include uni-tag($primary-key);
@include uni-tag($success-key);
@include uni-tag($warning-key);
@include uni-tag($error-key);
@include uni-ui-checkbox;
@include uni-switch;
@include uni-ui-easyinput;
@include uni-menu;
@include uni-table;
@include uni-picker;
@include uni-calendar;
@include uni-popup;
// 页面
.link-btn {
color: $primary-color !important;
}
.uni-stat--tab-item {
&.uni-stat--tab-item-line-active,
&.uni-stat--tab-item-boldLine-active {
color: $primary-color;
border-color: $primary-color;
}
&.uni-stat--tab-item-box-active {
border-color: $primary-color;
}
}
.uni-title.app-list {
color: $primary-color;
border-color: $primary-color;
}
.uni-link {
color: $primary-color;
}
.uni-selector-select .uni-picker-item.selected {
color: $primary-color;
}
.uni-tabs__item.is-active {
color: $primary-color;
}
.uni-modal__btn_primary {
color: $primary-color !important;
}
.uni-radio-input-checked {
background-color: $primary-color !important;
border-color: $primary-color !important;
}
.uni-container {
.icon-item:hover,
.icon-item:hover .icon-text {
color: $primary-color;
}
}
}
}
}