Sidebar.scss 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. @mixin sidebar-toggle() {
  2. @include transition(background-color $menu-transition-duration ease);
  3. position: absolute;
  4. top: $sidebar-toggle-spacing;
  5. // Remove once we drop support for Safari 13.
  6. // stylelint-disable-next-line property-disallowed-list
  7. left: $sidebar-toggle-spacing;
  8. inset-inline-start: $sidebar-toggle-spacing;
  9. color: $color-white;
  10. width: $sidebar-toggle-size;
  11. height: $sidebar-toggle-size;
  12. box-sizing: border-box;
  13. background: transparent;
  14. place-items: center;
  15. padding: 0;
  16. border-radius: 50%;
  17. border: 1px solid transparent;
  18. svg {
  19. width: 15px;
  20. height: 16px;
  21. }
  22. @include media-breakpoint-up(sm) {
  23. position: static;
  24. inset-inline-end: $sidebar-toggle-spacing;
  25. // Remove once we drop support for Safari 13.
  26. // stylelint-disable-next-line property-disallowed-list
  27. left: initial;
  28. inset-inline-start: initial;
  29. }
  30. .has-messages & {
  31. top: $sidebar-toggle-spacing + 70px;
  32. @include media-breakpoint-up(sm) {
  33. top: $sidebar-toggle-spacing;
  34. }
  35. }
  36. }
  37. .sidebar,
  38. .sidebar-loading {
  39. @apply w-fixed w-flex w-flex-col w-h-full w-bg-primary w-z-[300] w-transition-sidebar;
  40. width: $menu-width;
  41. // Remove once we drop support for Safari 13.
  42. // stylelint-disable-next-line property-disallowed-list
  43. left: 0;
  44. inset-inline-start: 0;
  45. @media (forced-colors: $media-forced-colours) {
  46. border-inline-end: 1px solid transparent;
  47. }
  48. .icon--menuitem {
  49. width: 1rem;
  50. height: 1rem;
  51. min-width: 1rem;
  52. }
  53. &--slim {
  54. width: $menu-width-slim;
  55. }
  56. // The sidebar can move completely off-screen in mobile mode for extra room
  57. &--hidden {
  58. // Remove once we drop support for Safari 13.
  59. // stylelint-disable-next-line property-disallowed-list
  60. left: -$menu-width;
  61. inset-inline-start: -$menu-width;
  62. }
  63. // When sidebar is completely closed and animations have finished
  64. &--closed {
  65. display: none;
  66. }
  67. &__inner {
  68. // On medium, make it possible for the nav links to scroll.
  69. @apply w-h-full w-bg-primary w-flex w-flex-col w-flex-nowrap;
  70. }
  71. &__collapse-toggle {
  72. @include sidebar-toggle;
  73. // All other styling is done with utility classes on this element
  74. }
  75. // When in mobile mode, hide the collapse-toggle and show the nav-toggle (which is defined in the .sidebar-nav-toggle class below)
  76. &--mobile &__collapse-toggle {
  77. display: none;
  78. }
  79. }
  80. .sidebar-collapsed .sidebar-loading {
  81. width: $menu-width-slim;
  82. }
  83. // This is a separate component as it needs to display in the header
  84. .sidebar-nav-toggle {
  85. @include sidebar-toggle;
  86. display: none; // Nav toggle is for mobile only
  87. z-index: 305;
  88. &--mobile {
  89. @apply w-bg-primary w-top-0 w-left-0 w-h-[50px] w-w-[50px] w-rounded-none hover:w-bg-primary-200;
  90. display: grid;
  91. }
  92. &--open {
  93. @apply w-fixed hover:w-bg-primary-200 hover:w-text-white;
  94. }
  95. }
  96. // stylelint-disable no-invalid-position-at-import-rule
  97. @import 'SidebarPanel';
  98. @import 'menu/MenuItem';
  99. @import 'menu/SubMenuItem';
  100. @import 'modules/MainMenu';
  101. @import 'modules/WagtailBranding';