Allow pressing 1-4 to select a tab.

This commit is contained in:
Ryan Lanny Jenkins 2025-06-04 20:44:28 -05:00
parent 26f4a6120b
commit b2820bbb47
2 changed files with 22 additions and 11 deletions

View file

@ -31,12 +31,24 @@ function App() {
useGameTick() useGameTick()
useSaveSystem() useSaveSystem()
const [isGodModalOpen, setIsGodModalOpen] = useState(false) const [isGodModalOpen, setIsGodModalOpen] = useState(false)
const [activeTab, setActiveTab] = useState('fields')
useEffect(() => { useEffect(() => {
const handleKeyPress = (event: KeyboardEvent) => { const handleKeyPress = (event: KeyboardEvent) => {
if (event.key.toLowerCase() === 'g') { if (event.key.toLowerCase() === 'g') {
setIsGodModalOpen(prev => !prev) setIsGodModalOpen(prev => !prev)
} }
// Handle number keys 1-4 for tab selection
const tabMap: { [key: string]: string } = {
'1': 'fields',
'2': 'warehouse',
'3': 'market',
'4': 'temple'
}
const tabValue = tabMap[event.key]
if (tabValue) {
setActiveTab(tabValue)
}
} }
window.addEventListener('keydown', handleKeyPress) window.addEventListener('keydown', handleKeyPress)
@ -47,12 +59,12 @@ function App() {
<div> <div>
<ActionCooldown /> <ActionCooldown />
<div style={appContainerStyle}> <div style={appContainerStyle}>
<Tabs defaultValue="fields"> <Tabs value={activeTab} onValueChange={setActiveTab}>
<TabsList style={tabsListStyles}> <TabsList style={tabsListStyles}>
<TabsTrigger value="fields">Fields</TabsTrigger> <TabsTrigger value="fields">Fields (1)</TabsTrigger>
<TabsTrigger value="warehouse">Warehouse</TabsTrigger> <TabsTrigger value="warehouse">Warehouse (2)</TabsTrigger>
<TabsTrigger value="market">Market</TabsTrigger> <TabsTrigger value="market">Market (3)</TabsTrigger>
<TabsTrigger value="temple">Temple</TabsTrigger> <TabsTrigger value="temple">Temple (4)</TabsTrigger>
</TabsList> </TabsList>
<TabsContent value="fields"> <TabsContent value="fields">
<Field /> <Field />

View file

@ -1,4 +1,4 @@
import React, { useState } from 'react' import React from 'react'
export interface TabProps { export interface TabProps {
value: string value: string
@ -6,7 +6,8 @@ export interface TabProps {
} }
export interface TabsProps { export interface TabsProps {
defaultValue: string value: string
onValueChange: (value: string) => void
children: React.ReactNode children: React.ReactNode
} }
@ -76,11 +77,9 @@ const TabsContext = React.createContext<{
setValue: () => {}, setValue: () => {},
}) })
export const Tabs: React.FC<TabsProps> = ({ defaultValue, children }) => { export const Tabs: React.FC<TabsProps> = ({ value, onValueChange, children }) => {
const [value, setValue] = useState(defaultValue)
return ( return (
<TabsContext.Provider value={{ value, setValue }}> <TabsContext.Provider value={{ value, setValue: onValueChange }}>
<div style={tabsContainerStyle}>{children}</div> <div style={tabsContainerStyle}>{children}</div>
</TabsContext.Provider> </TabsContext.Provider>
) )