loading-screen.scss 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. @use 'sass:math';
  2. @mixin loading-screen-dark {
  3. --loading-screen-ol-logo-empty-url: url(../../../../public/img/ol-brand/overleaf-o-grey.svg);
  4. --loading-screen-ol-logo-full-url: url(../../../../public/img/ol-brand/overleaf-o-white.svg);
  5. --loading-screen-bg-color: var(--bg-dark-primary);
  6. --loading-screen-color: var(--content-secondary-dark);
  7. --loading-screen-danger-color: var(--content-danger-dark);
  8. }
  9. @mixin loading-screen-light {
  10. --loading-screen-ol-logo-empty-url: url(../../../../public/img/ol-brand/overleaf-o-grey.svg);
  11. --loading-screen-ol-logo-full-url: url(../../../../public/img/ol-brand/overleaf-o.svg);
  12. --loading-screen-bg-color: var(--bg-light-primary);
  13. --loading-screen-color: var(--content-secondary);
  14. --loading-screen-danger-color: var(--content-danger);
  15. }
  16. :root {
  17. @include loading-screen-light;
  18. @include theme('default') {
  19. @include loading-screen-dark;
  20. }
  21. .loading-screen-init-system {
  22. @include loading-screen-light;
  23. @media (prefers-color-scheme: dark) {
  24. @include loading-screen-dark;
  25. }
  26. }
  27. .loading-screen-init-light {
  28. @include loading-screen-light;
  29. }
  30. .loading-screen-init-dark {
  31. @include loading-screen-dark;
  32. }
  33. }
  34. @keyframes blink {
  35. 0% {
  36. opacity: 0.2;
  37. }
  38. 20% {
  39. opacity: 1;
  40. }
  41. 100% {
  42. opacity: 0.2;
  43. }
  44. }
  45. .loading-screen {
  46. display: flex;
  47. flex-direction: column;
  48. justify-content: center;
  49. align-items: center;
  50. width: 100%;
  51. height: 100%;
  52. background-color: var(--loading-screen-bg-color);
  53. .loading-screen-brand-container {
  54. min-width: 200px;
  55. }
  56. .loading-screen-brand {
  57. position: relative;
  58. padding-top: math.percentage(math.div(150, 130)); // dimensions of the SVG
  59. height: 0;
  60. background: var(--loading-screen-ol-logo-empty-url) no-repeat bottom / 100%;
  61. &::after {
  62. content: '';
  63. position: absolute;
  64. height: inherit;
  65. right: 0;
  66. bottom: 0;
  67. left: 0;
  68. background: var(--loading-screen-ol-logo-full-url) no-repeat bottom / 100%;
  69. transition: height 0.5s;
  70. }
  71. }
  72. .loading-screen-label {
  73. margin: 0;
  74. padding-top: var(--spacing-09);
  75. font-family: $font-family-serif;
  76. font-size: var(--font-size-07);
  77. color: var(--loading-screen-color);
  78. }
  79. .loading-screen-ellip {
  80. animation: blink 1.4s both infinite;
  81. &:nth-child(2) {
  82. animation-delay: 0.2s;
  83. }
  84. &:nth-child(3) {
  85. animation-delay: 0.4s;
  86. }
  87. }
  88. .loading-screen-error {
  89. margin: 0;
  90. padding-top: var(--spacing-06);
  91. color: var(--loading-screen-danger-color);
  92. }
  93. }