25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 

177 satır
5.0 KiB

  1. @use '../atoms/variables' as *;
  2. @use '../atoms/mixins' as *;
  3. // ─── Entry List Container ──────────────────────────────────────────────────
  4. .entry-list {
  5. @include card;
  6. overflow: hidden;
  7. transition: opacity 0.18s ease;
  8. &--fading { opacity: 0; }
  9. }
  10. // ─── Empty State ──────────────────────────────────────────────────────────
  11. .empty-state {
  12. @include card;
  13. padding: $space-6 $space-8;
  14. }
  15. .empty-state__title {
  16. font-size: $font-size-base;
  17. font-weight: $font-weight-bold;
  18. color: $color-text-dark;
  19. margin: 0 0 $space-2;
  20. }
  21. // ─── Footer mit Gesamtdauer ───────────────────────────────────────────────
  22. .entry-list__footer {
  23. display: flex;
  24. justify-content: flex-end;
  25. padding: $space-3 calc(#{$space-8} + #{$icon-btn-size} + #{$icon-btn-size} + #{$space-2} + #{$space-2});
  26. border-top: 1px solid $color-border;
  27. @include tablet { padding: $space-3 $space-4; }
  28. }
  29. .entry-list__total {
  30. font-size: $font-size-base;
  31. font-weight: $font-weight-bold;
  32. color: $color-text-dark;
  33. background: $color-card;
  34. border-radius: $radius-pill;
  35. padding: $space-1 $space-4;
  36. }
  37. // ─── Entry Row ────────────────────────────────────────────────────────────
  38. .entry-row {
  39. border-bottom: 1px solid rgba($color-border, 0.5);
  40. transition: opacity 0.28s ease, transform 0.28s ease, max-height 0.28s ease;
  41. &:last-child { border-bottom: none; }
  42. &--new {
  43. opacity: 0;
  44. transform: translateY(-6px);
  45. }
  46. &--removing {
  47. opacity: 0;
  48. transform: translateX(12px);
  49. max-height: 0;
  50. overflow: hidden;
  51. padding: 0;
  52. margin: 0;
  53. }
  54. }
  55. // ─── Anzeige-Modus ────────────────────────────────────────────────────────
  56. .entry-row__display {
  57. display: flex;
  58. align-items: center;
  59. justify-content: space-between;
  60. gap: $space-4;
  61. padding: $space-4 $space-8;
  62. &:hover {
  63. background: rgba(var(--color-primary-rgb), 0.05);
  64. .entry-row__btn { opacity: 1; }
  65. }
  66. @include tablet {
  67. padding: $space-4;
  68. }
  69. }
  70. .entry-row__info {
  71. flex: 1;
  72. min-width: 0;
  73. }
  74. .entry-row__title {
  75. font-size: $font-size-base;
  76. font-weight: $font-weight-bold;
  77. color: $color-text-dark;
  78. @include text-truncate;
  79. }
  80. .entry-row__note {
  81. font-size: $font-size-sm;
  82. color: $color-text-muted;
  83. margin-top: 2px;
  84. @include text-truncate;
  85. }
  86. .entry-row__actions {
  87. display: flex;
  88. align-items: center;
  89. gap: $space-2;
  90. flex-shrink: 0;
  91. }
  92. .entry-row__badge {
  93. font-size: $font-size-sm;
  94. font-weight: $font-weight-bold;
  95. color: $color-text-dark;
  96. background: $color-card;
  97. border-radius: $radius-pill;
  98. padding: $space-1 $space-3;
  99. min-width: 48px;
  100. text-align: center;
  101. font-variant-numeric: tabular-nums;
  102. }
  103. .entry-row__btn {
  104. @include icon-btn;
  105. opacity: 0;
  106. color: $color-text-muted;
  107. svg { width: $icon-svg-size; height: $icon-svg-size; }
  108. &--edit:hover { background: rgba(var(--color-primary-rgb), 0.1); color: var(--color-primary); }
  109. &--delete:hover{ background: rgba($color-error, 0.1); color: $color-error; }
  110. @media (hover: none) { opacity: 1; }
  111. @include tablet { opacity: 1; }
  112. }
  113. // ─── Lock-Indikator (invoiced) ────────────────────────────────────────────
  114. .entry-row__lock-indicator {
  115. display: flex;
  116. align-items: center;
  117. justify-content: center;
  118. width: calc(#{$icon-btn-size} + #{$space-2} + #{$icon-btn-size});
  119. flex-shrink: 0;
  120. color: $color-text-dark;
  121. svg { width: $icon-svg-size; height: $icon-svg-size; pointer-events: none; }
  122. }
  123. // ─── Abgerechneter Eintrag ────────────────────────────────────────────────
  124. .entry-row--invoiced {
  125. .entry-row__title { color: $color-text-muted; font-weight: $font-weight-regular; }
  126. .entry-row__note { color: $color-text-light; }
  127. .entry-row__badge { color: $color-text-muted; background: rgba($color-card, 0.6); }
  128. }
  129. // ─── Bearbeiten-Modus ─────────────────────────────────────────────────────
  130. .entry-row__edit {
  131. padding: $space-4 $space-8;
  132. background: rgba(var(--color-primary-rgb), 0.04);
  133. border-top: 1px solid rgba($color-border, 0.5);
  134. @include tablet { padding: $space-4; }
  135. }
  136. .entry-form__grid--inline {
  137. display: grid;
  138. grid-template-columns: 130px 1fr;
  139. gap: $space-3 $space-6;
  140. align-items: center;
  141. @include tablet {
  142. grid-template-columns: 1fr;
  143. gap: $space-3;
  144. }
  145. }