notification.scss 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. @use 'mixins/mixins' as *;
  2. @use 'mixins/var' as *;
  3. @use 'common/var' as *;
  4. @include b(notification) {
  5. @include set-component-css-var('notification', $notification);
  6. }
  7. @include b(notification) {
  8. display: flex;
  9. width: getCssVar('notification-width');
  10. padding: getCssVar('notification-padding');
  11. border-radius: getCssVar('notification-radius');
  12. box-sizing: border-box;
  13. border: 1px solid getCssVar('notification-border-color');
  14. position: fixed;
  15. background-color: getCssVar('bg-color', 'overlay');
  16. box-shadow: getCssVar('notification-shadow');
  17. transition: opacity getCssVar('transition-duration'),
  18. transform getCssVar('transition-duration'),
  19. left getCssVar('transition-duration'),
  20. right getCssVar('transition-duration'), top 0.4s,
  21. bottom getCssVar('transition-duration');
  22. overflow-wrap: break-word;
  23. overflow: hidden;
  24. z-index: 9999;
  25. &.right {
  26. right: 16px;
  27. }
  28. &.left {
  29. left: 16px;
  30. }
  31. @include e(group) {
  32. margin-left: getCssVar('notification-group-margin-left');
  33. margin-right: getCssVar('notification-group-margin-right');
  34. }
  35. @include e(title) {
  36. font-weight: bold;
  37. font-size: getCssVar('notification-title-font-size');
  38. line-height: getCssVar('notification-icon-size');
  39. color: getCssVar('notification-title-color');
  40. margin: 0;
  41. }
  42. @include e(content) {
  43. font-size: getCssVar('notification-content-font-size');
  44. line-height: 24px;
  45. margin: 6px 0 0;
  46. color: getCssVar('notification-content-color');
  47. p {
  48. margin: 0;
  49. }
  50. }
  51. & .#{$namespace}-notification__icon {
  52. height: getCssVar('notification-icon-size');
  53. width: getCssVar('notification-icon-size');
  54. font-size: getCssVar('notification-icon-size');
  55. }
  56. & .#{$namespace}-notification__closeBtn {
  57. position: absolute;
  58. top: 18px;
  59. right: 15px;
  60. cursor: pointer;
  61. color: getCssVar('notification-close-color');
  62. font-size: getCssVar('notification-close-font-size');
  63. &:hover {
  64. color: getCssVar('notification-close-hover-color');
  65. }
  66. }
  67. @each $type in (success, info, warning, error) {
  68. & .#{$namespace}-notification--#{$type} {
  69. @include css-var-from-global(
  70. ('notification', 'icon-color'),
  71. ('color', $type)
  72. );
  73. color: getCssVar('notification-icon-color');
  74. }
  75. }
  76. }
  77. .#{$namespace}-notification-fade-enter-from {
  78. &.right {
  79. right: 0;
  80. transform: translateX(100%);
  81. }
  82. &.left {
  83. left: 0;
  84. transform: translateX(-100%);
  85. }
  86. }
  87. .#{$namespace}-notification-fade-leave-to {
  88. opacity: 0;
  89. }