diff --git a/frontend/src/components/ConfirmDialog.jsx b/frontend/src/components/ConfirmDialog.jsx index d7d2e02..5eaf405 100644 --- a/frontend/src/components/ConfirmDialog.jsx +++ b/frontend/src/components/ConfirmDialog.jsx @@ -12,8 +12,18 @@ export default function ConfirmDialog({ loading = false, }) { const accent = destructive - ? { ring: 'ring-red-500/20', icon: 'text-red-300', iconBg: 'bg-red-500/10 border-red-500/30' } - : { ring: 'ring-emerald-500/20', icon: 'text-emerald-300', iconBg: 'bg-emerald-500/10 border-emerald-500/30' } + ? { + ringColor: 'var(--ring-danger)', + iconColor: 'var(--danger-text)', + iconBg: 'var(--icon-danger-bg)', + iconBorder: 'var(--icon-danger-border)', + } + : { + ringColor: 'var(--ring-info)', + iconColor: 'var(--accent-bright)', + iconBg: 'var(--icon-info-bg)', + iconBorder: 'var(--icon-info-border)', + } return ( @@ -24,7 +34,8 @@ export default function ConfirmDialog({ animate={{ opacity: 1 }} exit={{ opacity: 0 }} transition={{ duration: 0.18 }} - className="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-md" + className="fixed inset-0 z-50 flex items-center justify-center p-4 backdrop-blur-md" + style={{ background: 'var(--dialog-backdrop)' }} onClick={onClose} > e.stopPropagation()} >
-
+
{destructive ? ( - + ) : ( - + )}
-

{title}

+

+ {title} +

-

{description}

+

+ {description} +

-
+
diff --git a/frontend/src/features/boss-crystal/user/CharacterPanel.jsx b/frontend/src/features/boss-crystal/user/CharacterPanel.jsx index 4c51432..621bf0e 100644 --- a/frontend/src/features/boss-crystal/user/CharacterPanel.jsx +++ b/frontend/src/features/boss-crystal/user/CharacterPanel.jsx @@ -332,7 +332,7 @@ export default function CharacterPanel({ value={name} onChange={(e) => { setName(e.target.value); if (error) setError('') }} placeholder="캐릭터 닉네임 검색" - className="w-full rounded-lg border-2 pl-10 pr-3 py-2.5 text-sm outline-none transition focus:border-[var(--input-border-focus)] hover:border-[var(--input-border-hover)]" + className="w-full rounded-lg border-2 pl-10 pr-3 py-2.5 text-sm outline-none focus:border-[var(--input-border-focus)] hover:border-[var(--input-border-hover)]" style={{ background: 'var(--input-bg)', borderColor: 'var(--input-border)', diff --git a/frontend/src/index.css b/frontend/src/index.css index a25a6ce..f611b4b 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -123,6 +123,23 @@ --disabled-opacity: 0.3; --inactive-filter: brightness(0.4); + + --dialog-bg-from: #111827; + --dialog-bg-to: #030712; + --dialog-border: rgba(255, 255, 255, 0.1); + --dialog-backdrop: rgba(0, 0, 0, 0.7); + + --icon-danger-bg: rgba(239, 68, 68, 0.1); + --icon-danger-border: rgba(239, 68, 68, 0.3); + --icon-info-bg: rgba(16, 185, 129, 0.1); + --icon-info-border: rgba(16, 185, 129, 0.3); + + --ring-danger: rgba(239, 68, 68, 0.2); + --ring-info: rgba(16, 185, 129, 0.2); + + --btn-danger-bg: #dc2626; + --btn-danger-bg-hover: #ef4444; + --btn-danger-shadow: 0 4px 14px rgba(239, 68, 68, 0.2); } /* 테마 토큰 - light */ @@ -242,6 +259,23 @@ --disabled-opacity: 0.5; --inactive-filter: opacity(0.25); + + --dialog-bg-from: #ffffff; + --dialog-bg-to: #ffffff; + --dialog-border: rgba(0, 0, 0, 0.1); + --dialog-backdrop: rgba(15, 23, 42, 0.45); + + --icon-danger-bg: rgba(220, 38, 38, 0.08); + --icon-danger-border: rgba(220, 38, 38, 0.3); + --icon-info-bg: rgba(16, 185, 129, 0.08); + --icon-info-border: rgba(5, 150, 105, 0.4); + + --ring-danger: rgba(220, 38, 38, 0.15); + --ring-info: rgba(16, 185, 129, 0.18); + + --btn-danger-bg: #dc2626; + --btn-danger-bg-hover: #b91c1c; + --btn-danger-shadow: 0 4px 14px rgba(220, 38, 38, 0.25); } html, body, #root {