Compare commits

...

4 commits

Author SHA1 Message Date
2d52a1668f effectivelyMax '(MAX)' 텍스트도 진행 바와 같은 앰버(--progress-amber)로
isMax→red, effectivelyMax→amber, emerald→emerald 세 상태 모두 텍스트와
진행 바 색상이 정확히 일치.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 10:00:23 +09:00
67cefb49a7 만렙 심볼 성장치 'MAX' 텍스트를 진행 바와 같은 빨강으로
effectivelyMax '(MAX)' 는 기존 앰버 유지해서 진행 바 색과 일치.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 09:59:09 +09:00
7191ec7af7 심볼 진행 바: 만렙과 '만렙 도달 가능'을 색상으로 구분
- 만렙(isMax): 빨강 (--progress-red: #ef4444)
- 만렙 도달 가능(effectivelyMax, 성장치 초과): 기존 앰버 유지
- 그 외: 에메랄드

기존엔 두 상태 모두 앰버라 구분이 안 됐던 문제 해결.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 09:58:12 +09:00
3ef40e8111 심볼 계산기 주간퀘 계산 수정 + 일퀘 툴팁 문구 조정
- computeCompletion 에서 day 0(오늘)의 주간 지급 스킵. 주간퀘 획득 드롭다운
  값(0이 아닐 때)이 이미 '이번 주에 받은 수량'을 반영한다고 가정. 목요일이
  오늘이어도 day 1(다음 목요일)부터 누적 시작.
  별도 토글 없이 드롭다운 값만으로 해결.
- 일일 퀘스트 완료 토글 title 'oldgr 일퀘 완료 여부' → '금일 일일 퀘스트
  완료 여부' (표기 일관성)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 09:55:40 +09:00
3 changed files with 10 additions and 6 deletions

View file

@ -118,8 +118,8 @@ function SymbolCard({ symbol, equipped, charId }) {
<button
type="button"
onClick={() => patch({ dailyDone: !dailyDone })}
title="오늘 일퀘 완료 여부"
className="shrink-0 rounded-md h-8 px-3 text-xs font-semibold border disabled:opacity-40"
title="금일 일일 퀘스트 완료 여부"
className="shrink-0 rounded-md h-8 px-3 text-xs font-semibold border"
style={dailyDone ? {
background: 'var(--selected-bg)',
borderColor: 'var(--selected-border)',
@ -140,12 +140,12 @@ function SymbolCard({ symbol, equipped, charId }) {
<div className="flex justify-between text-sm tabular-nums mb-1.5">
{isMax ? (
<span style={{ color: 'var(--text-muted)' }}>
성장치 <span className="font-bold" style={{ color: 'var(--warning-text-bright)' }}>MAX</span>
성장치 <span className="font-bold" style={{ color: 'var(--progress-red)' }}>MAX</span>
</span>
) : effectivelyMax ? (
<Tooltip text={`Lv.${symbol.max_level}까지 상승 가능`}>
<span style={{ color: 'var(--text-muted)' }}>
성장치 {growth} <span className="font-bold" style={{ color: 'var(--warning-text-bright)' }}>(MAX)</span> / {requireGrowth}
성장치 {growth} <span className="font-bold" style={{ color: 'var(--progress-amber)' }}>(MAX)</span> / {requireGrowth}
</span>
</Tooltip>
) : reachableLevel > level ? (
@ -170,7 +170,7 @@ function SymbolCard({ symbol, equipped, charId }) {
className="h-full transition-all"
style={{
width: isMax || effectivelyMax ? '100%' : `${Math.min((growth / requireGrowth) * 100, 100)}%`,
background: isMax || effectivelyMax ? 'var(--progress-amber)' : 'var(--progress-emerald)',
background: isMax ? 'var(--progress-red)' : effectivelyMax ? 'var(--progress-amber)' : 'var(--progress-emerald)',
}}
/>
</div>

View file

@ -18,6 +18,8 @@ export function formatKoreanDate(d) {
* - 일퀘는 매일, 주간퀘는 매주 목요일 리셋 N회분을 번에 지급한다고 가정
* - extra(추가 심볼) 즉시 적용
* - dailyDone이면 오늘 일퀘는 이미 받은 걸로 간주 (내일부터 다시 지급)
* - 주간퀘는 day 0(오늘) 목요일이어도 지급하지 않음: 주간퀘 획득 드롭다운의
* 값이 이미 '이번 주에 받은 수량' 반영한다고 가정. 다음 목요일부터 누적.
*/
export function computeCompletion({ remainingSymbols, daily, weeklyPerWeek, extra, dailyDone }) {
const need = Math.max(remainingSymbols - extra, 0)
@ -28,7 +30,7 @@ export function computeCompletion({ remainingSymbols, daily, weeklyPerWeek, extr
let cursor = dayjs().tz(KST).startOf('day')
for (let day = 0; day < 3650; day++) {
if (!(day === 0 && dailyDone)) acc += daily
if (cursor.day() === 4 && weeklyPerWeek > 0) acc += weeklyPerWeek
if (day > 0 && cursor.day() === 4 && weeklyPerWeek > 0) acc += weeklyPerWeek
if (acc >= need) return { days: day, date: cursor.toDate() }
cursor = cursor.add(1, 'day')
}

View file

@ -111,6 +111,7 @@
--progress-track: #0f172a;
--progress-emerald: #10b981;
--progress-amber: #f59e0b;
--progress-red: #ef4444;
--accent-bright: #6ee7b7;
--accent-muted: rgba(16, 185, 129, 0.1);
@ -265,6 +266,7 @@
--progress-track: #e5e7eb;
--progress-emerald: #10b981;
--progress-amber: #f59e0b;
--progress-red: #ef4444;
--accent-bright: #047857;
--accent-muted: rgba(16, 185, 129, 0.1);