25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

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