var.scss 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. @use 'sass:map';
  2. @use 'sass:math';
  3. @use 'element-plus/theme-chalk/src/common/var.scss' as common;
  4. @use 'element-plus/theme-chalk/src/mixins/mixins.scss' as *;
  5. @use 'element-plus/theme-chalk/src/color/index.scss' as *;
  6. $colors: () !default;
  7. @each $type in common.$types {
  8. $colors: map.deep-merge(
  9. (
  10. $type: (
  11. 'base': map.get(common.$colors, $type, 'base')
  12. )
  13. ),
  14. $colors
  15. ) !global;
  16. }
  17. // https://sass-lang.com/documentation/values/maps#immutability
  18. // mix colors with white/black to generate light/lighting level
  19. @mixin set-color-mix-level($type, $number, $mode: 'light', $mix-color: $color-white) {
  20. // hex mix color
  21. $colors: map.deep-merge(
  22. (
  23. $type: (
  24. '#{$mode}-#{$number}': mix($mix-color, map.get($colors, $type, 'base'), math.percentage(math.div($number, 10)))
  25. )
  26. ),
  27. $colors
  28. ) !global;
  29. // for designer to view transparent
  30. // $colors: map.deep-merge(
  31. // (
  32. // $type: (
  33. // '#{$mode}-#{$number}':
  34. // rgba(map.get($colors, $type, 'base'), math.div(10 - $number, 10)),
  35. // ),
  36. // ),
  37. // $colors
  38. // ) !global;
  39. }
  40. // Background
  41. $bg-color: () !default;
  42. $bg-color: map.merge(
  43. (
  44. 'page': #0a0a0a,
  45. '': #141414,
  46. 'overlay': #1d1e1f
  47. ),
  48. $bg-color
  49. );
  50. // lighting-mode
  51. @each $type in common.$types {
  52. @for $i from 1 through 9 {
  53. @include set-color-mix-level($type, $i, 'light', map.get($bg-color, ''));
  54. }
  55. }
  56. @each $type in common.$types {
  57. @include set-color-mix-level($type, 2, 'lighting', common.$color-white);
  58. }
  59. // border
  60. $border-color-base: #f5f8ff;
  61. $border-color: () !default;
  62. $border-color: map.merge(
  63. (
  64. 'lightinger': rgba($border-color-base, 0.35),
  65. 'lighting': rgba($border-color-base, 0.3),
  66. '': rgba($border-color-base, 0.25),
  67. 'light': rgba($border-color-base, 0.2),
  68. 'lighter': rgba($border-color-base, 0.15),
  69. 'extra-light': rgba($border-color-base, 0.1)
  70. ),
  71. $border-color
  72. );
  73. // mix to hex to avoid overlay issues
  74. @each $key, $val in $border-color {
  75. $border-color: map.merge(
  76. $border-color,
  77. (
  78. $key: mix-overlay-color($val, map.get($bg-color, ''))
  79. )
  80. ) !global;
  81. }
  82. // Box-shadow
  83. $box-shadow: () !default;
  84. $box-shadow: map.merge(
  85. (
  86. '': (
  87. 0px 12px 32px 4px rgba(0, 0, 0, 0.36),
  88. 0px 8px 20px rgba(0, 0, 0, 0.72)
  89. ),
  90. 'light': (
  91. 0px 0px 12px rgba(0, 0, 0, 0.72)
  92. ),
  93. 'lighter': (
  94. 0px 0px 6px rgba(0, 0, 0, 0.72)
  95. ),
  96. 'lighting': (
  97. 0px 16px 48px 16px rgba(0, 0, 0, 0.72),
  98. 0px 12px 32px #000000,
  99. 0px 8px 16px -8px #000000
  100. )
  101. ),
  102. $box-shadow
  103. );
  104. // fill
  105. $fill-color-base: #fafcff;
  106. $fill-color: () !default;
  107. $fill-color: map.merge(
  108. (
  109. 'lightinger': rgba($fill-color-base, 0.2),
  110. 'lighting': rgba($fill-color-base, 0.16),
  111. '': rgba($fill-color-base, 0.12),
  112. 'light': rgba($fill-color-base, 0.08),
  113. 'lighter': rgba($fill-color-base, 0.04),
  114. 'extra-light': rgba($fill-color-base, 0.02),
  115. 'blank': transparent
  116. ),
  117. $fill-color
  118. );
  119. // mix to hex to avoid overlay issues
  120. @each $key, $val in $fill-color {
  121. @if ($key != 'blank') {
  122. $fill-color: map.merge(
  123. $fill-color,
  124. (
  125. $key: mix-overlay-color($val, map.get($bg-color, ''))
  126. )
  127. ) !global;
  128. }
  129. }
  130. // text
  131. $text-color-base: #f0f5ff;
  132. $text-color: () !default;
  133. $text-color: map.merge(
  134. (
  135. 'primary': rgba($text-color-base, 0.95),
  136. 'regular': rgba($text-color-base, 0.85),
  137. 'secondary': rgba($text-color-base, 0.65),
  138. 'placeholder': rgba($text-color-base, 0.55),
  139. 'disabled': rgba($text-color-base, 0.4)
  140. ),
  141. $text-color
  142. );
  143. // mix to hex to avoid overlay issues
  144. @each $key, $val in $text-color {
  145. $text-color: map.merge(
  146. $text-color,
  147. (
  148. $key: mix-overlay-color($val, map.get($bg-color, ''))
  149. )
  150. ) !global;
  151. }
  152. // mask
  153. $mask-color: () !default;
  154. $mask-color: map.merge(
  155. (
  156. '': rgba(0, 0, 0, 0.8),
  157. 'extra-light': rgba(0, 0, 0, 0.3)
  158. ),
  159. $mask-color
  160. );
  161. // Button
  162. // css3 var in packages/theme-chalk/src/button.scss
  163. $button: () !default;
  164. $button: map.merge(
  165. (
  166. 'disabled-text-color': rgba(255, 255, 255, 0.5)
  167. ),
  168. $button
  169. );
  170. // card
  171. $card: () !default;
  172. $card: map.merge(
  173. (
  174. 'bg-color': getCssVar('bg-color', 'overlay')
  175. ),
  176. $card
  177. );
  178. // Empty
  179. // css3 var in packages/theme-chalk/src/empty.scss
  180. $empty: () !default;
  181. $empty: map.merge(
  182. (
  183. 'fill-color-0': getCssVar('color-black'),
  184. 'fill-color-1': #4b4b52,
  185. 'fill-color-2': #36383d,
  186. 'fill-color-3': #1e1e20,
  187. 'fill-color-4': #262629,
  188. 'fill-color-5': #202124,
  189. 'fill-color-6': #212224,
  190. 'fill-color-7': #1b1c1f,
  191. 'fill-color-8': #1c1d1f,
  192. 'fill-color-9': #18181a
  193. ),
  194. $empty
  195. );