Center action bar in empty state for better onboarding UX

Replace the abstract + icon with the actual input field centered at the
optical center when no combatants exist. Animate the transition in both
directions: settling down when the first combatant is added, rising up
when all combatants are removed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukas
2026-03-13 14:29:51 +01:00
parent 96b37d4bdd
commit 72d4f30e60
3 changed files with 136 additions and 66 deletions

View File

@@ -32,6 +32,7 @@ interface ActionBarProps {
playerCharacters?: readonly PlayerCharacter[];
onAddFromPlayerCharacter?: (pc: PlayerCharacter) => void;
onManagePlayers?: () => void;
autoFocus?: boolean;
}
function creatureKey(r: SearchResult): string {
@@ -50,6 +51,7 @@ export function ActionBar({
playerCharacters,
onAddFromPlayerCharacter,
onManagePlayers,
autoFocus,
}: ActionBarProps) {
const [nameInput, setNameInput] = useState("");
const [suggestions, setSuggestions] = useState<SearchResult[]>([]);
@@ -260,6 +262,7 @@ export function ActionBar({
onKeyDown={handleKeyDown}
placeholder="+ Add combatants"
className="max-w-xs"
autoFocus={autoFocus}
/>
{hasSuggestions && (
<div className="absolute bottom-full z-50 mb-1 w-full max-w-xs rounded-md border border-border bg-card shadow-lg">