mirror of
https://github.com/Novattz/creamlinux-installer.git
synced 2026-05-02 04:52:03 -04:00
Add epic games section #93
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user