index.styl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. @css {
  2. .admin {
  3. @apply min-h-screen flex flex-col bg-gray-50 dark:bg-gray-900;
  4. }
  5. /* Header */
  6. .admin__header {
  7. @apply bg-white dark:bg-gray-800 shadow-sm z-40 sticky top-0;
  8. }
  9. .admin__header-content {
  10. @apply px-4 sm:px-6 py-3 sm:py-4;
  11. }
  12. .admin__header-top {
  13. @apply flex items-center justify-between;
  14. }
  15. .admin__header-title {
  16. @apply text-lg sm:text-xl font-bold text-gray-800 dark:text-white;
  17. }
  18. .admin__domain-info {
  19. @apply text-xs sm:text-sm text-gray-600 dark:text-gray-400 mt-2;
  20. }
  21. .admin__mobile-menu-btn {
  22. @apply lg:hidden p-2 rounded-lg bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors duration-200;
  23. }
  24. /* Body layout */
  25. .admin__body {
  26. @apply flex flex-1 flex-col lg:flex-row;
  27. }
  28. /* Sidebar - positioned above header in mobile */
  29. .admin__sidebar {
  30. @apply w-full lg:w-64 bg-white dark:bg-gray-800 shadow-2xl lg:shadow-none z-50 fixed lg:static inset-0 transform transition-transform duration-300 ease-in-out;
  31. }
  32. .admin__sidebar--hidden {
  33. @apply -translate-x-full lg:translate-x-0;
  34. }
  35. .admin__sidebar--visible {
  36. @apply translate-x-0;
  37. }
  38. .admin__sidebar-overlay {
  39. @apply lg:hidden fixed inset-0 bg-black bg-opacity-50 z-40;
  40. }
  41. .admin__sidebar-header {
  42. @apply lg:hidden flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800;
  43. }
  44. .admin__sidebar-title {
  45. @apply text-lg font-medium text-gray-800 dark:text-white;
  46. }
  47. .admin__sidebar-close {
  48. @apply lg:hidden p-2 rounded-lg bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-600 transition-colors duration-200;
  49. }
  50. .admin__nav {
  51. @apply p-4 space-y-2 h-full overflow-y-auto;
  52. }
  53. .admin__nav-item {
  54. @apply flex items-center space-x-3 px-3 sm:px-4 py-2 sm:py-3 rounded-lg transition-colors duration-200 text-sm sm:text-base;
  55. }
  56. .admin__nav-item--active {
  57. @apply bg-primary-100 dark:bg-primary-900 text-primary-700 dark:text-primary-300;
  58. }
  59. .admin__nav-item--inactive {
  60. @apply text-gray-600 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-white;
  61. }
  62. .admin__nav-item-content {
  63. @apply flex items-center space-x-3;
  64. }
  65. .admin__nav-icon {
  66. @apply w-4 h-4 sm:w-5 sm:h-5 flex-shrink-0;
  67. }
  68. .admin__nav-text {
  69. @apply font-medium truncate;
  70. }
  71. /* Main content */
  72. .admin__main {
  73. @apply flex-1 p-4 sm:p-6 lg:p-8 overflow-auto min-h-0;
  74. }
  75. }
  76. /* Медиа-запросы для планшетов */
  77. @media (max-width: 1024px) {
  78. .admin__sidebar {
  79. @apply w-80;
  80. }
  81. }
  82. /* Медиа-запросы для очень маленьких экранов */
  83. @media (max-width: 360px) {
  84. .admin__header-content {
  85. @apply px-3 py-2;
  86. }
  87. .admin__header-title {
  88. @apply text-base;
  89. }
  90. .admin__nav {
  91. @apply p-3;
  92. }
  93. .admin__nav-item {
  94. @apply px-2 py-2 text-xs;
  95. }
  96. .admin__main {
  97. @apply p-3;
  98. }
  99. }