cpns / apps /web /src /components /test /AccentKeyboard.tsx
pramudya-yb
Rename project from Labas to Pram
2b62b0c
Raw
History Blame Contribute Delete
1.55 kB
import { useMemo } from "react";
const ACCENT_CHARS: Record<string, string[]> = {
DELE: ["á", "é", "í", "ó", "ú", "ñ", "¿", "¡"],
GOETHE: ["ä", "ö", "ü", "ß"],
TOAFL: ["ا", "ب", "ت", "ث", "ج", "ح", "خ", "د", "ذ", "ر", "ز", "س", "ش", "ص", "ض", "ط", "ظ", "ع", "غ", "ف", "ق", "ك", "ل", "م", "ن", "ه", "و", "ي"],
};
interface AccentKeyboardProps {
examType?: string;
onInsert: (char: string) => void;
disabled?: boolean;
}
export function AccentKeyboard({ examType, onInsert, disabled }: AccentKeyboardProps) {
if (!examType) return null;
const chars: string[] | undefined = ACCENT_CHARS[examType];
if (!chars || chars.length === 0) return null;
return (
<div className={`flex flex-wrap gap-1.5 p-3 rounded-[var(--radius-lg)] bg-[var(--oat-light)] border border-[var(--oat-border)] ${disabled ? "opacity-50" : ""}`}>
<span className="w-full text-[10px] font-medium text-[var(--warm-charcoal)] uppercase tracking-wider mb-0.5">
Special Characters
</span>
{chars.map((char: string) => (
<button
key={char}
type="button"
onClick={() => onInsert(char)}
disabled={disabled}
className="w-8 h-8 flex items-center justify-center rounded-md text-sm font-semibold bg-[var(--pure-white)] border border-[var(--oat-border)] hover:bg-[var(--matcha-300)] hover:border-[var(--matcha-600)] transition-all clay-hover disabled:cursor-not-allowed"
>
{char}
</button>
))}
</div>
);
}