index.styl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. .data-table
  2. background: var(--color-white)
  3. border-radius: var(--border-radius)
  4. box-shadow: var(--shadow-sm)
  5. overflow: hidden
  6. .theme-dark &
  7. background: var(--color-dark)
  8. color: var(--color-light)
  9. .data-table__toolbar
  10. padding: var(--spacing-lg)
  11. border-bottom: 1px solid var(--border-color)
  12. display: flex
  13. justify-content: space-between
  14. align-items: center
  15. gap: var(--spacing-md)
  16. .data-table__search
  17. flex: 1
  18. max-width: 300px
  19. .data-table__search-input
  20. width: 100%
  21. padding: var(--spacing-sm) var(--spacing-md)
  22. border: 1px solid var(--border-color)
  23. border-radius: var(--border-radius)
  24. font-family: var(--font-family)
  25. .theme-dark &
  26. background: var(--color-dark-50)
  27. color: var(--color-light)
  28. border-color: var(--color-light-10)
  29. .data-table__actions
  30. display: flex
  31. gap: var(--spacing-sm)
  32. .data-table__loading
  33. padding: var(--spacing-2xl)
  34. text-align: center
  35. color: var(--color-secondary)
  36. .data-table__spinner
  37. width: 40px
  38. height: 40px
  39. border: 3px solid var(--color-primary-10)
  40. border-top: 3px solid var(--color-primary)
  41. border-radius: 50%
  42. animation: data-table-spin 1s linear infinite
  43. margin: 0 auto var(--spacing-md)
  44. @keyframes data-table-spin
  45. 0%
  46. transform: rotate(0deg)
  47. 100%
  48. transform: rotate(360deg)
  49. .data-table__container
  50. overflow-x: auto
  51. .data-table__table
  52. width: 100%
  53. border-collapse: collapse
  54. .data-table__header
  55. padding: var(--spacing-md)
  56. text-align: left
  57. font-weight: var(--font-weight-semibold)
  58. border-bottom: 1px solid var(--border-color)
  59. background: var(--color-light-10)
  60. .theme-dark &
  61. background: var(--color-dark-50)
  62. .data-table__sortable
  63. cursor: pointer
  64. user-select: none
  65. &:hover
  66. background: var(--color-primary-10)
  67. .data-table__sort-indicator
  68. margin-left: var(--spacing-xs)
  69. color: var(--color-primary)
  70. .data-table__checkbox-column
  71. width: 40px
  72. text-align: center
  73. .data-table__row
  74. border-bottom: 1px solid var(--border-color)
  75. &:hover
  76. background: var(--color-primary-10)
  77. .data-table__cell
  78. padding: var(--spacing-md)
  79. border-bottom: 1px solid var(--border-color)
  80. .data-table__actions-cell
  81. padding: var(--spacing-md)
  82. border-bottom: 1px solid var(--border-color)
  83. .data-table__actions
  84. display: flex
  85. gap: var(--spacing-xs)
  86. justify-content: flex-end
  87. .data-table__empty
  88. padding: var(--spacing-2xl)
  89. text-align: center
  90. color: var(--color-secondary)
  91. .data-table__pagination
  92. padding: var(--spacing-lg)
  93. display: flex
  94. justify-content: center
  95. align-items: center
  96. gap: var(--spacing-md)
  97. border-top: 1px solid var(--border-color)
  98. .data-table__pagination-btn
  99. padding: var(--spacing-sm) var(--spacing-md)
  100. border: 1px solid var(--border-color)
  101. border-radius: var(--border-radius)
  102. background: var(--color-white)
  103. cursor: pointer
  104. transition: var(--transition-fast)
  105. &:hover:not(:disabled)
  106. background: var(--color-primary-10)
  107. border-color: var(--color-primary)
  108. &:disabled
  109. opacity: 0.5
  110. cursor: not-allowed
  111. .theme-dark &
  112. background: var(--color-dark)
  113. color: var(--color-light)
  114. .data-table__pagination-info
  115. color: var(--color-secondary)
  116. // Адаптивность
  117. @media (max-width: 768px)
  118. .data-table__toolbar
  119. flex-direction: column
  120. align-items: stretch
  121. .data-table__search
  122. max-width: none
  123. .data-table__actions
  124. justify-content: flex-start
  125. .data-table__cell
  126. padding: var(--spacing-sm)
  127. font-size: var(--font-size-sm)