Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 
 
 

284 рядки
6.4 KiB

  1. @use '../atoms/variables' as *;
  2. @use '../atoms/mixins' as *;
  3. // ─── Nav-Button ──────────────────────────────────────────────────────────────
  4. .main-nav__stopwatch-wrap {
  5. position: relative;
  6. display: flex;
  7. align-items: center;
  8. margin: 0 $space-3;
  9. }
  10. .main-nav__stopwatch {
  11. @include icon-btn(auto, $radius-pill);
  12. color: rgba($color-white, 0.65);
  13. margin: 0 $space-1;
  14. position: relative;
  15. gap: $space-1;
  16. padding: 0 $space-1;
  17. height: 32px;
  18. min-width: 32px;
  19. svg { width: 16px; height: 16px; position: relative; z-index: 1; flex-shrink: 0; }
  20. &:hover { color: $color-white; background: var(--header-overlay); }
  21. &--running {
  22. color: $color-success;
  23. padding: 0 $space-2 0 $space-1;
  24. &:hover { color: $color-success; }
  25. &::before {
  26. content: '';
  27. position: absolute;
  28. top: 1px;
  29. left: 1px;
  30. width: 28px;
  31. height: 28px;
  32. border-radius: 50%;
  33. border: 2px solid transparent;
  34. border-top-color: $color-success;
  35. border-right-color: $color-success;
  36. animation: stopwatch-spin 1s linear infinite;
  37. }
  38. &::after {
  39. content: '';
  40. position: absolute;
  41. top: 1px;
  42. left: 1px;
  43. width: 28px;
  44. height: 28px;
  45. border-radius: 50%;
  46. border: 2px solid rgba($color-success, 0.2);
  47. }
  48. }
  49. }
  50. .main-nav__stopwatch-time {
  51. font-size: $font-size-xs;
  52. font-weight: $font-weight-bold;
  53. font-variant-numeric: tabular-nums;
  54. color: $color-success;
  55. white-space: nowrap;
  56. }
  57. @keyframes stopwatch-spin {
  58. to { transform: rotate(360deg); }
  59. }
  60. // ─── Popover ─────────────────────────────────────────────────────────────────
  61. .stopwatch-popover {
  62. position: absolute;
  63. top: 40px;
  64. left: 50%;
  65. transform: translateX(-50%);
  66. z-index: 300;
  67. @include card;
  68. padding: $space-4;
  69. width: 300px;
  70. display: flex;
  71. flex-direction: column;
  72. gap: $space-3;
  73. box-shadow: $shadow-calendar;
  74. &::before {
  75. content: '';
  76. position: absolute;
  77. top: -6px;
  78. left: 50%;
  79. transform: translateX(-50%) rotate(45deg);
  80. width: 12px;
  81. height: 12px;
  82. background: $color-card-white;
  83. border-radius: 2px 0 0 0;
  84. }
  85. }
  86. .stopwatch-popover__timer {
  87. font-size: $font-size-xl;
  88. font-weight: $font-weight-bold;
  89. color: $color-text-dark;
  90. text-align: center;
  91. font-variant-numeric: tabular-nums;
  92. letter-spacing: 0.02em;
  93. }
  94. .stopwatch-popover__form {
  95. display: flex;
  96. flex-direction: column;
  97. gap: $space-2;
  98. }
  99. .stopwatch-popover__actions {
  100. display: flex;
  101. gap: $space-2;
  102. margin-top: $space-1;
  103. .btn { flex: 1; }
  104. }
  105. // ─── Entry-Row Stopwatch-Button ──────────────────────────────────────────────
  106. .entry-row__btn--stopwatch {
  107. color: $color-text-muted;
  108. &:hover {
  109. background: rgba($color-success, 0.12);
  110. color: $color-success;
  111. }
  112. }
  113. .entry-row--timer-active {
  114. border-left: 3px solid $color-success;
  115. .entry-row__btn--stopwatch {
  116. color: $color-success;
  117. opacity: 1;
  118. position: relative;
  119. &::before {
  120. content: '';
  121. position: absolute;
  122. inset: 1px;
  123. border-radius: 50%;
  124. border: 2px solid transparent;
  125. border-top-color: $color-success;
  126. border-right-color: $color-success;
  127. animation: stopwatch-spin 1s linear infinite;
  128. }
  129. &::after {
  130. content: '';
  131. position: absolute;
  132. inset: 1px;
  133. border-radius: 50%;
  134. border: 2px solid rgba($color-success, 0.15);
  135. }
  136. }
  137. }
  138. // ─── Searchable Select ───────────────────────────────────────────────────────
  139. .searchable-select {
  140. position: relative;
  141. }
  142. .ss__trigger {
  143. display: flex;
  144. align-items: center;
  145. justify-content: space-between;
  146. width: 100%;
  147. padding: $space-2 $space-3;
  148. background: $color-input-bg;
  149. border: 1px solid $color-input-border;
  150. border-radius: $radius-sm;
  151. cursor: pointer;
  152. font-size: $font-size-sm;
  153. color: $color-text-base;
  154. text-align: left;
  155. transition: border-color $transition-fast;
  156. &:hover { border-color: var(--color-primary); }
  157. }
  158. .ss__value {
  159. @include text-truncate;
  160. flex: 1;
  161. color: $color-text-muted;
  162. &--selected { color: $color-text-dark; }
  163. }
  164. .ss__arrow {
  165. width: 10px;
  166. height: 10px;
  167. flex-shrink: 0;
  168. margin-left: $space-2;
  169. color: $color-text-muted;
  170. }
  171. .ss__dropdown {
  172. position: absolute;
  173. top: calc(100% + 4px);
  174. left: 0;
  175. right: 0;
  176. z-index: 400;
  177. background: $color-card-white;
  178. border: 1px solid $color-border;
  179. border-radius: $radius-md;
  180. box-shadow: $shadow-calendar;
  181. overflow: hidden;
  182. }
  183. .ss__search {
  184. display: block;
  185. width: 100%;
  186. padding: $space-2 $space-3;
  187. border: none;
  188. border-bottom: 1px solid $color-border;
  189. font-size: $font-size-sm;
  190. outline: none;
  191. background: $color-card;
  192. &::placeholder { color: $color-text-light; }
  193. }
  194. .ss__list {
  195. max-height: 200px;
  196. overflow-y: auto;
  197. }
  198. .ss__group {
  199. padding: $space-2 $space-3 $space-1;
  200. font-size: $font-size-xs;
  201. font-weight: $font-weight-bold;
  202. color: $color-text-dark;
  203. text-transform: uppercase;
  204. letter-spacing: 0.03em;
  205. &:not(:first-child) { border-top: 1px solid rgba($color-border, 0.5); }
  206. }
  207. .ss__item {
  208. padding: $space-1 $space-3 $space-1 $space-5;
  209. font-size: $font-size-sm;
  210. color: $color-text-base;
  211. cursor: pointer;
  212. &:hover,
  213. &--highlight { background: rgba(var(--color-primary-rgb), 0.08); }
  214. &--active { color: var(--color-primary); font-weight: $font-weight-medium; }
  215. }
  216. .ss__empty {
  217. padding: $space-3;
  218. text-align: center;
  219. color: $color-text-light;
  220. font-size: $font-size-sm;
  221. }
  222. // ─── Hamburger-Nav Stopwatch ─────────────────────────────────────────────────
  223. .hamburger-nav__stopwatch {
  224. display: flex;
  225. align-items: center;
  226. gap: $space-2;
  227. padding: $space-2 $space-4;
  228. color: $color-text-base;
  229. background: none;
  230. border: none;
  231. cursor: pointer;
  232. font-size: $font-size-sm;
  233. width: 100%;
  234. text-align: left;
  235. svg { width: 14px; height: 14px; flex-shrink: 0; }
  236. &:hover { background: rgba(0, 0, 0, 0.04); }
  237. &--running {
  238. color: $color-success;
  239. font-weight: $font-weight-medium;
  240. }
  241. }