_button.scss 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. @use 'sass:map';
  2. @use '../mixins/var' as *;
  3. @use '../mixins/function' as *;
  4. @use '../common/var' as *;
  5. @mixin button-plain($type) {
  6. $button-color-types: (
  7. '': (
  8. 'text-color': (
  9. 'color',
  10. $type,
  11. ),
  12. 'bg-color': (
  13. 'color',
  14. $type,
  15. 'light-9',
  16. ),
  17. 'border-color': (
  18. 'color',
  19. $type,
  20. 'light-5',
  21. ),
  22. ),
  23. 'hover': (
  24. 'text-color': (
  25. 'color',
  26. 'white',
  27. ),
  28. 'bg-color': (
  29. 'color',
  30. $type,
  31. ),
  32. 'border-color': (
  33. 'color',
  34. $type,
  35. ),
  36. ),
  37. 'active': (
  38. 'text-color': (
  39. 'color',
  40. 'white',
  41. ),
  42. ),
  43. );
  44. @each $type, $typeMap in $button-color-types {
  45. @each $typeColor, $list in $typeMap {
  46. @include css-var-from-global(('button', $type, $typeColor), $list);
  47. }
  48. }
  49. &.is-disabled {
  50. &,
  51. &:hover,
  52. &:focus,
  53. &:active {
  54. color: getCssVar('color', $type, 'light-5');
  55. background-color: getCssVar('color', $type, 'light-9');
  56. border-color: getCssVar('color', $type, 'light-8');
  57. }
  58. }
  59. }
  60. @mixin button-variant($type) {
  61. $button-color-types: (
  62. '': (
  63. 'text-color': (
  64. 'color',
  65. 'white',
  66. ),
  67. 'bg-color': (
  68. 'color',
  69. $type,
  70. ),
  71. 'border-color': (
  72. 'color',
  73. $type,
  74. ),
  75. 'outline-color': (
  76. 'color',
  77. $type,
  78. 'light-5',
  79. ),
  80. 'active-color': (
  81. 'color',
  82. $type,
  83. 'dark-2',
  84. ),
  85. ),
  86. 'hover': (
  87. 'text-color': (
  88. 'color',
  89. 'white',
  90. ),
  91. 'link-text-color': (
  92. 'color',
  93. $type,
  94. 'light-5',
  95. ),
  96. 'bg-color': (
  97. 'color',
  98. $type,
  99. 'light-3',
  100. ),
  101. 'border-color': (
  102. 'color',
  103. $type,
  104. 'light-3',
  105. ),
  106. ),
  107. 'active': (
  108. 'bg-color': (
  109. 'color',
  110. $type,
  111. 'dark-2',
  112. ),
  113. 'border-color': (
  114. 'color',
  115. $type,
  116. 'dark-2',
  117. ),
  118. ),
  119. 'disabled': (
  120. 'text-color': (
  121. 'color',
  122. 'white',
  123. ),
  124. 'bg-color': (
  125. 'color',
  126. $type,
  127. 'light-5',
  128. ),
  129. 'border-color': (
  130. 'color',
  131. $type,
  132. 'light-5',
  133. ),
  134. ),
  135. );
  136. @each $type, $typeMap in $button-color-types {
  137. @each $typeColor, $list in $typeMap {
  138. @include css-var-from-global(('button', $type, $typeColor), $list);
  139. }
  140. }
  141. &.is-plain,
  142. &.is-text,
  143. &.is-link {
  144. @include button-plain($type);
  145. }
  146. }
  147. @mixin button-size(
  148. $padding-vertical,
  149. $padding-horizontal,
  150. $font-size,
  151. $border-radius
  152. ) {
  153. padding: $padding-vertical $padding-horizontal;
  154. font-size: $font-size;
  155. border-radius: $border-radius;
  156. &.is-round {
  157. padding: $padding-vertical $padding-horizontal;
  158. }
  159. }