You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

116 lines
3.5 KiB

  1. @use '../atoms/variables' as *;
  2. @use '../atoms/mixins' as *;
  3. // ─── Wrapper ─────────────────────────────────────────────────────────────────
  4. .week-nav {
  5. display: flex;
  6. align-items: center;
  7. gap: $space-1;
  8. background: var(--header-overlay);
  9. border-radius: $radius-pill;
  10. padding: $space-1 $space-2;
  11. backdrop-filter: blur(6px);
  12. -webkit-backdrop-filter: blur(6px);
  13. @include tablet {
  14. width: 100%;
  15. justify-content: center;
  16. }
  17. }
  18. // ─── Pfeile ──────────────────────────────────────────────────────────────────
  19. .week-nav__arrow {
  20. @include icon-btn;
  21. color: var(--header-text);
  22. text-decoration: none;
  23. &:hover { background: var(--header-overlay); }
  24. svg { width: 8px; height: 14px; }
  25. }
  26. // ─── Tage-Container (Slide-Animation) ────────────────────────────────────────
  27. .week-nav__days {
  28. display: flex;
  29. align-items: center;
  30. gap: $space-1;
  31. overflow: hidden;
  32. position: relative;
  33. &.slide-out-left { animation: slideOutLeft 0.18s ease forwards; }
  34. &.slide-out-right { animation: slideOutRight 0.18s ease forwards; }
  35. &.slide-in-right { animation: slideInRight 0.18s ease forwards; }
  36. &.slide-in-left { animation: slideInLeft 0.18s ease forwards; }
  37. }
  38. @keyframes slideOutLeft { to { opacity: 0; transform: translateX(-24px); } }
  39. @keyframes slideOutRight { to { opacity: 0; transform: translateX(24px); } }
  40. @keyframes slideInRight { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: translateX(0); } }
  41. @keyframes slideInLeft { from { opacity: 0; transform: translateX(-24px); } to { opacity: 1; transform: translateX(0); } }
  42. // ─── Einzelner Tag ───────────────────────────────────────────────────────────
  43. .week-nav__day {
  44. display: flex;
  45. flex-direction: column;
  46. align-items: center;
  47. padding: $space-2 $space-3;
  48. border-radius: $radius-md;
  49. cursor: pointer;
  50. text-decoration: none;
  51. width: 64px;
  52. flex-shrink: 0;
  53. flex-grow: 0;
  54. transition: background $transition-fast;
  55. user-select: none;
  56. @include tablet {
  57. width: auto;
  58. flex: 1;
  59. min-width: 0;
  60. }
  61. &:hover:not(.week-nav__day--active) {
  62. background: var(--header-overlay);
  63. }
  64. &--active {
  65. background: $color-white;
  66. .week-nav__day-name,
  67. .week-nav__day-date { color: $color-text-dark; }
  68. }
  69. &--today:not(&--active) {
  70. .week-nav__day-name {
  71. text-decoration: underline;
  72. text-underline-offset: 3px;
  73. }
  74. }
  75. }
  76. .week-nav__day-name {
  77. font-size: $font-size-sm;
  78. font-weight: $font-weight-bold;
  79. color: var(--header-text);
  80. line-height: 1.2;
  81. }
  82. .week-nav__day-date {
  83. font-size: $font-size-xs;
  84. color: var(--header-text-muted);
  85. line-height: 1.3;
  86. }
  87. // ─── Kalender-Icon ───────────────────────────────────────────────────────────
  88. .week-nav__cal {
  89. @include icon-btn(34px, $radius-md);
  90. background: var(--header-overlay);
  91. color: var(--header-text);
  92. margin-left: $space-1;
  93. svg { width: 16px; height: 16px; }
  94. &:hover,
  95. &--active { background: var(--header-overlay); }
  96. }