Add epic games section #93

This commit is contained in:
Tickbase
2026-04-30 20:59:58 +02:00
parent 62a1dca0aa
commit cf7fe20aa6

View File

@@ -1,4 +1,5 @@
import { Icon, layers, linux, proton, settings } from '@/components/icons'
import { epic } from '@/components/icons'
import { Button } from '@/components/buttons'
interface SidebarProps {
@@ -7,7 +8,6 @@ interface SidebarProps {
onSettingsClick: () => void
}
// Define a type for filter items that makes variant optional
type FilterItem = {
id: string
label: string
@@ -15,38 +15,49 @@ type FilterItem = {
variant?: string
}
/**
* Application sidebar component
* Contains filters for game types
*/
const Sidebar = ({ setFilter, currentFilter, onSettingsClick }: SidebarProps) => {
// Available filter options with icons
const filters: FilterItem[] = [
const steamFilters: FilterItem[] = [
{ id: 'all', label: 'All Games', icon: layers, variant: 'solid' },
{ id: 'native', label: 'Native', icon: linux, variant: 'brand' },
{ id: 'proton', label: 'Proton Required', icon: proton, variant: 'brand' },
{ id: 'proton', label: 'Proton', icon: proton, variant: 'brand' },
]
const epicFilters: FilterItem[] = [
{ id: 'epic', label: 'All Games', icon: epic, variant: 'brand' },
]
const renderFilter = (filter: FilterItem) => (
<li
key={filter.id}
className={currentFilter === filter.id ? 'active' : ''}
onClick={() => setFilter(filter.id)}
>
<div className="filter-item">
<Icon name={filter.icon} variant={filter.variant} size="md" className="filter-icon" />
<span>{filter.label}</span>
</div>
</li>
)
return (
<div className="sidebar">
<div className="sidebar-header">
<h2>Library</h2>
</div>
<ul className="filter-list">
{filters.map((filter) => (
<li
key={filter.id}
className={currentFilter === filter.id ? 'active' : ''}
onClick={() => setFilter(filter.id)}
>
<div className="filter-item">
<Icon name={filter.icon} variant={filter.variant} size="md" className="filter-icon" />
<span>{filter.label}</span>
</div>
</li>
))}
</ul>
<div className="sidebar-section">
<span className="sidebar-section-label">Steam</span>
<ul className="filter-list">
{steamFilters.map(renderFilter)}
</ul>
</div>
<div className="sidebar-section">
<span className="sidebar-section-label">Epic Games</span>
<ul className="filter-list">
{epicFilters.map(renderFilter)}
</ul>
</div>
<Button
variant="secondary"
@@ -58,9 +69,8 @@ const Sidebar = ({ setFilter, currentFilter, onSettingsClick }: SidebarProps) =>
>
Settings
</Button>
</div>
)
}
export default Sidebar
export default Sidebar