index.styl 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. // Admin panel responsive styles
  2. .admin
  3. display: flex
  4. min-height: 100vh
  5. background-color: #f9fafb
  6. position: relative
  7. &.dark
  8. background-color: #111827
  9. // Mobile toggle button
  10. .admin__mobile-toggle
  11. display: none
  12. position: fixed
  13. top: 1rem
  14. left: 1rem
  15. z-index: 1000
  16. padding: 0.5rem
  17. background-color: #ef4444
  18. border-radius: 0.375rem
  19. cursor: pointer
  20. border: none
  21. @media (max-width: 768px)
  22. display: block
  23. .admin__burger
  24. width: 1.5rem
  25. height: 1.125rem
  26. position: relative
  27. transition: all 0.3s ease-in-out
  28. span
  29. display: block
  30. height: 2px
  31. width: 100%
  32. background-color: #ffffff
  33. border-radius: 1px
  34. transition: all 0.3s ease-in-out
  35. transform-origin: center
  36. &:nth-child(2)
  37. margin: 0.25rem 0
  38. .admin__burger--active
  39. span
  40. &:nth-child(1)
  41. transform: rotate(45deg) translate(6px, 6px)
  42. &:nth-child(2)
  43. opacity: 0
  44. &:nth-child(3)
  45. transform: rotate(-45deg) translate(6px, -6px)
  46. // Sidebar styles
  47. .admin__sidebar
  48. width: 16rem
  49. background-color: #ffffff
  50. box-shadow: 0 0 20px rgba(0, 0, 0, 0.1)
  51. transition: all 0.3s ease-in-out
  52. display: flex
  53. flex-direction: column
  54. position: fixed
  55. left: 0
  56. top: 0
  57. height: 100vh
  58. z-index: 100
  59. overflow-y: auto
  60. &.dark
  61. background-color: #1f2937
  62. @media (max-width: 768px)
  63. transform: translateX(-100%)
  64. &.admin__sidebar--mobile-open
  65. transform: translateX(0)
  66. &.admin__sidebar--collapsed
  67. width: 5rem
  68. .admin__sidebar-header
  69. padding: 1.5rem 1rem
  70. border-bottom: 1px solid #e5e7eb
  71. display: flex
  72. align-items: center
  73. justify-content: space-between
  74. &.dark
  75. border-bottom-color: #374151
  76. .admin__brand
  77. display: flex
  78. align-items: center
  79. gap: 0.75rem
  80. .admin__logo
  81. width: 2rem
  82. height: 2rem
  83. object-fit: contain
  84. .admin__company-name
  85. font-size: 1.125rem
  86. font-weight: bold
  87. color: #111827
  88. white-space: nowrap
  89. overflow: hidden
  90. text-overflow: ellipsis
  91. &.dark
  92. color: #ffffff
  93. .admin__sidebar-toggle
  94. padding: 0.5rem
  95. border-radius: 0.375rem
  96. cursor: pointer
  97. border: none
  98. background: none
  99. color: #6b7280
  100. transition: all 0.2s ease-in-out
  101. &:hover
  102. background-color: #f3f4f6
  103. color: #111827
  104. &.dark
  105. color: #9ca3af
  106. &:hover
  107. background-color: #374151
  108. color: #ffffff
  109. .admin__toggle-icon
  110. width: 1rem
  111. height: 1rem
  112. transition: transform 0.3s ease-in-out
  113. &.admin__toggle-icon--collapsed
  114. transform: rotate(180deg)
  115. // Navigation styles
  116. .admin__nav
  117. flex: 1
  118. padding: 1rem 0
  119. display: flex
  120. flex-direction: column
  121. gap: 1.5rem
  122. .admin__nav-section
  123. padding: 0 1rem
  124. .admin__nav-section-title
  125. font-size: 0.75rem
  126. font-weight: 600
  127. color: #6b7280
  128. text-transform: uppercase
  129. letter-spacing: 0.05em
  130. margin-bottom: 0.75rem
  131. &.dark
  132. color: #9ca3af
  133. .admin__nav-list
  134. list-style: none
  135. margin: 0
  136. padding: 0
  137. display: flex
  138. flex-direction: column
  139. gap: 0.25rem
  140. .admin__nav-item
  141. margin: 0
  142. .admin__nav-link
  143. display: flex
  144. align-items: center
  145. gap: 0.75rem
  146. padding: 0.75rem 1rem
  147. border-radius: 0.5rem
  148. text-decoration: none
  149. transition: all 0.2s ease-in-out
  150. color: #374151
  151. position: relative
  152. &:hover
  153. background-color: #f3f4f6
  154. color: #111827
  155. &.dark
  156. color: #d1d5db
  157. &:hover
  158. background-color: #374151
  159. color: #ffffff
  160. &.admin__nav-item--active
  161. background-color: #fef2f2
  162. color: #dc2626
  163. font-weight: 500
  164. &.dark
  165. background-color: #7f1d1d
  166. color: #fca5a5
  167. .admin__nav-icon
  168. width: 1.25rem
  169. height: 1.25rem
  170. flex-shrink: 0
  171. .admin__nav-text
  172. white-space: nowrap
  173. overflow: hidden
  174. text-overflow: ellipsis
  175. flex: 1
  176. .admin__sidebar--collapsed .admin__nav-text
  177. display: none
  178. .admin__nav-badge
  179. background-color: #ef4444
  180. color: #ffffff
  181. font-size: 0.75rem
  182. padding: 0.125rem 0.5rem
  183. border-radius: 9999px
  184. font-weight: 500
  185. // Sidebar footer
  186. .admin__sidebar-footer
  187. padding: 1rem
  188. border-top: 1px solid #e5e7eb
  189. margin-top: auto
  190. &.dark
  191. border-top-color: #374151
  192. .admin__user-info
  193. display: flex
  194. align-items: center
  195. gap: 0.75rem
  196. margin-bottom: 1rem
  197. .admin__user-avatar
  198. width: 2.5rem
  199. height: 2.5rem
  200. border-radius: 50%
  201. background-color: #ef4444
  202. color: #ffffff
  203. display: flex
  204. align-items: center
  205. justify-content: center
  206. font-weight: 600
  207. font-size: 0.875rem
  208. .admin__user-details
  209. display: flex
  210. flex-direction: column
  211. flex: 1
  212. min-width: 0
  213. .admin__user-name
  214. font-weight: 600
  215. color: #111827
  216. font-size: 0.875rem
  217. white-space: nowrap
  218. overflow: hidden
  219. text-overflow: ellipsis
  220. &.dark
  221. color: #ffffff
  222. .admin__user-role
  223. font-size: 0.75rem
  224. color: #6b7280
  225. &.dark
  226. color: #9ca3af
  227. .admin__logout-btn
  228. width: 100%
  229. display: flex
  230. align-items: center
  231. gap: 0.75rem
  232. padding: 0.75rem 1rem
  233. border-radius: 0.5rem
  234. background: none
  235. border: 1px solid #e5e7eb
  236. color: #374151
  237. cursor: pointer
  238. transition: all 0.2s ease-in-out
  239. font-size: 0.875rem
  240. &:hover
  241. background-color: #f9fafb
  242. border-color: #d1d5db
  243. &.dark
  244. border-color: #4b5563
  245. color: #d1d5db
  246. &:hover
  247. background-color: #374151
  248. border-color: #6b7280
  249. // Main content area
  250. .admin__main
  251. flex: 1
  252. margin-left: 16rem
  253. transition: all 0.3s ease-in-out
  254. min-height: 100vh
  255. display: flex
  256. flex-direction: column
  257. &.admin__main--expanded
  258. margin-left: 5rem
  259. @media (max-width: 768px)
  260. margin-left: 0
  261. &.admin__main--mobile-open
  262. transform: translateX(16rem)
  263. .admin__topbar
  264. background-color: #ffffff
  265. border-bottom: 1px solid #e5e7eb
  266. padding: 1rem 1.5rem
  267. display: flex
  268. align-items: center
  269. justify-content: space-between
  270. &.dark
  271. background-color: #1f2937
  272. border-bottom-color: #374151
  273. .admin__breadcrumbs
  274. display: flex
  275. align-items: center
  276. gap: 0.5rem
  277. font-size: 0.875rem
  278. .admin__breadcrumb-link
  279. color: #6b7280
  280. text-decoration: none
  281. transition: color 0.2s ease-in-out
  282. &:hover
  283. color: #ef4444
  284. &.dark
  285. color: #9ca3af
  286. .admin__breadcrumb-current
  287. color: #111827
  288. font-weight: 500
  289. &.dark
  290. color: #ffffff
  291. .admin__breadcrumb-separator
  292. color: #9ca3af
  293. margin-left: 0.5rem
  294. .admin__actions
  295. display: flex
  296. align-items: center
  297. gap: 0.5rem
  298. .admin__action-btn
  299. padding: 0.5rem
  300. border-radius: 0.375rem
  301. background: none
  302. border: none
  303. color: #6b7280
  304. cursor: pointer
  305. transition: all 0.2s ease-in-out
  306. position: relative
  307. &:hover
  308. background-color: #f3f4f6
  309. color: #111827
  310. &.dark
  311. color: #9ca3af
  312. &:hover
  313. background-color: #374151
  314. color: #ffffff
  315. // Notifications
  316. .admin__notifications
  317. position: relative
  318. .admin__notifications-btn
  319. position: relative
  320. .admin__notification-badge
  321. position: absolute
  322. top: -0.25rem
  323. right: -0.25rem
  324. background-color: #ef4444
  325. color: #ffffff
  326. font-size: 0.75rem
  327. padding: 0.125rem 0.375rem
  328. border-radius: 9999px
  329. min-width: 1.25rem
  330. text-align: center
  331. .admin__notifications-dropdown
  332. position: absolute
  333. top: 100%
  334. right: 0
  335. width: 20rem
  336. background-color: #ffffff
  337. border: 1px solid #e5e7eb
  338. border-radius: 0.5rem
  339. box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1)
  340. z-index: 50
  341. margin-top: 0.5rem
  342. &.dark
  343. background-color: #1f2937
  344. border-color: #374151
  345. .admin__notifications-header
  346. padding: 1rem
  347. border-bottom: 1px solid #e5e7eb
  348. display: flex
  349. align-items: center
  350. justify-content: space-between
  351. &.dark
  352. border-bottom-color: #374151
  353. .admin__notifications-count
  354. font-size: 0.875rem
  355. color: #ef4444
  356. font-weight: 500
  357. .admin__notifications-list
  358. max-height: 20rem
  359. overflow-y: auto
  360. .admin__notification-item
  361. padding: 1rem
  362. border-bottom: 1px solid #f3f4f6
  363. display: flex
  364. align-items: flex-start
  365. gap: 0.75rem
  366. transition: background-color 0.2s ease-in-out
  367. &:hover
  368. background-color: #f9fafb
  369. &.dark
  370. border-bottom-color: #374151
  371. &:hover
  372. background-color: #374151
  373. &.admin__notification-item--unread
  374. background-color: #fef2f2
  375. &.dark
  376. background-color: #7f1d1d
  377. .admin__notification-icon
  378. width: 1.5rem
  379. height: 1.5rem
  380. flex-shrink: 0
  381. color: #ef4444
  382. .admin__notification-content
  383. flex: 1
  384. min-width: 0
  385. .admin__notification-title
  386. font-size: 0.875rem
  387. color: #111827
  388. margin: 0 0 0.25rem 0
  389. line-height: 1.4
  390. &.dark
  391. color: #ffffff
  392. .admin__notification-time
  393. font-size: 0.75rem
  394. color: #6b7280
  395. .admin__notification-action
  396. padding: 0.25rem
  397. background: none
  398. border: none
  399. color: #9ca3af
  400. cursor: pointer
  401. border-radius: 0.25rem
  402. font-size: 1.125rem
  403. line-height: 1
  404. &:hover
  405. color: #6b7280
  406. background-color: #f3f4f6
  407. &.dark
  408. &:hover
  409. background-color: #4b5563
  410. color: #d1d5db
  411. // Content area
  412. .admin__content
  413. flex: 1
  414. padding: 1.5rem
  415. overflow-y: auto
  416. // Overlay for mobile menu
  417. .admin__overlay
  418. position: fixed
  419. inset: 0
  420. background-color: rgba(0, 0, 0, 0.5)
  421. z-index: 90
  422. display: none
  423. @media (max-width: 768px)
  424. display: block
  425. // Responsive adjustments
  426. @media (max-width: 1024px)
  427. .admin__sidebar
  428. width: 14rem
  429. .admin__main
  430. margin-left: 14rem
  431. .admin__main--expanded
  432. margin-left: 4rem
  433. .admin__sidebar--collapsed
  434. width: 4rem
  435. @media (max-width: 768px)
  436. .admin__sidebar
  437. width: 16rem
  438. .admin__main
  439. margin-left: 0
  440. .admin__main--mobile-open
  441. transform: translateX(16rem)
  442. .admin__topbar
  443. padding: 1rem
  444. .admin__content
  445. padding: 1rem
  446. .admin__breadcrumbs
  447. font-size: 0.8rem
  448. .admin__notifications-dropdown
  449. width: 18rem
  450. right: -1rem
  451. @media (max-width: 480px)
  452. .admin__mobile-toggle
  453. top: 0.5rem
  454. left: 0.5rem
  455. .admin__topbar
  456. flex-direction: column
  457. gap: 1rem
  458. align-items: flex-start
  459. .admin__actions
  460. width: 100%
  461. justify-content: flex-end
  462. .admin__notifications-dropdown
  463. width: 16rem
  464. right: -2rem