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.
 
 
 
 
 

329 lines
8.5 KiB

  1. @use '../atoms/variables' as *;
  2. // ─── Page ─────────────────────────────────────────────────────────────────────
  3. .report-page {
  4. min-height: 100vh;
  5. background: $color-bg;
  6. display: flex;
  7. flex-direction: column;
  8. }
  9. // ─── Header ──────────────────────────────────────────────────────────────────
  10. .report-header {
  11. background: linear-gradient(135deg, $color-header-from 0%, $color-header-to 100%);
  12. padding: $space-4 $space-6;
  13. display: flex;
  14. align-items: center;
  15. justify-content: space-between;
  16. gap: $space-6;
  17. box-shadow: $shadow-header;
  18. }
  19. .report-header__title {
  20. font-size: $font-size-xl;
  21. font-weight: $font-weight-bold;
  22. color: $color-white;
  23. }
  24. .report-header__right {
  25. display: flex;
  26. align-items: center;
  27. gap: $space-4;
  28. }
  29. // ─── Account-Name Anzeige ────────────────────────────────────────────────────
  30. .report-account-name {
  31. display: inline-flex;
  32. align-items: center;
  33. gap: $space-2;
  34. padding: $space-2 $space-4;
  35. font-size: $font-size-sm;
  36. font-weight: $font-weight-medium;
  37. color: rgba($color-white, 0.9);
  38. background: rgba($color-white, 0.15);
  39. border: 1px solid rgba($color-white, 0.25);
  40. border-radius: $radius-pill;
  41. backdrop-filter: blur(6px);
  42. -webkit-backdrop-filter: blur(6px);
  43. white-space: nowrap;
  44. &__icon {
  45. width: 16px;
  46. height: 16px;
  47. flex-shrink: 0;
  48. }
  49. }
  50. // ─── Disabled Tab ────────────────────────────────────────────────────────────
  51. .account-tab--disabled {
  52. opacity: 0.45;
  53. pointer-events: none;
  54. cursor: default;
  55. }
  56. // ─── Content ─────────────────────────────────────────────────────────────────
  57. .report-content {
  58. flex: 1;
  59. max-width: 1200px;
  60. width: 100%;
  61. margin: $space-6 auto;
  62. padding: 0 $space-6;
  63. }
  64. // ─── Karte ───────────────────────────────────────────────────────────────────
  65. .report-card {
  66. background: $color-card-white;
  67. border-radius: $radius-lg;
  68. box-shadow: $shadow-card;
  69. overflow: hidden;
  70. }
  71. // ─── Toolbar ─────────────────────────────────────────────────────────────────
  72. .report-toolbar {
  73. display: flex;
  74. align-items: center;
  75. justify-content: space-between;
  76. padding: $space-3 $space-5;
  77. border-bottom: 1px solid $color-border;
  78. }
  79. .report-toolbar__left {
  80. display: flex;
  81. align-items: center;
  82. gap: $space-6;
  83. }
  84. .report-toolbar__action {
  85. display: inline-flex;
  86. align-items: center;
  87. gap: $space-2;
  88. font-size: $font-size-sm;
  89. font-weight: $font-weight-medium;
  90. color: $color-primary;
  91. cursor: pointer;
  92. text-decoration: none;
  93. svg {
  94. width: 14px;
  95. height: 14px;
  96. flex-shrink: 0;
  97. }
  98. &--disabled {
  99. color: $color-text-muted;
  100. pointer-events: none;
  101. cursor: default;
  102. }
  103. }
  104. // ─── Tabelle ─────────────────────────────────────────────────────────────────
  105. .report-table {
  106. width: 100%;
  107. }
  108. .report-table__head,
  109. .report-table__row {
  110. display: grid;
  111. grid-template-columns:
  112. 110px // Datum
  113. 140px // Kunde
  114. 130px // Projekt
  115. 120px // Leistung
  116. 140px // Benutzer
  117. 1fr // Bemerkung
  118. 80px // Stunden
  119. 100px // Umsatz
  120. 36px; // Schloss
  121. align-items: center;
  122. border-bottom: 1px solid $color-border;
  123. padding: 0 $space-5;
  124. }
  125. .report-table__head {
  126. padding-top: $space-2;
  127. padding-bottom: $space-2;
  128. background: transparent;
  129. .report-table__cell {
  130. font-size: $font-size-xs;
  131. font-weight: $font-weight-bold;
  132. color: $color-text-base;
  133. text-transform: uppercase;
  134. letter-spacing: 0.03em;
  135. line-height: 1.3;
  136. }
  137. }
  138. .report-table__row {
  139. padding-top: $space-3;
  140. padding-bottom: $space-3;
  141. transition: background $transition-fast;
  142. &:hover {
  143. background: rgba($color-primary, 0.035);
  144. }
  145. &--invoiced {
  146. // Kein opacity – das würde auch das Schloss-Icon abdunkeln/aufhellen.
  147. // Selektiv nur die Text-Zellen dämpfen:
  148. .report-table__cell--date { color: $color-text-light; }
  149. .report-table__cell--client { color: $color-text-light; }
  150. .report-table__cell--project { color: $color-text-light; }
  151. .report-table__cell--service { color: $color-text-light; }
  152. .report-table__cell--user { color: $color-text-light; }
  153. .report-table__cell--note { color: $color-text-light; }
  154. .report-table__cell--duration { color: $color-text-light; }
  155. .report-table__cell--revenue { color: $color-text-light; }
  156. .report-table__date-link { color: $color-text-light; text-decoration: none; }
  157. }
  158. &:last-child {
  159. border-bottom: none;
  160. }
  161. }
  162. .report-table__cell {
  163. font-size: $font-size-base;
  164. color: $color-text-base;
  165. padding-right: $space-3;
  166. line-height: 1.4;
  167. min-width: 0;
  168. &--duration,
  169. &--revenue {
  170. text-align: right;
  171. padding-right: $space-4;
  172. white-space: nowrap;
  173. font-variant-numeric: tabular-nums;
  174. }
  175. &--lock {
  176. display: flex;
  177. justify-content: flex-start;
  178. align-items: center;
  179. padding-right: 0;
  180. }
  181. &--note {
  182. color: $color-text-muted;
  183. font-size: $font-size-sm;
  184. white-space: nowrap;
  185. overflow: hidden;
  186. text-overflow: ellipsis;
  187. }
  188. }
  189. .report-table__sort-icon {
  190. margin-left: 2px;
  191. font-size: $font-size-xs;
  192. }
  193. .report-table__summary {
  194. display: block;
  195. font-size: $font-size-xs;
  196. font-weight: $font-weight-regular;
  197. color: $color-text-muted;
  198. margin-top: 1px;
  199. }
  200. .report-table__date-link {
  201. color: $color-primary;
  202. text-decoration: none;
  203. white-space: nowrap;
  204. &:hover {
  205. text-decoration: underline;
  206. }
  207. }
  208. .report-table__empty {
  209. padding: $space-10 $space-5;
  210. text-align: center;
  211. color: $color-text-muted;
  212. font-size: $font-size-sm;
  213. }
  214. // ─── Schloss-Button ──────────────────────────────────────────────────────────
  215. .report-lock {
  216. display: inline-flex;
  217. align-items: center;
  218. justify-content: center;
  219. width: 24px;
  220. height: 24px;
  221. border: none;
  222. background: none;
  223. cursor: pointer;
  224. color: $color-text-light;
  225. border-radius: $radius-sm;
  226. transition: color $transition-fast, background $transition-fast;
  227. svg {
  228. width: 14px;
  229. height: 14px;
  230. }
  231. &:hover {
  232. color: $color-text-muted;
  233. background: rgba($color-text-dark, 0.06);
  234. }
  235. &--invoiced {
  236. color: $color-text-dark;
  237. &:hover {
  238. color: $color-text-dark;
  239. background: rgba($color-text-dark, 0.06);
  240. }
  241. }
  242. }
  243. // ─── Pagination-Footer ────────────────────────────────────────────────────────
  244. // Gleiche Grid-Spalten wie .report-table__head/.report-table__row:
  245. // 1fr entspricht allen Spalten links der Zahlen (Anzeigen-Text)
  246. // 80px = Stunden, 100px = Umsatz, 36px = Schloss-Platzhalter
  247. .report-pagination {
  248. display: grid;
  249. grid-template-columns: 1fr 80px 100px 36px;
  250. align-items: center;
  251. padding: $space-3 $space-5;
  252. border-top: 1px solid $color-border;
  253. font-size: $font-size-sm;
  254. color: $color-text-muted;
  255. }
  256. .report-pagination__limits {
  257. display: flex;
  258. align-items: center;
  259. gap: $space-2;
  260. a {
  261. color: $color-primary;
  262. text-decoration: underline;
  263. cursor: pointer;
  264. &:hover {
  265. color: $color-primary-dark;
  266. }
  267. }
  268. strong {
  269. color: $color-text-dark;
  270. font-weight: $font-weight-bold;
  271. }
  272. }
  273. .report-pagination__duration,
  274. .report-pagination__revenue {
  275. text-align: right;
  276. padding-right: $space-4;
  277. font-weight: $font-weight-medium;
  278. color: $color-text-muted;
  279. font-variant-numeric: tabular-nums;
  280. white-space: nowrap;
  281. }
  282. .report-pagination__lock-spacer {
  283. // Platzhalter für die Schloss-Spalte – hält die Ausrichtung
  284. }