Fix TypeScript errors and implement furniture import ID integrity with 18+ age verification
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Successful in 1m2s

- Add termsAccepted and ageVerified columns to User table
- Update register schema with new boolean fields
- Fix register form age verification checkbox (th -> t)
- Fix furni-import spriteId declaration order
- Fix batch route variable naming (id -> spriteId)
- Fix catalog-audit import path and ensure correct types
- Hardened import with per-item id conflict checks
- Added audit option for FurnitureData.json spriteId conflicts
- Updated tagline to include Leeftijdsvereiste: 18+
This commit is contained in:
openhands committed 2026-08-14 16:37:00 +02:00
1 parent e5ec3c1f06
commit e76c530e4f
13 files changed
+267 -104

No files matched your search

+19 -1
View File
@@ -42,6 +42,7 @@ export function RegisterForm({
const showCaptcha = captcha.provider !== "none" && !!captcha.siteKey;
const [serverError, formAction, isPending] = useActionState(register, null);
const [termsAccepted, setTermsAccepted] = useState(false);
const [ageVerified, setAgeVerified] = useState(false);
const [password, setPassword] = useState("");
const [showPassword, setShowPassword] = useState(false);
const [showConfirm, setShowConfirm] = useState(false);
@@ -280,7 +281,7 @@ export function RegisterForm({
</div>
</div>
{/* Terms */}
{/* Terms & Age Verification */}
<div
className="rounded-xl p-4 flex flex-col gap-3"
style={{
@@ -314,6 +315,23 @@ export function RegisterForm({
{t("termsAccept", { hotel: hotelName })}
</label>
</div>
<div className="flex items-center gap-3 text-sm">
<input
type="checkbox"
id="ageVerified"
name="ageVerified"
checked={ageVerified}
onChange={(e) => setAgeVerified(e.target.checked)}
className="w-5 h-5 rounded border-2 accent-(--color-primary) shrink-0 cursor-pointer"
/>
<label
htmlFor="ageVerified"
className="font-semibold cursor-pointer select-none"
style={{ color: "var(--color-text-readable)" }}
>
{t("ageVerified", { hotel: hotelName })}
</label>
</div>
</div>
{/* Captcha */}