var.scss 4.6 KB

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