Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

225 linhas
5.4 KiB

  1. @use '../atoms/variables' as *;
  2. @use '../atoms/mixins' as *;
  3. // ─── Statistiken-Bubble (Report-Header) ─────────────────────────────────────
  4. .report-stats-bubble {
  5. display: inline-flex;
  6. align-items: center;
  7. gap: $space-2;
  8. padding: $space-2 $space-4;
  9. font-size: $font-size-sm;
  10. font-weight: $font-weight-medium;
  11. color: var(--header-text-muted);
  12. background: var(--header-overlay);
  13. border: 1px solid var(--header-overlay);
  14. border-radius: $radius-pill;
  15. backdrop-filter: blur(6px);
  16. -webkit-backdrop-filter: blur(6px);
  17. white-space: nowrap;
  18. text-decoration: none;
  19. transition: background $transition-fast, color $transition-fast;
  20. cursor: pointer;
  21. &:hover {
  22. color: var(--header-text);
  23. background: rgba(255, 255, 255, 0.28);
  24. }
  25. &--active {
  26. color: var(--header-text);
  27. background: rgba(255, 255, 255, 0.28);
  28. border-color: rgba(255, 255, 255, 0.35);
  29. }
  30. &__icon {
  31. width: 16px;
  32. height: 16px;
  33. flex-shrink: 0;
  34. }
  35. }
  36. // ─── Toolbar ────────────────────────────────────────────────────────────────
  37. .statistics-toolbar {
  38. display: flex;
  39. align-items: center;
  40. justify-content: space-between;
  41. padding: $space-4 $space-5;
  42. border-bottom: 1px solid $color-border;
  43. @include tablet {
  44. flex-wrap: wrap;
  45. gap: $space-3;
  46. }
  47. }
  48. .statistics-toolbar__title {
  49. font-size: $font-size-md;
  50. font-weight: $font-weight-bold;
  51. color: $color-text-dark;
  52. }
  53. .statistics-toolbar__controls {
  54. display: flex;
  55. align-items: center;
  56. gap: $space-3;
  57. }
  58. .statistics-range-select {
  59. appearance: none;
  60. background: $color-input-bg url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%237a8a9a'/%3E%3C/svg%3E") no-repeat right 12px center;
  61. border: 1px solid $color-input-border;
  62. border-radius: $radius-md;
  63. padding: $space-2 $space-8 $space-2 $space-3;
  64. font-size: $font-size-sm;
  65. font-family: $font-family-base;
  66. color: $color-text-base;
  67. cursor: pointer;
  68. transition: border-color $transition-fast;
  69. &:hover {
  70. border-color: var(--color-primary);
  71. }
  72. &:focus {
  73. outline: none;
  74. border-color: var(--color-primary);
  75. box-shadow: $shadow-focus;
  76. }
  77. }
  78. // ─── Gesamtsumme ───────────────────────────────────────────────────────────
  79. .statistics-total {
  80. text-align: right;
  81. padding: $space-3 $space-5 0;
  82. font-size: $font-size-lg;
  83. font-weight: $font-weight-bold;
  84. color: $color-text-dark;
  85. }
  86. // ─── Chart ──────────────────────────────────────────────────────────────────
  87. .statistics-chart-wrap {
  88. position: relative;
  89. height: 400px;
  90. padding: $space-6 $space-5;
  91. @include tablet {
  92. height: 300px;
  93. padding: $space-4 $space-3;
  94. }
  95. }
  96. .statistics-error {
  97. display: flex;
  98. align-items: center;
  99. justify-content: center;
  100. height: 100%;
  101. color: $color-text-muted;
  102. font-size: $font-size-sm;
  103. }
  104. // ─── Legende ────────────────────────────────────────────────────────────────
  105. .statistics-legend {
  106. display: flex;
  107. align-items: center;
  108. justify-content: center;
  109. gap: $space-6;
  110. padding: $space-3 $space-5 $space-5;
  111. }
  112. .statistics-legend__item {
  113. display: inline-flex;
  114. align-items: center;
  115. gap: $space-2;
  116. font-size: $font-size-sm;
  117. color: $color-text-muted;
  118. &::before {
  119. content: '';
  120. display: inline-block;
  121. width: 12px;
  122. height: 12px;
  123. border-radius: $radius-sm;
  124. }
  125. &--billable::before {
  126. background: var(--color-primary);
  127. }
  128. &--non-billable::before {
  129. background: $color-text-light;
  130. }
  131. }
  132. // ─── Donuts ────────────────────────────────────────────────────────────────
  133. .statistics-donuts {
  134. display: grid;
  135. grid-template-columns: repeat(3, 1fr);
  136. gap: $space-5;
  137. padding: $space-5;
  138. @include tablet {
  139. grid-template-columns: 1fr;
  140. gap: $space-4;
  141. }
  142. }
  143. .statistics-donut {
  144. @include card(#ffffff, $radius-md);
  145. padding: $space-4;
  146. display: flex;
  147. flex-direction: column;
  148. align-items: center;
  149. }
  150. .statistics-donut__title {
  151. font-size: $font-size-sm;
  152. font-weight: $font-weight-bold;
  153. color: $color-text-dark;
  154. margin-bottom: $space-3;
  155. text-transform: uppercase;
  156. letter-spacing: 0.03em;
  157. }
  158. .statistics-donut__wrap {
  159. position: relative;
  160. width: 100%;
  161. max-width: 280px;
  162. aspect-ratio: 1;
  163. }
  164. .statistics-donut__legend {
  165. width: 100%;
  166. margin-top: $space-4;
  167. display: flex;
  168. flex-direction: column;
  169. gap: $space-1;
  170. }
  171. .statistics-donut__legend-item {
  172. display: flex;
  173. align-items: center;
  174. gap: $space-2;
  175. font-size: $font-size-xs;
  176. color: $color-text-base;
  177. line-height: 1.4;
  178. }
  179. .statistics-donut__legend-dot {
  180. width: 10px;
  181. height: 10px;
  182. border-radius: 50%;
  183. flex-shrink: 0;
  184. }
  185. .statistics-donut__legend-label {
  186. @include text-truncate;
  187. flex: 1;
  188. min-width: 0;
  189. }
  190. .statistics-donut__legend-value {
  191. flex-shrink: 0;
  192. color: $color-text-muted;
  193. white-space: nowrap;
  194. }