SongDetails.scss 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. //TODO Clean up this component A LOT. Could definitly use Modal in multiple places.
  2. @import './StyleConstants';
  3. .bs-viewer-frame{
  4. border: none;
  5. }
  6. #song-details {
  7. display: flex;
  8. flex-flow: row nowrap;
  9. padding: 15px;
  10. height: calc(100vh - 85px);
  11. animation: song-details-fade-in .2s forwards;
  12. #preview {
  13. width: 350px;
  14. margin-top: 5px;
  15. &:not([src]) {
  16. opacity: 0.8;
  17. animation: song-details-loading-mask .7s alternate infinite;
  18. }
  19. }
  20. .cover-image {
  21. width: 15vw;
  22. height: 15vw;
  23. filter: drop-shadow(2px 2px 3px rgba(0,0,0,0.25));
  24. border-radius: 5px;
  25. }
  26. .close-icon {
  27. cursor: pointer;
  28. position: absolute;
  29. transform: translateX(calc(100vw - 280px));
  30. width: 25px;
  31. height: 25px;
  32. background: url(../assets/close.png);
  33. background-size: 25px;
  34. }
  35. .details-info {
  36. margin: 10px 20px;
  37. }
  38. .details-title {
  39. display: inline-block;
  40. font-size: 20pt;
  41. font-weight: 900;
  42. margin-top: 3px;
  43. margin-bottom: -3px;
  44. max-width: calc(62vw - 300px);
  45. overflow: hidden;
  46. white-space: nowrap;
  47. text-overflow: ellipsis;
  48. }
  49. .details-artist {
  50. font-size: 14pt;
  51. opacity: 0.8;
  52. }
  53. .details-uploader {
  54. margin-bottom: 10px;
  55. }
  56. .details-description {
  57. margin-bottom: 10px;
  58. max-width: 60%;
  59. max-height: 20%;
  60. overflow-y: scroll;
  61. }
  62. .details-difficulties {
  63. margin-top: 5px;
  64. margin-bottom: 10px;
  65. }
  66. .details-ratings {
  67. position: absolute;
  68. right: 6vw;
  69. display: flex;
  70. align-items: flex-start;
  71. width: 200px;
  72. flex-flow: row wrap;
  73. }
  74. .action-buttons {
  75. margin: 15px 0;
  76. .action-button {
  77. margin: 0 3px;
  78. padding: 5px 10px;
  79. border-radius: 20px;
  80. font-size: 8pt;
  81. font-weight: 900;
  82. color: white;
  83. background-color: rgba($beatdrop-blue, 0.8);
  84. cursor: pointer;
  85. display: inline-flex;
  86. align-items: center;
  87. &:hover {
  88. background: $beatdrop-blue;
  89. }
  90. &.download-button {
  91. padding: 2px 7px;
  92. width: 90px;
  93. background: rgba($beatdrop-blue, 0.3);
  94. border: 3px solid rgba($beatdrop-blue, 0.8);
  95. display: inline-flex;
  96. flex-flow: row nowrap;
  97. justify-content: flex-start;
  98. position: relative;
  99. margin-top: -1px;
  100. span:first-child {
  101. display: inline-block;
  102. position: absolute;
  103. left: -1px;
  104. top: -1px;
  105. height: 110%;
  106. background: rgba($beatdrop-blue, 0.8);
  107. z-index: -1;
  108. border-radius: 10px;
  109. }
  110. &:hover {
  111. border: 3px solid $beatdrop-blue;
  112. span:first-child {
  113. background: $beatdrop-blue;
  114. }
  115. }
  116. }
  117. &:not(.more-button) img {
  118. width: 15px;
  119. height: 15px;
  120. margin-right: 5px;
  121. }
  122. &.playlist-add-button {
  123. width: 110px;
  124. }
  125. &.disabled {
  126. opacity: 0.5;
  127. cursor: not-allowed;
  128. }
  129. &.more-button img {
  130. width: 15px;
  131. height: 15px;
  132. }
  133. }
  134. }
  135. .song-in-library {
  136. font-weight: bold;
  137. color: $beatdrop-blue;
  138. margin-top: 5px;
  139. }
  140. }
  141. #song-details.loading {
  142. .cover-image {
  143. display: block;
  144. background-color: silver;
  145. width: 150px;
  146. height: 150px;
  147. }
  148. .details-title {
  149. display: inline-block;
  150. height: 30px;
  151. width: 30vw;
  152. background-color: silver;
  153. }
  154. .details-subtitle {
  155. height: 15px;
  156. width: 15vw;
  157. background-color: silver;
  158. }
  159. .details-artist {
  160. height: 20px;
  161. width: 15vw;
  162. background-color: silver;
  163. margin-top: 5px;
  164. }
  165. .action-button {
  166. opacity: 0.4;
  167. cursor: not-allowed;
  168. }
  169. .details-description {
  170. background-color: silver;
  171. width: 50%;
  172. height: 16.8vw;
  173. }
  174. }
  175. .sidebar-collapsed #song-details {
  176. .close-icon {
  177. transform: translateX(calc(100vw - 120px));
  178. }
  179. .details-title {
  180. max-width: calc(70vw - 250px);
  181. }
  182. }
  183. .theme-hc {
  184. .action-buttons .action-button {
  185. background-color: rgba($theme-hc-accent-color, 0.8) !important;
  186. &:hover {
  187. background: $theme-hc-accent-color !important;
  188. }
  189. &.download-button {
  190. background: rgba($theme-hc-accent-color, 0.3) !important;
  191. border: 3px solid rgba($theme-hc-accent-color, 0.8) !important;
  192. span:first-child {
  193. background: rgba($theme-hc-accent-color, 0.8) !important;
  194. }
  195. &:hover {
  196. border: 3px solid $theme-hc-accent-color !important;
  197. span:first-child {
  198. background: $theme-hc-accent-color !important;
  199. }
  200. }
  201. }
  202. }
  203. }
  204. @keyframes song-details-fade-in {
  205. from {
  206. opacity: 0;
  207. }
  208. }
  209. @keyframes song-details-loading-mask {
  210. to {
  211. opacity: 0.2;
  212. }
  213. }