feat: PIN gate on Λειτουργίες settings tab (code: 4034)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-08 04:03:37 +03:00
parent 0fc027eb5f
commit f136abe17e

View File

@@ -1,5 +1,54 @@
import { useState } from 'react'
import { PHASE2_FEATURE_DEFS, isFeatureEnabled, setFeatureEnabled, usePhase2Features } from '../../../hooks/usePhase2Features'
const SECRET = '4034'
function PinGate({ onUnlock }) {
const [pin, setPin] = useState('')
const [error, setError] = useState(false)
function submit() {
if (pin === SECRET) {
onUnlock()
} else {
setError(true)
setPin('')
setTimeout(() => setError(false), 1500)
}
}
return (
<div className="flex flex-col items-center justify-center gap-5 py-16 max-w-xs mx-auto">
<div className="flex h-12 w-12 items-center justify-center rounded-xl bg-slate-100 text-2xl">🔒</div>
<div className="text-center">
<p className="font-semibold text-slate-800">Περιορισμένη πρόσβαση</p>
<p className="text-sm text-slate-400 mt-1">Εισάγετε τον κωδικό για να συνεχίσετε</p>
</div>
<div className="flex flex-col items-center gap-3 w-full">
<input
type="password"
value={pin}
onChange={e => setPin(e.target.value)}
onKeyDown={e => e.key === 'Enter' && submit()}
autoFocus
maxLength={8}
placeholder="••••"
className={`w-full text-center text-xl tracking-[0.4em] border rounded-xl px-4 py-3 outline-none transition-colors ${
error ? 'border-red-400 bg-red-50 text-red-600' : 'border-slate-200 focus:border-sky-400'
}`}
/>
{error && <p className="text-xs text-red-500 font-medium">Λάθος κωδικός</p>}
<button
onClick={submit}
className="w-full rounded-xl bg-slate-900 text-white font-semibold py-2.5 text-sm hover:bg-slate-700 transition-colors"
>
Είσοδος
</button>
</div>
</div>
)
}
function Toggle({ checked, onChange }) {
return (
<button
@@ -22,8 +71,11 @@ function Toggle({ checked, onChange }) {
}
export default function Phase2FeaturesTab() {
const [unlocked, setUnlocked] = useState(false)
const features = usePhase2Features()
if (!unlocked) return <PinGate onUnlock={() => setUnlocked(true)} />
const allOn = features.every(f => f.enabled)
const allOff = features.every(f => !f.enabled)