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.
 
 
 
 
 

188 lines
5.3 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__label {
  81. display: inline-block;
  82. font-size: $font-size-xs;
  83. color: var(--color-primary);
  84. background: rgba(var(--color-primary-rgb), 0.08);
  85. padding: 1px $space-2;
  86. border-radius: $radius-sm;
  87. margin-top: 2px;
  88. }
  89. .entry-row__note {
  90. font-size: $font-size-sm;
  91. color: $color-text-muted;
  92. margin-top: 2px;
  93. @include text-truncate;
  94. }
  95. .entry-row__actions {
  96. display: flex;
  97. align-items: center;
  98. gap: $space-2;
  99. flex-shrink: 0;
  100. }
  101. .entry-row__badge {
  102. font-size: $font-size-sm;
  103. font-weight: $font-weight-bold;
  104. color: $color-text-dark;
  105. background: $color-card;
  106. border-radius: $radius-pill;
  107. padding: $space-1 $space-3;
  108. min-width: 48px;
  109. text-align: center;
  110. font-variant-numeric: tabular-nums;
  111. }
  112. .entry-row__btn {
  113. @include icon-btn;
  114. opacity: 0;
  115. color: $color-text-muted;
  116. svg { width: $icon-svg-size; height: $icon-svg-size; }
  117. &--edit:hover { background: rgba(var(--color-primary-rgb), 0.1); color: var(--color-primary); }
  118. &--delete:hover{ background: rgba($color-error, 0.1); color: $color-error; }
  119. @media (hover: none) { opacity: 1; }
  120. @include tablet { opacity: 1; }
  121. }
  122. // ─── Lock-Indikator (invoiced) ────────────────────────────────────────────
  123. .entry-row__lock-indicator {
  124. display: flex;
  125. align-items: center;
  126. justify-content: center;
  127. width: calc(#{$icon-btn-size} + #{$space-2} + #{$icon-btn-size});
  128. flex-shrink: 0;
  129. color: $color-text-dark;
  130. svg { width: $icon-svg-size; height: $icon-svg-size; pointer-events: none; }
  131. }
  132. // ─── Abgerechneter Eintrag ────────────────────────────────────────────────
  133. .entry-row--invoiced {
  134. .entry-row__title { color: $color-text-muted; font-weight: $font-weight-regular; }
  135. .entry-row__label { color: $color-text-muted; background: rgba($color-card, 0.6); }
  136. .entry-row__note { color: $color-text-light; }
  137. .entry-row__badge { color: $color-text-muted; background: rgba($color-card, 0.6); }
  138. }
  139. // ─── Bearbeiten-Modus ─────────────────────────────────────────────────────
  140. .entry-row__edit {
  141. padding: $space-4 $space-8;
  142. background: rgba(var(--color-primary-rgb), 0.04);
  143. border-top: 1px solid rgba($color-border, 0.5);
  144. @include tablet { padding: $space-4; }
  145. }
  146. .entry-form__grid--inline {
  147. display: grid;
  148. grid-template-columns: 130px 1fr;
  149. gap: $space-3 $space-6;
  150. align-items: center;
  151. @include tablet {
  152. grid-template-columns: 1fr;
  153. gap: $space-3;
  154. }
  155. }