index.styl 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. .media-page
  2. max-width: 1200px
  3. margin: 0 auto
  4. .media-toolbar
  5. display: flex
  6. gap: var(--spacing-xl)
  7. margin-bottom: var(--spacing-2xl)
  8. align-items: flex-start
  9. .media-upload-area
  10. flex: 1
  11. .media-filters
  12. display: flex
  13. gap: var(--spacing-md)
  14. align-items: center
  15. .filter-select,
  16. .search-input
  17. padding: var(--spacing-sm) var(--spacing-md)
  18. border: 1px solid var(--border-color)
  19. border-radius: var(--border-radius)
  20. .theme-dark &
  21. background: var(--color-dark-50)
  22. color: var(--color-light)
  23. border-color: var(--color-light-10)
  24. .search-input
  25. min-width: 200px
  26. .upload-progress
  27. background: var(--color-light-10)
  28. padding: var(--spacing-lg)
  29. border-radius: var(--border-radius)
  30. margin-bottom: var(--spacing-xl)
  31. text-align: center
  32. .theme-dark &
  33. background: var(--color-dark-50)
  34. .progress-bar
  35. height: 8px
  36. background: var(--color-light-50)
  37. border-radius: 4px
  38. overflow: hidden
  39. margin-bottom: var(--spacing-sm)
  40. .theme-dark &
  41. background: var(--color-dark-20)
  42. .progress-fill
  43. height: 100%
  44. background: var(--color-primary)
  45. transition: width 0.3s ease
  46. border-radius: 4px
  47. .media-grid
  48. display: grid
  49. grid-template-columns: repeat(auto-fill, minmax(200px, 1fr))
  50. gap: var(--spacing-lg)
  51. margin-bottom: var(--spacing-2xl)
  52. .media-item
  53. border: 2px solid transparent
  54. border-radius: var(--border-radius)
  55. padding: var(--spacing-md)
  56. background: var(--color-white)
  57. cursor: pointer
  58. transition: var(--transition-fast)
  59. position: relative
  60. &:hover
  61. border-color: var(--color-primary-20)
  62. transform: translateY(-2px)
  63. box-shadow: var(--shadow-md)
  64. .theme-dark &
  65. background: var(--color-dark)
  66. .media-item--selected &
  67. border-color: var(--color-primary)
  68. .media-item__preview
  69. height: 120px
  70. display: flex
  71. align-items: center
  72. justify-content: center
  73. background: var(--color-light-10)
  74. border-radius: var(--border-radius-sm)
  75. margin-bottom: var(--spacing-md)
  76. overflow: hidden
  77. .theme-dark &
  78. background: var(--color-dark-50)
  79. .media-item__image
  80. width: 100%
  81. height: 100%
  82. object-fit: cover
  83. .media-item__icon
  84. font-size: 2rem
  85. opacity: 0.7
  86. .media-item__info
  87. text-align: center
  88. .media-item__name
  89. font-weight: var(--font-weight-medium)
  90. margin-bottom: var(--spacing-xs)
  91. word-break: break-word
  92. .media-item__meta
  93. display: flex
  94. justify-content: space-between
  95. font-size: var(--font-size-sm)
  96. color: var(--color-secondary)
  97. .media-item__actions
  98. position: absolute
  99. top: var(--spacing-sm)
  100. right: var(--spacing-sm)
  101. opacity: 0
  102. transition: var(--transition-fast)
  103. .media-item:hover &
  104. opacity: 1
  105. .media-item__delete
  106. width: 24px
  107. height: 24px
  108. border: none
  109. background: var(--color-danger)
  110. color: var(--color-white)
  111. border-radius: 50%
  112. cursor: pointer
  113. display: flex
  114. align-items: center
  115. justify-content: center
  116. font-size: var(--font-size-lg)
  117. .media-load-more
  118. text-align: center
  119. margin-bottom: var(--spacing-2xl)
  120. .media-selection
  121. position: fixed
  122. bottom: var(--spacing-xl)
  123. left: 50%
  124. transform: translateX(-50%)
  125. background: var(--color-white)
  126. padding: var(--spacing-lg)
  127. border-radius: var(--border-radius)
  128. box-shadow: var(--shadow-lg)
  129. display: flex
  130. align-items: center
  131. gap: var(--spacing-lg)
  132. z-index: var(--z-sticky)
  133. .theme-dark &
  134. background: var(--color-dark)
  135. color: var(--color-light)
  136. @media (max-width: 768px)
  137. .media-toolbar
  138. flex-direction: column
  139. gap: var(--spacing-md)
  140. .media-filters
  141. width: 100%
  142. justify-content: space-between
  143. .search-input
  144. flex: 1
  145. .media-grid
  146. grid-template-columns: repeat(auto-fill, minmax(150px, 1fr))
  147. gap: var(--spacing-md)