fix(app): premium entry 조정과 duration 입력 버그 수정

This commit is contained in:
2026-03-16 14:35:26 +09:00
parent 6b25a18d5a
commit c63ddc4e98
6 changed files with 235 additions and 315 deletions

View File

@@ -140,6 +140,15 @@ export const FocusDashboardWidget = () => {
() => getAtmosphereOptionById(selectedAtmosphereId),
[selectedAtmosphereId],
);
const rawDurationValue = useMemo(() => {
const digitsOnly = durationDraft.replace(/[^\d]/g, '');
if (!digitsOnly) {
return null;
}
const parsed = Number(digitsOnly);
return Number.isFinite(parsed) ? parsed : null;
}, [durationDraft]);
const parsedDurationMinutes = parseDurationMinutes(durationDraft);
const resolvedTimerPreset = useMemo(() => {
const targetMinutes =
@@ -178,9 +187,11 @@ export const FocusDashboardWidget = () => {
isPro && reviewEntryPresetConfig ? `추천 ritual · ${reviewEntryPresetConfig.label}` : null;
const reviewTeaserTitle = isPro ? entryCopy.reviewTitlePro : entryCopy.reviewTitle;
const durationHelper =
parsedDurationMinutes === null
? 'Please enter the estimated duration in minutes.'
: entryCopy.durationHelper;
rawDurationValue !== null && rawDurationValue < 5
? 'Please enter at least 5 minutes.'
: parsedDurationMinutes === null
? 'Please enter the estimated duration in minutes.'
: entryCopy.durationHelper;
const hasCurrentSession = Boolean(currentSession);
useEffect(() => {
@@ -301,13 +312,13 @@ export const FocusDashboardWidget = () => {
<div
className={cn(
'absolute inset-0 bg-cover bg-center transition-transform duration-[1.5s] ease-[cubic-bezier(0.22,1,0.36,1)]',
isStartingSession ? 'scale-[1.08] blur-[2px] brightness-75' : 'scale-100 blur-0 brightness-100',
isStartingSession ? 'scale-[1.08] blur-[2px] brightness-75' : 'scale-100 blur-[60px] brightness-50',
)}
style={getSceneStageBackgroundStyle(activeScene, sceneAssetMap?.[activeScene.id])}
/>
{/* Immersive Overlay Gradients */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_center,transparent_0%,rgba(0,0,0,0.6)_100%)] mix-blend-multiply pointer-events-none" />
<div className="absolute inset-0 bg-black/10 pointer-events-none" />
<div className="absolute inset-0 bg-[radial-gradient(circle_at_center,transparent_0%,rgba(0,0,0,0.85)_100%)] mix-blend-multiply pointer-events-none" />
<div className="absolute inset-0 bg-black/40 pointer-events-none" />
{/* Header */}
<header className="absolute top-0 inset-x-0 z-50 flex items-center justify-between px-8 py-8 md:px-12 md:py-10">